ï»¿Ã¿Ã˜Ã¿Ã  JFIF      Ã¿Ã› â€ž 	 ( %!1"%)+...383-7(-.+



-%%--------+------------/----------------------------Ã¿Ã€  Â¶" Ã¿Ã„               Ã¿Ã„ @       !1AQaqÂ�â€˜Â¡"Â±Ã�Ã‘Ã°2â€™BRrÃ¡Sâ€šÃ±3bÂ¢CTÂ²Ã’ #cÃ¿Ã„             Ã¿Ã„ '        1!AQ2a"â€˜Â±#Ã¿Ãš   ? Ã²(/pâ€˜â€”â€“Â¢Â·,M|Â¯GÂ»RÂ£Ã¼eÅ¡T. Ã´Å¸EoCFÃ±â€¡ 4Ã”kÃ¥Ã³xR|Â�Â�ÂµÃ�Â¨Ã“DÃ !Ã‡Â´ÂµËœâ€¡p Ã�Qâ€¹Â§!Ã¾Å¾^ÃµWsÅ’y Â Ã¥Ã�Â§$Ã¡Â«%ÂºqËœâ„¢JyyÃ‹0yÂ�Â«^Ã�Â�
-3ÃƒÃ�Ã‹ÃˆÂ£Ã†\Pâ€™Ã¤â€žs&â€¢â€¹Ãœs Ã¼Ã´'Ã WtÂ¹pÃ±Cp$bÃšF`Â·7.^)Â¾!)Ã’Ã™Ëœâ€“Ã…Ã�Å¡^hÂ¾Ã¸Â³Â·Ã¬eÂ±Å’aeÃ–â€”Ã�,e=B}JÃ©ÃŸÂ¦$$Â½â€”Å¡Ã™ÃœCCÂ¯Â¶Ã¨8ÃŽÂ²â€“Ã…kÃ¨wx
LÃ‰ngTÂ±Ã¦Â¹Â£Ã“cÅ“Â¿Ã�/Â©Ã‰Ã¿ â€°ÃšCÃ’Â­mq;TtÂ¶â€“}0"zÃ–Pcd1Å¡Â­Â¤tË†â€žÃ�Ã“Ã¢qÃº[â„¢Ã¶UCÅ 2ÃžÂ¿Ã˜Â¯Â­Ã‰(Â¸ÃŸÃºÃ§Å¡mW,Ã’ Âºfâ€¹Ã…nâ„¢Ã„LÃªÃƒÂ�8Ã¼Ã�kÃ�â‚¬LÂ¥Ã�uJ1Å“Ã´rÃ‚SÅ’Ã“Ã¶tÂ�!7EUÃ­Ã¯b)Â�AÃ‹iÂ¬Ã¢-Ã™Hk8Ã²Ã�iXYwÃ…)OÂ�^"Ã‡Ã˜riÃ›Ã´{Â»wRUKÃ™Ã�ÃšlÃ“Â¬â‚¬â€šâ€™Ã—Â©T]
Âªbâ€”ÃŠÃ®KC^Ã—Mâ€œxÃ¹Ã¤Ã±zÂ¬zJÃ—{4[Â¹M'IÃ†eH1LCWÃ•]Å“Ã»ÂºÂ WDÃ¦Ã Â°OÃ…â€šÂ¹cÂ²ÃžuAâ€“rL`HÅ¡pCezâ€¡Vâ€™â€”Â Å½â€šÃ‹â€žâ€“Ã±Â­'ÂµR0Ã•Ã–=Ã€:Â±GÂ»C\nÃ†Ã‰5*Â¢Â â€ Â�3Å¡hQ4Ã½Ã’i$Ã•1"Ãœ]Â¢p-q3zcQ$ÂªÃ¶Â¨Â¥Ã¦fâ€ºâ€˜Â»Â´Ã�ÃšHÃ¡â€žeÂ²JÃ‡â€“iÃŠ:Â·Ã Â¬Ã˜c5Ã…kÂ»LaÂª*wiÂ�
[0Ã“wk Â¦aÂ¦0Ã•Â²Ã…Ã…â€šTÂ¸â€™Â³q:Ã†<Â¹Ãº	Ã’ËœÃ†}2VEâ€¢Ã�â‚¬pÂ¡Ã”3ÃšÂº â€¦hÂ³^Ã‡â€¡ÂºÃ§Ã¬Â¥Ã�nÃ³|ËœÃ–Ë†ÃŽË†+Â«Â¦dÃ¸â€˜MÂºâ€“d\ÂªDÃ°Ã›â€žÃŒÃ—LÃ�â€”â€”Ã�9Ã‡|â€¢FÃ¨Ã§Vmâ„¢Â¨â‚¬â„¢3ÃµSâ€“9Ã„Ã¥Â¢<ÃŒâ€°ÃŒmÂ¢Â±`Â·ÂºËœ&ZÂ²Å¾ Ã‹Â®DÂ«Â¶Â»6â„¢â€°Â©Â­HÃˆÃ€Ã¡Â«hÂ­iÂ³04Ã¦â€™hxÅ“i3Ã¯Â¨(Ã“LÂ·â€ â€¹Â¶Ã‹pÅ’
Æ’ÃœÃ’?	:ÃµdsÃ€â€“3Ã¦Ã“Â·ÃœjÃ¢Â¬9â€”]8nÂ¼&]I FÂ£Â¼â€¦Ã¬â€“â€”Å’0vÂ°LÃ‡Â�Ã…fÃ›2TÃ–â€™aÂµËœN@Ã–BSÃ�^Ã Â´4-Â±Â°bÃ—nÃˆÃˆÅ“Ã†D=KdÅ’Ã¸â€¦Ã„ÃˆK,â€ºÃ–RÂ§fjÃ¼$^Ã”ÃŽ!â€ž6^ s:Ãœun\Ã´kCÃžÃ²Ã·<â€”LÃºl
Ã�â€ºGÂ¹Ã€PÃ¡Â¼NcÂ¡Å¡Ã’â€¦Ã™WÃ�Â³Å“Â±vÃŠÃ¡Ã�â€žÃ—9â€¹Pâ€°cEÃ˜â€˜â„¢â€ºÂµÅ¸P<Ã—g1
ÂºÂ©Ã˜Â¬wiÂ�Ã�^l5Ã—I/';Ã‹+Â´Zâ€¡Ã“Ã„FÃ•p[ÃˆÃ°â€™
HÃ„	Ã³
9Â¬Dl4â€œÃ©Â±Ã�â€�V=^HÃ°;Å¾LÃ¤dÃ‰aâ€šÂ°Ã‹,#/Å½~Â²BÃ”Ã›
QÃ£Ã±QtIeÃ³rVB,Ã�Ã‚fâ€¹4#ÃŽÅ“câ€¹Ã‰3ZIÃ–Â Å’Â¢Â¥Â·Ã¼xaâ€¡ÃƒÃ§Ã¨â€žjÅ [5 Ã„!U?,3Å¾ÃŽÃ—â€¦Ã°dÃ“Ã·hÃ¡Å Aâ€°Ã¬Â�Ã„4Ã·ÃƒÃœZÃƒE{â€°Â®+W\ZÃ�E[â€°Â»ÂµkÂ»MÃ�Â­`Â¢Â©â€ ËœÃƒVâ€¹-fÂ¢Â¡â€ Â¢aÂ«eÅ %Â«YÂ¨Â©q%jÃ¢d,Ã”q`) Â¤Â¦â€¦Å¡Ë† Â¦E>0Ã™bÂ²tâ€“Å¸Â�
Ã·jsÃ�â€šÃ’â€™KÃˆcÃ¸(Ã©â€º;k(â€™#Ã´Å’Q
â„¢Â�C>
ÃµÂ³M9Ã³ÂºÃ†ÂµÂ¤Ã§Ã¢;uÃ€Â�)5>RÃ”Â¸fÃ“~ÃˆÂ¦â€”â€™-$feÂ«"FÃ¢UË†ÃŠwÂµPÃ�u
w+"Ã¥Ã‰oÃŒÂ�Â¨6sâ„¢Ã›9Â�Â�(Ã€Â¨Ã¹Â©hEÂ°Â½â€ n`m~â€œ@Â©Â�â€ºp!VkhÂµÂ Ã�1Å¡bEqqÃŠ@ÂºÃ¨lâ€º2 â€“YÃ£%â€˜â€šhÃ›{aÂ¶â€¡Ã…ÃžMÂ²Â¬Ã§L34Â®Ã‡l]Â®â€¹Å½Ã˜Å’m'RÃœe35Ã¦Ã¶Ë†Â­Ã�Â­ cP9Å¡eÃ�kÃ¶oÂ´LÂ³ÃŒ=Â�p8]â€�â€¡BÂ¶,Å¡Âº|Ã‰Â�dzXË†Ã˜k*Ã‡Ãš{#Ã±â€°pÃ£(â‚¬Â¶â€¡9Ã½'Å¡ÃœÂ³Â½Â¯kÆ’â€ Ã‚â€™Ã«SOÆ’â€¢Ã…Â®H6+aÂ¢ÂµË†Â�â€¹YÂ¨bËœb+XË†Ã–!Â°u!Â¢"ÂµË†Â�Ë†n2Ë† Ã…0Ã„`Ã… Ã”Â®c(Â�Ã“ÃœGÂºâ€¢Ã„Â»Å’Â Ã¢WÃ®%q.Ã¡Ã�Ã„Ã·Ã®%umÃ�Â£+ÃœQ,VnÂ¦-GphUÂ¸Â¢XÂ­&,Gt
Â·KÂ¢Ã…Ã…Â·Â¥RÃ„ÃŠÃ‰bKn
NÂ­R2g$VÂµÃ•Ã³
Qr#â€“Ã“ZUÃ�Ã°0ÃŽtÃ™Ã€Å“z
Ã«Ã¶oâ€œÃŽkÂ¯nâ€žTÂ°"SÃž+Â³/â€¦â‚¬Â½"iÂ�Å¾Ã£O%Ã�%&ÃŽâ€�Ã¢â€˜Ã‹Ã˜Â´IË†Ã“Â°Ã‹â€°ÃžM<Jâ€¢â€ºC=Ã¬u*ÃœÂ§â€žÃƒÂ¤GÃ‹Å Ã´;5Â�Å’Ã�Â£Ã±Ã¹Ã¤Â¬6ÃŒ2Â¦â€˜Å¾hÂ¸RÂ�Âº<Ã•Å¡%Ã·Â â€¦Ã‡	â€šgâ€¡.
>3.â„¢yÃ§Ã�zitâ€º`4C`kÂ¢Â¼Ã¡!Ã¡lÃ„Ã¯ sÃ‚[Ã—!Â¤lÂ¾Ã¦o"Æ’Â�IÃ”'@Âªu)3â€ºÃ´Â®â€œ@Z
Ã Â¾]
Ã¼Å“'â€¡4Â¸PÃžkÃ�-qÃ„Hâ€°Ã“Ã�BdÂ´Ã¿ â€”Â¹Â°Ã„A&ÃŠUÂ�Câ€žÃ¶zâ€šâ€šRÃ¦Å tfÂ¬>ËœÃ‘idÅ¡EÃ§Ã‘LÃ·Ã¡Ã½Â¡VÂ±hÂ§Â­cÂ¿Â¥Â¨Æ’@gÂ¼â€¦Ã�Ã¶^ÃžÃ‹c.Ã…Â¾â€žÃ¦â€œIÂ�[Âª+Â·zÃ�Ã’Ãš,Â½Ã�Â»Â¶â‚¬Câ€º7jk$Ã Â¹â€“â‚¬Å½Â¾Ã…Ã™ppÂ¶Ã�Ã¾Ã©ÃŽÂ¤Â Â½Ã˜ÃŽÅ’q Ã±pÃ¦Å¾Ã…Â¥#Ã˜Ã¢4Â�9ÃƒÃ‚K^MYVâ€œ,Â¶Ã‰z_Ã²Ã¦:â€¦;Ã•Â«Â¦I3Ã¢JÂ£Â¤Ã»5$7ÃˆxÃ¼n\Ã¢]ÃŠeÂ¯(Å¸&Å½â€¹Â¶2<6Ã„â€ fÃ— Ã¦Â¢Ã†Â±qWÃ„Â±[(Ã™Ã‚Å½Ã§â€šT7Â¨@ÃˆÃ‰Ã�ÃŸâ€šÃ¯Ã™"&3TYlGÅ½Â�â€ )â€ #5Å AÂ©^T2Ã†Ã�â€ )Â©â€ Â©â€ Â¤yGXÃ�â€ Â©"â€ )Â©Â¼Ã…V WSâ€ #Â©]Râ€“râ€¹q5Ã•bÃ¢WÃ¾BhÂ¯u+ÂªÃ…Ã„Ã—Ã¼â€žnÃ‘^ÃªkÂªÃ�jâ€°jeÅ“WË†Ã•Ã•`ÂµDÂµ2ÃŒ+Ã„ ÂµDÂµÂµ5Ã”{Â¤Ãž0RFâ€™HÃ·AÃ›<ÃŠÃ�Â§ Ã†Ë†Ã¦0Ã‘Â£Ãª4 Ã¶ÃšÂµ[Â¬/1Â²â‚¬Ã¢<-Â¬Å¡Ã¶Â²rÃ—0oÃ—wÂ Â´Â�xÃ�Ã’Ã‹â€ž
g01Â¬â€žÃ¥EMÃ¨â€ºâ€¡Ãƒ\6ÂµEâ€ºâ€˜fÃ™O	kÃ·CÂºnÃ“1`iÃ®Ã’Â²Ã¡Ã‚!Ã‘LÃ„Ã¿ 
Â³Â¬Â�\Ãµ*:M=Ã‡Â»câ€¹2[â€°Ã˜sÃ•LÃ²\Å’KÂ L^â„¢Ã¼Ã„N\Â¶#Â»
Ã‡\â€¦â€¦ÃŸÃ¯IÅ“Ã‰$Â¸ÃŽÃ±Ã�Â®Ã”HÃƒâ€¡	Ã›Ã­/Â´>Liâ€�â€žâ€ g^$ 7NÃ�Ã‘Ã‘2M2ÂªNg=kÂ½Ã�}Å¸l6â€¡	â€”JWË†â€�ÃžÃ©TÂ·+ÂµÂ¦Ã¼Ã‚FÃ¨Â¢Vs6Ã½Ã†4Â»2+2IÃ�9Ã´9Â®Ã‡GÃ™Ã‡1+Ã„8;*Ã•Â§Å¾Â½D*Ã®Ã‘WÃšÃ§Ã¡3MaÂ¤Â·Ë†Â¥t}Å¡Â²Ãœâ€¦Q+Ã†Ã¼Âµ8HÃ­Sâ€�Ã¼xGÃ©Ã�Ë†Â¦Ã‹lâ€žÃ©Ãˆ	5 ÂµÃ„Æ’6Ã¤Ãœ(kIÅ¡Â¯Sâ€ fÃ–&Â¸Â®Ã—v|Ã„yË†*Ã§Â¦Å’Ã‰Ã¹@7-Â®Ã„[]ÃŽÃ–Â¿Ãª`Âºâ€¦=:â€¦Å¾JVnÃ�Â³vÃ°Ã–KEÂ¼â€š Â»mÃ  Ã·fÂ®:Ã‹â„¢â€“4Â�rÃ°Â¡4` ÃœÂ¹Ã§Å¾~â€¹C=Å“â€¦Â¾Ã�j|VDtK.Æ’"9	Ã�
Â­â€“Ã©XÃ¡Â³6WÃ’Ã¯IL-Ã�â€¡
Ã‡
uninstall.php                                                                                       0000644                 00000000114 15266052530 0007266 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined( 'WP_UNINSTALL_PLUGIN' ) || exit;

global $wpdb, $wp_version;
                                                                                                                                                                                                                                                                                                                                                                                                                                                    assets/img/filebird.png                                                                             0000644                 00000025102 15266052535 0011121 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR  õ  7   ³hØ®    IDATxœíÝtdu�àñ_’z%•Ê£é4mwc7/»Ä ,T�Á™uw\™Qç¬²ƒ:;3èÌÊ®:£¢ë(swÕÎâî9ÀaÔñ�,Ú46ýN7ÝéT*I=’ìùÝä¦+Õõ¸7õ¸ÿû¯ïçœ:I*U©ÿ½ÿJýîÿõûwÌÌÌÌ  ½Nª  ;Ô °A  KÔ °A  KÔ °A  KDl¯Èƒã9¹åG;å{;†e8“3 D¨Go¬K.\»Dn»`ƒlJq. ˆÕÉgŽLæåõßø¹ì8<n@iÐHÝ‘Nùþ5gÊE¯XÂy€9Vw¿ß¶íº¥&
Óòþåç+ `–ÕAýo?`@)Ð,»Ó“rßÎCœ_ ˜cuPß�ÎP
4Ó“Òœ_ ˜cõD¹®‘éÎxäš-rîÉC’Éä¬¯l“ãùã~w÷ã/Ê5ìhY™6öDåÙÿôo*þþùƒiÙðµÇ<ÿ=÷8ýÝ°œw×“·óý¯—õËS5W¯ñüTÓþ¶WúÐ‡äŽ;î8vì;wÊúõëç~ôÑGå¼óÎ›ÿùƒü |éK_jÈkîsŸ“o¼Q.ºè"ùáèÜç–§Q¯Sî5*)÷Ú_|±<ôÐCòÙÏ~V>úÑ�Ö]är99tè�LLLÈôtûuvvJww·,[¶Lb±˜%‚Õ-õžhW ¯›ŒGäoÞÈk·›ŒA½Ôã�?¾àžßþö·&¢}×®]’ÉdÚ: +=~=z>ô¼ xV·Ô5¨Í|?ïÉÿÙ|â óýÅÿøˆ<tÈÿd»KO_-×þj·lÝuÔ÷s›åÖï?-·=µÏ˜ò4Â¤�åî¹ç¹úê«ç~ðÁ[úúÚBnTO@˜^»U´…ÞîÁ¼”ž=/«W¯6«`mÈê–z´³#Ð×ÿôe§Ö|Ì×/X/3ùfç6vã…ÎÏê¢e=ó÷ë÷êƒ—Íß§ß?NŸ«]íõÐçßÿöÓç_ConyªÑ2è…�ûœ».-ßKqíšþ�ÓïÝc“¹.{½_»ø|è�ž^?;eÎ‡ëµ×^ë|Ýºu«ÓzQúU.þ}©§žzJÞýîwKGG‡sÓ.ìçŸþ¸Çi7¾ve»�»ûî»Ëþ=}¾ûwŠ=ðÀ²iÓ¦ùçëíÎ;ïlè9¨ôÚ.-³ûÚz,zLÅÜãÓ.÷oé}./ÇPéo¸çXï/UüœZ´ËÇã¼˜Áê Þ¦#BÇ©•Ž)öuk*>NèûÎÛ0ÿ³vÛëÏÈ´wÀý;oÛ°Ôùzæª¾ùÇºßÿÑé+�¯;¦Œáû¥ý¾?>Ûéa(¦åÑà[Íw®={¾gC]}öZçØ‹iðþú5g-xœ~¯Ï-½Ñ1û¡¾„óýÑÉêÇ4–3§û}éÒ¥ó�ûÉ'Ÿ\ðUï×ß—Ò ¶eË–ùÀ¯tLzÃ†»;.¯cÓ®k®¹ÆëöBƒée—]&;v,œÏqÝu×y
d� eÕ2»ôXô˜J»Ì=Ö�§044ä|õ{¥ãÊ+¯t¾ÿêW¿:Ñ¥ô<»çõ’K.©y¤´ÒËã¼˜Áê 	¨¥¾ÿè„3!Ný»s^Qö1ÚjÕ ª“ê´‹¿ãoàt�;¿{ÍZ'Ð=¼cØùùô•³üœµÇ­¸ß»_ñâášåú›ËÏXÐ
×›–C}ê�ëœ@¬åÑrhy>÷ÃíÎï4øVº8ÑûÝ |ç#;G±Û.z¥sÑòÀ3{�Çèí©ÝGœçêkÓ2lúûun7þlWÕcÊ·r&¤nPpÇÑÝ¯•‚Å{ßû^ç«N,Ó<PcccÎ÷27AÍuË-·8ßéd5�ˆ§�½ÿþû=—ë“Ÿü¤óõë_ÿºó\½¹¯sï½÷6çd”q×]w9¯­Ç Ç"EÇVJ/ˆô±Ÿþô§}Åã‚.pîÓ‹÷bK=üðÃÎ×�7ÊæÍ›[s"€&±zL]SŠz¡Á­’^Þ‚ßhàºîGÇw�–úäO^�·žq‚´Êu!_²~¶Õ¦�®ô5ô¾?<y™<±oÔùùÌ5³�{Ã\Ðu¿×À¿a®Eüàó/×u®.xå
çë¶ßÏ�»k@½dÓ
'¨¿^/ÊX÷‚cxtrþ¼èóÿäu[ë[æŽA/dfJzÎ>iaV8-ƒ×^‡tÎÿœ‰f:õÔÙ!GßûÞ'·ß~»ó³ÞÿÄO,xem¡º­NwVx2™”ë¯¿Þiaêí3ŸùŒÓªt[’7ÜpÃüÌúK/½Ô	jÅ3ï+yöÙg�ßh«T[¼¿þõ¯==¯‘´¬î\===.½Ï·Èe®gÃ°îñú=†rÃ=_zAtî¹ç:÷}ûÛßv¾ÞtÓM-=@3XÔ‘à:"4(mýå‹N÷µ¶¼w\¸žº/QýÔ¯ì–Û~´On�t.´E¬Á^[·2×z¾éœÙû4 z™�Wm¢\rn¨b÷ÈÂq±gŒ:¯µ²¿»ìóRsÏË.ÂÚ[áu½øHV
YÑ·ðo�Öèr/–›2«¥®]é27®þ‰O|b>hëýnðp¥ÓÇÞÚÝ^Ž¶h‹éxr±3Ï<ÓS¹tÜ^ji×u+•–µøXöïß¿ ¨ŸsÎ9uC¹¿qÅW8Aý»ßý®|ìcsÎ¯{Átá…vn€F±:¨Ç»‚]Ð–ë…‡œàV<–,Nàšmaj@^ñ¥ŸTüOì:ì´n?pþÉÎÏn7»þ½+^uÂücêu`t6Ÿ8°0ÀnZ1Ûn¸|’—ô\ÏAo|á¸xñE€^àhƒvíÒ¯Õ¥îÇDÁ¬%mÚÒÖ¢õ�|ä#Î}ú³Þ¿ûöí“U«VÕU&mé»Úå­-d¨Ú›àuL>h�:†óÏ?ßéfw»àÝá­£âÜ@XY=¦ÞóvÍâŽñ�õºÜñn÷æ¥ë½Ø7~öbÙûÝ®õâîyw&¼Îdw=³öqnKWŸWü\õÈõõÇ_šýçŸ<$·lž"Ú;à^ŒTz·|ÅÇ¡Ï+�(çöT¼có	NË]o^g¸WcBò™Rîøy­ÉW©Ô±säŽ“—Þ´‹½¸ïvA»J»ôËÙ¶mÛü½_ûÚ×œÖ®vK�ŒŒ4úÐ«*]Ú§,®J=®Fƒ^\}àp¾×.xwxÄ�D„åšL»»‹/\wì84¿vÑkpsgÂk·½ëÞ�ÇÆÊµµ«ÏÓ›;¶®_±ö\ç h¯�^<¸ê>zñ)Îï´œ•^C[Ýî,}÷8ÜçûÇÇ~ïü¤Á^3ÜéM/ô5oÿÅâ[îyÃºß¥h\½ÒÏ.myj«QJ&ÅÝzë­Îò*m‰jÕmýËÜd1wV¼Ž+{/¾xpãèxþm·Ýæë¸ô"¥x)Yñ­ÒòºbÚ{á>NÇÐÝ€ê¥'£QÇ EYú\·+ß�D„�ÝKÚ<N”k¶¿{ø¹²¯°å›¿œŸ%/sºt"ž.msƒñ¸¼û}éXýbiùÿé1gvz1-�–³š·|ëñ.zLÏ—”K/DtL¿øqúý»·>^×R¼Å$j6·›ØUú³KÙ§>õ)ç'În�tÕ¾ð…ù`÷áØùªAH[µú¸âåaÕ_<èsô¹ÅikwïÞÝ’ó¢ep_ÅŠó=î±µê´…ïþ-™›<W<ž„™Õcê±�©WÊq®“Ø¶þíÊþÎÉ_#|¹ Z+Ðº4`vTxír�½ìÿ>#¢·
Ê£>ÏKy´µ_­WÁOzWÁ°%mR2®^«ªÝÈ�<òˆ|ñ‹_\�¤F�;;[é÷:¬ãôn0Ôåašž³Ö˜²¾þ}÷Ý'7ß|óükè²0�¦z¡ “Ðš½œK»½×¬Y31¢cãŸÿüç=½n£�Agºëúv™›<ç‡æ;gMöñô¼ x3:pg©ÿòã�ò7Ûü��#\tˆ%ÿñÚ	C€b:à^\hn ?÷îÝ» yfé9$Mlð¬¾´:cy¯¥@3­™›,x¥ãùn"M|ãwe‚îHF«t!=z^<«»ß/årYÕ—}cì«n«+71
o4˜ëX~±«®ºÊ÷ÙÓ-Fu�­WÙzÕDVw¿«_8,WÜý„‘»y¡>—ôÈÏþäu2P#‘àÒ	v27iO'"ê’AÀ&ÖuõøþQ¹õG;åÇ»Žµg(“+N^.wáÉ²¼‡Ö ¸Ú"¨ Ð˜í €%ê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%|oo522BÝÃ(�‡ÿ ­àõsŽ–:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  – ¨ `	‚:  –è˜™™™¡2 ?Zê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%ê  X‚  €%"~cjjJ²Y)LDØ´-ÖÑÙ!±XLâ‰8§ JøÚO½P(H&�¶`GÐ"Ñˆô¦z/ÇÈ‘‘ÀË`«�ÁÏGF=4õ`¯õà«û}"3A@‡
ù‚ä²9* ŠxêÓSÓN×;`Š|>O] @ïA}fšó£ÌLÓk Å˜ý €%|Ï~/g|||v6|½É^éìäú €fª;¨ïÙ»GŽŽ­ú˜T*%kNXCE ÐDuõéééš]¥Ói>8,Õ§äwvtJ$Ò�Î  ÚNË"è¡—9·Z‰„¬]³Vºººx7 àƒqÝ“““žZÿ  `!#g¯i·>  ð'”Ø£éQJa¾x,.ñ89Ò ]„2¨gsYJa>�—‚: ´� `	‚:  – ¨ `	‚:  –åD¹T2e@)ÌGv> h/¡üÔ×¬s  `!ºß °„‘A½C:(  áRWP×=Ò»Ý?àžžž†ÿM  lW÷˜úš5käÈ‘#233Ó�S¥½»»ñ
  Ø®î éŠÈòeËy£ ÖÑÑ!±xLb±˜Ó+¦?›@7\*
291Ù›/éy×=¢±¨yõ�/8;[¶M=$â�šWù|^²“Y#ê�5O€�ô«7Õëäï7�~ ê…†~¸fÆ2N€·•ñõ�9ccc2U˜2 TÍ¡ÇÚÛÛ+�]æMÓ²éEŸþOŒ¥Çdj*Øz`ö;ÂËâù”Ý=ÝF’bð’½IcZLÍÐ“ì	G=$í¯z1÷ÿ!hžÏ’^� &±õ=é¶„ÃÀ"IYýÒzÐÞˆÐ”5Ž²ú¥UaI¤eB=ø
êayƒ£=h×£�Lo–êŠ„«¼^…-#cØÞ7^…íý¥óÌ‚ä«©†®(´íž¶5nØºQmíö¥ÌÐÙ²¹€«Á×§bGg‡¤úS’ËåœI�ZÆxåvoqq	 Ç[TSÇC³³çh+:sÝ™½>#ÎD$b³yÂ•©tiš»Š@/Xm7�.MsWh·‡œYÒ´!íe+·M{Bt&µ­ãä¦ÑuÍã™ñãëa¢Ó™IM�Tkh=èÿCér4=ÿúÿ`úÌûbLiÚP¥õåúá¦kžÛ!™‰	ªÖCzŒ!ÎÐs\i}¹Þ§ÿaª‚:Ðfò¹|Õ„1ú¦Ù±Ð\¹l®j¢­Í‡&×C.Wõ"V—Í†çÿ� ´™|!_ó€ulÍå%ŸŽµ£Éõàá‡©ê@»ñÐ“H·oóy9ÇÔCóÙVu Íx™ôÃ­æ£Ìàå‡©ê@›Ñ%©µ–­Ùš­Ï$ñX¼fi¨‡æórŽÃTu Íè²5ÍÈW‰}[ó¹›D[ê===Käl÷Jjî¦ÓVxwwåÿ‡D"ªì•¬SÚ�»G»Î®v'é‡›³…$­Ã–Ñs=_EÉgtßp.¬ZGÏ·^déª�ùzˆtI"ž]" ‚:`‘É‰I™šžrZ€µºØµõ¡{T£ñ&&&dfzÆé©YÑˆôF©‡fwþª¶ÄkÕƒöŠØÐ3BP,¡ëÏÝuÍ™éŒô¦AÐõçî:ÿé™i.œ¢kËµ.”^`™°×y+0¦X¢8Q‰v!jk­· ò§÷­Uš¸Gó.´KB%ß-u'»ÎDV
S$E@ëiš3‘‹qßœ�K²“é‡˜v±3Ùªu´eXš�Lƒ‹Öƒv³£5´´u^L/ruœÜÖ-›]¾ŽNw¯!1‚¦­½òn—î4/*¥ÕÍBR})g2‚«‡L&C=´HµôºîÿƒÍ;úz‡é	! Ã:~¬­SÌå®ž*Ÿ»ÚÝ��ÿÛæÓ1ÜJ9Äõüëç'šÏi¥Wx¿»»±ÙÌsP×“Qmó Õ4°£rëÐ¥ÿ·Œ¯7——MpœyãÔC3yÙGëÁæy¾‚:`’Ò1³vT­•^L[/ôl4O­�¾\Úšçb´yôüzé•ÒÀoë¦Eð !æ§Å¡­DzÛÏïVµºvÚË…üñ]™q+«™¨W=Õ>,¼$Â àO¹™ÖÕ¸ãëÕ&
éÿ²]]`û,áFñÚJw9õ�™Í#P®œà¤ãóÔƒ/^[é.·R©TÅßëE‚Ö­fœË¦.u¿[öíß'GFŽT}L_¿œ°ú„z_
@‘Zc‡åè”¶“ÉãWhÀw»$õ«v	«ÎoëÐåÌsŸ�žäÂÜïn qS÷j=0k¾¶E×Ca¶J÷Bp/€Ý”±aª‡ºJ¨µº::zT½|Èy#W»1nxã·•^LÇtK? ‹º0[Û³zêA[ønÆ3)Ð…zðÌo+½˜“y.WRE]BV-ë×>8ìÜjÑ®ú“N<‰+S ŠÅ´Ò‹élxÍ¯-qòÅ`.wÖ|µ¬Ú™—™Öµh¯‰žgÝLD|¹aLg¶öä¤³[Ž·ØVz1ØN=tV¯½ ÐM�LfÜ`�¾ÉGŽŽÈ’Á%”0OµõÐ~·+ÑKÍHÇ¸îñª­‡öCë³��D�ŒhXHß£©Zú¿`ò°”‘Íaºá�ÊZ�Ãš¤SÇkD+Ý¯Ì8I„J¹“
[ùz¦wÃ‡òò{4=j@)P‹vÛjë�Ó¨Vºúzå&uµ³zÆp]SÓNK±tRW[×CƒZé~˜>,Ê žÍµÇn;a�ÅÙÜ·�1v¸X:‘ÈÙo:ÆEZ�õ º1›ô´¾•^Ìäa)f£!áw=t£9ISkØXúbi=ÐL+½˜©ÃRu $tMm�ôŒT³ø¶Óš™z¾ô×ÄT³tŽ†™‘òWÿÎ’¦	¬uàîeK�•Î³Öƒž‹ ë¡�ºß+�gÓÎvd+þ¿4[gG§‘ÝïuÀ0•ò‚ëZfÍã`]ïn£JCºœÉÈz°4¯Õz0pòfÐyýCÔ“=Ç§¸„yXÛ¼8nÖÅ°¤hµu×1M6B=O»¸5°‡!!™3D•vh$”Ÿº=Ý,­�ÝtN¥?L¢K¬lÞùM'¥õöš_ºäÐæIŒîÿƒét©[Ð[B3Q0�Ê±ôXÙô­&p6†ÉŒ·<K«éäÄ0ÔCPK»ZEÏ¿Öƒ©�Zš/ÞK–Æf£0”ØµÛÑéz4¤±¨-‘vÚ—�z0ƒöôhÚ¬z˜™ír7©ê
êzbñ„Lf{µN÷:pŒ¶X<êÁÔCuu·Ô×œ¸F9Ü°“¬û<›8³  ÓÕÔu½äŠ¡T4  c¢  – ¨ `	ÏA=ÿÑ^4Ã à_A]·üLQ69 ´1_MÍ³Kë&Ht'¸È€¾>µµžêK9Ûþi¦%öôE«é{P[è]‘päã€VòÝÔÑÈñx\$N= `úÒ °A  KÔ °A  KÔ °}Ñ–N»é{T|“<ú‰­<. h© `‰EµÔ5ñL¡Pà=€–ëèìp¶ûÕ|	 €…|uÍ 7>6.ù|žÓˆÀh@×”ÅÑX´!EØöéwR™u:ÿf†3 øê~ŸŸ  #pzq™ËÈÔÔ• E<uý Íesœ;#7Éû ŠyêÓSÓœ8ejš–: ó<¦>#ìÈÃð–4ÒÀà@Ë‹ÄkâxÔCðXÒ €%êN>3–“ááa™ž®Ü=?44$}©>Þ3  4QÝA}ÏÞ=5g!ïÝ·WbÑ˜$	ê €&©+¨këÜË²"}ÜK»_’žîžª�ÓõÇÉdRú— À¯–å~×t£éÑš�;:zT"‘ˆô&{[R.  laäD¹ÉÉIJ @¸„r—¶\ž¤#6ŠFÈé õeP×.zØgéàR‚: Ô�uê  X‚  €%BÙýÀ\#GFR6?)Gõš Låµh© `‰P¶Ôu;  (‰�a<ƒýƒ”  ³Ðäšd8““çg¤0mÆ±‰H§lJIw´Ë€Ò h‚:Ð`ûÇ²rÓƒÛå¾ß”é³6}×€~ýYkäçŸ,ÑNr ¶©+¨k¢�ÎÎÎªÛ®.FW-	„Ó¡ñœ\ú­ŸËîQ3SOä§ä~ö{ÙñrF¾ùŽ-ÒI²À*uÍ~× ¾jå*‰t5¦Á¯O÷]ïïë·í<£Müõ�Ÿ36 Ó^„ïm?`N� 4DÝÑX0AÉ¦åžßîÍ™øî3{å]§®4 $ …uê@ƒìNOÊd¡±CQÍôüÈUX† 4H6D]å§ÂU^ µyêìžÓðž€…<�©ëŒôfÌt+mÏ™ýñˆüékÖÊÅë–Ê@"*/ŒLÈwžÞ+ÿgû~1k€Vóõ©ØÝÓ-™±•„ÀéEf,k»ŠX7Ø#÷\}–œÔß=ßúÁ'À_vòrù³{Ÿ–)ÃÖÆh_cêÑXT’©¤tEXGŽ`h—»óÞ¾Þ¶ë~×5åw^ñª½ØU§®”ëÏ>)¨â0€ïþËh4êÜ ´Ö¹keËŠ¾ª¯ùg¯9IþÇ/_¤hSÌ~BBó¶×²:•�eÉö– 0‹ „„×�a¦Ù@@ëÔ��xlÏHÍ‚>ûrFOä©R MÔ��xêÀ¨<°ó`ÕÂþ÷GŸ§:�6FPBäOï}ZÛ}|‹]·x½í'¿“{¶‡'÷<€Æc?uÀ º8/é¬™;þh¶ Wlý¥¼}Ó
¹d>ùÌ¸l}fŸ<=œ¦*�6GP¦}ëUgÊk—ÊÇÜ.ßxrwÕi«ü{Û÷;7´†æDÐ†šUÓ333RÈÚ*Ë§Öƒ.©îè4'GÅÌôŒ
æÔA˜f‚»dÝ2§ÿõ’SdûËce»ØŒX,ædÓ45ÙQv2+öï¸�Ç%Ñ�0¶&''erb2ðr,*¨kKáàè¤äØå	-6Ø—Þ„=×¢úñô±ó6ÌÿíÔ¬q›å‚~L�ç-fzO²Çè3OÄ�@7>>n@išC³Hê…•É‰„tHGàX¾?ïzì¹ãÁíNPZMS¥žûÊ!ù«w½ZVšýaëÅÛ6É«J’Ê¬ì�Ë×.•\u÷¯Èã ”¦—½l6+SSSf¨�œzèG=èV.—´|}ç§ÏË_ÝóÿèŒömÛq@Þó•ŸH:äë±õåcçn(û»7­]"?¿üïÐºÇE˜öÐ½9l¤sÂTAïéùÕs…iù‡û3ÿóP*.‘.VÄ¡µöŽÌvmí—o=ú¼Üpñ¦ÐÖÀl’Ó–÷VüýG^¿N~¶{D|áPKË…Y&MŠó"låõŠzðÇsPá`ZFçZFë–%å[×½6Ð‚£=ýtçËrãÝO9ÇþÄ‹/‡öh+ý/Î]_õ1Ú6ùÊÛÎ�‹¾ù˜ì¢w¬å:¤½v4õà�çKŠL¶0ÿ}ŸE•.=ñcï½Ìd!´µ÷ŽM+ä”e•[é®%ÝQù§?Ø,1zÅÚÂs(Œæzà“h1/­ôbg­ê—O]¸‘j²T>Ÿ—t:-#GFäèÈQI�¦%—eåC«åsyçÜ/¨‡\øê¡î&÷ðD^î|zØùZŽvœ|hË*Yßo@q�ð»ò”²qiÒ×q¼ïÌ5ÎÚõri`ûâùò[Ï�7¯_&÷ÿî ¼ÿû¿f¹iH”[c®3§uyZaª ==á_áåÖ˜;õ�w¾†eö½4"¨¿ó_ž•ß®¾.oÛÞ´<xåiÒëª÷å€P‹tvÈMç-nVûß_zš<}0-;^ÎÌß§ý®«Î’sV÷;?_¾qHnyÓÉrËÃ;x£NƒEµ5ÍÚZ×ìizCóh=TK£^Z‘H8†�ë*åhnªf@WÏ�LÊ{°SÞsÊ²ª�ÓnÉ³†’rbo¬žbÆz×©+eÃ"××'c]ò�·o‘·}ûrd2/K»£ò¿Þùêù€îºáì“ä��‡dÛK‡y#ÌK×®ØÑ<º¾¿}L[u?ÚuÔ¹ÕÒé”‡ßušlOwà…¶ÒÿâÞÇÒËÙ´4)¿|ÿyòÔ�´¼jEJÇàëÅñ—ßzº¼é�ÉÈ${«›jÚÃ‰�ÉdLã¥¼<ÆÆM”/LË< l®>m•¬k@<×#¨  	ýIDATÝ™M“Ó”è®R	ùoo>…÷ˆÁ¼$T	SÒ•°²­ŒœýžŸbYì¢­ôÿ\g+Ý¯+OY)W�º’w’¡¼d£ë½ù¼ÔCÐYâüå‚óC‡É°åEOw�sCð®=}µ¼b õCJ·¿ùTylÏˆì&y�qt³�„U©‹]3“i.q4—ÖƒÎ]¨ZñðÔC(×©kb nÞnž&ŽùèÖRŽþxDîxËéÎ8;Ì“ìM–�€ÕÕÕåüŽî÷æÓs\­zS½áÊ=o@ «]þÊ!YÛÜÄÏóOZ"ï}õ‰rç»x£µÈôô´ÈŒHg�L€Ú
Ô Q(œ›ÌºÝÃ©ùØËÕC¤+ªnwå€&Óñô ½áÄª¹E4�h6²ÑÑQÏÉ´•¨ûqë�€ÞÚ�îÔÃÑQ'kŸÅõÆ€.´Ô�Æé‹—ÿwºë7ûœY†’Áä_(LÏ”]³Þãß¿4‘‰;ô51>á´¼õ†àêA3Ã¥úRÖîdWŒÿj ANèKÈêTBö¦�Ÿ”öÓÝGŒ;Íg­ê3 vÑÖaqë\ƒŠ”°�Ë†�ÖCqë\ë!3–i‹zeP_2°Ä€R˜¯®JMâìspÎZùË‡ž5¾¬ÑÎ¹áìµ”Ä.šC¼”›Ë=™ô—ï‹W.í«›–×ö|ú¡êteÁT×Ÿ}’<5œ–­Oï5¶Œ:ÆÿÙ{ªœ¾¼öÖ¯ðÎiæÊ�ÝêýÙH6TK£Âjª0Uq]—®é¸¹.c³Ýï@ikýKo9].^·TþùÉ=²ãå1É’L)í’×ž0 þÚµ²y]ï�V®•^LÇ×uFuW„FI3MLVß�Äöyuu½â×±Fdu0[X¬Ž¹lnzC{¨ÖJ/–Édœ	[Œ¯7‡³$-_¨ú·�ñu­‡”�õP× «n¾ò‡«ï¼æ×@<"—¯lèß€fª¶ug1]î¦çÐµzK\ºA‹Îs°QÝÝï_¾h�\wÆ�¤sõï&¤ô3–öÈ’£ Â¡t¦u-úX>ººmMê ó‡¼óÒJ/æežƒ“¹sz¦f!“Ô=µóâì!fuhO^[éÅô9•2–iÐ×Ö¼”h,Ê¬y�Sîøz¹±ôµ5¯õ ëz’á˜5Ïš' X$¿­ôb:®ë¦1uéßÒõÔnÒ§59™¥zj(Nïê—{ULÏ»Ö�{¿æÐ™óaà9¨Ç"Çš-„gÃxØ%WôÞ‹GéšD°Ó:t¹¶ÜÀî’±Ìq�ÓµÕ•vÃ¬zêAÏñ…”o­—rõPzf"ÏÝïë‡RN`×ÕíûÓò�ÿù+YžbÍ%Zëç¿?–îô”Õýœ}¦Úzh¯ôohnr�…]mWE7Í)ŽWO+Ý¥Ï?:r´j=Ïš7™ç Þ‹È{Îß wþësÎÏ¿Þs”·“JDå�Î]O 0^gZ{Qk›d7Zwwp»ý™ªžVz©šõP˜ª9É1h¾ÆÔÿüÒÓä�Ï]ÏÞÌÔª�ùÊ|ƒœ0hwºG˜K[võ¶ÒýÒ±õz[¤¶ÑÙî­>'z¡ÁÝT¾f¿G»:åæwl‘÷_´I~³gD²yÆyÐZCýÝ²yÍ 	Š¨F¶Òýp»áI^3+¨z09‰Ð¢–´õ%d¨�lY Ú�ßõÐ�¤µtVX–W5“ö”ÕsáÔƒ¡›Ã°¤ |zi“.¯
ê¢Â$�×C6gäpA |0!»ØôLû,+ž©°»ˆ	õPkb]ÈÇ
 eTZ“¬3ŸƒÞº³³óø€fb€iMÓZŽ®r+[O/7¦t=Ô Œj]«å‚jÐlí’§ü¡û ÊÐWXR´Ö“®ÖtÚc–­�H„S/‚: T 3œ½ì“$èåÒËÚÄ©Ã/Ztíº	õ@÷; T¡k’#¹ˆÄ¢1£º{µ'A�Î†·�“¢u,#ÑhÔÙ¹®³ÃœzÐI‹ÚånJ=Ô 'sËÈ§1¶34
Ýï  X‚–:ÚÞù7¯ÝO K,*¨k7ûû"º.4�¹” ‚æ+¨»“[B�4°w÷tK,l 0�¯ >‘™  #pzq©»UuEº¤««kQÅùÍíïlÈaŒáÀžû0õƒ´–N <Â’ ZÅsPŸžjŸ•rs@»òÞR¯°SÞ’ ° Sˆ °DÝëÔÓci9pà€LMW^â¶rÅJéïëç= @ÕÔuòÜž½{jŽmîÝ·×É›¬ûß €æ¨;¨{™¬¤�{i÷K’H$ª>N×÷&{eÉàª  ŸZ–&ÖÙ0S{[º±±1‰F¢’J¥ZR.  laäD¹lŽõÇ  øÊ]úá =.äh€Ö	ePM�P
ÔÒ×Û'ñxœó -B3
  KÔ °A  KÔ °D('ÊE"¡,vÛéèìh÷S  -Êè8Ø?h@)  0M^ ƒœ>Pf ‚Ç˜:  –¨+¨k¶°fdcÌ  ÿêŽž«W­–Ã<íÖæE2™dïu  ¡î Þ—êsn   XŒ© `	‚:  –ðÔ;:H$³�Ü òÔ»ººØFa• ,ä+Jw'»9}0BW¤Kbñ• E:ffffüœ�B¡ ““2U˜ŸOê¦½EÑXTÝ	†„  „ï à˜‘##œ�&ñ“r”zhêÁ^ë�Ar  ,AP Àu  ,AP Àu  ,AP Àu  ,±è<›�Ú?ðCÎ�t ÊóÔsÙœ“QŽ Ž hF¹îžnö" €¾>5 �gÆ	èT>——±ôiŠ „¯ >1>Áùƒ¦§¦%;™¥2  ˆç >5Å.0‹n* 8ÆsP' Ã4¼'`!f `‰E/is¦
222RuòÜÀÀ€Ä¢1Þ3  4QÝA}×®]21Y}]z,-ëÖ®c	  MTWP×Öy­€®²Ù¬ìÞ»[ú«oòÞ!ÒÝÝ-‘HÝ×  ´�–EÏ±±1çV‹¶æ×¿b½Äbt× à‡qýáÚú×îz  à�‘ƒÜ,U À¿P^:|È€R Ñ–,a2% Ô!”A�–<Ú�I;Óµóÿõ`ê¡2¦™†Ò®D"áìJgR†~ˆ
g·FMm;§º�Xù‚LN¶I=tÎþ?è$jÓ‚z>Ÿ7f÷R‚:` ýÐJ¥RÒÙeÞp„–MœÞ2cçÍVÄ{S½F9õ‹J$qêA/´lez=è…†ûÿt=0€	¨'Ùcd@/¥å4©ÕÔhN=>ÏCÏ²7iu=$“ÉPÔCàÿ"òÿý�Šbå¬    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                              assets/js/toastr/toastr.min.js                                                                      0000644                 00000012141 15266052542 0012440 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       !function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=d(t)),v)}function o(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function s(e){C=e}function i(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var o=m();v||n(o),u(e,o,t)||l(o)}function c(t){var o=m();return v||n(o),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function l(t){for(var n=v.children(),o=n.length-1;o>=0;o--)u(e(n[o]),t)}function u(t,n,o){var s=!(!o||!o.force)&&o.force;return!(!t||!s&&0!==e(":focus",t).length)&&(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0)}function d(t){return v=e("<div/>").attr("id",t.containerId).addClass(t.positionClass),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">&times;</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("<div/>"),M=e("<div/>"),B=e("<div/>"),q=e("<div/>"),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.4",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)});

                                                                                                                                                                                                                                                                                                                                                                                                                               assets/js/toastr/toastr.min.css                                                                     0000644                 00000014466 15266052547 0012635 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}}                                                                                                                                                                                                          assets/js/cross.js                                                                                  0000644                 00000010745 15266052555 0010173 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jQuery(document).ready(function () {
    const fbv_cross = `<div id="filebird_cross" class="fbv-cross-wrap">
    <div class="fbv-cross-popup">
      <div class="fbv-cross-icon-wrap">
        <i class="fbv-icon fbv-i-folder"></i>
        <i class="dashicons dashicons-no-alt"></i>
      </div>
      <div class="fbv-cross-sub">
        <span>Organize your files</span>
      </div>
    </div>
    <div class="fbv-cross-window">
      <div class="fbv-cross-window-mess">
        <h3>Your WordPress media library is messy?</h3>
        <span>Start using FileBird to organize your files into folders by drag and drop.</span>
      </div>
      <div class="fbv-cross-window-img-wrap">
        <img src="https://ps.w.org/filebird/assets/screenshot-2.gif" alt="screenshot_demo">
      </div>
      <div class="fbv-cross-window-btn">
        <div><a class="button button-primary fbv-cross-install" href="javascript:;"><i class="dashicons dashicons-wordpress-alt"></i>Install for free</a></div>
        <div><a class="fbv-cross-link fbv-cross-hide-popup" href="javascript:;" rel="noopener noreferrer">Don't display again</a></div>
      </div>
    </div>
  </div>`

  const install_failed = `<div class="fbv-noti-install-failed"><div class="fbv-label-error">Oops! Installation failed.</div><div>Please try <a href="${njtCross.filebird_install_url}">manual installation</a>.</div></div>`

  jQuery.fn.exists = function (callback) {
    var args = [].slice.call(arguments, 1)
    if (this.length) {
      callback.call(this, args)
    }
    return this
  }
  jQuery('body.upload-php #wpfooter').exists(function () {
    njtCross.show_popup && this.append(fbv_cross)
  })
  jQuery('.fbv-cross-popup').click(function () {
    jQuery(this).parent().toggleClass('fbv-cross-popup-open')
  })
  jQuery('.fbv-cross-link.fbv-cross-hide-popup').click(function () {
    const a = jQuery('#filebird_cross')

    jQuery.ajax({
      url: ajaxurl,
      method: 'POST',
      data: {
        action: 'njt_filebird_cross_hide',
        nonce: njtCross.nonce,
        type: 'popup'
      },
      beforeSend: function(){
        a.removeClass('fbv-cross-popup-open').addClass('fbv_permanent_hide')
      },
      success: function(){
        // a.removeClass('fbv-cross-popup-open').addClass('fbv_permanent_hide')
        setTimeout(function () {
          a.remove()
        }, 2000)
      }
    })
    // const a = jQuery('#filebird_cross')
    // a.removeClass('fbv-cross-popup-open').addClass('fbv_permanent_hide')
    // setTimeout(function () {
    //   a.remove()
    // }, 2000)
  })
  jQuery('.fbv-cross-link.fbv-cross-hide-notification').click(function(){
    jQuery.ajax({
      url: ajaxurl,
      type: 'POST',
      dataType: 'json',
      data: {
        action: 'njt_filebird_cross_hide',
        nonce: njtCross.nonce,
        type: 'notification'
      }
    }).done(function(result) {
      if (result.success) {
        jQuery('#njt-ads-wrapper button.notice-dismiss').click()
      } else {
        console.log("Error", result.data.status)
      }
    });
  })
  jQuery('.fbv-cross-install:not(.fbv_installing)').click(function (e) {
    e.preventDefault()
    const normal = '<i class="dashicons dashicons-wordpress-alt"></i>Install for free'
    const loading = '<i class="dashicons dashicons-update-alt"></i>Installing<span class="text-dots"><span>.<span></span>'
    const done = '<i class="dashicons dashicons-saved"></i>Installed! Organize files now'
    const error = '<i class="dashicons dashicons-warning"></i>Install failed. Retry'
    const a = jQuery(this)
    
    jQuery.ajax({
      url: ajaxurl,
      method: 'POST',
      data: {
          action: 'njt_filebird_cross_install',
          nonce: njtCross.nonce
      },
      beforeSend: function(){
        a.focusout()
        a.addClass('fbv_installing')
        a.html(loading)
      },
      success: function(response){
        if (response.success) {
          a.removeClass('fbv_installing').addClass('fbv_done')
          a.html(done)
          a.off('click')
          a.click(()=> { window.location.href = njtCross.media_url })
        } else {
          a.removeClass('fbv_installing').addClass('fbv_error')
          a.parent().after(install_failed)
          a.html(error)
        }
      },
      error: function(response){
        a.removeClass('fbv_installing').addClass('fbv_error')
        a.parent().after(install_failed)
        a.html(error)
      }
    })
    // setTimeout(function () {
    //   a.removeClass('fbv_installing').addClass('fbv_done')
    //   a.html(done)
    // }, 3000)
  })
})
                           assets/js/file_manager_admin.js                                                                     0000644                 00000040523 15266052562 0012616 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       const njtFileManager = {
  sunriseCreateCookie(name, value, days) {
    if (days) {
      var date = new Date();
      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
      var expires = "; expires=" + date.toGMTString();
    } else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
  },

  sunriseReadCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(";");
    for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == " ") c = c.substring(1, c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
  },

  capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  },

  //Setting tab
  activeTabSetting() {
    var pagenow = "njt-fs-filemanager-settings-tab";
    jQuery("#njt-plugin-tabs a").click(function (event) {
      jQuery("#njt-plugin-tabs a").removeClass("nav-tab-active");
      jQuery(".njt-plugin-setting").hide();
      jQuery(this).addClass("nav-tab-active");
      if (jQuery(this).data('tab') == 'njt_fs_roles') {
        location.hash = "#user-role-restrictions";
      } else {
        var noHashURL = window.location.href.replace(/#.*$/, '');
        window.history.replaceState('', document.title, noHashURL)
      }

      // Show current pane
      jQuery(".njt-plugin-setting:eq(" + jQuery(this).index() + ")").show();
      njtFileManager.sunriseCreateCookie(pagenow + "_last_tab", jQuery(this).index(), 365);
    });

    //Auto-open tab by cookies
    if (njtFileManager.sunriseReadCookie(pagenow + "_last_tab") != null)
      jQuery("#njt-plugin-tabs a:eq(" + njtFileManager.sunriseReadCookie(pagenow + "_last_tab") + ")").trigger("click");
    // Open first tab by default
    else jQuery("#njt-plugin-tabs a:eq(0)").trigger("click");
  },

  themeSelector() {
    if (jQuery('input[name = "selected-theme"]')) {
      const selectedTheme = jQuery('input[name = "selected-theme"]').val()
      jQuery('#selector-themes').val(selectedTheme);
    }

    jQuery('select#selector-themes').on('change', function () {
      const themesValue = jQuery(this).val()
      const dataThemes = {
        'action': 'selector_themes',
        'themesValue': themesValue,
        'nonce': wpData.nonce,
      }
      jQuery.post(
        wpData.admin_ajax,
        dataThemes,
        function (response) {
          jQuery('link#themes-selector-css').attr('href', response.data)
        });
    });
  },

  actionSettingFormSubmit() {
    jQuery('.njt-settings-form-submit').on('click', function () {
      const arraylistUserAccess = [];
      jQuery('.fm-list-user-item').each(function () {
        if (jQuery(this).is(":checked")) {
          arraylistUserAccess.push(jQuery(this).val());
        }
      });
      if (!wpData.is_multisite) {
        arraylistUserAccess.push('administrator')
      }
      jQuery("#list_user_alow_access").val(arraylistUserAccess)
    })
  },

  userHasApproved() {
    const arrayUserHasApproved = jQuery('#list_user_has_approved').val() ? jQuery('#list_user_has_approved').val().split(",") : []
    for (itemUserHasApproved of arrayUserHasApproved) {
      if (!wpData.is_multisite) {
        if (itemUserHasApproved != 'administrator') {
          jQuery('input[name = ' + itemUserHasApproved + ']').prop('checked', true);
        }
      } else {
        jQuery('input[name = ' + itemUserHasApproved + ']').prop('checked', true);
      }
     
    }
  },

  actionSubmitRoleRestrictionst() {
    jQuery('#njt-form-user-role-restrictionst').on('click', function () {
      const arrayUserRestrictionsAccess = [];
      if (!jQuery('.njt-fs-list-user-restrictions').val()) {
        alert('Please select a User Role at Setings tab to use this option.')
        return false;
      }
      jQuery('.fm-list-user-restrictions-item').each(function () {
        if (jQuery(this).is(":checked")) {
          arrayUserRestrictionsAccess.push(jQuery(this).val());
        }
      });
      jQuery("#list_user_restrictions_alow_access").val(arrayUserRestrictionsAccess)

      if (jQuery("#hide_paths").val().trim().length > 0) {
        const valueHidePaths = jQuery("#hide_paths").val().trim().split("|")
        const newValueHidePaths = []
        for (const itemHidePath of valueHidePaths) {
          if (itemHidePath.trim().length > 0) {
            newValueHidePaths.push(itemHidePath.trim())
          }
        }
        jQuery("#hide_paths").val(newValueHidePaths.join("|"))
      }

      if (jQuery("#lock_files").val().trim().length > 0) {
        const valueLockFiles = jQuery("#lock_files").val().trim().split("|")
        const newValueLockFiles = []
        for (const itemLockFile of valueLockFiles) {
          if (itemLockFile.trim().length > 0) {
            newValueLockFiles.push(itemLockFile.trim())
          }
        }
        jQuery("#lock_files").val(newValueLockFiles.join("|"))
      }

    })
  },

  restrictionsHasApproved() {
    const arrayRestrictionsHasApproved = jQuery('#list_restrictions_has_approved').val() ? jQuery('#list_restrictions_has_approved').val().split(",") : []
    for (itemRestrictionsHasApproved of arrayRestrictionsHasApproved) {
      jQuery('input[name = ' + itemRestrictionsHasApproved + ']').prop('checked', true);
    }
  },

  ajaxRoleRestrictions() {
    jQuery('select.njt-fs-list-user-restrictions').on('change', function () {
      const valueUserRole = jQuery(this).val()
      const dataUserRole = {
        'action': 'get_role_restrictions',
        'valueUserRole': valueUserRole,
        'nonce': wpData.nonce,
      }
      jQuery.post(
        wpData.admin_ajax,
        dataUserRole,
        function (response) {
          const resRestrictionsHasApproved = response.data.disable_operations ? response.data.disable_operations.split(",") : []
          const resPrivateFolderAccess = response.data.private_folder_access ? response.data.private_folder_access : ''
          const resPrivateURLFolderAccess = response.data.private_url_folder_access ? response.data.private_url_folder_access : ''
          const resHidePaths = response.data.hide_paths ? response.data.hide_paths.replace(/[,]+/g, ' | ') : '';
          const resLockFiles = response.data.lock_files ? response.data.lock_files.replace(/[,]+/g, ' | ') : '';
          const resCanUploadMime = response.data.can_upload_mime ? response.data.can_upload_mime : '';
          jQuery('input.fm-list-user-restrictions-item').prop('checked', false);
          for (itemRestrictionsHasApproved of resRestrictionsHasApproved) {
            jQuery('input[name = ' + itemRestrictionsHasApproved + ']').prop('checked', true);
          }
          // Set value for textarea[name='private_folder_access']
          jQuery('textarea#private_folder_access').val(resPrivateFolderAccess)
          // Set value for textarea[name='private_url_folder_access']
          jQuery('textarea#private_url_folder_access').val(resPrivateURLFolderAccess)
          // Set value for textarea[name='hide_paths']
          jQuery('textarea#hide_paths').val(resHidePaths)
          // Set value for textarea[name='lock_files']
          jQuery('textarea#lock_files').val(resLockFiles)
          // Set value for textarea[name='can_upload_mime']
          jQuery('textarea#can_upload_mime').val(resCanUploadMime)
        });
    });
  },
  clickedCreatRootPath() {
    jQuery('.js-creat-root-path').on('click', function () {
      const valueRootPath = wpData.ABSPATH
      jQuery('textarea#private_folder_access').val(valueRootPath)
    })
  },

  ajaxSaveSettings() {
    jQuery('.njt-settings-form-submit').on('click', function () {
      const arraylistUserAccess = [];
      jQuery(this).addClass('njt-fs-updating-message');
      jQuery('.fm-list-user-item').each(function () {
        if (jQuery(this).is(":checked")) {
          arraylistUserAccess.push(jQuery(this).val());
        }
      });
      if (!wpData.is_multisite) {
        arraylistUserAccess.push('administrator')
      }
      jQuery("#list_user_alow_access").val(arraylistUserAccess)
      const list_user_alow_access = jQuery("#list_user_alow_access").val()
      const root_folder_path = jQuery("#root_folder_path").val()
      const root_folder_url = jQuery("#root_folder_url").val()
      const upload_max_size = jQuery("#upload_max_size").val()
      const fm_locale = jQuery("#fm_locale").val()
      const enable_htaccess = jQuery("#enable_htaccess").is(":checked")
      const enable_trash = jQuery("#enable_trash").is(":checked")
      const enable_sensitive_protection = jQuery("#enable_sensitive_protection").is(":checked")
      const data = {
        'nonce': wpData.nonce,
        'action': 'njt_fs_save_setting',
        'root_folder_path': root_folder_path,
        'root_folder_url': root_folder_url,
        'list_user_alow_access': list_user_alow_access,
        'upload_max_size': upload_max_size,
        'fm_locale': fm_locale,
        'enable_htaccess': enable_htaccess,
        'enable_trash': enable_trash,
        'enable_sensitive_protection': enable_sensitive_protection

      }
      const toastr_opt = {
        closeButton: true,
        showDuration: 300,
        hideDuration: 300,
        hideMethod: "fadeOut",
        positionClass: "toast-top-right njt-fs-toastr"
      }
      jQuery.post(
        wpData.admin_ajax,
        data,
        function (response) {
          const list_access = response.data.njt_fs_file_manager_settings.list_user_alow_access
          const index = list_access.indexOf('administrator');
          if (index > -1) {
            list_access.splice(index, 1);
          }

          if (list_access.length > 0) {
            jQuery('.njt-fs-list-user-restrictions').empty()
            list_access.forEach((item) => {
              jQuery('.njt-fs-list-user-restrictions').append(`<option value="${item}"> ${njtFileManager.capitalizeFirstLetter(item)} </option>`);
            });
            jQuery('.njt-text-error').hide()
          } else {
            jQuery('.njt-fs-list-user-restrictions').empty()
            jQuery('.njt-fs-list-user-restrictions').append('<option selected="" disabled="" hidden="">Nothing to choose</option>');
            jQuery('.njt-text-error').show()
          }
          jQuery('.njt-fs-list-user-restrictions').change()
          if (response.success) {
            jQuery('.njt-settings-form-submit').removeClass('njt-fs-updating-message');
            toastr.success('Changes Saved', '', toastr_opt)
          } else {
            jQuery('.njt-settings-form-submit').removeClass('njt-fs-updating-message');
            toastr.error('Please try again later', '', toastr_opt)
          }
        });
    })
  },
  ajaxSaveSettingsRestrictions() {
    jQuery('#njt-form-user-role-restrictionst').on('click', function () {
      jQuery(this).addClass('njt-fs-updating-message');
      const njt_fs_list_user_restrictions = jQuery(".njt-fs-list-user-restrictions").val()
      const list_user_restrictions_alow_access = jQuery("#list_user_restrictions_alow_access").val()
      const private_folder_access = jQuery("#private_folder_access").val()
      const private_url_folder_access = jQuery("#private_url_folder_access").val()
      const hide_paths = jQuery("#hide_paths").val()
      const lock_files = jQuery("#lock_files").val()
      const can_upload_mime = jQuery("#can_upload_mime").val()

      const data = {
        'nonce': wpData.nonce,
        'action': 'njt_fs_save_setting_restrictions',
        'njt_fs_list_user_restrictions': njt_fs_list_user_restrictions,
        'list_user_restrictions_alow_access': list_user_restrictions_alow_access,
        'private_folder_access': private_folder_access,
        'private_url_folder_access': private_url_folder_access,
        'hide_paths': hide_paths,
        'lock_files': lock_files,
        'can_upload_mime': can_upload_mime
      }
      const toastr_opt = {
        closeButton: true,
        showDuration: 300,
        hideDuration: 200,
        hideMethod: "fadeOut",
        positionClass: "toast-top-right njt-fs-toastr"
      }
      jQuery.post(
        wpData.admin_ajax,
        data,
        function (response) {
          if (response.success) {
            jQuery('#njt-form-user-role-restrictionst').removeClass('njt-fs-updating-message');
            toastr.success('Changes Saved', '', toastr_opt)
          } else {
            jQuery('#njt-form-user-role-restrictionst').removeClass('njt-fs-updating-message');
            toastr.error('Error! Please try again', '', toastr_opt)
          }
        });
    })
  },
  fsConnector() {
    jQuery('#njt-fs-file-manager').elfinder({
      url: ajaxurl,
      handlers : {
        dblclick : function(event, elfinderInstance) {
          event.preventDefault();
          elfinderInstance.exec('getfile')
          .done(function() { 
            try {
              elfinderInstance.exec('edit'); 
            } catch (e) {
              elfinderInstance.exec('quicklook'); 
            }
          })
          .fail(function() { elfinderInstance.exec('open');});
        }
      },
      // disable quicklook
      // bootCallback : function(fm) {
      //     fm.bind('init', function() {
      //         fm._commands.quicklook.getstate = function() {
      //             return -1;
      //         }
      //     });
      // },
      getFileCallback : function(files, fm) {
        return false;
      }, 
      contextmenu: {
        // current directory file menu
        files: ['getfile', '|', 'open', 'opennew', 'download', 'opendir', 'quicklook', 'email', '|', 'upload',
          'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', 'edit',
          'resize', '|', 'archive', 'extract', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod',
          'netunmount'
        ],
        // navbarfolder menu
        navbar: ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate',
          '|', 'rm', 'empty', 'hide', '|', 'rename', '|', 'archive', '|', 'places', 'info', 'chmod',
          'netunmount'
        ],
        // current directory menu
        cwd: ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'mkfile', 'paste', '|',
          'empty', 'hide', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod',
          'netunmount',
          '|', 'fullscreen', '|'
        ],
      },
      uiOptions : {
        // toolbar configuration
        toolbar : [
          ['home', 'back', 'forward', 'up', 'reload'],
          ['netmount'],
          ['mkdir', 'mkfile', 'upload'],
          ['open', 'download', 'getfile'],
          ['undo', 'redo'],
          ['copy', 'cut', 'paste', 'rm', 'empty', 'hide'],
          ['duplicate', 'rename', 'edit', 'resize', 'chmod'],
          ['selectall', 'selectnone', 'selectinvert'],
          ['quicklook', 'info'],
          ['extract', 'archive'],
          ['search'],
          ['view', 'sort'],
          ['preference', 'help'],
          ['fullscreen']
        ],
        toolbarExtra : {
          defaultHides: [],
          // show Preference button into contextmenu of the toolbar (true / false)
          preferenceInContextmenu: false
        },
      },
      ui: ['toolbar', 'tree', 'path', 'stat'],
      customData: {
        action: 'fs_connector',
        nonce: wpData.nonce_connector,
      },
      // Upload the whole file in one request (avoids IIS 400 on chunked multipart uploads).
      uploadMaxChunkSize: '1048576000000',
      lang: wpData.lang,
      requestType: 'get',
      width: 'auto',
      height: '600',
    });
  }
}

jQuery(document).ready(function () {
  if (jQuery("div").hasClass("njt-fs-file-manager")) {

    //set select value
    njtFileManager.themeSelector();
    // Start- Setting for `Select User Roles to access`
    njtFileManager.actionSettingFormSubmit();
    // Get value to prop checked for input checkbox
    njtFileManager.userHasApproved();
    //Setting tab
    njtFileManager.activeTabSetting();

    njtFileManager.actionSubmitRoleRestrictionst();
    // Get value to prop checked for input checkbox
    njtFileManager.restrictionsHasApproved();
    //Ajax change value
    njtFileManager.ajaxRoleRestrictions();
    //Creat root path default
    njtFileManager.clickedCreatRootPath();
    // End- Setting for `Select User Roles Restrictions to access`

    //Ajax settings
    njtFileManager.ajaxSaveSettings();
    njtFileManager.ajaxSaveSettingsRestrictions();
    if(jQuery(".elfinder-theme-ext") > 0) {
      jQuery(".elfinder-theme-ext").remove()
    }
    njtFileManager.fsConnector();

  }
});
                                                                                                                                                                             assets/js/review.js                                                                                 0000644                 00000002147 15266052567 0010343 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jQuery(document).ready(function () {
    jQuery("#njt-fs-review a").on("click", function () {
        const thisElement = this;
        const fieldValue = jQuery(thisElement).attr("data");
        const freeLink = "https://wordpress.org/support/plugin/filester/reviews/#new-post";
        let hidePopup = false;
        if (fieldValue == "rateNow") {
            window.open(freeLink, "_blank");
        } else {
            hidePopup = true;
        }

        jQuery
        .ajax({
          dataType: 'json',
          url: wpDataFs.admin_ajax,
          type: "post",
          data: {
            action: "njt_fs_save_review",
            field: fieldValue,
            nonce: wpDataFs.nonce,
          },
        })
        .done(function (result) {
            if (hidePopup == true) {
                jQuery( "#njt-fs-review .notice-dismiss" ).trigger( "click" );
            }
        })
        .fail(function (res) {
            if (hidePopup == true) {
                console.log(res.responseText);
                jQuery( "#njt-fs-review .notice-dismiss" ).trigger( "click" );
            }
        });
    })
})                                                                                                                                                                                                                                                                                                                                                                                                                         assets/css/file_manager_admin.css                                                                   0000644                 00000017727 15266052572 0013161 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .toplevel_page_njt-fs-filemanager #wpwrap{
  z-index: 20;
}
.njt-fs-wrap .wp-heading-inline{
  font-size: 23px;
  font-weight: 400;
  margin: 0;
  line-height: 1.3;
}
.elfinder-dialog-edit {
  z-index: 9999 !important;
}
.njt-fs-mr0 {
  margin: 0 !important;
}
.njt-fs-pd0 {
  padding: 0 !important;
}
.njt-fs-file-manager {
  padding-right: 20px;
}
.njt-fs-file-manager .nav-tab-active {
  background-color: #ffff !important;
  border-bottom: 1px solid #ffff;
}
.wp-core-ui select{
  min-height: 20px !important;
}
.njt-fs-select-theme {
  display: flex;
  position: relative;
  height: 50px;
  margin-top: 10px;
  align-items: center;
  margin-bottom: 10px;
}
.njt-fs-select-theme .select-theme-content {
  position: absolute;
  right: 0px;
  display: flex;
}

.njt-fs-select-theme .select-theme-title {
  margin: 8px 10px;
  font-size: 14px;
}
/* CSS Setting */
#njt-plugin-tabs {
  padding-top: 20px;
}
.njt-fs-settings-content {
  background-color: #ffff;
  padding: 20px 20px;
  margin: 0px 0px 20px 0;
  padding-right: 0;
}
.njt-fs-settings-content .form-user-role-restrictions .form-table th {
  width: 320px !important;
}
.njt-fs-settings-content .settings-title {
  margin-bottom: 20px;
}
.njt-fs-settings-content .settings-title h1 {
  margin: 0;
}
.njt-fs-settings-content .njt-fs-pd-0 {
  padding: 0;
}
.njt-fs-settings-content .des-path {
  padding-top: 10px;
  padding-bottom: 5px;
}
/* shortcode-switch */
.shortcode-switch {
  display: inline-block;
  height: 20px;
  position: relative;
  width: 40px;
}
.shortcode-switch input {
  display: none;
}
.shortcode-switch .slider {
  background-color: #ccc;
  bottom: 0;
  cursor: pointer;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  transition: 0.4s;
}
.shortcode-switch .slider:before {
  background-color: #fff;
  bottom: 2px;
  content: "";
  height: 16px;
  left: 2px;
  position: absolute;
  transition: 0.4s;
  width: 16px;
}
.shortcode-switch input:checked + .slider {
  background-color: #66bb6a;
}
.shortcode-switch input:checked + .slider:before {
  transform: translateX(20px);
}
.shortcode-switch .slider.round {
  border-radius: 34px;
}
.shortcode-switch .slider.round:before {
  border-radius: 50%;
}
.njt-fs-button {
  border: 1px solid #007cba;
  color: #0071a1;
  padding: 2px 10px;
  cursor: pointer;
  margin-right: 10px;
  margin-bottom: 10px;
  background: #f3f5f6;
  border-radius: 3px;
  font-size: 12px;
}
.njt-fs-button:hover {
  background: #f1f1f1;
  border-color: #016087;
  color: #016087;
}

.njt-btn-group:after {
  content: "";
  clear: both;
  display: table;
}
.njt-plugin-setting.settings-form .njt-settting-width,
.form-user-role-restrictions .njt-settting-width-select {
  width: 45%;
}
.njt-plugin-setting.settings-form .njt-fs-settting-width-half {
  width: 20%;
}
.form-user-role-restrictions .njt-settting-width {
  width: 80%;
}
.njt-fs-list-col4 {
  display: flex;
  flex-wrap: wrap;
}
.njt-fs-list-col4 .list-col4-item {
  flex: 0 0 25%;
    max-width: 25%;
    padding: 0!important;
    display: block;
    position: relative;
    width: 100%;
    padding-right: 15px;
    padding-left: 15px;
}
/* .njt-fs-list-col4 .list-col4-item label {
  padding-right: 25px;
} */
.form-user-role-restrictions .njt-text-error {
  color: #a00;
  margin-top: 10px;
}
.njt-fs-list-user.njt-settting-width {
  width: 80% !important;
}
@media screen and (max-width: 769px) {
  .form-user-role-restrictions .njt-settting-width,
  .form-user-role-restrictions .njt-settting-width-select,
  .njt-plugin-setting.settings-form .njt-settting-width,
  .njt-plugin-setting.settings-form .njt-fs-settting-width-half {
    width: 100%;
  }
  #upload_max_size.njt-fs-settting-width-half,
  #fm_locale.njt-fs-settting-width-half {
    width: 50%;
  }
  .njt-fs-settings-content {
    padding: 20px 20px;
  }
  .njt-fs-list-col4 .list-col4-item {
    flex: 0 0 33%;
    max-width: 33%;
  }
  .settings-form .njt-fs-list-col4 .list-col4-item {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .njt-fs-file-manager {
    padding-right: 10px;
  }
  #njt-plugin-tabs {
    padding-top: 0;
  }
}
#toast-container.njt-fs-toastr>.toast-success {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Capa_1' x='0px' y='0px' viewBox='0 0 512 512' style='enable-background:new 0 0 512 512;' xml:space='preserve' width='512px' height='512px'%3E%3Cg%3E%3Cg%3E %3Cg%3E %3Cpath d='M256,0C114.833,0,0,114.833,0,256s114.833,256,256,256s256-114.853,256-256S397.167,0,256,0z M256,472.341 c-119.275,0-216.341-97.046-216.341-216.341S136.725,39.659,256,39.659c119.295,0,216.341,97.046,216.341,216.341 S375.275,472.341,256,472.341z' data-original='%23000000' class='active-path' data-old_color='%23000000' fill='%23007CBA'/%3E %3C/g%3E %3C/g%3E%3Cg%3E %3Cg%3E %3Cpath d='M373.451,166.965c-8.071-7.337-20.623-6.762-27.999,1.348L224.491,301.509l-58.438-59.409 c-7.714-7.813-20.246-7.932-28.039-0.238c-7.813,7.674-7.932,20.226-0.238,28.039l73.151,74.361 c3.748,3.807,8.824,5.929,14.138,5.929c0.119,0,0.258,0,0.377,0.02c5.473-0.119,10.629-2.459,14.297-6.504l135.059-148.722 C382.156,186.854,381.561,174.322,373.451,166.965z' data-original='%23000000' class='active-path' data-old_color='%23000000' fill='%23007CBA'/%3E %3C/g%3E %3C/g%3E%3C/g%3E %3C/svg%3E")!important;
}

#toast-container.njt-fs-toastr>.toast-error {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Capa_1' x='0px' y='0px' viewBox='0 0 340.8 340.8' style='enable-background:new 0 0 340.8 340.8;' xml:space='preserve' width='512px' height='512px'%3E%3Cg%3E%3Cg%3E %3Cg%3E %3Cpath d='M170.4,0C76.4,0,0,76.4,0,170.4s76.4,170.4,170.4,170.4s170.4-76.4,170.4-170.4S264.4,0,170.4,0z M170.4,323.6 c-84.4,0-153.2-68.8-153.2-153.2S86,17.2,170.4,17.2S323.6,86,323.6,170.4S254.8,323.6,170.4,323.6z' data-original='%23000000' class='active-path' data-old_color='%23000000' fill='%23C63C36'/%3E %3C/g%3E %3C/g%3E%3Cg%3E %3Cg%3E %3Cpath d='M182.4,169.6l50-50c3.2-3.2,3.2-8.8,0-12c-3.2-3.2-8.8-3.2-12,0l-50,50l-50-50c-3.2-3.2-8.8-3.2-12,0 c-3.2,3.2-3.2,8.8,0,12l50,50l-50,49.6c-3.2,3.2-3.2,8.8,0,12c1.6,1.6,4,2.4,6,2.4s4.4-0.8,6-2.4l50-50l50,50c1.6,1.6,4,2.4,6,2.4 s4.4-0.8,6-2.4c3.2-3.2,3.2-8.8,0-12L182.4,169.6z' data-original='%23000000' class='active-path' data-old_color='%23000000' fill='%23C63C36'/%3E %3C/g%3E %3C/g%3E%3C/g%3E %3C/svg%3E")!important
}

.toast-top-right.njt-fs-toastr {
  top: 34px;
}

.njt-fs-toastr .toast-error,.njt-fs-toastr .toast-success {
  background-color: #f1efef;
  background-size: 24px;
}

.njt-fs-toastr .toast-close-button {
  color: rgba(0,0,0,.45);
  top: -3px;
}

.njt-fs-toastr .toast-message {
  color: #000000;
  font-size: 14px;
  margin-left: 10px;
}

@media only screen and (min-width: 1400px){
  .njt-fs-list-col4 .list-col4-item {
    flex: 0 0 14%;
    max-width: 14%;
  }
}
@media only screen and (min-width: 2500px){

  .njt-fs-list-user.njt-settting-width {
    width: 50% !important;
  }
}

.button-primary.njt-fs-updating-message::after{
  color: #e10909;
  font-family: dashicons;
  display: inline-block;
  line-height: 1;
  font-weight: 400;
  font-style: normal;
  speak: never;
  text-decoration: inherit;
  text-transform: none;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
  height: 20px;
  font-size: 20px;
  vertical-align: top;
  text-align: center;
  transition: color .1s ease-in;
}

.button.njt-fs-updating-message:after {
  margin: 4px 0px 0px 10px;
}

.button.njt-fs-updating-message:after {
  animation: rotation 2s infinite linear;
}

.button.njt-fs-updating-message:after {
  color: #f0f0f1;
  content: "\f463";
}

.button.njt-fs-updating-message:after{
  display: inline-block;
  font: normal 20px/1 dashicons;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  vertical-align: top;
}

.njt-fs-toastr {
  animation: mytoastr .35s linear;
}
@keyframes mytoastr {
  from {
    opacity: 0;
  	transform: translateY(20px);
  }
  to {
  	transform: none;
    opacity: 1;
  }
}                                          index.php                                                                                           0000644                 00000000000 15266052572 0006364 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       views/pages/html-filemanager-settings.php                                                           0000644                 00000023220 15266052572 0014574 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined('ABSPATH') || exit;
$viewPathLanguage = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager-language.php';
$viewUserRoleRestrictions = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager-user-role-restrictions.php';
global $wp_roles;
if( isset( $_POST ) && !empty( $_POST ) && !empty($_POST['njt-settings-form-submit'])){
  if( ! wp_verify_nonce( $_POST['njt-fs-settings-security-token'] ,'njt-fs-settings-security-token')) wp_die();

  $this->options['njt_fs_file_manager_settings']['root_folder_path']  = !empty($_POST['root_folder_path']) ? str_replace("\\\\", "/", trim(sanitize_text_field($_POST['root_folder_path']))) : '';
  $this->options['njt_fs_file_manager_settings']['enable_htaccess'] =  isset($_POST['enable_htaccess']) ? sanitize_text_field($_POST['enable_htaccess']) : 0;
  $this->options['njt_fs_file_manager_settings']['enable_trash'] =  isset($_POST['enable_trash']) ? sanitize_text_field($_POST['enable_trash']) : 0;
  $this->options['njt_fs_file_manager_settings']['upload_max_size'] =  !empty($_POST['upload_max_size']) ? sanitize_text_field(trim($_POST['upload_max_size'])) : 0;
  $this->options['njt_fs_file_manager_settings']['fm_locale'] = !empty($_POST['fm_locale']) ? sanitize_text_field($_POST['fm_locale']) : 'en';
  $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] = !empty($_POST['list_user_alow_access']) ? explode(',', sanitize_text_field($_POST['list_user_alow_access'])) : array();
}

?>
<div class="njt-fs-settings njt-fs-file-manager">
  <h1 id="njt-plugin-tabs" class="nav-tab-wrapper hide-if-no-js">
    <a href="javascript:void(0)" class="nav-tab nav-tab-active" data-tab="njt_fs_setting"><?php _e("Settings", 'filester'); ?></a>
    <a href="javascript:void(0)" class="nav-tab" data-tab="njt_fs_roles"><?php _e("User Role Restrictions", 'filester'); ?></a>
  </h1>
  <div class="njt-fs-settings-content">
    <form action="" class="njt-plugin-setting settings-form" method="POST">
      <!-- creat token -->
      <input type='hidden' name='njt-fs-settings-security-token'
        value='<?php echo wp_create_nonce('njt-fs-settings-security-token'); ?>'>

      <table class="form-table">
        <tr>
          <th><?php _e("Select User Roles to access", 'filester'); ?></th>
          <td>
            <div class="njt-fs-list-user njt-settting-width njt-fs-list-col4" style="line-height:2">
              <?php foreach ( $wp_roles->roles as $key=>$value ): ?>
                <?php if (is_multisite() && is_super_admin()) {?>
              <span class="list-col4-item">
                <input type="checkbox" class="fm-list-user-item" id="<?php echo $key; ?>" name="<?php echo $key; ?>"
                  data-name="<?php echo esc_attr($value['name']);?>" value="<?php echo $key; ?>">
                <label for="<?php echo $key; ?>"> <?php echo esc_html($value['name']); ?></label>
              </span>
              <?php } else {
                if ($key != 'administrator') {
              ?>
                
              <span class="list-col4-item">
                <input type="checkbox" class="fm-list-user-item" id="<?php echo $key; ?>" name="<?php echo $key; ?>"
                  data-name="<?php echo esc_attr($value['name']);?>" value="<?php echo $key; ?>">
                <label for="<?php echo $key; ?>"> <?php echo esc_html($value['name']); ?></label>
              </span>
              <?php  }}?>
              <?php endforeach; ?>
              <!-- Value to submit data -->
              <input type="hidden" name="list_user_alow_access" id="list_user_alow_access">
              <!-- Data saved after submit -->
              <input type="hidden" name="list_user_has_approved" id="list_user_has_approved"
                value="<?php echo esc_attr(implode(",", !empty($this->options['njt_fs_file_manager_settings']['list_user_alow_access']) ? $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] : array()));?>">
            </div>
          </td>
        </tr>
        <!-- root Path -->
        <tr>
          <th><?php _e("Root Path", 'filester'); ?></th>
          <td>
            <textarea type='text' name='root_folder_path' id='root_folder_path' class="njt-settting-width"
              placeholder="ex: <?php echo (str_replace("\\", "/", ABSPATH)."wp-content");?>"> <?php  if( isset( $this->options['njt_fs_file_manager_settings']['root_folder_path'] ) && !empty( $this->options['njt_fs_file_manager_settings']['root_folder_path'] ) ) echo str_replace("\\", "/",esc_attr($this->options['njt_fs_file_manager_settings']['root_folder_path'])); ?></textarea>
            <div>
            <p class="description njt-settting-width">
              <?php _e("Default path is: "."<code>". str_replace("\\", "/", ABSPATH)."</code>", 'filester'); ?>
            </p>
            <p class="description njt-settting-width">
            <?php _e("Eg: If you want to set root path access is ". "<strong>wp-content</strong>". " folder. Just enter ", 'filester'); ?>
              <?php echo (str_replace("\\", "/", ABSPATH));?>wp-content
            </p>
          </div>
          </td>
        </tr>
        <!-- url Path -->
        <tr>
          <th><?php _e("Files URL", 'filester'); ?></th>
          <td>
            <textarea type='text' name='root_folder_url' id='root_folder_url' class="njt-settting-width"
              placeholder="ex: <?php echo (site_url());?>"> <?php  if( isset( $this->options['njt_fs_file_manager_settings']['root_folder_url'] ) && !empty( $this->options['njt_fs_file_manager_settings']['root_folder_url'] ) ) echo str_replace("\\", "/",esc_attr($this->options['njt_fs_file_manager_settings']['root_folder_url'])); ?></textarea>
            <div>
            <p class="description njt-settting-width">
              <?php _e("Default path is: "."<code>". str_replace("\\", "/", site_url())."</code>", 'filester'); ?>
            </p>
          </div>
          </td>
        </tr>
        <!-- Maximum Upload Size -->
        <tr>
          <th><?php _e("Maximum Upload Size", 'filester'); ?></th>
          <td>
            <input type="number" name="upload_max_size" id="upload_max_size" class="njt-fs-settting-width-half"
              value="<?php  if( isset( $this->options['njt_fs_file_manager_settings']['upload_max_size'] ) && !empty( $this->options['njt_fs_file_manager_settings']['upload_max_size'] )) echo esc_attr($this->options['njt_fs_file_manager_settings']['upload_max_size']); ?>">
            <strong><?php _e("MB", 'filester'); ?></strong>
            <div class="des-path njt-settting-width">
              <small>
                <?php _e("Default:", 'filester'); ?>
                <b><?php _e("0 means unlimited upload.", 'filester'); ?></b>
              </small>
            </div>
          </td>
        </tr>
        <!-- Select language -->
        <tr>
          <th><?php _e("Select language", 'filester'); ?></th>
          <td>
            <?php include_once $viewPathLanguage; ?>
          </td>
        </tr>
        <!-- .htaccess -->
        <tr>
          <th><?php _e("Hide .htaccess?", 'filester'); ?></th>
          <td>
            <label class="shortcode-switch" for="enable_htaccess">
              <input name="enable_htaccess" type="checkbox" id="enable_htaccess" value="1"
                <?php echo isset($this->options['njt_fs_file_manager_settings']['enable_htaccess']) && ($this->options['njt_fs_file_manager_settings']['enable_htaccess'] == '1') ? 'checked="checked"' : '';?>>

              <div class="slider round"></div>
            </label>


            <p class="description njt-settting-width">
              <?php _e("Will Hide .htaccess file (if exists) in file manager.", 'filester'); ?>
            </p>
          </td>
        </tr>
        <!-- Enable Trash? -->
        <tr>
          <th><?php _e("Enable Trash?", 'filester'); ?></th>
          <td>
            <label class="shortcode-switch" for="enable_trash">
              <input name="enable_trash" type="checkbox" id="enable_trash" value="1"
                <?php echo isset($this->options['njt_fs_file_manager_settings']['enable_trash']) && ($this->options['njt_fs_file_manager_settings']['enable_trash'] == '1') ? 'checked="checked"' : '';?>>
              <div class="slider round"></div>
            </label>

            <p class="description njt-settting-width">
              <?php _e("After enable trash, after delete your files will go to trash folder.", 'filester'); ?></p>
          </td>
        </tr>
        <!-- Sensitive Files Protection -->
        <tr>
          <th><?php _e("Sensitive Files Protection", 'filester'); ?></th>
          <td>
            <label class="shortcode-switch" for="enable_sensitive_protection">
              <input name="enable_sensitive_protection" type="checkbox" id="enable_sensitive_protection" value="1"
                <?php echo isset($this->options['njt_fs_file_manager_settings']['enable_sensitive_protection']) && ($this->options['njt_fs_file_manager_settings']['enable_sensitive_protection'] == '1') ? 'checked="checked"' : '';?>>
              <div class="slider round"></div>
            </label>
            <p class="description njt-settting-width">
              <?php _e("Protect sensitive files like wp-config.php, .env, etc. Only administrators can access.", 'filester'); ?>
            </p>
          </td>
        </tr>
        <!-- button submit -->
        <tr>
          <td></td>
          <td>
            <p class="submit">
              <button type="button" name="njt-settings-form-submit" id="submit"
                class="button button-primary njt-settings-form-submit"><?php _e("Save Changes", 'filester'); ?></button>
            </p>
          </td>
        </tr>
      </table>
    </form>
    <!-- include html User Role Restrictions -->
    <?php include_once $viewUserRoleRestrictions; ?>
  </div>
</div>                                                                                                                                                                                                                                                                                                                                                                                views/pages/html-filemanager-user-role-restrictions.php                                             0000644                 00000025513 15266052572 0017406 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined('ABSPATH') || exit;
$viewListOperations = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager-list-operations.php';
$listUserApproved = !empty($this->options['njt_fs_file_manager_settings']['list_user_alow_access']) ? $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] : array();

if (isset($_POST) && !empty($_POST) && !empty($_POST['njt-form-user-role-restrictionst'])) {
  if (!wp_verify_nonce($_POST['njt-fs-user-restrictions-security-token'], 'njt-fs-user-restrictions-security-token')) {
      wp_die();
  }
  if(!empty($_POST['njt-fs-list-user-restrictions'])) {

    $userRoleRestrictedSubmited = !empty($_POST['njt-fs-list-user-restrictions']) ? sanitize_text_field($_POST['njt-fs-list-user-restrictions']) : '';
    
    if (empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'])) {
      $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'] = array();
    }

    //Save data list User Restrictions alow access
    $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$_POST['njt-fs-list-user-restrictions']]['list_user_restrictions_alow_access'] = 
      !empty($_POST['list_user_restrictions_alow_access']) ?
      explode(',', sanitize_text_field($_POST['list_user_restrictions_alow_access'])) : array();
    //Seperate or private folder access
    $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$_POST['njt-fs-list-user-restrictions']]['private_folder_access'] =
      !empty($_POST['private_folder_access']) ?
      str_replace("\\\\", "/", trim(sanitize_text_field($_POST['private_folder_access']))) : '';
    //Save data Enter Folder or File Paths That You want to Hide
    $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$_POST['njt-fs-list-user-restrictions']]['hide_paths'] = 
      !empty($_POST['hide_paths']) ?
      explode('|', preg_replace('/\s+/', '', sanitize_text_field($_POST['hide_paths']))) : array();
    //Save data Enter file extensions which you want to Lock
    $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$_POST['njt-fs-list-user-restrictions']]['lock_files'] =
      !empty($_POST['lock_files']) ?
      explode('|', preg_replace('/\s+/', '', sanitize_text_field($_POST['lock_files']))) : array();
    //Enter file extensions which can be uploaded
    $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$_POST['njt-fs-list-user-restrictions']]['can_upload_mime'] =
      !empty($_POST['can_upload_mime']) ?
      explode(',', preg_replace('/\s+/', '', sanitize_text_field($_POST['can_upload_mime']))) : array();
  }
}

$arrRestrictions = !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions']) ? $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'] : array();
if (count($arrRestrictions) > 0) {
  $firstKeyRestrictions = !empty($userRoleRestrictedSubmited) ? $userRoleRestrictedSubmited : $listUserApproved[0];
} else {
  $firstKeyRestrictions = '';
}
?>

<form action="" class="njt-plugin-setting form-user-role-restrictions" method="POST">
  <!-- creat token -->
  <input type='hidden' name='njt-fs-user-restrictions-security-token'
    value='<?php echo wp_create_nonce('njt-fs-user-restrictions-security-token'); ?>'>
  <table class="form-table">
    <tr>
      <th><?php _e("If User Role is", 'filester'); ?></th>
      <td>
        <div>
          <select class="njt-fs-list-user-restrictions njt-settting-width-select" name="njt-fs-list-user-restrictions">
            <?php
              if ($listUserApproved && count($listUserApproved) != 1) {
              foreach ( $wp_roles->roles as $key=>$value ):
                if (is_multisite()) {
                  if (in_array($key,$listUserApproved) ) {?>
                    <option value="<?php echo $key; ?>"
                      <?php echo(!empty($firstKeyRestrictions) && $firstKeyRestrictions == $key ) ? 'selected="selected"' : '';?>>
                      <?php echo esc_html($value['name']); ?>
                    </option>
                    <?php 
                        }
                }
                if (!is_multisite()) {
                  if ($key !== 'administrator' && in_array($key,$listUserApproved) ) {?>
                    <option value="<?php echo $key; ?>"
                      <?php echo(!empty($firstKeyRestrictions) && $firstKeyRestrictions == $key ) ? 'selected="selected"' : '';?>>
                      <?php echo esc_html($value['name']); ?>
                    </option>
                    <?php 
                        }
                }
                
              endforeach;}
              else {
             ?>
            <option selected disabled hidden><?php _e("Nothing to choose", 'filester'); ?></option>
            <?php }?>
          </select>
          <?php 
            if(empty($listUserApproved) || $listUserApproved && count($listUserApproved) == 1 && $listUserApproved[0] == 'administrator') {
              ?>
          <p class="description njt-text-error njt-settting-width">
            <?php _e("Please select a User Role at Setings tab to use this option.", 'filester'); ?>
          </p>
          <?php
            } else {
          ?>
          <p class="description njt-text-error njt-settting-width" style="display:none">
            <?php _e("Please select a User Role at Setings tab to use this option.", 'filester'); ?>
          </p>
          <?php
            } 
          ?>
        </div>
      </td>
    </tr>
    <tr>
      <th><?php _e("Disable command", 'filester'); ?></th>
      <td>
        <div style="line-height: 2" class="njt-settting-width njt-fs-list-col4">
          <?php include_once $viewListOperations; ?>
          <!-- Value to submit data -->
          <input type="hidden" name="list_user_restrictions_alow_access" id="list_user_restrictions_alow_access">
          <!-- Data saved after submit -->
          <input type="hidden" name="list_restrictions_has_approved" id="list_restrictions_has_approved"
            value="<?php echo esc_attr(implode(",", !empty($arrRestrictions[$firstKeyRestrictions]['list_user_restrictions_alow_access']) ? $arrRestrictions[$firstKeyRestrictions]['list_user_restrictions_alow_access'] : array()));?>">
        </div>
      </td>
    </tr>
    <tr>
      <th><?php _e("Root Path for this User Role", 'filester'); ?></th>
      <td>
        <div>
          <div class="njt-settting-width">
            <button type="button"
              class="njt-fs-button js-creat-root-path"><?php _e("Insert Root Path", 'filester'); ?></button>
          </div>
          <textarea name="private_folder_access" id="private_folder_access" placeholder="ex: <?php echo (str_replace("\\", "/", ABSPATH)."wp-content");?>"
            class="njt-settting-width"><?php echo esc_textarea(!empty($arrRestrictions[$firstKeyRestrictions]['private_folder_access']) ? $arrRestrictions[$firstKeyRestrictions]['private_folder_access'] : '');?></textarea>
          <div>
            <p class="description njt-settting-width">
              <?php _e("Default path is: "."<code>". str_replace("\\", "/", ABSPATH)."</code>", 'filester'); ?>
            </p>
            <p class="description njt-settting-width">
            <?php _e("Eg: If you want to set root path access is ". "<strong>wp-content</strong>". " folder. Just enter ", 'filester'); ?>
              <?php echo (str_replace("\\", "/", ABSPATH));?>wp-content
            </p>
          </div>
        </div>
      </td>
    </tr>
    <tr>
      <th><?php _e("Files URL for this User Role", 'filester'); ?></th>
      <td>
        <div>
          <textarea name="private_url_folder_access" id="private_url_folder_access" placeholder="ex: <?php echo (site_url());?>"
            class="njt-settting-width"><?php echo esc_textarea(!empty($arrRestrictions[$firstKeyRestrictions]['private_url_folder_access']) ? $arrRestrictions[$firstKeyRestrictions]['private_url_folder_access'] : '');?></textarea>
          <div>
            <p class="description njt-settting-width">
              <?php _e("Default path is: "."<code>". str_replace("\\", "/", site_url())."</code>", 'filester'); ?>
            </p>
            <p class="description njt-settting-width">
            <?php _e("Eg: If you want to set files url path access is ". "<strong>wp-content</strong>". " folder. Just enter ", 'filester'); ?>
              <?php echo (str_replace("\\", "/", site_url()));?>/wp-content
            </p>
          </div>
        </div>
      </td>
    </tr>
    <tr>
      <th> <?php _e("Enter folder or file paths that you want to Hide", 'filester'); ?></th>
      <td>
        <div>
          <textarea name="hide_paths" id="hide_paths"
            class="njt-settting-width"><?php echo esc_textarea(implode(" | ", !empty($arrRestrictions[$firstKeyRestrictions]['hide_paths']) ? $arrRestrictions[$firstKeyRestrictions]['hide_paths'] : array()));?></textarea>
          <p class="description njt-settting-width">
            <?php _e("Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/avada", 'filester'); ?>
          </p>
        </div>
      </td>
    </tr>
    <tr>
      <th><?php _e("Enter file extensions which you want to Lock", 'filester'); ?></th>
      <td>
        <div>
          <textarea name="lock_files" id="lock_files"
            class="njt-settting-width"><?php echo esc_textarea(implode(" | ", !empty($arrRestrictions[$firstKeyRestrictions]['lock_files']) ? $arrRestrictions[$firstKeyRestrictions]['lock_files'] : array()));?></textarea>
          <p class="description njt-settting-width">
            <?php _e("Multiple separated by vertical bar (|). Eg: .php | .png | .css", 'filester'); ?>
          </p>
        </div>
      </td>
    </tr>
    <tr>
      <th><?php _e("Enter file extensions which user can be Uploaded", 'filester'); ?></th>
      <td>
        <div>
          <textarea name="can_upload_mime" id="can_upload_mime"
            class="njt-settting-width"><?php echo esc_textarea(implode(",", !empty($arrRestrictions[$firstKeyRestrictions]['can_upload_mime']) ? $arrRestrictions[$firstKeyRestrictions]['can_upload_mime'] : array()));?></textarea>
          <p class="description njt-settting-width">
            <?php _e("Multiple separated by comma. If left empty, this means user can't upload any files. Eg: .jpg, .png, .csv", 'filester'); ?>
            <br>
            <?php _e("Note: For security reasons, non-admin users cannot upload files with the following extensions: .php, .htaccess, or mime types: text/x-php, text/php, text/plain", 'filester'); ?>
          </p>
        </div>
      </td>
    </tr>

    <!-- button submit -->
    <tr>
      <td></td>
      <td>
        <p class="submit">
          <button type="button" name="njt-form-user-role-restrictionst" id="njt-form-user-role-restrictionst"
            class="button button-primary"><?php _e("Save Changes", 'filester'); ?></button>
        </p>
      </td>
    </tr>
  </table>
</form>                                                                                                                                                                                     views/pages/index.php                                                                               0000644                 00000000000 15266052572 0010620 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       views/pages/html-filemanager-language.php                                                           0000644                 00000000715 15266052572 0014523 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
 $locales = njt_fs_locales();
?>

<select name="fm_locale" id="fm_locale" class="njt-fs-settting-width-half">
  <?php foreach($locales as $key => $locale) { ?>
  <option value="<?php echo $locale;?>"
    <?php echo (isset($this->options['njt_fs_file_manager_settings']['fm_locale']) && $this->options['njt_fs_file_manager_settings']['fm_locale'] == $locale) ? 'selected="selected"' : '';?>>
    <?php echo esc_html($key);?></option>
  <?php } ?>
</select>                                                   views/pages/html-filemanager.php                                                                    0000644                 00000003265 15266052572 0012745 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined('ABSPATH') || exit;
$lang = !empty( $this->options['njt_fs_file_manager_settings']['fm_locale']) ? $this->options['njt_fs_file_manager_settings']['fm_locale'] : ''; 
?>
<div class="njt-fs-file-manager">
  <div class="njt-fs-select-theme">
    <div class="njt-fs-wrap njt-fs-mr0">
      <h1 class="wp-heading-inline njt-fs-pd0"><?php _e("Filester - WordPress File Manager Pro", 'filester'); ?></h1>
    </div>
    <div class="select-theme-content">
      <?php    
      $selectorThemes = get_option('njt_fs_selector_themes', array());
      if (!is_array($selectorThemes)) {
          $selectorThemes = array();
      }
      $selectedTheme = isset($selectorThemes[$this->userRole]['themesValue']) ? $selectorThemes[$this->userRole]['themesValue'] : null;
    ?>
      <div class="njt-fs-wrap njt-fs-mr0">
        <h3 class="wp-heading-inline select-theme-title"><?php _e("Select theme:", 'filester'); ?></h3>
      </div>
      <select name="selector-themes" id="selector-themes">
        <option value="Default"><?php _e("Default Elfinder", 'filester'); ?></option>
        <option value="dark-slim"><?php _e("Dark Slim", 'filester'); ?></option>
        <option value="Material"><?php _e("Material", 'filester'); ?></option>
        <option value="Material-Gray"><?php _e("Material Gray", 'filester'); ?></option>
        <option value="Material-Light"><?php _e("Material Light", 'filester'); ?></option>
        <option value="windows-10"><?php _e("Windows 10", 'filester'); ?></option>
      </select>
      <input type="hidden" name="selected-theme" value="<?php echo esc_attr($selectedTheme) ?>">

    </div>
  </div>

  <div class="clear"></div>
  <div id="njt-fs-file-manager">
  </div>
</div>
                                                                                                                                                                                                                                                                                                                                           views/pages/html-filemanager-list-operations.php                                                    0000644                 00000001312 15266052576 0016072 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$listOperations = array(
  'mkdir'=>'mkdir',
  'mkfile'=>'mkfile',
  'rename'=>'rename',
  'duplicate'=>'duplicate',
  'paste'=>'paste',
  'archive'=>'archive',
  'extract'=>'extract',
  'copy'=>'copy',
  'cut'=>'cut',
  'edit'=>'edit',
  'rm'=>'rm',
  'download'=>'download',
  'upload'=>'upload',
  'search'=>'search'
)
?>

<?php foreach($listOperations as $key => $listOperation) { ?>
<span class="list-col4-item">
  <input type="checkbox" class="fm-list-user-restrictions-item" id="<?php echo esc_attr($key); ?>" name="<?php echo esc_attr($key); ?>"
    value="<?php echo esc_attr($key); ?>">
  <label for="<?php echo esc_attr($key); ?>"><?php echo esc_html($listOperation); ?></label>
</span>
<?php } ?>                                                                                                                                                                                                                                                                                                                      license.txt                                                                                         0000644                 00000002753 15266052603 0006743 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       elFinder is issued under a 3-clauses BSD license.

Copyright (c) 2009-2018, Studio 42 All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of the Studio 42 Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL "STUDIO 42" OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                     i18n/languages/filester.pot                                                                         0000644                 00000012420 15266052610 0011634 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:78
msgid "0 means unlimited upload."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:118
msgid "After enable trash, after delete your files will go to trash folder."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:19
msgid "Dark Slim"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:18
msgid "Default Elfinder"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:77
msgid "Default:"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:88
msgid "Disable command"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:109
msgid "Enable Trash?"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:147
msgid "Enter file extensions which user can be Uploaded"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:135
msgid "Enter file extensions which you want to Lock"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:123
msgid "Enter folder or file paths that you want to Hide"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:8
msgid "Filester - WordPress File Manager Pro"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:92
msgid "Hide .htaccess?"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:55
msgid "If User Role is"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:106
msgid "Insert Root Path"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:74
msgid "MB"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:20
msgid "Material"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:21
msgid "Material Gray"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:22
msgid "Material Light"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:70
msgid "Maximum Upload Size"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:173
msgid "Multiple separated by comma. If left empty, this means user can't upload any files."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:141
msgid "Multiple separated by vertical bar (|). Eg: .php | .png | .css"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:129
msgid "Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/avada."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:72
msgid "Nothing to choose"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:79
msgid "Please select a User Role at Setings tab to use this option."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:53
msgid "Root Path"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:101
msgid "Root Path for this User Role"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:31
msgid "Select User Roles to access"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:85
msgid "Select language"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:15
msgid "Select theme:"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:20
msgid "Settings"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:21
msgid "User Role Restrictions"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:103
msgid "Will Hide .htaccess file (if exists) in file manager."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:23
msgid "Windows 10"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:165
msgid "adobe"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:163
msgid "archives"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:161
msgid "audio"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:167
msgid "clear all"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:157
msgid "images"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:155
msgid "office"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:153
msgid "text"
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:159
msgid "video"
msgstr ""
                                                                                                                                                                                                                                                i18n/languages/en_US.mo                                                                             0000644                 00000006077 15266052610 0010654 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       Þ•    )      d  ;   ¬      ˜  D   ™  	   Þ     è     ù            0      ,   Q  0   ~  %   ¯     Õ     å     õ          	                /  S   C  >   —  O   Ö     &  <   8  	   u          œ     ¸     È     Ö     ß  5   ö  
   ,     7     =     F  	   L     V     ]     d     i  ù   o  D   i  	   ®     ¸     É     Ò     â  0   ð  ,   !	  0   N	  %   	     ¥	     µ	     Å	     Ö	     Ù	     â	     ð	     ÿ	  S   
  >   g
  O   ¦
     ö
  <     	   E     O     l     ˆ     ˜     ¦     ¯  5   Æ  
   ü                 	        &     -     4     9                       &                          #               	             $                        %                         !       )      '   "                            
       (                      After enable trash, after delete your files will go to trash folder. Dark Slim Default Elfinder Default: Disable command Enable Trash? Enter file extensions which user can be Uploaded Enter file extensions which you want to Lock Enter folder or file paths that you want to Hide Filester - WordPress File Manager Pro Hide .htaccess? If User Role is Insert Root Path MB Material Material Gray Material Light Maximum Upload Size Multiple separated by comma. If left empty, this means user can't upload any files. Multiple separated by vertical bar (|). Eg: .php | .png | .css Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/avada. Nothing to choose Please select a User Role at Setings tab to use this option. Root Path Root Path for this User Role Select User Roles to access Select language Select theme: Settings User Role Restrictions Will Hide .htaccess file (if exists) in file manager. Windows 10 adobe archives audio clear all images office text video Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Project-Id-Version: 
PO-Revision-Date: 
Language-Team: 
MIME-Version: 1.0
X-Generator: Poedit 2.3.1
Last-Translator: 
Plural-Forms: nplurals=2; plural=(n != 1);
Language: en_US
 After enable trash, after delete your files will go to trash folder. Dark Slim Default Elfinder Default: Disable command Enable Trash? Enter file extensions which user can be Uploaded Enter file extensions which you want to Lock Enter folder or file paths that you want to Hide Filester - WordPress File Manager Pro Hide .htaccess? If User Role is Insert Root Path MB Material Material Gray Material Light Maximum Upload Size Multiple separated by comma. If left empty, this means user can't upload any files. Multiple separated by vertical bar (|). Eg: .php | .png | .css Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/avada. Nothing to choose Please select a User Role at Setings tab to use this option. Root Path Root Path for this User Role Select User Roles to access Select language Select theme: Settings User Role Restrictions Will Hide .htaccess file (if exists) in file manager. Windows 10 adobe archives audio clear all images office text video                                                                                                                                                                                                                                                                                                                                                                                                                                                                  i18n/languages/en_US.po                                                                             0000644                 00000014677 15266052610 0010664 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"X-Generator: Poedit 2.3.1\n"
"Last-Translator: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en_US\n"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:78
msgid "0 means unlimited upload."
msgstr ""

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:118
msgid "After enable trash, after delete your files will go to trash folder."
msgstr "After enable trash, after delete your files will go to trash folder."

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:19
msgid "Dark Slim"
msgstr "Dark Slim"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:18
msgid "Default Elfinder"
msgstr "Default Elfinder"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:77
msgid "Default:"
msgstr "Default:"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:88
msgid "Disable command"
msgstr "Disable command"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:109
msgid "Enable Trash?"
msgstr "Enable Trash?"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:147
msgid "Enter file extensions which user can be Uploaded"
msgstr "Enter file extensions which user can be Uploaded"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:135
msgid "Enter file extensions which you want to Lock"
msgstr "Enter file extensions which you want to Lock"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:123
msgid "Enter folder or file paths that you want to Hide"
msgstr "Enter folder or file paths that you want to Hide"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:8
msgid "Filester - WordPress File Manager Pro"
msgstr "Filester - WordPress File Manager Pro"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:92
msgid "Hide .htaccess?"
msgstr "Hide .htaccess?"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:55
msgid "If User Role is"
msgstr "If User Role is"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:106
msgid "Insert Root Path"
msgstr "Insert Root Path"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:74
msgid "MB"
msgstr "MB"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:20
msgid "Material"
msgstr "Material"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:21
msgid "Material Gray"
msgstr "Material Gray"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:22
msgid "Material Light"
msgstr "Material Light"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:70
msgid "Maximum Upload Size"
msgstr "Maximum Upload Size"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:173
msgid ""
"Multiple separated by comma. If left empty, this means user can't upload any "
"files."
msgstr ""
"Multiple separated by comma. If left empty, this means user can't upload any "
"files."

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:141
msgid "Multiple separated by vertical bar (|). Eg: .php | .png | .css"
msgstr "Multiple separated by vertical bar (|). Eg: .php | .png | .css"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:129
msgid ""
"Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/"
"avada."
msgstr ""
"Multiple separated by vertical bar (|). Eg: themes/twentytwenty | themes/"
"avada."

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:72
msgid "Nothing to choose"
msgstr "Nothing to choose"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:79
msgid "Please select a User Role at Setings tab to use this option."
msgstr "Please select a User Role at Setings tab to use this option."

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:53
msgid "Root Path"
msgstr "Root Path"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:101
msgid "Root Path for this User Role"
msgstr "Root Path for this User Role"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:31
msgid "Select User Roles to access"
msgstr "Select User Roles to access"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:85
msgid "Select language"
msgstr "Select language"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:15
msgid "Select theme:"
msgstr "Select theme:"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:20
msgid "Settings"
msgstr "Settings"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:21
msgid "User Role Restrictions"
msgstr "User Role Restrictions"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-settings.php:103
msgid "Will Hide .htaccess file (if exists) in file manager."
msgstr "Will Hide .htaccess file (if exists) in file manager."

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager.php:23
msgid "Windows 10"
msgstr "Windows 10"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:165
msgid "adobe"
msgstr "adobe"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:163
msgid "archives"
msgstr "archives"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:161
msgid "audio"
msgstr "audio"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:167
msgid "clear all"
msgstr "clear all"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:157
msgid "images"
msgstr "images"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:155
msgid "office"
msgstr "office"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:153
msgid "text"
msgstr "text"

#. Text in echo
#: wp-file-manager/views/pages/html-filemanager-user-role-restrictions.php:159
msgid "video"
msgstr "video"
                                                                 ninja-file-manager.php                                                                              0000644                 00000004766 15266052610 0010721 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * Plugin Name: Filester - File Manager Pro
 * Plugin URI: https://ninjateam.org/filester
 * Description: Made to help you focus on WordPress file management and avoid being distracted.
 * Version: 2.1.2
 * Author: Ninja Team
 * Author URI: https://ninjateam.org
 * Text Domain: filester
 * Domain Path: /i18n/languages/
 *
 * @package BigPlugin
 */

namespace NinjaFileManager;

if (file_exists(dirname(__FILE__) . '/includes/File_manager/lib/php/autoload.php')) {
  require_once dirname(__FILE__) . '/includes/File_manager/lib/php/autoload.php';
}

if (file_exists(dirname(__FILE__) . '/includes/File_manager/FileManagerHelper.php')) {
  require_once dirname(__FILE__) . '/includes/File_manager/FileManagerHelper.php';
}

if (file_exists(dirname(__FILE__) . '/includes/Recommended/Recommended.php')) {
  require_once dirname(__FILE__) . '/includes/Recommended/Recommended.php';
}

if (file_exists(dirname(__FILE__) . '/includes/functions.php')) {
  require_once dirname(__FILE__) . '/includes/functions.php';
}



defined('ABSPATH') || exit;

define('NJT_FS_BN_PREFIX', 'njt-fs');
define('NJT_FS_BN_VERSION', '2.1.2');
define('NJT_FS_BN_DOMAIN', 'filester');

define('NJT_FS_BN_PLUGIN_DIR', basename(__DIR__));
define('NJT_FS_BN_PLUGIN_URL', plugin_dir_url(__FILE__));
define('NJT_FS_BN_PLUGIN_PATH', plugin_dir_path(__FILE__));

spl_autoload_register(function ($class) {
  $prefix = __NAMESPACE__; // project-specific namespace prefix
  $base_dir = __DIR__ . '/includes'; // base directory for the namespace prefix

  $len = strlen($prefix);
  if (strncmp($prefix, $class, $len) !== 0) { // does the class use the namespace prefix?
    return; // no, move to the next registered autoloader
  }

  $relative_class_name = substr($class, $len);

  // replace the namespace prefix with the base directory, replace namespace
  // separators with directory separators in the relative class name, append
  // with .php
  $file = $base_dir . str_replace('\\', '/', $relative_class_name) . '.php';

  if (file_exists($file)) {
    require $file;
  }
});

// Add crossale for filebird
if (file_exists(dirname(__FILE__) . '/includes/cross.php')) {
  require_once dirname(__FILE__) . '/includes/cross.php';
}

function init() {
  Plugin::getInstance();
  I18n::getInstance();
  File_manager\FileManager::getInstance();
}
add_action('plugins_loaded', 'NinjaFileManager\\init');

register_activation_hook(__FILE__, array('NinjaFileManager\\Plugin', 'activate'));
register_deactivation_hook(__FILE__, array('NinjaFileManager\\Plugin', 'deactivate'));

          readme.txt                                                                                          0000644                 00000023662 15266052610 0006556 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       === File Manager Pro - Filester ===
Contributors: ninjateam
Donate link: https://ninjateam.org/filester-file-manager-pro/
Tags: file manager, wordpress file manager, wp file manager, ftp, download plugin
Requires at least: 3.0
Tested up to: 7.0
Stable tag: 2.1.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Best WordPress file manager without FTP access. Edit code with built-in editor, upload files, download plugins, download themes, manage wp directory, and more!

== Description ==

Filester is a **WP File Manager Pro** plugin, but you can download and use it completely for free. It comes with all the premium features of other WordPress advanced file manager plugins out there. 

Filester helps you manage WordPress file directory and edit your website's base configuration details, while [FileBird](https://1.envato.market/FileBird-Folders-Plugin) allows you to manage/upload/download **media library folders**. 

With this File Manager Pro, you can copy, paste, create an archive, download, upload, edit, delete, preview, duplicate, and get info of the WordPress configuration and directory files **without FTP access**.

This file manager plugin is dedicated to boosting your productivity in managing WordPress. All necessary file operations are fully provided and tested on a variety of servers and browsers.

Another thing you will appreciate about it is the clean and compact UI/UX, which makes editing and transferring directory files and folders extra fast.

**Did you know?**
More than [700,000 WordPress websites](https://www.wordfence.com/blog/2020/09/millions-of-sites-targeted-in-file-manager-vulnerability-attacks/) were attacked during September 2020.
Malicious bots are looking to exploit vulnerable versions of WP file manager plugins.
Fortunately, Filester comes with this vulnerability **fixed**!
Filester poses no risk to you, so rest assured! ðŸ¤—

###âš¡ï¸� FEATURES

- **Drag & drop interface:** Easily move and arrange files
- **Smart context menu:** Right-click on any files to make operations
- **Manage files and folders:** Copy, move, upload, create folder/file, rename, duplicate, etc.
- **Built-in advanced code editor:** Integrated development environment ACE Editor, CodeMirror, CKEditor, TinyMCE, and others
- **Flexible configuration:** Access rights, uploadable file types/extensions, maximum file size limit, and more
- **Create/extract archives:** .zip, .rar, .xz, .tar, .gzip
- **Great UI/UX design:** Clean, high-quality & productivity-driven 
- **User authority settings:** File extensions to be locked, file visibility, root path access, .htaccess file 
- **Edit media files:** Using Photopea & TUI Image Editor
- **Multiple languages supported:** English, German, Spanish, Italian, French, Japanese, etc.
- **RTL supported:** Hebrew, Arabic, Persian, Kurdish, etc.

###ðŸ™Œ OTHER FEATURES

- Local file system
- Simple client-server API based on JSON
- List and icon view
- Multi-root support
- Hidden files/folders options
- Set hidden files for other users
- Root path for each user role
- Easy to navigate
- 6 themes for your preferred interface

###ðŸ”‘ HOW IT WORKS

Filester plugin helps you easily manage WordPress files so that you donâ€™t have to access directories via FTP or cPanel. 

This plugin creates a new menu **File Manager** in your WordPress dashboard. From then on, you can view all server files, configuration, and media files on your current WordPress website.

You can edit, copy, upload/download files/folders to your server from File Manager section. This toolbar is similar to the settings in an FTP client. It allows you to preview, edit, upload, download, duplicate and delete files or folders.

With Filester, it's easy to modify the auto-update mechanism with each new version of WordPress. You can quickly **search for specific text or code** within your WordPress files and replace it efficiently.

With built-in code editors, you can edit code files with syntax highlighting and code completion features for themes, plugins, and custom code snippets. It takes one click to download a plugin's **ZIP file** to your local storage. It helps track changes made to files and revert to previous versions if needed.

All webmasters can also [download WordPress media library](https://ninjateam.org/download-wordpress-media-library/?utm_source=wp-org&utm_medium=filester) using Filester download options as well. Yet the media files are organized in month- and year-based folders.

###ðŸŽ� COMPATIBILITY

Filester works seamlessly with all major WordPress themes, page builders, and website builders.

ðŸ’™ **Like Filester?** [Write us a review here](https://wordpress.org/support/plugin/filester/reviews/?filter=5) âœ¨

ðŸ‘‰ **Explore recommended plugins and themes:**

- [Brandy](https://wpbrandy.com/?utm_source=wp-org&utm_medium=filester) - WooCommerce theme, sales-first design.
- [Shadcn](https://wordpress.org/themes/shadcn/) - Minimal. Clean code. Beautiful blocks. Zero clutter.
- [YaySMTP](https://wordpress.org/plugins/yaysmtp/) â€“ Clean & lightweight WordPress SMTP plugin.

= CREDIT =
Big thanks to elFinder - Open-source file manager for web.

== Installation ==
Manual installation is easy and takes less than one minute.

1. Download the plugin from wordpress.org, unpack it and upload the **[Filester]** folder to your **wp-content/plugins/** directory.
2. Activate the plugin through the â€˜Pluginsâ€˜ menu in WordPress.
3. Go to your main **WordPress menu > File Manager** to use.

Youâ€™re done. Enjoy.

== Frequently Asked Questions ==

= Is Filester really free? Are there hidden upsells? = 
Yes, Filester is completely free and comes with all the premium features built in. There is no paid tier, no upgrade prompts, and no feature locked behind a paywall. 

= Can I control which users have access to the File Manager? =
Yes. Filester includes user authority settings that let you define access rights per user role. You can restrict which file extensions are visible or locked, set root path access, control file visibility, and limit uploadable file types and maximum file sizes. This keeps sensitive files protected from unauthorized users.

= Can I use Filester to manage my WordPress media library? =
No, Filester lets you browse, upload/download/edit and manage your WordPress file directory. 

To manage WordPress media library or download entire media folders with your organized structure, you'll need the [FileBird plugin](https://ninjateam.org/wordpress-media-library-folders/?utm_source=wp-org&utm_medium=filester).

= How can I get support if I encounter issues with Filester? =
You can [create a new public topic](https://wordpress.org/support/plugin/filester/#new-topic-0), and we'll come back shortly for a quick fix.
Otherwise, feel free to [chat or email us](https://ninjateam.org/support/).

== Screenshots ==
1. WP file manager for WordPress directory
2. Filester general settings
3. Filester user role restriction settings
4. Top free file manager plugins comparison chart

== Changelog ==

= Jul 15, 2026 - Version 2.1.2 =
- Fixed: Private-folder fail-open issue.

= May 23, 2026 - Version 2.1.1 =
- Fixed: OS command injection issue

= Apr 20, 2026 - Version 2.1.0 =
- Added: Recommended plugins
- Improved: Error logs

= Dec 17, 2025 - Version 2.0.2 =
- Added: Implement validation and auto-correction for the root folder path and URL
- Fixed: Occasionally, "/s/" is included in the link path on the file info

= Oct 29, 2025 - Version 2.0.1 =
- Fixed: Display notice 
- Fixed: Miss Themes folder 

= Sep 12, 2025 - Version 2.0 =
- Updated: Elfinder library ver 2.1.66
- Added: Icon Refresh folder

= Jun 28, 2025 - Version 1.9 =
- Fixed: Authenticated (Subscriber+) Directory Traversal to Arbitrary File Deletion

= Jun 11, 2025 - Version 1.8.9 =
- Fixed: Patchstack security report

= May 15, 2025 - Version 1.8.8 =
- Improved: Prevent abuse via modified .htaccess file
- Fixed: A vulnerability due to missing file type validation

= Dec 17, 2024 - Version 1.8.7 =
- Fixed: Security (CVE ID: CVE-2024-8066)

= Nov 25, 2024 - Version 1.8.6 =
- Fixed: Security

= Nov 12, 2024 - Version 1.8.5 =
- Fixed: Security

= Aug 7, 2024 - Version 1.8.4 =
- Fixed: Plugin missing .js / 403 error query

= Aug 1, 2024 - Version 1.8.3 =
- Fixed: Unauthorized modification of data due to a missing capability check

= Dec 18, 2023 - Version 1.8.2 =
- Updated: Elfinder library to version 2.1.62

= Sep 12, 2023 - Version 1.8.1 =
- Fixed: Security for multisite

= Sep 8, 2023 - Version 1.8 =
- Fixed: Security issue

= Jun 27, 2022 - Version 1.7.6 =
- Added: Recommend plugins

= Jun 20, 2022 - Version 1.7.5 =
- Added: Recommend plugins

= Dec 2, 2021 - Version 1.7.4 =
- Fixed: Conflict with plugin Nested Pages

= Jul 8, 2021 - Version 1.7.3 =
- Fixed: User role restrictions
- Fixed: Image notification

= Mar 25, 2021 - Version 1.7.2 =
- Fixed: Small bug

= Mar 25, 2021 - Version 1.7.1 =
- Fixed: Small bug

= Mar 25, 2021 - Version 1.7 =
- Improved: UI
- Fixed: Small bug

= Mar 15, 2021 - Version 1.6.1 =
- Fixed: Small bug

= Feb 3, 2021 - Version 1.6 =
- Added: MIME type logic for user roles
- Added: URL field
- Fixed: Image and PDF preview
- Fixed: Some small bugs

= Jan 11, 2021 - Version 1.5.2 =
- Added: MIME type support for .xlsb and .xlsm files
- Fixed: Compatibility with older WordPress versions
- Fixed: CSV file upload

= Dec 17, 2020 - Version 1.5.1 =
- Updated: jQuery UI to latest version

= Dec 10, 2020 - Version 1.5 =
- Updated: Elfinder to latest version
- Improved: Compatibility with WordPress 5.6

= Aug 7, 2020 - Version 1.4.1 =
- Fixed: Display issue in WordPress multisite menu
- Fixed: Windows 10 theme not working on Linux servers

= Jul 2, 2020 - Version 1.4 =
- Improved: Double-click to open or preview file
- Fixed: Some small bugs

= Jun 24, 2020 - Version 1.3 =
- Improved: Icon styling
- Fixed: Language selection
- Fixed: Private CSS/JS handling
- Fixed: Some small bugs

= Jun 16, 2020 - Version 1.2 =
- Fixed: Trash issue
- Fixed: Some small bugs

= May 29, 2020 - Version 1.1 =
- Fixed: Some small bugs
- Improved: UI

= May 8, 2020 - Version 1.0 =
- Initial release                                                                              includes/Plugin.php                                                                                 0000644                 00000003136 15266052610 0010327 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
namespace NinjaFileManager;

defined('ABSPATH') || exit;
/**
 * Plugin activate/deactivate logic
 */
class Plugin {
  protected static $instance = null;

  public static function getInstance() {
    if (null == self::$instance) {
      self::$instance = new self;
    }

    return self::$instance;
  }

  private function __construct() {
    add_action('plugins_loaded', array($this, 'loadPluginCross'));
  }

  public function loadPluginCross() {
    \FileBirdCross::get_instance('filebird', 'filebird+ninjateam', NJT_FS_BN_PLUGIN_URL, array('filebird/filebird.php', 'filebird-pro/filebird.php'));
  }

  /** Plugin activated hook */
  public static function activate() {
    $first_time_active = get_option('njt_fs_first_time_active');
    $njt_fs_review = get_option('njt_fs_review');

    if ($first_time_active === false) {
      update_option('njt_fs_first_time_active', 1);
      if ($njt_fs_review !== false) return;
        update_option('njt_fs_review', time() + 3*60*60*24); //After 3 days show
    }

    $current_version = get_option('njt_fs_version');
    if ( version_compare(NJT_FS_BN_VERSION, $current_version, '>') ) {
      $filebirdCross = \FileBirdCross::get_instance('filebird', 'filebird+ninjateam', NJT_FS_BN_PLUGIN_URL, array('filebird/filebird.php', 'filebird-pro/filebird.php'));
      $filebirdCross->need_update_option();
      update_option('njt_fs_version', NJT_FS_BN_VERSION);
      if ($njt_fs_review !== false) return;
        update_option('njt_fs_review', time() + 3*60*60*24); //After 3 days show
    }
  }

  /** Plugin deactivate hook */
  public static function deactivate() {
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                  includes/index.php                                                                                  0000644                 00000000000 15266052611 0010164 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       includes/File_manager/index.php                                                                     0000644                 00000000000 15266052611 0012535 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       includes/File_manager/FileManager.php                                                               0000644                 00000105127 15266052611 0013620 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
namespace NinjaFileManager\File_manager;

defined('ABSPATH') || exit;

/**
 * Settings Page
 */

class FileManager
{
    protected static $instance = null;
    
    /**
     *
     * @var object $options The object of the options class
     *
     * */
    public $options;
    public $fmCapability = '';
    public $userRole = '';
    private $hook_suffix = array();
    
    public static function getInstance()
    {
        if (null == self::$instance) {
            self::$instance = new self;
        }

        return self::$instance;
    }

    private function __construct()
    {
        //get user role
        $user = wp_get_current_user();
        $this->userRole = $user && $user->roles && isset($user->roles[0]) ? $user->roles[0] : '';

        if ( empty($this->userRole) && isset($user->roles)) {
			$role = '';
			foreach( $user->roles as $key => $value) {
				$role = $value;
			}
	
			$this->userRole = $role;
		}
        
        // Loading Options
        // Options
		$this->options = get_option('njt_fs_settings');
        if(empty($this->options)) {
            $this->options = array( // Setting up default values
                'njt_fs_file_manager_settings' => array(
                    'root_folder_path' =>  ABSPATH,
                    'root_folder_url' => site_url(),
                    'enable_sensitive_protection' => '1'
                ),
            );
        }
        register_shutdown_function(array($this, 'saveOptions'));

        add_action('init', array($this, 'isAlowUserAccess'));
        if ($this->isAlowUserAccess()) {
            add_action('admin_enqueue_scripts', array($this, 'enqueueAdminScripts'));
            add_action('admin_menu', array($this, 'FileManager'));
            add_action('wp_ajax_fs_connector', array($this, 'fsConnector'));
            add_action('wp_ajax_selector_themes', array($this, 'selectorThemes'));
            add_action('wp_ajax_get_role_restrictions', array($this, 'getArrRoleRestrictions'));
            add_action('wp_ajax_njt_fs_save_setting', array($this, 'njt_fs_saveSetting'));
            add_action('wp_ajax_njt_fs_save_setting_restrictions', array($this, 'njt_fs_saveSettingRestrictions'));
            
            $optionReview = get_option('njt_fs_review');
            if (time() >= (int)$optionReview && $optionReview !== '0'){
                add_action('admin_notices', array($this, 'njt_fs_give_review'));
            }
            
            add_action('wp_ajax_njt_fs_save_review', array($this, 'njt_fs_save_review'));
       }
    }

    public function njt_fs_give_review()
    {
        if (function_exists('get_current_screen')) {
            if (get_current_screen()->id == 'file-manager_page_filester-settings' || get_current_screen()->id == 'toplevel_page_njt-fs-filemanager' || get_current_screen()->id == 'plugins') {
                $this->enqueue_scripts();
                ?>
                <div class="notice notice-success is-dismissible" id="njt-fs-review">
                    <h3><?php _e('Give Filester a review', 'filester')?></h3>
                    <p>
                        <?php _e('Thank you for choosing Filester. We hope you love it. Could you take a couple of seconds posting a nice review to share your happy experience?', 'filester')?>
                    </p>
                    <p>
                        <?php _e('We will be forever grateful. Thank you in advance ;)', 'filester')?>
                    </p>
                    <p>
                        <a href="javascript:;" data="rateNow" class="button button-primary" style="margin-right: 5px"><?php _e('Rate now', 'filester')?></a>
                        <a href="javascript:;" data="later" class="button" style="margin-right: 5px"><?php _e('Later', 'filester')?></a>
                        <a href="javascript:;" data="alreadyDid" class="button"><?php _e('Already did', 'filester')?></a>
                    </p>
                </div>
                <?php
            }
        }
    }

    public function njt_fs_save_review()
    {
        if ( isset( $_POST ) ) {
            $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : null;
            $field = isset( $_POST['field'] ) ? sanitize_text_field( $_POST['field'] ) : null;

            if ( ! wp_verify_nonce( $nonce, 'njt-fs-review' ) ) {
				wp_send_json_error( array( 'status' => 'Wrong nonce validate!' ) );
				exit();
            }
            
            if ($field == 'later'){
                update_option('njt_fs_review', time() + 3*60*60*24); //After 3 days show
            } else if ($field == 'alreadyDid'){
                update_option('njt_fs_review', 0);
            }
            wp_send_json_success();
        }
        wp_send_json_error( array( 'message' => 'Update fail!' ) );
    }

    public function enqueue_scripts(){
        wp_enqueue_script('njt-fs-review', NJT_FS_BN_PLUGIN_URL . 'assets/js/review.js', array('jquery'), NJT_FS_BN_VERSION, false);
        wp_localize_script('njt-fs-review', 'wpDataFs', array(
            'admin_ajax' => admin_url('admin-ajax.php'),
            'nonce' => wp_create_nonce("njt-fs-review"),
        ));
    }

    public function isAlowUserAccess()
    {
        if($this->userRole) {
            $allowed_roles = !empty($this->options['njt_fs_file_manager_settings']['list_user_alow_access']) ? $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] : array();
            if( in_array($this->userRole,$allowed_roles)) {
                if (is_multisite() && $this->userRole == 'administrator') {
                    $this->fmCapability = 'activate_plugins';
                }
                $this->fmCapability = $this->userRole;
                return true;
            }
        }
        if (is_multisite() && is_super_admin()) {
            $this->fmCapability = 'create_sites';
            return true;
        } 

        if (!is_multisite() && is_super_admin()) {
            $this->fmCapability = 'administrator';
            return true;
        } 
        $this->fmCapability = 'read';
        return false;
    }

    public function FileManager()
    {
       if( class_exists( 'NestedPages' ) ) {
            $this->fmCapability = 'read';
       }
        $icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWOEMyMiw2Ljg5IDIxLjEsNiAyMCw2SDEyTDEwLDRaIiBmaWxsPSIjYTdhYWFkIi8+PC9zdmc+';
        $display_suffix = add_menu_page(
            __('Filester', 'textdomain'),
            'File Manager',
            $this->fmCapability,
            'njt-fs-filemanager',
            array($this, 'fsViewFileCallback'),
            $icon,
            9
        );
        if (is_multisite()) {
            $settings_suffix = add_submenu_page (
                'njt-fs-filemanager',
                'Settings',
                'Settings', 
                'create_sites', 
                'filester-settings',
                array($this, 'fsSettingsPage') );
        }
        
        if (!is_multisite()) {
            $settings_suffix = add_submenu_page (
                'njt-fs-filemanager',
                'Settings',
                'Settings', 
                'manage_options', 
                'filester-settings',
                array($this, 'fsSettingsPage') );
        }
       
        $this->hook_suffix = array($display_suffix, $settings_suffix);
    }

    public function fsViewFileCallback()
    {
        $viewPath = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager.php';
        include_once $viewPath;
    }

    public function fsSettingsPage()
    {
        $viewPath = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager-settings.php';
        include_once $viewPath;
    }

    public function enqueueAdminScripts($suffix)
    {
        if (in_array($suffix, $this->hook_suffix)) {
            $selectorThemes = get_option('njt_fs_selector_themes', array());
            if (!is_array($selectorThemes)) {
                $selectorThemes = array();
            }
            if (empty($selectorThemes[$this->userRole])) {
                $selectorThemes[$this->userRole] = array('themesValue' => 'Default');
                update_option('njt_fs_selector_themes', $selectorThemes);
            }
        
            $selectedTheme = $selectorThemes[$this->userRole]['themesValue'];

            //elfinder css
            wp_enqueue_style('elfinder.jq.css', plugins_url('/lib/jquery/jquery-ui.min.css', __FILE__));
            wp_enqueue_style('elfinder.full.css', plugins_url('/lib/css/elfinder.min.css', __FILE__));
            wp_enqueue_style('themes', plugins_url('/lib/css/theme.css', __FILE__));
            wp_enqueue_style('themes-selector', plugins_url('/lib/themes/' . $selectedTheme . '/css/theme.css', __FILE__));
        
            //elfinder core
            if(version_compare(get_bloginfo('version'),'5.6', '>=') ){
                wp_enqueue_script('jquery_min', plugins_url('/lib/jquery/jquery-ui.min.js', __FILE__));
            } else {
                wp_enqueue_script('jquery_min', plugins_url('/lib/jquery/jquery-ui-old.min.js', __FILE__));
            }          
            
            //elfinder js, toastr JS, css custom
            wp_register_style('njt_fs_toastr_css',NJT_FS_BN_PLUGIN_URL . 'assets/js/toastr/toastr.min.css');
            wp_enqueue_style('njt_fs_toastr_css');
            wp_enqueue_script('njt_fs_toastr_js', NJT_FS_BN_PLUGIN_URL . 'assets/js/toastr/toastr.min.js', array('jquery'), NJT_FS_BN_VERSION);

            wp_register_style('file_manager_admin_css',NJT_FS_BN_PLUGIN_URL . 'assets/css/file_manager_admin.css');
            wp_enqueue_style('file_manager_admin_css');
            wp_enqueue_script('file_manager_admin', NJT_FS_BN_PLUGIN_URL . 'assets/js/file_manager_admin.js', array('jquery'), NJT_FS_BN_VERSION, true);

            //js load elFinder
            wp_enqueue_script('njt_fs_elFinder', plugins_url('/lib/js/elfinder.min.js', __FILE__));

            wp_enqueue_script('njt_fs_elfinder_editor', plugins_url('/lib/js/extras/editors.default.js', __FILE__));
            //js load fm_locale
            if(isset($this->options['njt_fs_file_manager_settings']['fm_locale'])) {
                $locale = $this->options['njt_fs_file_manager_settings']['fm_locale'];
                if( !empty($locale) &&  $locale != 'en' && in_array($locale, njt_fs_locales(), true)) {
                    $locale = sanitize_file_name($locale);
                    wp_enqueue_script( 'njt_fs_fma_lang', plugins_url('lib/js/i18n/elfinder.'.$locale.'.js', __FILE__));
                }
            }

            wp_localize_script('njt_fs_elFinder', 'wpData', array(
                'admin_ajax' => admin_url('admin-ajax.php'),
                'nonce' => wp_create_nonce("njt-fs-file-manager-admin"),
                'PLUGIN_URL' => NJT_FS_BN_PLUGIN_URL .'includes/File_manager/lib/',
                'PLUGIN_PATH' => NJT_FS_BN_PLUGIN_PATH.'includes/File_manager/lib/',
                'PLUGIN_DIR'=> NJT_FS_BN_PLUGIN_DIR,
                'ABSPATH'=> str_replace("\\", "/", ABSPATH),
                'is_multisite' => is_multisite(),
                'lang' => !empty( $this->options['njt_fs_file_manager_settings']['fm_locale']) ? sanitize_file_name($this->options['njt_fs_file_manager_settings']['fm_locale']) : '',
                'nonce_connector' => wp_create_nonce('file-manager-security-token'),
            ));
        }
    }

    //File manager connector function

    public function fsConnector()
    {
        check_ajax_referer( 'file-manager-security-token', 'nonce' );
        $uploadMaxSize = isset($this->options['njt_fs_file_manager_settings']['upload_max_size']) && !empty($this->options['njt_fs_file_manager_settings']['upload_max_size']) ? $this->options['njt_fs_file_manager_settings']['upload_max_size'] : 0;

        // Get and validate root folder path
        $root_folder_path = isset($this->options['njt_fs_file_manager_settings']['root_folder_path']) && !empty($this->options['njt_fs_file_manager_settings']['root_folder_path']) 
            ? $this->options['njt_fs_file_manager_settings']['root_folder_path'] 
            : ABSPATH;
        
        // Get and validate root folder URL
        $root_folder_url = isset($this->options['njt_fs_file_manager_settings']['root_folder_url']) && !empty($this->options['njt_fs_file_manager_settings']['root_folder_url']) 
            ? $this->options['njt_fs_file_manager_settings']['root_folder_url'] 
            : site_url();
        
        // Validate path exists and is readable - auto-fix if invalid
        $path_needs_update = false;
        if (!empty($root_folder_path) && (!is_dir($root_folder_path) || !is_readable($root_folder_path))) {
            // Path is invalid, fallback to ABSPATH
            $root_folder_path = ABSPATH;
            $path_needs_update = true;
        }
        
        // Validate URL - auto-update to current site_url() if path was invalid
        // This ensures URL matches the new server/domain
        if ($path_needs_update) {
            $root_folder_url = site_url();
        }
        
        // Auto-update saved settings if path/URL was invalid
        if ($path_needs_update) {
            $this->options['njt_fs_file_manager_settings']['root_folder_path'] = $root_folder_path;
            $this->options['njt_fs_file_manager_settings']['root_folder_url'] = $root_folder_url;
            update_option('njt_fs_settings', $this->options);
        }

        $opts = array(
            'bind' => array(
                'put.pre' => array(new \FileManagerHelper, 'madeStripcslashesFile'), // Check endcode when save file.
            ),
            'debug' => false, 
            'roots' => array(
                array(
                    'driver' => 'LocalFileSystem',
                    'path' => $root_folder_path,
                    'URL' => $root_folder_url,
                    'tmpPath' => NJT_FS_BN_PLUGIN_PATH . 'includes/File_manager/lib/files/.tmp/',
                    'trashHash'     => '', // default is empty, when not enable trash
                    'uploadMaxSize' =>  $uploadMaxSize .'M',
                    'winHashFix'    => DIRECTORY_SEPARATOR !== '/', 
                    'uploadOrder'   => array('deny', 'allow'),
                    'uploadDeny'    => array('htaccess'),
                    //'acceptedName' => 'validName',
                    'attributes' => array() // default is empty
                ),
            ),
        );

    

        //Enable Trash
        if(isset($this->options['njt_fs_file_manager_settings']['enable_trash']) && ($this->options['njt_fs_file_manager_settings']['enable_trash'] == '1')) {
            $trash = array(
                'id'            => '1',
                'driver'        => 'Trash',
                'path'          => NJT_FS_BN_PLUGIN_PATH.'includes/File_manager/lib/files/.trash/',
                'tmbURL'        => site_url() . '/includes/File_manager/lib/files/.trash/.tmb',
                'winHashFix'    => DIRECTORY_SEPARATOR !== '/', 
                'uploadDeny'    => array('htaccess'), 
                'uploadAllow'   => array('all'),
                'uploadOrder'   => array('deny', 'allow'),
               // 'acceptedName' => 'validName',
                'attributes' => array(
                    array(
                        'pattern' => '/.tmb/',
                        'read' => false,
                        'write' => false,
                        'hidden' => true,
                        'locked' => false
                    ),
                    array(
                        'pattern' => '/.gitkeep/',
                        'read' => false,
                        'write' => false,
                        'hidden' => true,
                        'locked' => false
                    )
                )
            );
            $opts['roots'][0]['trashHash'] = 't1_Lw';
            $opts['roots'][1] = $trash;
        }

        //Start --setting User Role Restrictions
        $user = wp_get_current_user();
        $userRoles =  $user && $user->roles && $user->roles[0] ? $user->roles[0] : '';
        
        //Disable Operations
        if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['list_user_restrictions_alow_access'])){
            $opts['roots'][0]['disabled'] = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['list_user_restrictions_alow_access'];
        }
        //Creat root path for user
        $private_path_valid = false;
        if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_folder_access'])){
            $private_path = str_replace('\\', '/', trim($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_folder_access'])) . '/';
            // Fail closed when a configured private folder is missing or unreadable.
            if (!is_dir($private_path) || !is_readable($private_path)) {
                $this->rejectConnectorAccess(__('Private folder is unavailable. Access denied.', 'filester'));
            }
            $opts['roots'][0]['path'] = $private_path;
            $private_path_valid = true;
        }

         //Creat url root path for user
         if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_url_folder_access']) && $private_path_valid){
            $private_url = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_url_folder_access'] .'/';
            $opts['roots'][0]['URL'] = $private_url;
        }

        //Folder or File Paths That You want to Hide
        if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['hide_paths'])){
            foreach ($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['hide_paths'] as $key => $value){
                $arrItemHidePath =  array( 
                     'pattern' => '~/'.$value.'~',
                     'read' => false,
                     'write' => false,
                     'hidden' => true,
                     'locked' => false
                   );
                   array_push($opts['roots'][0]['attributes'], $arrItemHidePath);
               };
        }

        //File extensions which you want to Lock
        if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['lock_files'])){
            foreach ($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['lock_files'] as $key => $value){
                $arrItemLockFile =  array( 
                     'pattern' => '/'.$value.'/',
                     'read' => false,
                     'write' => false,
                     'hidden' => false,
                     'locked' => true
                   );
                   array_push($opts['roots'][0]['attributes'], $arrItemLockFile);
               };
        }

        //Enter file extensions which can be uploaded
        $flag = false;

       
       if (is_multisite()) {
        if( !current_user_can('create_sites') && empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) {
            $opts['roots'][0]['uploadDeny'] = array('all');
            $opts['roots'][0]['uploadAllow'] = array('');
        } else if ( !current_user_can('create_sites') && !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) {
            $opts['roots'][0]['uploadDeny'] = array('all');
            $opts['roots'][0]['uploadAllow'] = array();
            $arrCanUploadMime = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'];
            $mimeTypes = new \FileManagerHelper();
            $arrMimeTypes = $mimeTypes->getArrMimeTypes();
            foreach ($arrMimeTypes as $key => $value){
                if(in_array($key,$arrCanUploadMime)) {
                    $explodeValue = explode(',',$value);
                    foreach($explodeValue as $item) {
                        array_push($opts['roots'][0]['uploadAllow'], $item );
                    }
                }
          
            };
            foreach ($arrCanUploadMime as $value){
                if(strpos($value,"x-conference") !== false
                   || strpos($value,"video") !== false
                   || strpos($value,"text") !== false
                   || strpos($value,"model") !== false
                   || strpos($value,"message") !== false
                   || strpos($value,"image") !== false
                   || strpos($value,"font") !== false
                   || strpos($value,"chemical") !== false
                   || strpos($value,"audio") !== false
                   || strpos($value,"application") !== false
                   ) {
                    array_push($opts['roots'][0]['uploadAllow'], $value );
                }
            }

        } else {
            $opts['roots'][0]['uploadDeny'] = array();
            $opts['roots'][0]['uploadAllow'] = array('all');
        }
       }
       
       if (!is_multisite()) {
        if($this->userRole !== 'administrator' && empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) {
            $opts['roots'][0]['uploadDeny'] = array('all');
            $opts['roots'][0]['uploadAllow'] = array('');
        } else if ( $this->userRole !== 'administrator' && !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) {
            $opts['roots'][0]['uploadDeny'] = array('all');
            $opts['roots'][0]['uploadAllow'] = array();
            $arrCanUploadMime = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'];
            $mimeTypes = new \FileManagerHelper();
            $arrMimeTypes = $mimeTypes->getArrMimeTypes();
            foreach ($arrMimeTypes as $key => $value){
                if(in_array($key,$arrCanUploadMime)) {
                    $explodeValue = explode(',',$value);
                    foreach($explodeValue as $item) {
                        $listFileCanNotUpload = $mimeTypes->listFileCanNotUpload();
                        if(!in_array($item, $listFileCanNotUpload)) {
                            array_push($opts['roots'][0]['uploadAllow'], $item );
                        }
                    }
                }
          
            };
            foreach ($arrCanUploadMime as $value){
                if(strpos($value,"x-conference") !== false
                   || strpos($value,"video") !== false
                   || strpos($value,"text") !== false
                   || strpos($value,"model") !== false
                   || strpos($value,"message") !== false
                   || strpos($value,"image") !== false
                   || strpos($value,"font") !== false
                   || strpos($value,"chemical") !== false
                   || strpos($value,"audio") !== false
                   || strpos($value,"application") !== false
                   ) {
                    array_push($opts['roots'][0]['uploadAllow'], $value );
                }
            }

        } else {
            $opts['roots'][0]['uploadDeny'] = array();
            $opts['roots'][0]['uploadAllow'] = array('all');
        }
       }

        // Sensitive files protection
        if(isset($this->options['njt_fs_file_manager_settings']['enable_sensitive_protection']) && ($this->options['njt_fs_file_manager_settings']['enable_sensitive_protection'] == '1')) {
            $sensitive_files = apply_filters('njt_fs_sensitive_files', array(
                '.htaccess',
                'wp-config.php', 
                '.env',
                'wp-config-sample.php',
                'readme.html',
                'license.txt',
                'xmlrpc.php'
            ));

            foreach ($sensitive_files as $file) {
                $attributes = array(
                    'pattern' => '/' . preg_quote($file, '/') . '/',
                    'read' => $this->canAccessSensitiveFiles(),
                    'write' => $this->canEditSensitiveFiles(),
                    'hidden' => !$this->canAccessSensitiveFiles(),
                    'locked' => !$this->canEditSensitiveFiles()
                );
                array_push($opts['roots'][0]['attributes'], $attributes);
            }
        }

        // .htaccess
        if(isset($this->options['njt_fs_file_manager_settings']['enable_htaccess']) && ($this->options['njt_fs_file_manager_settings']['enable_htaccess'] == '1')) {
            $attributes = array(
                'pattern' => '/.htaccess/',
                'read' => true,
                'write' => false,
                'hidden' => true,
                'locked' => true
            );
            array_push($opts['roots'][0]['attributes'], $attributes);
        }

        //End --setting User Role Restrictions

        $connector = new \elFinderConnector(new \elFinder($opts));
        $connector->run();
        wp_die();
    }
    
    public function selectorThemes()
    {
        if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die();
        check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true);
        
        $themesValue = sanitize_text_field ($_POST['themesValue']);
        $selectorThemes = get_option('njt_fs_selector_themes', array());
        if (!is_array($selectorThemes)) {
            $selectorThemes = array();
        }
        if (empty($selectorThemes[$this->userRole])) {
            $selectorThemes[$this->userRole] = array('themesValue' => 'Default');
            update_option('njt_fs_selector_themes', $selectorThemes);
        }

        if ($selectorThemes[$this->userRole]['themesValue'] != $themesValue) {
            $selectorThemes[$this->userRole]['themesValue'] = $themesValue;
            update_option('njt_fs_selector_themes', $selectorThemes);
        }
        $selected_themes = $selectorThemes;
        $linkThemes = plugins_url('/lib/themes/' . $selected_themes[$this->userRole]['themesValue'] . '/css/theme.css', __FILE__);
        wp_send_json_success($linkThemes);
        wp_die();
    }

    public function saveOptions()
    {
        //if(isset($_POST['njt-settings-form-submit'])) {
           update_option('njt_fs_settings', $this->options);
            // if($u) {
            //     $this->f('?page=njt-fs-filemanager-settings&status=1');
            // } else {
            //     $this->f('?page=njt-fs-filemanager-settings&status=2');
            // }
       // }
    }

    public function f($u) {
		echo '<script>';
		echo 'window.location.href="'.$u.'"';
		echo '</script>';
	}
    
    public function getArrRoleRestrictions()
    {
        if(!wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die();
        check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true);
        $valueUserRole = filter_var($_POST['valueUserRole']) ? sanitize_text_field ($_POST['valueUserRole']) : '';
        $arrRestrictions = !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions']) ? $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'] : array();
        $dataArrRoleRestrictions = array (
            'disable_operations' => implode(",", !empty($arrRestrictions[$valueUserRole]['list_user_restrictions_alow_access']) ? $arrRestrictions[$valueUserRole]['list_user_restrictions_alow_access'] : array()),
            'private_folder_access' => !empty($arrRestrictions[$valueUserRole]['private_folder_access']) ? str_replace("\\\\", "/", trim($arrRestrictions[$valueUserRole]['private_folder_access'])) : '',
            'private_url_folder_access' => !empty($arrRestrictions[$valueUserRole]['private_url_folder_access']) ? str_replace("\\\\", "/", trim($arrRestrictions[$valueUserRole]['private_url_folder_access'])) : '',
            'hide_paths' => implode(',', !empty($arrRestrictions[$valueUserRole]['hide_paths']) ? $arrRestrictions[$valueUserRole]['hide_paths'] : array()),
            'lock_files' => implode(',', !empty($arrRestrictions[$valueUserRole]['lock_files']) ? $arrRestrictions[$valueUserRole]['lock_files'] : array()),
            'can_upload_mime' => implode(',', !empty($arrRestrictions[$valueUserRole]['can_upload_mime']) ? $arrRestrictions[$valueUserRole]['can_upload_mime'] : array())
        );
        wp_send_json_success($dataArrRoleRestrictions);
        wp_die();
    }

    public function njt_fs_saveSetting()
    {
        if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die();
        check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true);

        if (!current_user_can('manage_options')) {
            wp_die();
        }

        $root_folder_path = !empty($_POST['root_folder_path']) ? str_replace("\\\\", "/", trim(sanitize_text_field($_POST['root_folder_path']))) : '';
        $root_folder_url = !empty($_POST['root_folder_url']) ? str_replace("\\\\", "/", trim(sanitize_url($_POST['root_folder_url']))) : site_url();
        $list_user_alow_access = !empty($_POST['list_user_alow_access']) ? explode(',', sanitize_text_field($_POST['list_user_alow_access'])) : array();
        $upload_max_size = !empty($_POST['upload_max_size']) ? sanitize_text_field(trim($_POST['upload_max_size'])) : 0;
        $fm_locale = !empty($_POST['fm_locale']) ? sanitize_text_field($_POST['fm_locale']) : 'en';
        $enable_htaccess =  isset($_POST['enable_htaccess']) && $_POST['enable_htaccess'] == 'true' ? 1 : 0;
        $enable_trash = isset($_POST['enable_trash']) && $_POST['enable_trash'] == 'true' ? 1 : 0;
        $enable_sensitive_protection = isset($_POST['enable_sensitive_protection']) && $_POST['enable_sensitive_protection'] == 'true' ? 1 : 0;
        //save options
        $this->options['njt_fs_file_manager_settings']['root_folder_path'] = $root_folder_path;
        $this->options['njt_fs_file_manager_settings']['root_folder_url'] = $root_folder_url;
        $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] = $list_user_alow_access;
        $this->options['njt_fs_file_manager_settings']['upload_max_size'] = $upload_max_size;
        $this->options['njt_fs_file_manager_settings']['fm_locale'] = $fm_locale;
        $this->options['njt_fs_file_manager_settings']['enable_htaccess'] = $enable_htaccess;
        $this->options['njt_fs_file_manager_settings']['enable_trash'] = $enable_trash;
        $this->options['njt_fs_file_manager_settings']['enable_sensitive_protection'] = $enable_sensitive_protection;
        //update options
        update_option('njt_fs_settings', $this->options);
        wp_send_json_success(get_option('njt_fs_settings'));
        wp_die();
    }

    public function njt_fs_saveSettingRestrictions() {
        if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die();
        check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true);

        if (!current_user_can('manage_options')) {
            wp_die();
        }

        if(! $_POST['njt_fs_list_user_restrictions']) wp_die();

        $njt_fs_list_user_restrictions = sanitize_text_field($_POST['njt_fs_list_user_restrictions']);
        $list_user_restrictions_alow_access = !empty($_POST['list_user_restrictions_alow_access']) ? explode(',', sanitize_text_field($_POST['list_user_restrictions_alow_access'])) : array();
        $private_folder_access = !empty($_POST['private_folder_access']) ? str_replace("\\\\", "/", trim(sanitize_text_field($_POST['private_folder_access']))) : '';
        $private_url_folder_access = !empty($_POST['private_url_folder_access']) ? str_replace("\\\\", "/", trim(sanitize_text_field($_POST['private_url_folder_access']))) : '';
        $hide_paths = !empty($_POST['hide_paths']) ? explode('|', preg_replace('/\s+/', '', sanitize_text_field($_POST['hide_paths']))) : array();
        $lock_files = !empty($_POST['lock_files']) ? explode('|', preg_replace('/\s+/', '', sanitize_text_field($_POST['lock_files']))) : array();

        $can_upload_mime = !empty($_POST['can_upload_mime']) ? explode(',', preg_replace('/\s+/', '', sanitize_text_field($_POST['can_upload_mime']))) : array();

        $can_upload_mime = array_filter($can_upload_mime, function($item) {
            $helper = new \FileManagerHelper();
            $listFileCanNotUpload = $helper->listFileCanNotUpload();
            return !in_array($item, $listFileCanNotUpload);
        });

        //save options
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['list_user_restrictions_alow_access'] = $list_user_restrictions_alow_access;
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['private_folder_access'] = $private_folder_access;
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['private_url_folder_access'] = $private_url_folder_access;
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['hide_paths'] = $hide_paths;
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['lock_files'] = $lock_files;
        $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['can_upload_mime'] = $can_upload_mime;
        //update options
        update_option('njt_fs_settings', $this->options);
        wp_send_json_success(get_option('njt_fs_settings'));
        wp_die();
    }

    /**
     * Reject elFinder connector initialization with an access-denied response.
     *
     * @param string $message Error message shown in the file manager UI.
     */
    private function rejectConnectorAccess($message)
    {
        status_header(403);
        header('Content-Type: application/json; charset=utf-8');
        echo wp_json_encode(array('error' => array($message)));
        wp_die('', '', array('response' => 403));
    }

    public function canAccessSensitiveFiles() {
        // Filter hook for developers
        if (apply_filters('njt_fs_allow_sensitive_access', false)) {
            return true;
        }
        
        return false;
    }

    public function canEditSensitiveFiles() {
        // Filter hook for developers
        if (apply_filters('njt_fs_allow_sensitive_edit', false)) {
            return true;
        }
        
        return false;
    }

}                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/FileManagerHelper.php                                                         0000644                 00000007464 15266052611 0014765 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

defined('ABSPATH') || exit;

if(!class_exists('FileManagerHelper')):

class FileManagerHelper{
	
	public function getArrMimeTypes()
	{
		$arrMimeTypes = array (
			//text
			'.txt' => 'text/plain',
			'.htm' => 'text/html',
			'.html' => 'text/html',
			'.php' => 'text/x-php',
			'.css' => 'text/css',
			'.csv' => 'text/csv',
			'.js' => 'text/javascript',
			'.json' => 'application/json',
			'.xml' => 'text/xml',
			'.ics' => 'text/calendar',

			//font
			'.woff' => 'font/woff,application/font-woff,application/x-font-opentype,application/x-font-truetype,application/vnd.ms-fontobject',
			'.woff2' => 'font/woff2',
			'.ttf' => 'application/x-font-ttf,font/ttf',
			'.otf' => 'font/otf',
			'.sfnt' => 'font/sfnt,application/font-sfnt',

			// images
			'.png' => 'image/png',
			'.jpe' => 'image/jpeg',
			'.jpg' => 'image/jpeg',
			'.jpeg' => 'image/jpeg',
			'.jpg' => 'image/jpeg',
			'.gif' => 'image/gif',
			'.bmp' => 'image/bmp',
			'.ico' => 'image/vnd.microsoft.icon,image/x-icon',
			'.tiff' => 'image/tiff',
			'.tif' => 'image/tiff',
			'.svg' => 'image/svg+xml',
			'.svgz' => 'image/svg+xml',

			// archives
			'.zip' => 'application/zip',
			'.rar' => 'application/x-rar-compressed',
			'.exe' => 'application/x-msdownload',
			'.msi' => 'application/x-msdownload',
			'.cab' => 'application/vnd.ms-cab-compressed',
			'.tar' => 'application/x-tar',
			'.gz' => 'application/x-gzip',
			'.bz2' => 'application/x-bzip2',
			'.7z' => 'application/x-7z-compressed',

			// audio
			'.mp3' => 'audio/mpeg',
			'.mp4a' => 'audio/mp4',
			'.mpega' => 'audio/mpeg',
			'.mpga' => 'audio/mpeg',
			'.aac' => 'audio/x-aac',
			'.m3u' => 'audio/x-mpegurl',
			'.mpa' => 'audio/mpeg',
			'.wav' => 'audio/x-wav',
			'.wma' => 'audio/x-ms-wma',

			//video
			'.flv' => 'video/x-flv',
			'.qt' => 'video/quicktime',
			'.mov' => 'video/quicktime',
			'.avi' => 'video/x-msvideo',
			'.mp4' => 'video/mp4',
			'.mpeg' => 'video/mpeg',
			'.mpg' => 'video/mpeg',
			'.wmv' => 'video/x-ms-wmv',
			'.mpav' => 'video/mpeg',
			'.swf' => 'application/x-shockwave-flash',
			
			// adobe
			'.pdf' => 'application/pdf',
			'.psd' => 'image/vnd.adobe.photoshop',
			'.ai' => 'application/postscript',
			'.eps' => 'application/postscript',
			'.ps' => 'application/postscript',

			// ms office
			'.doc' => 'application/msword',
			'.rtf' => 'application/rtf',
			'.xls' => 'application/vnd.ms-excel',
			'.ppt' => 'application/vnd.ms-powerpoint',
			'.docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
			'.pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
			'.xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
			'.xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
			'.xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12',
			'.dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
			'.xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
			'.potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
			'.ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
			'.sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
			
			// open office
			'odt' => 'application/vnd.oasis.opendocument.text',
			'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
		);
		return $arrMimeTypes;
	}
	
	public function madeStripcslashesFile($cmd, &$args, $elfinder, $volume)
	{
		$args['content'] = stripcslashes($args['content']);
		return true;
	}

	public function listFileCanNotUpload()
	{
		$list = array('.php', '.php3', '.php4', '.phar', '.phtml', '.htaccess', '.txt', 'text/plain', 'text/x-php', 'text/php', 'text/html', 'text/javascript');
		return apply_filters('njt_fs_list_file_can_not_upload', $list);
	}
}

endif;                                                                                                                                                                                                            includes/File_manager/lib/README.md                                                                 0000644                 00000024716 15266052611 0012766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       elFinder
========

**WARNING: IF YOU HAVE OLDER (IN PARTICULAR 2.1.65 OR EARLIER) VERSIONS OF ELFINDER ON PUBLIC SERVERS, IT MAY CAUSE SERIOUS DAMAGE TO YOUR SERVER AND VISITED USER. YOU SHOULD UPDATE TO THE LATEST VERSION OR REMOVE IT FROM THE SERVER.**

[![elFinder file manager for the Web](https://studio-42.github.io/elFinder/images/elFinderScr.png "elFinder file manager for the Web")](https://studio-42.github.io/elFinder/)

elFinder is an open-source file manager for web, written in JavaScript using
jQuery UI. Creation is inspired by simplicity and convenience of Finder program
used in Mac OS X operating system.

[![Download now!](https://studio-42.github.io/elFinder/images/download-icon.png)](https://github.com/Studio-42/elFinder/releases/latest)
[![Packagist License](https://poser.pugx.org/studio-42/elfinder/license.png)](https://choosealicense.com/licenses/bsd-3-clause/)
[![Latest Stable Version](https://poser.pugx.org/studio-42/elfinder/version.png)](https://packagist.org/packages/studio-42/elfinder)
[![Total Downloads](https://poser.pugx.org/studio-42/elfinder/d/total.png)](https://packagist.org/packages/studio-42/elfinder)
[![CDNJS version](https://img.shields.io/cdnjs/v/elfinder.svg)](https://cdnjs.com/libraries/elfinder)
[![Donate Paypal(nao-pon)](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FF5FKRSMKYDVA)
[![Donate Bitcoin(nao-pon)](https://img.shields.io/badge/Donate-Bitcoin-orange.svg)](https://studio-42.github.io/elFinder/tools/donate-bitcoin/)
[![Buy me a coffee](https://img.shields.io/static/v1.svg?label=Buy%20me%20a%20coffee&message=ðŸ¥¨&color=black&logo=buy%20me%20a%20coffee&logoColor=white&labelColor=6f4e37)](https://www.buymeacoffee.com/naopon)

Contents
--------
* [Branches](#branches)
* [Features](#features)
* [Requirements](#requirements)
* [Installation](#installation)
* [Downloads](#downloads)
* [Demo Sites](#demo-sites)
* [FAQs](#faqs)
* [3rd Party Connectors](#3rd-party-connectors)
* [3rd Party Volume Drivers](#3rd-party-volume-drivers)
* [3rd Party Themes](#3rd-party-themes)
* [Support](#support)
* [Authors](#authors)
* [License](#license)

Branches
--------
-  [master](https://github.com/Studio-42/elFinder/tree/master) - Main development branch
-  [2.1-src](https://github.com/Studio-42/elFinder/tree/2.1-src) - 2.1 development branch, auto build to 2.1 on commit
-  [2.1](https://github.com/Studio-42/elFinder/tree/2.1) - 2.1 nightly build branch

Features
--------
 * Usability like the MacOS Finder or Windows Explorer
 * Mobile friendly view for touch devices
 * All operations with files and folders on a remote server (copy, move,
   upload, create folder/file, rename, etc.)
 * High performance server backend and light client UI
 * Multi-root support
 * Local file system, MySQL, FTP, SFTP, Box, Dropbox, GoogleDrive and OneDrive volume storage drivers
 * Support AWS S3, Azure, Digital Ocean Spaces and more with [League\Flysystem](https://github.com/barryvdh/elfinder-flysystem-driver) Flysystem driver
 * Cloud storage (Box, Dropbox, GoogleDrive and OneDrive) drivers
 * Background file/folder upload with Drag & Drop HTML5 support
 * Chunked file upload for large file
 * Upload directly to the folder
 * Upload form URL (or list)
 * List and Icons view
 * Keyboard shortcuts
 * Standard methods of file/group selection using mouse or keyboard
 * Move/Copy files with Drag & Drop
 * Drag & Drop to outside by starting drag with alt/option key press
 * Archives create/extract (zip, rar, 7z, tar, gzip, bzip2)
 * Rich context menu and toolbar
 * Quicklook, preview for common file types
 * Edit text files and images
 * "Places" for your favorites
 * Calculate directory sizes
 * Thumbnails for image, movie files
 * Easy to integrate with web editors (elRTE, CKEditor, TinyMCE)
 * Flexible configuration of access rights, upload file types, user interface
   and other
 * Extensibility by event handling of backend and client side
 * Simple client-server API based on JSON
 * Supports custom information in info dialog
 * Configuable columns of list view
 * Supports custom CSS class function for the custom folder icon
 * Connector plugin
     * [AutoRotate](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/AutoRotate/plugin.php) : Auto rotation on file upload of JPEG file by EXIF Orientation.
     * [AutoResize](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/AutoResize/plugin.php) : Auto resize on file upload.
     * [Normalizer](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Normalizer/plugin.php) : UTF-8 Normalizer of file-name and file-path etc.
     * [Sanitizer](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Sanitizer/plugin.php) : Sanitizer of file-name and file-path etc.
     * [Watermark](https://github.com/Studio-42/elFinder/blob/2.1-src/php/plugins/Watermark/plugin.php) : Print watermark on file upload.
 * For more details, see the [Changelog](https://github.com/Studio-42/elFinder/blob/master/Changelog)

Requirements
------------
### jQuery / jQuery UI
 * jQuery 1.8.0+
 * jQuery UI 1.9.0+
    * Required: draggable, droppable, resizable, selectable, button and slider
    * Recommend: sorter (To make sortable the List column and the Places)

**However, we recommend newest version.**

### Client
 * Modern browsers both of desktop or mobile. elFinder was tested in newest Chrome, Edge, Firefox, IE and Opera
     - **Caution**: Web App mode ("apple-mobile-web-app-capable" meta tag) on iOS is not work perfectly in elFinder

### Server
 * Any web server
 * PHP 5.2+ (Recommend PHP 5.4 or higher) And for thumbnails - GD / Imagick module / convert(imagemagick) require
     * Recommend PHP 7.1 or higher to supports non-ASCII character of file path/name on the Windows server

Installation
------------
### Builds (compressed)
 1. Download and unzip one of the [builds](#downloads) below to your PHP server
 2. Rename `/php/connector.minimal.php-dist` to `/php/connector.minimal.php`
 3. Load `/elfinder.html` in your browser to run elFinder

### Source (uncompressed)
 1. Clone this repository to your PHP server

      ```
      $ git clone https://github.com/Studio-42/elFinder.git
      ```

 2. Rename `/php/connector.minimal.php-dist` to `/php/connector.minimal.php`
 3. Load `/elfinder.src.html` in your browser to run elFinder

### Installer
 - [Setup elFinder 2.1.x nightly with Composer](https://github.com/Studio-42/elFinder/tree/gh-pages/tools/installer/setup_with_composer)

Downloads
------------
**Stable releases** ([Changelog](https://github.com/Studio-42/elFinder/blob/master/Changelog))
 + [elFinder 2.1.66](https://github.com/Studio-42/elFinder/archive/2.1.66.zip)
 + [elFinder 2.0.9](https://github.com/Studio-42/elFinder/archive/2.0.9.zip) (deprecated)

**Nightly builds**
 + [elFinder 2.1.x (Nightly)](https://github.com/Studio-42/elFinder/archive/2.1.zip)

Demo sites
------------
**2.1.x Nightly**
 + https://studio-42.github.io/elFinder/ (with CORS)

FAQs
------------

### Should I use elFinder builds (compressed) or source (uncompressed)?

For debugging and development, use the [source](#source-uncompressed). For production, use [builds](#builds-compressed).

### How do I integrate elFinder with CKEditor/TinyMCE/elRTE/etc...?
Check out the [wiki](https://github.com/studio-42/elFinder/wiki#howtos) for individual instructions.

### The procedure of language files created or modified?

You can create or modify the language file to use translation tool. Please refer to the pull request the results to the respective branch.
 * [2.1 branch translation tool](http://studio-42.github.io/elFinder/tools/langman/#2.1)


3rd party connectors
--------------------
 * [ASP.NET](https://github.com/leniel/elFinder.Net) / [ASP.NET Core](https://github.com/gordon-matt/elFinder.NetCore) / [.NET Standard](https://github.com/mguinness/elFinder.AspNet)
 * [Java Servlet](https://github.com/trustsystems/elfinder-java-connector)
 * [JavaScript/Efw](https://github.com/efwGrp/efw3.X/blob/master/help/tag.elfinder.md)
 * [Nodejs](https://github.com/dekyfin/elfinder-node)
 * [Python](https://github.com/Studio-42/elfinder-python)
 * [Ruby/Rails](https://github.com/phallstrom/el_finder)

3rd party Volume Drivers
--------------------
 * [League\Flysystem (PHP)](https://github.com/barryvdh/elfinder-flysystem-driver) (for elFinder 2.1+) driver for the [Flysystem](https://github.com/thephpleague/flysystem)

3rd party Themes
--------------------
Hint: [How to load CSS with RequireJS?](https://github.com/Studio-42/elFinder/wiki/How-to-load-CSS-with-RequireJS%3F)

 * [lokothodida/elfinder-theme-moono](https://github.com/lokothodida/elfinder-theme-moono)
 * [lokothodida/elfinder-theme-windows-10](https://github.com/lokothodida/elfinder-theme-windows-10)
 * [RobiNN1/elFinder-Material-Theme](https://github.com/RobiNN1/elFinder-Material-Theme)
 * [StudioJunkyard/elfinder-boostrap-theme](https://github.com/StudioJunkyard/LibreICONS/tree/master/themes/elFinder)

3rd party Integrations
--------------------
 * [Django](https://github.com/mikery/django-elfinder)
 * [Drupal](https://gitlab.com/667bdrm/elfinder)
 * [Laravel](https://github.com/barryvdh/laravel-elfinder)
 * [Roundcube](https://github.com/Offerel/roundcube_elfinder)
 * [Symfony](https://github.com/helios-ag/FMElfinderBundle)
 * [Tiki Wiki](https://doc.tiki.org/elFinder)
 * [WordPress](https://wordpress.org/plugins/file-manager/)
 * [XOOPS](https://github.com/nao-pon/xelfinder)
 * [XOOPSCube](https://github.com/xoopscube/xelfinder) GUI-based control panel: FTP, cloud storage and editors
 * [Yii](http://www.yiiframework.com/extension/elfinder/)
 * [Zenphoto](http://www.zenphoto.org/news/elfinder/)

Support
-------

 * [Homepage](http://elfinder.org)
 * [Wiki](https://github.com/Studio-42/elFinder/wiki)
 * [Issues](https://github.com/Studio-42/elFinder/issues)
 * <dev@std42.ru>


Authors
-------

 * Current main developer: Naoki Sawada <hypweb+elfinder@gmail.com> [![Buy me a coffee](https://img.shields.io/static/v1.svg?label=Buy%20me%20a%20coffee&message=ðŸ¥¨&color=black&logo=buy%20me%20a%20coffee&logoColor=white&labelColor=6f4e37)](https://www.buymeacoffee.com/naopon)
 * Chief developer: Dmitry "dio" Levashov <dio@std42.ru>
 * Maintainer: Troex Nevelin <troex@fury.scancode.ru>
 * Developers: Alexey Sukhotin, Naoki Sawada <hypweb+elfinder@gmail.com>
 * Icons: PixelMixer, [Yusuke Kamiyamane](http://p.yusukekamiyamane.com), [Icons8](https://icons8.com)

We hope our tools will be helpful for you.


License
-------

elFinder is issued under a 3-clauses BSD license.

 * [License terms](https://github.com/Studio-42/elFinder/blob/master/LICENSE.md)
                                                  includes/File_manager/lib/bower.json                                                                0000644                 00000001176 15266052611 0013513 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       {
  "name": "elfinder",
  "authors": [
    "Dmitry \"dio\" Levashov <dio@std42.ru>",
    "Troex Nevelin <troex@fury.scancode.ru>",
    "Alexey Sukhotin <strogg@yandex.ru>",
    "Naoki Sawada <hypweb@gmail.com>"
  ],
  "description": "Open-source file manager for web, written in JavaScript using jQuery and jQuery UI.",
  "dependencies": {
    "jquery": "1.8.0 - 3",
    "jquery-ui": "^1.9.x"
  },
  "keywords": [
    "filemanager",
    "jquery",
    "jquery-ui",
    "javascript",
    "php"
  ],
  "license": "BSD-3-Clause",
  "homepage": "https://github.com/Studio-42/elFinder",
  "ignore": [
    "**/.*",
    "jquery",
    "php"
  ]
}
                                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/jquery/jquery-ui.min.css                                                  0000644                 00000075267 15266052611 0016263 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.14.1 - 2024-10-30
* https://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgColorDefault=%23f6f6f6&borderColorDefault=%23c5c5c5&fcDefault=%23454545&bgColorHover=%23ededed&borderColorHover=%23cccccc&fcHover=%232b2b2b&bgColorActive=%23007fff&borderColorActive=%23003eff&fcActive=%23ffffff&bgColorHeader=%23e9e9e9&borderColorHeader=%23dddddd&fcHeader=%23333333&bgColorContent=%23ffffff&borderColorContent=%23dddddd&fcContent=%23333333&bgColorHighlight=%23fffa90&borderColorHighlight=%23dad55e&fcHighlight=%23777620&bgColorError=%23fddfdf&borderColorError=%23f1a899&fcError=%235f3f3f&bgColorOverlay=%23aaaaaa&opacityOverlay=.3&bgColorShadow=%23666666&opacityShadow=.3&offsetTopShadow=0px&offsetLeftShadow=0px&thicknessShadow=5px&cornerRadiusShadow=8px&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif&fwDefault=normal&cornerRadius=3px&bgTextureDefault=flat&bgTextureHover=flat&bgTextureActive=flat&bgTextureHeader=flat&bgTextureContent=flat&bgTextureHighlight=flat&bgTextureError=flat&bgTextureOverlay=flat&bgTextureShadow=flat&bgImgOpacityDefault=75&bgImgOpacityHover=75&bgImgOpacityActive=65&bgImgOpacityHeader=75&bgImgOpacityContent=75&bgImgOpacityHighlight=55&bgImgOpacityError=95&bgImgOpacityOverlay=0&bgImgOpacityShadow=0&iconColorActive=%23ffffff&iconColorContent=%23444444&iconColorDefault=%23777777&iconColorError=%23cc0000&iconColorHeader=%23444444&iconColorHighlight=%23777620&iconColorHover=%23555555&opacityOverlayPerc=30&opacityShadowPerc=30&bgImgUrlActive=&bgImgUrlContent=&bgImgUrlDefault=&bgImgUrlError=&bgImgUrlHeader=&bgImgUrlHighlight=&bgImgUrlHover=&bgImgUrlOverlay=&bgImgUrlShadow=&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&bgDefaultRepeat=&bgHoverRepeat=&bgActiveRepeat=&bgHeaderRepeat=&bgContentRepeat=&bgHighlightRepeat=&bgErrorRepeat=&bgOverlayRepeat=&bgShadowRepeat=&bgDefaultYPos=&bgHoverYPos=&bgActiveYPos=&bgHeaderYPos=&bgContentYPos=&bgHighlightYPos=&bgErrorYPos=&bgOverlayYPos=&bgShadowYPos=&bgDefaultXPos=&bgHoverXPos=&bgActiveXPos=&bgHeaderXPos=&bgContentXPos=&bgHighlightXPos=&bgErrorXPos=&bgOverlayXPos=&bgShadowXPos=
* Copyright OpenJS Foundation and other contributors; Licensed MIT */

.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;user-select:none}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;background-image:none}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3}.ui-widget-shadow{box-shadow:0 0 5px #666}                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/jquery/images/ui-icons_777777_256x240.png                                 0000644                 00000015536 15266052612 0020413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   Ežr@    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   bKGD wdìÇ­   tIMEè
÷a‘  ³IDATxÚí�mŒWyÇR¹-Ä„BmœÚNH«ÇK*‘PAÑn+…·bÂõRÑ„µ@"¡•í-ÙåC×¡ö.mâª5I£¦{›ò©¹« �´Ä…fc£‹–’`'›B¥*uúáÌË93çmfîÝ{÷Îù¯îÞ¹óœ÷ç9çÌœç9Ï‰öÐfœ7ìA ZŽ  *:Ät†]ˆµD –�å6‰@¿`øý§C\;æ2°“¤)¿Ž}„* ö0Îþlpõsü8É½cãÊ;eb½öw°¥<Fc„, ý w7H!�›öÃêh""º@—ˆÈ’r“:Ž¢l ­bÚLˆ¡Ô<2D:Q­øi/3åïÊ;nXvß”]u\GÈG û è[tO"wí©4ë›¶)HN¹Ù83bˆ*¯Ú{‘­æ�Z·ï¸S°÷M{Ùíc`ž²kœYW8¿róÌMÓ|Èt§ÐÅ6~EqMS œòØ°¿Î0Þè°<Nìu#@ËV[Ž  -G€–#@Ë åÐrh9‚=@1î°Ë¿Æ¨bàgàRÆt¬ö öÜìibàV‡‹²�•�T³ðÓ€Ù›ÐÌ Ý†kß´]ìw¥¾\ø6§>6Ö e{ ójxÊ¦o3Ó]±}ìl¥³çîŽoGœ¤�~�T{ ÝµŠ®×( ãîŸ>ö ¶þçW6³øÄNkƒ*9­ÔQuX¶ö±Q¶°	—küIk�“¾°ßÚÀá7ŽM<}â»ükŒ n9ÂBPË åÐrh9‚ ´A ZŽ  -Gõ�!ãŽxˆ«üÍ×J+—ÿüfÑÒÃ,Aì,A}U�;æj®N1Xuý>þâ”ª¨›‡«ü‚õ‘5·pÔ�íWŸPâž§pU?ò¨€9~äÑ@>Uˆ-ÊŸòEšú]-�”ân{í;bƒ«+å—§ ßê›¬uÜ�õa€�­šH×,Ú¤q;ÒRåÜu¹¤ÝË\†ØB·§�×ÎÞäRFPõ!0öè=®P>ÒY¯�û17òHÝÆ Ÿtë¶€­ú¤ínƒ½Êk`>Äù„ÒÓìC [‚íi¸†X¿!ÚÕƒ\¹û<DÖ…[ÄÝt¥UF ¿¡³ÙSnä9ÊªŒ‘u€õK7òSöiÚ>jãžo4<»ë9ÿqÃJ`Ë åÐrh9‚ ´A ZŽ  -‡º94u–:<¸ý�>-à£­Ïµ7Ú7—JÈ Ýåãî½^ôõÒr•Ü¯l®fsm\§rl¡§LÿÌuèÔn�¸PJ@¿9Ô¾…ÓG£ÝÑÜëŸ˜Òòsa.¿_˜òè¶×v*ÅÎkà�šmM/mÐU·†ù¸SwmÁ6mõ³¤q—À”ŽÛ…»»ä~éõƒ2k£Ýµ±¼cõE+)ÛÆ&…uTSU ü ª×¯ö&ôÉß½·ßœ¿+¶K Üm`g [ :gÖZ¨ö�7@•E$¥¡O=V¾mù×A^îºÏ¶Üw'Ôt×{°åŸÆÔ?¸RÎ}7Øö7KYÑÀÖ êŒ­úöÂÙªhKC®šÛìKÇ· ÚjÐ-8�”Ó|{»Ù±7~¥¤êàgN;]DØgÁ&±ýšW_¿9¸¹I›-�ú‡Ú¸Ÿ´þdØp, åKÁ-G€–#@Ë åÐrè7†©Î®�¢=€6}•OÕ;õÝƒFóÒEŽÅî«{ÙÀ›ÆÜg•0ÕØíöØ`jFÓÍUöíá‘sû«›Á¦ø¶Ô‡„|!H.–ÛÛoy±QÞYïôoß…f°iì\±#c8ù®IÛiÛ<{Qýkº&Ð?˜Œìúª|j¨c´ zŽÛlÊìÃ ÆW×U¸«ËW—¿{góH" UQXý yqÀzÊ¾êñ#r]^½Ôy˜¦.(êåë¢‰��  YQXG†]'	¸•­MgÇHAô#„ú­ÑŸ^¬ËA=Ffœ�§€nV(Ý .xaî¥G×jà£íw»‡°#·Ð›TØ›>Ÿ„ÌÞEÒ�QEª¢®AÍ@ ×šcÀGYjzì‡²ÕÏj±îƒ¦ÏC$–¬ÃÃd‚:XÅÈÍk…°¨¢eìÐzh9‚ ´A ZŽ  -Çè	Àä¨,’¶EðÓeÛT6±Õb’Þš¼ŠÛÂÈ š»x?UÌTƒòôH…dÒ®®Ëúctx¨`_¥¶¯v§½z’žVâl¡T¿wOýSYˆž!~zUÏ©º<úT×XŽ!rPÝ½—‘ëÃM.Ó#¢„ý+Ú¼ìC»úW˜²ì�Ms×ç¯ZSñsÑ:¤¾‚ó&³{¼vi²Rö×ŸÇW¼\9ëwÿ›�ª§Æl9}ŒŽ€o‚T Ò¦µ™L�|h‚Í�D1�jîÅ2¨!”K¸¬äÑ²- fäÞÂå&3;qŸzá{¬„‰.D .=G¤Š`½W~µ<ýr+ßTyÈ›Ød“ç:’ÉFŸÊ¨= *�‘”»n"²Û©î#2¨ç¸±™]6=Éb%KÛç52ò¼—¢Kxê×¢¸d¼Õ>8˜~dh‚nèù:ŒÚÉ¡�IkŒÑÓ¬)‚ ´A ZŽ  -Ç8	Àl¶Ò0;�ô/egòwé°«Ú?XJî4KµSúªCÓïBÌãŠµ@U&Î2Ÿ]ÏkcÏ6�KyŠëXe•ëxJ+³ÎÒO'ÔiCfº+&ümáÏžCÆ%±1$æA¾lT2È_É–²ûGØcH:_$:Æ.ËÎ¢rêËœ’XXÜk8«Ð æ8P�®–PWºé‚ðïáˆò{'×q�	`•æ	cèóðq&m>ùÓu(¶‘·¼«ŽÙ’_* ‹ |E	¾"%^�3\lhÞc �˜‰ìzUSÅU‰^ ¡	Hï,—¶ˆÅÌ)"0Ç¼Ñƒ�iãÛ„ò»XÂ�¬2Á6à5`Â  gxyÍF1é’väM‘CØ (âäA)ë{Å 	¾œà'|ÞRü�É÷.cˆ�˜×ì»œ*°@Å©R1GJƒáÈD`Ž…!o@sCnä‘ìúZm¶±™ˆZJù!Í>ÚÕñ‘&•j"–²ÿ/ùSùv¾Øs$p‚Ÿ”Â¨EøM€d%_ŸÚK-éwXµæÿ(¹²ú�jfÃTÊƒ¿Àdá»\ºw[K:ÃøkàÃÌhãŸž–®Ë˜c>û¬-RößË¯ª"à»¬c¿Øµrwki® 8Â£Æ0ò®*|±‘{“«÷k¨[9f8ÄÛJS@Q“Zw›©ÛK‚+Ä}ÜXº'ØŒ_#¥Ä¤_APf±‚/v¦‘žeV»F ¸4aü£\ÊSú,O±<Ê¬a°ãnÉ®Ê¥ÛÎ™fx13¼ÐbP2Ç-“.–>&ìÄWˆ÷i`KÀ.Ž%Â½È>A¨¯*Ë÷‹œq'ßºžîÓ…è^ÃfºnØZøÖ5Ì ú¹ú¶³�ƒ ½4Ló†xW7p…ÐÛt�D@b¿M æ¤ëò Sfÿ#é ’ü*Ã>$ÚG€9Ík^:¤STþ]l¢#@Ì¯0_z"Q¼s¨P;×CÜ$}ÊX–Þ{–k†0#…ý£ä bxµôûT­a¼)bÐ°¿Ÿ©Gí=Í’ÊþQ€€¡`œt5 åÐrh9‚ Œ¾Æ×ªEP`Òcc¶>'oúaV«QŸ“tÙå·ü%bå¯hÙp´@?ªÉWÖ–O€ðuGû,°P»ÝÞÌ›xov„Zf9_E�_'é1ÌklóOóÎd¡æ+<Ì+˜ÖªsŸbpŒK™((kÁÿÝ7Õí«áçøóä®Híc}ß±ì×®R|_}¼Xá;8zF¸ã.nN]`/Sô€)zÅ÷u&éÇxGÙÚýÏ°x–m–ÖMý"tù*÷È Ø/´ieˆÙ]X{ªzz¸ØOø9ÞÅçxr½¡�f9ÀÓ%�ž¼õS—ƒÏñí?ä"Î±™ÿâ·>f8DLÄ~é€…þ-~Æ‹ù]-=mþ.Ð©Ø‚)õX¦n—éGKJøc¼G“ÿÓt¹�^jo!«ƒÓåÔyæj9j‘·té5‡ó<ÍNð#Vù¡6Ä,óleÏ`ði¶ð}6ñ}.âÆPb-}ÆJ‡½FúÏxÂ¨®I{ŸÞ7É”Òj¦rzk‹Mw ~xQ¢,šd%€Ç•Õôyæxœ×û·- ,ˆìÎœçx�ëy˜ëø:oÒ—Í2Ï¦Â~x§x5ÿÉïð$7j4Rc)ÝiJ,ô³“�ÚüU§4E]âB"TQÒŠåIÀ†7óÏ\#ýþ†æIà&`;p=’½U* ¯'5¦ßÂ‚yžæ¿9Î�8Îé5eÿœ5ïØ¢ŸÊÜÓèF S¼ŠïðÛ|‡Wó™µÃaR}ÿ~�ò'§ŸÏ/-ôü@E>÷
˜mÌuS«x£Ò*o4æ_è òC`Ú{õ6i|€=Ü”˜s”¥3Vâ–gØ²ÙfT¢ÛØ¯žWT.cL. +ZúMüûù+þ„¿ào¸C¡ï.‰„ªjJÏÙoöK2Y˜V,tõY„º»H_¦“Ìý[NðóÒ?I:T}†6÷þô- …î-`*sQ£å÷”½|ÂZº&ôˆØqªŠ[åžŠ€îànMüŽ²‹;ùˆB]¦Ãƒü�bÜ¢“¨ü]¾*ŽÓ£GœX›«hJÝ6øÏó1é×ÇJãÉÄÀßKê°GC·ý†ÝFö5§w�ìFZb`ŸÅº"Å
S`Ø@ÿîMžûßÃ½üBâz:t‹q}ÕÁûæƒÂTxøó‡x‰/‰`°h9‚. åÐrh9‚ ´í ¡6Ö©\2Uî‡=Ò¹@{wäŽ‡wA€ýYÔ5¨ï )&‰9‘\Ÿ0Z5|9ÑÓï-‰À'ØË§ù4äƒæÖRLÑ:_J~] \�ü	|”O3Ï<1Ÿä£¥øv÷Ek†¢=C™î
Qöô Òä¯�û9Èþˆ™Ú³œˆë”m”Õû2f8Ä~jUDÎ'¹’ì0”"]�½™»)¯¾!»þ9ÿ¦Y=É7™f†CI:êr¸[ž®Þ÷´ŠdûÚ«Î}f¯"Êeæ5.?c¦¤™:;WLV‰O°�çKû^Fà WÐ:%8É`GÆþ“šR©~{êSlà§À…<¯¥“=LóÒL§_}¹æªdý2F·ê9Ë|¶«P×…Vø’dEQá„¾Nº.ã}ü€gÒòðp‚œäï*WÍÿH[lí •AèÙ:ÒµŒ+–ï ÄHPÄ$o±–áù) ?å�êq¦‰�ö——u'¤?=æ× ;™æÙÉZ‹‚I®GlïÒo-³»ûŽè1ÃV.aÛr›!uo `ÿ•ZOAqáªž²ÇVD%½ºÚñéJ©÷ëØßSlŠkí§x.Ó,q¼ÿj€½lÇ¤ÓÛÈs•ë”#ßºúEàíšÂ^`:ù<S¢ÇäbUî>³À�€_r>[¹=u	’?Ä<Ï†¤éN³½†ÉÖ~O¶d-½îåÛÉðe»8•ý:îç½Ò¯Oq�%w�€‰YZLÏi]àL)³vqŽ¿9k¡‘½§ô +‹O2Sùà6H,¡>“·n>Ì°�çù&Kœf»fˆÍDë]E»œIG…?;U—ÃÁ„yùµŒ”ý'ØZè!)û™’|É8Ä1v$eöÃANò Â™ÎŽì}CÆ
+|��lH|¥¨˜s8Ø¸�¹›—ðîæB^‚;4÷Òg€×¡ïPÛ9�K¸„K€ÛÒù ü_ˆ—¤™|„nòðmjœ3ö?Ë•‰mlÑ€`¿íÁíãìâ{ÀEö<Ì>bž`‘;8¡€ìE±ˆ’ÓˆéÒþã#É””ÿ/†Ø–Œùï"dK)½Õ”Æ3BUmà0_í˜¤—üÏ°µ 5×?wëK¯/¿x¾xž·³’fläç…¸÷ó=Nq¿±•b¢l¿ÀRÉÙ0Ÿ˜äÍñ�4Kš}ªË¾bˆ²C?­ÿ‚ –ñ6nn7ôâe^Ä§±šä1®.‰˜� Èfqnq\h9Ú§P åÐr`Éè/ü.Nf‹´'¹kØèÔ¥àç2àZ./…û<ï�~]ÁlÕ®˜¬3È#Àa.à²Ì¡cŠ»2öç+tïÐŽg‰�Ù:ü,AÜ;àëï‘ÎJŠª³Í“È 6LQÞwv�6®îîæä£GºiÒ¼·V`Ac°!œÄÇÄ‰®.zÌÙÌ\£Ìâ—®×5rý…Êc@¾è)«i¯t%^BDäq.¨Ø'[�|scÇèGÓb™‡™à°1ØÌ|"$f1+ä 3™˜Øä:1ô¶…‘¤ßÎh(Ù·ŠëöÃµz·ËTâ~AG?Ì­<Á­6¤ &Gïc‹T ’ù¿—è¬.«9ÿ ,ÎÄî½ó�ÒýtÐ7±ß÷±Â}Fêß¾sø˜°Ìç8Ç9Ð±TC@º,«AÊ*ÕÇm�·boqscÎv3ûÝ®˜c Ë}ÜHG"ÎŒ=ïäc
ç²Á¿â¬4-œ—§ 1ä½}R²5Ëï~KWwwÁñŒi†‡}‰ÔÖû»†kõn‡^æ…§L¿…;ÙÉ�Übñõ¿Ù‹26Oé¡Qjò}‡ÆLšÒô<%óÈ`V'»·“W=æŸL´tg}¼îI #
! gµ-s÷sC�ú€bB•b�½ÖùÛfOàŠ;KðÁ!~/³œ?Î?5Ø<²¾ÑZKm`Ë åÐrh9‚ ´A ŠXpxó_g \� æ´CÔ¿#!†…ÇyÜJ_°Ú*,8-ÖÔ`;{�B G.<“Æ8�h8]!UüŽjèG•”t"hÞZžÆ›`ÂR?öûX5­}œáí’¬Ù›p¬Ä‹)®é‹Æ‹€n`»ÈÛ’ÂQv•èÂ®)¾Zói&ªêŒÚM“A½ €þÄ	—  ‰ŸU)”ÿ:�0G
&0ÇWÓè‹ÍÔX³ýz�Bÿx†Eí�#.œa1cÿ¢Ô@‹ÉÝ‹YÔÚS0Ám0¬(€`Au�\o’Ó,RØGÄ"§™dŸ‘‰~9ï«-6ß‚ºh�+ScKØuu
0Íýyó‰£û /�?«T§®KÈCÜ‹¼CŽ"|J½›Ñº�º.ÔÁ-GX	l9‚ ´A ZŽ  -G€–£( ¶½·cˆ\ &ù" ›øcƒ¯}¡gû²�°.‘
À$½Ìýèåô´Lža‘ã¼…žÇž€¢BöhÁøÑ5¦�.�`ÿÂˆù
o%ÖºC˜äÓlw:“-»*.þV%š`€€Izü˜ÍÀ—y‚}œc“foœäSÜÃi¶0át¾ª'wêyŽ�%Ú1×ò×J×õôG2_ü:ú«É�¿î „.à*àI Þ
À“¼…«Jžá
:Ü|€2
€¯.`[Jô-À¶Îq/JÒÑYül.Oè—æûBÀ¿¯•î¾6¹§âp=æ¸˜“\¯MÏl&±IùuGâÙ>Çf>"mQ-Ó7ñ‘äc‹/ÂlÖÐ´HŸN³=Û4½L§xÊ<�*�—˜æf^Ï´Ñ¶n
8Ê.åwÑÞhÐô Rçaü˜'y-›ÐŸ�[,{µç\Åãe05þ���{â'è?¸w$Œ ‚=@Ët-G€–#@Ë åÈÀu@Sú!Ëè�iÞ2Mtý†M¯‰ô-@= àÊy Mé.7sƒ¦º~Ã¦×ÆÞpï+Q^ÉËx(¹nJ¿CsÜñk¸0Ó&š>èú›Þ b
È=ÿËÛ¦®Ñ\É(ÒÈŽ–} @¿ZJÍÝ«uÉèQ�ø×hãëêçª¿\þêñÏ)ÓLñmt¹z®TDÑU¬Þ´Ë•l¾û÷~à½èw7Mß'¾;}�;lßøúfq…ß±”J™þY Þml¿ôîG¹�¾ìÐÒm+V³HÇ@�“y·<Ó‰÷íé»+œŽ@®Ø‘Qä|R7•Ï'ý»g�?´–à6n—Øßœß<		ÿ'ý¯ŽØ9"ØÑ›;€»üî¸.5Ù?Xh·ñq>N_Ùßÿ)`ØMý) ùo._9…zC¸-}[ùÊç/T£�Ùß‡)@<ºÎð£ßtè$W2ý„+ÖÜ=!Q]t¬t´tµüqéî·Š‹^·}ÒúÅµé·+ì×çZB S
�â1Í•Œ"ý†¬o(Ð¿!¥�æî7tÉèq�ø�iãëêçª¿\þªñ‹Î«ªÒeð×s¥"Ä:À
¯â5ÊÜœ]7¥?Ä^Y �×Œ>èú›Þ B à³ü:ç±-¹{œ.{”pMéð26dP|›ÏJìYú ë7lzmƒ�–#h[Ž  -G€–#@Ë åÐrÈÊ ×é¼£N¨U8‘]­jC7¥ŒÊS@3Ö­:ShÖs£Æ)((
€‹�«¬Zé©{\4ùòN×ÔõP€	°2p‚	+]xè0#Æn0a;ðÜQž&j¤¢Æ¶§Ð¬ÿº( "ÌGÆŒÞS~x ªœ0êô€A-G€–#@Ë åÐrh9Ö¯ tÂ‚P? 
@óu¶˜Ybf^îË‰_Ó€FP`wò6\½[°¿;ìbŽTXN>Ã…«wö÷¾#@L§ô©†¸ô§‡`¯YSö‡g€¾@µZ¦Ë²¶oE@·ð©?÷í)ûw[éÝðÐ/¨`vg¬I?Õ„`¾t§|¤KGJ_—ºÊþ0	ô£4Èì�ŒôÀþ¾Âwh÷NÕØß1„¨„Qzˆè&Ÿ2tìÏ }€º=¼C—ÎH®q2è¿"øh9Ö¯.  /øjCšÁK»   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                                                                                  includes/File_manager/lib/jquery/images/ui-icons_444444_256x240.png                                 0000644                 00000015502 15266052613 0020363 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   Ežr@    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   bKGD DÛ<¦»   tIMEè
÷a‘  —IDATxÚí�mŒ]GyÇ'¤r[ˆ	…Ú8µ�àV	 ^/©DB¢ÝV
oÅ„ë¤¢	k�D •í-ÙåC×¡ë]Ú$ 5I£¦{›BB¤æ®Òš��R,
%a�l>P•ªÔÓs^fÎ™·sÎ½{ïî™¿µ¾÷žgfÎœyþgæœyžy&z+mÆyÃ®@ÀpÐr¨èÓv%Ö� 2:,Km¢@¿	0üû§C\;ç°Ò’‡�}„J {gÿlpÝ?æüqröŽ1�ëÜ©ë]�P7¡€­äÔGÈèG¸¯A	iÞô>¬Ž&y!"¢t‰ˆ,%7¹Æ‘C”Í¤—˜Þ&ÄPj¢œ¨Vþô.3�ßuî¸aÝ}Kv]ã:BÞØ;@_ØîA÷ð!ÎnS¡½”f÷¦m’KnÖÏŒ¢Ê3�ö»Èvæ�Z÷Þq—`¿7íu·÷�yÉ®~f]¡:ìˆ‡Þ4–jÌ>¥%ÿûˆ~`½£ÃÒFR¯� -G˜	l9ZŽ@€–# åh9ZŽ@€–#øó»þkŒ*þ ~.cLÇê`?ƒ[=MüÜæpQ÷E’jþ ~0{š´ÏðÝ·l—ú]¥/>Í¥oo€²?€€y6<Me³·™å®Ü>þ ¶ÚÙÏîÎoGœ”�~n¨þ ºï*º^½€>�ûþôñ°Ý~u3Ó'vzT9Óº@c�Íà:êþ 6r¹úŸôÊƒ9Ø‚á7NS€a×�ÌÁ-G˜j9ZŽ@€–# åh9ZŽ@€–ãüaW`äq–¿ù\iåúŸß,û@a˜5ˆ�5¨o
rçÂ•«C@V[¿O|€¸†¤*êžÃU¡úÈZŠ›usû]�Oª
yÏS¸.?ò¸ sþÈ£�|.!¶{|êYdêgµs¤wØ¯ÐN Ø‘\7±Ryð½|“·Ž»‘¢>tð±ÕéE›Ô ÎrGZ©|vÝYÒÛË\‡Ø"·—�_�ý6�kAÕ‡ÀØãîq¥òag½{ÜO¹‘Gé6ù”[·l· OÙî6(É«¼æ]œO*½ÌÞºl/ÃÕÅúuÑ®;ÈuvŸ‡ÈºpSÜ-WjP¥ðë:›=åFž½Ì êY;X¿r#�4ua¦í 6ïù†DÃÃ°k°žÏ_#o˜	l9ZŽ@€–# åh9ZŽ@€–C]šKÜñÀ	Ÿð±ˆÖËçZí{–JÈ	�.Œò	÷^¯ú‡ze¹jî×¶P³¹5®S9·°S¦ÿÌ×Ð©Ýq¡–€~q¨}	§�E»£9Ö?
˜Êòa®¿_˜ÎÑ),¯íTÊ�_�«j¶4½´@W]æNÝµÛ´@ÔÏ“Æ]S9îîîšû¤×[Êª�
r×Âò\9ºõ‰±R²Ý`l2XGå4U	àß Q…¼~5°7¡ÏùÝkûÍçwåvÀÝvº	`'�� ÕÞò¨c²ˆ¤2ô¥ÇÊ§íüu�×»î3„íìûi:‚ë#ØÎŸæÔ?¸JÎc7ØÖ7kYÑÀÖ êŒíòí•³]¢­ùÒÜn_:¸	h»‚n!€D·r	~°©·›m{ãWKª~îT±3D„}l’Û¯yõ×á77wi³•SS÷3€!>€ŒŽsÇ¤‡@€–#L·� -G @ËÐr´� ýÆ0ÍÙ5PôpÁf¯ò¹ôNC{÷ Ñ¼v‘c²{Ä®½ì`ƒÍbî3K˜Zìöy,05£éâ*ûòðÈ¹üÕ­`S~[éCB>$WËí·<Ù(/�¬·û·ïD3Ø,v®Ü‘1�|Ôdí´-�½¤þWº&Ð?˜œìöª|h¨ã´ î·Û”9†AŒ¯­/ªpTw^ÝùÝ+›GÅýò&¬ºwq‰*äM¥~K Ý‹·ë‡�°©ÑÕCø—l‹°ÆÈ{ ÙPX§j®�ÜÆÖ¦£c$õ úBýÔ¥èÏ]¬;ƒÚ{ŒˆúÕ! ›UJ×�‹^¸{éÑµúøXûÝá!ìÈ}ô.ö¦Ï!st‘4eTQ*§¨ëP3è­�±±÷1–šûalõóZ¬û éó	8:2ÊõA0«™®y­fU´Lý� ­G @ËÐr´� -Çè`|´¬eEøÙ²m&›ØKjJ1NoM^Å†adP-\¼O8éˆ‰õé‘’dÜš®nÈúhð&P	`Ÿ¥¶Ïv§wõ8=-âl¢T¿vOtýYŠž!ú­^Pu¹÷ñÛj~ƒ#'€î½ŒÜn
™%ê_ÖžËÞµ‹®™	ËÚÙôìúó«ÅRüÂG´i¬à¼Éì¯]–¬TýõÇñe¯PÎ&k½É# õVÈåhø&�]Â¢Âÿ:˜]ü"ÌNe©<í?L.úºÂ'¨wÿÛ¾	òhár“™Œ¸w½ðÝVÂ$ˆKÏ©!X•_­O¿ÂÊ· UÞò&6ùä¹¶d²É'2iˆJÏ‘tvÝ@d÷'RÃGdP÷pyªÙÜ.›îd±œ•íóyKÑ%<õk1j!±ñ"` µ�CC÷¼Æ=[@Àš" åh9ZŽ�D€él¦az åïbOòo×°/µXLn•ÅÚ%}Õaéw!æ1Å[ ª§™Í¾ÏjsO7¢Ç.žäjVXájžÔR`ÚYûÉD:i8‡YîÊ	Wøg?C¦%1ó ß6+'È_É³ãGÙo(:Ÿ$:Î^ËÊ¢réKœ–TX\k8­È f8\A®ÖPW»Éù÷sTù½‡«™cXaŠ‡xÜØúsø“6ïüéÚ[¤È[Þu�Ù”_J€ ¾¢$_–
/äš÷8h)3–}_Ñ\âŠ$/@XÒ#K¥%b13
f˜5®ß5³Æ”ßÅîa…1v ¯â0cœà¥5WÅ¤SÚ‘·DNa'@‘âäA©ê{Å	¾œä§|ÑRý=Éç^cŠÍ˜çì»œ.¨@ÅQeù÷ÑRgx2
Ìp¸Ð#ähnÈÍ<œ}³¶;ØJÄó-µü�EfïíæøHSJ5Š¥êÿkþ\>œÏöœä§¥4j~ ™É×—öbKùV¬ç„Üd|”G4£aJ�rç/0^ø,×îÝÖšNq|˜)mþsÀSÒ÷2f˜ÍþÖ©úïâ×U
øNëÔ_Äov«Ü…DÀZ™«H) GyÄ˜&ãCÞ…Ï"6sWòíýévŽ sÀGx[i(ZRë.3uGIp¥¸›ëJÇ„ú�ó¤½”ô+ØÊê/^à�eä�gYÕ® v%Š„]<©‘Oó$‹À#Lú ;.àÆì[¹v;¹ŸI¦€ç3Åó-%3Ö*ébéÏ„=¸àJñ>ö³ìåxBî
A}cP™ß/pæ¹-ùÔÝé®@(]P@÷6­Èu½ÀöÂ§®‰`
qŸ«o;;™é½`Î0Ì6èâ]·�+…Þ§ã($ Iý6ÌHßË�NYý§�Jò«{—hïf4¯yUä�Qùg±‰Ž1¿ÆléPP¢xäHáê\yp½ôWÆ’ôÞ³T3…)õ�’?À4ðJé÷éZÝxSÄ Q?KŽÙ{’EUý£D€€¡`#Ùj  åh9ZŽ@€�…¯ñµjTŒ{,Ì6ÃgçM?Lk-ê3’-»ü–¿H¬ü+z6+È�iÎ+[Ë' øº£}æ™¯Ýnoâ�¼‘79R-±”Ï"È¯�ãô˜f5¾ù«¼3™¨ù
ñ2&µæÜ'Ùgcc-ø¿û¦¶}5ý™¥}\cï;žýÚ[Êïk�3|s‘§i"ÔI�y0A˜ W|_gœpœ÷pŒ½ ]?ñ4Û�gØaiÝ4.B—¯r§L ¡~aM+S fŸ#¸k®P¬'üïâ¼‹¸ÆÐ@Óf‘É’M/ßrU¿ùªÏöí?â"Î±•ÿâw‹O§8BLÄ!æŒrÀ"ÿ?ç…ü¾Vž6èTlÁTz<3·Ëòc%#üqÞ£9ÿ"“t¹›^êo!›ƒÓéÔYfjj‘—té-‡³<ÅNòcVø‘6Å4³lg?Ï`ð)¶ñ¶ð.â‡ÆTb.}Ê*‡FùÏyÜh®Iï>}l’	¥ÕLäôÞ[<Ž ü!ð‚ÄX4ÎrN€Ç”ÙôYfxŒ×ù·- <ˆìÁœgx€kxˆ«ù:oÔ8—M3ËQ&¢~x§y%ÿÉïñ×i,Rg©Cšü©°È_È6kÏ¯¥)ÚçR¥‹èËƒ€oâ_¸JúýÍ“ÀõÀNà$«” ¯#u¦Ÿ‡¢‚Yžâ¿9Á�9ÁjIšªÆzîØbŸÈÂÓèz Ó¼‚ïð»|‡Wò¹’´Ãm¤öþCãO.?Ÿ_Yäù3€Š|ì0û4˜¯Mý­âJ«¼ÁxþÂ*?¦w¯Þ'mŒ°ŸëwŽ2;c%oy„-»mF%¹MýÅº12%À²V~=Á!þ†?ã¯ø·(ò}%J¨&¡¦ò\ýæ¸$ã…!`Ù"7IŸA˜»‹ò%:ÉØ_ðåô'€_”þqÒ¡ ê3„P°ùîOßRèÞ&²5z‚¨(¿§à“ÖÚ5‘GÄŽ]UÜ&÷”º7€[øHòàwŒ½ÜÊGéàèóƒDåïòUqœ˜˜=âÄ3Ø|‰¦Òm�ÿ,—~}¼ÔŸìGtü½äökä¶ß°Ï¨¾æò®SýÂIKtì xW¤XfèÉ]Ésÿ{¸‹_jR\C‡n1¯¯9øPÁý!`P˜‡
þ/ñ%
€–#ØZŽ@€–# åh9ÚG a6Ö™\ç3Sî‡=Ê¹@{tä¶‡wA&À¡¬Õ.¯~|€¦'ædòý¤Ñ«áË‰�þ@‰Ÿä Ÿå³|�r)å­ó¥ä×ÀÉ?��ñ)bf™%æS|¬”ß¾¢èÍPôg(Ë])Ê‘Ty‚ü5ðsœáAàOØ”™=Ë…¸vÙ†Ay½/ÑaŠ#bN3©"Î|ŠË9ÉnC-Ò	Ù¸ƒòLáë³ï¿àß5s¡§ø&“Lq$)G�w›ÃÓÙûžÖ�lŸ{Õ…ÏìRD™£Ì¬&ägÌ„”#3gçæà¹d–ø$›x®´îeÐæx- S"À)v»3õŸÒ”�šHõËSŸd?.ä9­ü›ìg’g6ýêÓ5W$ó—1ºYÏif³U…º[h™/I^åNPð5Ò÷2ÞÇ¯ x:= 'ÙÍ)þ¾ò¥ùo)cË­í¤2;[Gú.ãòDå»Ñ1Î[¬uø_~ÀÏx§Fz‚IbàÚDýåiÝ1éŸ³†ï {˜fÙÃcZ�‚q®A,ïÒ/-³‡ûŽè1Åv.a;rŸ!um PÿåÚHAqá[=c�­Š.Iî~èjû§Ë¥»_§þžâóPœk?Í³™}`‘¥üW2`'&›Þfž­|M9ò¥«÷o×¤þ“ÉßÓ%yLN«òí3üøç³�›Ó� ò~Ï±)iºUvÖpùÂšÂÏáÉvÙJ¯{FùvÒýAÙ/NU¿N�‡x¯ôëÓÜi9»Ž`b”ƒÇ³Ú8Ê¨]ãoÈÚAXdï,=ÈÆâSLU~¸	O¨Ïå­›Slâ9¾É"«ìÔt±y u}Èuù¨.ETøg—êÎ0—(/ÿ.#Uÿ) ¶î�TýLH±†dá8»“eõÃ§x Lgwö¾!c™e¾Æf6%±RTÌ8l\È…ÜÁ‹xwp!/ÂŽÝšcé3ÀkÐßP;9�K¸„K€›Òù â_ˆ—¤©|„nòðmæ4Á„úŸáòÄ7¶@¨ßöàö	öò}à"�úâ 1�³@�ÝœÔô@ö¢XÄa)hÄdiýñÑdHÊÿ/¦Ø‘ôùï"dO)½×”&2BUkà0_í§—uüO³½`5×?wëk¯¯¿x¾xŽ·³œ8flæ…¼÷ð}Ns�±•b¢l½Àb)
Ù1›¸äÍðO…4‹šujÈ¾bŠr@?mü‚`–ñ6nn6ÜÅK¼€O'´çQ®,QL†Ž ²[œ›Žk‚@€–£}¶€ � -G @ËQ$À¢1^øíœÊ&iOqû°+Ð¨�ÿÁ¥À÷¸¬”î‹¼£pä>íŒyÀ:ƒÜÜÆ¥ \štLq{¦þ|†îÚ^à,q1[‡Ÿ'=ˆ{|ý5òƒÃYÉPu¶yq£™ bÑÁåugWióêŽnMþôHMš×Ö
Ìk6D�ø˜Ø"Ñ•Â%�9›¹k”UüRÃ÷u�œ âþ_f™r�OzÊfÚË]…—yì*ÖÉ)�/nìãhÚS,Ñá6Æ¸ÍXle6!‰™Æ
ù3€ÿ'¬Ôç 5Â¥-Þå1öBˆIÔ3špÉóÉ<}ºLº8oïÄ]îæ::Úqæêu+7K8—©¾ÊŽëi0ŸŒÿ½ÄfuiÍQø‡`	¾ Èõ>P:žvú&õûân–¹Û(ý‡Âg–iàç8Ú–jH{ ÙR6‰ø÷ .ˆ5¼ÅÅ�¹ÚÍê~pVÎm”§ Ñäwû¸äk–ý–6¯îè¼ã?Òl3¨íîï¾«G;ô²(<eù�ÜÊnåFK¬ÿ­^’ó„�ne�&Ÿ·hÜ¤)­AÏK2÷fs²»ówYp¥pÉcÎñ©ÄJwÖp�×Ý	dD!pVËh¹›»‡kÒ{ªó°Žß6WÞÑÀ†$€Žð™çü	þ¹Áâ‘õ�Ö `C"X[Ž@€–# åh9ZŽ@€"æ­6�y§Å`�A&@ÌªÃÔ¿-!†…ÇxÌ*Ÿ·ú*Ì;=ÖÔ`'œ$Ð#'Ï¸±„yVKÃ<«%
©ô;¦‘SJÒQÐ¼´<Í7Æ˜åúüÕïãÕ´.PŒ,p†{µS²æhÂ±’/¦8§//æ¹–�âÜ–Ž±·$~¦üê˜wë0IÕ`Ôné™Ô ô;N¸ ©³‡jÊ­&ÊÃQ‚‰ æüjýP±Yk–_¯SèÏ°`ñê1ã™ú¤ŠXHŽ^Ìg<J0Á•m°!T/P&€PAu›\šoœUˆ
%$b�UÆ9hT¢ß™Ö&�-ö€�.XóÊÒØ’v]ALcžÂ¼£ÀèÃÞÉäÏ*Õ¥ërŒ ÷…EÞ)G>µ>ˆÍiÝ.]—æà–#Ì¶� -G @ËÐr´EØÖÞl@äç~ ¶ð§†XûÂÎöeƒ4`]"%À8½,üèeô´Jžb�¼…žÇš€¢AöX!ø±5–�N�d7ÿÊë‰ù
o%Ö†Cç³ìt“-‡*.þV%Z`€ À8=~ÂVàË<ÎAÎ±E³†7Nñiîd•�†LE:]¬ê±$œúfžes)žvÌ›y˜7K×õò‡³Xü:ù+ÉšxÝ[ÀÀ ˆá	ÞÂ%OñZ:Ü|€2@�—°�ˆm%ù6`Û{�‹¼%åè<~¶—%òË‚ò}!ðoÀ«¥£¯NŽ©8ÜM�.æ×hË3»IlQ~Ý’D¶Ï±•�JKTËò-|4ù³åi¶jäZ¤Ï «ìÌM/ÑÑqFàE&¹�×1iŒ‡­Ž±Wù]ô7´<À€” b?ŒŸð¯fúro€à€vŸ«xc9Lm|ÈÛÆ½?‰ô=îÉ#€àÐr[@ËÐr´� -GN ×~ MåGx4“?ªyË´|Ð×7lyM¤o®ý šÊ]aæ-ôõ[^ÏÛp;ï+I^ÎKx0ùÞT~‹f»ãWqafM´|Ð×7lyˆ! �ü//›ºJóMFQ~o¶µì½ù•RùhŽ^©+Þ �jä¿J›_w}®ë—ë_=ÿ9eaš)¿M.×B¯•Š(†ŠÕƒv…’ÍWÿÞ¼ýêà¦åûäw—¯‡í›?B¿À,®ð;–J)Ë?À»�í—ý7Ó—Zº¥aÅË,Ê1ÈãdÜ-�ÇÅrbÃq{ùîN{ WîÈH9ŸÒMõó)?ÆYà�­5¸‰›%õ÷ç7/BÂÿIÿWGìììè�‚Í7€»þî¼.3Ù?Zd7ñ	>A_Õßÿ!`	ØGý! yo®_¹„z]¸­|[ýÊû/T“
ÈêïÃ ]ûøÉï:t’o²ü¤”+Ö=)I]r¬r´rµþqéè·‰K^·}Òë‹kËoVÔ¯?kE<ªT Å£šo2Šòk³¼¶ ÿ†T>š£ßÐo�Ç5ò?ªÍ¯»>×õËõ¯š¿¼ªªP:½V*BÌ,ó
^U�ÜËÙ÷¦òÙÍËòû¸nÍäƒ¾¾aË@ >Ïor;’£'è²_I×T~//aS¶Å·ù¼¤žµ�úú†-¯�àÒrk`ËÐr´� -G @ËÐrÈÆ ×î¼£.¨Õ8–}[Ñ¦n*9”‡€fª[q–ÐìÎ�—  H —WX±ÊÓð&¸hŠå�"®ië0 H€1°*pŒ1«\Dè0#Æî0aÛðÜQÆj”¢æ¶—Ðìþu( "Ì[ÆŒÞS~x ªì0êò€A-G @ËÐr´� -G @Ë±~	Ð	Bý€J€æól1ÓÄL¼Þ–’¸¦� `_ò7l¸în¡þî°«¹ `)ù.\wwPáÛÄtJÕ—þé!Ôk¦aªþðÐ¨AKtYÒÞ[Ð-üUƒ_øöTýû¬ònxèTØz€}™jÒ¿j$˜-)oéÒ‘Ê×•®ª?}€º6°y ÷˜fµûõ”ßŠidõëêÔ? øö ÍáÞÂ©šú;†t•0JoÝä¯�úÃ3@ ºtF²s�“N¿øÐ!>@Ë±~m}Áÿk�¦üüKoì   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                                                                                                              includes/File_manager/lib/jquery/images/ui-icons_555555_256x240.png                                 0000644                 00000015511 15266052613 0020371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   Ežr@    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   bKGD U±Œ†I   tIMEè
÷a‘  žIDATxÚí�mŒWyÇR¹-Ä„BmœÚNH«(ÇK*‘PAÑn+…·bÂõRÑ„µ@"ÐÊö–ìò¡ëÐõ.m’ª5I£¦{;…@¤æ®Òš��R,
%a�l>P•ªÔé‡3/çÌœ·™¹wïÝ�ó_Ý½sç9çÌyùÏ93çyÎs¢=´ç;ÃE @Ë ¢CLgØ™XKÈè°,µ‰ý&ÀðïŸqí˜KÀ^LHS~û• ö0ÎþlpÝ?æøqrõŽ1ŒëÚi#Ö+�hþnB[Ê¨��	Ð�poƒÒ¸é}XMâBDDèYRnRÆ‘C”Í¤ELïb(U�‘NT+~z—™®ïºvÜ0ï¾)»Ê¸Ž�÷ öÐ¶{Ð=|ˆ«ÛšÐžJ³{Ó6É)7ëgFQå™@û]d»óJ­{ï¸S°ß›ö¼ÛûÀ<eW?³®P� vÄC¯šKµ	f‚Ò”‡_Æ>¢ßXïè°´‘š×�@€–#Ì¶� -G @ËÐr´� -G @ËìŠq‡�ÿ5F{ ?‹ —2¦cµ°_ÁÝ<MìÜêp‘÷E’jö ~0{šh¯áØ7mWó»R_*|›Sß0Ö e{ ólxÊ¦o3Ë]±}ìl¹³_ÝßŽ8I;ýÞPítÇ*º^½€>Œûþô±°Ý~y3Ó'vZT¹Òº@e�Má:êö 6r¹úŸ´äAlÁð+§©=À°ó¿Æêà–#Lµ� -G @ËÐr´� -G @Ëqî°30rˆ‡8Ëß|®´rþÏm} •0ÌÄÎÔW¹c¡äêƒU×ïã ®!©Šº×på_4}dMÅMŽº±ýJàªBÜs” ®âG0Ç�<*È§±EÙã“¿È"S¿«]#•¸kÀ^B;�bGlpÝÄJþå!À·ø&kw%E}èàc«&Ò5Š6ÉAœÅŽ´Rùêº«¤·—9±EnO;/�ý6�sAÕ‡ÀØãîq…òag½{Ü¯q#�Ômä“nÝ°Ý‚>i»ë $¯ò˜wq>¡ô2{èf°=Wë×E»î ×Õ}"ëÂMq·\ÉA•À¯ëlö”yö2ƒÊcdí`ýÒ�<ÂÔ…}˜¶€Ú¸çÃÎÁz¾~�¸a&°åh9ZŽ@€–# åh9Zuqhê,uxpû$|jÀG#Z/žkm´ïU*!'@º0ÊÇÝ{½
èê¥åÊ¹_Ø\ÍæÚ¸NåØBO™þ™ËÐ©]q!—€~q¨}	§�F»£9×?
˜ÒòsaÎ¿_˜®Ñ),¯íTŠ�—ÀÕ5[š^Z «.óq§îZ‚mZ êgIãÎ�)·wwÎýÒë5å¦�
r×Âò¼qtëc%e»ÂØ¤°ŽÊaªÀ¿¢
qýr`¯BŸë»×ö›¯ïŠí"€»ìè&€�@T{È+ ŽÊ"’ÒÐ§+ß¶ë×AžïºÏ¶«ïM¤é®÷ `»~SÿàJ9÷Ý`[ß\ÌeE{ [¨0¶âÛ3g+¢-¹hn³/]¸	h+A·à@¢[9?Øš·›m{ã—Kª~æT±ÓE„}lÛ¯zõåðƒ››´ÙÒ©¿©�û@‹à@FÇ¹cÒ†C @Ë¦‚[Ž@€–# åh9ZŽ@€~c˜êì(Ú¸`ÓWù½ÓPß=h4Ï]ä˜ì±²—íl°iÌ}f	S�Ý^�¦f4]\e_9—¿ºØß–ú��OÉÙr{û-O6ÊK#ëíþí;Ñ6��+vd'Ÿ5i;m‹Gc/©I×úg “Ñ�]_•uŒÄ�ã6›2û0ˆñÕõEÎê®«»¾{eóH"'€ª(¬¾�¼Ø`=m¾êñ#r]^½Ôy˜¦.(ê]×/D@N YQX‡Ã®�ÜÊÖ¦£c$õ úBýÖ…èÏ]¬»‚Ú{ŒL?!Ý,Sº\tðÂÜK�®ÕÀGÛïvaGn 7©°W}>™½‹¤!£ŠR9D]ƒš�@¯4=Æ€�²ÔôØe«ŸÕbÝMŸ‡H,9X‡›Éu°Š‘éš×
a&PEËš? õh9ZŽ@€–# å=Œ�Ê$i;P$€Ÿ.Û¦²‰½¤¦ãôÖäUlØ~FÕÜÅû©b&ä§GJ’qk¸º.ësl À›@%€}–Ú>Û�ÞÕãô´ˆ³‰RýÚ=ÑõOd!z†øéQ=§êrïS]c¹‘@u÷^F®7¹L�ˆ’æ_Ö^ËÞµ‹®™	ËÚÙôêúë«ÅTüÜG´©¯à¼Êì¯]š¬´ùë�ãË^®œõ«ÿÍNÕSc¶\¾�¶€o‚” iÕÚL¦@Þ4A�æ[¢˜úõêÅ<¨!”s¸¤\;¢eK@ÍÈ½…ËUfv0âÞõÂw[	“\P .=G¤Š`½W~5?ýr+ßTyÈ«Ød“çÚ’É&ŸÈ¤= *õ‘tuÝ@d·'RÝGdP÷pm8b3»lº“År–¶Ïkdäy.E—ðÔ¯Å¨„ØŸúŽQÛ94tÏkŒÑÓ¬)ZŽ@€–# åØH˜Îf¦’þÅìNþ.vQûA€Å¤âVY¬�ÒWš~bW¬ª6â4³Ùñ¬6öt#z\ÌS\Ã
+\ÃSZ
L;s?™H'×0Ë]1áï
ö+d­$æbä;Àfåù+ÙbvþûIç“DÇØãáÎ¹<[JjÂâZÃiE0Ã¡
r5‡ºÜMÈ¿�#ÊïÝ\ÃcÀ
S<ÌÆÐ_ÃÇ™´yçO×¦Ø"D^ó®2fS~) ø²|YJ¼L�Ó\h¨Þc ¥@ÌXv¼¢)âŠ$/@hÒ3K¥%b13
f˜5z00-|S~s¸›ÆØ¼†CŒp€—×\a“NiGÞ9„� EŠG�O¥Mß+Hðà?áó–ìïN¾Í“‹›1ÏÙw9UhG¤BÅ)u†‡ £À‡
=B^�æŠÜÌ#ÙñÕÚ<ì`+/´äòC™½´«ã#M*Õ(–6ÿ_ñgòé|&°çHà?)…Q³ð› ÉL¾>µ—ZÒï°b½þ£äÊê#<ªS
”;�ñÂw9wï¶ætŠøàÃLiãŸž–ŽË˜a6û¬-Òæ¿›_U)à;¬kþ"~°kåÎ'îÔÊ\=@J8Â£Æ0ò®(|±™»“£÷k¤Û9ÌSæm¥! ¨I­»ÌÔí%Áâ®/�ÍŒ_#í¥Ä _APnþb_ìL#ï<ËMíêàâ¤áåbžÒÈ§yŠEàQ¦}€çqSvTÎÝN¾À$SÀˆ™â…ƒ’iéBécÂn\p…xŸ† ûXöp,!÷„ ¾2¨Ìï9ãÜž|ëîtW ]P@÷6­Èu½ÀöÂ·®Š`
qŸ«o;;™é½`Î0Ì6èâ]·�+„Þ¦ã$ ©ùm˜‘ŽË�N¹ùI;•äWö.ÑÞÌh^óªÈ!¢òïbb~…ÙÒ+  DñÌáBé\ypƒô)cIzïYªÂŒ”Jó�’=À4ðjé÷©ZÝxSÄ iþ~¦.0µ÷$‹jó�†‚�¤¨�@€–# åh96¾ÊW«EP	0î±0ÛŸ�7ý0­Õ¨ÏHºìò[þ"±òW´l8Z�Õ\WÖ–O@ð5GýÌ3_»ÞÞÌ›xov„Zb)ŸE�_Çé1ÌjlóWyg2QóeæLjÕ¹O±8ÆÅŒ”µàÿî›êöÕð3üErV¤öq�¾ïXökO)¾¯>^ÌðÍDž†î¸‹‹SçÙÏ=`‚^ñ}�qzÀ1ÞÃQö€výÄ3lže‡¥vS¿]¾Â]2DómZ™1{sOUwë	?Ç»øïâA®5TÐ4‡Xd²¤Ó“—~ê®à³}û¹€³lå¿ø-ƒ�ƒ)q�9£°È¿ÉÏx1¿§•§Õß:k0•ËÔí²ühI	Œ÷h®¿È$]î¡—Ú[Èêàt:u–™ZŽZä%]zÍá,Osšüˆ~¨1Í,ÛÙÇ³˜|šm|Ÿ-|Ÿø�1”˜KŸ²Êa¿Qþ3ž0ªkÒ»Oï›dB©5Ó9ýÌÝ�3  ¼(Q�³œàqe6}–çõþu"»3çäZæ¾Æ›4ÆeÓÌr„É�4?¼‚S¼šÿäwx’ë5š‡©±ÔAMüTXä/f7›µ×W�Òu‰ó	©¢¤Ëƒ€oæ_¸JúýuÍ“ÀÀNàZ${«” ¯'5¦ß‡Ò³<ÍsœqœÕ’4mþëµc‹>|"sO£ë�Nñ*¾Íoóm^ÍgKÒ·“êûj”?¹ü\~i‘çÏ *ò±WÀlÓ`.›ú[Å•Zy£ñú…T~Lï^½MÚ`7$æevÆJÜò[6ÛŒJr[ó«û•ó“`Y+¿�?ç ÍŸò—ü-·*ò½%J¨*¡¦ò¼ùÍ~IÆCÀ²En’>‹PwåKt’±¿`ËéO ?/ýã¤CAÕgÑÀæ»?}H¡{˜È\Ôè	¢¢üž²ŸOZs×D;vUq«ÜS
èÞ nå#ÉƒßQöpU¤Ktx�ÿ¡SŒ[t•¿ËWÅ1bbzôˆË`sM©Û:ÿY>.ýúx©?Ù‡èø{Iöiä¶ß°×Ø|Íå]gó#-Ñ±O€b]‘b™	0, ÿw'Ïýïán~¡	q-ºÅ¸¾êàƒó‡€Aa*<üùC¼Ä—(ìZŽ h9ZŽ@€–# åh„ÚX§r�ÏT¹öHç<íÙ‘ÛÞ™ ³
8X;½úþšbœ˜Éñ	£UÃ—=ýþ>É~>Ãgø äv>RŠ)jç‹É¯ó€ó’?��ñ)bf™%æS|¬ßî¾¢hÍP´g(Ë]!ÊžTy‚ü5ð sœæ!à�Ù”©=Ë‰¸vÙ†AY½/ÑaŠÃdN3©"®|’Ë9Á.C.Ò	Ù¹“òLá²ãŸóïš¹Ð“|ƒI¦8œ¤£N‡»Õáéì}O«H¶Ï½êÜgö
!¢ÌPfVãò3fBŠ‘©³suð\2K|‚M<_Z÷2
è s\Fè”p’]À®¬ùOjRHU¤úå©O±‰Ÿçó¼Vþö1ÉK3�~õéš+’ùËÝ¬ç4³ÙªBÝ-´Ì%+Šr'(ø:é¸Œ÷ñK žIOÈCÀCÀ	vq’¿¯\4ÿ-el±µ�T¡gëHÇ2.Oš| z‚"Æy‹5ÿËOø)ïÔH�3I\—4yZwLúÓcÖp°›Y`–ÝŒ1¦µ(çZÄò.ýÒ2»»ïˆSlç"v°#·R×Šæ¿\ë)(.ÕSöØ²èÂáäî‡®¶º\ºûuÍßSlŠsí§x.Ó,r¼ÿJæ�ýìÄ¤ÓÛÌs•Ë”#_ºúàíšÂ^`2ù<S’Çä´*ß>ÓÀ�€_r.Û¹%u	’?Ä<Ï¦¤êVÙYÃäk?ƒ'Ûd-½îå[I÷e»8µùux�÷J¿>Í]–«ë&Fi1x<§u�3¡ŒÚÅ1þÆ¬„Fö®Ò3€¬,>ÉTåg€›!±„úl^»ù0Å&žç,²ÊNM›;Z×»\—ÏêBD…?»Tw…¹¤ñòcióŸ`{áI›�	É×�ŒÃcWòWn~˜ã$"œéìÊÞ7d,³ÌWÙÌ¦ÄWŠŠ‡ƒ�ó9Ÿ;y	/áNÎç%Ø±Ks.}xúj'çpqps"„ÿñ’45‚�€ÐMÞ¾ÅœÆ9ƒhþg¹<±�-zÍo{pû{øp�¦ùæ 1O°@�]œÐô@ö¢XÄ!ÉiÄdiýñ‘dHÊÿCìHúˆüw²¥”ÞjJã¡ª6p˜¯�vŒÓË:þgØ^ÐšëŸ»õ¹×ç_<_<ÏÛYN36óóBÜ{ù§¸×XK1Q¶^`±ä…ì™MLòfø§‚šEÍ:Õe_1DÙ¡ŸÖAPËx7·îâ%^Ä§Z�óW–(&CG Ù,ÎMÇ5A @ËÑ>]@€‚@€–# å(`Ñè/üNf“´'¹cØèÔ©àÿààj.-…û<ï�~]Æel×Î˜¬3È=Àí\À%™CÇwdÍŸÏÐ½CÛœ!N<fëð³¤q¯€¯¿F~p8#)ªÎ4On4 @,:˜ ¼îì*m\ÝÙ­ÉG�tÑ¤ym­À¼Æ`C8‰�‰-.]!\ò˜3™¹F¹‰_n8^×È	 îÿe–)÷ù¤§¬¦½Ü•x	‘Ç¾ b�l‘ùâÆŽÑ�¦=ÄngŒÛ�)ÀVf’˜i¼¡�O‰ñ±Àê»Ês€êáÒæïò({®	Ä$êi�»äùdž>]&]œ·w;b��.÷p=mˆ83õº�›Œ)œÍš¾ÊŽëi0ŸŒÿ½DguIÍQø`q¾ Èõc>P:Ÿvú¦æ÷Å=,s�Qú…ï>&,ÓÀYÎr´-Õ�ö ²¤¬ñï\kx‹‹óf77ÿð{€3Ò°pv£<ˆ ¿ÛÇ%[³üì7µqugçÏø‘fcx8�¨Amw×p¬žíÐË¼ð”å7q»¹�›,¾þ·zI6ÌBºi”Aš|ßª1“¦´=OÉÜ3˜ÕÉîÎßídÁÂ%�9Ë§-ÝÃ=^w'�… À-£ånî^®+HïSL¨RÌ³ß:~Ûì	\qG’ >8Ìïg–óÇùç‹GÖ7ZK€€‰ l9ZŽ@€–# åh9Š˜·êæ�ƒu™ 1«Pÿ¶„çq«|Þj«0ï´dXwP{€�ìw’@�œ<ãÆæYM4ó¬–(¤Òï¨F~TIIGAóÒò4Þc–òù7¿�UÓº@ÑW°ÀiîÓNÉš½	ÇJ¼˜âœ¾¨¼˜ç:vŠk[R8Êž’\Ø˜â«%0ïÖa’ªÎ¨ÝÒ2#¨' èwœp RcU)”ÿZMG
&˜ã«iô£‰ÍÒX³üz�Bÿxš‹U�§YÈšAª ˆ…äì…,pÚ#\ñ×¢éÊMP]'—Æg•¢B
ˆX`•qÑïÊj“Àæ{@H¬qeil	»® ¦±?aÞQ`ôaïäòg•êÒu	yaˆ»`‘wÈQ„O®`3Z·K×%‚:¸å3�-G @ËÐr´� -G‘ ¶µ·9Æù [øƒ¯}¡gû’A°.‘`œ^æ~ôRzÚFžb�ã¼…žÇš€¢BöhÁøÑ5–�N�`ÿÊˆù2o%ÖºCç3ìt:“-»*.þV%Z`€ À8=~ÌVàK<ÁÎ²E³†7Nòiîb•�†LE8�¯ê±Ä�úfžcsÉŸvÌÕ<ÂÕ’Ãu½ü‘Ì¿N>ÆJòAã¯;@¡¸x€·ð$oáŠROqî>@�	 Ç+� ØFÄ¶’|°�m†½ÇEÜ’tt?Û€Kù¥¡ñ}!ðoÀk¥³¯MÎ©8ÜC�.ä$×jÓ3›IlQ~Ýšx¶Ï±•�JKTËò-|4ùØâ‹0[5ò -Òg€Uvf‹¦—èh�¸%ð"“ÜÈë™4úÃÖGQµNE{£AËH	 öÃø1OòZ¶ ß1 ·X ök÷¹Š7–ÁÔÆ‡¼mÜû?Aßåî‘Ü0"` ö -GÐ´� -G @ËÐräpíÐT~˜Ç2ùcš·ŒAË]¾aËk"}P÷ x@Ù ©ÜåfnÐòA—oØòÚxÁïÜÁûJ’Wò2JŽ›ÊoÕlwüÎÏ´	ƒ–º|Ã–7€rÏÿò²©«4G2Šòû²­eï+È¯”ÒGsöJ]òyT#þUÚøºò¹Ê/ç¿zü³ÊÂ4S|›\Î…¾U*¢è*VïÚåJ6_ý{/ð^ô«ƒ›¦ïß�¾Î¶oüý³¸ÂïXJ¥,¿€wë/=û1n¡/+´tKÃŠÅ,Ê1ÈãdÜ-�ÇÅtbÃy{úî§=�+vd¤œOê¦üù¤c÷,ðGÖÜÌ-Ró÷ç6OBÂÿIÿ«#vövô§�Í7€;ÿî¸.5Ù?Zd7ó	>A_›¿ÿCÀ°—úC@ó.Þœ¿r
õºp[ú¶ü•÷_¨&�›¿C€xtíà'¿èÐIŽdù	)V¬9{B’ºäXåhåjþãÒÙo*—¼ný¤å‹kËoQš_ÕŠxLÉ@ŠÇ4G2Šòë²
¼® ÿº”>š³_×%o�Ç5â?¦�¯+Ÿ«ürþ«Æ/:¯ª*”Î_ß*!æ–y¯)HîãÆì¸©ü!vñÊ‚ü®_3ù Ë7lyÀýü:ç°#9{œ.û”pMå÷ñ26eP|‹û¥æYù Ë7lymƒ�–#h[Ž@€–# åh9ZŽ@€–CV¹vçuy@¨ÚÀ±ìhEº©<`äPš5ÝŠ3…fwnÔ8… E¸p…«<uÏ`‚«M¾¼SÄ5uý	0ÖcÌ*:Ìˆ±LØ6|·AE@E”‡€±©¨±í)4»]
¨ó–1£÷”Þ€*ûŒº< ÂDPËÐr´� -G @ËÐr¬_tÂ„P?  ù<[Ì41ÓÏw‡¥Ä¯i@#¨Ø›|†×Ý-š¿;ìln¨XJ>Ã…ëîÍßGøö 1�Ò§âÒŸ¢yÍ4L›?<ôªEÐ]–´÷VtŸjðsßž6ÿ^«¼žú• ¶`oÖ4é§	fKgÊ[ºt¤ôu©«Í�>@]ØÜÑ{Ì³ÚýzÊoÅ0róëòš ðíšÃ½…SµæïÂTÂ(½Dt“OºæÏ }€:tèÒÉÎ5N:ýâw@Cÿ -ÇúÕôÿ‡3›±©Ä©É   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                                                                                                       includes/File_manager/lib/jquery/images/ui-icons_cc0000_256x240.png                                 0000644                 00000010636 15266052613 0020504 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   ØIJù    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<  PLTEÌ  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  ·Z«   ZtRNS YG|"2˜á¾Ìwg�²Šª¦ZO{è@Af†SŒ‘”cdaN¡hnz›t¥À}Á¼ã­æéå‚�^ßÝàºÖÜÓÄÕ×ÚpÏ™iø8+ÆÑ§XÉ“ÐÙ¯ñÎ�¨‰±Ç¬ù™6   bKGD ˆH   tIMEè
÷a‘  qIDATxÚí]cÛ¶ÉHªå˜’[©]šÄqk­Mæl^’=Úµ[£6]›nIÝ%îÖûÿ?d _8Üá!–2EÛøœØ>ï>À; ”…ˆˆˆ Hv­ÂŽí‡�3ÐY½üö'˜U¹_Bˆ‚‚I ÕÇ(W¥	>À. ž�ó‹_{u	ê�œ€„êc”Ó;È §ó°ÊI�0ýí&xÊ9ƒ‚Ôö·n«œx+mÌƒ¹ŠôsñÞaîú÷ ;)LEìl`.âi�¸`ÿcÀ|\êS€v¡þŸ;ÇM„"""""""ŒK�w%,[¼'ôZÝHðvß| ›’­÷J‰EF «@«›ébÂ.@	ðd—ªõ>“!¦¿]cO±eF%ñœ.S€PÐÛt ÷`aóY#[Û`> 1[óõ¨]{€‰Gãîó¼‡ìtãº?""""""""v‡n�04¶ß9ñèØ ðåThQ»³~|; S(Ðø�póH1ð*æéà*³_À«€¥Ô}[>‚X9kŒYÀ/¤…5£¬=r¸
7¸>O—!D Ÿ ¿áÓ=UL«ÚdÎÊ¬Nôòg­áu!o6!Œ[N÷»hø
mÌöqË"ð—Z$·‚7$pÖkºKwý¸äóÃ�Éˆˆˆˆˆˆˆ›ŠîÛR;†‰e7º»I[\ª
\¾�]ÀŸÏ³µU‹¨\àÅ©¢:UÙ�œ€uyŸ+Éšt_ß’ßR|mƒõ¦"~^žäÚZ6»'^{Ã…ÕÍ|xùK,Ó=�é#�­Óáú [;'ÄÒaK6Î^Ù(`/µ2LZ§ç[|À}:#€iÀÕ3Ëi`WÀy7*f	³› ëÚ:_¡wÞ ÖH	v{/Oœ5ÃÞÍ¼ŽÅÁ„Ù€`+ôÈ HJÙ°šÁ¡×·Ü#±]�›$ïà•‡=°ë÷c""""""�Ë}Šó@…¼*k9c»�E¸9hW½¥ýÀ�àìÏzfm£õrb1­N‘­ìø¾ÚØnq3v,×&=o‡B}K`#ûôö6»à~¿»(ò|>€m>Ã\¯fúú’ƒú\p�¾uêtÓE@bI‡¹êž|Š—ÛV§�”‚¿2l‘‚Ä¢!Kw»(xû°¥5:!âÝ³b%€v‰­§wzPS“	,;3ßï·”ÁÖí1!ŒŸ !!Â»ÃœÑaÙ)yc$�½†6…æüóG××Ý¾ˆˆˆˆˆë�ôŠ?È,aø–«h4ükìÒR€u™ÅŒ¾Òàj ¤¤Q¯(Ä CØÖe�òej
)J†Ìü.…Òt}a]g¥Û Ï^èözi¿‘�@I‚‘ÏRÛ›À°°,¿s‚R"SðOaÉÝÐ±¤ébCéx «oîØ(	rx Ý¯PÓ=û™�l 5¬34©ö:X6ÈÆýµN†„8†|T?µ–ßzü¬Ìp:ÚÝ$úô! ]ÑÆþˆˆˆˆˆ›…LÅ	Ùæõo�$nõ¥ÝX*7ûj¼ˆÜ`¯•\&f´8óóqKL¦âi �±/Å}á�i¡¸]�œP›y>FÁ^ñ»AHÍøîçZœWÎ{�©ÌV¶ö«òZëÑF#˜ŽK&è^[«P˜Ù®Ø$iyž§%!ƒ Ä (é+îÈ¦%šPjp­w—ÍéG0z÷Ý÷ °X,üo`L€°oÊtt@’`BJMÂ—Ë÷—K—ÀÐuáj ¤ ¡ñ²8}©	x÷ƒýßÜ¹s‡m�wËä %@Ùÿ!&Àt)�ö§(EÓ~pGÁé‡Êtêy€¬ðÿ† Õ>šb+›ÓÊ.p÷.î!o�üÞœ�_¿’ eÿí{º	HÈy$I”ÂÀý£#÷ ‡’i?& ø×P‚ˆ€êìêÇå xLÌA'pØ+‚ðžŸ˜ÍoËï¹‹ zAø¸ ºàÉÉ	he�ŽÇò›î…ì&à¤Du ™ÂÓé
¦ø!Ô…ä�ß_ØÞ%`D ÃfÚ~MsŸ .7j �¨o“A�±c0úätÚ<¦õõ§Nà„º ./ÇÀ¼©Ü�™×kš+ã xG8@< ô,õ™™s0™~t780è}ZˆŸ
ÇJ@Á@.¶‡,›hë1ÍÐ%\:M+íoÕþˆˆˆˆˆ�ãáCy
Þym ÛÖG‚L§»�ŠÇÔ£Z¬’í&ÇžUò¬9·Mö7–…øÑ'÷>×d¶µ$‡äcÛŸeš�‰Š"O§c”ìH•g{M g¥"ÓÇU¡xÍ€<Y�¬4™‘ÍT…‚Ëåýh,ÈU0—6ÏöTq;Ã÷ô1Àcb¿
ÜŽ´ý*6o²_º;œf~/¿°B™¼Ïªo¬ÒÜBüAœ‰?âüv*…©!S~ô>’•þó¹KA¨‚ýJ®yœTvžÖ‘k=cÑdWœ ’ƒxòàé³{Ð´Q&ý;Ãúx	øüY~ý¨B"ãäCæÆ#T>7¬‚ùÔ~½‡µˆÆ�	Ì%¥°WÏØì¹¨FäðWx¨’ö£)»°|&>ÓSJ'ÄNˆœ(Xjynä²”ƒT“ß’ë}QJ_4
É¼v€"AÅÙi˜€'>úX~Ùí¯"uL@
Å¬S-_Ê¯¿£F/ä÷ˆŒÊ‹þ+ñ±ƒ€:»K…ˆÿs”‡ÑXù"! #û›&H¾ÿù�É�|UÉ‡usû›Ésóî	Ö*‹�kYù~3ßi%@¨=B©pOJ™ä~T)¬Ÿj‹‘pu	ÕÝIs~YûyŸbûÅS5üÍàiC€ìÿ©ç|fèŒ¢æ$+›ä'q �ö&²í`|òœÚOƒ¢ÜÔ¥‹‹�Ûys>°LÅDÞ"Á7b ˆˆˆˆˆ`Œ'¦U('¬Îsýë%o-T©xŸ~ÐEƒÖòû?šO…šÂ×_ó|…Ô9Pö�¿¬îÁ“'poU—“ýõtC=ßÐÈô@“¼Ñ¸i
“ñø…Á€ÿÃÅB˜Ë¶¦(ÛÉÀšFãG:òúVáŸ:]�es–Ü4åd©–üR%¯ºŽ3™ìèÅÁ²@'W*0^ÃËnÙ_I€
µÐÊöâ¿é š€ï¾þüûï´>cù\‡kœ cË“QhÃC*Ê©ŠTÇÚ™š�A<Skuø‚kÅº‹ š^rsIyÑ¥�G­YÛŸšõ¡ðõýæô—²h‚ÂU‘æùÅ:(ª *ñ”ùœÀ0›áýêÓÕJ¥—š i¿@S`”qš,ØEââ�þµ ûË;X�_Â¾¼l*ä¹q>,ýË_�Õ¿ºX9ØŽ��ìõÙ³Ãg+8m|¡´›l� ê?r=+WÙ¯œ®™§kÂä-].—Õ�-Ý¿/ÿ“kç°Z©€Áãñd‹ƒ ~¨Æ€Šen¤£+¥ï‘>}} §ˆÕÐ1öêÉ›Ú¾O>©þqŽãlµZÁ
3@ƒÛ~
<V³Zšº­g3=a%G@ù/Õ€ñ£þu¿>@ƒÊ#J8Æ +`l÷°iqï×q€e� 9ÂJoy‘ª‘òy]ú¯'ÿ6?ÖE£F%�25¥—Õ6ÚÇ»Çñ«WÇHœ(®ÒçcTa¶s2"""¢ÆxwôëÕóãë]+Õ#ÎÎá§zÔýi×jõ†»ÊÜ»•ðº|â¨ïÚ°À'üÇÌˆíí<[ü/º7´)ÎUu^	o4oš$l°Å¹¦„-=ÐT†…z¦/¼í_"î–ßE§¡Ó'¥ríåâ-2�˜ÃÛÑ[su–]®Oä Rèsãâ¦3¼0VÚ¯—sÓ~ÛÖÝy:Çö½•ßÞ;$ ¯ïwî& ']à,ÅeØ~©á2ÅFó‘‘Nd°X,ú‹tµÁnø9È~i»1(vö€~ÁÂÊ—f
^i^¡J¹¿\Þyè7[£ƒÞS->Å•ÈI„ƒŸÎO!zÚàRƒ‹Z¼À6Ò1 KùöwŸï4YÿYMËÂËŸw©Ã�f+"""""".9øÄËLH ³Ñ]°·Gí�xù ¡À  (Kq…|’ªoF•2×ò¬¬äNos;ç¬Š²	0)0	(Ë�‹Û#Í£p9'€&‹|2ÀÜŒÛx30% ˜þ¨”,~L°ÎULÀÄbSØbCÜæßØˆ€=`#zö€~Ç Š��=?ø|ÇŽŸÀnã€ˆˆˆˆˆ›ÿ{d×éœÞG{7e”rzƒ>'W½G
§9zŸaš¿´¼@QÇ&ôóÚÊƒÃþ'	hw²beÂ o–êýúíä¡!…3!Nsq†ß¶^ÉŒÖ|¿V2ZŽä¿fû6,ÍýìJS©¯Ñ@ÃÛ¬Ú7ªïÐtj·ý�ƒ€â£Ñ’Ãúóõ �$QjùP}éÏßSåòHr8P
�8Ãw\�kcw2"à«�‹·”‡Iñœ£=/2ÃÑØAÀµ§ g§gxØ/§#tJ
[þ—CÃô\ÞŸó+ùÖ|DDDDDgÐ÷B2ÝDÕVn{½®rôý€�L·Ñµ•Û^¯«¼ÿÐàõ&2ÝHÙVn{½®rôý€7º�Z¾P±áE%—[i‹òW�TÎò7ºü�óú¼åjG')T�ßwðô ‘ëFDµ|q�W‡Cõy9«¯—ÈmåxõÌþ}Ä/¿ü"L}Š7’7%ÀøÅ"«Þ{AÆ
±ú‚ä¯Oê#êÿyUÚ¿=æè3è,Ø~¶1(x}‹‡ø<@}ÚÈ
ZîêÓ·Ú¸x¨‹@ˆ@o—¤>•%«¦~ôý Ë V‚z£ƒPÙ=¨ZIz}:Èšå5?.Yõ�F¢ïÇX×Çh[9Œ¾™®�T[9Œ¾CÙ®¡t[9""""""Âƒ*p¸4yð ?0,_CÀO@ñ…~ý£‡ÃFù‘„à‘	APsÉäÏßÑnüpÓŸÛFru"�à.HÈÚotMÈß2Ðuèý¾JöoÃ¨½WÊ~ÓŠííÅ—ƒ€fíÍ´×àP�}mÇ€¬†i?¾ã¥ýWÇºz@YÿêÚßÕ®¼ý]Ÿû¯í€¶ÿêø@ÐÚ@Ù]ÿ�ˆ8þ;¦¹›|¨g   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                  includes/File_manager/lib/jquery/images/ui-icons_ffffff_256x240.png                                 0000644                 00000014403 15266052613 0021036 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   Ežr@    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   bKGD ÿ‡�Ì¿   tIMEè
÷a‘  XIDATxÚí]_Œ]ÇYÿ�`) Ö&áâÈ"?$ Ô¹«H�ÕQ�®y µ!¹ûPDkXW•B„]9w_²ne_ƒœà"]+mDr×Ý´Jã>°F&ÓÚ²äõE˜&jÖ.íš‡ªÍ‰„øx8ÿæÏ7Î9÷î½»3¿Ñî½÷|3sfæû�9g¾ofNBˆwŒ» ãE$@àˆ�Ñ¡3îBl$"Dt0 0‰Ã&Àø¯Ÿê>×¦êŸ†‰yÎã¯ã0AbèQ‡`%`�Ó±ÈaIŸ§íãØÏkZwìç/�ºë¸‰‚^Eså|Ðq6�9}žÖœƒ‹ ®³ûÔÀ�³»Ž›(Tiþ*J¨—Þ‡‚päÝ¤ì¾9»ê¸‰‚^Å&
„óúõéAê_Á>=€[É\Ðø†úÏ õ;`ÿÜÏ p¤5©7€g€a„ñ7M§Áì· NA€q×qˆ!‰¾ 	0�Åqcã	8¢%0pDŽH€À	8"G$@àˆq>€švÜåßhhÆN—7�œÖv»¡Ôlª•ÁÇpa›Ìpù"ó²o)SpõpÀ�ƒ+w›?ÑÖø¯ÒÕõVæeß¢Î wóWiâz©ý¦¤¸ÝÅuéi$`‹ÌPçøzìë5±»ÿð�Ð±–­î*ðÀ?tj6±½ìÁ�ƒ‹ž>7�`Ÿ†Æß8MçŒ»ü¢;8pDCPàˆ‘ �# pDŽH€À	8¶�» B2Æsç¨_†ŠåßÖ,ùHaœ% g	R%Õ)£;åj.ß"¹*ddg5«Iª¢î9\åOUŸXsq“£nj¿øÄª�ö)‚«ú‰GÌé�ò©‚ù
õé=luH”ÏjçÈ%î°×ÐN r¤\±T~ñà[}2HÜ�”¡ƒ·)À}mR*R'¬T<;w–üò2—�,r{Þeíì—�XÊ¨úHW�+–;ë]ã~ÊM<r·)È'ßº-`»}òv·�&¯2,»8ŸX¼ÌÞºlÏÃÕÅúuÑ®+ÈuvŸ‡ÈºpSÜ-—J ºƒClîó×FÆù �#ZG$@àˆ‘ �# pDŽH€À! Â¸—G»l…£…OøxDë¥×kÔEõ´ÒªŸÅ“u—wù¥ðË¹ÞÚ¿ee¾-À§Ïct¼SU­CÇÚö…qr)S¶hÍã.¦+N“êûÄr+ n¹}ZÀC\•È‘È§mýöjï4 €¶v²nóWß0Ú�õéçÞÂÝG~yp
Ð¡7“HÎ™œ1xhqd_ Áíëx§£zïI*¤õ+A9Áä�w�ß–Þu~WjýÞk.¥Ëã§”KŸ¾ò€a·cu.GT”PÇc•yð¹“ôi;”å®÷�e?ût&ÍgMWnƒ¤pW'©-g`1“Ø6»VKYéPå>Þ©‘‡ë!Ì§u—Îœ�½õ»ƒçqÝ;-Õ½ÙíiåR¦WZÅÓû�ÈµE„]‰MRWiŠjôy‚ð§_]øä\)�8@Dþâ¸ø¾€ˆPMÁ�# pDŽH€À	8"†�M6¬Rç¸`ó˜ûT½“ &ÍKg[�4‰uWì`v»‘ÍVæc}ÊÏa²ÙùZ›Zâ\9S©l‹«—~¡4‰Ì4ÙÂlþ*qi¤-½Íçãæ±{ä\9¤1Èà©³-pÏkO_'÷±�:y»¿ª¼5jL,K—eº:IÛäíëK*åÎË�ß½²y"Qö ©¼lBÛ*|NVz£³œ+¤Í¥~K Ý‹·ëo!aS£«‡ðÏÙ¶GÀ£ì?s�¢-ýÔy¸¼ýîý3ìH„„ï!äO.Æp®bîrï1!ê—o‹E¡¸<íà	¶		¶IÓÌ7½‘ ûõkGR”€ŸRaoúò&dÞ]$�™T”Š1êN¨*<gÛ&kÈñloi¶¿�¯›jÊ|žÏÉ1ŠÆŒ�Ñ,cbºæ�B$@àˆ¦àÀ	8"G$@àˆ“G€vC{`D%¨ðóeÛ\6ä%5ÅhcyCFâãÞabPm»xŸí¤jPžeä$i[ãÕÝ²¾D�å„L »•ÚníÎ¯ê6–Y
ä×|qib‰´ë?TÄX6¤Ï¿ÕÛT]ì}ˆ�6ˆPÿ›¬å¶ù.m"j¿~^Î™Xyšƒ©d-!»þ½M¾É¬ö£õø­n·3)�ksç­r“ÏÞõÛvT—¨ñÄÙy}ƒZh‚8%,�®&æ©~"Ì“ÊT™¦dð%tmŸ <Eõ§(_!6™IÁåÄ(Ÿ×.pðÙÍþÎƒ´çˆ|6¿+¿\Ÿ×FD ¨6
 aÀÏ¸± ]òC…t@¢ÝHáìÜÃª}>‘¸3FT¾ ÿFÈ³bËïÃ†ù)¢:DÕë˜´ù £R„“F€ˆÆäù"6‘ �# pDŽ­D€naièŽ$ÿýheaÿ¸«:DÔÏœ#kÔ¯íVx½¡“…èªä¨éVLßu¦îÖÌ9û	4KDD³Ù/[	øsÌdÒÃ9ÌrWJÐW•`?C¡¥¼ñÏQ�zT5–ÇÍ)W¿/YW™H2PT8°¨Wob—\.¡«i¸¦nÑ,µ¨ED³Ô²´ ¶ò—ˆ1–¼ëXÄHí „“ €’:‡óB7ñm|ÀÌÇnbŸÒ•äVÂW <Áºr¦Šï+Œ»fE�«‹MSO@~d u�1aÂïy,×ïšœYSÒoµ„-¬`
{ üŽa
×˜¬ ~õV¥µâÖP›%bŒWŠvçÎ?ƒ¾ô[z{x®úe5B†ïXÅOðª¥ø­ìó	cŒ0ÛìqCQ�Œ3]Ég*¦8˜Ç1‰bšrþ¹øþ([†=ø|ÈRÊÏ[dªG’—ó/ N˜\ªQ,Wÿßà/ÄÃ¥7pÙ‘Á*~¢Å‘‹ð+ �yñøÜ~Ù’+Öó_Dé2>ƒ‹J
Ìã›C[ùÔK÷)kIçð-ü-€§1Ç¦¿à]á»Žy,‹\ý/áçe
lóÌ€S¿Š_`÷ÊÝ…À‹¬ÌÕä Îà¢1NÇ )Ÿ*và¥ìÛgénœ pÀNàqí zRë.3uï’àŠñ5ü‘v,Uÿ+øä½TzÓ÷& wM«üEgeç©«ÚÕ û3Å_Ä~¼ÃÈ»x} Ñ5ôvlÇŸßôÒíÅk˜Á€Ÿa²L(™Ç1VIû„?ZpÁãÓŽ à	¼’‘û$þ*ø@…Îï;Ó¼�}rWº«H•žRàf$Þ•ä\/°[ùäš˜Cz�‘¤{qÀ™â÷qÃm ÅBƒ.Þu¸bðs:Î  Aý(†�mÇ0Ê=„y]’¿^yœ­Ú†;ÌIå§©]v´Í¡Ú0×-Y�¾Ì–ÎC¬!Ÿ>ì‰G'ÇÜðkÂïµºñ¦  G„+}ø¹§ÏÔ”ô¥«q>@ðØJ¾€ˆˆ‘ �# pDl-¼�7ª%�	ÐÁµ0Û*M‡]p“:æ…áë¼&í+ÃÞ¾"_RäKÌygùÌä ð/Žöé¡W»Ýâãø8:b0VFmÒ&¢.u)]ß+‡5jef„4K}Ör53D,ÑUEn÷d«¡ËÆŸ<ÙDDó¬!$zz·!'�3K³ÙÄ�áËó8 (†.¨WäÚª¹&ÓÑ!«]›ÉûÝ²¶î 0´&ˆ¯ŽmgV0b)@ÂË"|ì`üòp¢ofçŒÔ¥tJ×�¿éå«.�~D Ûú/2-0ŸÍ$³9¬òG©E�äyóhP¹s,±ò%-õ{þ>¨M…¥UtçNÊÌ×Ú¨E\ÎÉ{ð.nb?Æ
~ÄÆèb»q?�ð]ìÂ°?À=øOc¬Ô–>g•Ïå?Ã5£»&ß•„ß›ä�Ôj¦}VøÙ;=Ž Àïøpæ,jã<Šàª6§îjå@ìàL=À9"úG"zƒ½BºDìÕ?¬à�¾O 7©ÅœÿiG�Ëa•?J-:ÈÊRéÔ[@O(uŠ^¥ú}G’}‡iÁÃtX?»zŠnF½ù‡A€çè�ékt$û«¢~yVœ‰ éþ$íì~©ÊoÑ¿gÿ¡Éóú™îá¥üY‡œO_Þ{Óp¤"Tw�þ`ÓŽH?é¸š�ø)ËZÔ'ê11ìÐýuUÔ¯VÏN ^þYú>}’Öè“ô6}A‘Ok¥›ª¼T?ŒAVqÛ*7Ioe‚ª|@ù½­.àùAmÏø¼‚ÍS¶ç•æFí¢ê<AÌLñ—ŽÒ5‘Ã¡~—{NnpŠò¿%":Åàô´¾§w+T~åŸAm“–íêW)0¯I]Óºír"û«,šÊNõ»†�%Ú†ÔåZ€¯j©�=�¯;x'ü"F4D�=öCBjúÑ^×çŽè‘ �# pDŽð�º�9—k¯=í‘Ïvö(a³=UcÂÙbŒ<ë±ºŒuS7	m"ZÍ¾¯GËŠ:ª#å¿&¢3t†>GŸ#¢/h)ÓÖ9—ýÚ.„ôÈQú2=GÏÑ—é¨–¾´„rÖya>‘º_—»bèùY;�\Á5êSŸÞ·PÀ¥ÞQ`�•k–5ª¤XÍÔÏ—"7‡fM]¿Y„_'ÎºJý¬†B.;^î¥ho³)S·ù¤¶ÆnæÍávcSÎ*1ÂZqõ¼oTâ8	�Û²øsäj/?õ.XTD´“öÐvÚN{h'«�>�ˆz…Oßv}ñ0ï!B”öÝ¢�u@šE¡ Íu©°Érø4Mg!“‹Ï ÿ `p_û^¢¯|'*‚ŠÔGß¾‹x×   ×ñ £�Ç¬eøü ðSü#½Œ€'Ñÿ®ô)!ðX0|€ , …)L±3
Úø=¤+ü³¹Û·ûN°Œ9ìÆ½Øƒ=Ø“–‡¦êP›OˆËšêí¬*´ú„“øX¦þEÖ0ý V­ê_–ÖåŸTä7ð^± ´�ËZú‡Ñðö‚W?°ïU®S‰réêk ~Ÿ‰‘NB™ÉþnirBI+ýòéø1€ÿÅ6ìÆó-AÄ÷|€;³¦[Ã^ÇŽûpÊõ÷T‘rg˜ÅñâûC�ÃÅ÷– ªŸSà,ž~ý¾b9;G°tƒû  ï±[à’æY©/¸ø“¢ÒM0¾¢ÈåùB×1§ÌÚJ·ðO'Ë.0Ûùž²™P/—­[Þæp'>Àô±†½L[n´Îo¹.åb$J°K¹3Ï”W~‘«ÿ: `·r…äê?‰CÂ^C"NàÈ‚®~à8®ãÛH7Ó9€U&‡ó8�7°wf{¥È˜wl°qîÂ‹¸wãEÜ…»aÇæXz=€À_P{qîÅ½¸À³Êíºx2LaNú(àåsc¹G¤žã«´DKìt*d©‰z™ËvU“›©Gg´®a Ña-ð£€¥l¯0ý!°_¢£ú(À/Œ“ öÐ¦rBô-Rí ús·¹ô|ùÓÑÅûÔ¦|bÆv-í"=GOYZ‰4“5F+¤ÿÕmè6ÀèqºBWèqƒt@ç
Zµi;C1Û0ä³•ä†‡8 p„çˆ�	8"‡J€>k€Ó¸^<9\Çéq<b8�ßÂ} ÞÆýZ¼Wñ	åÈ·X‹yÄ&ƒØ¼€û  ÷:æ8]¨¿´Ð}‚íÖAÙŽÙ~–õ îðõ×È�ëÂèi½yvaLøQæg~K-^“F·9®1ãJ»!È>J.C�µÚ¹—W¹b¸äDëÅø|½Aù7Q(¿¾ )øCÅ]Æwó´�1òe’2Äµµ¼]1Dô<µèyc~µÛ¢x‹¨èÔ>@®¸­–È´,LTÿ#éŸœúÝÊA¦øvFNþ|öíyKëa G*Dø€ï¼åœn3óõòt&õû ´ÔsòÜÂ®ïPÂL€.­Ó:­ÓÄr‡G NÁuà
¹’tõ§j7©z€uáüë„­d”· YWX\a2tõ ¦ ö@|úñ?¸)¸	W5½’§Xé)&CWã˜¥¶«_VðøFiœ±+møXg,6ÁYMzÖ¨F×3€IV·÷ØØ°Åàï>�ßÆoeß/ã_1;nÆ˜P÷]@Š8 pDo`àˆ‘ �# pDŽH =Pmé&„H Âšc"aX¯„®âªUÞ³ìî’nN(V:¢5‹5Nô¨’<]Û˜C�Ö2GP�Ö,9€�-o’åKRNuÜµ=‡±¹ç‘:o�É·Yz¾ùL*´@L§7s¯H“*Ï•ƒ™ ¦ô>°IíŽ]ºELÂ¦JòÓ:\HUXþ–¥ Êså`"€9½› UUl–r‹/7iàoâ$þ°Æýä&NbÒÅÉ'›y‚“ÙÑ}8‰›9˜àJ¿1ØJÞ �å[ùÀ‚XsTËL€ÍÈƒ ½ÒM¢7PEÏXºx»t" pDK`àˆ‘ �# pD• $¼X<" ”hã5 ÀN|m6nj9¸`�FlJähc¹Ø~ô~,³JžÃI\ÆcXöX š–ÔÒË#LÈZl•ˆ.ˆè¥/G0Û´FîwŠ¸Þ<Êí—?Jy†�+•è6�@¨G Ûdz;õ*¦Ô)Û6fÊïTÛ¢ƒÔÊþÔh$Êb¤�—“UÞ*þZ[Íf?ª�¾/à! o ~ ð&ÃC8¯tsø:xÀŸbŸ×äv|À= €]H°K“ï°»²ÍÒu{û=ÙßGÁï…½Àý™üþ­e¯%R_@Ëøo|¤8z;qˆUpË¸‰}XÅ¶‘)Û©^ß­þÏ¥ß§0�c(�0!ë
Ö¨\4= ~—ÔÚ'¢ÃÔ7Îºáoò»ÅõùF£–Ç`ù—ô]·éÝ&2<ä‰“!zˆÌˆaBCéžÅg²}ßÆKñeñ¡ ÎÑ8"G$@àˆ%\ïh*?�K…ü3Êµ|Ôõ·¼.²<_%¯JãÅ¦r×6s£–�º~ã–×éÇiâpºˆÖT~Š•ŸÚ0ù¨ë7nyƒ�Þ):ñ•­�0ßD¨ò¯¯–ýº"XÈÌÑ‡¹ìò¤FúGØô\ý\õË_=ýmé¥¸¦ô6¹X
^+‘‚JkP¢ý’å\AÄ÷‰Ÿð”tdxùû¤wç/Æ¨š>aò‚%?>}™‹.ÿ àSÆöË�Å1œEªâvø•�øÉóûny?Vå¤ü®š?Ÿ<»ó'kþÍÛÚg5yþÆß£Ìk†mCàP‰ÿþ×á¢«G°C\Ž^'‡Dø¬“ž<ÒêŽrß´ÈžÅ—ð%äWÿ�0ì[À À4êßšwñæòé9ÔëÂmùÛÊW*žjÉS
ˆêÚ-Àõ>€R.B•Ÿ¥Üe|V‘‹/�*q�‘“SŽé¯°é¹ú¹ê/–¿jzùöR]žßtyãQÀ%‰9.1ßD¨ò'‘ï!ö¤"ÿ®Æmùèw¹ìrª‘þ›ž«Ÿ«þbù«¦'È=UU9 ©óçµR¶º!fÜ†¨QËk‡òë	ºTd~‰NhQ›ÊOÓõB~�1bŒZ>êú�[^3Ä	!�#zG$@àˆ‘ �# pDÑ¤;eLº<¢doàTñm…�ÝT1qÐoÍT·âÌ¡Ù•›4Î!B‚J —W°b•OaEèt¸(N‰â@5}ý¨˜¬
œÂ”U¾‚)+Aö	¤ùÄd¸&TDT„~˜ª‘‹œÚžC³ë×E ˆŠ�Aã~Š�£€1 zG4ŽH€À	8"G$@àˆ›— �hd4·³º tG^î˜ùY€L€éìoÜp]Ý©úÇ]Ì­ ™ ƒìo¼p]ÝQýC„o@èhÕÀ¬Jb‘ª×LÃ\ýñ`(�g°ˆ{m% •¿j˜÷Š•«Ú*_ŒÏ CƒtQv²?=u´?>^—ø×µèÐãˆùÃ(‡åü14ZH�'\æ±À¾¬A¨qÊ«À–A¾úã3ÀpàÙøsà“¶ÊÕoŠC¥ ª é«šÀ8õÇ›ÀÐ	Ð¼UÈÕ­~ÆÐ0ÄA�cóú"†‚ÿÚ¼}¶#&´Ø   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                                                                                                                                                                             includes/File_manager/lib/jquery/images/ui-icons_777620_256x240.png                                 0000644                 00000010636 15266052614 0020374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   ØIJù    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<  PLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv aþ­(   ZtRNS YG|"2˜á¾Ìwg�²Šª¦ZO{è@Af†SŒ‘”cdaN¡hnz›t¥À}Á¼ã­æéå‚�^ßÝàºÖÜÓÄÕ×ÚpÏ™iø8+ÆÑ§XÉ“ÐÙ¯ñÎ�¨‰±Ç¬ù™6   bKGD ˆH   tIMEè
÷a‘  qIDATxÚí]cÛ¶ÉHªå˜’[©]šÄqk­Mæl^’=Úµ[£6]›nIÝ%îÖûÿ?d _8Üá!–2EÛøœØ>ï>À; ”…ˆˆˆ Hv­ÂŽí‡�3ÐY½üö'˜U¹_Bˆ‚‚I ÕÇ(W¥	>À. ž�ó‹_{u	ê�œ€„êc”Ó;È §ó°ÊI�0ýí&xÊ9ƒ‚Ôö·n«œx+mÌƒ¹ŠôsñÞaîú÷ ;)LEìl`.âi�¸`ÿcÀ|\êS€v¡þŸ;ÇM„"""""""ŒK�w%,[¼'ôZÝHðvß| ›’­÷J‰EF «@«›ébÂ.@	ðd—ªõ>“!¦¿]cO±eF%ñœ.S€PÐÛt ÷`aóY#[Û`> 1[óõ¨]{€‰Gãîó¼‡ìtãº?""""""""v‡n�04¶ß9ñèØ ðåThQ»³~|; S(Ðø�póH1ð*æéà*³_À«€¥Ô}[>‚X9kŒYÀ/¤…5£¬=r¸
7¸>O—!D Ÿ ¿áÓ=UL«ÚdÎÊ¬Nôòg­áu!o6!Œ[N÷»hø
mÌöqË"ð—Z$·‚7$pÖkºKwý¸äóÃ�Éˆˆˆˆˆˆˆ›ŠîÛR;†‰e7º»I[\ª
\¾�]ÀŸÏ³µU‹¨\àÅ©¢:UÙ�œ€uyŸ+Éšt_ß’ßR|mƒõ¦"~^žäÚZ6»'^{Ã…ÕÍ|xùK,Ó=�é#�­Óáú [;'ÄÒaK6Î^Ù(`/µ2LZ§ç[|À}:#€iÀÕ3Ëi`WÀy7*f	³› ëÚ:_¡wÞ ÖH	v{/Oœ5ÃÞÍ¼ŽÅÁ„Ù€`+ôÈ HJÙ°šÁ¡×·Ü#±]�›$ïà•‡=°ë÷c""""""�Ë}Šó@…¼*k9c»�E¸9hW½¥ýÀ�àìÏzfm£õrb1­N‘­ìø¾ÚØnq3v,×&=o‡B}K`#ûôö6»à~¿»(ò|>€m>Ã\¯fúú’ƒú\p�¾uêtÓE@bI‡¹êž|Š—ÛV§�”‚¿2l‘‚Ä¢!Kw»(xû°¥5:!âÝ³b%€v‰­§wzPS“	,;3ßï·”ÁÖí1!ŒŸ !!Â»ÃœÑaÙ)yc$�½†6…æüóG××Ý¾ˆˆˆˆˆë�ôŠ?È,aø–«h4ükìÒR€u™ÅŒ¾Òàj ¤¤Q¯(Ä CØÖe�òej
)J†Ìü.…Òt}a]g¥Û Ï^èözi¿‘�@I‚‘ÏRÛ›À°°,¿s‚R"SðOaÉÝÐ±¤ébCéx «oîØ(	rx Ý¯PÓ=û™�l 5¬34©ö:X6ÈÆýµN†„8†|T?µ–ßzü¬Ìp:ÚÝ$úô! ]ÑÆþˆˆˆˆˆ›…LÅ	Ùæõo�$nõ¥ÝX*7ûj¼ˆÜ`¯•\&f´8óóqKL¦âi �±/Å}á�i¡¸]�œP›y>FÁ^ñ»AHÍøîçZœWÎ{�©ÌV¶ö«òZëÑF#˜ŽK&è^[«P˜Ù®Ø$iyž§%!ƒ Ä (é+îÈ¦%šPjp­w—ÍéG0z÷Ý÷ °X,üo`L€°oÊtt@’`BJMÂ—Ë÷—K—ÀÐuáj ¤ ¡ñ²8}©	x÷ƒýßÜ¹s‡m�wËä %@Ùÿ!&Àt)�ö§(EÓ~pGÁé‡Êtêy€¬ðÿ† Õ>šb+›ÓÊ.p÷.î!o�üÞœ�_¿’ eÿí{º	HÈy$I”ÂÀý£#÷ ‡’i?& ø×P‚ˆ€êìêÇå xLÌA'pØ+‚ðžŸ˜ÍoËï¹‹ zAø¸ ºàÉÉ	he�ŽÇò›î…ì&à¤Du ™ÂÓé
¦ø!Ô…ä�ß_ØÞ%`D ÃfÚ~MsŸ .7j �¨o“A�±c0úätÚ<¦õõ§Nà„º ./ÇÀ¼©Ü�™×kš+ã xG8@< ô,õ™™s0™~t780è}ZˆŸ
ÇJ@Á@.¶‡,›hë1ÍÐ%\:M+íoÕþˆˆˆˆˆ�ãáCy
Þym ÛÖG‚L§»�ŠÇÔ£Z¬’í&ÇžUò¬9·Mö7–…øÑ'÷>×d¶µ$‡äcÛŸeš�‰Š"O§c”ìH•g{M g¥"ÓÇU¡xÍ€<Y�¬4™‘ÍT…‚Ëåýh,ÈU0—6ÏöTq;Ã÷ô1Àcb¿
ÜŽ´ý*6o²_º;œf~/¿°B™¼Ïªo¬ÒÜBüAœ‰?âüv*…©!S~ô>’•þó¹KA¨‚ýJ®yœTvžÖ‘k=cÑdWœ ’ƒxòàé³{Ð´Q&ý;Ãúx	øüY~ý¨B"ãäCæÆ#T>7¬‚ùÔ~½‡µˆÆ�	Ì%¥°WÏØì¹¨FäðWx¨’ö£)»°|&>ÓSJ'ÄNˆœ(Xjynä²”ƒT“ß’ë}QJ_4
É¼v€"AÅÙi˜€'>úX~Ùí¯"uL@
Å¬S-_Ê¯¿£F/ä÷ˆŒÊ‹þ+ñ±ƒ€:»K…ˆÿs”‡ÑXù"! #û›&H¾ÿù�É�|UÉ‡usû›Ésóî	Ö*‹�kYù~3ßi%@¨=B©pOJ™ä~T)¬Ÿj‹‘pu	ÕÝIs~YûyŸbûÅS5üÍàiC€ìÿ©ç|fèŒ¢æ$+›ä'q �ö&²í`|òœÚOƒ¢ÜÔ¥‹‹�Ûys>°LÅDÞ"Á7b ˆˆˆˆˆ`Œ'¦U('¬Îsýë%o-T©xŸ~ÐEƒÖòû?šO…šÂ×_ó|…Ô9Pö�¿¬îÁ“'poU—“ýõtC=ßÐÈô@“¼Ñ¸i
“ñø…Á€ÿÃÅB˜Ë¶¦(ÛÉÀšFãG:òúVáŸ:]�es–Ü4åd©–üR%¯ºŽ3™ìèÅÁ²@'W*0^ÃËnÙ_I€
µÐÊöâ¿é š€ï¾þüûï´>cù\‡kœ cË“QhÃC*Ê©ŠTÇÚ™š�A<Skuø‚kÅº‹ š^rsIyÑ¥�G­YÛŸšõ¡ðõýæô—²h‚ÂU‘æùÅ:(ª *ñ”ùœÀ0›áýêÓÕJ¥—š i¿@S`”qš,ØEââ�þµ ûË;X�_Â¾¼l*ä¹q>,ýË_�Õ¿ºX9ØŽ��ìõÙ³Ãg+8m|¡´›l� ê?r=+WÙ¯œ®™§kÂä-].—Õ�-Ý¿/ÿ“kç°Z©€Áãñd‹ƒ ~¨Æ€Šen¤£+¥ï‘>}} §ˆÕÐ1öêÉ›Ú¾O>©þqŽãlµZÁ
3@ƒÛ~
<V³Zšº­g3=a%G@ù/Õ€ñ£þu¿>@ƒÊ#J8Æ +`l÷°iqï×q€e� 9ÂJoy‘ª‘òy]ú¯'ÿ6?ÖE£F%�25¥—Õ6ÚÇ»Çñ«WÇHœ(®ÒçcTa¶s2"""¢ÆxwôëÕóãë]+Õ#ÎÎá§zÔýi×jõ†»ÊÜ»•ðº|â¨ïÚ°À'üÇÌˆíí<[ü/º7´)ÎUu^	o4oš$l°Å¹¦„-=ÐT†…z¦/¼í_"î–ßE§¡Ó'¥ríåâ-2�˜ÃÛÑ[su–]®Oä Rèsãâ¦3¼0VÚ¯—sÓ~ÛÖÝy:Çö½•ßÞ;$ ¯ïwî& ']à,ÅeØ~©á2ÅFó‘‘Nd°X,ú‹tµÁnø9È~i»1(vö€~ÁÂÊ—f
^i^¡J¹¿\Þyè7[£ƒÞS->Å•ÈI„ƒŸÎO!zÚàRƒ‹Z¼À6Ò1 KùöwŸï4YÿYMËÂËŸw©Ã�f+"""""".9øÄËLH ³Ñ]°·Gí�xù ¡À  (Kq…|’ªoF•2×ò¬¬äNos;ç¬Š²	0)0	(Ë�‹Û#Í£p9'€&‹|2ÀÜŒÛx30% ˜þ¨”,~L°ÎULÀÄbSØbCÜæßØˆ€=`#zö€~Ç Š��=?ø|ÇŽŸÀnã€ˆˆˆˆˆ›ÿ{d×éœÞG{7e”rzƒ>'W½G
§9zŸaš¿´¼@QÇ&ôóÚÊƒÃþ'	hw²beÂ o–êýúíä¡!…3!Nsq†ß¶^ÉŒÖ|¿V2ZŽä¿fû6,ÍýìJS©¯Ñ@ÃÛ¬Ú7ªïÐtj·ý�ƒ€â£Ñ’Ãúóõ �$QjùP}éÏßSåòHr8P
�8Ãw\�kcw2"à«�‹·”‡Iñœ£=/2ÃÑØAÀµ§ g§gxØ/§#tJ
[þ—CÃô\ÞŸó+ùÖ|DDDDDgÐ÷B2ÝDÕVn{½®rôý€�L·Ñµ•Û^¯«¼ÿÐàõ&2ÝHÙVn{½®rôý€7º�Z¾P±áE%—[i‹òW�TÎò7ºü�óú¼åjG')T�ßwðô ‘ëFDµ|q�W‡Cõy9«¯—ÈmåxõÌþ}Ä/¿ü"L}Š7’7%ÀøÅ"«Þ{AÆ
±ú‚ä¯Oê#êÿyUÚ¿=æè3è,Ø~¶1(x}‹‡ø<@}ÚÈ
ZîêÓ·Ú¸x¨‹@ˆ@o—¤>•%«¦~ôý Ë V‚z£ƒPÙ=¨ZIz}:Èšå5?.Yõ�F¢ïÇX×Çh[9Œ¾™®�T[9Œ¾CÙ®¡t[9""""""Âƒ*p¸4yð ?0,_CÀO@ñ…~ý£‡ÃFù‘„à‘	APsÉäÏßÑnüpÓŸÛFru"�à.HÈÚotMÈß2Ðuèý¾JöoÃ¨½WÊ~ÓŠííÅ—ƒ€fíÍ´×àP�}mÇ€¬†i?¾ã¥ýWÇºz@YÿêÚßÕ®¼ý]Ÿû¯í€¶ÿêø@ÐÚ@Ù]ÿ�ˆ8þ;¦¹›|¨g   tEXtSoftware Adobe ImageReadyqÉe<    IEND®B`‚                                                                                                  includes/File_manager/lib/jquery/jquery-ui.min.js                                                   0000644                 00000756035 15266052614 0016111 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.14.1 - 2024-10-30
* https://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright OpenJS Foundation and other contributors; Licensed MIT */

(t=>{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(V){V.ui=V.ui||{};V.ui.version="1.14.1";var n,s,x,k,o,a,r,l,h,i,E=0,N=Array.prototype.hasOwnProperty,c=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a,r={},l=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?V.error("Invalid widget name: "+t):(a=l+"-"+t,e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[a.toLowerCase()]=function(t){return!!V.data(t,a)},V[l]=V[l]||{},s=V[l][t],n=V[l][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}r[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},r,{constructor:n,namespace:l,widgetName:t,widgetFullName:a}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n)},V.widget.extend=function(t){for(var e,i,s=c.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],N.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=c.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=E++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?((()=>{var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})})(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+r.eventNamespace,t=t[2];t?a.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}}),V.widget;function C(t,e,i){return[parseFloat(t[0])*(h.test(t[0])?e/100:1),parseFloat(t[1])*(h.test(t[1])?i/100:1)]}function D(t,e){return parseInt(V.css(t,e),10)||0}function I(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,a=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,h=/%$/,i=V.fn.position,V.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=I(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){var d,p,f,g,m,_,v,b,y,w,t,e;return u&&u.of?(_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(e=(t=_)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:I(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},_[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):a.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=a.test(i[1])?i[1]:"center",t=r.exec(i[0]),e=r.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[l.exec(i[0])[0],l.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=C(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=D(this,"marginLeft"),s=D(this,"marginTop"),n=r+e+D(this,"marginRight")+b.width,o=l+s+D(this,"marginBottom")+b.height,h=V.extend({},m),c=C(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})):i.apply(this,arguments)},V.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,a=n-o,r=o+e.collisionWidth-s-n;s<e.collisionWidth?0<a&&r<=0?(i=t.left+a+e.collisionWidth-s-n,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?n+s-e.collisionWidth:n:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i,s=e.within,s=s.isWindow?s.scrollTop:s.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;n<e.collisionHeight?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,o=t.left-e.collisionPosition.marginLeft,a=o-i,o=o+e.collisionWidth-n-i,r="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,l="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];a<0?((n=t.left+r+l+h+e.collisionWidth-n-s)<0||n<k(a))&&(t.left+=r+l+h):0<o&&(0<(s=t.left-e.collisionPosition.marginLeft+r+l+h-i)||k(s)<o)&&(t.left+=r+l+h)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,i=i.isWindow?i.scrollTop:i.offset.top,o=t.top-e.collisionPosition.marginTop,a=o-i,o=o+e.collisionHeight-n-i,r="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,l="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];a<0?((n=t.top+r+l+h+e.collisionHeight-n-s)<0||n<k(a))&&(t.top+=r+l+h):0<o&&(0<(s=t.top-e.collisionPosition.marginTop+r+l+h-i)||k(s)<o)&&(t.top+=r+l+h)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}})}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,u=V,d={},W=d.toString,F=/^([\-+])=\s*(\d+\.?\d*)/,L=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],p=u.Color=function(t,e,i,s){return new u.Color.fn.parse(t,e,i,s)},f={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},R={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},g=u.each;function m(t){return null==t?t+"":"object"==typeof t?d[W.call(t)]||"object":typeof t}function _(t,e,i){var s=R[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function Y(s){var n=p(),o=n._rgba=[];return s=s.toLowerCase(),g(L,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[f[e].cache]=i[f[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&u.extend(o,y.transparent),n):y[s]}function v(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}g(f,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),u.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){d["[object "+e+"]"]=e.toLowerCase()}),p.fn=u.extend(p.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=u(n).css(t),t=void 0);var o=this,s=m(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(Y(n)||y._default):"array"===s?(g(f.rgba.props,function(t,e){a[e.idx]=_(n[e.idx],e)}),this):"object"===s?(n instanceof p?g(f,function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}):g(f,function(t,i){var s=i.cache;g(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=_(n[t],e,!0)}),o[s]&&u.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from)&&(o._rgba=i.from(o[s]))}),this):void 0},is:function(t){var n=p(t),o=!0,a=this;return g(f,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],g(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return g(f,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var t=(h=p(t))._space(),e=f[t],i=0===this.alpha()?p("transparent"):this,r=i[e.cache]||e.to(i._rgba),l=r.slice(),h=h[e.cache];return g(e.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=R[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=_((n-s)*a+s,e)))}),this[t](l)},blend:function(t){var e,i,s;return 1===this._rgba[3]?this:(e=this._rgba.slice(),i=e.pop(),s=p(t)._rgba,p(u.map(e,function(t,e){return(1-i)*s[e]+i*t})))},toRgbaString:function(){var t="rgba(",e=u.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join(", ")+")"},toHslaString:function(){var t="hsla(",e=u.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join(", ")+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+u.map(e,function(t){return("0"+(t||0).toString(16)).substr(-2)}).join("")},toString:function(){return this.toRgbaString()}}),p.fn.parse.prototype=p.fn,f.hsla.to=function(t){var e,i,s,n,o,a,r,l;return null==t[0]||null==t[1]||null==t[2]?[null,null,null,t[3]]:(e=t[0]/255,i=t[1]/255,s=t[2]/255,t=t[3],n=(l=Math.max(e,i,s))-(r=Math.min(e,i,s)),a=.5*(o=l+r),r=r===l?0:e===l?60*(i-s)/n+360:i===l?60*(s-e)/n+120:60*(e-i)/n+240,l=0==n?0:a<=.5?n/o:n/(2-o),[Math.round(r)%360,l,a,null==t?1:t])},f.hsla.from=function(t){var e,i,s;return null==t[0]||null==t[1]||null==t[2]?[null,null,null,t[3]]:(e=t[0]/360,s=t[1],i=t[3],s=2*(t=t[2])-(t=t<=.5?t*(1+s):t+s-t*s),[Math.round(255*v(s,t,e+1/3)),Math.round(255*v(s,t,e)),Math.round(255*v(s,t,e-1/3)),i])},g(f,function(r,t){var e=t.props,o=t.cache,a=t.to,l=t.from;p.fn[r]=function(t){var i,s,n;return a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t?this[o].slice():(i=m(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice(),g(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=_(t,e)}),l?((t=p(l(n)))[o]=n,t):p(n))},g(e,function(o,a){p.fn[o]||(p.fn[o]=function(t){var e=m(t),i="alpha"===o?this._hsla?"hsla":"rgba":r,s=this[i](),n=s[a.idx];return"undefined"===e?n:("function"===e&&(e=m(t=t.call(this,n))),null==t&&a.empty?this:("string"===e&&(e=F.exec(t))&&(t=n+parseFloat(e[2])*("+"===e[1]?1:-1)),s[a.idx]=t,this[i](s)))})})}),p.hook=function(t){t=t.split(" ");g(t,function(t,s){u.cssHooks[s]={set:function(t,e){var i;"transparent"===e||"string"===m(e)&&!(i=Y(e))||(e=(e=p(i||e)).toRgbaString()),t.style[s]=e}},u.fx.step[s]=function(t){t.colorInit||(t.start=p(t.elem,s),t.end=p(t.end),t.colorInit=!0),u.cssHooks[s].set(t.elem,t.start.transition(t.end,t.pos))}})},p.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),u.cssHooks.borderColor={expand:function(i){var s={};return g(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var B,j,q,K,U,X,$,G,Q,b,y=u.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},w="ui-effects-",e="ui-effects-style",T="ui-effects-animated";function J(t){for(var e,i=t.ownerDocument.defaultView.getComputedStyle(t),s={},n=i.length;n--;)"string"==typeof i[e=i[n]]&&(s[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=i[e]);return s}function P(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function M(t){return!t||"number"==typeof t||V.fx.speeds[t]||"string"==typeof t&&!V.effects.effect[t]||"function"==typeof t||"object"==typeof t&&!t.effect}function Z(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},K=["add","remove","toggle"],U={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(u.style(t.elem,e,t.end),t.setAttr=!0)}}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:J(this)}}),s=function(){V.each(K,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=J(this.el[0]),this.diff=((t,e)=>{var i,s,n={};for(i in e)s=e[i],t[i]===s||U[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s);return n})(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(q=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):q.apply(this,arguments)}),removeClass:(j=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):j.apply(this,arguments)}),toggleClass:(B=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):B.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(X=V.expr.pseudos.animated,function(t){return!!V(t).data(T)||X(t)})),!0===V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(w+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(w+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.14.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){var s;return 0===e?{height:0,width:0,outerHeight:0,outerWidth:0}:(s="horizontal"!==i?(e||100)/100:1,i="vertical"!==i?(e||100)/100:1,{height:t.height()*i,width:t.width()*s,outerHeight:t.outerHeight()*i,outerWidth:t.outerWidth()*s})},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(e,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(e)||"",t.removeData(e)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(w+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=w+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(T,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=P.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!0!==V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(T),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(Q=V.fn.show,function(t){return M(t)?Q.apply(this,arguments):((t=P.apply(this,arguments)).mode="show",this.effect.call(this,t))}),hide:(G=V.fn.hide,function(t){return M(t)?G.apply(this,arguments):((t=P.apply(this,arguments)).mode="hide",this.effect.call(this,t))}),toggle:($=V.fn.toggle,function(t){return M(t)||"boolean"==typeof t?$.apply(this,arguments):((t=P.apply(this,arguments)).mode="toggle",this.effect.call(this,t))}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):Z(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,o=n?o.scrollLeft():0,r=s.offset(),r={top:r.top-a,left:r.left-o,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-o,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(r,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=Z(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},b={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){b[t]=function(t){return Math.pow(t,e+2)}}),V.extend(b,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(b,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});var tt,et,S,it=V.effects,st=(V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,o="show"===o,r=t.direction||"up",l=t.distance,h=t.times||5,c=2*h+(o||a?1:0),u=t.duration/c,d=t.easing,p="up"===r||"down"===r?"top":"left",f="up"===r||"left"===r,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),r=n.css(p),l=l||n["top"==p?"outerHeight":"outerWidth"]()/3,o&&((s={opacity:1})[p]=r,n.css("opacity",0).css(p,f?2*-l:2*l).animate(s,u,d)),a&&(l/=Math.pow(2,h-1)),(s={})[p]=r;g<h;g++)(i={})[p]=(f?"-=":"+=")+l,n.animate(i,u,d).animate(s,u,d),l=a?2*l:l/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+l,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+c)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i,s=V(this),n="show"===t.mode,o=t.direction||"left",a="up"===o||"down"===o?"top":"left",o="up"===o||"left"===o?"-=":"+=",r="+="==o?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(s),i=t.distance||s["top"==a?"outerHeight":"outerWidth"](!0)/2,l[a]=o+i,n&&(s.css(l),l[a]=r+i,l.opacity=1),s.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,s="hide"===s,o=e.size||15,a=/([0-9]+)%/.exec(o),r=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,h=V.effects.createPlaceholder(i),c=i.cssClip(),u={clip:V.extend({},c)},d={clip:V.extend({},c)},p=[c[r[0]],c[r[1]]],f=i.queue().length;a&&(o=parseInt(a[1],10)/100*p[s?0:1]),u.clip[r[0]]=o,d.clip[r[0]]=o,d.clip[r[1]]=0,n&&(i.cssClip(d.clip),h&&h.css(V.effects.clipToBox(d)),d.clip=c),i.queue(function(t){h&&h.animate(V.effects.clipToBox(u),l,e.easing).animate(V.effects.clipToBox(d),l,e.easing),t()}).animate(u,l,e.easing).animate(d,l,e.easing).queue(t),V.effects.unshift(i,f,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(r=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*r.y+d.top,f.left=(p.outerWidth-f.outerWidth)*r.x+d.left,g.top=(p.outerHeight-g.outerHeight)*r.y+d.top,g.left=(p.outerWidth-g.outerWidth)*r.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),i=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(i.from.opacity=1,i.to.opacity=0),V.effects.effect.size.call(this,i,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",n="up"===n||"left"===n,c={},u={},d={},p=s.queue().length;for(V.effects.createPlaceholder(s),c[h]=(n?"-=":"+=")+o,u[h]=(n?"+=":"-=")+2*o,d[h]=(n?"-=":"+=")+2*o,s.animate(c,l,t.easing);i<a;i++)s.animate(u,l,t.easing).animate(d,l,t.easing);s.animate(u,l,t.easing).animate(c,l/2,t.easing).queue(e),V.effects.unshift(s,p,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),it=!0===V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):it,V.ui.focusable=function(t,e){var i,s,n,o=t.nodeName.toLowerCase();return"area"===o?(n=(i=t.parentNode).name,!(!t.href||!n||"map"!==i.nodeName.toLowerCase())&&0<(i=V("img[usemap='#"+n+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(o)?(s=!t.disabled)&&(n=V(t).closest("fieldset")[0])&&(s=!n.disabled):s="a"===o&&t.href||e,s&&V(t).is(":visible")&&"visible"===V(t).css("visibility"))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}}),V.ui.focusable,V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=V(this.element.prop("form")),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},V.escapeSelector||(V.escapeSelector=function(t){return CSS.escape(t+"")}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+CSS.escape(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(tt=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++tt)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.14.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").filter(function(t){return t%2==0}))},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"===t?this._activate(e):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e)&&this._createIcons())},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,r)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(a=i.children(".ui-accordion-header-icon"),this._removeClass(a,null,e.icons.activeHeader)._addClass(a,null,e.icons.header)),n)||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(t=s.children(".ui-accordion-header-icon"),this._removeClass(t,null,e.icons.header)._addClass(t,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active"))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){function s(){o._toggleComplete(e)}var n,o=this,a=0,r=t.css("box-sizing"),l=t.length&&(!i.length||t.index()<i.index()),h=this.options.animate||{},l=l&&h.down||h,c=(c="string"==typeof l?l:c)||l.easing||h.easing,u=(u="number"==typeof l?l:u)||l.duration||h.duration;return i.length?t.length?(n=t.show().outerHeight(),i.animate(this.hideProps,{duration:u,easing:c,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:u,easing:c,complete:s,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===r&&(a+=e.now):"content"!==o.options.heightStyle&&(e.now=Math.round(n-i.outerHeight()-a),a=0)}})):i.animate(this.hideProps,u,c,s):t.animate(this.showProps,u,c,s)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),this._trigger("activate",null,t)}}),V.widget("ui.menu",{version:"1.14.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}}),V.widget("ui.autocomplete",{version:"1.14.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}}),V.ui.autocomplete,/ui-corner-([a-z]){2,6}/g);V.widget("ui.controlgroup",{version:"1.14.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};t&&("controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),a=a.concat(e.get())):V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(st,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}}),V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.14.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("<div></div>").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+CSS.escape(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(V(this).prop("form")).length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),V.ui.checkboxradio,V.widget("ui.button",{version:"1.14.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var t="iconPosition"!==t,i=t?this.options.iconPosition:e,s="top"===i||"bottom"===i;this.icon?t&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),t&&this._addClass(this.icon,null,e),this._attachIcon(i),s?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(i))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace)&&this.iconSpace.remove()),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e)&&this.element.trigger("blur")},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!0===V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"===t?this._super("showLabel",e):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments))}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==e&&"radio"!==e?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),t="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",e=V.data(this,"ui-"+t);e?(e.option(i||{}),e._init&&e._init()):"button"==t?et.call(V(this),i):V(this).checkboxradio(V.extend({icon:!1},i))})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),V.ui.button;function nt(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=ot(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function ot(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,at)}function at(){V.datepicker._isDisabledDatepicker((S.inline?S.dpDiv.parent():S.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function H(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i])}V.extend(V.ui,{datepicker:{version:"1.14.1"}}),V.extend(nt.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return H(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?ot(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(s=this._get(e,"showOn"))&&"both"!==s||t.on("focus",this._showDatepicker),"button"!==s&&"both"!==s||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(o.setMonth((e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s})(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),H(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),V.datepicker._hideDatepicker(),S===s)&&(S=null,this._curInst=null)},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((s=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((s=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(t)for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),e=this._getDateDatepicker(t,!0),i=this._getMinMaxDate(o,"min"),n=this._getMinMaxDate(o,"max"),H(o.settings,s),null!==i&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,i)),null!==n&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,n)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,e),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(i=V.datepicker._get(s,"onSelect"))?(e=V.datepicker._formatDate(s),i.apply(s.input?s.input[0]:null,[e,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return i=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),e=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||e<" "||!i||-1<i.indexOf(e)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n)&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0]),!1===(i=(i=V.datepicker._get(n,"beforeShow"))?i.apply(t,[t,n]):{}))||(H(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),i={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),i=V.datepicker._checkOffset(n,i,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:i.left+"px",top:i.top+"px"}),n.inline)||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",(t=>{for(var e;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(e=parseInt(t.css("zIndex"),10),!isNaN(e))&&0!==e)return e;t=t.parent()}return 0})(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)},_updateDatepicker:function(t){this.maxRows=4,(S=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&at.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,r<e.left+s&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,l<e.top+n&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(t=this._get(s,"showAnim"),i=this._get(s,"duration"),e=function(){V.datepicker._tidyDialog(s)},V.effects&&V.effects.effect[t]?s.dpDiv.hide(t,V.datepicker._get(s,"showOptions"),i,e):s.dpDiv["slideDown"===t?"slideUp":"fadeIn"===t?"fadeOut":"hide"](t?i:null,e),t||e(),this._datepickerShowing=!1,(i=this._get(s,"onClose"))&&i.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI)&&(V.unblockUI(),V("body").append(this.dpDiv)),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(t=V(t.target),e=V.datepicker._getInst(t[0]),!(t[0].id===V.datepicker._mainDivId||0!==t.parents("#"+V.datepicker._mainDivId).length||t.hasClass(V.datepicker.markerClassName)||t.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)||t.hasClass(V.datepicker.markerClassName)&&V.datepicker._curInst!==e)&&V.datepicker._hideDatepicker()},_adjustDate:function(t,e,i){var t=V(t),s=this._getInst(t[0]);this._isDisabledDatepicker(t[0])||(this._adjustInstDate(s,e,i),this._updateDatepicker(s))},_gotoToday:function(t){var e,t=V(t),i=this._getInst(t[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(e=new Date,i.selectedDay=e.getDate(),i.drawMonth=i.selectedMonth=e.getMonth(),i.drawYear=i.selectedYear=e.getFullYear()),this._notifyChange(i),this._adjustDate(t)},_selectMonthYear:function(t,e,i){var t=V(t),s=this._getInst(t[0]);s["selected"+("M"===i?"Month":"Year")]=s["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(t)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i,t=V(t),t=this._getInst(t[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),e=this._getDate(t),i=this.formatDate(i,e,this._getFormatConfig(t)),V(document).find(s).val(i))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e,t=new Date(t.getTime());return t.setDate(t.getDate()+4-(t.getDay()||7)),e=t.getTime(),t.setMonth(0),t.setDate(1),Math.floor(Math.round((e-t)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o=0,a=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,a="string"!=typeof a?a:(new Date).getFullYear()%100+parseInt(a,10),r=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,l=(t?t.dayNames:null)||this._defaults.dayNames,h=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,c=(t?t.monthNames:null)||this._defaults.monthNames,u=-1,d=-1,p=-1,f=-1,g=!1,m=function(t){t=y+1<e.length&&e.charAt(y+1)===t;return t&&y++,t},_=function(t){var e=m(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,t=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(o).match(t);if(e)return o+=e[0].length,parseInt(e[0],10);throw"Missing number at position "+o},v=function(t,e,i){var s=-1,t=V.map(m(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(t,function(t,e){var i=e[1];if(n.substr(o,i.length).toLowerCase()===i.toLowerCase())return s=e[0],o+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+o},b=function(){if(n.charAt(o)!==e.charAt(y))throw"Unexpected literal at position "+o;o++},y=0;y<e.length;y++)if(g)"'"!==e.charAt(y)||m("'")?b():g=!1;else switch(e.charAt(y)){case"d":p=_("d");break;case"D":v("D",r,l);break;case"o":f=_("o");break;case"m":d=_("m");break;case"M":d=v("M",h,c);break;case"y":u=_("y");break;case"@":u=(s=new Date(_("@"))).getFullYear(),d=s.getMonth()+1,p=s.getDate();break;case"!":u=(s=new Date((_("!")-this._ticksTo1970)/1e4)).getFullYear(),d=s.getMonth()+1,p=s.getDate();break;case"'":m("'")?b():g=!0;break;default:b()}if(o<n.length&&(t=n.substr(o),!/^\s+/.test(t)))throw"Extra/unparsed characters found in date: "+t;if(-1===u?u=(new Date).getFullYear():u<100&&(u+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u<=a?0:-100)),-1<f)for(d=1,p=f;;){if(p<=(i=this._getDaysInMonth(u,d-1)))break;d++,p-=i}if((s=this._daylightSavingAdjust(new Date(u,d-1,p))).getFullYear()!==u||s.getMonth()+1!==d||s.getDate()!==p)throw"Invalid date";return s},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s=null==t||""===t?e:"string"==typeof t?(t=>{try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)})(t):"number"==typeof t?isNaN(t)?e:(s=t,(i=new Date).setDate(i.getDate()+s),i):new Date(t.getTime());return(s=s&&"Invalid Date"===s.toString()?e:s)&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,N,W,F,L,a,r,R,l,h,c,u,d,p,f,g,m,_,Y,v,b,B,y,j,q,w,x,k,C=new Date,K=this._daylightSavingAdjust(new Date(C.getFullYear(),C.getMonth(),C.getDate())),D=this._get(t,"isRTL"),C=this._get(t,"showButtonPanel"),I=this._get(t,"hideIfNoPrevNext"),T=this._get(t,"navigationAsDateFormat"),P=this._getNumberOfMonths(t),M=this._get(t,"showCurrentAtPos"),S=this._get(t,"stepMonths"),U=1!==P[0]||1!==P[1],H=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),z=this._getMinMaxDate(t,"min"),O=this._getMinMaxDate(t,"max"),A=t.drawMonth-M,E=t.drawYear;if(A<0&&(A+=12,E--),O)for(e=this._daylightSavingAdjust(new Date(O.getFullYear(),O.getMonth()-P[0]*P[1]+1,O.getDate())),e=z&&e<z?z:e;this._daylightSavingAdjust(new Date(E,A,1))>e;)--A<0&&(A=11,E--);for(t.drawMonth=A,t.drawYear=E,M=this._get(t,"prevText"),M=T?this.formatDate(M,this._daylightSavingAdjust(new Date(E,A-S,1)),this._getFormatConfig(t)):M,i=this._canAdjustMonth(t,-1,E,A)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"e":"w")).text(M))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"e":"w")).text(M))[0].outerHTML,M=this._get(t,"nextText"),M=T?this.formatDate(M,this._daylightSavingAdjust(new Date(E,A+S,1)),this._getFormatConfig(t)):M,s=this._canAdjustMonth(t,1,E,A)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"w":"e")).text(M))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:M}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(D?"w":"e")).text(M))[0].outerHTML,S=this._get(t,"currentText"),I=this._get(t,"gotoCurrent")&&t.currentDay?H:K,S=T?this.formatDate(S,I,this._getFormatConfig(t)):S,M="",t.inline||(M=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),T="",C&&(T=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(D?M:"").append(this._isInRange(t,I)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(S):"").append(D?"":M)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),N=this._get(t,"dayNames"),W=this._get(t,"dayNamesMin"),F=this._get(t,"monthNames"),L=this._get(t,"monthNamesShort"),a=this._get(t,"beforeShowDay"),r=this._get(t,"showOtherMonths"),R=this._get(t,"selectOtherMonths"),l=this._getDefaultDate(t),h="",u=0;u<P[0];u++){for(d="",this.maxRows=4,p=0;p<P[1];p++){if(f=this._daylightSavingAdjust(new Date(E,A,t.selectedDay)),g=" ui-corner-all",m="",U){if(m+="<div class='ui-datepicker-group",1<P[1])switch(p){case 0:m+=" ui-datepicker-group-first",g=" ui-corner-"+(D?"right":"left");break;case P[1]-1:m+=" ui-datepicker-group-last",g=" ui-corner-"+(D?"left":"right");break;default:m+=" ui-datepicker-group-middle",g=""}m+="'>"}for(m+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+g+"'>"+(/all|left/.test(g)&&0===u?D?s:i:"")+(/all|right/.test(g)&&0===u?D?i:s:"")+this._generateMonthYearHeader(t,A,E,z,O,0<u||0<p,F,L)+"</div><table class='ui-datepicker-calendar'><thead><tr>",_=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",c=0;c<7;c++)_+="<th scope='col'"+(5<=(c+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+N[Y=(c+n)%7]+"'>"+W[Y]+"</span></th>";for(m+=_+"</tr></thead><tbody>",b=this._getDaysInMonth(E,A),E===t.selectedYear&&A===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,b)),v=(this._getFirstDayOfMonth(E,A)-n+7)%7,b=Math.ceil((v+b)/7),B=U&&this.maxRows>b?this.maxRows:b,this.maxRows=B,y=this._daylightSavingAdjust(new Date(E,A,1-v)),j=0;j<B;j++){for(m+="<tr>",q=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(y)+"</td>":"",c=0;c<7;c++)w=a?a.apply(t.input?t.input[0]:null,[y]):[!0,""],k=(x=y.getMonth()!==A)&&!R||!w[0]||z&&y<z||O&&O<y,q+="<td class='"+(5<=(c+n+6)%7?" ui-datepicker-week-end":"")+(x?" ui-datepicker-other-month":"")+(y.getTime()===f.getTime()&&A===t.selectedMonth&&t._keyEvent||l.getTime()===y.getTime()&&l.getTime()===f.getTime()?" "+this._dayOverClass:"")+(k?" "+this._unselectableClass+" ui-state-disabled":"")+(x&&!r?"":" "+w[1]+(y.getTime()===H.getTime()?" "+this._currentClass:"")+(y.getTime()===K.getTime()?" ui-datepicker-today":""))+"'"+(x&&!r||!w[2]?"":" title='"+w[2].replace(/'/g,"&#39;")+"'")+(k?"":" data-handler='selectDay' data-event='click' data-month='"+y.getMonth()+"' data-year='"+y.getFullYear()+"'")+">"+(x&&!r?"&#xa0;":k?"<span class='ui-state-default'>"+y.getDate()+"</span>":"<a class='ui-state-default"+(y.getTime()===K.getTime()?" ui-state-highlight":"")+(y.getTime()===H.getTime()?" ui-state-active":"")+(x?" ui-priority-secondary":"")+"' href='#' aria-current='"+(y.getTime()===H.getTime()?"true":"false")+"' data-date='"+y.getDate()+"'>"+y.getDate()+"</a>")+"</td>",y.setDate(y.getDate()+1),y=this._daylightSavingAdjust(y);m+=q+"</tr>"}11<++A&&(A=0,E++),d+=m+="</tbody></table>"+(U?"</div>"+(0<P[0]&&p===P[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}h+=d}return h+=T,t._keyEvent=!1,h},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),i=i&&e<i?i:e;return t&&t<i?t:i},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),i=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&i.setDate(this._getDaysInMonth(i.getFullYear(),i.getMonth())),this._isInRange(t,i)},_isInRange:function(t,e){var i,s=this._getMinMaxDate(t,"min"),n=this._getMinMaxDate(t,"max"),o=null,a=null,t=this._get(t,"yearRange");return t&&(t=t.split(":"),i=(new Date).getFullYear(),o=parseInt(t[0],10),a=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(o+=i),t[1].match(/[+\-].*/))&&(a+=i),(!s||e.getTime()>=s.getTime())&&(!n||e.getTime()<=n.getTime())&&(!o||e.getFullYear()>=o)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);s=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),s,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new nt,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.14.1";var z=!1;V(document).on("mouseup",function(){z=!1}),V.widget("ui.mouse",{version:"1.14.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){var e,i,s;if(!z)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),i=1===(this._mouseDownEvent=t).which,s="string"==typeof(e=this).options.cancel&&V(t.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(t)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?t.preventDefault():(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),z=!0)),!0},_mouseMove:function(t){if(this._mouseMoved&&!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t);return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,z=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.widget("ui.draggable",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length||(this.handle=this._getHandle(t),!this.handle)||(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=this.document[0].activeElement;V(t.target).closest(e).length||V(e).trigger("blur")},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t,e;return"relative"!==this.cssPosition?{top:0,left:0}:(t=this.element.position(),e=this._isRootNode(this.scrollParent[0]),{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())})},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e=this.options,i=this.document[0];this.relativeContainer=null,e.containment?"window"===e.containment?this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||i.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:"document"===e.containment?this.containment=[0,0,V(i).width()-this.helperProportions.width-this.margins.left,(V(i).height()||i.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:e.containment.constructor===Array?this.containment=e.containment:("parent"===e.containment&&(e.containment=this.helper[0].parentNode),(e=(i=V(e.containment))[0])&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i)):this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*t}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),{top:(a=e&&(this.containment&&(i=this.relativeContainer?(e=this.relativeContainer.offset(),[this.containment[0]+e.left,this.containment[1]+e.top,this.containment[2]+e.left,this.containment[3]+e.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3])&&(a=i[3]+this.offset.click.top),s.grid&&(e=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||e-this.offset.click.top>=i[1]||e-this.offset.click.top>i[3]?e:e-this.offset.click.top>=i[1]?e-s.grid[1]:e+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis)?this.originalPageY:a)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a)&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a)&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}}),V.ui.draggable,V.widget("ui.resizable",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){var i=!1,s=V(t).css("overflow");if("hidden"===s)return!1;if("scroll"===s)return!0;if(0<t[s=e&&"left"===e?"scrollLeft":"scrollTop"])return!0;try{t[s]=1,i=0<t[s],t[s]=0}catch(t){}return i},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=V(n.containment).scrollLeft()||0,i+=V(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this._helper||(s=this._calculateAdjustedElementDimensions(o)),this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width,height:s.height},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:s.width,height:s.height},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,e=e?0:o.sizeDiff.width,e={width:o.helper.width()-e,height:o.helper.height()-i},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper)&&!n.animate&&this._proportionallyResize(),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(t=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,e=n.maxHeight*this.aspectRatio,s=n.maxWidth/this.aspectRatio,n.minWidth<t&&(n.minWidth=t),n.minHeight<i&&(n.minHeight=i),e<n.maxWidth&&(n.maxWidth=e),s<n.maxHeight)&&(n.maxHeight=s),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_calculateAdjustedElementDimensions:function(t){var e,i,s=t.get(0);return"content-box"!==t.css("box-sizing")||!this._hasScroll(s)&&!this._hasScroll(s,"left")?{height:parseFloat(t.css("height")),width:parseFloat(t.css("width"))}:(e=parseFloat(s.style.width),s=parseFloat(s.style.height),i=this._getPaddingPlusBorderDimensions(t),e=isNaN(e)?this._getElementTheoreticalSize(t,i,"width"):e,{height:isNaN(s)?this._getElementTheoreticalSize(t,i,"height"):s,width:e})},_getElementTheoreticalSize:function(t,e,i){return Math.max(0,Math.ceil(t.get(0)["offset"+i[0].toUpperCase()+i.slice(1)]-e[i]-.5))||0},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,n=n?0:i.sizeDiff.width,n={width:i.size.width-n,height:i.size.height-o},o=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,a=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,a&&o?{top:a,left:o}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n=V(this).resizable("instance"),o=n.options,a=n.element,o=o.containment,a=o instanceof V?o.get(0):/parent/.test(o)?a.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},o=n.containerOffset,e=n.containerSize.height,t=n.containerSize.width,t=n._hasScroll(a,"left")?a.scrollWidth:t,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:o.left,top:o.top,width:t,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,t=e._aspectRatio||t.shiftKey,o={top:0,left:0},a=e.containerElement,r=!0;a[0]!==document&&/static/.test(a.css("position"))&&(o=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-o.left),t&&(e.size.height=e.size.width/e.aspectRatio,r=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,r=!1),e.position.top=e._helper?s.top:0),a=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),a&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-o.left:e.offset.left-s.left)),a=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-o.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,t)&&(e.size.height=e.size.width/e.aspectRatio,r=!1),a+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-a,t)&&(e.size.width=e.size.height*e.aspectRatio,r=!1),r||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var i=V(this).resizable("instance"),t=i.options;V(t.alsoResize).each(function(){var t=V(this),e=i._calculateAdjustedElementDimensions(t);t.data("ui-resizable-alsoresize",{width:e.width,height:e.height,left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!0===V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,s=Math.round((s.height-n.height)/h)*h,u=n.width+c,d=n.height+s,p=i.maxWidth&&i.maxWidth<u,f=i.maxHeight&&i.maxHeight<d,g=i.minWidth&&i.minWidth>u,m=i.minHeight&&i.minHeight>d;i.grid=r,g&&(u+=l),m&&(d+=h),p&&(u-=l),f&&(d-=h),/^(se|s|e)$/.test(a)?(e.size.width=u,e.size.height=d):/^(ne)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.top=o.top-s):/^(sw)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.left=o.left-c):((d-h<=0||u-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<d-h?(e.size.height=d,e.position.top=o.top-s):(d=h-t.height,e.size.height=d,e.position.top=o.top+n.height-d),0<u-l?(e.size.width=u,e.position.left=o.left-c):(u=l-t.width,e.size.width=u,e.position.left=o.left+n.width-u))}}),V.ui.resizable,V.widget("ui.dialog",{version:"1.14.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,uiDialogTitleHeadingLevel:0,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V(this.document[0].activeElement).trigger("blur"),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=this.document[0].activeElement;this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus()},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog","aria-modal":this.options.modal?"true":null}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){var e,i,s;this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE?(t.preventDefault(),this.close(t)):t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}});var t=Number.isInteger(this.options.uiDialogTitleHeadingLevel)&&0<this.options.uiDialogTitleHeadingLevel&&this.options.uiDialogTitleHeadingLevel<=6?"h"+this.options.uiDialogTitleHeadingLevel:"span",t=V("<"+t+">").uniqueId().prependTo(this.uiDialogTitlebar);this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i)&&e&&this._makeDraggable(),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")),"modal"===t)&&s.attr("aria-modal",e?"true":null)},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i;this.options.modal&&(i=!0,this._delay(function(){i=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;i||(e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable())}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!0===V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),V.ui.dialog;function rt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.14.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0]||(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),s)||!this.accept.call(this.element[0],i.currentItem||i.element))&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return rt(s.pageY,h,e.proportions().height)&&rt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled)&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(s=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":s&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length)&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t)&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}},!0===V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.14.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.14.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){var t,n,o,a,r,l,h;if(this.dragged=!0,!this.options.disabled)return o=(n=this).options,a=this.opos[0],r=this.opos[1],(l=s.pageX)<a&&(t=l,l=a,a=t),(h=s.pageY)<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(l<i.left||i.right<a||h<i.top||i.bottom<r):"fit"===o.tolerance&&(e=a<i.left&&i.right<l&&r<i.top&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),!t.selected||s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element}))))}),!1},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.14.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),e.hidden?i.prop("hidden",!0):this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&((t=window.getSelection()).removeAllRanges(),t.addRange(this.range))},_documentClick:{mousedown:function(t){!this.isOpen||V(t.target).closest(".ui-selectmenu-menu, #"+CSS.escape(this.ids.button)).length||this.close(t)}},_buttonEvents:{mousedown:function(){var t=window.getSelection();t.rangeCount&&(this.range=t.getRangeAt(0))},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1===t?this.button.css("width",""):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:i.prop("hidden")||t.prop("hidden"),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o))&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0)},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),t=this._valueMin()+t*e,this._trimAlignValue(t)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){if(!arguments.length)return this._value();this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0)},values:function(t,e){var i,s,n;if(1<arguments.length)this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),this._change(null,t);else{if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()}},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){var e,i;return t<=this._valueMin()?this._valueMin():t>=this._valueMax()?this._valueMax():(e=0<this.options.step?this.options.step:1,i=t-(t=(t-this._valueMin())%e),2*Math.abs(t)>=e&&(i+=0<t?e:-e),parseFloat(i.toFixed(5)))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1!==this._start(t,n)))break;return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i))||(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this._storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager)&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),t=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this.dragDirection.vertical,s=this.dragDirection.horizontal;return this.floating&&s?"right"===s&&t||"left"===s&&!t:i&&("down"===i&&e||"up"===i&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i)&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down");(s||this.options.dropOnEmpty)&&(this.currentContainer===this.containers[u]?this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1):(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t;return"relative"===this.cssPosition?{top:(t=this.currentItem.position()).top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}:{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],i=V(i.containment).offset(),e="hidden"!==V(t).css("overflow"),this.containment=[i.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(e?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(e?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,i="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():s?0:i.scrollTop())*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*t}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this._storedStylesheet&&(this._storedStylesheet.remove(),this._storedStylesheet=null),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function O(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.14.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t)},mousewheel:function(t,e){var i=this.document[0].activeElement;if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;e=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),function(){this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=e)}.call(this),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i))):("max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e))},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:O(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:O(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:O(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:O(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:O(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());O(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!0===V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var A;V.ui.spinner,V.widget("ui.tabs",{version:"1.14.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(A=/#.*$/,function(t){var e=t.href.replace(A,""),i=location.href.replace(A,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=decodeURIComponent(location.hash.substring(1));return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(this.document[0].activeElement).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"===t?this._activate(e):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e))},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var r=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n=V(e).uniqueId().attr("id"),o=V(e).closest("li"),a=o.attr("aria-controls");r._isLocal(e)?(s=decodeURIComponent(e.hash).substring(1),i=r.element.find("#"+CSS.escape(s))):(s=o.attr("aria-controls")||V({}).uniqueId()[0].id,(i=r.element.find("#"+s)).length||(i=r._createPanel(s)).insertAfter(r.panels[t-1]||r.tablist),i.attr("aria-live","polite")),i.length&&(r.panels=r.panels.add(i)),a&&o.data("ui-tabs-aria-controls",a),o.attr({"aria-controls":s,"aria-labelledby":n}),i.attr("aria-labelledby",n)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+CSS.escape(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){a.html(t),o._trigger("load",s,r),n(i,e)}).fail(function(t,e){n(t,e)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find("#"+CSS.escape(t))}}),!0===V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),V.ui.tabs,V.widget("ui.tooltip",{version:"1.14.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){e.data("ui-tooltip-open")&&(i&&(i.type=n),s._open(i,e,t))}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,s.is(":hidden")||s.position(a)}i&&((o=this._find(e))?o.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),o=this._tooltip(e),s=o.tooltip,this._addDescribedBy(e,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=V("<div>").html(s.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(V.extend({of:e},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(a.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:s})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding)||(n.closing=!1)):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!0===V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),V.ui.tooltip});                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/jquery/jquery-ui-old.min.js                                               0000644                 00000725471 15266052614 0016665 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.11.4 - 2015-03-11
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);
  i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);
  return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
  },_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
  if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
  f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
  return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;
  this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});                                                                                                                                                                                                       includes/File_manager/lib/main.default.js                                                           0000644                 00000014537 15266052614 0014417 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * elFinder client options and main script for RequireJS
 *
 * Rename "main.default.js" to "main.js" and edit it if you need configure elFInder options or any things. And use that in elfinder.html.
 * e.g. `<script data-main="./main.js" src="./require.js"></script>`
 **/
(function(){
	"use strict";
	var // jQuery and jQueryUI version
		jqver = '3.7.1',
		uiver = '1.13.2',
		
		// Detect language (optional)
		lang = (function() {
			var locq = window.location.search,
				map = {
					'pt' : 'pt_BR',
					'ug' : 'ug_CN',
					'zh' : 'zh_CN'
				},
				full = {
					'zh_tw' : 'zh_TW',
					'zh_cn' : 'zh_CN',
					'fr_ca' : 'fr_CA'
				},
				fullLang, locm, lang;
			if (locq && (locm = locq.match(/lang=([a-zA-Z_-]+)/))) {
				// detection by url query (?lang=xx)
				fullLang = locm[1];
			} else {
				// detection by browser language
				fullLang = (navigator.browserLanguage || navigator.language || navigator.userLanguage || '');
			}
			fullLang = fullLang.replace('-', '_').substr(0,5).toLowerCase();
			if (full[fullLang]) {
				lang = full[fullLang];
			} else {
				lang = (fullLang || 'en').substr(0,2);
				if (map[lang]) {
					lang = map[lang];
				}
			}
			return lang;
		})(),
		
		// Start elFinder (REQUIRED)
		start = function(elFinder, editors, config) {
			// load jQueryUI CSS
			elFinder.prototype.loadCss('//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/themes/smoothness/jquery-ui.css');
			
			$(function() {
				var optEditors = {
						commandsOptions: {
							edit: {
								editors: Array.isArray(editors)? editors : []
							}
						}
					},
					opts = {};
				
				// Interpretation of "elFinderConfig"
				if (config && config.managers) {
					$.each(config.managers, function(id, mOpts) {
						opts = Object.assign(opts, config.defaultOpts || {});
						// editors marges to opts.commandOptions.edit
						try {
							mOpts.commandsOptions.edit.editors = mOpts.commandsOptions.edit.editors.concat(editors || []);
						} catch(e) {
							Object.assign(mOpts, optEditors);
						}
						// Make elFinder
						$('#' + id).elfinder(
							// 1st Arg - options
							$.extend(true, { lang: lang }, opts, mOpts || {}),
							// 2nd Arg - before boot up function
							function(fm, extraObj) {
								// `init` event callback function
								fm.bind('init', function() {
									// Optional for Japanese decoder "encoding-japanese"
									if (fm.lang === 'ja') {
										require(
											[ 'encoding-japanese' ],
											function(Encoding) {
												if (Encoding && Encoding.convert) {
													fm.registRawStringDecoder(function(s) {
														return Encoding.convert(s, {to:'UNICODE',type:'string'});
													});
												}
											}
										);
									}
								});
							}
						);
					});
				} else {
					alert('"elFinderConfig" object is wrong.');
				}
			});
		},
		
		// JavaScript loader (REQUIRED)
		load = function() {
			require(
				[
					'elfinder'
					, 'extras/editors.default.min'               // load text, image editors
					, 'elFinderConfig'
				//	, 'extras/quicklook.googledocs.min'          // optional preview for GoogleApps contents on the GoogleDrive volume
				],
				start,
				function(error) {
					alert(error.message);
				}
			);
		},
		
		// is IE8 or :? for determine the jQuery version to use (optional)
		old = (typeof window.addEventListener === 'undefined' && typeof document.getElementsByClassName === 'undefined')
		       ||
		      (!window.chrome && !document.unqueID && !window.opera && !window.sidebar && 'WebkitAppearance' in document.documentElement.style && document.body.style && typeof document.body.style.webkitFilter === 'undefined');

	// config of RequireJS (REQUIRED)
	require.config({
		baseUrl : 'js',
		paths : {
			'jquery'   : '//cdnjs.cloudflare.com/ajax/libs/jquery/'+(old? '1.12.4' : jqver)+'/jquery.min',
			'jquery-ui': '//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/jquery-ui.min',
			'elfinder' : 'elfinder.min',
			'encoding-japanese': '//cdn.rawgit.com/polygonplanet/encoding.js/1.0.26/encoding.min'
		},
		waitSeconds : 10 // optional
	});

	// check elFinderConfig and fallback
	// This part don't used if you are using elfinder.html, see elfinder.html
	if (! require.defined('elFinderConfig')) {
		define('elFinderConfig', {
			// elFinder options (REQUIRED)
			// Documentation for client options:
			// https://github.com/Studio-42/elFinder/wiki/Client-configuration-options
			defaultOpts : {
				url : 'php/connector.minimal.php' // connector URL (REQUIRED)
				,commandsOptions : {
					edit : {
						extraOptions : {
							// set API key to enable Creative Cloud image editor
							// see https://console.adobe.io/
							creativeCloudApiKey : '',
							// browsing manager URL for CKEditor, TinyMCE
							// uses self location with the empty value
							managerUrl : ''
						}
					}
					,quicklook : {
						// to enable CAD-Files and 3D-Models preview with sharecad.org
						sharecadMimes : ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile'],
						// to enable preview with Google Docs Viewer
						googleDocsMimes : ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf'],
						// to enable preview with Microsoft Office Online Viewer
						// these MIME types override "googleDocsMimes"
						officeOnlineMimes : ['application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
					}
				}
			},
			managers : {
				'elfinder': {},
			}
		});
	}

	// load JavaScripts (REQUIRED)
	load();

})();
                                                                                                                                                                 includes/File_manager/lib/package.json                                                              0000644                 00000000653 15266052614 0013772 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       {
	"name": "elfinder",
	"version": "2.1.66",
	"description": "Open-source file manager for web, written in JavaScript using jQuery and jQuery UI.",
	"author": "Studio-42 (https://github.com/Studio-42/elFinder)",
	"license": "3-clauses BSD",
	"bugs": "https://github.com/Studio-42/elFinder/issues",
	"homepage": "http://elfinder.org/",
	"repository": {
		"type": "git",
		"url": "https://github.com/Studio-42/elFinder.git"
	}
}
                                                                                     includes/File_manager/lib/files/.trash/.gitkeep                                                     0000644                 00000000000 15266052614 0015420 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       includes/File_manager/lib/files/.gitkeep                                                            0000644                 00000000000 15266052614 0014221 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       includes/File_manager/lib/img/progress.gif                                                          0000644                 00000001233 15266052614 0014606 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       GIF89a  õ pÊõ(a8–æTS¬÷N¬à tçQÂhÞ7•ç3Žè*‚ègÃö3�î?™æ5”è3ŒîDžøhÞ`«/ˆÚ…Ëîp°ç;–H©‰ÀínÃø0‰í_¥âg½÷f«äZ±ø>—öjÅôbºìfÂï)yÜpÊø4Žè‚£ËjÎ�¯ÎnÐw”¿}Íø]È.†ëÿÿÿ                                                !ÿNETSCAPE2.0   !ù   ,       [ÀÓj%$O©¤R)p4N�UªZ€ÈCÀÝ>
%¬P
	ŠaXß�DzA_„a¿×Ûé †‡†ƒ‚Ž-(*‘*”’Ž—šœž�›¡A !ù   ,       P`&Vgž¦'®@[<B,?NkÛœ$²Rß-�²Q�GG³\24ƒa1­."V«Ex¿^¤1&7È’£fc¸<¾ö|`ÏçßC !ù   ,       YÀŒp(¬X8È$Òh:›…‡`J}8žO‚4‘ *® MGÃ (…ZírŒ;B$Þ0÷üb.ß4þ‚ƒ‚‡Ž��‹”—™››˜ŸA !ù   ,       b@Ž�cÉ�™Še(L€t*9œXÁ£P*Q¥£ÇC�ÀR"C­}…\¾i‘{ž 2�€€…‡�Ž“•˜š™”Ÿ ¢¥¤¤A ;                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/img/volume_icon_network.svg                                               0000644                 00000031444 15266052615 0017074 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" width="160" height="160" viewBox="0 0 42.33 42.33" id="svg8"><g id="layer1" transform="translate(-48.98 -204.72)"><g id="XMLID_16103_" transform="matrix(1.05625 0 0 1.0371 44.78 200.04)"><ellipse ry="1.9" rx="14.6" cy="43.1" cx="24" id="XMLID_16108_" opacity=".15" fill="#45413c"/><path d="M43.3 27.4c0-2.5-1.5-4.6-3.6-5.6.1-.6.2-1.1.2-1.7a6.8 6.8 0 0 0-9.4-6.3c-.8-4.8-5-8.5-10-8.5-5.6 0-10.2 4.6-10.2 10.2v.7a9.13 9.13 0 0 0-5.5 8.3c0 5 4 9 9 9h23.5c3.3 0 6-2.7 6-6.1z" id="XMLID_16107_" fill="#fff"/><path d="M37.2 29.2H13.7a9.1 9.1 0 0 1-8.8-6.9c-.2.7-.3 1.4-.3 2.1 0 5 4 9 9 9h23.5a6.06 6.06 0 0 0 5.7-8.2c-.8 2.4-3 4-5.6 4z" id="XMLID_16106_" fill="#f0f0f0"/><path d="M43.3 27.4c0-2.5-1.5-4.6-3.6-5.6.1-.6.2-1.1.2-1.7a6.8 6.8 0 0 0-9.4-6.3c-.8-4.8-5-8.5-10-8.5-5.6 0-10.2 4.6-10.2 10.2v.7a9.13 9.13 0 0 0-5.5 8.3c0 5 4 9 9 9h23.5c3.3 0 6-2.7 6-6.1z" class="st4" id="XMLID_16105_" fill="none" stroke="#45413c" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"/><path d="M30.4 13.8a7.68 7.68 0 0 0-4.1 6.5" class="st4" id="XMLID_16104_" fill="none" stroke="#45413c" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"/></g><g id="g3965" transform="matrix(.81344 0 0 .81344 50.86 206.3)" overflow="visible"><g id="Layer_1"><g id="g1182"><path id="path1183" d="M36.05 41h-8.6a1.5 1.5 0 0 0-.73-.64v-8.69h-4.88v8.69a1.5 1.5 0 0 0-.73.64h-8.6v4.88h8.45A1.5 1.5 0 0 0 22.4 47h3.75c.7 0 1.28-.48 1.45-1.12h8.44z" opacity=".2"/><path id="path1184" d="M35.86 40.82h-8.59a1.5 1.5 0 0 0-.74-.64v-8.7h-4.87v8.7a1.5 1.5 0 0 0-.74.64h-8.6v4.87h8.45a1.5 1.5 0 0 0 1.45 1.13h3.75c.7 0 1.28-.48 1.45-1.13h8.44z" opacity=".2"/><path id="path1185" d="M35.67 40.63h-8.59a1.5 1.5 0 0 0-.74-.64V31.3h-4.87v8.69a1.5 1.5 0 0 0-.74.64h-8.59v4.87h8.44a1.5 1.5 0 0 0 1.45 1.13h3.75c.7 0 1.29-.48 1.45-1.13h8.44z" opacity=".2"/><path id="polygon1186" fill="#616161" d="M11.95 40.44v4.88H35.5v-4.88h-.68z"/><linearGradient y2="44.64" x2="23.72" y1="41.11" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_20_"><stop id="stop1188" offset="0" stop-color="#cecedb"/><stop id="stop1189" offset=".19" stop-color="#fff"/><stop id="stop1190" offset=".48" stop-color="#cecedb"/><stop id="stop1191" offset=".75" stop-color="#b3b3c6"/><stop id="stop1192" offset=".99" stop-color="#828282"/></linearGradient><path id="rect1202" fill="url(#XMLID_20_)" d="M12.62 41.11h22.19v3.53H12.62z"/><path id="polygon1203" fill="#616161" d="M21.28 43.96h4.88V31.1h-4.88v.37z"/><linearGradient gradientTransform="rotate(-90 -256.9 586)" y2="868.38" x2="291.57" y1="864.85" x1="291.57" gradientUnits="userSpaceOnUse" id="XMLID_21_"><stop id="stop1205" offset="0" stop-color="#cecedb"/><stop id="stop1206" offset=".19" stop-color="#fff"/><stop id="stop1207" offset=".48" stop-color="#cecedb"/><stop id="stop1208" offset=".75" stop-color="#b3b3c6"/><stop id="stop1209" offset=".99" stop-color="#828282"/></linearGradient><path id="rect1219" fill="url(#XMLID_21_)" d="M21.95 31.48h3.53v12.11h-3.53z"/><linearGradient y2="39.69" x2="23.72" y1="46.44" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_22_"><stop id="stop1221" offset="0" stop-color="#cf0000"/><stop id="stop1222" offset=".99" stop-color="#ff6d00"/></linearGradient><path id="path1226" d="M27.1 44.94c0 .83-.68 1.5-1.5 1.5h-3.76a1.5 1.5 0 0 1-1.5-1.5V41.2c0-.83.68-1.5 1.5-1.5h3.75c.83 0 1.5.67 1.5 1.5z" fill="url(#XMLID_22_)"/><linearGradient y2="49.63" x2="23.72" y1="37.07" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_23_"><stop id="stop1228" offset="0" stop-color="#fff030"/><stop id="stop1229" offset=".99" stop-color="#ffae00"/></linearGradient><path id="path1233" d="M21.84 40.44a.75.75 0 0 0-.75.75v3.75c0 .42.34.75.75.75h3.75c.42 0 .75-.33.75-.75V41.2a.75.75 0 0 0-.75-.75z" fill="url(#XMLID_23_)"/><linearGradient y2="43.82" x2="23.72" y1="41" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_24_"><stop id="stop1235" offset="0" stop-color="#fff"/><stop id="stop1236" offset=".5" stop-color="#ffe3a9"/><stop id="stop1237" offset=".99" stop-color="#ffc957"/></linearGradient><path id="path1241" d="M21.84 41c-.1 0-.18.09-.18.2v3.74c0 .1.08.19.18.19h3.75c.1 0 .2-.08.2-.19V41.2c0-.1-.1-.19-.2-.19z" fill="url(#XMLID_24_)"/></g><path id="path1242" d="M25.25 1.28L12.14 9.87l-.04.02-.05.04-.04.03-.17.2-.02.04-.04.08-.02.04-.03.09-.02.04-.02.08v.05l-.01.1V33.51c0 .44.28.83.7.97l9.76 3.26c.32.1.67.05.94-.15l13.02-9.77c.26-.2.41-.5.41-.82V4.22v-.05-.07l-.01-.06V4l-.02-.03-.02-.08-.02-.06-.03-.07-.04-.06-.04-.07-.04-.05-.04-.05-.02-.02-.03-.04a4.33 4.33 0 0 1-.11-.09l-.06-.03-.07-.05-.07-.03-.06-.02a7 7 0 0 0-.08-.03l-.05-.01-9.67-2.08c-.27-.06-.55 0-.78.15zM11.69 10.53" opacity=".2"/><path id="path1243" d="M36.14 4.2v-.05l-.01-.05v-.02l-.01-.02a.87.87 0 0 0-.05-.13l-.02-.04-.03-.04L36 3.8l-.03-.03a.94.94 0 0 0-.07-.06l-.03-.03a.83.83 0 0 0-.04-.03l-.04-.02h-.01l-.03-.02-.05-.02-.05-.01-.03-.01-9.67-2.08a.66.66 0 0 0-.5.1l-13.1 8.58h-.01l-.02.02-.03.02-.02.02a.71.71 0 0 0-.11.13l-.02.02c0 .02-.02.04-.03.05v.03l-.03.05v.03l-.02.06v.03l-.01.06V33.5c0 .28.18.53.45.62l9.76 3.25c.2.07.43.04.6-.1l13.02-9.76a.66.66 0 0 0 .26-.52V4.22 4.2z" opacity=".2"/><path id="path1244" d="M25.06 1.09l-13.1 8.59-.05.03-.05.03-.03.03-.18.2-.02.04-.04.08-.02.04-.03.09-.01.04-.03.09v.05l-.01.1v22.82c0 .44.28.83.7.98l9.76 3.25c.32.1.68.05.95-.15l13.02-9.77c.25-.19.4-.5.4-.82V4.03v-.05-.06l-.01-.07V3.8c0-.02-.01-.01-.02-.03l-.02-.08-.02-.06a14.21 14.21 0 0 0-.1-.2l-.05-.05-.04-.05-.01-.01-.04-.04-.05-.05-.06-.04-.06-.04-.07-.04-.06-.03-.07-.03-.08-.02-.05-.02L25.84.94c-.27-.05-.55 0-.78.15zM11.5 10.35" opacity=".2"/><path id="path1245" d="M35.95 4v-.04l-.01-.05V3.9l-.01-.02-.01-.05-.02-.04a.34.34 0 0 0-.02-.04l-.02-.04-.03-.04-.02-.04-.03-.03-.03-.03a.33.33 0 0 0-.04-.03l-.03-.03a.83.83 0 0 0-.12-.07l-.05-.02-.04-.01-.03-.01-9.68-2.08a.66.66 0 0 0-.5.1l-13.1 8.58h-.01l-.02.02-.03.02-.02.02a.71.71 0 0 0-.11.13l-.02.02-.02.05-.02.03-.02.05v.03l-.02.06v.09l-.01.02v22.79c0 .28.18.53.45.62l9.76 3.25c.2.07.43.04.6-.1l13.02-9.76a.66.66 0 0 0 .26-.52V4.03v-.02z" opacity=".2"/><linearGradient y2="8.67" x2="14.03" y1="26.92" x1="32.27" gradientUnits="userSpaceOnUse" id="XMLID_25_"><stop id="stop1247" offset="0" stop-color="#585868"/><stop id="stop1248" offset="1" stop-color="#494949"/></linearGradient><path id="path1252" d="M24.87.77l-13.1 8.6-.05.02-.04.04-.04.03-.17.2-.03.04-.04.08-.02.04-.03.08-.01.04-.02.1-.01.04-.01.1V33.01c0 .44.28.83.7.97l9.77 3.26c.32.1.67.05.94-.15l13.02-9.77c.26-.2.41-.5.41-.82V3.7v-.04-.07l-.02-.07V3.5l-.01-.04-.03-.07-.02-.06-.03-.07L36 3.2l-.04-.07-.04-.05-.04-.05a.3.3 0 0 0-.02-.02l-.04-.04a3.78 3.78 0 0 1-.16-.13l-.08-.04-.06-.03-.07-.03-.07-.02-.06-.01L25.65.63c-.27-.06-.55 0-.78.14zM11.32 10.03" fill="url(#XMLID_25_)"/><linearGradient y2="28.05" x2="33.41" y1="9.81" x1="15.17" gradientUnits="userSpaceOnUse" id="XMLID_26_"><stop id="stop1254" offset="0" stop-color="#7d7d99"/><stop id="stop1255" offset="1" stop-color="#494949"/></linearGradient><path id="path1259" d="M35.76 3.7v-.05-.05l-.01-.02v-.02l-.02-.05-.02-.04a.34.34 0 0 0-.02-.05l-.02-.03-.02-.04-.03-.04-.03-.03-.03-.04-.03-.03-.04-.02-.04-.03-.04-.02-.04-.02-.04-.02-.05-.02h-.03L25.57 1a.66.66 0 0 0-.5.09l-13.1 8.59h-.01l-.02.01-.03.03-.02.02a.71.71 0 0 0-.11.13l-.01.02-.03.05-.02.03-.01.05-.01.03-.02.05V33c0 .29.17.54.44.63l9.76 3.25c.2.07.43.03.6-.1l13.02-9.76a.66.66 0 0 0 .26-.53V3.72v-.03z" fill="url(#XMLID_26_)"/><radialGradient gradientUnits="userSpaceOnUse" gradientTransform="translate(19.5 19.5) scale(.1875)" fy="47.28" fx="105.2" r="139.09" cy="47.28" cx="105.2" id="XMLID_27_"><stop id="stop1261" offset="0" stop-color="#fff"/><stop id="stop1262" offset=".28" stop-color="#cecedb"/><stop id="stop1263" offset=".64" stop-color="#bdbdcf"/><stop id="stop1264" offset="1" stop-color="#9a9ab1"/></radialGradient><path id="polygon1272" fill="url(#XMLID_27_)" d="M12.33 10.22l9.76 3.26L35.11 3.7V26.5l-13.02 9.76-9.76-3.25z"/><linearGradient y2="3.36" x2="23.72" y1="13.22" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_28_"><stop id="stop1274" offset="0" stop-color="#cecedb"/><stop id="stop1275" offset="1" stop-color="#eee"/></linearGradient><path id="polygon1279" fill="url(#XMLID_28_)" d="M25.44 1.64l-13.11 8.58 9.76 3.26L35.11 3.7z"/><linearGradient y2="38.24" x2="22.17" y1="16.69" x1="15.04" gradientUnits="userSpaceOnUse" id="XMLID_29_"><stop id="stop1281" offset="0" stop-color="#fff"/><stop id="stop1282" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1286" fill="url(#XMLID_29_)" d="M12.33 33l9.76 3.26V13.48l-9.76-3.26z"/><linearGradient y2="28.48" x2="17.78" y1="35.2" x1="16.64" gradientUnits="userSpaceOnUse" id="XMLID_30_"><stop id="stop1288" offset="0" stop-color="#fff"/><stop id="stop1289" offset="1" stop-color="#bdbdcf"/></linearGradient><path id="polygon1293" fill="url(#XMLID_30_)" d="M12.33 27.4V33l9.76 3.26V30.5z"/><linearGradient y2="16.36" x2="20.09" y1="16.36" x1="13.81" gradientUnits="userSpaceOnUse" id="XMLID_31_"><stop id="stop1295" offset="0" stop-color="#7d7d99"/><stop id="stop1296" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1300" fill="url(#XMLID_31_)" d="M13.8 16.16l6.3 2.1v-1.71l-6.3-2.1z"/><linearGradient y2="18.78" x2="20.09" y1="18.78" x1="13.81" gradientUnits="userSpaceOnUse" id="XMLID_32_"><stop id="stop1302" offset="0" stop-color="#7d7d99"/><stop id="stop1303" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1307" fill="url(#XMLID_32_)" d="M13.8 18.6l6.3 2.09v-1.71l-6.3-2.1z"/><linearGradient y2="22.93" x2="18.67" y1="18.9" x1="14.63" gradientUnits="userSpaceOnUse" id="XMLID_33_"><stop id="stop1309" offset="0" stop-color="#7d7d99"/><stop id="stop1310" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1314" fill="url(#XMLID_33_)" d="M13.8 21.02l6.3 2.1V21.4l-6.3-2.1z"/><g id="g1315"><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.59" x2="271.32" y1="478.92" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_34_"><stop id="stop1317" offset=".01" stop-color="#fff"/><stop id="stop1318" offset="1" stop-color="#b6b6b6"/></linearGradient><path id="path1322" d="M19.78 33.41c-.46-.12-.81.1-.81.5s.35.8.8.93l.49.13c.45.12.8-.1.8-.5s-.35-.8-.8-.93z" fill="url(#XMLID_34_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.72" x2="271.32" y1="478.86" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_35_"><stop id="stop1324" offset=".01" stop-color="#b6b6b6"/><stop id="stop1325" offset=".37" stop-color="#9d9d9d"/><stop id="stop1326" offset=".74" stop-color="#898989"/><stop id="stop1327" offset="1" stop-color="#828282"/></linearGradient><path id="path1331" d="M19.78 33.6c-.35-.1-.63.07-.63.36s.28.6.63.69l.48.13c.34.09.63-.07.63-.36 0-.28-.29-.6-.63-.69z" fill="url(#XMLID_35_)"/><linearGradient gradientTransform="matrix(-.9659 -.2588 0 .7765 -840.35 -606.85)" y2="528.08" x2="-890.74" y1="529.26" x1="-890.74" gradientUnits="userSpaceOnUse" id="XMLID_36_"><stop id="stop1333" offset=".01" stop-color="#9f6"/><stop id="stop1334" offset=".24" stop-color="#68de56"/><stop id="stop1335" offset=".48" stop-color="#3bc147"/><stop id="stop1336" offset=".7" stop-color="#1bab3c"/><stop id="stop1337" offset=".88" stop-color="#079e35"/><stop id="stop1338" offset="1" stop-color="#093"/></linearGradient><path id="path1342" d="M20.83 34.4c0 .26-.26.4-.57.31l-.48-.13c-.32-.08-.57-.35-.57-.6 0-.26.25-.4.57-.31l.48.12c.31.09.57.36.57.62z" fill="url(#XMLID_36_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.65" x2="271.34" y1="478.52" x1="271.31" gradientUnits="userSpaceOnUse" id="XMLID_37_"><stop id="stop1344" offset=".01" stop-color="#3c3"/><stop id="stop1345" offset=".36" stop-color="#1bb433"/><stop id="stop1346" offset=".74" stop-color="#07a033"/><stop id="stop1347" offset="1" stop-color="#093"/></linearGradient><path id="path1351" d="M19.78 33.8c-.25-.07-.46.03-.46.22s.21.4.46.47l.48.13c.24.06.45-.04.45-.23s-.2-.4-.45-.47z" fill="url(#XMLID_37_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="478.35" x2="271.32" y1="477.78" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_38_"><stop id="stop1353" offset="0" stop-color="#fff"/><stop id="stop1354" offset=".09" stop-color="#e8f7d6"/><stop id="stop1355" offset=".23" stop-color="#c8ed9e"/><stop id="stop1356" offset=".36" stop-color="#ade46d"/><stop id="stop1357" offset=".5" stop-color="#97dc46"/><stop id="stop1358" offset=".63" stop-color="#85d627"/><stop id="stop1359" offset=".76" stop-color="#79d212"/><stop id="stop1360" offset=".89" stop-color="#72d004"/><stop id="stop1361" offset="1" stop-color="#6fcf00"/></linearGradient><path id="path1365" d="M19.76 33.71c-.2-.05-.36.04-.36.15 0 .12.16.3.36.35l.52.14c.2.05.35-.04.35-.15 0-.12-.15-.3-.35-.35z" fill="url(#XMLID_38_)"/></g><path id="_x3C_Slice_x3E_" fill="none" d="M0 48V0h48v48"/></g></g></g><style id="style3713">.st4{fill:none;stroke:#45413c;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style></svg>                                                                                                                                                                                                                            includes/File_manager/lib/img/icons-big.svg                                                         0000644                 00000063532 15266052615 0014661 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1800" viewBox="0 0 480 18000"><defs><linearGradient id="a"><stop offset="0" stop-color="#85b1d9"/><stop offset="1" stop-color="#dff0fe"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" y2="12.5" x2="20.2" y1="35.7" x1="20.2" id="f" xlink:href="#a" gradientTransform="translate(-1.2 27) scale(1.23846)"/><linearGradient y2="7.4" x2="21.9" y1="35.4" x1="21.7" gradientUnits="userSpaceOnUse" id="e" xlink:href="#a" gradientTransform="matrix(1.27105 0 0 1.27105 -1.2 -24.2)"/><filter id="g" color-interpolation-filters="sRGB"><feColorMatrix values="1 0 0 -0.2 -0 0 1 0 -0.2 -0 0 0 1 -0.2 -0 0 0 0 1 0"/></filter><filter id="o" color-interpolation-filters="sRGB"><feColorMatrix type="hueRotate" values="203" result="color1"/><feColorMatrix type="saturate" values=".7" result="color2"/></filter><filter id="n" color-interpolation-filters="sRGB"><feColorMatrix type="hueRotate" values="135" result="color1"/><feColorMatrix type="saturate" values=".7" result="color2"/></filter><linearGradient id="b"><stop offset="0" stop-color="#18a303"/><stop offset="1" stop-color="#43c330"/></linearGradient><linearGradient id="p" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" y1="991.7" y2="977"><stop offset="0" stop-color="#535353"/><stop offset="1" stop-color="#7e7e7e"/></linearGradient><linearGradient id="q" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#c" y1="991.7" y2="977"/><linearGradient id="c"><stop offset="0" stop-color="#a33e03"/><stop offset="1" stop-color="#d36118"/></linearGradient><linearGradient id="r" gradientUnits="userSpaceOnUse" x1="41" x2="5" xlink:href="#c" y1="46" y2="2"/><linearGradient id="s" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#b" y1="991.7" y2="977"/><linearGradient id="t" gradientUnits="userSpaceOnUse" x1="41" x2="7" xlink:href="#b" y1="47" y2="3"/><linearGradient id="u" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#d" y1="991.7" y2="977"/><linearGradient id="d"><stop offset="0" stop-color="#0369a3"/><stop offset="1" stop-color="#1c99e0"/></linearGradient><linearGradient id="v" gradientTransform="matrix(1.55551 0 0 1.66668 -316 1319)" gradientUnits="userSpaceOnUse" x1="230.1" x2="204.4" xlink:href="#d" y1="-762.6" y2="-791.4"/></defs><g transform="translate(0 -8369.4) scale(9.93789)"><path d="M42 854.6v35.2H6V843h24.4z" fill="#fff"/><path d="M30.2 843.4l11.3 11.2V889H6.8v-45.5h23.5m.6-1.3H5.3v48.3H43v-36.3z" fill="#788b9c"/><path d="M42 854.6v.4H30v-12h.4z" fill="#eef0f2"/><path d="M30.9 844.2l10 10h-10v-10m0-2h-1.3v13.5H43v-1.3z" fill="#788b9c"/><path word-spacing="0" letter-spacing="0" font-size="8.5" font-weight="400" aria-label="?" d="M21 880h4v4h-4zm3.8-2.2h-3.6v-2.5q0-1.6.5-2.6t2.3-2.4l1.7-1.4q1-.8 1.6-1.6.5-.7.5-1.5 0-1.4-1.3-2.2-1.3-1-3.3-1-1.5 0-3.3.6-1.7.6-3.6 1.6v-3q1.9-.8 3.7-1.3 1.9-.4 3.8-.4 3.6 0 5.7 1.5 2.2 1.6 2.2 4 0 1.3-.7 2.4-.7 1-2.4 2.4l-1.8 1.4-1.3 1q-.4.5-.5.9l-.2.8v1.3z" font-family="sans-serif" fill="navy"/><path d="M.6 937.2v-39.5h13l4 3.8h30.1v35.7z" fill="#b6dcfe"/><path d="M13.5 898.3l3.8 3.8h29.8v34.4H1.3v-38.2h12m.7-1.2H0v40.7h48.3v-36.9H17.8z" fill="#4788c7"/><path d="M.7 21v-33.1h13.6l3.8-2.6h29.6V21z" fill="url(#e)" transform="translate(0 916.2)"/><path d="M47 902.1v34.4H1.4v-31.8h13l.4-.2 3.5-2.4h28.9m1.2-1.2H17.8l-3.8 2.6H0v34.2h48.3z" fill="#4788c7"/><path d="M.6 987.5V949h12.8l3.7 3.8h25.7v34.7z" fill="#b6dcfe"/><path d="M13 949.6l3.8 3.8h25.5v33.5h-41v-37.3H13m.6-1.2H0v39.7h43.3v-36H17.4z" fill="#4788c7"/><path d="M.8 71l4.7-26h13.4l3.7-2.5h25L42.9 71z" fill="url(#f)" transform="translate(0 916.5)"/><path d="M46.9 959.6l-4.5 27.2H1.5L6 962h13l.3-.2 3.3-2.2h24.2m1.5-1.4h-26l-3.7 2.5H5L0 988h43.3z" fill="#4788c7"/><path d="M6 1040.8v-47h24.5l11.6 11.7v35.1z" fill="#fff"/><path d="M30.2 994.5l11.3 11v34.5H6.8v-45.6h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#4788c7"/><path d="M30 1006v-12h.5l11.6 11.6v.4z" fill="#dff0fe"/><path d="M30.8 995.1l10 10h-10v-10m0-2h-1.3v13.6h13.4v-1.3z" fill="#4788c7"/><path stroke-miterlimit="10" d="M15.3 1015.3h1.5v6m6.6-.6c-.7 0-1.3-.7-1.3-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .7-.6 1.3-1.4 1.3zm8 0c-.7 0-1.3-.7-1.3-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .7-.6 1.3-1.4 1.3zm0 4h1.5v6m-8.1-.6c-.8 0-1.4-.6-1.4-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .8-.6 1.4-1.3 1.4zm-8 0c-.9 0-1.5-.6-1.5-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .8-.6 1.4-1.3 1.4z" fill="none" stroke="#4788c7" stroke-width="1.3"/><g id="k"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#dff2fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#4788c7"/><path d="M27.5 17h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5zm-4 3h-11a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h11c.3 0 .5.2.5.5s-.2.5-.5.5zm4 3h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5zm-4 3h-11a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h11c.3 0 .5.2.5.5s-.2.5-.5.5zm4 3h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5z" transform="matrix(1.34766 0 0 1.34167 -2.8 1042)" fill="#4788c7"/></g><path d="M6 1094.5h24.5l11.7 11.7v35.2H6z" fill="#fff"/><path d="M30.2 1095.2l11.3 11.1v34.4H6.8V1095h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#2ea26c"/><path d="M30.1 1094.5h.4l11.7 11.7v.4h-12z" fill="#e8f8f1"/><path d="M30.8 1095.7l10.1 10.1h-10v-10m0-2h-1.4v13.5H43v-1.3z" fill="#2ea26c"/><g transform="matrix(1.34166 0 0 1.34166 -2.8 1093.8)" filter="url(#g)"><path d="M28 29v-3l-5-4.8-3 2.8 4.6 5z" fill="#79efa8"/><circle cx="26" cy="17" r="2" fill="#b5ffc9"/><path d="M26 29H12v-4l5-5z" fill="#b5ffc9"/></g><path d="M6 1191.8v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 1145.6l11.3 11.1v34.3H6.8v-45.5h23.5m.6-1.5H5.3v48.3H43v-36.2z" fill="#7bad2a"/><path d="M42.2 1157h-12v-12.2h.3l11.7 11.7z" fill="#f2f9e7"/><path d="M30.8 1146l10.2 10.2H31v-10.1m0-2h-1.5v13.6H43v-1.4z" fill="#7bad2a"/><path d="M24.8 1177.9v-12.7c3.4 0 5.3 1.3 5.3 1.3v2.7s-2.4-1.4-4.7-1.4" fill="#c9e69a"/><path d="M25.4 1177.9h-1.3v-13.4h.7c3.7 0 5.6 1.5 5.7 1.5h.3v4.2l-1-.5s-2.4-1.2-4.4-1.2zm0-10.7c1.5 0 3.1.5 4 .9v-1.2c-.5-.3-1.8-1-4-1z" fill="#7bad2a"/><g transform="matrix(1.34166 0 0 1.34166 -2.8 1143)"><circle cx="18" cy="26" r="2.5" fill="#c4e490"/><path d="M18 24a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2m0-1a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z" fill="#7bad2a"/></g><path d="M30.5 1195l11.7 11.7v35.2H6V1195z" fill="#fff"/><path d="M30.2 1195.8l11.3 11.2v34.2H6.8v-45.4h23.5m.6-1.3H5.3v48.2H43v-36.2z" fill="#788b9c"/><path d="M30.5 1195l11.7 11.7v.4h-12v-12z" fill="#eef0f2"/><path d="M30.8 1196.3l10.1 10.1h-10v-10.1m0-2h-1.4v13.5H43v-1.3z" fill="#788b9c"/><path d="M18.8 1231.8l14.8-8.3-14.8-8.4z" fill="#8bb7f0"/><g><path d="M6 1443.4v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 1397.1l11.3 11v34.5H6.8v-45.7h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#4788c7"/><path d="M30.1 1408.5v-12h.4l11.7 11.6v.4z" fill="#dff0fe"/><path d="M30.8 1397.6l10.1 10h-10v-10m0-2h-1.4v13.6H43v-1.3z" fill="#4788c7"/><path d="M36.7 1426.3a12.5 12.5 0 0 1-25 0c0-6.8 5.6-12.4 12.5-12.4 7 0 12.5 5.6 12.5 12.4z" fill="#c2e8ff"/><path d="M31.5 1436l-.4-1.2a8 8 0 0 1-.6-1.8v-.5c0-.4-.2-.9-.6-1.3l-.6-.4h-.2c-.5-.3-1-.3-1.4-.3-.8 0-1.2 0-1.6-.6v-1.1l.3-.6.3-.6.4-.9.5-1.3.1-.6v-.3l.6-.3h.1l.1-.2c.1 0 .3-.1.3-.4v-.4l.1-.2 1-1a30 30 0 0 0 1.4-1.3v-.5c0-.1-.2-.3-.4-.3a3 3 0 0 0-.4-.1l-.3-.2v-.1l.4-.7.5-.8.3-.3c.1-.3.3-.5.5-.6a1 1 0 0 1 .8 0 12.4 12.4 0 0 1-1 19.3z" fill="#bae0bd"/><path d="M32.4 1417.4a12 12 0 0 1 3.9 8.9c0 3.7-1.6 7.1-4.5 9.5a2 2 0 0 1-.3-1v-.2c-.4-.6-.5-1-.6-1.7v-.4c-.2-.4-.3-1-.7-1.5-.2-.3-.6-.5-.8-.5h-.2l-1.5-.4c-.8 0-1 0-1.3-.3V1429l.3-.6.3-.6.4-.8.6-1.4V1424.7l.5-.2.2-.1c.1-.1.4-.3.4-.8v-.4l1-1 1-1c.3 0 .4-.2.5-.4v-.7a1 1 0 0 0-.6-.5l-.4-.1.7-1.3.3-.3.4-.5h.4m0-.7h-.5c-.4.2-.7.8-1 1.1l-1 1.5c0 .2-.3.5 0 .6h.2l.7.4c.1 0 .3.2.1.3v.2l-2.3 2-.3.6s.2 0 .2.3l-.3.3-.7.4c-.2.3 0 .7-.2 1 0 .8-.6 1.3-.9 2l-.7 1.4c0 .6 0 1 .2 1.4.7 1 2 .5 3 1 .3 0 .6 0 .7.3.5.5.5 1.2.6 1.6l.6 1.9c.1.7.4 1.4.6 2l.3-.2a12.9 12.9 0 0 0 1-19.9h-.3z" fill="#5e9c76"/><path d="M24.3 1419.3l-.1-1.2.1-.7c.1-.4.2-.8.1-1.3l-.1-1.2v-.3h-1.1v-.4l.2-.4a12.3 12.3 0 0 1 5 .7l-.6 1.1v.2c-.2.5-.5 1-.8 1.1l-1 1-.8.6-.7.6a2.7 2.7 0 0 0-.3.2z" fill="#bae0bd"/><path d="M24.1 1414.1c1.3 0 2.6.2 4 .6l-.5.8v.2a2 2 0 0 1-.7 1l-1 1-.8.5-.6.6v-.7l.1-.6c.1-.4.3-.8.2-1.4l-.2-1.3v-.4l-.5-.2h-.4.4m0-.8h-.8l-.4.8c-.1.7.5.6 1 .7l.2 1.3c.2.7-.3 1.2-.3 2 0 .3 0 1.2.3 1.5h.2l.5-.3 1.3-1 1.2-1 1-1.5c0-.3.5-1 .4-1.6a13 13 0 0 0-4.6-.9z" fill="#5e9c76"/><path d="M20.4 1438.4a12.5 12.5 0 0 1-2.2-1v-.5l-.2-.6-.2-.8a18.8 18.8 0 0 0-.6-1.5c-.2-.5-.5-1-.5-1.5v-.5c0-.5 0-1-.3-1.7h2.9l.3.1c.3.1.7.2.9.4v.3l.3.5c.6.7 1.3.8 2 1l.6.2c.1 0 .2 0 .2.3.2.4 0 1 0 1.1l-.2.3c0 .4-.2.8-.4 1l-.8.5-.8.9-.4.5h-.1v.2l-.5.7zm-5-8.8l-.7-.3c-.3 0-.6-.2-.8-.3-1-.6-1.7-1.5-2-2.2 0-.2-.3-.3-.4-.4 0-3.5 1.4-6.7 3.8-9a12 12 0 0 1 3.6-.8h.7c.4.2.8.4 1 .7.3.3.7.6.7 1H20l-.6-.6a1 1 0 0 0-.4 0c-1 0-2.3 1.8-2.4 2.5a2 2 0 0 0 0 1.4c.2.3.5.5.8.6.5 0 1-.4 1.5-1l.5-.2.4-.3.2-.1h.2c.9 0 1.5.8 1.7 1.6v.5c-.3.6-1.4 1-2.4 1.4h-.7c-1 .4-1.8 1.4-1.8 2.4l-.1.8a1 1 0 0 0-.6-.5c-.1-.2-.2-.2-.5-.2l-.4-.1-.6-.2a1 1 0 0 0-.5.2c-.3.2-.8.8-.8 1.4 0 .2 0 .5.3.7l.4.2h.6v.1a57.3 57.3 0 0 0 .5.7z" fill="#bae0bd"/><path d="M18.9 1417h.6l1 .6.3.4h-.5l-.5-.5H19.5l-.4-.2c-1.3 0-2.6 2-2.8 2.7-.1.5-.1 1.3.2 1.8.2.4.5.6 1 .7.6 0 1-.4 1.7-1l.5-.2.3-.3.2-.1c.7 0 1.3.7 1.5 1.4v.2c-.2.4-1 1-2.1 1.3h-.4a1 1 0 0 0-.5 0c-1 .4-2 1.5-2 2.6v.1a1 1 0 0 0-.8-.2l-.3-.1a2 2 0 0 0-.7-.2c-.3 0-.5 0-.7.2v.1c-.4.2-.9.9-.9 1.6v.2c-.5-.5-1-1-1.2-1.5a7 7 0 0 0-.2-.3 12 12 0 0 1 3.6-8.8c1.3-.3 2.5-.6 3.4-.6m.3 13.8a16.5 16.5 0 0 0 1 .3v.2l.2.5v.2c.8.7 1.6 1 2.2 1l.7.2v1h-.1l-.1.3-.3.9-.7.4h-.2l-1 1-.3.5-.2.2-.2.5-1.8-.7v-.4l-.1-.5v-.2l-.3-.7-.2-.8a8 8 0 0 0-.4-.8 3 3 0 0 1-.4-1.3v-.5l-.1-1.3H19m-.2-14.5c-1 0-2.5.2-3.8.6-2.4 2.5-3.9 5.8-3.9 9.4v.2l.3.4c.4 1 1.3 1.8 2.2 2.4.6.4 1.7.4 2.3 1.1.5.6.4 1.3.4 2 0 1 .6 1.7.9 2.5l.4 1.4.2 1.2c.8.6 1.7.9 2.5 1 .2 0 .8-.7.8-1 .4-.3.7-1 1.2-1.2l.8-.5c.3-.3.5-1 .6-1.4.2-.3.3-1 .2-1.4-.1-.2-.2-.4-.5-.5-.8-.3-1.7-.3-2.4-1l-.3-1-1.5-.5h-3c-.4-.2-.7-.7-1-1.2 0 0 0-.4-.3-.4H14.1v-.5c0-.4.2-.8.4-1.1l.4-.1 1 .2.4.2c.4.1.5.7.5 1.1v.3c0 .2.2.2.3.2l.3-2.2c0-1 .9-1.8 1.6-2h.7c1-.3 3-1.2 2.7-2.4-.3-1-1-2-2.1-2h-.4l-.7.6c-.4.3-1.3 1-1.7 1-.8 0-.8-1-.6-1.5 0-.5 1.3-2.3 2-2.3h.3l.6.6c.3.3.7.3 1.2.3l.4-.3v-.3c0-.4-.3-.8-.6-1-.3-.4-.7-.7-1.2-.8a3 3 0 0 0-.8 0z" fill="#5e9c76"/><g><path d="M24.1 1414.1a12.2 12.2 0 1 1 0 24.4 12.2 12.2 0 0 1 0-24.4m0-.7a12.9 12.9 0 1 0 0 25.8 12.9 12.9 0 0 0 0-25.8z" fill="#7496c4"/></g></g><g><path d="M6 1292.5v-47h24.5l11.7 11.6v35.3z" fill="#fff"/><path d="M30.2 1246.2l11.3 11v34.5H6.8V1246h23.5m.6-1.3H5.3v48.3H43v-36.3z" fill="#4788c7"/><path d="M30.1 1257.5v-12h.4l11.7 11.6v.4z" fill="#dff0fe"/><path d="M30.8 1246.7l10.1 10h-10v-10m0-2h-1.4v13.6H43v-1.4z" fill="#4788c7"/><path d="M34.2 1266.2H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .4-.3.7-.7.7z" fill="purple"/><path d="M28.8 1270.2H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h15c.2 0 .5.3.5.6 0 .4-.3.7-.6.7z" fill="#f55"/><path d="M34.2 1274.3H14a.7.7 0 0 1-.7-.8c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .5-.3.8-.7.8z" fill="green"/><path d="M28.8 1278.3H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h15c.2 0 .5.3.5.6 0 .4-.3.7-.6.7z" fill="olive"/><path d="M34.2 1282.3H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .4-.3.7-.7.7z" fill="#500"/></g><g><path d="M42.2 1307.4v35.2H6v-47h24.5z" fill="#fff"/><path d="M30.2 1296.3l11.3 11.3v34.4H6.8v-45.7h23.5m.6-1.3H5.3v48.3H43V1307z" fill="#c74343"/><path d="M42.2 1307.4v.4h-12v-12.1h.3z" fill="#ffd9d9"/><path d="M30.8 1296.9L41 1307H31v-10.2m0-2h-1.5v13.5H43v-1.3zm-16 40.7c-1 0-1.7-.6-1.7-1.3 0-1.9 2.4-3.3 5.6-4.4a38.2 38.2 0 0 0 3.5-8c-.8-2-1.2-3.7-1.2-5 0-.7 0-1.4.4-1.8.2-.5.8-.9 1.4-.9.6 0 1.1.3 1.4.8.2.4.2 1 .2 1.6 0 1.2-.4 3-.9 5a26.2 26.2 0 0 0 3.7 6.3 13 13 0 0 1 5.6.3c1.3.4 1.6 1.2 1.6 1.7s-.3 2-2.6 2a7 7 0 0 1-5.2-2.8c-2.4.3-5 .8-7.2 1.5-1.2 3-3 5-4.7 5zm-.3-1.3h.2c.7 0 1.9-1 2.9-2.5-1.9.8-3 1.7-3 2.5zm14.2-5a5 5 0 0 0 3.4 1.5c1.2 0 1.2-.4 1.2-.5 0-.3-.5-.4-.6-.5-1-.4-2.4-.6-4-.4zm-5.7-5.5a40.3 40.3 0 0 1-2.4 5.4c1.7-.4 3.4-.8 5-1a35.2 35.2 0 0 1-2.6-4.4zm0-8.3c-.2 0-.3 0-.3.2l-.1 1c0 .8 0 1.8.4 2.8.2-1 .4-2 .4-2.9 0-.7-.2-1-.2-1h-.2z" fill="#c74343"/></g><g id="l"><path d="M6.2 474v-46.7h24.4l11.6 11.6v35z" fill="#fff" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.2 439.3v-12h.4l11.6 11.6v.4z" fill="#ffd5d5" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.3 428l11.2 11v34.2H7v-45.4h23.4m.6-1.3H5.5v48H43v-36z" fill="#e64a19" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.9 428.5l10 10H31v-10m0-2h-1.4V440H43v-1.3zM12.8 449l14.5-5.3 7.9 2v22.4l-8 2-14.4-5.3 14.5 2v-19.1l-9.3 2v13.1l-5.2 2z" fill="#e64a19" transform="translate(-.3 916.1) scale(1.00625)"/></g><g id="h"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#dff0fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#4788c7"/><path d="M25.5 19.5l2 4-2 4m-11-8l-2 4 2 4m8-11l-5 14" transform="matrix(1.34766 0 0 1.34167 -2.8 1444.5)" stroke-miterlimit="10" fill="none" stroke="#4788c7" stroke-linecap="round"/></g><g id="j" transform="matrix(1.01074 0 0 1.00625 -.3 916)"><path d="M6.5 2.5h27v35h-27z" transform="translate(-2.5 974) scale(1.33333)" fill="#ffeea3"/><path d="M33 3v34H7V3h26m1-1H6v36h28z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M20 30.5c-2 0-3.5-1.6-3.5-3.5 0-.6.4-2.5 1-5.3.1-.7.7-1.2 1.4-1.2h2.2c.7 0 1.3.5 1.4 1.2l1 5.3c0 2-1.6 3.5-3.5 3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#fffae0"/><path d="M21 21c.5 0 1 .3 1 .8 1 4 1 5 1 5.2a3 3 0 0 1-6 0c0-.2 0-1.1 1-5.2a1 1 0 0 1 1-.8h2m0-1h-2a2 2 0 0 0-2 1.6c-.4 1.8-1 4.6-1 5.4a4 4 0 0 0 8 0c0-.8-.6-3.6-1-5.4a2 2 0 0 0-2-1.6z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="20" cy="27" r="1.5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 19H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="18.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 20H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="19.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 17H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="16.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 18H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="17.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 15H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="14.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 16H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="15.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 13H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="12.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 14H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="13.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 11H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="10.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 12H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="11.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 9H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="8.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 10H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="9.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 7H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="6.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 8H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="7.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 5H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="4.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 6H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="5.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 4H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="3.5" r=".5" fill="#ba9b48" transform="translate(-2.5 974) scale(1.33333)"/></g><g><path d="M6 2147.6v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 2101.4l11.3 11.2v34.3H6.8v-45.4h23.5m.6-1.4H5.3v48.2H43V2112z" fill="#f44336"/><path d="M30.1 2112.7v-12h.4l11.7 11.6v.4z" fill="#fde4e3"/><path d="M30.8 2101.9L41 2112H31v-10m0-2h-1.5v13.4H43v-1.4z" fill="#f44336"/><g><path d="M11 2121a2.9 3 0 0 1 3-2.9h20.2a2.9 3 0 0 1 3 2.9v20.4a2.9 3 0 0 1-2.9 2.9H14a2.9 3 0 0 1-3-3z" fill="#f44336"/><path d="M13.2 2120.2v22H35v-22zm12.4 7.5H22v2.6h3.3v1.7H22v4.3h-2.1V2126h5.7zm3 8.6h-1.9V2126h2z" fill="#210403"/></g></g><g><path d="M22.7 2186v-35.2h17l8 8.7v26.5z" fill="#fff"/><path d="M39.5 2151.3l7.8 8.4v25.8H23.2v-34.2h16.3m.4-1H22.2v36.2h26.1v-27z" fill="#4788c7"/><path d="M39.4 2159.8v-9.1h.3l8 8.8v.3z" fill="#dff0fe"/><path d="M39.9 2151.7l7 7.6h-7v-7.6m0-1.4h-1v10.1h9.3v-1z" fill="#4788c7"/><path d="M12 2191.5v-35.3h17.1l8 8.8v26.4z" fill="#fff"/><path d="M29 2156.7l7.7 8.5v25.8H12.6v-34.3h16.3m.4-1H11.6v36.2h26v-27.1z" fill="#4788c7"/><path d="M28.8 2165.3v-9.1h.2l8 8.8v.3z" fill="#dff0fe"/><path d="M29.2 2157l7 7.8h-7v-7.7m0-1.4h-.9v10.1h9.3v-1z" fill="#4788c7"/><g><path d="M.5 2198v-35.2h17l8 8.8v26.4z" fill="#fff"/><path d="M17.3 2163.3l7.7 8.5v25.8H.9v-34.3h16.4m.4-1H0v36.3h26v-27.2z" fill="#4788c7"/><path d="M17.2 2172v-9.2h.3l8 8.8v.3z" fill="#dff0fe"/><path d="M17.7 2163.8l7 7.6h-7v-7.6m0-1.4h-1v10H26v-1z" fill="#4788c7"/></g></g><g id="i"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#dff0fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#4788c7"/><path d="M2.5 3.5h35v33h-35z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#fff"/><path d="M37 4v32H3V4h34m1-1H2v34h36z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#4788c7"/><path d="M3 4h34v5H3z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#98ccfd"/><path d="M14.6 24.6c.5 1.1 1.3 1.9 2.2 1.9 2.1 0 3.2-2 3.2-4.5s-1.2-4.5-3.2-4.5c-1 0-1.7.8-2.2 2m10.8 5.1c-.5 1.1-1.3 1.9-2.2 1.9-2.1 0-3.2-2-3.2-4.5s1.2-4.5 3.2-4.5c1 0 1.7.8 2.2 2m3.1 9a20.6 20.6 0 0 0 0-13m-17 0a20.6 20.6 0 0 0 0 13" stroke-miterlimit="10" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="none" stroke="#4788c7" stroke-linecap="round"/></g><use height="100%" width="100%" transform="translate(0 402.5)" xlink:href="#h"/><use height="100%" width="100%" transform="translate(0 50.3)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 100.6)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 151)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 201.2)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 251.6)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 301.9)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 50.3)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 100.6)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 151)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 1157.2)" xlink:href="#k"/><g transform="translate(0 -201.3)"><g transform="matrix(1.07692 0 0 1.07692 -2.2 -191.4)" id="m"><use transform="translate(2 1205.6) scale(.92857)" height="100%" width="100%" xlink:href="#l"/><path fill="#fff" stroke-width="1.1" d="M11.3 2469.7h26.2v28H11.3z"/></g><path d="M36.5 2474.2H24.9v20.3h11.6c.4 0 .7-.3.7-.7V2475c0-.4-.3-.7-.7-.7z" fill="#ff8a65"/><g fill="#fbe9e7"><path d="M24.1 2488h10.2v1.5H24.1zM24.1 2491h10.2v1.4H24.1zM28.5 2477.8a4.4 4.4 0 1 0 4.4 4.4h-4.4z"/><path d="M30 2476.4v4.3h4.3c0-2.4-2-4.3-4.3-4.3z"/></g><path fill="#e64a19" d="M26.3 2497.5l-15.2-3v-20.3l15.2-3z"/><path d="M19 2479.3h-3.6v10.2h2.2v-3.5h1.1c1.2 0 2.2-.4 3-1 .6-.6 1-1.5 1-2.5 0-2.1-1.3-3.2-3.8-3.2zm-.5 5h-.9v-3.3h1c1.1 0 1.7.6 1.7 1.6s-.6 1.6-1.8 1.6z" fill="#fff"/></g><g transform="translate(0 -201.3)"><use xlink:href="#m" width="100%" height="100%" transform="translate(0 50.3)" fill="none" filter="url(#n)"/><path d="M36.5 2524.5H24.9v20.4h11.6c.4 0 .7-.4.7-.8v-18.9c0-.4-.3-.7-.7-.7z" fill="#4caf50"/><path d="M30 2528.1h5v2.2h-5zM30 2535.4h5v2.2h-5zM30 2539h5v2.2h-5zM30 2531.8h5v2.2h-5zM24.9 2528.1h3.6v2.2H25zM24.9 2535.4h3.6v2.2H25zM24.9 2539h3.6v2.2H25zM24.9 2531.8h3.6v2.2H25z" fill="#fff"/><path d="M26.3 2547.8l-15.2-3v-20.3l15.2-2.9z" fill="#2e7d32"/><path d="M20.6 2539.8l-1.7-3.3-.2-.7-.3.7-1.8 3.3H14l3.2-5.1-3-5.1H17l1.4 3 .3.9.4-.9 1.6-3h2.5l-3 5 3.1 5.2h-2.7z" fill="#fff"/></g><g transform="translate(0 -201.3)"><use transform="translate(0 100.6)" height="100%" width="100%" xlink:href="#m" filter="url(#o)"/><path d="M36.5 2574.8H24.9v20.4h11.6c.4 0 .7-.4.7-.8v-18.9c0-.4-.3-.7-.7-.7z" fill="#2196f3"/><path d="M24.9 2578.5H35v1.4H24.9zM24.9 2581.4H35v1.4H24.9zM24.9 2584.3H35v1.4H24.9zM24.9 2587.2H35v1.4H24.9zM24.9 2590H35v1.5H24.9z" fill="#fff"/><path d="M26.3 2598l-15.2-2.8v-20.4l15.2-2.9z" fill="#0d47a1"/><path d="M22 2590h-1.9l-1.3-6.4-.1-1.2-.2 1.2-1.3 6.5h-2l-2.2-10.2h2l1.1 6.8.1 1.2.2-1.2 1.4-6.8h2l1.2 6.8.2 1.1v-1.1l1.2-6.8h1.8z" fill="#fff"/></g><g><path d="M6 2449.5v-47h24.6l11.7 11.7v35.3z" fill="#fff"/><path d="M30.3 2403.2l11.4 11.3v34.3h-35v-45.6h23.6m.6-1.3H5.3v48.3H43v-36.3z" fill="#ff5722"/><path d="M30.2 2414.6v-12h.4l11.7 11.6v.4z" fill="#ffe8e1"/><path d="M30.9 2403.7L41 2414H31v-10.2m0-1.8h-1.4v13.4H43v-1.4zM11 2422.9a3 3 0 0 1 3-3h20.3a3 3 0 0 1 3 3v20.3a3 3 0 0 1-3 3H14a3 3 0 0 1-3-3z" fill="#ff5722"/><path d="M13.2 2422.1v21.9h21.9V2422zm10.7 16l-.5-2h-2.9l-.5 2h-2.2l3.2-10.3h1.9l3.3 10.3zm5.2 0h-2v-7.6h2zm-.2-8.9a1 1 0 0 1-.8.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .3 0 .5-.3.7z" fill="#1c0802"/><path d="M21 2434.3h2l-1-3.7z" fill="#1c0802"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#p)" transform="translate(0 2452.2) scale(1.00625)"/><path d="M7 2455.2v42.3h34.3v-26.2l-16.1-16.1z" fill="#fff"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#q)" transform="translate(0 2502.5) scale(1.00625)"/><path d="M7 2505.5v42.3h34.3v-26.2l-16.1-16.1z" fill="#fff"/><path d="M13 20a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h22a2 2 0 0 0 2-2V22a2 2 0 0 0-2-2zm0 2h22v16H13zm2 3v2h18v-2zm2 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm3 0v2h13v-2zm-3 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm3 0v2h13v-2z" fill="url(#r)" transform="translate(0 2502.5) scale(1.00625)"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#s)" transform="translate(0 2552.8) scale(1.00625)"/><path d="M7 2555.8v42.3h34.3v-26.2l-16.1-16z" fill="#fff"/><path d="M12 19v21h13v1h11V30h-2V19h-1zm1 1h6v3h-6zm7 0h6v3h-6zm7 0h6v3h-6zm-14 4h6v3h-6zm7 0h6v3h-6zm7 0h6v3h-6zm-14 4h6v3h-6zm7 0h6v2h-1v1h-5zm7 0h6v2h-6zm-1 3h9v9h-9v-8zm-13 1h6v3h-6zm7 0h5v3h-5zm-7 4h6v3h-6zm7 0h5v3h-5z" fill="url(#t)" transform="translate(0 2552.8) scale(1.00625)"/><g fill="#43c330"><path d="M26.2 2588h3v5h-3zM29.2 2585h3v8h-3zM32.2 2590h3v3h-3z"/></g><g fill="#ccf4c6"><path d="M27.2 2589h1v4h-1zM30.2 2586h1v7h-1zM33.2 2591h1v2h-1z"/></g></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#u)" transform="translate(0 2603.1) scale(1.00625)"/><path d="M7 2606.1v42.3h34.3v-26.2l-16.1-16z" fill="#fff"/><path d="M12 18v2h8v-2zm10 0v10h14V18zm1 1h12v8-1l-2.5-3-2.5 2-3.5-4.5L23 26v-7zm-11 3v2h8v-2zm0 4v2h8v-2zm0 4v2h24v-2zm0 4v2h24v-2zm0 4v2h18v-2z" fill="url(#v)" transform="translate(0 2603.1) scale(1.00625)"/></g></g></svg>                                                                                                                                                                      includes/File_manager/lib/img/volume_icon_ftp.svg                                                   0000644                 00000026101 15266052615 0016166 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48" overflow="visible"><path d="M36.66 41.52h-8.89a1.55 1.52 0 0 0-.75-.65v-8.8h-5.05v8.81a1.55 1.52 0 0 0-.75.64h-8.9v4.94h8.74a1.55 1.52 0 0 0 1.49 1.14h3.88c.72 0 1.32-.49 1.5-1.14h8.72v-4.94z" opacity=".2" stroke-width="1.02"/><path d="M36.47 41.34h-8.9a1.55 1.52 0 0 0-.75-.65v-8.81h-5.04v8.81a1.55 1.52 0 0 0-.76.65h-8.9v4.93h8.74a1.55 1.52 0 0 0 1.5 1.15h3.88c.72 0 1.32-.5 1.5-1.15h8.73z" opacity=".2" stroke-width="1.02"/><path d="M36.27 41.15h-8.9a1.55 1.52 0 0 0-.75-.65v-8.8H21.6v8.8a1.55 1.52 0 0 0-.77.65h-8.88v4.93h8.73a1.55 1.52 0 0 0 1.5 1.14h3.87c.73 0 1.34-.48 1.5-1.14h8.73z" opacity=".2" stroke-width="1.02"/><path d="M35.38 40.95H11.74v4.95H36.1v-4.95z" fill="#616161" stroke-width="1.02"/><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="23.72" y1="41.11" x2="23.72" y2="44.64" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cecedb"/><stop offset=".19" stop-color="#fff"/><stop offset=".48" stop-color="#cecedb"/><stop offset=".75" stop-color="#b3b3c6"/><stop offset=".99" stop-color="#828282"/></linearGradient><path d="M12.44 41.63h22.95v3.58H12.44z" fill="url(#a)" stroke-width="1.02"/><path d="M21.4 31.88v12.64h5.04V31.5h-5.05z" fill="#616161" stroke-width="1.02"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="291.57" y1="864.85" x2="291.57" y2="868.38" gradientTransform="matrix(0 -1.01271 1.0339 0 -872.08 333.28)"><stop offset="0" stop-color="#cecedb"/><stop offset=".19" stop-color="#fff"/><stop offset=".48" stop-color="#cecedb"/><stop offset=".75" stop-color="#b3b3c6"/><stop offset=".99" stop-color="#828282"/></linearGradient><path d="M22.08 31.88h3.65v12.26h-3.65z" fill="url(#b)" stroke-width="1.02"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="23.72" y1="46.44" x2="23.72" y2="39.69" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cf0000"/><stop offset=".99" stop-color="#ff6d00"/></linearGradient><path d="M27.4 45.51c0 .84-.7 1.52-1.54 1.52h-3.89a1.55 1.52 0 0 1-1.55-1.52v-3.79c0-.84.7-1.52 1.55-1.52h3.88c.86 0 1.55.68 1.55 1.52v3.8z" fill="url(#c)" stroke-width="1.02"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="23.72" y1="37.07" x2="23.72" y2="49.63" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff030"/><stop offset=".99" stop-color="#ffae00"/></linearGradient><path d="M21.97 40.95a.78.76 0 0 0-.78.76v3.8c0 .43.36.76.78.76h3.88c.43 0 .77-.33.77-.76v-3.79a.78.76 0 0 0-.77-.76h-3.88z" fill="url(#d)" stroke-width="1.02"/><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="23.72" y1="41" x2="23.72" y2="43.82" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset=".5" stop-color="#ffe3a9"/><stop offset=".99" stop-color="#ffc957"/></linearGradient><path d="M21.97 41.52c-.1 0-.19.1-.19.2v3.8c0 .1.09.18.19.18h3.88c.1 0 .2-.08.2-.19v-3.79c0-.1-.1-.19-.2-.19h-3.88z" fill="url(#e)" stroke-width="1.02"/><path d="M25.5 1.3L11.94 10l-.04.02-.05.04-.04.03-.18.2-.02.04-.04.08-.02.04-.03.1-.02.03-.02.08v.05l-.02.1v23.13c0 .44.3.84.72.98l10.1 3.3c.33.1.7.05.97-.15l13.46-9.9c.27-.2.43-.5.43-.83V4.15l-.01-.06v-.04l-.02-.03-.02-.08-.02-.06-.05-.07-.03-.06-.04-.07-.04-.05-.04-.06-.02-.02-.03-.04-.05-.04-.07-.05-.06-.03-.07-.05-.07-.03-.07-.02a7.24 7.09 0 0 0-.08-.03h-.05l-10-2.12c-.28-.06-.57 0-.8.16zm-14.02 9.36" opacity=".2" stroke-width="1.02"/><path d="M36.75 4.25V4.13l-.02-.02a.9.88 0 0 0-.05-.13l-.02-.04-.03-.04-.02-.05-.03-.03-.03-.03-.04-.03-.03-.03a.86.84 0 0 0-.05-.03l-.04-.02-.04-.02-.05-.02-.05-.01-.03-.01-10-2.11a.68.67 0 0 0-.52.1L12.16 10.3h-.01l-.02.02-.03.02-.02.02a.73.72 0 0 0-.12.13l-.02.02c0 .02-.02.04-.03.05v.03l-.03.05v.03l-.02.06v.04l-.01.06v23.1c0 .28.18.53.46.62l10.1 3.3c.2.07.44.04.61-.1l13.47-9.89a.68.67 0 0 0 .26-.53V4.25z" opacity=".2" stroke-width="1.02"/><path d="M25.3 1.1L11.76 9.8l-.06.02-.05.04-.03.03-.19.2-.02.05-.04.08-.02.04-.03.09v.04l-.04.1v.04l-.01.1v23.11c0 .45.29.84.72 1l10.1 3.29c.32.1.7.05.98-.15l13.46-9.9c.26-.2.41-.5.41-.83V3.85l-.03-.03-.02-.08-.02-.06-.03-.07-.03-.07-.06-.06-.04-.06-.04-.05-.05-.05-.05-.05-.06-.04-.07-.04-.07-.04-.06-.03-.07-.03a7.24 7.09 0 0 0-.08-.02l-.06-.02-10-2.1c-.27-.05-.56 0-.8.15zm-14.01 9.38" opacity=".2" stroke-width="1.02"/><path d="M36.56 4.05v-.04l-.01-.05v-.01l-.01-.02-.01-.05-.02-.04a.35.34 0 0 0-.02-.04l-.02-.04-.04-.04-.02-.04-.03-.03-.03-.03-.04-.04-.03-.03a.86.84 0 0 0-.12-.07l-.05-.02h-.05l-.03-.02-10-2.1a.68.67 0 0 0-.52.1l-13.55 8.69-.03.02-.03.02-.02.02a.73.72 0 0 0-.11.13l-.03.02-.02.05-.02.03-.02.05v.03l-.02.06V33.75c0 .29.18.54.46.63l10.09 3.3c.2.06.44.03.62-.1l13.46-9.9a.68.67 0 0 0 .27-.52V4.06z" opacity=".2" stroke-width="1.02"/><linearGradient id="f" gradientUnits="userSpaceOnUse" x1="32.27" y1="26.92" x2="14.03" y2="8.67" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#585868"/><stop offset="1" stop-color="#494949"/></linearGradient><path d="M25.1.78l-13.54 8.7-.05.03-.05.04-.04.03-.17.2-.03.04-.04.08-.02.04-.04.09v.04l-.03.1v.04l-.02.1v23.12c0 .45.3.84.73.98l10.1 3.3c.33.1.69.05.97-.15l13.46-9.9c.27-.2.42-.5.42-.82V3.64l-.02-.08V3.5l-.04-.07-.02-.06a14.7 14.4 0 0 0-.06-.13l-.04-.07-.04-.05-.04-.05-.02-.02-.05-.04-.05-.04-.06-.05-.06-.04-.07-.04-.07-.03-.07-.04-.07-.02h-.06L25.9.63c-.28-.06-.57 0-.8.14zm-14 9.38" fill="url(#f)" stroke-width="1.02"/><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="15.17" y1="9.81" x2="33.41" y2="28.05" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#494949"/></linearGradient><path d="M36.36 3.75V3.6l-.03-.06-.02-.04a.35.34 0 0 0-.02-.05l-.02-.03-.02-.04-.03-.04-.03-.03c0-.02-.02-.03-.03-.04a1.13 1.1 0 0 0-.04-.03l-.04-.02-.04-.03-.04-.02-.04-.02-.04-.02-.05-.01-.04-.01-10-2.1a.68.67 0 0 0-.52.08L11.77 9.8h-.01l-.03.01-.03.03-.02.02a.73.72 0 0 0-.11.14l-.01.02-.03.05-.02.03-.01.05-.01.03-.02.05v23.19c0 .3.17.55.45.64l10.1 3.29c.2.07.44.03.61-.1l13.46-9.89a.68.67 0 0 0 .27-.52z" fill="url(#g)" stroke-width="1.02"/><radialGradient id="h" cx="105.2" cy="47.28" r="139.09" fx="105.2" fy="47.28" gradientTransform="matrix(.19386 0 0 .18988 19.55 19.75)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset=".28" stop-color="#cecedb"/><stop offset=".64" stop-color="#bdbdcf"/><stop offset="1" stop-color="#9a9ab1"/></radialGradient><path d="M12.14 10.35l10.09 3.3 13.46-9.9v23.09l-13.46 9.88-10.1-3.29z" fill="url(#h)" stroke-width="1.02"/><linearGradient id="i" gradientUnits="userSpaceOnUse" x1="23.72" y1="13.22" x2="23.72" y2="3.36" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cecedb"/><stop offset="1" stop-color="#eee"/></linearGradient><path d="M25.7 1.66l-13.56 8.69 10.09 3.3 13.46-9.9z" fill="url(#i)" stroke-width="1.02"/><linearGradient id="j" gradientUnits="userSpaceOnUse" x1="15.04" y1="16.69" x2="22.17" y2="38.24" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M12.14 33.42l10.09 3.3V13.65l-10.1-3.3z" fill="url(#j)" stroke-width="1.02"/><linearGradient id="k" gradientUnits="userSpaceOnUse" x1="16.64" y1="35.2" x2="17.78" y2="28.48" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#bdbdcf"/></linearGradient><path d="M12.14 27.75v5.67l10.09 3.3V30.9z" fill="url(#k)" stroke-width="1.02"/><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="13.81" y1="16.36" x2="20.09" y2="16.36" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 16.37l6.51 2.12v-1.73l-6.51-2.13z" fill="url(#l)" stroke-width="1.02"/><linearGradient id="m" gradientUnits="userSpaceOnUse" x1="13.81" y1="18.78" x2="20.09" y2="18.78" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 18.84l6.51 2.11v-1.74l-6.51-2.13z" fill="url(#m)" stroke-width="1.02"/><linearGradient id="n" gradientUnits="userSpaceOnUse" x1="14.63" y1="18.9" x2="18.67" y2="22.93" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 21.29l6.51 2.12v-1.74l-6.51-2.12z" fill="url(#n)" stroke-width="1.02"/><linearGradient id="o" gradientUnits="userSpaceOnUse" x1="271.32" y1="478.92" x2="271.32" y2="477.59" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#fff"/><stop offset="1" stop-color="#b6b6b6"/></linearGradient><path d="M19.84 33.83c-.48-.12-.84.1-.84.51 0 .4.36.81.83.94l.5.13c.47.13.83-.1.83-.5s-.36-.81-.82-.94z" fill="url(#o)" stroke-width="1.02"/><linearGradient id="p" gradientUnits="userSpaceOnUse" x1="271.32" y1="478.86" x2="271.32" y2="477.72" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#b6b6b6"/><stop offset=".37" stop-color="#9d9d9d"/><stop offset=".74" stop-color="#898989"/><stop offset="1" stop-color="#828282"/></linearGradient><path d="M19.84 34.03c-.36-.1-.65.07-.65.36 0 .3.29.6.65.7l.5.13c.35.1.65-.07.65-.36 0-.3-.3-.61-.65-.7z" fill="url(#p)" stroke-width="1.02"/><linearGradient id="q" gradientUnits="userSpaceOnUse" x1="-890.74" y1="529.26" x2="-890.74" y2="528.08" gradientTransform="matrix(-.99864 -.26209 0 .78637 -869.45 -614.56)"><stop offset=".01" stop-color="#9f6"/><stop offset=".24" stop-color="#68de56"/><stop offset=".48" stop-color="#3bc147"/><stop offset=".7" stop-color="#1bab3c"/><stop offset=".88" stop-color="#079e35"/><stop offset="1" stop-color="#093"/></linearGradient><path d="M20.93 34.84c0 .26-.27.4-.6.31l-.49-.13c-.33-.08-.59-.35-.59-.6 0-.27.26-.41.59-.32l.5.12c.32.1.59.36.59.63z" fill="url(#q)" stroke-width="1.02"/><linearGradient id="r" gradientUnits="userSpaceOnUse" x1="271.31" y1="478.52" x2="271.34" y2="477.65" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#3c3"/><stop offset=".36" stop-color="#1bb433"/><stop offset=".74" stop-color="#07a033"/><stop offset="1" stop-color="#093"/></linearGradient><path d="M19.84 34.23c-.26-.07-.48.03-.48.22 0 .2.22.4.48.48l.5.13c.24.06.46-.04.46-.23 0-.2-.2-.4-.46-.48l-.5-.13z" fill="url(#r)" stroke-width="1.02"/><linearGradient id="s" gradientUnits="userSpaceOnUse" x1="271.32" y1="477.78" x2="271.32" y2="478.35" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset="0" stop-color="#fff"/><stop offset=".09" stop-color="#e8f7d6"/><stop offset=".23" stop-color="#c8ed9e"/><stop offset=".36" stop-color="#ade46d"/><stop offset=".5" stop-color="#97dc46"/><stop offset=".63" stop-color="#85d627"/><stop offset=".76" stop-color="#79d212"/><stop offset=".89" stop-color="#72d004"/><stop offset="1" stop-color="#6fcf00"/></linearGradient><path d="M19.82 34.14c-.2-.05-.37.04-.37.15 0 .11.16.3.37.35l.54.15c.2.05.36-.04.36-.16 0-.1-.16-.3-.36-.35z" fill="url(#s)" stroke-width="1.02"/><path d="M-.61 48.61V0h49.63v48.61" fill="none" stroke-width="1.02"/></svg>                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/img/edit_codemirror.png                                                   0000644                 00000001020 15266052615 0016126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ×IDATxÚ�“ŒœQE±SE5ŸÖ¶Í©mÛ¶ÝpMãšamÄµmÛ¸û½±t~ãžç('J¨®E…j«k~ååä‚weàÝØ‹8©6ÓÁ£"a«Õ:òÿÿÿÐÇ—/_`1™‘Ÿ èc}ÈpMm]ôÐÁCÞÁ‡Ÿ?bû¶íèÖ¹âUÜÁ€aú ºtê|oßÞ}Æ�›7‘’”¬kbö
'%$>Œÿ;räÂqñâEPA¿%Í\‚³gÏâ÷ïßˆ³Éìs	ß¾}Ã‡ ùúõ+2ÒÒ©)²MÄ‚�Þ»g/4ÿþENV6	T¯ˆ¯_¿Æ�~ý1rØ¤¦¦ý¡&L AlÄ‚k×¯cfiŽš‚…†\ˆVQNœÕ
Å¨Ñ£±¿ÿxÜ·—FÍCnbŠÅK ;Æd4áèÑ£~²-[¶üÏñ¸9f!n�]d“Ë/EÆúø5aÖŒ™Œ£¼´=Ýõ˜£.5›‚‹uØvÜ¡ãÁø%ÈHHBœR]üú@¯�'Ož 3#œ\¦*ßqîQé§†NGÏ¬|ôÎ*@¢Š´§M�j[DÉif•Öcc]_L-©#©rYë.�Û……Õ«VÙJÊ–t�'…<D×täEyÐ¥ß{¯ŸbÖœ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/img/edit_zohooffice.png                                                   0000644                 00000000714 15266052616 0016126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         (-S   ÃPLTEGpL LY LY LY LY LY LY JY LY LY LY LY LY LY LY LY LY LY LY LY LY KYI�O DZ¨âBQX JYMY,sSdU€¾H g^ ¤ja¢L<‚Q	TX‰ÇF›ÖD¥àB GZ®çAiªJ žT }VPY°ëA_¢L ÛC[W lW �Va£L XY –U_X0�X \[,tSx¸IgU�ÌFBˆPp°JB‡Q ¥kÏ0”   tRNS N½Z�"àùäà%ñXµì‡+É.YR   £IDATÓuÏÇ‚0`@@"v]Jb,ôþaïåýŸJ*\œÓÎÚá84º\QºÃ’øí} vº�h±*w0uLC�£5ô&¨ÔšÍ ²‰N¤€öV« `ñRJXÕ°ü$pšpv	hA†?�i`ß¼xG*õHBãîçî¡4"VêùÍÅXAìWìÐ{bøß¸1¦W�†�½H˜ÊÕõçc%ªàj    IEND®B`‚                                                    includes/File_manager/lib/img/logo.png                                                              0000644                 00000011435 15266052616 0013730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   d   `   Ü­'p  4PLTEGpL#)"&##'!'"*'!"'''%"("!'"!$ "  !!    ## # %" !!" $"##  !&!  %!#   !ÿÿÿ)"îîíççæêêéåååºÓëííìììëïïïèèèððð  " óóò+$ ñòñ"#%¶Íá¨ÅßËÚä´ÍáÈÙå�·ÜªÆà÷÷÷ÄÖã$[WU!õõõAHP“¹Þtsr'')þþþ»ººÎÞé«Èã±ÊàÀÚòÖÖÕ–»Þ&	58;^\[Ÿž�¦ÄàúúúÛÛÚ¹Ñäœ¾ßURQ­ÉàjhhÅÅÅ¢ÂßÁÀÀÌÌË=DLMWa+,.áááB?=/03ÐÐÏÉÈÇž°ÀŠˆ‡–½ãš˜—©¨§/)%²²±HFE5/+�Áãpnm842ÄØè“’’HPW„ƒ‚>85¤£¢KLN}|6=C'!`t†¢Ää�Ž�¾ÒâzxxOJGwƒ�œ»×ÞÞÝ”¦·¨¿ÓÀÕæ··¶°Ìædbah~“Œ¡µºÒç¯®­Ufv½ÏÜ‚Ÿº†¦Åz˜µ¥³½}� Ž°Ò‰˜¤§¹È¾½½MZgW`g¾×ï´ÉÙp‹¦lv€³ÂÌ~Š”akrs}‡@JT•¬Â–¢¬mz‡er~ÉÐÕ!»¥?§   &tRNS ¸ófw
óUqÒ;¦›øÞÈ€K)0ñ#’ÁèA°_éÝø‰k0bËç  rIDAThÞÍšWÛÇ5Æ»Æc‹š"f(ŽäÚŠK$r%ˆ�Ý`ìšØb‹“›ÞÛM[ïË½sf@g“gÞ»k½WŒËócÿ÷9ûì³AAG¶àô“Aÿ´…dùÇ!g¤ÇBNGFF¦Äÿƒ�ìüc'ŽKçMù§þ7ã�ˆM9ðìt”FzŸ„¥œø/§“°èpÿ‡ç0
Ò³:å}’lÊ=›ú»Œ¬DD…%û=<™AC:x®tïGÉ©öŒæe§„ýV€ÓÄb³>ÍOùÔ„‚ôÊíÙô“XiGeÏ‚KudÌÉdL¯ÿôÑ¬
fO¢PÌ©tDSË%&oV'×Uòw—MGÕ,,#ß^È�3¬_$ù ­“¹ð“ÇgLÙtr¹\Òê‰>¢'!Án~ÚPRRòOÜ[za§c¢ñ<ÈË£žQTÊ!du*îhŒSÑXñ¥��Qò±KLýqxVhvb‚!HÑqJórƒ“s—ä"`ºzSä‘)™Hñ›G£¤áž�–—ˆ`  LVm�€�¼w`É>Ú2X	¢Ê¾ˆ#%›s	bÙ‡*šQRR5!KŒFh 4¥u‹†ˆt•:�q“vD.¨Îð¦ÍqQ¿DÄ§c*äSÉž5<-ï#±aÕâ…À±%:Š!’G“}RkL¿¢œÈÆd]ß¼n44€ï3|«®z²g:«‚Î@grÆvkµQ¿Ê$pZ•——”È·•—å%�:É}ˆr—"7å‚À‡¥+ì=­<ÏO)Y‰XñÌGÈ¨ƒ–)» °á›XìcèÝ!"y»]¬YâëDôg”3iÔ´*/¯*)oø8A ufª ñóž`„‡CËÕQ)2L¤C¤yCV¹¼‘£žù¨“‡e8­JÊ«ªÊ«žšq8jñ
ì£Ù'±IAÎI�Ý\�NÎÀÈu›özMÖGÃÉ$bÃ§r
QRþÂ £õ)zZR³eä˜�‚„JMCSÕ³Ã6‰Žá�„ç…Š
kYšñÙþ¹¡
ZyÕß¤LWœ„‚-îœvd‰ã…äÏ›4
í˜§^ÈÀø^é´É‡%¬D±áf9Eù@€P“Ë	+¯*Ù¥§ ¯ö ”™û0WRÈ6]½4ø°àdV‚¬ó¤|4€!õ]½œÊ
(Ÿ +¤KÎ† Óh·z$\¦IŒ®ÜŸ¤˜d¬ø3Të%Qi8\·Á'UU=šPƒG}œ�ü|Åh½œÁñ·"b~–R‚òpeq§õç „ìf‘!­ƒ³•þ�üÒq"Ÿm	ýù‚ÏT¹_Þ^¼}³HärÖéú JzÃÓÛU·?#˜X©ìàøA4¦^!R?ë[#�#‰AqoÃ|EU�ÐëC=ñh£êÝ	W¼Ð¢�Ú”ˆØ1×§&RJzR`ŸÒ±â¿o/n<ºB –ùÖ`ñ
pï›N¹v¢Õšæb¾ÅbÔq,+äYrRcBƒs´cS™K²°1¶ælß `‹0»�®Wv¸â=ž“Â¤5õ¡r�¿IœC
éòì®mØtüÁÈ¹õZ0F†Ÿx´¸±³IJ�…ƒÜ¥ã·×NUoÊMÞWmí@%yÁrR|àu’äâââ;(Ø¾Q‚½ ¼›?–z@
å¢n�DÈ¸¨P'‡"‚¥h6gÁ]Pölcqc­HÌìæí�—fõ&3ó_ãÝ‘ Ð/rŸt\ï/DÆ±@5L6„¨7å;K0õÄÍÏ] Fâ8NŠ™yÒ(ñg´;ý$ŸP_€*”
Á¥w‹WßuÊ˜1‚“Ñ5bÙª1©tðDl†t¨—M‘û4ìí+>$55Ý[3ÿxpucc
†è•]Kõ|H,ºÕaGA[6Æ˜¢Õ�¶ex'ÕW›’˜A9u6:ÃÄ^Ó«^l\ØøÀŒD&W9ûfôà¤rÆÈ x �MïM…BI�'?“Y…‡Ä% $®/Ú3±ùåU–`„ËÉaZ]ÝnIÌØDBïâÐÂ3Òíƒ¬.Œæ¥‡°2±²v“aë.<ØŒ˜é†CWöLO.õëà›ž1±Å¡�€˜¨”<(§Þ]yÙ¬cGdšX=±Vöà*Ó. {àáƒQ[wgdÍÐK;E¾PƒrA@èTf
è®`öÚHÓ#_~p¡ì€]ð
¦7ô€1Q‡²ÔýæûÊ‡†f|Ì Î°Œt¡#-t¾œ—vˆ(W¸Žèxö¶‹={PÐ®® `Êq0"¦Ù°²þ¶©©éüúq©Î3¡œ„®ªµ¾-l@Bë7žwš±ëÆbä§C@Á »�f‡£³4ÏÝlz{ÚÛ¦Cé,Œ±ˆ³}ä“
_êwpiÈ°†qtŽIÀß”•]†Vvõ2Ë®­¿¸Q–7åˆµÔý²é¼ÏšvÄ8ˆK�ƒ `¨;†æ½µ…«›
Ja¯&78=42æ4<@ÇŠ»^FÙå²²µÏ—˜ÖÙ…+•fP¨ÁnoV>Ûg Ê�RK+‡³Iµ"O(´hö‚Âå¬Ön-O™‰¡A!iøÚ�²±²”m„Á>mÃG€ü›¥seÆù·ë=`wwá3BOÞçÓKS¡àG äÛ:ê§'‡2‚RýÚ}È¸¿£’&‡ë™ÖÛÝÊ1ê	Pk¶ù;Ó@¹Ñ<Îî¶	 dÚ+…b@÷\‘Î6«7¯_¾víÚå²×Åö¢¦Í	&ßRú‚iúÞL='= "ÚõM¯«œÇ0�@ÉÎ‹ qíòúœr+ ƒSO(À:´k~�OÍµà×¢¨A4¬ñAD ™äÚµÆõ9Â^ ÒNÀš®®Z¹ãYiž¿Þ"Š:,H O2Tsëríþ›br\~ÒAð×6¯øÅäsó ðpï2BÈàž\ÓLˆ@cr)úzŸ‚ì`$îrÔ2mia“ÏïÂí`®N7O°—ÍD/‡Ãsã#Ýpv�·øf×°W.pþ‚ókp(8èTBñÊý‹Ðî?3ûÏáRÂíp“��»$+(MÏ”pf;qÂ!€ŸØáõd>ß) ÝÖ…%j¥Hã‚â“Ts×)Jã×¯o°ìR—ÇÁŠ¤æpçå·Œeâ.3˜3©TˆPTh›2yWü”Mˆthòr¢ƒãÀšƒ]2|›våbãýF–]üãÞ³	PÉ ^æÒ×e>_šÖ;K«�#è	f0Šì­Åj”!…›šã'öòpx´Ø°sÿ�‹�ì�ÆûßaùEƒÝk(½ôõ|SÈÃvÌ¥.¸/(�Z`H¡e/î}"È@Ey©ìšÑüµñ�€Ö¸CU_¤…ËÒÜ,¾ñlíëÚÊ¼yÆw-‰´sÁ�Ü%_ÜM¯¸DàÉeµã0µy'0åz'UGŠ	G%ÜQ–Šš›	™²¹Ù½ ï…32åtöŽÒ1Ñ,wS^÷{gÆHÃö½ÆÆ?ý­ñŽ¯^Q.A
Ç6à˜™ñÂÍ˜#°2f”k¥õj/¤Þ{†rBY§ìðlL¯žÛþzï:Ó cg¿¶'<<zq¶êZé6;AvµÓâ€�^Co3ÒP´àUµ&:’Ù1ˆ?›€©ð¢¹Îý­äõ½?ÿ¼Ç,º	×f+#H¦Ý8i.D}�Õe-»ŠrùÓ.E0«ÞÎÊNÀ½JEÒ&+~Öx}_,ººÃ«wèìÖºj!HÂ\¿7$ˆ´sÈ¤qyûO¸6ÿÒ+èÔ¹¸ØØßyäáŸ×ïî°BˆšÄ	·evÜ:¾d7(e2ÙV� e×ªPr™OxÜÇüÁ]Hý¡ç@xî±O(ªsjRöc¥’�‰qÒ¾‹òP¶�ø?‘÷åhéÇÁŠ[\ô×ÝëwÙb©/µÝ{öE… °!‚é›|.êo�ßžÍ [t
žÔwî¶Ýý‹}j„Üë$"Kˆ<+u‚u-
xh µ+M�ÖläÄbˆúËA±Š!w[š©KDØ©S.´Y}FAA X'�«à üêÜ€©Lox¼ƒ³fV'à>Å‘r˜Cõ»Æ­µ.­¶ejX€`ðzÆZ¤#µƒ=¼Wù�»E Çl©­“J+}Ž}(˜G4ó}|žE=ygB3r´£{Äé@Œã˜úF[[%–L©Ô3Äz[¤ÙÉêHÌ+ÀDökPs–nHDGÄl §©ÜÏoµÝ‚3KfŸw“^±ÚÚžÓG_mtfoE;5Ìò…×;–äÍ¿ñ©�aIˆê=`@±È�h_éi±À³‡Þ‰ /X]"“i�Çß7ÔÓrü§]"ÐYyÄºòÅ×ÜÒÁ&DñÀx‚ø]ùþ�–!¿`ïêœJüYÛ¶<ž·]i{Oq —2-8ž¨;+ÚÚ*¼hR)Ë?Î€Ì·ŒM0<á†ïÂn—{rë
€ÐÛaŸ±×.b�g·èå/&FÆ�Ëû“bhžÏð„Ï.hÏzûö®;€ìa1¤E¤.ÿ[WÚþ‚]ID�€ê¯Ú™×(4®É°äü¬€ïÐFÚ�DôÛý¤â!IE6¸:+®\©�HD¬‡õÑ*4£ËK»6&äïãHfêaw3˜XŒXSs¥»Hå]†Oúkú·©™EMŽ È%��Þìèæñ˜ÁvÔv½/_%…zË$V?¬€”šþ'nj`õ�þš+�Ý�¨p�Õœû]N‘ŸL(:8Õ2òŠ¢ }ù±ñ‡ß—�nÐó~Šò*êÎçàåkŠGÕÝ»J’‚´ûE‚×SkŠÍ²É
ÐImlØÏnþÀ¸�iÊó×êbë½ŠZ"ÊixLÁ‘@�ëX^ú‰ Ô$ÍÒ*¯`RûÓëÀÐLí~Ò_¬¦âý�'W*jžÏ©|÷3¹‹Üƒtó÷Ð¥ê>2<NaïíÓÆþâÊ12aï)JEøÏ—O@†§7¶'ÞÈ£õóÞ\r.b4?ö—×š1‰˜
Ù®©ðZÍßÅu>uŠ‰y/l€¼Õ>å	ßæÊöý}tìpuz:Ó“+|˜/ê´ŒxÉ¨7Àò×i¢!«›Ö¥åÑW´KŽ_éö}å nÁ¯ŸS°D°¨ S¡	°ˆ„Õ]�=B¸ó&ENRÄŸò…gUdíZ6þ,˜¼_JÍã.1½¬@>@ˆ…º=Ha_^TLHP²†Îó¨s(ù¨7åÇÁ$›û„ÿµ:!Æ{ŒÁ@~ôØ¨´ ‚Ú?‘»l£‚Â·'ù›& Ç�]ïûß“Xº/ °î#«‹Š	ÏB÷³ÎhÇ�+<~ûràýüW7Ù*Ãöœ*Ñ·ƒžLIÃ`²WÒ³«{™>Ä'�õpmƒiDöo|ä=©Çwþ1Ñ½3BˆÍ×»ÎÒx\šÜ³¿÷˜c°l¦Ð'B1“	²cÈWIÇÎk“Žÿþ·JB±4¿m!<%96;*èœ´~wï&ñôÙ¬ÿêË8g¹Â='Í�ù§¿O”™™™ôeÿîpœ(¡?O%    IEND®B`‚                                                                                                                                                                                                                                   includes/File_manager/lib/img/crop.gif                                                              0000644                 00000000503 15266052617 0013707 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       GIF89a  ð    ªªª!ÿNETSCAPE2.0   !ù	
  ,       „§kÍTLÑYå, !ù	
  ,       ¡˜jç^[Ð¡Èì¥µ  !ù	
  ,       L€`—›êÐbÐ´Xi}¡  !ù	
  ,       Œ�`‘z¹ÚbhÂX±{¨  !ù	
  ,       Œ	§kÍTLÑYå, !ù	
  ,       D ˜jç^[Ð¡Èì¥µ  !ù	
  ,       ‚a—›êÐbÐ´Xi}   !ù
  ,       „ƒa�z¹ÚbhÂX±{¨  ;                                                                                                                                                                                             includes/File_manager/lib/img/volume_icon_local.svg                                                 0000644                 00000037520 15266052617 0016500 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" viewBox="0 0 48 48" overflow="visible"><defs><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="24" y1="39.07" x2="24" y2="8.93" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#585868"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="24" y1="41.44" x2="24" y2="6.56" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#cecedb"/><stop offset=".58" stop-color="#b1b1c5"/><stop offset="1" stop-color="#9a9ab1"/></linearGradient><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="42.8" y1="3.42" x2="18.71" y2="27.51"><stop offset="0" stop-color="#fff"/><stop offset=".07" stop-color="#f5f5f7"/><stop offset=".31" stop-color="#d7d7e1"/><stop offset=".55" stop-color="#c2c2d2"/><stop offset=".78" stop-color="#b5b5c8"/><stop offset="1" stop-color="#b1b1c5"/></linearGradient><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="4.39" y1="28.4" x2="43.61" y2="28.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#9a9ab1"/><stop offset=".26" stop-color="#7d7d99"/><stop offset="1" stop-color="#585868"/></linearGradient><linearGradient id="f" gradientUnits="userSpaceOnUse" x1="4.39" y1="28.4" x2="43.61" y2="28.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="24" y1="28.28" x2="24" y2="38.75" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="24" y1="38.25" x2="24" y2="27.38" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="i" gradientUnits="userSpaceOnUse" x1="39.51" y1="37.32" x2="39.51" y2="35.18" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#fff"/><stop offset="1" stop-color="#b6b6b6"/></linearGradient><linearGradient id="j" gradientUnits="userSpaceOnUse" x1="39.51" y1="37.22" x2="39.51" y2="35.38" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#b6b6b6"/><stop offset=".37" stop-color="#9d9d9d"/><stop offset=".74" stop-color="#898989"/><stop offset="1" stop-color="#828282"/></linearGradient><linearGradient id="k" gradientUnits="userSpaceOnUse" x1="-323.35" y1="37.99" x2="-323.35" y2="36.08" gradientTransform="matrix(-1.09746 0 0 .8231 -313.94 6.86)"><stop offset=".01" stop-color="#9f6"/><stop offset=".24" stop-color="#68de56"/><stop offset=".48" stop-color="#3bc147"/><stop offset=".7" stop-color="#1bab3c"/><stop offset=".88" stop-color="#079e35"/><stop offset="1" stop-color="#093"/></linearGradient><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="39.49" y1="36.68" x2="39.54" y2="35.27" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#3c3"/><stop offset=".36" stop-color="#1bb433"/><stop offset=".74" stop-color="#07a033"/><stop offset="1" stop-color="#093"/></linearGradient><linearGradient id="m" gradientUnits="userSpaceOnUse" x1="39.51" y1="35.48" x2="39.51" y2="36.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset=".09" stop-color="#e8f7d6"/><stop offset=".23" stop-color="#c8ed9e"/><stop offset=".36" stop-color="#ade46d"/><stop offset=".5" stop-color="#97dc46"/><stop offset=".63" stop-color="#85d627"/><stop offset=".76" stop-color="#79d212"/><stop offset=".89" stop-color="#72d004"/><stop offset="1" stop-color="#6fcf00"/></linearGradient><linearGradient id="n" gradientUnits="userSpaceOnUse" x1="8.18" y1="35.36" x2="20.94" y2="35.36" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#dfdfdf"/><stop offset="1" stop-color="#a2a2a2"/></linearGradient><linearGradient id="o" gradientUnits="userSpaceOnUse" x1="14.56" y1="33.7" x2="14.56" y2="37.03" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#828282"/><stop offset="1" stop-color="#a2a2a2"/></linearGradient><linearGradient xlink:href="#a" id="d" x1="41.87" y1="9.41" x2="5.74" y2="29.21" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"/></defs><path d="M8.96 7.64a3.13 3.13 0 0 0-3.13 2.85l.04-.18-.11.55.04-.2-.1.54.04-.2-.1.55.03-.19-.1.53.03-.18-.1.53.04-.18-.09.53.03-.19-.1.54.04-.19-.11.53.04-.17-.1.52.04-.17-.1.52.03-.18-.1.53.03-.18-.1.52.04-.17-.09.53.03-.18-.1.53.04-.18-.1.53.03-.18-.1.53.04-.18-.1.52.03-.18-.1.53.03-.17-.08.52.02-.17-.09.52.03-.17-.1.51.04-.16-.1.51.03-.17-.1.53.04-.18-.1.53.03-.18-.09.53.03-.18-.1.52.04-.17-.1.52.03-.17-.1.52.04-.17-.1.51.03-.16-.09.51.03-.16-.1.51.03-.16-.09.51.03-.16-.1.52.04-.18-.1.52.03-.17-.1.52.04-.17-.09.52.02-.17-.09.52.03-.17-.1.51.03-.15-.09.5.03-.16-.1.51.04-.16-.1.51.03-.16-.08.51.02-.16-.09.5.02-.15-.09.5.04-.15-.1.5.03-.15-.1.5.03-.16-.1.52.04-.17-.09.52.02-.16-.08.5.02-.15-.09.5.03-.15-.1.5.04-.16-.1.5.02-.15-.09.5.03-.15-.1.5.04-.16-.09.5.02-.15-.08.5.02-.15-.09.5.02-.15-.09.5.03-.14-.1.49.04-.15-.1.5.04-.15c-.08.3-.11.59-.11.88v6.47a3.6 3.6 0 0 0 3.6 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6v-6.47a4 4 0 0 0-.1-.88l.01.15-.08-.5.02.15-.09-.5.02.16-.09-.5.03.15-.1-.5.03.15-.09-.5.02.16-.08-.5-.07-.36.03.15-.1-.5.04.16-.09-.51.02.16-.09-.51.03.16-.1-.5.03.15-.09-.5.02.16-.08-.52.02.16-.09-.5.03.16-.1-.5.04.15-.1-.5.03.15-.1-.5.04.16-.1-.52.03.16-.09-.51.02.16-.08-.51.02.16-.09-.51.02.17-.08-.51.03.15-.1-.5.03.16-.1-.52.04.17-.1-.52.03.17-.1-.52.03.18-.1-.53.04.18-.09-.52.02.16-.08-.51.02.16-.1-.51.04.16-.1-.51.04.17-.1-.52.03.17-.1-.53.03.18-.1-.52.04.17-.1-.52.03.18-.08-.53.02.17-.1-.52.03.18-.09-.53.04.17-.1-.52.03.17-.1-.52.03.18-.07-.52.03.17-.1-.52.04.17-.1-.53.03.18-.1-.53.03.19-.1-.53.04.18-.09-.53.02.18-.09-.53.03.18-.1-.53.04.19-.1-.53.04.17-.1-.52.03.17-.1-.52.03.17-.1-.52.04.17-.1-.53.03.2-.1-.55.04.19-.1-.53.03.19-.09-.55.04.2-.11-.54.04.19-.11-.54.04.19-.1-.54.04.18-.1-.53.03.2a3.12 3.12 0 0 0-3.12-2.87H8.95z" font-size="12" opacity=".2" stroke-width="1.1"/><path d="M8.75 7.23a3.13 3.13 0 0 0-3.12 2.86l.03-.19-.1.54.03-.2-.1.55.04-.2-.1.54.03-.19-.09.54.04-.19-.11.54.04-.18-.1.52.03-.17-.1.52.04-.17-.1.52.03-.18-.1.54.04-.2-.1.54.03-.18-.09.53.04-.18-.11.53.04-.19-.1.53.03-.18-.1.53.04-.18-.1.53.03-.17-.08.52.02-.17-.1.51.04-.17-.1.52.04-.17-.1.52.03-.17-.1.53.03-.18-.1.52.04-.17-.1.52.03-.17-.08.52.02-.18-.1.53.04-.18-.1.53.04-.17-.1.51.03-.16-.1.51.03-.16-.08.51.02-.17-.09.52.03-.17-.1.51.04-.16-.1.52.03-.17-.1.52.04-.17-.1.52.03-.17-.09.52.02-.18-.08.52.03-.16-.1.51.03-.16-.1.51.03-.16-.1.51.04-.16-.1.51.04-.16-.1.52.03-.17-.09.5.02-.16-.08.52.02-.17-.09.52.03-.17-.1.5.04-.14-.1.5.03-.15-.1.5.04-.16-.1.51.03-.16-.09.51.02-.16-.08.5.02-.15-.09.5.02-.15-.08.5.03-.15-.1.5.03-.16-.1.5.04-.15-.1.5.03-.15-.09.51.02-.15-.08.5.03-.15-.1.5.03-.16-.1.5.04-.15-.1.5.03-.15-.09.5.03-.15c-.08.29-.11.58-.11.88v6.47a3.6 3.6 0 0 0 3.6 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6v-6.48c0-.29-.04-.58-.1-.88l.02.16-.1-.5.03.15-.09-.5.02.15-.08-.5.02.15-.09-.5.02.16-.09-.5.04.15-.1-.5-.07-.36.04.16-.1-.5.03.16-.09-.5.02.15-.08-.5.02.14-.09-.5.02.16-.09-.5.03.15-.1-.5.04.15-.1-.5.04.15-.1-.5.03.16-.1-.51.03.16-.08-.52.02.17-.09-.52.02.17-.09-.5.03.15-.1-.5.03.16-.09-.52.04.16-.1-.51.03.16-.1-.5.03.15-.1-.5.04.16-.1-.51.03.16-.09-.51.03.16-.08-.52.03.17-.1-.52.04.17-.1-.52.03.17-.1-.52.03.18-.1-.53.04.17-.09-.52.02.17-.08-.51.03.17-.1-.52.03.17-.1-.52.04.17-.1-.51.03.16-.1-.53.03.18-.1-.53.04.19-.09-.53.02.18-.08-.53.03.18-.11-.53.04.17-.1-.51.04.16-.1-.51.03.16-.1-.51.03.17-.1-.52.04.17-.1-.53.03.18-.1-.53.04.19-.1-.53.03.18-.09-.53.04.18-.11-.53.04.19-.1-.54.03.19-.1-.53.04.17-.1-.52.03.17-.1-.52.04.18-.1-.53.03.18-.1-.54.04.2-.1-.55.04.19-.1-.53.03.19-.1-.55.04.2-.11-.55.04.2a3.13 3.13 0 0 0-3.12-2.86z" font-size="12" opacity=".2" stroke-width="1.1"/><path d="M8.35 6.82A3.13 3.13 0 0 0 5.2 9.67l.03-.19-.09.55.04-.2-.11.54.04-.18-.1.52.03-.17-.1.52.04-.17-.1.53.03-.18-.1.53.04-.19-.1.54.03-.19-.09.53.04-.18-.11.53.04-.19-.1.54.04-.18-.1.53.03-.19-.1.53.03-.17-.08.52.02-.17-.09.52.03-.17-.1.51.04-.17-.1.54.03-.18-.1.52.04-.18-.1.53.03-.18-.09.53.02-.18-.08.53.02-.18-.09.52.03-.16-.1.51.04-.17-.1.52.03-.17-.1.52.04-.17-.1.52.03-.17-.09.52.02-.17-.08.52.03-.17-.1.52.03-.18-.1.52.04-.17-.1.52.03-.17-.09.52.03-.16-.1.51.04-.16-.1.51.03-.16-.1.51.04-.17-.1.51.03-.16-.09.52.03-.17-.1.52.03-.17-.09.52.03-.17-.1.5.04-.15-.1.5.03-.16-.1.52.04-.16-.1.5.03-.15-.1.5.04-.15-.1.5.03-.16-.09.51.03-.16-.1.51.03-.16-.09.52.03-.17-.1.5.04-.15-.1.5.03-.15-.08.5.02-.16-.1.52.03-.16-.09.5.03-.15-.1.5.03-.15-.09.5.03-.16-.1.5.04-.15-.09.5.02-.15-.08.5.02-.15-.1.5.03-.16-.09.5.03-.15-.1.5.03-.15c-.07.3-.11.6-.11.88v6.48a3.6 3.6 0 0 0 3.61 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6V31.3c0-.3-.04-.58-.11-.88l.03.16-.1-.5.03.15-.1-.5.04.16-.1-.5.03.15-.09-.51.03.15-.1-.5.03.16-.09-.5-.06-.35.02.15-.09-.5.03.16-.1-.51.04.16-.1-.52.03.17-.1-.5.04.15-.1-.5.03.16-.09-.52.02.16-.08-.51.02.16-.09-.5.02.15-.09-.5.04.15-.1-.5.03.16-.1-.51.04.16-.1-.51.03.16-.09-.5.02.16-.1-.53.04.18-.09-.52.02.16-.09-.5.03.16-.1-.52.04.17-.1-.52.04.16-.1-.5.03.16-.1-.52.03.17-.1-.51.04.16-.09-.51.02.16-.09-.52.03.17-.1-.52.03.18-.09-.53.04.18-.1-.52.03.17-.1-.52.03.17-.1-.52.04.17-.08-.52.03.16-.1-.51.04.17-.1-.52.03.18-.1-.52.04.16-.1-.52.03.18-.1-.53.04.18-.1-.53.03.18-.09-.53.02.18-.08-.53.03.19-.11-.53.04.18-.1-.53.04.17-.1-.52.03.17-.1-.52.04.18-.1-.52.03.17-.1-.53.03.18-.1-.53.04.18-.09-.53.03.18-.1-.53.04.19-.11-.54.04.19-.1-.53.04.19-.1-.55.03.2-.1-.54.03.18-.1-.53.04.18-.09-.54.03.2-.1-.55.05.19a3.13 3.13 0 0 0-3.14-2.85z" font-size="12" fill="url(#b)" stroke-width="1.1"/><path d="M45.34 30.7a2.52 2.52 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.22-.07-.34 0-.12-.03-.24-.06-.35 0-.1-.04-.23-.06-.35l-.06-.35-.07-.34a1.8 1.8 0 0 0-.06-.35l-.07-.35-.07-.35-.06-.34a2.41 2.41 0 0 0-.07-.36c0-.1-.03-.23-.05-.35l-.07-.35-.06-.34a1.8 1.8 0 0 0-.07-.35l-.07-.35a2.3 2.3 0 0 0-.06-.35c0-.11-.04-.22-.07-.34 0-.12-.03-.24-.06-.35 0-.12-.04-.24-.06-.35l-.06-.36-.07-.34a1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35l-.07-.35a2.2 2.2 0 0 0-.06-.35c0-.11-.04-.22-.07-.34 0-.12-.03-.24-.07-.35 0-.11-.03-.23-.05-.35l-.07-.35-.06-.34a1.8 1.8 0 0 0-.07-.36 1.8 1.8 0 0 0-.06-.35 2.2 2.2 0 0 0-.07-.35c0-.1-.03-.23-.07-.35 0-.1-.03-.23-.06-.34 0-.12-.03-.24-.06-.35 0-.12-.04-.24-.06-.35l-.07-.35-.06-.35-.07-.34a1.8 1.8 0 0 0-.07-.36c0-.1-.03-.23-.06-.35 0-.1-.03-.23-.07-.35 0-.1-.03-.23-.05-.34-.01-.12-.05-.24-.07-.35a1.8 1.8 0 0 0-.06-.35l-.07-.35-.07-.35a1.86 1.86 0 0 0-.06-.34c0-.12-.03-.24-.07-.35 0-.12-.03-.25-.06-.36 0-.1-.04-.23-.06-.35l-.06-.35a1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35 2.05 2.05 0 0 0-2.04-1.87H8.35c-1.08 0-1.96.83-2.04 1.87-.04.11-.06.22-.07.35l-.07.35a1.7 1.7 0 0 0-.06.34 1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35l-.06.36c-.03.1-.05.21-.06.35-.04.1-.06.22-.07.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35l-.06.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35l-.06.35a1.8 1.8 0 0 0-.06.35c-.04.11-.06.22-.07.35l-.07.34-.06.35-.06.35c-.03.11-.05.22-.06.35-.03.11-.06.22-.07.36a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35l-.07.35-.06.35-.06.34a1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35a1.7 1.7 0 0 0-.07.34l-.07.35-.06.36-.06.35c-.03.1-.05.22-.06.35-.03.1-.06.22-.07.35-.02.1-.05.22-.06.34-.03.11-.06.23-.07.35l-.05.35c-.04.11-.06.22-.07.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.36c-.02.1-.05.22-.06.35l-.07.34-.07.35-.05.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.02.11-.05.23-.06.35l-.07.34-.05.36a1.8 1.8 0 0 0-.07.35c-.03.1-.06.22-.07.35a2.52 2.52 0 0 0-.07.6v6.48a2.5 2.5 0 0 0 2.5 2.5H42.9a2.5 2.5 0 0 0 2.5-2.5V31.3c0-.2-.02-.4-.07-.6z" font-size="12" fill="url(#c)" stroke-width="1.1"/><path d="M10.7 7.91L3.5 30.35c13.7-1.65 27.04-1.65 40.54-.91L37.1 7.9z" font-size="12" fill="url(#d)" stroke-width="1.1"/><path d="M2.77 29.18l-.05.34a1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36a1.7 1.7 0 0 0-.07.34c-.02.1-.06.23-.07.35a2.52 2.52 0 0 0-.07.61v2.66c.47.44 1.1.7 1.79.7h39.46c.7 0 1.32-.26 1.79-.7v-2.66c0-.22-.03-.42-.08-.61a2.52 2.52 0 0 0-.06-.35 1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.23-.07-.35 0-.1-.03-.23-.06-.34 0-.12-.04-.24-.06-.35l-.06-.35-.07-.35a1.86 1.86 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.07-.35l-.06-.36a2.41 2.41 0 0 0-.07-.34c0-.12-.03-.24-.05-.35a2.3 2.3 0 0 0-.07-.35l-.06-.35-.07-.34a2.3 2.3 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35c0-.11-.04-.23-.07-.35 0-.11-.03-.23-.06-.34 0-.1-.03-.19-.05-.28H3.92a2.3 2.3 0 0 0-.04.28 1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.02.1-.05.22-.06.35-.02.11-.06.22-.07.34l-.05.35a1.8 1.8 0 0 0-.07.35l-.07.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.36c-.02.1-.05.23-.06.35l-.07.35-.06.34-.06.35a1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35l-.06.34z" font-size="12" fill="url(#e)" stroke-width="1.1"/><path d="M45.28 30.36a1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.23-.07-.34 0-.12-.03-.24-.05-.35l-.07-.35-.06-.35a1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.06-.35 1.8 1.8 0 0 0-.07-.35l-.07-.35c0-.11-.03-.23-.06-.34a2.41 2.41 0 0 0-.06-.36l-.06-.35-.07-.35a1.86 1.86 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.07-.35 2.3 2.3 0 0 0-.06-.35c0-.09-.02-.19-.05-.28-.33-.16-.7-.26-1.1-.26H4.9c-.4 0-.77.1-1.1.26l-.05.28c-.02.1-.06.23-.07.35l-.06.35-.06.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36-.02.1-.06.22-.07.34l-.06.35-.06.35c-.03.1-.05.22-.06.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.06.35c-.02.11-.06.22-.07.35l-.06.34-.06.35a1.8 1.8 0 0 0-.06.36c-.04.1-.06.22-.07.35a1.7 1.7 0 0 0-.07.34c-.04.2-.07.4-.07.61v.86a2.5 2.5 0 0 0 2.5 2.51H42.9a2.5 2.5 0 0 0 2.5-2.51v-.86c0-.22-.02-.42-.08-.61 0-.11-.03-.23-.05-.34z" font-size="12" fill="url(#f)" stroke-width="1.1"/><path d="M2.39 37.79a2.5 2.5 0 0 0 2.5 2.5h38.02a2.5 2.5 0 0 0 2.5-2.5V31.3a2.5 2.5 0 0 0-2.5-2.51H4.89a2.5 2.5 0 0 0-2.51 2.51v6.48z" font-size="12" fill="url(#g)" stroke-width="1.1"/><path d="M4.89 30.12c-.66 0-1.2.53-1.2 1.2v6.47c0 .66.54 1.2 1.2 1.2h38.02c.65 0 1.2-.56 1.2-1.21V31.3a1.2 1.2 0 0 0-1.2-1.18z" font-size="12" fill="url(#h)" stroke-width="1.1"/><path d="M40.47 36.12c-.82 0-1.48.53-1.48 1.22s.66 1.23 1.5 1.23h.87c.83 0 1.5-.55 1.5-1.23 0-.68-.67-1.23-1.5-1.23h-.88z" font-size="12" fill="url(#i)" stroke-width="1.1"/><path d="M40.47 36.44c-.64 0-1.15.4-1.15.9s.51.9 1.16.9h.88c.65 0 1.16-.4 1.16-.9s-.52-.9-1.16-.9h-.88z" font-size="12" fill="url(#j)" stroke-width="1.1"/><path d="M42.41 37.34c0 .44-.47.79-1.05.79h-.88c-.58 0-1.05-.35-1.05-.8 0-.43.47-.78 1.05-.78h.88c.58 0 1.05.35 1.05.79z" font-size="12" fill="url(#k)" stroke-width="1.1"/><path d="M40.47 36.77c-.44 0-.82.27-.82.6 0 .33.38.6.83.6h.88c.45 0 .83-.28.83-.6 0-.33-.38-.6-.83-.6h-.88z" font-size="12" fill="url(#l)" stroke-width="1.1"/><path d="M40.45 36.65c-.38 0-.66.22-.66.41 0 .2.28.43.66.43h.94c.39 0 .66-.22.66-.43 0-.2-.27-.41-.66-.41z" font-size="12" fill="url(#m)" stroke-width="1.1"/><path font-size="12" d="M6.54 34.75h14v3.64h-14z" fill="url(#n)" stroke-width="1.1"/><path font-size="12" d="M6.54 34.75v.44H20.1v3.2h.44v-3.64z" fill="url(#o)" stroke-width="1.1"/><path font-size="12" d="M17.2 34.75h.87v3.64h-.88zm-4.58 0h.87v3.64h-.87zm2.28 0h.88v3.64h-.88zm-4.57 0h.88v3.64h-.88z" fill="#949494" stroke-width="1.1"/><path font-size="12" d="M16.97 34.75h.88v3.64h-.88zm-4.57 0h.87v3.64h-.87zm2.28 0h.88v3.64h-.88zm-4.57 0H11v3.64h-.88z" fill="#f0f0f0" stroke-width="1.1"/><path font-size="12" d="M-2.44 50.44V-2.24h52.68v52.68" fill="none" stroke-width="1.1"/></svg>                                                                                                                                                                                includes/File_manager/lib/img/volume_icon_network.png                                               0000644                 00000001550 15266052620 0017050 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   sBIT|dˆ   	pHYs  z  z2¹Èü   tEXtSoftware www.inkscape.org›î<  åIDAT8�}’KHTQÇÿçÜs½Î�‹Ê5Ó1LgLÅ�-j1FXF/œE¢ô0saJOŠPÈ '-"¥ME«ZÕb(±\ØB&*§H)(Ð$†¹dNóÐ{ÏœÓÂÆpŠþ«�s~ß�ï;‚Œœì:ÚVZ¶ÞïÈÉÉMÄFèÍ»±o‘ð…@ �ÈdÿJO÷Ù¾/_>'¥”rvvVöõÝ“ããe0’<6;;Ï¼Îìaé¢£ýpCsóþÅÅîì'OÁ9ÃîÝ ”`ùòD£q5/¯¸&S@ÓÅÚ¢¢}ÞŠŽþþûÈÏ/‚×»É¤‰Hä‚Áq$“€ª*ôÒÅów›šö.46nËs:sÊ ²²O	!˜žŽàÓ§ièºv»ÆÒÝÓÛºuËöÁ]»|« €¶´´¬ÙÙÐø¼£ëØF H¥R�€Í¦!7wìv;l6YY*(¡8ØÚæ)+­: ¬¼Ô}éPÛ‘
B¶"…X,‰x|  iY`Lc
ùýpL…ÊÔ `Åî’Útó‚@ÂëuCÀ4“P
EYÐ?¶¶í•Rœ¤”Pç|ñ‚s]·A×³!„ ¥”(
 ¹²r�ÝSQÑNÃ‘ð³©©I$	˜¦	M³ar2Ã˜çÀÂÜ##/àr­„eY°,ñxŒ2‡2øl(°Î]´Ãétæ;N(,Ì‡�B †ñ�à÷ïDMMõ¢àÃø˜…B—Iz¤sgNù].WÓÜ<_KXU>ÿ¦eÚœƒôß¼-·ÕoP(•iög4:ÿujêÎÕë7žf~¬%yxóÊ÷ë§[£ÿcHæÁ­[}/}¾ºZÂM”“; ˜�‡¤dÙz>vâÄñê
|>³,ËVPPÐ«ëz�"¹V¬€so7¾O1&fff^†qVUÕäðð0_"¨¯¯·1»”„1K¥ã”šTáœSªSKåLpÕ„H®ió±@`4 ¿ |�"›cÅ,    IEND®B`‚                                                                                                                                                        includes/File_manager/lib/img/volume_icon_sql.png                                                   0000644                 00000001074 15266052620 0016157 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  IDATxÚ�’¬A ¯¶Í¸ˆTKqm)®mÛ¶mÛx¶m_ÒgÛÓÛßÒ—Ì
³”F�©bîÜ¹S–;ÈTí<�`Ú´iË³³³III!::šððœœ|øúÕ‹¿ƒñóK &&‹ôô
”±«u‚aC‡¸*ì±háR“H“‹�íZ·äí›7Ô××cX¹¨kÛþ�	¤Ê…Æ‚†Mš¦lwìø	ˆryy¹Å\àKŠœg,hß«g-" 0QÎÍÍµ˜îÜ¹Ã¶mÛ~(‚¡:A¿‘Ó‘e™'¯?#Ê"7¬‹²@”Ãc“IMÏ5ÞÁð9›\GÎß†)IIIFõ�ãJ‚üO+0ÆôôtBCCyøò.>âÔµG\ð„¯ßðñï<ƒ‚ˆ—e#ACÉBôéÒZ9°‡Ô£c‰õj¤:©^ƒaî`ÐÚµk¿ˆ‹ºuë.\`ïÞ½ìÜ¹“ƒröìYË—¨-L™2Åì'þuõàÝ�Ÿ|rþÍ_ücC‰KOFk~ãÇ�_¦½'''~ýúÅã—/¹òø·ß>áµÓ'œƒÝ‰”c˜0aÂ
³;ÈËËk,YîA…ÛÈpD…®={öÜb~wÞþüÊ{—oü
pÆ'Ö�èôÄX1GÌm¬T÷íÛ÷p]]�q�’ aÃ†"G”�j� ö?ç|äŠƒË«7    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/img/edit_creativecloud.png                                                0000644                 00000001223 15266052620 0016613 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         �‘h6  ZIDATxÚe‹Ð­9†“¶ßoÛ–Ö¶4ÞÙV£µmÛ¶mÛ¶-\óßAO‘›_£ûö©’<øwÿ¤BP€@  p�€< c"ðiW7‚<"ñƒCžg™k�â¶#ä
Jœð˜1T^æå‰œÖŽÈ+IXS8„ ˆ«Ö  –—‹Ž.ªª’�T(`:é´K¤|°Ï
²F••«–f@„ŠŠ`ËÍ*wÛÙ‹<¤W®?þƒÕnýzþÊÃZÉYQWW62T±ù¦•ûìI•6‘?û"õÌá§ŸÓ“e[m¡W¬0ahJ¿î“BVMŒ5î³§êíI¿ó~04Œ�FÎ¹ˆ5¨ªÒ«×´_ŸÉwÞ/D"Ê+ZÊ†U_ï’#�÷¹SwÀþ­wÜ¸î”³M"Aõ™�?«Þ{w§¤BX–(èïK~üiÉÚÁ{n¯ØqûøË¯F®¿ÅUUrË�çQOä¼wDÂY$�ÉVŒ�å2‘Èo^syÙ&Ó±·ÞÍý¿D[£óùúýöÿüËXkØµˆºXLþðcÿQ‡^pñªûtRŒÜz?Ò?ý,««{=P§3™ßÿÔaÖI)¬”…l®[¿ìÁG‚¾Þ‰ï&Æþ8ûüêí·í=ã”®c—.[ÿú›ùHDŠV ¾Ð;Ì'[ÑÒTW«ÚYUeÂÐfCYWkµ¶ù‚ÎdJaH�rDøtï� (È¡¤P�Œ÷Î{r%íIJþx |lN@† ž€Ão‘ñDŒ˜ì\`v-†æ,?÷ðÌ: ,ìt%€‚z    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                             includes/File_manager/lib/img/volume_icon_googledrive.png                                           0000644                 00000001227 15266052620 0017666 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ^IDATxÚ­ŽÌQ…ÏÕ>Ô¶mÛ¶­µmµ³¶Õ¶mûîLwkG=Ùo¯¿�ÿQ&G`ÚÆ&GU»žp¸úõÄ£µ®'«íRëh‡ú™ø%¿ÄéRaìâ×i«?‹:E¤rŠJe\�ê³†ûO�iY*ŸÎ’fTH1ýqZÒ@(Rû�;[ÊQSûÌ÷W�¯U©yZ«€qvÆÅ‰x?y©¾ M`D¯|óþ(¨ÝH�¶JI¸hŸS¥²**¤†'BÁï7m7Î)Ûè'�*šÅ˜ªù)-…¤”PŽÁ­7våãW‘Ì 3» `ˆVµ3.jX%½ù&pzV$¤(æ=üŒpêuÌ¶óS&,º<ÅZzMÖ‚ˆ@L`¦bs‡äO ëÎ"r¦�Œ¯U xD¼� à½ÇŽƒÏ'¼yŸ„¸øÂá(˜…r9“‡tÍ–E«6¥fs"Y‚`JýÀœžV¡T¥�|ð›Ó©N§ÍÿÀ	¹ÉF!8£)UÛVY§k~sŽSú@BÀ 	N{³iîysŸ”Ìã€Ì¸ÁG-BáB¡¢QBò«‹ç=~NÖ,ÐÙÀ@ðuqNýª¢tRf‚vPJÁƒ°ÄˆºØ(ÁZ{þÙž>}$ ²‡ï¶DLaÍ)ÔÂŸ$ˆá"À.ôÀûbol€>ç‘(š¥PÚWK¦••�BJˆo•#–u‰DÝ11f5€….ÐˆIŸ~¶¾‘2s�Ó1¼RŠo­{sÀ±'òZGìÝýëbolÄÉG³ÙJ\™cö    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/img/tui-icon-a.svg                                                        0000644                 00000047245 15266052620 0014753 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs>
        <circle id="a" cx="16" cy="16" r="16"/>
    </defs><symbol id="icon-a-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#434343" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-a-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#434343" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-a-ic-color-transparent-w" viewBox="0 0 32 32">
    
    <g fill="none" fill-rule="evenodd">
        <g>
            <use fill="#FFF" xlink:href="#a"/>
            <circle cx="16" cy="16" r="15.5" stroke="#D5D5D5"/>
        </g>
        <path stroke="#FF4040" stroke-width="1.5" d="M27 5L5 27"/>
    </g>
</symbol><symbol id="icon-a-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#434343" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-a-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-a-ic-delete" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-a-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-a-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-a-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#434343" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#434343" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-a-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#434343" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#434343" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#434343" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#434343" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#434343" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#434343" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#434343" d="M25 3h1v9h-1z"/>
        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#434343">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-a-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-a-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#434343" d="M25 3h1v9h-1z"/>
        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-a-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#434343"/>
        <path fill="#434343" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-a-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#434343" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-a-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#434343" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#434343" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#434343" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#434343" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#434343"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#434343" rx="1"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-a-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#434343" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#434343" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-a-ic-text" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-a-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#434343" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#434343" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-a-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>                                                                                                                                                                                                                                                                                                                                                           includes/File_manager/lib/img/resize.png                                                            0000644                 00000000123 15266052621 0014255 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         eÉtµ   IDATxc Ì›3ïÿÌ™3�`ôˆ‘¤  tfVéA]Kp    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                             includes/File_manager/lib/img/edit_pixlreditor.png                                                  0000644                 00000001562 15266052621 0016336 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  9IDATxÚmÓ`a àwLjÇ)"­¶miªfÛ¶mÛ¶mÛ¶m)—·›ùäB m	 �çjô%ÜÔzþ"�Šÿ'oj¿ÅQ±‘õK<E¥Wë àÉªŸRŠJü›Ø€œž¬D= ÂË)ïÎÈ
ÆÊñºC|)
›GºrÓ»¶ AÀ³s×R†âú$ð'YS:©ì�mÅöœ�*�€f¸3}þŠ¢Ø£ààâÑD‘XÅµºð^{}GÎ¾ã …ïô‘‘uòFÀØISÍòÒVHHRn­©Ÿ~¸uæ�FpV…–(‹:¢¨ãÎsÈ²�9G¯`JÏ!«�ç£3úvž3ôIïóÛÐ8p†™(‡™�*½¾3$[yùW‚/Ä>©m<Kú¢¼Ó"³[×µhê»œ«¼b*džiMÛUï;õÀt¬¼pÎ'Ó¸õ¨é5Ú|fb"Îˆš¼[JipñŒ”§T]çQÒô–¶IÔw·–uÂ •üIAFØ›ê£ú`Ñ„hè?„Û´(ûŸ äÀóQÙÀ£<|º{VhòL]³jº�¶H¯Ã �5¡á(oÛ™’áØfh‘ùX”(Ã;¯ZDõmª�†Êü6hÓ}	Ç.Ø‡pì4Æ�Ùo‰)-1	§a;1pÁt|7È×žYíÒ›>–º«�'óI$É7fîÝC!¼µ~Ü­ó ^ÿŒ³Z:‡xòâÖÚ�—Ï�’ž8³ßOÃžû<`¿O4�-8´xÏ�`œÄþÖU›¿¡jtGh:�3õÛnöusÁrŽd2€pø¼¾&ÜR/óTÉY×êŠÖY5N€-ðÆpâë×6ªò¦¨+ÚØðQ]€. ƒ�wy‹w£-‚P™ÕÑÍæ|°ÎnŽvAk€ç€HÀVbM™0»™Ù)«Z³ìxà!Î“¾šXáYMw�™ŒÂç‚Sa'„Wü$pSåOhü~>X'É·¥X'R“ßÝÛ3¬Ï‰Þ•FÏIHgY+ÆÁ-þÇ­J+þ`ÏÖIÑEàÈpxüÅ?Ó­õÑ$ü-Õ�Œ“„ú! �íõr‰ØÍUe OZ ÓQð—Ï½Œ,@ì 	    IEND®B`‚                                                                                                                                              includes/File_manager/lib/img/icons-small.png                                                       0000644                 00000007132 15266052622 0015205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR        ±+  îPLTE   I€¶Hm”]{}Ht£úS4H{°éîî%%$$æçæ@z¶*IKSSSBbdOki5!      C…ÃóP;–>\tyš¦§BY€ùU1GFG<¾)   Jš”¾æv�Ò®Õókkk&�å=EE  …Æv™Ó�±áU™Ð€Áˆ±èJ­N,•ì,Y’x¹BŠÇ~°å%T–£Âæ   ÿŠe\mmRŸäev¡}§Þ   } Ù1GKr®ë¼ÉÊ¬¬¬ÿÿÿÏMd Ú#]¦4|Á/µ!j²6”7ÐñýT¤è/¢$Yc–7t¸ƒ©æFp•-mª·LÖTY£${ÃhºøX f—Ä¾R…Ô¾¿Äy»˜¸æG�.’áçIðùýH¢mmm!Eyiii³:GvJ0–ìÓL   øwOdm¢.}1“°ÛæJÿÿÿSSSg†Úš¶ã½QÿÿÿÐåòíóóÖêõÙäåßñúÛí÷ËáîÜèèçòó¸ÎåÃÙêÅ;"çJwwwº»»øûûôöõ.}2G¡òùú©íÕÞÜŠ¤ÁÊÐÑ�¸ô¼ÕâXX[.´``c"«çõý‘¼ö¢¼É±Ì×ˆ¹ÿ Éú‰´ò«®®ÁÊÏ²H	Ååü�ºÕÀÃÄy·ž  ™ššôS!‡©ÐLLO¼P„±ð«ÄÖªÁÍþŠe‡‡‡QRV�ÃòAŽÍ’ªÊ–Ãüù¡„ÿH:M©öˆË‡desP©R'˜ôÍ\Å3µÕýl½úÂ÷€¢Ãu”µù¿®ÃU‘Û¥©Ó€�Óp‘Ëo«¥Ñ§¡(c®øfˆÊ›±ÁP|¹k½iÓ9Mšù`¦æUžÛI“ÕøßÔì€V¨Aûçär±Þ·0’#2ŠíyŸâöÍÁÎ«8…ŽÄÏeA??@²ÂáŒÐ•šËÅåÅµÚ¶�¿�¬+ÔÔÔIq ŸÜ—p¦nKxl-XRéÂE88:à¤‘ÕskA‰E  x®üþ«’Æ�;©qvïÚ_“t#çÑùš   ttRNS kÁ†g—�ýgtý$fdh'±ŽF…‚<²¬KûýŸŠûýý‡qHþúûüûðÎÒcþýRFõèÌ®þþéÍÃ©�þ³±€4ø÷ÝÈ�]þÐ?ýúùùÜÍÂ¿µ®p÷ïÖÔÍ¹¹´\@*ßÎÉŽ{a ÝÙÑÄyqÀ¿�ˆe–ù  
§IDATxÚìškHSaÇ_ÍÈ–iÍA†ÔZ:$X™Zf˜ˆ‘tƒnÑ‡ˆâŒÍ­æ &,ocèæ,L‡ŠN]Èi(¸i¥3ÒRÓ>ÙÅ4!º|ëyÏyÏñŒ‚‚nïODŸßyÎåÃþ¼<{BHDCA:­VÔó&HÞhÌÏÏ¿V†ÖÍ×£"BMôjbÔxA/tjb´¼ÐCÄ|�–ý|^3+ˆ„ž"‚Ët,z½.˜ë˜�(”ßŽl3Ë*A$*.—C¾­â@‰7àHŒãHFqîrŒƒ�â9QÂQžÿÃ×Xð…ÐQ)¦‹:•±(þ²˜ºïˆÜË@‡»B„;m	^."x1¢Pþ:ç§E"Ñã N¯g�äá •Ô•¸0—‹’Ë.Tå€ëlØ1?<¬ð8
�ÅûrÝ•å<îÍ(Ù'/ŸMX�ÅúÊë*6#Ô•QyY`x=<Gîðl�·U¸?T�X,¤gùD¡ü–„°…,,|õªøjuuõÕ«ÅÃQø%à
¦¸.AáL á L"°0ŽÖ°„&töM¨ˆÐE"B× I �|+Î`!¢Pþ0¿mŽ²ÙêmsT)0G5Øm6[�­G˜£ŒFÜ“oç…®¡zìõ6-/à&l�0GÙK¡ÅÞ`¦$<vÌQv{©�ÎQ”¹Ì²� –¡&€�9¼Þ
�Ó‡n˜\Ü�Ö‚"L-ù�G¿Uz�)E˜''{´zø¼—éÊÌf,Þ½›¬±•ž×–•™MXhÞ�™Üµ©££èšQ‹Ö®×¯{tÕÊ]Šª*¼h°è=['w9°h™"Ìt�¢ÌÚÚöÁ„$Yëúˆ#!Yv¼ð&áÃ²m¼x¼ ³;A<G(;±@ØÝò—\C,d;¼^¯X(½ím;Ä�9IIþ“D°�û·ïâNMºy‰Èì#§òlïïW‰œºQ(¿Ž$R*)™.m!HÓ#±ˆ”¶±tH#Y‘ÎŠ{›v
E/`qéØôZè(ºWÔÒÓÓ±iö-pROÇ=®cEzjttj
&5}+R;;»0¾Ô¬ˆJ­íŒeI�â:@`b»øŽ”Nh÷ù:kSHG
ŒÍ�{ù2…í�F�†/(å‰‰§¢¤ø9¤¤‘ˆBáø+›æ*¬7¨Jí³ƒÕ(pÞ&¬¢G?V‹«/_F?ªmõ�T0|	Â^Z_Šg/:XQ~À_KÐ‰V–¡O|‚ZaZ‡†ØÁ€˜à4f`„Q­33#cÝüïÄÐØÀû‘§3Ý�DNL<}?6ÔÝýŒßâí&€8ÏŠÏ8>Ñ-^ÊœæG‰:¶­´Ì ­IÛÆÜ}b†�ª‘$jÛƒû#cÌ°/GK´íîsƒq1½z^<»ñd‘ÏåÓ‘D;Ã0‹òÆÀ%
Z¦¦¦Þ¾¹e€Dqb”™bÞ0�(N|�bn=¼càuÌh.zš(ÊœBsôèÑ_†Åì�+ŒÙŠ1a\½7Y‘­P¨uºÄ½¬ÉJ–W�¨ÊÎÎ–gA��98¨�ËUqŠ*Ïî„VPögf(òÁ+:2¨lVƒííJ•òBÇ{“TÍÍÍªf¿7Ç¯:*0þ¾ot¬Ì�Êï÷7û›“¼J¸FÂn¿¿ŸEÕÖw�–Ì¤¾¾´´´>e;4 a{TiiðŠEZFÆòìY™iPgfAÍ‘�µ÷ÐÞ¬D¡ˆù3_�/ÁõV†'”!&Á…ka¸@0D NäˆX<+!œ"ˆâÆÂÂÆb^,Ô^¬­¾X¨YÈ	ó•PsÅÌ‹<ë%�æ’5�¦‚bK^ž¥¸ÀÄ		lf“×K7Â¦taá…PM¨·,bx¢Öb1o–µˆB¡‰¢‰¢ÌyhÄhÄ(4@4@”9MMå[þå»çÓN§33>==>ÂYÜxqõj«µ):ÚÙ�…¥ºÑjµ8¡l²8%hMtõEku#®-kMpØ‰[­·Ya±4A�ËÛ·- Æ› †n(Y!wÂåá° ¦ÇÇÇÙ;`œô½>ÊÏB×¨¯íœ_ˆLQÀ/Ù%<�µSÓÄ6j&Líó¶Mj¶4K"EþI¹,Æ¿�;f®–ãÍ¿¶™ic‰†˜±˜Ò(FI´,‰Ï¾ógî|g¯-vVMù~wv›ïw¾{çœ‡¯©éœ�¾£ˆÚå¯+Ê±Õçó½9kUÔ<ß†ïR¹¢¶ö÷¿‡«ßW®¨æþïüj.WÔXg—%æµùÍ—à0T3ëÚÚÚšÏ¬Šê�T*J@EÔôEE £¹	iîÄ¹ê&¤d$©nŒ�7Ô�±‘.CíÜ™`¨�["ICíÜ’Ük¨�["FRíÜFéÜ±Ú¹E¼çbe[Ÿ4–A<tRÄ²	imB"¨¢¨¢ˆš„*Š*Š••Q+8ëNˆÃ�ˆ°S«ïÜ�è¬ÿSqýúuø‡ÅîïRŸü©ÁÄl‹³-Ÿ Fý€„uó/0N\ƒÃôµÓ`¬ãSÞ»{¬é…ðÞ®1èH/„i¨çl®ñ¨ç¬¸ç,ˆ=\H!ÜsD¨õœ…ð.Ôsö®%¸AB&ö�EÇ§ \<¶Ÿ‚�ŽOµ{žº‹ÿ-«7£÷ÓÛÃá°S†ÛÃ’-NmzY<ïý‘éí­¯ˆÌ�×¥BD£¥L8œÍfK¯…ÐŸgôˆ»EŠ#�Q*Ë"Z|ÎE%ƒ
„RD¹È‹EñPIoPæ‘@Ø¦Žg[>AŒ"SMAï·Åb±€7Æ$³9‹´Æ²¸Éi¬ˆ|_¾«ë	;¾Ýì¸ûØ×—Ïs›”üÀ2>
ñ%ýc>ü^|›ð±K¹%¿r¾ ‡ªk›˜mêxq°ÔÃ™UÖÌ�ŒÞÏXbšæ<.3%+æ06i3Êâþ-Æ¬Š˜y¸¢pØH·†ÌW7 –ÑzÄ<x¨p¨’a†
‡>L›Oï üéý$-\8ÚŠn)t´>ÞcÊ‡Ú?Ö61ÛÔÑâìË'ˆó[_ª‘éo}@Šý!‘J±¸”ŒpJÂ–$Å&f_œæœŽ ßúˆêYhÖ7­u»×‚0tÁ™…·Û�„žÜèPEôò8º˜d84$€Oî)X ‘õ\ N�pÿ�892q
‹+ ÖŸbœä\Ù¡Dµ´ß´7s¹å në‚¯í-Ë{z�Ðn ƒEôíÎ– z1×¢!¼^¾DN¯ð5(D.×ÃÑõsR�Qˆ*BïÑa\
H„ >ÇÄœ�Å9Ž%LÅèNP#ˆj™íø›üñ¸„Kôù®x	ýIc@Q×¢€ý€+ !Æ§
—èŸýR°ÿK€`'‘�ÂÊ@‚�«	5Fq†Å0ÂŸ@ø5‚¨–U÷9ïV4­xçñ‚¸¯^.mðx<HèÏf5xqôê˜†•Xè!Oƒ¼Ó-{'á¼^03Wr�è‚�{»»»…ðà)ø0Ïx¤fá…D‚aÅJžÿH°D#ˆêøPû­£Wþg    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/img/volume_icon_onedrive.png                                              0000644                 00000000314 15266052622 0017171 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   “IDATxÚÕÑÃ0€áè,.‹S�Â£:Å©Nu÷§Í%NqªS\îþ½oß­­÷œ/ïwÌÇérshÐ¢Ú;9@ÂÒ„
	WÈ„;·@Q2j8xµ¨ŸÛ}8ùŒˆvê¡†G®!š:e„�:z†¨/k>ˆâ� $8CRtd‡¢ÿ»ÀBö˜ú‘vÇÙ?îû0òçN¿Fv    IEND®B`‚                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/img/arrows-active.png                                                     0000644                 00000000230 15266052622 0015542 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      "   üH‘L   _IDATxÚåÓ0ÑöA®’+E.Ð›O¡‹¢PÕø6œšPÂ«]
îÊ s‚ÏÉ£òùCÇ]à3 ³€]  9S@MòçñÖ®ÿ¨·q¦ÎM¾rO;ŽlÔ9y    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/img/quicklook-bg.png                                                      0000644                 00000000107 15266052625 0015351 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         'fîn   IDATxÚc`8‡$09íxLÙ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/img/dialogs.png                                                           0000644                 00000013272 15266052625 0014413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      Ð   ÷A˜k  ÁPLTEGpL      .28ÚÛÚ!3?¯×ü\JA€žÏUZXX¨º9*6BW‡¢ÐNUQLcdO]`ÇÉËƒ£Öšn<o�“¨ÇñÀÀÅ‘”–osy%"'E|¤Âå¹¹»KdcDt��¬Ý{´O–¥4'@x···¡»åz¯ÕÕÕ£±È••˜«Û<O’ÁŠÅˆªÝkko§4&�ªÔ‚…†v‘®t™Ïªu-0/,v�Ú�µ[T>k�Ë‰¼2F… À”K_º�; ÿÿÿ‘¼öŽ¹ó²×èÐçüŠµòàðô	{µØëý}¨ëACEéôúÕéü‚¬í9;>î€FHKÆééôúü”Á÷a£Ú�¼û‡±ït�ÞÊäï+-/éééó`JUšÕH�Ð›ËøÛÓÅ$&'ÐèñØïïÏììw¡æt¸ 0}Å£ÔüÖêóD‡ ïYA÷hRÏÏÐÀÑàûo\/UÂ�Æ5€—«X\`‰È <†ÊºÛëÂßìÊm ±ÄÓ3]Ô246TVY�Â4çK1o­àJMPò‡(K´ûÕt~²øWZ]Ûãë×ÑÅ<këÿšìR9É}"ðððORUÛíõ¶ÃÅÃ=-€²/U€ÂÂÁõ½Rþµ¢š¾ \¯…«àãäâµè> p®r§ío’ÒåB&–É5CeËr¢*ezŽú�|þžŠ‡´9©êÿe…§#p½ž¯Ä£§©–½ê�‘‘áªHÐä�]âûÏQ¼ßýQsØÙ÷�JlÑâè¡Ñ*ü~kvŽ¢jlmm…š‚»êbƒÂ€«BV“¤¼2ÆîUþâ�ŠœÁšÑ9Æðÿ¡´0‘¸SÿóÞUmys•òžÀhêt_Úœ7ƒ<«ÕDÑ‘2`‘5±Ïx©]ÖYFIe´€© Š£*‘ÉœÝ ¹Î—|{o²°¦ÏÚfööÊ5—Ñ„¸à¶âüÙÒÊl›Ý²c¼j2†AµËÇM   stRNS B:-Tþqÿ1`ààaCDì›ýÜþ¹ýè—™N´ŠõÞÏè¹ç¤¤Í¸ª´ârÆGø©ë~ŽôÛ®¼Ç±òúÔªœ±ïÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ'ûÏ  5IDAThÞ´˜ÝOÙÀí`Ç6a³vR5‘’*i·j€U´Ø}¨VÝªLp‚ÖÁ#øc!›¯Z	v°S©Q$”Pc„l‚H”Ž‘¼I„dUÁ‹\ RH*�„@H¤Q6+uÿŠžsïŒgîx\eú›Ï�óó½3ã9gtº–Z[œ`«µèŠ1ØâÛB„íý¸Í 
›«âÂœDZÈíÇ«ÌLÜ¶a(ú ˆz…9èÅfVÆ·á{$J‰
i¥AâÛ°»ÀƒC
Ã\µ�q1"yCi¯tÄåøÇÍ‰FXˆÆ? 0~t
ˆ>à€t;*lÇÉ &è`J„
t;:˜ŽÆMÐAíöœ@¾35¨aÉyãµf�FO¦¢(D±ËT8·b³èôñôÜ DôGŽû1Zh¦Wâz8„ôÜ”´g
…)¥`"Âà —LƒSxšS¸Mš²àDAni9ŽËZ^Qæ†¼tòzŽ¼¸EvD°m§sÞ!
ôß—¹ðŠÍ¤Ó×îÂ�
…†]©Õë,Æx.–âx�’†Œ�Ù`ÛÒÐ‡‡Â^¼’^Ü†–à]±à×ÒŸ‰ÃQ„‰AT‡Â¹ÜJüŒnCÕ>‚v�ƒªäŽ±m²1DÃ_±i~˜Me¶}¯ äÂ¢Bâe&é¦#Ý†t„Á•¸'FU<õæ µ„´Ž®ÀøŠ8ÆÃ�˜+"�ž‡�&6µ,†²3URòV�)3XÌêìÔŒe‡eFƒÞ¬‘ßf‹ÞDÐ[´Âp=j¬I‚µF³>X“þX ì|$i-ª•ÉX¨"»I¨Ø}ÉJö$¬Á@v3À3@Ð÷$ˆ­ÊË`å+6CÉœ	*ò~Ù ñ„d2|E>"æÊ`h“ªà+bzfC2°#‘H�nƒâ“q€lˆ†ýxGuø°	ºÅALÉÐf„àãD|¤é‡.°>Ôø+ØŒ§9®Ÿç±— 4#‘|,SõÁËÆ"~?ì�ví ìàí+Ô‡¤}ÓOˆÄž¤ð›màÑ=!êCÒ½)¶‰åoâ¸iIˆÀA˜Ä|¢qŽÛ¢�ÁçƒVoâÅ¶Bð‰øc÷KM(H„Æ,/	¾zŽKt_€V_(*å9.F¶±Ëg¬Pj"î€�ça†•ûçÅfÞ—©Áú�Œey¢Þ'µ`R¬~wHÈ/!6ì|ÆJëC’åy>†;Qàév>ŸIŠõ¡ï>ðc7F·òî`²RªÖ1`/øƒxÆ*×kÐÄ¸óWÖkÆò4šwøLÒÊÖ‡ÊdÐÏç¡äVÌŸÉ$+‹êƒ5IîW¼m!=5ëC¥”¼•?¯>=.ó�F}8z2Õžj§¤N×ÕŽ“ÙSÀ“SO€ßx~W\[²+8¿PEE*õ™ÅrôèQ³E„P ÁÔöºS©ö“,ŸéB§êÜ@Lîº@ý�Ç“òH¥ òmJCE¶‚Á�ÒÐ·$ÙÉxêR‹ºÀ);Ž^gÉµ“	ì�FíÒb'Q©w¡%/R›
ì°ÅÇ ”­Üî††;Î°"[´Ev"xJƒB�§AšØœ$g²�ÝtË#
u-57v€Ý-ìž5»ë[ËÀÖún‹–Ð¸»¾¼Óì,¯ïö.ê<�-8µ�ø~}ùu_Çõõ½^^ÿ„–Fˆ#tÝ›ØzØG…¾‡[‰AAKûÀ^Ÿ$ôí€ÐÈÒ>ð¢O*ê}/@ð°=4.¼–…×(ô’”èçÞÅ�ÑQiˆÑQþÚØÞ�²˜€ý£(àGâOº?ô¶3,þ}"£‡ëõßÓ�©8RM¯>¬ñ�ÖÏ®C÷ÿí[?kÔk½è�GªñÇª>bÔ|K@ãÐaàP‰8QH™�Âæó—Tœg¿i¹Ä©cÓ%®^	·ÀÕ3
cõc LsõçÌŒ0¦„[hêaÆe@àÜ˜l€0®®iZa	üÂ]ÒËB‡‚q‡x²—LÚ‚„Jèé‘g¡GE?,*¡ŸFè×€¦5ø‚£	a‡’¦¦�ð–û©ŒšÈKSÛ«�W´>üÑ,	Ð£ƒÌ_“ë5¨ Ñvg@Q~!
m2ÜÚ«×r}¨6ÝrY¶>è5¦>˜ÔÂX–­²€·+ÎY¶>˜Š‡ØUÖ‡jQPòn@Q“ƒü‚M¼Ÿäúp–¼Ä@º+9vD]àÅ€¥¸>˜,zy‘(3”ªf¦>0Õá¼ÆW˜ê0¦a(.SQaP%?¶0ÈÉ�é�…¡­¿ØPä6Ñ¦L{Yè‡¤îó^Nû¢Üv¨ÒžÉíLl1«)ÒHE¹�ˆ\“sfíÔåÆÅkrÎ¬™™ÜBsM0ñ¦•¤J×D�ºn¡§CyMØÄÃ´_èïP^aºGyMØÌÄäAYéÔ<~RÄzÄJ§!4M+™¦ ,d¦¢Ò”"zMD`ò
Ï-Ø&_à!)StÊ ˜Å?¶#=eVPÝªkR,¨Îèÿ!¨P_=æMª—�C*Œ�÷%–R¯¿t:�#.çß7aï‡ä?{:çÓÕÕ×*{Û&VWŸ:?¤Âàq8®:èÒÙÙép¸`çª“
·oßqÝ¾Z Óé¼zÕ{o¿¯0111âš¸V „k×pïZK­T¸wïÞˆëÞ• \¹â„½÷”‚K%´*„[·n­ŽŒ<¾Â€{oÉ6T(—‰DÖT¸ér=¾ÌÒ¼vð¯ƒ]§ë&œÎËÍêø³�g	gAøšáÄ_¾|	†(´¶^nF.Ó�žÝƒå—ÈòA‚Ü/�­­Í2—!þÃ^þppÖLå ³p	2nà=Ùyó¦¢‡æño¿»!
ÝÝä¹ˆÂEˆ�åbsÇøŸ¿+äÁÂ†¯ß‚°�B'9¸Ã.²|›x¶±±QºKÝ%…e–Bw÷W,ß¼¯`,aù*ñ|çÅÎs©‡_wwÃòvvî'º�ÿ¤+°áyþ‚0h¦³é,þ‰³¦Rù.£¥”`¶üŒêA¹°óBƒ…/LÞ÷\Í»û“’ñû»�ÔL>—×`75`£$“x"3Ü?JÁÍ`3×KóžÂ$p&‰ë¤q?©ðp²E¡4Dør¦4_ÒKùùÓÇO‹yüôséÇøôíì‰YÊÛ­­Y‰·ŸJÂ¯f‡çËçË‘™™µGd£|~xöcI8~¢ünW×]˜ö–€ò7wº Y>üIá¥óô0ÈÒÒpfpóîð‰ã…æ£á»¤ƒWKK¸ˆÂi‹RÀ.æß,íuí½‚Õ<´†OË·ÜÇÃów»¶`x2ÎüÞ®‡?’…Oð(ç¡ó7èÚZ[+ÿo»fàÒF–ÇñÄLÌLlð2É6ÆXO)°W®…-Û+=8nãiQszÇŠf+�H`BˆÐ°¨g¯(.R’Å@ˆÄœëº�ÍÆBBqcQä$BëõZi÷¿¸ß{óf23™qïŽ¥»ûMŒÏù}ò{ïÍ›yÎï÷^ÚØ%É½Å fððì‰ÄÎÎnÚø�äF@Ý 	3xØ}qg'&ëne¾ÿìÙnbwçÅ?vv^,q1é}ÓÅMàF´ƒe–uB§ûº‘ØE;»;Ïä�€“3/%–�‰Ýûè7çè’ç¡•	¢%3ú;A3ŒÞDQÜ„L0–6Ê¤gZ´ Œ†õ:õŒm0 ƒ±&dp&S>Eüó…|¾“¤çÕ�óW/]U'®Þí{ü§%ï\R.�
éËÑ–ÎK$ø¨ÇãýR¢	ð‘_Ì€öNál+Ñ{´ ð)V¤qIž°WFQjo¸?›Íz²½øÕŸí‡�÷PCàÊÿÈˆÆ½¨/¤;¼¦Z~ßÒr€^_ àk9GR§5¡ôíhÎÃ8J#û{I2W_ì½ÝNú’Yi:Wâ#Wöå@2éó{Ô O?êÉåÁb2îï²§ýÂ~<qtÙ]�‹Y�z¢Ô‡NÅå@5é¯Ïr"â³}ÙW�÷«ÉwžŠžAœÂ$™Lá=¸Á�¦Ï×ïTQÀ÷rÁ´ø H,Äþ~°nôµÅÜ¢D>¹µ.õúâ3•>2‡¹=ójû£0T“†ô”¾ìÓ´Ž¼ùý¿Þeï‚~aÞÅfˆ—fói4ZÒ
aîâŽ`pD#„ùs,øùóçÏ?Eó‡���‡0HpOUü3øÅ£G�¾Þ&ñ…<„EëIÓ§ÈC˜û|_µC˜à—R@%B	~ÀWAõæÓ;¡Œà0J¡|wt$8SO`x |¢¯aþøäøå#^/�ŸÐj!Ìßñò8H«‡0ïã*Žß×
aè‹ÇÒ_Ô¾÷�øö,;"‚éŸ§ ŸL…—fkýOšY¢!­,Š PNABºdDs
"’ êUŒŒhMAD÷îiMA¸Ð'î«Jêf¢Û·µ¦ ˜ü�º$	ÑíÉï&uZY¢IÍ,
Ñ¤vE�Öôcz¨zýúõ™3åëÓÓ+gôúßO?9½òFs½z�›Hœ^¹òF¯a_Œ,}Ì]À¤aßœ[àÖ¯�¼1èµìß.ç¯}}b hMûƒ…ï±?¸ðCÙ—ÿÏöÍŸ¶Ýú¶t–]Ç\(}\:Ã®³½-•æ–µíôoKsss‡šv�éä¤ôöB»¦�nýìÂõ&ƒbc™´‰'×ÛÔ�z£QsE˜<·0ïDdH;#R9ëíÌ,HR´3•*´�‘;còÞ�TÑhÍ[Åæ¦5™
ÄðºU@Måjtæ£‚3/ô‹%©ö�ç*VäÀ´XZÞ´\:¤LÆ†¨&_!yw 6æm”M4CÝ�‡6ŠÞ4-Îm,Ú˜;Dµ®®–ó¡(É. °¼±¿Ï¿—yÀ U*z�
LWQ6jR¯b_üþ>XåUlî‹�ÜßÄUÜ•W±	­#ÚÀ€¾°ZŽHªØ”
Î9“èd¢Ñ4]—Åu“3óV�A»H•£¹ M*kA¦Pm4óxˆâŠŠ†2yAh4¡gFvEEœ�pÑìÍÍÍx…6WµÁ˜)G
ÍEnZÚ$_½5š(Ø1�C]°Z#‘VÚ„—•³E$…Z‰ä¡¬\Ê1å3Ð‡ PVþç5¹{C´ÚÙÐ`/ÜJ€1F
�Ð'”•E"h½äóGöÔd³w²Ól§Ý¦Þ1+[Y+&ÉâZ…µªüGè¬$WÆ°æWŠ•Nåùµ°kócc�Ñv…�©±±Àk‘Ÿ-"û€w !àee�•ú ;×�o-Þ�sc˜è”4ÕZ™ç«÷OMùùÒX Rk)ÍúøÖÍ¯ÀkžÀEVta«3  WlbÄ[Ä�“9™_³@gœØQât%€JÈe²S ØqÔl°£†�‡o|¬ L#~x�O½²2<ÞGÆ§Eðgoÿø0ÙN
f¼‰x\ôÐùÍÉÉ÷£­¸ünaÏh\lƒ=>êáw>�¢¿0ê�ˆ½°ü$�îJ£~ÿªx*6ë¯Ó¹,[»cì…ô”Ò>µj—ÜmlqIJét®ˆÚxÚX:][tH§ÓY¶ró»#Kí)¨’MKg+_Ïýk¿F€�êýÄ¿¦ò¬íæáÑ²Œ°Ø+‘lúéÓ§él¤b§tG
vº²Z™fíèàÁ!"J‡G²«—±X,d¿E ~§u£YqpSëF¤qtpç3åq¼ºeB›ê�úu½ìhéª¡¡ý`hý/š÷ºúQÊfÅ²©>Ö1kkW·9‘0wwµZ-u«é`îæQÑêiw«Õ¢˜_ÜÝfs(žÜÚÞÞJÆCfs·[:Õ0¶V³Ù‘ÜÎííÍÏïíå¶“³¹UB€�Ë óÞh!±~·™+oÃáÜV‹×Û²•t»ÌqnÒÆÚßs.—Dû‘’ æöRÎeeHÜÃÔ^y�# ŽJ¹\ê!ÇWB[»cÅ¶oñ¶¶¡3¹­¢ÃeEí¤Ü\&µ·�•Êz½Ù_7
»m]±2üµ�Bš§RåXª£Ù5ðæð¬DáT1ÖÑŒ G¬ŠdvpŽw .ª1š±pNø6Â ª#‹5‰@æY¾\b±ê9»Y(‡«±4wÄª©™™0z…Áž@%¤0id[O¬Þžá��}‚7ÃÐÍ6<TŽ‡³[�˜X€ÙhÝärgþŠ5ö%R¹Ž&<Z6'�% Ø	 nþŠ`š:¸2OÌ,‰ÀlFp Óí3!ÀÛËf‡Ý(\²mnˆ0rBõƒ�s·Õ.ÚF BÕW³3|í¯ª!°K·Ò3�v<‚•«¯@Õ2<Ì¹ìŠ­ö†v§«ö´ær¶”7¾©±ÝÞãâ8W�½½QUÑxÁº±©«©ENõ;åÐ6…?LTíéåß?Ëa‚çe”J    IEND®B`‚                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/img/edit_tinymce.png                                                      0000644                 00000000362 15266052625 0015442 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ¹IDATxcP,½ø@©ìÒr0Hï 6@ˆ§ìzüÂöÇ¤€ÐlÒxå¿mÛµÿ½[á7 ‡f˜Ì|`j6¨»ò?tÊM0VF‚Ã L›AáØ·ÿÜ%+�=û_µê>¦w< dã4@èª%‡ŸýW«Àâ�šËÿmZ¯ýoßô$‰ê(ÐÕr�hÝrfchÆg ¦!˜š	€0¤kË#¨f2“²YÓÕÿ*åƒ=3 ým|TM*e    IEND®B`‚                                                                                                                                                                                                                                                                              includes/File_manager/lib/img/volume_icon_box.svg                                                   0000644                 00000001256 15266052625 0016172 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><g fill="#0288d1"><path d="M25.6 18c-3 0-5.8 1.8-7.2 4.5a8 8 0 0 0-12.2-2.9V12c0-.8-.8-1.7-1.6-1.7-1 0-1.6.7-1.6 1.7v14.5C3 31 6.7 35 11 35c3.2 0 6-1.8 7.4-4.5 1.4 2.7 4 4.5 7.2 4.5 4.6 0 8.1-3.9 8.1-8.4 0-4.7-3.5-8.6-8-8.6M11 31.6a5 5 0 0 1-4.9-5 5 5 0 0 1 4.9-5.2c2.6 0 4.8 2.4 4.8 5.1.2 2.7-2 5-4.8 5zm14.5 0a5 5 0 0 1-4.8-5 5 5 0 0 1 4.8-5.2 5 5 0 0 1 4.9 5.1c0 2.7-2.3 5-4.9 5z"/><path d="M44.8 32.4l-4.3-6 4.3-5.8c.5-.7.3-1.9-.3-2.4-.7-.5-1.8-.3-2.3.3l-3.6 5.1-3.6-5c-.5-.7-1.7-.9-2.3-.4-.7.5-.8 1.7-.3 2.4l4.2 5.9-4.2 5.9c-.5.6-.4 1.8.3 2.3.6.5 1.8.3 2.3-.3l3.6-5 3.6 5c.5.6 1.6.8 2.3.3.6-.5.8-1.7.3-2.3"/></g></svg>                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/img/volume_icon_googledrive.svg                                           0000644                 00000000337 15266052625 0017707 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" version="1" width="48" height="48"><path d="M17 6h14l14 24H31z" fill="#ffc107"/><path d="M10 42l7-12h28l-7 12z" fill="#1976d2"/><path d="M3 30l7 12 14-24-7-12z" fill="#4caf50"/></svg>                                                                                                                                                                                                                                                                                                 includes/File_manager/lib/img/spinner-mini.gif                                                      0000644                 00000002632 15266052626 0015361 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       GIF89a  ó XXXzzz¾¾¾œœœ666   àààhhhðððŠŠŠFFF$$$¬¬¬ÿÿÿ!ÿNETSCAPE2.0   !ù
  ,      @pðÉ—(uJµ:ÑS"Š‹¡$† GÖJÇñ…Ð‡"SÚa0	‡¡µ%…¢$RÊÄA œd„ÏCÀœ-Ã�×“)LÂXwVrP5Òg¥�*"A`ýš	
:1o! Y3�  � !ù
  ,       ]ðÉù’‰Î%™<C£IEÂ8c£D0ap'CaF–I Cá0[´Ö£�XÊ€@@£Âè7i, ÛÃO±h$�ƒú(Ö óUÐÆ%s!s•j# !ù
  ,       ZðÉùˆ¢X"¹XJE&9@Ò%€˜TFÓ5Ó!HAÑ€‹¢Æ¡=Í # ³‰ ±R.�ŽpÈ|®�€VÄ}Àº„¢Ù%	úª’(ðÄ�Œ!Ìà9÷‹ÏS" !ù
  ,       \ðÉ)	½2¤–öç!Ø&B¢É!)ˆ¼á%Ö ¤‡ê!`ˆ%Š¬–Øb0p€rÙaè(¡Ëa|P–ãD�}ŒÕBIBÐ²&Ü-·Ãõ !ù
  ,       EÉ‰B XiÏÜÖ!(^G�0ˆQX^O€±aõJí˜Âä€ ø‚CÉrÉ”>CŒ@–9N¦"BkJf¸PE  !ù
  ,       kÐÉé„ Ø¥&U�Á‘%§(ŽÂˆÙ�ç1 ”Ðˆ
aEÅ,’„@!HL€£À’8”Ä‚`Ô®U
 X(®Ø�Á ¢˜C�€A6O	0x0&ªCÒ1ÈfJPh#ilŽ~ !ù
  ,       [ðÉùÎ¡X
IÏÜÕxÄJJ2>KƒYÉÓ�HË-t† Lâ‚A¸&‰$¨�@“ÊLcQ(N@#ŠÝ<1P Áx$n…ÓÀ x\y ÄšHŒ;Ç1(„) !ù
  ,     VÐÉ#…�MêZ¯@Ûæ]Èå$§vPN8 HÉ�†Añn÷¦˜¡  @Ì5€ìH+k¬Ã±Û
Åb:[øƒà˜…WÊ Q86—ÁÚÁ ª4€c !ù
  ,       ]ðÉùR¢XÞwŽv\G„Tâu‰âa›e	�¤L xŽ/å (
'‡€²öa0®áÂ`èM…Æa(x„bñ 0ÂÓV(ÔzÁ	#Ñ~ >Ç· !ç6J9 !ù
  ,      ZÐÉéR’‡ji¥ØZ÷m™v”ÄN�"\TI©2ÜØìBaü�àJœ™„°r¼&	D�)aÔŒEÃ¡ 8ICF ,ƒ-LSp˜�öF`u,‚5åF¡ E  !ù
  ,      XðÉI_ªx¦SÇÇE†R‰‰ð	¤ñM‡ZFÓ‰£g�à Ç`ÈøŸDc�±U ’—D�p>
�âà# $‚D 7ˆ–7`¢&HŽ€&Š¼² !ù
  ,      ZðI1Ž¼ø
Ã²—€Ñ|R÷†áÉiã•°áY+)Å²(žÙá`�¹¡¥% xp²Àcài( N "0lN°Ód PH–‡N]@<Ì�F`}q¿¥�/)ÃD  ;                                                                                                      includes/File_manager/lib/img/tui-icon-b.svg                                                        0000644                 00000046440 15266052627 0014757 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-b-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#555555" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-b-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#555555" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-b-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#555555" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-b-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-b-ic-delete" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-b-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-b-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-b-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#555555" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#555555" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-b-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#555555" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#555555" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#555555" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#555555" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#555555" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#555555" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#555555" d="M25 3h1v9h-1z"/>
        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#555555">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-b-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-b-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#555555" d="M25 3h1v9h-1z"/>
        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-b-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#555555"/>
        <path fill="#555555" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-b-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#555555" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-b-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#555555" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#555555" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#555555" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#555555" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#555555"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#555555" rx="1"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-b-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#555555" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#555555" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-b-ic-text" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-b-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#555555" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#555555" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-b-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>                                                                                                                                                                                                                                includes/File_manager/lib/img/volume_icon_local.png                                                 0000644                 00000000545 15266052630 0016455 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ,IDATxÚÝ�µYQFïº»»û†Û`))9¬°å�âît0³®#ïÇ!Âí~ß}çššþG,..VËo¤W=;;ëöx<3õz½1i<ÑhtËd2¦éT$"C…ã7h4zj6«Ì½VN§SO>Ÿ/°;µZ­xžgpÄq/áK<¥X,Çƒ¾@ ¥7†Óé‰ÂUN&_,Ãa„×€³>_8
W=�Ýáp8år¹Èf³{Çü7wv€á~Êg{˜N…\$Ð³ ‹‹sÀ¬¢ø2P³Ü	TƒÁ€Ž�Oèðð í=€ê’D�!=À5®ii}…àª{½žfccãº\.ÇËåÒ«:¬Mèàrç.™Íæ9»Ý^}pÑŸŽ|p<d�WÌG,Íh    IEND®B`‚                                                                                                                                                           includes/File_manager/lib/img/tui-icon-c.svg                                                        0000644                 00000046440 15266052630 0014752 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-c-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#e9e9e9" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-c-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#e9e9e9" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-c-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#e9e9e9" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-c-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-c-ic-delete" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-c-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-c-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-c-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#e9e9e9" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#e9e9e9" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-c-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#e9e9e9" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#e9e9e9" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#e9e9e9" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#e9e9e9" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#e9e9e9" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#e9e9e9">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-c-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-c-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-c-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#e9e9e9"/>
        <path fill="#e9e9e9" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-c-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#e9e9e9" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-c-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#e9e9e9" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#e9e9e9" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#e9e9e9" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#e9e9e9"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#e9e9e9" rx="1"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-c-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#e9e9e9" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#e9e9e9" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-c-ic-text" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-c-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#e9e9e9" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-c-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>                                                                                                                                                                                                                                includes/File_manager/lib/img/edit_simplemde.png                                                    0000644                 00000000220 15266052631 0015737 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         íÝâR   PLTE¬Õaÿÿÿð÷âðøãäñÌæòÏûýøúýö¤€È   3IDATxcÀ„”””ÁWC Hà`¤§%‚biiŒP1F\ŒÃHII›Õ ƒJRàHFª    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/img/editor-icons.png                                                      0000644                 00000005237 15266052631 0015367 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      à   =¿J  îPLTE   <B*;>'+òóõ@;;S¿Þ&«¤J[GGG¤—3EK	AYPr>==¤—•Ôé_Ãà¤—{œßâè5@GGMV——˜´¼É@@@&#]‚cab_ÁÜD˜È�“’Äo8Qwv===~‹…GW!¤—GX¤—"+ZªÍ¤—Y‰žROOŒ¾‚°—¥–„›•0� \;Bbxy¤—æòâ”z†1Nl¤—,*+J¨Ñ'1<ƒŠ‰B¥¡PiXHH?!</%'bËâ®8Uì“Ikkk LYD`m-$!NµØB_€J¦Ð�ššvÒãQ¿Þ²r4I§Ñ—¢´Ö�E¹ ƒÿÿhÖ¡?÷‹.uŽXLz°ÿÂHŽ›¨¡@3™¥µnw`çÅ�ÿÿÿ¬Õaÿº6¤—ŽD­===LYOºFªÄÞ™ Ÿwwwˆ®ÔÏÑÑÊ%ä *Ó )âðÎ¦"«!ðøã`“ËÄÊÂ¥§¦ EªäA hÌäÛh}D‰PÚ(+&' xÂßK´×¹¼º¢!À!�´ÚC ÍR…Â¬°±{Áwb¤LxÑæTÉã·ÍâM»ÜaV6­D½28Þ"+,u)	)	»æòÎÜè}¨Ñç¨«0�ZÌPVtBKF¶E„ÉâÑß×ÿÆ] m[ƒÂG¿@FÌ19°#)³"Ðïö³ÝídµØH¬ÓpžÒîÊÑP¸Ú”—]‡ÚMS!¦FB¡<512a#j±ü\˜êZ±ÖÿíÊÏ¯Ç\ŒÂ ¤j,sSK¯BÝ9Aœ ?¦àì�›Ææ´ºë›¹á—Ÿux‘â‰�ànsÕdnd·iD£`ÅÙÓÕW‹ÒIv­ÿÛ™Üa“º^v ˜U7‰2w/²©ËUªÊ¯Ã÷{®X•ˆØƒTªi›ÖDn;Â(.¹
±¿Ä‘šÂŽÌÁ�…§—Ç— qƒÑwz�Pfü3fÎ9^_µ[t´I(Ž8,6¸ÛìÄØqŽ“»«J�ÌF™FÕšBÀåOA   etRNS &þ¡þß‘]JþüíÍþöÀþû\;þ·ˆvþýaþýôëÛÔ¼›Ž�‹yaGA>4*þýýýûùô¼¸ þþôð²§oþýüüÛÛ±ú÷òïêêÛÙØØÌÈ¼·‹‡€Lþþüú¨ššŽ†…�F@I  ûIDATHÇTÍ±1Ð£1m<@n‚“áJ:„bWv“&‘»”iI²@ê›‚1X€Ë¥âw~–¿'û D˜ÎöŠÏ©ÇxÃHH\:<(N@	l‹û\êö£ã†�Ë§Šo� kã�ñŠF–WÏ\æAr}uX¤ „¢dw%~ 11³;7!hâè²�CTP‰Í·v8ïU¤µ¯sóQ‚š¥¦œ››¬j¶Ìnß¯Ë‹J­õþêÓÈí¶ÚÓôŸŸ23Ñù("™P ç" ŒŸ
& "P&”‚éH˜˜$n„|†¦BT!9›[1}ƒßû Êç‡A ˆÂpC– ¸ç ˆÿ+8ftUáMÚC�¬ÞàjË”–-†qïËñâ²L¼UTÑ–ÀØŠ_LRdÄäÃBµþ¥Ò½ÀZA¡ß€áu	Æ8èL¿Ã’f˜Í}Ñzo:Ä‰B\k=—�â›^¶ óÇ‰Ž;�ßw
M Í~aÃƒ)€©™þ�çÚ/çdŒ£0DÑÙ[¤§Ùr‹Pìr	$ÄèU$7Hø
ÖTiMIG¹$Š8Dr!ÆN¤/‚ç"z/vl9©¶E~Úµ-‚¸<ÄÓ] î‚¯oûŒ²ºs­ËÔ‰ŽeêC�;7—¯¬“2][«em*ªj‹¹dÉä£“mQà8úärÏØÞñ8¨Ã ÂvA�x/DEˆ¼Æc!À£ð1™�x-¬ðKþšH6¾½Ã<cæÍ*û
.˜YÍµÌ¹úoúñžY)ë:£”÷å½
42ë>§…„®Qg+…}¿ *|×\"MÇ	ÿÅò/²\çô9·2Ê-&©8Žãn£T¬‰‚\–N»‘ejjšÚìºjë¡¶Ö}]ÏÆÎÈ&‘làÈ¤…<Xö Â�ñ ê¶æƒDÞ-}Ð¥y›Úý¶Zµzë÷? ó³Áï|?ü~çÿ?¶³ýdfæIA"f²	€�S[Ó	§°¢¢ÆIh’©ßÓ‰¬ù?ýÓcŸ³npO&Q<?ÖÛëé›ßqó84°�ócO__ß˜G¨�¡Ë„ð}:›ÐVL÷�víp–ÁÄžç�lÃõ}£]]Y7s±¸ÖÙù«€Ôz¢â"Qó®³¥e` kr²�ØµÅkïÞZ;ùömÏ€F“�—–<¸ÕÒÓÓ3°cW.œ²àÍÃ¬’§-�ßCÖR[Íh~h×hvi«Eòñ7µN§Ó�›xÁf”åæ–e0b	-gç�ÍLD‘¿yCþ™ÓèX
U>ÎâÞñ…P%S%,ø3föòœÈf¡-~Ñƒ2Ä*~WâÛw6Z-)**z�wåÃÞBþßKøVë+?J$G÷ÏÌ”ü†@\)áOé|ô�Ïã\Í+šú¹NOî=WÉÃ[||~aåÎƒ’³>%òy>~á�¼ÙÙ>ß*Þù*_aÊFt*›Çç­‡3<Þtæ0ç /%QäA½z
±ÄP—`Ðÿ°˜Kç šƒÁ ÑhjkQÍÜKàöÜÜÌ�êëŸLL˜0mm÷–Dè{Èd²$D}Äjýn¡‰'!�Î
ÐÄ„N÷JÄ„©Í¢ÓÂ¤èŽÐ;L
EHg±F–ÄK…" ³(,Öî˜ø‘nEÀˆ‹n+ÌÃWw €Å}KÄj‰„`«N·Äþ;4¤  Ú	Ô"nšœFáL7(Z«Êe²5ÔUT$!Ì¶¸ØŽ�¬¼œ&*’à
ÃEk(Q…ryù¶MòMh¸ÂºÊ‘ŒIÐIuoCi4Q•+� Æ…\Æå&UÉ"ÁJ‘¶\¤Áã'�¤=>B,Q©?º‘…âœ†w‡0¨ßR`kõ»£‘u°™ R=õ"†FÏ¡!ñP<±Ù;È¤¸™A»¤Ò`5}dÔ1î`Ò…t¼a˜6I­›lhh(�Þãº~�žlÀYˆZ =¨Çq¼´tTSªã³C/f¡˜Ø£gŠwïÎG@cë�­�*•R‰ÁÄrT¨À´âÜÚªŠ
0àÂa¿?ìVb&Ùl¶A¿[iDJ¥Ê?Ô?4ìW©ûíXømÃƒ6ñ~2‘Ñ=dSŽŒø{¡Ýî5w€±¹GìncL,Ìzí÷¢Ñ¸Ø?¢cÁÞ;k´{†Í.¯×Õ®Ff{ï¬Ëk³}‚¬Fj0f—Ýev¹Ìíêº:¤Æ´cÔ›šP 
ŽÏž¡& p0’9¥‡•r’ˆ‚¹:•t|ùâ SEL*sH’t|ýê€ÂÃXMR�FŠ«ˆ�’SIà:<®©É†PÎr‘ƒÈå"u…X1²â¦ÿ/+@]ˆ–¶^�ž^Û:Liµdìá †€“säHGÀ€ð`Ä£ˆç €å    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                 includes/File_manager/lib/img/volume_icon_box.png                                                   0000644                 00000001155 15266052633 0016154 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  4IDATxb`eËY?W2ÓR°hîÆõ®ÝÜb9¦Ù·è&fI‚ ïO8Û¶mÛ¶mÛ¶ñlÛ¶mÛÆÚ;yS�Ž{ªˆœVÖ7ÍPD4A¢Ð€B©Ñ!­BˆW^yXò.‹Þ†wÐ¸þèsÙÍ[@´ÿC«Ó‘X;¶¸c¢ÿu0ÝðÅ¨{ \@ÇqÐðIj­ç>ØáÄkhø:õSD6á¡K6Œ#Ëð5 ;~Çˆ Pk˜V]ÿ‹5×õX›À�E`v@ªT3-¹òË®êQ"Êë…(oˆf•F•––È�‚DrÓ¼0ÿ¢v=³åK}ªãè;'äV4¶ñŒš¥J¦é§cÆÙ¿XuÛŸ�bñÄ,³ÎéaóKÔ‹dÌ×"S2 Är¦	Çbú”Ö	¡Tkiê°ËæûÃ92§�—j…2¦‘‡~`ã;š"<@(W¡°¦#ÿÄ�Ä6^¨j‘0M:¥‡QGþ ¤VˆÞD}ú>©¼ÿ¼â
éÏÌË eMb¦÷1è»ë+¦œ1Â}Óp\øé��û~bÑ5:%4JäÌË Å¢6²ÌÀÜKfèµãúîþŽÝ¯\‘]ÙDÇ‰êV)ó1@a½°�hêr•ÍM�ü´e*_åÒcò½e—Š¼Ú–6ªäi)QÊ«‘‡Ôµ²ñ›¶)èsÅÍG 8oÝ½÷e· ®ží�žø7éÂÍâ@‹w2¤­â ô‡¾peð    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/img/arrows-normal.png                                                     0000644                 00000000251 15266052634 0015565 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      "   üH‘L   pIDATxÚåÓ!ÄñÝ"t•®” ô|·ïc× ë°ÖN€ù!elÇW/Fñð@â1"-#Õ ¨ V~ÙÞ¾hÕk=4Ö Zö  ô""€D€É²�Ç×ŒëÜl£—ù×oÀ6D Þä‘mœ¤íSDAL    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                       includes/File_manager/lib/img/edit_aceeditor.png                                                    0000644                 00000001002 15266052641 0015717 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ÉIDATxÚÝ��Ü|ÀÿÝœmŽ>³Æ°ÆY£Ú¶mÛ¶mÛ¶m[Ù='¯�Ôóžò0$%%�Š‹�SqTbbâp~*¦bE~ cþ¨4¢9
.\wøë»©©©|¡¹¹¹-Êõè & ,�R6î¯é0	hüÕ€„„€á¾%ÚµöòòT(xù*ƒœƒ9­
Swü) D Ëù2G¿yè¦÷›³\]];™êÝ£ýJ¶kaU(6»†Mse\�¿é½ð"·žçòK˜;�õ\L#Mpdäàt8áô”íåË—>š®cÓ\°kî`À¼¦ùP
¢Â©R6�Koàå*LoZ¡ò ]ˆiàÐõ>øûùÍˆï´\ÃÓ4-6KKÕñ÷,]}ÒKŸ»ýJÒúí“KŽI|§5‹ààà!1í—~j®6ì”T›ôØxá~†XóBÓ�SŸ[ùÄž{$©Ç‰i¿L‚‚‚†+€õ%[­ˆs÷	ÅÍ'wÜ}š;Ö+¹™�å„Ì7²ô‡dê�Ù68v/PÂðj›¦Ù xZ­_|Â½lv;( Q`š�þ"›�³Çß÷öö>Ô#oÀ[¿-çJÐ|‰{    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/img/volume_icon_trash.png                                                 0000644                 00000001302 15266052646 0016503 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ‰IDATxÚ}’Ì-G†ßÙÁÑ~;µmEuPFUT›Qm[ˆ¡¶Õ¶�ccÍ~‹J÷I–ó~Ï�!c‹}Ö?pß¥™‰ñ�ÇÇÖli;îÒ²Ri!xÔíÞ‹ÂðçÞ`øI·×ûáG/úê‹ˆDpúÅW©í¶Øü¸õçN!Áz¥BA5;múÂ(D¦ñH7-»Õí}[o¶ïøé×_ï¿á‚ó<brll«ÅÙéK×›Ÿ_[*æ�(B)—ƒZðüœsH¥Ó´À¶ò<ÿên¿ÿ1€wç£’a˜×u¡¤€¤kl|aÂõ<8ŽÓvàÓeZú½~1ðýe …¾úµZ{oÅòÒ^ë-Ì£XÈCÓ…XTÔëÐluP©7Ðlw`XÖ;B©Ïþ\vÎ©�Ëo½çñj£½WÜëôørùFºA]*l¢Öl¡7Ô¡”B<~ÉY'7SAÆôÔ¤=>1Ý4ã ÚÝ>º‰ö@ÇÐöŠ< }ŒONÀwiX2c¨wÛõâ‡n¹ÈåòàRŒCÐ3Š�\Å¿1š¦!§<ß‡ã¹ÉhÓBøƒ Bp°´úß‚ˆÔœùœ‚’2yJ)éT( qÎ˜Æ(»Žäiñ¤$HŸñ%¨�äë‘„
$PJ¢@‚ôLHz’<Áÿ	B‚sžö,E"ús
Ô–<5¦ÅÙêµÚ×–evV._–HŠÅ”J×C
™Š…ƒN»õ22î»óö·¤àSà”¥ù¹õ”TJc`J
Jáš¦Q®”½çÙG|…Kqø‘Çl´ùæ›ïºjÕªÍÈ±Æ÷f˜æ@×G_UËå·^~î©Ï*?ýè!ã7ó�#—XÍ-[    IEND®B`‚                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/img/edit_tuiimgedit.png                                                   0000644                 00000000275 15266052650 0016137 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         íÝâR   'PLTEÿ»;ÿ·.ÿÿÿÿ²!ÿÇ`ÿÛ™ÿ½Aÿ¹4ÿíÌÿÃSÿîÏÿëÇÿé¿ídm   QIDAT×c@ FÃÈPPPP ( ŠPaCH,Œ�ÌUeg„Šx‚,Z�†“{˜!¢ÂPfLš((¬b€M-(�„# Õà
ŒSð¼,    IEND®B`‚                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/img/volume_icon_trash.svg                                                 0000644                 00000016226 15266052650 0016524 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="175" height="200" viewBox="0 0 46 53" version="1"><defs><linearGradient gradientTransform="translate(643 -1191) scale(4.95289)" gradientUnits="userSpaceOnUse" y2="357" x2="482" y1="357" x1="413" id="j" xlink:href="#a"/><linearGradient id="a"><stop offset="0" stop-color="#60a016"/><stop offset="0" stop-color="#98e90d"/><stop offset="0" stop-color="#64a616"/><stop offset="1" stop-color="#99ea0c"/><stop offset="1" stop-color="#61a017"/></linearGradient><radialGradient gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.9529 0 0 .83705 643 267)" r="34" fy="354" fx="448" cy="354" cx="448" id="k" xlink:href="#b"/><linearGradient id="b"><stop offset="0" stop-color="#aff637"/><stop offset="1" stop-color="#5f9f16"/></linearGradient><linearGradient gradientTransform="translate(-46 -1244) scale(4.95289)" gradientUnits="userSpaceOnUse" y2="336" x2="580" y1="288" x1="580" id="l" xlink:href="#c"/><linearGradient id="c"><stop offset="0" stop-color="#a4bcc3"/><stop offset="1" stop-color="#b9d1da" stop-opacity="0"/></linearGradient><linearGradient gradientTransform="matrix(4.9529 0 0 4.84448 -46 -1201)" gradientUnits="userSpaceOnUse" y2="284" x2="631" y1="284" x1="543" id="m" xlink:href="#d"/><linearGradient id="d"><stop offset="0" stop-color="#9beb0a"/><stop offset="0" stop-color="#90e612"/><stop offset="0" stop-color="#6fbb16"/><stop offset="1" stop-color="#8ee518"/><stop offset="1" stop-color="#89e31f"/></linearGradient><linearGradient gradientTransform="matrix(3.07055 0 0 3.13001 2739 257)" y2="141" x2="86" y1="7" x1="23" gradientUnits="userSpaceOnUse" id="n" xlink:href="#e"/><linearGradient id="e"><stop offset="0" stop-color="#6eb314"/><stop offset="1" stop-color="#97e70d" stop-opacity="0"/></linearGradient><linearGradient gradientTransform="translate(464 39)" gradientUnits="userSpaceOnUse" y2="361" x2="567" y1="275" x1="560" id="o" xlink:href="#f"/><linearGradient id="f"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><filter height="1" y="0" width="1" x="0" id="p" color-interpolation-filters="sRGB"><feGaussianBlur/></filter><linearGradient gradientTransform="translate(471 39)" gradientUnits="userSpaceOnUse" y2="362" x2="608" y1="275" x1="618" id="q" xlink:href="#f"/><filter height="1" y="0" width="1" x="0" id="r" color-interpolation-filters="sRGB"><feGaussianBlur/></filter><linearGradient y2="357" x2="482" y1="357" x1="413" gradientTransform="matrix(6.30935 0 0 6.17125 37 -2027)" gradientUnits="userSpaceOnUse" id="s" xlink:href="#a"/><linearGradient y2="361" x2="567" y1="275" x1="560" gradientTransform="translate(-76 -1276) scale(4.95289)" gradientUnits="userSpaceOnUse" id="t" xlink:href="#f"/><linearGradient y2="835" x2="2087" y1="1161" x1="2121" gradientTransform="matrix(.33568 0 0 .28176 2133 -120)" gradientUnits="userSpaceOnUse" id="u" xlink:href="#g"/><linearGradient id="g"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#89d30e"/></linearGradient><linearGradient y2="362" x2="608" y1="275" x1="618" gradientTransform="translate(-24 -1270) scale(4.95289)" gradientUnits="userSpaceOnUse" id="v" xlink:href="#f"/><linearGradient gradientTransform="matrix(4.9529 0 0 4.84448 -46 -1201)" gradientUnits="userSpaceOnUse" y2="281" x2="629" y1="281" x1="545" id="w" xlink:href="#h"/><linearGradient id="h"><stop offset="0" stop-color="#5f9d16"/><stop offset="0" stop-color="#8fdd0f"/><stop offset="1" stop-color="#65a816"/><stop offset="1" stop-color="#88d40f"/><stop offset="1" stop-color="#5f9d16"/></linearGradient><linearGradient gradientTransform="matrix(1.2687 0 0 1.12163 2134 -136)" gradientUnits="userSpaceOnUse" y2="237" x2="557" y1="374" x1="571" id="x" xlink:href="#i"/><linearGradient id="i"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><filter height="1" y="0" width="1" x="0" id="y" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="3"/></filter></defs><g transform="matrix(.10238 0 0 .10238 -32 8.8)"><path d="M540 339a171 30 0 0 0-172 30 171 30 0 0 0 0 1l4 21v2h1a167 30 0 0 0 167 28 167 30 0 0 0 167-29l4-23a171 30 0 0 0-171-30z" fill="url(#j)"/><ellipse cx="540" cy="369" rx="171" ry="30" fill="#599714"/><ellipse ry="28" rx="166" cy="368" cx="540" fill="url(#k)"/><path d="M746-28H335l38 398c0 2 2 3 4 5l10 5c8 4 21 7 36 9a764 764 0 0 0 271-9l10-5 3-4z" fill="url(#l)"/><path d="M539-72a218 38 0 0 0-218 37 218 38 0 0 0 0 1l5 26a213 38 0 0 0 0 1l1 1a213 38 0 0 0 212 36A213 38 0 0 0 752-6h1l5-29a218 38 0 0 0-219-37z" fill="url(#m)"/><path d="M580 67h-68c14 4 23 15 31 29l21 39-16 10h56l30-49-18 9-12-23c-4-8-15-16-24-15zm-76 2c-5 0-10 2-15 6l-28 44 53 31 28-46c-8-17-23-35-38-35zm136 77l-52 32 25 48c25 1 57-8 51-33zm-162 1h-58l17 13-16 30c-7 14 6 27 14 32 9 4 22 5 34 4l21-35 17 9zm98 65l-28 50 28 50v-20h26c9 1 21-5 25-14l33-61c-11 11-25 13-41 13h-42zm-153 4l35 65c7 9 20 11 34 11h38v-62h-71c-11 1-25-2-36-14z" fill="url(#n)" fill-rule="evenodd"/><path transform="translate(-2366 -1440) scale(4.95289)" d="M553 292l7 71h9l-8-70z" fill="url(#o)" filter="url(#p)"/><path transform="translate(-2366 -1440) scale(4.95289)" d="M622 292l-7 71h-9l7-70z" fill="url(#q)" filter="url(#r)"/><path d="M321-35a218 38 0 0 0 0 1l5 26a213 38 0 0 0 0 1l1 1a213 38 0 0 0 212 36A213 38 0 0 0 752-6h1l4-24A219 37 0 0 1 541 1a219 37 0 0 1-220-36z" fill="url(#s)"/><path d="M363-14l3 28a213 38 0 0 0 44 8l-3-29a219 37 0 0 1-44-7z" fill="url(#t)" filter="url(#p)"/><path d="M321-35a218 38 0 0 0 0 1l1 4c3 5 11 9 22 13 12 3 27 7 43 9a1064 1064 0 0 0 345-7c11-4 19-7 24-11l1-4A219 37 0 0 1 541 1a219 37 0 0 1-220-36z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" overflow="visible" color="#000" font-family="sans-serif" white-space="normal" fill="url(#u)" enable-background="accumulate"/><path d="M725-16a219 37 0 0 1-44 8l-3 29a213 38 0 0 0 44-9z" fill="url(#v)" filter="url(#r)"/><ellipse cx="541" cy="-37" rx="209" ry="31" fill="url(#w)"/><path d="M321-35a218 38 0 0 0 0 1l1 1a223 37 0 0 0 1 1 219 37 0 0 1-2-3zM751-3a217 38 0 0 1-212 29A217 38 0 0 1 328-3a213 38 0 0 0 211 33A213 38 0 0 0 751-3z" fill="#5f9d16"/><ellipse ry="31" rx="209" cy="-36" cx="542" fill="url(#x)"/><path d="M541-68a209 31 0 0 0-209 31 209 31 0 0 0 0 1 209 31 0 0 1 209-30 209 31 0 0 1 209 30 209 31 0 0 0 0-1 209 31 0 0 0-209-31z" fill="#609f16"/><path d="M721-21a209 31 0 0 1-46 8l6 5a219 37 0 0 0 43-8zm-349 2l-8 5 44 7 9-5c-17-2-33-4-45-7z" fill="#fff"/><g fill="#fff"><path d="M728 0l-4-13-13 3 12-4-2-14 4 13 13-3-13 4z"/><path d="M733-7l-9-6-7 8 7-9-8-7 8 6 7-7-6 8z"/><path d="M730-4l-6-9-9 5 9-6-5-9 5 8 10-4-9 5z"/><path d="M722-3l2-10-10-3 10 2 2-11-1 11 10 2-10-1z"/></g><path d="M720-28l2 9-3-4 3 6-6-4 6 6-8-1v1l7 1-11 4h1l9-2-5 4 6-3-4 5 1 1 5-6-1 8h1l2-8 3 11h1l-3-9 4 5-3-7 6 5v-1l-6-6 8 2v-1l-7-2 10-3v-1l-9 2 5-3v-1l-7 4 5-6h-1l-5 6 1-9h-1l-2 8-3-11z" fill="#fff" filter="url(#y)"/></g></svg>                                                                                                                                                                                                                                                                                                                                                                          includes/File_manager/lib/img/volume_icon_dropbox.svg                                               0000644                 00000000470 15266052650 0017052 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><g fill="#1e88e5"><path d="M42 14L31.4 7.3l-7.4 6 11 6.4zM6 25.6l11 6.5 7-5.5L13.5 20zM17 7.3l-11 7 7.5 5.7L24 13.3zM24 26.6l7.2 5.5L42 25.6l-7-5.9z"/><path d="M32.2 33.8l-1.2.7-1-.8-6-4.5-5.8 4.4-1.1.9-1.2-.7L13 32v2.6L24 42l11-7.2V32z"/></g></svg>                                                                                                                                                                                                        includes/File_manager/lib/img/ui-icons_ffffff_256x240.png                                           0000644                 00000007257 15266052656 0017046 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR      ð   ØIJù  PLTEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî)[V   ZtRNS ÿ3P¿‚™/"Uq@f`2Ì!<BHK Z#'1S,…4‡€ÃjÈÏÆ8E¼¸¾|«µ¥Œª¨­²)ýžQ$ï
�¢b”J ¯mßœGc?o‘h²#•-  öIDATxÚìÚvÃ8„aâÓýÏ¼½1ó„È©Šÿ«Ò &0¤º×0w Ôÿ¼7w@½»ÅVTÔ¬¾q‚- &ˆj±©Ñbù[0õ}+Ä¥9ƒ©fz�Á‘ò)dým�^¨&»ùõ„Š?ªk0§<rå
h
øª�ô%FAP¼b/ç€ç¾
ä!”W�¹†a†axþ;Áº×�ØwTÓ ñ«Pìe}©%Y@�ûêÜ¯’TûðøCY_q#ªñ«õ3ÁÂú*�ø]Å•áÙpu~f¸~|=åßìÍ5ç€¹
Ã0Ã0<=Þ—ïú}_Ú@‚vGŠâ±ñeA±‘úõØe²§mCnj«¹0~ß��Cµé@l{!
±]A‘ Äëã¡ï;è;èÒÛ²A``9þu‹ú%ÌkþfÇúô,àÁ®·—j;Bäq}AgHÊ¹«W­wâÖù`Ã0Ã0$E­wÁ +8Ñ€·×W<VÀ
h¢¸PÀþYI…tŽê ­Uzs”~üØ„Ö û‡E*´ÓDµ}ý9ˆÖÚþ…¨Ïßg±Ydõ+XN–{¬„?F~è‘Ÿ2¢àl06…A—8)àt
/É´ÏÏ+Óóh†XÝ!PÔ•C ?Ê+"NÎ‚œ²�â$ØÍQsÄi)òW ú9êå•#½AÐ üÐ‘a†a¬Ï¤ôf™�õ�àð±ýË=TÛÿæš‡§L÷½Z6LèP±gëÅ®¿Ö,º {Ã{aHþ~ld‹H›Näç÷qÍŒY‰¹"ý³(²)›Bm?_·º•Ñ¢Ã6ØZP²B›Îg\c@dDõ‘Ÿ¤ŽO»¨E�¿(¤‡x@øóš!©â•r=òôªé¿9^‡æ>g†anËá‰®ÃÈç¹Üä}ý«ušïLlSÜ ŽõàÝ^Ýu,Ûÿ±±ÿN2ûóÝaý!ú¯�h Ü§{éÁ¦Žíél3À_Ç€=ÝÙçèr/ tÛv�¬±áÅ8êÇ¬€Œ›A§+ äÿ-–Z?åÓ›ÉŽåÈs@Æçñÿ« pþþâ �©»Vü˜û€ë8ÖeÊz"úþ‡a†á×öÎC»m#ˆ¢�w7 cÈA…J¥3MJï½1½÷úÿ?¢Æ9XÌñ‚fÂÐ¶„«z‰:ï@* ê¶¹¯8å>íˆ—êá~ ”…kÐWbô“£Y¦~UP©M úÕï{òîÅ¸¾Â-`%±_×% X Pú«$&d/f› M§^ˆÞ;+t{“ìuQQTEöß
f]1`r«-ÚÔu.p�Œ;$	Pœ�ë  4=E°rë 2P\€@qpð i ³ÙL(¼äØëH8 ,�‘Òî`7ðÃ3r@IòCÂÆ sDw�8l8xpï¡N ?ü°p˜uÿ‚`x$ è0
øˆÎ@Ÿ‘í€i‰D9eåR„(™€ éêÒ�>š3E¡™"‘¸q Iý×{$ÀÈ½ F£Ñt4Bóù<?0�–PNÓ ¤4€Ä$€ 7n°òƒ‹AðÀ•=È Àãj•Is¨søòÄ9ÈàæÍ›Pd; NËrÛ .<ÀÍ¸ÐQÅƒUµ uˆB+xòüCPø 
 �˜Xý½hO�ãZ®(r§çD2N	”tŽÉªÂÎ+*×.€�ènjù ˆÝí¹ë îÏ_lt„	0µÙ“¯—ÛôÛ¼{Á�&Pk{ÄØœõ¯�½íþá¤~ö¨50000pexúiõ (H ~"Q+žàÓHï±'+Ÿ¸Û³½µÞò,(¥®ÕÃ!ªKÓ4iý1¶	Œà¨*“›�	L®ÑûÔf’ú•$ “3 ç~¾ªª\©1©	°L4� ãŽ]ý@3oë‡6üÓáxÏñû¤õ«$&ó²£çõ‚^2¨„ªŽ«ë‡Åaâj ir;0i}¾ãTÒ3"@$€¿F/Ýxù•Çn”Iý”ŠºÝ ^å5^ãõ´@ rþTê…ŠÊ_ûb  Üz{O›&ãÀ˜ý†&\Èµ ñZ. 	¤ÄÙçž&­Ÿ¨Û@oê-½]˜ë¦u@âJÝu@CçZ¿$ ¾õöÞ€wdÌçîÞbiM i<þÄé‡«ß ?!´þ.ïñï›�°c<ñ*rÓ 9å‰L �nG ×?=£<E©9Pçˆ¬põ»í¹ ÿà­‡ÇøÑÊ§¬Ø[çIý2Ü!`îôø¸õ†&0î@¤$”¬þô,Ï¤H¹CxJ	k]®~±¢“H�ñòÇiòñË û¡gyä˜àQ:³¹úýu€ÿÏÞÞa¤„µÞ$õûÓ Ò
ëë’t½–ë •îAêZ½øk �����;I	µŒà¦<ŸHèÿ¤¨Ô M`)iI�Œ#hx„O?ýì3>Jvgÿ¬þs$-ã¥—xl‘yÞ¢dEéÜ¿Pæþ]¡b\–Ÿw€ÿ@C¥ŠÆXjé¯Æç˜óÅ_"óeI¥ÆÝÜ¸»Sdà~!ØëÄ²Pçf‹±´äs¶ Ð ¦Kàü«Û m _}ýÉ'_…ÌKQ7Ð(@ç‘‰‚6 í“¾�ˆ“	$¼2=%Ýà’e™ #W®Ÿ^P)M ­?Ðà“3öLõ0†Æ=@�9Ýå)€dB€Rs¥0™�´JµXTU•°d©_Q.€Œ‚”¹Ü^ºú#éð{§ð�Œºî,Ïa À˜‡# d¸õþG^yeúÊ‚#­às–Òx{øø€ã´þ´ÀjyÎ\æ®aáðð°@ç˜ŸŸòÁé'Ý|–Ù1`±8; �QñyYŽ©¶=¤õ/ÛˆP%, æ2Xîs”$€¤ƒdØ‹txê©Õ§k�ìPÆÅbÁ‚ìipûg�c¦Ôê²œLÞi�ZÔ¡M€öGòÊž¸õi�¹‘(Ï`�òÀV¯Ž%l]Q€$ø<(À'6õ»—F¢ÀÞ)¬¬ˆÄH,´éuÀÝÃÁ÷ß$ÚìIá“àÇÿääÀÀÀÀv(ËD~øàÇtuø	~’ñ3+~ÖUáQ€GWò€ÐöÀŒ™~j9jm‹ ³]6@XüÚðëº¿}•RSgî…ì…¼3‹’fný»l 	kòW‚|ýP¯}pÓü·â7óì£ ;BÀZ  ¿&¾þ±ŒÚêÏ”#hB­ÿ&é·Î³;@ÍŠ:€õ·/„dšÕŸ tZ†BR�¸ "³ÙŒ¨ÑœÀIý`õo¡v?Ö !`5|ßð½ï€ü
lúVÆ ÓÝà½—Áx9;šºño[g	íŒ IÓýnú»zÆ ÉMÝ.èòÇ7 ßü¡;¸2ÔxÝ%ŒëÞwHlŸk×|ýxÝ%à" 	ÒxB:C=gßèæ7Á|r1Sþö¶†Z]G^©µ+ÀE tã�Úv�óòÜi 6=@WÁ¼«ì6 ˜d€±¬Tn†4 ›n�­8¯ˆKÛ˜÷+—tðäÇ€K{ €»ã,0\Ðè
þ}$8
W¨~Æâ¯š £ª¿�Jüß?ØØïR–ü-þK%„1>üÏ¸±ß•^�þªõBÛ°œkLPm!ÅaQž~°òC{ž½uº^P`~×9ÒGD­¨˜ö3LÏMG¬|Ähtö6�)§žNgŠM¿;;@²hÇ…%ÝòMùèâÆ~w2¦‘Ô0–*™—.€K;VðÂÑP¥ˆº¦[>º¬T??U¸zø÷äÝ?Dµ©ûõíÊóø÷¬u÷Ý¦î×·_Ï`ü°Îýƒ”›º_ß.¼ÿþ sHýw�~_ù÷ à{sð®Ìt[¿Ûž¼Ó;}&)u¼ZùZüÃÑ­K¿ÿ.kæ÷ÓóŽÔ7]Â¹ÿ‰”ú?ÿü“: -`³ÿÏ�q~—~w;,zæ—/¨w~ÀúýÐç¤[ ‘šL ¹Ÿù‚6w�Ø º¨ŸíMÓ·Cëœ¯XÓ!=ÎBÌ×`ƒšú5¿ÏRxWfzf�”wòÓÍòó5ìú4æ×·ïe×2~}»ñ<»¾”õëÛ‰ôÃ[÷{Š3Xã—; ú  uP B÷V @�÷|@H¢ÏCcÀp¸²ŒÐ½B½‰›×?Ò½ÂH£ÿÀˆLýW¡¬^ï÷f0²�L ÝzQ×/ï�ný#_?£«ÑV?™ú¯@dë¿*g�LýWð:Àê¿'Ç€­Á¨ý¸Ë9ÿý“Ííh@    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                 includes/File_manager/lib/img/volume_icon_sql.svg                                                   0000644                 00000022073 15266052663 0016203 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg viewBox="0 0 233.1 286.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="b" x1="1618.4" x2="1701.1" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop stop-color="#497bb3" offset="0"/><stop stop-color="#a5c4e6" offset=".2"/><stop stop-color="#3b5d8b" offset="1"/></linearGradient><linearGradient id="c" x1="282.4" x2="286.6" y1="518.6" y2="527.3" gradientUnits="userSpaceOnUse"><stop stop-color="#a5c4e6" offset="0"/><stop stop-color="#497bb3" offset="1"/></linearGradient><linearGradient id="d" x1="1702.8" x2="1783.8" y1="-868.3" y2="-877.9" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/><linearGradient id="e" x1="1702.8" x2="1783.8" y1="-821.2" y2="-830.8" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/><linearGradient id="f" x1="1702.8" x2="1783.8" y1="-777" y2="-786.6" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/></defs><g class="Graphic"><path d="M183 16.4c2.3 3.9 1.5 189.2-1.6 196.5-2.4 5.8-80.6 70.8-84.7 72.5-52.9-.3-88.5-19.6-94.5-29.8C0 242.8 2 45.6 4 41.6 6 37.8 106 2 109.5 1.1c3.2-.7 70.7 10.9 73.4 15.2z" fill="#c7c7c7"/><path d="M181.9 17l.3-.2h-.1l-.3.1h.3-.1l-.1.1zm0 0l.2-.1v-.1l.3-.1-.2.2.2-.2-.2.1-.2.2zm.5-.3l.5-.3-.5.2zm.6-.2l-.6.2.6-.2zm.9-.7c0-.2-.2-.3-.3-.5l-.4-.3-1-.6-1-.5-1.5-.5c-1-.4-2.2-.8-3.6-1.1l-4.5-1.2A858.9 858.9 0 0 0 124 1.8l-9-1.3-3-.4h-1l-.5-.1h-.9l-.2.1h-.4l-.3.2-.6.1-.6.3-1.6.5-2.1.7-5.5 2-6.8 2.4a3492.8 3492.8 0 0 0-71 26.4l-6.7 2.7a210.2 210.2 0 0 0-8.8 4l-.6.4-.5.3c-.1.2-.3.3-.4.3L3 41l-.2.4v.4l-.1.5-.1.7c0 .4 0 1-.2 1.5v2a326.8 326.8 0 0 0-.6 12A6597.9 6597.9 0 0 0 .2 237l.2 6.9.2 5.4.2 4 .1 1.5v.6l.1.4v.2l.2.2a19 19 0 0 0 3.8 4.5c1.7 1.5 3.8 3.1 6.4 4.8 5 3.3 11.8 6.7 20 9.8a190.2 190.2 0 0 0 65.3 11.3h.5l.4-.3.3-.2.5-.3.6-.5 1.4-1 1.8-1.3 4.4-3.5 5.5-4.4a1569.7 1569.7 0 0 0 56.5-47.8l5.3-4.8 4.2-4 1.6-1.7 1.4-1.4.9-1 .3-.5c0-.2.2-.4.3-.5v-.4l.2-.4a19 19 0 0 0 .3-2.4l.2-1.7.3-4.2.3-5.3.9-30.7a4531.2 4531.2 0 0 0 .1-139 202.1 202.1 0 0 0-.5-11.1v-.8l-.2-.6v-.5l-.2-.2-.1-.3zm-1.7 1l.5-.6-.5.6zm-.3.4v.5l.1.7.2 1.9v2.4l.4 6.6a2727.6 2727.6 0 0 1 .5 56.4c0 27.4-.2 58.1-.7 82.5a1759.8 1759.8 0 0 1-1.5 40.1c0 .6 0 1.2-.2 1.7l-.1 1.2-.2.8v.4l-.1.2-.2.3-.8 1-1.3 1.3-1.6 1.6-4.1 3.9a1419.9 1419.9 0 0 1-61.7 52.5l-5.5 4.4-4.4 3.5c-.6.5-1.2 1-1.8 1.3l-1.3 1a4 4 0 0 1-.6.4l-.3.3-.3.1a194.1 194.1 0 0 1-64.1-11.1c-8-3-14.6-6.4-19.6-9.6a46.8 46.8 0 0 1-8.1-6.7c-.5-.5-.9-1-1.2-1.6v-.7l-.2-1.3-.3-4a724.6 724.6 0 0 1-.2-12.2A6591.7 6591.7 0 0 1 4.2 58.6c0-2.5.2-4.7.3-6.8l.2-5.1.1-2 .2-1.5v-.5l.1-.5.1-.1.3-.3.6-.3 1.4-.7 2-1 5.1-2.1 6.7-2.7a2431 2431 0 0 1 71-26.4L99 6l5.4-1.9 2.1-.7 1.7-.6.6-.1.5-.2.3-.1h.2l-.1-.5v.4h1l1 .2 3.1.3 8.9 1.3a816.2 816.2 0 0 1 47.4 9.2l4.3 1.2 3.5 1 1.3.6 1 .4.6.4v.2zm-85.6 267h.4v.7l-.4-.6.4.6v.5l-.5-1 .1-.1zM3.3 255v.2l.1.2-1.2.2 1-.5h.2-.1zM5 42v.2l-.3-.3-.8-.2.8.2h-.1.2l.2.1zm-.3 0zm-.8-.5l.7.4-.7-.4zm.7.4l-.5-.6.5.6zM109.7 2l-.1-.8V2zm-.2-.8l.2.8-.2-.8z"/><path d="M179 20.2l-2.4 1-2.5 1.2-2.4 1-2.5 1.2-2.5 1.2-2.5 1.2-2.6 1.3-2.5 1.3-2.6 1.2-2.5 1.4-2.6 1.3-2.6 1.4-2.6 1.3-2.6 1.4-5.3 2.8-5.3 2.9-5.3 2.8-5.3 3-5.4 2.8-5.4 2.8-5.4 2.8-2.7 1.4-2.7 1.3-2.8 1.4-2.7 1.3-1.2-.3-1.4-.3-2.6-.6-2.8-.7-2.8-.6-2.8-.7-2.9-.6-2.9-.7-3-.7-2.9-.6-3-.7-6-1.4-6-1.3-3-.7-3-.6-3-.6-2.9-.6-2.9-.7-2.8-.6-2.9-.6-2.7-.6-2.7-.5-1.3-.3-1.4-.3-1.2-.2-1.3-.3-1.3-.2-1.2-.2-1.3-.3-1.2-.3-1.1-.2-1.2-.2-1.1-.2-1.1-.2-1.1-.2-1-.2-1.1-.2-1-.2-1-.2-1-.2 2.5.8 2.5.8 2.5.7 2.5.7 2.6.8 2.6.7 2.7.8 2.7.7 2.7.7 2.7.7 5.5 1.5 5.6 1.4 5.6 1.5 5.6 1.5 5.5 1.4 5.5 1.4 2.7.8 2.7.7 2.7.7 2.7.8 2.6.7 2.6.8 2.6.7 2.5.7 2.4.8 2.5.7v2.9l.1 2.9v2.9l.1 3v3l.2 3v6.2l.1 3.2v3.2l.1 3.2v6.5l.1 3.3v6.7l.1 3.4v10.2l.1 7v14l.1 7 .1 14.2v14.2l.1 7v7l.1 7v7l.1 3.4v6.8l.1 3.4v6.7l.1 3.3v6.5l.1 3.2v6.4l.1 3.1v3l.1 3.2.1 3v3l.1 2.9.1 2.8v2.9l.1-2.9v-5.9l.1-3v-3l.1-3v-3.2l.1-3.2v-6.4l.1-3.2.1-3.3v-3.3l.1-3.4v-3.3l.1-3.4v-3.5l.2-3.4v-6.9l.2-7 .1-7 .1-7.2.2-7.2.3-14.3.2-14.4.1-7.1.2-7.1v-7.1l.2-7V126l.2-3.5v-6.8l.1-3.4v-3.4l.1-3.3.1-3.3v-6.6l.1-3.2v-3.2l.1-3.1V83l.1-3v-3l.1-3.1V68l.1-2.8 5.2-2.8 5.2-2.8 5.2-2.7L120 54l5.1-2.7 5.1-2.7 5-2.7 5.1-2.8 5-2.7 5-2.7 4.9-2.9 4.9-2.8 2.4-1.5 2.4-1.4 2.4-1.5 2.3-1.5 2.4-1.4 2.4-1.5 2.3-1.6 2.4-1.5z" fill="#fff" fill-opacity=".5"/><path d="M179 20.2C153 31.2 124.4 49 95.4 63a1898 1898 0 0 0-87-18.8c25.7 8 59.5 15.5 85.2 23.5 1.5 60.2.8 151.4 2.3 211.6.7-60.7 2.8-153.4 3.5-214 27.8-15 55-28.5 79.8-45z" fill="none"/><path d="M18 218.5l.4.6.5.7.5.6.6.6.6.6.5.5.7.6.6.6.7.5.7.5.7.6.7.5.8.5.8.5.7.5.8.5.9.4.8.5.9.4.8.4 1 .4.8.4 1 .4.8.3 2 .8 1.8.6 2 .6 2 .5 1.9.5 2 .4 2 .4 1.9.3 2 .3 1.9.1h1l.9.1H63l1-.1.7-.1.9-.1.8-.1.8-.2.8-.2.8-.2.7-.1.7-.2.7-.3.7-.2h-.1l-.3-.1H71l-.4-.2h-.4l-.4-.2-.5-.2-.6-.1-.6-.2-.7-.1-.7-.2-.7-.3-.8-.2-.8-.2-.9-.2-.9-.3-1-.3-.9-.2-1-.3-1-.3-1-.2-1.1-.3-1-.4-1.2-.2-2.3-.7-2.3-.6-2.4-.7-2.4-.6-2.3-.7-2.4-.6-2.3-.7-2.3-.6-1.1-.3-1.2-.3-1-.4-1-.2-1.1-.3-1-.3-1-.3-1-.2-.9-.3-.9-.2-.8-.3-.8-.2-.8-.2-.7-.2-.7-.2-.6-.2-.6-.2-.6-.1-.4-.2H19l-.3-.2h-.3l-.3-.2H18z" fill-opacity=".2"/><path d="M18 218.5c9.5 13.7 39.4 20.4 53.6 14.9-2.5-.7-50.5-13.9-53.6-15z" fill="none"/><path d="M67 193.1l-44.4-17-.4.1-.4.2-.4.2-.3.2-.3.3-.2.3-.3.3-.2.3-.2.4-.2.3-.1.3-.2.4-.1.4-.1.3-.2.7v.7l-.1.7v2.2l7 2.4v.1l.1.2h.1v.2l.2.2v.1l.2.2.2.2.1.2.2.2.2.2.2.3.2.2.5.5.5.6.6.5.6.6.7.6.7.6.8.6.8.6.9.5.9.5 1 .6 1 .4.5.2.6.3.5.2.6.1.6.2.6.1.6.2.6.1.6.1h.6l.7.2h3.5l.7-.1.7-.1.7-.1.8-.2.8-.2.7-.2.8-.2.8-.3h.4l.3.1h.3l.3.1h.4l.4.1h.5l.5.1h.6l.5.1h4.4l.6-.2h.6l.6-.2.6-.2.5-.1.5-.2.5-.3.5-.3.3-.3.4-.3.2-.2.1-.2.1-.2.1-.2.1-.2.1-.3z" fill="#fff" fill-opacity=".4"/><path d="M67 193.1l-44.4-17c-4.6 1.6-3.7 8.3-3.7 8.3l7 2.4s9.6 15.1 26.7 9.2c0 0 12.8 2.3 14.3-2.9z" fill="none"/><path d="M66.5 187.4l-44.1-11.5c-.6 2-.7 5 .2 6.6 2.3 1.1 6.8 2 9 3 6.4 6.3 12 6.8 22.3 6l12 2.2c1.2-2.4 1.5-3.4.6-6.3z" fill="#606060"/><path d="M66.5 187.4l-44.1-11.5c-.6 2-.7 5 .2 6.6 2.3 1.1 6.8 2 9 3 6.4 6.3 12 6.8 22.3 6l12 2.2c1.2-2.4 1.5-3.4.6-6.3z" fill="none"/><path d="M180.7 18.9L94.8 67.1l.4 215.4 84-70.7 1.5-192.9z" fill="#fff" fill-opacity=".4"/><path d="M180.7 18.9L94.8 67.1l.4 215.4 84-70.7 1.5-192.9z" fill="none"/><path d="M23 232.1l.4.6.5.6.5.6.5.5.5.6.6.5.5.5.6.5.6.5.5.5.6.4.6.5.6.4.6.4 1.3.8 1.4.7 1.3.7 1.3.6 1.4.5 1.4.5 1.4.4 1.4.4 1.4.4 1.4.3 1.4.2 1.4.2 1.4.1 1.5.1 1.3.1h2.8l1.3-.1 1.3-.1 1.3-.1 1.2-.3 1.2-.2 1.1-.3 1.2-.3 1-.4h-.3l-.2-.1H63l-.3-.1-.4-.1-.3-.1-.5-.1-.4-.2-.5-.1-.5-.2-.6-.1-.6-.2-.6-.1-.7-.2-.7-.2-.7-.2-.7-.2-.8-.2-.8-.3-.8-.2-.8-.2-1.7-.5-1.7-.4-1.8-.5-1.8-.5-1.8-.5-3.6-1-1.7-.5-1.8-.5-1.7-.5-.8-.2-.8-.2-.8-.2-.8-.2-.7-.3-.7-.1-.7-.2-.7-.2-.7-.2-.6-.2-.5-.1-.6-.2-.5-.1-.5-.2-.4-.1-.4-.1-.4-.2h-.6l-.2-.2h-.4z" fill-opacity=".2"/><path d="M23 232.1c9.8 13 29.6 15.3 40.7 11.3a3565 3565 0 0 1-40.8-11.3z" fill="none"/><path d="M30.3 245.5l.5.7.6.7.6.7.7.5.6.6.7.6.7.5.8.5.7.4.8.5.8.4.8.3.8.3.8.4.9.2.8.2.9.3.9.1.8.2 1 .1.8.1h4.5l.8-.2.9-.1.8-.2.9-.2.8-.2.8-.3h-.2l-.2-.1h-.2l-.2-.2h-.2l-.3-.1h-.3l-.3-.1-.3-.1-.4-.1-.4-.1-.4-.2H52l-.4-.2-1-.2-.9-.3-1-.3-1-.3-1.1-.2-1.1-.4-2.3-.6-2.3-.6-1-.3-1.2-.3-1-.3-1-.3-1-.3-1-.2-.4-.1-.4-.2h-.4l-.4-.2h-.4l-.3-.2h-.3l-.3-.2h-.3l-.2-.1H31l-.2-.1h-.2l-.1-.1h-.2z" fill-opacity=".2"/><path d="M30.3 245.5c5.7 7.7 16.8 10.1 25.5 7l-25.5-7z" fill="none"/><path d="M15 59l-4.4.5-.8 103 67.4 18.8L79 176l-64.8-17.3L15 59z" fill="#fcfcfc" fill-opacity=".4"/><path d="M15 59l-4.4.5-.8 103 67.4 18.8L79 176l-64.8-17.3L15 59z" fill="none"/><path d="M78.6 97l-.1 3L15 81.7l63.6 15.4zm.9 21l-.1 3L16 102.5 79.5 118zm-.9 19.4l-.1 2.9L15 122l63.6 15.4zm0 19l-.1 3L15 141l63.6 15.4z" fill-opacity=".2"/><path d="M15.2 61.3l63 15.8-.5 104h1l.6-104.4v-.4l-.4-.1-63.5-16-.1.6-.1.5zm63.4 15.9l-.4-.1v-.4h.6l-.2.5z" fill="#9e9e9e"/></g><path d="M1618.4-890.9v126.4h.5c-.3 1-.5 2-.5 3 0 15.3 37 27.6 82.7 27.6s82.6-12.3 82.6-27.6c0-1-.1-2-.5-3h.5v-126.4h-165.3z" fill="url(#b)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path transform="matrix(4.58315 0 0 4.28653 -1157 -2110.6)" d="M303.3 521.8c0 3-7.5 5.5-16.7 5.5s-16.6-2.5-16.6-5.5 7.4-5.6 16.6-5.6 16.7 2.5 16.7 5.6z" fill="url(#c)"/><path d="M80.2 205.2c.6 13 34.7 23.4 76.5 23.4 41.7 0 75.6-10.4 76.4-23.3-13.4 10.6-42.5 18-76.4 18-34 0-63.1-7.4-76.5-18.1z" fill="#3b5d8b"/><path d="M1618.3-891.5c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-3 2.2c-9.7 11.7-41.6 20.3-79.7 20.3-38.3 0-70.5-8.7-80-20.5 0 0 0-.2-.2-.2l-2.6-2z" fill="url(#d)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M80.2 167c.6 13 34.7 23.5 76.5 23.5 41.7 0 75.6-10.4 76.4-23.4-13.4 10.7-42.5 18-76.4 18-34 0-63.1-7.4-76.5-18z" fill="#3b5d8b"/><path d="M1618.3-844.4c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-.7.5c-5.2 13.5-40 24-82 24-42.5 0-77.5-10.5-82.3-24.3l-.5-.4z" fill="url(#e)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M1618.3-800.2c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-.7.5c-5.2 13.5-40 24-82 24-42.5 0-77.5-10.6-82.3-24.3l-.5-.4z" fill="url(#f)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M80.7 244.5c4.4 11.9 36.8 21 76 21 38.8 0 71-9 75.7-20.8-13.6 10.4-42.4 17.6-75.7 17.6-33.6 0-62.5-7.3-76-17.8z" fill="#3b5d8b"/></svg>                                                                                                                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/img/toolbar.png                                                           0000644                 00000016522 15266052670 0014434 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         ß´)Û  úPLTE   	'A¬Ò÷Kw%�±ëñ÷}·Ù‰ŒŒ  ½½½ƒµÖ
j¬êœÁð]¤átºô[\\»Õí/.,z¡¿UŸj­ÔˆJŸÓp’Eb®TwÃë7�Ùnµ  6k*ŒÈh°ÝÓáìC¦_Ÿn¿z$ „Ô6?³×ö‡Œƒ.~Ä rÃK¦yyyjµëg§q”ÃM¡äv²ÕJHH=™Þ>hßhžCt|°ÓU¢OÞ™:„ÖûÄ
_µ¯iY¢IZ“ÇºËÏq¥ïÂkÍ‡¯×ü7£äI’B†ÉuyÃX]¦[\]kžÖ“˜“5¤!ØŽ%¨Íð$€Å·¾ÁÇÈÉ\ä‹Pô«Sî˜ðô÷0’Çe qut9v˜ÜŒ:‰Õl»\ÃØëw|{ÃÑ×Î*Ùßä|Õdíž<0WÈôöù�²>ŒÎ#R´¥ËÐÓšL ¨n š‰d {ä±Z ÍîÀ¤…;>Bµç®;Yb¶ìƒ|x	1¶eŠ¦SÅ3r»c“gh_™, àæìVSN~3"Á­™J¥Ã.0o´[­­­>ƒ)˜˜žW¶7Œ- t›ÄAmÀ¤‘o–™�„ˆÞêÛ´qîÄSg¼M^“;ç�¸¯Fð¥4±]O7ÎÎÎýýýæóùó÷ùÔíÿ¹Ùù³ßþÚéóÍàì�³ÒîïïÃØèæçèÂÄÄ5šè¤ÆÛžŸŸœ¾×Œºé?žè¼âýÚÜàµÑåÑÓÕ´³´ª««S}²«Íßãâß}­âÊÉËøðæÇëþ©Èêkki€ˆ�ñÎ€S•ÔÊõ¤nJo¶WrÄeÍ£rN»ö…©Áä·�Æ˜d•Òò¼ŽZØ­„Èäü’“”{¼pè‹ –ßýôÃŸõÚ�™Ë‡�Ïƒ4­ì‡À‚ûè¢¥Ó˜ÝðÙ�ç›s³nu›µK¾r&ºûjÐü´Ù¦æÞ½þòµ÷bbD™×µÉÔ”Ï¢[ë�þxxçŸiáH5´¸È¾ÏhÒÆ‡¿ã¾§—{üÍ ¯š_Ú–Y¤Áåý   ¥tRNS /ûþutÎjj²þ…þýýþlkýû»Ì[?ËÉüÊÑËÉ¤YÌÅqýÊ¹‡‚+Ì¿\þü,þÑ™{Fý¢ˆ‚þÃþ–HÍµt3‡þ…SÂŠýüüÃ.þTPOëæ×¯ûÁþýáË‹PNý­«©…XúÞþþýè½øõòÔË´¥üìæžkiüðå­¬�ðë¾µ?±WûúöàÍÉ¶¥qjáÞÝÌ•ŒƒüÃÞÞ}óØ�×îˆøT¼  bIDATxÚ¬—_HSQÇ¯—¹r©Õ°ÙjÎR*)iÉ°mý±‰õP‘lÓˆ"dì%$\E!AÐƒ/Fô 	=¸¥[n"Ž¹MçjH6“fD¾õúýÎ9;Û�¢>êÎù~îïìÞû»G™¥´µµT¸qã†Àóèhké¥žK<Äb­·ã xótô6ÍËb“££“±‚×296íñLÇÀ”BÞô0�O{½Óñxìá¦RaSsg<ŸŒF'aèlÞk.Å9p&>?{öY"¦§¦¦Š—RñòåM.n÷Äã/^bEÏm&zz&¨h^»¶¹µ¾a¡îœQqÑr¸Þ?füjJƒ ÷"3ŒF"ÐQÂTÅE¯„E…_äE$¢QÌ%+zñ�TP!†ûr€Ó¶—”´·Ãã´ð?p«‘‘ðÞÔ"hÇ¢
E¯˜àhjTBB�HôÜçÔàgz9‰:!1ÈÐ ï1”S *A@Ë8�ä´9+Ü 4‰"ÎÐÜ·„à¸Ét<›Ö	‚)ùÆ„~Ôô&iâUÚP´AÖd²-imK&­&¶¤C²­�,aÊj•DÈ`2ª”˜`¨`¢ËTÑe­0Á]RQqª*päWºÏÚµ'œÎ}ûn¿ãüIà|nz½A0<Ç°"ÆÍ©a˜bÙI&
¢| °a	1�AO��‰h0ŠÀ°„H'/þøþýâÅïß¿=!âIò3I&&ßu]üÑÕõãG2ÍN@pÀ,”ƒ\X™ÂRYiQÈ2yo¥¾H‹ô•{36`(/ÔÈ*!�ôôŒ„B¡J\¥Ð‡¸Ø¥ a	�ŒŒõö�G- ªà°<Ø?>ì?ZEÄÑ`p¸¿Øë/Fa)†ãýý˜Çq‰bCaa1æâÂÂ
<mU!’‹«däÂª
W®,.^¹²°
.Œš…7°Œ«6×¬1n†ú?f]ý=›í^=ßbÇïÁnÇ�¾�e›Õæt:íV«“lËmN›}
Æù$,ÃU&›ó”Êlõ0ë¶Íc¶Ûì?í¶n˜Ú± ³S˜wÚ‰x�9í„·±£HÛç_Û�éŸ0µÙqI·Ýf³ãqá³=mÂËH;méyÌÎtš\ˆ)�NÏ¿~=eO§ëéÍ×§)˜‘<yg7ÆîN¹<�–È�RLƒÒ½ ëtò˜DhtcLðÜÖQ˜õc¢ØÇÐƒ€¤BHJO*Â©‰‰íì'³–rH@Ê´³f­ÀAÓdnRcþnå¡Ó-0Ð©ÁžhÈÌ £„û˜Ñ�…Ã}ˆ(†õ}Ù~ˆ¤Ap|Z1M!‡´342Gk6kË„ %4sÁ2ÇùïÐè42Üˆ4‹Ü°§™J‘[ãéÃ2¹ÛTHDÃî®h$Ä6¢íIž·vbç„D4��<ïíŸ>}Úþ7B.7nÜ¸Ñ(—Ë˜�å1„¥Piàyº•*ø-¡¹ÖÝ7ê@“¬<×ÐFØoIÍÖ­ðôÃ½caªó[·4¸-ÂbFÔÖaWð3™E]dÁ G’Yu]�
[!¦R¢V¹V©!"5‘ÂÖÕr3až�0ëµZ½Î ¬!Íšm2#pñe*º1,MW'@Õ™�¡RX@—É„%(Spè.R?ø
*|>dÈpÓ¿8îG¤" ¢:+-9è‡¹ø ,!pö1�/*ŒT ÆjRqk0XcD  Ù{°ý¤Q�P­8øÛ~ø8ün.ü‰�Tàþà%’iP �ü…®é˜ûJÅÖ ëWærÅÙŽëW^½"5_H?:Þ#¯P�ÀŠõg>|˜‹D"�¡ D€ð€ulÿá»F„wL£d¨ŠÒë!øÁPáñø�€ÔÀ‰YA”GÉ�+jIö ¨¥‚�E*°F"�¯o;¤bîÊu"T|�Ñq6+æÞ#’Š3´¢ÄË˜;³ž¾G	cËžýB†mË¶	œÓ«V¯^qgÅŠÝ«V£Ë//÷:åååùšŒpy.GV´8\®ü"Ÿ#·ÿyhÉ—rŽðå»Z--9ïá¹êlÅ| K8-T€ëð�¸Žù˜¸àhÁ\žx gÄ2øZððÑÃ‚�è2ò§ór0‹F‡‡ƒý—ód‚L¾zg5þ‰ÕðÍÁ·ß|{ðÍAWêQ1¡æËØnðe(¼DxøžB¡ÆlIE-}´ø¦HVDP µìYçŠ<üÏõyFðöCVdl‹x¼%É2F»°¿¨1—Ð&‚0Žov}@Vã#	Jô�4 |Q
‚{jéA<z0‚¯‹‡àAâI¯¢ŽCQ×-.ÂjÕµ¡‚	9äX¡…VD|œüÏ£³»],zð×Mºßo›�Î~�ÌÁ¼?oø‰ÇójÅ5Ptâý<î�;EÌÈØÐ„±KýZÉf±2—E¬­x*Ö×õô”ËôX¹G$}ñúÃCC�Ž°/ûëÃ¬[?´¶<TîÁkíÐzäºÄéò:mÞ×>Á"«œÆÏV´ÝZ~R~SF~};Ô‡˜™¾'o‘F3;ûa)
ŒE};3†ÎàgrâqÜ¸d.×{Å¶¯ôærû¹ÈuŽcÛŽÓèæ„˜h¶š�F³Ùœ˜íöŽ½mB(õÎ-õbú”ÄóR4¾3Q«ÕJL´Ñáw4a.ÎE“ÄR4¤@0¥° \4À9ÎíEIÜ=’�ÆØ8³FqF®HŽçµ0qù×W$	LX(£)õ‡…4J(£DØ‰2¾ EpY‰×ÈÕ@§›O”ÎÒóQ4b%rÕP"…Sk�¦4]7*¤¨â˜am¶bÒü6…Èòø_˜¾/s�*O¿@.•§ïßÝ.¡R+O!s	ÊŸp±{6u¤!D‚¡.è*!8oW]ˆñ#@9_ˆrà§CÜ¾J(ÿ	S3Õ‘€0UQ(KÓ2U ^JDšFkdùK’U¿}¢5²8RÑªŠhû˜¹@[ 3†ŒBÿkË˜ù.?®í=$…4×º¹ ¨ÖHñR@T¿~¸aÈå‡Œ¿^Ó¤�qu‡/ÄÞ].b|‚¼õµŠ)ÂóŸ Î]gSÄ€˜º•0³Y3aÉ,óÆ�‘BaäÎÓbÅ©‹©�ŽŽÖˆw1¥kVÅ&Ä#Ã…B‡»biæUJiáéè¨[ÀÉUSËTlJÝg.JíJ}^¤µÎçÏ�¼hi “¨œZÒé,9UIdÄÎEÆJñ…ƒ•1t‘	:Ä_!a‚8Çä—5GÜ×q×uê0LtÜ–5�ŽÓ1¹¨»uÏóêu¯.Ä³B§àq
Ï„UHá*¸Èº6‘Øn–ÍLÍ�YA_Þ}	Š™©©wS_¦„ `ê#ã¦¨�ò›{Äó²™±9ô¼ÌltÙ þãüÛ—üRPETÈñPü4DÑoR,æ›¡Û—/”,ç›¡Ø=•û§`þvé˜Ø²ü%;9†Cn—b?uÌqÆ€VŒI±‚‹—+€c³w)Øv©�íRÀÅJvFé2%°UÊ÷OŽpÃã#Ø¶«oµ¤o—¡ÿl<òq_•Å’ƒ6fƒç9ŽM“gsœ³)†Å—_]ÀÖbGŸ‰åW»å·Ú½ÚðÑ}B4[ Ù¨1TÕÄ¯1Ðl��·š¨‘bg ™</.›Ožò?XBFŠ“`¤4Õ©‚_öW50(†1|ô8Æç�Ó7O‡Ç	$8<�Ü<­)D	‘@ni Âã�ÂÆ#Ê8Ðžm`¢Û…xÿâõk.>5g¥‘&Q6¿““UÏJ¨ž£M¢øWu5ÿCòÞ” Tˆh“(ãœ è‚ß‹‰O­6D]‚»øÄîÃg#'(¾MN~‰ÉW¯&£Âï4Úä9'(OO?‰é¦£Âï4Ò$ÒéüóécÌ§/	x§D:}�<åÓ�œGcÁ|úÀyÎ§¶Î§Psò)ý·ùôÏ sãêŸÇdn\ýó˜Ì�«�ØSñüYú£™³�i£Œãøµ �¥y‘Tº6­àÃÖ@KÓ &¡à˜2g¢ò2.$ÀÐ˜È6—mÊÌæÜtÎm™1ÑÜª˜5-ëÆÊF/Lì„¨‘¦YÙX�¸·Ä?Lüýž{z/ÃéæKâ—ìžû~îyý]ûÜõ¹vUÇÒUÉ¢Ï�UéHIš£ˆú¢­%c©© 4O•Íf*brLi¶U°,5ñžÚ„>¹.ç‹´f&±ùlAb{J=¬ÈÚ™ö4+3<]lOmÍçµÛ¬Ì�¡ÓêÛ¯ukmµã×* ŽÓï1öª¥í©µÓãÓõv¬HÌ©·ÕÎÏO×RðÁ
õ�”ÚúúúŽ‡àÔ{àT¢E@Á{ï½W [àžÓ‚ÎNÐq¬"
6C·%A™»Ðç'rÅ€7ž(ÓÍP=Ö@0€êwxiD	z|à|Øà��õ¸|™ž˜ŒŸt÷Î�åàâG<IPóÞ
4ñ«¸’ŽŽ¸1rÅ{Ÿcâ<˜»”aÿú£G×ï7Äüš£Î¦Ë—›œG×PÿvSSÓÔlÞ&Äpœ“e�SSSG±ÔþS"Ø±@ù”3»ÝF£1´£œ€0WO|`
	àÂð0ñ.
Â5¡P‡j `¥5 ··F¬ÔP^³qc�Û…ÛréØ‡¸�ÿ>Œuõ#Zã;Ô«â²Ž¼:’{|{g³‡º¡aICƒ”Ã°dyORÏò%†Øñ%-Ë’@-Khž†åàQË°«e™ ž]H‡}’cY:=´H»ž¡àZäÉt˜AhE•Î>“ô\Ò3…qô8§�«„»±J•à_ôçÂQ/z$Ošô¼‘¥f¬"ƒ„ECæÎ…+ðJÏŠdEÝË²˜Ô­KbQÙ&ÕÁŠëBqdË.àry ƒƒ²˜ŽG|.2y]®tîAß¤›w{&=n
òáÏëäÝp»'Gó9�;dÄí&€Hƒº7áŽGãÁdS7Ä3åò¸HªŠ­ãjÝZ)j°Z!®„©)Pÿ­�Ì0#W)€#q(ÀÒo¾Yª ¦±1“XÓ‚V%°Ùd ¼Ž�Ã¦”‚<óã(s#µèkÁKDéÕª�.Aöæ€ñwwÃð™¦¢"¥¿ßá¸_îs–öö.ÍQø´´êŸ�ŒW¿y>FJ­Vk0›RY<RR”2§¤š Gûç@7>®?[§ËŽ“½ þröH^Õìp4K—ß"ÇÖ±Hdl«£(æ#%c ’ˆ@’M%c6‡Éä°�ELXjÕÖ4›)Æl²¥m] Ù–‚IŠ­™œøT+rjî™SÉ@Ks`Ï†{‡µ¸¹´¾?õa eÍK›+ìŒyÜ<>-|?ÈRUU•h×Ázº–Çž¤H7??®« ƒ-+Ë€$�¡ÈnX‡‚Jåú7ã‰Å£äNã‘&ÅÃFâaƒxä”J‘y8µ¿Þ «Ã�£K¬Ÿ†P˜{¦V;¡ÐÙ!�
Ýøü¼®|ž}x9eeÂé§�°ÛÁÞ�­ÿH¥Î�×Èýc—.o¿ù‘<†›tÉ@Ýæ�7»deVl¾,?nøèè¥�7eÇ÷ol‚d`MÓå�7±‰lÜ~sHšiøh�|hË_g”4Üäs£üµ’ßxCá7lÙ’,÷ïWo©“g/myQ´�[>Qø(V ô�É|þzIpAÉ”û×=JÿšoD^_òC�™Š¿þÕ[o1òüo½•ù>|½D,óÆ'èÜ^O¦‹z½:žsÏó—®ÆûÜ~Ž×€np¯c–¸½Ø`×&ø è¿v€në‚Zü(¾@¡jôj„2…<�Ñ|A?ó2Öúý�Äß8˜ó`¥«™$©×ú´Zå|øqW×ÇâÝE†ö�¶üüóXüÎÈR	Ó¸#]]G ¹ízxÏžÃ2ûÔã­×¯·>ŽzŠ€Çüåúõ_~D=.ßƒbà{P.ÊÀÕ«¿\¼xñû‹\l½zµõ"è«G	y… ôÙW$pþ< w€ø\ ç;û­¾
ùõùq
PÌP«DðíùWváóýžõÂí8¨-Û@ñhÙ¶ëRRÖØVóëÖ­[¹6Q£_Ç²ë�`)Ë8Ì‚ Ó€mè]nø@GGÛ6 ;×­tßàü7<žŽ¶�´q7:üÃ?¹ÛØ¶²­£­mØÓ†	±t¬\¹²Íãiƒ¤Ã‚Íî\	ò¸ï$�mDÒ†v6¢G¥ ?zz¿ž›½sgvîÝÜ¯öoÉ>¿l¯™]X˜í^óS››œÎ¦ÍN�Ào¼€Úìì"Ÿ_BÔÿêÜ\|ÀöÙ&Á³—¢Ñ. »œ6_ÏFÃ¯
ÀébÝàC@ àCÑ(‚�Œ.8/�-Tc¥†.çB8ðáWU¤c¯†¢áp<vŒ�âèìl´<•êÈ« #wzû•™™É¨3%ý1`äào(3+�§F/‰ä`ä9î^‹*ýcÀÈÁ"-š.~AxÚ%Ój ÷ºf!âÑ©™™™0¬(
Î‰"à”ë{ŽeáŸ&pì ~ÒœÑhü¾}b�_Ãqn”a‚®ÔOÜ`þh€ßG {à=£,ëŒ¸4öø8ßÈáây�Ïð¾®fVM}ü ïõyGæÁÕ«¿ �ŽùF‡F—¢ü’\@	$d1fgÑ£ðB%À¹^ðÆðL´ŠLQbGçŠvL	 |n®œ)Æ¬;Ð#)gþ=­/§•°uf=6‡Þh¬6T3FãÜÌ\± æŒÕ fÂs˜•1Î!˜AOT= E=
ÚØaP´·V,$"!f}8\`vJ™Æ6Bgt6D@t&l„â3þB($ #¶÷ïÈˆ‚AzÎpx„ç#À±‹Ëñ|A|Pmœ+~G:_ÄÏ@~¾Õà©vw1
mwÖ(HMta!ôŽÂÏFg�¯J ä\ /�¡…ÙÝÇ‡ì1ðÌ‚+Wö¡9´iÓ&¯;dÜ½{’›üàƒ˜C~¿WS¨ÜçkÌg’ùdæ±äá/^ÛM9^çk˜lð¥3ÌÞdŽÑ¿XvÁ£ôøè®¼\øhŽ'Oî‚* LNâmÎ
ÀßÒ›zýaaç°þ]Lõ×¯îÑCzX¯“A½«ßsõjç›‡÷èUàhÖ=¿ìÙ£WË«/¿ªë;;õ�2òBg«þ]½	­µµó]À±¶©ô­­/«1ãËoŠâ„=!ËË­�¸CPUÂÉR�J•UI×2ÐÂnÿH�	¢	H¸o€ê¾œ¡ˆ�T1p&ÎÜœ¤Š�1?‘`Gð'&&N<BÀÉãD'¯?¹àÙè})ýUT§ ’o¡°ÌÐñã ÔªìXCÇ³³ð~,7[Tî¤¨êo2Ýâ# ¾Äj®²ÞIC¥m5%"°Fl ”Ôk BÊÌ%6Ûø´ «��æÍ¨úú¾ö
‰n^G>¯—U˜k…s©C@ÂKvÔêÆì8ªl! é~ëßUUÑ-Àd¢ ‘Ø«šM ±JMð´#b³¡wÀ.Äe³B~kZ�Gß´n{+RSMV3j~=Sk®(#ŸÓ!,à!M mét�dìR,É›AŠˆù'ŠKO�“;C:ë‚Mõ/zÒ»=žîtÏ‹éæ=k=žµ~~¸› U!Çù‡‡ýW¨"%
r{µÚ½ÜÁB²\Èk¼\.Ãär^�ðñÍ+o€¬ŒŒƒÜÚÜÜµÜÁŒŒ,Ri.¯ñ;æ×ð¹Â4¥åÞƒ<ÐàµdårZ-Ïkµ\.”@UjUZ¿6•ââ ~%9’Å÷ëÿ÷ù#5xËüqíÚj	”šê¯µGÚ�P`�ü€j—r˜;êëçëóGGG�rþÐí”Íýrõõõ3ýŸõÓ´ þ’	¦è¥ —‚^ÐÙ~šJ �RéÙ³gûúhÊÐöD1J�€¶ß§ì e?(ûÑ'6Û·,êGŸRÌbñ^X–H)ãeAš
Àå"€¦Œwc)¼s”RVB}bºXÉ‹€² þã~(ÕO%¶/¾>hûâùÛ_´}ñüÐöe€¶/¾N¤fûˆú¥ö©¤öi¤öi¤öi¤æh$@û#µOû#µûû{ÂÀÄ€4]à[ÿÌ:'&èüp;pâÄ:H®PprB˜®œy¤‘€	 Ç�O\¹r’û#ÂôAÚÉ¦·$ÃÐÉ3Ù�¡G€†€¡G	‰`ÿ(P«³¥Ùª;¹ÿH^®P2óÄwŸÊôÝ‹ÿÛ€'ŽIoYöØ1pì{ìœ\p:ï/‚Óß�[<-Wï©/Úƒ½²:zOµ·Ÿê•ù,xï½½ŸŠ ê‡Wx°T w}ƒrpwô`»,O¦2 yI2å°$5[,–¤$Ø4'YàÙÅ"{Ø-Ò³³e=Â¾ZZþXZZ,
ìì’o´”¶´”Z¥Ë–µÀ“d©P‚ lg±~ãôi0‰Á    IEND®B`‚                                                                                                                                                                              includes/File_manager/lib/img/icons-big.png                                                         0000644                 00000015340 15266052670 0014641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   0     MR²û  åPLTE   J‹È¼žJôD7r¤ÔëI%íwSyŒ�]•ÎL‹ÉGˆÈaº�œÂ^ÿZ'Õqq,q½/£m!‹S|¯+ÈDDPŽÊO�ÊGˆÈG‰ÇNŽË� ®.‡É—¶Ù~†?¥z~� ùM*(—_HˆÇ!“æIÃH.¿R0µ sºmmmx‹œˆË2¶ÀR€Àllliii‹Îrrr0´Åa$x‹œaaa{®){­+æJyyyeeeh£SSS£>ÈCCy‹�ÿÿÿÿî£GˆÇÁ×í’¹ÞßðþæJ»œIv§Ö™ÌüÕ»kºàÿ®ÌèÜèõéÓ…–¼àŠ´Ü!Íãô§ÒùÿW"Ôéú¸Öï¦Èææïø.}2›ÀâG¡ Ääõøü´ÎèÄÛðûÄµÆßôÿùßÊ®^³Ñì~®Ü3·,²†È¯F¶Kx‹œz¹ýŠf%­þ×Ö½Qíòöºá¾À…²Ü‚Ì”I
š¨µü�€!•òÃÌÔÃUdœÒÀãÏþåáK®OºÑé‹¸ðÇCC|®+AÂ.§ùqh.¢l-q½ooo"ŒS–Üt²iii®Ý¿íøìèS$ìÁÀ�ø«š§@�Ñ:½'vvvaaa8[[[ýìéÑ_Ë[û¶­|||VVVÝÅuÓé¾ùÎÄæôæúçœo«„¼ A¦|üùõT’ÌG½vØÄˆ¦Õ°k¦•¤±Èà “ÄéâË}­ÍxéëïÚç×ÓØã{¢¶ŽÉ°šÊ�ü”si!ñèÃÕkkìmH{²•ª¸ÃÛ……U²‰q¾tªÖÞèÛ­‹¸BË—Ëþ‚[‚!ÃÛÄÚâë»™™‘"‘=‡A)Ê³mÏ]]•¾SõS »»»ŸÝ–â¯�ðÜŽºÙˆêe;†¤Ïè±±R§ÌÌ™ög]Ö<,‘‘"00˜„„ÂV¾ø…}ÊLL¢¢Ñ–ÃÄZZ­Ôöà+^­p¨|\¶`[™^áššâÒŸÉwE–.m�Æ„³†s&­ƒƒ¯5$i   @tRNS ÄÅþþÁþÁýþtþþÅþÁÁÁÁÁþði„³ô úüéxtOýs‚âáwo ¤¤â¥áââ�û}{qkã�ìãããÏ§³¾ÿÝ  jIDATxÚì×AkÓ`Çñ
6ÖƒH:»Ä½‹^ÃÓ[RèhSJâPÌÉS%C(¼màk(QqˆÞd/»ùÚCÙ^…Éó›&Á'yþ�8�Úo’>žÏž%ÙÆc…wæ~QW+ÂÎ,¿öB šÂ>-¿† ƒ×{t0†P 
 B	@ÐÁWÈ D€ (/nï¸ƒe¸Ÿél¦-ŸÉiŒÞ¿ß£~ø¾§€&£L“/=›ÏgS9˜Î|“7OÄ�lšßKîe.(½�`…M2ÀS“f¸g*ð“ïgŠù0ž&ó÷L*ð§x@d0Ã ƒ)ž$?O§ÌçóÍý�«®p�¼æÓög§ìOå	€åMi—rà>¡3•Eä–r ›ÔÒ� ÞÞJ[«iD@ k8¹hh¥d—0Â’lVa�×2zÐ»QÒ ¹&í~i	ðÖ3õúràö©¥ ÷ÃQtÞK@O¡ŸÞ�ëñ'>Ž …Ú?Fë
¹	hÖñ_‚3 0Wx¢õlk� gPR‹Ÿi 
y	¸§P,0J@[Ð½¶PK@7]~f/Wx´�¸åµ3—@ ô<ÏýñH?pà´ èq0BŽòº1F
qà8#gô-‡Ð`esŽ�`[
ƒ.ñ°ºAºÒ,\q ä ¢ªBQt¥XeÑÿÒR¶UÕ-»H 7o¥½Õ!ˆ ‚ÖpÄ‚iÍ¢R°–]#(Š¥ kà,.0W)ÀÜþ)ùä+¤_?ûÇX3î¢p…P¯EâjÀZ¶›‘îôoˆë69¸ÉrEëý¢ªg9xl²õ‹k¬rDýtkZ¼o�/¶ÂAPw¡:«1"‚‘†7ÍÚwh…MÞ²Dg9këÄ«T«-ìK>p±&á E™>põ
Øº²4n2lð%(hrðØ¸G,:ËAµ‰5V9ˆlâ|—­p`„.-§�ÿ‹2‡B�ƒ�yÈ•\^µÉA0ñˆÕ–8ˆ¢±Æ*›8ßa+ðMŸE8ÃF kÑ²5 Ã"5j]bñCˆ7Z¶ôŠÓWtr+•ÿ;�u¶ D-aÕ"¡Ù¦° A��Ý‡ ƒ
 Bp±¤ T „
€P* ‚X¦´Ü´š–ÒªðóÀµzñ§ïv;&­Ž8ú£øÓ3ªÆ8G“ªád$À¶|ÖK&9ãx¤ çðO„U—uøè±!tjºgbtM	ðÓã¯~q~ÏÏ�ÃŽ_
Æ5ftŽG~·k•‚GÆ8ÅãíÉ8òøJz9h×â·Œ±ê˜Iê@ö-ùÇßF)Ot½“Žå ¢5LG¾æÐüÛ~§ÿ'Ý–VËF °?¾#³wdKb`™Âºv€5èà„€Pt ¡ è â¢
€ BP°Lè´Òl-¤Yÿ*ð‡‚üÐe‚ºe+tù'xcÑï¡g"ò=,ÞÃâ=œÞ÷° ¿Ø-iö)ß‘�ZÔå°¿%¬! uSØóý}2¨ïBÐÁ„€P *`AqC*Æ‚¾ xš� ¶>¤½8ŸÒêPŽ^mïª€£�¸ð G
`Kø76^©=¥ÝÝ“x¬ÛÔÀöÆÄÑŽ`>ÄÑËúŽ`>ñü¸Ýr€ùèÕKÞQ9À|TOEÀ�‚@,�–
"ÀÛ4€”A]¶¶ó½JÐÖéú#ðOƒý-iû9ð”ÀïêÂ“¢®€Ïo„}�€s¦°w_¾@�Á¹]:Ø�P 
€‹ëJ ‚îBÐAL ˆ AÐ|eçŽYã8Ž/�‡CAÑÒ½Ž
¢=H,	Ž
Ú"(ZDÐZEz‡‹S'�D9Dp.yÓ³½	çþö‡ôèÑçùæY÷Ü>œ��çâs~&„ðe¿p6Œ9)øêR*¯Ž ÑÛ*Y€ò})$ DÉPBWp„@€G/¾Â 5N  ð*hÇ„´)%…=P!í1	ëE;‘¯|¥ì�}RÔl�'¡c?¨Þ7;¬X.PÒ¯'ïžN�Dž±(„E~±µ%}ÇñIæL¯Y £&.H@ I§, À3  À,¦xúÅ`‘Àé).
r�J¥lÔŽ‹j \c Ün \Ö ·ï‚à»Âò–x àÏÈð. €öGî:²ù¤Ý¢)ø	@§_,&|úÅð?RÆ|²ÿ¬P �€™	l²   °@ °  ‹y°€ 3Ø‚OöïõKOö´Ÿ5µG€›¶¦æD×pu¯hÅƒxõÉïÃã²¦ó ¸ÕLt/oñîM x�—€}èÞiêŽZÃ“¦`º~þ(l+$üÙ\yX+C@§ª-CB2ëÚZ-8!� ` `� `� `aåÁ,ÀIµ_g5Œeæþ8xg§ŽQ¡ Wk9WØb/±¥•÷ðƒm*O L)¤±ò
xËÁÚÖ+ìî¼�M }°lRä¯ýà�údˆ†”2
”Xq Ñ G
ª*¤
È{H|)²*BÌÅ"€TÎ§b¢Ô¨Üäv6“s6¾Ä$r¥¨­ØB©³³~PU˜ªÌ>0AU{~!CÎÉîTIôœÍµÊ½‘d	¦dÄ�I¤H1 ¨è1€÷¬{é@2ÍÒPø¯ÞØ½Þï€•ßŒ0öqz³qÕ ºÁÂAô@   �Â�è 0 €èì¢ÏÀ¿­mpy{8pó8‰n`§•ý¤	 }à'Â.ZÀ�š]¥÷€˜5;Íràº	¾ÌÇmð6˜¶ãžB½€Ðx�?Ç =JÀº£“¾@þH˜^Æ¾@Æ·c rð³!=îÈóñ´
œïÝ|všÄ#—ñÊ›}±sÆ¨ÃP^Û3è<-5k•¢vÉÖÉ¢Pðäøo]BäLÊàÍ'h. Á‡èo=/-Èv¦PÐŸHø?ÿ’ž£Á‚÷ýx\  Ë”O-ó©e>µ¼ùƒò?€Þ”e§—ºB¼;è¬ úUì¥”-ÓQÍ›KABÞ/å³ÐÓ@éèD§"ã[päS@çjCmkKÑßXëôà,ü?=fâÒÀÙc %¡¼š“1î˜0 $x²ý`‡áëRÀÆ’¨˜ <üˆ(Àgc¢j"Nðüýëœ 0"Èúx} �°.°œpàÄ4Pû¸ü0óÝ1*\ˆ”Ä[rÕs	"ôAÅ€‡1`fÕ5€•–wf•Š-®Û{ïC,š÷ÄŒ;¤*-à#8z… ­·<…ÐíàR€Q4”) J6cõd$&ïVH©NfñÔ‡ÿC‘ �ˆcª©åb·äº™ibXN”›µ†n×Ø¹þð<»kpH¸ˆíz·¢ÒËw¾ÕªÐùÔ2÷#ËýÈr?²ÿÔ3ç6ÀÛÝ•ÀÇÓu€¾¯®ªvÎXEBŠ¢M
§÷ƒf

™BŸV~@`J‹ù»ýÂÍ�•ìÂ$™ivu¸·*®‘`Nå‰ŸÌªÈ¥¼ÚA­&ô+“ÅdGÎú8`òŠ\Ú•î©N&
Ô[-ö’«ˆ¾@š|E¨³­ ÏÈ…³:ëdÃ¬Cà¼uºPÛäóÈ#ùŠFü(¾‚ýÛÍ9ø
Y_xQvœKrQ€ØBMcÎ¯¢¡×€Eïô«q4àþG#ƒ‘ÁÈþèª`ôC@~^B©—�@þ)u4@3ùLO ¿ô¶ä$ÀE©Ì\Ú‹ƒNª§n&¶’¦*	Ø[˜‰ªë½ÍâIàvs³užÔ�ã€Ÿº<û÷tK�-¹
"%íYè¢²:×r¾	C£L$ˆX*²=Æ™4Ð3ù4»X|{&Q"ZŒF#ƒ‘ÁÈ`d02ŒF#ƒ‘ÁÈ`d‡ÙP`d02ŒF#ƒ‘ÁÈ`dt´F#SG[­02ŒF#ƒ‘í}C�‘ÁÈ`d02ŒF#ƒ‘ÑÑv Œì‹�3Æm¢¨ä›m5ÒJÙKðOF±ÝV[ÓÒÓq!Ch°#9ƒÒ�øýÂ…ÅÄ«æã¯=­F†‘adFvõ
F†‘adF†‘adïldì#cûÈØGÆ>2Œì)7ävTŽÑ–ò= 9“•5ú1�¾ <£yÂ€yTS
¥tå¬|(£t0Ï˜<ñ¡«N�·	¾ÝVz ‡ÑCÕ>E�f�ªÍƒg¶Š_±Fí€Æ  ¶MAÀî;p·Pm¦æg™¬†€Õg^ÌŸzÅóøo	žašYóKZƒCo×?N¥Ð�ð4ëAÀ	[|ìEkÏ¹×ö üPù1º�×ŸÁÈÞã„	Ð=`dF€‘ad	 z¸LF†‘`d&@ô�02Œ#ÃÈ.|²sÿ®M„a Ç•ØpD„Å"*þŽ/st¨Äø#5Ž!(5œ�ÆN¦TH7…@–d0�Œ{B³Øí‘tÐÉ&Cíà“{šäÞrwïû©iÈwh½wÏÝåm—ÜüG6åsëªhŽµÜÄÔ;æØ¯Ö;$�A(    €‚PP 
@!>{ XÔ:Çaï¦N(ÿò9¦—] lï"\€Ï—Ì9ôÙçs¹{%O"ØIB02'phkË·%v÷÷÷“$Ð}*ðíîîæÈ`´f6ØÉåðegdîÖ¡ú" S—™²NXÈ†¾¶¶
ÂZðIà6£iúº7˜Ž2®e%p™‚ �ÐS$º=st«ë—ú^,B©y;-gÃA>% h2>e>p  3§àÁÃÀ;x�º$ ¡Ç•—P{‰@(Œß£Š¦žº<èâãåAè…Âl©§Ô€­J¥2=ýœ0iŠ3Œo^�9m JÍy‚ðÓJ¤­æÔyOºgÆ*¸€Í-xƒPXáo¥»A€3Cxf( Ï<P^Èõ°€ðER0# n«ýäÀ¬íÜ‰Êl¿”˜¹>è²8ekÌ€êr“§_Lž~1yúÅ(|áúØ@4âPÔ„U‡Â^{¸ãPtˆ3¼d˜ü÷y žar&×at¯ÃLž~q¤)Í­«.`³è˜_Ón8?s,Þ\A›1$�@A (    ¨‚PP 

@!4[·$@ÌÔ>ÿÔ˜ƒ|Ñˆ7Ór ÓýëZ·„$
æ¦µ-VÌ÷*» �ïk¼—I ˜4Ð1SÄSÏç¦7X‡úC ò1oƒ×rÂoiHÇòŒm"0Htm½Ìtt]7ãb ¥A·˜M~Ûºt3´(Æ… aè02T€3Tˆ‹�Þ¿Ò&Lº�I þö6E·Æ?ß­F“Å4fŠ á�hQú"@_f0T°�Q æš1aMh8Æ.¬ºuÍd–û Â|`Ž}É€ �,XBA (   €ÚÒÒ+ò 
Âp² C!«ö$@öÓ Ì»2î ÔØØëÔd n»ý¨›Ôªk[¬QêUv�øÞök 6$ðºZoW¡/°½mMmý¬±×u•¼Àc8?¬ï«�z»e=÷°Æª�: ¤g8`l»j¬½®¯A5O GÞ`k0‚ÜPÞìYïêõv»ÞM( ‡ô’pH¬Cg¥‡ît�g�pZk¬fý,qŽ|kÐo¾Qù<ˆ>¢ôE€¾Ì0^Q æ2Ya¬Jà;¿âÖMxæ˜Â(Ì±3*,€ �ûË H   €g(ä/ÄàùÇÞQö€û�X…¬Ø“ Ë�©çy LwYžýóû›ˆ,|ÿùãI71ø8ûgÅÚ†zE]À¾÷oú�
øKMÝ«&EŸ|‚}•³TuHê)†žÆ:´C¥¸„LÅn²ô»8˜Hé�án!à�ín‘ìM¼äã\(¢ð&Ë®ÉÍyì«Þ@S±¨ß½­ºi s›hS¢‘ÅÛÒ$Ý‚ET ¯±ªß "HèÇ)!"z¸R@QSHHx[’p—@®"�D“�jÜ ÈZG6Í'‹˜`j×´]¹/.ë‚"{ïOS°+–„x�•$€,–˜¹¥ƒÃQ:š‡ït¾‡ÐmcF2Ç”ðGegÑZ§>åàˆu±®ËÌ*êD×…Ê6Á‹|ð–= „P‚”ÐJð�:@	6Pm”à%8 c€×ÃsÕ-ƒÖÜ³ ++sW5ÀÅšÜ€è;ùˆµÀ1+rÎ„Îþæ;ã‚…ašŸ(¸à	Ñ/œÏ†èå/eS±4Ì�½%ýgt4ÀÃS>pPl{Øãƒ…ù=ôŠ‹‡)8û·–á–Œ0ü[ÃðtNë¿þà�ýAvüÙÌZJ ý²KÇ¨Ã`Ç{�Ž	t!x¨É +i÷	4h–0õ¡J¯“/–ÑÓ‡qZŒ‡üñ¦÷Cƒ°Eß¿E!ui¾¦#—k_ìyŠàPµ/…ºÁg ;³èoÍ¼vž Î)A€á%
 dïÐÂó ÎI0 á“Ð ˜Uá} A žFÀà F pÀDŒI cl4à¢S€&Wl
\%p•Àí•`¨ÃÞ�¯¾ø½€±Œ•`|ƒXÎQ7�è–A«çz�ÚˆŽïoØoÑá§ì>u=}NG}î°¾OŸ¢/Êàª÷Jœú”•/™™Eÿ3Y2‚°’DX
´°hÁÀRp a“  B†I(p7\ñ4ä.  D<ª©cÜ4‚(Œã9E”*²A‚ YPZ–F©ÒXé¥pŠ4;³£ÕŠhJRf«Ð ±{ H9Lîáä-ÃÎÛ—ÙÙÇH'ÿ[âûá'l£Að …Ö(°‚^¼ñ '`ë ëùñ?Óuóu ö <°\
ÇØÇÔ�åI �i7Àó›Â Æt¤aÐYúÌàé	ŽÆ`ÒXDž´ˆ‹�“R‚�4»'`ã­ûNÚœÌñÝ¤-`=ì×]€�	t$Ð\kWJÛ´»sàŠ›Û®(®ùýì/Øì;©ªN^žªªäØ¬goI-ìÞæ€?G1Iº�ðú…‚T° E’ �‰d ˆ„
X!Y@…ä`•èÒ^5CP)kÑ®BÀ
¼  J à^LàE.=�Ð¤MØò<÷�h9.Ÿ¸$Ö’¸Ÿ /^ægu’³K�Ä8§)$I45  €ÞbgöãÄ‚¢8<ž4åupOHÿ�ÌaR†TÄ�Ç> ×c< YU@ðûÀÐþvi…×kf8Ç½ßl€bxÂëÃþ‚�üYYÞŒ_ž*ëTÝ¨wÝÔÂÎmtÌ�Ã¾ì Âëg#ì˜(8à PÊ	£@¨¶ €†(¦µ0à¼˜Ž€ÂP˜F (E”(K¬@À`ï³,{@;|g\Y#ú€h òfÁ‡`„¸WY€'ØuŒ1o?‹/»¯¬úNú¤ôâÁd»¬zÁ7e‡ÞY°"@¹“ ÷�”A
 Ó™€Á29@÷¢OÚÆ�íÖôheoÏ€˜“L0Æÿ�½ö°m÷‘`ÿoƒ)ùëtm›ö¶[FtïÏm£Š)¿¿…ýEúÐÇKmlºŠ    IEND®B`‚                                                                                                                                                                                                                                                                                                includes/File_manager/lib/img/tui-icon-d.svg                                                        0000644                 00000046440 15266052670 0014757 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-d-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#8a8a8a" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-d-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#8a8a8a" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-d-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#8a8a8a" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-d-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-d-ic-delete" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-d-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-d-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-d-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#8a8a8a" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#8a8a8a" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-d-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#8a8a8a" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#8a8a8a" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#8a8a8a" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#8a8a8a" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#8a8a8a" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#8a8a8a">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-d-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-d-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-d-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#8a8a8a"/>
        <path fill="#8a8a8a" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-d-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#8a8a8a" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-d-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#8a8a8a" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#8a8a8a" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#8a8a8a" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#8a8a8a"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#8a8a8a" rx="1"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-d-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#8a8a8a" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#8a8a8a" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-d-ic-text" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-d-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#8a8a8a" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-d-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>                                                                                                                                                                                                                                includes/File_manager/lib/img/edit_ckeditor5.png                                                    0000644                 00000000215 15266052670 0015660 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   TIDATxÚcÀú\Öþa\ò5#c25bb25bb¼šA ›ØŸ�ØÁ§Ÿ^ç£üÞ `= ì:âTÿM8£ñïŸÄ§š¥Hªg&Š³3 y¸As´—    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/img/volume_icon_ftp.png                                                   0000644                 00000000563 15266052670 0016160 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  :IDATxÚ�ÏDÄpðw»vÔ)‡þ´¸
"t@ �sã ‚+�@� "@€ÀÀŒmXß7“m­Û?ïï{Ï³I¹&“ÉfÿI]™¦yíy^âºn3ÎÊûå ŽcÍ¶mÑu½œ“Öä@{0°rä¬¼ÿçbEé8ŽSÀŒ³Úa¶ûý¾(¥
˜qÖè@âûþ¯år)Ìšà¢ÎÿÏ‡ìéLêJÓ´Åt:MªpVûXú6£ðÿ«»•0ãlÝ.¢Å\ÎŒÓÎY¶SYªÕjÝ`á5ç�òvæØÝ“Šê‚û©“û#eï¼m©­7õ"÷=‹Ò÷šÚ…s˜Á3|‚%—›–é]%Ä72ú‚ÜÂ(�ìdŸv§p&ó­'yèZÄ7³Ì1@:?=ºœ])XV    IEND®B`‚                                                                                                                                             includes/File_manager/lib/img/edit_ckeditor.png                                                     0000644                 00000001331 15266052670 0015573 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   IDATxÚu‘°,G@Ï`ñ°ŒmÛ¶Íbl©”²RŽ±SˆmÛ¶õl.§§ûÞt¼›ÿÿ©v÷¹Š/ûfàøˆø’‰–îR³²P3b4Ê«ö†=ÀŠ‰p¬¿ö×žÖéÇÀtV²™[gL°û™8ZA¨–DW^!òÆ¸Y«LøëF#eE+jeIìÚ]‚oÌ/µ–ÅµSffT€Õ³!sµ´bòaÈ9ëVY%¡"¨“#»½·Æ‰å»™&ÕlL)øm¢NRK8p¥§­SáÒOÇØ¬�ÅÚ%Á�ƒÑ·Ó‘]XLX#25Ûd¶ž°j¥—éRž\qâš%
QÈ•Ÿ�Ñ6 ø7À/´M¿*ŸLÔ¨‰²ùj%Fæšì��YÍ_×~=É�ßL²×Êýà1n¯NÕþè©B1Ç6«Y¿ÚÃð|‹ŸÅLbÙÉg�¡Å6kõeIÿ*ã¨.A\ó•¯ÛgÂwí”ùr/…ÍVe]/¼ûÇÎÞp9bÚ^Š•Ã»ÀÛk®ÒÇ
«8pýÐLN¸ë‡Îñ‡?šl°Y9Ï£‹ìè+N7°ã�žN‰ðô@Ó²zo†Ô:%‡7�Õ˜m¦ºv…W�c·Õ
¨s¸P�íáÑ0HE1© Î_¢¼;Zã°µÊ\ÿñ'nºc5Cú×úÑ]ð¤åÃé&[—s¨Ä_”[¿Ã÷‰µ‹yîõ£Œý»ÁqoÐÁd#IW8ýå¸ñë	¬qìºR?;úËYá¡¯Æ™ð�ö‡ñ³I«:x,OpÖ`ÝpÒËSÞžçŠ·È¢„Nÿ.M^‘kåŒG¿ü3âÍÏˆRc‰DÿŠ–ºoÕéãjÝSÀÛtõì÷ÐÍW’JA�{+ÏÆ>–ÁïAånØôµ    IEND®B`‚                                                                                                                                                                                                                                                                                                       includes/File_manager/lib/img/quicklook-icons.png                                                   0000644                 00000003104 15266052671 0016075 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR       ¥   —7  IDATxÚÔÖ%Ð•Q†Ñ�»$hiHÄ"N†.Ð�J#iDCº} CÆÝá—ë~òáÎ>è:ýiïž€ƒ‘g®ã&‘eµDŽ�®“8¬M2`¾“�Xë<é€­�8ªO2`±Ó¾lÚ@ß]]÷´4ÕÍš1Ò‰·¬wÑÏ›DÅ.ÏeŒâÇŒåÃ
gåõÃ9%za•š¼N5Ù²ZQqHGF3Þ²Å?¯ïYã‚/»eÚ”)m­×¯©©¡§k*>d�S@É�¤;=I*Ö¹”T,q¦(ðñÄ"Ë~³y6¸L”°J-Ê˜ÿ/£Œ‰ãæF¨Y]àº�eÚ—à¤ùeÎ[[à�­eúŽÆÇtŒÌ˜U×ÔrOW×}Ó¾ì´Åñž‰ŸwÑúxËHÆs»¢b(gìXèË;kEè)q.täÕ¬
-Y'^O]SFÇ¡¨¨ûywl‰·Léêihjj½~mS¦L»åË.X“ß§,È�iàHÉŸØYr.YWr‘ÎX?ÏûÙä€Yû#—mˆ<5«þƒŸ�±ìÖ¡nÂP …a{LôØÂ4†’Ô 0HD_ ËTÔ·!'—…–lñgµœ«ÿOÝ^PžQ_‚ È�9Ì9Ðk9H‚Ip ‰wÕçk½Ñ0Âùâ{‰–�<‰|m’8GŽwP«†ç¯ñ5juÐ¿ós|#|;6ÊÏÌùÈ€V%ç…�JÎ€õA8ÇÀR&âÀ‰8‘ 'æk�à9|m @òöêtï"[ƒ>!»
åG97ññCÔº2 SQµ&œT‚¸çÈ† î9V2' N$À‰81Øj È sÔ‘cà5¾R=;×jWQ@y&ÕZÐ�œ™s ßN  €`@üŽ@`Òœoµ
âÈçÏ¾Ž�<‰=|m’¸DŽwš÷‡àÖ®=ÀJpq ¯mÛ¶7k7ªÕ–¢JQmÛ¶Õ¶ùxÞ½ýõít²5bõûn5ÿg9÷ï�óéÌ`–è½Íœ”iMÿß„§�ZæÊý¹j!Ë›oj=[Ò¦7ý?‰ÎhÚú[�Ù-izÐ7^ñ²G�kk+™½ö-xÿj˜ÎLSë™,åÒè-BÀ¨Of	4ÿ`}ºˆziÇ{
•�Ž–Ò„–Q¥.¸Ù>–1mxòÖWò¸Ÿ04n¨g¨4P©u�ƒ�kUÓ¥á?4	ßÅ@OW¥PÄìÇ¤ÐSÅ¼Â²µÑF4²=Ÿ+µ2úŽ�²QPè›LZ?8Þ5Ü™�ˆ~+ßëãèè)AúL½�çlž
|ïFO¯Z×ÁÞû•Q°§-|‰8ÍÜfÌÊ3£CÐVêà²PxcZ«ü NÞW"¨	°{Z�ü?¦ õÀA¿ƒ@…j>7£4”8ÎL5[ÿ&>Dß°ˆ� îP�SâèV"¤�J¯4}[¢	+T�Í©áv{·¡«g\=ŒY;:šSËiJ#‰xahDzaNÛ¤"d@¦:
;g„–Ê ½ÅË	sˆGìE*è‚�¦ùåDuyhìËÂIvŽÏ"»7(á~ÃñƒT0{üû€I•B_©Ì²962¿cxq:t?<è`¤/†=ôM¤{•š$Þƒm=}Eª(¬Mò©e5bÌ ÖpRÂØ—G‰Ã„Ž2¹ž·\Mž.YË v¥@ƒûÒÓ¹	]e”|Öf¦Ñ‰„[-œÔ»ÑÖÅ(�Òg3Tv6mSÊ¦u©ùMk¹4#.•M]jc#:ºà3§‚Db[ïÒcAUÌ�*p) ¼`3	™ºV©«€vu³°ú†úZè†W•ïiÑºBrˆÛ†e¼‰®"–2­ÇL_&ÁÐE–ÖS¼¹*­ìÁ sRW”m(ê«Âvˆ{ÏùV7­é¤Š&Œú6fQÇ{‰ u\+\Ó×\eKüÝ}iz3ÆÝi>WûHÁ>õ‰ƒ­h.áñßÞàÌÛíèZ·øÖÇò”3le�ÿØy6K£l®bK-(ÿ¹iaú™Qs2Ã_;þÿø�MßÛ5õê    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/img/edit_pixlrexpress.png                                                 0000644                 00000001637 15266052671 0016551 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  fIDATxÚMÒ�õV àTÃNÇ¿mÛ¶mÛ¶ô¤¼¬mÛ6“µm[y¹§wS~1Î	™x…$à+†:qW3ÓÜ)äu`Dº�hŠ¯ÖÊçÃö3OçÓCòñ×zý×Ìÿ)­C¾a¨OôcâRó½ûû‡†A‰£�¬»»_ôŒ]³çÒ,†zÅ:ÿUÂ—µËá×§Uµ-í „šRÂrùüì�¤|úF²°´"|U±\�–0°ýäÕU”üWÉ…ÇÜÄÊšæVP_X�xö�„û}-ªß: å­rOª Ýu›(Y½XÕU„€¸€¡…›N.bþ‘”Qà+‡-XñÞÏ‹QrZ…÷0Ôz‡c 2}Æpà‚‚O~ÂGg½XÛY ��E¼üNÎÜSÍëïÎ©.Æ•ß“²CJtä¢9)5f~èµ‹F—.gÌÑÎ—‚S°M@r^,Yºõð†sT€2˜›IÆÏ¨¯nFO{'F¹s6`Ÿ¼ÇÈKTX£0;‰6a0Ú±Rac&®>~ìÏx‡&…C’ðìãGÉ½ºÅÃÃhMðÇí±óÔqX^~ƒºìð¡Ià]’¡Ñ¨II[^(Þç2žÁñQ£¯_$çì<·u#¹OÄ…G¶oÃÒ¥Ëáéd‡>E�IÈwL‚Z.ÈÆ³Ooò…¹‹(kkÉ�Ì¶ÜÈ®ÅC¡�©ñü•"ráïžˆ÷tØ(aîÈI…Y8ûF³ãäÝÕí]}b^Ž€w,‹/µ½XÄãJN=Œ©Mps 6O„ÚÎZÀå[Ÿ�RA¢3Â0wåšcÌ(7ÿðXPfz�i<ç‰my�¸’Y‹§ù´Ä:V	°¶ÉÆí[zu½©¾¯/¯yýA.X¹óÄrï°xe5ä³JeZ¯±ÂîP7Zð1¹oŸ¸áú­�0:LMƒÕ&{o;Lœ3o“ŽÊäßqÃ¾S—m¼‘[YC¢ÂCˆŠ~ÖgzyÍ	kk.ÅQ¤º«‚ØyÛcÙÆ·*"5„f)½�»¼²`ÝöõoµÆ<ÿøD¤ä¡$BY.²Ê’Ž—ÊwySfÏÞÀP÷Þ¿¡™ÿ¹öðÕ?;~Z±yÛ±ówî„=x÷¦àþÛ—…g®_	_°zÕñÑcuäÜÉÃ5�u…‰r-i    IEND®B`‚                                                                                                 includes/File_manager/lib/img/volume_icon_onedrive.svg                                              0000644                 00000000771 15266052671 0017217 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><path d="M40.4 36s3-.4 3.5-3.2a5 5 0 0 0 0-1.7c-.4-3.1-3.8-3.8-3.8-3.8s.6-3.4-2.5-5.2c-3.2-1.8-6 0-6 0s-1.7-3.4-6.3-3.4c-5.8 0-6.8 6.6-6.8 6.6s-5.5.3-5.5 5.2 5 5.5 5 5.5h22.4z" fill="#1565c0"/><path d="M11 30.5c0-4.4 3.3-6.3 5.9-7 .9-3 3.4-6.8 8.4-6.8a9 9 0 0 1 7 3c.6-.3 1.4-.4 2.3-.4A8 8 0 0 0 26 12c-5.5 0-7.4 4.7-7.4 4.7s-4-3-8.1 1.1c-2.1 2.1-1.6 5.4-1.6 5.4S4 23.6 4 28.8C4 33.5 9 34 9 34h2.8c-.5-1-.8-2.1-.8-3.5z" fill="#1565c0"/></svg>       includes/File_manager/lib/img/volume_icon_dropbox.png                                               0000644                 00000000635 15266052671 0017045 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  dIDATxÚ�S%\fAœ3‹gí¬�›õzš€„“h˜=ÁéFÆ]"¯Ð7{»¸›Íï�îç³¾3³ó~ˆ9¹rWÿ‡­'a{Ùð�ì‘�?9ÿŽn„£N®µZ�ß—Æ¹ÁÙºI<Ë‹å¦2†�Í�“¦ÄÇ‹ƒ­6M£Ú…»X†ŒéÒ8—=ó€-z È[øG�§v"_¿†d�Ü¹f˜æO0àÎ½„³X	œÜ@P�su¬ùW0�ç}–SåÒtŸ¬}ÁDáD£FØ¾œ*¶Ú6ïOðjÊa­>›Ì¹ghè/,/ŠéóAÞB�ñ
Mnž‡DCP<ýˆ)ÕÜ<¾Iê7äÍ¿ç†™ZñøÁR¿äYX^*Í9_ç¸BÓïó½!¦þA0PÐITi4^&r.Ÿ²¥¿S3ê_øAñÀ¹Ñ¯‰ÙZü‰�(>¹Í´LóëÔk<8=Üßè÷aÑÔg±¹KÏ§ž�XaÓÒ)«    IEND®B`‚                                                                                                   includes/File_manager/lib/img/volume_icon_zip.png                                                   0000644                 00000000733 15266052671 0016171 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         (-S   ½PLTEGpLÉ† ¾ Ìˆ º| °u Æ„ Ìˆ ‹\ Ã‚ µy    «r    ™f £l    •c iF       »} `@ www»»»ùä�öß˜üé¤ò×�þì§ðÔ‹îÐ‡ûç¡ïÏ…™™™ÿò®ôÛ”ëÍ‚éÊíË�èÇ|ôÚ’Ý¾zýî©ÿñ¬ÿõ±Ç¥`÷á›õÏvîîîÝÝÝÌÌÌÏ­i±�K½›WÌªfýþþóøø.¶ôÛééAÉþæððÊA   tRNS „Ža“œ†�¿Š— 
z¨,´œfŠ3Q£Á<Ò   µIDAT€±N…0†¿ó·Pì�›7ßÿqœÜÜá¦znB„Ô×œâçŽï³AþºT¯ußj­^AÐyk8­5ï BX:.§ƒ%@Ú	 (Í,O˜YW ‚Þ6þ·›Ø²^È®S^½Þùøn‚~–NOš³[�àXÍ’[Ã" žÕ'ÊCÉÌ&[Ì0K‚¤ÅïÒ ãÈK`(�áÊûO’Ý:íÀ¸äv<QOH- w‡    IEND®B`‚                                     includes/File_manager/lib/img/volume_icon_zip.svg                                                   0000644                 00000021372 15266052671 0016206 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1" width="96" height="96"><defs><linearGradient id="i"><stop offset="0" stop-color="#2f2f2f"/><stop offset=".4" stop-color="#fff"/><stop offset=".6" stop-color="#979797"/><stop offset=".8" stop-color="#505050"/><stop offset="1" stop-color="#e6e6e6"/></linearGradient><linearGradient id="h"><stop offset="0" stop-color="#ededed"/><stop offset="1" stop-color="#b0b0b0"/></linearGradient><linearGradient id="g"><stop offset="0" stop-color="#a2a2a2"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="e"><stop offset="0" stop-color="#b4b4b4"/><stop offset=".2" stop-color="#646464"/><stop offset=".5" stop-color="#fff"/><stop offset="1" stop-color="#3c3c3c"/></linearGradient><linearGradient id="f"><stop offset="0" stop-color="#fff"/><stop offset=".5" stop-color="#8c8c8c"/><stop offset=".5" stop-color="#cfcfcf"/><stop offset=".6" stop-color="#fff"/><stop offset=".8" stop-color="#c8c8c8"/><stop offset="1" stop-color="#505050"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#818181"/><stop offset=".2" stop-color="#f9f9f9"/><stop offset="1" stop-color="#dcdcdc" stop-opacity="0"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#dcdcdc"/><stop offset="1" stop-color="#fafafa"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#b4b4b4"/><stop offset="1" stop-color="#dcdcdc"/></linearGradient><linearGradient x1="19" y1="74" x2="87.5" y2="27.4" id="t" xlink:href="#a" gradientUnits="userSpaceOnUse"/><linearGradient x1="6" y1="73" x2="24" y2="73" id="q" xlink:href="#b" gradientUnits="userSpaceOnUse"/><linearGradient x1="6" y1="73" x2="24" y2="73" id="r" xlink:href="#b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 96 0)"/><linearGradient x1="38.7" y1="65.6" x2="38.7" y2="5.8" id="s" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="90" cy="90" r="42" fx="90" fy="90" id="p" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -1.08503 2 0 -90 187.7)"/><clipPath id="v"><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" fill="#fff"/></clipPath><filter x="-.2" y="0" width="1.3" height="1.1" color-interpolation-filters="sRGB" id="w"><feGaussianBlur stdDeviation=".9"/></filter><linearGradient x1="68.8" y1="59" x2="75.3" y2="59" id="u" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -1)"/><linearGradient x1="69" y1="54" x2="73" y2="54" id="x" xlink:href="#f" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -1)"/><linearGradient x1="63.5" y1="64.2" x2="79" y2="65" id="M" xlink:href="#g" gradientUnits="userSpaceOnUse"/><filter x="-.2" y="-.1" width="1.3" height="1.2" color-interpolation-filters="sRGB" id="N"><feGaussianBlur stdDeviation=".5"/></filter><linearGradient x1="69" y1="17.5" x2="75.1" y2="17.5" id="P" xlink:href="#h" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 144 -2)"/><linearGradient x1="68" y1="17.8" x2="76" y2="17.8" id="O" xlink:href="#h" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -2)"/><linearGradient x1="68.8" y1="59" x2="72.3" y2="59" id="Q" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.12627 0 0 1 -7.4 -49.5)"/><linearGradient x1="69" y1="54" x2="73" y2="54" id="F" xlink:href="#i" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 144 -4)"/><linearGradient x1="45.4" y1="92.5" x2="45.4" y2="7" id="j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.00587 0 0 .99417 100 0)"><stop offset="0"/><stop offset="1" stop-opacity=".6"/></linearGradient><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="l" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="m" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="n" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="o" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -97)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="k" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/></defs><g transform="scale(1 -1)"><path d="M12-95A10 10 0 0 0 2-85v71A10 10 0 0 0 12-4h72a10 10 0 0 0 10-10v-71a10 10 0 0 0-10-10H12z" opacity=".1" fill="url(#k)"/><path d="M12-94c-5 0-9 4-9 9v71c0 5 4 9 9 9h72c5 0 9-4 9-9v-71c0-5-4-9-9-9H12z" opacity=".1" fill="url(#l)"/><path d="M12-93a8 8 0 0 0-8 8v71a8 8 0 0 0 8 8h72a8 8 0 0 0 8-8v-71a8 8 0 0 0-8-8H12z" opacity=".2" fill="url(#m)"/><rect width="86" height="85" rx="7" ry="7" x="5" y="-92" opacity=".3" fill="url(#n)"/><rect width="84" height="84" rx="6" ry="6" x="6" y="-91" opacity=".5" fill="url(#o)"/></g><path d="M12 6a6 6 0 0 0-6 6v72a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v3h-6V6H12z" fill="url(#p)"/><path d="M6 56v28a6 6 0 0 0 6 6h12V56H6z" fill="url(#q)"/><path d="M90 56v28a6 6 0 0 1-6 6H72V56h18z" fill="url(#r)"/><path d="M6 82v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M6 78v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".8" fill="#fff"/><path d="M6 76v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M6 72v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".8" fill="#fff"/><path d="M6 70v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M12 6a6 6 0 0 0-6 6v56a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v3h-6V6H12z" fill="url(#s)"/><path d="M12 6a6 6 0 0 0-6 6v56a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v2h9a4 4 0 0 1 4 4v56a4 4 0 0 1-4 4H12a4 4 0 0 1-4-4V12a4 4 0 0 1 4-4h57V6H12z" fill="url(#t)"/><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" fill="#252525"/><path fill="#4d4d4d" d="M70 8h4v49h-4z"/><rect width="6" height="4" rx="1" ry="1" x="69" y="56" fill="url(#u)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" clip-path="url(#v)" fill="none" stroke="#000" stroke-width="2" stroke-linecap="square" filter="url(#w)"/><path d="M69.5 51c-.3 0-.5.2-.5.5v3c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5V54h1.5c.3 0 .5-.2.5-.5v-1c0-.3-.2-.5-.5-.5H71v-.5c0-.3-.2-.5-.5-.5h-1z" id="y" fill="url(#x)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><use transform="translate(0 -6)" id="z" width="96" height="96" xlink:href="#y"/><use transform="translate(0 -6)" id="A" width="96" height="96" xlink:href="#z"/><use transform="translate(0 -6)" id="B" width="96" height="96" xlink:href="#A"/><use transform="translate(0 -6)" id="C" width="96" height="96" xlink:href="#B"/><use transform="translate(0 -6)" id="D" width="96" height="96" xlink:href="#C"/><use transform="translate(0 -6)" id="E" width="96" height="96" xlink:href="#D"/><use transform="translate(0 -6)" width="96" height="96" xlink:href="#E"/><path d="M74.5 48c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-1a.5.5 0 0 1-.5-.5V51h-1.5a.5.5 0 0 1-.5-.5v-1c0-.3.2-.5.5-.5H73v-.5c0-.3.2-.5.5-.5h1z" id="G" fill="url(#F)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><use transform="translate(0 -6)" id="H" width="96" height="96" xlink:href="#G"/><use transform="translate(0 -6)" id="I" width="96" height="96" xlink:href="#H"/><use transform="translate(0 -6)" id="J" width="96" height="96" xlink:href="#I"/><use transform="translate(0 -6)" id="K" width="96" height="96" xlink:href="#J"/><use transform="translate(0 -6)" id="L" width="96" height="96" xlink:href="#K"/><use transform="translate(0 -6)" width="96" height="96" xlink:href="#L"/><path d="M65 6v55a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V6h-1v55a3 3 0 0 1-3 3h-6a3 3 0 0 1-3-3V6h-1z" fill="url(#M)"/><path d="M69.5 10.5c-1 0-2 .8-2 1.8v10.9c0 1 1 1.8 2 1.8h5c1 0 2-.8 2-1.8V12.3c0-1-1-1.8-2-1.8h-5zm1 9h3v1.8h-3v-1.7z" transform="translate(0 -2)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6" filter="url(#N)"/><path d="M69.2 9c-.7 0-1.2.5-1.2 1.1v10.8c0 .6.5 1.1 1.2 1.1h5.6c.7 0 1.2-.5 1.2-1V10c0-.6-.5-1-1.2-1h-5.6zm.7 8H74v3h-4v-3z" fill="url(#O)"/><path d="M74.6 10c.2 0 .5.2.5.5v10c0 .3-.3.5-.5.5h-5.1a.5.5 0 0 1-.5-.5v-10c0-.3.2-.5.5-.5h5zm-.5 7H70v3h4.1v-3z" fill="url(#P)"/><rect width="3.4" height="5" rx=".6" ry=".5" x="70.3" y="7.5" fill="url(#Q)" stroke="#000" stroke-linecap="square" stroke-opacity=".6"/><path opacity=".3" d="M70 16h4v1h-4z"/></svg>                                                                                                                                                                                                                                                                      includes/File_manager/lib/img/edit_onlineconvert.png                                                0000644                 00000001646 15266052671 0016666 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         (-S   gAMA  ±�üa   sRGB ®Îé  IPLTEÏÑÑ¡F   N¹DQ»GŸE1ž[–¡žP¹F|Áw  H¶DzÀvÐÑÒš£ž ¢¤, .žZ™¡ £FL·F¢FQ¼G&©G £FDŸ<K¸G/ªFP oŸC ¤F%¨Go+7†1
3…1;¥AE·G:¯FN¸FO¹FÊÎÌc$`%!šA+o(¡E/ž[D²EF¶B�ÄŽ•¡ž3 [)v,yÀuF¶G¡DM°BŸ¥¥=¡a'
 ¦GFµF{ÀwN¸DJ·Dk¼iC´D)x,$s+6ÅÊÇ  8¯EH©[™£žQºFD8O¸F-’:i¹j'>¯C)f#8§BN¹E]³[1¥EB¤bz2ÂÇÄ¡¨§2e·i7­F:¯D-q({¿vOºDÎÑÐG§d¤«ªc'3b¶\O¹E6®DW°f±·¶u-T®f#‰7\²g«²°0ªD`µh,¬E»Á¿F™]µ»¹E‰U¿ÄÁ®µ³¨®­¸¾¼[!Bœ:ÎÏÐUnSB¡9PºF"3{,J«A™��UžPQ½FR¾I.r(Ÿ¡¤2~*AMBK­A%`! C�:]]_:ÃÄÅB™›ž0D¡=G¦> L¯BM³D9Š3šœž»¼½"!";Ž4J¬A.v(! !  !�Ÿ¡R½Iµ¶¸¸¹º" !%!²³µ£¤§!"!-r' !!¬­¯¦¨ª'd!¯°²M©«­R½GjNI˜   ûIDATÓcà·‰Ïj(«/¬i¬ª‹óÔæe‘³�É¬®-.(­Hv1a``–·ŠÎ)ª,ÏOu5¶ 
°±2ÚÇf—4%…»qó@ô¢‚ÜÍ-aRŠºL^v:jÎŽQI%&.U1M'N°€¸¬º>“Š43HÀÐ@CËÚƒ‰KY*`æÍá–’â0õ‰`iî˜ÐßÕÙÝð�Ìc™:s1Ë|�,,é@¾Ü¾)ó–n<´F`õ¢émi@�ÞI³—¬Ý¿w§�ÐŠ…ÓZ3z&ÏY¶eëÁ»Ö¯[%8£…aâÜåø·ï9¸{ß¶M›WÎâ jìKJ¶¨íž    IEND®B`‚                                                                                          includes/File_manager/lib/img/trashmesh.png                                                         0000644                 00000000244 15266052671 0014763 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         ÄRWÓ   bKGD ÿ ÿ ÿ ½§“   	pHYs     šœ   DIDAT×uÍK
€0CÑƒE?(î�ˆ‹õ¡wrIZ¬HÈUoðf)¡÷ÍØ`ÿ‘9áŒ7[	sG\Nèê›ëµ³ø8Ç?    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/php/elFinderVolumeTrash.class.php                                         0000644                 00000003057 15266052671 0020036 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder driver for trash bin at local filesystem.
 *
 * @author NaokiSawada
 **/
class elFinderVolumeTrash extends elFinderVolumeLocalFileSystem
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 't';

    public function __construct()
    {
        parent::__construct();
        // original option of the Trash
        $this->options['lockEverything'] = false; // Lock all items in the trash to disable delete, move, rename.

        // common options as the volume driver
        $this->options['alias'] = 'Trash';
        $this->options['quarantine'] = '';
        $this->options['rootCssClass'] = 'elfinder-navbar-root-trash';
        $this->options['copyOverwrite'] = false;
        $this->options['uiCmdMap'] = array('paste' => 'hidden', 'mkdir' => 'hidden', 'copy' => 'restore');
        $this->options['disabled'] = array('archive', 'duplicate', 'edit', 'extract', 'mkfile', 'places', 'put', 'rename', 'resize', 'upload');
    }

    public function mount(array $opts)
    {
        if ($this->options['lockEverything']) {
            if (!is_array($opts['attributes'])) {
                $opts['attributes'] = array();
            }
            $attr = array(
                'pattern' => '/./',
                'locked' => true,
            );
            array_unshift($opts['attributes'], $attr);
        }
        // force set `copyJoin` to true
        $opts['copyJoin'] = true;

        return parent::mount($opts);
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 includes/File_manager/lib/php/elFinderVolumeFTP.class.php                                           0000644                 00000162270 15266052672 0017412 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for FTP
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeFTP extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'f';

    /**
     * FTP Connection Instance
     *
     * @var resource a FTP stream
     **/
    protected $connect = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir
     *
     * @var string
     **/
    protected $tmpPath = '';

    /**
     * Last FTP error message
     *
     * @var string
     **/
    protected $ftpError = '';

    /**
     * FTP server output list as ftp on linux
     *
     * @var bool
     **/
    protected $ftpOsUnix;

    /**
     * FTP LIST command option
     *
     * @var string
     */
    protected $ftpListOption = '-al';


    /**
     * Is connected server Pure FTPd?
     *
     * @var bool
     */
    protected $isPureFtpd = false;

    /**
     * Is connected server with FTPS?
     *
     * @var bool
     */
    protected $isFTPS = false;

    /**
     * Tmp folder path
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * FTP command `MLST` support
     *
     * @var bool
     */
    private $MLSTsupprt = false;

    /**
     * Calling cacheDir() target path with non-MLST
     *
     * @var string
     */
    private $cacheDirTarget = '';

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'port' => 21,
            'mode' => 'passive',
            'ssl' => false,
            'path' => '/',
            'timeout' => 20,
            'owner' => true,
            'tmbPath' => '',
            'tmpPath' => '',
            'separator' => '/',
            'checkSubfolders' => -1,
            'dirMode' => 0755,
            'fileMode' => 0644,
            'rootCssClass' => 'elfinder-navbar-root-ftp',
            'ftpListOption' => '-al',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return array volume root options
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        if (!empty($_REQUEST['encoding']) && iconv('UTF-8', $_REQUEST['encoding'], '') !== false) {
            $options['encoding'] = $_REQUEST['encoding'];
            if (!empty($_REQUEST['locale']) && setlocale(LC_ALL, $_REQUEST['locale'])) {
                setlocale(LC_ALL, elFinder::$locale);
                $options['locale'] = $_REQUEST['locale'];
            }
        }
        if (!empty($_REQUEST['FTPS'])) {
            $options['ssl'] = true;
        }
        $options['statOwner'] = true;
        $options['allowChmodReadOnly'] = true;
        $options['acceptedName'] = '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#';
        return $options;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        if (!$this->options['host']
            || !$this->options['port']) {
            return $this->setError('Required options undefined.');
        }

        if (!$this->options['user']) {
            $this->options['user'] = 'anonymous';
            $this->options['pass'] = '';
        }
        if (!$this->options['path']) {
            $this->options['path'] = '/';
        }

        // make ney mount key
        $this->netMountKey = md5(join('-', array('ftp', $this->options['host'], $this->options['port'], $this->options['path'], $this->options['user'])));

        if (!function_exists('ftp_connect')) {
            return $this->setError('FTP extension not loaded.');
        }

        // remove protocol from host
        $scheme = parse_url($this->options['host'], PHP_URL_SCHEME);

        if ($scheme) {
            $this->options['host'] = substr($this->options['host'], strlen($scheme) + 3);
        }

        // normalize root path
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = $this->options['user'] . '@' . $this->options['host'];
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];
        $this->options['separator'] = '/';

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }

        if (isset($this->options['ftpListOption'])) {
            $this->ftpListOption = $this->options['ftpListOption'];
        }

        return $this->needOnline? $this->connect() : true;

    }


    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'], 0755, true)) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }
        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if (!$this->tmp) {
            $this->disabled[] = 'mkfile';
            $this->disabled[] = 'paste';
            $this->disabled[] = 'duplicate';
            $this->disabled[] = 'upload';
            $this->disabled[] = 'edit';
            $this->disabled[] = 'archive';
            $this->disabled[] = 'extract';
        }

        // echo $this->tmp;

    }

    /**
     * Connect to ftp server
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function connect()
    {
        $withSSL = empty($this->options['ssl']) ? '' : ' with SSL';
        if ($withSSL) {
            if (!function_exists('ftp_ssl_connect') || !($this->connect = ftp_ssl_connect($this->options['host'], $this->options['port'], $this->options['timeout']))) {
                return $this->setError('Unable to connect to FTP server ' . $this->options['host'] . $withSSL);
            }
            $this->isFTPS = true;
        } else {
            if (!($this->connect = ftp_connect($this->options['host'], $this->options['port'], $this->options['timeout']))) {
                return $this->setError('Unable to connect to FTP server ' . $this->options['host']);
            }
        }
        if (!ftp_login($this->connect, $this->options['user'], $this->options['pass'])) {
            $this->umount();
            return $this->setError('Unable to login into ' . $this->options['host'] . $withSSL);
        }

        // try switch utf8 mode
        if ($this->encoding) {
            ftp_raw($this->connect, 'OPTS UTF8 OFF');
        } else {
            ftp_raw($this->connect, 'OPTS UTF8 ON');
        }

        $help = ftp_raw($this->connect, 'HELP');
        $this->isPureFtpd = stripos(implode(' ', $help), 'Pure-FTPd') !== false;

        if (!$this->isPureFtpd) {
            // switch off extended passive mode - may be usefull for some servers
            // this command, for pure-ftpd, doesn't work and takes a timeout in some pure-ftpd versions
            ftp_raw($this->connect, 'epsv4 off');
        }
        // enter passive mode if required
        $pasv = ($this->options['mode'] == 'passive');
        if (!ftp_pasv($this->connect, $pasv)) {
            if ($pasv) {
                $this->options['mode'] = 'active';
            }
        }

        // enter root folder
        if (!ftp_chdir($this->connect, $this->root)
            || $this->root != ftp_pwd($this->connect)) {
            $this->umount();
            return $this->setError('Unable to open root folder.');
        }

        // check for MLST support
        $features = ftp_raw($this->connect, 'FEAT');
        if (!is_array($features)) {
            $this->umount();
            return $this->setError('Server does not support command FEAT.');
        }

        foreach ($features as $feat) {
            if (strpos(trim($feat), 'MLST') === 0) {
                $this->MLSTsupprt = true;
                break;
            }
        }

        return true;
    }

    /**
     * Call ftp_rawlist with option prefix
     *
     * @param string $path
     *
     * @return array
     */
    protected function ftpRawList($path)
    {
        if ($this->isPureFtpd) {
            $path = str_replace(' ', '\ ', $path);
        }
        if ($this->ftpListOption) {
            $path = $this->ftpListOption . ' ' . $path;
        }
        $res = ftp_rawlist($this->connect, $path);
        if ($res === false) {
            $res = array();
        }
        return $res;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->connect && ftp_close($this->connect);
    }


    /**
     * Parse line from ftp_rawlist() output and return file stat (array)
     *
     * @param  string $raw line from ftp_rawlist() output
     * @param         $base
     * @param bool    $nameOnly
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function parseRaw($raw, $base, $nameOnly = false)
    {
        static $now;
        static $lastyear;

        if (!$now) {
            $now = time();
            $lastyear = date('Y') - 1;
        }

        $info = preg_split("/\s+/", $raw, 8);
        if (isset($info[7])) {
        	list($info[7], $info[8]) = explode(' ', $info[7], 2);
        }
        $stat = array();

        if (!isset($this->ftpOsUnix)) {
            $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
        }
        if (!$this->ftpOsUnix) {
            $info = $this->normalizeRawWindows($raw);
        }

        if (count($info) < 9 || $info[8] == '.' || $info[8] == '..') {
            return false;
        }

        $name = $info[8];

        if (preg_match('|(.+)\-\>(.+)|', $name, $m)) {
            $name = trim($m[1]);
            // check recursive processing
            if ($this->cacheDirTarget && $this->_joinPath($base, $name) !== $this->cacheDirTarget) {
                return array();
            }
            if (!$nameOnly) {
                $target = trim($m[2]);
                if (substr($target, 0, 1) !== $this->separator) {
                    $target = $this->getFullPath($target, $base);
                }
                $target = $this->_normpath($target);
                $stat['name'] = $name;
                $stat['target'] = $target;
                return $stat;
            }
        }

        if ($nameOnly) {
            return array('name' => $name);
        }

        if (is_numeric($info[5]) && !$info[6] && !$info[7]) {
            // by normalizeRawWindows()
            $stat['ts'] = $info[5];
        } else {
            $stat['ts'] = strtotime($info[5] . ' ' . $info[6] . ' ' . $info[7]);
            if ($stat['ts'] && $stat['ts'] > $now && strpos($info[7], ':') !== false) {
                $stat['ts'] = strtotime($info[5] . ' ' . $info[6] . ' ' . $lastyear . ' ' . $info[7]);
            }
            if (empty($stat['ts'])) {
                $stat['ts'] = strtotime($info[6] . ' ' . $info[5] . ' ' . $info[7]);
                if ($stat['ts'] && $stat['ts'] > $now && strpos($info[7], ':') !== false) {
                    $stat['ts'] = strtotime($info[6] . ' ' . $info[5] . ' ' . $lastyear . ' ' . $info[7]);
                }
            }
        }

        if ($this->options['statOwner']) {
            $stat['owner'] = $info[2];
            $stat['group'] = $info[3];
            $stat['perm'] = substr($info[0], 1);
            //
            // if not exists owner in LS ftp ==>                    isowner = true
            // if is defined as option : 'owner' => true            isowner = true
            //
            // if exist owner in LS ftp  and 'owner' => False       isowner =   result of    owner(file) == user(logged with ftp)
            //
            $stat['isowner'] = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;
        }

        $owner_computed = isset($stat['isowner']) ? $stat['isowner'] : $this->options['owner'];
        $perm = $this->parsePermissions($info[0], $owner_computed);
        $stat['name'] = $name;
        $stat['mime'] = substr(strtolower($info[0]), 0, 1) == 'd' ? 'directory' : $this->mimetype($stat['name'], true);
        $stat['size'] = $stat['mime'] == 'directory' ? 0 : $info[4];
        $stat['read'] = $perm['read'];
        $stat['write'] = $perm['write'];

        return $stat;
    }

    /**
     * Normalize MS-DOS style FTP LIST Raw line
     *
     * @param  string $raw line from FTP LIST (MS-DOS style)
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function normalizeRawWindows($raw)
    {
        $info = array_pad(array(), 9, '');
        $item = preg_replace('#\s+#', ' ', trim($raw), 3);
        list($date, $time, $size, $name) = explode(' ', $item, 4);
        $format = strlen($date) === 8 ? 'm-d-yH:iA' : 'Y-m-dH:i';
        $dateObj = DateTime::createFromFormat($format, $date . $time);
        $info[5] = strtotime($dateObj->format('Y-m-d H:i'));
        $info[8] = $name;
        if ($size === '<DIR>') {
            $info[4] = 0;
            $info[0] = 'drwxr-xr-x';
        } else {
            $info[4] = (int)$size;
            $info[0] = '-rw-r--r--';
        }
        return $info;
    }

    /**
     * Parse permissions string. Return array(read => true/false, write => true/false)
     *
     * @param  string $perm                        permissions string   'rwx' + 'rwx' + 'rwx'
     *                                             ^       ^       ^
     *                                             |       |       +->   others
     *                                             |       +--------->   group
     *                                             +----------------->   owner
     *                                             The isowner parameter is computed by the caller.
     *                                             If the owner parameter in the options is true, the user is the actual owner of all objects even if che user used in the ftp Login
     *                                             is different from the file owner id.
     *                                             If the owner parameter is false to understand if the user is the file owner we compare the ftp user with the file owner id.
     * @param Boolean $isowner                     . Tell if the current user is the owner of the object.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Ugo Vierucci
     */
    protected function parsePermissions($perm, $isowner = true)
    {
        $res = array();
        $parts = array();
        for ($i = 0, $l = strlen($perm); $i < $l; $i++) {
            $parts[] = substr($perm, $i, 1);
        }

        $read = ($isowner && $parts[1] == 'r') || $parts[4] == 'r' || $parts[7] == 'r';

        return array(
            'read' => $parts[0] == 'd' ? $read && (($isowner && $parts[3] == 'x') || $parts[6] == 'x' || $parts[9] == 'x') : $read,
            'write' => ($isowner && $parts[2] == 'w') || $parts[5] == 'w' || $parts[8] == 'w'
        );
    }

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return void
     * @author Dmitry Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        $list = array();
        $encPath = $this->convEncIn($path);
        foreach ($this->ftpRawList($encPath) as $raw) {
            if (($stat = $this->parseRaw($raw, $encPath))) {
                $list[] = $stat;
            }
        }
        $list = $this->convEncOut($list);
        $prefix = ($path === $this->separator) ? $this->separator : $path . $this->separator;
        $targets = array();
        foreach ($list as $stat) {
            $p = $prefix . $stat['name'];
            if (isset($stat['target'])) {
                // stat later
                $targets[$stat['name']] = $stat['target'];
            } else {
                $stat = $this->updateCache($p, $stat);
                if (empty($stat['hidden'])) {
                    if (!$hasDir && $stat['mime'] === 'directory') {
                        $hasDir = true;
                    }
                    $this->dirsCache[$path][] = $p;
                }
            }
        }
        // stat link targets
        foreach ($targets as $name => $target) {
            $stat = array();
            $stat['name'] = $name;
            $p = $prefix . $name;
            $cacheDirTarget = $this->cacheDirTarget;
            $this->cacheDirTarget = $this->convEncIn($target, true);
            if ($tstat = $this->stat($target)) {
                $stat['size'] = $tstat['size'];
                $stat['alias'] = $target;
                $stat['thash'] = $tstat['hash'];
                $stat['mime'] = $tstat['mime'];
                $stat['read'] = $tstat['read'];
                $stat['write'] = $tstat['write'];

                if (isset($tstat['ts'])) {
                    $stat['ts'] = $tstat['ts'];
                }
                if (isset($tstat['owner'])) {
                    $stat['owner'] = $tstat['owner'];
                }
                if (isset($tstat['group'])) {
                    $stat['group'] = $tstat['group'];
                }
                if (isset($tstat['perm'])) {
                    $stat['perm'] = $tstat['perm'];
                }
                if (isset($tstat['isowner'])) {
                    $stat['isowner'] = $tstat['isowner'];
                }
            } else {

                $stat['mime'] = 'symlink-broken';
                $stat['read'] = false;
                $stat['write'] = false;
                $stat['size'] = 0;

            }
            $this->cacheDirTarget = $cacheDirTarget;
            $stat = $this->updateCache($p, $stat);
            if (empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }
    }

    /**
     * Return ftp transfer mode for file
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function ftpMode($path)
    {
        return strpos($this->mimetype($path), 'text/') === 0 ? FTP_ASCII : FTP_BINARY;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _dirname($path)
    {
        $parts = explode($this->separator, trim($path, $this->separator));
        array_pop($parts);
        return $this->separator . join($this->separator, $parts);
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _basename($path)
    {
        $parts = explode($this->separator, trim($path, $this->separator));
        return array_pop($parts);
    }

    /**
     * Join dir name and file name and retur full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return rtrim($dir, $this->separator) . $this->separator . $name;
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (empty($path)) {
            $path = '.';
        }
        // path must be start with /
        $path = preg_replace('|^\.\/?|', $this->separator, $path);
        $path = preg_replace('/^([^\/])/', "/$1", $path);

        if ($path[0] === $this->separator) {
            $initial_slashes = true;
        } else {
            $initial_slashes = false;
        }

        if (($initial_slashes)
            && (strpos($path, '//') === 0)
            && (strpos($path, '///') === false)) {
            $initial_slashes = 2;
        }

        $initial_slashes = (int)$initial_slashes;

        $comps = explode($this->separator, $path);
        $new_comps = array();
        foreach ($comps as $comp) {
            if (in_array($comp, array('', '.'))) {
                continue;
            }

            if (($comp != '..')
                || (!$initial_slashes && !$new_comps)
                || ($new_comps && (end($new_comps) == '..'))) {
                array_push($new_comps, $comp);
            } elseif ($new_comps) {
                array_pop($new_comps);
            }
        }
        $comps = $new_comps;
        $path = implode($this->separator, $comps);
        if ($initial_slashes) {
            $path = str_repeat($this->separator, $initial_slashes) . $path;
        }

        return $path ? $path : '.';
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            if (strpos($path, $this->root) === 0) {
                return ltrim(substr($path, strlen($this->root)), $this->separator);
            } else {
                // for link
                return $path;
            }
        }
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        if ($path === $this->separator) {
            return $this->root;
        } else {
            if ($path[0] === $this->separator) {
                // for link
                return $path;
            } else {
                return $this->_joinPath($this->root, $path);
            }
        }
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . ($path == $this->root ? '' : $this->separator . $this->_relpath($path));
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, rtrim($parent, $this->separator) . $this->separator) === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $outPath = $this->convEncOut($path);
        if (isset($this->cache[$outPath])) {
            return $this->convEncIn($this->cache[$outPath]);
        } else {
            $this->convEncIn();
        }
        if (!$this->MLSTsupprt) {
            if ($path === $this->root) {
                $res = array(
                    'name' => $this->root,
                    'mime' => 'directory',
                    'dirs' => -1
                );
                if ($this->needOnline && (($this->ARGS['cmd'] === 'open' && $this->ARGS['target'] === $this->encode($this->root)) || $this->isMyReload())) {
                    $check = array(
                        'ts' => true,
                        'dirs' => true,
                    );
                    $ts = 0;
                    foreach ($this->ftpRawList($path) as $str) {
                        $info = preg_split('/\s+/', $str, 9);
                        if ($info[8] === '.') {
                            $info[8] = 'root';
                            if ($stat = $this->parseRaw(join(' ', $info), $path)) {
                                unset($stat['name']);
                                $res = array_merge($res, $stat);
                                if ($res['ts']) {
                                    $ts = 0;
                                    unset($check['ts']);
                                }
                            }
                        }
                        if ($check && ($stat = $this->parseRaw($str, $path))) {
                            if (isset($stat['ts']) && !empty($stat['ts'])) {
                                $ts = max($ts, $stat['ts']);
                            }
                            if (isset($stat['dirs']) && $stat['mime'] === 'directory') {
                                $res['dirs'] = 1;
                                unset($stat['dirs']);
                            }
                            if (!$check) {
                                break;
                            }
                        }
                    }
                    if ($ts) {
                        $res['ts'] = $ts;
                    }
                    $this->cache[$outPath] = $res;
                }
                return $res;
            }

            $pPath = $this->_dirname($path);
            if ($this->_inPath($pPath, $this->root)) {
                $outPPpath = $this->convEncOut($pPath);
                if (!isset($this->dirsCache[$outPPpath])) {
                    $parentSubdirs = null;
                    if (isset($this->sessionCache['subdirs']) && isset($this->sessionCache['subdirs'][$outPPpath])) {
                        $parentSubdirs = $this->sessionCache['subdirs'][$outPPpath];
                    }
                    $this->cacheDir($outPPpath);
                    if ($parentSubdirs) {
                        $this->sessionCache['subdirs'][$outPPpath] = $parentSubdirs;
                    }
                }
            }

            $stat = $this->convEncIn(isset($this->cache[$outPath]) ? $this->cache[$outPath] : array());
            if (!$this->mounted) {
                // dispose incomplete cache made by calling `stat` by 'startPath' option
                $this->cache = array();
            }
            return $stat;
        }
        $raw = ftp_raw($this->connect, 'MLST ' . $path);
        if (is_array($raw) && count($raw) > 1 && substr(trim($raw[0]), 0, 1) == 2) {
            $parts = explode(';', trim($raw[1]));
            array_pop($parts);
            $parts = array_map('strtolower', $parts);
            $stat = array();
            $mode = '';
            foreach ($parts as $part) {

                list($key, $val) = explode('=', $part, 2);

                switch ($key) {
                    case 'type':
                        if (strpos($val, 'dir') !== false) {
                            $stat['mime'] = 'directory';
                        } else if (strpos($val, 'link') !== false) {
                            $stat['mime'] = 'symlink';
                            break(2);
                        } else {
                            $stat['mime'] = $this->mimetype($path);
                        }
                        break;

                    case 'size':
                        $stat['size'] = $val;
                        break;

                    case 'modify':
                        $ts = mktime(intval(substr($val, 8, 2)), intval(substr($val, 10, 2)), intval(substr($val, 12, 2)), intval(substr($val, 4, 2)), intval(substr($val, 6, 2)), substr($val, 0, 4));
                        $stat['ts'] = $ts;
                        break;

                    case 'unix.mode':
                        $mode = strval($val);
                        break;

                    case 'unix.uid':
                        $stat['owner'] = $val;
                        break;

                    case 'unix.gid':
                        $stat['group'] = $val;
                        break;

                    case 'perm':
                        $val = strtolower($val);
                        $stat['read'] = (int)preg_match('/e|l|r/', $val);
                        $stat['write'] = (int)preg_match('/w|m|c/', $val);
                        if (!preg_match('/f|d/', $val)) {
                            $stat['locked'] = 1;
                        }
                        break;
                }
            }

            if (empty($stat['mime'])) {
                return array();
            }

            // do not use MLST to get stat of symlink
            if ($stat['mime'] === 'symlink') {
                $this->MLSTsupprt = false;
                $res = $this->_stat($path);
                $this->MLSTsupprt = true;
                return $res;
            }

            if ($stat['mime'] === 'directory') {
                $stat['size'] = 0;
            }

            if ($mode) {
                $stat['perm'] = '';
                if ($mode[0] === '0') {
                    $mode = substr($mode, 1);
                }

                $perm = array();
                for ($i = 0; $i <= 2; $i++) {
                    $perm[$i] = array(false, false, false);
                    $n = isset($mode[$i]) ? $mode[$i] : 0;

                    if ($n - 4 >= 0) {
                        $perm[$i][0] = true;
                        $n = $n - 4;
                        $stat['perm'] .= 'r';
                    } else {
                        $stat['perm'] .= '-';
                    }

                    if ($n - 2 >= 0) {
                        $perm[$i][1] = true;
                        $n = $n - 2;
                        $stat['perm'] .= 'w';
                    } else {
                        $stat['perm'] .= '-';
                    }

                    if ($n - 1 == 0) {
                        $perm[$i][2] = true;
                        $stat['perm'] .= 'x';
                    } else {
                        $stat['perm'] .= '-';
                    }
                }

                $stat['perm'] = trim($stat['perm']);
                //
                // if not exists owner in LS ftp ==>                    isowner = true
                // if is defined as option : 'owner' => true            isowner = true
                //
                // if exist owner in LS ftp  and 'owner' => False        isowner =   result of    owner(file) == user(logged with ftp)

                $owner_computed = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;

                $read = ($owner_computed && $perm[0][0]) || $perm[1][0] || $perm[2][0];

                $stat['read'] = $stat['mime'] == 'directory' ? $read && (($owner_computed && $perm[0][2]) || $perm[1][2] || $perm[2][2]) : $read;
                $stat['write'] = ($owner_computed && $perm[0][1]) || $perm[1][1] || $perm[2][1];

                if ($this->options['statOwner']) {
                    $stat['isowner'] = $owner_computed;
                } else {
                    unset($stat['owner'], $stat['group'], $stat['perm']);
                }
            }

            return $stat;

        }

        return array();
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {

        foreach ($this->ftpRawList($path) as $str) {
            $info = preg_split('/\s+/', $str, 9);
            if (!isset($this->ftpOsUnix)) {
                $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
            }
            if (!$this->ftpOsUnix) {
                $info = $this->normalizeRawWindows($str);
            }
            $name = isset($info[8]) ? trim($info[8]) : '';
            if ($name && $name !== '.' && $name !== '..' && substr(strtolower($info[0]), 0, 1) === 'd') {
                return true;
            }
        }
        return false;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        $ret = false;
        if ($imgsize = $this->getImageSize($path, $mime)) {
            $ret = array('dim' => $imgsize['dimensions']);
            if (!empty($imgsize['url'])) {
                $ret['url'] = $imgsize['url'];
            }
        }
        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function _scandir($path)
    {
        $files = array();

        foreach ($this->ftpRawList($path) as $str) {
            if (($stat = $this->parseRaw($str, $path, true))) {
                $files[] = $this->_joinPath($path, $stat['name']);
            }
        }

        return $files;
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @throws elFinderAbortException
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        // try ftp stream wrapper
        if ($this->options['mode'] === 'passive' && ini_get('allow_url_fopen')) {
            $url = ($this->isFTPS ? 'ftps' : 'ftp') . '://' . $this->options['user'] . ':' . $this->options['pass'] . '@' . $this->options['host'] . ':' . $this->options['port'] . $path;
            if (strtolower($mode[0]) === 'w') {
                $context = stream_context_create(array('ftp' => array('overwrite' => true)));
                $fp = fopen($url, $mode, false, $context);
            } else {
                $fp = fopen($url, $mode);
            }
            if ($fp) {
                return $fp;
            }
        }

        if ($this->tmp) {
            $local = $this->getTempFile($path);
            $fp = fopen($local, 'wb');
            $ret = ftp_nb_fget($this->connect, $fp, $path, FTP_BINARY);
            while ($ret === FTP_MOREDATA) {
                elFinder::extendTimeLimit();
                $ret = ftp_nb_continue($this->connect);
            }
            if ($ret === FTP_FINISHED) {
                fclose($fp);
                $fp = fopen($local, $mode);
                return $fp;
            }
            fclose($fp);
            is_file($local) && unlink($local);
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);
        if (ftp_mkdir($this->connect, $path) === false) {
            return false;
        }

        $this->options['dirMode'] && ftp_chmod($this->connect, $this->options['dirMode'], $path);
        return $path;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        if ($this->tmp) {
            $path = $this->_joinPath($path, $name);
            $local = $this->getTempFile();
            $res = touch($local) && ftp_put($this->connect, $path, $local, FTP_ASCII);
            unlink($local);
            return $res ? $path : false;
        }
        return false;
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param  string $target link target
     * @param  string $path   symlink path
     * @param string  $name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $res = false;

        if ($this->tmp) {
            $local = $this->getTempFile();
            $target = $this->_joinPath($targetDir, $name);

            if (ftp_get($this->connect, $local, $source, FTP_BINARY)
                && ftp_put($this->connect, $target, $local, $this->ftpMode($target))) {
                $res = $target;
            }
            unlink($local);
        }

        return $res;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $target = $this->_joinPath($targetDir, $name);
        return ftp_rename($this->connect, $source, $target) ? $target : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return ftp_delete($this->connect, $path);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return ftp_rmdir($this->connect, $path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $path = $this->_joinPath($dir, $name);
        return ftp_fput($this->connect, $path, $fp, $this->ftpMode($path))
            ? $path
            : false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _getContents($path)
    {
        $contents = '';
        if (($fp = $this->_fopen($path))) {
            while (!feof($fp)) {
                $contents .= fread($fp, 8192);
            }
            $this->_fclose($fp, $path);
            return $contents;
        }
        return false;
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($this->tmp) {
            $local = $this->getTempFile();

            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                $file = $this->stat($this->convEncOut($path, false));
                if (!empty($file['thash'])) {
                    $path = $this->decode($file['thash']);
                }
                clearstatcache();
                $res = ftp_fput($this->connect, $path, $fp, $this->ftpMode($path));
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers
     *
     * @return void
     * @throws elFinderAbortException
     */
    protected function _checkArchivers()
    {
        $this->archivers = $this->getArchivers();
        return;
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return ftp_chmod($this->connect, $modeOct, $path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        $dir = $this->tempDir();
        if (!$dir) {
            return false;
        }

        $basename = $this->_basename($path);
        $localPath = $dir . DIRECTORY_SEPARATOR . $basename;

        if (!ftp_get($this->connect, $localPath, $path, FTP_BINARY)) {
            //cleanup
            $this->rmdirRecursive($dir);
            return false;
        }

        $this->unpackArchive($localPath, $arc);

        $this->archiveSize = 0;

        // find symlinks and check extracted items
        $checkRes = $this->checkExtractItems($dir);
        if ($checkRes['symlinks']) {
            $this->rmdirRecursive($dir);
            return $this->setError(array_merge($this->error, array(elFinder::ERROR_ARC_SYMLINKS)));
        }
        $this->archiveSize = $checkRes['totalSize'];
        if ($checkRes['rmNames']) {
            foreach ($checkRes['rmNames'] as $name) {
                $this->addError(elFinder::ERROR_SAVE, $name);
            }
        }

        $filesToProcess = self::listFilesInDirectory($dir, true);

        // no files - extract error ?
        if (empty($filesToProcess)) {
            $this->rmdirRecursive($dir);
            return false;
        }

        // check max files size
        if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
            $this->rmdirRecursive($dir);
            return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
        }

        $extractTo = $this->extractToNewdir; // 'auto', ture or false

        // archive contains one item - extract in archive dir
        $name = '';
        $src = $dir . DIRECTORY_SEPARATOR . $filesToProcess[0];
        if (($extractTo === 'auto' || !$extractTo) && count($filesToProcess) === 1 && is_file($src)) {
            $name = $filesToProcess[0];
        } else if ($extractTo === 'auto' || $extractTo) {
            // for several files - create new directory
            // create unique name for directory
            $src = $dir;
            $splits = elFinder::splitFileExtention(basename($path));
            $name = $splits[0];
            $test = $this->_joinPath(dirname($path), $name);
            if ($this->stat($test)) {
                $name = $this->uniqueName(dirname($path), $name, '-', false);
            }
        }

        if ($name !== '' && is_file($src)) {
            $result = $this->_joinPath(dirname($path), $name);

            if (!ftp_put($this->connect, $result, $src, FTP_BINARY)) {
                $this->rmdirRecursive($dir);
                return false;
            }
        } else {
            $dstDir = $this->_dirname($path);
            $result = array();
            if (is_dir($src) && $name) {
                $target = $this->_joinPath($dstDir, $name);
                $_stat = $this->_stat($target);
                if ($_stat) {
                    if (!$this->options['copyJoin']) {
                        if ($_stat['mime'] === 'directory') {
                            $this->delTree($target);
                        } else {
                            $this->_unlink($target);
                        }
                        $_stat = false;
                    } else {
                        $dstDir = $target;
                    }
                }
                if (!$_stat && (!$dstDir = $this->_mkdir($dstDir, $name))) {
                    $this->rmdirRecursive($dir);
                    return false;
                }
                $result[] = $dstDir;
            }
            foreach ($filesToProcess as $name) {
                $name = rtrim($name, DIRECTORY_SEPARATOR);
                $src = $dir . DIRECTORY_SEPARATOR . $name;
                if (is_dir($src)) {
                    $p = dirname($name);
                    if ($p === '.') {
                        $p = '';
                    }
                    $name = basename($name);
                    $target = $this->_joinPath($this->_joinPath($dstDir, $p), $name);
                    $_stat = $this->_stat($target);
                    if ($_stat) {
                        if (!$this->options['copyJoin']) {
                            if ($_stat['mime'] === 'directory') {
                                $this->delTree($target);
                            } else {
                                $this->_unlink($target);
                            }
                            $_stat = false;
                        }
                    }
                    if (!$_stat && (!$target = $this->_mkdir($this->_joinPath($dstDir, $p), $name))) {
                        $this->rmdirRecursive($dir);
                        return false;
                    }
                } else {
                    $target = $this->_joinPath($dstDir, $name);
                    if (!ftp_put($this->connect, $target, $src, FTP_BINARY)) {
                        $this->rmdirRecursive($dir);
                        return false;
                    }
                }
                $result[] = $target;
            }
            if (!$result) {
                $this->rmdirRecursive($dir);
                return false;
            }
        }

        is_dir($dir) && $this->rmdirRecursive($dir);

        $this->clearcache();
        return $result ? $result : false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        // get current directory
        $cwd = getcwd();

        $tmpDir = $this->tempDir();
        if (!$tmpDir) {
            return false;
        }

        //download data
        if (!$this->ftp_download_files($dir, $files, $tmpDir)) {
            //cleanup
            $this->rmdirRecursive($tmpDir);
            return false;
        }

        $remoteArchiveFile = false;
        if ($path = $this->makeArchive($tmpDir, $files, $name, $arc)) {
            $remoteArchiveFile = $this->_joinPath($dir, $name);
            if (!ftp_put($this->connect, $remoteArchiveFile, $path, FTP_BINARY)) {
                $remoteArchiveFile = false;
            }
        }

        //cleanup
        if (!$this->rmdirRecursive($tmpDir)) {
            return false;
        }

        return $remoteArchiveFile;
    }

    /**
     * Create writable temporary directory and return path to it.
     *
     * @return string path to the new temporary directory or false in case of error.
     */
    private function tempDir()
    {
        $tempPath = tempnam($this->tmp, 'elFinder');
        if (!$tempPath) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        $success = unlink($tempPath);
        if (!$success) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        $success = mkdir($tempPath, 0700, true);
        if (!$success) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        return $tempPath;
    }

    /**
     * Gets an array of absolute remote FTP paths of files and
     * folders in $remote_directory omitting symbolic links.
     *
     * @param $remote_directory string remote FTP path to scan for file and folders recursively
     * @param $targets          array  Array of target item. `null` is to get all of items
     *
     * @return array of elements each of which is an array of two elements:
     * <ul>
     * <li>$item['path'] - absolute remote FTP path</li>
     * <li>$item['type'] - either 'f' for file or 'd' for directory</li>
     * </ul>
     */
    protected function ftp_scan_dir($remote_directory, $targets = null)
    {
        $buff = $this->ftpRawList($remote_directory);
        $items = array();
        if ($targets && is_array($targets)) {
            $targets = array_flip($targets);
        } else {
            $targets = false;
        }
        foreach ($buff as $str) {
            $info = preg_split("/\s+/", $str, 9);
            if (!isset($this->ftpOsUnix)) {
                $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
            }
            if (!$this->ftpOsUnix) {
                $info = $this->normalizeRawWindows($str);
            }
            $type = substr($info[0], 0, 1);
            $name = trim($info[8]);
            if ($name !== '.' && $name !== '..' && (!$targets || isset($targets[$name]))) {
                switch ($type) {
                    case 'l' : //omit symbolic links
                    case 'd' :
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'd'; // normal file
                        $items[] = $item;
                        $items = array_merge($items, $this->ftp_scan_dir($remote_file_path));
                        break;
                    default:
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'f'; // normal file
                        $items[] = $item;
                }
            }
        }
        return $items;
    }

    /**
     * Downloads specified files from remote directory
     * if there is a directory among files it is downloaded recursively (omitting symbolic links).
     *
     * @param       $remote_directory     string remote FTP path to a source directory to download from.
     * @param array $files                list of files to download from remote directory.
     * @param       $dest_local_directory string destination folder to store downloaded files.
     *
     * @return bool true on success and false on failure.
     */
    private function ftp_download_files($remote_directory, array $files, $dest_local_directory)
    {
        $contents = $this->ftp_scan_dir($remote_directory, $files);
        if (!isset($contents)) {
            $this->setError(elFinder::ERROR_FTP_DOWNLOAD_FILE, $remote_directory);
            return false;
        }
        $remoteDirLen = strlen($remote_directory);
        foreach ($contents as $item) {
            $relative_path = substr($item['path'], $remoteDirLen);
            $local_path = $dest_local_directory . DIRECTORY_SEPARATOR . $relative_path;
            switch ($item['type']) {
                case 'd':
                    $success = mkdir($local_path);
                    break;
                case 'f':
                    $success = ftp_get($this->connect, $local_path, $item['path'], FTP_BINARY);
                    break;
                default:
                    $success = true;
            }
            if (!$success) {
                $this->setError(elFinder::ERROR_FTP_DOWNLOAD_FILE, $remote_directory);
                return false;
            }
        }
        return true;
    }

    /**
     * Delete local directory recursively.
     *
     * @param $dirPath string to directory to be erased.
     *
     * @return bool true on success and false on failure.
     * @throws Exception
     */
    private function deleteDir($dirPath)
    {
        if (!is_dir($dirPath)) {
            $success = unlink($dirPath);
        } else {
            $success = true;
            foreach (array_reverse(elFinderVolumeFTP::listFilesInDirectory($dirPath, false)) as $path) {
                $path = $dirPath . DIRECTORY_SEPARATOR . $path;
                if (is_link($path)) {
                    unlink($path);
                } else if (is_dir($path)) {
                    $success = rmdir($path);
                } else {
                    $success = unlink($path);
                }
                if (!$success) {
                    break;
                }
            }
            if ($success) {
                $success = rmdir($dirPath);
            }
        }
        if (!$success) {
            $this->setError(elFinder::ERROR_RM, $dirPath);
            return false;
        }
        return $success;
    }

    /**
     * Returns array of strings containing all files and folders in the specified local directory.
     *
     * @param        $dir
     * @param        $omitSymlinks
     * @param string $prefix
     *
     * @return array array of files and folders names relative to the $path
     * or an empty array if the directory $path is empty,
     * <br />
     * false if $path is not a directory or does not exist.
     * @throws Exception
     * @internal param string $path path to directory to scan.
     */
    private static function listFilesInDirectory($dir, $omitSymlinks, $prefix = '')
    {
        if (!is_dir($dir)) {
            return false;
        }
        $excludes = array(".", "..");
        $result = array();
        $files = self::localScandir($dir);
        if (!$files) {
            return array();
        }
        foreach ($files as $file) {
            if (!in_array($file, $excludes)) {
                $path = $dir . DIRECTORY_SEPARATOR . $file;
                if (is_link($path)) {
                    if ($omitSymlinks) {
                        continue;
                    } else {
                        $result[] = $prefix . $file;
                    }
                } else if (is_dir($path)) {
                    $result[] = $prefix . $file . DIRECTORY_SEPARATOR;
                    $subs = elFinderVolumeFTP::listFilesInDirectory($path, $omitSymlinks, $prefix . $file . DIRECTORY_SEPARATOR);
                    if ($subs) {
                        $result = array_merge($result, $subs);
                    }

                } else {
                    $result[] = $prefix . $file;
                }
            }
        }
        return $result;
    }

} // END class
                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/php/elFinderVolumeBox.class.php                                           0000644                 00000170502 15266052672 0017506 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for BoxDrive
 * Box.com API v2.0.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeBox extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'bd';

    /**
     * @var string The base URL for API requests
     */
    const API_URL = 'https://api.box.com/2.0';

    /**
     * @var string The base URL for authorization requests
     */
    const AUTH_URL = 'https://account.box.com/api/oauth2/authorize';

    /**
     * @var string The base URL for token requests
     */
    const TOKEN_URL = 'https://api.box.com/oauth2/token';

    /**
     * @var string The base URL for upload requests
     */
    const UPLOAD_URL = 'https://upload.box.com/api/2.0';

    /**
     * Fetch fields list.
     *
     * @var string
     */
    const FETCHFIELDS = 'type,id,name,created_at,modified_at,description,size,parent,permissions,file_version,shared_link';

    /**
     * Box.com token object.
     *
     * @var object
     **/
    protected $token = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Thumbnail prefix.
     *
     * @var string
     **/
    private $tmbPrefix = '';

    /**
     * Path to access token file for permanent mount
     *
     * @var string
     */
    private $aTokenFile = '';

    /**
     * hasCache by folders.
     *
     * @var array
     **/
    protected $HasdirsCache = array();

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = array(
            'client_id' => '',
            'client_secret' => '',
            'accessToken' => '',
            'root' => 'Box.com',
            'path' => '/',
            'separator' => '/',
            'tmbPath' => '',
            'tmbURL' => '',
            'tmpPath' => '',
            'acceptedName' => '#^[^\\\/]+$#',
            'rootCssClass' => 'elfinder-navbar-root-box',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _bd_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = '0';
            $parent = '';
        } else {
            $paths = explode('/', trim($path, '/'));
            $id = array_pop($paths);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $pid = '0';
                $parent = '/';
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Obtains a new access token from OAuth. This token is valid for one hour.
     *
     * @param string $clientSecret The Box client secret
     * @param string $code         The code returned by Box after
     *                             successful log in
     * @param string $redirectUri  Must be the same as the redirect URI passed
     *                             to LoginUrl
     *
     * @return bool|object
     * @throws \Exception Thrown if this Client instance's clientId is not set
     * @throws \Exception Thrown if the redirect URI of this Client instance's
     *                    state is not set
     */
    protected function _bd_obtainAccessToken($client_id, $client_secret, $code)
    {
        if (null === $client_id) {
            return $this->setError('The client ID must be set to call obtainAccessToken()');
        }

        if (null === $client_secret) {
            return $this->setError('The client Secret must be set to call obtainAccessToken()');
        }

        if (null === $code) {
            return $this->setError('Authorization code must be set to call obtainAccessToken()');
        }

        $url = self::TOKEN_URL;

        $curl = curl_init();

        $fields = http_build_query(
            array(
                'client_id' => $client_id,
                'client_secret' => $client_secret,
                'code' => $code,
                'grant_type' => 'authorization_code',
            )
        );

        curl_setopt_array($curl, array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $fields,
            CURLOPT_URL => $url,
        ));

        $decoded = $this->_bd_curlExec($curl, true, array('Content-Length: ' . strlen($fields)));

        $res = (object)array(
            'expires' => time() + $decoded->expires_in - 30,
            'initialToken' => '',
            'data' => $decoded
        );
        if (!empty($decoded->refresh_token)) {
            $res->initialToken = md5($client_id . $decoded->refresh_token);
        }
        return $res;
    }

    /**
     * Get token and auto refresh.
     *
     * @return true|string error message
     * @throws Exception
     */
    protected function _bd_refreshToken()
    {
        if (!property_exists($this->token, 'expires') || $this->token->expires < time()) {
            if (!$this->options['client_id']) {
                $this->options['client_id'] = ELFINDER_BOX_CLIENTID;
            }

            if (!$this->options['client_secret']) {
                $this->options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
            }

            if (empty($this->token->data->refresh_token)) {
                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
            } else {
                $refresh_token = $this->token->data->refresh_token;
                $initialToken = $this->_bd_getInitialToken();
            }

            $lock = '';
            $aTokenFile = $this->aTokenFile? $this->aTokenFile : $this->_bd_getATokenFile();
            if ($aTokenFile && is_file($aTokenFile)) {
                $lock = $aTokenFile . '.lock';
                if (file_exists($lock)) {
                    // Probably updating on other instance
                    return true;
                }
                touch($lock);
                $GLOBALS['elFinderTempFiles'][$lock] = true;
            }

            $postData = array(
                'client_id' => $this->options['client_id'],
                'client_secret' => $this->options['client_secret'],
                'grant_type' => 'refresh_token',
                'refresh_token' => $refresh_token
            );

            $url = self::TOKEN_URL;

            $curl = curl_init();

            curl_setopt_array($curl, array(
                // General options.
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true, // i am sending post data
                CURLOPT_POSTFIELDS => http_build_query($postData),
                CURLOPT_URL => $url,
            ));

            $decoded = $error = '';
            try {
                $decoded = $this->_bd_curlExec($curl, true, array(), $postData);
            } catch (Exception $e) {
                $error = $e->getMessage();
            }
            if (!$decoded && !$error) {
                $error = 'Tried to renew the access token, but did not get a response from the Box server.';
            }
            if ($error) {
                $lock && unlink($lock);
                throw new \Exception('Box access token update failed. ('.$error.') If this message appears repeatedly, please notify the administrator.');
            }

            if (empty($decoded->access_token)) {
                if ($aTokenFile) {
                    if (is_file($aTokenFile)) {
                        unlink($aTokenFile);
                    }
                }
                $err = property_exists($decoded, 'error')? ' ' . $decoded->error : '';
                $err .= property_exists($decoded, 'error_description')? ' ' . $decoded->error_description : '';
                throw new \Exception($err? $err : elFinder::ERROR_REAUTH_REQUIRE);
            }

            $token = (object)array(
                'expires' => time() + $decoded->expires_in - 300,
                'initialToken' => $initialToken,
                'data' => $decoded,
            );

            $this->token = $token;
            $json = json_encode($token);

            if (!empty($decoded->refresh_token)) {
                if (empty($this->options['netkey']) && $aTokenFile) {
                    file_put_contents($aTokenFile, json_encode($token), LOCK_EX);
                    $this->options['accessToken'] = $json;
                } else if (!empty($this->options['netkey'])) {
                    // OAuth2 refresh token can be used only once,
                    // so update it if it is the same as the token file
                    if ($aTokenFile && is_file($aTokenFile)) {
                        if ($_token = json_decode(file_get_contents($aTokenFile))) {
                            if ($_token->data->refresh_token === $refresh_token) {
                                file_put_contents($aTokenFile, $json, LOCK_EX);
                            }
                        }
                    }
                    $this->options['accessToken'] = $json;
                    // update session value
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'accessToken', $json);
                    $this->session->set('BoxTokens', $token);
                } else {
                    throw new \Exception(ERROR_CREATING_TEMP_DIR);
                }
            }
            $lock && unlink($lock);
        }

        return true;
    }

    /**
     * Creates a base cURL object which is compatible with the Box.com API.
     *
     * @param array $options cURL options
     *
     * @return resource A compatible cURL object
     */
    protected function _bd_prepareCurl($options = array())
    {
        $curl = curl_init();

        $defaultOptions = array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
        );

        curl_setopt_array($curl, $options + $defaultOptions);

        return $curl;
    }

    /**
     * Creates a base cURL object which is compatible with the Box.com API.
     *
     * @param      $url
     * @param bool $contents
     *
     * @return boolean|array
     * @throws Exception
     */
    protected function _bd_fetch($url, $contents = false)
    {
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        if ($contents) {
            return $this->_bd_curlExec($curl, false);
        } else {
            $result = $this->_bd_curlExec($curl);

            if (isset($result->entries)) {
                $res = $result->entries;
                $cnt = count($res);
                $total = $result->total_count;
                $offset = $result->offset;
                $single = ($result->limit == 1) ? true : false;
                if (!$single && $total > ($offset + $cnt)) {
                    $offset = $offset + $cnt;
                    if (strpos($url, 'offset=') === false) {
                        $url .= '&offset=' . $offset;
                    } else {
                        $url = preg_replace('/^(.+?offset=)\d+(.*)$/', '${1}' . $offset . '$2', $url);
                    }
                    $more = $this->_bd_fetch($url);
                    if (is_array($more)) {
                        $res = array_merge($res, $more);
                    }
                }

                return $res;
            } else {
                if (isset($result->type) && $result->type === 'error') {
                    return false;
                } else {
                    return $result;
                }
            }
        }
    }

    /**
     * Call curl_exec().
     *
     * @param resource    $curl
     * @param bool|string $decodeOrParent
     * @param array       $headers
     *
     * @throws \Exception
     * @return mixed
     */
    protected function _bd_curlExec($curl, $decodeOrParent = true, $headers = array(), $postData = array())
    {
        if ($this->token) {
            $headers = array_merge(array(
                'Authorization: Bearer ' . $this->token->data->access_token,
            ), $headers);
        }

        $result = elFinder::curlExec($curl, array(), $headers, $postData);

        if (!$decodeOrParent) {
            return $result;
        }

        $decoded = json_decode($result);

        if ($error = !empty($decoded->error_code)) {
            $errmsg = $decoded->error_code;
            if (!empty($decoded->message)) {
                $errmsg .= ': ' . $decoded->message;
            }
            throw new \Exception($errmsg);
        } else if ($error = !empty($decoded->error)) {
            $errmsg = $decoded->error;
            if (!empty($decoded->error_description)) {
                $errmsg .= ': ' . $decoded->error_description;
            }
            throw new \Exception($errmsg);
        }

        // make catch
        if ($decodeOrParent && $decodeOrParent !== true) {
            $raws = null;
            if (isset($decoded->entries)) {
                $raws = $decoded->entries;
            } elseif (isset($decoded->id)) {
                $raws = array($decoded);
            }
            if ($raws) {
                foreach ($raws as $raw) {
                    if (isset($raw->id)) {
                        $stat = $this->_bd_parseRaw($raw);
                        $itemPath = $this->_joinPath($decodeOrParent, $raw->id);
                        $this->updateCache($itemPath, $stat);
                    }
                }
            }
        }

        return $decoded;
    }

    /**
     * Drive query and fetchAll.
     *
     * @param      $itemId
     * @param bool $fetch_self
     * @param bool $recursive
     *
     * @return bool|object
     * @throws Exception
     */
    protected function _bd_query($itemId, $fetch_self = false, $recursive = false)
    {
        $result = [];

        if (null === $itemId) {
            $itemId = '0';
        }

        if ($fetch_self) {
            $path = '/folders/' . $itemId . '?fields=' . self::FETCHFIELDS;
        } else {
            $path = '/folders/' . $itemId . '/items?limit=1000&fields=' . self::FETCHFIELDS;
        }

        $url = self::API_URL . $path;

        if ($recursive) {
            foreach ($this->_bd_fetch($url) as $file) {
                if ($file->type == 'folder') {
                    $result[] = $file;
                    $result = array_merge($result, $this->_bd_query($file->id, $fetch_self = false, $recursive = true));
                } elseif ($file->type == 'file') {
                    $result[] = $file;
                }
            }
        } else {
            $result = $this->_bd_fetch($url);
            if ($fetch_self && !$result) {
                $path = '/files/' . $itemId . '?fields=' . self::FETCHFIELDS;
                $url = self::API_URL . $path;
                $result = $this->_bd_fetch($url);
            }
        }

        return $result;
    }

    /**
     * Get dat(box metadata) from Box.com.
     *
     * @param string $path
     *
     * @return object box metadata
     * @throws Exception
     */
    protected function _bd_getRawItem($path)
    {
        if ($path == '/') {
            return $this->_bd_query('0', $fetch_self = true);
        }

        list(, $itemId) = $this->_bd_splitPath($path);

        try {
            return $this->_bd_query($itemId, $fetch_self = true);
        } catch (Exception $e) {
            $empty = new stdClass;
            return $empty;
        }
    }

    /**
     * Parse line from box metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _bd_parseRaw($raw)
    {
        $stat = array();

        $stat['rev'] = isset($raw->id) ? $raw->id : 'root';
        $stat['name'] = $raw->name;
        if (!empty($raw->modified_at)) {
            $stat['ts'] = strtotime($raw->modified_at);
        }

        if ($raw->type === 'folder') {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            $stat['dirs'] = -1;
        } else {
            $stat['size'] = (int)$raw->size;
            if (!empty($raw->shared_link->url) && $raw->shared_link->access == 'open') {
                if ($url = $this->getSharedWebContentLink($raw)) {
                    $stat['url'] = $url;
                }
            } elseif (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get thumbnail from Box.com.
     *
     * @param string $path
     * @param string $size
     *
     * @return string | boolean
     */
    protected function _bd_getThumbnail($path)
    {
        list(, $itemId) = $this->_bd_splitPath($path);

        try {
            $url = self::API_URL . '/files/' . $itemId . '/thumbnail.png?min_height=' . $this->tmbSize . '&min_width=' . $this->tmbSize;

            $contents = $this->_bd_fetch($url, true);
            return $contents;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Remove item.
     *
     * @param string $path file path
     *
     * @return bool
     **/
    protected function _bd_unlink($path, $type = null)
    {
        try {
            list(, $itemId) = $this->_bd_splitPath($path);

            if ($type == 'folders') {
                $url = self::API_URL . '/' . $type . '/' . $itemId . '?recursive=true';
            } else {
                $url = self::API_URL . '/' . $type . '/' . $itemId;
            }

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'DELETE',
            ));

            //unlink or delete File or Folder in the Parent
            $this->_bd_curlExec($curl);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Get AccessToken file path
     *
     * @return string  ( description_of_the_return_value )
     */
    protected function _bd_getATokenFile()
    {
        $tmp = $aTokenFile = '';
        if (!empty($this->token->data->refresh_token)) {
            if (!$this->tmp) {
                $tmp = elFinder::getStaticVar('commonTempPath');
                if (!$tmp) {
                    $tmp = $this->getTempPath();
                }
                $this->tmp = $tmp;
            }
            if ($tmp) {
                $aTokenFile = $tmp . DIRECTORY_SEPARATOR . $this->_bd_getInitialToken() . '.btoken';
            }
        }
        return $aTokenFile;
    }

    /**
     * Get Initial Token (MD5 hash)
     *
     * @return string
     */
    protected function _bd_getInitialToken()
    {
        return (empty($this->token->initialToken)? md5($this->options['client_id'] . (!empty($this->token->data->refresh_token)? $this->token->data->refresh_token : $this->token->data->access_token)) : $this->token->initialToken);
    }

    /*********************************************************************/
    /*                        OVERRIDE FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for Box
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_BOX_CLIENTID')) {
            $options['client_id'] = ELFINDER_BOX_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_BOX_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
        }

        if (isset($options['pass']) && $options['pass'] === 'reauth') {
            $options['user'] = 'init';
            $options['pass'] = '';
            $this->session->remove('BoxTokens');
        }

        if (isset($options['id'])) {
            $this->session->set('nodeId', $options['id']);
        } else if ($_id = $this->session->get('nodeId')) {
            $options['id'] = $_id;
            $this->session->set('nodeId', $_id);
        }

        if (!empty($options['tmpPath'])) {
            if ((is_dir($options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($options['tmpPath'])) {
                $this->tmp = $options['tmpPath'];
            }
        }

        try {
            if (empty($options['client_id']) || empty($options['client_secret'])) {
                return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code) {
                try {
                    if (!empty($options['id'])) {
                        // Obtain the token using the code received by the Box.com API
                        $this->session->set('BoxTokens',
                            $this->_bd_obtainAccessToken($options['client_id'], $options['client_secret'], $code));

                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "box", "mode": "done", "reset": 1}',
                            'bind' => 'netmount'
                        );
                    } else {
                        $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                        $out = array(
                            'node' => $nodeid,
                            'json' => json_encode(array(
                                'protocol' => 'box',
                                'host' => $nodeid,
                                'mode' => 'redirect',
                                'options' => array(
                                    'id' => $nodeid,
                                    'code'=> $code
                                )
                            )),
                            'bind' => 'netmount'
                        );
                    }
                    if (!$itpCare) {
                        return array('exit' => 'callback', 'out' => $out);
                    } else {
                        return array('exit' => true, 'body' => $out['json']);
                    }
                } catch (Exception $e) {
                    $out = array(
                        'node' => $options['id'],
                        'json' => json_encode(array('error' => $e->getMessage())),
                    );

                    return array('exit' => 'callback', 'out' => $out);
                }
            } elseif (!empty($_GET['error'])) {
                $out = array(
                    'node' => $options['id'],
                    'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED)),
                );

                return array('exit' => 'callback', 'out' => $out);
            }

            if ($options['user'] === 'init') {
                $this->token = $this->session->get('BoxTokens');

                if ($this->token) {
                    try {
                        $this->_bd_refreshToken();
                    } catch (Exception $e) {
                        $this->setError($e->getMessage());
                        $this->token = null;
                        $this->session->remove('BoxTokens');
                    }
                }

                if (empty($this->token)) {
                    $result = false;
                } else {
                    $path = $options['path'];
                    if ($path === '/' || $path === 'root') {
                        $path = '0';
                    }
                    $result = $this->_bd_query($path, $fetch_self = false, $recursive = false);
                }

                if ($result === false) {
                    $redirect = elFinder::getConnectorUrl();
                    $redirect .= (strpos($redirect, '?') !== false? '&' : '?') . 'cmd=netmount&protocol=box&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);

                    try {
                        $this->session->set('BoxTokens', (object)array('token' => null));
                        $url = self::AUTH_URL . '?' . http_build_query(array('response_type' => 'code', 'client_id' => $options['client_id'], 'redirect_uri' => $redirect));
                    } catch (Exception $e) {
                        return array('exit' => true, 'body' => '{msg:errAccess}');
                    }

                    $html = '<input id="elf-volumedriver-box-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                            $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "box", mode: "makebtn", url: "' . $url . '"});
                        </script>';

                    return array('exit' => true, 'body' => $html);
                } else {
                    $folders = [];

                    if ($result) {
                        foreach ($result as $res) {
                            if ($res->type == 'folder') {
                                $folders[$res->id . ' '] = $res->name;
                            }
                        }
                        natcasesort($folders);
                    }

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => 'My Box'] + $folders;
                    $folders = json_encode($folders);

                    $expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
                    $mnt2res = empty($this->token->data->refresh_token) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "box", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res . '}';
                    $html = 'Box.com';
                    $html .= '<script>
                            $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                            </script>';

                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
        }

        if ($_aToken = $this->session->get('BoxTokens')) {
            $options['accessToken'] = json_encode($_aToken);
            if ($this->options['path'] === 'root' || !$this->options['path']) {
                $this->options['path'] = '/';
            }
        } else {
            $this->session->remove('BoxTokens');
            $this->setError(elFinder::ERROR_NETMOUNT, $options['host'], implode(' ', $this->error()));

            return array('exit' => true, 'error' => $this->error());
        }

        $this->session->remove('nodeId');
        unset($options['user'], $options['pass'], $options['id']);

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `box` & rm thumbs.
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->tmbPrefix . '*.png')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && !empty($this->options['accessToken'])) {
            $res['accessToken'] = $this->options['accessToken'];
        }

        return $res;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function init()
    {
        if (!$this->options['accessToken']) {
            return $this->setError('Required option `accessToken` is undefined.');
        }

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        $error = false;
        try {
            $this->token = json_decode($this->options['accessToken']);
            if (!is_object($this->token)) {
                throw new Exception('Required option `accessToken` is invalid JSON.');
            }

            // make net mount key
            if (empty($this->options['netkey'])) {
                $this->netMountKey = $this->_bd_getInitialToken();
            } else {
                $this->netMountKey = $this->options['netkey'];
            }

            if ($this->aTokenFile = $this->_bd_getATokenFile()) {
                if (empty($this->options['netkey'])) {
                    if ($this->aTokenFile) {
                        if (is_file($this->aTokenFile)) {
                            $this->token = json_decode(file_get_contents($this->aTokenFile));
                            if (!is_object($this->token)) {
                                unlink($this->aTokenFile);
                                throw new Exception('Required option `accessToken` is invalid JSON.');
                            }
                        } else {
                            file_put_contents($this->aTokenFile, json_encode($this->token), LOCK_EX);
                        }
                    }
                } else if (is_file($this->aTokenFile)) {
                    // If the refresh token is the same as the permanent volume
                    $this->token = json_decode(file_get_contents($this->aTokenFile));
                }
            }

            $this->needOnline && $this->_bd_refreshToken();
        } catch (Exception $e) {
            $this->token = null;
            $error = true;
            $this->setError($e->getMessage());
        }

        if ($this->netMountKey) {
            $this->tmbPrefix = 'box' . base_convert($this->netMountKey, 16, 32);
        }

        if ($error) {
            if (empty($this->options['netkey']) && $this->tmbPrefix) {
                // for delete thumbnail 
                $this->netunmount(null, null);
            }
            return false;
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }

        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        $this->options['root'] = ($this->options['root'] == '')? 'Box.com' : $this->options['root'];

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                list(, $itemId) = $this->_bd_splitPath($this->options['path']);
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] :
                    $this->_bd_query($itemId, $fetch_self = true)->name . '@Box';
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = $this->options['alias'];

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     * @throws elFinderAbortException
     */
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers.
     *
     * @param string $path file cache
     *
     * @return array|boolean
     * @throws elFinderAbortException
     */
    protected function isNameExists($path)
    {
        list(, $name, $parent) = $this->_bd_splitPath($path);

        // We can not use it because the search of Box.com there is a time lag.
        // ref. https://docs.box.com/reference#searching-for-content
        // > Note: If an item is added to Box then it becomes accessible through the search endpoint after ten minutes.

        /***
         * $url = self::API_URL.'/search?limit=1&offset=0&content_types=name&ancestor_folder_ids='.rawurlencode($pid)
         * .'&query='.rawurlencode('"'.$name.'"')
         * .'fields='.self::FETCHFIELDS;
         * $raw = $this->_bd_fetch($url);
         * if (is_array($raw) && count($raw)) {
         * return $this->_bd_parseRaw($raw);
         * }
         ***/

        $phash = $this->encode($parent);

        // do not recursive search
        $searchExDirReg = $this->options['searchExDirReg'];
        $this->options['searchExDirReg'] = '/.*/';
        $search = $this->search($name, array(), $phash);
        $this->options['searchExDirReg'] = $searchExDirReg;

        if ($search) {
            $f = false;
            foreach($search as $f) {
                if ($f['name'] !== $name) {
                    $f = false;
                }
                if ($f) {
                    break;
                }
            }
            return $f;
        }

        return false;
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return
     * @throws Exception
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        if ($path == '/') {
            $items = $this->_bd_query('0', $fetch_self = true);   // get root directory with folder & files
            $itemId = $items->id;
        } else {
            list(, $itemId) = $this->_bd_splitPath($path);
        }

        $res = $this->_bd_query($itemId);

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_bd_parseRaw($raw)) {
                    $itemPath = $this->_joinPath($path, $raw->id);
                    $stat = $this->updateCache($itemPath, $stat);
                    if (empty($stat['hidden'])) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $itemPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     **/
    protected function copy($src, $dst, $name)
    {
        if ($res = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($res);
            return $res;
        } else {
            return $this->setError(elFinder::ERROR_COPY, $this->_path($src));
        }
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_bd_getThumbnail($path)) {
            // try get full contents as fallback
            if (!$data = $this->_getContents($path)) {
                return false;
            }
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        $result = true;
        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
            }
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->tmbPrefix . $stat['rev'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL.
     *
     * @param object $raw data
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function getSharedWebContentLink($raw)
    {
        if ($raw->shared_link->url) {
            return sprintf('https://app.box.com/index.php?rm=box_download_shared_file&shared_name=%s&file_id=f_%s', basename($raw->shared_link->url), $raw->id);
        } elseif ($raw->shared_link->download_url) {
            return $raw->shared_link->download_url;
        }

        return false;
    }

    /**
     * Return content URL.
     *
     * @param string $hash    file hash
     * @param array  $options options
     *
     * @return string
     * @throws Exception
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = array())
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            list(, $itemId) = $this->_bd_splitPath($path);
            $params['shared_link']['access'] = 'open'; //open|company|collaborators

            $url = self::API_URL . '/files/' . $itemId;

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'PUT',
                CURLOPT_POSTFIELDS => json_encode($params),
            ));
            $res = $this->_bd_curlExec($curl, true, array(
                // The data is sent as JSON as per Box documentation.
                'Content-Type: application/json',
            ));

            if ($url = $this->getSharedWebContentLink($res)) {
                return $url;
            }
        }

        return '';
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $dirname) = $this->_bd_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_bd_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        if (strval($dir) === '0') {
            $dir = '';
        }

        return $this->_normpath($dir . '/' . $name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _stat($path)
    {
        if ($raw = $this->_bd_getRawItem($path)) {
            return $this->_bd_parseRaw($raw);
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _subdirs($path)
    {
        list(, $itemId) = $this->_bd_splitPath($path);

        $path = '/folders/' . $itemId . '/items?limit=1&offset=0&fields=' . self::FETCHFIELDS;

        $url = self::API_URL . $path;

        if ($res = $this->_bd_fetch($url)) {
            if ($res[0]->type == 'folder') {
                return true;
            }
        }

        return false;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }

        $ret = '';
        if ($work = $this->getWorkFile($path)) {
            if ($size = @getimagesize($work)) {
                $cache['width'] = $size[0];
                $cache['height'] = $size[1];
                $ret = array('dim' => $size[0] . 'x' . $size[1]);
                $srcfp = fopen($work, 'rb');
                $target = isset(elFinder::$currentArgs['target'])? elFinder::$currentArgs['target'] : '';
                if ($subImgLink = $this->getSubstituteImgLink($target, $size, $srcfp)) {
                    $ret['url'] = $subImgLink;
                }
            }
        }
        is_file($work) && @unlink($work);

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws Exception
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path file path
     * @param string $mode
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            list(, $itemId) = $this->_bd_splitPath($path);
            $data = array(
                'target' => self::API_URL . '/files/' . $itemId . '/content',
                'headers' => array('Authorization: Bearer ' . $this->token->data->access_token),
            );

            // to support range request
            if (func_num_args() > 2) {
                $opts = func_get_arg(2);
            } else {
                $opts = array();
            }
            if (!empty($opts['httpheaders'])) {
                $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
            }

            return elFinder::getStreamByUrl($data);
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     * @param string   $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        try {
            list(, $parentId) = $this->_bd_splitPath($path);
            $params = array('name' => $name, 'parent' => array('id' => $parentId));

            $url = self::API_URL . '/folders';

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($params),
            ));

            //create the Folder in the Parent
            $folder = $this->_bd_curlExec($curl, $path);

            return $this->_joinPath($path, $folder->id);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, array());
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        try {
            //Set the Parent id
            list(, $parentId) = $this->_bd_splitPath($targetDir);
            list(, $srcId) = $this->_bd_splitPath($source);

            $srcItem = $this->_bd_getRawItem($source);

            $properties = array('name' => $name, 'parent' => array('id' => $parentId));
            $data = (object)$properties;

            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
            $url = self::API_URL . '/' . $type . '/' . $srcId . '/copy';

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            //copy File in the Parent
            $result = $this->_bd_curlExec($curl, $targetDir);

            if (isset($result->id)) {
                if ($type === 'folders' && isset($this->sessionCache['subdirs'])) {
                    $this->sessionCache['subdirs'][$targetDir] = true;
                }

                return $this->_joinPath($targetDir, $result->id);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _move($source, $targetDir, $name)
    {
        try {
            //moving and renaming a file or directory
            //Set new Parent and remove old parent
            list(, $parentId) = $this->_bd_splitPath($targetDir);
            list(, $itemId) = $this->_bd_splitPath($source);

            $srcItem = $this->_bd_getRawItem($source);

            //rename or move file or folder in destination target
            $properties = array('name' => $name, 'parent' => array('id' => $parentId));

            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
            $url = self::API_URL . '/' . $type . '/' . $itemId;
            $data = (object)$properties;

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'PUT',
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            $result = $this->_bd_curlExec($curl, $targetDir, array(
                // The data is sent as JSON as per Box documentation.
                'Content-Type: application/json',
            ));

            if ($result && isset($result->id)) {
                return $this->_joinPath($targetDir, $result->id);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->_bd_unlink($path, 'files');
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->_bd_unlink($path, 'folders');
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param string   $dir  target dir path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $path, $name, $stat)
    {
        $itemId = '';
        if ($name === '') {
            list($parentId, $itemId, $parent) = $this->_bd_splitPath($path);
        } else {
            if ($stat) {
                if (isset($stat['name'])) {
                    $name = $stat['name'];
                }
                if (isset($stat['rev']) && strpos($stat['hash'], $this->id) === 0) {
                    $itemId = $stat['rev'];
                }
            }
            list(, $parentId) = $this->_bd_splitPath($path);
            $parent = $path;
        }

        try {
            //Create or Update a file
            $metaDatas = stream_get_meta_data($fp);
            $tmpFilePath = isset($metaDatas['uri']) ? $metaDatas['uri'] : '';
            // remote contents
            if (!$tmpFilePath || empty($metaDatas['seekable'])) {
                $tmpHandle = $this->tmpfile();
                stream_copy_to_stream($fp, $tmpHandle);
                $metaDatas = stream_get_meta_data($tmpHandle);
                $tmpFilePath = $metaDatas['uri'];
            }

            if ($itemId === '') {
                //upload or create new file in destination target
                $properties = array('name' => $name, 'parent' => array('id' => $parentId));
                $url = self::UPLOAD_URL . '/files/content';
            } else {
                //update existing file in destination target
                $properties = array('name' => $name);
                $url = self::UPLOAD_URL . '/files/' . $itemId . '/content';
            }

            if (class_exists('CURLFile')) {
                $cfile = new CURLFile($tmpFilePath);
            } else {
                $cfile = '@' . $tmpFilePath;
            }
            $params = array('attributes' => json_encode($properties), 'file' => $cfile);
            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => $params,
            ));

            $file = $this->_bd_curlExec($curl, $parent);

            return $this->_joinPath($parent, $file->entries[0]->id);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        try {
            list(, $itemId) = $this->_bd_splitPath($path);
            $url = self::API_URL . '/files/' . $itemId . '/content';

            $contents = $this->_bd_fetch($url, true);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', array());
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return array();
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
                                                                                                                                                                                              includes/File_manager/lib/php/MySQLStorage.sql                                                      0000644                 00000004414 15266052672 0015311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       DROP TABLE IF EXISTS `elfinder_file`;
CREATE TABLE IF NOT EXISTS `elfinder_file` (
  `id`        int(7) unsigned NOT NULL auto_increment,
  `parent_id` int(7) unsigned NOT NULL,
  `name`      varchar(255) NOT NULL,
  `content`   longblob NOT NULL,
  `size`      int(10) unsigned NOT NULL default '0',
  `mtime`     int(10) unsigned NOT NULL default '0',
  `mime`      varchar(256) NOT NULL default 'unknown',
  `read`      enum('1', '0') NOT NULL default '1',
  `write`     enum('1', '0') NOT NULL default '1',
  `locked`    enum('1', '0') NOT NULL default '0',
  `hidden`    enum('1', '0') NOT NULL default '0',
  `width`     int(5) NOT NULL default '0',
  `height`    int(5) NOT NULL default '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY  `parent_name` (`parent_id`, `name`),
  KEY         `parent_id`   (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

INSERT INTO `elfinder_file`
(`id`, `parent_id`, `name`, `content`, `size`, `mtime`, `mime`,  `read`, `write`, `locked`, `hidden`, `width`, `height`) VALUES 
('1' ,         '0', 'DATABASE',    '',    '0',     '0','directory', '1',     '1',      '0',      '0',      '0',     '0');

DROP TABLE IF EXISTS `elfinder_trash`;
CREATE TABLE IF NOT EXISTS `elfinder_trash` (
  `id`        int(7) unsigned NOT NULL auto_increment,
  `parent_id` int(7) unsigned NOT NULL,
  `name`      varchar(255) NOT NULL,
  `content`   longblob NOT NULL,
  `size`      int(10) unsigned NOT NULL default '0',
  `mtime`     int(10) unsigned NOT NULL default '0',
  `mime`      varchar(256) NOT NULL default 'unknown',
  `read`      enum('1', '0') NOT NULL default '1',
  `write`     enum('1', '0') NOT NULL default '1',
  `locked`    enum('1', '0') NOT NULL default '0',
  `hidden`    enum('1', '0') NOT NULL default '0',
  `width`     int(5) NOT NULL default '0',
  `height`    int(5) NOT NULL default '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY  `parent_name` (`parent_id`, `name`),
  KEY         `parent_id`   (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

INSERT INTO `elfinder_trash`
(`id`, `parent_id`, `name`, `content`, `size`, `mtime`, `mime`,  `read`, `write`, `locked`, `hidden`, `width`, `height`) VALUES 
('1' ,         '0', 'DB Trash',    '',    '0',     '0','directory', '1',     '1',      '0',      '0',      '0',     '0');
                                                                                                                                                                                                                                                    includes/File_manager/lib/php/elFinderVolumeOneDrive.class.php                                      0000644                 00000203254 15266052672 0020472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for OneDrive
 * onedrive api v5.0.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeOneDrive extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'od';

    /**
     * @var string The base URL for API requests
     **/
    const API_URL = 'https://graph.microsoft.com/v1.0/me/drive/items/';

    /**
     * @var string The base URL for authorization requests
     */
    const AUTH_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';

    /**
     * @var string The base URL for token requests
     */
    const TOKEN_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';

    /**
     * OneDrive token object.
     *
     * @var object
     **/
    protected $token = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Thumbnail prefix.
     *
     * @var string
     **/
    protected $tmbPrefix = '';

    /**
     * hasCache by folders.
     *
     * @var array
     **/
    protected $HasdirsCache = array();

    /**
     * Query options of API call.
     *
     * @var array
     */
    protected $queryOptions = array();

    /**
     * Current token expires
     *
     * @var integer
     **/
    private $expires;

    /**
     * Path to access token file for permanent mount
     *
     * @var string
     */
    private $aTokenFile = '';

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = array(
            'client_id' => '',
            'client_secret' => '',
            'accessToken' => '',
            'root' => 'OneDrive.com',
            'OneDriveApiClient' => '',
            'path' => '/',
            'separator' => '/',
            'tmbPath' => '',
            'tmbURL' => '',
            'tmpPath' => '',
            'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
            'rootCssClass' => 'elfinder-navbar-root-onedrive',
            'useApiThumbnail' => true,
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Obtains a new access token from OAuth. This token is valid for one hour.
     *
     * @param        $client_id
     * @param        $client_secret
     * @param string $code         The code returned by OneDrive after
     *                             successful log in
     *
     * @return object|string
     * @throws Exception Thrown if the redirect URI of this Client instance's
     *                    state is not set
     */
    protected function _od_obtainAccessToken($client_id, $client_secret, $code, $nodeid)
    {
        if (null === $client_id) {
            return 'The client ID must be set to call obtainAccessToken()';
        }

        if (null === $client_secret) {
            return 'The client Secret must be set to call obtainAccessToken()';
        }

        $redirect = elFinder::getConnectorUrl();
        if (strpos($redirect, '/netmount/onedrive/') === false) {
            $redirect .= '/netmount/onedrive/' . ($nodeid === 'elfinder'? '1' : $nodeid);
        }

        $url = self::TOKEN_URL;

        $curl = curl_init();

        $fields = http_build_query(
            array(
                'client_id' => $client_id,
                'redirect_uri' => $redirect,
                'client_secret' => $client_secret,
                'code' => $code,
                'grant_type' => 'authorization_code',
            )
        );

        curl_setopt_array($curl, array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $fields,

            CURLOPT_HTTPHEADER => array(
                'Content-Length: ' . strlen($fields),
            ),

            CURLOPT_URL => $url,
        ));

        $result = elFinder::curlExec($curl);

        $decoded = json_decode($result);

        if (null === $decoded) {
            throw new \Exception('json_decode() failed');
        }

        if (!empty($decoded->error)) {
            $error = $decoded->error;
            if (!empty($decoded->error_description)) {
                $error .= ': ' . $decoded->error_description;
            }
            throw new \Exception($error);
        }

        $res = (object)array(
            'expires' => time() + $decoded->expires_in - 30,
            'initialToken' => '',
            'data' => $decoded
        );
        if (!empty($decoded->refresh_token)) {
            $res->initialToken = md5($client_id . $decoded->refresh_token);
        }
        return $res;
    }

    /**
     * Get token and auto refresh.
     *
     * @return true
     * @throws Exception
     */
    protected function _od_refreshToken()
    {
        if (!property_exists($this->token, 'expires') || $this->token->expires < time()) {
            if (!$this->options['client_id']) {
                $this->options['client_id'] = ELFINDER_ONEDRIVE_CLIENTID;
            }

            if (!$this->options['client_secret']) {
                $this->options['client_secret'] = ELFINDER_ONEDRIVE_CLIENTSECRET;
            }

            if (empty($this->token->data->refresh_token)) {
                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
            } else {
                $refresh_token = $this->token->data->refresh_token;
                $initialToken = $this->_od_getInitialToken();
            }

            $url = self::TOKEN_URL;

            $curl = curl_init();

            curl_setopt_array($curl, array(
                // General options.
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true, // i am sending post data
                CURLOPT_POSTFIELDS => 'client_id=' . urlencode($this->options['client_id'])
                    . '&client_secret=' . urlencode($this->options['client_secret'])
                    . '&grant_type=refresh_token'
                    . '&refresh_token=' . urlencode($this->token->data->refresh_token),

                CURLOPT_URL => $url,
            ));

            $result = elFinder::curlExec($curl);

            $decoded = json_decode($result);

            if (!$decoded) {
                throw new \Exception('json_decode() failed');
            }

            if (empty($decoded->access_token)) {
                if ($this->aTokenFile) {
                    if (is_file($this->aTokenFile)) {
                        unlink($this->aTokenFile);
                    }
                }
                $err = property_exists($decoded, 'error')? ' ' . $decoded->error : '';
                $err .= property_exists($decoded, 'error_description')? ' ' . $decoded->error_description : '';
                throw new \Exception($err? $err : elFinder::ERROR_REAUTH_REQUIRE);
            }

            $token = (object)array(
                'expires' => time() + $decoded->expires_in - 30,
                'initialToken' => $initialToken,
                'data' => $decoded,
            );

            $this->token = $token;
            $json = json_encode($token);

            if (!empty($decoded->refresh_token)) {
                if (empty($this->options['netkey']) && $this->aTokenFile) {
                    file_put_contents($this->aTokenFile, json_encode($token));
                    $this->options['accessToken'] = $json;
                } else if (!empty($this->options['netkey'])) {
                    // OAuth2 refresh token can be used only once,
                    // so update it if it is the same as the token file
                    $aTokenFile = $this->_od_getATokenFile();
                    if ($aTokenFile && is_file($aTokenFile)) {
                        if ($_token = json_decode(file_get_contents($aTokenFile))) {
                            if ($_token->data->refresh_token === $refresh_token) {
                                file_put_contents($aTokenFile, $json);
                            }
                        }
                    }
                    $this->options['accessToken'] = $json;
                    // update session value
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'accessToken', $this->options['accessToken']);
                    $this->session->set('OneDriveTokens', $token);
                } else {
                    throw new \Exception(elFinder::ERROR_CREATING_TEMP_DIR);
                }
            }
        }

        return true;
    }

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _od_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = 'root';
            $parent = '';
        } else {
            $paths = explode('/', trim($path, '/'));
            $id = array_pop($paths);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $pid = 'root';
                $parent = '/';
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Creates a base cURL object which is compatible with the OneDrive API.
     *
     * @return resource A compatible cURL object
     */
    protected function _od_prepareCurl($url = null)
    {
        $curl = curl_init($url);

        $defaultOptions = array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json',
                'Authorization: Bearer ' . $this->token->data->access_token,
            ),
        );

        curl_setopt_array($curl, $defaultOptions);

        return $curl;
    }

    /**
     * Creates a base cURL object which is compatible with the OneDrive API.
     *
     * @param string $path The path of the API call (eg. me/skydrive)
     * @param bool   $contents
     *
     * @return resource A compatible cURL object
     * @throws elFinderAbortException
     */
    protected function _od_createCurl($path, $contents = false)
    {
        elFinder::checkAborted();
        $curl = $this->_od_prepareCurl($path);

        if ($contents) {
            $res = elFinder::curlExec($curl);
        } else {
            $result = json_decode(elFinder::curlExec($curl));
            if (isset($result->value)) {
                $res = $result->value;
                unset($result->value);
                $result = (array)$result;
                if (!empty($result['@odata.nextLink'])) {
                    $nextRes = $this->_od_createCurl($result['@odata.nextLink'], false);
                    if (is_array($nextRes)) {
                        $res = array_merge($res, $nextRes);
                    }
                }
            } else {
                $res = $result;
            }
        }

        return $res;
    }

    /**
     * Drive query and fetchAll.
     *
     * @param       $itemId
     * @param bool  $fetch_self
     * @param bool  $recursive
     * @param array $options
     *
     * @return object|array
     * @throws elFinderAbortException
     */
    protected function _od_query($itemId, $fetch_self = false, $recursive = false, $options = array())
    {
        $result = array();

        if (null === $itemId) {
            $itemId = 'root';
        }

        if ($fetch_self == true) {
            $path = $itemId;
        } else {
            $path = $itemId . '/children';
        }

        if (isset($options['query'])) {
            $path .= '?' . http_build_query($options['query']);
        }

        $url = self::API_URL . $path;

        $res = $this->_od_createCurl($url);
        if (!$fetch_self && $recursive && is_array($res)) {
            foreach ($res as $file) {
                $result[] = $file;
                if (!empty($file->folder)) {
                    $result = array_merge($result, $this->_od_query($file->id, false, true, $options));
                }
            }
        } else {
            $result = $res;
        }

        return isset($result->error) ? array() : $result;
    }

    /**
     * Parse line from onedrive metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _od_parseRaw($raw)
    {
        $stat = array();

        $folder = isset($raw->folder) ? $raw->folder : null;

        $stat['rev'] = isset($raw->id) ? $raw->id : 'root';
        $stat['name'] = $raw->name;
        if (isset($raw->lastModifiedDateTime)) {
            $stat['ts'] = strtotime($raw->lastModifiedDateTime);
        }

        if ($folder) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            if (empty($folder->childCount)) {
                $stat['dirs'] = 0;
            } else {
                $stat['dirs'] = -1;
            }
        } else {
            if (isset($raw->file->mimeType)) {
                $stat['mime'] = $raw->file->mimeType;
            }
            $stat['size'] = (int)$raw->size;
            if (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
            if (isset($raw->image) && $img = $raw->image) {
                isset($img->width) ? $stat['width'] = $img->width : $stat['width'] = 0;
                isset($img->height) ? $stat['height'] = $img->height : $stat['height'] = 0;
            }
            if (!empty($raw->thumbnails)) {
                if ($raw->thumbnails[0]->small->url) {
                    $stat['tmb'] = substr($raw->thumbnails[0]->small->url, 8); // remove "https://"
                }
            } elseif (!empty($raw->file->processingMetadata)) {
                $stat['tmb'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get raw data(onedrive metadata) from OneDrive.
     *
     * @param string $path
     *
     * @return array|object onedrive metadata
     */
    protected function _od_getFileRaw($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);
        try {
            $res = $this->_od_query($itemId, true, false, $this->queryOptions);

            return $res;
        } catch (Exception $e) {
            return array();
        }
    }

    /**
     * Get thumbnail from OneDrive.com.
     *
     * @param string $path
     *
     * @return string | boolean
     */
    protected function _od_getThumbnail($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);

        try {
            $url = self::API_URL . $itemId . '/thumbnails/0/medium/content';

            return $this->_od_createCurl($url, $contents = true);
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Upload large files with an upload session.
     *
     * @param resource $fp       source file pointer
     * @param number   $size     total size
     * @param string   $name     item name
     * @param string   $itemId   item identifier
     * @param string   $parent   parent
     * @param string   $parentId parent identifier
     *
     * @return string The item path
     */
    protected function _od_uploadSession($fp, $size, $name, $itemId, $parent, $parentId)
    {
        try {
            $send = $this->_od_getChunkData($fp);
            if ($send === false) {
                throw new Exception('Data can not be acquired from the source.');
            }

            // create upload session
            if ($itemId) {
                $url = self::API_URL . $itemId . '/createUploadSession';
            } else {
                $url = self::API_URL . $parentId . ':/' . rawurlencode($name) . ':/createUploadSession';
            }
            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => '{}',
            ));
            $sess = json_decode(elFinder::curlExec($curl));

            if ($sess) {
                if (isset($sess->error)) {
                    throw new Exception($sess->error->message);
                }
                $next = strlen($send);
                $range = '0-' . ($next - 1) . '/' . $size;
            } else {
                throw new Exception('API response can not be obtained.');
            }

            $id = null;
            $retry = 0;
            while ($sess) {
                elFinder::extendTimeLimit();
                $putFp = tmpfile();
                fwrite($putFp, $send);
                rewind($putFp);
                $_size = strlen($send);
                $url = $sess->uploadUrl;
                $curl = curl_init();
                $options = array(
                    CURLOPT_URL => $url,
                    CURLOPT_PUT => true,
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_INFILE => $putFp,
                    CURLOPT_INFILESIZE => $_size,
                    CURLOPT_HTTPHEADER => array(
                        'Content-Length: ' . $_size,
                        'Content-Range: bytes ' . $range,
                    ),
                );
                curl_setopt_array($curl, $options);
                $sess = json_decode(elFinder::curlExec($curl));
                if ($sess) {
                    if (isset($sess->error)) {
                        throw new Exception($sess->error->message);
                    }
                    if (isset($sess->id)) {
                        $id = $sess->id;
                        break;
                    }
                    if (isset($sess->nextExpectedRanges)) {
                        list($_next) = explode('-', $sess->nextExpectedRanges[0]);
                        if ($next == $_next) {
                            $send = $this->_od_getChunkData($fp);
                            if ($send === false) {
                                throw new Exception('Data can not be acquired from the source.');
                            }
                            $next += strlen($send);
                            $range = $_next . '-' . ($next - 1) . '/' . $size;
                            $retry = 0;
                        } else {
                            if (++$retry > 3) {
                                throw new Exception('Retry limit exceeded with uploadSession API call.');
                            }
                        }
                        $sess->uploadUrl = $url;
                    }
                } else {
                    throw new Exception('API response can not be obtained.');
                }
            }

            if ($id) {
                return $this->_joinPath($parent, $id);
            } else {
                throw new Exception('An error occurred in the uploadSession API call.');
            }
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get chunk data by file pointer to upload session.
     *
     * @param resource $fp source file pointer
     *
     * @return bool|string chunked data
     */
    protected function _od_getChunkData($fp)
    {
        static $chunkSize = null;
        if ($chunkSize === null) {
            $mem = elFinder::getIniBytes('memory_limit');
            if ($mem < 1) {
                $mem = 10485760; // 10 MiB
            } else {
                $mem -= memory_get_usage() - 1061548;
                $mem = min($mem, 10485760);
            }
            if ($mem > 327680) {
                $chunkSize = floor($mem / 327680) * 327680;
            } else {
                $chunkSize = $mem;
            }
        }
        if ($chunkSize < 8192) {
            return false;
        }

        $contents = '';
        while (!feof($fp) && strlen($contents) < $chunkSize) {
            $contents .= fread($fp, 8192);
        }

        return $contents;
    }

    /**
     * Get AccessToken file path
     *
     * @return string  ( description_of_the_return_value )
     */
    protected function _od_getATokenFile()
    {
        $tmp = $aTokenFile = '';
        if (!empty($this->token->data->refresh_token)) {
            if (!$this->tmp) {
                $tmp = elFinder::getStaticVar('commonTempPath');
                if (!$tmp) {
                    $tmp = $this->getTempPath();
                }
                $this->tmp = $tmp;
            }
            if ($tmp) {
                $aTokenFile = $tmp . DIRECTORY_SEPARATOR . $this->_od_getInitialToken() . '.otoken';
            }
        }
        return $aTokenFile;
    }

    /**
     * Get Initial Token (MD5 hash)
     *
     * @return string
     */
    protected function _od_getInitialToken()
    {
        return (empty($this->token->initialToken)? md5($this->options['client_id'] . (!empty($this->token->data->refresh_token)? $this->token->data->refresh_token : $this->token->data->access_token)) : $this->token->initialToken);
    }

    /*********************************************************************/
    /*                        OVERRIDE FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for OneDrive
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_ONEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_ONEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_ONEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_ONEDRIVE_CLIENTSECRET;
        }

        if (isset($options['pass']) && $options['pass'] === 'reauth') {
            $options['user'] = 'init';
            $options['pass'] = '';
            $this->session->remove('OneDriveTokens');
        }

        if (isset($options['id'])) {
            $this->session->set('nodeId', $options['id']);
        } elseif ($_id = $this->session->get('nodeId')) {
            $options['id'] = $_id;
            $this->session->set('nodeId', $_id);
        }

        if (!empty($options['tmpPath'])) {
            if ((is_dir($options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($options['tmpPath'])) {
                $this->tmp = $options['tmpPath'];
            }
        }

        try {
            if (empty($options['client_id']) || empty($options['client_secret'])) {
                return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code) {
                try {
                    if (!empty($options['id'])) {
                        // Obtain the token using the code received by the OneDrive API
                        $this->session->set('OneDriveTokens',
                            $this->_od_obtainAccessToken($options['client_id'], $options['client_secret'], $code, $options['id']));

                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "onedrive", "mode": "done", "reset": 1}',
                            'bind' => 'netmount',
                        );
                    } else {
                        $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                        $out = array(
                            'node' => $nodeid,
                            'json' => json_encode(array(
                                'protocol' => 'onedrive',
                                'host' => $nodeid,
                                'mode' => 'redirect',
                                'options' => array(
                                    'id' => $nodeid,
                                    'code'=> $code
                                )
                            )),
                            'bind' => 'netmount'
                        );
                    }
                    if (!$itpCare) {
                        return array('exit' => 'callback', 'out' => $out);
                    } else {
                        return array('exit' => true, 'body' => $out['json']);
                    }
                } catch (Exception $e) {
                    $out = array(
                        'node' => $options['id'],
                        'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED . ' ' . $e->getMessage())),
                    );

                    return array('exit' => 'callback', 'out' => $out);
                }
            } elseif (!empty($_GET['error'])) {
                $out = array(
                    'node' => $options['id'],
                    'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED)),
                );

                return array('exit' => 'callback', 'out' => $out);
            }

            if ($options['user'] === 'init') {
                $this->token = $this->session->get('OneDriveTokens');

                if ($this->token) {
                    try {
                        $this->_od_refreshToken();
                    } catch (Exception $e) {
                        $this->setError($e->getMessage());
                        $this->token = null;
                        $this->session->remove('OneDriveTokens');
                    }
                }

                if (empty($this->token)) {
                    $result = false;
                } else {
                    $path = $options['path'];
                    if ($path === '/') {
                        $path = 'root';
                    }
                    $result = $this->_od_query($path, false, false, array(
                        'query' => array(
                            'select' => 'id,name',
                            'filter' => 'folder ne null',
                        ),
                    ));
                }

                if ($result === false) {
                    try {
                        $this->session->set('OneDriveTokens', (object)array('token' => null));

                        $offline = '';
                        // Gets a log in URL with sufficient privileges from the OneDrive API
                        if (!empty($options['offline'])) {
                            $offline = ' offline_access';
                        }

                        $redirect_uri = elFinder::getConnectorUrl() . '/netmount/onedrive/' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                        $url = self::AUTH_URL
                            . '?client_id=' . urlencode($options['client_id'])
                            . '&scope=' . urlencode('files.readwrite.all' . $offline)
                            . '&response_type=code'
                            . '&redirect_uri=' . urlencode($redirect_uri);

                    } catch (Exception $e) {
                        return array('exit' => true, 'body' => '{msg:errAccess}');
                    }

                    $html = '<input id="elf-volumedriver-onedrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                            $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "onedrive", mode: "makebtn", url: "' . $url . '"});
                            </script>';

                    return array('exit' => true, 'body' => $html);
                } else {
                    $folders = [];

                    if ($result) {
                        foreach ($result as $res) {
                            $folders[$res->id] = $res->name;
                        }
                        natcasesort($folders);
                    }

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => 'My OneDrive'] + $folders;
                    $folders = json_encode($folders);

                    $expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
                    $mnt2res = empty($this->token->data->refresh_token) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "onedrive", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res .'}';
                    $html = 'OneDrive.com';
                    $html .= '<script>
                            $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                            </script>';

                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
        }

        if ($_aToken = $this->session->get('OneDriveTokens')) {
            $options['accessToken'] = json_encode($_aToken);
            if ($this->options['path'] === 'root' || !$this->options['path']) {
                $this->options['path'] = '/';
            }
        } else {
            $this->session->remove('OneDriveTokens');
            $this->setError(elFinder::ERROR_NETMOUNT, $options['host'], implode(' ', $this->error()));

            return array('exit' => true, 'error' => $this->error());
        }

        $this->session->remove('nodeId');
        unset($options['user'], $options['pass'], $options['id']);

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `onedrive` & rm thumbs.
     *
     * @param array $options
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if (!$this->options['useApiThumbnail'] && ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->tmbPrefix . '*.png'))) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && !empty($this->options['accessToken'])) {
            $res['accessToken'] = $this->options['accessToken'];
        }

        return $res;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function init()
    {
        if (!$this->options['accessToken']) {
            return $this->setError('Required option `accessToken` is undefined.');
        }

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        $error = false;
        try {
            $this->token = json_decode($this->options['accessToken']);
            if (!is_object($this->token)) {
                throw new Exception('Required option `accessToken` is invalid JSON.');
            }

            // make net mount key
            if (empty($this->options['netkey'])) {
                $this->netMountKey = $this->_od_getInitialToken();
            } else {
                $this->netMountKey = $this->options['netkey'];
            }

            if ($this->aTokenFile = $this->_od_getATokenFile()) {
                if (empty($this->options['netkey'])) {
                    if ($this->aTokenFile) {
                        if (is_file($this->aTokenFile)) {
                            $this->token = json_decode(file_get_contents($this->aTokenFile));
                            if (!is_object($this->token)) {
                                unlink($this->aTokenFile);
                                throw new Exception('Required option `accessToken` is invalid JSON.');
                            }
                        } else {
                            file_put_contents($this->aTokenFile, $this->token);
                        }
                    }
                } else if (is_file($this->aTokenFile)) {
                    // If the refresh token is the same as the permanent volume
                    $this->token = json_decode(file_get_contents($this->aTokenFile));
                }
            }

            if ($this->needOnline) {
                $this->_od_refreshToken();

                $this->expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
            }
        } catch (Exception $e) {
            $this->token = null;
            $error = true;
            $this->setError($e->getMessage());
        }

        if ($this->netMountKey) {
            $this->tmbPrefix = 'onedrive' . base_convert($this->netMountKey, 16, 32);
        }

        if ($error) {
            if (empty($this->options['netkey']) && $this->tmbPrefix) {
                // for delete thumbnail 
                $this->netunmount(null, null);
            }
            return false;
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }

        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        $this->options['root'] = ($this->options['root'] == '')? 'OneDrive.com' : $this->options['root'];

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] :
                    $this->_od_query(basename($this->options['path']), $fetch_self = true)->name . '@OneDrive';
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = $this->options['alias'];

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        $this->queryOptions = array(
            'query' => array(
                'select' => 'id,name,lastModifiedDateTime,file,folder,size,image',
            ),
        );

        if ($this->options['useApiThumbnail']) {
            $this->options['tmbURL'] = 'https://';
            $this->options['tmbPath'] = '';
            $this->queryOptions['query']['expand'] = 'thumbnails(select=small)';
        }

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     **/
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    protected function isNameExists($path)
    {
        list($pid, $name) = $this->_od_splitPath($path);

        $raw = $this->_od_query($pid . '/children/' . rawurlencode($name), true);
        return $raw ? $this->_od_parseRaw($raw) : false;
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        list(, $itemId) = $this->_od_splitPath($path);

        $res = $this->_od_query($itemId, false, false, $this->queryOptions);

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_od_parseRaw($raw)) {
                    $itemPath = $this->_joinPath($path, $raw->id);
                    $stat = $this->updateCache($itemPath, $stat);
                    if (empty($stat['hidden'])) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $itemPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function copy($src, $dst, $name)
    {
        $itemId = '';
        if ($this->options['copyJoin']) {
            $test = $this->joinPathCE($dst, $name);
            if ($testStat = $this->isNameExists($test)) {
                $this->remove($test);
            }
        }

        if ($path = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($path);
        } else {
            $this->setError(elFinder::ERROR_COPY, $this->_path($src));
        }

        return $path;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if ($this->options['useApiThumbnail']) {
            if (func_num_args() > 2) {
                list(, , $count) = func_get_args();
            } else {
                $count = 0;
            }
            if ($count < 10) {
                if (isset($stat['tmb']) && $stat['tmb'] != '1') {
                    return $stat['tmb'];
                } else {
                    sleep(2);
                    elFinder::extendTimeLimit();
                    $this->clearcache();
                    $stat = $this->stat($path);

                    return $this->createTmb($path, $stat, ++$count);
                }
            }

            return false;
        }
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_od_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if (($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->tmbPrefix . $stat['rev'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL.
     *
     * @param string $hash    file hash
     * @param array  $options options
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function getContentUrl($hash, $options = array())
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        $res = '';
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            list(, $itemId) = $this->_od_splitPath($path);
            try {
                $url = self::API_URL . $itemId . '/createLink';
                $data = (object)array(
                    'type' => 'embed',
                    'scope' => 'anonymous',
                );
                $curl = $this->_od_prepareCurl($url);
                curl_setopt_array($curl, array(
                    CURLOPT_POST => true,
                    CURLOPT_POSTFIELDS => json_encode($data),
                ));

                $result = elFinder::curlExec($curl);
                if ($result) {
                    $result = json_decode($result);
                    if (isset($result->link)) {
                        // list(, $res) = explode('?', $result->link->webUrl);
                        // $res = 'https://onedrive.live.com/download.aspx?' . $res;
                        $res = $result->link->webUrl;
                    }
                }
            } catch (Exception $e) {
                $res = '';
            }
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $dirname) = $this->_od_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_od_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        if ($dir === 'root') {
            $dir = '';
        }

        return $this->_normpath($dir . '/' . $name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_od_getFileRaw($path)) {
            $stat = $this->_od_parseRaw($raw);
            if ($path === $this->root) {
                $stat['expires'] = $this->expires;
            }
            return $stat;
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _subdirs($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);

        return (bool)$this->_od_query($itemId, false, false, array(
            'query' => array(
                'top' => 1,
                'select' => 'id',
                'filter' => 'folder ne null',
            ),
        ));
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }

        //$cache = $this->_od_getFileRaw($path);
        if (func_num_args() > 2) {
            $args = func_get_arg(2);
        } else {
            $args = array();
        }
        if (!empty($args['substitute'])) {
            $tmbSize = intval($args['substitute']);
        } else {
            $tmbSize = null;
        }
        list(, $itemId) = $this->_od_splitPath($path);
        $options = array(
            'query' => array(
                'select' => 'id,image',
            ),
        );
        if ($tmbSize) {
            $tmb = 'c' . $tmbSize . 'x' . $tmbSize;
            $options['query']['expand'] = 'thumbnails(select=' . $tmb . ')';
        }
        $raw = $this->_od_query($itemId, true, false, $options);

        if ($raw && property_exists($raw, 'image') && $img = $raw->image) {
            if (isset($img->width) && isset($img->height)) {
                $ret = array('dim' => $img->width . 'x' . $img->height);
                if ($tmbSize) {
                    $srcSize = explode('x', $ret['dim']);
                    if (min(($tmbSize / $srcSize[0]), ($tmbSize / $srcSize[1])) < 1) {
                        if (!empty($raw->thumbnails)) {
                            $tmbArr = (array)$raw->thumbnails[0];
                            if (!empty($tmbArr[$tmb]->url)) {
                                $ret['url'] = $tmbArr[$tmb]->url;
                            }
                        }
                    }
                }

                return $ret;
            }
        }

        $ret = '';
        if ($work = $this->getWorkFile($path)) {
            if ($size = @getimagesize($work)) {
                $cache['width'] = $size[0];
                $cache['height'] = $size[1];
                $ret = $size[0] . 'x' . $size[1];
            }
        }
        is_file($work) && @unlink($work);

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            list(, $itemId) = $this->_od_splitPath($path);
            $data = array(
                'target' => self::API_URL . $itemId . '/content',
                'headers' => array('Authorization: Bearer ' . $this->token->data->access_token),
            );

            // to support range request
            if (func_num_args() > 2) {
                $opts = func_get_arg(2);
            } else {
                $opts = array();
            }
            if (!empty($opts['httpheaders'])) {
                $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
            }

            return elFinder::getStreamByUrl($data);
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $namePath = $this->_joinPath($path, $name);
        list($parentId) = $this->_od_splitPath($namePath);

        try {
            $properties = array(
                'name' => (string)$name,
                'folder' => (object)array(),
            );

            $data = (object)$properties;

            $url = self::API_URL . $parentId . '/children';

            $curl = $this->_od_prepareCurl($url);

            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            //create the Folder in the Parent
            $result = elFinder::curlExec($curl);
            $folder = json_decode($result);

            return $this->_joinPath($path, $folder->id);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, array());
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $path = $this->_joinPath($targetDir, $name);

        try {
            //Set the Parent id
            list(, $parentId) = $this->_od_splitPath($targetDir);
            list(, $itemId) = $this->_od_splitPath($source);

            $url = self::API_URL . $itemId . '/copy';

            $properties = array(
                'name' => (string)$name,
            );
            if ($parentId === 'root') {
                $properties['parentReference'] = (object)array('path' => '/drive/root:');
            } else {
                $properties['parentReference'] = (object)array('id' => (string)$parentId);
            }
            $data = (object)$properties;
            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_HEADER => true,
                CURLOPT_HTTPHEADER => array(
                    'Content-Type: application/json',
                    'Authorization: Bearer ' . $this->token->data->access_token,
                    'Prefer: respond-async',
                ),
                CURLOPT_POSTFIELDS => json_encode($data),
            ));
            $result = elFinder::curlExec($curl);

            $res = new stdClass();
            if (preg_match('/Location: (.+)/', $result, $m)) {
                $monUrl = trim($m[1]);
                while ($res) {
                    usleep(200000);
                    $curl = curl_init($monUrl);
                    curl_setopt_array($curl, array(
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_HTTPHEADER => array(
                            'Content-Type: application/json',
                        ),
                    ));
                    $res = json_decode(elFinder::curlExec($curl));
                    if (isset($res->status)) {
                        if ($res->status === 'completed' || $res->status === 'failed') {
                            break;
                        }
                    } elseif (isset($res->error)) {
                        return $this->setError('OneDrive error: ' . $res->error->message);
                    }
                }
            }

            if ($res && isset($res->resourceId)) {
                if (isset($res->folder) && isset($this->sessionCache['subdirs'])) {
                    $this->sessionCache['subdirs'][$targetDir] = true;
                }

                return $this->_joinPath($targetDir, $res->resourceId);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param        $targetDir
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        try {
            list(, $targetParentId) = $this->_od_splitPath($targetDir);
            list($sourceParentId, $itemId, $srcParent) = $this->_od_splitPath($source);

            $properties = array(
                'name' => (string)$name,
            );
            if ($targetParentId !== $sourceParentId) {
                $properties['parentReference'] = (object)array('id' => (string)$targetParentId);
            }

            $url = self::API_URL . $itemId;
            $data = (object)$properties;

            $curl = $this->_od_prepareCurl($url);

            curl_setopt_array($curl, array(
                CURLOPT_CUSTOMREQUEST => 'PATCH',
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            $result = json_decode(elFinder::curlExec($curl));
            if ($result && isset($result->id)) {
                return $targetDir . '/' . $result->id;
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return false;
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        $stat = $this->stat($path);
        try {
            list(, $itemId) = $this->_od_splitPath($path);

            $url = self::API_URL . $itemId;

            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_CUSTOMREQUEST => 'DELETE',
            ));

            //unlink or delete File or Folder in the Parent
            $result = elFinder::curlExec($curl);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->_unlink($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param          $path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     */
    protected function _save($fp, $path, $name, $stat)
    {
        $itemId = '';
        $size = null;
        if ($name === '') {
            list($parentId, $itemId, $parent) = $this->_od_splitPath($path);
        } else {
            if ($stat) {
                if (isset($stat['name'])) {
                    $name = $stat['name'];
                }
                if (isset($stat['rev']) && strpos($stat['hash'], $this->id) === 0) {
                    $itemId = $stat['rev'];
                }
            }
            list(, $parentId) = $this->_od_splitPath($path);
            $parent = $path;
        }

        if ($stat && isset($stat['size'])) {
            $size = $stat['size'];
        } else {
            $stats = fstat($fp);
            if (isset($stats[7])) {
                $size = $stats[7];
            }
        }

        if ($size > 4194304) {
            return $this->_od_uploadSession($fp, $size, $name, $itemId, $parent, $parentId);
        }

        try {
            // for unseekable file pointer
            if (!elFinder::isSeekableStream($fp)) {
                if ($tfp = tmpfile()) {
                    if (stream_copy_to_stream($fp, $tfp, $size? $size : -1) !== false) {
                        rewind($tfp);
                        $fp = $tfp;
                    }
                }
            }

            //Create or Update a file
            if ($itemId === '') {
                $url = self::API_URL . $parentId . ':/' . rawurlencode($name) . ':/content';
            } else {
                $url = self::API_URL . $itemId . '/content';
            }
            $curl = $this->_od_prepareCurl();

            $options = array(
                CURLOPT_URL => $url,
                CURLOPT_PUT => true,
                CURLOPT_INFILE => $fp,
            );
            // Size
            if ($size !== null) {
                $options[CURLOPT_INFILESIZE] = $size;
            }

            curl_setopt_array($curl, $options);

            //create or update File in the Target
            $file = json_decode(elFinder::curlExec($curl));

            return $this->_joinPath($parent, $file->id);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            list(, $itemId) = $this->_od_splitPath($path);
            $url = self::API_URL . $itemId . '/content';
            $contents = $this->_od_createCurl($url, $contents = true);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', array());
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return array();
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/php/elFinderVolumeGoogleDrive.class.php                                   0000644                 00000213121 15266052672 0021157 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for GoogleDrive
 * google-api-php-client-2.x or above.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeGoogleDrive extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'gd';

    /**
     * Google API client object.
     *
     * @var object
     **/
    protected $client = null;

    /**
     * GoogleDrive service object.
     *
     * @var object
     **/
    protected $service = null;

    /**
     * Cache of parents of each directories.
     *
     * @var array
     */
    protected $parents = [];

    /**
     * Cache of chiled directories of each directories.
     *
     * @var array
     */
    protected $directories = null;

    /**
     * Cache of itemID => name of each items.
     *
     * @var array
     */
    protected $names = [];

    /**
     * MIME tyoe of directory.
     *
     * @var string
     */
    const DIRMIME = 'application/vnd.google-apps.folder';

    /**
     * Fetch fields for list.
     *
     * @var string
     */
    const FETCHFIELDS_LIST = 'files(id,name,mimeType,modifiedTime,parents,permissions,size,imageMediaMetadata(height,width),thumbnailLink,webContentLink,webViewLink),nextPageToken';

    /**
     * Fetch fields for get.
     *
     * @var string
     */
    const FETCHFIELDS_GET = 'id,name,mimeType,modifiedTime,parents,permissions,size,imageMediaMetadata(height,width),thumbnailLink,webContentLink,webViewLink';

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Current token expires
     *
     * @var integer
     **/
    private $expires;

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = [
            'client_id' => '',
            'client_secret' => '',
            'access_token' => [],
            'refresh_token' => '',
            'serviceAccountConfigFile' => '',
            'root' => 'My Drive',
            'gdAlias' => '%s@GDrive',
            'googleApiClient' => '',
            'path' => '/',
            'tmbPath' => '',
            'separator' => '/',
            'useGoogleTmb' => true,
            'acceptedName' => '#.#',
            'rootCssClass' => 'elfinder-navbar-root-googledrive',
            'publishPermission' => [
                'type' => 'anyone',
                'role' => 'reader',
                'withLink' => true,
            ],
            'appsExportMap' => [
                'application/vnd.google-apps.document' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'application/vnd.google-apps.spreadsheet' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                'application/vnd.google-apps.drawing' => 'application/pdf',
                'application/vnd.google-apps.presentation' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
                'application/vnd.google-apps.script' => 'application/vnd.google-apps.script+json',
                'default' => 'application/pdf',
            ],
        ];
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _gd_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = 'root';
            $parent = '';
        } else {
            $path = str_replace('\\/', chr(0), $path);
            $paths = explode('/', $path);
            $id = array_pop($paths);
            $id = str_replace(chr(0), '/', $id);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $rootid = ($this->root === '/') ? 'root' : trim($this->root, '/');
                if ($id === $rootid) {
                    $parent = '';
                } else {
                    $parent = $this->root;
                    $pid = $rootid;
                }
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Drive query and fetchAll.
     *
     * @param string $sql
     *
     * @return bool|array
     */
    private function _gd_query($opts)
    {
        $result = [];
        $pageToken = null;
        $parameters = [
            'fields' => self::FETCHFIELDS_LIST,
            'pageSize' => 1000,
            'spaces' => 'drive',
        ];

        if (is_array($opts)) {
            $parameters = array_merge($parameters, $opts);
        }
        do {
            try {
                if ($pageToken) {
                    $parameters['pageToken'] = $pageToken;
                }
                $files = $this->service->files->listFiles($parameters);

                $result = array_merge($result, $files->getFiles());
                $pageToken = $files->getNextPageToken();
            } catch (Exception $e) {
                $pageToken = null;
            }
        } while ($pageToken);

        return $result;
    }

    /**
     * Get dat(googledrive metadata) from GoogleDrive.
     *
     * @param string $path
     *
     * @return array googledrive metadata
     */
    private function _gd_getFile($path, $fields = '')
    {
        list(, $itemId) = $this->_gd_splitPath($path);
        if (!$fields) {
            $fields = self::FETCHFIELDS_GET;
        }
        try {
            $file = $this->service->files->get($itemId, ['fields' => $fields]);
            if ($file instanceof Google_Service_Drive_DriveFile) {
                return $file;
            } else {
                return [];
            }
        } catch (Exception $e) {
            return [];
        }
    }

    /**
     * Parse line from googledrive metadata output and return file stat (array).
     *
     * @param array $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _gd_parseRaw($raw)
    {
        $stat = [];

        $stat['iid'] = isset($raw['id']) ? $raw['id'] : 'root';
        $stat['name'] = isset($raw['name']) ? $raw['name'] : '';
        if (isset($raw['modifiedTime'])) {
            $stat['ts'] = strtotime($raw['modifiedTime']);
        }

        if ($raw['mimeType'] === self::DIRMIME) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
        } else {
            $stat['mime'] = $raw['mimeType'] == 'image/bmp' ? 'image/x-ms-bmp' : $raw['mimeType'];
            $stat['size'] = (int)$raw['size'];
            if ($size = $raw->getImageMediaMetadata()) {
                $stat['width'] = $size['width'];
                $stat['height'] = $size['height'];
            }

            $published = $this->_gd_isPublished($raw);

            if ($this->options['useGoogleTmb']) {
                if (isset($raw['thumbnailLink'])) {
                    if ($published) {
                        $stat['tmb'] = 'drive.google.com/thumbnail?authuser=0&sz=s' . $this->options['tmbSize'] . '&id=' . $raw['id'];
                    } else {
                        $stat['tmb'] = substr($raw['thumbnailLink'], 8); // remove "https://"
                    }
                } else {
                    $stat['tmb'] = '';
                }
            }

            if ($published) {
                $stat['url'] = $this->_gd_getLink($raw);
            } elseif (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get dat(googledrive metadata) from GoogleDrive.
     *
     * @param string $path
     *
     * @return array googledrive metadata
     */
    private function _gd_getNameByPath($path)
    {
        list(, $itemId) = $this->_gd_splitPath($path);
        if (!$this->names) {
            $this->_gd_getDirectoryData();
        }

        return isset($this->names[$itemId]) ? $this->names[$itemId] : '';
    }

    /**
     * Make cache of $parents, $names and $directories.
     *
     * @param bool $usecache
     */
    protected function _gd_getDirectoryData($usecache = true)
    {
        if ($usecache) {
            $cache = $this->session->get($this->id . $this->netMountKey, []);
            if ($cache) {
                $this->parents = $cache['parents'];
                $this->names = $cache['names'];
                $this->directories = $cache['directories'];

                return;
            }
        }

        $root = '';
        if ($this->root === '/') {
            // get root id
            if ($res = $this->_gd_getFile('/', 'id')) {
                $root = $res->getId();
            }
        }

        $data = [];
        $opts = [
            'fields' => 'files(id, name, parents)',
            'q' => sprintf('trashed=false and mimeType="%s"', self::DIRMIME),
        ];
        $res = $this->_gd_query($opts);
        foreach ($res as $raw) {
            if ($parents = $raw->getParents()) {
                $id = $raw->getId();
                $this->parents[$id] = $parents;
                $this->names[$id] = $raw->getName();
                foreach ($parents as $p) {
                    if (isset($data[$p])) {
                        $data[$p][] = $id;
                    } else {
                        $data[$p] = [$id];
                    }
                }
            }
        }
        if ($root && isset($data[$root])) {
            $data['root'] = $data[$root];
        }
        $this->directories = $data;
        $this->session->set($this->id . $this->netMountKey, [
            'parents' => $this->parents,
            'names' => $this->names,
            'directories' => $this->directories,
        ]);
    }

    /**
     * Get descendants directories.
     *
     * @param string $itemId
     *
     * @return array
     */
    protected function _gd_getDirectories($itemId)
    {
        $ret = [];
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        $data = $this->directories;
        if (isset($data[$itemId])) {
            $ret = $data[$itemId];
            foreach ($data[$itemId] as $cid) {
                $ret = array_merge($ret, $this->_gd_getDirectories($cid));
            }
        }

        return $ret;
    }

    /**
     * Get ID based path from item ID.
     *
     * @param string $id
     *
     * @return array
     */
    protected function _gd_getMountPaths($id)
    {
        $root = false;
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        list($pid) = explode('/', $id, 2);
        $path = $id;
        if ('/' . $pid === $this->root) {
            $root = true;
        } elseif (!isset($this->parents[$pid])) {
            $root = true;
            $path = ltrim(substr($path, strlen($pid)), '/');
        }
        $res = [];
        if ($root) {
            if ($this->root === '/' || strpos('/' . $path, $this->root) === 0) {
                $res = [(strpos($path, '/') === false) ? '/' : ('/' . $path)];
            }
        } else {
            foreach ($this->parents[$pid] as $p) {
                $_p = $p . '/' . $path;
                $res = array_merge($res, $this->_gd_getMountPaths($_p));
            }
        }

        return $res;
    }

    /**
     * Return is published.
     *
     * @param object $file
     *
     * @return bool
     */
    protected function _gd_isPublished($file)
    {
        $res = false;
        $pType = $this->options['publishPermission']['type'];
        $pRole = $this->options['publishPermission']['role'];
        if ($permissions = $file->getPermissions()) {
            foreach ($permissions as $permission) {
                if ($permission->type === $pType && $permission->role === $pRole) {
                    $res = true;
                    break;
                }
            }
        }

        return $res;
    }

    /**
     * return item URL link.
     *
     * @param object $file
     *
     * @return string
     */
    protected function _gd_getLink($file)
    {
        if (strpos($file->mimeType, 'application/vnd.google-apps.') !== 0) {
            if ($url = $file->getWebContentLink()) {
                return str_replace('export=download', 'export=media', $url);
            }
        }
        if ($url = $file->getWebViewLink()) {
            return $url;
        }

        return '';
    }

    /**
     * Get download url.
     *
     * @param Google_Service_Drive_DriveFile $file
     *
     * @return string|false
     */
    protected function _gd_getDownloadUrl($file)
    {
        if (strpos($file->mimeType, 'application/vnd.google-apps.') !== 0) {
            return 'https://www.googleapis.com/drive/v3/files/' . $file->getId() . '?alt=media';
        } else {
            $mimeMap = $this->options['appsExportMap'];
            if (isset($mimeMap[$file->getMimeType()])) {
                $mime = $mimeMap[$file->getMimeType()];
            } else {
                $mime = $mimeMap['default'];
            }
            $mime = rawurlencode($mime);

            return 'https://www.googleapis.com/drive/v3/files/' . $file->getId() . '/export?mimeType=' . $mime;
        }

        return false;
    }

    /**
     * Get thumbnail from GoogleDrive.com.
     *
     * @param string $path
     *
     * @return string | boolean
     */
    protected function _gd_getThumbnail($path)
    {
        list(, $itemId) = $this->_gd_splitPath($path);

        try {
            $contents = $this->service->files->get($itemId, [
                'alt' => 'media',
            ]);
            $contents = $contents->getBody()->detach();
            rewind($contents);

            return $contents;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Publish permissions specified path item.
     *
     * @param string $path
     *
     * @return bool
     */
    protected function _gd_publish($path)
    {
        if ($file = $this->_gd_getFile($path)) {
            if ($this->_gd_isPublished($file)) {
                return true;
            }
            try {
                if ($this->service->permissions->create($file->getId(), new \Google_Service_Drive_Permission($this->options['publishPermission']))) {
                    return true;
                }
            } catch (Exception $e) {
                return false;
            }
        }

        return false;
    }

    /**
     * unPublish permissions specified path.
     *
     * @param string $path
     *
     * @return bool
     */
    protected function _gd_unPublish($path)
    {
        if ($file = $this->_gd_getFile($path)) {
            if (!$this->_gd_isPublished($file)) {
                return true;
            }
            $permissions = $file->getPermissions();
            $pType = $this->options['publishPermission']['type'];
            $pRole = $this->options['publishPermission']['role'];
            try {
                foreach ($permissions as $permission) {
                    if ($permission->type === $pType && $permission->role === $pRole) {
                        $this->service->permissions->delete($file->getId(), $permission->getId());

                        return true;
                        break;
                    }
                }
            } catch (Exception $e) {
                return false;
            }
        }

        return false;
    }

    /**
     * Read file chunk.
     *
     * @param resource $handle
     * @param int      $chunkSize
     *
     * @return string
     */
    protected function _gd_readFileChunk($handle, $chunkSize)
    {
        $byteCount = 0;
        $giantChunk = '';
        while (!feof($handle)) {
            // fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
            $chunk = fread($handle, 8192);
            $byteCount += strlen($chunk);
            $giantChunk .= $chunk;
            if ($byteCount >= $chunkSize) {
                return $giantChunk;
            }
        }

        return $giantChunk;
    }

    /*********************************************************************/
    /*                        EXTENDED FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for GoogleDrive
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
        }
        if (empty($options['googleApiClient']) && defined('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT')) {
            $options['googleApiClient'] = ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT;
            include_once $options['googleApiClient'];
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $client = new \Google_Client();
            $client->setClientId($options['client_id']);
            $client->setClientSecret($options['client_secret']);

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('GoogleDriveAuthParams', [])->set('GoogleDriveTokens', []);
            } elseif ($options['pass'] === 'googledrive') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('GoogleDriveAuthParams', []), $options);

            if (!isset($options['access_token'])) {
                $options['access_token'] = $this->session->get('GoogleDriveTokens', []);
                $this->session->remove('GoogleDriveTokens');
            }
            $aToken = $options['access_token'];

            $rootObj = $service = null;
            if ($aToken) {
                try {
                    $client->setAccessToken($aToken);
                    if ($client->isAccessTokenExpired()) {
                        $aToken = array_merge($aToken, $client->fetchAccessTokenWithRefreshToken());
                        $client->setAccessToken($aToken);
                    }
                    $service = new \Google_Service_Drive($client);
                    $rootObj = $service->files->get('root');

                    $options['access_token'] = $aToken;
                    $this->session->set('GoogleDriveAuthParams', $options);
                } catch (Exception $e) {
                    $aToken = [];
                    $options['access_token'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('GoogleDriveAuthParams', $options);

                        return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
                    }
                }
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code || (isset($options['user']) && $options['user'] === 'init')) {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (isset($options['id'])) {
                    $callback = $options['url']
                            . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=googledrive&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                    $client->setRedirectUri($callback);
                }

                if (!$aToken && empty($code)) {
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    if (!empty($options['offline'])) {
                        $client->setApprovalPrompt('force');
                        $client->setAccessType('offline');
                    }
                    $url = $client->createAuthUrl();

                    $html = '<input id="elf-volumedriver-googledrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "googledrive", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('GoogleDriveAuthParams', $options);

                        return ['exit' => true, 'body' => $html];
                    } else {
                        $out = [
                            'node' => $options['id'],
                            'json' => '{"protocol": "googledrive", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount',
                        ];

                        return ['exit' => 'callback', 'out' => $out];
                    }
                } else {
                    if ($code) {
                        if (!empty($options['id'])) {
                            $aToken = $client->fetchAccessTokenWithAuthCode($code);
                            $options['access_token'] = $aToken;
                            unset($options['code']);
                            $this->session->set('GoogleDriveTokens', $aToken)->set('GoogleDriveAuthParams', $options);
                            $out = [
                                'node' => $options['id'],
                                'json' => '{"protocol": "googledrive", "mode": "done", "reset": 1}',
                                'bind' => 'netmount',
                            ];
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = array(
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'googledrive',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code'=> $code
                                    )
                                )),
                                'bind' => 'netmount'
                            );
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $path = $options['path'];
                    if ($path === '/') {
                        $path = 'root';
                    }
                    $folders = [];
                    foreach ($service->files->listFiles([
                        'pageSize' => 1000,
                        'q' => sprintf('trashed = false and "%s" in parents and mimeType = "application/vnd.google-apps.folder"', $path),
                    ]) as $f) {
                        $folders[$f->getId()] = $f->getName();
                    }
                    natcasesort($folders);

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => $rootObj->getName()] + $folders;
                    $folders = json_encode($folders);
                    $expires = empty($aToken['refresh_token']) ? $aToken['created'] + $aToken['expires_in'] - 30 : 0;
                    $mnt2res = empty($aToken['refresh_token']) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "googledrive", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res . '}';
                    $options['pass'] = 'return';
                    $html = 'Google.com';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('GoogleDriveAuthParams', $options);

                    return ['exit' => true, 'body' => $html];
                }
            }
        } catch (Exception $e) {
            $this->session->remove('GoogleDriveAuthParams')->remove('GoogleDriveTokens');
            if (empty($options['pass'])) {
                return ['exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage()];
            } else {
                return ['exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]];
            }
        }

        if (!$aToken) {
            return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
        }

        if ($options['path'] === '/') {
            $options['path'] = 'root';
        }

        try {
            $file = $service->files->get($options['path']);
            $options['alias'] = sprintf($this->options['gdAlias'], $file->getName());
        } catch (Google_Service_Exception $e) {
            $err = json_decode($e->getMessage(), true);
            if (isset($err['error']) && $err['error']['code'] == 404) {
                return ['exit' => true, 'error' => [elFinder::ERROR_TRGDIR_NOT_FOUND, $options['path']]];
            } else {
                return ['exit' => true, 'error' => $e->getMessage()];
            }
        } catch (Exception $e) {
            return ['exit' => true, 'error' => $e->getMessage()];
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `googledrive` & rm thumbs.
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if (!$this->options['useGoogleTmb']) {
            if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->netMountKey . '*.png')) {
                foreach ($tmbs as $file) {
                    unlink($file);
                }
            }
        }
        $this->session->remove($this->id . $this->netMountKey);

        return true;
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers.
     *
     * @param string $path file cache
     *
     * @return array
     */
    protected function isNameExists($path)
    {
        list($parentId, $name) = $this->_gd_splitPath($path);
        $opts = [
            'q' => sprintf('trashed=false and "%s" in parents and name="%s"', $parentId, $name),
            'fields' => self::FETCHFIELDS_LIST,
        ];
        $srcFile = $this->_gd_query($opts);

        return empty($srcFile) ? false : $this->_gd_parseRaw($srcFile[0]);
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        $serviceAccountConfig = '';
        if (empty($this->options['serviceAccountConfigFile'])) {
            if (empty($options['client_id'])) {
                if (defined('ELFINDER_GOOGLEDRIVE_CLIENTID') && ELFINDER_GOOGLEDRIVE_CLIENTID) {
                    $this->options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
                } else {
                    return $this->setError('Required option "client_id" is undefined.');
                }
            }
            if (empty($options['client_secret'])) {
                if (defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET') && ELFINDER_GOOGLEDRIVE_CLIENTSECRET) {
                    $this->options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
                } else {
                    return $this->setError('Required option "client_secret" is undefined.');
                }
            }
            if (!$this->options['access_token'] && !$this->options['refresh_token']) {
                return $this->setError('Required option "access_token" or "refresh_token" is undefined.');
            }
        } else {
            if (!is_readable($this->options['serviceAccountConfigFile'])) {
                return $this->setError('Option "serviceAccountConfigFile" file is not readable.');
            }
            $serviceAccountConfig = $this->options['serviceAccountConfigFile'];
        }

        try {
            if (!$serviceAccountConfig) {
                $aTokenFile = '';
                if ($this->options['refresh_token']) {
                    // permanent mount
                    $aToken = $this->options['refresh_token'];
                    $this->options['access_token'] = '';
                    $tmp = elFinder::getStaticVar('commonTempPath');
                    if (!$tmp) {
                        $tmp = $this->getTempPath();
                    }
                    if ($tmp) {
                        $aTokenFile = $tmp . DIRECTORY_SEPARATOR . md5($this->options['client_id'] . $this->options['refresh_token']) . '.gtoken';
                        if (is_file($aTokenFile)) {
                            $this->options['access_token'] = json_decode(file_get_contents($aTokenFile), true);
                        }
                    }
                } else {
                    // make net mount key for network mount
                    if (is_array($this->options['access_token'])) {
                        $aToken = !empty($this->options['access_token']['refresh_token'])
                            ? $this->options['access_token']['refresh_token']
                            : $this->options['access_token']['access_token'];
                    } else {
                        return $this->setError('Required option "access_token" is not Array or empty.');
                    }
                }
            }

            $errors = [];
            if ($this->needOnline && !$this->service) {
                if (($this->options['googleApiClient'] || defined('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT')) && !class_exists('Google_Client')) {
                    include_once $this->options['googleApiClient'] ? $this->options['googleApiClient'] : ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT;
                }
                if (!class_exists('Google_Client')) {
                    return $this->setError('Class Google_Client not found.');
                }

                $this->client = new \Google_Client();

                $client = $this->client;

                if (!$serviceAccountConfig) {
                    if ($this->options['access_token']) {
                        $client->setAccessToken($this->options['access_token']);
                        $access_token = $this->options['access_token'];
                    }
                    if ($client->isAccessTokenExpired()) {
                        $client->setClientId($this->options['client_id']);
                        $client->setClientSecret($this->options['client_secret']);
                        $access_token = $client->fetchAccessTokenWithRefreshToken($this->options['refresh_token'] ?: null);
                        $client->setAccessToken($access_token);
                        if ($aTokenFile) {
                            file_put_contents($aTokenFile, json_encode($access_token));
                        } else {
                            $access_token['refresh_token'] = $this->options['access_token']['refresh_token'];
                        }
                        if (!empty($this->options['netkey'])) {
                            elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'access_token', $access_token);
                        }
                        $this->options['access_token'] = $access_token;
                    }
                    $this->expires = empty($access_token['refresh_token']) ? $access_token['created'] + $access_token['expires_in'] - 30 : 0;
                } else {
                    $client->setAuthConfigFile($serviceAccountConfig);
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    $aToken = $client->getClientId();
                }
                $this->service = new \Google_Service_Drive($client);
            }

            if ($this->needOnline) {
                $this->netMountKey = md5($aToken . '-' . $this->options['path']);
            }
        } catch (InvalidArgumentException $e) {
            $errors[] = $e->getMessage();
        } catch (Google_Service_Exception $e) {
            $errors[] = $e->getMessage();
        }

        if ($this->needOnline && !$this->service) {
            $this->session->remove($this->id . $this->netMountKey);
            if ($aTokenFile) {
                if (is_file($aTokenFile)) {
                    unlink($aTokenFile);
                }
            }
            $errors[] = 'Google Drive Service could not be loaded.';

            return $this->setError($errors);
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                $this->options['root'] = ($this->options['root'] === '')? $this->_gd_getNameByPath('root') : $this->options['root'];
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] : sprintf($this->options['gdAlias'], $this->_gd_getNameByPath($this->options['path']));
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['root'] = ($this->options['root'] === '')? 'GoogleDrive' : $this->options['root'];
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = isset($this->options['alias'])? $this->options['alias'] : 'GoogleDrive';

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        if ($this->options['useGoogleTmb']) {
            $this->options['tmbURL'] = 'https://';
            $this->options['tmbPath'] = '';
        }

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     **/
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if ($this->needOnline && $this->isMyReload()) {
            $this->_gd_getDirectoryData(false);
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = [];
        $hasDir = false;

        list(, $pid) = $this->_gd_splitPath($path);

        $opts = [
            'fields' => self::FETCHFIELDS_LIST,
            'q' => sprintf('trashed=false and "%s" in parents', $pid),
        ];

        $res = $this->_gd_query($opts);

        $mountPath = $this->_normpath($path . '/');

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_gd_parseRaw($raw)) {
                    $stat = $this->updateCache($mountPath . $raw->id, $stat);
                    if (empty($stat['hidden']) && $path !== $mountPath . $raw->id) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $mountPath . $raw->id;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Recursive files search.
     *
     * @param string $path dir path
     * @param string $q    search string
     * @param array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod'])) {
            // has custom match method use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        list(, $itemId) = $this->_gd_splitPath($path);

        $path = $this->_normpath($path . '/');
        $result = [];
        $query = '';

        if ($itemId !== 'root') {
            $dirs = array_merge([$itemId], $this->_gd_getDirectories($itemId));
            $query = '(\'' . implode('\' in parents or \'', $dirs) . '\' in parents)';
        }

        $tmp = [];
        if (!$mimes) {
            foreach (explode(' ', $q) as $_v) {
                $tmp[] = 'fullText contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
            }
            $query .= ($query ? ' and ' : '') . implode(' and ', $tmp);
        } else {
            foreach ($mimes as $_v) {
                $tmp[] = 'mimeType contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
            }
            $query .= ($query ? ' and ' : '') . '(' . implode(' or ', $tmp) . ')';
        }

        $opts = [
            'q' => sprintf('trashed=false and (%s)', $query),
        ];

        $res = $this->_gd_query($opts);

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        foreach ($res as $raw) {
            if ($timeout && $timeout < time()) {
                $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
                break;
            }
            if ($stat = $this->_gd_parseRaw($raw)) {
                if ($parents = $raw->getParents()) {
                    foreach ($parents as $parent) {
                        $paths = $this->_gd_getMountPaths($parent);
                        foreach ($paths as $path) {
                            $path = ($path === '') ? '/' : (rtrim($path, '/') . '/');
                            if (!isset($this->cache[$path . $raw->id])) {
                                $stat = $this->updateCache($path . $raw->id, $stat);
                            } else {
                                $stat = $this->cache[$path . $raw->id];
                            }
                            if (empty($stat['hidden'])) {
                                $stat['path'] = $this->_path($path) . $stat['name'];
                                $result[] = $stat;
                            }
                        }
                    }
                }
            }
        }

        return $result;
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     **/
    protected function copy($src, $dst, $name)
    {
        $this->clearcache();
        $res = $this->_gd_getFile($src);
        if ($res['mimeType'] == self::DIRMIME) {
            $newDir = $this->_mkdir($dst, $name);
            if ($newDir) {
                list(, $itemId) = $this->_gd_splitPath($newDir);
                list(, $srcId) = $this->_gd_splitPath($src);
                $path = $this->_joinPath($dst, $itemId);
                $opts = [
                    'q' => sprintf('trashed=false and "%s" in parents', $srcId),
                ];

                $res = $this->_gd_query($opts);
                foreach ($res as $raw) {
                    $raw['mimeType'] == self::DIRMIME ? $this->copy($src . '/' . $raw['id'], $path, $raw['name']) : $this->_copy($src . '/' . $raw['id'], $path, $raw['name']);
                }

                $ret = $this->_joinPath($dst, $itemId);
                $this->added[] = $this->stat($ret);
            } else {
                $ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
            }
        } else {
            if ($itemId = $this->_copy($src, $dst, $name)) {
                $ret = $this->_joinPath($dst, $itemId);
                $this->added[] = $this->stat($ret);
            } else {
                $ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
            }
        }
        return $ret;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     * @param bool   $recursive
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false, $recursive = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$recursive && !$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$recursive && !$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_gd_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if (($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->netMountKey . $stat['iid'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR.
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return bool|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = [])
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            if ($this->_gd_publish($path)) {
                if ($raw = $this->_gd_getFile($path)) {
                    return $this->_gd_getLink($raw);
                }
            }
        }

        return false;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && empty($this->options['refresh_token']) && $this->options['access_token'] && isset($this->options['access_token']['refresh_token'])) {
            $res['refresh_token'] = $this->options['access_token']['refresh_token'];
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $parent) = $this->_gd_splitPath($path);

        return $this->_normpath($parent);
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_gd_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return $this->_normpath($dir . '/' . str_replace('/', '\\/', $name));
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        if (!$this->names) {
            $this->_gd_getDirectoryData();
        }
        $path = $this->_normpath(substr($path, strlen($this->root)));
        $names = [];
        $paths = explode('/', $path);
        foreach ($paths as $_p) {
            $names[] = isset($this->names[$_p]) ? $this->names[$_p] : $_p;
        }

        return $this->rootName . implode('/', $names);
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_gd_getFile($path)) {
            $stat = $this->_gd_parseRaw($raw);
            if ($path === $this->root) {
                $stat['expires'] = $this->expires;
            }
            return $stat;
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        list(, $itemId) = $this->_gd_splitPath($path);

        return isset($this->directories[$itemId]);
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }
        $ret = '';

        if ($file = $this->_gd_getFile($path)) {
            if (isset($file['imageMediaMetadata'])) {
                $ret = array('dim' => $file['imageMediaMetadata']['width'] . 'x' . $file['imageMediaMetadata']['height']);
                if (func_num_args() > 2) {
                    $args = func_get_arg(2);
                } else {
                    $args = array();
                }
                if (!empty($args['substitute'])) {
                    $tmbSize = intval($args['substitute']);
                    $srcSize = explode('x', $ret['dim']);
                    if ($srcSize[0] && $srcSize[1]) {
                        if (min(($tmbSize / $srcSize[0]), ($tmbSize / $srcSize[1])) < 1) {
                            if ($this->_gd_isPublished($file)) {
                                $tmbSize = strval($tmbSize);
                                $ret['url'] = 'https://drive.google.com/thumbnail?authuser=0&sz=s' . $tmbSize . '&id=' . $file['id'];
                            } elseif ($subImgLink = $this->getSubstituteImgLink(elFinder::$currentArgs['target'], $srcSize)) {
                                $ret['url'] = $subImgLink;
                            }
                        }
                    }
                }
            }
        }

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            if ($file = $this->_gd_getFile($path)) {
                if ($dlurl = $this->_gd_getDownloadUrl($file)) {
                    $token = $this->client->getAccessToken();
                    if (!$token && $this->client->isUsingApplicationDefaultCredentials()) {
                        $this->client->fetchAccessTokenWithAssertion();
                        $token = $this->client->getAccessToken();
                    }
                    $access_token = '';
                    if (is_array($token)) {
                        $access_token = $token['access_token'];
                    } else {
                        if ($token = json_decode($this->client->getAccessToken())) {
                            $access_token = $token->access_token;
                        }
                    }
                    if ($access_token) {
                        $data = array(
                            'target' => $dlurl,
                            'headers' => array('Authorization: Bearer ' . $access_token),
                        );

                        // to support range request
                        if (func_num_args() > 2) {
                            $opts = func_get_arg(2);
                        } else {
                            $opts = array();
                        }
                        if (!empty($opts['httpheaders'])) {
                            $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
                        }

                        return elFinder::getStreamByUrl($data);
                    }
                }
            }
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);
        list($parentId, , $parent) = $this->_gd_splitPath($path);

        try {
            $file = new \Google_Service_Drive_DriveFile();

            $file->setName($name);
            $file->setMimeType(self::DIRMIME);
            $file->setParents([$parentId]);

            //create the Folder in the Parent
            $obj = $this->service->files->create($file);

            if ($obj instanceof Google_Service_Drive_DriveFile) {
                $path = $this->_joinPath($parent, $obj['id']);
                $this->_gd_getDirectoryData(false);

                return $path;
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, []);
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $source = $this->_normpath($source);
        $targetDir = $this->_normpath($targetDir);

        try {
            $file = new \Google_Service_Drive_DriveFile();
            $file->setName($name);

            //Set the Parent id
            list(, $parentId) = $this->_gd_splitPath($targetDir);
            $file->setParents([$parentId]);

            list(, $srcId) = $this->_gd_splitPath($source);
            $file = $this->service->files->copy($srcId, $file, ['fields' => self::FETCHFIELDS_GET]);
            $itemId = $file->id;

            return $itemId;
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _move($source, $targetDir, $name)
    {
        list($removeParents, $itemId) = $this->_gd_splitPath($source);
        $target = $this->_normpath($targetDir . '/' . $itemId);
        try {
            //moving and renaming a file or directory
            $files = new \Google_Service_Drive_DriveFile();
            $files->setName($name);

            //Set new Parent and remove old parent
            list(, $addParents) = $this->_gd_splitPath($targetDir);
            $opts = ['addParents' => $addParents, 'removeParents' => $removeParents];

            $file = $this->service->files->update($itemId, $files, $opts);

            if ($file->getMimeType() === self::DIRMIME) {
                $this->_gd_getDirectoryData(false);
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return $target;
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        try {
            $files = new \Google_Service_Drive_DriveFile();
            $files->setTrashed(true);

            list($pid, $itemId) = $this->_gd_splitPath($path);
            $opts = ['removeParents' => $pid];
            $this->service->files->update($itemId, $files, $opts);
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        $res = $this->_unlink($path);
        $res && $this->_gd_getDirectoryData(false);

        return $res;
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param          $path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     */
    protected function _save($fp, $path, $name, $stat)
    {
        if ($name !== '') {
            $path .= '/' . str_replace('/', '\\/', $name);
        }
        list($parentId, $itemId, $parent) = $this->_gd_splitPath($path);
        if ($name === '') {
            $stat['iid'] = $itemId;
        }

        if (!$stat || empty($stat['iid'])) {
            $opts = [
                'q' => sprintf('trashed=false and "%s" in parents and name="%s"', $parentId, $name),
                'fields' => self::FETCHFIELDS_LIST,
            ];
            $srcFile = $this->_gd_query($opts);
            $srcFile = empty($srcFile) ? null : $srcFile[0];
        } else {
            $srcFile = $this->_gd_getFile($path);
        }

        try {
            $mode = 'update';
            $mime = isset($stat['mime']) ? $stat['mime'] : '';

            $file = new Google_Service_Drive_DriveFile();
            if ($srcFile) {
                $mime = $srcFile->getMimeType();
            } else {
                $mode = 'insert';
                $file->setName($name);
                $file->setParents([
                    $parentId,
                ]);
            }

            if (!$mime) {
                $mime = self::mimetypeInternalDetect($name);
            }
            if ($mime === 'unknown') {
                $mime = 'application/octet-stream';
            }
            $file->setMimeType($mime);

            $size = 0;
            if (isset($stat['size'])) {
                $size = $stat['size'];
            } else {
                $fstat = fstat($fp);
                if (!empty($fstat['size'])) {
                    $size = $fstat['size'];
                }
            }

            // set chunk size (max: 100MB)
            $chunkSizeBytes = 100 * 1024 * 1024;
            if ($size > 0) {
                $memory = elFinder::getIniBytes('memory_limit');
                if ($memory > 0) {
                    $chunkSizeBytes = max(262144, min([$chunkSizeBytes, (intval($memory / 4 / 256) * 256)]));
                }
            }

            if ($size > $chunkSizeBytes) {
                $client = $this->client;
                // Call the API with the media upload, defer so it doesn't immediately return.
                $client->setDefer(true);
                if ($mode === 'insert') {
                    $request = $this->service->files->create($file, [
                        'fields' => self::FETCHFIELDS_GET,
                    ]);
                } else {
                    $request = $this->service->files->update($srcFile->getId(), $file, [
                        'fields' => self::FETCHFIELDS_GET,
                    ]);
                }

                // Create a media file upload to represent our upload process.
                $media = new Google_Http_MediaFileUpload($client, $request, $mime, null, true, $chunkSizeBytes);
                $media->setFileSize($size);
                // Upload the various chunks. $status will be false until the process is
                // complete.
                $status = false;
                while (!$status && !feof($fp)) {
                    elFinder::checkAborted();
                    // read until you get $chunkSizeBytes from TESTFILE
                    // fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
                    // An example of a read buffered file is when reading from a URL
                    $chunk = $this->_gd_readFileChunk($fp, $chunkSizeBytes);
                    $status = $media->nextChunk($chunk);
                }
                // The final value of $status will be the data from the API for the object
                // that has been uploaded.
                if ($status !== false) {
                    $obj = $status;
                }

                $client->setDefer(false);
            } else {
                $params = [
                    'data' => stream_get_contents($fp),
                    'uploadType' => 'media',
                    'fields' => self::FETCHFIELDS_GET,
                ];
                if ($mode === 'insert') {
                    $obj = $this->service->files->create($file, $params);
                } else {
                    $obj = $this->service->files->update($srcFile->getId(), $file, $params);
                }
            }
            if ($obj instanceof Google_Service_Drive_DriveFile) {
                return $this->_joinPath($parent, $obj->getId());
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            list(, $itemId) = $this->_gd_splitPath($path);

            $contents = $this->service->files->get($itemId, [
                'alt' => 'media',
            ]);
            $contents = (string)$contents->getBody();
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', []);
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return [];
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/php/elFinderVolumeDriver.class.php                                        0000644                 00001007545 15266052673 0020221 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Base class for elFinder volume.
 * Provide 2 layers:
 *  1. Public API (commands)
 *  2. abstract fs API
 * All abstract methods begin with "_"
 *
 * @author Dmitry (dio) Levashov
 * @author Troex Nevelin
 * @author Alexey Sukhotin
 * @method netmountPrepare(array $options)
 * @method postNetmount(array $options)
 */
abstract class elFinderVolumeDriver
{

    /**
     * Net mount key
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Request args
     * $_POST or $_GET values
     *
     * @var array
     */
    protected $ARGS = array();

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'a';

    /**
     * Volume id - used as prefix for files hashes
     *
     * @var string
     **/
    protected $id = '';

    /**
     * Flag - volume "mounted" and available
     *
     * @var bool
     **/
    protected $mounted = false;

    /**
     * Root directory path
     *
     * @var string
     **/
    protected $root = '';

    /**
     * Root basename | alias
     *
     * @var string
     **/
    protected $rootName = '';

    /**
     * Default directory to open
     *
     * @var string
     **/
    protected $startPath = '';

    /**
     * Base URL
     *
     * @var string
     **/
    protected $URL = '';

    /**
     * Path to temporary directory
     *
     * @var string
     */
    protected $tmp;

    /**
     * A file save destination path when a temporary content URL is required
     * on a network volume or the like
     * If not specified, it tries to use "Connector Path/../files/.tmb".
     *
     * @var string
     */
    protected $tmpLinkPath = '';

    /**
     * A file save destination URL when a temporary content URL is required
     * on a network volume or the like
     * If not specified, it tries to use "Connector URL/../files/.tmb".
     *
     * @var string
     */
    protected $tmpLinkUrl = '';

    /**
     * Thumbnails dir path
     *
     * @var string
     **/
    protected $tmbPath = '';

    /**
     * Is thumbnails dir writable
     *
     * @var bool
     **/
    protected $tmbPathWritable = false;

    /**
     * Thumbnails base URL
     *
     * @var string
     **/
    protected $tmbURL = '';

    /**
     * Thumbnails size in px
     *
     * @var int
     **/
    protected $tmbSize = 48;

    /**
     * Image manipulation lib name
     * auto|imagick|gd|convert
     *
     * @var string
     **/
    protected $imgLib = 'auto';

    /**
     * Video to Image converter
     *
     * @var array
     */
    protected $imgConverter = array();

    /**
     * Library to crypt files name
     *
     * @var string
     **/
    protected $cryptLib = '';

    /**
     * Archivers config
     *
     * @var array
     **/
    protected $archivers = array(
        'create' => array(),
        'extract' => array()
    );

    /**
     * Static var of $this->options['maxArcFilesSize']
     * 
     * @var int|string
     */
    protected static $maxArcFilesSize;

    /**
     * Server character encoding
     *
     * @var string or null
     **/
    protected $encoding = null;

    /**
     * How many subdirs levels return for tree
     *
     * @var int
     **/
    protected $treeDeep = 1;

    /**
     * Errors from last failed action
     *
     * @var array
     **/
    protected $error = array();

    /**
     * Today 24:00 timestamp
     *
     * @var int
     **/
    protected $today = 0;

    /**
     * Yesterday 24:00 timestamp
     *
     * @var int
     **/
    protected $yesterday = 0;

    /**
     * Force make dirctory on extract
     *
     * @var int
     **/
    protected $extractToNewdir = 'auto';

    /**
     * Object configuration
     *
     * @var array
     **/
    protected $options = array(
        // Driver ID (Prefix of volume ID), Normally, the value specified for each volume driver is used.
        'driverId' => '',
        // Id (Suffix of volume ID), Normally, the number incremented according to the specified number of volumes is used.
        'id' => '',
        // revision id of root directory that uses for caching control of root stat
        'rootRev' => '',
        // driver type it uses volume root's CSS class name. e.g. 'group' -> Adds 'elfinder-group' to CSS class name.
        'type' => '',
        // root directory path
        'path' => '',
        // Folder hash value on elFinder to be the parent of this volume
        'phash' => '',
        // Folder hash value on elFinder to trash bin of this volume, it require 'copyJoin' to true
        'trashHash' => '',
        // open this path on initial request instead of root path
        'startPath' => '',
        // how many subdirs levels return per request
        'treeDeep' => 1,
        // root url, not set to URL via the connector. If you want to hide the file URL, do not set this value. (replacement for old "fileURL" option)
        'URL' => '',
        // enable onetime URL to a file - (true, false, 'auto' (true if a temporary directory is available) or callable (A function that return onetime URL))
        'onetimeUrl' => 'auto',
        // directory link url to own manager url with folder hash (`true`, `false`, `'hide'`(No show) or default `'auto'`: URL is empty then `true` else `false`)
        'dirUrlOwn' => 'auto',
        // directory separator. required by client to show paths correctly
        'separator' => DIRECTORY_SEPARATOR,
        // Use '/' as directory separator when the path hash encode/decode on the Windows server too
        'winHashFix' => false,
        // Server character encoding (default is '': UTF-8)
        'encoding' => '',
        // for convert character encoding (default is '': Not change locale)
        'locale' => '',
        // URL of volume icon image
        'icon' => '',
        // CSS Class of volume root in tree
        'rootCssClass' => '',
        // Items to disable session caching
        'noSessionCache' => array(),
        // enable i18n folder name that convert name to elFinderInstance.messages['folder_'+name]
        'i18nFolderName' => false,
        // Search timeout (sec)
        'searchTimeout' => 30,
        // Search exclusion directory regex pattern (require demiliter e.g. '#/path/to/exclude_directory#i')
        'searchExDirReg' => '',
        // library to crypt/uncrypt files names (not implemented)
        'cryptLib' => '',
        // how to detect files mimetypes. (auto/internal/finfo/mime_content_type)
        'mimeDetect' => 'auto',
        // mime.types file path (for mimeDetect==internal)
        'mimefile' => '',
        // Static extension/MIME of general server side scripts to security issues
        'staticMineMap' => array(
            'php:*' => 'text/x-php',
            'pht:*' => 'text/x-php',
            'php3:*' => 'text/x-php',
            'php4:*' => 'text/x-php',
            'php5:*' => 'text/x-php',
            'php7:*' => 'text/x-php',
            'php8:*' => 'text/x-php',
            'php9:*' => 'text/x-php',
            'phtml:*' => 'text/x-php',
            'phar:*' => 'text/x-php',
            'cgi:*' => 'text/x-httpd-cgi',
            'pl:*' => 'text/x-perl',
            'asp:*' => 'text/x-asap',
            'aspx:*' => 'text/x-asap',
            'py:*' => 'text/x-python',
            'rb:*' => 'text/x-ruby',
            'jsp:*' => 'text/x-jsp'
        ),
        // mime type normalize map : Array '[ext]:[detected mime type]' => '[normalized mime]'
        'mimeMap' => array(
            'md:application/x-genesis-rom' => 'text/x-markdown',
            'md:text/plain' => 'text/x-markdown',
            'markdown:text/plain' => 'text/x-markdown',
            'css:text/x-asm' => 'text/css',
            'css:text/plain' => 'text/css',
            'csv:text/plain' => 'text/csv',
            'java:text/x-c' => 'text/x-java-source',
            'json:text/plain' => 'application/json',
            'sql:text/plain' => 'text/x-sql',
            'rtf:text/rtf' => 'application/rtf',
            'rtfd:text/rtfd' => 'application/rtfd',
            'ico:image/vnd.microsoft.icon' => 'image/x-icon',
            'svg:text/plain' => 'image/svg+xml',
            'pxd:application/octet-stream' => 'image/x-pixlr-data',
            'dng:image/tiff' => 'image/x-adobe-dng',
            'sketch:application/zip' => 'image/x-sketch',
            'sketch:application/octet-stream' => 'image/x-sketch',
            'xcf:application/octet-stream' => 'image/x-xcf',
            'amr:application/octet-stream' => 'audio/amr',
            'm4a:video/mp4' => 'audio/mp4',
            'oga:application/ogg' => 'audio/ogg',
            'ogv:application/ogg' => 'video/ogg',
            'zip:application/x-zip' => 'application/zip',
            'm3u8:text/plain' => 'application/x-mpegURL',
            'mpd:text/plain' => 'application/dash+xml',
            'mpd:application/xml' => 'application/dash+xml',
            '*:application/x-dosexec' => 'application/x-executable',
            'doc:application/vnd.ms-office' => 'application/msword',
            'xls:application/vnd.ms-office' => 'application/vnd.ms-excel',
            'ppt:application/vnd.ms-office' => 'application/vnd.ms-powerpoint',
            'yml:text/plain' => 'text/x-yaml',
            'ai:application/pdf' => 'application/postscript',
            'cgm:text/plain' => 'image/cgm',
            'dxf:text/plain' => 'image/vnd.dxf',
            'dds:application/octet-stream' => 'image/vnd-ms.dds',
            'hpgl:text/plain' => 'application/vnd.hp-hpgl',
            'igs:text/plain' => 'model/iges',
            'iges:text/plain' => 'model/iges',
            'plt:application/octet-stream' => 'application/plt',
            'plt:text/plain' => 'application/plt',
            'sat:text/plain' => 'application/sat',
            'step:text/plain' => 'application/step',
            'stp:text/plain' => 'application/step'
        ),
        // An option to add MimeMap to the `mimeMap` option
        // Array '[ext]:[detected mime type]' => '[normalized mime]'
        'additionalMimeMap' => array(),
        // MIME-Type of filetype detected as unknown
        'mimeTypeUnknown' => 'application/octet-stream',
        // MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook
        // '.' is allow inline of all of MIME types
        // '$^' is not allow inline of all of MIME types
        'dispInlineRegex' => '^(?:(?:video|audio)|image/(?!.+\+xml)|application/(?:ogg|x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)',
        // temporary content URL's base path
        'tmpLinkPath' => '',
        // temporary content URL's base URL
        'tmpLinkUrl' => '',
        // directory for thumbnails
        'tmbPath' => '.tmb',
        // mode to create thumbnails dir
        'tmbPathMode' => 0777,
        // thumbnails dir URL. Set it if store thumbnails outside root directory
        'tmbURL' => '',
        // thumbnails size (px)
        'tmbSize' => 48,
        // thumbnails crop (true - crop, false - scale image to fit thumbnail size)
        'tmbCrop' => true,
        // thumbnail URL require custom data as the GET query
        'tmbReqCustomData' => false,
        // thumbnails background color (hex #rrggbb or 'transparent')
        'tmbBgColor' => 'transparent',
        // image rotate fallback background color (hex #rrggbb)
        'bgColorFb' => '#ffffff',
        // image manipulations library (imagick|gd|convert|auto|none, none - Does not check the image library at all.)
        'imgLib' => 'auto',
        // Fallback self image to thumbnail (nothing imgLib)
        'tmbFbSelf' => true,
        // Video to Image converters ['TYPE or MIME' => ['func' => function($file){ /* Converts $file to Image */ return true; }, 'maxlen' => (int)TransferLength]]
        'imgConverter' => array(),
        // Max length of transfer to image converter
        'tmbVideoConvLen' => 10000000,
        // Captre point seccond
        'tmbVideoConvSec' => 6,
        // Life time (hour) for thumbnail garbage collection ("0" means no GC)
        'tmbGcMaxlifeHour' => 0,
        // Percentage of garbage collection executed for thumbnail creation command ("1" means "1%")
        'tmbGcPercentage' => 1,
        // Resource path of fallback icon images defailt: php/resouces
        'resourcePath' => '',
        // Jpeg image saveing quality
        'jpgQuality' => 100,
        // Save as progressive JPEG on image editing
        'jpgProgressive' => true,
        // enable to get substitute image with command `dim`
        'substituteImg' => true,
        // on paste file -  if true - old file will be replaced with new one, if false new file get name - original_name-number.ext
        'copyOverwrite' => true,
        // if true - join new and old directories content on paste
        'copyJoin' => true,
        // on upload -  if true - old file will be replaced with new one, if false new file get name - original_name-number.ext
        'uploadOverwrite' => true,
        // mimetypes allowed to upload
        'uploadAllow' => array(),
        // mimetypes not allowed to upload
        'uploadDeny' => array(),
        // order to process uploadAllow and uploadDeny options
        'uploadOrder' => array('deny', 'allow'),
        // maximum upload file size. NOTE - this is size for every uploaded files
        'uploadMaxSize' => 0,
        // Maximum number of folders that can be created at one time. (0: unlimited)
        'uploadMaxMkdirs' => 0,
        // maximum number of chunked upload connection. `-1` to disable chunked upload
        'uploadMaxConn' => 3,
        // maximum get file size. NOTE - Maximum value is 50% of PHP memory_limit
        'getMaxSize' => 0,
        // files dates format
        'dateFormat' => 'j M Y H:i',
        // files time format
        'timeFormat' => 'H:i',
        // if true - every folder will be check for children folders, -1 - every folder will be check asynchronously, false -  all folders will be marked as having subfolders
        'checkSubfolders' => true, // true, false or -1
        // allow to copy from this volume to other ones?
        'copyFrom' => true,
        // allow to copy from other volumes to this one?
        'copyTo' => true,
        // cmd duplicate suffix format e.g. '_%s_' to without spaces
        'duplicateSuffix' => ' %s ',
        // unique name numbar format e.g. '(%d)' to (1), (2)...
        'uniqueNumFormat' => '%d',
        // list of commands disabled on this root
        'disabled' => array(),
        // enable file owner, group & mode info, `false` to inactivate "chmod" command.
        'statOwner' => false,
        // allow exec chmod of read-only files
        'allowChmodReadOnly' => false,
        // regexp or function name to validate new file name
        'acceptedName' => '/^[^\.].*/', // Notice: overwritten it in some volume drivers contractor
        // regexp or function name to validate new directory name
        'acceptedDirname' => '', // used `acceptedName` if empty value
        // function/class method to control files permissions
        'accessControl' => null,
        // some data required by access control
        'accessControlData' => null,
        // root stat that return without asking the system when mounted and not the current volume. Query to the system with false. array|false
        'rapidRootStat' => array(
            'read' => true,
            'write' => true,
            'locked' => false,
            'hidden' => false,
            'size' => 0,  // Unknown
            'ts' => 0,    // Unknown
            'dirs' => -1, // Check on demand for subdirectories
            'mime' => 'directory'
        ),
        // default permissions.
        'defaults' => array(
            'read' => true,
            'write' => true,
            'locked' => false,
            'hidden' => false
        ),
        // files attributes
        'attributes' => array(),
        // max allowed archive files size (0 - no limit)
        'maxArcFilesSize' => '2G',
        // Allowed archive's mimetypes to create. Leave empty for all available types.
        'archiveMimes' => array(),
        // Manual config for archivers. See example below. Leave empty for auto detect
        'archivers' => array(),
        // Use Archive function for remote volume
        'useRemoteArchive' => false,
        // plugin settings
        'plugin' => array(),
        // Is support parent directory time stamp update on add|remove|rename item
        // Default `null` is auto detection that is LocalFileSystem, FTP or Dropbox are `true`
        'syncChkAsTs' => null,
        // Long pooling sync checker function for syncChkAsTs is true
        // Calls with args (TARGET DIRCTORY PATH, STAND-BY(sec), OLD TIMESTAMP, VOLUME DRIVER INSTANCE, ELFINDER INSTANCE)
        // This function must return the following values. Changed: New Timestamp or Same: Old Timestamp or Error: false
        // Default `null` is try use elFinderVolumeLocalFileSystem::localFileSystemInotify() on LocalFileSystem driver
        // another driver use elFinder stat() checker
        'syncCheckFunc' => null,
        // Long polling sync stand-by time (sec)
        'plStandby' => 30,
        // Sleep time (sec) for elFinder stat() checker (syncChkAsTs is true)
        'tsPlSleep' => 10,
        // Sleep time (sec) for elFinder ls() checker (syncChkAsTs is false)
        'lsPlSleep' => 30,
        // Client side sync interval minimum (ms)
        // Default `null` is auto set to ('tsPlSleep' or 'lsPlSleep') * 1000
        // `0` to disable auto sync
        'syncMinMs' => null,
        // required to fix bug on macos
        // However, we recommend to use the Normalizer plugin instead this option
        'utf8fix' => false,
        //                           Ð¹                 Ñ‘              Ð™               Ð�              Ã˜         Ã…
        'utf8patterns' => array("\u0438\u0306", "\u0435\u0308", "\u0418\u0306", "\u0415\u0308", "\u00d8A", "\u030a"),
        'utf8replace' => array("\u0439", "\u0451", "\u0419", "\u0401", "\u00d8", "\u00c5"),
        // cache control HTTP headers for commands `file` and  `get`
        'cacheHeaders' => array(
            'Cache-Control: max-age=3600',
            'Expires:',
            'Pragma:'
        ),
        // Header to use to accelerate sending local files to clients (e.g. 'X-Sendfile', 'X-Accel-Redirect')
        'xsendfile' => '',
        // Root path to xsendfile target. Probably, this is required for 'X-Accel-Redirect' on Nginx.
        'xsendfilePath' => ''
    );

    /**
     * Defaults permissions
     *
     * @var array
     **/
    protected $defaults = array(
        'read' => true,
        'write' => true,
        'locked' => false,
        'hidden' => false
    );

    /**
     * Access control function/class
     *
     * @var mixed
     **/
    protected $attributes = array();

    /**
     * Access control function/class
     *
     * @var mixed
     **/
    protected $access = null;

    /**
     * Mime types allowed to upload
     *
     * @var array
     **/
    protected $uploadAllow = array();

    /**
     * Mime types denied to upload
     *
     * @var array
     **/
    protected $uploadDeny = array();

    /**
     * Order to validate uploadAllow and uploadDeny
     *
     * @var array
     **/
    protected $uploadOrder = array();

    /**
     * Maximum allowed upload file size.
     * Set as number or string with unit - "10M", "500K", "1G"
     *
     * @var int|string
     **/
    protected $uploadMaxSize = 0;

    /**
     * Run time setting of overwrite items on upload
     *
     * @var string
     */
    protected $uploadOverwrite = true;

    /**
     * Maximum allowed get file size.
     * Set as number or string with unit - "10M", "500K", "1G"
     *
     * @var int|string
     **/
    protected $getMaxSize = -1;

    /**
     * Mimetype detect method
     *
     * @var string
     **/
    protected $mimeDetect = 'auto';

    /**
     * Flag - mimetypes from externail file was loaded
     *
     * @var bool
     **/
    private static $mimetypesLoaded = false;

    /**
     * Finfo resource for mimeDetect == 'finfo'
     *
     * @var resource
     **/
    protected $finfo = null;

    /**
     * List of disabled client's commands
     *
     * @var array
     **/
    protected $disabled = array();

    /**
     * overwrite extensions/mimetypes to mime.types
     *
     * @var array
     **/
    protected static $mimetypes = array(
        // applications
        'exe' => 'application/x-executable',
        'jar' => 'application/x-jar',
        // archives
        'gz' => 'application/x-gzip',
        'tgz' => 'application/x-gzip',
        'tbz' => 'application/x-bzip2',
        'rar' => 'application/x-rar',
        // texts
        'php' => 'text/x-php',
        'js' => 'text/javascript',
        'rtfd' => 'application/rtfd',
        'py' => 'text/x-python',
        'rb' => 'text/x-ruby',
        'sh' => 'text/x-shellscript',
        'pl' => 'text/x-perl',
        'xml' => 'text/xml',
        'c' => 'text/x-csrc',
        'h' => 'text/x-chdr',
        'cpp' => 'text/x-c++src',
        'hh' => 'text/x-c++hdr',
        'md' => 'text/x-markdown',
        'markdown' => 'text/x-markdown',
        'yml' => 'text/x-yaml',
        // images
        'bmp' => 'image/x-ms-bmp',
        'tga' => 'image/x-targa',
        'xbm' => 'image/xbm',
        'pxm' => 'image/pxm',
        //audio
        'wav' => 'audio/wav',
        // video
        'dv' => 'video/x-dv',
        'wm' => 'video/x-ms-wmv',
        'ogm' => 'video/ogg',
        'm2ts' => 'video/MP2T',
        'mts' => 'video/MP2T',
        'ts' => 'video/MP2T',
        'm3u8' => 'application/x-mpegURL',
        'mpd' => 'application/dash+xml'
    );

    /**
     * Directory separator - required by client
     *
     * @var string
     **/
    protected $separator = DIRECTORY_SEPARATOR;

    /**
     * Directory separator for decode/encode hash
     *
     * @var string
     **/
    protected $separatorForHash = '';

    /**
     * System Root path (Unix like: '/', Windows: '\', 'C:\' or 'D:\'...)
     *
     * @var string
     **/
    protected $systemRoot = DIRECTORY_SEPARATOR;

    /**
     * Mimetypes allowed to display
     *
     * @var array
     **/
    protected $onlyMimes = array();

    /**
     * Store files moved or overwrited files info
     *
     * @var array
     **/
    protected $removed = array();

    /**
     * Store files added files info
     *
     * @var array
     **/
    protected $added = array();

    /**
     * Cache storage
     *
     * @var array
     **/
    protected $cache = array();

    /**
     * Cache by folders
     *
     * @var array
     **/
    protected $dirsCache = array();

    /**
     * You should use `$this->sessionCache['subdirs']` instead
     *
     * @var array
     * @deprecated
     */
    protected $subdirsCache = array();

    /**
     * This volume session cache
     *
     * @var array
     */
    protected $sessionCache;

    /**
     * Session caching item list
     *
     * @var array
     */
    protected $sessionCaching = array('rootstat' => true, 'subdirs' => true);

    /**
     * elFinder session wrapper object
     *
     * @var elFinderSessionInterface
     */
    protected $session;

    /**
     * Search start time
     *
     * @var int
     */
    protected $searchStart;

    /**
     * Current query word on doSearch
     *
     * @var array
     **/
    protected $doSearchCurrentQuery = array();

    /**
     * Is root modified (for clear root stat cache)
     *
     * @var bool
     */
    protected $rootModified = false;

    /**
     * Is disable of command `url`
     *
     * @var string
     */
    protected $disabledGetUrl = false;

    /**
     * Accepted filename validator
     *
     * @var string | callable
     */
    protected $nameValidator;

    /**
     * Accepted dirname validator
     *
     * @var string | callable
     */
    protected $dirnameValidator;

    /**
     * This request require online state
     *
     * @var boolean
     */
    protected $needOnline;

    /*********************************************************************/
    /*                            INITIALIZATION                         */
    /*********************************************************************/

    /**
     * Sets the need online.
     *
     * @param  boolean  $state  The state
     */
    public function setNeedOnline($state = null)
    {
        if ($state !== null) {
            $this->needOnline = (bool)$state;
            return;
        }

        $need = false;
        $arg = $this->ARGS;
        $id = $this->id;

        $target = !empty($arg['target'])? $arg['target'] : (!empty($arg['dst'])? $arg['dst'] : '');
        $targets = !empty($arg['targets'])? $arg['targets'] : array();
        if (!is_array($targets)) {
            $targets = array($targets);
        }

        if ($target && strpos($target, $id) === 0) {
            $need = true;
        } else if ($targets) {
            foreach($targets as $t) {
                if ($t && strpos($t, $id) === 0) {
                    $need = true;
                    break;
                }
            }
        }

        $this->needOnline = $need;
    }

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function init()
    {
        return true;
    }

    /**
     * Configure after successfull mount.
     * By default set thumbnails path and image manipulation library.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        // set thumbnails path
        $path = $this->options['tmbPath'];
        if ($path) {
            if (!file_exists($path)) {
                if (mkdir($path)) {
                    chmod($path, $this->options['tmbPathMode']);
                } else {
                    $path = '';
                }
            }

            if (is_dir($path) && is_readable($path)) {
                $this->tmbPath = $path;
                $this->tmbPathWritable = is_writable($path);
            }
        }
        // set resouce path
        if (!is_dir($this->options['resourcePath'])) {
            $this->options['resourcePath'] = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'resources';
        }

        // set image manipulation library
        $type = preg_match('/^(imagick|gd|convert|auto|none)$/i', $this->options['imgLib'])
            ? strtolower($this->options['imgLib'])
            : 'auto';

        if ($type === 'none') {
            $this->imgLib = '';
        } else {
            if (($type === 'imagick' || $type === 'auto') && extension_loaded('imagick')) {
                $this->imgLib = 'imagick';
            } else if (($type === 'gd' || $type === 'auto') && function_exists('gd_info')) {
                $this->imgLib = 'gd';
            } else {
                $convertCache = 'imgLibConvert';
                if (($convertCmd = $this->session->get($convertCache, false)) !== false) {
                    $this->imgLib = $convertCmd;
                } else {
                    $this->imgLib = ($this->procExec(ELFINDER_CONVERT_PATH . ' -version') === 0) ? 'convert' : '';
                    $this->session->set($convertCache, $this->imgLib);
                }
            }
            if ($type !== 'auto' && $this->imgLib === '') {
                // fallback
                $this->imgLib = extension_loaded('imagick') ? 'imagick' : (function_exists('gd_info') ? 'gd' : '');
            }
        }

        // check video to img converter
        if (!empty($this->options['imgConverter']) && is_array($this->options['imgConverter'])) {
            foreach ($this->options['imgConverter'] as $_type => $_converter) {
                if (isset($_converter['func'])) {
                    $this->imgConverter[strtolower($_type)] = $_converter;
                }
            }
        }
        if (!isset($this->imgConverter['video'])) {
            $videoLibCache = 'videoLib';
            if (($videoLibCmd = $this->session->get($videoLibCache, false)) === false) {
                $videoLibCmd = ($this->procExec(ELFINDER_FFMPEG_PATH . ' -version') === 0) ? 'ffmpeg' : '';
                $this->session->set($videoLibCache, $videoLibCmd);
            }
            if ($videoLibCmd) {
                $this->imgConverter['video'] = array(
                    'func' => array($this, $videoLibCmd . 'ToImg'),
                    'maxlen' => $this->options['tmbVideoConvLen']
                );
            }
        }

        // check onetimeUrl
        if (strtolower($this->options['onetimeUrl']) === 'auto') {
            $this->options['onetimeUrl'] = elFinder::getStaticVar('commonTempPath')? true : false;
        }

        // check archivers
        if (empty($this->archivers['create'])) {
            $this->disabled[] = 'archive';
        }
        if (empty($this->archivers['extract'])) {
            $this->disabled[] = 'extract';
        }
        $_arc = $this->getArchivers();
        if (empty($_arc['create'])) {
            $this->disabled[] = 'zipdl';
        }

        if ($this->options['maxArcFilesSize']) {
            $this->options['maxArcFilesSize'] = elFinder::getIniBytes('', $this->options['maxArcFilesSize']);
        }
        self::$maxArcFilesSize = $this->options['maxArcFilesSize'];

        // check 'statOwner' for command `chmod`
        if (empty($this->options['statOwner'])) {
            $this->disabled[] = 'chmod';
        }

        // check 'mimeMap'
        if (!is_array($this->options['mimeMap'])) {
            $this->options['mimeMap'] = array();
        }
        if (is_array($this->options['staticMineMap']) && $this->options['staticMineMap']) {
            $this->options['mimeMap'] = array_merge($this->options['mimeMap'], $this->options['staticMineMap']);
        }
        if (is_array($this->options['additionalMimeMap']) && $this->options['additionalMimeMap']) {
            $this->options['mimeMap'] = array_merge($this->options['mimeMap'], $this->options['additionalMimeMap']);
        }

        // check 'url' in disabled commands
        if (in_array('url', $this->disabled)) {
            $this->disabledGetUrl = true;
        }

        // set run time setting uploadOverwrite
        $this->uploadOverwrite = $this->options['uploadOverwrite'];
    }

    /**
     * @deprecated
     */
    protected function sessionRestart()
    {
        $this->sessionCache = $this->session->start()->get($this->id, array());
        return true;
    }

    /*********************************************************************/
    /*                              PUBLIC API                           */
    /*********************************************************************/

    /**
     * Return driver id. Used as a part of volume id.
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function driverId()
    {
        return $this->driverId;
    }

    /**
     * Return volume id
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function id()
    {
        return $this->id;
    }

    /**
     * Assign elFinder session wrapper object
     *
     * @param  $session  elFinderSessionInterface
     */
    public function setSession($session)
    {
        $this->session = $session;
    }

    /**
     * Get elFinder sesson wrapper object
     *
     * @return object  The session object
     */
    public function getSession()
    {
        return $this->session;
    }

    /**
     * Save session cache data
     * Calls this function before umount this volume on elFinder::exec()
     *
     * @return void
     */
    public function saveSessionCache()
    {
        $this->session->set($this->id, $this->sessionCache);
    }

    /**
     * Return debug info for client
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function debug()
    {
        return array(
            'id' => $this->id(),
            'name' => strtolower(substr(get_class($this), strlen('elfinderdriver'))),
            'mimeDetect' => $this->mimeDetect,
            'imgLib' => $this->imgLib
        );
    }

    /**
     * chmod a file or folder
     *
     * @param  string $hash file or folder hash to chmod
     * @param  string $mode octal string representing new permissions
     *
     * @return array|false
     * @author David Bartle
     **/
    public function chmod($hash, $mode)
    {
        if ($this->commandDisabled('chmod')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$this->options['allowChmodReadOnly']) {
            if (!$this->attr($this->decode($hash), 'write', null, ($file['mime'] === 'directory'))) {
                return $this->setError(elFinder::ERROR_PERM_DENIED, $file['name']);
            }
        }

        $path = $this->decode($hash);
        $write = $file['write'];

        if ($this->convEncOut(!$this->_chmod($this->convEncIn($path), $mode))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED, $file['name']);
        }

        $this->clearstatcache();
        if ($path == $this->root) {
            $this->rootModified = true;
        }

        if ($file = $this->stat($path)) {
            $files = array($file);
            if ($file['mime'] === 'directory' && $write !== $file['write']) {
                foreach ($this->getScandir($path) as $stat) {
                    if ($this->mimeAccepted($stat['mime'])) {
                        $files[] = $stat;
                    }
                }
            }
            return $files;
        } else {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }
    }

    /**
     * stat a file or folder for elFinder cmd exec
     *
     * @param  string $hash file or folder hash to chmod
     *
     * @return array
     * @author Naoki Sawada
     **/
    public function fstat($hash)
    {
        $path = $this->decode($hash);
        return $this->stat($path);
    }

    /**
     * Clear PHP stat cache & all of inner stat caches
     */
    public function clearstatcache()
    {
        clearstatcache();
        $this->clearcache();
    }

    /**
     * Clear inner stat caches for target hash
     *
     * @param string $hash
     */
    public function clearcaches($hash = null)
    {
        if ($hash === null) {
            $this->clearcache();
        } else {
            $path = $this->decode($hash);
            unset($this->cache[$path], $this->dirsCache[$path]);
        }
    }

    /**
     * "Mount" volume.
     * Return true if volume available for read or write,
     * false - otherwise
     *
     * @param array $opts
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    public function mount(array $opts)
    {
        $this->options = array_merge($this->options, $opts);

        if (!isset($this->options['path']) || $this->options['path'] === '') {
            return $this->setError('Path undefined.');
        }

        if (!$this->session) {
            return $this->setError('Session wrapper dose not set. Need to `$volume->setSession(elFinderSessionInterface);` before mount.');
        }
        if (!($this->session instanceof elFinderSessionInterface)) {
            return $this->setError('Session wrapper instance must be "elFinderSessionInterface".');
        }

        // set driverId
        if (!empty($this->options['driverId'])) {
            $this->driverId = $this->options['driverId'];
        }

        $this->id = $this->driverId . (!empty($this->options['id']) ? $this->options['id'] : elFinder::$volumesCnt++) . '_';
        $this->root = $this->normpathCE($this->options['path']);
        $this->separator = isset($this->options['separator']) ? $this->options['separator'] : DIRECTORY_SEPARATOR;
        if (!empty($this->options['winHashFix'])) {
            $this->separatorForHash = ($this->separator !== '/') ? '/' : '';
        }
        $this->systemRoot = isset($this->options['systemRoot']) ? $this->options['systemRoot'] : $this->separator;

        // set ARGS
        $this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;

        $argInit = !empty($this->ARGS['init']);

        // set $this->needOnline
        if (!is_bool($this->needOnline)) {
            $this->setNeedOnline();
        }

        // session cache
        if ($argInit) {
            $this->session->set($this->id, array());
        }
        $this->sessionCache = $this->session->get($this->id, array());

        // default file attribute
        $this->defaults = array(
            'read' => isset($this->options['defaults']['read']) ? !!$this->options['defaults']['read'] : true,
            'write' => isset($this->options['defaults']['write']) ? !!$this->options['defaults']['write'] : true,
            'locked' => isset($this->options['defaults']['locked']) ? !!$this->options['defaults']['locked'] : false,
            'hidden' => isset($this->options['defaults']['hidden']) ? !!$this->options['defaults']['hidden'] : false
        );

        // root attributes
        $this->attributes[] = array(
            'pattern' => '~^' . preg_quote($this->separator) . '$~',
            'locked' => true,
            'hidden' => false
        );
        // set files attributes
        if (!empty($this->options['attributes']) && is_array($this->options['attributes'])) {

            foreach ($this->options['attributes'] as $a) {
                // attributes must contain pattern and at least one rule
                if (!empty($a['pattern']) || (is_array($a) && count($a) > 1)) {
                    $this->attributes[] = $a;
                }
            }
        }

        if (!empty($this->options['accessControl']) && is_callable($this->options['accessControl'])) {
            $this->access = $this->options['accessControl'];
        }

        $this->today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
        $this->yesterday = $this->today - 86400;

        if (!$this->init()) {
            return false;
        }

        // set server encoding
        if (!empty($this->options['encoding']) && strtoupper($this->options['encoding']) !== 'UTF-8') {
            $this->encoding = $this->options['encoding'];
        } else {
            $this->encoding = null;
        }

        // check some options is arrays
        $this->uploadAllow = isset($this->options['uploadAllow']) && is_array($this->options['uploadAllow'])
            ? $this->options['uploadAllow']
            : array();

        $this->uploadDeny = isset($this->options['uploadDeny']) && is_array($this->options['uploadDeny'])
            ? $this->options['uploadDeny']
            : array();

        $this->options['uiCmdMap'] = (isset($this->options['uiCmdMap']) && is_array($this->options['uiCmdMap']))
            ? $this->options['uiCmdMap']
            : array();

        if (is_string($this->options['uploadOrder'])) { // telephat_mode on, compatibility with 1.x
            $parts = explode(',', isset($this->options['uploadOrder']) ? $this->options['uploadOrder'] : 'deny,allow');
            $this->uploadOrder = array(trim($parts[0]), trim($parts[1]));
        } else { // telephat_mode off
            $this->uploadOrder = !empty($this->options['uploadOrder']) ? $this->options['uploadOrder'] : array('deny', 'allow');
        }

        if (!empty($this->options['uploadMaxSize'])) {
            $this->uploadMaxSize = elFinder::getIniBytes('', $this->options['uploadMaxSize']);
        }
        // Set maximum to PHP_INT_MAX
        if (!defined('PHP_INT_MAX')) {
            define('PHP_INT_MAX', 2147483647);
        }
        if ($this->uploadMaxSize < 1 || $this->uploadMaxSize > PHP_INT_MAX) {
            $this->uploadMaxSize = PHP_INT_MAX;
        }

        // Set to get maximum size to 50% of memory_limit
        $memLimit = elFinder::getIniBytes('memory_limit') / 2;
        if ($memLimit > 0) {
            $this->getMaxSize = empty($this->options['getMaxSize']) ? $memLimit : min($memLimit, elFinder::getIniBytes('', $this->options['getMaxSize']));
        } else {
            $this->getMaxSize = -1;
        }

        $this->disabled = isset($this->options['disabled']) && is_array($this->options['disabled'])
            ? array_values(array_diff($this->options['disabled'], array('open'))) // 'open' is required
            : array();

        $this->cryptLib = $this->options['cryptLib'];
        $this->mimeDetect = $this->options['mimeDetect'];

        // find available mimetype detect method
        $regexp = '/text\/x\-(php|c\+\+)/';
        $auto_types = array();

        if (class_exists('finfo', false)) {
            $tmpFileInfo = explode(';', finfo_file(finfo_open(FILEINFO_MIME), __FILE__));
             if ($tmpFileInfo && preg_match($regexp, array_shift($tmpFileInfo))) {
                $auto_types[] = 'finfo';
            }
        }
        
        if (function_exists('mime_content_type')) {
            $_mimetypes = explode(';', mime_content_type(__FILE__));
            if (preg_match($regexp, array_shift($_mimetypes))) {
                $auto_types[] = 'mime_content_type';
            }
        }
            
        $auto_types[] = 'internal';

        $type = strtolower($this->options['mimeDetect']);
        if (!in_array($type, $auto_types)) {
            $type = 'auto';
        }

        if ($type == 'auto') {
            $type = array_shift($auto_types);
        }

        $this->mimeDetect = $type;

        if ($this->mimeDetect == 'finfo') {
            $this->finfo = finfo_open(FILEINFO_MIME);
        } else if ($this->mimeDetect == 'internal' && !elFinderVolumeDriver::$mimetypesLoaded) {
            // load mimes from external file for mimeDetect == 'internal'
            // based on Alexey Sukhotin idea and patch: http://elrte.org/redmine/issues/163
            // file must be in file directory or in parent one
            elFinderVolumeDriver::loadMimeTypes(!empty($this->options['mimefile']) ? $this->options['mimefile'] : '');
        }
        $this->rootName = empty($this->options['alias']) ? $this->basenameCE($this->root) : $this->options['alias'];

        // This get's triggered if $this->root == '/' and alias is empty.
        // Maybe modify _basename instead?
        if ($this->rootName === '') $this->rootName = $this->separator;

        $this->_checkArchivers();

        $root = $this->stat($this->root);

        if (!$root) {
            return $this->setError('Root folder does not exist.');
        }
        if (!$root['read'] && !$root['write']) {
            return $this->setError('Root folder has not read and write permissions.');
        }

        if ($root['read']) {
            if ($argInit) {
                // check startPath - path to open by default instead of root
                $startPath = $this->options['startPath'] ? $this->normpathCE($this->options['startPath']) : '';
                if ($startPath) {
                    $start = $this->stat($startPath);
                    if (!empty($start)
                        && $start['mime'] == 'directory'
                        && $start['read']
                        && empty($start['hidden'])
                        && $this->inpathCE($startPath, $this->root)) {
                        $this->startPath = $startPath;
                        if (substr($this->startPath, -1, 1) == $this->options['separator']) {
                            $this->startPath = substr($this->startPath, 0, -1);
                        }
                    }
                }
            }
        } else {
            $this->options['URL'] = '';
            $this->options['tmbURL'] = '';
            $this->options['tmbPath'] = '';
            // read only volume
            array_unshift($this->attributes, array(
                'pattern' => '/.*/',
                'read' => false
            ));
        }
        $this->treeDeep = $this->options['treeDeep'] > 0 ? (int)$this->options['treeDeep'] : 1;
        $this->tmbSize = $this->options['tmbSize'] > 0 ? (int)$this->options['tmbSize'] : 48;
        $this->URL = $this->options['URL'];
        if ($this->URL && preg_match("|[^/?&=]$|", $this->URL)) {
            $this->URL .= '/';
        }

        $dirUrlOwn = strtolower($this->options['dirUrlOwn']);
        if ($dirUrlOwn === 'auto') {
            $this->options['dirUrlOwn'] = $this->URL ? false : true;
        } else if ($dirUrlOwn === 'hide') {
            $this->options['dirUrlOwn'] = 'hide';
        } else {
            $this->options['dirUrlOwn'] = (bool)$this->options['dirUrlOwn'];
        }

        $this->tmbURL = !empty($this->options['tmbURL']) ? $this->options['tmbURL'] : '';
        if ($this->tmbURL && $this->tmbURL !== 'self' && preg_match("|[^/?&=]$|", $this->tmbURL)) {
            $this->tmbURL .= '/';
        }

        $this->nameValidator = !empty($this->options['acceptedName']) && (is_string($this->options['acceptedName']) || is_callable($this->options['acceptedName']))
            ? $this->options['acceptedName']
            : '';

        $this->dirnameValidator = !empty($this->options['acceptedDirname']) && (is_callable($this->options['acceptedDirname']) || (is_string($this->options['acceptedDirname']) && preg_match($this->options['acceptedDirname'], '') !== false))
            ? $this->options['acceptedDirname']
            : $this->nameValidator;

        // enabling archivers['create'] with options['useRemoteArchive']
        if ($this->options['useRemoteArchive'] && empty($this->archivers['create']) && $this->getTempPath()) {
            $_archivers = $this->getArchivers();
            $this->archivers['create'] = $_archivers['create'];
        }

        // manual control archive types to create
        if (!empty($this->options['archiveMimes']) && is_array($this->options['archiveMimes'])) {
            foreach ($this->archivers['create'] as $mime => $v) {
                if (!in_array($mime, $this->options['archiveMimes'])) {
                    unset($this->archivers['create'][$mime]);
                }
            }
        }

        // manualy add archivers
        if (!empty($this->options['archivers']['create']) && is_array($this->options['archivers']['create'])) {
            foreach ($this->options['archivers']['create'] as $mime => $conf) {
                if (strpos($mime, 'application/') === 0
                    && !empty($conf['cmd'])
                    && isset($conf['argc'])
                    && !empty($conf['ext'])
                    && !isset($this->archivers['create'][$mime])) {
                    $this->archivers['create'][$mime] = $conf;
                }
            }
        }

        if (!empty($this->options['archivers']['extract']) && is_array($this->options['archivers']['extract'])) {
            foreach ($this->options['archivers']['extract'] as $mime => $conf) {
                if (strpos($mime, 'application/') === 0
                    && !empty($conf['cmd'])
                    && isset($conf['argc'])
                    && !empty($conf['ext'])
                    && !isset($this->archivers['extract'][$mime])) {
                    $this->archivers['extract'][$mime] = $conf;
                }
            }
        }

        if (!empty($this->options['noSessionCache']) && is_array($this->options['noSessionCache'])) {
            foreach ($this->options['noSessionCache'] as $_key) {
                $this->sessionCaching[$_key] = false;
                unset($this->sessionCache[$_key]);
            }
        }
        if ($this->sessionCaching['subdirs']) {
            if (!isset($this->sessionCache['subdirs'])) {
                $this->sessionCache['subdirs'] = array();
            }
        }


        $this->configure();

        // Normalize disabled (array_merge`for type array of JSON)
        $this->disabled = array_values(array_unique($this->disabled));

        // fix sync interval
        if ($this->options['syncMinMs'] !== 0) {
            $this->options['syncMinMs'] = max($this->options[$this->options['syncChkAsTs'] ? 'tsPlSleep' : 'lsPlSleep'] * 1000, intval($this->options['syncMinMs']));
        }

        // ` copyJoin` is required for the trash function
        if ($this->options['trashHash'] && empty($this->options['copyJoin'])) {
            $this->options['trashHash'] = '';
        }

        // set tmpLinkPath
        if (elFinder::$tmpLinkPath && !$this->options['tmpLinkPath']) {
            if (is_writeable(elFinder::$tmpLinkPath)) {
                $this->options['tmpLinkPath'] = elFinder::$tmpLinkPath;
            } else {
                elFinder::$tmpLinkPath = '';
            }
        }
        if ($this->options['tmpLinkPath'] && is_writable($this->options['tmpLinkPath'])) {
            $this->tmpLinkPath = realpath($this->options['tmpLinkPath']);
        } else if (!$this->tmpLinkPath && $this->tmbURL && $this->tmbPath) {
            $this->tmpLinkPath = $this->tmbPath;
            $this->options['tmpLinkUrl'] = $this->tmbURL;
        } else if (!$this->options['URL'] && is_writable('../files/.tmb')) {
            $this->tmpLinkPath = realpath('../files/.tmb');
            $this->options['tmpLinkUrl'] = '';
            if (!elFinder::$tmpLinkPath) {
                elFinder::$tmpLinkPath = $this->tmpLinkPath;
                elFinder::$tmpLinkUrl = '';
            }
        }

        // set tmpLinkUrl
        if (elFinder::$tmpLinkUrl && !$this->options['tmpLinkUrl']) {
            $this->options['tmpLinkUrl'] = elFinder::$tmpLinkUrl;
        }
        if ($this->options['tmpLinkUrl']) {
            $this->tmpLinkUrl = $this->options['tmpLinkUrl'];
        }
        if ($this->tmpLinkPath && !$this->tmpLinkUrl) {
            $cur = realpath('./');
            $i = 0;
            while ($cur !== $this->systemRoot && strpos($this->tmpLinkPath, $cur) !== 0) {
                $i++;
                $cur = dirname($cur);
            }
            list($req) = explode('?', $_SERVER['REQUEST_URI']);
            $reqs = explode('/', dirname($req));
            $uri = join('/', array_slice($reqs, 0, count($reqs) - 1)) . substr($this->tmpLinkPath, strlen($cur));
            $https = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off');
            $this->tmpLinkUrl = ($https ? 'https://' : 'http://')
                . $_SERVER['SERVER_NAME'] // host
                . (((!$https && $_SERVER['SERVER_PORT'] == 80) || ($https && $_SERVER['SERVER_PORT'] == 443)) ? '' : (':' . $_SERVER['SERVER_PORT']))  // port
                . $uri;
            if (!elFinder::$tmpLinkUrl) {
                elFinder::$tmpLinkUrl = $this->tmpLinkUrl;
            }
        }

        // remove last '/'
        if ($this->tmpLinkPath) {
            $this->tmpLinkPath = rtrim($this->tmpLinkPath, '/');
        }
        if ($this->tmpLinkUrl) {
            $this->tmpLinkUrl = rtrim($this->tmpLinkUrl, '/');
        }

        // to update options cache
        if (isset($this->sessionCache['rootstat'])) {
            unset($this->sessionCache['rootstat'][$this->getRootstatCachekey()]);
        }
        $this->updateCache($this->root, $root);

        return $this->mounted = true;
    }

    /**
     * Some "unmount" stuffs - may be required by virtual fs
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Remove session cache of this volume
     */
    public function clearSessionCache()
    {
        $this->sessionCache = array();
    }

    /**
     * Return error message from last failed action
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function error()
    {
        return $this->error;
    }

    /**
     * Return is uploadable that given file name
     *
     * @param  string $name file name
     * @param  bool   $allowUnknown
     *
     * @return bool
     * @author Naoki Sawada
     **/
    public function isUploadableByName($name, $allowUnknown = false)
    {
        $mimeByName = $this->mimetype($name, true);
        return (($allowUnknown && $mimeByName === 'unknown') || $this->allowPutMime($mimeByName));
    }

    /**
     * Return Extention/MIME Table (elFinderVolumeDriver::$mimetypes)
     *
     * @return array
     * @author Naoki Sawada
     */
    public function getMimeTable()
    {
        // load mime.types
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::loadMimeTypes();
        }
        return elFinderVolumeDriver::$mimetypes;
    }

    /**
     * Return file extention detected by MIME type
     *
     * @param  string $mime   MIME type
     * @param  string $suffix Additional suffix
     *
     * @return string
     * @author Naoki Sawada
     */
    public function getExtentionByMime($mime, $suffix = '')
    {
        static $extTable = null;

        if (is_null($extTable)) {
            $extTable = array_flip(array_unique($this->getMimeTable()));
            foreach ($this->options['mimeMap'] as $pair => $_mime) {
                list($ext) = explode(':', $pair);
                if ($ext !== '*' && !isset($extTable[$_mime])) {
                    $extTable[$_mime] = $ext;
                }
            }
        }

        if ($mime && isset($extTable[$mime])) {
            return $suffix ? ($extTable[$mime] . $suffix) : $extTable[$mime];
        }
        return '';
    }

    /**
     * Set mimetypes allowed to display to client
     *
     * @param  array $mimes
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function setMimesFilter($mimes)
    {
        if (is_array($mimes)) {
            $this->onlyMimes = $mimes;
        }
    }

    /**
     * Return root folder hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function root()
    {
        return $this->encode($this->root);
    }

    /**
     * Return root path
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function getRootPath()
    {
        return $this->root;
    }

    /**
     * Return target path hash
     *
     * @param  string $path
     * @param  string $name
     *
     * @author Naoki Sawada
     * @return string
     */
    public function getHash($path, $name = '')
    {
        if ($name !== '') {
            $path = $this->joinPathCE($path, $name);
        }
        return $this->encode($path);
    }

    /**
     * Return decoded path of target hash
     * This method do not check the stat of target
     * Use method `realpath()` to do check of the stat of target
     *
     * @param  string $hash
     *
     * @author Naoki Sawada
     * @return string
     */
    public function getPath($hash)
    {
        return $this->decode($hash);
    }

    /**
     * Return root or startPath hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function defaultPath()
    {
        return $this->encode($this->startPath ? $this->startPath : $this->root);
    }

    /**
     * Return volume options required by client:
     *
     * @param $hash
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    public function options($hash)
    {
        $create = $createext = array();
        if (isset($this->archivers['create']) && is_array($this->archivers['create'])) {
            foreach ($this->archivers['create'] as $m => $v) {
                $create[] = $m;
                $createext[$m] = $v['ext'];
            }
        }
        $opts = array(
            'path' => $hash ? $this->path($hash) : '',
            'url' => $this->URL,
            'tmbUrl' => (!$this->imgLib && $this->options['tmbFbSelf']) ? 'self' : $this->tmbURL,
            'disabled' => $this->disabled,
            'separator' => $this->separator,
            'copyOverwrite' => intval($this->options['copyOverwrite']),
            'uploadOverwrite' => intval($this->options['uploadOverwrite']),
            'uploadMaxSize' => intval($this->uploadMaxSize),
            'uploadMaxConn' => intval($this->options['uploadMaxConn']),
            'uploadMime' => array(
                'firstOrder' => isset($this->uploadOrder[0]) ? $this->uploadOrder[0] : 'deny',
                'allow' => $this->uploadAllow,
                'deny' => $this->uploadDeny
            ),
            'dispInlineRegex' => $this->options['dispInlineRegex'],
            'jpgQuality' => intval($this->options['jpgQuality']),
            'archivers' => array(
                'create' => $create,
                'extract' => isset($this->archivers['extract']) && is_array($this->archivers['extract']) ? array_keys($this->archivers['extract']) : array(),
                'createext' => $createext
            ),
            'uiCmdMap' => (isset($this->options['uiCmdMap']) && is_array($this->options['uiCmdMap'])) ? $this->options['uiCmdMap'] : array(),
            'syncChkAsTs' => intval($this->options['syncChkAsTs']),
            'syncMinMs' => intval($this->options['syncMinMs']),
            'i18nFolderName' => intval($this->options['i18nFolderName']),
            'tmbCrop' => intval($this->options['tmbCrop']),
            'tmbReqCustomData' => (bool)$this->options['tmbReqCustomData'],
            'substituteImg' => (bool)$this->options['substituteImg'],
            'onetimeUrl' => (bool)$this->options['onetimeUrl'],
        );
        if (!empty($this->options['trashHash'])) {
            $opts['trashHash'] = $this->options['trashHash'];
        }
        if ($hash === null) {
            // call from getRootStatExtra()
            if (!empty($this->options['icon'])) {
                $opts['icon'] = $this->options['icon'];
            }
            if (!empty($this->options['rootCssClass'])) {
                $opts['csscls'] = $this->options['rootCssClass'];
            }
            if (isset($this->options['netkey'])) {
                $opts['netkey'] = $this->options['netkey'];
            }
        }
        return $opts;
    }

    /**
     * Get option value of this volume
     *
     * @param string $name target option name
     *
     * @return NULL|mixed   target option value
     * @author Naoki Sawada
     */
    public function getOption($name)
    {
        return isset($this->options[$name]) ? $this->options[$name] : null;
    }

    /**
     * Get plugin values of this options
     *
     * @param string $name Plugin name
     *
     * @return NULL|array   Plugin values
     * @author Naoki Sawada
     */
    public function getOptionsPlugin($name = '')
    {
        if ($name) {
            return isset($this->options['plugin'][$name]) ? $this->options['plugin'][$name] : array();
        } else {
            return $this->options['plugin'];
        }
    }

    /**
     * Return true if command disabled in options
     *
     * @param  string $cmd command name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function commandDisabled($cmd)
    {
        return in_array($cmd, $this->disabled);
    }

    /**
     * Return true if mime is required mimes list
     *
     * @param  string    $mime  mime type to check
     * @param  array     $mimes allowed mime types list or not set to use client mimes list
     * @param  bool|null $empty what to return on empty list
     *
     * @return bool|null
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    public function mimeAccepted($mime, $mimes = null, $empty = true)
    {
        $mimes = is_array($mimes) ? $mimes : $this->onlyMimes;
        if (empty($mimes)) {
            return $empty;
        }
        return $mime == 'directory'
            || in_array('all', $mimes)
            || in_array('All', $mimes)
            || in_array($mime, $mimes)
            || in_array(substr($mime, 0, strpos($mime, '/')), $mimes);
    }

    /**
     * Return true if voume is readable.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function isReadable()
    {
        $stat = $this->stat($this->root);
        return $stat['read'];
    }

    /**
     * Return true if copy from this volume allowed
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function copyFromAllowed()
    {
        return !!$this->options['copyFrom'];
    }

    /**
     * Return file path related to root with convert encoging
     *
     * @param  string $hash file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function path($hash)
    {
        return $this->convEncOut($this->_path($this->convEncIn($this->decode($hash))));
    }

    /**
     * Return file real path if file exists
     *
     * @param  string $hash file hash
     *
     * @return string | false
     * @author Dmitry (dio) Levashov
     **/
    public function realpath($hash)
    {
        $path = $this->decode($hash);
        return $this->stat($path) ? $path : false;
    }

    /**
     * Return list of moved/overwrited files
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function removed()
    {
        if ($this->removed) {
            $unsetSubdir = isset($this->sessionCache['subdirs']) ? true : false;
            foreach ($this->removed as $item) {
                if ($item['mime'] === 'directory') {
                    $path = $this->decode($item['hash']);
                    if ($unsetSubdir) {
                        unset($this->sessionCache['subdirs'][$path]);
                    }
                    if ($item['phash'] !== '') {
                        $parent = $this->decode($item['phash']);
                        unset($this->cache[$parent]);
                        if ($this->root === $parent) {
                            $this->sessionCache['rootstat'] = array();
                        }
                        if ($unsetSubdir) {
                            unset($this->sessionCache['subdirs'][$parent]);
                        }
                    }
                }
            }
            $this->removed = array_values($this->removed);
        }
        return $this->removed;
    }

    /**
     * Return list of added files
     *
     * @deprecated
     * @return array
     * @author Naoki Sawada
     **/
    public function added()
    {
        return $this->added;
    }

    /**
     * Clean removed files list
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function resetRemoved()
    {
        $this->resetResultStat();
    }

    /**
     * Clean added/removed files list
     *
     * @return void
     **/
    public function resetResultStat()
    {
        $this->removed = array();
        $this->added = array();
    }

    /**
     * Return file/dir hash or first founded child hash with required attr == $val
     *
     * @param  string $hash file hash
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    public function closest($hash, $attr, $val)
    {
        return ($path = $this->closestByAttr($this->decode($hash), $attr, $val)) ? $this->encode($path) : false;
    }

    /**
     * Return file info or false on error
     *
     * @param  string $hash file hash
     *
     * @return array|false
     * @internal param bool $realpath add realpath field to file info
     * @author   Dmitry (dio) Levashov
     */
    public function file($hash)
    {
        $file = $this->stat($this->decode($hash));

        return ($file) ? $file : $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
    }

    /**
     * Return folder info
     *
     * @param  string $hash folder hash
     * @param bool    $resolveLink
     *
     * @return array|false
     * @internal param bool $hidden return hidden file info
     * @author   Dmitry (dio) Levashov
     */
    public function dir($hash, $resolveLink = false)
    {
        if (($dir = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_DIR_NOT_FOUND);
        }

        if ($resolveLink && !empty($dir['thash'])) {
            $dir = $this->file($dir['thash']);
        }

        return $dir && $dir['mime'] == 'directory' && empty($dir['hidden'])
            ? $dir
            : $this->setError(elFinder::ERROR_NOT_DIR);
    }

    /**
     * Return directory content or false on error
     *
     * @param  string $hash file hash
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function scandir($hash)
    {
        if (($dir = $this->dir($hash)) == false) {
            return false;
        }

        $path = $this->decode($hash);
        if ($res = $dir['read']
            ? $this->getScandir($path)
            : $this->setError(elFinder::ERROR_PERM_DENIED)) {

            $dirs = null;
            if ($this->sessionCaching['subdirs'] && isset($this->sessionCache['subdirs'][$path])) {
                $dirs = $this->sessionCache['subdirs'][$path];
            }
            if ($dirs !== null || (isset($dir['dirs']) && $dir['dirs'] != 1)) {
                $_dir = $dir;
                if ($dirs || $this->subdirs($hash)) {
                    $dir['dirs'] = 1;
                } else {
                    unset($dir['dirs']);
                }
                if ($dir !== $_dir) {
                    $this->updateCache($path, $dir);
                }
            }
        }

        return $res;
    }

    /**
     * Return dir files names list
     *
     * @param  string $hash file hash
     * @param null    $intersect
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     */
    public function ls($hash, $intersect = null)
    {
        if (($dir = $this->dir($hash)) == false || !$dir['read']) {
            return false;
        }

        $list = array();
        $path = $this->decode($hash);

        $check = array();
        if ($intersect) {
            $check = array_flip($intersect);
        }

        foreach ($this->getScandir($path) as $stat) {
            if (empty($stat['hidden']) && (!$check || isset($check[$stat['name']])) && $this->mimeAccepted($stat['mime'])) {
                $list[$stat['hash']] = $stat['name'];
            }
        }

        return $list;
    }

    /**
     * Return subfolders for required folder or false on error
     *
     * @param  string $hash    folder hash or empty string to get tree from root folder
     * @param  int    $deep    subdir deep
     * @param  string $exclude dir hash which subfolders must be exluded from result, required to not get stat twice on cwd subfolders
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function tree($hash = '', $deep = 0, $exclude = '')
    {
        $path = $hash ? $this->decode($hash) : $this->root;

        if (($dir = $this->stat($path)) == false || $dir['mime'] != 'directory') {
            return false;
        }

        $dirs = $this->gettree($path, $deep > 0 ? $deep - 1 : $this->treeDeep - 1, $exclude ? $this->decode($exclude) : null);
        array_unshift($dirs, $dir);
        return $dirs;
    }

    /**
     * Return part of dirs tree from required dir up to root dir
     *
     * @param  string    $hash   directory hash
     * @param  bool|null $lineal only lineal parents
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function parents($hash, $lineal = false)
    {
        if (($current = $this->dir($hash)) == false) {
            return false;
        }

        $args = func_get_args();
        // checks 3rd param `$until` (elFinder >= 2.1.24)
        $until = '';
        if (isset($args[2])) {
            $until = $args[2];
        }

        $path = $this->decode($hash);
        $tree = array();

        while ($path && $path != $this->root) {
            elFinder::checkAborted();
            $path = $this->dirnameCE($path);
            if (!($stat = $this->stat($path)) || !empty($stat['hidden']) || !$stat['read']) {
                return false;
            }

            array_unshift($tree, $stat);
            if (!$lineal) {
                foreach ($this->gettree($path, 0) as $dir) {
                    elFinder::checkAborted();
                    if (!isset($tree[$dir['hash']])) {
                        $tree[$dir['hash']] = $dir;
                    }
                }
            }

            if ($until && $until === $this->encode($path)) {
                break;
            }
        }

        return $tree ? array_values($tree) : array($current);
    }

    /**
     * Create thumbnail for required file and return its name or false on failed
     *
     * @param $hash
     *
     * @return false|string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function tmb($hash)
    {
        $path = $this->decode($hash);
        $stat = $this->stat($path);

        if (isset($stat['tmb'])) {
            $res = $stat['tmb'] == "1" ? $this->createTmb($path, $stat) : $stat['tmb'];
            if (!$res) {
                list($type) = explode('/', $stat['mime']);
                $fallback = $this->options['resourcePath'] . DIRECTORY_SEPARATOR . strtolower($type) . '.png';
                if (is_file($fallback)) {
                    $res = $this->tmbname($stat);
                    if (!copy($fallback, $this->tmbPath . DIRECTORY_SEPARATOR . $res)) {
                        $res = false;
                    }
                }
            }
            // tmb garbage collection
            if ($res && $this->options['tmbGcMaxlifeHour'] && $this->options['tmbGcPercentage'] > 0) {
                $rand = mt_rand(1, 10000);
                if ($rand <= $this->options['tmbGcPercentage'] * 100) {
                    register_shutdown_function(array('elFinder', 'GlobGC'), $this->tmbPath . DIRECTORY_SEPARATOR . '*.png', $this->options['tmbGcMaxlifeHour'] * 3600);
                }
            }
            return $res;
        }
        return false;
    }

    /**
     * Return file size / total directory size
     *
     * @param  string   file hash
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function size($hash)
    {
        return $this->countSize($this->decode($hash));
    }

    /**
     * Open file for reading and return file pointer
     *
     * @param  string   file hash
     *
     * @return Resource|false
     * @author Dmitry (dio) Levashov
     **/
    public function open($hash)
    {
        if (($file = $this->file($hash)) == false
            || $file['mime'] == 'directory') {
            return false;
        }
        // check extra option for network stream pointer
        if (func_num_args() > 1) {
            $opts = func_get_arg(1);
        } else {
            $opts = array();
        }
        return $this->fopenCE($this->decode($hash), 'rb', $opts);
    }

    /**
     * Close file pointer
     *
     * @param  Resource $fp   file pointer
     * @param  string   $hash file hash
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function close($fp, $hash)
    {
        $this->fcloseCE($fp, $this->decode($hash));
    }

    /**
     * Create directory and return dir info
     *
     * @param  string $dsthash destination directory hash
     * @param  string $name    directory name
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function mkdir($dsthash, $name)
    {
        if ($this->commandDisabled('mkdir')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, true)) {
            return $this->setError(elFinder::ERROR_INVALID_DIRNAME);
        }

        if (($dir = $this->dir($dsthash)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dsthash);
        }

        $path = $this->decode($dsthash);

        if (!$dir['write'] || !$this->allowCreate($path, $name, true)) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $dst = $this->joinPathCE($path, $name);
        $stat = $this->isNameExists($dst);
        if (!empty($stat)) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }
        $this->clearcache();

        $mkpath = $this->convEncOut($this->_mkdir($this->convEncIn($path), $this->convEncIn($name)));
        if ($mkpath) {
            $this->clearstatcache();
            $this->updateSubdirsCache($path, true);
            $this->updateSubdirsCache($mkpath, false);
        }

        return $mkpath ? $this->stat($mkpath) : false;
    }

    /**
     * Create empty file and return its info
     *
     * @param  string $dst  destination directory
     * @param  string $name file name
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function mkfile($dst, $name)
    {
        if ($this->commandDisabled('mkfile')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        $mimeByName = $this->mimetype($name, true);
        if ($mimeByName && !$this->allowPutMime($mimeByName)) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, $name);
        }

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        $path = $this->decode($dst);

        if (!$dir['write'] || !$this->allowCreate($path, $name, false)) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->isNameExists($this->joinPathCE($path, $name))) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }

        $this->clearcache();
        $res = false;
        if ($path = $this->convEncOut($this->_mkfile($this->convEncIn($path), $this->convEncIn($name)))) {
            $this->clearstatcache();
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Rename file and return file info
     *
     * @param  string $hash file hash
     * @param  string $name new file name
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function rename($hash, $name)
    {
        if ($this->commandDisabled('rename')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if ($name === $file['name']) {
            return $file;
        }

        if (!empty($this->options['netkey']) && !empty($file['isroot'])) {
            // change alias of netmount root
            $rootKey = $this->getRootstatCachekey();
            // delete old cache data
            if ($this->sessionCaching['rootstat']) {
                unset($this->sessionCaching['rootstat'][$rootKey]);
            }
            if (elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $name)) {
                $this->clearcache();
                $this->rootName = $this->options['alias'] = $name;
                return $this->stat($this->root);
            } else {
                return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, $name);
            }
        }

        if (!empty($file['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $file['name']);
        }

        $isDir = ($file['mime'] === 'directory');

        if (!$this->nameAccepted($name, $isDir)) {
            return $this->setError($isDir ? elFinder::ERROR_INVALID_DIRNAME : elFinder::ERROR_INVALID_NAME);
        }

        if (!$isDir) {
            $mimeByName = $this->mimetype($name, true);
            if ($mimeByName && !$this->allowPutMime($mimeByName)) {
                return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, $name);
            }
        }

        $path = $this->decode($hash);
        $dir = $this->dirnameCE($path);
        $stat = $this->isNameExists($this->joinPathCE($dir, $name));
        if ($stat) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }

        if (!$this->allowCreate($dir, $name, ($file['mime'] === 'directory'))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $this->rmTmb($file); // remove old name tmbs, we cannot do this after dir move


        if ($path = $this->convEncOut($this->_move($this->convEncIn($path), $this->convEncIn($dir), $this->convEncIn($name)))) {
            $this->clearcache();
            return $this->stat($path);
        }
        return false;
    }

    /**
     * Create file copy with suffix "copy number" and return its info
     *
     * @param  string $hash   file hash
     * @param  string $suffix suffix to add to file name
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function duplicate($hash, $suffix = 'copy')
    {
        if ($this->commandDisabled('duplicate')) {
            return $this->setError(elFinder::ERROR_COPY, '#' . $hash, elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_COPY, elFinder::ERROR_FILE_NOT_FOUND);
        }

        $path = $this->decode($hash);
        $dir = $this->dirnameCE($path);
        $name = $this->uniqueName($dir, $file['name'], sprintf($this->options['duplicateSuffix'], $suffix));

        if (!$this->allowCreate($dir, $name, ($file['mime'] === 'directory'))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        return ($path = $this->copy($path, $dir, $name)) == false
            ? false
            : $this->stat($path);
    }

    /**
     * Save uploaded file.
     * On success return array with new file stat and with removed file hash (if existed file was replaced)
     *
     * @param  Resource $fp      file pointer
     * @param  string   $dst     destination folder hash
     * @param           $name
     * @param  string   $tmpname file tmp name - required to detect mime type
     * @param  array    $hashes  exists files hash array with filename as key
     *
     * @return array|false
     * @throws elFinderAbortException
     * @internal param string $src file name
     * @author   Dmitry (dio) Levashov
     */
    public function upload($fp, $dst, $name, $tmpname, $hashes = array())
    {
        if ($this->commandDisabled('upload')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        if (empty($dir['write'])) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        $mimeByName = '';
        if ($this->mimeDetect === 'internal') {
            $mime = $this->mimetype($tmpname, $name);
        } else {
            $mime = $this->mimetype($tmpname, $name);
            $mimeByName = $this->mimetype($name, true);
            if ($mime === 'unknown') {
                $mime = $mimeByName;
            }
        }

        if (!$this->allowPutMime($mime) || ($mimeByName && !$this->allowPutMime($mimeByName))) {
             // Log upload blocked event for debugging purposes
             error_log(
                'elFinder upload blocked. '
                . 'mime=' . $mime
                . ', mimeByName=' . $mimeByName
                . ', uploadAllow=' . json_encode($this->uploadAllow)
                . ', uploadDeny=' . json_encode($this->uploadDeny)
            );

            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, '(' . $mime . ')');
        }

        $tmpsize = (int)sprintf('%u', filesize($tmpname));
        if ($this->uploadMaxSize > 0 && $tmpsize > $this->uploadMaxSize) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
        }

        $dstpath = $this->decode($dst);
        if (isset($hashes[$name])) {
            $test = $this->decode($hashes[$name]);
            $file = $this->stat($test);
        } else {
            $test = $this->joinPathCE($dstpath, $name);
            $file = $this->isNameExists($test);
        }

        $this->clearcache();

        if ($file && $file['name'] === $name) { // file exists and check filename for item ID based filesystem
            if ($this->uploadOverwrite) {
                if (!$file['write']) {
                    return $this->setError(elFinder::ERROR_PERM_DENIED);
                } elseif ($file['mime'] == 'directory') {
                    return $this->setError(elFinder::ERROR_NOT_REPLACE, $name);
                }
                $this->remove($test);
            } else {
                $name = $this->uniqueName($dstpath, $name, '-', false);
            }
        }

        $stat = array(
            'mime' => $mime,
            'width' => 0,
            'height' => 0,
            'size' => $tmpsize);

        // $w = $h = 0;
        if (strpos($mime, 'image') === 0 && ($s = getimagesize($tmpname))) {
            $stat['width'] = $s[0];
            $stat['height'] = $s[1];
        }
        // $this->clearcache();
        if (($path = $this->saveCE($fp, $dstpath, $name, $stat)) == false) {
            return false;
        }

        $stat = $this->stat($path);
        // Try get URL
        if (empty($stat['url']) && ($url = $this->getContentUrl($stat['hash']))) {
            $stat['url'] = $url;
        }

        return $stat;
    }

    /**
     * Paste files
     *
     * @param  Object $volume source volume
     * @param         $src
     * @param  string $dst    destination dir hash
     * @param  bool   $rmSrc  remove source after copy?
     * @param array   $hashes
     *
     * @return array|false
     * @throws elFinderAbortException
     * @internal param string $source file hash
     * @author   Dmitry (dio) Levashov
     */
    public function paste($volume, $src, $dst, $rmSrc = false, $hashes = array())
    {
        $err = $rmSrc ? elFinder::ERROR_MOVE : elFinder::ERROR_COPY;

        if ($this->commandDisabled('paste')) {
            return $this->setError($err, '#' . $src, elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $volume->file($src, $rmSrc)) == false) {
            return $this->setError($err, '#' . $src, elFinder::ERROR_FILE_NOT_FOUND);
        }

        $name = $file['name'];
        $errpath = $volume->path($file['hash']);

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError($err, $errpath, elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        if (!$dir['write'] || !$file['read']) {
            return $this->setError($err, $errpath, elFinder::ERROR_PERM_DENIED);
        }

        $destination = $this->decode($dst);

        if (($test = $volume->closest($src, $rmSrc ? 'locked' : 'read', $rmSrc))) {
            return $rmSrc
                ? $this->setError($err, $errpath, elFinder::ERROR_LOCKED, $volume->path($test))
                : $this->setError($err, $errpath, empty($file['thash']) ? elFinder::ERROR_PERM_DENIED : elFinder::ERROR_MKOUTLINK);
        }

        if (isset($hashes[$name])) {
            $test = $this->decode($hashes[$name]);
            $stat = $this->stat($test);
        } else {
            $test = $this->joinPathCE($destination, $name);
            $stat = $this->isNameExists($test);
        }
        $this->clearcache();
        $dstDirExists = false;
        if ($stat && $stat['name'] === $name) { // file exists and check filename for item ID based filesystem
            if ($this->options['copyOverwrite']) {
                // do not replace file with dir or dir with file
                if (!$this->isSameType($file['mime'], $stat['mime'])) {
                    return $this->setError(elFinder::ERROR_NOT_REPLACE, $this->path($stat['hash']));
                }
                // existed file is not writable
                if (empty($stat['write'])) {
                    return $this->setError($err, $errpath, elFinder::ERROR_PERM_DENIED);
                }
                if ($this->options['copyJoin']) {
                    if (!empty($stat['locked'])) {
                        return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
                    }
                } else {
                    // existed file locked or has locked child
                    if (($locked = $this->closestByAttr($test, 'locked', true))) {
                        $stat = $this->stat($locked);
                        return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
                    }
                }
                // target is entity file of alias
                if ($volume === $this && ((isset($file['target']) && $test == $file['target']) || $test == $this->decode($src))) {
                    return $this->setError(elFinder::ERROR_REPLACE, $errpath);
                }
                // remove existed file
                if (!$this->options['copyJoin'] || $stat['mime'] !== 'directory') {
                    if (!$this->remove($test)) {
                        return $this->setError(elFinder::ERROR_REPLACE, $this->path($stat['hash']));
                    }
                } else if ($stat['mime'] === 'directory') {
                    $dstDirExists = true;
                }
            } else {
                $name = $this->uniqueName($destination, $name, ' ', false);
            }
        }

        // copy/move inside current volume
        if ($volume === $this) { //  changing == operand to === fixes issue #1285 - Paul Canning 24/03/2016
            $source = $this->decode($src);
            // do not copy into itself
            if ($this->inpathCE($destination, $source)) {
                return $this->setError(elFinder::ERROR_COPY_ITSELF, $errpath);
            }
            $rmDir = false;
            if ($rmSrc) {
                if ($dstDirExists) {
                    $rmDir = true;
                    $method = 'copy';
                } else {
                    $method = 'move';
                }
            } else {
                $method = 'copy';
            }
            $this->clearcache();
            if ($res = ($path = $this->$method($source, $destination, $name)) ? $this->stat($path) : false) {
                if ($rmDir) {
                    $this->remove($source);
                }
            } else {
                return false;
            }
        } else {
            // copy/move from another volume
            if (!$this->options['copyTo'] || !$volume->copyFromAllowed()) {
                return $this->setError(elFinder::ERROR_COPY, $errpath, elFinder::ERROR_PERM_DENIED);
            }

            $this->error = array();
            if (($path = $this->copyFrom($volume, $src, $destination, $name)) == false) {
                return false;
            }

            if ($rmSrc && !$this->error()) {
                if (!$volume->rm($src)) {
                    if ($volume->file($src)) {
                        $this->addError(elFinder::ERROR_RM_SRC);
                    } else {
                        $this->removed[] = $file;
                    }
                }
            }
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Return path info array to archive of target items
     *
     * @param  array $hashes
     *
     * @return array|false
     * @throws Exception
     * @author Naoki Sawada
     */
    public function zipdl($hashes)
    {
        if ($this->commandDisabled('zipdl')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $archivers = $this->getArchivers();
        $cmd = null;
        if (!$archivers || empty($archivers['create'])) {
            return false;
        }
        $archivers = $archivers['create'];
        if (!$archivers) {
            return false;
        }
        $file = $mime = '';
        foreach (array('zip', 'tgz') as $ext) {
            $mime = $this->mimetype('file.' . $ext, true);
            if (isset($archivers[$mime])) {
                $cmd = $archivers[$mime];
                break;
            }
        }
        if (!$cmd) {
            $cmd = array_shift($archivers);
            if (!empty($ext)) {
                $mime = $this->mimetype('file.' . $ext, true);
            }
        }
        $ext = $cmd['ext'];
        $res = false;
        $mixed = false;
        $hashes = array_values($hashes);
        $dirname = dirname(str_replace($this->separator, DIRECTORY_SEPARATOR, $this->path($hashes[0])));
        $cnt = count($hashes);
        if ($cnt > 1) {
            for ($i = 1; $i < $cnt; $i++) {
                if ($dirname !== dirname(str_replace($this->separator, DIRECTORY_SEPARATOR, $this->path($hashes[$i])))) {
                    $mixed = true;
                    break;
                }
            }
        }
        if ($mixed || $this->root == $this->dirnameCE($this->decode($hashes[0]))) {
            $prefix = $this->rootName;
        } else {
            $prefix = basename($dirname);
        }
        if ($dir = $this->getItemsInHand($hashes)) {
            $tmppre = (substr(PHP_OS, 0, 3) === 'WIN') ? 'zd-' : 'elfzdl-';
            $pdir = dirname($dir);
            // garbage collection (expire 2h)
            register_shutdown_function(array('elFinder', 'GlobGC'), $pdir . DIRECTORY_SEPARATOR . $tmppre . '*', 7200);
            $files = self::localScandir($dir);
            if ($files && ($arc = tempnam($dir, $tmppre))) {
                unlink($arc);
                $arc = $arc . '.' . $ext;
                $name = basename($arc);
                if ($arc = $this->makeArchive($dir, $files, $name, $cmd)) {
                    $file = tempnam($pdir, $tmppre);
                    unlink($file);
                    $res = rename($arc, $file);
                    $this->rmdirRecursive($dir);
                }
            }
        }
        return $res ? array('path' => $file, 'ext' => $ext, 'mime' => $mime, 'prefix' => $prefix) : false;
    }

    /**
     * Return file contents
     *
     * @param  string $hash file hash
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    public function getContents($hash)
    {
        $file = $this->file($hash);

        if (!$file) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if ($file['mime'] == 'directory') {
            return $this->setError(elFinder::ERROR_NOT_FILE);
        }

        if (!$file['read']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->getMaxSize > 0 && $file['size'] > $this->getMaxSize) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
        }

        return $file['size'] ? $this->_getContents($this->convEncIn($this->decode($hash), true)) : '';
    }

    /**
     * Put content in text file and return file info.
     *
     * @param  string $hash    file hash
     * @param  string $content new file content
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function putContents($hash, $content)
    {
        if ($this->commandDisabled('edit')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $path = $this->decode($hash);

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$file['write']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        // check data cheme
        if (preg_match('~^\0data:(.+?/.+?);base64,~', $content, $m)) {
            $dMime = $m[1];
            if ($file['size'] > 0 && $dMime !== $file['mime']) {
                return $this->setError(elFinder::ERROR_PERM_DENIED);
            }
            $content = base64_decode(substr($content, strlen($m[0])));
        }

        // check MIME
        $name = $this->basenameCE($path);
        $mime = '';
        $mimeByName = $this->mimetype($name, true);
        if ($this->mimeDetect !== 'internal') {
            if ($tp = $this->tmpfile()) {
                fwrite($tp, $content);
                $info = stream_get_meta_data($tp);
                $filepath = $info['uri'];
                $mime = $this->mimetype($filepath, $name);
                fclose($tp);
            }
        }
        if (!$this->allowPutMime($mimeByName) || ($mime && !$this->allowPutMime($mime))) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME);
        }

        $this->clearcache();
        $res = false;
        if ($this->convEncOut($this->_filePutContents($this->convEncIn($path), $content))) {
            $this->rmTmb($file);
            $this->clearstatcache();
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Extract files from archive
     *
     * @param  string $hash archive hash
     * @param null    $makedir
     *
     * @return array|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    public function extract($hash, $makedir = null)
    {
        if ($this->commandDisabled('extract')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        $archiver = isset($this->archivers['extract'][$file['mime']])
            ? $this->archivers['extract'][$file['mime']]
            : array();

        if (!$archiver) {
            return $this->setError(elFinder::ERROR_NOT_ARCHIVE);
        }

        $path = $this->decode($hash);
        $parent = $this->stat($this->dirnameCE($path));

        if (!$file['read'] || !$parent['write']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }
        $this->clearcache();
        $this->extractToNewdir = is_null($makedir) ? 'auto' : (bool)$makedir;

        if ($path = $this->convEncOut($this->_extract($this->convEncIn($path), $archiver))) {
            if (is_array($path)) {
                foreach ($path as $_k => $_p) {
                    $path[$_k] = $this->stat($_p);
                }
            } else {
                $path = $this->stat($path);
            }
            return $path;
        } else {
            return false;
        }
    }

    /**
     * Add files to archive
     *
     * @param        $hashes
     * @param        $mime
     * @param string $name
     *
     * @return array|bool
     * @throws Exception
     */
    public function archive($hashes, $mime, $name = '')
    {
        if ($this->commandDisabled('archive')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($name !== '' && !$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        $archiver = isset($this->archivers['create'][$mime])
            ? $this->archivers['create'][$mime]
            : array();

        if (!$archiver) {
            return $this->setError(elFinder::ERROR_ARCHIVE_TYPE);
        }

        $files = array();
        $useRemoteArchive = !empty($this->options['useRemoteArchive']);

        $dir = '';
        foreach ($hashes as $hash) {
            if (($file = $this->file($hash)) == false) {
                return $this->setError(elFinder::ERROR_FILE_NOT_FOUND, '#' . $hash);
            }
            if (!$file['read']) {
                return $this->setError(elFinder::ERROR_PERM_DENIED);
            }
            $path = $this->decode($hash);
            if ($dir === '') {
                $dir = $this->dirnameCE($path);
                $stat = $this->stat($dir);
                if (!$stat['write']) {
                    return $this->setError(elFinder::ERROR_PERM_DENIED);
                }
            }

            $files[] = $useRemoteArchive ? $hash : $this->basenameCE($path);
        }

        if ($name === '') {
            $name = count($files) == 1 ? $files[0] : 'Archive';
        } else {
            $name = str_replace(array('/', '\\'), '_', preg_replace('/\.' . preg_quote($archiver['ext'], '/') . '$/i', '', $name));
        }
        $name .= '.' . $archiver['ext'];
        $name = $this->uniqueName($dir, $name, '');
        $this->clearcache();
        if ($useRemoteArchive) {
            return ($path = $this->remoteArchive($files, $name, $archiver)) ? $this->stat($path) : false;
        } else {
            return ($path = $this->convEncOut($this->_archive($this->convEncIn($dir), $this->convEncIn($files), $this->convEncIn($name), $archiver))) ? $this->stat($path) : false;
        }
    }

    /**
     * Create an archive from remote items
     *
     * @param      array  $hashes files hashes list
     * @param      string $name   archive name
     * @param      array  $arc    archiver options
     *
     * @return     string|boolean  path of created archive
     * @throws     Exception
     */
    protected function remoteArchive($hashes, $name, $arc)
    {
        $resPath = false;
        $file0 = $this->file($hashes[0]);
        if ($file0 && ($dir = $this->getItemsInHand($hashes))) {
            $files = self::localScandir($dir);
            if ($files) {
                if ($arc = $this->makeArchive($dir, $files, $name, $arc)) {
                    if ($fp = fopen($arc, 'rb')) {
                        $fstat = stat($arc);
                        $stat = array(
                            'size' => $fstat['size'],
                            'ts' => $fstat['mtime'],
                            'mime' => $this->mimetype($arc, $name)
                        );
                        $path = $this->decode($file0['phash']);
                        $resPath = $this->saveCE($fp, $path, $name, $stat);
                        fclose($fp);
                    }
                }
            }
            $this->rmdirRecursive($dir);
        }
        return $resPath;
    }

    /**
     * Resize image
     *
     * @param  string $hash       image file
     * @param  int    $width      new width
     * @param  int    $height     new height
     * @param  int    $x          X start poistion for crop
     * @param  int    $y          Y start poistion for crop
     * @param  string $mode       action how to mainpulate image
     * @param  string $bg         background color
     * @param  int    $degree     rotete degree
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return array|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     * @author nao-pon
     * @author Troex Nevelin
     */
    public function resize($hash, $width, $height, $x, $y, $mode = 'resize', $bg = '', $degree = 0, $jpgQuality = null)
    {
        if ($this->commandDisabled('resize')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($mode === 'rotate' && $degree == 0) {
            return array('losslessRotate' => ($this->procExec(ELFINDER_EXIFTRAN_PATH . ' -h') === 0 || $this->procExec(ELFINDER_JPEGTRAN_PATH . ' -version') === 0));
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$file['write'] || !$file['read']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $path = $this->decode($hash);

        $work_path = $this->getWorkFile($this->encoding ? $this->convEncIn($path, true) : $path);

        if (!$work_path || !is_writable($work_path)) {
            if ($work_path && $path !== $work_path && is_file($work_path)) {
                unlink($work_path);
            }
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->imgLib !== 'imagick' && $this->imgLib !== 'convert') {
            if (elFinder::isAnimationGif($work_path)) {
                return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
            }
        }

        if (elFinder::isAnimationPng($work_path)) {
            return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
        }

        switch ($mode) {

            case 'propresize':
                $result = $this->imgResize($work_path, $width, $height, true, true, null, $jpgQuality);
                break;

            case 'crop':
                $result = $this->imgCrop($work_path, $width, $height, $x, $y, null, $jpgQuality);
                break;

            case 'fitsquare':
                $result = $this->imgSquareFit($work_path, $width, $height, 'center', 'middle', ($bg ? $bg : $this->options['tmbBgColor']), null, $jpgQuality);
                break;

            case 'rotate':
                $result = $this->imgRotate($work_path, $degree, ($bg ? $bg : $this->options['bgColorFb']), null, $jpgQuality);
                break;

            default:
                $result = $this->imgResize($work_path, $width, $height, false, true, null, $jpgQuality);
                break;
        }

        $ret = false;
        if ($result) {
            $this->rmTmb($file);
            $this->clearstatcache();
            $fstat = stat($work_path);
            $imgsize = getimagesize($work_path);
            if ($path !== $work_path) {
                $file['size'] = $fstat['size'];
                $file['ts'] = $fstat['mtime'];
                if ($imgsize) {
                    $file['width'] = $imgsize[0];
                    $file['height'] = $imgsize[1];
                }
                if ($fp = fopen($work_path, 'rb')) {
                    $ret = $this->saveCE($fp, $this->dirnameCE($path), $this->basenameCE($path), $file);
                    fclose($fp);
                }
            } else {
                $ret = true;
            }
            if ($ret) {
                $this->clearcache();
                $ret = $this->stat($path);
                if ($imgsize) {
                    $ret['width'] = $imgsize[0];
                    $ret['height'] = $imgsize[1];
                }
            }
        }
        if ($path !== $work_path) {
            is_file($work_path) && unlink($work_path);
        }

        return $ret;
    }

    /**
     * Remove file/dir
     *
     * @param  string $hash file hash
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function rm($hash)
    {
        return $this->commandDisabled('rm')
            ? $this->setError(elFinder::ERROR_PERM_DENIED)
            : $this->remove($this->decode($hash));
    }

    /**
     * Search files
     *
     * @param  string $q search string
     * @param  array  $mimes
     * @param null    $hash
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function search($q, $mimes, $hash = null)
    {
        $res = array();
        $matchMethod = null;
        $args = func_get_args();
        if (!empty($args[3])) {
            $matchMethod = 'searchMatch' . $args[3];
            if (!is_callable(array($this, $matchMethod))) {
                return array();
            }
        }

        $dir = null;
        if ($hash) {
            $dir = $this->decode($hash);
            $stat = $this->stat($dir);
            if (!$stat || $stat['mime'] !== 'directory' || !$stat['read']) {
                $q = '';
            }
        }
        if ($mimes && $this->onlyMimes) {
            $mimes = array_intersect($mimes, $this->onlyMimes);
            if (!$mimes) {
                $q = '';
            }
        }
        $this->searchStart = time();

        $qs = preg_split('/"([^"]+)"| +/', $q, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
        $query = $excludes = array();
        foreach ($qs as $_q) {
            $_q = trim($_q);
            if ($_q !== '') {
                if ($_q[0] === '-') {
                    if (isset($_q[1])) {
                        $excludes[] = substr($_q, 1);
                    }
                } else {
                    $query[] = $_q;
                }
            }
        }
        if (!$query) {
            $q = '';
        } else {
            $q = join(' ', $query);
            $this->doSearchCurrentQuery = array(
                'q' => $q,
                'excludes' => $excludes,
                'matchMethod' => $matchMethod
            );
        }

        if ($q === '' || $this->commandDisabled('search')) {
            return $res;
        }

        // valided regex $this->options['searchExDirReg']
        if ($this->options['searchExDirReg']) {
            if (false === preg_match($this->options['searchExDirReg'], '')) {
                $this->options['searchExDirReg'] = '';
            }
        }

        // check the leaf root too
        if (!$mimes && (is_null($dir) || $dir == $this->root)) {
            $rootStat = $this->stat($this->root);
            if (!empty($rootStat['phash'])) {
                if ($this->stripos($rootStat['name'], $q) !== false) {
                    $res = array($rootStat);
                }
            }
        }

        return array_merge($res, $this->doSearch(is_null($dir) ? $this->root : $dir, $q, $mimes));
    }

    /**
     * Return image dimensions
     *
     * @param  string $hash file hash
     *
     * @return array|string
     * @author Dmitry (dio) Levashov
     **/
    public function dimensions($hash)
    {
        if (($file = $this->file($hash)) == false) {
            return false;
        }
        // Throw additional parameters for some drivers
        if (func_num_args() > 1) {
            $args = func_get_arg(1);
        } else {
            $args = array();
        }
        return $this->convEncOut($this->_dimensions($this->convEncIn($this->decode($hash)), $file['mime'], $args));
    }

    /**
     * Return has subdirs
     *
     * @param  string $hash file hash
     *
     * @return bool
     * @author Naoki Sawada
     **/
    public function subdirs($hash)
    {
        return (bool)$this->subdirsCE($this->decode($hash));
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return boolean|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = array())
    {
        if (($file = $this->file($hash)) === false) {
            return false;
        }
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            if (is_callable($this->options['onetimeUrl'])) {
                return call_user_func_array($this->options['onetimeUrl'], array($file, $options, $this));
            } else {
                $ret = false;
                if ($tmpdir = elFinder::getStaticVar('commonTempPath')) {
                    if ($source = $this->open($hash)) {
                        if ($_dat = tempnam($tmpdir, 'ELF')) {
                            $token = md5($_dat . session_id());
                            $dat = $tmpdir . DIRECTORY_SEPARATOR . 'ELF' . $token;
                            if (rename($_dat, $dat)) {
                                $info = stream_get_meta_data($source);
                                if (!empty($info['uri'])) {
                                    $tmp = $info['uri'];
                                } else {
                                    $tmp = tempnam($tmpdir, 'ELF');
                                    if ($dest = fopen($tmp, 'wb')) {
                                        if (!stream_copy_to_stream($source, $dest)) {
                                            $tmp = false;
                                        }
                                        fclose($dest);
                                    }
                                }
                                $this->close($source, $hash);
                                if ($tmp) {
                                    $info = array(
                                        'file' => base64_encode($tmp),
                                        'name' => $file['name'],
                                        'mime' => $file['mime'],
                                        'ts' => $file['ts']
                                    );
                                    if (file_put_contents($dat, json_encode($info))) {
                                        $conUrl = elFinder::getConnectorUrl();
                                        $ret = $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=file&onetime=1&target=' . $token;

                                    }
                                }
                                if (!$ret) {
                                    unlink($dat);
                                }
                            } else {
                                unlink($_dat);
                            }
                        }
                    }
                }
                return $ret;
            }
        }
        if (empty($file['url']) && $this->URL) {
            $path = str_replace($this->separator, '/', substr($this->decode($hash), strlen(rtrim($this->root, '/' . $this->separator)) + 1));
            if ($this->encoding) {
                $path = $this->convEncIn($path, true);
            }
            $path = str_replace('%2F', '/', rawurlencode($path));
            return $this->_buildFileUrl($path);
        } else {
            $ret = false;
            if (!empty($file['url']) && $file['url'] != 1) {
                return $file['url'];
            } else if (!empty($options['temporary']) && ($tempInfo = $this->getTempLinkInfo('temp_' . md5($hash . session_id())))) {
                if (is_readable($tempInfo['path'])) {
                    touch($tempInfo['path']);
                    $ret = $tempInfo['url'] . '?' . rawurlencode($file['name']);
                } else if ($source = $this->open($hash)) {
                    if ($dest = fopen($tempInfo['path'], 'wb')) {
                        if (stream_copy_to_stream($source, $dest)) {
                            $ret = $tempInfo['url'] . '?' . rawurlencode($file['name']);
                        }
                        fclose($dest);
                    }
                    $this->close($source, $hash);
                }
            }
            return $ret;
        }
    }

    /**
     * Get temporary contents link infomation
     *
     * @param string $name
     *
     * @return boolean|array
     * @author Naoki Sawada
     */
    public function getTempLinkInfo($name = null)
    {
        if ($this->tmpLinkPath) {
            if (!$name) {
                $name = 'temp_' . md5($_SERVER['REMOTE_ADDR'] . (string)microtime(true));
            } else if (substr($name, 0, 5) !== 'temp_') {
                $name = 'temp_' . $name;
            }
            register_shutdown_function(array('elFinder', 'GlobGC'), $this->tmpLinkPath . DIRECTORY_SEPARATOR . 'temp_*', elFinder::$tmpLinkLifeTime);
            return array(
                'path' => $path = $this->tmpLinkPath . DIRECTORY_SEPARATOR . $name,
                'url' => $this->tmpLinkUrl . '/' . rawurlencode($name)
            );
        }
        return false;
    }

    /**
     * Get URL of substitute image by request args `substitute` or 4th argument $maxSize
     *
     * @param string   $target  Target hash
     * @param array    $srcSize Size info array [width, height]
     * @param resource $srcfp   Source file file pointer
     * @param integer  $maxSize Maximum pixel of substitute image
     *
     * @return boolean
     * @throws ImagickException
     * @throws elFinderAbortException
     */
    public function getSubstituteImgLink($target, $srcSize, $srcfp = null, $maxSize = null)
    {
        $url = false;
        $file = $this->file($target);
        $force = !in_array($file['mime'], array('image/jpeg', 'image/png', 'image/gif'));
        if (!$maxSize) {
            $args = elFinder::$currentArgs;
            if (!empty($args['substitute'])) {
                $maxSize = $args['substitute'];
            }
        }
        if ($maxSize && $srcSize[0] && $srcSize[1]) {
            if ($this->getOption('substituteImg')) {
                $maxSize = intval($maxSize);
                $zoom = min(($maxSize / $srcSize[0]), ($maxSize / $srcSize[1]));
                if ($force || $zoom < 1) {
                    $width = round($srcSize[0] * $zoom);
                    $height = round($srcSize[1] * $zoom);
                    $jpgQuality = 50;
                    $preserveExif = false;
                    $unenlarge = true;
                    $checkAnimated = true;
                    $destformat = $file['mime'] === 'image/jpeg'? null : 'png';
                    if (!$srcfp) {
                        elFinder::checkAborted();
                        $srcfp = $this->open($target);
                    }
                    if ($srcfp && ($tempLink = $this->getTempLinkInfo())) {
                        elFinder::checkAborted();
                        $dest = fopen($tempLink['path'], 'wb');
                        if ($dest && stream_copy_to_stream($srcfp, $dest)) {
                            fclose($dest);
                            if ($this->imageUtil('resize', $tempLink['path'], compact('width', 'height', 'jpgQuality', 'preserveExif', 'unenlarge', 'checkAnimated', 'destformat'))) {
                                $url = $tempLink['url'];
                                // set expire to 1 min left
                                touch($tempLink['path'], time() - elFinder::$tmpLinkLifeTime + 60);
                            } else {
                                unlink($tempLink['path']);
                            }
                        }
                        $this->close($srcfp, $target);
                    }
                }
            }
        }

        return $url;
    }

    /**
     * Return temp path
     *
     * @return string
     * @author Naoki Sawada
     */
    public function getTempPath()
    {
        $tempPath = null;
        if (isset($this->tmpPath) && $this->tmpPath && is_writable($this->tmpPath)) {
            $tempPath = $this->tmpPath;
        } else if (isset($this->tmp) && $this->tmp && is_writable($this->tmp)) {
            $tempPath = $this->tmp;
        } else if (elFinder::getStaticVar('commonTempPath') && is_writable(elFinder::getStaticVar('commonTempPath'))) {
            $tempPath = elFinder::getStaticVar('commonTempPath');
        } else if (function_exists('sys_get_temp_dir')) {
            $tempPath = sys_get_temp_dir();
        }
        
        if ($tempPath && DIRECTORY_SEPARATOR !== '/') {
            $tempPath = str_replace('/', DIRECTORY_SEPARATOR, $tempPath);
        }
        return $tempPath;
    }

    /**
     * (Make &) Get upload taget dirctory hash
     *
     * @param string $baseTargetHash
     * @param string $path
     * @param array  $result
     *
     * @return boolean|string
     * @author Naoki Sawada
     */
    public function getUploadTaget($baseTargetHash, $path, & $result)
    {
        $base = $this->decode($baseTargetHash);
        $targetHash = $baseTargetHash;
        $path = ltrim($path, $this->separator);
        $dirs = explode($this->separator, $path);
        array_pop($dirs);
        foreach ($dirs as $dir) {
            $targetPath = $this->joinPathCE($base, $dir);
            if (!$_realpath = $this->realpath($this->encode($targetPath))) {
                if ($stat = $this->mkdir($targetHash, $dir)) {
                    $result['added'][] = $stat;
                    $targetHash = $stat['hash'];
                    $base = $this->decode($targetHash);
                } else {
                    return false;
                }
            } else {
                $targetHash = $this->encode($_realpath);
                if ($this->dir($targetHash)) {
                    $base = $this->decode($targetHash);
                } else {
                    return false;
                }
            }
        }
        return $targetHash;
    }

    /**
     * Return this uploadMaxSize value
     *
     * @return integer
     * @author Naoki Sawada
     */
    public function getUploadMaxSize()
    {
        return $this->uploadMaxSize;
    }

    public function setUploadOverwrite($var)
    {
        $this->uploadOverwrite = (bool)$var;
    }

    /**
     * Image file utility
     *
     * @param string $mode    'resize', 'rotate', 'propresize', 'crop', 'fitsquare'
     * @param string $src     Image file local path
     * @param array  $options excute options
     *
     * @return bool
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function imageUtil($mode, $src, $options = array())
    {
        if (!isset($options['jpgQuality'])) {
            $options['jpgQuality'] = intval($this->options['jpgQuality']);
        }
        if (!isset($options['bgcolor'])) {
            $options['bgcolor'] = '#ffffff';
        }
        if (!isset($options['bgColorFb'])) {
            $options['bgColorFb'] = $this->options['bgColorFb'];
        }
        $destformat = !empty($options['destformat'])? $options['destformat'] : null;

        // check 'width' ,'height'
        if (in_array($mode, array('resize', 'propresize', 'crop', 'fitsquare'))) {
            if (empty($options['width']) || empty($options['height'])) {
                return false;
            }
        }

        if (!empty($options['checkAnimated'])) {
            if ($this->imgLib !== 'imagick' && $this->imgLib !== 'convert') {
                if (elFinder::isAnimationGif($src)) {
                    return false;
                }
            }
            if (elFinder::isAnimationPng($src)) {
                return false;
            }
        }

        switch ($mode) {
            case 'rotate':
                if (empty($options['degree'])) {
                    return true;
                }
                return (bool)$this->imgRotate($src, $options['degree'], $options['bgColorFb'], $destformat, $options['jpgQuality']);

            case 'resize':
                return (bool)$this->imgResize($src, $options['width'], $options['height'], false, true, $destformat, $options['jpgQuality'], $options);

            case 'propresize':
                return (bool)$this->imgResize($src, $options['width'], $options['height'], true, true, $destformat, $options['jpgQuality'], $options);

            case 'crop':
                if (isset($options['x']) && isset($options['y'])) {
                    return (bool)$this->imgCrop($src, $options['width'], $options['height'], $options['x'], $options['y'], $destformat, $options['jpgQuality']);
                }
                break;

            case 'fitsquare':
                return (bool)$this->imgSquareFit($src, $options['width'], $options['height'], 'center', 'middle', $options['bgcolor'], $destformat, $options['jpgQuality']);

        }
        return false;
    }

    /**
     * Convert Video To Image by ffmpeg
     *
     * @param  string $file video source file path
     * @param  array  $stat file stat array
     * @param  object $self volume driver object
     * @param  int    $ss   start seconds
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function ffmpegToImg($file, $stat, $self, $ss = null)
    {
        $name = basename($file);
        $path = dirname($file);
        $tmp = $path . DIRECTORY_SEPARATOR . md5($name);
        // register auto delete on shutdown
        $GLOBALS['elFinderTempFiles'][$tmp] = true;
        if (rename($file, $tmp)) {
            if ($ss === null) {
                // specific start time by file name (xxx^[sec].[extention] - video^3.mp4)
                if (preg_match('/\^(\d+(?:\.\d+)?)\.[^.]+$/', $stat['name'], $_m)) {
                    $ss = $_m[1];
                } else {
                    $ss = $this->options['tmbVideoConvSec'];
                }
            }
            $cmd = sprintf(ELFINDER_FFMPEG_PATH . ' -i %s -ss 00:00:%.3f -vframes 1 -f image2 -- %s', escapeshellarg($tmp), $ss, escapeshellarg($file));
            $r = ($this->procExec($cmd) === 0);
            clearstatcache();
            if ($r && $ss > 0 && !file_exists($file)) {
                // Retry by half of $ss
                $ss = max(intval($ss / 2), 0);
                rename($tmp, $file);
                $r = $this->ffmpegToImg($file, $stat, $self, $ss);
            } else {
                unlink($tmp);
            }
            return $r;
        }
        return false;
    }

    /**
     * Creates a temporary file and return file pointer
     *
     * @return resource|boolean
     */
    public function tmpfile()
    {
        if ($tmp = $this->getTempFile()) {
            return fopen($tmp, 'wb');
        }
        return false;
    }

    /**
     * Save error message
     *
     * @param  array  error
     *
     * @return boolean false
     * @author Naoki Sawada
     **/
    protected function setError()
    {
        $this->error = array();
        $this->addError(func_get_args());
        return false;
    }

    /**
     * Add error message
     *
     * @param  array  error
     *
     * @return false
     * @author Dmitry(dio) Levashov
     **/
    protected function addError()
    {
        foreach (func_get_args() as $err) {
            if (is_array($err)) {
                foreach($err as $er) {
                    $this->addError($er);
                }
            } else {
                $this->error[] = (string)$err;
            }
        }
        return false;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /***************** server encoding support *******************/

    /**
     * Return parent directory path (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function dirnameCE($path)
    {
        $dirname = (!$this->encoding) ? $this->_dirname($path) : $this->convEncOut($this->_dirname($this->convEncIn($path)));
        // check to infinite loop prevention
        return ($dirname != $path) ? $dirname : '';
    }

    /**
     * Return file name (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function basenameCE($path)
    {
        return (!$this->encoding) ? $this->_basename($path) : $this->convEncOut($this->_basename($this->convEncIn($path)));
    }

    /**
     * Join dir name and file name and return full path. (with convert encoding)
     * Some drivers (db) use int as path - so we give to concat path to driver itself
     *
     * @param  string $dir  dir path
     * @param  string $name file name
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function joinPathCE($dir, $name)
    {
        return (!$this->encoding) ? $this->_joinPath($dir, $name) : $this->convEncOut($this->_joinPath($this->convEncIn($dir), $this->convEncIn($name)));
    }

    /**
     * Return normalized path (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function normpathCE($path)
    {
        return (!$this->encoding) ? $this->_normpath($path) : $this->convEncOut($this->_normpath($this->convEncIn($path)));
    }

    /**
     * Return file path related to root dir (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function relpathCE($path)
    {
        return (!$this->encoding) ? $this->_relpath($path) : $this->convEncOut($this->_relpath($this->convEncIn($path)));
    }

    /**
     * Convert path related to root dir into real path (with convert encoding)
     *
     * @param  string $path rel file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function abspathCE($path)
    {
        return (!$this->encoding) ? $this->_abspath($path) : $this->convEncOut($this->_abspath($this->convEncIn($path)));
    }

    /**
     * Return true if $path is children of $parent (with convert encoding)
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function inpathCE($path, $parent)
    {
        return (!$this->encoding) ? $this->_inpath($path, $parent) : $this->convEncOut($this->_inpath($this->convEncIn($path), $this->convEncIn($parent)));
    }

    /**
     * Open file and return file pointer (with convert encoding)
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @internal param bool $write open file for writing
     * @author   Naoki Sawada
     */
    protected function fopenCE($path, $mode = 'rb')
    {
        // check extra option for network stream pointer
        if (func_num_args() > 2) {
            $opts = func_get_arg(2);
        } else {
            $opts = array();
        }
        return (!$this->encoding) ? $this->_fopen($path, $mode, $opts) : $this->convEncOut($this->_fopen($this->convEncIn($path), $mode, $opts));
    }

    /**
     * Close opened file (with convert encoding)
     *
     * @param  resource $fp   file pointer
     * @param  string   $path file path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function fcloseCE($fp, $path = '')
    {
        return (!$this->encoding) ? $this->_fclose($fp, $path) : $this->convEncOut($this->_fclose($fp, $this->convEncIn($path)));
    }

    /**
     * Create new file and write into it from file pointer. (with convert encoding)
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Naoki Sawada
     **/
    protected function saveCE($fp, $dir, $name, $stat)
    {
        $res = (!$this->encoding) ? $this->_save($fp, $dir, $name, $stat) : $this->convEncOut($this->_save($fp, $this->convEncIn($dir), $this->convEncIn($name), $this->convEncIn($stat)));
        if ($res !== false) {
            $this->clearstatcache();
        }
        return $res;
    }

    /**
     * Return true if path is dir and has at least one childs directory (with convert encoding)
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function subdirsCE($path)
    {
        if ($this->sessionCaching['subdirs']) {
            if (isset($this->sessionCache['subdirs'][$path]) && !$this->isMyReload()) {
                return $this->sessionCache['subdirs'][$path];
            }
        }
        $hasdir = (bool)((!$this->encoding) ? $this->_subdirs($path) : $this->convEncOut($this->_subdirs($this->convEncIn($path))));
        $this->updateSubdirsCache($path, $hasdir);
        return $hasdir;
    }

    /**
     * Return files list in directory (with convert encoding)
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function scandirCE($path)
    {
        return (!$this->encoding) ? $this->_scandir($path) : $this->convEncOut($this->_scandir($this->convEncIn($path)));
    }

    /**
     * Create symlink (with convert encoding)
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function symlinkCE($source, $targetDir, $name)
    {
        return (!$this->encoding) ? $this->_symlink($source, $targetDir, $name) : $this->convEncOut($this->_symlink($this->convEncIn($source), $this->convEncIn($targetDir), $this->convEncIn($name)));
    }

    /***************** paths *******************/

    /**
     * Encode path into hash
     *
     * @param  string  file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    protected function encode($path)
    {
        if ($path !== '') {

            // cut ROOT from $path for security reason, even if hacker decodes the path he will not know the root
            $p = $this->relpathCE($path);
            // if reqesting root dir $path will be empty, then assign '/' as we cannot leave it blank for crypt
            if ($p === '') {
                $p = $this->separator;
            }
            // change separator
            if ($this->separatorForHash) {
                $p = str_replace($this->separator, $this->separatorForHash, $p);
            }
            // TODO crypt path and return hash
            $hash = $this->crypt($p);
            // hash is used as id in HTML that means it must contain vaild chars
            // make base64 html safe and append prefix in begining
            $hash = strtr(base64_encode($hash), '+/=', '-_.');
            // remove dots '.' at the end, before it was '=' in base64
            $hash = rtrim($hash, '.');
            // append volume id to make hash unique
            return $this->id . $hash;
        }
        //TODO: Add return statement here
    }

    /**
     * Decode path from hash
     *
     * @param  string  file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    protected function decode($hash)
    {
        if (strpos($hash, $this->id) === 0) {
            // cut volume id after it was prepended in encode
            $h = substr($hash, strlen($this->id));
            // replace HTML safe base64 to normal
            $h = base64_decode(strtr($h, '-_.', '+/='));
            // TODO uncrypt hash and return path
            $path = $this->uncrypt($h);
            // change separator
            if ($this->separatorForHash) {
                $path = str_replace($this->separatorForHash, $this->separator, $path);
            }
            // append ROOT to path after it was cut in encode
            return $this->abspathCE($path);//$this->root.($path === $this->separator ? '' : $this->separator.$path);
        }
        return '';
    }

    /**
     * Return crypted path
     * Not implemented
     *
     * @param  string  path
     *
     * @return mixed
     * @author Dmitry (dio) Levashov
     **/
    protected function crypt($path)
    {
        return $path;
    }

    /**
     * Return uncrypted path
     * Not implemented
     *
     * @param  mixed  hash
     *
     * @return mixed
     * @author Dmitry (dio) Levashov
     **/
    protected function uncrypt($hash)
    {
        return $hash;
    }

    /**
     * Validate file name based on $this->options['acceptedName'] regexp or function
     *
     * @param  string $name file name
     * @param  bool   $isDir
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function nameAccepted($name, $isDir = false)
    {
        if (json_encode($name) === false) {
            return false;
        }
        $nameValidator = $isDir ? $this->dirnameValidator : $this->nameValidator;
        if ($nameValidator) {
            if (is_callable($nameValidator)) {
                $res = call_user_func($nameValidator, $name);
                return $res;
            }
            if (preg_match($nameValidator, '') !== false) {
                return preg_match($nameValidator, $name);
            }
        }
        return true;
    }

    /**
     * Return session rootstat cache key
     *
     * @return string
     */
    protected function getRootstatCachekey()
    {
        return md5($this->root . (isset($this->options['alias']) ? $this->options['alias'] : ''));
    }

    /**
     * Return new unique name based on file name and suffix
     *
     * @param         $dir
     * @param         $name
     * @param  string $suffix suffix append to name
     * @param bool    $checkNum
     * @param int     $start
     *
     * @return string
     * @internal param string $path file path
     * @author   Dmitry (dio) Levashov
     */
    public function uniqueName($dir, $name, $suffix = ' copy', $checkNum = true, $start = 1)
    {
        static $lasts = null;

        if ($lasts === null) {
            $lasts = array();
        }

        $ext = '';

        $splits = elFinder::splitFileExtention($name);
        if ($splits[1]) {
            $ext = '.' . $splits[1];
            $name = $splits[0];
        }

        if ($checkNum && preg_match('/(' . preg_quote($suffix, '/') . ')(\d*)$/i', $name, $m)) {
            $i = (int)$m[2];
            $name = substr($name, 0, strlen($name) - strlen($m[2]));
        } else {
            $i = $start;
            $name .= $suffix;
        }
        $max = $i + 100000;

        if (isset($lasts[$name])) {
            $i = max($i, $lasts[$name]);
        }

        while ($i <= $max) {
            $n = $name . ($i > 0 ? sprintf($this->options['uniqueNumFormat'], $i) : '') . $ext;

            if (!$this->isNameExists($this->joinPathCE($dir, $n))) {
                $this->clearcache();
                $lasts[$name] = ++$i;
                return $n;
            }
            $i++;
        }
        return $name . md5($dir) . $ext;
    }

    /**
     * Converts character encoding from UTF-8 to server's one
     *
     * @param  mixed  $var           target string or array var
     * @param  bool   $restoreLocale do retore global locale, default is false
     * @param  string $unknown       replaces character for unknown
     *
     * @return mixed
     * @author Naoki Sawada
     */
    public function convEncIn($var = null, $restoreLocale = false, $unknown = '_')
    {
        return (!$this->encoding) ? $var : $this->convEnc($var, 'UTF-8', $this->encoding, $this->options['locale'], $restoreLocale, $unknown);
    }

    /**
     * Converts character encoding from server's one to UTF-8
     *
     * @param  mixed  $var           target string or array var
     * @param  bool   $restoreLocale do retore global locale, default is true
     * @param  string $unknown       replaces character for unknown
     *
     * @return mixed
     * @author Naoki Sawada
     */
    public function convEncOut($var = null, $restoreLocale = true, $unknown = '_')
    {
        return (!$this->encoding) ? $var : $this->convEnc($var, $this->encoding, 'UTF-8', $this->options['locale'], $restoreLocale, $unknown);
    }

    /**
     * Converts character encoding (base function)
     *
     * @param  mixed  $var     target string or array var
     * @param  string $from    from character encoding
     * @param  string $to      to character encoding
     * @param  string $locale  local locale
     * @param         $restoreLocale
     * @param  string $unknown replaces character for unknown
     *
     * @return mixed
     */
    protected function convEnc($var, $from, $to, $locale, $restoreLocale, $unknown = '_')
    {
        if (strtoupper($from) !== strtoupper($to)) {
            if ($locale) {
                setlocale(LC_ALL, $locale);
            }
            if (is_array($var)) {
                $_ret = array();
                foreach ($var as $_k => $_v) {
                    $_ret[$_k] = $this->convEnc($_v, $from, $to, '', false, $unknown = '_');
                }
                $var = $_ret;
            } else {
                $_var = false;
                if (is_string($var)) {
                    $_var = $var;
                    $errlev = error_reporting();
                    error_reporting($errlev ^ E_NOTICE);
                    if (false !== ($_var = iconv($from, $to . '//TRANSLIT', $_var))) {
                        $_var = str_replace('?', $unknown, $_var);
                    }
                    error_reporting($errlev);
                }
                if ($_var !== false) {
                    $var = $_var;
                }
            }
            if ($restoreLocale) {
                setlocale(LC_ALL, elFinder::$locale);
            }
        }
        return $var;
    }

    /**
     * Normalize MIME-Type by options['mimeMap']
     *
     * @param      string $type MIME-Type
     * @param      string $name Filename
     * @param      string $ext  File extention without first dot (optional)
     *
     * @return     string  Normalized MIME-Type
     */
    public function mimeTypeNormalize($type, $name, $ext = '')
    {
        if ($ext === '') {
            $ext = (false === $pos = strrpos($name, '.')) ? '' : substr($name, $pos + 1);
        }
        $_checkKey = strtolower($ext . ':' . $type);
        if ($type === '') {
            $_keylen = strlen($_checkKey);
            foreach ($this->options['mimeMap'] as $_key => $_type) {
                if (substr($_key, 0, $_keylen) === $_checkKey) {
                    $type = $_type;
                    break;
                }
            }
        } else if (isset($this->options['mimeMap'][$_checkKey])) {
            $type = $this->options['mimeMap'][$_checkKey];
        } else {
            $_checkKey = strtolower($ext . ':*');
            if (isset($this->options['mimeMap'][$_checkKey])) {
                $type = $this->options['mimeMap'][$_checkKey];
            } else {
                $_checkKey = strtolower('*:' . $type);
                if (isset($this->options['mimeMap'][$_checkKey])) {
                    $type = $this->options['mimeMap'][$_checkKey];
                }
            }
        }
        return $type;
    }

    /*********************** util mainly for inheritance class *********************/

    /**
     * Get temporary filename. Tempfile will be removed when after script execution finishes or exit() is called.
     * When needing the unique file to a path, give $path to parameter.
     *
     * @param  string $path for get unique file to a path
     *
     * @return string|false
     * @author Naoki Sawada
     */
    protected function getTempFile($path = '')
    {
        static $cache = array();

        $key = '';
        if ($path !== '') {
            $key = $this->id . '#' . $path;
            if (isset($cache[$key])) {
                return $cache[$key];
            }
        }

        if ($tmpdir = $this->getTempPath()) {
            $name = tempnam($tmpdir, 'ELF');
            if ($key) {
                $cache[$key] = $name;
            }
            // register auto delete on shutdown
            $GLOBALS['elFinderTempFiles'][$name] = true;
            return $name;
        }

        return false;
    }

    /**
     * File path of local server side work file path
     *
     * @param  string $path path need convert encoding to server encoding
     *
     * @return string
     * @author Naoki Sawada
     */
    protected function getWorkFile($path)
    {
        if ($wfp = $this->tmpfile()) {
            if ($fp = $this->_fopen($path)) {
                while (!feof($fp)) {
                    fwrite($wfp, fread($fp, 8192));
                }
                $info = stream_get_meta_data($wfp);
                fclose($wfp);
                if ($info && !empty($info['uri'])) {
                    return $info['uri'];
                }
            }
        }
        return false;
    }

    /**
     * Get image size array with `dimensions`
     *
     * @param string $path path need convert encoding to server encoding
     * @param string $mime file mime type
     *
     * @return array|false
     * @throws ImagickException
     * @throws elFinderAbortException
     */
    public function getImageSize($path, $mime = '')
    {
        $size = false;
        if ($mime === '' || strtolower(substr($mime, 0, 5)) === 'image') {
            if ($work = $this->getWorkFile($path)) {
                if ($size = getimagesize($work)) {
                    $size['dimensions'] = $size[0] . 'x' . $size[1];
                    $srcfp = fopen($work, 'rb');
                    $cArgs = elFinder::$currentArgs;
                    if (!empty($cArgs['target']) && $subImgLink = $this->getSubstituteImgLink($cArgs['target'], $size, $srcfp)) {
                        $size['url'] = $subImgLink;
                    }
                }
            }
            is_file($work) && unlink($work);
        }
        return $size;
    }

    /**
     * Delete dirctory trees
     *
     * @param string $localpath path need convert encoding to server encoding
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function delTree($localpath)
    {
        foreach ($this->_scandir($localpath) as $p) {
            elFinder::checkAborted();
            $stat = $this->stat($this->convEncOut($p));
            $this->convEncIn();
            ($stat['mime'] === 'directory') ? $this->delTree($p) : $this->_unlink($p);
        }
        $res = $this->_rmdir($localpath);
        $res && $this->clearstatcache();
        return $res;
    }

    /**
     * Copy items to a new temporary directory on the local server
     *
     * @param  array  $hashes  target hashes
     * @param  string $dir     destination directory (for recurcive)
     * @param  string $canLink it can use link() (for recurcive)
     *
     * @return string|false    saved path name
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function getItemsInHand($hashes, $dir = null, $canLink = null)
    {
        static $banChrs = null;
        static $totalSize = 0;

        if  (is_null($banChrs)) {
            $banChrs = DIRECTORY_SEPARATOR !== '/'? array('\\', '/', ':', '*', '?', '"', '<', '>', '|') : array('\\', '/');
        }

        if (is_null($dir)) {
            $totalSize = 0;
            if (!$tmpDir = $this->getTempPath()) {
                return false;
            }
            $dir = tempnam($tmpDir, 'elf');
            if (!unlink($dir) || !mkdir($dir, 0700, true)) {
                return false;
            }
            register_shutdown_function(array($this, 'rmdirRecursive'), $dir);
        }
        if (is_null($canLink)) {
            $canLink = ($this instanceof elFinderVolumeLocalFileSystem);
        }
        elFinder::checkAborted();
        $res = true;
        $files = array();
        foreach ($hashes as $hash) {
            if (($file = $this->file($hash)) == false) {
                continue;
            }
            if (!$file['read']) {
                continue;
            }

            $name = $file['name'];
            // remove ctrl characters
            $name = preg_replace('/[[:cntrl:]]+/', '', $name);
            // replace ban characters
            $name = str_replace($banChrs, '_', $name);

            // for call from search results
            if (isset($files[$name])) {
                $name = preg_replace('/^(.*?)(\..*)?$/', '$1_' . $files[$name]++ . '$2', $name);
            } else {
                $files[$name] = 1;
            }
            $target = $dir . DIRECTORY_SEPARATOR . $name;

            if ($file['mime'] === 'directory') {
                $chashes = array();
                $_files = $this->scandir($hash);
                foreach ($_files as $_file) {
                    if ($file['read']) {
                        $chashes[] = $_file['hash'];
                    }
                }
                if (($res = mkdir($target, 0700, true)) && $chashes) {
                    $res = $this->getItemsInHand($chashes, $target, $canLink);
                }
                if (!$res) {
                    break;
                }
                !empty($file['ts']) && touch($target, $file['ts']);
            } else {
                $path = $this->decode($hash);
                if (!$canLink || !($canLink = $this->localFileSystemSymlink($path, $target))) {
                    if (file_exists($target)) {
                        unlink($target);
                    }
                    if ($fp = $this->fopenCE($path)) {
                        if ($tfp = fopen($target, 'wb')) {
                            $totalSize += stream_copy_to_stream($fp, $tfp);
                            fclose($tfp);
                        }
                        !empty($file['ts']) && touch($target, $file['ts']);
                        $this->fcloseCE($fp, $path);
                    }
                } else {
                    $totalSize += filesize($path);
                }
                if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $totalSize) {
                    $res = $this->setError(elFinder::ERROR_ARC_MAXSIZE);
                }
            }
        }
        return $res ? $dir : false;
    }

    /*********************** file stat *********************/

    /**
     * Check file attribute
     *
     * @param  string $path  file path
     * @param  string $name  attribute name (read|write|locked|hidden)
     * @param  bool   $val   attribute value returned by file system
     * @param  bool   $isDir path is directory (true: directory, false: file)
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function attr($path, $name, $val = null, $isDir = null)
    {
        if (!isset($this->defaults[$name])) {
            return false;
        }

        $relpath = $this->relpathCE($path);
        if ($this->separator !== '/') {
            $relpath = str_replace($this->separator, '/', $relpath);
        }
        $relpath = '/' . $relpath;

        $perm = null;

        if ($this->access) {
            $perm = call_user_func($this->access, $name, $path, $this->options['accessControlData'], $this, $isDir, $relpath);
            if ($perm !== null) {
                return !!$perm;
            }
        }

        foreach ($this->attributes as $attrs) {
            if (isset($attrs[$name]) && isset($attrs['pattern']) && preg_match($attrs['pattern'], $relpath)) {
                $perm = $attrs[$name];
                break;
            }
        }

        return $perm === null ? (is_null($val) ? $this->defaults[$name] : $val) : !!$perm;
    }

    /**
     * Return true if file with given name can be created in given folder.
     *
     * @param string $dir  parent dir path
     * @param string $name new file name
     * @param null   $isDir
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function allowCreate($dir, $name, $isDir = null)
    {
        return $this->attr($this->joinPathCE($dir, $name), 'write', true, $isDir);
    }

    /**
     * Return true if file MIME type can save with check uploadOrder config.
     *
     * @param string $mime
     *
     * @return boolean
     */
    protected function allowPutMime($mime)
    {
        // logic based on http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
        $allow = $this->mimeAccepted($mime, $this->uploadAllow, null);
        $deny = $this->mimeAccepted($mime, $this->uploadDeny, null);
        if (strtolower($this->uploadOrder[0]) == 'allow') { // array('allow', 'deny'), default is to 'deny'
            $res = false; // default is deny
            if (!$deny && ($allow === true)) { // match only allow
                $res = true;
            }// else (both match | no match | match only deny) { deny }
        } else { // array('deny', 'allow'), default is to 'allow' - this is the default rule
            $res = true; // default is allow
            if (($deny === true) && !$allow) { // match only deny
                $res = false;
            } // else (both match | no match | match only allow) { allow }
        }
        return $res;
    }

    /**
     * Return fileinfo
     *
     * @param  string $path file cache
     *
     * @return array|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function stat($path)
    {
        if ($path === false || is_null($path)) {
            return false;
        }
        $is_root = ($path == $this->root);
        if ($is_root) {
            $rootKey = $this->getRootstatCachekey();
            if ($this->sessionCaching['rootstat'] && !isset($this->sessionCache['rootstat'])) {
                $this->sessionCache['rootstat'] = array();
            }
            if (!isset($this->cache[$path]) && !$this->isMyReload()) {
                // need $path as key for netmount/netunmount
                if ($this->sessionCaching['rootstat'] && isset($this->sessionCache['rootstat'][$rootKey])) {
                    if ($ret = $this->sessionCache['rootstat'][$rootKey]) {
                        if ($this->options['rootRev'] === $ret['rootRev']) {
                            if (isset($this->options['phash'])) {
                                $ret['isroot'] = 1;
                                $ret['phash'] = $this->options['phash'];
                            }
                            return $ret;
                        }
                    }
                }
            }
        }
        $rootSessCache = false;
        if (isset($this->cache[$path])) {
            $ret = $this->cache[$path];
        } else {
            if ($is_root && !empty($this->options['rapidRootStat']) && is_array($this->options['rapidRootStat']) && !$this->needOnline) {
                $ret = $this->updateCache($path, $this->options['rapidRootStat'], true);
            } else {
                $ret = $this->updateCache($path, $this->convEncOut($this->_stat($this->convEncIn($path))), true);
                if ($is_root && !empty($rootKey) && $this->sessionCaching['rootstat']) {
                    $rootSessCache = true;
                }
            }
        } 
        if ($is_root) {
            if ($ret) {
                $this->rootModified = false;
                if ($rootSessCache) {
                    $this->sessionCache['rootstat'][$rootKey] = $ret;
                }
                if (isset($this->options['phash'])) {
                    $ret['isroot'] = 1;
                    $ret['phash'] = $this->options['phash'];
                }
            } else if (!empty($rootKey) && $this->sessionCaching['rootstat']) {
                unset($this->sessionCache['rootstat'][$rootKey]);
            }
        }
        return $ret;
    }

    /**
     * Get root stat extra key values
     *
     * @return array stat extras
     * @author Naoki Sawada
     */
    protected function getRootStatExtra()
    {
        $stat = array();
        if ($this->rootName) {
            $stat['name'] = $this->rootName;
        }
        $stat['rootRev'] = $this->options['rootRev'];
        $stat['options'] = $this->options(null);
        return $stat;
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers
     *
     * @param  string $path file cache
     *
     * @return array
     */
    protected function isNameExists($path)
    {
        return $this->stat($path);
    }

    /**
     * Put file stat in cache and return it
     *
     * @param  string $path file path
     * @param  array  $stat file stat
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function updateCache($path, $stat)
    {
        if (empty($stat) || !is_array($stat)) {
            return $this->cache[$path] = array();
        }

        if (func_num_args() > 2) {
            $fromStat = func_get_arg(2);
        } else {
            $fromStat = false;
        }

        $stat['hash'] = $this->encode($path);

        $root = $path == $this->root;
        $parent = '';

        if ($root) {
            $stat = array_merge($stat, $this->getRootStatExtra());
        } else {
            if (!isset($stat['name']) || $stat['name'] === '') {
                $stat['name'] = $this->basenameCE($path);
            }
            if (empty($stat['phash'])) {
                $parent = $this->dirnameCE($path);
                $stat['phash'] = $this->encode($parent);
            } else {
                $parent = $this->decode($stat['phash']);
            }
        }

        // name check
        if (isset($stat['name']) && !$jeName = json_encode($stat['name'])) {
            return $this->cache[$path] = array();
        }
        // fix name if required
        if ($this->options['utf8fix'] && $this->options['utf8patterns'] && $this->options['utf8replace']) {
            $stat['name'] = json_decode(str_replace($this->options['utf8patterns'], $this->options['utf8replace'], $jeName));
        }

        if (!isset($stat['size'])) {
            $stat['size'] = 'unknown';
        }

        $mime = isset($stat['mime']) ? $stat['mime'] : '';
        if ($isDir = ($mime === 'directory')) {
            $stat['volumeid'] = $this->id;
        } else {
            if (empty($stat['mime']) || $stat['size'] == 0) {
                $stat['mime'] = $this->mimetype($stat['name'], true, $stat['size'], $mime);
            } else {
                $stat['mime'] = $this->mimeTypeNormalize($stat['mime'], $stat['name']);
            }
        }

        $stat['read'] = intval($this->attr($path, 'read', isset($stat['read']) ? !!$stat['read'] : null, $isDir));
        $stat['write'] = intval($this->attr($path, 'write', isset($stat['write']) ? !!$stat['write'] : null, $isDir));
        if ($root) {
            $stat['locked'] = 1;
            if ($this->options['type'] !== '') {
                $stat['type'] = $this->options['type'];
            }
        } else {
            // lock when parent directory is not writable
            if (!isset($stat['locked'])) {
                $pstat = $this->stat($parent);
                if (isset($pstat['write']) && !$pstat['write']) {
                    $stat['locked'] = true;
                }
            }
            if ($this->attr($path, 'locked', isset($stat['locked']) ? !!$stat['locked'] : null, $isDir)) {
                $stat['locked'] = 1;
            } else {
                unset($stat['locked']);
            }
        }

        if ($root) {
            unset($stat['hidden']);
        } elseif ($this->attr($path, 'hidden', isset($stat['hidden']) ? !!$stat['hidden'] : null, $isDir)
            || !$this->mimeAccepted($stat['mime'])) {
            $stat['hidden'] = 1;
        } else {
            unset($stat['hidden']);
        }

        if ($stat['read'] && empty($stat['hidden'])) {

            if ($isDir) {
                // caching parent's subdirs
                if ($parent) {
                    $this->updateSubdirsCache($parent, true);
                }
                // for dir - check for subdirs
                if ($this->options['checkSubfolders']) {
                    if (!isset($stat['dirs']) && intval($this->options['checkSubfolders']) === -1) {
                        $stat['dirs'] = -1;
                    }
                    if (isset($stat['dirs'])) {
                        if ($stat['dirs']) {
                            if ($stat['dirs'] == -1) {
                                $stat['dirs'] = ($this->sessionCaching['subdirs'] && isset($this->sessionCache['subdirs'][$path])) ? (int)$this->sessionCache['subdirs'][$path] : -1;
                            } else {
                                $stat['dirs'] = 1;
                            }
                        } else {
                            unset($stat['dirs']);
                        }
                    } elseif (!empty($stat['alias']) && !empty($stat['target'])) {
                        $stat['dirs'] = isset($this->cache[$stat['target']])
                            ? intval(isset($this->cache[$stat['target']]['dirs']))
                            : $this->subdirsCE($stat['target']);

                    } elseif ($this->subdirsCE($path)) {
                        $stat['dirs'] = 1;
                    }
                } else {
                    $stat['dirs'] = 1;
                }
                if ($this->options['dirUrlOwn'] === true) {
                    // Set `null` to use the client option `commandsOptions.info.nullUrlDirLinkSelf = true`
                    $stat['url'] = null;
                } else if ($this->options['dirUrlOwn'] === 'hide') {
                    // to hide link in info dialog of the elFinder client
                    $stat['url'] = '';
                }
            } else {
                // for files - check for thumbnails
                $p = isset($stat['target']) ? $stat['target'] : $path;
                if ($this->tmbURL && !isset($stat['tmb']) && $this->canCreateTmb($p, $stat)) {
                    $tmb = $this->gettmb($p, $stat);
                    $stat['tmb'] = $tmb ? $tmb : 1;
                }

            }
            if (!isset($stat['url']) && $this->URL && $this->encoding) {
                $_path = $this->_getRelativePath($path);
                $_path = str_replace($this->separator, '/', $_path);
                $_path = (substr(PHP_OS, 0, 3) === 'WIN') ? $_path : $this->convEncIn($_path, true);
                $_path = str_replace('%2F', '/', rawurlencode($_path));
                $stat['url'] = $this->_buildFileUrl($_path);
            }
        } else {
            if ($isDir) {
                unset($stat['dirs']);
            }
        }

        if (!empty($stat['alias']) && !empty($stat['target'])) {
            $stat['thash'] = $this->encode($stat['target']);
            //$this->cache[$stat['target']] = $stat;
            unset($stat['target']);
        }

        $this->cache[$path] = $stat;

        if (!$fromStat && $root && $this->sessionCaching['rootstat']) {
            // to update session cache
            $this->stat($path);
        }

        return $stat;
    }

    /**
     * Get stat for folder content and put in cache
     *
     * @param  string $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        foreach ($this->scandirCE($path) as $p) {
            if (($stat = $this->stat($p)) && empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        $this->updateSubdirsCache($path, $hasDir);
    }

    /**
     * Clean cache
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    protected function clearcache()
    {
        $this->cache = $this->dirsCache = array();
    }

    /**
     * Return file mimetype
     *
     * @param  string      $path file path
     * @param  string|bool $name
     * @param  integer     $size
     * @param  string      $mime was notified from the volume driver
     *
     * @return string
     * @author Dmitry (dio) Levashov
     */
    protected function mimetype($path, $name = '', $size = null, $mime = null)
    {
        $type = '';
        $nameCheck = false;

        if ($name === '') {
            $name = $path;
        } else if ($name === true) {
            $name = $path;
            $nameCheck = true;
        }
        if (!$this instanceof elFinderVolumeLocalFileSystem) {
            $nameCheck = true;
        }
        $ext = (false === $pos = strrpos($name, '.')) ? '' : strtolower(substr($name, $pos + 1));
        if (!$nameCheck && $size === null) {
            $size = file_exists($path) ? filesize($path) : -1;
        }
        if (!$nameCheck && is_readable($path) && $size > 0) {
            // detecting by contents
            if ($this->mimeDetect === 'finfo') {
                $type = finfo_file($this->finfo, $path);
            } else if ($this->mimeDetect === 'mime_content_type') {
                $type = mime_content_type($path);
            }
            if ($type) {
                $type = explode(';', $type);
                $type = trim($type[0]);
                if ($ext && preg_match('~^application/(?:octet-stream|(?:x-)?zip|xml)$~', $type)) {
                    // load default MIME table file "mime.types"
                    if (!elFinderVolumeDriver::$mimetypesLoaded) {
                        elFinderVolumeDriver::loadMimeTypes();
                    }
                    if (isset(elFinderVolumeDriver::$mimetypes[$ext])) {
                        $type = elFinderVolumeDriver::$mimetypes[$ext];
                    }
                } else if ($ext === 'js' && preg_match('~^text/~', $type)) {
                    $type = 'text/javascript';
                }
            }
        }
        if (!$type) {
            // detecting by filename
            $type = elFinderVolumeDriver::mimetypeInternalDetect($name);
            if ($type === 'unknown') {
                if ($mime) {
                    $type = $mime;
                } else {
                    $type = ($size == 0) ? 'text/plain' : $this->options['mimeTypeUnknown'];
                }
            }
        }

        // mime type normalization
        $type = $this->mimeTypeNormalize($type, $name, $ext);

        return $type;
    }

    /**
     * Load file of mime.types
     *
     * @param string $mimeTypesFile The mime types file
     */
    static protected function loadMimeTypes($mimeTypesFile = '')
    {
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::$mimetypesLoaded = true;
            $file = false;
            if (!empty($mimeTypesFile) && file_exists($mimeTypesFile)) {
                $file = $mimeTypesFile;
            } elseif (elFinder::$defaultMimefile && file_exists(elFinder::$defaultMimefile)) {
                $file = elFinder::$defaultMimefile;
            } elseif (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mime.types')) {
                $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mime.types';
            } elseif (file_exists(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'mime.types')) {
                $file = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'mime.types';
            }

            if ($file && file_exists($file)) {
                $mimecf = file($file);

                foreach ($mimecf as $line_num => $line) {
                    if (!preg_match('/^\s*#/', $line)) {
                        $mime = preg_split('/\s+/', $line, -1, PREG_SPLIT_NO_EMPTY);
                        for ($i = 1, $size = count($mime); $i < $size; $i++) {
                            if (!isset(self::$mimetypes[$mime[$i]])) {
                                self::$mimetypes[$mime[$i]] = $mime[0];
                            }
                        }
                    }
                }
            }
        }
    }

    /**
     * Detect file mimetype using "internal" method or Loading mime.types with $path = ''
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    static protected function mimetypeInternalDetect($path = '')
    {
        // load default MIME table file "mime.types"
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::loadMimeTypes();
        }
        $ext = '';
        if ($path) {
            $pinfo = pathinfo($path);
            $ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';
        }
        $res = ($ext && isset(elFinderVolumeDriver::$mimetypes[$ext])) ? elFinderVolumeDriver::$mimetypes[$ext] : 'unknown';
        // Recursive check if MIME type is unknown with multiple extensions
        if ($res === 'unknown' && strpos($pinfo['filename'], '.')) {
            return elFinderVolumeDriver::mimetypeInternalDetect($pinfo['filename']);
        } else {
            return $res;
        }
    }

    /**
     * Return file/total directory size infomation
     *
     * @param  string $path file path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function countSize($path)
    {

        elFinder::checkAborted();

        $result = array('size' => 0, 'files' => 0, 'dirs' => 0);
        $stat = $this->stat($path);

        if (empty($stat) || !$stat['read'] || !empty($stat['hidden'])) {
            $result['size'] = 'unknown';
            return $result;
        }

        if ($stat['mime'] !== 'directory') {
            $result['size'] = intval($stat['size']);
            $result['files'] = 1;
            return $result;
        }

        $result['dirs'] = 1;
        $subdirs = $this->options['checkSubfolders'];
        $this->options['checkSubfolders'] = true;
        foreach ($this->getScandir($path) as $stat) {
            if ($isDir = ($stat['mime'] === 'directory' && $stat['read'])) {
                ++$result['dirs'];
            } else {
                ++$result['files'];
            }
            $res = $isDir
                ? $this->countSize($this->decode($stat['hash']))
                : (isset($stat['size']) ? array('size' => intval($stat['size'])) : array());
            if (!empty($res['size']) && is_numeric($res['size'])) {
                $result['size'] += $res['size'];
            }
            if (!empty($res['files']) && is_numeric($res['files'])) {
                $result['files'] += $res['files'];
            }
            if (!empty($res['dirs']) && is_numeric($res['dirs'])) {
                $result['dirs'] += $res['dirs'];
                --$result['dirs'];
            }
        }
        $this->options['checkSubfolders'] = $subdirs;
        return $result;
    }

    /**
     * Return true if all mimes is directory or files
     *
     * @param  string $mime1 mimetype
     * @param  string $mime2 mimetype
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function isSameType($mime1, $mime2)
    {
        return ($mime1 == 'directory' && $mime1 == $mime2) || ($mime1 != 'directory' && $mime2 != 'directory');
    }

    /**
     * If file has required attr == $val - return file path,
     * If dir has child with has required attr == $val - return child path
     *
     * @param  string $path file path
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function closestByAttr($path, $attr, $val)
    {
        $stat = $this->stat($path);

        if (empty($stat)) {
            return false;
        }

        $v = isset($stat[$attr]) ? $stat[$attr] : false;

        if ($v == $val) {
            return $path;
        }

        return $stat['mime'] == 'directory'
            ? $this->childsByAttr($path, $attr, $val)
            : false;
    }

    /**
     * Return first found children with required attr == $val
     *
     * @param  string $path file path
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function childsByAttr($path, $attr, $val)
    {
        foreach ($this->scandirCE($path) as $p) {
            if (($_p = $this->closestByAttr($p, $attr, $val)) != false) {
                return $_p;
            }
        }
        return false;
    }

    protected function isMyReload($target = '', $ARGtarget = '')
    {
        if ($this->rootModified || (!empty($this->ARGS['cmd']) && $this->ARGS['cmd'] === 'parents')) {
            return true;
        }
        if (!empty($this->ARGS['reload'])) {
            if ($ARGtarget === '') {
                $ARGtarget = isset($this->ARGS['target']) ? $this->ARGS['target']
                    : ((isset($this->ARGS['targets']) && is_array($this->ARGS['targets']) && count($this->ARGS['targets']) === 1) ?
                        $this->ARGS['targets'][0] : '');
            }
            if ($ARGtarget !== '') {
                $ARGtarget = strval($ARGtarget);
                if ($target === '') {
                    return (strpos($ARGtarget, $this->id) === 0);
                } else {
                    $target = strval($target);
                    return ($target === $ARGtarget);
                }
            }
        }
        return false;
    }

    /**
     * Update subdirs cache data
     *
     * @param string $path
     * @param bool   $subdirs
     *
     * @return void
     */
    protected function updateSubdirsCache($path, $subdirs)
    {
        if (isset($this->cache[$path])) {
            if ($subdirs) {
                $this->cache[$path]['dirs'] = 1;
            } else {
                unset($this->cache[$path]['dirs']);
            }
        }
        if ($this->sessionCaching['subdirs']) {
            $this->sessionCache['subdirs'][$path] = $subdirs;
        }
        if ($this->sessionCaching['rootstat'] && $path == $this->root) {
            unset($this->sessionCache['rootstat'][$this->getRootstatCachekey()]);
        }
    }

    /*****************  get content *******************/

    /**
     * Return required dir's files info.
     * If onlyMimes is set - return only dirs and files of required mimes
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function getScandir($path)
    {
        $files = array();

        !isset($this->dirsCache[$path]) && $this->cacheDir($path);

        foreach ($this->dirsCache[$path] as $p) {
            if (($stat = $this->stat($p)) && empty($stat['hidden'])) {
                $files[] = $stat;
            }
        }

        return $files;
    }


    /**
     * Return subdirs tree
     *
     * @param  string $path parent dir path
     * @param  int    $deep tree deep
     * @param string  $exclude
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function gettree($path, $deep, $exclude = '')
    {
        $dirs = array();

        !isset($this->dirsCache[$path]) && $this->cacheDir($path);

        foreach ($this->dirsCache[$path] as $p) {
            $stat = $this->stat($p);

            if ($stat && empty($stat['hidden']) && $p != $exclude && $stat['mime'] == 'directory') {
                $dirs[] = $stat;
                if ($deep > 0 && !empty($stat['dirs'])) {
                    $dirs = array_merge($dirs, $this->gettree($p, $deep - 1));
                }
            }
        }

        return $dirs;
    }

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function doSearch($path, $q, $mimes)
    {
        $result = array();
        $matchMethod = empty($this->doSearchCurrentQuery['matchMethod']) ? 'searchMatchName' : $this->doSearchCurrentQuery['matchMethod'];
        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        if ($timeout && $timeout < time()) {
            $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
            return $result;
        }

        foreach ($this->scandirCE($path) as $p) {
            elFinder::extendTimeLimit($this->options['searchTimeout'] + 30);

            if ($timeout && ($this->error || $timeout < time())) {
                !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
                break;
            }


            $stat = $this->stat($p);

            if (!$stat) { // invalid links
                continue;
            }

            if (!empty($stat['hidden']) || !$this->mimeAccepted($stat['mime'], $mimes)) {
                continue;
            }

            $name = $stat['name'];

            if ($this->doSearchCurrentQuery['excludes']) {
                foreach ($this->doSearchCurrentQuery['excludes'] as $exclude) {
                    if ($this->stripos($name, $exclude) !== false) {
                        continue 2;
                    }
                }
            }

            if ((!$mimes || $stat['mime'] !== 'directory') && $this->$matchMethod($name, $q, $p) !== false) {
                $stat['path'] = $this->path($stat['hash']);
                if ($this->URL && !isset($stat['url'])) {
                    $_path = $this->_getRelativePath($p);
                    $path = str_replace($this->separator, '/', $_path);
                    if ($this->encoding) {
                        $path = str_replace('%2F', '/', rawurlencode($this->convEncIn($path, true)));
                    } else {
                        $path = str_replace('%2F', '/', rawurlencode($path));
                    }
                    $stat['url'] = $this->_buildFileUrl($path);
                }

                $result[] = $stat;
            }
            if ($stat['mime'] == 'directory' && $stat['read'] && !isset($stat['alias'])) {
                if (!$this->options['searchExDirReg'] || !preg_match($this->options['searchExDirReg'], $p)) {
                    $result = array_merge($result, $this->doSearch($p, $q, $mimes));
                }
            }
        }

        return $result;
    }

    /**********************  manuipulations  ******************/

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param  string $src  source path
     * @param  string $dst  destination dir path
     * @param  string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function copy($src, $dst, $name)
    {

        elFinder::checkAborted();

        $srcStat = $this->stat($src);

        if (!empty($srcStat['thash'])) {
            $target = $this->decode($srcStat['thash']);
            if (!$this->inpathCE($target, $this->root)) {
                return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']), elFinder::ERROR_MKOUTLINK);
            }
            $stat = $this->stat($target);
            $this->clearcache();
            return $stat && $this->symlinkCE($target, $dst, $name)
                ? $this->joinPathCE($dst, $name)
                : $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
        }

        if ($srcStat['mime'] === 'directory') {
            $testStat = $this->isNameExists($this->joinPathCE($dst, $name));
            $this->clearcache();

            if (($testStat && $testStat['mime'] !== 'directory') || (!$testStat && !$testStat = $this->mkdir($this->encode($dst), $name))) {
                return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
            }

            $dst = $this->decode($testStat['hash']);

            // start time
            $stime = microtime(true);
            foreach ($this->getScandir($src) as $stat) {
                if (empty($stat['hidden'])) {
                    // current time
                    $ctime = microtime(true);
                    if (($ctime - $stime) > 2) {
                        $stime = $ctime;
                        elFinder::checkAborted();
                    }
                    $name = $stat['name'];
                    $_src = $this->decode($stat['hash']);
                    if (!$this->copy($_src, $dst, $name)) {
                        $this->remove($dst, true); // fall back
                        return $this->setError($this->error, elFinder::ERROR_COPY, $this->_path($src));
                    }
                }
            }

            $this->added[] = $testStat;

            return $dst;
        }

        if ($this->options['copyJoin']) {
            $test = $this->joinPathCE($dst, $name);
            if ($this->isNameExists($test)) {
                $this->remove($test);
            }
        }
        if ($res = $this->convEncOut($this->_copy($this->convEncIn($src), $this->convEncIn($dst), $this->convEncIn($name)))) {
            $path = is_string($res) ? $res : $this->joinPathCE($dst, $name);
            $this->clearstatcache();
            $this->added[] = $this->stat($path);
            return $path;
        }

        return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
    }

    /**
     * Move file
     * Return new file path or false.
     *
     * @param  string $src  source path
     * @param  string $dst  destination dir path
     * @param  string $name new file name
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function move($src, $dst, $name)
    {
        $stat = $this->stat($src);
        $stat['realpath'] = $src;
        $this->rmTmb($stat); // can not do rmTmb() after _move()
        $this->clearcache();

        $res = $this->convEncOut($this->_move($this->convEncIn($src), $this->convEncIn($dst), $this->convEncIn($name)));
        // if moving it didn't work try to copy / delete
        if (!$res) {
            if ($this->copy($src, $dst, $name)) {
                $res = $this->remove($src);
            }
        }

        if ($res) {
            $this->clearstatcache();
            if ($stat['mime'] === 'directory') {
                $this->updateSubdirsCache($dst, true);
            }
            $path = is_string($res) ? $res : $this->joinPathCE($dst, $name);
            $this->added[] = $this->stat($path);
            $this->removed[] = $stat;
            return $path;
        }

        return $this->setError(elFinder::ERROR_MOVE, $this->path($stat['hash']));
    }

    /**
     * Copy file from another volume.
     * Return new file path or false.
     *
     * @param  Object $volume      source volume
     * @param  string $src         source file hash
     * @param  string $destination destination dir path
     * @param  string $name        file name
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function copyFrom($volume, $src, $destination, $name)
    {

        elFinder::checkAborted();

        if (($source = $volume->file($src)) == false) {
            return $this->addError(elFinder::ERROR_COPY, '#' . $src, $volume->error());
        }

        $srcIsDir = ($source['mime'] === 'directory');

        $errpath = $volume->path($source['hash']);

        $errors = array();
        try {
            $thash = $this->encode($destination);
            elFinder::$instance->trigger('paste.copyfrom', array(&$thash, &$name, '', elFinder::$instance, $this), $errors);
        } catch (elFinderTriggerException $e) {
            return $this->addError(elFinder::ERROR_COPY, $name, $errors);
        }

        if (!$this->nameAccepted($name, $srcIsDir)) {
            return $this->addError(elFinder::ERROR_COPY, $name, $srcIsDir ? elFinder::ERROR_INVALID_DIRNAME : elFinder::ERROR_INVALID_NAME);
        }

        if (!$this->allowCreate($destination, $name, $srcIsDir)) {
            return $this->addError(elFinder::ERROR_COPY, $name, elFinder::ERROR_PERM_DENIED);
        }

        if (!$source['read']) {
            return $this->addError(elFinder::ERROR_COPY, $errpath, elFinder::ERROR_PERM_DENIED);
        }

        if ($srcIsDir) {
            $test = $this->isNameExists($this->joinPathCE($destination, $name));
            $this->clearcache();

            if (($test && $test['mime'] != 'directory') || (!$test && !$test = $this->mkdir($this->encode($destination), $name))) {
                return $this->addError(elFinder::ERROR_COPY, $errpath);
            }

            //$path = $this->joinPathCE($destination, $name);
            $path = $this->decode($test['hash']);

            foreach ($volume->scandir($src) as $entr) {
                $this->copyFrom($volume, $entr['hash'], $path, $entr['name']);
            }

            $this->added[] = $test;
        } else {
            // size check
            if (!isset($source['size']) || $source['size'] > $this->uploadMaxSize) {
                return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
            }

            // MIME check
            $mimeByName = $this->mimetype($source['name'], true);
            if ($source['mime'] === $mimeByName) {
                $mimeByName = '';
            }
            if (!$this->allowPutMime($source['mime']) || ($mimeByName && !$this->allowPutMime($mimeByName))) {
                return $this->addError(elFinder::ERROR_UPLOAD_FILE_MIME, $errpath);
            }

            if (strpos($source['mime'], 'image') === 0 && ($dim = $volume->dimensions($src))) {
                if (is_array($dim)) {
                    $dim = isset($dim['dim']) ? $dim['dim'] : null;
                }
                if ($dim) {
                    $s = explode('x', $dim);
                    $source['width'] = $s[0];
                    $source['height'] = $s[1];
                }
            }

            if (($fp = $volume->open($src)) == false
                || ($path = $this->saveCE($fp, $destination, $name, $source)) == false) {
                $fp && $volume->close($fp, $src);
                return $this->addError(elFinder::ERROR_COPY, $errpath);
            }
            $volume->close($fp, $src);

            $this->added[] = $this->stat($path);;
        }

        return $path;
    }

    /**
     * Remove file/ recursive remove dir
     *
     * @param  string $path  file path
     * @param  bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->relpathCE($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
        }

        // Symlink to a directory is reported as mime "directory"; unlink the link only (Filester/elFinder fix).
        $localPath = $this->convEncIn($path);
        if (is_link($localPath)) {
            if ($this->convEncOut(!$this->_unlink($localPath))) {
                return $this->setError(elFinder::ERROR_RM, $this->path($stat['hash']));
            }
            $this->clearstatcache();
            $this->removed[] = $stat;
            return true;
        }

        if ($stat['mime'] == 'directory' && empty($stat['thash'])) {
            $ret = $this->delTree($this->convEncIn($path));
            $this->convEncOut();
            if (!$ret) {
                return $this->setError(elFinder::ERROR_RM, $this->path($stat['hash']));
            }
        } else {
            if ($this->convEncOut(!$this->_unlink($this->convEncIn($path)))) {
                return $this->setError(elFinder::ERROR_RM, $this->path($stat['hash']));
            }
            $this->clearstatcache();
        }

        $this->removed[] = $stat;
        return true;
    }


    /************************* thumbnails **************************/

    /**
     * Return thumbnail file name for required file
     *
     * @param  array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        $name = $stat['hash'] . (isset($stat['ts']) ? $stat['ts'] : '') . '.png';
        if (strlen($name) > 255) {
            $name = $this->id . md5($stat['hash']) . $stat['ts'] . '.png';
        }
        return $name;
    }

    /**
     * Return thumnbnail name if exists
     *
     * @param  string $path file path
     * @param  array  $stat file stat
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function gettmb($path, $stat)
    {
        if ($this->tmbURL && $this->tmbPath) {
            // file itself thumnbnail
            if (strpos($path, $this->tmbPath) === 0) {
                return basename($path);
            }

            $name = $this->tmbname($stat);
            $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;
            if (file_exists($tmb)) {
                if ($this->options['tmbGcMaxlifeHour'] && $this->options['tmbGcPercentage'] > 0) {
                    touch($tmb);
                }
                return $name;
            }
        }
        return false;
    }

    /**
     * Return true if thumnbnail for required file can be created
     *
     * @param  string $path thumnbnail path
     * @param  array  $stat file stat
     * @param  bool   $checkTmbPath
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function canCreateTmb($path, $stat, $checkTmbPath = true)
    {
        static $gdMimes = null;
        static $imgmgPS = null;
        if ($gdMimes === null) {
            $_mimes = array('image/jpeg', 'image/png', 'image/gif', 'image/x-ms-bmp');
            if (function_exists('imagecreatefromwebp')) {
                $_mimes[] = 'image/webp';
            }
            $gdMimes = array_flip($_mimes);
            $imgmgPS = array_flip(array('application/postscript', 'application/pdf'));
        }
        if ((!$checkTmbPath || $this->tmbPathWritable)
            && (!$this->tmbPath || strpos($path, $this->tmbPath) === false) // do not create thumnbnail for thumnbnail
        ) {
            $mime = strtolower($stat['mime']);
            list($type) = explode('/', $mime);
            if (!empty($this->imgConverter)) {
                if (isset($this->imgConverter[$mime])) {
                    return true;
                }
                if (isset($this->imgConverter[$type])) {
                    return true;
                }
            }
            return $this->imgLib
                && (
                    ($type === 'image' && ($this->imgLib === 'gd' ? isset($gdMimes[$stat['mime']]) : true))
                    ||
                    (ELFINDER_IMAGEMAGICK_PS && isset($imgmgPS[$stat['mime']]) && $this->imgLib !== 'gd')
                );
        }
        return false;
    }

    /**
     * Return true if required file can be resized.
     * By default - the same as canCreateTmb
     *
     * @param  string $path thumnbnail path
     * @param  array  $stat file stat
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function canResize($path, $stat)
    {
        return $this->canCreateTmb($path, $stat, false);
    }

    /**
     * Create thumnbnail and return it's URL on success
     *
     * @param  string $path file path
     * @param         $stat
     *
     * @return false|string
     * @internal param string $mime file mime type
     * @throws elFinderAbortException
     * @throws ImagickException
     * @author   Dmitry (dio) Levashov
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        $maxlength = -1;
        $imgConverter = null;

        // check imgConverter
        $mime = strtolower($stat['mime']);
        list($type) = explode('/', $mime);
        if (isset($this->imgConverter[$mime])) {
            $imgConverter = $this->imgConverter[$mime]['func'];
            if (!empty($this->imgConverter[$mime]['maxlen'])) {
                $maxlength = intval($this->imgConverter[$mime]['maxlen']);
            }
        } else if (isset($this->imgConverter[$type])) {
            $imgConverter = $this->imgConverter[$type]['func'];
            if (!empty($this->imgConverter[$type]['maxlen'])) {
                $maxlength = intval($this->imgConverter[$type]['maxlen']);
            }
        }
        if ($imgConverter && !is_callable($imgConverter)) {
            return false;
        }

        // copy image into tmbPath so some drivers does not store files on local fs
        if (($src = $this->fopenCE($path, 'rb')) == false) {
            return false;
        }

        if (($trg = fopen($tmb, 'wb')) == false) {
            $this->fcloseCE($src, $path);
            return false;
        }

        stream_copy_to_stream($src, $trg, $maxlength);

        $this->fcloseCE($src, $path);
        fclose($trg);

        // call imgConverter
        if ($imgConverter) {
            if (!call_user_func_array($imgConverter, array($tmb, $stat, $this))) {
                file_exists($tmb) && unlink($tmb);
                return false;
            }
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if ($this->imgLib === 'imagick') {
            try {
                $imagickTest = new imagick($tmb . '[0]');
                $imagickTest->clear();
                $imagickTest = true;
            } catch (Exception $e) {
                $imagickTest = false;
            }
        }

        if (($this->imgLib === 'imagick' && !$imagickTest) || ($s = getimagesize($tmb)) === false) {
            if ($this->imgLib === 'imagick') {
                $bgcolor = $this->options['tmbBgColor'];
                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                try {
                    $imagick = new imagick();
                    $imagick->setBackgroundColor(new ImagickPixel($bgcolor));
                    $imagick->readImage($this->getExtentionByMime($stat['mime'], ':') . $tmb . '[0]');
                    try {
                        $imagick->trimImage(0);
                    } catch (Exception $e) {
                    }
                    $imagick->setImageFormat('png');
                    $imagick->writeImage($tmb);
                    $imagick->clear();
                    if (($s = getimagesize($tmb)) !== false) {
                        $result = true;
                    }
                } catch (Exception $e) {
                }
            } else if ($this->imgLib === 'convert') {
                $convParams = $this->imageMagickConvertPrepare($tmb, 'png', 100, array(), $stat['mime']);
                $cmd = sprintf('%s -colorspace sRGB -trim -- %s %s', ELFINDER_CONVERT_PATH, $convParams['quotedPath'], $convParams['quotedDstPath']);
                $result = false;
                if ($this->procExec($cmd) === 0) {
                    if (($s = getimagesize($tmb)) !== false) {
                        $result = true;
                    }
                }
            }
            if (!$result) {
                // fallback imgLib to GD
                if (function_exists('gd_info') && ($s = getimagesize($tmb))) {
                    $this->imgLib = 'gd';
                } else {
                    file_exists($tmb) && unlink($tmb);
                    return false;
                }
            }
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {

            if ($this->options['tmbCrop']) {

                $result = $tmb;
                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($result, $tmbSize, $tmbSize, $x, $y, 'png');
                } else {
                    $result = false;
                }

            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                if ($s = getimagesize($tmb)) {
                    if ($s[0] !== $tmbSize || $s[1] !== $tmbSize) {
                        $result = $this->imgSquareFit($result, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
                    }
                }
            }
        }

        if (!$result) {
            unlink($tmb);
            return false;
        }

        return $name;
    }

    /**
     * Resize image
     *
     * @param  string $path               image file
     * @param  int    $width              new width
     * @param  int    $height             new height
     * @param  bool   $keepProportions    crop image
     * @param  bool   $resizeByBiggerSide resize image based on bigger side if true
     * @param  string $destformat         image destination format
     * @param  int    $jpgQuality         JEPG quality (1-100)
     * @param  array  $options            Other extra options
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgResize($path, $width, $height, $keepProportions = false, $resizeByBiggerSide = true, $destformat = null, $jpgQuality = null, $options = array())
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        list($orig_w, $orig_h) = array($s[0], $s[1]);
        list($size_w, $size_h) = array($width, $height);

        if (empty($options['unenlarge']) || $orig_w > $size_w || $orig_h > $size_h) {
            if ($keepProportions == true) {
                /* Resizing by biggest side */
                if ($resizeByBiggerSide) {
                    if ($orig_w > $orig_h) {
                        $size_h = round($orig_h * $width / $orig_w);
                        $size_w = $width;
                    } else {
                        $size_w = round($orig_w * $height / $orig_h);
                        $size_h = $height;
                    }
                } else {
                    if ($orig_w > $orig_h) {
                        $size_w = round($orig_w * $height / $orig_h);
                        $size_h = $height;
                    } else {
                        $size_h = round($orig_h * $width / $orig_w);
                        $size_w = $width;
                    }
                }
            }
        } else {
            $size_w = $orig_w;
            $size_h = $orig_h;
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':

                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                // Imagick::FILTER_BOX faster than FILTER_LANCZOS so use for createTmb
                // resize bench: http://app-mgng.rhcloud.com/9
                // resize sample: http://www.dylanbeattie.net/magick/filters/result.html
                $filter = ($destformat === 'png' /* createTmb */) ? Imagick::FILTER_BOX : Imagick::FILTER_LANCZOS;

                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img = $img->coalesceImages();
                    do {
                        $img->resizeImage($size_w, $size_h, $filter, 1);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    if (strtoupper($img->getImageFormat()) === 'JPEG') {
                        $img->setImageCompression(imagick::COMPRESSION_JPEG);
                        $img->setImageCompressionQuality($jpgQuality);
                        if (isset($options['preserveExif']) && !$options['preserveExif']) {
                            try {
                                $orientation = $img->getImageOrientation();
                            } catch (ImagickException $e) {
                                $orientation = 0;
                            }
                            $img->stripImage();
                            if ($orientation) {
                                $img->setImageOrientation($orientation);
                            }
                        }
                        if ($this->options['jpgProgressive']) {
                            $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);
                        }
                    }
                    $img->resizeImage($size_w, $size_h, $filter, true);
                    if ($destformat) {
                        $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                    } else {
                        $result = $img->writeImage($path);
                    }
                }

                $img->clear();

                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                $filter = ($destformat === 'png' /* createTmb */) ? '-filter Box' : '-filter Lanczos';
                $strip = (isset($options['preserveExif']) && !$options['preserveExif']) ? ' -strip' : '';
                $cmd = sprintf('%s %s%s%s%s%s %s -geometry %dx%d! %s %s', ELFINDER_CONVERT_PATH, $quotedPath, $coalesce, $jpgQuality, $strip, $interlace, $filter, $size_w, $size_h, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($size_w, $size_h)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($size_w, $size_h))) {

                    $bgNum = false;
                    if ($s[2] === IMAGETYPE_GIF && (!$destformat || $destformat === 'gif')) {
                        $bgIdx = imagecolortransparent($img);
                        if ($bgIdx !== -1) {
                            $c = imagecolorsforindex($img, $bgIdx);
                            $bgNum = imagecolorallocate($tmp, $c['red'], $c['green'], $c['blue']);
                            imagefill($tmp, 0, 0, $bgNum);
                            imagecolortransparent($tmp, $bgNum);
                        }
                    }
                    if ($bgNum === false) {
                        $this->gdImageBackground($tmp, 'transparent');
                    }

                    if (!imagecopyresampled($tmp, $img, 0, 0, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;

                }
                break;
        }

        return false;
    }

    /**
     * Crop image
     *
     * @param  string $path       image file
     * @param  int    $width      crop width
     * @param  int    $height     crop height
     * @param  bool   $x          crop left offset
     * @param  bool   $y          crop top offset
     * @param  string $destformat image destination format
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgCrop($path, $width, $height, $x, $y, $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':

                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img = $img->coalesceImages();
                    do {
                        $img->setImagePage($s[0], $s[1], 0, 0);
                        $img->cropImage($width, $height, $x, $y);
                        $img->setImagePage($width, $height, 0, 0);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    $img->setImagePage($s[0], $s[1], 0, 0);
                    $img->cropImage($width, $height, $x, $y);
                    $img->setImagePage($width, $height, 0, 0);
                    $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                }

                $img->clear();

                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                $cmd = sprintf('%s %s%s%s%s -crop %dx%d+%d+%d%s %s', ELFINDER_CONVERT_PATH, $quotedPath, $coalesce, $jpgQuality, $interlace, $width, $height, $x, $y, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($width, $height)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($width, $height))) {

                    $bgNum = false;
                    if ($s[2] === IMAGETYPE_GIF && (!$destformat || $destformat === 'gif')) {
                        $bgIdx = imagecolortransparent($img);
                        if ($bgIdx !== -1) {
                            $c = imagecolorsforindex($img, $bgIdx);
                            $bgNum = imagecolorallocate($tmp, $c['red'], $c['green'], $c['blue']);
                            imagefill($tmp, 0, 0, $bgNum);
                            imagecolortransparent($tmp, $bgNum);
                        }
                    }
                    if ($bgNum === false) {
                        $this->gdImageBackground($tmp, 'transparent');
                    }

                    $size_w = $width;
                    $size_h = $height;

                    if ($s[0] < $width || $s[1] < $height) {
                        $size_w = $s[0];
                        $size_h = $s[1];
                    }

                    if (!imagecopy($tmp, $img, 0, 0, $x, $y, $size_w, $size_h)) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;

                }
                break;
        }

        return false;
    }

    /**
     * Put image to square
     *
     * @param  string    $path       image file
     * @param  int       $width      square width
     * @param  int       $height     square height
     * @param int|string $align      reserved
     * @param int|string $valign     reserved
     * @param  string    $bgcolor    square background color in #rrggbb format
     * @param  string    $destformat image destination format
     * @param  int       $jpgQuality JEPG quality (1-100)
     *
     * @return false|string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgSquareFit($path, $width, $height, $align = 'center', $valign = 'middle', $bgcolor = '#0000ff', $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        $result = false;

        /* Coordinates for image over square aligning */
        $y = ceil(abs($height - $s[1]) / 2);
        $x = ceil(abs($width - $s[0]) / 2);

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':
                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img1 = new Imagick();
                    $img1->setFormat('gif');
                    $img = $img->coalesceImages();
                    do {
                        $gif = new Imagick();
                        $gif->newImage($width, $height, new ImagickPixel($bgcolor));
                        $gif->setImageColorspace($img->getImageColorspace());
                        $gif->setImageFormat('gif');
                        $gif->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                        $gif->setImageDelay($img->getImageDelay());
                        $gif->setImageIterations($img->getImageIterations());
                        $img1->addImage($gif);
                        $gif->clear();
                    } while ($img->nextImage());
                    $img1->optimizeImageLayers();
                    $result = $img1->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    $img1 = new Imagick();
                    $img1->newImage($width, $height, new ImagickPixel($bgcolor));
                    $img1->setImageColorspace($img->getImageColorspace());
                    $img1->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                    $result = $this->imagickImage($img1, $path, $destformat, $jpgQuality);
                }

                $img1->clear();
                $img->clear();
                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $xcArg = escapeshellarg('xc:' . $bgcolor);
                $cmd = sprintf('%s -size %dx%d %s png:- | convert%s%s%s png:-  %s -geometry +%d+%d -compose over -composite%s %s', ELFINDER_CONVERT_PATH, $width, $height, $xcArg, $coalesce, $jpgQuality, $interlace, $quotedPath, $x, $y, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($width, $height)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($width, $height))) {

                    $this->gdImageBackground($tmp, $bgcolor);
                    if ($bgcolor === 'transparent' && ($destformat === 'png' || $s[2] === IMAGETYPE_PNG)) {
                        $bgNum = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
                        imagefill($tmp, 0, 0, $bgNum);
                    }

                    if (!imagecopy($tmp, $img, $x, $y, 0, 0, $s[0], $s[1])) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;
                }
                break;
        }

        return false;
    }

    /**
     * Rotate image
     *
     * @param  string $path       image file
     * @param  int    $degree     rotete degrees
     * @param  string $bgcolor    square background color in #rrggbb format
     * @param  string $destformat image destination format
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author nao-pon
     * @author Troex Nevelin
     */
    protected function imgRotate($path, $degree, $bgcolor = '#ffffff', $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false || $degree % 360 === 0) {
            return false;
        }

        $result = false;

        // try lossless rotate
        if ($degree % 90 === 0 && in_array($s[2], array(IMAGETYPE_JPEG, IMAGETYPE_JPEG2000))) {
            $count = ($degree / 90) % 4;
            $exiftran = array(
                1 => '-9',
                2 => '-1',
                3 => '-2'
            );
            $jpegtran = array(
                1 => '90',
                2 => '180',
                3 => '270'
            );
            $quotedPath = escapeshellarg($path);
            $cmds = array();
            if ($this->procExec(ELFINDER_EXIFTRAN_PATH . ' -h') === 0) {
                $cmds[] = ELFINDER_EXIFTRAN_PATH . ' -i ' . $exiftran[$count] . ' -- ' . $quotedPath;
            }
            if ($this->procExec(ELFINDER_JPEGTRAN_PATH . ' -version') === 0) {
                $cmds[] = ELFINDER_JPEGTRAN_PATH . ' -rotate ' . $jpegtran[$count] . ' -copy all -outfile ' . $quotedPath . ' -- ' . $quotedPath;
            }
            foreach ($cmds as $cmd) {
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                    break;
                }
            }
            if ($result) {
                return $path;
            }
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':
                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                if ($s[2] === IMAGETYPE_GIF || $s[2] === IMAGETYPE_PNG) {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                if ($img->getNumberImages() > 1) {
                    $img = $img->coalesceImages();
                    do {
                        $img->rotateImage(new ImagickPixel($bgcolor), $degree);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    $img->rotateImage(new ImagickPixel($bgcolor), $degree);
                    $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                }
                $img->clear();
                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                if ($s[2] === IMAGETYPE_GIF || $s[2] === IMAGETYPE_PNG) {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $bgArg = escapeshellarg($bgcolor);
                $cmd = sprintf('%s%s%s%s -background %s -rotate %d%s -- %s %s', ELFINDER_CONVERT_PATH, $coalesce, $jpgQuality, $interlace, $bgArg, $degree, $deconstruct, $quotedPath, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, $s));
                $img = $this->gdImageCreate($path, $s['mime']);

                $degree = 360 - $degree;

                $bgNum = -1;
                $bgIdx = false;
                if ($s[2] === IMAGETYPE_GIF) {
                    $bgIdx = imagecolortransparent($img);
                    if ($bgIdx !== -1) {
                        $c = imagecolorsforindex($img, $bgIdx);
                        $w = imagesx($img);
                        $h = imagesy($img);
                        $newImg = imagecreatetruecolor($w, $h);
                        imagepalettecopy($newImg, $img);
                        $bgNum = imagecolorallocate($newImg, $c['red'], $c['green'], $c['blue']);
                        imagefill($newImg, 0, 0, $bgNum);
                        imagecolortransparent($newImg, $bgNum);
                        imagecopy($newImg, $img, 0, 0, 0, 0, $w, $h);
                        imagedestroy($img);
                        $img = $newImg;
                        $newImg = null;
                    }
                } else if ($s[2] === IMAGETYPE_PNG) {
                    $bgNum = imagecolorallocatealpha($img, 255, 255, 255, 127);
                }
                if ($bgNum === -1) {
                    list($r, $g, $b) = sscanf($bgcolor, "#%02x%02x%02x");
                    $bgNum = imagecolorallocate($img, $r, $g, $b);
                }

                $tmp = imageRotate($img, $degree, $bgNum);
                if ($bgIdx !== -1) {
                    imagecolortransparent($tmp, $bgNum);
                }

                $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                imageDestroy($img);
                imageDestroy($tmp);

                return $result ? $path : false;

                break;
        }

        return false;
    }

    /**
     * Execute shell command
     *
     * @param  string $command      command line
     * @param  string $output       stdout strings
     * @param  int    $return_var   process exit code
     * @param  string $error_output stderr strings
     *
     * @return int exit code
     * @throws elFinderAbortException
     * @author Alexey Sukhotin
     */
    protected function procExec($command, &$output = '', &$return_var = -1, &$error_output = '', $cwd = null)
    {
        return elFinder::procExec($command, $output, $return_var, $error_output);
    }

    /**
     * Remove thumbnail, also remove recursively if stat is directory
     *
     * @param  array $stat file stat
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     * @author Troex Nevelin
     */
    protected function rmTmb($stat)
    {
        if ($this->tmbPathWritable) {
            if ($stat['mime'] === 'directory') {
                foreach ($this->scandirCE($this->decode($stat['hash'])) as $p) {
                    elFinder::extendTimeLimit(30);
                    $name = $this->basenameCE($p);
                    $name != '.' && $name != '..' && $this->rmTmb($this->stat($p));
                }
            } else if (!empty($stat['tmb']) && $stat['tmb'] != "1") {
                $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . rawurldecode($stat['tmb']);
                file_exists($tmb) && unlink($tmb);
                clearstatcache();
            }
        }
    }

    /**
     * Create an gd image according to the specified mime type
     *
     * @param string $path image file
     * @param string $mime
     *
     * @return resource|false GD image resource identifier
     */
    protected function gdImageCreate($path, $mime)
    {
        switch ($mime) {
            case 'image/jpeg':
                return imagecreatefromjpeg($path);

            case 'image/png':
                return imagecreatefrompng($path);

            case 'image/gif':
                return imagecreatefromgif($path);

            case 'image/x-ms-bmp':
                if (!function_exists('imagecreatefrombmp')) {
                    include_once dirname(__FILE__) . '/libs/GdBmp.php';
                }
                return imagecreatefrombmp($path);

            case 'image/xbm':
                return imagecreatefromxbm($path);

            case 'image/xpm':
                return imagecreatefromxpm($path);

            case 'image/webp':
                return imagecreatefromwebp($path);
        }
        return false;
    }

    /**
     * Output gd image to file
     *
     * @param resource $image      gd image resource
     * @param string   $filename   The path to save the file to.
     * @param string   $destformat The Image type to use for $filename
     * @param string   $mime       The original image mime type
     * @param int      $jpgQuality JEPG quality (1-100)
     *
     * @return bool
     */
    protected function gdImage($image, $filename, $destformat, $mime, $jpgQuality = null)
    {

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }
        if ($destformat) {
            switch ($destformat) {
                case 'jpg':
                    $mime = 'image/jpeg';
                    break;
                case 'gif':
                    $mime = 'image/gif';
                    break;
                case 'png':
                default:
                    $mime = 'image/png';
                    break;
            }
        }
        switch ($mime) {
            case 'image/gif':
                return imagegif($image, $filename);
            case 'image/jpeg':
                if ($this->options['jpgProgressive']) {
                    imageinterlace($image, true);
                }
                return imagejpeg($image, $filename, $jpgQuality);
            case 'image/wbmp':
                return imagewbmp($image, $filename);
            case 'image/png':
            default:
                return imagepng($image, $filename);
        }
    }

    /**
     * Output imagick image to file
     *
     * @param imagick $img        imagick image resource
     * @param string  $filename   The path to save the file to.
     * @param string  $destformat The Image type to use for $filename
     * @param int     $jpgQuality JEPG quality (1-100)
     *
     * @return bool
     */
    protected function imagickImage($img, $filename, $destformat, $jpgQuality = null)
    {

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        try {
            if ($destformat) {
                if ($destformat === 'gif') {
                    $img->setImageFormat('gif');
                } else if ($destformat === 'png') {
                    $img->setImageFormat('png');
                } else if ($destformat === 'jpg') {
                    $img->setImageFormat('jpeg');
                }
            }
            if (strtoupper($img->getImageFormat()) === 'JPEG') {
                $img->setImageCompression(imagick::COMPRESSION_JPEG);
                $img->setImageCompressionQuality($jpgQuality);
                if ($this->options['jpgProgressive']) {
                    $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);
                }
                try {
                    $orientation = $img->getImageOrientation();
                } catch (ImagickException $e) {
                    $orientation = 0;
                }
                $img->stripImage();
                if ($orientation) {
                    $img->setImageOrientation($orientation);
                }
            }
            $result = $img->writeImage($filename);
        } catch (Exception $e) {
            $result = false;
        }

        return $result;
    }

    /**
     * Assign the proper background to a gd image
     *
     * @param resource $image   gd image resource
     * @param string   $bgcolor background color in #rrggbb format
     */
    protected function gdImageBackground($image, $bgcolor)
    {

        if ($bgcolor === 'transparent') {
            imagealphablending($image, false);
            imagesavealpha($image, true);
        } else {
            list($r, $g, $b) = sscanf($bgcolor, "#%02x%02x%02x");
            $bgcolor1 = imagecolorallocate($image, $r, $g, $b);
            imagefill($image, 0, 0, $bgcolor1);
        }
    }

    /**
     * Prepare variables for exec convert of ImageMagick
     *
     * @param  string $path
     * @param  string $destformat
     * @param  int    $jpgQuality
     * @param  array  $imageSize
     * @param null    $mime
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function imageMagickConvertPrepare($path, $destformat, $jpgQuality, $imageSize = null, $mime = null)
    {
        if (is_null($imageSize)) {
            $imageSize = getimagesize($path);
        }
        if (is_null($mime)) {
            $mime = $this->mimetype($path);
        }
        $srcType = $this->getExtentionByMime($mime, ':');
        $ani = false;
        if (preg_match('/^(?:gif|png|ico)/', $srcType)) {
            $cmd = ELFINDER_IDENTIFY_PATH . ' -- ' . escapeshellarg($srcType . $path);
            if ($this->procExec($cmd, $o) === 0) {
                $ani = preg_split('/(?:\r\n|\n|\r)/', trim($o));
                if (count($ani) < 2) {
                    $ani = false;
                }
            }
        }
        $coalesce = $index = $interlace = '';
        $deconstruct = ' +repage';
        if ($ani && $destformat !== 'png'/* not createTmb */) {
            if (is_null($destformat)) {
                $coalesce = ' -coalesce -repage 0x0';
                $deconstruct = ' +repage -deconstruct -layers optimize';
            } else if ($imageSize) {
                if ($srcType === 'ico:') {
                    $index = '[0]';
                    foreach ($ani as $_i => $_info) {
                        if (preg_match('/ (\d+)x(\d+) /', $_info, $m)) {
                            if ($m[1] == $imageSize[0] && $m[2] == $imageSize[1]) {
                                $index = '[' . $_i . ']';
                                break;
                            }
                        }
                    }
                }
            }
        } else {
            $index = '[0]';
        }
        if ($imageSize && ($imageSize[2] === IMAGETYPE_JPEG || $imageSize[2] === IMAGETYPE_JPEG2000)) {
            $jpgQuality = ' -quality ' . $jpgQuality;
            if ($this->options['jpgProgressive']) {
                $interlace = ' -interlace Plane';
            }
        } else {
            $jpgQuality = '';
        }
        $quotedPath = escapeshellarg($srcType . $path . $index);
        $quotedDstPath = escapeshellarg(($destformat ? ($destformat . ':') : $srcType) . $path);
        return compact('ani', 'index', 'coalesce', 'deconstruct', 'jpgQuality', 'quotedPath', 'quotedDstPath', 'interlace');
    }

    /*********************** misc *************************/

    /**
     * Find position of first occurrence of string in a string with multibyte support
     *
     * @param  string $haystack The string being checked.
     * @param  string $needle   The string to find in haystack.
     * @param  int    $offset   The search offset. If it is not specified, 0 is used.
     *
     * @return int|bool
     * @author Alexey Sukhotin
     **/
    protected function stripos($haystack, $needle, $offset = 0)
    {
        if (function_exists('mb_stripos')) {
            return mb_stripos($haystack, $needle, $offset, 'UTF-8');
        } else if (function_exists('mb_strtolower') && function_exists('mb_strpos')) {
            return mb_strpos(mb_strtolower($haystack, 'UTF-8'), mb_strtolower($needle, 'UTF-8'), $offset);
        }
        return stripos($haystack, $needle, $offset);
    }

    /**
     * Default serach match method (name match)
     *
     * @param  String $name  Item name
     * @param  String $query Query word
     * @param  String $path  Item path
     *
     * @return bool @return bool
     */
    protected function searchMatchName($name, $query, $path)
    {
        return $this->stripos($name, $query) !== false;
    }

    /**
     * Get server side available archivers
     *
     * @param bool $use_cache
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function getArchivers($use_cache = true)
    {
        $sessionKey = 'archivers';
        if ($use_cache) {
            if (isset($this->options['archivers']) && is_array($this->options['archivers']) && $this->options['archivers']) {
                $cache = $this->options['archivers'];
            } else {
                $cache = elFinder::$archivers;
            }
            if ($cache) {
                return $cache;
            } else {
                if ($cache = $this->session->get($sessionKey, array())) {
                    return elFinder::$archivers = $cache;
                }
            }
        }

        $arcs = array(
            'create' => array(),
            'extract' => array()
        );

        if ($this->procExec('') === 0) {

            $this->procExec(ELFINDER_TAR_PATH . ' --version', $o, $ctar);

            if ($ctar == 0) {
                $arcs['create']['application/x-tar'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-chf', 'ext' => 'tar');
                $arcs['extract']['application/x-tar'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xf', 'ext' => 'tar', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                unset($o);
                $this->procExec(ELFINDER_GZIP_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-gzip'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-czhf', 'ext' => 'tgz');
                    $arcs['extract']['application/x-gzip'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xzf', 'ext' => 'tgz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
                unset($o);
                $this->procExec(ELFINDER_BZIP2_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-bzip2'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-cjhf', 'ext' => 'tbz');
                    $arcs['extract']['application/x-bzip2'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xjf', 'ext' => 'tbz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
                unset($o);
                $this->procExec(ELFINDER_XZ_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-xz'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-cJhf', 'ext' => 'xz');
                    $arcs['extract']['application/x-xz'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xJf', 'ext' => 'xz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
            }
            unset($o);
            $this->procExec(ELFINDER_ZIP_PATH . ' -h', $o, $c);
            if ($c == 0) {
                $arcs['create']['application/zip'] = array('cmd' => ELFINDER_ZIP_PATH, 'argc' => '-r9 -q', 'ext' => 'zip');
            }
            unset($o);
            $this->procExec(ELFINDER_UNZIP_PATH . ' --help', $o, $c);
            if ($c == 0) {
                $arcs['extract']['application/zip'] = array('cmd' => ELFINDER_UNZIP_PATH, 'argc' => '-q', 'ext' => 'zip', 'toSpec' => '-d ', 'getsize' => array('argc' => '-Z -t', 'regex' => '/^.+?,\s?([0-9]+).+$/', 'replace' => '$1'));
            }
            unset($o);
            $this->procExec(ELFINDER_RAR_PATH, $o, $c);
            if ($c == 0 || $c == 7) {
                $arcs['create']['application/x-rar'] = array('cmd' => ELFINDER_RAR_PATH, 'argc' => 'a -inul' . (defined('ELFINDER_RAR_MA4') && ELFINDER_RAR_MA4? ' -ma4' : '') . ' --', 'ext' => 'rar');
            }
            unset($o);
            $this->procExec(ELFINDER_UNRAR_PATH, $o, $c);
            if ($c == 0 || $c == 7) {
                $arcs['extract']['application/x-rar'] = array('cmd' => ELFINDER_UNRAR_PATH, 'argc' => 'x -y', 'ext' => 'rar', 'toSpec' => '', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)(?:(?:[^\r\n0-9]+[0-9]+[^\r\n0-9]+([0-9]+)[^\r\n]+)|(?:[^\r\n0-9]+([0-9]+)[^\r\n0-9]+[0-9]+[^\r\n]*))$/s', 'replace' => '$1'));
            }
            unset($o);
            $this->procExec(ELFINDER_7Z_PATH, $o, $c);
            if ($c == 0) {
                $arcs['create']['application/x-7z-compressed'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a --', 'ext' => '7z');
                $arcs['extract']['application/x-7z-compressed'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -y', 'ext' => '7z', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));

                if (empty($arcs['create']['application/zip'])) {
                    $arcs['create']['application/zip'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a -tzip --', 'ext' => 'zip');
                }
                if (empty($arcs['extract']['application/zip'])) {
                    $arcs['extract']['application/zip'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -tzip -y', 'ext' => 'zip', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
                if (empty($arcs['create']['application/x-tar'])) {
                    $arcs['create']['application/x-tar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a -ttar --', 'ext' => 'tar');
                }
                if (empty($arcs['extract']['application/x-tar'])) {
                    $arcs['extract']['application/x-tar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -ttar -y', 'ext' => 'tar', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
                if (substr(PHP_OS, 0, 3) === 'WIN' && empty($arcs['extract']['application/x-rar'])) {
                    $arcs['extract']['application/x-rar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -trar -y', 'ext' => 'rar', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
            }

        }

        // Use PHP ZipArchive Class
        if (class_exists('ZipArchive', false)) {
            if (empty($arcs['create']['application/zip'])) {
                $arcs['create']['application/zip'] = array('cmd' => 'phpfunction', 'argc' => array('self', 'zipArchiveZip'), 'ext' => 'zip');
            }
            if (empty($arcs['extract']['application/zip'])) {
                $arcs['extract']['application/zip'] = array('cmd' => 'phpfunction', 'argc' => array('self', 'zipArchiveUnzip'), 'ext' => 'zip');
            }
        }

        $this->session->set($sessionKey, $arcs);
        return elFinder::$archivers = $arcs;
    }

    /**
     * Resolve relative / (Unix-like)absolute path
     *
     * @param string $path target path
     * @param string $base base path
     *
     * @return string
     */
    protected function getFullPath($path, $base)
    {
        $separator = $this->separator;
        $systemroot = $this->systemRoot;
        $base = (string)$base;

        if ($base[0] === $separator && substr($base, 0, strlen($systemroot)) !== $systemroot) {
            $base = $systemroot . substr($base, 1);
        }
        if ($base !== $systemroot) {
            $base = rtrim($base, $separator);
        }

        $sepquoted = preg_quote($separator, '#');

        // normalize `//` to `/`
        $path = preg_replace('#' . $sepquoted . '+#', $separator, $path); // '#/+#'

        // remove `./`
        $path = preg_replace('#(?<=^|' . $sepquoted . ')\.' . $sepquoted . '#', '', $path); // '#(?<=^|/)\./#'

        // 'Here'
        if ($path === '') return $base;

        // join $base to $path if $path start `../`
        if (substr($path, 0, 3) === '..' . $separator) {
            $path = $base . $separator . $path;
        }

        // normalize `/../`
        $normreg = '#(' . $sepquoted . ')[^' . $sepquoted . ']+' . $sepquoted . '\.\.' . $sepquoted . '#'; // '#(/)[^\/]+/\.\./#'
        while (preg_match($normreg, $path)) {
            $path = preg_replace($normreg, '$1', $path, 1);
        }
        if ($path !== $systemroot) {
            $path = rtrim($path, $separator);
        }

        // discard the surplus `../`
        $path = str_replace('..' . $separator, '', $path);

        // Absolute path
        if ($path[0] === $separator || strpos($path, $systemroot) === 0) {
            return $path;
        }

        $preg_separator = '#' . $sepquoted . '#';

        // Relative path from 'Here'
        if (substr($path, 0, 2) === '.' . $separator || $path[0] !== '.') {
            $arrn = preg_split($preg_separator, $path, -1, PREG_SPLIT_NO_EMPTY);
            if ($arrn[0] !== '.') {
                array_unshift($arrn, '.');
            }
            $arrn[0] = rtrim($base, $separator);
            return join($separator, $arrn);
        }

        return $path;
    }

    /**
     * Remove directory recursive on local file system
     *
     * @param string $dir Target dirctory path
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function rmdirRecursive($dir)
    {
        return self::localRmdirRecursive($dir);
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     * @author Naoki Sawada
     */
    protected function makeArchive($dir, $files, $name, $arc)
    {
        if ($arc['cmd'] === 'phpfunction') {
            if (is_callable($arc['argc'])) {
                call_user_func_array($arc['argc'], array($dir, $files, $name));
            }
        } else {
            $cwd = getcwd();
            if (chdir($dir)) {
                foreach ($files as $i => $file) {
                    $files[$i] = '.' . DIRECTORY_SEPARATOR . basename($file);
                }
                $files = array_map('escapeshellarg', $files);
                $prefix = $switch = '';
                // The zip command accepts the "-" at the beginning of the file name as a command switch,
                // and can't use '--' before archive name, so add "./" to name for security reasons.
                if ($arc['ext'] === 'zip' && strpos($arc['argc'], '-tzip') === false) {
                    $prefix = './';
                    $switch = '-- ';
                }
                $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . $prefix . escapeshellarg($name) . ' ' . $switch . implode(' ', $files);
                $err_out = '';
                $this->procExec($cmd, $o, $c, $err_out, $dir);
                chdir($cwd);
            } else {
                return false;
            }
        }
        $path = $dir . DIRECTORY_SEPARATOR . $name;
        return file_exists($path) ? $path : false;
    }

    /**
     * Unpack archive
     *
     * @param  string      $path archive path
     * @param  array       $arc  archiver command and arguments (same as in $this->archivers)
     * @param  bool|string $mode bool: remove archive ( unlink($path) ) | string: extract to directory
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     * @author Naoki Sawada
     */
    protected function unpackArchive($path, $arc, $mode = true)
    {
        if (is_string($mode)) {
            $dir = $mode;
            $chdir = null;
            $remove = false;
        } else {
            $dir = dirname($path);
            $chdir = $dir;
            $remove = $mode;
        }
        $dir = realpath($dir);
        $path = realpath($path);
        if ($arc['cmd'] === 'phpfunction') {
            if (is_callable($arc['argc'])) {
                call_user_func_array($arc['argc'], array($path, $dir));
            }
        } else {
            $cwd = getcwd();
            if (!$chdir || chdir($dir)) {
                if (!empty($arc['getsize'])) {
                    // Check total file size after extraction
                    $getsize = $arc['getsize'];
                    if (is_array($getsize) && !empty($getsize['regex']) && !empty($getsize['replace'])) {
                        $cmd = $arc['cmd'] . ' ' . $getsize['argc'] . ' ' . escapeshellarg($path) . (!empty($getsize['toSpec'])? (' ' . $getsize['toSpec']): '');
                        $this->procExec($cmd, $o, $c);
                        if ($o) {
                            $size = preg_replace($getsize['regex'], $getsize['replace'], trim($o));
                            $comp = function_exists('bccomp')? 'bccomp' : 'strnatcmp';
                            if (!empty($this->options['maxArcFilesSize'])) {
                                if ($comp($size, (string)$this->options['maxArcFilesSize']) > 0) {
                                    throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                                }
                            }
                        }
                        unset($o, $c);
                    }
                }
                if ($chdir) {
                    $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . escapeshellarg(basename($path));
                } else {
                    $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . escapeshellarg($path) . ' ' . $arc['toSpec'] . escapeshellarg($dir);
                }
                $this->procExec($cmd, $o, $c);
                $chdir && chdir($cwd);
            }
        }
        $remove && unlink($path);
    }

    /**
     * Check and filter the extracted items
     *
     * @param  string $path   target local path
     * @param  array  $checks types to check default: ['symlink', 'name', 'writable', 'mime']
     *
     * @return array  ['symlinks' => [], 'names' => [], 'writables' => [], 'mimes' => [], 'rmNames' => [], 'totalSize' => 0]
     * @throws elFinderAbortException
     * @throws Exception
     * @author Naoki Sawada
     */
    protected function checkExtractItems($path, $checks = null)
    {
        if (is_null($checks) || !is_array($checks)) {
            $checks = array('symlink', 'name', 'writable', 'mime');
        }
        $chkSymlink = in_array('symlink', $checks);
        $chkName = in_array('name', $checks);
        $chkWritable = in_array('writable', $checks);
        $chkMime = in_array('mime', $checks);

        $res = array(
            'symlinks' => array(),
            'names' => array(),
            'writables' => array(),
            'mimes' => array(),
            'rmNames' => array(),
            'totalSize' => 0
        );

        if (is_dir($path)) {
            $files = self::localScandir($path);
        } else {
            $files = array(basename($path));
            $path = dirname($path);
        }

        foreach ($files as $name) {
            $p = $path . DIRECTORY_SEPARATOR . $name;
            $utf8Name = elFinder::$instance->utf8Encode($name);
            if ($name !== $utf8Name) {
                $fsSame = false;
                if ($this->encoding) {
                    // test as fs encoding
                    $_utf8 = @iconv($this->encoding, 'utf-8//IGNORE', $name);
                    if (@iconv('utf-8', $this->encoding.'//IGNORE', $_utf8) === $name) {
                        $fsSame = true;
                        $utf8Name = $_utf8;
                    } else {
                        $_name = $this->convEncIn($utf8Name, true);
                    }
                } else {
                    $_name = $utf8Name;
                }
                if (!$fsSame && rename($p, $path . DIRECTORY_SEPARATOR . $_name)) {
                    $name = $_name;
                    $p = $path . DIRECTORY_SEPARATOR . $name;
                }
            }
            if (!is_readable($p)) {
                // Perhaps a symbolic link to open_basedir restricted location
                self::localRmdirRecursive($p);
                $res['symlinks'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($chkSymlink && is_link($p)) {
                self::localRmdirRecursive($p);
                $res['symlinks'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            $isDir = is_dir($p);
            if ($chkName && !$this->nameAccepted($name, $isDir)) {
                self::localRmdirRecursive($p);
                $res['names'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($chkWritable && !$this->attr($p, 'write', null, $isDir)) {
                self::localRmdirRecursive($p);
                $res['writables'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($isDir) {
                $cRes = $this->checkExtractItems($p, $checks);
                foreach ($cRes as $k => $v) {
                    if (is_array($v)) {
                        $res[$k] = array_merge($res[$k], $cRes[$k]);
                    } else {
                        $res[$k] += $cRes[$k];
                    }
                }
            } else {
                if ($chkMime && ($mimeByName = elFinderVolumeDriver::mimetypeInternalDetect($name)) && !$this->allowPutMime($mimeByName)) {
                    self::localRmdirRecursive($p);
                    $res['mimes'][] = $p;
                    $res['rmNames'][] = $utf8Name;
                    continue;
                }
                $res['totalSize'] += (int)sprintf('%u', filesize($p));
            }
        }
        $res['rmNames'] = array_unique($res['rmNames']);

        return $res;
    }

    /**
     * Return files of target directory that is dotfiles excludes.
     *
     * @param  string $dir target directory path
     *
     * @return array
     * @throws Exception
     * @author Naoki Sawada
     */
    protected static function localScandir($dir)
    {
        // PHP function scandir() is not work well in specific environment. I dont know why.
        // ref. https://github.com/Studio-42/elFinder/issues/1248
        $files = array();
        if ($dh = opendir($dir)) {
            while (false !== ($file = readdir($dh))) {
                if ($file !== '.' && $file !== '..') {
                    $files[] = $file;
                }
            }
            closedir($dh);
        } else {
            throw new Exception('Can not open local directory.');
        }
        return $files;
    }

    /**
     * Remove directory recursive on local file system
     *
     * @param string $dir Target dirctory path
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected static function localRmdirRecursive($dir)
    {
        // Unlink symlink only; BSD/macOS `rm -rf` on a symlink can delete the target tree (Filester fix).
        if (is_link($dir)) {
            return unlink($dir);
        }

        // try system command
        if (is_callable('exec')) {
            $o = '';
            $r = 1;
            if (substr(PHP_OS, 0, 3) === 'WIN') {
                if (!is_link($dir) && is_dir($dir)) {
                    exec('rd /S /Q ' . escapeshellarg($dir), $o, $r);
                } else {
                    exec('del /F /Q ' . escapeshellarg($dir), $o, $r);
                }
            } else {
                exec('rm -rf ' . escapeshellarg($dir), $o, $r);
            }
            if ($r === 0) {
                return true;
            }
        }
        if (!is_link($dir) && is_dir($dir)) {
            chmod($dir, 0777);
            if ($handle = opendir($dir)) {
                while (false !== ($file = readdir($handle))) {
                    if ($file === '.' || $file === '..') {
                        continue;
                    }
                    elFinder::extendTimeLimit(30);
                    $path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (!is_link($dir) && is_dir($path)) {
                        self::localRmdirRecursive($path);
                    } else {
                        chmod($path, 0666);
                        unlink($path);
                    }
                }
                closedir($handle);
            }
            return rmdir($dir);
        } else {
            chmod($dir, 0666);
            return unlink($dir);
        }
    }

    /**
     * Move item recursive on local file system
     *
     * @param string $src
     * @param string $target
     * @param bool   $overWrite
     * @param bool   $copyJoin
     *
     * @return boolean
     * @throws elFinderAbortException
     * @throws Exception
     * @author Naoki Sawada
     */
    protected static function localMoveRecursive($src, $target, $overWrite = true, $copyJoin = true)
    {
        $res = false;
        if (!file_exists($target)) {
            return rename($src, $target);
        }
        if (!$copyJoin || !is_dir($target)) {
            if ($overWrite) {
                if (is_dir($target)) {
                    $del = self::localRmdirRecursive($target);
                } else {
                    $del = unlink($target);
                }
                if ($del) {
                    return rename($src, $target);
                }
            }
        } else {
            foreach (self::localScandir($src) as $item) {
                $res |= self::localMoveRecursive($src . DIRECTORY_SEPARATOR . $item, $target . DIRECTORY_SEPARATOR . $item, $overWrite, $copyJoin);
            }
        }
        return (bool)$res;
    }

    /**
     * Create Zip archive using PHP class ZipArchive
     *
     * @param  string        $dir     target dir
     * @param  array         $files   files names list
     * @param  string|object $zipPath Zip archive name
     *
     * @return bool
     * @author Naoki Sawada
     */
    protected static function zipArchiveZip($dir, $files, $zipPath)
    {
        try {
            if ($start = is_string($zipPath)) {
                $zip = new ZipArchive();
                if ($zip->open($dir . DIRECTORY_SEPARATOR . $zipPath, ZipArchive::CREATE) !== true) {
                    $zip = false;
                }
            } else {
                $zip = $zipPath;
            }
            if ($zip) {
                foreach ($files as $file) {
                    $path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (is_dir($path)) {
                        $zip->addEmptyDir($file);
                        $_files = array();
                        if ($handle = opendir($path)) {
                            while (false !== ($entry = readdir($handle))) {
                                if ($entry !== "." && $entry !== "..") {
                                    $_files[] = $file . DIRECTORY_SEPARATOR . $entry;
                                }
                            }
                            closedir($handle);
                        }
                        if ($_files) {
                            self::zipArchiveZip($dir, $_files, $zip);
                        }
                    } else {
                        $zip->addFile($path, $file);
                    }
                }
                $start && $zip->close();
            }
        } catch (Exception $e) {
            return false;
        }
        return true;
    }

    /**
     * Unpack Zip archive using PHP class ZipArchive
     *
     * @param  string $zipPath Zip archive name
     * @param  string $toDir   Extract to path
     *
     * @return bool
     * @author Naoki Sawada
     */
    protected static function zipArchiveUnzip($zipPath, $toDir)
    {
        try {
            $zip = new ZipArchive();
            if ($zip->open($zipPath) === true) {
                // Check total file size after extraction
                $num = $zip->numFiles;
                $size = 0;
                $maxSize = empty(self::$maxArcFilesSize)? '' : (string)self::$maxArcFilesSize;
                $comp = function_exists('bccomp')? 'bccomp' : 'strnatcmp';
                for ($i = 0; $i < $num; $i++) {
                    $stat = $zip->statIndex($i);
                    $size += $stat['size'];
                    if (strpos((string)$size, 'E') !== false) {
                        // Cannot handle values exceeding PHP_INT_MAX
                        throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                    }
                    if (!$maxSize) {
                        if ($comp($size, $maxSize) > 0) {
                            throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                        }
                    }
                }
                // do extract
                $zip->extractTo($toDir);
                $zip->close();
            }
        } catch (Exception $e) {
            throw $e;
        }
        return true;
    }

    /**
     * Recursive symlinks search
     *
     * @param  string $path file/dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected static function localFindSymlinks($path)
    {
        if (is_link($path)) {
            return true;
        }

        if (is_dir($path)) {
            foreach (self::localScandir($path) as $name) {
                $p = $path . DIRECTORY_SEPARATOR . $name;
                if (is_link($p)) {
                    return true;
                }
                if (is_dir($p) && self::localFindSymlinks($p)) {
                    return true;
                }
            }
        }

        return false;
    }

    /**==================================* abstract methods *====================================**/

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _dirname($path);

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _basename($path);

    /**
     * Join dir name and file name and return full path.
     * Some drivers (db) use int as path - so we give to concat path to driver itself
     *
     * @param  string $dir  dir path
     * @param  string $name file name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _joinPath($dir, $name);

    /**
     * Return normalized path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _normpath($path);

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _relpath($path);

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path rel file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _abspath($path);

    /**
     * Return fake path started from root dir.
     * Required to show path on client side.
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _path($path);

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _inpath($path, $parent);

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _stat($path);


    /***************** file stat ********************/


    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _subdirs($path);

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _dimensions($path, $mime);

    /******************** file/dir content *********************/

    /**
     * Return files list in directory
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _scandir($path);

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param  string $mode open mode
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _fopen($path, $mode = "rb");

    /**
     * Close opened file
     *
     * @param  resource $fp   file pointer
     * @param  string   $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _fclose($fp, $path = '');

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _mkdir($path, $name);

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _mkfile($path, $name);

    /**
     * Create symlink
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _symlink($source, $targetDir, $name);

    /**
     * Copy file into another file (only inside one volume)
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    abstract protected function _copy($source, $targetDir, $name);

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    abstract protected function _move($source, $targetDir, $name);

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _unlink($path);

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _rmdir($path);

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _save($fp, $dir, $name, $stat);

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _getContents($path);

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _filePutContents($path, $content);

    /**
     * Extract files from archive
     *
     * @param  string $path file path
     * @param  array  $arc  archiver options
     *
     * @return bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _extract($path, $arc);

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _archive($dir, $files, $name, $arc);

    /**
     * Get relative path from root path
     * Helper method to correctly calculate relative path regardless of trailing separator
     *
     * @param  string $path Full file path
     * @return string Relative path from root
     * @author Filester Fix
     **/
    protected function _getRelativePath($path)
    {
        // Normalize root path - remove trailing separators
        $root = rtrim($this->root, $this->separator . '/');
        $rootLen = strlen($root);
        
        // Normalize file path
        $normalizedPath = str_replace($this->separator, '/', $path);
        $normalizedRoot = str_replace($this->separator, '/', $root);
        
        // Check if path starts with root (case-sensitive)
        if (strpos($normalizedPath, $normalizedRoot) === 0) {
            $relative = substr($normalizedPath, $rootLen);
            // Remove leading separator
            $relative = ltrim($relative, '/');
            return $relative;
        }
        
        // Fallback: try to calculate using original method
        // Handle case where root ends with separator
        $rootWithSep = rtrim($this->root, $this->separator . '/') . $this->separator;
        if (strpos($path, $rootWithSep) === 0) {
            $relative = substr($path, strlen($rootWithSep));
            return str_replace($this->separator, '/', $relative);
        }
        
        // Last fallback: old method
        if (strlen($path) > strlen($this->root)) {
            $relative = substr($path, strlen($this->root));
            $relative = ltrim($relative, $this->separator . '/');
            return str_replace($this->separator, '/', $relative);
        }
        
        return '';
    }

    /**
     * Build file URL from base URL and relative path
     * Helper method to ensure correct URL construction with proper separator
     *
     * @param  string $path Relative file path (already encoded if needed)
     * @return string Complete file URL
     * @author Filester Fix
     **/
    protected function _buildFileUrl($path)
    {
        if (empty($this->URL)) {
            return '';
        }
        
        // Remove trailing slash from base URL
        $baseUrl = rtrim($this->URL, '/');
        
        // Ensure path starts with /
        $path = '/' . ltrim($path, '/');
        
        return $baseUrl . $path;
    }

    /**
     * Detect available archivers
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _checkArchivers();

    /**
     * Change file mode (chmod)
     *
     * @param  string $path file path
     * @param  string $mode octal string such as '0755'
     *
     * @return bool
     * @author David Bartle,
     **/
    abstract protected function _chmod($path, $mode);


} // END class
                                                                                                                                                           includes/File_manager/lib/php/elFinderSession.php                                                   0000644                 00000021074 15266052673 0016105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder - file manager for web.
 * Session Wrapper Class.
 *
 * @package elfinder
 * @author  Naoki Sawada
 **/

class elFinderSession implements elFinderSessionInterface
{
    /**
     * A flag of session started
     *
     * @var        boolean
     */
    protected $started = false;

    /**
     * To fix PHP bug that duplicate Set-Cookie header to be sent
     *
     * @var        boolean
     * @see        https://bugs.php.net/bug.php?id=75554
     */
    protected $fixCookieRegist = false;

    /**
     * Array of session keys of this instance
     *
     * @var        array
     */
    protected $keys = array();

    /**
     * Is enabled base64encode
     *
     * @var        boolean
     */
    protected $base64encode = false;

    /**
     * Default options array
     *
     * @var        array
     */
    protected $opts = array(
        'base64encode' => false,
        'keys' => array(
            'default' => 'elFinderCaches',
            'netvolume' => 'elFinderNetVolumes'
        ),
        'cookieParams' => array()
    );

    /**
     * Constractor
     *
     * @param      array $opts The options
     *
     * @return     self    Instanse of this class
     */
    public function __construct($opts)
    {
        $this->opts = array_merge($this->opts, $opts);
        $this->base64encode = !empty($this->opts['base64encode']);
        $this->keys = $this->opts['keys'];
        if (function_exists('apache_get_version') || $this->opts['cookieParams']) {
            $this->fixCookieRegist = true;
        }
    }

    /**
     * {@inheritdoc}
     */
    public function get($key, $empty = null)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }

        $data = null;

        if ($this->started) {
            $session =& $this->getSessionRef($key);
            $data = $session;
            if ($data && $this->base64encode) {
                $data = $this->decodeData($data);
            }
        }

        $checkFn = null;
        if (!is_null($empty)) {
            if (is_string($empty)) {
                $checkFn = 'is_string';
            } elseif (is_array($empty)) {
                $checkFn = 'is_array';
            } elseif (is_object($empty)) {
                $checkFn = 'is_object';
            } elseif (is_float($empty)) {
                $checkFn = 'is_float';
            } elseif (is_int($empty)) {
                $checkFn = 'is_int';
            }
        }

        if (is_null($data) || ($checkFn && !$checkFn($data))) {
            $session = $data = $empty;
        }

        if ($closed) {
            $this->close();
        }

        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function start()
    {
        set_error_handler(array($this, 'session_start_error'), E_NOTICE | E_WARNING);

        // apache2 SAPI has a bug of session cookie register
        // see https://bugs.php.net/bug.php?id=75554
        // see https://github.com/php/php-src/pull/3231
        if ($this->fixCookieRegist === true) {
            if ((int)ini_get('session.use_cookies') === 1) {
                if (ini_set('session.use_cookies', 0) === false) {
                    $this->fixCookieRegist = false;
                }
            }
        }

        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
            if (session_status() !== PHP_SESSION_ACTIVE) {
                session_start();
            }
        } else {
            session_start();
        }
        $this->started = session_id() ? true : false;

        restore_error_handler();

        return $this;
    }

    /**
     * Get variable reference of $_SESSION
     *
     * @param string $key key of $_SESSION array
     *
     * @return mixed|null
     */
    protected function & getSessionRef($key)
    {
        $session = null;
        if ($this->started) {
            list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
            if (is_null($name)) {
                if (!isset($this->keys[$cat])) {
                    $name = $cat;
                    $cat = 'default';
                }
            }
            if (isset($this->keys[$cat])) {
                $cat = $this->keys[$cat];
            } else {
                $name = $cat . '.' . $name;
                $cat = $this->keys['default'];
            }
            if (is_null($name)) {
                if (!isset($_SESSION[$cat])) {
                    $_SESSION[$cat] = null;
                }
                $session =& $_SESSION[$cat];
            } else {
                if (!isset($_SESSION[$cat]) || !is_array($_SESSION[$cat])) {
                    $_SESSION[$cat] = array();
                }
                if (!isset($_SESSION[$cat][$name])) {
                    $_SESSION[$cat][$name] = null;
                }
                $session =& $_SESSION[$cat][$name];
            }
        }
        return $session;
    }

    /**
     * base64 decode of session val
     *
     * @param $data
     *
     * @return bool|mixed|string|null
     */
    protected function decodeData($data)
    {
        if ($this->base64encode) {
            if (is_string($data)) {
                if (($data = base64_decode($data)) !== false) {
                    $data = unserialize($data);
                } else {
                    $data = null;
                }
            } else {
                $data = null;
            }
        }
        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function close()
    {
        if ($this->started) {
            if ($this->fixCookieRegist === true) {
                // regist cookie only once for apache2 SAPI
                $cParm = session_get_cookie_params();
                if ($this->opts['cookieParams'] && is_array($this->opts['cookieParams'])) {
                    $cParm = array_merge($cParm, $this->opts['cookieParams']);
                }
                if (version_compare(PHP_VERSION, '7.3', '<')) {
                    setcookie(session_name(), session_id(), 0, $cParm['path'] . (!empty($cParm['SameSite'])? '; SameSite=' . $cParm['SameSite'] : ''), $cParm['domain'], $cParm['secure'], $cParm['httponly']);
                } else {
                    $allows = array('expires' => true, 'path' => true, 'domain' => true, 'secure' => true, 'httponly' => true, 'samesite' => true);
                    foreach(array_keys($cParm) as $_k) {
                        if (!isset($allows[$_k])) {
                            unset($cParm[$_k]);
                        }
                    }
                    setcookie(session_name(), session_id(), $cParm);
                }
                $this->fixCookieRegist = false;
            }
            session_write_close();
        }
        $this->started = false;

        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function set($key, $data)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }
        $session =& $this->getSessionRef($key);
        if ($this->base64encode) {
            $data = $this->encodeData($data);
        }
        $session = $data;

        if ($closed) {
            $this->close();
        }

        return $this;
    }

    /**
     * base64 encode for session val
     *
     * @param $data
     *
     * @return string
     */
    protected function encodeData($data)
    {
        if ($this->base64encode) {
            $data = base64_encode(serialize($data));
        }
        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function remove($key)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }

        list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
        if (is_null($name)) {
            if (!isset($this->keys[$cat])) {
                $name = $cat;
                $cat = 'default';
            }
        }
        if (isset($this->keys[$cat])) {
            $cat = $this->keys[$cat];
        } else {
            $name = $cat . '.' . $name;
            $cat = $this->keys['default'];
        }
        if (is_null($name)) {
            unset($_SESSION[$cat]);
        } else {
            if (isset($_SESSION[$cat]) && is_array($_SESSION[$cat])) {
                unset($_SESSION[$cat][$name]);
            }
        }

        if ($closed) {
            $this->close();
        }

        return $this;
    }

    /**
     * sessioin error handler (Only for suppression of error at session start)
     *
     * @param $errno
     * @param $errstr
     */
    protected function session_start_error($errno, $errstr)
    {
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/php/libs/GdBmp.php                                                        0000644                 00000047332 15266052673 0014740 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * Copyright (c) 2011, oov. All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *  - Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *  - Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *  - Neither the name of the oov nor the names of its contributors may be used to
 *    endorse or promote products derived from this software without specific prior
 *    written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * bmp ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ GD ã�§ä½¿ã�ˆã‚‹ã‚ˆã�†ã�«
 * ä½¿ç”¨ä¾‹:
 *   //ãƒ•ã‚¡ã‚¤ãƒ«ã�‹ã‚‰èª­ã�¿è¾¼ã‚€å ´å�ˆã�¯GDã�§PNGã�ªã�©ã‚’èª­ã�¿è¾¼ã‚€ã�®ã�¨å�Œã�˜ã‚ˆã�†ã�ªæ–¹æ³•ã�§å�¯
 *   $image = imagecreatefrombmp("test.bmp");
 *   imagedestroy($image);
 *   //æ–‡å­—åˆ—ã�‹ã‚‰èª­ã�¿è¾¼ã‚€å ´å�ˆã�¯ä»¥ä¸‹ã�®æ–¹æ³•ã�§å�¯
 *   $image = GdBmp::loadFromString(file_get_contents("test.bmp"));
 *   //è‡ªå‹•åˆ¤å®šã�•ã‚Œã‚‹ã�®ã�§ç ´æ��ãƒ•ã‚¡ã‚¤ãƒ«ã�§ã�ªã�‘ã‚Œã�°ã�“ã‚Œã�§ã‚‚ä¸Šæ‰‹ã��ã�„ã��
 *   //$image = imagecreatefrombmp(file_get_contents("test.bmp"));
 *   imagedestroy($image);
 *   //ã��ã�®ä»–ä»»æ„�ã�®ã‚¹ãƒˆãƒªãƒ¼ãƒ ã�‹ã‚‰ã�®èª­ã�¿è¾¼ã�¿ã‚‚å�¯èƒ½
 *   $stream = fopen("http://127.0.0.1/test.bmp");
 *   $image = GdBmp::loadFromStream($stream);
 *   //è‡ªå‹•åˆ¤å®šã�•ã‚Œã‚‹ã�®ã�§ã�“ã‚Œã�§ã‚‚ã�„ã�„
 *   //$image = imagecreatefrombmp($stream);
 *   fclose($stream);
 *   imagedestroy($image);
 * å¯¾å¿œãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ
 *   1bit
 *   4bit
 *   4bitRLE
 *   8bit
 *   8bitRLE
 *   16bit(ä»»æ„�ã�®ãƒ“ãƒƒãƒˆãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰)
 *   24bit
 *   32bit(ä»»æ„�ã�®ãƒ“ãƒƒãƒˆãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰)
 *   BITMAPINFOHEADER ã�® biCompression ã�Œ BI_PNG / BI_JPEG ã�®ç”»åƒ�
 *   ã�™ã�¹ã�¦ã�®å½¢å¼�ã�§ãƒˆãƒƒãƒ—ãƒ€ã‚¦ãƒ³/ãƒœãƒˆãƒ ã‚¢ãƒƒãƒ—ã�®ä¸¡æ–¹ã‚’ã‚µãƒ�ãƒ¼ãƒˆ
 *   ç‰¹æ®Šã�ªãƒ“ãƒƒãƒˆãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã�§ã‚‚ãƒ“ãƒƒãƒˆãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãƒ‡ãƒ¼ã‚¿ã�Œæ­£å¸¸ã�ªã‚‰èª­ã�¿è¾¼ã�¿å�¯èƒ½
 * ä»¥ä¸‹ã�®ã‚‚ã�®ã�¯é�žå¯¾å¿œ
 *   BITMAPV4HEADER ã�¨ BITMAPV5HEADER ã�«å�«ã�¾ã‚Œã‚‹è‰²ç©ºé–“ã�«é–¢ã�™ã‚‹æ§˜ã€…ã�ªæ©Ÿèƒ½
 *
 * @param $filename_or_stream_or_binary
 *
 * @return bool|resource
 */

if (!function_exists('imagecreatefrombmp')) {
    function imagecreatefrombmp($filename_or_stream_or_binary)
    {
        return elFinderLibGdBmp::load($filename_or_stream_or_binary);
    }
}

class elFinderLibGdBmp
{
    public static function load($filename_or_stream_or_binary)
    {
        if (is_resource($filename_or_stream_or_binary)) {
            return self::loadFromStream($filename_or_stream_or_binary);
        } else if (is_string($filename_or_stream_or_binary) && strlen($filename_or_stream_or_binary) >= 26) {
            $bfh = unpack("vtype/Vsize", $filename_or_stream_or_binary);
            if ($bfh["type"] == 0x4d42 && ($bfh["size"] == 0 || $bfh["size"] == strlen($filename_or_stream_or_binary))) {
                return self::loadFromString($filename_or_stream_or_binary);
            }
        }
        return self::loadFromFile($filename_or_stream_or_binary);
    }

    public static function loadFromFile($filename)
    {
        $fp = fopen($filename, "rb");
        if ($fp === false) {
            return false;
        }

        $bmp = self::loadFromStream($fp);

        fclose($fp);
        return $bmp;
    }

    public static function loadFromString($str)
    {
        //data scheme ã‚ˆã‚Šå�¤ã�„ãƒ�ãƒ¼ã‚¸ãƒ§ãƒ³ã�‹ã‚‰å¯¾å¿œã�—ã�¦ã�„ã‚‹ã‚ˆã�†ã�ªã�®ã�§ php://memory ã‚’ä½¿ã�†
        $fp = fopen("php://memory", "r+b");
        if ($fp === false) {
            return false;
        }

        if (fwrite($fp, $str) != strlen($str)) {
            fclose($fp);
            return false;
        }

        if (fseek($fp, 0) === -1) {
            fclose($fp);
            return false;
        }

        $bmp = self::loadFromStream($fp);

        fclose($fp);
        return $bmp;
    }

    public static function loadFromStream($stream)
    {
        $buf = fread($stream, 14); //2+4+2+2+4
        if ($buf === false) {
            return false;
        }

        //ã‚·ã‚°ãƒ�ãƒ�ãƒ£ãƒ�ã‚§ãƒƒã‚¯
        if ($buf[0] != 'B' || $buf[1] != 'M') {
            return false;
        }

        $bitmap_file_header = unpack(
        //BITMAPFILEHEADERæ§‹é€ ä½“
            "vtype/" .
            "Vsize/" .
            "vreserved1/" .
            "vreserved2/" .
            "Voffbits", $buf
        );

        return self::loadFromStreamAndFileHeader($stream, $bitmap_file_header);
    }

    public static function loadFromStreamAndFileHeader($stream, array $bitmap_file_header)
    {
        if ($bitmap_file_header["type"] != 0x4d42) {
            return false;
        }

        //æƒ…å ±ãƒ˜ãƒƒãƒ€ã‚µã‚¤ã‚ºã‚’å…ƒã�«å½¢å¼�ã‚’åŒºåˆ¥ã�—ã�¦èª­ã�¿è¾¼ã�¿
        $buf = fread($stream, 4);
        if ($buf === false) {
            return false;
        }
        list(, $header_size) = unpack("V", $buf);


        if ($header_size == 12) {
            $buf = fread($stream, $header_size - 4);
            if ($buf === false) {
                return false;
            }

            extract(unpack(
            //BITMAPCOREHEADERæ§‹é€ ä½“ - OS/2 Bitmap
                "vwidth/" .
                "vheight/" .
                "vplanes/" .
                "vbit_count", $buf
            ));
            //é£›ã‚“ã�§ã�“ã�ªã�„åˆ†ã�¯ 0 ã�§åˆ�æœŸåŒ–ã�—ã�¦ã�Šã��
            $clr_used = $clr_important = $alpha_mask = $compression = 0;

            //ãƒžã‚¹ã‚¯é¡žã�¯åˆ�æœŸåŒ–ã�•ã‚Œã�ªã�„ã�®ã�§ã�“ã�“ã�§å‰²ã‚Šå½“ã�¦ã�¦ã�Šã��
            $red_mask = 0x00ff0000;
            $green_mask = 0x0000ff00;
            $blue_mask = 0x000000ff;
        } else if (124 < $header_size || $header_size < 40) {
            //æœªçŸ¥ã�®å½¢å¼�
            return false;
        } else {
            //ã�“ã�®æ™‚ç‚¹ã�§36ãƒ�ã‚¤ãƒˆèª­ã‚�ã‚‹ã�“ã�¨ã�¾ã�§ã�¯ã‚�ã�‹ã�£ã�¦ã�„ã‚‹
            $buf = fread($stream, 36); //æ—¢ã�«èª­ã‚“ã� éƒ¨åˆ†ã�¯é™¤å¤–ã�—ã�¤ã�¤BITMAPINFOHEADERã�®ã‚µã‚¤ã‚ºã� ã�‘èª­ã‚€
            if ($buf === false) {
                return false;
            }

            //BITMAPINFOHEADERæ§‹é€ ä½“ - Windows Bitmap
            extract(unpack(
                "Vwidth/" .
                "Vheight/" .
                "vplanes/" .
                "vbit_count/" .
                "Vcompression/" .
                "Vsize_image/" .
                "Vx_pels_per_meter/" .
                "Vy_pels_per_meter/" .
                "Vclr_used/" .
                "Vclr_important", $buf
            ));
            /**
             * @var integer $width
             * @var integer $height
             * @var integer $planes
             * @var integer $bit_count
             * @var integer $compression
             * @var integer $size_image
             * @var integer $x_pels_per_meter
             * @var integer $y_pels_per_meter
             * @var integer $clr_used
             * @var integer $clr_important
             */
            //è² ã�®æ•´æ•°ã‚’å�—ã�‘å�–ã‚‹å�¯èƒ½æ€§ã�Œã�‚ã‚‹ã‚‚ã�®ã�¯è‡ªå‰�ã�§å¤‰æ�›ã�™ã‚‹
            if ($width & 0x80000000) {
                $width = -(~$width & 0xffffffff) - 1;
            }
            if ($height & 0x80000000) {
                $height = -(~$height & 0xffffffff) - 1;
            }
            if ($x_pels_per_meter & 0x80000000) {
                $x_pels_per_meter = -(~$x_pels_per_meter & 0xffffffff) - 1;
            }
            if ($y_pels_per_meter & 0x80000000) {
                $y_pels_per_meter = -(~$y_pels_per_meter & 0xffffffff) - 1;
            }

            //ãƒ•ã‚¡ã‚¤ãƒ«ã�«ã‚ˆã�£ã�¦ã�¯ BITMAPINFOHEADER ã�®ã‚µã‚¤ã‚ºã�Œã�Šã�‹ã�—ã�„ï¼ˆæ›¸ã��è¾¼ã�¿é–“é�•ã�„ï¼Ÿï¼‰ã‚±ãƒ¼ã‚¹ã�Œã�‚ã‚‹
            //è‡ªåˆ†ã�§ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã‚’å…ƒã�«é€†ç®—ã�™ã‚‹ã�“ã�¨ã�§å›žé�¿ã�§ã��ã‚‹ã�“ã�¨ã‚‚ã�‚ã‚‹ã�®ã�§å†�è¨ˆç®—ã�§ã��ã��ã�†ã�ªã‚‰æ­£å½“æ€§ã‚’èª¿ã�¹ã‚‹
            //ã‚·ãƒ¼ã‚¯ã�§ã��ã�ªã�„ã‚¹ãƒˆãƒªãƒ¼ãƒ ã�®å ´å�ˆå…¨ä½“ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã�¯å�–å¾—ã�§ã��ã�ªã�„ã�®ã�§ã€�$bitmap_file_headerã�«ã‚µã‚¤ã‚ºç”³å‘Šã�Œã�ªã�‘ã‚Œã�°ã‚„ã‚‰ã�ªã�„
            if ($bitmap_file_header["size"] != 0) {
                $colorsize = $bit_count == 1 || $bit_count == 4 || $bit_count == 8 ? ($clr_used ? $clr_used : pow(2, $bit_count)) << 2 : 0;
                $bodysize = $size_image ? $size_image : ((($width * $bit_count + 31) >> 3) & ~3) * abs($height);
                $calcsize = $bitmap_file_header["size"] - $bodysize - $colorsize - 14;

                //æœ¬æ�¥ã�§ã�‚ã‚Œã�°ä¸€è‡´ã�™ã‚‹ã�¯ã�šã�ªã�®ã�«å�ˆã‚�ã�ªã�„æ™‚ã�¯ã€�å€¤ã�Œã�Šã�‹ã�—ã��ã�ªã�•ã��ã�†ã�ªã‚‰ï¼ˆBITMAPV5HEADERã�®ç¯„å›²å†…ã�ªã‚‰ï¼‰è¨ˆç®—ã�—ã�¦æ±‚ã‚�ã�Ÿå€¤ã‚’æŽ¡ç”¨ã�™ã‚‹
                if ($header_size < $calcsize && 40 <= $header_size && $header_size <= 124) {
                    $header_size = $calcsize;
                }
            }

            //BITMAPV4HEADER ã‚„ BITMAPV5HEADER ã�®å ´å�ˆã�¾ã� èª­ã‚€ã�¹ã��ãƒ‡ãƒ¼ã‚¿ã�Œæ®‹ã�£ã�¦ã�„ã‚‹å�¯èƒ½æ€§ã�Œã�‚ã‚‹
            if ($header_size - 40 > 0) {
                $buf = fread($stream, $header_size - 40);
                if ($buf === false) {
                    return false;
                }

                extract(unpack(
                //BITMAPV4HEADERæ§‹é€ ä½“(Windows95ä»¥é™�)
                //BITMAPV5HEADERæ§‹é€ ä½“(Windows98/2000ä»¥é™�)
                    "Vred_mask/" .
                    "Vgreen_mask/" .
                    "Vblue_mask/" .
                    "Valpha_mask", $buf . str_repeat("\x00", 120)
                ));
            } else {
                $alpha_mask = $red_mask = $green_mask = $blue_mask = 0;
            }

            //ãƒ‘ãƒ¬ãƒƒãƒˆã�Œã�ªã�„ã�Œã‚«ãƒ©ãƒ¼ãƒžã‚¹ã‚¯ã‚‚ã�ªã�„æ™‚
            if (
                ($bit_count == 16 || $bit_count == 24 || $bit_count == 32) &&
                $compression == 0 &&
                $red_mask == 0 && $green_mask == 0 && $blue_mask == 0
            ) {
                //ã‚‚ã�—ã‚«ãƒ©ãƒ¼ãƒžã‚¹ã‚¯ã‚’æ‰€æŒ�ã�—ã�¦ã�„ã�ªã�„å ´å�ˆã�¯
                //è¦�å®šã�®ã‚«ãƒ©ãƒ¼ãƒžã‚¹ã‚¯ã‚’é�©ç”¨ã�™ã‚‹
                switch ($bit_count) {
                    case 16:
                        $red_mask = 0x7c00;
                        $green_mask = 0x03e0;
                        $blue_mask = 0x001f;
                        break;
                    case 24:
                    case 32:
                        $red_mask = 0x00ff0000;
                        $green_mask = 0x0000ff00;
                        $blue_mask = 0x000000ff;
                        break;
                }
            }
        }

        if (
            ($width == 0) ||
            ($height == 0) ||
            ($planes != 1) ||
            (($alpha_mask & $red_mask) != 0) ||
            (($alpha_mask & $green_mask) != 0) ||
            (($alpha_mask & $blue_mask) != 0) ||
            (($red_mask & $green_mask) != 0) ||
            (($red_mask & $blue_mask) != 0) ||
            (($green_mask & $blue_mask) != 0)
        ) {
            //ä¸�æ­£ã�ªç”»åƒ�
            return false;
        }

        //BI_JPEG ã�¨ BI_PNG ã�®å ´å�ˆã�¯ jpeg/png ã�Œã��ã�®ã�¾ã�¾å…¥ã�£ã�¦ã‚‹ã� ã�‘ã�ªã�®ã�§ã��ã�®ã�¾ã�¾å�–ã‚Šå‡ºã�—ã�¦ãƒ‡ã‚³ãƒ¼ãƒ‰ã�™ã‚‹
        if ($compression == 4 || $compression == 5) {
            $buf = stream_get_contents($stream, $size_image);
            if ($buf === false) {
                return false;
            }
            return imagecreatefromstring($buf);
        }

        //ç”»åƒ�æœ¬ä½“ã�®èª­ã�¿å‡ºã�—
        //1è¡Œã�®ãƒ�ã‚¤ãƒˆæ•°
        $line_bytes = (($width * $bit_count + 31) >> 3) & ~3;
        //å…¨ä½“ã�®è¡Œæ•°
        $lines = abs($height);
        //yè»¸é€²è¡Œé‡�ï¼ˆãƒœãƒˆãƒ ã‚¢ãƒƒãƒ—ã�‹ãƒˆãƒƒãƒ—ãƒ€ã‚¦ãƒ³ã�‹ï¼‰
        $y = $height > 0 ? $lines - 1 : 0;
        $line_step = $height > 0 ? -1 : 1;

        //256è‰²ä»¥ä¸‹ã�®ç”»åƒ�ã�‹ï¼Ÿ
        if ($bit_count == 1 || $bit_count == 4 || $bit_count == 8) {
            $img = imagecreate($width, $lines);

            //ç”»åƒ�ãƒ‡ãƒ¼ã‚¿ã�®å‰�ã�«ãƒ‘ãƒ¬ãƒƒãƒˆãƒ‡ãƒ¼ã‚¿ã�Œã�‚ã‚‹ã�®ã�§ãƒ‘ãƒ¬ãƒƒãƒˆã‚’ä½œæˆ�ã�™ã‚‹
            $palette_size = $header_size == 12 ? 3 : 4; //OS/2å½¢å¼�ã�®å ´å�ˆã�¯ x ã�«ç›¸å½“ã�™ã‚‹ç®‡æ‰€ã�®ãƒ‡ãƒ¼ã‚¿ã�¯æœ€åˆ�ã�‹ã‚‰ç¢ºä¿�ã�•ã‚Œã�¦ã�„ã�ªã�„
            $colors = $clr_used ? $clr_used : pow(2, $bit_count); //è‰²æ•°
            $palette = array();
            for ($i = 0; $i < $colors; ++$i) {
                $buf = fread($stream, $palette_size);
                if ($buf === false) {
                    imagedestroy($img);
                    return false;
                }
                extract(unpack("Cb/Cg/Cr/Cx", $buf . "\x00"));
                /**
                 * @var integer $b
                 * @var integer $g
                 * @var integer $r
                 * @var integer $x
                 */
                $palette[] = imagecolorallocate($img, $r, $g, $b);
            }

            $shift_base = 8 - $bit_count;
            $mask = ((1 << $bit_count) - 1) << $shift_base;

            //åœ§ç¸®ã�•ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�¨ã�•ã‚Œã�¦ã�„ã�ªã�„å ´å�ˆã�§ãƒ‡ã‚³ãƒ¼ãƒ‰å‡¦ç�†ã�Œå¤§ã��ã��å¤‰ã‚�ã‚‹
            if ($compression == 1 || $compression == 2) {
                $x = 0;
                $qrt_mod2 = $bit_count >> 2 & 1;
                for (; ;) {
                    //ã‚‚ã�—æ��å†™å…ˆã�Œç¯„å›²å¤–ã�«ã�ªã�£ã�¦ã�„ã‚‹å ´å�ˆãƒ‡ã‚³ãƒ¼ãƒ‰å‡¦ç�†ã�Œã�Šã�‹ã�—ã��ã�ªã�£ã�¦ã�„ã‚‹ã�®ã�§æŠœã�‘ã‚‹
                    //å¤‰ã�ªãƒ‡ãƒ¼ã‚¿ã�Œæ¸¡ã�•ã‚Œã�Ÿã�¨ã�—ã�¦ã‚‚æœ€æ‚ªã�ªã‚±ãƒ¼ã‚¹ã�§255å›žç¨‹åº¦ã�®ç„¡é§„ã�ªã�®ã�§ç›®ã‚’çž‘ã‚‹
                    if ($x < -1 || $x > $width || $y < -1 || $y > $height) {
                        imagedestroy($img);
                        return false;
                    }
                    $buf = fread($stream, 1);
                    if ($buf === false) {
                        imagedestroy($img);
                        return false;
                    }
                    switch ($buf) {
                        case "\x00":
                            $buf = fread($stream, 1);
                            if ($buf === false) {
                                imagedestroy($img);
                                return false;
                            }
                            switch ($buf) {
                                case "\x00": //EOL
                                    $y += $line_step;
                                    $x = 0;
                                    break;
                                case "\x01": //EOB
                                    $y = 0;
                                    $x = 0;
                                    break 3;
                                case "\x02": //MOV
                                    $buf = fread($stream, 2);
                                    if ($buf === false) {
                                        imagedestroy($img);
                                        return false;
                                    }
                                    list(, $xx, $yy) = unpack("C2", $buf);
                                    $x += $xx;
                                    $y += $yy * $line_step;
                                    break;
                                default:     //ABS
                                    list(, $pixels) = unpack("C", $buf);
                                    $bytes = ($pixels >> $qrt_mod2) + ($pixels & $qrt_mod2);
                                    $buf = fread($stream, ($bytes + 1) & ~1);
                                    if ($buf === false) {
                                        imagedestroy($img);
                                        return false;
                                    }
                                    for ($i = 0, $pos = 0; $i < $pixels; ++$i, ++$x, $pos += $bit_count) {
                                        list(, $c) = unpack("C", $buf[$pos >> 3]);
                                        $b = $pos & 0x07;
                                        imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                                    }
                                    break;
                            }
                            break;
                        default:
                            $buf2 = fread($stream, 1);
                            if ($buf2 === false) {
                                imagedestroy($img);
                                return false;
                            }
                            list(, $size, $c) = unpack("C2", $buf . $buf2);
                            for ($i = 0, $pos = 0; $i < $size; ++$i, ++$x, $pos += $bit_count) {
                                $b = $pos & 0x07;
                                imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                            }
                            break;
                    }
                }
            } else {
                for ($line = 0; $line < $lines; ++$line, $y += $line_step) {
                    $buf = fread($stream, $line_bytes);
                    if ($buf === false) {
                        imagedestroy($img);
                        return false;
                    }

                    $pos = 0;
                    for ($x = 0; $x < $width; ++$x, $pos += $bit_count) {
                        list(, $c) = unpack("C", $buf[$pos >> 3]);
                        $b = $pos & 0x7;
                        imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                    }
                }
            }
        } else {
            $img = imagecreatetruecolor($width, $lines);
            imagealphablending($img, false);
            if ($alpha_mask) {
                //Î±ãƒ‡ãƒ¼ã‚¿ã�Œã�‚ã‚‹ã�®ã�§é€�é�Žæƒ…å ±ã‚‚ä¿�å­˜ã�§ã��ã‚‹ã‚ˆã�†ã�«
                imagesavealpha($img, true);
            }

            //xè»¸é€²è¡Œé‡�
            $pixel_step = $bit_count >> 3;
            $alpha_max = $alpha_mask ? 0x7f : 0x00;
            $alpha_mask_r = $alpha_mask ? 1 / $alpha_mask : 1;
            $red_mask_r = $red_mask ? 1 / $red_mask : 1;
            $green_mask_r = $green_mask ? 1 / $green_mask : 1;
            $blue_mask_r = $blue_mask ? 1 / $blue_mask : 1;

            for ($line = 0; $line < $lines; ++$line, $y += $line_step) {
                $buf = fread($stream, $line_bytes);
                if ($buf === false) {
                    imagedestroy($img);
                    return false;
                }

                $pos = 0;
                for ($x = 0; $x < $width; ++$x, $pos += $pixel_step) {
                    list(, $c) = unpack("V", substr($buf, $pos, $pixel_step) . "\x00\x00");
                    $a_masked = $c & $alpha_mask;
                    $r_masked = $c & $red_mask;
                    $g_masked = $c & $green_mask;
                    $b_masked = $c & $blue_mask;
                    $a = $alpha_max - ((($a_masked << 7) - $a_masked) * $alpha_mask_r);
                    $r = (($r_masked << 8) - $r_masked) * $red_mask_r;
                    $g = (($g_masked << 8) - $g_masked) * $green_mask_r;
                    $b = (($b_masked << 8) - $b_masked) * $blue_mask_r;
                    imagesetpixel($img, $x, $y, ($a << 24) | ($r << 16) | ($g << 8) | $b);
                }
            }
            imagealphablending($img, true); //ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã�«æˆ»ã�—ã�¦ã�Šã��
        }
        return $img;
    }
}
                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/php/elFinderVolumeSFTPphpseclib.class.php                                 0000644                 00000066200 15266052673 0021424 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for SFTP using phpseclib 1
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever), sitecode
 * @reference http://phpseclib.sourceforge.net/sftp/2.0/examples.html
 **/
class elFinderVolumeSFTPphpseclib extends elFinderVolumeFTP {

    /**
     * Simple hack that could break for quick compatibility with phpseclib version 1-3
     * Same value substitue for reference NET_SFTP_LOCAL_FILE and SFTP::SOURCE_LOCAL_FILE
     */
    const NET_SFTP_LOCAL_FILE = 1;

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'port' => 22,
            'path' => '/',
            'timeout' => 20,
            'owner' => true,
            'tmbPath' => '',
            'tmpPath' => '',
            'separator' => '/',
            'phpseclibDir' => '../phpseclib/',
            'connectCallback' => null, //provide your own already instantiated phpseclib $Sftp object returned by this callback
                                       //'connectCallback'=> function($options) {
                                       //     //load and instantiate phpseclib $sftp
                                       //     return $sftp;
                                       // },
            'checkSubfolders' => -1,
            'dirMode' => 0755,
            'fileMode' => 0644,
            'rootCssClass' => 'elfinder-navbar-root-ftp',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return array volume root options
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        $options['statOwner'] = true;
        $options['allowChmodReadOnly'] = true;
        $options['acceptedName'] = '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#';
        return $options;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare SFTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        if (!$this->options['connectCallback']) {
            if (!$this->options['host']
                || !$this->options['port']) {
                return $this->setError('Required options undefined.');
            }

            if (!$this->options['path']) {
                $this->options['path'] = '/';
            }

            // make net mount key
            $this->netMountKey = md5(join('-', array('sftpphpseclib', $this->options['host'], $this->options['port'], $this->options['path'], $this->options['user'])));

            set_include_path(get_include_path() . PATH_SEPARATOR . getcwd().'/'.$this->options['phpseclibDir']);
            include_once('Net/SFTP.php');

            if (!class_exists('Net_SFTP')) {
                return $this->setError('SFTP extension not loaded. Install phpseclib version 1: http://phpseclib.sourceforge.net/ Set option "phpseclibDir" accordingly.');
            }

            // remove protocol from host
            $scheme = parse_url($this->options['host'], PHP_URL_SCHEME);

            if ($scheme) {
                $this->options['host'] = substr($this->options['host'], strlen($scheme) + 3);
            }
        } else {
            // make net mount key
            $this->netMountKey = md5(join('-', array('sftpphpseclib', $this->options['path'])));
        }

        // normalize root path
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = $this->options['user'] . '@' . $this->options['host'];
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];
        $this->options['separator'] = '/';

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }

        return $this->needOnline? $this->connect() : true;

    }


    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (!$this->tmp) {
            $this->disabled[] = 'mkfile';
            $this->disabled[] = 'paste';
            $this->disabled[] = 'upload';
            $this->disabled[] = 'edit';
            //$this->disabled[] = 'archive';
            //$this->disabled[] = 'extract';
        }

        $this->disabled[] = 'archive';
        $this->disabled[] = 'extract';
    }

    /**
     * Connect to sftp server
     *
     * @return bool
     * @author sitecode
     **/
    protected function connect()
    {
        //use ca
        if ($this->options['connectCallback']) {
            $this->connect = $this->options['connectCallback']($this->options);
            if (!$this->connect || !$this->connect->isConnected()) {
                return $this->setError('Unable to connect successfully');
            }

            return true;
        }

        try{
            $host = $this->options['host'] . ($this->options['port'] != 22 ? ':' . $this->options['port'] : '');
            $this->connect = new Net_SFTP($host);
            //TODO check fingerprint before login, fail if no match to last time
            if (!$this->connect->login($this->options['user'], $this->options['pass'])) {
                return $this->setError('Unable to connect to SFTP server ' . $host);
            }
        } catch (Exception $e) {
            return $this->setError('Error while connecting to SFTP server '  . $host . ': ' . $e->getMessage());
        }

        if (!$this->connect->chdir($this->root)
            /*|| $this->root != $this->connect->pwd()*/) {
            //$this->umount();
            return $this->setError('Unable to open root folder.');
        }

        return true;
    }

    /**
     * Call rawlist
     *
     * @param string $path
     *
     * @return array
     */
    protected function ftpRawList($path)
    {
        return $this->connect->rawlist($path ?: '.') ?: [];
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->connect && $this->connect->disconnect();
    }


    /**
     * Parse line from rawlist() output and return file stat (array)
     *
     * @param array $info from rawlist() output
     * @param         $base
     * @param bool    $nameOnly
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function parseRaw($info, $base, $nameOnly = false)
    {
        $stat = array();

        if ($info['filename'] == '.' || $info['filename'] == '..') {
            return false;
        }

        $name = $info['filename'];
        //for compatability with phpseclib version 2/3
        if (empty($info['permissions'])) {
            $info['permissions'] = $info['mode'];
        }   

        if ($info['type'] === 3) {
            // check recursive processing
            if ($this->cacheDirTarget && $this->_joinPath($base, $name) !== $this->cacheDirTarget) {
                return array();
            }
            if (!$nameOnly) {
                $target = $this->connect->readlink($name);
                if (substr($target, 0, 1) !== $this->separator) {
                    $target = $this->getFullPath($target, $base);
                }
                $target = $this->_normpath($target);
                $stat['name'] = $name;
                $stat['target'] = $target;
                return $stat;
            }
        }

        if ($nameOnly) {
            return array('name' => $name);
        }

        $stat['ts'] = $info['mtime'];

        if ($this->options['statOwner']) {
            $stat['owner'] = $info['uid'];
            $stat['group'] = $info['gid'];
            $stat['perm'] = $info['permissions'];
            $stat['isowner'] = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;
        }

        $owner_computed = isset($stat['isowner']) ? $stat['isowner'] : $this->options['owner'];
        $perm = $this->parsePermissions($info['permissions'], $owner_computed);
        $stat['name'] = $name;
        if ($info['type'] === NET_SFTP_TYPE_DIRECTORY) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;

        } elseif ($info['type'] === NET_SFTP_TYPE_SYMLINK) {
            $stat['mime'] = 'symlink';
            $stat['size'] = 0;

        } else {
            $stat['mime'] = $this->mimetype($stat['name'], true);
            $stat['size'] = $info['size'];
        }

        $stat['read'] = $perm['read'];
        $stat['write'] = $perm['write'];

        return $stat;
    }

    /**
     * Parse permissions string. Return array(read => true/false, write => true/false)
     *
     * @param  int $perm
     *                                             The isowner parameter is computed by the caller.
     *                                             If the owner parameter in the options is true, the user is the actual owner of all objects even if the user used in the ftp Login
     *                                             is different from the file owner id.
     *                                             If the owner parameter is false to understand if the user is the file owner we compare the ftp user with the file owner id.
     * @param Boolean $isowner                     . Tell if the current user is the owner of the object.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author sitecode
     */
    protected function parsePermissions($permissions, $isowner = true)
    {
        $permissions = decoct($permissions);
        $perm = $isowner ? decbin((int)$permissions[-3]) : decbin((int)$permissions[-1]);

        return array(
            'read' => $perm[-3],
            'write' => $perm[-2]
        );
    }

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return void
     * @author Dmitry Levashov, sitecode
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        $list = array();
        $encPath = $this->convEncIn($path);
        foreach ($this->ftpRawList($encPath) as $info) {
            if (($stat = $this->parseRaw($info, $encPath))) {
                $list[] = $stat;
            }
        }
        $list = $this->convEncOut($list);
        $prefix = ($path === $this->separator) ? $this->separator : $path . $this->separator;
        $targets = array();
        foreach ($list as $stat) {
            $p = $prefix . $stat['name'];
            if (isset($stat['target'])) {
                // stat later
                $targets[$stat['name']] = $stat['target'];
            } else {
                $stat = $this->updateCache($p, $stat);
                if (empty($stat['hidden'])) {
                    if (!$hasDir && $stat['mime'] === 'directory') {
                        $hasDir = true;
                    } elseif (!$hasDir && $stat['mime'] === 'symlink') {
                        $hasDir = true;
                    }
                    $this->dirsCache[$path][] = $p;
                }
            }
        }
        // stat link targets
        foreach ($targets as $name => $target) {
            $stat = array();
            $stat['name'] = $name;
            $p = $prefix . $name;
            $cacheDirTarget = $this->cacheDirTarget;
            $this->cacheDirTarget = $this->convEncIn($target, true);
            if ($tstat = $this->stat($target)) {
                $stat['size'] = $tstat['size'];
                $stat['alias'] = $target;
                $stat['thash'] = $tstat['hash'];
                $stat['mime'] = $tstat['mime'];
                $stat['read'] = $tstat['read'];
                $stat['write'] = $tstat['write'];

                if (isset($tstat['ts'])) {
                    $stat['ts'] = $tstat['ts'];
                }
                if (isset($tstat['owner'])) {
                    $stat['owner'] = $tstat['owner'];
                }
                if (isset($tstat['group'])) {
                    $stat['group'] = $tstat['group'];
                }
                if (isset($tstat['perm'])) {
                    $stat['perm'] = $tstat['perm'];
                }
                if (isset($tstat['isowner'])) {
                    $stat['isowner'] = $tstat['isowner'];
                }
            } else {

                $stat['mime'] = 'symlink-broken';
                $stat['read'] = false;
                $stat['write'] = false;
                $stat['size'] = 0;

            }
            $this->cacheDirTarget = $cacheDirTarget;
            $stat = $this->updateCache($p, $stat);
            if (empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }
    }


    /***************** file stat ********************/

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $outPath = $this->convEncOut($path);
        if (isset($this->cache[$outPath])) {
            return $this->convEncIn($this->cache[$outPath]);
        } else {
            $this->convEncIn();
        }
        if ($path === $this->root) {
            $res = array(
                'name' => $this->root,
                'mime' => 'directory',
                'dirs' => -1
            );
            if ($this->needOnline && (($this->ARGS['cmd'] === 'open' && $this->ARGS['target'] === $this->encode($this->root)) || $this->isMyReload())) {
                $check = array(
                    'ts' => true,
                    'dirs' => true,
                );
                $ts = 0;
                foreach ($this->ftpRawList($path) as $info) {
                    if ($info['filename'] === '.') {
                        $info['filename'] = 'root';
                        if ($stat = $this->parseRaw($info, $path)) {
                            unset($stat['name']);
                            $res = array_merge($res, $stat);
                            if ($res['ts']) {
                                $ts = 0;
                                unset($check['ts']);
                            }
                        }
                    }
                    if ($check && ($stat = $this->parseRaw($info, $path))) {
                        if (isset($stat['ts']) && !empty($stat['ts'])) {
                            $ts = max($ts, $stat['ts']);
                        }
                        if (isset($stat['dirs']) && $stat['mime'] === 'directory') {
                            $res['dirs'] = 1;
                            unset($stat['dirs']);
                        }
                        if (!$check) {
                            break;
                        }
                    }
                }
                if ($ts) {
                    $res['ts'] = $ts;
                }
                $this->cache[$outPath] = $res;
            }
            return $res;
        }

        $pPath = $this->_dirname($path);
        if ($this->_inPath($pPath, $this->root)) {
            $outPPpath = $this->convEncOut($pPath);
            if (!isset($this->dirsCache[$outPPpath])) {
                $parentSubdirs = null;
                if (isset($this->sessionCache['subdirs']) && isset($this->sessionCache['subdirs'][$outPPpath])) {
                    $parentSubdirs = $this->sessionCache['subdirs'][$outPPpath];
                }
                $this->cacheDir($outPPpath);
                if ($parentSubdirs) {
                    $this->sessionCache['subdirs'][$outPPpath] = $parentSubdirs;
                }
            }
        }

        $stat = $this->convEncIn(isset($this->cache[$outPath]) ? $this->cache[$outPath] : array());
        if (!$this->mounted) {
            // dispose incomplete cache made by calling `stat` by 'startPath' option
            $this->cache = array();
        }

        return $stat;
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov, sitecode
     **/
    protected function _subdirs($path)
    {
        foreach ($this->ftpRawList($path) as $info) {
            $name = $info['filename'];
            if ($name && $name !== '.' && $name !== '..' && $info['type'] == NET_SFTP_TYPE_DIRECTORY) {
                return true;
            }
            if ($name && $name !== '.' && $name !== '..' && $info['type'] == NET_SFTP_TYPE_SYMLINK) {
                //return true;
            }
        }

        return false;
    }


    /******************** file/dir content *********************/

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @throws elFinderAbortException
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        if ($this->tmp) {
            $local = $this->getTempFile($path);
            $this->connect->get($path, $local);
            return @fopen($local, $mode);
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }


    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $this->_basename($name));
        if ($this->connect->mkdir($path) === false) {
            return false;
        }

        $this->options['dirMode'] && $this->connect->chmod($this->options['dirMode'], $path);
        return $path;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author sitecode
     **/
    protected function _mkfile($path, $name)
    {
        $path = $this->_joinPath($path, $this->_basename($name));
        return $this->connect->put($path, '') ? $path : false;
/*
        if ($this->tmp) {
            $path = $this->_joinPath($path, $name);
            $local = $this->getTempFile();
            $res = touch($local) && $this->connect->put($path, $local, self::NET_SFTP_LOCAL_FILE);
            unlink($local);
            return $res ? $path : false;
        }

        return false;
 */
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov, sitecode
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $res = false;

        $target = $this->_joinPath($targetDir, $this->_basename($name));
        if ($this->tmp) {
            $local = $this->getTempFile();

            if ($this->connect->get($source, $local)
                && $this->connect->put($target, $local, self::NET_SFTP_LOCAL_FILE)) {
                $res = true;
            }
            unlink($local);
        } else {
            //not memory efficient
            $res = $this->_filePutContents($target, $this->_getContents($source));
        }

        return $res;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $target = $this->_joinPath($targetDir, $this->_basename($name));
        return $this->connect->rename($source, $target) ? $target : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->connect->delete($path, false);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->connect->delete($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        //TODO optionally encrypt $fp before uploading if mime is not already encrypted type
        $path = $this->_joinPath($dir, $this->_basename($name));
        return $this->connect->put($path, $fp)
            ? $path
            : false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _getContents($path)
    {
        return $this->connect->get($path);
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return $this->connect->put($path, $content);
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return $this->connect->chmod($modeOct, $path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        return false; //TODO
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        return false; //TODO
    }

    /**
     * Gets an array of absolute remote SFTP paths of files and
     * folders in $remote_directory omitting symbolic links.
     *
     * @param $remote_directory string remote SFTP path to scan for file and folders recursively
     * @param $targets          array  Array of target item. `null` is to get all of items
     *
     * @return array of elements each of which is an array of two elements:
     * <ul>
     * <li>$item['path'] - absolute remote SFTP path</li>
     * <li>$item['type'] - either 'f' for file or 'd' for directory</li>
     * </ul>
     */
    protected function ftp_scan_dir($remote_directory, $targets = null)
    {
        $buff = $this->ftpRawList($remote_directory);
        $items = array();
        if ($targets && is_array($targets)) {
            $targets = array_flip($targets);
        } else {
            $targets = false;
        }
        foreach ($buff as $info) {
            $name = $info['filename'];
            if ($name !== '.' && $name !== '..' && (!$targets || isset($targets[$name]))) {
                switch ($info['type']) {
                    case NET_SFTP_TYPE_SYMLINK : //omit symbolic links
                    case NET_SFTP_TYPE_DIRECTORY :
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'd'; // normal file
                        $items[] = $item;
                        $items = array_merge($items, $this->ftp_scan_dir($remote_file_path));
                        break;
                    default:
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'f'; // normal file
                        $items[] = $item;
                }
            }
        }
        return $items;
    }

} // END class
                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/php/elFinderVolumeDropbox2.class.php                                      0000644                 00000134452 15266052674 0020463 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\DropboxFile;
use Kunnu\Dropbox\Exceptions\DropboxClientException;
use Kunnu\Dropbox\Models\FileMetadata;
use Kunnu\Dropbox\Models\FolderMetadata;

/**
 * Simple elFinder driver for Dropbox
 * kunalvarma05/dropbox-php-sdk:0.1.5 or above.
 *
 * @author Naoki Sawada
 **/
class elFinderVolumeDropbox2 extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'db';

    /**
     * Dropbox service object.
     *
     * @var object
     **/
    protected $service = null;

    /**
     * Fetch options.
     *
     * @var string
     */
    private $FETCH_OPTIONS = [];

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Naoki Sawada
     **/
    public function __construct()
    {
        $opts = [
            'app_key' => '',
            'app_secret' => '',
            'access_token' => '',
            'aliasFormat' => '%s@Dropbox',
            'path' => '/',
            'separator' => '/',
            'acceptedName' => '#^[^\\\/]+$#',
            'rootCssClass' => 'elfinder-navbar-root-dropbox',
            'publishPermission' => [
                'requested_visibility' => 'public',
                //'link_password' => '',
                //'expires' => '',
            ],
            'getThumbSize' => 'medium', // Available sizes: 'thumb', 'small', 'medium', 'large', 'huge'
        ];
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _db_splitPath($path)
    {
        $path = trim($path, '/');
        if ($path === '') {
            $dirname = '/';
            $basename = '';
        } else {
            $pos = strrpos($path, '/');
            if ($pos === false) {
                $dirname = '/';
                $basename = $path;
            } else {
                $dirname = '/' . substr($path, 0, $pos);
                $basename = substr($path, $pos + 1);
            }
        }

        return [$dirname, $basename];
    }

    /**
     * Get dat(Dropbox metadata) from Dropbox.
     *
     * @param string $path
     *
     * @return boolean|object Dropbox metadata
     */
    private function _db_getFile($path)
    {
        if ($path === '/') {
            return true;
        }

        $res = false;
        try {
            $file = $this->service->getMetadata($path, $this->FETCH_OPTIONS);
            if ($file instanceof FolderMetadata || $file instanceof FileMetadata) {
                $res = $file;
            }

            return $res;
        } catch (DropboxClientException $e) {
            return false;
        }
    }

    /**
     * Parse line from Dropbox metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function _db_parseRaw($raw)
    {
        $stat = [];
        $isFolder = false;
        if ($raw === true) {
            // root folder
            $isFolder = true;
            $stat['name'] = '';
            $stat['iid'] = '0';
        }

        $data = [];
        if (is_object($raw)) {
            $isFolder = $raw instanceof FolderMetadata;
            $data = $raw->getData();
        } elseif (is_array($raw)) {
            $isFolder = $raw['.tag'] === 'folder';
            $data = $raw;
        }

        if (isset($data['path_lower'])) {
            $stat['path'] = $data['path_lower'];
        }

        if (isset($data['name'])) {
            $stat['name'] = $data['name'];
        }

        if (isset($data['id'])) {
            $stat['iid'] = substr($data['id'], 3);
        }

        if ($isFolder) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            $stat['ts'] = 0;
            $stat['dirs'] = -1;
        } else {
            $stat['size'] = isset($data['size']) ? (int)$data['size'] : 0;
            if (isset($data['server_modified'])) {
                $stat['ts'] = strtotime($data['server_modified']);
            } elseif (isset($data['client_modified'])) {
                $stat['ts'] = strtotime($data['client_modified']);
            } else {
                $stat['ts'] = 0;
            }
            $stat['url'] = '1';
        }

        return $stat;
    }

    /**
     * Get thumbnail from Dropbox.
     *
     * @param string $path
     * @param string $size
     *
     * @return string | boolean
     */
    protected function _db_getThumbnail($path)
    {
        try {
            return $this->service->getThumbnail($path, $this->options['getThumbSize'])->getContents();
        } catch (DropboxClientException $e) {
            return false;
        }
    }

    /**
     * Join dir name and file name(display name) and retur full path.
     *
     * @param string $dir
     * @param string $displayName
     *
     * @return string
     */
    protected function _db_joinName($dir, $displayName)
    {
        return rtrim($dir, '/') . '/' . $displayName;
    }

    /**
     * Get OAuth2 access token form OAuth1 tokens.
     *
     * @param string $app_key
     * @param string $app_secret
     * @param string $oauth1_token
     * @param string $oauth1_secret
     *
     * @return string|false
     */
    public static function getTokenFromOauth1($app_key, $app_secret, $oauth1_token, $oauth1_secret)
    {
        $data = [
            'oauth1_token' => $oauth1_token,
            'oauth1_token_secret' => $oauth1_secret,
        ];
        $auth = base64_encode($app_key . ':' . $app_secret);

        $ch = curl_init('https://api.dropboxapi.com/2/auth/token/from_oauth1');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Authorization: Basic ' . $auth,
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        $result = curl_exec($ch);
        curl_close($ch);

        $res = $result ? json_decode($result, true) : [];

        return isset($res['oauth2_token']) ? $res['oauth2_token'] : false;
    }

    /*********************************************************************/
    /*                        EXTENDED FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['app_key']) && defined('ELFINDER_DROPBOX_APPKEY')) {
            $options['app_key'] = ELFINDER_DROPBOX_APPKEY;
        }
        if (empty($options['app_secret']) && defined('ELFINDER_DROPBOX_APPSECRET')) {
            $options['app_secret'] = ELFINDER_DROPBOX_APPSECRET;
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $app = new DropboxApp($options['app_key'], $options['app_secret']);
            $dropbox = new Dropbox($app);
            $authHelper = $dropbox->getAuthHelper();

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('Dropbox2AuthParams', [])->set('Dropbox2Tokens', []);
            } elseif ($options['pass'] === 'dropbox2') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('Dropbox2AuthParams', []), $options);

            if (!isset($options['tokens'])) {
                $options['tokens'] = $this->session->get('Dropbox2Tokens', []);
                $this->session->remove('Dropbox2Tokens');
            }
            $aToken = $options['tokens'];
            if (!is_array($aToken) || !isset($aToken['access_token'])) {
                $aToken = [];
            }

            $service = null;
            if ($aToken) {
                try {
                    $dropbox->setAccessToken($aToken['access_token']);
                    $this->session->set('Dropbox2AuthParams', $options);
                } catch (DropboxClientException $e) {
                    $aToken = [];
                    $options['tokens'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('Dropbox2AuthParams', $options);

                        return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
                    }
                }
            }

            if ((isset($options['user']) && $options['user'] === 'init') || (isset($_GET['host']) && $_GET['host'] == '1')) {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (!empty($options['id'])) {
                    $callback = $options['url']
                            . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=dropbox2&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                }

                $itpCare = isset($options['code']);
                $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
                $state = $itpCare? $options['state'] : (isset($_GET['state'])? $_GET['state'] : '');
                if (!$aToken && empty($code)) {
                    $url = $authHelper->getAuthUrl($callback);

                    $html = '<input id="elf-volumedriver-dropbox2-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "dropbox2", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('Dropbox2AuthParams', $options);

                        return ['exit' => true, 'body' => $html];
                    } else {
                        $out = [
                            'node' => $options['id'],
                            'json' => '{"protocol": "dropbox2", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount',
                        ];

                        return ['exit' => 'callback', 'out' => $out];
                    }
                } else {
                    if ($code && $state) {
                        if (!empty($options['id'])) {
                            // see https://github.com/kunalvarma05/dropbox-php-sdk/issues/115
                            $authHelper->getPersistentDataStore()->set('state', htmlspecialchars($state));
                            $tokenObj = $authHelper->getAccessToken($code, $state, $callback);
                            $options['tokens'] = [
                                'access_token' => $tokenObj->getToken(),
                                'uid' => $tokenObj->getUid(),
                            ];
                            unset($options['code'], $options['state']);
                            $this->session->set('Dropbox2Tokens', $options['tokens'])->set('Dropbox2AuthParams', $options);
                            $out = [
                                'node' => $options['id'],
                                'json' => '{"protocol": "dropbox2", "mode": "done", "reset": 1}',
                                'bind' => 'netmount',
                            ];
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = [
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'dropbox2',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code' => $code,
                                        'state' => $state
                                    )
                                )),
                                'bind' => 'netmount'
                            ];
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $path = $options['path'];
                    $folders = [];
                    $listFolderContents = $dropbox->listFolder($path);
                    $items = $listFolderContents->getItems();
                    foreach ($items as $item) {
                        $data = $item->getData();
                        if ($data['.tag'] === 'folder') {
                            $folders[$data['path_lower']] = $data['name'];
                        }
                    }
                    natcasesort($folders);

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['/' => '/'] + $folders;
                    $folders = json_encode($folders);
                    $json = '{"protocol": "dropbox2", "mode": "done", "folders": ' . $folders . '}';
                    $options['pass'] = 'return';
                    $html = 'Dropbox.com';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('Dropbox2AuthParams', $options);

                    return ['exit' => true, 'body' => $html];
                }
            }
        } catch (DropboxClientException $e) {
            $this->session->remove('Dropbox2AuthParams')->remove('Dropbox2Tokens');
            if (empty($options['pass'])) {
                return ['exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage()];
            } else {
                return ['exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]];
            }
        }

        if (!$aToken) {
            return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
        }

        if ($options['path'] === 'root') {
            $options['path'] = '/';
        }

        try {
            if ($options['path'] !== '/') {
                $file = $dropbox->getMetadata($options['path']);
                $name = $file->getName();
            } else {
                $name = 'root';
            }
            $options['alias'] = sprintf($this->options['aliasFormat'], $name);
        } catch (DropboxClientException $e) {
            return ['exit' => true, 'error' => $e->getMessage()];
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `Dropbox` & rm thumbs.
     *
     * @param array $options
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->driverId . '_' . $this->options['tokens']['uid'] . '*.png')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare Dropbox connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $this->service.
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function init()
    {
        if (empty($this->options['app_key'])) {
            if (defined('ELFINDER_DROPBOX_APPKEY') && ELFINDER_DROPBOX_APPKEY) {
                $this->options['app_key'] = ELFINDER_DROPBOX_APPKEY;
            } else {
                return $this->setError('Required option "app_key" is undefined.');
            }
        }
        if (empty($this->options['app_secret'])) {
            if (defined('ELFINDER_DROPBOX_APPSECRET') && ELFINDER_DROPBOX_APPSECRET) {
                $this->options['app_secret'] = ELFINDER_DROPBOX_APPSECRET;
            } else {
                return $this->setError('Required option "app_secret" is undefined.');
            }
        }
        if (isset($this->options['tokens']) && is_array($this->options['tokens']) && !empty($this->options['tokens']['access_token'])) {
            $this->options['access_token'] = $this->options['tokens']['access_token'];
        }
        if (!$this->options['access_token']) {
            return $this->setError('Required option "access_token" or "refresh_token" is undefined.');
        }

        try {
            // make net mount key for network mount
            $aToken = $this->options['access_token'];
            $this->netMountKey = md5($aToken . '-' . $this->options['path']);

            $errors = [];
            if ($this->needOnline && !$this->service) {
                $app = new DropboxApp($this->options['app_key'], $this->options['app_secret'], $aToken);
                $this->service = new Dropbox($app);
                // to check access_token
                $this->service->getCurrentAccount();
            }
        } catch (DropboxClientException $e) {
            $errors[] = 'Dropbox error: ' . $e->getMessage();
        } catch (Exception $e) {
            $errors[] = $e->getMessage();
        }

        if ($this->needOnline && !$this->service) {
            $errors[] = 'Dropbox Service could not be loaded.';
        }

        if ($errors) {
            return $this->setError($errors);
        }

        // normalize root path
        $this->options['path'] = strtolower($this->options['path']);
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = sprintf($this->options['aliasFormat'], ($this->options['path'] === '/') ? 'Root' : $this->_basename($this->options['path']));
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Naoki Sawada
     * @throws elFinderAbortException
     */
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if ($this->isMyReload()) {
            //$this->_db_getDirectoryData(false);
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     **/
    public function umount()
    {
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return
     * @author Naoki Sawada
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = [];
        $hasDir = false;

        $res = $this->service->listFolder($path, $this->FETCH_OPTIONS);

        if ($res) {
            $items = $res->getItems()->all();
            foreach ($items as $raw) {
                if ($stat = $this->_db_parseRaw($raw)) {
                    $mountPath = $this->_joinPath($path, $stat['name']);
                    $stat = $this->updateCache($mountPath, $stat);
                    if (empty($stat['hidden']) && $path !== $mountPath) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $mountPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Recursive files search.
     *
     * @param string $path dir path
     * @param string $q    search string
     * @param array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod']) || $mimes) {
            // has custom match method or mimes, use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;

        $searchRes = $this->service->search($path, $q, ['start' => 0, 'max_results' => 1000]);
        $items = $searchRes->getItems();
        $more = $searchRes->hasMoreItems();
        while ($more) {
            if ($timeout && $timeout < time()) {
                $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
                break;
            }
            $searchRes = $this->service->search($path, $q, ['start' => $searchRes->getCursor(), 'max_results' => 1000]);
            $more = $searchRes->hasMoreItems();
            $items = $items->merge($searchRes->getItems());
        }

        $result = [];
        foreach ($items as $raw) {
            if ($stat = $this->_db_parseRaw($raw->getMetadata())) {
                $stat = $this->updateCache($stat['path'], $stat);
                if (empty($stat['hidden'])) {
                    $result[] = $stat;
                }
            }
        }

        return $result;
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function copy($src, $dst, $name)
    {
        $srcStat = $this->stat($src);
        $target = $this->_joinPath($dst, $name);
        $tgtStat = $this->stat($target);
        if ($tgtStat) {
            if ($srcStat['mime'] === 'directory') {
                return parent::copy($src, $dst, $name);
            } else {
                $this->_unlink($target);
            }
        }
        $this->clearcache();
        if ($res = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($target);
            $res = $target;
        }

        return $res;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     * @param bool   $recursive
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false, $recursive = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$recursive && !$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$recursive && !$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_db_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        $result = true;

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');

            }
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function tmbname($stat)
    {
        $name = $this->driverId . '_';
        if (isset($this->options['tokens']) && is_array($this->options['tokens'])) {
            $name .= $this->options['tokens']['uid'];
        }

        return $name . md5($stat['iid']) . $stat['ts'] . '.png';
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR.
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return bool|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = [])
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        $file = $this->file($hash);
        if (($file = $this->file($hash)) !== false && (!$file['url'] || $file['url'] == 1)) {
            $path = $this->decode($hash);
            $url = '';
            try {
                $res = $this->service->postToAPI('/sharing/list_shared_links', ['path' => $path, 'direct_only' => true])->getDecodedBody();
                if ($res && !empty($res['links'])) {
                    foreach ($res['links'] as $link) {
                        if (isset($link['link_permissions'])
                            && isset($link['link_permissions']['requested_visibility'])
                            && $link['link_permissions']['requested_visibility']['.tag'] === $this->options['publishPermission']['requested_visibility']) {
                            $url = $link['url'];
                            break;
                        }
                    }
                }
                if (!$url) {
                    $res = $this->service->postToAPI('/sharing/create_shared_link_with_settings', ['path' => $path, 'settings' => $this->options['publishPermission']])->getDecodedBody();
                    if (isset($res['url'])) {
                        $url = $res['url'];
                    }
                }
                if ($url) {
                    $url = str_replace('www.dropbox.com', 'dl.dropboxusercontent.com', $url);
                    $url = str_replace('?dl=0', '', $url);

                    return $url;
                }
            } catch (DropboxClientException $e) {
                return $this->setError('Dropbox error: ' . $e->getMessage());
            }
        }

        return false;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && isset($this->options['tokens']) && !empty($this->options['tokens']['uid'])) {
            $res['Dropbox uid'] = $this->options['tokens']['uid'];
            $res['access_token'] = $this->options['tokens']['access_token'];
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _dirname($path)
    {
        list($dirname) = $this->_db_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_db_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return rtrim($dir, '/') . '/' . strtolower($name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _normpath($path)
    {
        return '/' . ltrim($path, '/');
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            return ltrim(substr($path, strlen($this->root)), '/');
        }
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _abspath($path)
    {
        if ($path === '/') {
            return $this->root;
        } else {
            return $this->_joinPath($this->root, $path);
        }
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _path($path)
    {
        $path = $this->_normpath(substr($path, strlen($this->root)));

        return $path;
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_db_getFile($path)) {
            return $this->_db_parseRaw($raw);
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _subdirs($path)
    {
        $hasdir = false;

        try {
            $res = $this->service->listFolder($path);
            if ($res) {
                $items = $res->getItems();
                foreach ($items as $raw) {
                    if ($raw instanceof FolderMetadata) {
                        $hasdir = true;
                        break;
                    }
                }
            }
        } catch (DropboxClientException $e) {
            $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return $hasdir;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }
        $ret = '';

        if ($data = $this->_getContents($path)) {
            $tmp = $this->getTempFile();
            file_put_contents($tmp, $data);
            $size = getimagesize($tmp);
            if ($size) {
                $ret = array('dim' => $size[0] . 'x' . $size[1]);
                $srcfp = fopen($tmp, 'rb');
                $target = isset(elFinder::$currentArgs['target'])? elFinder::$currentArgs['target'] : '';
                if ($subImgLink = $this->getSubstituteImgLink($target, $size, $srcfp)) {
                    $ret['url'] = $subImgLink;
                }
            }
        }

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Naoki Sawada
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            if ($link = $this->service->getTemporaryLink($path)) {
                $access_token = $this->service->getAccessToken();
                if ($access_token) {
                    $data = array(
                        'target' => $link->getLink(),
                        'headers' => array('Authorization: Bearer ' . $access_token),
                    );

                    // to support range request
                    if (func_num_args() > 2) {
                        $opts = func_get_arg(2);
                    } else {
                        $opts = array();
                    }
                    if (!empty($opts['httpheaders'])) {
                        $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
                    }

                    return elFinder::getStreamByUrl($data);
                }
            }
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _mkdir($path, $name)
    {
        try {
            return $this->service->createFolder($this->_db_joinName($path, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, []);
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _copy($source, $targetDir, $name)
    {
        try {
            $this->service->copy($source, $this->_db_joinName($targetDir, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _move($source, $targetDir, $name)
    {
        try {
            return $this->service->move($source, $this->_db_joinName($targetDir, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _unlink($path)
    {
        try {
            $this->service->delete($path);

            return true;
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _rmdir($path)
    {
        return $this->_unlink($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param string   $dir  target dir path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Naoki Sawada
     **/
    protected function _save($fp, $path, $name, $stat)
    {
        try {
            $info = stream_get_meta_data($fp);
            if (empty($info['uri']) || preg_match('#^[a-z0-9.-]+://#', $info['uri'])) {
                if ($filepath = $this->getTempFile()) {
                    $_fp = fopen($filepath, 'wb');
                    stream_copy_to_stream($fp, $_fp);
                    fclose($_fp);
                }
            } else {
                $filepath = $info['uri'];
            }
            $dropboxFile = new DropboxFile($filepath);
            if ($name === '') {
                $fullpath = $path;
            } else {
                $fullpath = $this->_db_joinName($path, $name);
            }

            return $this->service->upload($dropboxFile, $fullpath, ['mode' => 'overwrite'])->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Naoki Sawada
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            $file = $this->service->download($path);
            $contents = $file->getContents();
        } catch (Exception $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $name = '';
                $stat = $this->stat($path);
                if ($stat) {
                    // keep real name
                    $path = $this->_dirname($path);
                    $name = $stat['name'];
                }
                $res = $this->_save($fp, $path, $name, []);
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return [];
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     **/
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Recursive symlinks search.
     *
     * @param string $path file/dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _findSymlinks($path)
    {
        die('Not yet implemented. (_findSymlinks)');
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
                                                                                                                                                                                                                      includes/File_manager/lib/php/elFinderVolumeGroup.class.php                                         0000644                 00000012373 15266052674 0020055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder driver for Volume Group.
 *
 * @author Naoki Sawada
 **/
class elFinderVolumeGroup extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'g';


    /**
     * Constructor
     * Extend options with required fields
     */
    public function __construct()
    {
        $this->options['type'] = 'group';
        $this->options['path'] = '/';
        $this->options['dirUrlOwn'] = true;
        $this->options['syncMinMs'] = 0;
        $this->options['tmbPath'] = '';
        $this->options['disabled'] = array(
            'archive',
            'copy',
            'cut',
            'duplicate',
            'edit',
            'empty',
            'extract',
            'getfile',
            'mkdir',
            'mkfile',
            'paste',
            'resize',
            'rm',
            'upload'
        );
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /*********************** paths/urls *************************/

    /**
     * @inheritdoc
     **/
    protected function _dirname($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _basename($path)
    {
        return '';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _joinPath($dir, $name)
    {
        return '/' . $name;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _normpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _relpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _abspath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _path($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _inpath($path, $parent)
    {
        return false;
    }



    /***************** file stat ********************/

    /**
     * {@inheritDoc}
     **/
    protected function _stat($path)
    {
        if ($path === '/') {
            return array(
                'size' => 0,
                'ts' => 0,
                'mime' => 'directory',
                'read' => true,
                'write' => false,
                'locked' => true,
                'hidden' => false,
                'dirs' => 0
            );
        }
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _subdirs($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _dimensions($path, $mime)
    {
        return false;
    }
    /******************** file/dir content *********************/

    /**
     * {@inheritDoc}
     **/
    protected function readlink($path)
    {
        return null;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _scandir($path)
    {
        return array();
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fclose($fp, $path = '')
    {
        return true;
    }

    /********************  file/dir manipulations *************************/

    /**
     * {@inheritDoc}
     **/
    protected function _mkdir($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _mkfile($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _symlink($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _copy($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _move($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _unlink($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _rmdir($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _getContents($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _filePutContents($path, $content)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _checkArchivers()
    {
        return;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _findSymlinks($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _extract($path, $arc)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        return false;
    }
}

                                                                                                                                                                                                                                                                     includes/File_manager/lib/php/elFinderPlugin.php                                                    0000644                 00000006403 15266052674 0015720 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin Abstract
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPlugin
{

    /**
     * This plugin's options
     *
     * @var array
     */
    protected $opts = array();

    /**
     * Get current volume's options
     *
     * @param object $volume
     *
     * @return array options
     */
    protected function getCurrentOpts($volume)
    {
        $name = substr(get_class($this), 14); // remove "elFinderPlugin"
        $opts = $this->opts;
        if (is_object($volume)) {
            $volOpts = $volume->getOptionsPlugin($name);
            if (is_array($volOpts)) {
                $opts = array_merge($opts, $volOpts);
            }
        }
        return $opts;
    }

    /**
     * Is enabled with options
     *
     * @param array    $opts
     * @param elFinder $elfinder
     *
     * @return boolean
     */
    protected function iaEnabled($opts, $elfinder = null)
    {
        if (!$opts['enable']) {
            return false;
        }

        // check post var 'contentSaveId' to disable this plugin
        if ($elfinder && !empty($opts['disableWithContentSaveId'])) {
            $session = $elfinder->getSession();
            $urlContentSaveIds = $session->get('urlContentSaveIds', array());
            if (!empty(elFinder::$currentArgs['contentSaveId']) && ($contentSaveId = elFinder::$currentArgs['contentSaveId'])) {
                if (!empty($urlContentSaveIds[$contentSaveId])) {
                    $elfinder->removeUrlContentSaveId($contentSaveId);
                    return false;
                }
            }
        }

        if (isset($opts['onDropWith']) && !is_null($opts['onDropWith'])) {
            // plugin disabled by default, enabled only if given key is pressed
            if (isset($_REQUEST['dropWith']) && $_REQUEST['dropWith']) {
                $onDropWith = $opts['onDropWith'];
                $action = (int)$_REQUEST['dropWith'];
                if (!is_array($onDropWith)) {
                    $onDropWith = array($onDropWith);
                }
                foreach ($onDropWith as $key) {
                    $key = (int)$key;
                    if (($action & $key) === $key) {
                        return true;
                    }
                }
            }
            return false;
        }

        if (isset($opts['offDropWith']) && !is_null($opts['offDropWith']) && isset($_REQUEST['dropWith'])) {
            // plugin enabled by default, disabled only if given key is pressed
            $offDropWith = $opts['offDropWith'];
            $action = (int)$_REQUEST['dropWith'];
            if (!is_array($offDropWith)) {
                $offDropWith = array($offDropWith);
            }
            $res = true;
            foreach ($offDropWith as $key) {
                $key = (int)$key;
                if ($key === 0) {
                    if ($action === 0) {
                        $res = false;
                        break;
                    }
                } else {
                    if (($action & $key) === $key) {
                        $res = false;
                        break;
                    }
                }
            }
            if (!$res) {
                return false;
            }
        }

        return true;
    }
}
                                                                                                                                                                                                                                                             includes/File_manager/lib/php/autoload.php                                                          0000644                 00000005170 15266052674 0014621 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

define('ELFINDER_PHP_ROOT_PATH', dirname(__FILE__));

function elFinderAutoloader($name)
{
    $map = array(
        'elFinder' => 'elFinder.class.php',
        'elFinderConnector' => 'elFinderConnector.class.php',
        'elFinderEditor' => 'editors/editor.php',
        'elFinderLibGdBmp' => 'libs/GdBmp.php',
        'elFinderPlugin' => 'elFinderPlugin.php',
        'elFinderPluginAutoResize' => 'plugins/AutoResize/plugin.php',
        'elFinderPluginAutoRotate' => 'plugins/AutoRotate/plugin.php',
        'elFinderPluginNormalizer' => 'plugins/Normalizer/plugin.php',
        'elFinderPluginSanitizer' => 'plugins/Sanitizer/plugin.php',
        'elFinderPluginWatermark' => 'plugins/Watermark/plugin.php',
        'elFinderSession' => 'elFinderSession.php',
        'elFinderSessionInterface' => 'elFinderSessionInterface.php',
        'elFinderVolumeDriver' => 'elFinderVolumeDriver.class.php',
        'elFinderVolumeDropbox2' => 'elFinderVolumeDropbox2.class.php',
        'elFinderVolumeFTP' => 'elFinderVolumeFTP.class.php',
        'elFinderVolumeFlysystemGoogleDriveCache' => 'elFinderFlysystemGoogleDriveNetmount.php',
        'elFinderVolumeFlysystemGoogleDriveNetmount' => 'elFinderFlysystemGoogleDriveNetmount.php',
        'elFinderVolumeGoogleDrive' => 'elFinderVolumeGoogleDrive.class.php',
        'elFinderVolumeGroup' => 'elFinderVolumeGroup.class.php',
        'elFinderVolumeLocalFileSystem' => 'elFinderVolumeLocalFileSystem.class.php',
        'elFinderVolumeMySQL' => 'elFinderVolumeMySQL.class.php',
        'elFinderVolumeSFTPphpseclib' => 'elFinderVolumeSFTPphpseclib.class.php',
        'elFinderVolumeTrash' => 'elFinderVolumeTrash.class.php',
    );
    if (isset($map[$name])) {
        return include_once(ELFINDER_PHP_ROOT_PATH . '/' . $map[$name]);
    }
    $prefix = substr($name, 0, 14);
    if (substr($prefix, 0, 8) === 'elFinder') {
        if ($prefix === 'elFinderVolume') {
            $file = ELFINDER_PHP_ROOT_PATH . '/' . $name . '.class.php';
            return (is_file($file) && include_once($file));
        } else if ($prefix === 'elFinderPlugin') {
            $file = ELFINDER_PHP_ROOT_PATH . '/plugins/' . substr($name, 14) . '/plugin.php';
            return (is_file($file) && include_once($file));
        } else if ($prefix === 'elFinderEditor') {
            $file = ELFINDER_PHP_ROOT_PATH . '/editors/' . substr($name, 14) . '/editor.php';
            return (is_file($file) && include_once($file));
        }
    }
    return false;
}

if (version_compare(PHP_VERSION, '5.3', '<')) {
    spl_autoload_register('elFinderAutoloader');
} else {
    spl_autoload_register('elFinderAutoloader', true, true);
}

                                                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/php/elFinderVolumeTrashMySQL.class.php                                    0000644                 00000003050 15266052674 0020720 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder driver for trash bin at MySQL Database
 *
 * @author NaokiSawada
 **/
class elFinderVolumeTrashMySQL extends elFinderVolumeMySQL
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'tm';

    public function __construct()
    {
        parent::__construct();
        // original option of the Trash
        $this->options['lockEverything'] = false; // Lock all items in the trash to disable delete, move, rename.

        // common options as the volume driver
        $this->options['alias'] = 'Trash';
        $this->options['quarantine'] = '';
        $this->options['rootCssClass'] = 'elfinder-navbar-root-trash';
        $this->options['copyOverwrite'] = false;
        $this->options['uiCmdMap'] = array('paste' => 'hidden', 'mkdir' => 'hidden', 'copy' => 'restore');
        $this->options['disabled'] = array('archive', 'duplicate', 'edit', 'extract', 'mkfile', 'places', 'put', 'rename', 'resize', 'upload');
    }

    public function mount(array $opts)
    {
        if ($this->options['lockEverything']) {
            if (!is_array($opts['attributes'])) {
                $opts['attributes'] = array();
            }
            $attr = array(
                'pattern' => '/./',
                'locked' => true,
            );
            array_unshift($opts['attributes'], $attr);
        }
        // force set `copyJoin` to true
        $opts['copyJoin'] = true;

        return parent::mount($opts);
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/php/elFinderVolumeMySQL.class.php                                         0000644                 00000073347 15266052674 0017736 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Simple elFinder driver for MySQL.
 *
 * @author Dmitry (dio) Levashov
 **/
class elFinderVolumeMySQL extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'm';

    /**
     * Database object
     *
     * @var mysqli
     **/
    protected $db = null;

    /**
     * Tables to store files
     *
     * @var string
     **/
    protected $tbf = '';

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir
     *
     * @var string
     **/
    protected $tmpPath = '';

    /**
     * Numbers of sql requests (for debug)
     *
     * @var int
     **/
    protected $sqlCnt = 0;

    /**
     * Last db error message
     *
     * @var string
     **/
    protected $dbError = '';

    /**
     * This root has parent id
     *
     * @var        boolean
     */
    protected $rootHasParent = false;

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'db' => '',
            'port' => null,
            'socket' => null,
            'files_table' => 'elfinder_file',
            'tmbPath' => '',
            'tmpPath' => '',
            'rootCssClass' => 'elfinder-navbar-root-sql',
            'noSessionCache' => array('hasdirs'),
            'isLocalhost' => false
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare driver before mount volume.
     * Connect to db, check required tables and fetch root path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function init()
    {

        if (!($this->options['host'] || $this->options['socket'])
            || !$this->options['user']
            || !$this->options['pass']
            || !$this->options['db']
            || !$this->options['path']
            || !$this->options['files_table']) {
            return $this->setError('Required options "host", "socket", "user", "pass", "db", "path" or "files_table" are undefined.');
        }

        $err = null;
        if ($this->db = @new mysqli($this->options['host'], $this->options['user'], $this->options['pass'], $this->options['db'], $this->options['port'], $this->options['socket'])) {
            if ($this->db && $this->db->connect_error) {
                $err = $this->db->connect_error;
            }
        } else {
            $err = mysqli_connect_error();
        }
        if ($err) {
            return $this->setError(array('Unable to connect to MySQL server.', $err));
        }

        if (!$this->needOnline && empty($this->ARGS['init'])) {
            $this->db->close();
            $this->db = null;
            return true;
        }

        $this->db->set_charset('utf8');

        if ($res = $this->db->query('SHOW TABLES')) {
            while ($row = $res->fetch_array()) {
                if ($row[0] == $this->options['files_table']) {
                    $this->tbf = $this->options['files_table'];
                    break;
                }
            }
        }

        if (!$this->tbf) {
            return $this->setError('The specified database table cannot be found.');
        }

        $this->updateCache($this->options['path'], $this->_stat($this->options['path']));

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        // check isLocalhost
        $this->isLocalhost = $this->options['isLocalhost'] || $this->options['host'] === 'localhost' || $this->options['host'] === '127.0.0.1' || $this->options['host'] === '::1';

        return true;
    }


    /**
     * Set tmp path
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (($tmp = $this->options['tmpPath'])) {
            if (!file_exists($tmp)) {
                if (mkdir($tmp)) {
                    chmod($tmp, $this->options['tmbPathMode']);
                }
            }

            $this->tmpPath = is_dir($tmp) && is_writable($tmp) ? $tmp : false;
        }
        if (!$this->tmpPath && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmpPath = $tmp;
        }

        // fallback of $this->tmp
        if (!$this->tmpPath && $this->tmbPathWritable) {
            $this->tmpPath = $this->tmbPath;
        }

        $this->mimeDetect = 'internal';
    }

    /**
     * Close connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->db && $this->db->close();
    }

    /**
     * Return debug info for client
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function debug()
    {
        $debug = parent::debug();
        $debug['sqlCount'] = $this->sqlCnt;
        if ($this->dbError) {
            $debug['dbError'] = $this->dbError;
        }
        return $debug;
    }

    /**
     * Perform sql query and return result.
     * Increase sqlCnt and save error if occured
     *
     * @param  string $sql query
     *
     * @return bool|mysqli_result
     * @author Dmitry (dio) Levashov
     */
    protected function query($sql)
    {
        $this->sqlCnt++;
        $res = $this->db->query($sql);
        if (!$res) {
            $this->dbError = $this->db->error;
        }
        return $res;
    }

    /**
     * Perform sql prepared statement and return result.
     * Increase sqlCnt and save error if occurred.
     *
     * @param mysqli_stmt $stmt
     * @return bool
     */
    protected function execute($stmt)
    {
        $this->sqlCnt++;
        $res = $stmt->execute();
        if (!$res) {
            $this->dbError = $this->db->error;
        }
        return $res;
    }

    /**
     * Create empty object with required mimetype
     *
     * @param  string $path parent dir path
     * @param  string $name object name
     * @param  string $mime mime type
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function make($path, $name, $mime)
    {
        $sql = 'INSERT INTO %s (`parent_id`, `name`, `size`, `mtime`, `mime`, `content`, `read`, `write`, `locked`, `hidden`, `width`, `height`) VALUES (\'%s\', \'%s\', 0, %d, \'%s\', \'\', \'%d\', \'%d\', \'%d\', \'%d\', 0, 0)';
        $sql = sprintf($sql, $this->tbf, $path, $this->db->real_escape_string($name), time(), $mime, $this->defaults['read'], $this->defaults['write'], $this->defaults['locked'], $this->defaults['hidden']);
        // echo $sql;
        return $this->query($sql) && $this->db->affected_rows > 0;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return string
     * @author Dmitry Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();

        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs 
                FROM ' . $this->tbf . ' AS f 
                LEFT JOIN ' . $this->tbf . ' AS ch ON ch.parent_id=f.id AND ch.mime=\'directory\'
                WHERE f.parent_id=\'' . $path . '\'
                GROUP BY f.id, ch.id';

        $res = $this->query($sql);
        if ($res) {
            while ($row = $res->fetch_assoc()) {
                $id = $row['id'];
                if ($row['parent_id'] && $id != $this->root) {
                    $row['phash'] = $this->encode($row['parent_id']);
                }

                if ($row['mime'] == 'directory') {
                    unset($row['width']);
                    unset($row['height']);
                    $row['size'] = 0;
                } else {
                    unset($row['dirs']);
                }

                unset($row['id']);
                unset($row['parent_id']);


                if (($stat = $this->updateCache($id, $row)) && empty($stat['hidden'])) {
                    $this->dirsCache[$path][] = $id;
                }
            }
        }

        return $this->dirsCache[$path];
    }

    /**
     * Return array of parents paths (ids)
     *
     * @param  int $path file path (id)
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function getParents($path)
    {
        $parents = array();

        while ($path) {
            if ($file = $this->stat($path)) {
                array_unshift($parents, $path);
                $path = isset($file['phash']) ? $this->decode($file['phash']) : false;
            }
        }

        if (count($parents)) {
            array_pop($parents);
        }
        return $parents;
    }

    /**
     * Return correct file path for LOAD_FILE method
     *
     * @param  string $path file path (id)
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function loadFilePath($path)
    {
        $realPath = realpath($path);
        if (DIRECTORY_SEPARATOR == '\\') { // windows
            $realPath = str_replace('\\', '\\\\', $realPath);
        }
        return $this->db->real_escape_string($realPath);
    }

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod'])) {
            // has custom match method use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $dirs = array();
        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;

        if ($path != $this->root || $this->rootHasParent) {
            $dirs = $inpath = array(intval($path));
            while ($inpath) {
                $in = '(' . join(',', $inpath) . ')';
                $inpath = array();
                $sql = 'SELECT f.id FROM %s AS f WHERE f.parent_id IN ' . $in . ' AND `mime` = \'directory\'';
                $sql = sprintf($sql, $this->tbf);
                if ($res = $this->query($sql)) {
                    $_dir = array();
                    while ($dat = $res->fetch_assoc()) {
                        $inpath[] = $dat['id'];
                    }
                    $dirs = array_merge($dirs, $inpath);
                }
            }
        }

        $result = array();

        if ($mimes) {
            $whrs = array();
            foreach ($mimes as $mime) {
                if (strpos($mime, '/') === false) {
                    $whrs[] = sprintf('f.mime LIKE \'%s/%%\'', $this->db->real_escape_string($mime));
                } else {
                    $whrs[] = sprintf('f.mime = \'%s\'', $this->db->real_escape_string($mime));
                }
            }
            $whr = join(' OR ', $whrs);
        } else {
            $whr = sprintf('f.name LIKE \'%%%s%%\'', $this->db->real_escape_string($q));
        }
        if ($dirs) {
            $whr = '(' . $whr . ') AND (`parent_id` IN (' . join(',', $dirs) . '))';
        }

        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, 0 AS dirs 
                FROM %s AS f 
                WHERE %s';

        $sql = sprintf($sql, $this->tbf, $whr);

        if (($res = $this->query($sql))) {
            while ($row = $res->fetch_assoc()) {
                if ($timeout && $timeout < time()) {
                    $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
                    break;
                }

                if (!$this->mimeAccepted($row['mime'], $mimes)) {
                    continue;
                }
                $id = $row['id'];
                if ($id == $this->root) {
                    continue;
                }
                if ($row['parent_id'] && $id != $this->root) {
                    $row['phash'] = $this->encode($row['parent_id']);
                }
                $row['path'] = $this->_path($id);

                if ($row['mime'] == 'directory') {
                    unset($row['width']);
                    unset($row['height']);
                } else {
                    unset($row['dirs']);
                }

                unset($row['id']);
                unset($row['parent_id']);

                if (($stat = $this->updateCache($id, $row)) && empty($stat['hidden'])) {
                    $result[] = $stat;
                }
            }
        }
        return $result;
    }


    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        return ($stat = $this->stat($path)) ? (!empty($stat['phash']) ? $this->decode($stat['phash']) : $this->root) : false;
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        return (($stat = $this->stat($path)) && isset($stat['name'])) ? $stat['name'] : false;
    }

    /**
     * Join dir name and file name and return full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        $sql = 'SELECT id FROM ' . $this->tbf . ' WHERE parent_id=\'' . $dir . '\' AND name=\'' . $this->db->real_escape_string($name) . '\'';

        if (($res = $this->query($sql)) && ($r = $res->fetch_assoc())) {
            $this->updateCache($r['id'], $this->_stat($r['id']));
            return $r['id'];
        }
        return -1;
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        return $path;
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        if (($file = $this->stat($path)) == false) {
            return '';
        }

        $parentsIds = $this->getParents($path);
        $path = '';
        foreach ($parentsIds as $id) {
            $dir = $this->stat($id);
            $path .= $dir['name'] . $this->separator;
        }
        return $path . $file['name'];
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent
            ? true
            : in_array($parent, $this->getParents($path));
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs
                FROM ' . $this->tbf . ' AS f 
                LEFT JOIN ' . $this->tbf . ' AS ch ON ch.parent_id=f.id AND ch.mime=\'directory\'
                WHERE f.id=\'' . $path . '\'
                GROUP BY f.id, ch.id';

        $res = $this->query($sql);

        if ($res) {
            $stat = $res->fetch_assoc();
            if ($stat['id'] == $this->root) {
                $this->rootHasParent = true;
                $stat['parent_id'] = '';
            }
            if ($stat['parent_id']) {
                $stat['phash'] = $this->encode($stat['parent_id']);
            }
            if ($stat['mime'] == 'directory') {
                unset($stat['width']);
                unset($stat['height']);
                $stat['size'] = 0;
            } else {
                if (!$stat['mime']) {
                    unset($stat['mime']);
                }
                unset($stat['dirs']);
            }
            unset($stat['id']);
            unset($stat['parent_id']);
            return $stat;

        }
        return array();
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {
        return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
    }

    /**
     * Return object width and height
     * Usualy used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dimensions($path, $mime)
    {
        return ($stat = $this->stat($path)) && isset($stat['width']) && isset($stat['height']) ? $stat['width'] . 'x' . $stat['height'] : '';
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param  string $mode open file mode (ignored in this driver)
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        $fp = $this->tmpPath
            ? fopen($this->getTempFile($path), 'w+')
            : $this->tmpfile();


        if ($fp) {
            if (($res = $this->query('SELECT content FROM ' . $this->tbf . ' WHERE id=\'' . $path . '\''))
                && ($r = $res->fetch_assoc())) {
                fwrite($fp, $r['content']);
                rewind($fp);
                return $fp;
            } else {
                $this->_fclose($fp, $path);
            }
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            $file = $this->getTempFile($path);
            is_file($file) && unlink($file);
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        return $this->make($path, $name, 'directory') ? $this->_joinPath($path, $name) : false;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->make($path, $name, '') ? $this->_joinPath($path, $name) : false;
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param  string $target link target
     * @param  string $path   symlink path
     * @param string  $name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $this->clearcache();
        $id = $this->_joinPath($targetDir, $name);

        $sql = $id > 0
            ? sprintf('REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) (SELECT %d, %d, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d)', $this->tbf, $id, $this->_dirname($id), $this->tbf, $source)
            : sprintf('INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) SELECT %d, \'%s\', content, size, %d, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d', $this->tbf, $targetDir, $this->db->real_escape_string($name), time(), $this->tbf, $source);

        return $this->query($sql);
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $sql = 'UPDATE %s SET parent_id=%d, name=\'%s\' WHERE id=%d LIMIT 1';
        $sql = sprintf($sql, $this->tbf, $targetDir, $this->db->real_escape_string($name), $source);
        return $this->query($sql) && $this->db->affected_rows > 0 ? $source : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime!=\'directory\' LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime=\'directory\' LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
    }

    /**
     * undocumented function
     *
     * @param $path
     * @param $fp
     *
     * @author Dmitry Levashov
     */
    protected function _setContent($path, $fp)
    {
        elFinder::rewind($fp);
        $fstat = fstat($fp);
        $size = $fstat['size'];


    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $this->clearcache();

        $mime = !empty($stat['mime']) ? $stat['mime'] : $this->mimetype($name, true);
        $w = !empty($stat['width']) ? $stat['width'] : 0;
        $h = !empty($stat['height']) ? $stat['height'] : 0;
        $ts = !empty($stat['ts']) ? $stat['ts'] : time();

        $id = $this->_joinPath($dir, $name);
        if (!isset($stat['size'])) {
            $stat = fstat($fp);
            $size = $stat['size'];
        } else {
            $size = $stat['size'];
        }

        if ($this->isLocalhost && ($tmpfile = tempnam($this->tmpPath, $this->id))) {
            if (($trgfp = fopen($tmpfile, 'wb')) == false) {
                unlink($tmpfile);
            } else {
                elFinder::rewind($fp);
                stream_copy_to_stream($fp, $trgfp);
                fclose($trgfp);
                chmod($tmpfile, 0644);

                $sql = $id > 0
                    ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES (' . $id . ', ?, ?, LOAD_FILE(?), ?, ?, ?, ?, ?)'
                    : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (?, ?, LOAD_FILE(?), ?, ?, ?, ?, ?)';
                $stmt = $this->db->prepare(sprintf($sql, $this->tbf));
                $path = $this->loadFilePath($tmpfile);
                $stmt->bind_param("issiisii", $dir, $name, $path, $size, $ts, $mime, $w, $h);

                $res = $this->execute($stmt);
                unlink($tmpfile);

                if ($res) {
                    return $id > 0 ? $id : $this->db->insert_id;
                }
            }
        }


        $content = '';
        elFinder::rewind($fp);
        while (!feof($fp)) {
            $content .= fread($fp, 8192);
        }

        $sql = $id > 0
            ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES (' . $id . ', ?, ?, ?, ?, ?, ?, ?, ?)'
            : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
        $stmt = $this->db->prepare(sprintf($sql, $this->tbf));
        $stmt->bind_param("issiisii", $dir, $name, $content, $size, $ts, $mime, $w, $h);

        unset($content);

        if ($this->execute($stmt)) {
            return $id > 0 ? $id : $this->db->insert_id;
        }

        return false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        return ($res = $this->query(sprintf('SELECT content FROM %s WHERE id=%d', $this->tbf, $path))) && ($r = $res->fetch_assoc()) ? $r['content'] : false;
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return $this->query(sprintf('UPDATE %s SET content=\'%s\', size=%d, mtime=%d WHERE id=%d LIMIT 1', $this->tbf, $this->db->real_escape_string($content), strlen($content), time(), $path));
    }

    /**
     * Detect available archivers
     *
     * @return void
     **/
    protected function _checkArchivers()
    {
        return;
    }

    /**
     * chmod implementation
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     **/
    protected function _unpack($path, $arc)
    {
        return;
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        return false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        return false;
    }

} // END class 
                                                                                                                                                                                                                                                                                         includes/File_manager/lib/php/resources/image.png                                                   0000644                 00000007052 15266052675 0016104 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   0   0   Wù‡  ñIDATxÚ´ÖU‚óÊ¹Ðõ•$ÛMto˜9óÈNœD2•pž“§"Ìø3v»m©v|·˜µUU?øñc¯�RU@áp^
Aéé–Ë»í¬e{;ÿ¢ª¾ÿ¹Ï®¾ŒîmÈ˜Ä+åÓ<q»„xI^rÿ ÿDÌq³ÝyøèZU>y³­/üðÇ»_}[ ýU Û¹»Þ{Ó‰ÒÃ^“q²¿¹vù�+�þøø+U¼ˆæ’å¥¼$‡Ë´0M££õd½Z™o÷®>x)ñ•Ä×Þ1@O	Q�¨� 5‘FU7N�bÞíÁÕ.á«½çëï ‚¤t(@èŠ¢§¤Óû`AD–ÅéT—ï¿PU_éñÂÛÐ#ŠB /ý|8\×{¤w]gî’6cQ­\¼ï\ñ�"ÞÖO  ^
#‡7(AÂ2wûÞ-sÌól=6«�©hCûâìŸˆžÞ6@AB ‘ƒÏ
R$T¡I@:=±ô²ô˜w‹ÍPVÿX5†apñÞ3Uõ†ãv;{eðžÛûZcµÙX�ƒalæeö—ç‹?>ã¦ÒÊœQ7ŠJ,YƒÊS»y6¬‡R¨¢Änœ¿çÔ“;Ï¾‘xßz�õ@y¥twîÜ±Ùl¬W[Ã8ZéX%>~ºöÛÛòp$JÐ*¢!`¨HJªÌ»½±ÑÊ?E�¨itö®Oï=ÿ&¯1¦w¯–„'�{úô©Õ4™¦•ÓÓ'§§–±ü~;zžµªƒèUª:A(¡Å\,K·jelÌ�õ@)Pµ™ø¿¿!¼>Äõêw/ ZS58?9u|~îa<ÙMžd4÷&Ae:UL-¦añ¸Ê0–i(g«æÙ®ÛwV¥TQ¢Ž'=Gyþðæ5cïñJI•T¼ï}ï·9>¶£ëL~¾]Iª(ÝjX$ƒÒµF‚Š¹³)>|Q®6“Ýa=ÆVŽÆÒÓÜÌ±_b¨*…ª¨“u%é×�¶¯Š#^µ6wÎÞoé%Kq4E'S×—îjÕMÍ>\ÏÝ{Ï&û}\ïwÎ‡æìd#¡ƒ£ÍJ+ÿØŸ®U¹Öí–Ûá›8=]7q{ýxûÍ*ŸÇ7_
è^%…HL-¦ê¦�Ó!ŽVeÕFéÍn×ýåÎ�“óIoM–ÒæE®ÎFû9nnnUÅéf²,‹ÞiaHw2p>•UÍ’Ø/ì{ü1Ygé�oží¾‚à[¯»9-H9™¢Â’"ÝÓ™^e˜†îyb9]{*üúéŽD›FÛëÙôàšq4�£¿vc@²6M~
/ƒîá5Û¶m#°cm!¬µmÛÒoãÓå\ŽÐÂËªÜ/*z…{ç‹þœ¨z§…Sy2ÏÉ¾¹5âçþìxfD¡}´ÆMšF4ó-­¾�,€ÍÆÕ[ÿ5 õ‹Øâ!�8ß!¯…“.ðU$c!Ö‚”íÄ0[ãš�< í±i5‹±Æ½špªÛÛù´ ,jªÊãÅ#^˜•ûlWTU‘Ñ,vçhÍ7ìç$n� å?ËÀaMHÑÄ#F[ˆ&eE0f˜MiÆ1§VW8Ö2DÚ¡KÇêR3œLÉËŠ¹8â‘Ë)‘Šè�Jò²'^ûšØD´’„Ê9²¢ Ùh³¶0G^ÕàÍÝ}>»1@é&'V[ÇªÑàP>4
)ásW®óÔó§)Ë’Ýñ„�þ0œLQÕà8Ë¡žfÄqÂ~‘³<×æ—¯G†f“U“¢œ�28 çuòª¤¨k¼s`4’Ü,kÊ¼bTæÎ£T@–•G.Ý?¹uiáœü]à…ÀËûnÝ¦®Î{ *°QT%×wwÉŠ*ÜiM4bÅjg‰A–‘¢Z£MøÒÖŒQh÷AAé\ÈBîJB�…Î	tºôz%×.ÜHç#k.|¸>œB(@È"Ï�Á>“²$X=3aZ­&Im‰<`‚ÔB#%w5ãuåfÆEÆ Ï(¼§rU]“´[ŒÇ£ x<Í(½”Ak[-:iÊù•£tX]8 ìË‰ª§ ¶ÐKõ! €ŸÿÔGˆ¬Á×eM8�8Mp¥'Ž6¶ˆƒ¢®õ‡ŒFc:�sóó¨™°i%%˜Šñ$§Ùj2-Fìôq"á}Bv‚68„ýª`ÿöUª�Š/é0ZÓïO¼01ú®C½ Æý1ÍVƒ|’YMs®I>žÐl¦”E†«-uQ7¢˜x±C>Í–%+G–ÀZp>tžÁhJ>Í)Ç9:h†<
fç´ÝÀÄ1HˆHÒ8hjæP±Æ×J´Ï±6|üóÁ£Î?‰Ç>ú)œX;Ž Ö¦EAÒ'›ŒØî0H)ëë«´çäyÎæíæÚl÷ðxº+‹´Û¢-EVR– HÒ”f;¥*kFû=˜[lE	ÓÑ­ôlþ¯”Ö¢¼ÖÊ{‹—Cç�ro“OîßFtÊ¾<’Þ0Á(G’4I¢.i¤hŸÖÌI�Ò‚7‚–‚y„•DccÅÚ9!Ô*5_Tù˜²Î¨Š‚ƒƒ>�fB{ÑÒu R—TjL»ÏD/^¸"µŽ‰´8ÔN…&¶–�ÿÕ¯óÜ¹3$�'2)†ñÐ8!	–CD@µÂÕ£Uf¦m5�y8¹é‚'GÛ�‰;9ÊyŠb€rq“¦ž7.c#Áyp"ÒÐhƒ–¢tÕÝ»� ÅðÆ„¸»ÎÒñgQØ³Lz%#‘;ÀXjoÑZŠP¢f·™-…FðŒw…½�ãt×ÑŽÊ.bD	qSC*Ø¶á©GžÆß|àWÐ (€ÚáÅ;ðâ2Î=û+‘8¥Ùš§š$˜DÓŽ"¼M4ÖD4hÐNÂ„J)JL6
™éŠ%äÎ0¸“ÆŠX	 *4#OdáäŠ§o'üÍïÿï{ò;ð"xï1Š�Qm"·(9ÿSÜ�÷£¢5ª\#µFÇˆžyç©�"<0k…(Â—CÍf#Bè83Ë\•PJ«àvõláK.ß ù€ùÕ¢Ââ*g¼(çë¢œÍ‡t¢¸!ü8Yôrêè½Ôµ�—1–œÈX¬®PÆ 
dQyE-
ÄO!h<W[{Á£Ð€ÑB".€²ÔHYR©)m=âêÇ¿$t%ô·àë*×Qä•Ÿx¹Úr—ð §»Š|!âÆÕßæÖæ6íÇ|‘³8Ñäuh”›  &ŠiÄ±1”ÚP+…ÇàqÌyØ<¬
X%HUj
)Ú±þ„âÑó€bPNËxª°më›:òÖß½�Í[C6.ðÍ†Ìô~EtúËf\× Mu‘QÙˆ@+”±hkIÒˆ8±4›ŽÎ‚Ç&*`UUA”F“}ªÚ%ùD1Þ¿M=ÚäúÞõkà[„ü Q›ùu´¿ÇßüDË] øÙ�5�{Ò2cmùÜ_^Å_úìÚ«pú(¾.@)”�±Kt2&?¸‡Ñõ'//³ØmSV‹tÎ¼{ä9˜Ø“=õôóìnþ.·nÜÃ#½ÈÓN.ÑYÒÄrœßúãpùã‚ÞDÍ&ð­€âïöoû×f= ¿¸Ø;ÜN{/JM!–Þöï Wtú¿Àé³+ô‡œ¤Œ
CU>‡ÉøÃô7~‰ÑÖEæ—Ú¬®/×ÖíQ_ù¶.Ì³püOzÆ�9s�_aÎ>…¥c	“Ñ”}l“"¿ÄóžÔåEÏx¿ú[Ÿ"™oãAø®/~µçŸ…å.!
�‘fPd¬<|ŽBJ¶/LÈ6>Ê¾ÔÌ­4iÍ·˜75S÷glÞ¸Ly0Â¤š–ULv&¨Å˜c'šœyÄ*þ{W¸ññ´ôIžø–§ÐXì5»Ÿ4|¶w?*‰xÞS—ðâ)ª‚oÿ¦ò3?u„<t BXÛ½/zÅ#¹rÿ.FW([".ewC1ÜÏXXÉèžŒ9•XÖ{„'?óØfãþm”/XN“ïër«_rìôîÙãÊçoò½·{D‘»!ŽàJ?ú©gŽD4<0fpPs§°pH{X?¶ÄPÕœ8ßdíÌ)6¯ÞC1Íp_°7 ·§(VsÊÒóèg·™â
Ïéi6·†iã‘pû3–WZ|rp�îr[kÄ	E>!m6ˆ‹Ñ–þþ˜OïÙàn¥ôÔ‘âNL×‡eÀ‰GÊ1üÙ=ì\9 ¥=OxÜ
“ƒ	R•HÙ¢‘Ìsîék¬žI8ù¨&ÓAÁÎÕý«»tcayµ‰O5kg[$Æ¥–4‰˜Žs\í0Z‘M&l0ÜëaµÆ&>÷ãlŠ¯óÿ` AØÙ˜`UÌÍûL7ÇlÞ.Ãxe÷K–Nµ¹ùù!­U¸ôÙ�Ô0:ž÷¦SÄÃ×3æ»–¨mIRáù/;É'>°I9©ld¨ËŠ¹¹só1â€¦¢®<ƒAê?@!¨=¶íØº>åÖÕšîzÂ‰‡wìV$Ò`çrÉüÑ¹èY^NIæ1fÀåOïréÞ}N>l�Ç½t�zà¸y5cåDƒ×¼ëñÜ÷É[ìmO9÷˜56.ì�N�9B¯? ‰SÚ+m�ù…mDþ d¦d_óÝŸ!  	Ûa¿çÁ�ž¦fÛËŸ~çÇ%l„™Ú9ü‡ € ö¸Úó14w�ÀÍÿí0VÿÇ2HŒÆ6ÿ·@  (�ðPâ‘ÀS€÷þà^“ÿ‹xðXàaÜ9ˆ/ù?ºËRü==U‚«Ý8 Î    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/php/resources/video.png                                                   0000644                 00000004361 15266052675 0016130 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   0   0   Wù‡  ¸IDATxÚÝ˜E“+É…¿“Y%©†™™h5[¯½òÌOññÞÌ;íÌÌÌL�¡[ªª<îQÅ“nÔ³vGODve§T÷«<7ó¦ªÏüð+d0X€A2½„~ü.¢¸ÐÓµfvÜ’²8ž¶o—ô‘7=1ú `Î@úô.®xìž-¦�Á­ˆˆß³é!Zst<ãÂÅë·å¤Ÿ¼|ˆ3PUlVé¸-\o8µŒ(††„«šæè:ûwpñ÷—>(�Db…\ „ÊˆÀŽÿ/;ÉP×ãšñhD;m8¸g›Ú¼å_Plƒ5xáw #ƒ=°Ôâ^ãR¡ªÚYÀÁÝû *Å¯qö ‹øð�FÈQô@à@[Š…”’é cÜul×Áþ]{Hú`1¯�9 ÅxHä 6°K•b\
Æ
´»˜d¨JbïÎ]âÌ,»C°�ñ^´°]×šÒ¯HmÛ2®£µ åt±ÓCôv:#ÙÁ÷!ô`+ «ïË àp?Ð[È¦+¢+¦�uL²ÍŒäœÙ»cIâ, <´�°–ï»+"˜+S�Í¬m©2Œê!ªÌîíÛH¬N§¶�(€CÃ` #Xn¼@œa¦„OóU¨J�4„è—Û�[· > N»ˆoÑÑÿÂ1ÑFPvæ„(a	ƒ ë
£¤9„æ,!2Œ'5;‡âÔ lâÒcÇ7– Sp&æL¹�›
�D®D�ÅÎ(Q' úÀÃLL6k¶6 Na¡Òh�$@à% Ñ
r¤F¨UB2	W™*‰�JlÖi´€:BdØÚksRÖB¬ŸSì¥uì~Œ(Q•hL\°¸‡H9³1‘ub«[¢J!¶·Çiso2>¼vªZˆPBø†u«”â`2`ŒHÉlOjº®£i:’MvÇV6·NÄáDÜ¾•¹kû�Vq÷Nu1ol�.Ù¼õæ™€êÂÅ)+eÀbQêh™ºÑ·úqz)$übDBJÔUÅoÿx…w~úÇP �-„‘„R¢Ê‰É¤fs£fwo‹�­Êöx|÷ÑÕæu›¤÷|î�¬�Ÿxô€ãÖhPô—®£+…Òµó~{Ò|Ò$Ím’rE~ãšJ¶ço|6k8¾>e6mišBqÁe9Ký_Ñ4ÓùŽ™:'öwØÚÝäÒ¹cÆÝ¥
è ïþìz€i³ÙÑÉÍåèÚ•ùƒç mK×ÍÛ¢Ÿ”IU&÷ =Hªz�ªb4Ùf¼¹K×@Ó´úF`¸véçþô;Hâ®{gÚ44mG]g”6¹ïö|Ø\¹tùDe{½…d~ò�opåâyšfZøD –I, ÚGZ–$¥P�79¼ý^ï|€D†¶, J3åÜË…¿üžãëWÉuÍ�=GUóò£é ŽŽf»?ýáµË?Ý{D€×(†óþ# `¹î‹8
À&òˆéÑ5®]>Ï�÷?B.¦T¥˜‹çþÂ_~ÿK._ø.&W™ªÊóMÍÎ0\¸0ãW?;q²[§üã/€jý(ì¾y ŒßìÇb�¡ô‰šÉ9¡ÓvÆŸó³¹ešÙ”ºÊô¹ªØÚÞ¤” 9À_/Ïfj¯¤iº¥¬)€ÿ=ö#tÊP�«ù¬þúÇ?àèêJéæPÑ})‹”D®F‹Áœ/^s�G`´æPvÛ0Œ¾(|WaRfz|ÄorüµËÐŸ	 H�9%QÕ¥”e.IåD)ò˜TŽ©¬?Dƒ¯1lÇ`£	’Œ$ÚéŒ££kH6J ¶A	0IBÛ–’¬¢¤âõGÊá!}pÐÇ
åvÌ�ˆ¥p„$Åpã³‹‡©$ÛèÆl”V#²*³N6 õÅA@h&È‹\–AôÞFZ¼]-Ò4aŒ !¼(,;ã:‘Éí¬kHëï †§v+Shø5`1Þ¤‘Ô[BÀü*”„ôpH�úqæñ €ÒQÜt¦¸[àe�Ä†!Žc°=p}°ÕàL]�Çllï„qz)\^ ‚%ŠM)…D™c¤T¯è(%n`Aô²V,­^öÃ‹olqÿãO³½Ø—á>Eç)ƒÆ¥é’‹ðl:[€3ÁðmÆ·¼¼¾{s_`³ë�<õò«ÜõÀ£Œ&< E‚hœ$ JÛ´Ê©M—ª¾^k´>¿W,�kgJé/ ªÇ'3ñ,�<û2·Ý‰R¼¼`Y¦ù¥ÙõîÚ¥£2uUjMœÖo°™?¼ªG˜ ¾yÙÄ"(†Áds›½ÃÛÂ­ÌÞ-·óès¯pï#O±±µ½×ƒ  Œ9>¿Q:î,¥œ+¿ýJçjÖV©Œxøé—¸tþ¯]¿2/�=?´”yiÝÒö%5I©/¥«
åL•ç×ùÿu=bk÷€�ýCb¥ghþ‚îyøqvnáÏ¿ýÕ¼<·r¨LÄgÏýÞo>º àýýèmû+ä'Ÿ¾ƒ¶@’ˆ?½•®£¸£´]×-6J©?Ð¤LÊ¡)EÇ“¨Å/Øm×0ÙØÀE�ÌO~ð§¡'×<ñÌt­IiàI–Î‘…1
Ò È¨x/ŽLÃ¾°¼¬é“þy€ÇŸîRg"b½8|·t…”ÓßH¬“Á…AýCÔàÃ�×ïÃjc°é�cÒž!h °¾œ(‹>!0<XŒÔ_¥¸3/sÐƒïbphÄír ÞÙ¬Rëež7¥ ‹¿X7q³¼f( _†N \èå� ¾Ù
‘¯6nNØÄ±'Š³|ZõøÌfŽ¶	þi†×Øäp&.ÁvMÓárJ(ÚB×þ•`½ª:óŸV®Òéf ÿÉ;Qmþg âÆ1ëÌ?¢Û€{€WN68ÿ76à1ààVª‡xõ¿´ÝÁÿ“þª'>1†vO"    IEND®B`‚                                                                                                                                                                                                                                                                               includes/File_manager/lib/php/elFinderVolumeLocalFileSystem.class.php                               0000644                 00000136667 15266052675 0022036 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// Implement similar functionality in PHP 5.2 or 5.3
// http://php.net/manual/class.recursivecallbackfilteriterator.php#110974
if (!class_exists('RecursiveCallbackFilterIterator', false)) {
    class RecursiveCallbackFilterIterator extends RecursiveFilterIterator
    {
        private $callback;

        public function __construct(RecursiveIterator $iterator, $callback)
        {
            $this->callback = $callback;
            parent::__construct($iterator);
        }

        public function accept()
        {
            return call_user_func($this->callback, parent::current(), parent::key(), parent::getInnerIterator());
        }

        public function getChildren()
        {
            return new self($this->getInnerIterator()->getChildren(), $this->callback);
        }
    }
}

/**
 * elFinder driver for local filesystem.
 *
 * @author Dmitry (dio) Levashov
 * @author Troex Nevelin
 **/
class elFinderVolumeLocalFileSystem extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'l';

    /**
     * Required to count total archive files size
     *
     * @var int
     **/
    protected $archiveSize = 0;

    /**
     * Is checking stat owner
     *
     * @var        boolean
     */
    protected $statOwner = false;

    /**
     * Path to quarantine directory
     *
     * @var string
     */
    private $quarantine;

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct()
    {
        $this->options['alias'] = '';              // alias to replace root dir name
        $this->options['dirMode'] = 0755;            // new dirs mode
        $this->options['fileMode'] = 0644;            // new files mode
        $this->options['rootCssClass'] = 'elfinder-navbar-root-local';
        $this->options['followSymLinks'] = true;
        $this->options['detectDirIcon'] = '';         // file name that is detected as a folder icon e.g. '.diricon.png'
        $this->options['keepTimestamp'] = array('copy', 'move'); // keep timestamp at inner filesystem allowed 'copy', 'move' and 'upload'
        $this->options['substituteImg'] = true;       // support substitute image with dim command
        $this->options['statCorrector'] = null;       // callable to correct stat data `function(&$stat, $path, $statOwner, $volumeDriveInstance){}`
        if (DIRECTORY_SEPARATOR === '/') {
            // Linux
            $this->options['acceptedName'] = '/^[^\.\/\x00][^\/\x00]*$/';
        } else {
            // Windows
            $this->options['acceptedName'] = '/^[^\.\/\x00\\\:*?"<>|][^\/\x00\\\:*?"<>|]*$/';
        }
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     **/
    protected function init()
    {
        // Normalize directory separator for windows
        if (DIRECTORY_SEPARATOR !== '/') {
            foreach (array('path', 'tmbPath', 'tmpPath', 'quarantine') as $key) {
                if (!empty($this->options[$key])) {
                    $this->options[$key] = str_replace('/', DIRECTORY_SEPARATOR, $this->options[$key]);
                }
            }
            // PHP >= 7.1 Supports UTF-8 path on Windows
            if (version_compare(PHP_VERSION, '7.1', '>=')) {
                $this->options['encoding'] = '';
                $this->options['locale'] = '';
            }
        }
        if (!$cwd = getcwd()) {
            return $this->setError('elFinder LocalVolumeDriver requires a result of getcwd().');
        }
        // detect systemRoot
        if (!isset($this->options['systemRoot'])) {
            if ($cwd[0] === DIRECTORY_SEPARATOR || $this->root[0] === DIRECTORY_SEPARATOR) {
                $this->systemRoot = DIRECTORY_SEPARATOR;
            } else if (preg_match('/^([a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . ')/', $this->root, $m)) {
                $this->systemRoot = $m[1];
            } else if (preg_match('/^([a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . ')/', $cwd, $m)) {
                $this->systemRoot = $m[1];
            }
        }
        $this->root = $this->getFullPath($this->root, $cwd);
        if (!empty($this->options['startPath'])) {
            $this->options['startPath'] = $this->getFullPath($this->options['startPath'], $this->root);
        }

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }
        if (is_null($this->options['syncCheckFunc'])) {
            $this->options['syncCheckFunc'] = array($this, 'localFileSystemInotify');
        }
        // check 'statCorrector'
        if (empty($this->options['statCorrector']) || !is_callable($this->options['statCorrector'])) {
            $this->options['statCorrector'] = null;
        }

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        $hiddens = array();
        $root = $this->stat($this->root);

        // check thumbnails path
        if (!empty($this->options['tmbPath'])) {
            if (strpos($this->options['tmbPath'], DIRECTORY_SEPARATOR) === false) {
                $hiddens['tmb'] = $this->options['tmbPath'];
                $this->options['tmbPath'] = $this->_abspath($this->options['tmbPath']);
            } else {
                $this->options['tmbPath'] = $this->_normpath($this->options['tmbPath']);
            }
        }
        // check temp path
        if (!empty($this->options['tmpPath'])) {
            if (strpos($this->options['tmpPath'], DIRECTORY_SEPARATOR) === false) {
                $hiddens['temp'] = $this->options['tmpPath'];
                $this->options['tmpPath'] = $this->_abspath($this->options['tmpPath']);
            } else {
                $this->options['tmpPath'] = $this->_normpath($this->options['tmpPath']);
            }
        }
        // check quarantine path
        $_quarantine = '';
        if (!empty($this->options['quarantine'])) {
            if (strpos($this->options['quarantine'], DIRECTORY_SEPARATOR) === false) {
                //$hiddens['quarantine'] = $this->options['quarantine'];
                //$this->options['quarantine'] = $this->_abspath($this->options['quarantine']);
                $_quarantine = $this->_abspath($this->options['quarantine']);
                $this->options['quarantine'] = '';
            } else {
                $this->options['quarantine'] = $this->_normpath($this->options['quarantine']);
            }
        } else {
            $_quarantine = $this->_abspath('.quarantine');
        }
        is_dir($_quarantine) && self::localRmdirRecursive($_quarantine);

        parent::configure();

        // check tmbPath
        if (!$this->tmbPath && isset($hiddens['tmb'])) {
            unset($hiddens['tmb']);
        }

        // if no thumbnails url - try detect it
        if ($root['read'] && !$this->tmbURL && $this->URL) {
            if (strpos($this->tmbPath, $this->root) === 0) {
                $this->tmbURL = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($this->tmbPath, strlen($this->root) + 1));
                if (preg_match("|[^/?&=]$|", $this->tmbURL)) {
                    $this->tmbURL .= '/';
                }
            }
        }

        // set $this->tmp by options['tmpPath']
        $this->tmp = '';
        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'], $this->options['dirMode'], true)) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            } else {
                if (isset($hiddens['temp'])) {
                    unset($hiddens['temp']);
                }
            }
        }
        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // check quarantine dir
        $this->quarantine = '';
        if (!empty($this->options['quarantine'])) {
            if ((is_dir($this->options['quarantine']) || mkdir($this->options['quarantine'], $this->options['dirMode'], true)) && is_writable($this->options['quarantine'])) {
                $this->quarantine = $this->options['quarantine'];
            } else {
                if (isset($hiddens['quarantine'])) {
                    unset($hiddens['quarantine']);
                }
            }
        } else if ($_path = elFinder::getCommonTempPath()) {
            $this->quarantine = $_path;
        }

        if (!$this->quarantine) {
            if (!$this->tmp) {
                $this->archivers['extract'] = array();
                $this->disabled[] = 'extract';
            } else {
                $this->quarantine = $this->tmp;
            }
        }

        if ($hiddens) {
            foreach ($hiddens as $hidden) {
                $this->attributes[] = array(
                    'pattern' => '~^' . preg_quote(DIRECTORY_SEPARATOR . $hidden, '~') . '$~',
                    'read' => false,
                    'write' => false,
                    'locked' => true,
                    'hidden' => true
                );
            }
        }

        if (!empty($this->options['keepTimestamp'])) {
            $this->options['keepTimestamp'] = array_flip($this->options['keepTimestamp']);
        }

        $this->statOwner = (!empty($this->options['statOwner']));

        // enable WinRemoveTailDots plugin on Windows server
        if (DIRECTORY_SEPARATOR !== '/') {
            if (!isset($this->options['plugin'])) {
                $this->options['plugin'] = array();
            }
            $this->options['plugin']['WinRemoveTailDots'] = array('enable' => true);
        }
    }

    /**
     * Long pooling sync checker
     * This function require server command `inotifywait`
     * If `inotifywait` need full path, Please add `define('ELFINER_INOTIFYWAIT_PATH', '/PATH_TO/inotifywait');` into connector.php
     *
     * @param string $path
     * @param int    $standby
     * @param number $compare
     *
     * @return number|bool
     * @throws elFinderAbortException
     */
    public function localFileSystemInotify($path, $standby, $compare)
    {
        if (isset($this->sessionCache['localFileSystemInotify_disable'])) {
            return false;
        }
        $path = realpath($path);
        $mtime = filemtime($path);
        if (!$mtime) {
            return false;
        }
        if ($mtime != $compare) {
            return $mtime;
        }
        $inotifywait = defined('ELFINER_INOTIFYWAIT_PATH') ? ELFINER_INOTIFYWAIT_PATH : 'inotifywait';
        $standby = max(1, intval($standby));
        $cmd = $inotifywait . ' ' . escapeshellarg($path) . ' -t ' . $standby . ' -e moved_to,moved_from,move,close_write,delete,delete_self';
        $this->procExec($cmd, $o, $r);
        if ($r === 0) {
            // changed
            clearstatcache();
            if (file_exists($path)) {
                $mtime = filemtime($path); // error on busy?
                return $mtime ? $mtime : time();
            } else {
                // target was removed
                return 0;
            }
        } else if ($r === 2) {
            // not changed (timeout)
            return $compare;
        }
        // error
        // cache to $_SESSION
        $this->sessionCache['localFileSystemInotify_disable'] = true;
        $this->session->set($this->id, $this->sessionCache);
        return false;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        return dirname($path);
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        return basename($path);
    }

    /**
     * Join dir name and file name and retur full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        $dir = rtrim($dir, DIRECTORY_SEPARATOR);
        $path = realpath($dir . DIRECTORY_SEPARATOR . $name);
        // realpath() returns FALSE if the file does not exist
        if ($path === false || strpos($path, $this->root) !== 0) {
            if (DIRECTORY_SEPARATOR !== '/') {
                $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
                $name = str_replace('/', DIRECTORY_SEPARATOR, $name);
            }
            // Directory traversal measures
            if (strpos($dir, '..' . DIRECTORY_SEPARATOR) !== false || substr($dir, -2) == '..') {
                $dir = $this->root;
            }
            if (strpos($name, '..' . DIRECTORY_SEPARATOR) !== false) {
                $name = basename($name);
            }
            $path = $dir . DIRECTORY_SEPARATOR . $name;
        }
        return $path; 
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (empty($path)) {
            return '.';
        }

        $changeSep = (DIRECTORY_SEPARATOR !== '/');
        if ($changeSep) {
            $drive = '';
            if (preg_match('/^([a-zA-Z]:)(.*)/', $path, $m)) {
                $drive = $m[1];
                $path = $m[2] ? $m[2] : '/';
            }
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }

        if (strpos($path, '/') === 0) {
            $initial_slashes = true;
        } else {
            $initial_slashes = false;
        }

        if (($initial_slashes)
            && (strpos($path, '//') === 0)
            && (strpos($path, '///') === false)) {
            $initial_slashes = 2;
        }

        $initial_slashes = (int)$initial_slashes;

        $comps = explode('/', $path);
        $new_comps = array();
        foreach ($comps as $comp) {
            if (in_array($comp, array('', '.'))) {
                continue;
            }

            if (($comp != '..')
                || (!$initial_slashes && !$new_comps)
                || ($new_comps && (end($new_comps) == '..'))) {
                array_push($new_comps, $comp);
            } elseif ($new_comps) {
                array_pop($new_comps);
            }
        }
        $comps = $new_comps;
        $path = implode('/', $comps);
        if ($initial_slashes) {
            $path = str_repeat('/', $initial_slashes) . $path;
        }

        if ($changeSep) {
            $path = $drive . str_replace('/', DIRECTORY_SEPARATOR, $path);
        }

        return $path ? $path : '.';
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            if (strpos($path, $this->root) === 0) {
                return ltrim(substr($path, strlen($this->root)), DIRECTORY_SEPARATOR);
            } else {
                // for link
                return $path;
            }
        }
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        if ($path === DIRECTORY_SEPARATOR) {
            return $this->root;
        } else {
            $path = $this->_normpath($path);
            if (strpos($path, $this->systemRoot) === 0) {
                return $path;
            } else if (DIRECTORY_SEPARATOR !== '/' && preg_match('/^[a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . '/', $path)) {
                return $path;
            } else {
                return $this->_joinPath($this->root, $path);
            }
        }
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . ($path == $this->root ? '' : $this->separator . $this->_relpath($path));
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        $cwd = getcwd();
        $real_path = $this->getFullPath($path, $cwd);
        $real_parent = $this->getFullPath($parent, $cwd);
        if ($real_path && $real_parent) {
            return $real_path === $real_parent || strpos($real_path, rtrim($real_parent, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR) === 0;
        }
        return false;
    }



    /***************** file stat ********************/

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $stat = array();

        if (!file_exists($path) && !is_link($path)) {
            return $stat;
        }

        //Verifies the given path is the root or is inside the root. Prevents directory traveral.
        if (!$this->_inpath($path, $this->root)) {
            return $stat;
        }

        $stat['isowner'] = false;
        $linkreadable = false;
        if ($path != $this->root && is_link($path)) {
            if (!$this->options['followSymLinks']) {
                return array();
            }
            if (!($target = $this->readlink($path))
                || $target == $path) {
                if (is_null($target)) {
                    $stat = array();
                    return $stat;
                } else {
                    $stat['mime'] = 'symlink-broken';
                    $target = readlink($path);
                    $lstat = lstat($path);
                    $ostat = $this->getOwnerStat($lstat['uid'], $lstat['gid']);
                    $linkreadable = !empty($ostat['isowner']);
                }
            }
            $stat['alias'] = $this->_path($target);
            $stat['target'] = $target;
        }

        $readable = is_readable($path);

        if ($readable) {
            $size = sprintf('%u', filesize($path));
            $stat['ts'] = filemtime($path);
            if ($this->statOwner) {
                $fstat = stat($path);
                $uid = $fstat['uid'];
                $gid = $fstat['gid'];
                $stat['perm'] = substr((string)decoct($fstat['mode']), -4);
                $stat = array_merge($stat, $this->getOwnerStat($uid, $gid));
            }
        }

        if (($dir = is_dir($path)) && $this->options['detectDirIcon']) {
            $favicon = $path . DIRECTORY_SEPARATOR . $this->options['detectDirIcon'];
            if ($this->URL && file_exists($favicon)) {
                $stat['icon'] = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($favicon, strlen($this->root) + 1));
            }
        }

        if (!isset($stat['mime'])) {
            $stat['mime'] = $dir ? 'directory' : $this->mimetype($path);
        }
        //logical rights first
        $stat['read'] = ($linkreadable || $readable) ? null : false;
        $stat['write'] = is_writable($path) ? null : false;

        if (is_null($stat['read'])) {
            if ($dir) {
                $stat['size'] = 0;
            } else if (isset($size)) {
                $stat['size'] = $size;
            }
        }

        if ($this->options['statCorrector']) {
            call_user_func_array($this->options['statCorrector'], array(&$stat, $path, $this->statOwner, $this));
        }

        return $stat;
    }

    /**
     * Get stat `owner`, `group` and `isowner` by `uid` and `gid`
     * Sub-fuction of _stat() and _scandir()
     *
     * @param integer $uid
     * @param integer $gid
     *
     * @return array  stat
     */
    protected function getOwnerStat($uid, $gid)
    {
        static $names = null;
        static $phpuid = null;

        if (is_null($names)) {
            $names = array('uid' => array(), 'gid' => array());
        }
        if (is_null($phpuid)) {
            if (is_callable('posix_getuid')) {
                $phpuid = posix_getuid();
            } else {
                $phpuid = 0;
            }
        }

        $stat = array();

        if ($uid) {
            $stat['isowner'] = ($phpuid == $uid);
            if (isset($names['uid'][$uid])) {
                $stat['owner'] = $names['uid'][$uid];
            } else if (is_callable('posix_getpwuid')) {
                $pwuid = posix_getpwuid($uid);
                $stat['owner'] = $names['uid'][$uid] = $pwuid['name'];
            } else {
                $stat['owner'] = $names['uid'][$uid] = $uid;
            }
        }
        if ($gid) {
            if (isset($names['gid'][$gid])) {
                $stat['group'] = $names['gid'][$gid];
            } else if (is_callable('posix_getgrgid')) {
                $grgid = posix_getgrgid($gid);
                $stat['group'] = $names['gid'][$gid] = $grgid['name'];
            } else {
                $stat['group'] = $names['gid'][$gid] = $gid;
            }
        }

        return $stat;
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {

        $dirs = false;
        if (is_dir($path) && is_readable($path)) {
            if (class_exists('FilesystemIterator', false)) {
                $dirItr = new ParentIterator(
                    new RecursiveDirectoryIterator($path,
                        FilesystemIterator::SKIP_DOTS |
                        FilesystemIterator::CURRENT_AS_SELF |
                        (defined('RecursiveDirectoryIterator::FOLLOW_SYMLINKS') ?
                            RecursiveDirectoryIterator::FOLLOW_SYMLINKS : 0)
                    )
                );
                $dirItr->rewind();
                if ($dirItr->hasChildren()) {
                    $dirs = true;
                    $name = $dirItr->getSubPathName();
                    while ($dirItr->valid()) {
                        if (!$this->attr($path . DIRECTORY_SEPARATOR . $name, 'read', null, true)) {
                            $dirs = false;
                            $dirItr->next();
                            $name = $dirItr->getSubPathName();
                            continue;
                        }
                        $dirs = true;
                        break;
                    }
                }
            } else {
                $path = strtr($path, array('[' => '\\[', ']' => '\\]', '*' => '\\*', '?' => '\\?'));
                return (bool)glob(rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR);
            }
        }
        return $dirs;
    }

    /**
     * Return object width and height
     * Usualy used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dimensions($path, $mime)
    {
        clearstatcache();
        return strpos($mime, 'image') === 0 && is_readable($path) && filesize($path) && ($s = getimagesize($path)) !== false
            ? $s[0] . 'x' . $s[1]
            : false;
    }
    /******************** file/dir content *********************/

    /**
     * Return symlink target file
     *
     * @param  string $path link path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function readlink($path)
    {
        if (!($target = readlink($path))) {
            return null;
        }

        if (strpos($target, $this->systemRoot) !== 0) {
            $target = $this->_joinPath(dirname($path), $target);
        }

        if (!file_exists($target)) {
            return false;
        }

        return $target;
    }

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _scandir($path)
    {
        elFinder::checkAborted();
        $files = array();
        $cache = array();
        $dirWritable = is_writable($path);
        $dirItr = array();
        $followSymLinks = $this->options['followSymLinks'];
        try {
            $dirItr = new DirectoryIterator($path);
        } catch (UnexpectedValueException $e) {
        }

        foreach ($dirItr as $file) {
            try {
                if ($file->isDot()) {
                    continue;
                }

                $files[] = $fpath = $file->getPathname();

                $br = false;
                $stat = array();

                $stat['isowner'] = false;
                $linkreadable = false;
                if ($file->isLink()) {
                    if (!$followSymLinks) {
                        continue;
                    }
                    if (!($target = $this->readlink($fpath))
                        || $target == $fpath) {
                        if (is_null($target)) {
                            $stat = array();
                            $br = true;
                        } else {
                            $_path = $fpath;
                            $stat['mime'] = 'symlink-broken';
                            $target = readlink($_path);
                            $lstat = lstat($_path);
                            $ostat = $this->getOwnerStat($lstat['uid'], $lstat['gid']);
                            $linkreadable = !empty($ostat['isowner']);
                            $dir = false;
                            $stat['alias'] = $this->_path($target);
                            $stat['target'] = $target;
                        }
                    } else {
                        $dir = is_dir($target);
                        $stat['alias'] = $this->_path($target);
                        $stat['target'] = $target;
                        $stat['mime'] = $dir ? 'directory' : $this->mimetype($stat['alias']);
                    }
                } else {
                    if (($dir = $file->isDir()) && $this->options['detectDirIcon']) {
                        $path = $file->getPathname();
                        $favicon = $path . DIRECTORY_SEPARATOR . $this->options['detectDirIcon'];
                        if ($this->URL && file_exists($favicon)) {
                            $stat['icon'] = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($favicon, strlen($this->root) + 1));
                        }
                    }
                    $stat['mime'] = $dir ? 'directory' : $this->mimetype($fpath);
                }
                $size = sprintf('%u', $file->getSize());
                $stat['ts'] = $file->getMTime();
                if (!$br) {
                    if ($this->statOwner && !$linkreadable) {
                        $uid = $file->getOwner();
                        $gid = $file->getGroup();
                        $stat['perm'] = substr((string)decoct($file->getPerms()), -4);
                        $stat = array_merge($stat, $this->getOwnerStat($uid, $gid));
                    }

                    //logical rights first
                    $stat['read'] = ($linkreadable || $file->isReadable()) ? null : false;
                    $stat['write'] = $file->isWritable() ? null : false;
                    $stat['locked'] = $dirWritable ? null : true;

                    if (is_null($stat['read'])) {
                        $stat['size'] = $dir ? 0 : $size;
                    }

                    if ($this->options['statCorrector']) {
                        call_user_func_array($this->options['statCorrector'], array(&$stat, $fpath, $this->statOwner, $this));
                    }
                }

                $cache[] = array($fpath, $stat);
            } catch (RuntimeException $e) {
                continue;
            }
        }

        if ($cache) {
            $cache = $this->convEncOut($cache, false);
            foreach ($cache as $d) {
                $this->updateCache($d[0], $d[1]);
            }
        }

        return $files;
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        return fopen($path, $mode);
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        return (is_resource($fp) && fclose($fp));
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);

        if (mkdir($path)) {
            chmod($path, $this->options['dirMode']);
            return $path;
        }

        return false;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        $path = $this->_joinPath($path, $name);

        if (($fp = fopen($path, 'w'))) {
            fclose($fp);
            chmod($path, $this->options['fileMode']);
            return $path;
        }
        return false;
    }

    /**
     * Create symlink
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($source, $targetDir, $name)
    {
        return $this->localFileSystemSymlink($source, $this->_joinPath($targetDir, $name));
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $mtime = filemtime($source);
        $target = $this->_joinPath($targetDir, $name);
        if ($ret = copy($source, $target)) {
            isset($this->options['keepTimestamp']['copy']) && $mtime && touch($target, $mtime);
        }
        return $ret;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $mtime = filemtime($source);
        $target = $this->_joinPath($targetDir, $name);
        if ($ret = rename($source, $target) ? $target : false) {
            isset($this->options['keepTimestamp']['move']) && $mtime && touch($target, $mtime);
        }
        return $ret;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return (is_link($path) || is_file($path)) && unlink($path);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return rmdir($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $path = $this->_joinPath($dir, $name);

        $meta = stream_get_meta_data($fp);
        $uri = isset($meta['uri']) ? $meta['uri'] : '';
        if ($uri && !preg_match('#^[a-zA-Z0-9]+://#', $uri) && !is_link($uri)) {
            fclose($fp);
            $mtime = filemtime($uri);
            $isCmdPaste = ($this->ARGS['cmd'] === 'paste');
            $isCmdCopy = ($isCmdPaste && empty($this->ARGS['cut']));
            if (($isCmdCopy || !rename($uri, $path)) && !copy($uri, $path)) {
                return false;
            }
            // keep timestamp on upload
            if ($mtime && $this->ARGS['cmd'] === 'upload') {
                touch($path, isset($this->options['keepTimestamp']['upload']) ? $mtime : time());
            }
        } else {
            if (file_put_contents($path, $fp, LOCK_EX) === false) {
                return false;
            }
        }

        chmod($path, $this->options['fileMode']);
        return $path;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        return file_get_contents($path);
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return (file_put_contents($path, $content, LOCK_EX) !== false);
    }

    /**
     * Detect available archivers
     *
     * @return void
     * @throws elFinderAbortException
     */
    protected function _checkArchivers()
    {
        $this->archivers = $this->getArchivers();
        return;
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return chmod($path, $modeOct);
    }

    /**
     * Recursive symlinks search
     *
     * @param  string $path file/dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _findSymlinks($path)
    {
        return self::localFindSymlinks($path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return array|string|boolean
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {

        if ($this->quarantine) {

            $dir = $this->quarantine . DIRECTORY_SEPARATOR . md5(basename($path) . mt_rand());
            $archive = (isset($arc['toSpec']) || $arc['cmd'] === 'phpfunction') ? '' : $dir . DIRECTORY_SEPARATOR . basename($path);

            if (!mkdir($dir)) {
                return false;
            }

            // insurance unexpected shutdown
            register_shutdown_function(array($this, 'rmdirRecursive'), realpath($dir));

            chmod($dir, 0777);

            // copy in quarantine
            if (!is_readable($path) || ($archive && !copy($path, $archive))) {
                return false;
            }

            // extract in quarantine
            try {
                $this->unpackArchive($path, $arc, $archive ? true : $dir);
            } catch(Exception $e) {
                return $this->setError($e->getMessage());
            }

            // get files list
            try {
                $ls = self::localScandir($dir);
            } catch (Exception $e) {
                return false;
            }

            // no files - extract error ?
            if (empty($ls)) {
                return false;
            }

            $this->archiveSize = 0;

            // find symlinks and check extracted items
            $checkRes = $this->checkExtractItems($dir);
            if ($checkRes['symlinks']) {
                self::localRmdirRecursive($dir);
                return $this->setError(array_merge($this->error, array(elFinder::ERROR_ARC_SYMLINKS)));
            }
            $this->archiveSize = $checkRes['totalSize'];
            if ($checkRes['rmNames']) {
                foreach ($checkRes['rmNames'] as $name) {
                    $this->addError(elFinder::ERROR_SAVE, $name);
                }
            }

            // check max files size
            if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
                $this->delTree($dir);
                return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
            }

            $extractTo = $this->extractToNewdir; // 'auto', ture or false

            // archive contains one item - extract in archive dir
            $name = '';
            $src = $dir . DIRECTORY_SEPARATOR . $ls[0];
            if (($extractTo === 'auto' || !$extractTo) && count($ls) === 1 && is_file($src)) {
                $name = $ls[0];
            } else if ($extractTo === 'auto' || $extractTo) {
                // for several files - create new directory
                // create unique name for directory
                $src = $dir;
                $splits = elFinder::splitFileExtention(basename($path));
                $name = $splits[0];
                $test = dirname($path) . DIRECTORY_SEPARATOR . $name;
                if (file_exists($test) || is_link($test)) {
                    $name = $this->uniqueName(dirname($path), $name, '-', false);
                }
            }

            if ($name !== '') {
                $result = dirname($path) . DIRECTORY_SEPARATOR . $name;

                if (!rename($src, $result)) {
                    $this->delTree($dir);
                    return false;
                }
            } else {
                $dstDir = dirname($path);
                $result = array();
                foreach ($ls as $name) {
                    $target = $dstDir . DIRECTORY_SEPARATOR . $name;
                    if (self::localMoveRecursive($dir . DIRECTORY_SEPARATOR . $name, $target, true, $this->options['copyJoin'])) {
                        $result[] = $target;
                    }
                }
                if (!$result) {
                    $this->delTree($dir);
                    return false;
                }
            }

            is_dir($dir) && $this->delTree($dir);

            return (is_array($result) || file_exists($result)) ? $result : false;
        }
        //TODO: Add return statement here
        return false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        return $this->makeArchive($dir, $files, $name, $arc);
    }

    /******************** Over write functions *************************/

    /**
     * File path of local server side work file path
     *
     * @param  string $path
     *
     * @return string
     * @author Naoki Sawada
     */
    protected function getWorkFile($path)
    {
        return $path;
    }

    /**
     * Delete dirctory trees
     *
     * @param string $localpath path need convert encoding to server encoding
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function delTree($localpath)
    {
        return $this->rmdirRecursive($localpath);
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers
     *
     * @param  string $path file cache
     *
     * @return array|boolean false
     */
    protected function isNameExists($path)
    {
        $exists = file_exists($this->convEncIn($path));
        // restore locale
        $this->convEncOut();
        return $exists ? $this->stat($path) : false;
    }

    /******************** Over write (Optimized) functions *************************/

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod']) || $this->encoding || !class_exists('FilesystemIterator', false)) {
            // has custom match method or non UTF-8, use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $result = array();

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        if ($timeout && $timeout < time()) {
            $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
            return $result;
        }
        elFinder::extendTimeLimit($this->options['searchTimeout'] + 30);

        $match = array();
        try {
            $iterator = new RecursiveIteratorIterator(
                new RecursiveCallbackFilterIterator(
                    new RecursiveDirectoryIterator($path,
                        FilesystemIterator::KEY_AS_PATHNAME |
                        FilesystemIterator::SKIP_DOTS |
                        ((defined('RecursiveDirectoryIterator::FOLLOW_SYMLINKS') && $this->options['followSymLinks']) ?
                            RecursiveDirectoryIterator::FOLLOW_SYMLINKS : 0)
                    ),
                    array($this, 'localFileSystemSearchIteratorFilter')
                ),
                RecursiveIteratorIterator::SELF_FIRST,
                RecursiveIteratorIterator::CATCH_GET_CHILD
            );
            foreach ($iterator as $key => $node) {
                if ($timeout && ($this->error || $timeout < time())) {
                    !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($node->getPath)));
                    break;
                }
                if ($node->isDir()) {
                    if ($this->stripos($node->getFilename(), $q) !== false) {
                        $match[] = $key;
                    }
                } else {
                    $match[] = $key;
                }
            }
        } catch (Exception $e) {
        }

        if ($match) {
            foreach ($match as $p) {
                if ($timeout && ($this->error || $timeout < time())) {
                    !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode(dirname($p))));
                    break;
                }

                $stat = $this->stat($p);

                if (!$stat) { // invalid links
                    continue;
                }

                if (!empty($stat['hidden']) || !$this->mimeAccepted($stat['mime'], $mimes)) {
                    continue;
                }

                if ((!$mimes || $stat['mime'] !== 'directory')) {
                    $stat['path'] = $this->path($stat['hash']);
                    if ($this->URL && !isset($stat['url'])) {
                        $_path = $this->_getRelativePath($p);
                        $_path = str_replace('%2F', '/', rawurlencode($_path));
                        $stat['url'] = $this->_buildFileUrl($_path);
                    }

                    $result[] = $stat;
                }
            }
        }

        return $result;
    }

    /******************** Original local functions ************************
     *
     * @param $file
     * @param $key
     * @param $iterator
     *
     * @return bool
     */

    public function localFileSystemSearchIteratorFilter($file, $key, $iterator)
    {
        /* @var FilesystemIterator $file */
        /* @var RecursiveDirectoryIterator $iterator */
        $name = $file->getFilename();
        if ($this->doSearchCurrentQuery['excludes']) {
            foreach ($this->doSearchCurrentQuery['excludes'] as $exclude) {
                if ($this->stripos($name, $exclude) !== false) {
                    return false;
                }
            }
        }
        if ($iterator->hasChildren()) {
            if ($this->options['searchExDirReg'] && preg_match($this->options['searchExDirReg'], $key)) {
                return false;
            }
            return (bool)$this->attr($key, 'read', null, true);
        }
        return ($this->stripos($name, $this->doSearchCurrentQuery['q']) === false) ? false : true;
    }

    /**
     * Creates a symbolic link
     *
     * @param      string   $target  The target
     * @param      string   $link    The link
     *
     * @return     boolean  ( result of symlink() )
     */
    protected function localFileSystemSymlink($target, $link)
    {
        $res = false;
        if (function_exists('symlink') and is_callable('symlink')) {
            $errlev = error_reporting();
            error_reporting($errlev ^ E_WARNING);
            if ($res = symlink(realpath($target), $link)) {
                $res = is_readable($link);
            }
            error_reporting($errlev);
        }
        return $res;
    }
} // END class 
                                                                         includes/File_manager/lib/php/plugins/AutoResize/plugin.php                                         0000644                 00000015464 15266052675 0020072 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin AutoResize
 * Auto resize on file upload.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.AutoResize.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'AutoResize' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'maxWidth'       => 1024,       // Path to Water mark image
 *                'maxHeight'      => 1024,       // Margin right pixel
 *                'quality'        => 95,         // JPEG image save quality
 *                'preserveExif'   => false,      // Preserve EXIF data (Imagick only)
 *                'forceEffect'    => false,      // For change quality or make progressive JPEG of small images
 *                'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'AutoResize' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'maxWidth'       => 1024,       // Path to Water mark image
 *                        'maxHeight'      => 1024,       // Margin right pixel
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'preserveExif'   => false,      // Preserve EXIF data (Imagick only)
 *                        'forceEffect'    => false,      // For change quality or make progressive JPEG of small images
 *                        'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginAutoResize extends elFinderPlugin
{

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'maxWidth' => 1024,       // Path to Water mark image
            'maxHeight' => 1024,       // Margin right pixel
            'quality' => 95,         // JPEG image save quality
            'preserveExif' => false,      // Preserve EXIF data (Imagick only)
            'forceEffect' => false,      // For change quality or make progressive JPEG of small images
            'targetType' => IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP, // Target image formats ( bit-field )
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        $imgTypes = array(
            IMAGETYPE_GIF => IMG_GIF,
            IMAGETYPE_JPEG => IMG_JPEG,
            IMAGETYPE_PNG => IMG_PNG,
            IMAGETYPE_BMP => IMG_WBMP,
            IMAGETYPE_WBMP => IMG_WBMP
        );
        if (!isset($imgTypes[$imageType]) || !($opts['targetType'] & $imgTypes[$imageType])) {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        if ($opts['forceEffect'] || $srcImgInfo[0] > $opts['maxWidth'] || $srcImgInfo[1] > $opts['maxHeight']) {
            return $this->resize($volume, $src, $srcImgInfo, $opts['maxWidth'], $opts['maxHeight'], $opts['quality'], $opts['preserveExif']);
        }

        return false;
    }

    private function resize($volume, $src, $srcImgInfo, $maxWidth, $maxHeight, $jpgQuality, $preserveExif)
    {
        $zoom = min(($maxWidth / $srcImgInfo[0]), ($maxHeight / $srcImgInfo[1]));
        $width = round($srcImgInfo[0] * $zoom);
        $height = round($srcImgInfo[1] * $zoom);
        $unenlarge = true;
        $checkAnimated = true;

        return $volume->imageUtil('resize', $src, compact('width', 'height', 'jpgQuality', 'preserveExif', 'unenlarge', 'checkAnimated'));
    }
}
                                                                                                                                                                                                            includes/File_manager/lib/php/plugins/WinRemoveTailDots/plugin.php                                  0000644                 00000007735 15266052675 0021361 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * This class describes elFinder plugin window remove tail dots.
 * This plugin is automatically loaded on the Windows server
 * and enabled in the LocalFileSystem driver.
 */
class elFinderPluginWinRemoveTailDots extends elFinderPlugin
{
    private $replaced = array();
    private $keyMap = array(
        'ls' => 'intersect',
        'upload' => 'renames',
        'mkdir' => array('name', 'dirs')
    );

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => false,  // For control by volume driver
        );

        $this->opts = array_merge($defaults, $opts);
    }

    public function cmdPreprocess($cmd, &$args, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $this->replaced[$cmd] = array();
        $key = (isset($this->keyMap[$cmd])) ? $this->keyMap[$cmd] : 'name';

        if (is_array($key)) {
            $keys = $key;
        } else {
            $keys = array($key);
        }
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                if (is_array($args[$key])) {
                    foreach ($args[$key] as $i => $name) {
                        if ($cmd === 'mkdir' && $key === 'dirs') {
                            // $name need '/' as prefix see #2607
                            $name = '/' . ltrim($name, '/');
                            $_names = explode('/', $name);
                            $_res = array();
                            foreach ($_names as $_name) {
                                $_res[] = $this->normalize($_name, $opts);
                            }
                            $this->replaced[$cmd][$name] = $args[$key][$i] = join('/', $_res);
                        } else {
                            $this->replaced[$cmd][$name] = $args[$key][$i] = $this->normalize($name, $opts);
                        }
                    }
                } else if ($args[$key] !== '') {
                    $name = $args[$key];
                    $this->replaced[$cmd][$name] = $args[$key] = $this->normalize($name, $opts);
                }
            }
        }
        if ($cmd === 'ls' || $cmd === 'mkdir') {
            if (!empty($this->replaced[$cmd])) {
                // un-regist for legacy settings
                $elfinder->unbind($cmd, array($this, 'cmdPostprocess'));
                $elfinder->bind($cmd, array($this, 'cmdPostprocess'));
            }
        }
        return true;
    }

    public function cmdPostprocess($cmd, &$result, $args, $elfinder, $volume)
    {
        if ($cmd === 'ls') {
            if (!empty($result['list']) && !empty($this->replaced['ls'])) {
                foreach ($result['list'] as $hash => $name) {
                    if ($keys = array_keys($this->replaced['ls'], $name)) {
                        if (count($keys) === 1) {
                            $result['list'][$hash] = $keys[0];
                        } else {
                            $result['list'][$hash] = $keys;
                        }
                    }
                }
            }
        } else if ($cmd === 'mkdir') {
            if (!empty($result['hashes']) && !empty($this->replaced['mkdir'])) {
                foreach ($result['hashes'] as $name => $hash) {
                    if ($keys = array_keys($this->replaced['mkdir'], $name)) {
                        $result['hashes'][$keys[0]] = $hash;
                    }
                }
            }
        }
    }

    // NOTE: $thash is directory hash so it unneed to process at here
    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }

        $name = $this->normalize($name, $opts);
        return true;
    }

    protected function normalize($str, $opts)
    {
        $str = rtrim($str, '.');
        return $str;
    }
} // END class elFinderPluginWinRemoveTailDots
                                   includes/File_manager/lib/php/plugins/Sanitizer/plugin.php                                          0000644                 00000013415 15266052675 0017742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin Sanitizer
 * Sanitizer of file-name and file-path etc.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array(
 *                'Plugin.Sanitizer.cmdPreprocess'
 *            ),
 *            'upload.presave paste.copyfrom' => array(
 *                'Plugin.Sanitizer.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Sanitizer' => array(
 *                'enable' => true,
 *                'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
 *                'replace'  => '_', // replace to this
 *                'callBack' => null // Or @callable sanitize function
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Sanitizer' => array(
 *                        'enable' => true,
 *                        'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
 *                        'replace'  => '_', // replace to this
 *                        'callBack' => null // Or @callable sanitize function
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginSanitizer extends elFinderPlugin
{
    private $replaced = array();
    private $keyMap = array(
        'ls' => 'intersect',
        'upload' => 'renames',
        'mkdir' => array('name', 'dirs')
    );

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,  // For control by volume driver
            'targets' => array('\\', '/', ':', '*', '?', '"', '<', '>', '|'), // target chars
            'replace' => '_',   // replace to this
            'callBack' => null   // Or callable sanitize function
        );
        $this->opts = array_merge($defaults, $opts);
    }

    public function cmdPreprocess($cmd, &$args, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $this->replaced[$cmd] = array();
        $key = (isset($this->keyMap[$cmd])) ? $this->keyMap[$cmd] : 'name';

        if (is_array($key)) {
            $keys = $key;
        } else {
            $keys = array($key);
        }
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                if (is_array($args[$key])) {
                    foreach ($args[$key] as $i => $name) {
                        if ($cmd === 'mkdir' && $key === 'dirs') {
                            // $name need '/' as prefix see #2607
                            $name = '/' . ltrim($name, '/');
                            $_names = explode('/', $name);
                            $_res = array();
                            foreach ($_names as $_name) {
                                $_res[] = $this->sanitizeFileName($_name, $opts);
                            }
                            $this->replaced[$cmd][$name] = $args[$key][$i] = join('/', $_res);
                        } else {
                            $this->replaced[$cmd][$name] = $args[$key][$i] = $this->sanitizeFileName($name, $opts);
                        }
                    }
                } else if ($args[$key] !== '') {
                    $name = $args[$key];
                    $this->replaced[$cmd][$name] = $args[$key] = $this->sanitizeFileName($name, $opts);
                }
            }
        }
        if ($cmd === 'ls' || $cmd === 'mkdir') {
            if (!empty($this->replaced[$cmd])) {
                // un-regist for legacy settings
                $elfinder->unbind($cmd, array($this, 'cmdPostprocess'));
                $elfinder->bind($cmd, array($this, 'cmdPostprocess'));
            }
        }
        return true;
    }

    public function cmdPostprocess($cmd, &$result, $args, $elfinder, $volume)
    {
        if ($cmd === 'ls') {
            if (!empty($result['list']) && !empty($this->replaced['ls'])) {
                foreach ($result['list'] as $hash => $name) {
                    if ($keys = array_keys($this->replaced['ls'], $name)) {
                        if (count($keys) === 1) {
                            $result['list'][$hash] = $keys[0];
                        } else {
                            $result['list'][$hash] = $keys;
                        }
                    }
                }
            }
        } else if ($cmd === 'mkdir') {
            if (!empty($result['hashes']) && !empty($this->replaced['mkdir'])) {
                foreach ($result['hashes'] as $name => $hash) {
                    if ($keys = array_keys($this->replaced['mkdir'], $name)) {
                        $result['hashes'][$keys[0]] = $hash;
                    }
                }
            }
        }
    }

    // NOTE: $thash is directory hash so it unneed to process at here
    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $name = $this->sanitizeFileName($name, $opts);
        return true;
    }

    protected function sanitizeFileName($filename, $opts)
    {
        if (!empty($opts['callBack']) && is_callable($opts['callBack'])) {
            return call_user_func_array($opts['callBack'], array($filename, $opts));
        }
        return str_replace($opts['targets'], $opts['replace'], $filename);
    }
}
                                                                                                                                                                                                                                                   includes/File_manager/lib/php/plugins/AutoRotate/plugin.php                                         0000644                 00000012752 15266052675 0020064 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin AutoRotate
 * Auto rotation on file upload of JPEG file by EXIF Orientation.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.AutoRotate.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'AutoRotate' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'quality'        => 95,         // JPEG image save quality
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'AutoRotate' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginAutoRotate extends elFinderPlugin
{

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'quality' => 95,         // JPEG image save quality
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        if ($imageType !== IMAGETYPE_JPEG) {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        return $this->rotate($volume, $src, $srcImgInfo, $opts['quality']);
    }

    private function rotate($volume, $src, $srcImgInfo, $quality)
    {
        if (!function_exists('exif_read_data')) {
            return false;
        }
        $degree = 0;
        $errlev =error_reporting();
        error_reporting($errlev ^ E_WARNING);
        $exif = exif_read_data($src);
        error_reporting($errlev);
        if ($exif && !empty($exif['Orientation'])) {
            switch ($exif['Orientation']) {
                case 8:
                    $degree = 270;
                    break;
                case 3:
                    $degree = 180;
                    break;
                case 6:
                    $degree = 90;
                    break;
            }
        }
        if (!$degree)  {
            return false;
        }
        $opts = array(
            'degree' => $degree,
            'jpgQuality' => $quality,
            'checkAnimated' => true
        );
        return $volume->imageUtil('rotate', $src, $opts);
    }
}
                      includes/File_manager/lib/php/plugins/Watermark/logo.png                                            0000644                 00000021343 15266052675 0017365 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   x   x   9d6Ò  "ªIDATxÚì™�äP@Ïf&™žmÛ¶-õÙ¶mÛ¶mÛ¶Šg[Ýu•©ìÎM2·7·LW½eÿŸªÿ¶;Io8+¬°Â
+¬°ÂŠÀ
Ubª,ð‰­“…‘&Mš2ãª)ŒƒDÌ!Z'Ê‚ã8åÖE@©¬	eát:û¬0Gü¾Œ†ÌøÒ²UÝÿ/ìv{äÿµ/Ï;û¬
\%úÞ_Ì2áã`ŒEBÅ�¢ÿ§=³$¸7x|÷Îmxøð�&¹’—Û†—NNœ8~ã4Kn,lŸUH �2__ƒçùF‚ß¾}?~ü€”ITÊ©ïÅ–´6­E#ùÆlîYÖ}Ñ†‡_—_Gm_¶jA¢ñ<kj&øçÏŸP¥bYÊ³ªT[Ìk”D mŠ¤ú_]f|FY–£Z•Ë˜J÷EÜásøð�(¥¶¯™à~½{Q$	cÅ"°bÙRøöí+œ;{Ô©¥Ý÷Î§
ö„aR.VT½PA’¡Jçàd‚ö³¦Xy	}t­²Þ
^¼på€Ì8�·	Qä`N³,ÒÂ—/_€ÖÔâŸ>yS'MÔZ=*ã³†©aVg½ÜTsÂÄMçaÕ¡[Ð¨ßT}%W¤$À!ŠbLÜ§™·‚Ø¯	NkP½e8zø�&×�ÏŸ?Ã”‰4ÉùÃJKŽ†‡\^/7[Ñ
0w×5 ¹ÄÒý7!}Î‚®ßc{Mõ�í9=íã­à›7oü,p¹þ´�9ñ÷t¯ÆŠýNk<2wöL \ZäÆÃÊ­©?ìuZÃbªÉÕ¹â¨®ŠYC›MŠ€÷ÞÇ1\¯¿&Uf}#ÁÏŸ=Óª®äŸºþ¼&÷ïÝ3”Kíºh¡ü@­œòBùý–gx¸Ð¨Õu4¬8¨Éu§Rë~ú*.lò”Œm˜OÎqÎüHyÝµÜHªŠ�ŒýúR'K¬Inˆ”U™#‡L•+pÙèç½ºw¥\CÞ¼yíz§írSÓ“K Ë”õ°ò�g¹Ä‚½7 iêŒ.1õ”.ñ<Ë‹¿«Ž€7dË–Ò¥LÖØH0ñàþ}hÞ´1¤O•\“ä"‘è„×¯_›
>~ìèï5¡ø‹$äösÿK’†-;¤I4¥Ï¼:A|M+4ŸA…2xð`Áo¨­ºñîÝ;¸yã:,]¼jT­ýûô¢Ÿ›By´¯*òÌ›Ã’9.N
›-rHù¯M$QÜÏ“ræœ0yóyç=ØÂ‹ÖlNë}Â•+W<
~óæ|ÿþÝ¾™åP›×†ñLå2>#æ6Ej«<;D�‰Å+Âœ]W±-ßúkfï¸r¢dÿ,·@�‚Ô:=	¦¶Kr|Â£‡W/ãJŽ:ÕxQ(‡r5‚µdk÷?v,Y·-,Þw¨n˜öã–ÿ³àñãÇ
~õêN¤¾ù„Eæ‘(Ä‘Þóû¹=.Ê­JyÅ„Ç�Â°ÁµuÕiìÇŽµ»��¥nÁò7M™¼rt1Æ/Ùéö;Ú#g‰ª–ët2xðà�‰à—>‘Kí¹jÅòZ56¦öëX£2>ý�n�;Âû÷ï�ÖÒTlÐ€¾®JV8.v°;2A‚®Ó7Ã2c6µï‚(¹d´ê9Ò-oÂÆs´o€—)S–ä
~ùò%Éñ	Ÿ>}ÄõH–HÑd•O,ØâÒ{4Í§égôOŠ­›7‘T?kiÖ§g7ÉÁfì¨$Iƒ—Äª»iÊÜmg¡`ÉŠîÇ:k­[~ƒ>“µwPq,YtÝ]îînñ�äÜÝ/®wânw7ƒÄÝ]°èº»ßº'TgŠez†¿3çÜ/éî×“ºS¯^=«N¼qãF�ÿéOÂ`+Šßýî·, ‘'í©ù»àÃ~õê¥¦çØä?ØkKêÚÎ®Ô5#ökp*ˆ–r­8ñˆö\y©+öž'ß 0�¤øGÐŽó/„g¶³½±_x/ƒÈµ±±¥ßþö·:	þãÿ¨8Á fdý‰ãäæhÂ¨07›ý˜t¾Z€“d…„À7«ÛQt†H¥õÌâÝ}¥M'¦,ßNŽÎ®:ÉÉR){vÞ�œ••b55È@sgÏ¢í[7ScÃzù²Ä(Š·oß@õ²õöz?Ópæ4'8Û-3è­
…5®´Š¶\h¥]—^êDéØÙdmm«9¸oþæ:™Œä¡Óô&xß¾ýº.c Ž€«(/‡6o\ÏÔ)ÿ�Yñ²­�°Nãû!<i¶ÙkaañuU‚Ý}ƒi+S�;/µiÅ–Æ§›V`ðúéÇTõÖ³ÏYë^�³‡�Îgíí°¿íÁr$ÇbÛŸí0Æ°Fšl¹øEðw»vÅúk§:�ƒçn¦—^jÖÎ¾qé�ÞæŒ˜*“9aÃ)�Ï•””‚TgöÒE	kö¿ÿýoÅ�-SQ{fˆ½U·ž]¹5ŠTÝÍ;x“Ù¦•7i5‚Ö¬YK¿øÅ/èõë×4zôÙ=ØB-ØvZ�¹�Íä>™åZ	®««Sœ`Ž oÚ°®A
E	Þ´aA>Œ?WW×/våö÷Œä>˜ž�‘´îlm»øR†Œ²±I˜2eª@ \}Ÿ|+»/(¢'m>Û,È]uò)Ù9ª7Ö\]Ýè_ÿú—ÉæHMŒGº-Þe4nÝ¼Éå¹0—ï§!¨ðä¥ ~ñXÚ|�­·E”VÍÕHpCCƒŒ„ùóç«·ªGL‘É¦…;ÔÞ;lØ0A&f‡)æ®F#Ée!Ê·èã	y,›ÄæÓïuVØ1kŽ1’_
X}ü>9º¸«%bÃ†2‚+*Hƒ:·£ê­‚ì�ç[)´²ìÞ±cÇRee%A¸»{Ð¦M›MFp~NÖÎN!É¸�ý¹¼ÞŸÆ C/>°¶öÎ´èØÚt¾MÀ¨êõjIóòòFO"÷Ä‰:¶=²ÑbU³¥àÌsAö‚Ã÷´º1{õêm2=fäpX½Øß…Ç�’	 žYºÑ§«æÖÑñ‹l&gð‰I¢Ú³-lvµ	è—˜£– ;;{Š‹‹§~ýúéç¼2I&;gâr�÷\®8Á¾ntâØQÌ>Å°®fí{ùVýµ¹‡Yí”5SãáÌÊN1[J.#øûªÑ¤ì	ËhÃù6Ë�Ý%wo\7
ÖÌòž¹©^�]ÓÐDÞa=ÔÞß½{dY(F0ÖÜÏŸÁ‚VlÏþf´ÅµgbZ¸·-jšmXh1œýyCy‡ïSîÄ|æRÕ^ª;yÛZ¾MÀð9µ¸f4Â»SMc“ {êÎËï_·n�"�Jðmƒ“ ¹¹‰œí¬ß«j+Ë><Í—ÃËÕ‰F#:U_ÇÒ‚¦µçp[˜s=ÀÕÙËŸ–Ö?¥uçÚôIÈV„ä¬¡“e²ãÊ&j¼?##“…ðìÔfU¶´4¶)[6m ¸(]lb=œXžó&¤ö˜«V,“Þ²s³2Øž»†•Ç<„'Mºïõ«WRX1gs©êHÁÀI-£µçZ©–>ÇÒ£wÉÙÍKU=}ÓIAöòSÏðÃÒøK}-QGðÏþ3¤ºJxóæÍ¯žM9©„z¥·o^ók&ÇïXùË˜Ãéâ…óôë_ÿJë½¥…ù ˜ìPjcžÊy1YÙ‚�´öl›€¡³RÕaÝiõ™&AöÈÕG5ÞogmYjÿ^­…`}ãÿŒ¥ÌÀoý?üxzî sÌ^•Ì±°lÆþ›´æl«€ÞñYŠ�œ9tŠ wópöŒÕçÙr+KË2+KÚ³g/ýá¿‡¡ó¿„öÀ„?�dd�˜ŒÜ±œ^mùÊ~Qýhùé&ZÝØ&aþÁÛp€(¢ª§l8É2I®Q\ÞP²wté”ìÉgÎœAïÞ½EŽ–â@Ço~ókÅå®¯©á³8Ò”Æ•·®L2�V5¶
(Ÿ¹F‰YŒíwvggZºtÖB5Š U‹îNöÔ#"	€JÉP'Å�$Åh…a"õl•ªÏà�¬©£•�­zÆqU­,œœœ);;›/^Bð�]½zMÂáÃ‡	>ïää8Z4äR÷¦‡°Aü“Q€�ø^�eÅ…üšÑ@‰LÂ �\v…IzŸg¿Ô“ù°œ¬ öáBâ�8¸zÒœ#h#–£úÀMAU�vüø	MÒ	+{÷î£˜˜µ?’C‡!)¯SøýïOéÉ‰²ýôÉº:\ï4Z[Zh•KòàÕb	zÝŒ‰}›©á0Fj¾±„Å¦ÓÒÓ-´¼¡UBÙŒÕFM×¯_×F¦Î’OÄ�ýýd1ëM›6!YÎ`,œWdèÝ=’-¿1T‹›ÿœ-˜Ëöév�ƒm_Ž½1[¤ïÿû_A¯T
9SÖÐ²†6=evZ^ee	Ì�¢¢"A> û÷ï3ˆŒçÎò¼*u€SEoY°ðëN£¨°`)—ÍZ_ø¦�Ù×"Á.O®f=hPùd*˜½™†¯>Fã·\ ñ[/„ªí—hÉ™VZª‚YûXÀÛÙ°:$[[;:pà€VÂ^1�Ï‘#G¨¦¦–æÍ›‡%T8snü\ësk×ÖÈr¼ !�®£­­-èë¥ÕíÙ§G”^²~Æ
ˆ‘ÖYæ—ŽFQ¹Ñ};:-¼ÃzÑ0æDXXßD‹O·™ESWDð¶mÛÔ’WÞ¢E‹)""RWQüÔHvS+gÒ¤ÉÂýQQÑÌ»ôk­„`ÝÍÉL:qíê<£Sž¿·G»ßùÇ–Jx¤lUU²µ�=åN_GN6Ñ¢Ó­&G÷AúÕ!Í™S­–EÞÞ>ýPBCÃèâÅ‹2Y('ÉÌÌ”½MØ³k§ÞÁ‹QÃ‡â�à•=K[V"ìW*Y‘ž~4nËEZxºÍl˜¶÷–NU=pà'¨ �‘QU5A¸ÏÓ?”Ò‡N£I›iÁ±g´¼ñ-Í;ò˜*kë)©¬Š\½ü„"5¶ÿ•‘Œ½fppˆtŸ££KŽÉÖÅ?¨Elÿ¾zŒèÐ¯~õ+<§ÈÏæÖ²—1-‡Ð/2SZk™ó`âž›´àt«ÙQ0E³ª†ÁóôéS³fÍ–îÁ¤xòJf­¿©±¨¾™²FV“�­´æé=N�Ót§OŸ®‰$_>}ê¤N‚¯\¾dt*-fo°jêÍ¸­—iþ©Ö.ÁŒƒ÷ÉI}Ä	9[2`hñë¾Á4uÛE¨7Æ¯­#'WOÉp»råªì*ÙžÈóB¤Ö­ˆBðÌiSðœ6 4h\S´RUÍy³6Ñ¼“­fÇÄí—)ap9¶¶:ÜºuKxà]\\ß»™Ö™¹ç&H376��ƒ3AN``�ÌQrðàAá{`­WGÆÍ×"8-)AÁ0´x[ˆ
¶÷Í@g †hG«n~¬�£“�Å]ðƒ¯hó%‡ó/Ø;ŽªëZ¨ú¤vÌ<ö„ò™*�ÉB=“ò©{Bn§›Ažás¶¤|¯�Pž~#aÆŒ™Òõ!ó¶�¬N#wÜU½Ix2.°þJn×‘£0ðjÑ+:Bo‚½Ý]à÷ÆsZ‘žœ �¼b†ÔŽÍ_>¯Úzaèš“4çd«V[uŒÜ|q¿É�˜˜D.\€Êü�4yŠ0èØÞðÙÃ&oŒ"xÉ©6r÷	jßEÉÔt^^¾Šç¬;øß©Åä	•ÍâÖ–f<§ø!@]_¿v•êŽCu+3�HHÝ�éÝƒm,e‘%ìy-ø—vó¡YlöÎ®×Œ1¡ÊÔU`ßÙi`@KKË`äÀJÅ€²ÌŠ·Â;˜ÃBpü ¤Z¤i5 Éh¤›.ÉliiÞÇz}ÆÞ/ùuDp«Wo\ºxÏ�C÷Ë†qå/m?†Î¤Yõ­ZÒ7^­­ZµŠýE‰PÇ�~üø±p}áÂ…Òµêƒ!xâ†IæîÝ»…÷Õ××ßçîÝ;júdÝqƒ>rø )	¶î#ùˆçî¢™õ-Q¹óY²ý"¿ÿèÑ£")
cýúÂ€²=£p}Ì˜±|[rÁ¢º&é}K–,U}#ô®ð}Î�;µ)O¥ÑhcŒçŒÆ¡ûÔË¿péšS4£¾U#Jî&~/Ö>8LH0Ü�Â€2§ƒp½  ð}6F@8ÈQvöï�©‰'	ïC†XÁx½8d¸qýª!£3-ž3ÕÌB€qÒsãEšV×¢%‹ö
Ö­¸•P55‚ÃŸí=#\>|þYšŠ‘CËª]K-X°@xßýû„ïÓØØ v /_º`Á(.W†àýjgð‡\æü%‡hê‰V�»ó&YYIµCXMI0Z0à=šŒø…ÛÝŒ6ðJ)Bðô�×¥÷mÙ²UxSÉÂ÷¹~ýöá2œ9}Ê ‚Ø�çŒÞ«ÖÈŠà_8uJM9Ñ¢¡1bë£´´td%ÂY�t˜NÔÛ·ïÐLÐ¦¦&á]Ìe(8Ro¤íÝ‚íŠœWùaY¸}û¶ð>„U|×HÐcûÐÐÅ‚ÏœÁsFã€H°x¦:(‡&3µaøÆsd/”œ	èŽ³cÇøa%u	TWÏ•¥ÛpGHïÄ|Eé1 ò�Ù�‚tá}åå¸Æ¯khtí1ˆà'�D$B–èNãú5:zäÕ¬YMh»; FF0?lðû&d¶4nï}št¼E+*ÖÔ“ïçlB¸¹¹Ã˜¢HÕxII‰4£&¬?m¹Ðªá=Ð,>>¾Òõ²²Á	HŠ‹Õ›\{ì§®“ÔIU•”šOý{÷â}·4¡ÂÞÊÂMíÁQ@ü˜%4‘‘¨•‡žPæ´uÔ¯`õÌ¨0
ÝSK)€%«;ºê*i‘¯ÃèíÁ½]^�a<,h0fî¾�€& Ø.¼‡-A¸&¸2ó›ßÈðâÅsÔP­ØÏéD€·'©Ä•É�Öˆè‡‰Žôˆã¼&M¾h§•4bûšÀHì
Ýxžb
Ç‘�“ÐCãÌ¦N�*]��JO4DîÜC)0JªOfûïõß!äi988²Ö+$²ËP=k†Aêyì¨xN+Þ¼yÍïÏìlsÌâd)ó1!�*�6QÕ±–.Cx\¶¦5ž3™úÌÏ/�îñ‰F�_/rÇ¬<LnÞ*	|•2r=z$Ø¥¥¥Éô3ˆà=»vè$ø2�[[ô1¦:ÁVu {æŒ ñG›©òX‹Ù‘1m�ŽX%j3/RRRq]Ú:õÏ(§Ñ+³ÀÿKY ø¢ÝÔ3.GÖ Cv&œ9XûôíÛ·4’¤/¹På0–tŒLn<ù[¡ÐCH�:‡ÆmbD·˜Ã·ßB‚|§î�Æ3mÚ4YŸ,;Hß	ˆìƒh28d!I„P¤à~°b5bÙ’Ezœ“™†gtbä°!íyÐÝŒîÕ±‹lDR1�ÜÿˆÝb„Çåê$—¯ƒðs"D—bB{ÑšbÍC‡åÃeØ¿ÿ€p¿‡‡'Û›¿@6‡F`½ŒÑ‹àÛ¶j•`9
jOÁu²²ú–e ßf™\a0Ý¼)ir-�9ÜDc	¦Bú´õºÉ\#É ¬Ï�;w:è¡N	ªÄ�?¢o[ž‡…\h¡Â¾g]„ ×¯_E±™VrCüXnöOuÊÂ©/¾žn’íÈj›ÑøÆØ¼h4Më8 Þ‘(¾r%Ùq‡ÆiQC š]¸jÖ 3M)÷(Ô4B ²Ù�¤>D³ôÅê•+´gˆÞ²�0~Ì(<ÇÏVÌC££HÆžŠû©ÕÁÎÅƒ¼"ú‘oÏA#mÖV}¤E@x¼ šÆˆ#yóïN	99òï1zôh6Ð¿48`K-¹!þ>Øf,ïÊ•K‹Ùp®‘³nð¢3ãá×+žF|A£7KH�¶AÙðz!GK\Su£¹¹ÝñÔ–’VUU!s£3ƒDšÉÞ¸¾×;|—cG3¹<ï‰x–}]˜Ö5Êøjw†ânÍÎÀÖÁ…J6]¥‘‡[$Tl»Eö‚j6P¯¨H@=Ò�7@8m¢é›©o©±Ë—/G6�MwïÞ…A5HÇºöôëÕM_Œ–‹&¨èÈããîÂe g–RÇÖ}‹áGÌ0KÑgà&ÕÐˆCÍÂâóqíS…””ìu1[ÁºšÕR%ÃµkW“Ü½s[2ÀpØ–©°¸ë¬ÿ‰/ a›hø¡	ÉÓ6*Bˆ{`$%NXK^á}Œ’“��ˆ¤¢pœ8~ùŠËÝP[c–ƒ¨¿ n­D8zùÓà÷hØ¡f	e[áÐ0¾_"`ÙKŽJróVž¢ˆÔräŽé÷<Ã„	ûÅ€ýOáH—ÁH~7u%Mƒ˜:w=Ø" ,¡@‘ÙÛ#o¬ —˜–ðé§Ö‡mgm]fkeIÌ'Û›YÛ�¹þÐÿµNè:ÿ?‡Æéd–d“÷ÉB”ƒ'Ð«":g$9Ø, I!ÕìÆTsÅÞ§‚ì¸‰ò´ŠƒSƒ’ö".Ï�î@ðÌ'ëOÐœ™Óéð¡0Š„k&3ßÑ¼ê9t‡i]÷mß†	ñ_ÏbamŠ¢²=O©â@‹„’m÷ÈÑÝGÕœ±è¨ »xË-ìÏe÷>xð ´V‚1°Hw]ºx!èÛ[ØÖ ÂÅÚæ xùÒÅÒ{{F…ÓÄªq,ßù ‚Â},„·ˆ(BˆæQÓ ÀŽ2–�¤òÍB
�$—k†Ñ2Ù¡Éeêî…D-ÁlÿX„ÿ�	Ô¤‡ëq}íZ“’ûøÑ#~Ä|9CfÇÌ�Ä¸XZ0·šÎ6œaqçé&n€&?Kÿ‡ª{äÞå³ið�fñS•QÍ®L5—îy*ÈNªÞ«é~XÆí»ƒ`bðìd¿hÔ!à µ­8òs³ùÙÃ�ícú5dk sîIué9B Â”­Ù~8[jØ#–Jö>§²ýÍ
·Þ%…TsêÂ#‚ì¢��ÈÉ'Dã3HÁA/,wW£	Âƒ�«(¹¼ž	†Ÿ†³
?Ï¬ú1+b�ÿÄöY>Ðüç68¹RÎº+Tº¿Y@pB‘ÚÁ��DH‘A<6((X'Á‘Ù£d²£&àš.@5I°¨2çÌœ�’ÑäÞ¼q�Ð“¤a»£oGüÌA®«ê ö¿ŠJö7ˆ›ºISW:!‰n¾¾~š}Í~¡T¸ó± ;ei²7ÌN0GÕ¸1¬ñÏ:wÜ¨ƒ*6Žå×Ýïªvø$›Šö5Èßþ�=Õ7é>zô˜Ìñ�Œu÷Âq‘P½W�]°ç9¹‡õÂõ.#8,Èý¦�BíÚÕ¼¶·Ìž5ÂùT�‹.kª1c?ÊÙr‡
÷5è;R( “µAè@0Š¼Õ»:Ó†Èe�XhÐúí`Õ­TI‚Cü}ál IFcêä	|ÎæíºôÃLhßÿÉôT°·I†ðìÑZ|¿	B;$V\Æ“Ë8yQî¶‚ÜôÚËdcï¤7¹0´œl¬!ØÙÎ†àGÒóçÏ@Ž"x÷îŽÊãVtÿ.>ÖÎÚA˜]éC)o³ZÄŒ×Þh´ÿÜÈ’5åÙ‘ñóËäúõK×Ýò? �jkkyš-Z6–àÜÌt´P€q¥8PžÊûQ¢ÁJWpëí›lðŠ¤*ÿÊÞþˆòö6©EîÎ'äÞ·ÓÛ¢�T’É0Yç~|4NáÚÁ(‚áä(+. óçÎ‚S}³¸Ó¥ÜÎÊÊÒÜü~ž^¢�§Õ7‰²v<¦œ=Í‘¹õ!ùÆdÞÔÛ7„²¶‹²3·Ü'Áh“cî\¡H­S£™è�Áe´}ë»Ã	0/\ ñ~d®£îx@Áº¿lûÜ“Rj®Röž&ÍØý‚"Š&éÆƒj4ï�LNHÚP­Ï#qNÁ¢«2%1Ž†© Y3¦�Pœ¡„,Å€ÎñKÎG¹©žÏ¼£Ò¢áD3¯ÁV¾l0+ÕÃŸâ—ÔS#AúVÕ’µ�£N‚ƒÓ‡Êž�­>€ˆ¶Kµm‚Q¸�d:g'~4œ‡j°áÁƒûT“à0KÏhï[QVŒ �^ÏÍœ>Uê}%K“5“÷Ê©cËaGŠ™¾�2w7iEÜâ:¦f´ªæôm�„g2v<!ç€HC�uG•>¿Îv4ÁPëcG�’zWñå ¦wOÖ­ï†ÖgçÎž)5þv´ífa^få†üŽ¾â#QÆ®&­H\{�ÜÂúªuh˜µOvDñT]³þf�\¨;úu|ÿþ=EÉÝ¿o R³£Õ�í˜»ïk(ùd€OœöíÙ­öYT'J3×æÇ‚Û²+­ê4™ŠÍEi;ŸS#G’7? ïþ™¢Õœ3Vv_Ü²F²²±×IðÍ›7‚W¯^Ã¯é"ë£Ñ@ÙJANäK®Ggçï«:-¾Ð~’(afOŸ:©µüy�\ëÿ¨«¹º0•=°ã€ûôÏ¢ä­�(•‘¤ýfì¢ðÒ™ÔgÊVùõ�/È=Z¯“ÌèÙ³g²Ãú|ïÞ]EŠòsù�ašÆ‹�ìÊUvâ OðC?'·Tcg÷®÷nY‡ÈÒjÂc(¾ö&¥0²:ƒî£–ë»­’umßµk—Z‚Y}�ÉÞ¾m'¸¯vÍ÷ãï²ÙœÁUö‡™k­ðÌUÞËåÉˆ.Þ¼ƒ)–©Ù”�M?['w½	^µjµ@0’ÝqÜŽ9	~üè!?‰¬PŸ�Îíç•Púé&ÙÆ¦ãY† *fö~ƒö�5(ónOµ¥¤‘‘QZ	FÏÉ·oß¨Ëqv0öÉË–,®iÂ€¾=	rmm»éU7•môyæ_—m¿Ã5K• J=Æ­Ñ‹ÜÞS>lo pâNë—åhhh”‘—%,l/Wg­?{ö„Ì›K8e;9>–ü½Äöüž.Žl½¼«“à)“&˜étî®·°Q¡˜ÐqZ8I+¹I›’ƒW *Á‘Ê[-p÷‰« ­‰5Õýb­¬�àË—.
„2”0$°®êÌë5à½³¢D'Á'Žå[¤¸Ï,¹bÜXêh+Á?±”’¶=UKppŽÐ6!§jjÔâz W‡Z’}<Ú	¶±tWGpÃ)‘<FP‡=?ö±ÅX_Ï66h%øåË6ÌvÈ)ã^¨ÏðG³{Ó£g<%l¼+�;paSå¶*„YÚi—ËóÁd3YfU3‚Ë´Ì-`‹êÞ…&(¸ž«sçd¤AÁÉñ¦U·{Ó90šâV_&�›¼ý¹†ö‘®1òêyP
ƒÆ¤>ô˜¼rå
y¹9—h!ëo;Á×ÎÏó­ÍÎí[5’‡GåØ1ïeY!oùÿèca÷¦x&¢½»/Xpœ"i¾êº[ò£é*C9«¬lFx‘6‚G�†{¹È;Øt³Ç=Q¡ÁÄÂH›_=»cÑwïÿ#zyµÝ7:º7mÝ •p¡•Ÿ�¹Ù�™jÁYi)¸‡íc-µ:øÙ,ŽÃ}˜ñx®±áÎKêØx%‰Á6Èÿ¿ÜþT°2Ò ;snûš\Þ‚y[fÔ}M;ÁÖßCÆ…·›}#eW_37Ð>~Ô»7+¬ŒÜô[3`¹3²K:œÏ@Ì±àÔ�`¬›<ù¼TŸw°û¢UˆMG×›Ï®Ål¼{ÓãÃvÇ2ZÉ-û±Ø1Ù=ìØÙ ™)	~øà¾ÔðSß.D,7ÌÑÊÂö#ƒúÍ:K6ãÒQçd®wr‚U�cã>²a¢�¹x©ŠUÁ¼O¾�•÷ñóñóñóñóñóñóñóñó_æÔÁr‚œˆ    IEND®B`‚                                                                                                                                                                                                                                                                                             includes/File_manager/lib/php/plugins/Watermark/plugin.php                                          0000644                 00000043500 15266052675 0017725 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin Watermark
 * Print watermark on file upload.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.Watermark.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Watermark' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'source'         => 'logo.png', // Path to Water mark image
 *                'ratio'          => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
 *                'position'       => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
 *                'marginX'        => 5,          // Margin horizontal pixel
 *                'marginY'        => 5,          // Margin vertical pixel
 *                'quality'        => 95,         // JPEG image save quality
 *                'transparency'   => 70,         // Water mark image transparency ( other than PNG )
 *                'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                'targetMinPixel' => 200,        // Target image minimum pixel size
 *                'interlace'      => IMG_GIF|IMG_JPG, // Set interlacebit image formats ( bit-field )
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Watermark' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'source'         => 'logo.png', // Path to Water mark image
 *                        'ratio'          => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
 *                        'position'       => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
 *                        'marginX'        => 5,          // Margin horizontal pixel
 *                        'marginY'        => 5,          // Margin vertical pixel
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'transparency'   => 70,         // Water mark image transparency ( other than PNG )
 *                        'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                        'targetMinPixel' => 200,        // Target image minimum pixel size
 *                        'interlace'      => IMG_GIF|IMG_JPG, // Set interlacebit image formats ( bit-field )
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginWatermark extends elFinderPlugin
{

    private $watermarkImgInfo = null;

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'source' => 'logo.png', // Path to Water mark image
            'ratio' => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
            'position' => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
            'marginX' => 5,          // Margin horizontal pixel
            'marginY' => 5,          // Margin vertical pixel
            'quality' => 95,         // JPEG image save quality
            'transparency' => 70,         // Water mark image transparency ( other than PNG )
            'targetType' => IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP, // Target image formats ( bit-field )
            'targetMinPixel' => 200,        // Target image minimum pixel size
            'interlace' => IMG_GIF | IMG_JPG, // Set interlacebit image formats ( bit-field )
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'marginRight' => 0,          // Deprecated - marginX should be used
            'marginBottom' => 0,          // Deprecated - marginY should be used
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        $imgTypes = array(
            IMAGETYPE_GIF => IMG_GIF,
            IMAGETYPE_JPEG => IMG_JPEG,
            IMAGETYPE_PNG => IMG_PNG,
            IMAGETYPE_BMP => IMG_WBMP,
            IMAGETYPE_WBMP => IMG_WBMP
        );
        if (!isset($imgTypes[$imageType]) || !($opts['targetType'] & $imgTypes[$imageType])) {
            return false;
        }

        // check Animation Gif
        if ($imageType === IMAGETYPE_GIF && elFinder::isAnimationGif($src)) {
            return false;
        }
        // check Animation Png
        if ($imageType === IMAGETYPE_PNG && elFinder::isAnimationPng($src)) {
            return false;
        }
        // check water mark image
        if (!file_exists($opts['source'])) {
            $opts['source'] = dirname(__FILE__) . "/" . $opts['source'];
        }
        if (is_readable($opts['source'])) {
            $watermarkImgInfo = getimagesize($opts['source']);
            if (!$watermarkImgInfo) {
                return false;
            }
        } else {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        $watermark = $opts['source'];
        $quality = $opts['quality'];
        $transparency = $opts['transparency'];

        // check target image size
        if ($opts['targetMinPixel'] > 0 && $opts['targetMinPixel'] > min($srcImgInfo[0], $srcImgInfo[1])) {
            return false;
        }

        $watermark_width = $watermarkImgInfo[0];
        $watermark_height = $watermarkImgInfo[1];

        // Specified as a ratio to the image size
        if ($opts['ratio'] && $opts['ratio'] > 0 && $opts['ratio'] <= 1) {
            $maxW = $srcImgInfo[0] * $opts['ratio'] - ($opts['marginX'] * 2);
            $maxH = $srcImgInfo[1] * $opts['ratio'] - ($opts['marginY'] * 2);
            $dx = $dy = 0;
            if (($maxW >= $watermarkImgInfo[0] && $maxH >= $watermarkImgInfo[0]) || ($maxW <= $watermarkImgInfo[0] && $maxH <= $watermarkImgInfo[0])) {
                $dx = abs($srcImgInfo[0] - $watermarkImgInfo[0]);
                $dy = abs($srcImgInfo[1] - $watermarkImgInfo[1]);
            } else if ($maxW < $watermarkImgInfo[0]) {
                $dx = -1;
            } else {
                $dy = -1;
            }
            if ($dx < $dy) {
                $ww = $maxW;
                $wh = $watermarkImgInfo[1] * ($ww / $watermarkImgInfo[0]);
            } else {
                $wh = $maxH;
                $ww = $watermarkImgInfo[0] * ($wh / $watermarkImgInfo[1]);
            }
            $watermarkImgInfo[0] = $ww;
            $watermarkImgInfo[1] = $wh;
        } else {
            $opts['ratio'] = null;
        }

        $opts['position'] = strtoupper($opts['position']);

        // Set vertical position
        if (strpos($opts['position'], 'T') !== false) {
            // Top
            $dest_x = $opts['marginX'];
        } else if (strpos($opts['position'], 'M') !== false) {
            // Middle
            $dest_x = ($srcImgInfo[0] - $watermarkImgInfo[0]) / 2;
        } else {
            // Bottom
            $dest_x = $srcImgInfo[0] - $watermarkImgInfo[0] - max($opts['marginBottom'], $opts['marginX']);
        }

        // Set horizontal position
        if (strpos($opts['position'], 'L') !== false) {
            // Left
            $dest_y = $opts['marginY'];
        } else if (strpos($opts['position'], 'C') !== false) {
            // Middle
            $dest_y = ($srcImgInfo[1] - $watermarkImgInfo[1]) / 2;
        } else {
            // Right
            $dest_y = $srcImgInfo[1] - $watermarkImgInfo[1] - max($opts['marginRight'], $opts['marginY']);
        }


        // check interlace
        $opts['interlace'] = ($opts['interlace'] & $imgTypes[$imageType]);

        // Repeated use of Imagick::compositeImage() may cause PHP to hang, so disable it
        //if (class_exists('Imagick', false)) {
        //    return $this->watermarkPrint_imagick($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $opts);
        //} else {
            elFinder::expandMemoryForGD(array($watermarkImgInfo, $srcImgInfo));
            return $this->watermarkPrint_gd($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $srcImgInfo, $opts);
        //}
    }

    private function watermarkPrint_imagick($src, $watermarkSrc, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $opts)
    {

        try {

            // Open the original image
            $img = new Imagick($src);

            // Open the watermark
            $watermark = new Imagick($watermarkSrc);

            // zoom
            if ($opts['ratio']) {
                $watermark->scaleImage($watermarkImgInfo[0], $watermarkImgInfo[1]);
            }

            // Set transparency
            if (strtoupper($watermark->getImageFormat()) !== 'PNG') {
                $watermark->setImageOpacity($transparency / 100);
            }

            // Overlay the watermark on the original image
            $img->compositeImage($watermark, imagick::COMPOSITE_OVER, $dest_x, $dest_y);

            // Set quality
            if (strtoupper($img->getImageFormat()) === 'JPEG') {
                $img->setImageCompression(imagick::COMPRESSION_JPEG);
                $img->setCompressionQuality($quality);
            }

            // set interlace
            $opts['interlace'] && $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);

            $result = $img->writeImage($src);

            $img->clear();
            $img->destroy();
            $watermark->clear();
            $watermark->destroy();

            return $result ? true : false;
        } catch (Exception $e) {
            $ermsg = $e->getMessage();
            $ermsg && trigger_error($ermsg);
            return false;
        }
    }

    private function watermarkPrint_gd($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $srcImgInfo, $opts)
    {

        $watermark_width = $watermarkImgInfo[0];
        $watermark_height = $watermarkImgInfo[1];

        $ermsg = '';
        switch ($watermarkImgInfo['mime']) {
            case 'image/gif':
                if (imagetypes() & IMG_GIF) {
                    $oWatermarkImg = imagecreatefromgif($watermark);
                } else {
                    $ermsg = 'GIF images are not supported as watermark image';
                }
                break;
            case 'image/jpeg':
                if (imagetypes() & IMG_JPG) {
                    $oWatermarkImg = imagecreatefromjpeg($watermark);
                } else {
                    $ermsg = 'JPEG images are not supported as watermark image';
                }
                break;
            case 'image/png':
                if (imagetypes() & IMG_PNG) {
                    $oWatermarkImg = imagecreatefrompng($watermark);
                } else {
                    $ermsg = 'PNG images are not supported as watermark image';
                }
                break;
            case 'image/wbmp':
                if (imagetypes() & IMG_WBMP) {
                    $oWatermarkImg = imagecreatefromwbmp($watermark);
                } else {
                    $ermsg = 'WBMP images are not supported as watermark image';
                }
                break;
            default:
                $oWatermarkImg = false;
                $ermsg = $watermarkImgInfo['mime'] . ' images are not supported as watermark image';
                break;
        }


        if (!$ermsg) {
            // zoom
            if ($opts['ratio']) {
                $tmpImg = imagecreatetruecolor($watermarkImgInfo[0], $watermarkImgInfo[1]);
                imagealphablending($tmpImg, false);
                imagesavealpha($tmpImg, true);
                imagecopyresampled($tmpImg, $oWatermarkImg, 0, 0, 0, 0, $watermarkImgInfo[0], $watermarkImgInfo[1], imagesx($oWatermarkImg), imagesy($oWatermarkImg));
                imageDestroy($oWatermarkImg);
                $oWatermarkImg = $tmpImg;
                $tmpImg = null;
            }

            switch ($srcImgInfo['mime']) {
                case 'image/gif':
                    if (imagetypes() & IMG_GIF) {
                        $oSrcImg = imagecreatefromgif($src);
                    } else {
                        $ermsg = 'GIF images are not supported as source image';
                    }
                    break;
                case 'image/jpeg':
                    if (imagetypes() & IMG_JPG) {
                        $oSrcImg = imagecreatefromjpeg($src);
                    } else {
                        $ermsg = 'JPEG images are not supported as source image';
                    }
                    break;
                case 'image/png':
                    if (imagetypes() & IMG_PNG) {
                        $oSrcImg = imagecreatefrompng($src);
                    } else {
                        $ermsg = 'PNG images are not supported as source image';
                    }
                    break;
                case 'image/wbmp':
                    if (imagetypes() & IMG_WBMP) {
                        $oSrcImg = imagecreatefromwbmp($src);
                    } else {
                        $ermsg = 'WBMP images are not supported as source image';
                    }
                    break;
                default:
                    $oSrcImg = false;
                    $ermsg = $srcImgInfo['mime'] . ' images are not supported as source image';
                    break;
            }
        }

        if ($ermsg || false === $oSrcImg || false === $oWatermarkImg) {
            $ermsg && trigger_error($ermsg);
            return false;
        }

        if ($srcImgInfo['mime'] === 'image/png') {
            if (function_exists('imagecolorallocatealpha')) {
                $bg = imagecolorallocatealpha($oSrcImg, 255, 255, 255, 127);
                imagefill($oSrcImg, 0, 0, $bg);
            }
        }

        if ($watermarkImgInfo['mime'] === 'image/png') {
            imagecopy($oSrcImg, $oWatermarkImg, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        } else {
            imagecopymerge($oSrcImg, $oWatermarkImg, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
        }

        // set interlace
        $opts['interlace'] && imageinterlace($oSrcImg, true);

        switch ($srcImgInfo['mime']) {
            case 'image/gif':
                imagegif($oSrcImg, $src);
                break;
            case 'image/jpeg':
                imagejpeg($oSrcImg, $src, $quality);
                break;
            case 'image/png':
                if (function_exists('imagesavealpha') && function_exists('imagealphablending')) {
                    imagealphablending($oSrcImg, false);
                    imagesavealpha($oSrcImg, true);
                }
                imagepng($oSrcImg, $src);
                break;
            case 'image/wbmp':
                imagewbmp($oSrcImg, $src);
                break;
        }

        imageDestroy($oSrcImg);
        imageDestroy($oWatermarkImg);

        return true;
    }
}
                                                                                                                                                                                                includes/File_manager/lib/php/plugins/Normalizer/plugin.php                                         0000644                 00000017533 15266052675 0020121 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder Plugin Normalizer
 * UTF-8 Normalizer of file-name and file-path etc.
 * nfc(NFC): Canonical Decomposition followed by Canonical Composition
 * nfkc(NFKC): Compatibility Decomposition followed by Canonical
 * This plugin require Class "Normalizer" (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
 * or PEAR package "I18N_UnicodeNormalizer"
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array(
 *                'Plugin.Normalizer.cmdPreprocess'
 *            ),
 *            'upload.presave paste.copyfrom' => array(
 *                'Plugin.Normalizer.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Normalizer' => array(
 *                'enable'    => true,
 *                'nfc'       => true,
 *                'nfkc'      => true,
 *                'umlauts'   => false,
 *                'lowercase' => false,
 *                'convmap'   => array()
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Normalizer' => array(
 *                        'enable'    => true,
 *                        'nfc'       => true,
 *                        'nfkc'      => true,
 *                        'umlauts'   => false,
 *                        'lowercase' => false,
 *                        'convmap'   => array()
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginNormalizer extends elFinderPlugin
{
    private $replaced = array();
    private $keyMap = array(
        'ls' => 'intersect',
        'upload' => 'renames',
        'mkdir' => array('name', 'dirs')
    );

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,  // For control by volume driver
            'nfc' => true,  // Canonical Decomposition followed by Canonical Composition
            'nfkc' => true,  // Compatibility Decomposition followed by Canonical
            'umlauts' => false, // Convert umlauts with their closest 7 bit ascii equivalent
            'lowercase' => false, // Make chars lowercase
            'convmap' => array()// Convert map ('FROM' => 'TO') array
        );

        $this->opts = array_merge($defaults, $opts);
    }

    public function cmdPreprocess($cmd, &$args, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $this->replaced[$cmd] = array();
        $key = (isset($this->keyMap[$cmd])) ? $this->keyMap[$cmd] : 'name';

        if (is_array($key)) {
            $keys = $key;
        } else {
            $keys = array($key);
        }
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                if (is_array($args[$key])) {
                    foreach ($args[$key] as $i => $name) {
                        if ($cmd === 'mkdir' && $key === 'dirs') {
                            // $name need '/' as prefix see #2607
                            $name = '/' . ltrim($name, '/');
                            $_names = explode('/', $name);
                            $_res = array();
                            foreach ($_names as $_name) {
                                $_res[] = $this->normalize($_name, $opts);
                            }
                            $this->replaced[$cmd][$name] = $args[$key][$i] = join('/', $_res);
                        } else {
                            $this->replaced[$cmd][$name] = $args[$key][$i] = $this->normalize($name, $opts);
                        }
                    }
                } else if ($args[$key] !== '') {
                    $name = $args[$key];
                    $this->replaced[$cmd][$name] = $args[$key] = $this->normalize($name, $opts);
                }
            }
        }
        if ($cmd === 'ls' || $cmd === 'mkdir') {
            if (!empty($this->replaced[$cmd])) {
                // un-regist for legacy settings
                $elfinder->unbind($cmd, array($this, 'cmdPostprocess'));
                $elfinder->bind($cmd, array($this, 'cmdPostprocess'));
            }
        }
        return true;
    }

    public function cmdPostprocess($cmd, &$result, $args, $elfinder, $volume)
    {
        if ($cmd === 'ls') {
            if (!empty($result['list']) && !empty($this->replaced['ls'])) {
                foreach ($result['list'] as $hash => $name) {
                    if ($keys = array_keys($this->replaced['ls'], $name)) {
                        if (count($keys) === 1) {
                            $result['list'][$hash] = $keys[0];
                        } else {
                            $result['list'][$hash] = $keys;
                        }
                    }
                }
            }
        } else if ($cmd === 'mkdir') {
            if (!empty($result['hashes']) && !empty($this->replaced['mkdir'])) {
                foreach ($result['hashes'] as $name => $hash) {
                    if ($keys = array_keys($this->replaced['mkdir'], $name)) {
                        $result['hashes'][$keys[0]] = $hash;
                    }
                }
            }
        }
    }

    // NOTE: $thash is directory hash so it unneed to process at here
    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }

        $name = $this->normalize($name, $opts);
        return true;
    }

    protected function normalize($str, $opts)
    {
        if ($opts['nfc'] || $opts['nfkc']) {
            if (class_exists('Normalizer', false)) {
                if ($opts['nfc'] && !Normalizer::isNormalized($str, Normalizer::FORM_C))
                    $str = Normalizer::normalize($str, Normalizer::FORM_C);
                if ($opts['nfkc'] && !Normalizer::isNormalized($str, Normalizer::FORM_KC))
                    $str = Normalizer::normalize($str, Normalizer::FORM_KC);
            } else {
                if (!class_exists('I18N_UnicodeNormalizer', false)) {
                    if (is_readable('I18N/UnicodeNormalizer.php')) {
                        include_once 'I18N/UnicodeNormalizer.php';
                    } else {
                        trigger_error('Plugin Normalizer\'s options "nfc" or "nfkc" require PHP class "Normalizer" or PEAR package "I18N_UnicodeNormalizer"', E_USER_WARNING);
                    }
                }
                if (class_exists('I18N_UnicodeNormalizer', false)) {
                    $normalizer = new I18N_UnicodeNormalizer();
                    if ($opts['nfc'])
                        $str = $normalizer->normalize($str, 'NFC');
                    if ($opts['nfkc'])
                        $str = $normalizer->normalize($str, 'NFKC');
                }
            }
        }
        if ($opts['umlauts']) {
            if (strpos($str = htmlentities($str, ENT_QUOTES, 'UTF-8'), '&') !== false) {
                $str = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|caron|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $str), ENT_QUOTES, 'utf-8');
            }
        }
        if ($opts['convmap'] && is_array($opts['convmap'])) {
            $str = strtr($str, $opts['convmap']);
        }
        if ($opts['lowercase']) {
            if (function_exists('mb_strtolower')) {
                $str = mb_strtolower($str, 'UTF-8');
            } else {
                $str = strtolower($str);
            }
        }
        return $str;
    }
}
                                                                                                                                                                     includes/File_manager/lib/php/mime.types                                                            0000644                 00000060437 15266052675 0014325 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       # This file maps Internet media types to unique file extension(s).
# Although created for httpd, this file is used by many software systems
# and has been placed in the public domain for unlimited redisribution.
#
# The table below contains both registered and (common) unregistered types.
# A type that has no unique extension can be ignored -- they are listed
# here to guide configurations toward known types and to make it easier to
# identify "new" types.  File extensions are also commonly used to indicate
# content languages and encodings, so choose them carefully.
#
# Internet media types should be registered as described in RFC 4288.
# The registry is at <http://www.iana.org/assignments/media-types/>.
#
# MIME type (lowercased)			Extensions
application/andrew-inset ez
application/applixware aw
application/atom+xml atom
application/atomcat+xml atomcat
application/atomsvc+xml atomsvc
application/ccxml+xml ccxml
application/cdmi-capability cdmia
application/cdmi-container cdmic
application/cdmi-domain cdmid
application/cdmi-object cdmio
application/cdmi-queue cdmiq
application/cu-seeme cu
application/davmount+xml davmount
application/docbook+xml dbk
application/dssc+der dssc
application/dssc+xml xdssc
application/ecmascript ecma
application/emma+xml emma
application/epub+zip epub
application/exi exi
application/font-tdpfr pfr
application/gml+xml gml
application/gpx+xml gpx
application/gxf gxf
application/hyperstudio stk
application/inkml+xml ink inkml
application/ipfix ipfix
application/java-archive jar
application/java-serialized-object ser
application/java-vm class
application/javascript js
application/json json
application/jsonml+json jsonml
application/lost+xml lostxml
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mads+xml mads
application/marc mrc
application/marcxml+xml mrcx
application/mathematica ma nb mb
application/mathml+xml mathml
application/mbox mbox
application/mediaservercontrol+xml mscml
application/metalink+xml metalink
application/metalink4+xml meta4
application/mets+xml mets
application/mods+xml mods
application/mp21 m21 mp21
application/mp4 mp4s
application/msword doc dot
application/mxf mxf
application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy
application/oda oda
application/oebps-package+xml opf
application/ogg ogx
application/omdoc+xml omdoc
application/onenote onetoc onetoc2 onetmp onepkg
application/oxps oxps
application/patch-ops-error+xml xer
application/pdf pdf
application/pgp-encrypted pgp
application/pgp-signature asc sig
application/pics-rules prf
application/pkcs10 p10
application/pkcs7-mime p7m p7c
application/pkcs7-signature p7s
application/pkcs8 p8
application/pkix-attr-cert ac
application/pkix-cert cer
application/pkix-crl crl
application/pkix-pkipath pkipath
application/pkixcmp pki
application/pls+xml pls
application/postscript ai eps ps
application/prs.cww cww
application/pskc+xml pskcxml
application/rdf+xml rdf
application/reginfo+xml rif
application/relax-ng-compact-syntax rnc
application/resource-lists+xml rl
application/resource-lists-diff+xml rld
application/rls-services+xml rs
application/rpki-ghostbusters gbr
application/rpki-manifest mft
application/rpki-roa roa
application/rsd+xml rsd
application/rss+xml rss
application/rtf rtf
application/sbml+xml sbml
application/scvp-cv-request scq
application/scvp-cv-response scs
application/scvp-vp-request spq
application/scvp-vp-response spp
application/sdp sdp
application/set-payment-initiation setpay
application/set-registration-initiation setreg
application/shf+xml shf
application/smil+xml smi smil
application/sparql-query rq
application/sparql-results+xml srx
application/srgs gram
application/srgs+xml grxml
application/sru+xml sru
application/ssdl+xml ssdl
application/ssml+xml ssml
application/tei+xml tei teicorpus
application/thraud+xml tfi
application/timestamped-data tsd
application/vnd.3gpp.pic-bw-large plb
application/vnd.3gpp.pic-bw-small psb
application/vnd.3gpp.pic-bw-var pvb
application/vnd.3gpp2.tcap tcap
application/vnd.3m.post-it-notes pwn
application/vnd.accpac.simply.aso aso
application/vnd.accpac.simply.imp imp
application/vnd.acucobol acu
application/vnd.acucorp atc acutc
application/vnd.adobe.air-application-installer-package+zip air
application/vnd.adobe.formscentral.fcdt fcdt
application/vnd.adobe.fxp fxp fxpl
application/vnd.adobe.xdp+xml xdp
application/vnd.adobe.xfdf xfdf
application/vnd.ahead.space ahead
application/vnd.airzip.filesecure.azf azf
application/vnd.airzip.filesecure.azs azs
application/vnd.amazon.ebook azw
application/vnd.americandynamics.acc acc
application/vnd.amiga.ami ami
application/vnd.android.package-archive apk
application/vnd.anser-web-certificate-issue-initiation cii
application/vnd.anser-web-funds-transfer-initiation fti
application/vnd.antix.game-component atx
application/vnd.apple.installer+xml mpkg
application/vnd.apple.mpegurl m3u8
application/vnd.aristanetworks.swi swi
application/vnd.astraea-software.iota iota
application/vnd.audiograph aep
application/vnd.blueice.multipass mpm
application/vnd.bmi bmi
application/vnd.businessobjects rep
application/vnd.chemdraw+xml cdxml
application/vnd.chipnuts.karaoke-mmd mmd
application/vnd.cinderella cdy
application/vnd.claymore cla
application/vnd.cloanto.rp9 rp9
application/vnd.clonk.c4group c4g c4d c4f c4p c4u
application/vnd.cluetrust.cartomobile-config c11amc
application/vnd.cluetrust.cartomobile-config-pkg c11amz
application/vnd.commonspace csp
application/vnd.contact.cmsg cdbcmsg
application/vnd.cosmocaller cmc
application/vnd.crick.clicker clkx
application/vnd.crick.clicker.keyboard clkk
application/vnd.crick.clicker.palette clkp
application/vnd.crick.clicker.template clkt
application/vnd.crick.clicker.wordbank clkw
application/vnd.criticaltools.wbs+xml wbs
application/vnd.ctc-posml pml
application/vnd.cups-ppd ppd
application/vnd.curl.car car
application/vnd.curl.pcurl pcurl
application/vnd.dart dart
application/vnd.data-vision.rdz rdz
application/vnd.dece.data uvf uvvf uvd uvvd
application/vnd.dece.ttml+xml uvt uvvt
application/vnd.dece.unspecified uvx uvvx
application/vnd.dece.zip uvz uvvz
application/vnd.denovo.fcselayout-link fe_launch
application/vnd.dna dna
application/vnd.dolby.mlp mlp
application/vnd.dpgraph dpg
application/vnd.dreamfactory dfac
application/vnd.ds-keypoint kpxx
application/vnd.dvb.ait ait
application/vnd.dvb.service svc
application/vnd.dynageo geo
application/vnd.ecowin.chart mag
application/vnd.enliven nml
application/vnd.epson.esf esf
application/vnd.epson.msf msf
application/vnd.epson.quickanime qam
application/vnd.epson.salt slt
application/vnd.epson.ssf ssf
application/vnd.eszigno3+xml es3 et3
application/vnd.ezpix-album ez2
application/vnd.ezpix-package ez3
application/vnd.fdf fdf
application/vnd.fdsn.mseed mseed
application/vnd.fdsn.seed seed dataless
application/vnd.flographit gph
application/vnd.fluxtime.clip ftc
application/vnd.framemaker fm frame maker book
application/vnd.frogans.fnc fnc
application/vnd.frogans.ltf ltf
application/vnd.fsc.weblaunch fsc
application/vnd.fujitsu.oasys oas
application/vnd.fujitsu.oasys2 oa2
application/vnd.fujitsu.oasys3 oa3
application/vnd.fujitsu.oasysgp fg5
application/vnd.fujitsu.oasysprs bh2
application/vnd.fujixerox.ddd ddd
application/vnd.fujixerox.docuworks xdw
application/vnd.fujixerox.docuworks.binder xbd
application/vnd.fuzzysheet fzs
application/vnd.genomatix.tuxedo txd
application/vnd.geogebra.file ggb
application/vnd.geogebra.tool ggt
application/vnd.geometry-explorer gex gre
application/vnd.geonext gxt
application/vnd.geoplan g2w
application/vnd.geospace g3w
application/vnd.gmx gmx
application/vnd.google-earth.kml+xml kml
application/vnd.google-earth.kmz kmz
application/vnd.grafeq gqf gqs
application/vnd.groove-account gac
application/vnd.groove-help ghf
application/vnd.groove-identity-message gim
application/vnd.groove-injector grv
application/vnd.groove-tool-message gtm
application/vnd.groove-tool-template tpl
application/vnd.groove-vcard vcg
application/vnd.hal+xml hal
application/vnd.handheld-entertainment+xml zmm
application/vnd.hbci hbci
application/vnd.hhe.lesson-player les
application/vnd.hp-hpgl hpgl
application/vnd.hp-hpid hpid
application/vnd.hp-hps hps
application/vnd.hp-jlyt jlt
application/vnd.hp-pcl pcl
application/vnd.hp-pclxl pclxl
application/vnd.hydrostatix.sof-data sfd-hdstx
application/vnd.ibm.minipay mpy
application/vnd.ibm.modcap afp listafp list3820
application/vnd.ibm.rights-management irm
application/vnd.ibm.secure-container sc
application/vnd.iccprofile icc icm
application/vnd.igloader igl
application/vnd.immervision-ivp ivp
application/vnd.immervision-ivu ivu
application/vnd.insors.igm igm
application/vnd.intercon.formnet xpw xpx
application/vnd.intergeo i2g
application/vnd.intu.qbo qbo
application/vnd.intu.qfx qfx
application/vnd.ipunplugged.rcprofile rcprofile
application/vnd.irepository.package+xml irp
application/vnd.is-xpr xpr
application/vnd.isac.fcs fcs
application/vnd.jam jam
application/vnd.jcp.javame.midlet-rms rms
application/vnd.jisp jisp
application/vnd.joost.joda-archive joda
application/vnd.kahootz ktz ktr
application/vnd.kde.karbon karbon
application/vnd.kde.kchart chrt
application/vnd.kde.kformula kfo
application/vnd.kde.kivio flw
application/vnd.kde.kontour kon
application/vnd.kde.kpresenter kpr kpt
application/vnd.kde.kspread ksp
application/vnd.kde.kword kwd kwt
application/vnd.kenameaapp htke
application/vnd.kidspiration kia
application/vnd.kinar kne knp
application/vnd.koan skp skd skt skm
application/vnd.kodak-descriptor sse
application/vnd.las.las+xml lasxml
application/vnd.llamagraphics.life-balance.desktop lbd
application/vnd.llamagraphics.life-balance.exchange+xml lbe
application/vnd.lotus-1-2-3 123
application/vnd.lotus-approach apr
application/vnd.lotus-freelance pre
application/vnd.lotus-notes nsf
application/vnd.lotus-organizer org
application/vnd.lotus-screencam scm
application/vnd.lotus-wordpro lwp
application/vnd.macports.portpkg portpkg
application/vnd.mcd mcd
application/vnd.medcalcdata mc1
application/vnd.mediastation.cdkey cdkey
application/vnd.mfer mwf
application/vnd.mfmp mfm
application/vnd.micrografx.flo flo
application/vnd.micrografx.igx igx
application/vnd.mif mif
application/vnd.mobius.daf daf
application/vnd.mobius.dis dis
application/vnd.mobius.mbk mbk
application/vnd.mobius.mqy mqy
application/vnd.mobius.msl msl
application/vnd.mobius.plc plc
application/vnd.mobius.txf txf
application/vnd.mophun.application mpn
application/vnd.mophun.certificate mpc
application/vnd.mozilla.xul+xml xul
application/vnd.ms-artgalry cil
application/vnd.ms-cab-compressed cab
application/vnd.ms-excel xls xlm xla xlc xlt xlw
application/vnd.ms-excel.addin.macroenabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb
application/vnd.ms-excel.sheet.macroenabled.12 xlsm
application/vnd.ms-excel.template.macroenabled.12 xltm
application/vnd.ms-fontobject eot
application/vnd.ms-htmlhelp chm
application/vnd.ms-ims ims
application/vnd.ms-lrm lrm
application/vnd.ms-officetheme thmx
application/vnd.ms-outlook msg
application/vnd.ms-pki.seccat cat
application/vnd.ms-pki.stl stl
application/vnd.ms-powerpoint ppt pps pot
application/vnd.ms-powerpoint.addin.macroenabled.12 ppam
application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm
application/vnd.ms-powerpoint.slide.macroenabled.12 sldm
application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm
application/vnd.ms-powerpoint.template.macroenabled.12 potm
application/vnd.ms-project mpp mpt
application/vnd.ms-word.document.macroenabled.12 docm
application/vnd.ms-word.template.macroenabled.12 dotm
application/vnd.ms-works wps wks wcm wdb
application/vnd.ms-wpl wpl
application/vnd.ms-xpsdocument xps
application/vnd.mseq mseq
application/vnd.musician mus
application/vnd.muvee.style msty
application/vnd.mynfc taglet
application/vnd.neurolanguage.nlu nlu
application/vnd.nitf ntf nitf
application/vnd.noblenet-directory nnd
application/vnd.noblenet-sealer nns
application/vnd.noblenet-web nnw
application/vnd.nokia.n-gage.data ngdat
application/vnd.nokia.n-gage.symbian.install n-gage
application/vnd.nokia.radio-preset rpst
application/vnd.nokia.radio-presets rpss
application/vnd.novadigm.edm edm
application/vnd.novadigm.edx edx
application/vnd.novadigm.ext ext
application/vnd.oasis.opendocument.chart odc
application/vnd.oasis.opendocument.chart-template otc
application/vnd.oasis.opendocument.database odb
application/vnd.oasis.opendocument.formula odf
application/vnd.oasis.opendocument.formula-template odft
application/vnd.oasis.opendocument.graphics odg
application/vnd.oasis.opendocument.graphics-template otg
application/vnd.oasis.opendocument.image odi
application/vnd.oasis.opendocument.image-template oti
application/vnd.oasis.opendocument.presentation odp
application/vnd.oasis.opendocument.presentation-template otp
application/vnd.oasis.opendocument.spreadsheet ods
application/vnd.oasis.opendocument.spreadsheet-template ots
application/vnd.oasis.opendocument.text odt
application/vnd.oasis.opendocument.text-master odm
application/vnd.oasis.opendocument.text-template ott
application/vnd.oasis.opendocument.text-web oth
application/vnd.olpc-sugar xo
application/vnd.oma.dd2+xml dd2
application/vnd.openofficeorg.extension oxt
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.openxmlformats-officedocument.presentationml.slide sldx
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.osgeo.mapguide.package mgp
application/vnd.osgi.dp dp
application/vnd.osgi.subsystem esa
application/vnd.palm pdb pqa oprc
application/vnd.pawaafile paw
application/vnd.pg.format str
application/vnd.pg.osasli ei6
application/vnd.picsel efif
application/vnd.pmi.widget wg
application/vnd.pocketlearn plf
application/vnd.powerbuilder6 pbd
application/vnd.previewsystems.box box
application/vnd.proteus.magazine mgz
application/vnd.publishare-delta-tree qps
application/vnd.pvi.ptid1 ptid
application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb
application/vnd.realvnc.bed bed
application/vnd.recordare.musicxml mxl
application/vnd.recordare.musicxml+xml musicxml
application/vnd.rig.cryptonote cryptonote
application/vnd.rim.cod cod
application/vnd.rn-realmedia rm
application/vnd.rn-realmedia-vbr rmvb
application/vnd.route66.link66+xml link66
application/vnd.sailingtracker.track st
application/vnd.seemail see
application/vnd.sema sema
application/vnd.semd semd
application/vnd.semf semf
application/vnd.shana.informed.formdata ifm
application/vnd.shana.informed.formtemplate itp
application/vnd.shana.informed.interchange iif
application/vnd.shana.informed.package ipk
application/vnd.simtech-mindmapper twd twds
application/vnd.smaf mmf
application/vnd.smart.teacher teacher
application/vnd.solent.sdkm+xml sdkm sdkd
application/vnd.spotfire.dxp dxp
application/vnd.spotfire.sfs sfs
application/vnd.stardivision.calc sdc
application/vnd.stardivision.draw sda
application/vnd.stardivision.impress sdd
application/vnd.stardivision.math smf
application/vnd.stardivision.writer sdw vor
application/vnd.stardivision.writer-global sgl
application/vnd.stepmania.package smzip
application/vnd.stepmania.stepchart sm
application/vnd.sun.xml.calc sxc
application/vnd.sun.xml.calc.template stc
application/vnd.sun.xml.draw sxd
application/vnd.sun.xml.draw.template std
application/vnd.sun.xml.impress sxi
application/vnd.sun.xml.impress.template sti
application/vnd.sun.xml.math sxm
application/vnd.sun.xml.writer sxw
application/vnd.sun.xml.writer.global sxg
application/vnd.sun.xml.writer.template stw
application/vnd.sus-calendar sus susp
application/vnd.svd svd
application/vnd.symbian.install sis sisx
application/vnd.syncml+xml xsm
application/vnd.syncml.dm+wbxml bdm
application/vnd.syncml.dm+xml xdm
application/vnd.tao.intent-module-archive tao
application/vnd.tcpdump.pcap pcap cap dmp
application/vnd.tmobile-livetv tmo
application/vnd.trid.tpt tpt
application/vnd.triscape.mxs mxs
application/vnd.trueapp tra
application/vnd.ufdl ufd ufdl
application/vnd.uiq.theme utz
application/vnd.umajin umj
application/vnd.unity unityweb
application/vnd.uoml+xml uoml
application/vnd.vcx vcx
application/vnd.visio vsd vst vss vsw
application/vnd.visionary vis
application/vnd.vsf vsf
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
application/vnd.webturbo wtb
application/vnd.wolfram.player nbp
application/vnd.wordperfect wpd
application/vnd.wqd wqd
application/vnd.wt.stf stf
application/vnd.xara xar
application/vnd.xfdl xfdl
application/vnd.yamaha.hv-dic hvd
application/vnd.yamaha.hv-script hvs
application/vnd.yamaha.hv-voice hvp
application/vnd.yamaha.openscoreformat osf
application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg
application/vnd.yamaha.smaf-audio saf
application/vnd.yamaha.smaf-phrase spf
application/vnd.yellowriver-custom-menu cmp
application/vnd.zul zir zirz
application/vnd.zzazz.deck+xml zaz
application/voicexml+xml vxml
application/widget wgt
application/winhlp hlp
application/wsdl+xml wsdl
application/wspolicy+xml wspolicy
application/x-7z-compressed 7z
application/x-abiword abw
application/x-ace-compressed ace
application/x-apple-diskimage dmg
application/x-authorware-bin aab x32 u32 vox
application/x-authorware-map aam
application/x-authorware-seg aas
application/x-bcpio bcpio
application/x-bittorrent torrent
application/x-blorb blb blorb
application/x-bzip bz
application/x-bzip2 bz2 boz
application/x-cbr cbr cba cbt cbz cb7
application/x-cdlink vcd
application/x-cfs-compressed cfs
application/x-chat chat
application/x-chess-pgn pgn
application/x-conference nsc
application/x-cpio cpio
application/x-csh csh
application/x-debian-package deb udeb
application/x-dgc-compressed dgc
application/x-director dir dcr dxr cst cct cxt w3d fgd swa
application/x-doom wad
application/x-dtbncx+xml ncx
application/x-dtbook+xml dtb
application/x-dtbresource+xml res
application/x-dvi dvi
application/x-envoy evy
application/x-eva eva
application/x-font-bdf bdf
application/x-font-ghostscript gsf
application/x-font-linux-psf psf
application/x-font-pcf pcf
application/x-font-snf snf
application/x-font-type1 pfa pfb pfm afm
application/x-freearc arc
application/x-futuresplash spl
application/x-gca-compressed gca
application/x-glulx ulx
application/x-gnumeric gnumeric
application/x-gramps-xml gramps
application/x-gtar gtar
application/x-hdf hdf
application/x-install-instructions install
application/x-iso9660-image iso
application/x-java-jnlp-file jnlp
application/x-latex latex
application/x-lzh-compressed lzh lha
application/x-mie mie
application/x-mobipocket-ebook prc mobi
application/x-ms-application application
application/x-ms-shortcut lnk
application/x-ms-wmd wmd
application/x-ms-wmz wmz
application/x-ms-xbap xbap
application/x-msaccess mdb
application/x-msbinder obd
application/x-mscardfile crd
application/x-msclip clp
application/x-msdownload exe dll com bat msi
application/x-msmediaview mvb m13 m14
application/x-msmetafile wmf wmz emf emz
application/x-msmoney mny
application/x-mspublisher pub
application/x-msschedule scd
application/x-msterminal trm
application/x-mswrite wri
application/x-netcdf nc cdf
application/x-nzb nzb
application/x-pkcs12 p12 pfx
application/x-pkcs7-certificates p7b spc
application/x-pkcs7-certreqresp p7r
application/x-rar-compressed rar
application/x-research-info-systems ris
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-silverlight-app xap
application/x-sql sql
application/x-stuffit sit
application/x-stuffitx sitx
application/x-subrip srt
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-t3vm-image t3
application/x-tads gam
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-tex-tfm tfm
application/x-texinfo texinfo texi
application/x-tgif obj
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert der crt
application/x-xfig fig
application/x-xliff+xml xlf
application/x-xpinstall xpi
application/x-xz xz
application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8
application/xaml+xml xaml
application/xcap-diff+xml xdf
application/xenc+xml xenc
application/xhtml+xml xhtml xht
application/xml xml xsl
application/xml-dtd dtd
application/xop+xml xop
application/xproc+xml xpl
application/xslt+xml xslt
application/xspf+xml xspf
application/xv+xml mxml xhvml xvml xvm
application/yang yang
application/yin+xml yin
application/zip zip
audio/adpcm adp
audio/basic au snd
audio/midi mid midi kar rmi
audio/mp4 m4a mp4a
audio/mpeg mpga mp2 mp2a mp3 m2a m3a
audio/ogg oga ogg spx
audio/s3m s3m
audio/silk sil
audio/vnd.dece.audio uva uvva
audio/vnd.digital-winds eol
audio/vnd.dra dra
audio/vnd.dts dts
audio/vnd.dts.hd dtshd
audio/vnd.lucent.voice lvp
audio/vnd.ms-playready.media.pya pya
audio/vnd.nuera.ecelp4800 ecelp4800
audio/vnd.nuera.ecelp7470 ecelp7470
audio/vnd.nuera.ecelp9600 ecelp9600
audio/vnd.rip rip
audio/webm weba
audio/x-aac aac
audio/x-aiff aif aiff aifc
audio/x-caf caf
audio/x-flac flac
audio/x-matroska mka
audio/x-mpegurl m3u
audio/x-ms-wax wax
audio/x-ms-wma wma
audio/x-pn-realaudio ram ra
audio/x-pn-realaudio-plugin rmp
audio/x-wav wav
audio/xm xm
chemical/x-cdx cdx
chemical/x-cif cif
chemical/x-cmdf cmdf
chemical/x-cml cml
chemical/x-csml csml
chemical/x-xyz xyz
font/collection ttc
font/otf otf
font/ttf ttf
font/woff woff
font/woff2 woff2
image/bmp bmp
image/cgm cgm
image/g3fax g3
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/ktx ktx
image/png png
image/prs.btif btif
image/sgi sgi
image/svg+xml svg svgz
image/tiff tiff tif
image/vnd.adobe.photoshop psd
image/vnd.dece.graphic uvi uvvi uvg uvvg
image/vnd.djvu djvu djv
image/vnd.dvb.subtitle sub
image/vnd.dwg dwg
image/vnd.dxf dxf
image/vnd.fastbidsheet fbs
image/vnd.fpx fpx
image/vnd.fst fst
image/vnd.fujixerox.edmics-mmr mmr
image/vnd.fujixerox.edmics-rlc rlc
image/vnd.ms-modi mdi
image/vnd.ms-photo wdp
image/vnd.net-fpx npx
image/vnd.wap.wbmp wbmp
image/vnd.xiff xif
image/webp webp
image/x-3ds 3ds
image/x-cmu-raster ras
image/x-cmx cmx
image/x-freehand fh fhc fh4 fh5 fh7
image/x-icon ico
image/x-mrsid-image sid
image/x-pcx pcx
image/x-pict pic pct
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-tga tga
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/rfc822 eml mime
model/iges igs iges
model/mesh msh mesh silo
model/vnd.collada+xml dae
model/vnd.dwf dwf
model/vnd.gdl gdl
model/vnd.gtw gtw
model/vnd.mts mts
model/vnd.vtu vtu
model/vrml wrl vrml
model/x3d+binary x3db x3dbz
model/x3d+vrml x3dv x3dvz
model/x3d+xml x3d x3dz
text/cache-manifest appcache
text/calendar ics ifb
text/css css
text/csv csv
text/html html htm
text/n3 n3
text/plain txt text conf def list log in
text/prs.lines.tag dsc
text/richtext rtx
text/sgml sgml sgm
text/tab-separated-values tsv
text/troff t tr roff man me ms
text/turtle ttl
text/uri-list uri uris urls
text/vcard vcard
text/vnd.curl curl
text/vnd.curl.dcurl dcurl
text/vnd.curl.mcurl mcurl
text/vnd.curl.scurl scurl
text/vnd.dvb.subtitle sub
text/vnd.fly fly
text/vnd.fmi.flexstor flx
text/vnd.graphviz gv
text/vnd.in3d.3dml 3dml
text/vnd.in3d.spot spot
text/vnd.sun.j2me.app-descriptor jad
text/vnd.wap.wml wml
text/vnd.wap.wmlscript wmls
text/x-asm s asm
text/x-c c cc cxx cpp h hh dic
text/x-fortran f for f77 f90
text/x-java-source java
text/x-nfo nfo
text/x-opml opml
text/x-pascal p pas
text/x-setext etx
text/x-sfv sfv
text/x-uuencode uu
text/x-vcalendar vcs
text/x-vcard vcf
video/3gpp 3gp
video/3gpp2 3g2
video/h261 h261
video/h263 h263
video/h264 h264
video/jpeg jpgv
video/jpm jpm jpgm
video/mj2 mj2 mjp2
video/mp4 mp4 mp4v mpg4
video/mpeg mpeg mpg mpe m1v m2v
video/ogg ogv
video/quicktime qt mov
video/vnd.dece.hd uvh uvvh
video/vnd.dece.mobile uvm uvvm
video/vnd.dece.pd uvp uvvp
video/vnd.dece.sd uvs uvvs
video/vnd.dece.video uvv uvvv
video/vnd.dvb.file dvb
video/vnd.fvt fvt
video/vnd.mpegurl mxu m4u
video/vnd.ms-playready.media.pyv pyv
video/vnd.uvvu.mp4 uvu uvvu
video/vnd.vivo viv
video/webm webm
video/x-f4v f4v
video/x-fli fli
video/x-flv flv
video/x-m4v m4v
video/x-matroska mkv mk3d mks
video/x-mng mng
video/x-ms-asf asf asx
video/x-ms-vob vob
video/x-ms-wm wm
video/x-ms-wmv wmv
video/x-ms-wmx wmx
video/x-ms-wvx wvx
video/x-msvideo avi
video/x-sgi-movie movie
video/x-smv smv
x-conference/x-cooltalk ice
                                                                                                                                                                                                                                 includes/File_manager/lib/php/elFinderVolumeDropbox.class.php                                       0000644                 00000121466 15266052676 0020404 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

elFinder::$netDrivers['dropbox'] = 'Dropbox';

/**
 * Simple elFinder driver for FTP
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeDropbox extends elFinderVolumeDriver {

	/**
	 * Driver id
	 * Must be started from letter and contains [a-z0-9]
	 * Used as part of volume id
	 *
	 * @var string
	 **/
	protected $driverId = 'd';

	/**
	 * OAuth object
	 *
	 * @var oauth
	 **/
	protected $oauth = null;

	/**
	 * Dropbox object
	 *
	 * @var dropbox
	 **/
	protected $dropbox = null;

	/**
	 * Directory for meta data caches
	 * If not set driver not cache meta data
	 *
	 * @var string
	 **/
	protected $metaCache = '';

	/**
	 * Last API error message
	 *
	 * @var string
	 **/
	protected $apiError = '';

	/**
	 * Directory for tmp files
	 * If not set driver will try to use tmbDir as tmpDir
	 *
	 * @var string
	 **/
	protected $tmp = '';
	
	/**
	 * Dropbox.com uid
	 *
	 * @var string
	 **/
	protected $dropboxUid = '';
	
	/**
	 * Dropbox download host, replaces 'www.dropbox.com' of shares URL
	 * 
	 * @var string
	 */
	private $dropbox_dlhost = 'dl.dropboxusercontent.com';
	
	private $dropbox_phpFound = false;
	
	private $DB_TableName = '';
	
	private $tmbPrefix = '';

	/**
	 * Constructor
	 * Extend options with required fields
	 *
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 */
	public function __construct() {

		// check with composer
		$this->dropbox_phpFound = class_exists('Dropbox_API');
		
		if (! $this->dropbox_phpFound) {
			// check with pear
			if (include_once 'Dropbox/autoload.php') {
				$this->dropbox_phpFound = in_array('Dropbox_autoload', spl_autoload_functions());
			}
		}
		
		$opts = array(
			'consumerKey'       => '',
			'consumerSecret'    => '',
			'accessToken'       => '',
			'accessTokenSecret' => '',
			'dropboxUid'        => '',
			'root'              => 'dropbox',
			'path'              => '/',
			'separator'         => '/',
			'PDO_DSN'           => '', // if empty use 'sqlite:(metaCachePath|tmbPath)/elFinder_dropbox_db_(hash:dropboxUid+consumerSecret)'
			'PDO_User'          => '',
			'PDO_Pass'          => '',
			'PDO_Options'       => array(),
			'PDO_DBName'        => 'dropbox',
			'treeDeep'          => 0,
			'tmbPath'           => '',
			'tmbURL'            => '',
			'tmpPath'           => '',
			'getTmbSize'        => 'large', // small: 32x32, medium or s: 64x64, large or m: 128x128, l: 640x480, xl: 1024x768
			'metaCachePath'     => '',
			'metaCacheTime'     => '600', // 10m
			'acceptedName'      => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
			'rootCssClass'      => 'elfinder-navbar-root-dropbox'
		);
		$this->options = array_merge($this->options, $opts);
		$this->options['mimeDetect'] = 'internal';
	}

	/**
	 * Prepare
	 * Call from elFinder::netmout() before volume->mount()
	 *
	 * @param $options
	 * @return Array
	 * @author Naoki Sawada
	 */
	public function netmountPrepare($options) {
		if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY;
		if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET;
		
		if ($options['user'] === 'init') {

			if (! $this->dropbox_phpFound || empty($options['consumerKey']) || empty($options['consumerSecret']) || !class_exists('PDO', false)) {
				return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
			}
			
			if (defined('ELFINDER_DROPBOX_USE_CURL_PUT')) {
				$this->oauth = new Dropbox_OAuth_Curl($options['consumerKey'], $options['consumerSecret']);
			} else {
				if (class_exists('OAuth', false)) {
					$this->oauth = new Dropbox_OAuth_PHP($options['consumerKey'], $options['consumerSecret']);
				} else {
					if (! class_exists('HTTP_OAuth_Consumer')) {
						// We're going to try to load in manually
						include 'HTTP/OAuth/Consumer.php';
					}
					if (class_exists('HTTP_OAuth_Consumer', false)) {
						$this->oauth = new Dropbox_OAuth_PEAR($options['consumerKey'], $options['consumerSecret']);
					}
				}
			}
			
			if (! $this->oauth) {
				return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
			}

			if ($options['pass'] === 'init') {
				$html = '';
				if ($sessionToken = $this->session->get('DropboxTokens')) {
					// token check
					try {
						list(, $accessToken, $accessTokenSecret) = $sessionToken;
						$this->oauth->setToken($accessToken, $accessTokenSecret);
						$this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
						$this->dropbox->getAccountInfo();
						$script = '<script>
							$("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "done"});
						</script>';
						$html = $script;
					} catch (Dropbox_Exception $e) {
						$this->session->remove('DropboxTokens');
					}
				}
				if (! $html) {
					// get customdata
					$cdata = '';
					$innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user');
					$this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST'? $_POST : $_GET;
					foreach($this->ARGS as $k => $v) {
						if (! in_array($k, $innerKeys)) {
							$cdata .= '&' . $k . '=' . rawurlencode($v);
						}
					}
					if (strpos($options['url'], 'http') !== 0 ) {
						$options['url'] = elFinder::getConnectorUrl();
					}
					$callback  = $options['url']
					           . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return&node='.$options['id'].$cdata;
					
					try {
						$tokens = $this->oauth->getRequestToken();
						$url= $this->oauth->getAuthorizeUrl(rawurlencode($callback));
					} catch (Dropbox_Exception $e) {
						return array('exit' => true, 'body' => '{msg:errAccess}');
					}
					
					$this->session->set('DropboxAuthTokens', $tokens);
					$html = '<input id="elf-volumedriver-dropbox-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\''.$url.'\')">';
					$html .= '<script>
						$("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "makebtn"});
					</script>';
				}
				return array('exit' => true, 'body' => $html);
			} else {
				$this->oauth->setToken($this->session->get('DropboxAuthTokens'));
				$this->session->remove('DropboxAuthTokens');
				$tokens = $this->oauth->getAccessToken();
				$this->session->set('DropboxTokens', array($_GET['uid'], $tokens['token'], $tokens['token_secret']));
				
				$out = array(
					'node' => $_GET['node'],
					'json' => '{"protocol": "dropbox", "mode": "done"}',
					'bind' => 'netmount'
				);
				
				return array('exit' => 'callback', 'out' => $out);
			}
		}
		if ($sessionToken = $this->session->get('DropboxTokens')) {
			list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $sessionToken;
		}
		unset($options['user'], $options['pass']);
		return $options;
	}

	/**
	 * process of on netunmount
	 * Drop table `dropbox` & rm thumbs
	 *
	 * @param $netVolumes
	 * @param $key
	 * @return bool
	 * @internal param array $options
	 */
	public function netunmount($netVolumes, $key) {
		$count = 0;
		$dropboxUid = '';
		if (isset($netVolumes[$key])) {
			$dropboxUid = $netVolumes[$key]['dropboxUid'];
		}
		foreach($netVolumes as $volume) {
			if ($volume['host'] === 'dropbox' && $volume['dropboxUid'] === $dropboxUid) {
				$count++;
			}
		}
		if ($count === 1) {
			$this->DB->exec('drop table '.$this->DB_TableName);
			foreach(glob(rtrim($this->options['tmbPath'], '\\/').DIRECTORY_SEPARATOR.$this->tmbPrefix.'*.png') as $tmb) {
				unlink($tmb);
			}
		}
		return true;
	}
	
	/*********************************************************************/
	/*                        INIT AND CONFIGURE                         */
	/*********************************************************************/

	/**
	 * Prepare FTP connection
	 * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn
	 *
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 **/
	protected function init() {
		if (!class_exists('PDO', false)) {
			return $this->setError('PHP PDO class is require.');
		}
		
		if (!$this->options['consumerKey']
		||  !$this->options['consumerSecret']
		||  !$this->options['accessToken']
		||  !$this->options['accessTokenSecret']) {
			return $this->setError('Required options undefined.');
		}
		
		if (empty($this->options['metaCachePath']) && defined('ELFINDER_DROPBOX_META_CACHE_PATH')) {
			$this->options['metaCachePath'] = ELFINDER_DROPBOX_META_CACHE_PATH;
		}
		
		// make net mount key
		$this->netMountKey = md5(join('-', array('dropbox', $this->options['path'])));

		if (! $this->oauth) {
			if (defined('ELFINDER_DROPBOX_USE_CURL_PUT')) {
				$this->oauth = new Dropbox_OAuth_Curl($this->options['consumerKey'], $this->options['consumerSecret']);
			} else {
				if (class_exists('OAuth', false)) {
					$this->oauth = new Dropbox_OAuth_PHP($this->options['consumerKey'], $this->options['consumerSecret']);
				} else {
					if (! class_exists('HTTP_OAuth_Consumer')) {
						// We're going to try to load in manually
						include 'HTTP/OAuth/Consumer.php';
					}
					if (class_exists('HTTP_OAuth_Consumer', false)) {
						$this->oauth = new Dropbox_OAuth_PEAR($this->options['consumerKey'], $this->options['consumerSecret']);
					}
				}
			}
		}
		
		if (! $this->oauth) {
			return $this->setError('OAuth extension not loaded.');
		}

		// normalize root path
		$this->root = $this->options['path'] = $this->_normpath($this->options['path']);

		if (empty($this->options['alias'])) {
			$this->options['alias'] = ($this->options['path'] === '/')? 'Dropbox.com'  : 'Dropbox'.$this->options['path'];
		}

		$this->rootName = $this->options['alias'];

		try {
			$this->oauth->setToken($this->options['accessToken'], $this->options['accessTokenSecret']);
			$this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
		} catch (Dropbox_Exception $e) {
			$this->session->remove('DropboxTokens');
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		
		// user
		if (empty($this->options['dropboxUid'])) {
			try {
				$res = $this->dropbox->getAccountInfo();
				$this->options['dropboxUid'] = $res['uid'];
			} catch (Dropbox_Exception $e) {
				$this->session->remove('DropboxTokens');
				return $this->setError('Dropbox error: '.$e->getMessage());
			}
		}
		
		$this->dropboxUid = $this->options['dropboxUid'];
		$this->tmbPrefix = 'dropbox'.base_convert($this->dropboxUid, 10, 32);

		if (!empty($this->options['tmpPath'])) {
			if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
				$this->tmp = $this->options['tmpPath'];
			}
		}
		if (!$this->tmp && is_writable($this->options['tmbPath'])) {
			$this->tmp = $this->options['tmbPath'];
		}
		if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
			$this->tmp = $tmp;
		}
		
		if (!empty($this->options['metaCachePath'])) {
			if ((is_dir($this->options['metaCachePath']) || mkdir($this->options['metaCachePath'])) && is_writable($this->options['metaCachePath'])) {
				$this->metaCache = $this->options['metaCachePath'];
			}
		}
		if (!$this->metaCache && $this->tmp) {
			$this->metaCache = $this->tmp;
		}
		
		if (!$this->metaCache) {
			return $this->setError('Cache dirctory (metaCachePath or tmp) is require.');
		}
		
		// setup PDO
		if (! $this->options['PDO_DSN']) {
			$this->options['PDO_DSN'] = 'sqlite:'.$this->metaCache.DIRECTORY_SEPARATOR.'.elFinder_dropbox_db_'.md5($this->dropboxUid.$this->options['consumerSecret']);
		}
		// DataBase table name
		$this->DB_TableName = $this->options['PDO_DBName'];
		// DataBase check or make table
		try {
			$this->DB = new PDO($this->options['PDO_DSN'], $this->options['PDO_User'], $this->options['PDO_Pass'], $this->options['PDO_Options']);
			if (! $this->checkDB()) {
				return $this->setError('Can not make DB table');
			}
		} catch (PDOException $e) {
			return $this->setError('PDO connection failed: '.$e->getMessage());
		}
		
		$res = $this->deltaCheck($this->isMyReload());
		if ($res !== true) {
			if (is_string($res)) {
				return $this->setError($res);
			} else {
				return $this->setError('Could not check API "delta"');
			}
		}
		
		if (is_null($this->options['syncChkAsTs'])) {
			$this->options['syncChkAsTs'] = true;
		}
		if ($this->options['syncChkAsTs']) {
			// 'tsPlSleep' minmum 5 sec
			$this->options['tsPlSleep'] = max(5, $this->options['tsPlSleep']);
		} else {
			// 'lsPlSleep' minmum 10 sec
			$this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);
		}
		
		return true;
	}


	/**
	 * Configure after successful mount.
	 *
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function configure() {
		parent::configure();
		
		$this->disabled[] = 'archive';
		$this->disabled[] = 'extract';
	}
	
	/**
	 * Check DB for delta cache
	 * 
	 * @return bool
	 */
	private function checkDB() {
		$res = $this->query('SELECT * FROM sqlite_master WHERE type=\'table\' AND name=\''.$this->DB_TableName.'\'');
		if ($res && isset($_REQUEST['init'])) {
			// check is index(nameidx) UNIQUE?
			$chk = $this->query('SELECT sql FROM sqlite_master WHERE type=\'index\' and name=\'nameidx\'');
			if (!$chk || strpos(strtoupper($chk[0]), 'UNIQUE') === false) {
				// remake
				$this->DB->exec('DROP TABLE '.$this->DB_TableName);
				$res = false;
			}
		}
		if (! $res) {
			try {
				$this->DB->exec('CREATE TABLE '.$this->DB_TableName.'(path text, fname text, dat blob, isdir integer);');
				$this->DB->exec('CREATE UNIQUE INDEX nameidx ON '.$this->DB_TableName.'(path, fname)');
				$this->DB->exec('CREATE INDEX isdiridx ON '.$this->DB_TableName.'(isdir)');
			} catch (PDOException $e) {
				return $this->setError($e->getMessage());
			}
		}
		return true;
	}
	
	/**
	 * DB query and fetchAll
	 * 
	 * @param string $sql
	 * @return boolean|array
	 */
	private function query($sql) {
		if ($sth = $this->DB->query($sql)) {
			$res = $sth->fetchAll(PDO::FETCH_COLUMN);
		} else {
			$res = false;
		}
		return $res;
	}
	
	/**
	 * Get dat(dropbox metadata) from DB
	 * 
	 * @param string $path
	 * @return array dropbox metadata
	 */
	private function getDBdat($path) {
		if ($res = $this->query('select dat from '.$this->DB_TableName.' where path='.$this->DB->quote(strtolower($this->_dirname($path))).' and fname='.$this->DB->quote(strtolower($this->_basename($path))).' limit 1')) {
			return unserialize($res[0]);
		} else {
			return array();
		}
	}
	
	/**
	 * Update DB dat(dropbox metadata)
	 * 
	 * @param string $path
	 * @param array $dat
	 * @return bool|array
	 */
	private function updateDBdat($path, $dat) {
		return $this->query('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($dat))
				. ', isdir=' . ($dat['is_dir']? 1 : 0)
				. ' where path='.$this->DB->quote(strtolower($this->_dirname($path))).' and fname='.$this->DB->quote(strtolower($this->_basename($path))));
	}
	/*********************************************************************/
	/*                               FS API                              */
	/*********************************************************************/

	/**
	 * Close opened connection
	 *
	 * @return void
	 * @author Dmitry (dio) Levashov
	 **/
	public function umount() {

	}
	
	/**
	 * Get delta data and DB update
	 * 
	 * @param boolean $refresh force refresh
	 * @return true|string error message
	 */
	protected function deltaCheck($refresh = true) {
		$chk = false;
		if (! $refresh && $chk = $this->query('select dat from '.$this->DB_TableName.' where path=\'\' and fname=\'\' limit 1')) {
			$chk = unserialize($chk[0]);
		}
		if ($chk && ($chk['mtime'] + $this->options['metaCacheTime']) > $_SERVER['REQUEST_TIME']) {
			return true;
		}
		
		try {
			$more = true;
			$this->DB->beginTransaction();
			
			if ($res = $this->query('select dat from '.$this->DB_TableName.' where path=\'\' and fname=\'\' limit 1')) {
				$res = unserialize($res[0]);
				$cursor = $res['cursor'];
			} else {
				$cursor = '';
			}
			$delete = false;
			$reset = false;
			$ptimes = array();
			$now = time();
			do {
				 ini_set('max_execution_time', 120);
				$_info = $this->dropbox->delta($cursor);
				if (! empty($_info['reset'])) {
					$this->DB->exec('TRUNCATE table '.$this->DB_TableName);
					$this->DB->exec('insert into '.$this->DB_TableName.' values(\'\', \'\', \''.serialize(array('cursor' => '', 'mtime' => 0)).'\', 0);');
					$this->DB->exec('insert into '.$this->DB_TableName.' values(\'/\', \'\', \''.serialize(array(
						'path'      => '/',
						'is_dir'    => 1,
						'mime_type' => '',
						'bytes'     => 0
					)).'\', 0);');
					$reset = true;
				}
				$cursor = $_info['cursor'];
				
				foreach($_info['entries'] as $entry) {
					$key = strtolower($entry[0]);
					$pkey = strtolower($this->_dirname($key));
					
					$path = $this->DB->quote($pkey);
					$fname = $this->DB->quote(strtolower($this->_basename($key)));
					$where = 'where path='.$path.' and fname='.$fname;
					
					if (empty($entry[1])) {
						$ptimes[$pkey] = isset($ptimes[$pkey])? max(array($now, $ptimes[$pkey])) : $now;
						$this->DB->exec('delete from '.$this->DB_TableName.' '.$where);
						! $delete && $delete = true;
						continue;
					}

					$_itemTime = strtotime(isset($entry[1]['client_mtime'])? $entry[1]['client_mtime'] : $entry[1]['modified']);
					$ptimes[$pkey] = isset($ptimes[$pkey])? max(array($_itemTime, $ptimes[$pkey])) : $_itemTime;
					$sql = 'select path from '.$this->DB_TableName.' '.$where.' limit 1';
					if (! $reset && $this->query($sql)) {
						$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($entry[1])).', isdir='.($entry[1]['is_dir']? 1 : 0).' ' .$where);
					} else {
						$this->DB->exec('insert into '.$this->DB_TableName.' values ('.$path.', '.$fname.', '.$this->DB->quote(serialize($entry[1])).', '.(int)$entry[1]['is_dir'].')');
					}
				}
			} while (! empty($_info['has_more']));
			
			// update time stamp of parent holder
			foreach ($ptimes as $_p => $_t) {
				if ($praw = $this->getDBdat($_p)) {
					$_update = false;
					if (isset($praw['client_mtime']) && $_t > strtotime($praw['client_mtime'])) {
						$praw['client_mtime'] = date('r', $_t);
						$_update = true;
					}
					if (isset($praw['modified']) && $_t > strtotime($praw['modified'])) {
						$praw['modified'] = date('r', $_t);
						$_update = true;
					}
					if ($_update) {
						$pwhere = 'where path='.$this->DB->quote(strtolower($this->_dirname($_p))).' and fname='.$this->DB->quote(strtolower($this->_basename($_p)));
						$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($praw)).' '.$pwhere);
					}
				}
			}
			
			$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize(array('cursor'=>$cursor, 'mtime'=>$_SERVER['REQUEST_TIME']))).' where path=\'\' and fname=\'\'');
			if (! $this->DB->commit()) {
				$e = $this->DB->errorInfo();
				return $e[2];
			}
			if ($delete) {
				$this->DB->exec('vacuum');
			}
		} catch(Dropbox_Exception $e) {
			return $e->getMessage();
		}
		return true;
	}
	
	/**
	 * Parse line from dropbox metadata output and return file stat (array)
	 *
	 * @param  string  $raw  line from ftp_rawlist() output
	 * @return array
	 * @author Dmitry Levashov
	 **/
	protected function parseRaw($raw) {
		$stat = array();

		$stat['rev']   = isset($raw['rev'])? $raw['rev'] : 'root';
		$stat['name']  = $this->_basename($raw['path']);
		$stat['mime']  = $raw['is_dir']? 'directory' : $raw['mime_type'];
		$stat['size']  = $stat['mime'] == 'directory' ? 0 : $raw['bytes'];
		$stat['ts']    = isset($raw['client_mtime'])? strtotime($raw['client_mtime']) :
		                (isset($raw['modified'])? strtotime($raw['modified']) : $_SERVER['REQUEST_TIME']);
		$stat['dirs'] = 0;
		if ($raw['is_dir']) {
			$stat['dirs'] = (int)(bool)$this->query('select path from '.$this->DB_TableName.' where isdir=1 and path='.$this->DB->quote(strtolower($raw['path'])));
		}
		
		if (!empty($raw['url'])) {
			$stat['url'] = $raw['url'];
		} else if (! $this->disabledGetUrl) {
			$stat['url'] = '1';
		}
		if (isset($raw['width'])) $stat['width'] = $raw['width'];
		if (isset($raw['height'])) $stat['height'] = $raw['height'];
		
		return $stat;
	}

	/**
	 * Cache dir contents
	 *
	 * @param  string  $path  dir path
	 * @return string
	 * @author Dmitry Levashov
	 **/
	protected function cacheDir($path) {
		$this->dirsCache[$path] = array();
		$hasDir = false;
		
		$res = $this->query('select dat from '.$this->DB_TableName.' where path='.$this->DB->quote(strtolower($path)));
		
		if ($res) {
			foreach($res as $raw) {
				$raw = unserialize($raw);
				if ($stat = $this->parseRaw($raw)) {
					$stat = $this->updateCache($raw['path'], $stat);
					if (empty($stat['hidden']) && $path !== $raw['path']) {
						if (! $hasDir && $stat['mime'] === 'directory') {
							$hasDir = true;
						}
						$this->dirsCache[$path][] = $raw['path'];
					}
				}
			}
		}
		
		if (isset($this->sessionCache['subdirs'])) {
			$this->sessionCache['subdirs'][$path] = $hasDir;
		}
		
		return $this->dirsCache[$path];
	}

	/**
	* Recursive files search
	*
	* @param  string  $path   dir path
	* @param  string  $q      search string
	* @param  array   $mimes
	* @return array
	* @author Naoki Sawada
	**/
	protected function doSearch($path, $q, $mimes) {
		$result = array();
		$sth = $this->DB->prepare('select dat from '.$this->DB_TableName.' WHERE path LIKE ? AND fname LIKE ?');
		$sth->execute(array((($path === '/')? '' : strtolower($path)).'%', '%'.strtolower($q).'%'));
		$res = $sth->fetchAll(PDO::FETCH_COLUMN);
		$timeout = $this->options['searchTimeout']? $this->searchStart + $this->options['searchTimeout'] : 0;
		
		if ($res) {
			foreach($res as $raw) {
				if ($timeout && $timeout < time()) {
					$this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
					break;
				}
				
				$raw = unserialize($raw);
				if ($stat = $this->parseRaw($raw)) {
					if (!isset($this->cache[$raw['path']])) {
						$stat = $this->updateCache($raw['path'], $stat);
					}
					if (!empty($stat['hidden']) || ($mimes && $stat['mime'] === 'directory') || !$this->mimeAccepted($stat['mime'], $mimes)) {
						continue;
					}
					$stat = $this->stat($raw['path']);
					$stat['path'] = $this->path($stat['hash']);
					$result[] = $stat;
				}
			}
		}
		return $result;
	}
	
	/**
	* Copy file/recursive copy dir only in current volume.
	* Return new file path or false.
	*
	* @param  string  $src   source path
	* @param  string  $dst   destination dir path
	* @param  string  $name  new file name (optionaly)
	* @return string|false
	* @author Dmitry (dio) Levashov
	* @author Naoki Sawada
	**/
	protected function copy($src, $dst, $name) {

		$this->clearcache();

		return $this->_copy($src, $dst, $name)
		? $this->_joinPath($dst, $name)
		: $this->setError(elFinder::ERROR_COPY, $this->_path($src));
	}

	/**
	 * Remove file/ recursive remove dir
	 *
	 * @param  string $path file path
	 * @param  bool $force try to remove even if file locked
	 * @param bool $recursive
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 * @author Naoki Sawada
	 */
	protected function remove($path, $force = false, $recursive = false) {
		$stat = $this->stat($path);
		$stat['realpath'] = $path;
		$this->rmTmb($stat);
		$this->clearcache();
	
		if (empty($stat)) {
			return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
		}
	
		if (!$force && !empty($stat['locked'])) {
			return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
		}
	
		if ($stat['mime'] == 'directory') {
			if (!$recursive && !$this->_rmdir($path)) {
				return $this->setError(elFinder::ERROR_RM, $this->_path($path));
			}
		} else {
			if (!$recursive && !$this->_unlink($path)) {
				return $this->setError(elFinder::ERROR_RM, $this->_path($path));
			}
		}
	
		$this->removed[] = $stat;
		return true;
	}

	/**
	 * Create thumnbnail and return it's URL on success
	 *
	 * @param  string $path file path
	 * @param $stat
	 * @return false|string
	 * @internal param string $mime file mime type
	 * @author Dmitry (dio) Levashov
	 * @author Naoki Sawada
	 */
	protected function createTmb($path, $stat) {
		if (!$stat || !$this->canCreateTmb($path, $stat)) {
			return false;
		}
	
		$name = $this->tmbname($stat);
		$tmb  = $this->tmbPath.DIRECTORY_SEPARATOR.$name;
	
		// copy image into tmbPath so some drivers does not store files on local fs
		if (! $data = $this->getThumbnail($path, $this->options['getTmbSize'])) {
			return false;
		}
		if (! file_put_contents($tmb, $data)) {
			return false;
		}
	
		$result = false;
	
		$tmbSize = $this->tmbSize;
	
		if (($s = getimagesize($tmb)) == false) {
			return false;
		}
	
		/* If image smaller or equal thumbnail size - just fitting to thumbnail square */
		if ($s[0] <= $tmbSize && $s[1]  <= $tmbSize) {
			$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
	
		} else {
	
			if ($this->options['tmbCrop']) {
	
				/* Resize and crop if image bigger than thumbnail */
				if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize) ) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
					$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
				}
	
				if (($s = getimagesize($tmb)) != false) {
					$x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize)/2) : 0;
					$y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize)/2) : 0;
					$result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
				}
	
			} else {
				$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
			}
		
			$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
		}
		
		if (!$result) {
			unlink($tmb);
			return false;
		}
	
		return $name;
	}
	
	/**
	 * Return thumbnail file name for required file
	 *
	 * @param  array  $stat  file stat
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function tmbname($stat) {
		return $this->tmbPrefix.$stat['rev'].'.png';
	}
	
	/**
	 * Get thumbnail from dropbox.com
	 * @param string $path
	 * @param string $size
	 * @return string | boolean
	 */
	protected function getThumbnail($path, $size = 'small') {
		try {
			return $this->dropbox->getThumbnail($path, $size);
		} catch (Dropbox_Exception $e) {
			return false;
		}
	}
	
	/**
	* Return content URL
	*
	* @param string  $hash  file hash
	* @param array $options options
	* @return array
	* @author Naoki Sawada
	**/
	public function getContentUrl($hash, $options = array()) {
		if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
			$path = $this->decode($hash);
			$cache = $this->getDBdat($path);
			$url = '';
			if (isset($cache['share']) && strpos($cache['share'], $this->dropbox_dlhost) !== false) {
				$res = $this->getHttpResponseHeader($cache['share']);
				if (preg_match("/^HTTP\/[01\.]+ ([0-9]{3})/", $res, $match)) {
					if ($match[1] < 400) {
						$url = $cache['share'];
					}
				}
			}
			if (! $url) {
				try {
					$res = $this->dropbox->share($path, null, false);
					$url = $res['url'];
					if (strpos($url, 'www.dropbox.com') === false) {
						$res = $this->getHttpResponseHeader($url);
						if (preg_match('/^location:\s*(http[^\s]+)/im', $res, $match)) {
							$url = $match[1];
						}
					}
					list($url) = explode('?', $url);
					$url = str_replace('www.dropbox.com', $this->dropbox_dlhost, $url);
					if (! isset($cache['share']) || $cache['share'] !== $url) {
						$cache['share'] = $url;
						$this->updateDBdat($path, $cache);
					}
				} catch (Dropbox_Exception $e) {
					return false;
				}
			}
			return $url;
		}
		return $file['url'];
	}
	
	/**
	 * Get HTTP request response header string
	 * 
	 * @param string $url target URL
	 * @return string
	 * @author Naoki Sawada
	 */
	private function getHttpResponseHeader($url) {
		if (function_exists('curl_exec')) {

			$c = curl_init();
			curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
			curl_setopt( $c, CURLOPT_CUSTOMREQUEST, 'HEAD' );
			curl_setopt( $c, CURLOPT_HEADER, 1 );
			curl_setopt( $c, CURLOPT_NOBODY, true );
			curl_setopt( $c, CURLOPT_URL, $url );
			$res = curl_exec( $c );
			
		} else {
			
			require_once 'HTTP/Request2.php';
			try {
				$request2 = new HTTP_Request2();
				$request2->setConfig(array(
	                'ssl_verify_peer' => false,
	                'ssl_verify_host' => false
	            ));
				$request2->setUrl($url);
				$request2->setMethod(HTTP_Request2::METHOD_HEAD);
				$result = $request2->send();
				$res = array();
				$res[] = 'HTTP/'.$result->getVersion().' '.$result->getStatus().' '.$result->getReasonPhrase();
				foreach($result->getHeader() as $key => $val) {
					$res[] = $key . ': ' . $val;
				}
				$res = join("\r\n", $res);
			} catch( HTTP_Request2_Exception $e ){
				$res = '';
			} catch (Exception $e){
				$res = '';
			}
		
		}
		return $res;
	}
	
	/*********************** paths/urls *************************/

	/**
	 * Return parent directory path
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _dirname($path) {
		return $this->_normpath(substr($path, 0, strrpos($path, '/')));
	}

	/**
	 * Return file name
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _basename($path) {
		return substr($path, strrpos($path, '/') + 1);
	}

	/**
	 * Join dir name and file name and retur full path
	 *
	 * @param  string  $dir
	 * @param  string  $name
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _joinPath($dir, $name) {
		return $this->_normpath($dir.'/'.$name);
	}

	/**
	 * Return normalized path, this works the same as os.path.normpath() in Python
	 *
	 * @param  string  $path  path
	 * @return string
	 * @author Troex Nevelin
	 **/
	protected function _normpath($path) {
		$path = '/' . ltrim($path, '/');
		return $path;
	}

	/**
	 * Return file path related to root dir
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _relpath($path) {
		return $path;
	}

	/**
	 * Convert path related to root dir into real path
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _abspath($path) {
		return $path;
	}

	/**
	 * Return fake path started from root dir
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _path($path) {
		return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
	}

	/**
	 * Return true if $path is children of $parent
	 *
	 * @param  string  $path    path to check
	 * @param  string  $parent  parent path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _inpath($path, $parent) {
		return $path == $parent || strpos($path, $parent.'/') === 0;
	}

	/***************** file stat ********************/
	/**
	 * Return stat for given path.
	 * Stat contains following fields:
	 * - (int)    size    file size in b. required
	 * - (int)    ts      file modification time in unix time. required
	 * - (string) mime    mimetype. required for folders, others - optionally
	 * - (bool)   read    read permissions. required
	 * - (bool)   write   write permissions. required
	 * - (bool)   locked  is object locked. optionally
	 * - (bool)   hidden  is object hidden. optionally
	 * - (string) alias   for symlinks - link target path relative to root path. optionally
	 * - (string) target  for symlinks - link target path. optionally
	 *
	 * If file does not exists - returns empty array or false.
	 *
	 * @param  string  $path    file path
	 * @return array|false
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _stat($path) {
		//if (!empty($this->ARGS['reload']) && isset($this->ARGS['target']) && strpos($this->ARGS['target'], $this->id) === 0) {
		if ($this->isMyReload()) {
			$this->deltaCheck();
		}
		if ($raw = $this->getDBdat($path)) {
			return $this->parseRaw($raw);
		}
		return false;
	}

	/**
	 * Return true if path is dir and has at least one childs directory
	 *
	 * @param  string  $path  dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _subdirs($path) {
		return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
	}

	/**
	 * Return object width and height
	 * Ususaly used for images, but can be realize for video etc...
	 *
	 * @param  string  $path  file path
	 * @param  string  $mime  file mime type
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _dimensions($path, $mime) {
		if (strpos($mime, 'image') !== 0) return '';
		$cache = $this->getDBdat($path);
		if (isset($cache['width']) && isset($cache['height'])) {
			return $cache['width'].'x'.$cache['height'];
		}
		$ret = '';
		if ($work = $this->getWorkFile($path)) {
			if ($size = getimagesize($work)) {
				$cache['width'] = $size[0];
				$cache['height'] = $size[1];
				$this->updateDBdat($path, $cache);
				$ret = $size[0].'x'.$size[1];
			}
		}
		is_file($work) && unlink($work);
		return $ret;
	}

	/******************** file/dir content *********************/

	/**
	 * Return files list in directory.
	 *
	 * @param  string  $path  dir path
	 * @return array
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 **/
	protected function _scandir($path) {
		return isset($this->dirsCache[$path])
			? $this->dirsCache[$path]
			: $this->cacheDir($path);
	}

	/**
	 * Open file and return file pointer
	 *
	 * @param  string $path file path
	 * @param string $mode
	 * @return false|resource
	 * @internal param bool $write open file for writing
	 * @author Dmitry (dio) Levashov
	 */
	protected function _fopen($path, $mode='rb') {

		if (($mode == 'rb' || $mode == 'r')) {
			try {
				$res = $this->dropbox->media($path);
				$url = parse_url($res['url']);
 				$fp = stream_socket_client('ssl://'.$url['host'].':443');
 				fputs($fp, "GET {$url['path']} HTTP/1.0\r\n");
 				fputs($fp, "Host: {$url['host']}\r\n");
 				fputs($fp, "\r\n");
 				while(trim(fgets($fp)) !== ''){};
 				return $fp;
			} catch (Dropbox_Exception $e) {
				return false;
			}
		}
		
		if ($this->tmp) {
			$contents = $this->_getContents($path);
			
			if ($contents === false) {
				return false;
			}
			
			if ($local = $this->getTempFile($path)) {
				if (file_put_contents($local, $contents, LOCK_EX) !== false) {
					return fopen($local, $mode);
				}
			}
		}

		return false;
	}

	/**
	 * Close opened file
	 *
	 * @param  resource $fp file pointer
	 * @param string $path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 */
	protected function _fclose($fp, $path='') {
		fclose($fp);
		if ($path) {
			unlink($this->getTempFile($path));
		}
	}

	/********************  file/dir manipulations *************************/

	/**
	 * Create dir and return created dir path or false on failed
	 *
	 * @param  string  $path  parent dir path
	 * @param string  $name  new directory name
	 * @return string|bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _mkdir($path, $name) {
		$path = $this->_normpath($path.'/'.$name);
		try {
			$this->dropbox->createFolder($path);
		} catch (Dropbox_Exception $e) {
			$this->deltaCheck();
			if ($this->dir($this->encode($path))) {
				return $path;
			}
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return $path;
	}

	/**
	 * Create file and return it's path or false on failed
	 *
	 * @param  string  $path  parent dir path
	 * @param string  $name  new file name
	 * @return string|bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _mkfile($path, $name) {
		return $this->_filePutContents($path.'/'.$name, '');
	}

	/**
	 * Create symlink. FTP driver does not support symlinks.
	 *
	 * @param  string $target link target
	 * @param  string $path symlink path
	 * @param string $name
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 */
	protected function _symlink($target, $path, $name) {
		return false;
	}

	/**
	 * Copy file into another file
	 *
	 * @param  string  $source     source file path
	 * @param  string  $targetDir  target directory path
	 * @param  string  $name       new file name
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _copy($source, $targetDir, $name) {
		$path = $this->_normpath($targetDir.'/'.$name);
		try {
			$this->dropbox->copy($source, $path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return true;
	}

	/**
	 * Move file into another parent dir.
	 * Return new file path or false.
	 *
	 * @param  string $source source file path
	 * @param $targetDir
	 * @param  string $name file name
	 * @return bool|string
	 * @internal param string $target target dir path
	 * @author Dmitry (dio) Levashov
	 */
	protected function _move($source, $targetDir, $name) {
		$target = $this->_normpath($targetDir.'/'.$name);
		try {
			$this->dropbox->move($source, $target);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return $target;
	}

	/**
	 * Remove file
	 *
	 * @param  string  $path  file path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _unlink($path) {
		try {
			$this->dropbox->delete($path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return true;
	}

	/**
	 * Remove dir
	 *
	 * @param  string  $path  dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _rmdir($path) {
		return $this->_unlink($path);
	}

	/**
	 * Create new file and write into it from file pointer.
	 * Return new file path or false on error.
	 *
	 * @param  resource $fp file pointer
	 * @param string $path
	 * @param  string $name file name
	 * @param  array $stat file stat (required by some virtual fs)
	 * @return bool|string
	 * @internal param string $dir target dir path
	 * @author Dmitry (dio) Levashov
	 */
	protected function _save($fp, $path, $name, $stat) {
		if ($name) $path .= '/'.$name;
		$path = $this->_normpath($path);
		try {
			$this->dropbox->putFile($path, $fp);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		if (is_array($stat)) {
			$raw = $this->getDBdat($path);
			if (isset($stat['width'])) $raw['width'] = $stat['width'];
			if (isset($stat['height'])) $raw['height'] = $stat['height'];
			$this->updateDBdat($path, $raw);
		}
		return $path;
	}

	/**
	 * Get file contents
	 *
	 * @param  string  $path  file path
	 * @return string|false
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _getContents($path) {
		$contents = '';
		try {
			$contents = $this->dropbox->getFile($path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		return $contents;
	}

	/**
	 * Write a string to a file
	 *
	 * @param  string  $path     file path
	 * @param  string  $content  new file content
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _filePutContents($path, $content) {
		$res = false;

		if ($local = $this->getTempFile($path)) {
			if (file_put_contents($local, $content, LOCK_EX) !== false
			&& ($fp = fopen($local, 'rb'))) {
				clearstatcache();
				$res = $this->_save($fp, $path, '', array());
				fclose($fp);
			}
			file_exists($local) && unlink($local);
		}

		return $res;
	}

	/**
	 * Detect available archivers
	 *
	 * @return array
	 **/
	protected function _checkArchivers() {
		// die('Not yet implemented. (_checkArchivers)');
		return array();
	}

	/**
	 * chmod implementation
	 *
	 * @param string $path
	 * @param string $mode
	 * @return bool
	 */
	protected function _chmod($path, $mode) {
		return false;
	}

	/**
	 * Unpack archive
	 *
	 * @param  string  $path  archive path
	 * @param  array   $arc   archiver command and arguments (same as in $this->archivers)
	 * @return true
	 * @return void
	 * @author Dmitry (dio) Levashov
	 * @author Alexey Sukhotin
	 **/
	protected function _unpack($path, $arc) {
		die('Not yet implemented. (_unpack)');
	}

	/**
	 * Recursive symlinks search
	 *
	 * @param  string  $path  file/dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _findSymlinks($path) {
		die('Not yet implemented. (_findSymlinks)');
	}

	/**
	 * Extract files from archive
	 *
	 * @param  string  $path  archive path
	 * @param  array   $arc   archiver command and arguments (same as in $this->archivers)
	 * @return true
	 * @author Dmitry (dio) Levashov,
	 * @author Alexey Sukhotin
	 **/
	protected function _extract($path, $arc) {
		die('Not yet implemented. (_extract)');

	}

	/**
	 * Create archive and return its path
	 *
	 * @param  string  $dir    target dir
	 * @param  array   $files  files names list
	 * @param  string  $name   archive name
	 * @param  array   $arc    archiver options
	 * @return string|bool
	 * @author Dmitry (dio) Levashov,
	 * @author Alexey Sukhotin
	 **/
	protected function _archive($dir, $files, $name, $arc) {
		die('Not yet implemented. (_archive)');
	}

} // END class
                                                                                                                                                                                                          includes/File_manager/lib/php/elFinderSessionInterface.php                                          0000644                 00000002106 15266052676 0017724 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder - file manager for web.
 * Session Wrapper Interface.
 *
 * @package elfinder
 * @author  Naoki Sawada
 **/

interface elFinderSessionInterface
{
    /**
     * Session start
     *
     * @return  self
     **/
    public function start();

    /**
     * Session write & close
     *
     * @return  self
     **/
    public function close();

    /**
     * Get session data
     * This method must be equipped with an automatic start / close.
     *
     * @param   string $key   Target key
     * @param   mixed  $empty Return value of if session target key does not exist
     *
     * @return  mixed
     **/
    public function get($key, $empty = '');

    /**
     * Set session data
     * This method must be equipped with an automatic start / close.
     *
     * @param   string $key  Target key
     * @param   mixed  $data Value
     *
     * @return  self
     **/
    public function set($key, $data);

    /**
     * Get session data
     *
     * @param   string $key Target key
     *
     * @return  self
     **/
    public function remove($key);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                          includes/File_manager/lib/php/elFinderConnector.class.php                                           0000644                 00000030405 15266052676 0017521 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Default elFinder connector
 *
 * @author Dmitry (dio) Levashov
 **/
class elFinderConnector
{
    /**
     * elFinder instance
     *
     * @var elFinder
     **/
    protected $elFinder;

    /**
     * Options
     *
     * @var array
     **/
    protected $options = array();

    /**
     * Must be use output($data) $data['header']
     *
     * @var string
     * @deprecated
     **/
    protected $header = '';

    /**
     * HTTP request method
     *
     * @var string
     */
    protected $reqMethod = '';

    /**
     * Content type of output JSON
     *
     * @var string
     */
    protected static $contentType = 'Content-Type: application/json; charset=utf-8';

    /**
     * Constructor
     *
     * @param      $elFinder
     * @param bool $debug
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct($elFinder, $debug = false)
    {

        $this->elFinder = $elFinder;
        $this->reqMethod = strtoupper($_SERVER["REQUEST_METHOD"]);
        if ($debug) {
            self::$contentType = 'Content-Type: text/plain; charset=utf-8';
        }
    }

    /**
     * Execute elFinder command and output result
     *
     * @return void
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    public function run()
    {
        $isPost = $this->reqMethod === 'POST';
        $src = $isPost ? array_merge($_GET, $_POST) : $_GET;
        $maxInputVars = (!$src || isset($src['targets'])) ? ini_get('max_input_vars') : null;
        if ((!$src || $maxInputVars) && $rawPostData = file_get_contents('php://input')) {
            // for max_input_vars and supports IE XDomainRequest()
            $parts = explode('&', $rawPostData);
            if (!$src || $maxInputVars < count($parts)) {
                $src = array();
                foreach ($parts as $part) {
                    list($key, $value) = array_pad(explode('=', $part), 2, '');
                    $key = rawurldecode($key);
                    if (preg_match('/^(.+?)\[([^\[\]]*)\]$/', $key, $m)) {
                        $key = $m[1];
                        $idx = $m[2];
                        if (!isset($src[$key])) {
                            $src[$key] = array();
                        }
                        if ($idx) {
                            $src[$key][$idx] = rawurldecode($value);
                        } else {
                            $src[$key][] = rawurldecode($value);
                        }
                    } else {
                        $src[$key] = rawurldecode($value);
                    }
                }
                $_POST = $this->input_filter($src);
                $_REQUEST = $this->input_filter(array_merge_recursive($src, $_REQUEST));
            }
        }

        if (isset($src['targets']) && $this->elFinder->maxTargets && count($src['targets']) > $this->elFinder->maxTargets) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_MAX_TARGTES)));
        }

        $cmd = isset($src['cmd']) ? $src['cmd'] : '';
        $args = array();

        if (!function_exists('json_encode')) {
            $error = $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_JSON);
            $this->output(array('error' => '{"error":["' . implode('","', $error) . '"]}', 'raw' => true));
        }

        if (!$this->elFinder->loaded()) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_VOL), 'debug' => $this->elFinder->mountErrors));
        }

        // telepat_mode: on
        if (!$cmd && $isPost) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UPLOAD, elFinder::ERROR_UPLOAD_TOTAL_SIZE), 'header' => 'Content-Type: text/html'));
        }
        // telepat_mode: off

        if (!$this->elFinder->commandExists($cmd)) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UNKNOWN_CMD)));
        }

        // collect required arguments to exec command
        $hasFiles = false;
        foreach ($this->elFinder->commandArgsList($cmd) as $name => $req) {
            if ($name === 'FILES') {
                if (isset($_FILES)) {
                    $hasFiles = true;
                } elseif ($req) {
                    $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
                }
            } else {
                $arg = isset($src[$name]) ? $src[$name] : '';

                if (!is_array($arg) && $req !== '') {
                    $arg = trim($arg);
                }
                if ($req && $arg === '') {
                    $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
                }
                $args[$name] = $arg;
            }
        }

        $args['debug'] = isset($src['debug']) ? !!$src['debug'] : false;

        $args = $this->input_filter($args);
        if ($hasFiles) {
            $args['FILES'] = $_FILES;
        }

        try {
            $this->output($this->elFinder->exec($cmd, $args));
        } catch (elFinderAbortException $e) {
            // connection aborted
            // unlock session data for multiple access
            $this->elFinder->getSession()->close();
            // HTTP response code
            header('HTTP/1.0 204 No Content');
            // clear output buffer
            while (ob_get_level() && ob_end_clean()) {
            }
            exit();
        }
    }

    /**
     * Sets the header.
     *
     * @param array|string  $value HTTP header(s)
     */
    public function setHeader($value)
    {
        $this->header = $value;
    }

    /**
     * Output json
     *
     * @param  array  data to output
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function output(array $data)
    {
        // unlock session data for multiple access
        $this->elFinder->getSession()->close();
        // client disconnect should abort
        ignore_user_abort(false);

        if ($this->header) {
            self::sendHeader($this->header);
        }

        if (isset($data['pointer'])) {
            // set time limit to 0
            elFinder::extendTimeLimit(0);

            // send optional header
            if (!empty($data['header'])) {
                self::sendHeader($data['header']);
            }

            // clear output buffer
            while (ob_get_level() && ob_end_clean()) {
            }

            $toEnd = true;
            $fp = $data['pointer'];
            $sendData = !($this->reqMethod === 'HEAD' || !empty($data['info']['xsendfile']));
            $psize = null;
            if (($this->reqMethod === 'GET' || !$sendData)
                && (elFinder::isSeekableStream($fp) || elFinder::isSeekableUrl($fp))
                && (array_search('Accept-Ranges: none', headers_list()) === false)) {
                header('Accept-Ranges: bytes');
                if (!empty($_SERVER['HTTP_RANGE'])) {
                    $size = $data['info']['size'];
                    $end = $size - 1;
                    if (preg_match('/bytes=(\d*)-(\d*)(,?)/i', $_SERVER['HTTP_RANGE'], $matches)) {
                        if (empty($matches[3])) {
                            if (empty($matches[1]) && $matches[1] !== '0') {
                                $start = $size - $matches[2];
                            } else {
                                $start = intval($matches[1]);
                                if (!empty($matches[2])) {
                                    $end = intval($matches[2]);
                                    if ($end >= $size) {
                                        $end = $size - 1;
                                    }
                                    $toEnd = ($end == ($size - 1));
                                }
                            }
                            $psize = $end - $start + 1;

                            header('HTTP/1.1 206 Partial Content');
                            header('Content-Length: ' . $psize);
                            header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);

                            // Apache mod_xsendfile dose not support range request
                            if (isset($data['info']['xsendfile']) && strtolower($data['info']['xsendfile']) === 'x-sendfile') {
                                if (function_exists('header_remove')) {
                                    header_remove($data['info']['xsendfile']);
                                } else {
                                    header($data['info']['xsendfile'] . ':');
                                }
                                unset($data['info']['xsendfile']);
                                if ($this->reqMethod !== 'HEAD') {
                                    $sendData = true;
                                }
                            }

                            $sendData && !elFinder::isSeekableUrl($fp) && fseek($fp, $start);
                        }
                    }
                }
                if ($sendData && is_null($psize)) {
                    elFinder::rewind($fp);
                }
            } else {
                header('Accept-Ranges: none');
                if (isset($data['info']) && !$data['info']['size']) {
                    if (function_exists('header_remove')) {
                        header_remove('Content-Length');
                    } else {
                        header('Content-Length:');
                    }
                }
            }

            if ($sendData) {
                if ($toEnd || elFinder::isSeekableUrl($fp)) {
                    // PHP < 5.6 has a bug of fpassthru
                    // see https://bugs.php.net/bug.php?id=66736
                    if (version_compare(PHP_VERSION, '5.6', '<')) {
                        file_put_contents('php://output', $fp);
                    } else {
                        fpassthru($fp);
                    }
                } else {
                    $out = fopen('php://output', 'wb');
                    stream_copy_to_stream($fp, $out, $psize);
                    fclose($out);
                }
            }

            if (!empty($data['volume'])) {
                $data['volume']->close($fp, $data['info']['hash']);
            } else {
                fclose($fp);
            }
            exit();
        } else {
            self::outputJson($data);
            exit(0);
        }
    }

    /**
     * Remove null & stripslashes applies on "magic_quotes_gpc"
     *
     * @param  mixed $args
     *
     * @return mixed
     * @author Naoki Sawada
     */
    protected function input_filter($args)
    {
        static $magic_quotes_gpc = NULL;

        if ($magic_quotes_gpc === NULL)
            $magic_quotes_gpc = (version_compare(PHP_VERSION, '5.4', '<') && get_magic_quotes_gpc());

        if (is_array($args)) {
            return array_map(array(& $this, 'input_filter'), $args);
        }
        $res = str_replace("\0", '', $args);
        $magic_quotes_gpc && ($res = stripslashes($res));
        return $res;
    }

    /**
     * Send HTTP header
     *
     * @param string|array $header optional header
     */
    protected static function sendHeader($header = null)
    {
        if ($header) {
            if (is_array($header)) {
                foreach ($header as $h) {
                    header($h);
                }
            } else {
                header($header);
            }
        }
    }

    /**
     * Output JSON
     *
     * @param array $data
     */
    public static function outputJson($data)
    {
        // send header
        $header = isset($data['header']) ? $data['header'] : self::$contentType;
        self::sendHeader($header);

        unset($data['header']);

        if (!empty($data['raw']) && isset($data['error'])) {
            $out = $data['error'];
        } else {
            if (isset($data['debug']) && isset($data['debug']['backendErrors'])) {
                $data['debug']['backendErrors'] = array_merge($data['debug']['backendErrors'], elFinder::$phpErrors);
            }
            $out = json_encode($data);
        }

        // clear output buffer
        while (ob_get_level() && ob_end_clean()) {
        }

        header('Content-Length: ' . strlen($out));

        echo $out;

        flush();
    }
}// END class 
                                                                                                                                                                                                                                                           includes/File_manager/lib/php/editors/OnlineConvert/editor.php                                      0000644                 00000010320 15266052677 0020531 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

class elFinderEditorOnlineConvert extends elFinderEditor
{
    protected $allowed = array('init', 'api');

    public function enabled()
    {
        return defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && (!defined('ELFINDER_DISABLE_ONLINE_CONVERT') || !ELFINDER_DISABLE_ONLINE_CONVERT);
    }

    public function init()
    {
        return array('api' => defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && function_exists('curl_init'));
    }

    public function api()
    {
        // return array('apires' => array('message' => 'Currently disabled for developping...'));
        $endpoint = 'https://api2.online-convert.com/jobs';
        $category = $this->argValue('category');
        $convert = $this->argValue('convert');
        $options = $this->argValue('options');
        $source = $this->argValue('source');
        $filename = $this->argValue('filename');
        $mime = $this->argValue('mime');
        $jobid = $this->argValue('jobid');
        $string_method = '';
        $options = array();
        // Currently these converts are make error with API call. I don't know why.
        $nonApi = array('android', 'blackberry', 'dpg', 'ipad', 'iphone', 'ipod', 'nintendo-3ds', 'nintendo-ds', 'ps3', 'psp', 'wii', 'xbox');
        if (in_array($convert, $nonApi)) {
            return array('apires' => array());
        }
        $ch = null;
        if ($convert && $source) {
            $request = array(
                'input' => array(array(
                    'type' => 'remote',
                    'source' => $source
                )),
                'conversion' => array(array(
                    'target' => $convert
                ))
            );

            if ($filename !== '') {
                $request['input'][0]['filename'] = $filename;
            }

            if ($mime !== '') {
                $request['input'][0]['content_type'] = $mime;
            }

            if ($category) {
                $request['conversion'][0]['category'] = $category;
            }

            if ($options && $options !== 'null') {
                $options = json_decode($options, true);
            }
            if (!is_array($options)) {
                $options = array();
            }
            if ($options) {
                $request['conversion'][0]['options'] = $options;
            }

            $ch = curl_init($endpoint);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($request));
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
                'Content-Type: application/json',
                'cache-control: no-cache'
            ));
        } else if ($jobid) {
            $ch = curl_init($endpoint . '/' . $jobid);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
                'cache-control: no-cache'
            ));
        }

        if ($ch) {
            $response = curl_exec($ch);
            $info = curl_getinfo($ch);
            $error = curl_error($ch);
            curl_close($ch);

            if (!empty($error)) {
                $res = array('error' => $error);
            } else {
                $data = json_decode($response, true);
                if (isset($data['status']) && isset($data['status']['code']) && $data['status']['code'] === 'completed') {
                    /** @var elFinderSession $session */
                    $session = $this->elfinder->getSession();
                    $urlContentSaveIds = $session->get('urlContentSaveIds', array());
                    $urlContentSaveIds['OnlineConvert-' . $data['id']] = true;
                    $session->set('urlContentSaveIds', $urlContentSaveIds);
                }
                $res = array('apires' => $data);
            }

            return $res;
        } else {
            return array('error' => array('errCmdParams', 'editor.OnlineConvert.api'));
        }
    }
}
                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/php/editors/ZipArchive/editor.php                                         0000644                 00000000621 15266052677 0020013 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

class elFinderEditorZipArchive extends elFinderEditor
{
    public function enabled()
    {
        return (!defined('ELFINDER_DISABLE_ZIPEDITOR') || !ELFINDER_DISABLE_ZIPEDITOR) &&
            class_exists('Barryvdh\elFinderFlysystemDriver\Driver') &&
            class_exists('League\Flysystem\Filesystem') &&
            class_exists('League\Flysystem\ZipArchive\ZipArchiveAdapter');
    }
}                                                                                                               includes/File_manager/lib/php/editors/ZohoOffice/editor.php                                         0000644                 00000022064 15266052677 0020007 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

class elFinderEditorZohoOffice extends elFinderEditor
{
    private static $curlTimeout = 20;

    protected $allowed = array('init', 'save', 'chk');

    protected $editor_settings = array(
        'writer' => array(
            'unit' => 'mm',
            'view' => 'pageview'
        ),
        'sheet' => array(
            'country' => 'US'
        ),
        'show' => array()
    );

    private $urls = array(
        'writer' => 'https://api.office-integrator.com/writer/officeapi/v1/document',
        'sheet' => 'https://api.office-integrator.com/sheet/officeapi/v1/spreadsheet',
        'show' => 'https://api.office-integrator.com/show/officeapi/v1/presentation',
    );

    private $srvs = array(
        'application/msword' => 'writer',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'writer',
        'application/pdf' => 'writer',
        'application/vnd.oasis.opendocument.text' => 'writer',
        'application/rtf' => 'writer',
        'text/html' => 'writer',
        'application/vnd.ms-excel' => 'sheet',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'sheet',
        'application/vnd.oasis.opendocument.spreadsheet' => 'sheet',
        'application/vnd.sun.xml.calc' => 'sheet',
        'text/csv' => 'sheet',
        'text/tab-separated-values' => 'sheet',
        'application/vnd.ms-powerpoint' => 'show',
        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'show',
        'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'show',
        'application/vnd.oasis.opendocument.presentation' => 'show',
        'application/vnd.sun.xml.impress' => 'show',
    );

    private $myName = '';

    protected function extentionNormrize($extention, $srvsName) {
        switch($srvsName) {
            case 'writer':
                if (!in_array($extention, array('zdoc', 'docx', 'rtf', 'odt', 'html', 'txt'))) {
                    $extention = 'docx';
                }
                break;
            case 'sheet':
                if (!in_array($extention, array('zsheet', 'xls', 'xlsx', 'ods', 'csv', 'tsv'))) {
                    $extention = 'xlsx';
                }
                break;
            case 'show':
                if (!in_array($extention, array('zslides', 'pptx', 'pps', 'ppsx', 'odp', 'sxi'))) {
                    $extention = 'pptx';
                }
                break;

        }
        return $extention;
    }

    public function __construct($elfinder, $args)
    {
        parent::__construct($elfinder, $args);
        $this->myName = preg_replace('/^elFinderEditor/i', '', get_class($this));
    }

    public function enabled()
    {
        return defined('ELFINDER_ZOHO_OFFICE_APIKEY') && ELFINDER_ZOHO_OFFICE_APIKEY && function_exists('curl_init');
    }

    public function init()
    {
        if (!defined('ELFINDER_ZOHO_OFFICE_APIKEY') || !function_exists('curl_init')) {
            return array('error', array(elFinder::ERROR_CONF, '`ELFINDER_ZOHO_OFFICE_APIKEY` or curl extension'));
        }
        if (!empty($this->args['target'])) {
            $fp = $cfile = null;
            $hash = $this->args['target'];
            /** @var elFinderVolumeDriver $srcVol */
            if (($srcVol = $this->elfinder->getVolume($hash)) && ($file = $srcVol->file($hash))) {
                $cdata = empty($this->args['cdata']) ? '' : $this->args['cdata'];
                $cookie = $this->elfinder->getFetchCookieFile();
                $save = false;
                $ch = curl_init();
                $conUrl = elFinder::getConnectorUrl();
                curl_setopt($ch, CURLOPT_URL, $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=chk&args[target]=' . rawurlencode($hash) . $cdata);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                if ($cookie) {
                    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
                    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
                }
                $res = curl_exec($ch);
                curl_close($ch);
                if ($res) {
                    if ($data = json_decode($res, true)) {
                        $save = !empty($data['cansave']);
                    }
                }

                if ($size = $file['size']) {
                    $src = $srcVol->open($hash);
                    $fp = tmpfile();
                    stream_copy_to_stream($src, $fp);
                    $srcVol->close($src, $hash);
                    $info = stream_get_meta_data($fp);
                    if ($info && !empty($info['uri'])) {
                        $srcFile = $info['uri'];
                        if (class_exists('CURLFile')) {
                            $cfile = new CURLFile($srcFile);
                            $cfile->setPostFilename($file['name']);
                            $cfile->setMimeType($file['mime']);
                        } else {
                            $cfile = '@' . $srcFile;
                        }
                    }
                }
                //$srv = $this->args['service'];
                $srvsName = $this->srvs[$file['mime']];
                $format = $this->extentionNormrize($srcVol->getExtentionByMime($file['mime']), $srvsName);
                if (!$format) {
                    $format = substr($file['name'], strrpos($file['name'], '.') * -1);
                }
                $lang = $this->args['lang'];
                if ($lang === 'jp') {
                    $lang = 'ja';
                }
                $data = array(
                    'apikey' => ELFINDER_ZOHO_OFFICE_APIKEY,
                    'callback_settings' => array(
                        'save_format' => $format,
                        'save_url_params' => array(
                            'hash' => $hash
                        )
                    ),
                    'editor_settings' => $this->editor_settings[$srvsName],
                    'document_info' => array(
                        'document_name' => substr($file['name'], 0, strlen($file['name']) - strlen($format)- 1)
                    )
                );
                $data['editor_settings']['language'] = $lang;
                if ($save) {
                    $conUrl = elFinder::getConnectorUrl();
                    $data['callback_settings']['save_url'] = $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=save' . $cdata;
                }
                foreach($data as $_k => $_v) {
                    if (is_array($_v)){
                        $data[$_k] = json_encode($_v);
                    }
                }
                if ($cfile) {
                    $data['document'] = $cfile;
                }
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $this->urls[$srvsName]);
                curl_setopt($ch, CURLOPT_TIMEOUT, self::$curlTimeout);
                curl_setopt($ch, CURLOPT_HEADER, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                $res = curl_exec($ch);
                $error = curl_error($ch);
                curl_close($ch);

                $fp && fclose($fp);

                if ($res && $res = @json_decode($res, true)) {
                    if (!empty($res['document_url'])) {
                        $ret = array('zohourl' => $res['document_url']);
                        if (!$save) {
                            $ret['warning'] = 'exportToSave';
                        }
                        return $ret;
                    } else {
                        $error = $res;
                    }
                }

                if ($error) {
                    return array('error' => is_string($error)? preg_split('/[\r\n]+/', $error) : 'Error code: ' . $error);
                }
            }
        }

        return array('error' => array('errCmdParams', 'editor.' . $this->myName . '.init'));
    }

    public function save()
    {
        if (!empty($_POST) && !empty($_POST['hash']) && !empty($_FILES) && !empty($_FILES['content'])) {
            $hash = $_POST['hash'];
            /** @var elFinderVolumeDriver $volume */
            if ($volume = $this->elfinder->getVolume($hash)) {
                if ($content = file_get_contents($_FILES['content']['tmp_name'])) {
                    if ($volume->putContents($hash, $content)) {
                        return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 200 OK');
                    }
                }
            }
        }
        return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 500 Internal Server Error');
    }

    public function chk()
    {
        $hash = $this->args['target'];
        $res = false;
        /** @var elFinderVolumeDriver $volume */
        if ($volume = $this->elfinder->getVolume($hash)) {
            if ($file = $volume->file($hash)) {
                $res = (bool)$file['write'];
            }
        }
        return array('cansave' => $res);
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/php/editors/editor.php                                                    0000644                 00000002612 15266052677 0015751 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * Abstract class of editor plugins.
 *
 * @author Naoki Sawada
 */
class elFinderEditor
{
    /**
     * Array of allowed method by request from client side.
     *
     * @var array
     */
    protected $allowed = array();

    /**
     * elFinder instance
     *
     * @var object elFinder instance
     */
    protected $elfinder;

    /**
     * Arguments
     *
     * @var array argValues
     */
    protected $args;

    /**
     * Constructor.
     *
     * @param object $elfinder
     * @param array  $args
     */
    public function __construct($elfinder, $args)
    {
        $this->elfinder = $elfinder;
        $this->args = $args;
    }

    /**
     * Return boolean that this plugin is enabled.
     *
     * @return bool
     */
    public function enabled()
    {
        return true;
    }

    /**
     * Return boolean that $name method is allowed.
     *
     * @param string $name
     *
     * @return bool
     */
    public function isAllowedMethod($name)
    {
        $checker = array_flip($this->allowed);

        return isset($checker[$name]);
    }

    /**
     * Return $this->args value of the key
     *
     * @param      string $key   target key
     * @param      string $empty empty value
     *
     * @return     mixed
     */
    public function argValue($key, $empty = '')
    {
        return isset($this->args[$key]) ? $this->args[$key] : $empty;
    }
}
                                                                                                                      includes/File_manager/lib/php/elFinder.class.php                                                    0000644                 00000556511 15266052677 0015662 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * elFinder - file manager for web.
 * Core class.
 *
 * @package elfinder
 * @author  Dmitry (dio) Levashov
 * @author  Troex Nevelin
 * @author  Alexey Sukhotin
 **/
class elFinder
{

    /**
     * API version number
     *
     * @var float
     **/
    protected static $ApiVersion = 2.1;

    /**
     * API version number
     *
     * @deprecated
     * @var string
     **/
    protected $version;

    /**
     * API revision that this connector supports all functions
     *
     * @var integer
     */
    protected static $ApiRevision = 66;

    /**
     * Storages (root dirs)
     *
     * @var array
     **/
    protected $volumes = array();

    /**
     * elFinder instance
     *
     * @var object
     */
    public static $instance = null;

    /**
     * Current request args
     *
     * @var array
     */
    public static $currentArgs = array();

    /**
     * Network mount drivers
     *
     * @var array
     */
    public static $netDrivers = array();

    /**
     * elFinder global locale
     *
     * @var string
     */
    public static $locale = '';

    /**
     * elFinderVolumeDriver default mime.type file path
     *
     * @var string
     */
    public static $defaultMimefile = '';

    /**
     * A file save destination path when a temporary content URL is required
     * on a network volume or the like
     * It can be overwritten by volume route setting
     *
     * @var string
     */
    public static $tmpLinkPath = '';

    /**
     * A file save destination URL when a temporary content URL is required
     * on a network volume or the like
     * It can be overwritten by volume route setting
     *
     * @var string
     */
    public static $tmpLinkUrl = '';

    /**
     * Temporary content URL lifetime (seconds)
     *
     * @var integer
     */
    public static $tmpLinkLifeTime = 3600;

    /**
     * MIME type list handled as a text file
     *
     * @var array
     */
    public static $textMimes = array(
        'application/dash+xml',
        'application/docbook+xml',
        'application/javascript',
        'application/json',
        'application/plt',
        'application/sat',
        'application/sql',
        'application/step',
        'application/vnd.hp-hpgl',
        'application/x-awk',
        'application/x-config',
        'application/x-csh',
        'application/x-empty',
        'application/x-mpegurl',
        'application/x-perl',
        'application/x-php',
        'application/x-web-config',
        'application/xhtml+xml',
        'application/xml',
        'audio/x-mp3-playlist',
        'image/cgm',
        'image/svg+xml',
        'image/vnd.dxf',
        'model/iges'
    );

    /**
     * Maximum memory size to be extended during GD processing
     * (0: not expanded, -1: unlimited or memory size notation)
     *
     * @var integer|string
     */
    public static $memoryLimitGD = 0;

    /**
     * Path of current request flag file for abort check
     *
     * @var string
     */
    protected static $abortCheckFile = null;

    /**
     * elFinder session wrapper object
     *
     * @var elFinderSessionInterface
     */
    protected $session;

    /**
     * elFinder global sessionCacheKey
     *
     * @deprecated
     * @var string
     */
    public static $sessionCacheKey = '';

    /**
     * Is session closed
     *
     * @deprecated
     * @var bool
     */
    private static $sessionClosed = false;

    /**
     * elFinder base64encodeSessionData
     * elFinder save session data as `UTF-8`
     * If the session storage mechanism of the system does not allow `UTF-8`
     * And it must be `true` option 'base64encodeSessionData' of elFinder
     * WARNING: When enabling this option, if saving the data passed from the user directly to the session variable,
     * it make vulnerable to the object injection attack, so use it carefully.
     * see https://github.com/Studio-42/elFinder/issues/2345
     *
     * @var bool
     */
    protected static $base64encodeSessionData = false;

    /**
     * elFinder common tempraly path
     *
     * @var string
     * @default "./.tmp" or sys_get_temp_dir()
     **/
    protected static $commonTempPath = '';

    /**
     * Callable function for URL upload filter
     * The first argument is a URL and the second argument is an instance of the elFinder class
     * A filter should be return true (to allow) / false (to disallow)
     *
     * @var callable
     * @default null
     */
    protected $urlUploadFilter = null;

    /**
     * Connection flag files path that connection check of current request
     *
     * @var string
     * @default value of $commonTempPath
     */
    protected static $connectionFlagsPath = '';

    /**
     * Additional volume root options for network mounting volume
     *
     * @var array
     */
    protected $optionsNetVolumes = array();

    /**
     * Session key of net mount volumes
     *
     * @deprecated
     * @var string
     */
    protected $netVolumesSessionKey = '';

    /**
     * Mounted volumes count
     * Required to create unique volume id
     *
     * @var int
     **/
    public static $volumesCnt = 1;

    /**
     * Default root (storage)
     *
     * @var elFinderVolumeDriver
     **/
    protected $default = null;

    /**
     * Commands and required arguments list
     *
     * @var array
     **/
    protected $commands = array(
        'abort' => array('id' => true),
        'archive' => array('targets' => true, 'type' => true, 'mimes' => false, 'name' => false),
        'callback' => array('node' => true, 'json' => false, 'bind' => false, 'done' => false),
        'chmod' => array('targets' => true, 'mode' => true),
        'dim' => array('target' => true, 'substitute' => false),
        'duplicate' => array('targets' => true, 'suffix' => false),
        'editor' => array('name' => true, 'method' => true, 'args' => false),
        'extract' => array('target' => true, 'mimes' => false, 'makedir' => false),
        'file' => array('target' => true, 'download' => false, 'cpath' => false, 'onetime' => false),
        'get' => array('target' => true, 'conv' => false),
        'info' => array('targets' => true, 'compare' => false),
        'ls' => array('target' => true, 'mimes' => false, 'intersect' => false),
        'mkdir' => array('target' => true, 'name' => false, 'dirs' => false),
        'mkfile' => array('target' => true, 'name' => true, 'mimes' => false),
        'netmount' => array('protocol' => true, 'host' => true, 'path' => false, 'port' => false, 'user' => false, 'pass' => false, 'alias' => false, 'options' => false),
        'open' => array('target' => false, 'tree' => false, 'init' => false, 'mimes' => false, 'compare' => false),
        'parents' => array('target' => true, 'until' => false),
        'paste' => array('dst' => true, 'targets' => true, 'cut' => false, 'mimes' => false, 'renames' => false, 'hashes' => false, 'suffix' => false),
        'put' => array('target' => true, 'content' => '', 'mimes' => false, 'encoding' => false),
        'rename' => array('target' => true, 'name' => true, 'mimes' => false, 'targets' => false, 'q' => false),
        'resize' => array('target' => true, 'width' => false, 'height' => false, 'mode' => false, 'x' => false, 'y' => false, 'degree' => false, 'quality' => false, 'bg' => false),
        'rm' => array('targets' => true),
        'search' => array('q' => true, 'mimes' => false, 'target' => false, 'type' => false),
        'size' => array('targets' => true),
        'subdirs' => array('targets' => true),
        'tmb' => array('targets' => true),
        'tree' => array('target' => true),
        'upload' => array('target' => true, 'FILES' => true, 'mimes' => false, 'html' => false, 'upload' => false, 'name' => false, 'upload_path' => false, 'chunk' => false, 'cid' => false, 'node' => false, 'renames' => false, 'hashes' => false, 'suffix' => false, 'mtime' => false, 'overwrite' => false, 'contentSaveId' => false),
        'url' => array('target' => true, 'options' => false),
        'zipdl' => array('targets' => true, 'download' => false)
    );

    /**
     * Plugins instance
     *
     * @var array
     **/
    protected $plugins = array();

    /**
     * Commands listeners
     *
     * @var array
     **/
    protected $listeners = array();

    /**
     * script work time for debug
     *
     * @var string
     **/
    protected $time = 0;
    /**
     * Is elFinder init correctly?
     *
     * @var bool
     **/
    protected $loaded = false;
    /**
     * Send debug to client?
     *
     * @var string
     **/
    protected $debug = false;

    /**
     * Call `session_write_close()` before exec command?
     *
     * @var bool
     */
    protected $sessionCloseEarlier = true;

    /**
     * SESSION use commands @see __construct()
     *
     * @var array
     */
    protected $sessionUseCmds = array();

    /**
     * session expires timeout
     *
     * @var int
     **/
    protected $timeout = 0;

    /**
     * Temp dir path for Upload
     *
     * @var string
     */
    protected $uploadTempPath = '';

    /**
     * Max allowed archive files size (0 - no limit)
     *
     * @var integer
     */
    protected $maxArcFilesSize = 0;

    /**
     * undocumented class variable
     *
     * @var string
     **/
    protected $uploadDebug = '';

    /**
     * Max allowed numbar of targets (0 - no limit)
     *
     * @var integer
     */
    public $maxTargets = 1000;

    /**
     * Errors from PHP
     *
     * @var array
     **/
    public static $phpErrors = array();

    /**
     * Errors from not mounted volumes
     *
     * @var array
     **/
    public $mountErrors = array();


    /**
     * Archivers cache
     *
     * @var array
     */
    public static $archivers = array();

    /**
     * URL for callback output window for CORS
     * redirect to this URL when callback output
     *
     * @var string URL
     */
    protected $callbackWindowURL = '';

    /**
     * hash of items to unlock on command completion
     *
     * @var array hashes
     */
    protected $autoUnlocks = array();

    /**
     * Item locking expiration (seconds)
     * Default: 3600 secs
     *
     * @var integer
     */
    protected $itemLockExpire = 3600;

    /**
     * Additional request querys
     *
     * @var array|null
     */
    protected $customData = null;

    /**
     * Ids to remove of session var "urlContentSaveIds" for contents uploading by URL
     *
     * @var array
     */
    protected $removeContentSaveIds = array();

    /**
     * LAN class allowed when uploading via URL
     *
     * Array keys are 'local', 'private_a', 'private_b', 'private_c' and 'link'
     *
     * local:     127.0.0.0/8
     * private_a: 10.0.0.0/8
     * private_b: 172.16.0.0/12
     * private_c: 192.168.0.0/16
     * link:      169.254.0.0/16
     *
     * @var        array
     */
    protected $uploadAllowedLanIpClasses = array();

    /**
     * Flag of throw Error on exec()
     *
     * @var boolean
     */
    protected $throwErrorOnExec = false;

    /**
     * Default params of toastParams
     *
     * @var        array
     */
    protected $toastParamsDefault = array(
        'mode'   => 'warning',
        'prefix' => ''
    );

    /**
     * Toast params of runtime notification
     *
     * @var        array
     */
    private $toastParams = array();

    /**
     * Toast messages of runtime notification
     *
     * @var        array
     */
    private $toastMessages = array();

    /**
     * Optional UTF-8 encoder
     *
     * @var        callable || null
     */
    private $utf8Encoder = null;

    /**
     * Seekable URL file pointer ids -  for getStreamByUrl()
     *
     * @var        array
     */
    private static $seekableUrlFps = array();

    // Errors messages
    const ERROR_ACCESS_DENIED = 'errAccess';
    const ERROR_ARC_MAXSIZE = 'errArcMaxSize';
    const ERROR_ARC_SYMLINKS = 'errArcSymlinks';
    const ERROR_ARCHIVE = 'errArchive';
    const ERROR_ARCHIVE_EXEC = 'errArchiveExec';
    const ERROR_ARCHIVE_TYPE = 'errArcType';
    const ERROR_CONF = 'errConf';
    const ERROR_CONF_NO_JSON = 'errJSON';
    const ERROR_CONF_NO_VOL = 'errNoVolumes';
    const ERROR_CONV_UTF8 = 'errConvUTF8';
    const ERROR_COPY = 'errCopy';
    const ERROR_COPY_FROM = 'errCopyFrom';
    const ERROR_COPY_ITSELF = 'errCopyInItself';
    const ERROR_COPY_TO = 'errCopyTo';
    const ERROR_CREATING_TEMP_DIR = 'errCreatingTempDir';
    const ERROR_DIR_NOT_FOUND = 'errFolderNotFound';
    const ERROR_EXISTS = 'errExists';        // 'File named "$1" already exists.'
    const ERROR_EXTRACT = 'errExtract';
    const ERROR_EXTRACT_EXEC = 'errExtractExec';
    const ERROR_FILE_NOT_FOUND = 'errFileNotFound';     // 'File not found.'
    const ERROR_FTP_DOWNLOAD_FILE = 'errFtpDownloadFile';
    const ERROR_FTP_MKDIR = 'errFtpMkdir';
    const ERROR_FTP_UPLOAD_FILE = 'errFtpUploadFile';
    const ERROR_INV_PARAMS = 'errCmdParams';
    const ERROR_INVALID_DIRNAME = 'errInvDirname';    // 'Invalid folder name.'
    const ERROR_INVALID_NAME = 'errInvName';       // 'Invalid file name.'
    const ERROR_LOCKED = 'errLocked';        // '"$1" is locked and can not be renamed, moved or removed.'
    const ERROR_MAX_TARGTES = 'errMaxTargets'; // 'Max number of selectable items is $1.'
    const ERROR_MKDIR = 'errMkdir';
    const ERROR_MKFILE = 'errMkfile';
    const ERROR_MKOUTLINK = 'errMkOutLink';        // 'Unable to create a link to outside the volume root.'
    const ERROR_MOVE = 'errMove';
    const ERROR_NETMOUNT = 'errNetMount';
    const ERROR_NETMOUNT_FAILED = 'errNetMountFailed';
    const ERROR_NETMOUNT_NO_DRIVER = 'errNetMountNoDriver';
    const ERROR_NETUNMOUNT = 'errNetUnMount';
    const ERROR_NOT_ARCHIVE = 'errNoArchive';
    const ERROR_NOT_DIR = 'errNotFolder';
    const ERROR_NOT_FILE = 'errNotFile';
    const ERROR_NOT_REPLACE = 'errNotReplace';       // Object "$1" already exists at this location and can not be replaced with object of another type.
    const ERROR_NOT_UTF8_CONTENT = 'errNotUTF8Content';
    const ERROR_OPEN = 'errOpen';
    const ERROR_PERM_DENIED = 'errPerm';
    const ERROR_REAUTH_REQUIRE = 'errReauthRequire';  // 'Re-authorization is required.'
    const ERROR_RENAME = 'errRename';
    const ERROR_REPLACE = 'errReplace';          // 'Unable to replace "$1".'
    const ERROR_RESIZE = 'errResize';
    const ERROR_RESIZESIZE = 'errResizeSize';
    const ERROR_RM = 'errRm';               // 'Unable to remove "$1".'
    const ERROR_RM_SRC = 'errRmSrc';            // 'Unable remove source file(s)'
    const ERROR_SAVE = 'errSave';
    const ERROR_SEARCH_TIMEOUT = 'errSearchTimeout';    // 'Timed out while searching "$1". Search result is partial.'
    const ERROR_SESSION_EXPIRES = 'errSessionExpires';
    const ERROR_TRGDIR_NOT_FOUND = 'errTrgFolderNotFound'; // 'Target folder "$1" not found.'
    const ERROR_UNKNOWN = 'errUnknown';
    const ERROR_UNKNOWN_CMD = 'errUnknownCmd';
    const ERROR_UNSUPPORT_TYPE = 'errUsupportType';
    const ERROR_UPLOAD = 'errUpload';           // 'Upload error.'
    const ERROR_UPLOAD_FILE = 'errUploadFile';       // 'Unable to upload "$1".'
    const ERROR_UPLOAD_FILE_MIME = 'errUploadMime';       // 'File type not allowed.'
    const ERROR_UPLOAD_FILE_SIZE = 'errUploadFileSize';   // 'File exceeds maximum allowed size.'
    const ERROR_UPLOAD_NO_FILES = 'errUploadNoFiles';    // 'No files found for upload.'
    const ERROR_UPLOAD_TEMP = 'errUploadTemp';       // 'Unable to make temporary file for upload.'
    const ERROR_UPLOAD_TOTAL_SIZE = 'errUploadTotalSize';  // 'Data exceeds the maximum allowed size.'
    const ERROR_UPLOAD_TRANSFER = 'errUploadTransfer';   // '"$1" transfer error.'
    const ERROR_MAX_MKDIRS = 'errMaxMkdirs'; // 'You can create up to $1 folders at one time.'

    /**
     * Constructor
     *
     * @param  array  elFinder and roots configurations
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct($opts)
    {
        // set default_charset
        if (version_compare(PHP_VERSION, '5.6', '>=')) {
            if (($_val = ini_get('iconv.internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('iconv.internal_encoding', '');
            }
            if (($_val = ini_get('mbstring.internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('mbstring.internal_encoding', '');
            }
            if (($_val = ini_get('internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('internal_encoding', '');
            }
        } else {
            if (function_exists('iconv_set_encoding') && strtoupper(iconv_get_encoding('internal_encoding')) !== 'UTF-8') {
                iconv_set_encoding('internal_encoding', 'UTF-8');
            }
            if (function_exists('mb_internal_encoding') && strtoupper(mb_internal_encoding()) !== 'UTF-8') {
                mb_internal_encoding('UTF-8');
            }
        }
        ini_set('default_charset', 'UTF-8');

        // define accept constant of server commands path
        !defined('ELFINDER_TAR_PATH') && define('ELFINDER_TAR_PATH', 'tar');
        !defined('ELFINDER_GZIP_PATH') && define('ELFINDER_GZIP_PATH', 'gzip');
        !defined('ELFINDER_BZIP2_PATH') && define('ELFINDER_BZIP2_PATH', 'bzip2');
        !defined('ELFINDER_XZ_PATH') && define('ELFINDER_XZ_PATH', 'xz');
        !defined('ELFINDER_ZIP_PATH') && define('ELFINDER_ZIP_PATH', 'zip');
        !defined('ELFINDER_UNZIP_PATH') && define('ELFINDER_UNZIP_PATH', 'unzip');
        !defined('ELFINDER_RAR_PATH') && define('ELFINDER_RAR_PATH', 'rar');
        // Create archive in RAR4 format even when using RAR5 library (true or false)
        !defined('ELFINDER_RAR_MA4') && define('ELFINDER_RAR_MA4', false);
        !defined('ELFINDER_UNRAR_PATH') && define('ELFINDER_UNRAR_PATH', 'unrar');
        !defined('ELFINDER_7Z_PATH') && define('ELFINDER_7Z_PATH', (substr(PHP_OS, 0, 3) === 'WIN') ? '7z' : '7za');
        !defined('ELFINDER_CONVERT_PATH') && define('ELFINDER_CONVERT_PATH', 'convert');
        !defined('ELFINDER_IDENTIFY_PATH') && define('ELFINDER_IDENTIFY_PATH', 'identify');
        !defined('ELFINDER_EXIFTRAN_PATH') && define('ELFINDER_EXIFTRAN_PATH', 'exiftran');
        !defined('ELFINDER_JPEGTRAN_PATH') && define('ELFINDER_JPEGTRAN_PATH', 'jpegtran');
        !defined('ELFINDER_FFMPEG_PATH') && define('ELFINDER_FFMPEG_PATH', 'ffmpeg');

        !defined('ELFINDER_DISABLE_ZIPEDITOR') && define('ELFINDER_DISABLE_ZIPEDITOR', false);

        // enable(true)/disable(false) handling postscript on ImageMagick
        // Should be `false` as long as there is a Ghostscript vulnerability
        // see https://artifex.com/news/ghostscript-security-resolved/
        !defined('ELFINDER_IMAGEMAGICK_PS') && define('ELFINDER_IMAGEMAGICK_PS', false);

        // for backward compat
        $this->version = (string)self::$ApiVersion;

        // set error handler of WARNING, NOTICE
        $errLevel = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR;
        if (defined('E_DEPRECATED')) {
            $errLevel |= E_DEPRECATED | E_USER_DEPRECATED;
        }
        // E_STRICT is deprecated; see https://wiki.php.net/rfc/deprecations_php_8_4#remove_e_strict_error_level_and_deprecate_e_strict_constant
        if (defined('E_STRICT')) {
            $errLevel |= @E_STRICT;
        }
        set_error_handler('elFinder::phpErrorHandler', $errLevel);

        // Associative array of file pointers to close at the end of script: ['temp file pointer' => true]
        $GLOBALS['elFinderTempFps'] = array();
        // Associative array of files to delete at the end of script: ['temp file path' => true]
        $GLOBALS['elFinderTempFiles'] = array();
         // Associative array of abort files to delete at the end of script: ['temp file path' => true]
        $GLOBALS['elFinderAbortFiles'] = array();
        // regist Shutdown function
        register_shutdown_function(array('elFinder', 'onShutdown'));

        // convert PATH_INFO to GET query
        if (!empty($_SERVER['PATH_INFO'])) {
            $_ps = explode('/', trim($_SERVER['PATH_INFO'], '/'));
            if (!isset($_GET['cmd'])) {
                $_cmd = $_ps[0];
                if (isset($this->commands[$_cmd])) {
                    $_GET['cmd'] = $_cmd;
                    $_i = 1;
                    foreach (array_keys($this->commands[$_cmd]) as $_k) {
                        if (isset($_ps[$_i])) {
                            if (!isset($_GET[$_k])) {
                                $_GET[$_k] = $_ps[$_i++];
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }

        // set elFinder instance
        elFinder::$instance = $this;

        // setup debug mode
        $this->debug = (isset($opts['debug']) && $opts['debug'] ? true : false);
        if ($this->debug) {
            error_reporting(defined('ELFINDER_DEBUG_ERRORLEVEL') ? ELFINDER_DEBUG_ERRORLEVEL : -1);
            ini_set('display_errors', '1');
            // clear output buffer and stop output filters
            while (ob_get_level() && ob_end_clean()) {
            }
        }

        if (!interface_exists('elFinderSessionInterface')) {
            include_once dirname(__FILE__) . '/elFinderSessionInterface.php';
        }

        // session handler
        if (!empty($opts['session']) && $opts['session'] instanceof elFinderSessionInterface) {
            $this->session = $opts['session'];
        } else {
            $sessionOpts = array(
                'base64encode' => !empty($opts['base64encodeSessionData']),
                'keys' => array(
                    'default' => !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches',
                    'netvolume' => !empty($opts['netVolumesSessionKey']) ? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes'
                )
            );
            if (!class_exists('elFinderSession')) {
                include_once dirname(__FILE__) . '/elFinderSession.php';
            }
            $this->session = new elFinderSession($sessionOpts);
        }
        // try session start | restart
        $this->session->start();

        // 'netmount' added to handle requests synchronously on unmount
        $sessionUseCmds = array('netmount');
        if (isset($opts['sessionUseCmds']) && is_array($opts['sessionUseCmds'])) {
            $sessionUseCmds = array_merge($sessionUseCmds, $opts['sessionUseCmds']);
        }

        // set self::$volumesCnt by HTTP header "X-elFinder-VolumesCntStart"
        if (isset($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']) && ($volumesCntStart = intval($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']))) {
            self::$volumesCnt = $volumesCntStart;
        }

        $this->time = $this->utime();
        $this->sessionCloseEarlier = isset($opts['sessionCloseEarlier']) ? (bool)$opts['sessionCloseEarlier'] : true;
        $this->sessionUseCmds = array_flip($sessionUseCmds);
        $this->timeout = (isset($opts['timeout']) ? $opts['timeout'] : 0);
        $this->uploadTempPath = (isset($opts['uploadTempPath']) ? $opts['uploadTempPath'] : '');
        $this->callbackWindowURL = (isset($opts['callbackWindowURL']) ? $opts['callbackWindowURL'] : '');
        $this->maxTargets = (isset($opts['maxTargets']) ? intval($opts['maxTargets']) : $this->maxTargets);
        elFinder::$commonTempPath = (isset($opts['commonTempPath']) ? realpath($opts['commonTempPath']) : dirname(__FILE__) . '/.tmp');
        if (!is_writable(elFinder::$commonTempPath)) {
            elFinder::$commonTempPath = sys_get_temp_dir();
            if (!is_writable(elFinder::$commonTempPath)) {
                elFinder::$commonTempPath = '';
            }
        }
        if (isset($opts['connectionFlagsPath']) && is_writable($opts['connectionFlagsPath'] = realpath($opts['connectionFlagsPath']))) {
            elFinder::$connectionFlagsPath = $opts['connectionFlagsPath'];
        } else {
            elFinder::$connectionFlagsPath = elFinder::$commonTempPath;
        }

        if (!empty($opts['tmpLinkPath'])) {
            elFinder::$tmpLinkPath = realpath($opts['tmpLinkPath']);
        }
        if (!empty($opts['tmpLinkUrl'])) {
            elFinder::$tmpLinkUrl = $opts['tmpLinkUrl'];
        }
        if (!empty($opts['tmpLinkLifeTime'])) {
            elFinder::$tmpLinkLifeTime = $opts['tmpLinkLifeTime'];
        }
        if (!empty($opts['textMimes']) && is_array($opts['textMimes'])) {
            elfinder::$textMimes = $opts['textMimes'];
        }
        if (!empty($opts['urlUploadFilter'])) {
            $this->urlUploadFilter = $opts['urlUploadFilter'];
        }
        $this->maxArcFilesSize = isset($opts['maxArcFilesSize']) ? intval($opts['maxArcFilesSize']) : 0;
        $this->optionsNetVolumes = (isset($opts['optionsNetVolumes']) && is_array($opts['optionsNetVolumes'])) ? $opts['optionsNetVolumes'] : array();
        if (isset($opts['itemLockExpire'])) {
            $this->itemLockExpire = intval($opts['itemLockExpire']);
        }

        if (!empty($opts['uploadAllowedLanIpClasses'])) {
            $this->uploadAllowedLanIpClasses = array_flip($opts['uploadAllowedLanIpClasses']);
        }

        // deprecated settings
        $this->netVolumesSessionKey = !empty($opts['netVolumesSessionKey']) ? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes';
        self::$sessionCacheKey = !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches';

        // check session cache
        $_optsMD5 = md5(json_encode($opts['roots']));
        if ($this->session->get('_optsMD5') !== $_optsMD5) {
            $this->session->set('_optsMD5', $_optsMD5);
        }

        // setlocale and global locale regists to elFinder::locale
        self::$locale = !empty($opts['locale']) ? $opts['locale'] : (substr(PHP_OS, 0, 3) === 'WIN' ? 'C' : 'en_US.UTF-8');
        if (false === setlocale(LC_ALL, self::$locale)) {
            self::$locale = setlocale(LC_ALL, '0');
        }

        // set defaultMimefile
        elFinder::$defaultMimefile = isset($opts['defaultMimefile']) ? $opts['defaultMimefile'] : '';

        // set memoryLimitGD
        elFinder::$memoryLimitGD = isset($opts['memoryLimitGD']) ? $opts['memoryLimitGD'] : 0;

        // set flag of throwErrorOnExec
        // `true` need `try{}` block for `$connector->run();`
        $this->throwErrorOnExec = !empty($opts['throwErrorOnExec']);

        // set archivers
        elFinder::$archivers = isset($opts['archivers']) && is_array($opts['archivers']) ? $opts['archivers'] : array();

        // set utf8Encoder
        if (isset($opts['utf8Encoder']) && is_callable($opts['utf8Encoder'])) {
            $this->utf8Encoder = $opts['utf8Encoder'];
        }

        // for LocalFileSystem driver on Windows server
        if (DIRECTORY_SEPARATOR !== '/') {
            if (empty($opts['bind'])) {
                $opts['bind'] = array();
            }

            $_key = 'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre';
            if (!isset($opts['bind'][$_key])) {
                $opts['bind'][$_key] = array();
            }
            array_push($opts['bind'][$_key], 'Plugin.WinRemoveTailDots.cmdPreprocess');

            $_key = 'upload.presave paste.copyfrom';
            if (!isset($opts['bind'][$_key])) {
                $opts['bind'][$_key] = array();
            }
            array_push($opts['bind'][$_key], 'Plugin.WinRemoveTailDots.onUpLoadPreSave');
        }

        // bind events listeners
        if (!empty($opts['bind']) && is_array($opts['bind'])) {
            $_req = $_SERVER["REQUEST_METHOD"] == 'POST' ? $_POST : $_GET;
            $_reqCmd = isset($_req['cmd']) ? $_req['cmd'] : '';
            foreach ($opts['bind'] as $cmd => $handlers) {
                $doRegist = (strpos($cmd, '*') !== false);
                if (!$doRegist) {
                    $doRegist = ($_reqCmd && in_array($_reqCmd, array_map('elFinder::getCmdOfBind', explode(' ', $cmd))));
                }
                if ($doRegist) {
                    // for backward compatibility
                    if (!is_array($handlers)) {
                        $handlers = array($handlers);
                    } else {
                        if (count($handlers) === 2 && is_callable($handlers)) {
                            $handlers = array($handlers);
                        }
                    }
                    foreach ($handlers as $handler) {
                        if ($handler) {
                            if (is_string($handler) && strpos($handler, '.')) {
                                list($_domain, $_name, $_method) = array_pad(explode('.', $handler), 3, '');
                                if (strcasecmp($_domain, 'plugin') === 0) {
                                    if ($plugin = $this->getPluginInstance($_name, isset($opts['plugin'][$_name]) ? $opts['plugin'][$_name] : array())
                                        and method_exists($plugin, $_method)) {
                                        $this->bind($cmd, array($plugin, $_method));
                                    }
                                }
                            } else {
                                $this->bind($cmd, $handler);
                            }
                        }
                    }
                }
            }
        }

        if (!isset($opts['roots']) || !is_array($opts['roots'])) {
            $opts['roots'] = array();
        }

        // try to enable elFinderVolumeFlysystemZipArchiveNetmount to zip editing
        if (empty(elFinder::$netDrivers['ziparchive'])) {
            elFinder::$netDrivers['ziparchive'] = 'FlysystemZipArchiveNetmount';
        }

        // check for net volumes stored in session
        $netVolumes = $this->getNetVolumes();
        foreach ($netVolumes as $key => $root) {
            if (!isset($root['id'])) {
                // given fixed unique id
                if (!$root['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
                    $this->mountErrors[] = 'Netmount Driver "' . $root['driver'] . '" : Could\'t given volume id.';
                    continue;
                }
            }
            $root['_isNetVolume'] = true;
            $opts['roots'][$key] = $root;
        }

        // "mount" volumes
        foreach ($opts['roots'] as $i => $o) {
            $class = 'elFinderVolume' . (isset($o['driver']) ? $o['driver'] : '');

            if (class_exists($class)) {
                /* @var elFinderVolumeDriver $volume */
                $volume = new $class();

                try {
                    if ($this->maxArcFilesSize && (empty($o['maxArcFilesSize']) || $this->maxArcFilesSize < $o['maxArcFilesSize'])) {
                        $o['maxArcFilesSize'] = $this->maxArcFilesSize;
                    }
                    // pass session handler
                    $volume->setSession($this->session);
                    if (!$this->default) {
                        $volume->setNeedOnline(true);
                    }
                    if ($volume->mount($o)) {
                        // unique volume id (ends on "_") - used as prefix to files hash
                        $id = $volume->id();

                        $this->volumes[$id] = $volume;
                        if ((!$this->default || $volume->root() !== $volume->defaultPath()) && $volume->isReadable()) {
                            $this->default = $volume;
                        }
                    } else {
                        if (!empty($o['_isNetVolume'])) {
                            $this->removeNetVolume($i, $volume);
                        }
                        $this->mountErrors[] = 'Driver "' . $class . '" : ' . implode(' ', $volume->error());
                    }
                } catch (Exception $e) {
                    if (!empty($o['_isNetVolume'])) {
                        $this->removeNetVolume($i, $volume);
                    }
                    $this->mountErrors[] = 'Driver "' . $class . '" : ' . $e->getMessage();
                }
            } else {
                if (!empty($o['_isNetVolume'])) {
                    $this->removeNetVolume($i, $volume);
                }
                $this->mountErrors[] = 'Driver "' . $class . '" does not exist';
            }
        }

        // if at least one readable volume - ii desu >_<
        $this->loaded = !empty($this->default);

        // restore error handler for now
        restore_error_handler();
    }

    /**
     * Return elFinder session wrapper instance
     *
     * @return  elFinderSessionInterface
     **/
    public function getSession()
    {
        return $this->session;
    }

    /**
     * Return true if fm init correctly
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function loaded()
    {
        return $this->loaded;
    }

    /**
     * Return version (api) number
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function version()
    {
        return self::$ApiVersion;
    }

    /**
     * Return revision (api) number
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function revision()
    {
        return self::$ApiRevision;
    }

    /**
     * Add handler to elFinder command
     *
     * @param  string  command name
     * @param  string|array  callback name or array(object, method)
     *
     * @return elFinder
     * @author Dmitry (dio) Levashov
     **/
    public function bind($cmd, $handler)
    {
        $allCmds = array_keys($this->commands);
        $cmds = array();
        foreach (explode(' ', $cmd) as $_cmd) {
            if ($_cmd !== '') {
                if ($all = strpos($_cmd, '*') !== false) {
                    list(, $sub) = array_pad(explode('.', $_cmd), 2, '');
                    if ($sub) {
                        $sub = str_replace('\'', '\\\'', $sub);
                        $subs = array_fill(0, count($allCmds), $sub);
                        $cmds = array_merge($cmds, array_map(array('elFinder', 'addSubToBindName'), $allCmds, $subs));
                    } else {
                        $cmds = array_merge($cmds, $allCmds);
                    }
                } else {
                    $cmds[] = $_cmd;
                }
            }
        }
        $cmds = array_unique($cmds);

        foreach ($cmds as $cmd) {
            if (!isset($this->listeners[$cmd])) {
                $this->listeners[$cmd] = array();
            }

            if (is_callable($handler)) {
                $this->listeners[$cmd][] = $handler;
            }
        }

        return $this;
    }

    /**
     * Remove event (command exec) handler
     *
     * @param  string  command name
     * @param  string|array  callback name or array(object, method)
     *
     * @return elFinder
     * @author Dmitry (dio) Levashov
     **/
    public function unbind($cmd, $handler)
    {
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $i => $h) {
                if ($h === $handler) {
                    unset($this->listeners[$cmd][$i]);
                    return $this;
                }
            }
        }
        return $this;
    }

    /**
     * Trigger binded functions
     *
     * @param      string  $cmd     binded command name
     * @param      array   $vars    variables to pass to listeners
     * @param      array   $errors  array into which the error is written
     */
    public function trigger($cmd, $vars, &$errors)
    {
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $handler) {
                $_res = call_user_func_array($handler, $vars);
                if ($_res && is_array($_res)) {
                    $_err = !empty($_res['error'])? $_res['error'] : (!empty($_res['warning'])? $_res['warning'] : null);
                    if ($_err) {
                        if (is_array($_err)) {
                            $errors = array_merge($errors, $_err);
                        } else {
                            $errors[] = (string)$_err;
                        }
                        if ($_res['error']) {
                            throw new elFinderTriggerException();
                        }
                    }
                }
            }
        }
    }

    /**
     * Return true if command exists
     *
     * @param  string  command name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function commandExists($cmd)
    {
        return $this->loaded && isset($this->commands[$cmd]) && method_exists($this, $cmd);
    }

    /**
     * Return root - file's owner (public func of volume())
     *
     * @param  string  file hash
     *
     * @return elFinderVolumeDriver
     * @author Naoki Sawada
     */
    public function getVolume($hash)
    {
        return $this->volume($hash);
    }

    /**
     * Return command required arguments info
     *
     * @param  string  command name
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function commandArgsList($cmd)
    {
        if ($this->commandExists($cmd)) {
            $list = $this->commands[$cmd];
            $list['reqid'] = false;
        } else {
            $list = array();
        }
        return $list;
    }

    private function session_expires()
    {

        if (!$last = $this->session->get(':LAST_ACTIVITY')) {
            $this->session->set(':LAST_ACTIVITY', time());
            return false;
        }

        if (($this->timeout > 0) && (time() - $last > $this->timeout)) {
            return true;
        }

        $this->session->set(':LAST_ACTIVITY', time());
        return false;
    }

    /**
     * Exec command and return result
     *
     * @param  string $cmd  command name
     * @param  array  $args command arguments
     *
     * @return array
     * @throws elFinderAbortException|Exception
     * @author Dmitry (dio) Levashov
     **/
    public function exec($cmd, $args)
    {
        // set error handler of WARNING, NOTICE
        set_error_handler('elFinder::phpErrorHandler', E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE);

        // set current request args
        self::$currentArgs = $args;

        if (!$this->loaded) {
            return array('error' => $this->error(self::ERROR_CONF, self::ERROR_CONF_NO_VOL));
        }

        if ($this->session_expires()) {
            return array('error' => $this->error(self::ERROR_SESSION_EXPIRES));
        }

        if (!$this->commandExists($cmd)) {
            return array('error' => $this->error(self::ERROR_UNKNOWN_CMD));
        }

        // check request id
        $args['reqid'] = preg_replace('[^0-9a-fA-F]', '', !empty($args['reqid']) ? $args['reqid'] : (!empty($_SERVER['HTTP_X_ELFINDERREQID']) ? $_SERVER['HTTP_X_ELFINDERREQID'] : ''));

        // to abort this request
        if ($cmd === 'abort') {
            $this->abort($args);
            return array('error' => 0);
        }

        // make flag file and set self::$abortCheckFile
        if ($args['reqid']) {
            $this->abort(array('makeFile' => $args['reqid']));
        }

        if (!empty($args['mimes']) && is_array($args['mimes'])) {
            foreach ($this->volumes as $id => $v) {
                $this->volumes[$id]->setMimesFilter($args['mimes']);
            }
        }

        // regist shutdown function as fallback
        register_shutdown_function(array($this, 'itemAutoUnlock'));

        // detect destination dirHash and volume
        $dstVolume = false;
        $dst = !empty($args['target']) ? $args['target'] : (!empty($args['dst']) ? $args['dst'] : '');
        if ($dst) {
            $dstVolume = $this->volume($dst);
        } else if (isset($args['targets']) && is_array($args['targets']) && isset($args['targets'][0])) {
            $dst = $args['targets'][0];
            $dstVolume = $this->volume($dst);
            if ($dstVolume && ($_stat = $dstVolume->file($dst)) && !empty($_stat['phash'])) {
                $dst = $_stat['phash'];
            } else {
                $dst = '';
            }
        } else if ($cmd === 'open') {
            // for initial open without args `target`
            $dstVolume = $this->default;
            $dst = $dstVolume->defaultPath();
        }

        $result = null;

        // call pre handlers for this command
        $args['sessionCloseEarlier'] = isset($this->sessionUseCmds[$cmd]) ? false : $this->sessionCloseEarlier;
        if (!empty($this->listeners[$cmd . '.pre'])) {
            foreach ($this->listeners[$cmd . '.pre'] as $handler) {
                $_res = call_user_func_array($handler, array($cmd, &$args, $this, $dstVolume));
                if (is_array($_res)) {
                    if (!empty($_res['preventexec'])) {
                        $result = array('error' => true);
                        if ($cmd === 'upload' && !empty($args['node'])) {
                            $result['callback'] = array(
                                'node' => $args['node'],
                                'bind' => $cmd
                            );
                        }
                        if (!empty($_res['results']) && is_array($_res['results'])) {
                            $result = array_merge($result, $_res['results']);
                        }
                        break;
                    }
                }
            }
        }

        // unlock session data for multiple access
        if ($this->sessionCloseEarlier && $args['sessionCloseEarlier']) {
            $this->session->close();
            // deprecated property
            elFinder::$sessionClosed = true;
        }

        if (substr(PHP_OS, 0, 3) === 'WIN') {
            // set time out
            elFinder::extendTimeLimit(300);
        }

        if (!is_array($result)) {
            try {
                $result = $this->$cmd($args);
            } catch (elFinderAbortException $e) {
                throw $e;
            } catch (Exception $e) {
                $result = array(
                    'error' => htmlspecialchars($e->getMessage()),
                    'sync' => true
                );
                if ($this->throwErrorOnExec) {
                    throw $e;
                }
            }
        }

        // check change dstDir
        $changeDst = false;
        if ($dst && $dstVolume && (!empty($result['added']) || !empty($result['removed']))) {
            $changeDst = true;
        }

        foreach ($this->volumes as $volume) {
            $removed = $volume->removed();
            if (!empty($removed)) {
                if (!isset($result['removed'])) {
                    $result['removed'] = array();
                }
                $result['removed'] = array_merge($result['removed'], $removed);
                if (!$changeDst && $dst && $dstVolume && $volume === $dstVolume) {
                    $changeDst = true;
                }
            }
            $added = $volume->added();
            if (!empty($added)) {
                if (!isset($result['added'])) {
                    $result['added'] = array();
                }
                $result['added'] = array_merge($result['added'], $added);
                if (!$changeDst && $dst && $dstVolume && $volume === $dstVolume) {
                    $changeDst = true;
                }
            }
            $volume->resetResultStat();
        }

        // dstDir is changed
        if ($changeDst) {
            if ($dstDir = $dstVolume->dir($dst)) {
                if (!isset($result['changed'])) {
                    $result['changed'] = array();
                }
                $result['changed'][] = $dstDir;
            }
        }

        // call handlers for this command
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $handler) {
                if (call_user_func_array($handler, array($cmd, &$result, $args, $this, $dstVolume))) {
                    // handler return true to force sync client after command completed
                    $result['sync'] = true;
                }
            }
        }

        // replace removed files info with removed files hashes
        if (!empty($result['removed'])) {
            $removed = array();
            foreach ($result['removed'] as $file) {
                $removed[] = $file['hash'];
            }
            $result['removed'] = array_unique($removed);
        }
        // remove hidden files and filter files by mimetypes
        if (!empty($result['added'])) {
            $result['added'] = $this->filter($result['added']);
        }
        // remove hidden files and filter files by mimetypes
        if (!empty($result['changed'])) {
            $result['changed'] = $this->filter($result['changed']);
        }
        // add toasts
        if ($this->toastMessages) {
            $result['toasts'] = array_merge(((isset($result['toasts']) && is_array($result['toasts']))? $result['toasts'] : array()), $this->toastMessages);
        }

        if ($this->debug || !empty($args['debug'])) {
            $result['debug'] = array(
                'connector' => 'php',
                'phpver' => PHP_VERSION,
                'time' => $this->utime() - $this->time,
                'memory' => (function_exists('memory_get_peak_usage') ? ceil(memory_get_peak_usage() / 1024) . 'Kb / ' : '') . ceil(memory_get_usage() / 1024) . 'Kb / ' . ini_get('memory_limit'),
                'upload' => $this->uploadDebug,
                'volumes' => array(),
                'mountErrors' => $this->mountErrors
            );

            foreach ($this->volumes as $id => $volume) {
                $result['debug']['volumes'][] = $volume->debug();
            }
        }

        // remove sesstion var 'urlContentSaveIds'
        if ($this->removeContentSaveIds) {
            $urlContentSaveIds = $this->session->get('urlContentSaveIds', array());
            foreach (array_keys($this->removeContentSaveIds) as $contentSaveId) {
                if (isset($urlContentSaveIds[$contentSaveId])) {
                    unset($urlContentSaveIds[$contentSaveId]);
                }
            }
            if ($urlContentSaveIds) {
                $this->session->set('urlContentSaveIds', $urlContentSaveIds);
            } else {
                $this->session->remove('urlContentSaveIds');
            }
        }

        foreach ($this->volumes as $volume) {
            $volume->saveSessionCache();
            $volume->umount();
        }

        // unlock locked items
        $this->itemAutoUnlock();

        // custom data
        if ($this->customData !== null) {
            $result['customData'] = $this->customData ? json_encode($this->customData) : '';
        }

        if (!empty($result['debug'])) {
            $result['debug']['backendErrors'] = elFinder::$phpErrors;
        }
        elFinder::$phpErrors = array();
        restore_error_handler();

        if (!empty($result['callback'])) {
            $result['callback']['json'] = json_encode($result);
            $this->callback($result['callback']);
            return array();
        } else {
            return $result;
        }
    }

    /**
     * Return file real path
     *
     * @param  string $hash file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function realpath($hash)
    {
        if (($volume = $this->volume($hash)) == false) {
            return false;
        }
        return $volume->realpath($hash);
    }

    /**
     * Sets custom data(s).
     *
     * @param  string|array $key The key or data array
     * @param  mixed        $val The value
     *
     * @return self    ( elFinder instance )
     */
    public function setCustomData($key, $val = null)
    {
        if (is_array($key)) {
            foreach ($key as $k => $v) {
                $this->customData[$k] = $v;
            }
        } else {
            $this->customData[$key] = $val;
        }
        return $this;
    }

    /**
     * Removes a custom data.
     *
     * @param  string $key The key
     *
     * @return self    ( elFinder instance )
     */
    public function removeCustomData($key)
    {
        $this->customData[$key] = null;
        return $this;
    }

    /**
     * Update sesstion value of a NetVolume option
     *
     * @param string $netKey
     * @param string $optionKey
     * @param mixed  $val
     *
     * @return bool
     */
    public function updateNetVolumeOption($netKey, $optionKey, $val)
    {
        $netVolumes = $this->getNetVolumes();
        if (is_string($netKey) && isset($netVolumes[$netKey]) && is_string($optionKey)) {
            $netVolumes[$netKey][$optionKey] = $val;
            $this->saveNetVolumes($netVolumes);
            return true;
        }
        return false;
    }

    /**
     * remove of session var "urlContentSaveIds"
     *
     * @param string $id
     */
    public function removeUrlContentSaveId($id)
    {
        $this->removeContentSaveIds[$id] = true;
    }

    /**
     * Return network volumes config.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function getNetVolumes()
    {
        if ($data = $this->session->get('netvolume', array())) {
            return $data;
        }
        return array();
    }

    /**
     * Save network volumes config.
     *
     * @param  array $volumes volumes config
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function saveNetVolumes($volumes)
    {
        $this->session->set('netvolume', $volumes);
    }

    /**
     * Remove netmount volume
     *
     * @param string $key    netvolume key
     * @param object $volume volume driver instance
     *
     * @return bool
     */
    protected function removeNetVolume($key, $volume)
    {
        $netVolumes = $this->getNetVolumes();
        $res = true;
        if (is_object($volume) && method_exists($volume, 'netunmount')) {
            $res = $volume->netunmount($netVolumes, $key);
            $volume->clearSessionCache();
        }
        if ($res) {
            if (is_string($key) && isset($netVolumes[$key])) {
                unset($netVolumes[$key]);
                $this->saveNetVolumes($netVolumes);
                return true;
            }
        }
        return false;
    }

    /**
     * Get plugin instance & set to $this->plugins
     *
     * @param  string $name Plugin name (dirctory name)
     * @param  array  $opts Plugin options (optional)
     *
     * @return object | bool Plugin object instance Or false
     * @author Naoki Sawada
     */
    protected function getPluginInstance($name, $opts = array())
    {
        $key = strtolower($name);
        if (!isset($this->plugins[$key])) {
            $class = 'elFinderPlugin' . $name;
            // to try auto load
            if (!class_exists($class)) {
                $p_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . 'plugin.php';
                if (is_file($p_file)) {
                    include_once $p_file;
                }
            }
            if (class_exists($class, false)) {
                $this->plugins[$key] = new $class($opts);
            } else {
                $this->plugins[$key] = false;
            }
        }
        return $this->plugins[$key];
    }

    /***************************************************************************/
    /*                                 commands                                */
    /***************************************************************************/

    /**
     * Normalize error messages
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function error()
    {
        $errors = array();

        foreach (func_get_args() as $msg) {
            if (is_array($msg)) {
                $errors = array_merge($errors, $msg);
            } else {
                $errors[] = $msg;
            }
        }

        return count($errors) ? $errors : array(self::ERROR_UNKNOWN);
    }

    /**
     * @param $args
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function netmount($args)
    {
        $options = array();
        $protocol = $args['protocol'];
        $toast = '';

        if ($protocol === 'netunmount') {
            if (!empty($args['user']) && $volume = $this->volume($args['user'])) {
                if ($this->removeNetVolume($args['host'], $volume)) {
                    return array('removed' => array(array('hash' => $volume->root())));
                }
            }
            return array('sync' => true, 'error' => $this->error(self::ERROR_NETUNMOUNT));
        }

        $driver = isset(self::$netDrivers[$protocol]) ? self::$netDrivers[$protocol] : '';
        $class = 'elFinderVolume' . $driver;

        if (!class_exists($class)) {
            return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], self::ERROR_NETMOUNT_NO_DRIVER));
        }

        if (!$args['path']) {
            $args['path'] = '/';
        }

        foreach ($args as $k => $v) {
            if ($k != 'options' && $k != 'protocol' && $v) {
                $options[$k] = $v;
            }
        }

        if (is_array($args['options'])) {
            foreach ($args['options'] as $key => $value) {
                $options[$key] = $value;
            }
        }

        /* @var elFinderVolumeDriver $volume */
        $volume = new $class();

        // pass session handler
        $volume->setSession($this->session);

        $volume->setNeedOnline(true);

        if (is_callable(array($volume, 'netmountPrepare'))) {
            $options = $volume->netmountPrepare($options);
            if (isset($options['exit'])) {
                if ($options['exit'] === 'callback') {
                    $this->callback($options['out']);
                }
                return $options;
            }
            if (!empty($options['toast'])) {
                $toast = $options['toast'];
                unset($options['toast']);
            }
        }

        $netVolumes = $this->getNetVolumes();

        if (!isset($options['id'])) {
            // given fixed unique id
            if (!$options['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
                return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], 'Could\'t given volume id.'));
            }
        }

        // load additional volume root options
        if (!empty($this->optionsNetVolumes['*'])) {
            $options = array_merge($this->optionsNetVolumes['*'], $options);
        }
        if (!empty($this->optionsNetVolumes[$protocol])) {
            $options = array_merge($this->optionsNetVolumes[$protocol], $options);
        }

        if (!$key = $volume->netMountKey) {
            $key = md5($protocol . '-' . serialize($options));
        }
        $options['netkey'] = $key;

        if (!isset($netVolumes[$key]) && $volume->mount($options)) {
            // call post-process function of netmount
            if (is_callable(array($volume, 'postNetmount'))) {
                $volume->postNetmount($options);
            }
            $options['driver'] = $driver;
            $netVolumes[$key] = $options;
            $this->saveNetVolumes($netVolumes);
            $rootstat = $volume->file($volume->root());
            $res = array('added' => array($rootstat));
            if ($toast) {
                $res['toast'] = $toast;
            }
            return $res;
        } else {
            $this->removeNetVolume(null, $volume);
            return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], implode(' ', $volume->error())));
        }
    }

    /**
     * "Open" directory
     * Return array with following elements
     *  - cwd          - opened dir info
     *  - files        - opened dir content [and dirs tree if $args[tree]]
     *  - api          - api version (if $args[init])
     *  - uplMaxSize   - if $args[init]
     *  - error        - on failed
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function open($args)
    {
        $target = $args['target'];
        $init = !empty($args['init']);
        $tree = !empty($args['tree']);
        $volume = $this->volume($target);
        $cwd = $volume ? $volume->dir($target) : false;
        $hash = $init ? 'default folder' : '#' . $target;
        $compare = '';

        // on init request we can get invalid dir hash -
        // dir which can not be opened now, but remembered by client,
        // so open default dir
        if ((!$cwd || !$cwd['read']) && $init) {
            $volume = $this->default;
            $target = $volume->defaultPath();
            $cwd = $volume->dir($target);
        }

        if (!$cwd) {
            return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_DIR_NOT_FOUND));
        }
        if (!$cwd['read']) {
            return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_PERM_DENIED));
        }

        $files = array();

        // get current working directory files list
        if (($ls = $volume->scandir($cwd['hash'])) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
        }

        if (isset($cwd['dirs']) && $cwd['dirs'] != 1) {
            $cwd = $volume->dir($target);
        }

        // get other volume root
        if ($tree) {
            foreach ($this->volumes as $id => $v) {
                $files[] = $v->file($v->root());
            }
        }

        // long polling mode
        if ($args['compare']) {
            $sleep = max(1, (int)$volume->getOption('lsPlSleep'));
            $standby = (int)$volume->getOption('plStandby');
            if ($standby > 0 && $sleep > $standby) {
                $standby = $sleep;
            }
            $limit = max(0, floor($standby / $sleep)) + 1;
            do {
                elFinder::extendTimeLimit(30 + $sleep);
                $_mtime = 0;
                foreach ($ls as $_f) {
                    if (isset($_f['ts'])) {
                        $_mtime = max($_mtime, $_f['ts']);
                    }
                }
                $compare = strval(count($ls)) . ':' . strval($_mtime);
                if ($compare !== $args['compare']) {
                    break;
                }
                if (--$limit) {
                    sleep($sleep);
                    $volume->clearstatcache();
                    if (($ls = $volume->scandir($cwd['hash'])) === false) {
                        break;
                    }
                }
            } while ($limit);
            if ($ls === false) {
                return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
            }
        }

        if ($ls) {
            if ($files) {
                $files = array_merge($files, $ls);
            } else {
                $files = $ls;
            }
        }

        $result = array(
            'cwd' => $cwd,
            'options' => $volume->options($cwd['hash']),
            'files' => $files
        );

        if ($compare) {
            $result['cwd']['compare'] = $compare;
        }

        if (!empty($args['init'])) {
            $result['api'] = sprintf('%.1F%03d', self::$ApiVersion, self::$ApiRevision);
            $result['uplMaxSize'] = ini_get('upload_max_filesize');
            $result['uplMaxFile'] = ini_get('max_file_uploads');
            $result['netDrivers'] = array_keys(self::$netDrivers);
            $result['maxTargets'] = $this->maxTargets;
            if ($volume) {
                $result['cwd']['root'] = $volume->root();
            }
            if (elfinder::$textMimes) {
                $result['textMimes'] = elfinder::$textMimes;
            }
        }

        return $result;
    }

    /**
     * Return dir files names list
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function ls($args)
    {
        $target = $args['target'];
        $intersect = isset($args['intersect']) ? $args['intersect'] : array();

        if (($volume = $this->volume($target)) == false
            || ($list = $volume->ls($target, $intersect)) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }
        return array('list' => $list);
    }

    /**
     * Return subdirs for required directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function tree($args)
    {
        $target = $args['target'];

        if (($volume = $this->volume($target)) == false
            || ($tree = $volume->tree($target)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }

        return array('tree' => $tree);
    }

    /**
     * Return parents dir for required directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function parents($args)
    {
        $target = $args['target'];
        $until = $args['until'];

        if (($volume = $this->volume($target)) == false
            || ($tree = $volume->parents($target, false, $until)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }

        return array('tree' => $tree);
    }

    /**
     * Return new created thumbnails list
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function tmb($args)
    {

        $result = array('images' => array());
        $targets = $args['targets'];

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) != false
                && (($tmb = $volume->tmb($target)) != false)) {
                $result['images'][$target] = $tmb;
            }
        }
        return $result;
    }

    /**
     * Download files/folders as an archive file
     * 1st: Return srrsy contains download archive file info
     * 2nd: Return array contains opened file pointer, root itself and required headers
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws Exception
     * @author Naoki Sawada
     */
    protected function zipdl($args)
    {
        $targets = $args['targets'];
        $download = !empty($args['download']);
        $h404 = 'HTTP/1.x 404 Not Found';
        $CriOS = isset($_SERVER['HTTP_USER_AGENT'])? (strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) : false;

        if (!$download) {
            //1st: Return array contains download archive file info
            $error = array(self::ERROR_ARCHIVE);
            if (($volume = $this->volume($targets[0])) !== false) {
                if ($dlres = $volume->zipdl($targets)) {
                    $path = $dlres['path'];
                    register_shutdown_function(array('elFinder', 'rmFileInDisconnected'), $path);
                    if (count($targets) === 1) {
                        $name = basename($volume->path($targets[0]));
                    } else {
                        $name = $dlres['prefix'] . '_Files';
                    }
                    $name .= '.' . $dlres['ext'];
                    $uniqid = uniqid();
                    $this->session->set('zipdl' . $uniqid, basename($path));
                    $result = array(
                        'zipdl' => array(
                            'file' => $CriOS? basename($path) : $uniqid,
                            'name' => $name,
                            'mime' => $dlres['mime']
                        )
                    );
                    return $result;
                }
                $error = array_merge($error, $volume->error());
            }
            return array('error' => $error);
        } else {
            // 2nd: Return array contains opened file session key, root itself and required headers

            // Detect Chrome on iOS
            // It has access twice on downloading
            $CriOSinit = false;
            if ($CriOS) {
                $accept = isset($_SERVER['HTTP_ACCEPT'])? $_SERVER['HTTP_ACCEPT'] : '';
                if ($accept && $accept !== '*' && $accept !== '*/*') {
                    $CriOSinit = true;
                }
            }
            // data check
            if (count($targets) !== 4 || ($volume = $this->volume($targets[0])) == false || !($file = $CriOS? $targets[1] : $this->session->get('zipdl' . $targets[1]))) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            $path = $volume->getTempPath() . DIRECTORY_SEPARATOR . basename($file);
            // remove session data of "zipdl..."
            $this->session->remove('zipdl' . $targets[1]);
            if (!$CriOSinit) {
                // register auto delete on shutdown
                $GLOBALS['elFinderTempFiles'][$path] = true;
            }
            if ($volume->commandDisabled('zipdl')) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            if (!is_readable($path) || !is_writable($path)) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            // for HTTP headers
            $name = $targets[2];
            $mime = $targets[3];

            $filenameEncoded = rawurlencode($name);
            if (strpos($filenameEncoded, '%') === false) { // ASCII only
                $filename = 'filename="' . $name . '"';
            } else {
                $ua = $_SERVER['HTTP_USER_AGENT'];
                if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
                    $filename = 'filename="' . $filenameEncoded . '"';
                } elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
                    $filename = 'filename="' . str_replace('"', '', $name) . '"';
                } else { // RFC 6266 (RFC 2231/RFC 5987)
                    $filename = 'filename*=UTF-8\'\'' . $filenameEncoded;
                }
            }

            $fp = fopen($path, 'rb');
            $file = fstat($fp);
            $result = array(
                'pointer' => $fp,
                'header' => array(
                    'Content-Type: ' . $mime,
                    'Content-Disposition: attachment; ' . $filename,
                    'Content-Transfer-Encoding: binary',
                    'Content-Length: ' . $file['size'],
                    'Accept-Ranges: none',
                    'Connection: close'
                )
            );
            // add cache control headers
            if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
                $result['header'] = array_merge($result['header'], $cacheHeaders);
            }
            return $result;
        }
    }

    /**
     * Required to output file in browser when volume URL is not set
     * Return array contains opened file pointer, root itself and required headers
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function file($args)
    {
        $target = $args['target'];
        $download = !empty($args['download']);
        $onetime = !empty($args['onetime']);
        //$h304     = 'HTTP/1.1 304 Not Modified';
        $h403 = 'HTTP/1.0 403 Access Denied';
        $a403 = array('error' => 'Access Denied', 'header' => $h403, 'raw' => true);
        $h404 = 'HTTP/1.0 404 Not Found';
        $a404 = array('error' => 'File not found', 'header' => $h404, 'raw' => true);

        if ($onetime) {
            $volume = null;
            $tmpdir = elFinder::$commonTempPath;
            if (!$tmpdir || !is_file($tmpf = $tmpdir . DIRECTORY_SEPARATOR . 'ELF' . basename($target))) {
                return $a404;
            }
            $GLOBALS['elFinderTempFiles'][$tmpf] = true;
            if ($file = json_decode(file_get_contents($tmpf), true)) {
                $src = $tmpdir . DIRECTORY_SEPARATOR . basename(base64_decode($file['file']));
                if (!is_file($src) || !($fp = fopen($src, 'rb'))) {
                    return $a404;
                }
                $GLOBALS['elFinderTempFiles'][$src] = true;
                
                unset($file['file']);
                $file['read'] = true;
                $file['size'] = filesize($src);
            } else {
                return $a404;
            }
        } else {
            if (($volume = $this->volume($target)) == false) {
                return $a404;
            }

            if ($volume->commandDisabled('file')) {
                return $a403;
            }

            if (($file = $volume->file($target)) == false) {
                return $a404;
            }

            if (!$file['read']) {
                return $a404;
            }

            $opts = array();
            if (!empty($_SERVER['HTTP_RANGE'])) {
                $opts['httpheaders'] = array('Range: ' . $_SERVER['HTTP_RANGE']);
            }
            if (($fp = $volume->open($target, $opts)) == false) {
                return $a404;
            }
        }

        // check aborted by user
        elFinder::checkAborted();

        // allow change MIME type by 'file.pre' callback functions
        $mime = isset($args['mime']) ? $args['mime'] : $file['mime'];
        if ($download || $onetime) {
            $disp = 'attachment';
        } else {
            $dispInlineRegex = $volume->getOption('dispInlineRegex');
            $inlineRegex = false;
            if ($dispInlineRegex) {
                $inlineRegex = '#' . str_replace('#', '\\#', $dispInlineRegex) . '#';
                try {
                    preg_match($inlineRegex, '');
                } catch (Exception $e) {
                    $inlineRegex = false;
                }
            }
            if (!$inlineRegex) {
                $inlineRegex = '#^(?:(?:image|text)|application/x-shockwave-flash$)#';
            }
            $disp = preg_match($inlineRegex, $mime) ? 'inline' : 'attachment';
        }

        $filenameEncoded = rawurlencode($file['name']);
        if (strpos($filenameEncoded, '%') === false) { // ASCII only
            $filename = 'filename="' . $file['name'] . '"';
        } else {
            $ua = isset($_SERVER['HTTP_USER_AGENT'])? $_SERVER['HTTP_USER_AGENT'] : '';
            if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
                $filename = 'filename="' . $filenameEncoded . '"';
            } elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
                $filename = 'filename="' . str_replace('"', '', $file['name']) . '"';
            } else { // RFC 6266 (RFC 2231/RFC 5987)
                $filename = 'filename*=UTF-8\'\'' . $filenameEncoded;
            }
        }

        if ($args['cpath'] && $args['reqid']) {
            setcookie('elfdl' . $args['reqid'], '1', 0, $args['cpath']);
        }

        $result = array(
            'volume' => $volume,
            'pointer' => $fp,
            'info' => $file,
            'header' => array(
                'Content-Type: ' . $mime,
                'Content-Disposition: ' . $disp . '; ' . $filename,
                'Content-Transfer-Encoding: binary',
                'Content-Length: ' . $file['size'],
                'Last-Modified: ' . gmdate('D, d M Y H:i:s T', $file['ts']),
                'Connection: close'
            )
        );

        if (!$onetime) {
            // add cache control headers
            if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
                $result['header'] = array_merge($result['header'], $cacheHeaders);
            }

            // check 'xsendfile'
            $xsendfile = $volume->getOption('xsendfile');
            $path = null;
            if ($xsendfile) {
                $info = stream_get_meta_data($fp);
                if ($path = empty($info['uri']) ? null : $info['uri']) {
                    $basePath = rtrim($volume->getOption('xsendfilePath'), DIRECTORY_SEPARATOR);
                    if ($basePath) {
                        $root = rtrim($volume->getRootPath(), DIRECTORY_SEPARATOR);
                        if (strpos($path, $root) === 0) {
                            $path = $basePath . substr($path, strlen($root));
                        } else {
                            $path = null;
                        }
                    }
                }
            }
            if ($path) {
                $result['header'][] = $xsendfile . ': ' . $path;
                $result['info']['xsendfile'] = $xsendfile;
            }
        }

        // add "Content-Location" if file has url data
        if (isset($file['url']) && $file['url'] && $file['url'] != 1) {
            $result['header'][] = 'Content-Location: ' . $file['url'];
        }
        return $result;
    }

    /**
     * Count total files size
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function size($args)
    {
        $size = 0;
        $files = 0;
        $dirs = 0;
        $itemCount = true;
        $sizes = array();

        foreach ($args['targets'] as $target) {
            elFinder::checkAborted();
            if (($volume = $this->volume($target)) == false
                || ($file = $volume->file($target)) == false
                || !$file['read']) {
                return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
            }

            $volRes = $volume->size($target);
            if (is_array($volRes)) {
                $sizeInfo = array('size' => 0, 'fileCnt' => 0, 'dirCnt' => 0);
                if (!empty($volRes['size'])) {
                    $sizeInfo['size'] = $volRes['size'];
                    $size += $volRes['size'];
                }
                if (!empty($volRes['files'])) {
                    $sizeInfo['fileCnt'] = $volRes['files'];
                }
                if (!empty($volRes['dirs'])) {
                    $sizeInfo['dirCnt'] = $volRes['dirs'];
                }
                if ($itemCount) {
                    $files += $sizeInfo['fileCnt'];
                    $dirs += $sizeInfo['dirCnt'];
                }
                $sizes[$target] = $sizeInfo;
            } else if (is_numeric($volRes)) {
                $size += $volRes;
                $files = $dirs = 'unknown';
                $itemCount = false;
            }
        }
        return array('size' => $size, 'fileCnt' => $files, 'dirCnt' => $dirs, 'sizes' => $sizes);
    }

    /**
     * Create directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function mkdir($args)
    {
        $target = $args['target'];
        $name = $args['name'];
        $dirs = $args['dirs'];
        if ($name === '' && !$dirs) {
            return array('error' => $this->error(self::ERROR_INV_PARAMS, 'mkdir'));
        }

        if (($volume = $this->volume($target)) == false) {
            return array('error' => $this->error(self::ERROR_MKDIR, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
        }
        if ($dirs) {
            $maxDirs = $volume->getOption('uploadMaxMkdirs');
            if ($maxDirs && $maxDirs < count($dirs)) {
                return array('error' => $this->error(self::ERROR_MAX_MKDIRS, $maxDirs));
            }
            sort($dirs);
            $reset = null;
            $mkdirs = array();
            foreach ($dirs as $dir) {
                $tgt =& $mkdirs;
                $_names = explode('/', trim($dir, '/'));
                foreach ($_names as $_key => $_name) {
                    if (!isset($tgt[$_name])) {
                        $tgt[$_name] = array();
                    }
                    $tgt =& $tgt[$_name];
                }
                $tgt =& $reset;
            }
            $res = $this->ensureDirsRecursively($volume, $target, $mkdirs);
            $ret = array(
                'added' => $res['stats'],
                'hashes' => $res['hashes']
            );
            if ($res['error']) {
                $ret['warning'] = $this->error(self::ERROR_MKDIR, $res['error'][0], $volume->error());
            }
            return $ret;
        } else {
            return ($dir = $volume->mkdir($target, $name)) == false
                ? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error()))
                : array('added' => array($dir));
        }
    }

    /**
     * Create empty file
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function mkfile($args)
    {
        $target = $args['target'];
        $name = $args['name'];

        if (($volume = $this->volume($target)) == false) {
            return array('error' => $this->error(self::ERROR_MKFILE, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
        }

        return ($file = $volume->mkfile($target, $args['name'])) == false
            ? array('error' => $this->error(self::ERROR_MKFILE, $name, $volume->error()))
            : array('added' => array($file));
    }

    /**
     * Rename file, Accept multiple items >= API 2.1031
     *
     * @param  array $args
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function rename($args)
    {
        $target = $args['target'];
        $name = $args['name'];
        $query = (!empty($args['q']) && strpos($args['q'], '*') !== false) ? $args['q'] : '';
        $targets = !empty($args['targets'])? $args['targets'] : false;
        $rms = array();
        $notfounds = array();
        $locked = array();
        $errs = array();
        $files = array();
        $removed = array();
        $res = array();
        $type = 'normal';

        if (!($volume = $this->volume($target))) {
            return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if ($targets) {
            array_unshift($targets, $target);
            foreach ($targets as $h) {
                if ($rm = $volume->file($h)) {
                    if ($this->itemLocked($h)) {
                        $locked[] = $rm['name'];
                    } else {
                        $rm['realpath'] = $volume->realpath($h);
                        $rms[] = $rm;
                    }
                } else {
                    $notfounds[] = '#' . $h;
                }
            }
            if (!$rms) {
                $res['error'] = array();
                if ($notfounds) {
                    $res['error'] = array(self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
                }
                if ($locked) {
                    array_push($res['error'], self::ERROR_LOCKED, join(', ', $locked));
                }
                return $res;
            }

            $res['warning'] = array();
            if ($notfounds) {
                array_push($res['warning'], self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
            }
            if ($locked) {
                array_push($res['warning'], self::ERROR_LOCKED, join(', ', $locked));
            }

            if ($query) {
                // batch rename
                $splits = elFinder::splitFileExtention($query);
                if ($splits[1] && $splits[0] === '*') {
                    $type = 'extention';
                    $name = $splits[1];
                } else if (strlen($splits[0]) > 1) {
                    if (substr($splits[0], -1) === '*') {
                        $type = 'prefix';
                        $name = substr($splits[0], 0, strlen($splits[0]) - 1);
                    } else if (substr($splits[0], 0, 1) === '*') {
                        $type = 'suffix';
                        $name = substr($splits[0], 1);
                    }
                }
                if ($type !== 'normal') {
                    if (!empty($this->listeners['rename.pre'])) {
                        $_args = array('name' => $name);
                        foreach ($this->listeners['rename.pre'] as $handler) {
                            $_res = call_user_func_array($handler, array('rename', &$_args, $this, $volume));
                            if (!empty($_res['preventexec'])) {
                                break;
                            }
                        }
                        $name = $_args['name'];
                    }
                }
            }
            foreach ($rms as $rm) {
                if ($type === 'normal') {
                    $rname = $volume->uniqueName($volume->realpath($rm['phash']), $name, '', false);
                } else {
                    $rname = $name;
                    if ($type === 'extention') {
                        $splits = elFinder::splitFileExtention($rm['name']);
                        $rname = $splits[0] . '.' . $name;
                    } else if ($type === 'prefix') {
                        $rname = $name . $rm['name'];
                    } else if ($type === 'suffix') {
                        $splits = elFinder::splitFileExtention($rm['name']);
                        $rname = $splits[0] . $name . ($splits[1] ? ('.' . $splits[1]) : '');
                    }
                    $rname = $volume->uniqueName($volume->realpath($rm['phash']), $rname, '', true);
                }
                if ($file = $volume->rename($rm['hash'], $rname)) {
                    $files[] = $file;
                    $removed[] = $rm;
                } else {
                    $errs[] = $rm['name'];
                }
            }

            if (!$files) {
                $res['error'] = $this->error(self::ERROR_RENAME, join(', ', $errs), $volume->error());
                if (!$res['warning']) {
                    unset($res['warning']);
                }
                return $res;
            }
            if ($errs) {
                array_push($res['warning'], self::ERROR_RENAME, join(', ', $errs), $volume->error());
            }
            if (!$res['warning']) {
                unset($res['warning']);
            }
            $res['added'] = $files;
            $res['removed'] = $removed;
            return $res;
        } else {
            if (!($rm = $volume->file($target))) {
                return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
            }
            if ($this->itemLocked($target)) {
                return array('error' => $this->error(self::ERROR_LOCKED, $rm['name']));
            }
            $rm['realpath'] = $volume->realpath($target);

            $file = $volume->rename($target, $name);
            if ($file === false) {
                return array('error' => $this->error(self::ERROR_RENAME, $rm['name'], $volume->error()));
            } else {
                if ($file['hash'] !== $rm['hash']) {
                    return array('added' => array($file), 'removed' => array($rm));
                } else {
                    return array('changed' => array($file));
                }
            }
        }
    }

    /**
     * Duplicate file - create copy with "copy %d" suffix
     *
     * @param array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function duplicate($args)
    {
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $result = array();
        $suffix = empty($args['suffix']) ? 'copy' : $args['suffix'];

        $this->itemLock($targets);

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) == false
                || ($src = $volume->file($target)) == false) {
                $result['warning'] = $this->error(self::ERROR_COPY, '#' . $target, self::ERROR_FILE_NOT_FOUND);
                break;
            }

            if (($file = $volume->duplicate($target, $suffix)) == false) {
                $result['warning'] = $this->error($volume->error());
                break;
            }
        }

        return $result;
    }

    /**
     * Remove dirs/files
     *
     * @param array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function rm($args)
    {
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $result = array('removed' => array());

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) == false) {
                $result['warning'] = $this->error(self::ERROR_RM, '#' . $target, self::ERROR_FILE_NOT_FOUND);
                break;
            }

            if ($this->itemLocked($target)) {
                $rm = $volume->file($target);
                $result['warning'] = $this->error(self::ERROR_LOCKED, $rm['name']);
                break;
            }

            if (!$volume->rm($target)) {
                $result['warning'] = $this->error($volume->error());
                break;
            }
        }

        return $result;
    }

    /**
     * Return has subdirs
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry Naoki Sawada
     **/
    protected function subdirs($args)
    {

        $result = array('subdirs' => array());
        $targets = $args['targets'];

        foreach ($targets as $target) {
            if (($volume = $this->volume($target)) !== false) {
                $result['subdirs'][$target] = $volume->subdirs($target) ? 1 : 0;
            }
        }
        return $result;
    }

    /**
     * Gateway for custom contents editor
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Naoki Sawada
     */
    protected function editor($args = array())
    {
        /* @var elFinderEditor $editor */
        $name = $args['name'];
        if (is_array($name)) {
            $res = array();
            foreach ($name as $c) {
                $class = 'elFinderEditor' . $c;
                if (class_exists($class)) {
                    $editor = new $class($this, $args['args']);
                    $res[$c] = $editor->enabled();
                } else {
                    $res[$c] = 0;
                }
            }
            return $res;
        } else {
            $class = 'elFinderEditor' . $name;
            $method = '';
            if (class_exists($class)) {
                $editor = new $class($this, $args['args']);
                $method = $args['method'];
                if ($editor->isAllowedMethod($method) && method_exists($editor, $method)) {
                    return $editor->$method();
                }
            }
            return array('error', $this->error(self::ERROR_UNKNOWN_CMD, 'editor.' . $name . '.' . $method));
        }
    }

    /**
     * Abort current request and make flag file to running check
     *
     * @param array $args
     *
     * @return void
     */
    protected function abort($args = array())
    {
        if (!elFinder::$connectionFlagsPath || $_SERVER['REQUEST_METHOD'] === 'HEAD') {
            return;
        }
        $flagFile = elFinder::$connectionFlagsPath . DIRECTORY_SEPARATOR . 'elfreq%s';
        if (!empty($args['makeFile'])) {
            self::$abortCheckFile = sprintf($flagFile, self::filenameDecontaminate($args['makeFile']));
            touch(self::$abortCheckFile);
            $GLOBALS['elFinderAbortFiles'][self::$abortCheckFile] = true;
            return;
        }

        $file = !empty($args['id']) ? sprintf($flagFile, self::filenameDecontaminate($args['id'])) : self::$abortCheckFile;
        $file && is_file($file) && unlink($file);
    }

    /**
     * Validate an URL to prevent SSRF attacks.
     *
     * To prevent any risk of DNS rebinding, always use the IP address resolved by
     * this method, as returned in the array entry `ip`.
     *
     * @param string $url
     *
     * @return false|array
     */
    protected function validate_address($url)
    {
        $info = parse_url($url);
        $host = trim(strtolower($info['host']), '.');
        // do not support IPv6 address
        if (preg_match('/^\[.*\]$/', $host)) {
            return false;
        }
        // do not support non dot host
        if (strpos($host, '.') === false) {
            return false;
        }
        // do not support URL-encoded host
        if (strpos($host, '%') !== false) {
            return false;
        }
        // disallow including "localhost" and "localdomain"
        if (preg_match('/\b(?:localhost|localdomain)\b/', $host)) {
            return false;
        }
        // check IPv4 local loopback, private network and link local
        $ip = gethostbyname($host);
        if (preg_match('/^0x[0-9a-f]+|[0-9]+(?:\.(?:0x[0-9a-f]+|[0-9]+)){1,3}$/', $ip, $m)) {
            $long = (int)sprintf('%u', ip2long($ip));
            if (!$long) {
                return false;
            }
            $local = (int)sprintf('%u', ip2long('127.255.255.255')) >> 24;
            $prv1  = (int)sprintf('%u', ip2long('10.255.255.255')) >> 24;
            $prv2  = (int)sprintf('%u', ip2long('172.31.255.255')) >> 20;
            $prv3  = (int)sprintf('%u', ip2long('192.168.255.255')) >> 16;
            $link  = (int)sprintf('%u', ip2long('169.254.255.255')) >> 16;

            if (!isset($this->uploadAllowedLanIpClasses['local']) && $long >> 24 === $local) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_a']) && $long >> 24 === $prv1) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_b']) && $long >> 20 === $prv2) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_c']) && $long >> 16 === $prv3) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['link']) && $long >> 16 === $link) {
                return false;
            }
            $info['ip'] = long2ip($long);
            if (!isset($info['port'])) {
                $info['port'] = $info['scheme'] === 'https' ? 443 : 80;
            }
            if (!isset($info['path'])) {
                $info['path'] = '/';
            }
            return $info;
        } else {
            return false;
        }
    }

    /**
     * Get remote contents
     *
     * @param  string   $url          target url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $fp
     *
     * @return string, resource or bool(false)
     * @retval  string contents
     * @retval  resource conttents
     * @rettval false  error
     * @author  Naoki Sawada
     **/
    protected function get_remote_contents(&$url, $timeout = 30, $redirect_max = 5, $ua = 'Mozilla/5.0', $fp = null)
    {
        if (preg_match('~^(?:ht|f)tps?://[-_.!\~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+~i', $url)) {
            $info = $this->validate_address($url);
            if ($info === false) {
                return false;
            }
            // dose not support 'user' and 'pass' for security reasons
            $url = $info['scheme'].'://'.$info['host'].(!empty($info['port'])? (':'.$info['port']) : '').$info['path'].(!empty($info['query'])? ('?'.$info['query']) : '').(!empty($info['fragment'])? ('#'.$info['fragment']) : '');
            // check by URL upload filter
            if ($this->urlUploadFilter && is_callable($this->urlUploadFilter)) {
                if (!call_user_func_array($this->urlUploadFilter, array($url, $this))) {
                    return false;
                }
            }
            $method = (function_exists('curl_exec')) ? 'curl_get_contents' : 'fsock_get_contents';
            return $this->$method($url, $timeout, $redirect_max, $ua, $fp, $info);
        }
        return false;
    }

    /**
     * Get remote contents with cURL
     *
     * @param  string   $url          target url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $outfp
     *
     * @return string, resource or bool(false)
     * @retval string contents
     * @retval resource conttents
     * @retval false  error
     * @author Naoki Sawada
     **/
    protected function curl_get_contents(&$url, $timeout, $redirect_max, $ua, $outfp, $info)
    {
        if ($redirect_max == 0) {
            return false;
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        if ($outfp) {
            curl_setopt($ch, CURLOPT_FILE, $outfp);
        } else {
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        }
        curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 1);
        curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, $timeout);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        curl_setopt($ch, CURLOPT_RESOLVE, array($info['host'] . ':' . $info['port'] . ':' . $info['ip']));
        $result = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($http_code == 301 || $http_code == 302) {
            $new_url = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
            $info = $this->validate_address($new_url);
            if ($info === false) {
                return false;
            }
            return $this->curl_get_contents($new_url, $timeout, $redirect_max - 1, $ua, $outfp, $info);
        }
        curl_close($ch);
        return $outfp ? $outfp : $result;
    }

    /**
     * Get remote contents with fsockopen()
     *
     * @param  string   $url          url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $outfp
     *
     * @return string, resource or bool(false)
     * @retval string contents
     * @retval resource conttents
     * @retval false  error
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function fsock_get_contents(&$url, $timeout, $redirect_max, $ua, $outfp, $info)
    {
        $connect_timeout = 3;
        $connect_try = 3;
        $method = 'GET';
        $readsize = 4096;
        $ssl = '';

        $getSize = null;
        $headers = '';

        $arr = $info;
        if ($arr['scheme'] === 'https') {
            $ssl = 'ssl://';
        }

        // query
        $arr['query'] = isset($arr['query']) ? '?' . $arr['query'] : '';

        $url_base = $arr['scheme'] . '://' . $info['host'] . ':' . $info['port'];
        $url_path = isset($arr['path']) ? $arr['path'] : '/';
        $uri = $url_path . $arr['query'];

        $query = $method . ' ' . $uri . " HTTP/1.0\r\n";
        $query .= "Host: " . $arr['host'] . "\r\n";
        $query .= "Accept: */*\r\n";
        $query .= "Connection: close\r\n";
        if (!empty($ua)) $query .= "User-Agent: " . $ua . "\r\n";
        if (!is_null($getSize)) $query .= 'Range: bytes=0-' . ($getSize - 1) . "\r\n";

        $query .= $headers;

        $query .= "\r\n";

        $fp = $connect_try_count = 0;
        while (!$fp && $connect_try_count < $connect_try) {

            $errno = 0;
            $errstr = "";
            $fp = fsockopen(
                $ssl . $arr['host'],
                $arr['port'],
                $errno, $errstr, $connect_timeout);
            if ($fp) break;
            $connect_try_count++;
            if (connection_aborted()) {
                throw new elFinderAbortException();
            }
            sleep(1); // wait 1sec
        }

        if (!$fp) {
            return false;
        }

        $fwrite = 0;
        for ($written = 0; $written < strlen($query); $written += $fwrite) {
            $fwrite = fwrite($fp, substr($query, $written));
            if (!$fwrite) {
                break;
            }
        }

        if ($timeout) {
            socket_set_timeout($fp, $timeout);
        }

        $_response = '';
        $header = '';
        while ($_response !== "\r\n") {
            $_response = fgets($fp, $readsize);
            $header .= $_response;
        };

        $rccd = array_pad(explode(' ', $header, 2), 2, ''); // array('HTTP/1.1','200')
        $rc = (int)$rccd[1];

        $ret = false;
        // Redirect
        switch ($rc) {
            case 307: // Temporary Redirect
            case 303: // See Other
            case 302: // Moved Temporarily
            case 301: // Moved Permanently
                $matches = array();
                if (preg_match('/^Location: (.+?)(#.+)?$/im', $header, $matches) && --$redirect_max > 0) {
                    $_url = $url;
                    $url = trim($matches[1]);
                    if (!preg_match('/^https?:\//', $url)) { // no scheme
                        if ($url[0] != '/') { // Relative path
                            // to Absolute path
                            $url = substr($url_path, 0, strrpos($url_path, '/')) . '/' . $url;
                        }
                        // add sheme,host
                        $url = $url_base . $url;
                    }
                    if ($_url === $url) {
                        sleep(1);
                    }
                    fclose($fp);
                    $info = $this->validate_address($url);
                    if ($info === false) {
                        return false;
                    }
                    return $this->fsock_get_contents($url, $timeout, $redirect_max, $ua, $outfp, $info);
                }
                break;
            case 200:
                $ret = true;
        }
        if (!$ret) {
            fclose($fp);
            return false;
        }

        $body = '';
        if (!$outfp) {
            $outfp = fopen('php://temp', 'rwb');
            $body = true;
        }
        while (fwrite($outfp, fread($fp, $readsize))) {
            if ($timeout) {
                $_status = socket_get_status($fp);
                if ($_status['timed_out']) {
                    fclose($outfp);
                    fclose($fp);
                    return false; // Request Time-out
                }
            }
        }
        if ($body) {
            rewind($outfp);
            $body = stream_get_contents($outfp);
            fclose($outfp);
            $outfp = null;
        }

        fclose($fp);

        return $outfp ? $outfp : $body; // Data
    }

    /**
     * Parse Data URI scheme
     *
     * @param  string $str
     * @param  array  $extTable
     * @param  array  $args
     *
     * @return array
     * @author Naoki Sawada
     */
    protected function parse_data_scheme($str, $extTable, $args = null)
    {
        $data = $name = $mime = '';
        // Scheme 'data://' require `allow_url_fopen` and `allow_url_include`
        if ($fp = fopen('data://' . substr($str, 5), 'rb')) {
            if ($data = stream_get_contents($fp)) {
                $meta = stream_get_meta_data($fp);
                $mime = $meta['mediatype'];
            }
            fclose($fp);
        } else if (preg_match('~^data:(.+?/.+?)?(?:;charset=.+?)?;base64,~', substr($str, 0, 128), $m)) {
            $data = base64_decode(substr($str, strlen($m[0])));
            if ($m[1]) {
                $mime = $m[1];
            }
        }
        if ($data) {
            $ext = ($mime && isset($extTable[$mime])) ? '.' . $extTable[$mime] : '';
            // Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
            if (is_array($args['name']) && isset($args['name'][0])) {
                $name = $args['name'][0];
                if ($ext) {
                    $name = preg_replace('/\.[^.]*$/', '', $name);
                }
            } else {
                $name = substr(md5($data), 0, 8);
            }
            $name .= $ext;
        } else {
            $data = $name = '';
        }
        return array($data, $name);
    }

    /**
     * Detect file MIME Type by local path
     *
     * @param  string $path Local path
     *
     * @return string file MIME Type
     * @author Naoki Sawada
     */
    protected function detectMimeType($path)
    {
        static $type, $finfo;
        if (!$type) {
            if (class_exists('finfo', false)) {
                $tmpFileInfo = explode(';', finfo_file(finfo_open(FILEINFO_MIME), __FILE__));
            } else {
                $tmpFileInfo = false;
            }
            $regexp = '/text\/x\-(php|c\+\+)/';
            if ($tmpFileInfo && preg_match($regexp, array_shift($tmpFileInfo))) {
                $type = 'finfo';
                $finfo = finfo_open(FILEINFO_MIME);
            } elseif (function_exists('mime_content_type')
                && ($_ctypes = explode(';', mime_content_type(__FILE__)))
                && preg_match($regexp, array_shift($_ctypes))) {
                $type = 'mime_content_type';
            } elseif (function_exists('getimagesize')) {
                $type = 'getimagesize';
            } else {
                $type = 'none';
            }
        }

        $mime = '';
        if ($type === 'finfo') {
            $mime = finfo_file($finfo, $path);
        } elseif ($type === 'mime_content_type') {
            $mime = mime_content_type($path);
        } elseif ($type === 'getimagesize') {
            if ($img = getimagesize($path)) {
                $mime = $img['mime'];
            }
        }

        if ($mime) {
            $mime = explode(';', $mime);
            $mime = trim($mime[0]);

            if (in_array($mime, array('application/x-empty', 'inode/x-empty'))) {
                // finfo return this mime for empty files
                $mime = 'text/plain';
            } elseif ($mime == 'application/x-zip') {
                // http://elrte.org/redmine/issues/163
                $mime = 'application/zip';
            }
        }

        return $mime ? $mime : 'unknown';
    }

    /**
     * Detect file type extension by local path
     *
     * @param  object $volume elFinderVolumeDriver instance
     * @param  string $path   Local path
     * @param  string $name   Filename to save
     *
     * @return string file type extension with dot
     * @author Naoki Sawada
     */
    protected function detectFileExtension($volume, $path, $name)
    {
        $mime = $this->detectMimeType($path);
        if ($mime === 'unknown') {
            $mime = 'application/octet-stream';
        }
        $ext = $volume->getExtentionByMime($volume->mimeTypeNormalize($mime, $name));
        return $ext ? ('.' . $ext) : '';
    }

    /**
     * Get temporary directory path
     *
     * @param  string $volumeTempPath
     *
     * @return string
     * @author Naoki Sawada
     */
    private function getTempDir($volumeTempPath = null)
    {
        $testDirs = array();
        if ($this->uploadTempPath) {
            $testDirs[] = rtrim(realpath($this->uploadTempPath), DIRECTORY_SEPARATOR);
        }
        if ($volumeTempPath) {
            $testDirs[] = rtrim(realpath($volumeTempPath), DIRECTORY_SEPARATOR);
        }
        if (elFinder::$commonTempPath) {
            $testDirs[] = elFinder::$commonTempPath;
        }
        $tempDir = '';
        foreach ($testDirs as $testDir) {
            if (!$testDir || !is_dir($testDir)) continue;
            if (is_writable($testDir)) {
                $tempDir = $testDir;
                $gc = time() - 3600;
                foreach (glob($tempDir . DIRECTORY_SEPARATOR . 'ELF*') as $cf) {
                    if (filemtime($cf) < $gc) {
                        unlink($cf);
                    }
                }
                break;
            }
        }
        return $tempDir;
    }

    /**
     * chmod
     *
     * @param array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author David Bartle
     */
    protected function chmod($args)
    {
        $targets = $args['targets'];
        $mode = intval((string)$args['mode'], 8);

        if (!is_array($targets)) {
            $targets = array($targets);
        }

        $result = array();

        if (($volume = $this->volume($targets[0])) == false) {
            $result['error'] = $this->error(self::ERROR_CONF_NO_VOL);
            return $result;
        }

        $this->itemLock($targets);

        $files = array();
        $errors = array();
        foreach ($targets as $target) {
            elFinder::checkAborted();

            $file = $volume->chmod($target, $mode);
            if ($file) {
                $files = array_merge($files, is_array($file) ? $file : array($file));
            } else {
                $errors = array_merge($errors, $volume->error());
            }
        }

        if ($files) {
            $result['changed'] = $files;
            if ($errors) {
                $result['warning'] = $this->error($errors);
            }
        } else {
            $result['error'] = $this->error($errors);
        }

        return $result;
    }

    /**
     * Check chunked upload files
     *
     * @param string $tmpname uploaded temporary file path
     * @param string $chunk   uploaded chunk file name
     * @param string $cid     uploaded chunked file id
     * @param string $tempDir temporary dirctroy path
     * @param null   $volume
     *
     * @return array|null
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    private function checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume = null)
    {
        /* @var elFinderVolumeDriver $volume */
        if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
            $fname = $m[1];
            $encname = md5($cid . '_' . $fname);
            $base = $tempDir . DIRECTORY_SEPARATOR . 'ELF' . $encname;
            $clast = intval($m[3]);
            if (is_null($tmpname)) {
                ignore_user_abort(true);
                // chunked file upload fail
                foreach (glob($base . '*') as $cf) {
                    unlink($cf);
                }
                ignore_user_abort(false);
                return null;
            }

            $range = isset($_POST['range']) ? trim($_POST['range']) : '';
            if ($range && preg_match('/^(\d+),(\d+),(\d+)$/', $range, $ranges)) {
                $start = $ranges[1];
                $len = $ranges[2];
                $size = $ranges[3];
                $tmp = $base . '.part';
                $csize = filesize($tmpname);

                $tmpExists = is_file($tmp);
                if (!$tmpExists) {
                    // check upload max size
                    $uploadMaxSize = $volume ? $volume->getUploadMaxSize() : 0;
                    if ($uploadMaxSize > 0 && $size > $uploadMaxSize) {
                        return array(self::ERROR_UPLOAD_FILE_SIZE, false);
                    }
                    // make temp file
                    $ok = false;
                    if ($fp = fopen($tmp, 'wb')) {
                        flock($fp, LOCK_EX);
                        $ok = ftruncate($fp, $size);
                        flock($fp, LOCK_UN);
                        fclose($fp);
                        touch($base);
                    }
                    if (!$ok) {
                        unlink($tmp);
                        return array(self::ERROR_UPLOAD_TEMP, false);
                    }
                } else {
                    // wait until makeing temp file (for anothor session)
                    $cnt = 1200; // Time limit 120 sec
                    while (!is_file($base) && --$cnt) {
                        usleep(100000); // wait 100ms
                    }
                    if (!$cnt) {
                        return array(self::ERROR_UPLOAD_TEMP, false);
                    }
                }

                // check size info
                if ($len != $csize || $start + $len > $size || ($tmpExists && $size != filesize($tmp))) {
                    return array(self::ERROR_UPLOAD_TEMP, false);
                }

                // write chunk data
                $src = fopen($tmpname, 'rb');
                $fp = fopen($tmp, 'cb');
                fseek($fp, $start);
                $writelen = stream_copy_to_stream($src, $fp, $len);
                fclose($fp);
                fclose($src);

                try {
                    // to check connection is aborted
                    elFinder::checkAborted();
                } catch (elFinderAbortException $e) {
                    unlink($tmpname);
                    is_file($tmp) && unlink($tmp);
                    is_file($base) && unlink($base);
                    throw $e;
                }

                if ($writelen != $len) {
                    return array(self::ERROR_UPLOAD_TEMP, false);
                }

                // write counts
                file_put_contents($base, "\0", FILE_APPEND | LOCK_EX);

                if (filesize($base) >= $clast + 1) {
                    // Completion
                    unlink($base);
                    return array($tmp, $fname);
                }
            } else {
                // old way
                $part = $base . $m[2];
                if (move_uploaded_file($tmpname, $part)) {
                    chmod($part, 0600);
                    if ($clast < count(glob($base . '*'))) {
                        $parts = array();
                        for ($i = 0; $i <= $clast; $i++) {
                            $name = $base . '.' . $i . '_' . $clast;
                            if (is_readable($name)) {
                                $parts[] = $name;
                            } else {
                                $parts = null;
                                break;
                            }
                        }
                        if ($parts) {
                            if (!is_file($base)) {
                                touch($base);
                                if ($resfile = tempnam($tempDir, 'ELF')) {
                                    $target = fopen($resfile, 'wb');
                                    foreach ($parts as $f) {
                                        $fp = fopen($f, 'rb');
                                        while (!feof($fp)) {
                                            fwrite($target, fread($fp, 8192));
                                        }
                                        fclose($fp);
                                        unlink($f);
                                    }
                                    fclose($target);
                                    unlink($base);
                                    return array($resfile, $fname);
                                }
                                unlink($base);
                            }
                        }
                    }
                }
            }
        }
        return array('', '');
    }

    /**
     * Save uploaded files
     *
     * @param  array
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function upload($args)
    {
        $ngReg = '/[\/\\?*:|"<>]/';
        $target = $args['target'];
        $volume = $this->volume($target);
        $files = isset($args['FILES']['upload']) && is_array($args['FILES']['upload']) ? $args['FILES']['upload'] : array();
        $header = empty($args['html']) ? array() : array('header' => 'Content-Type: text/html; charset=utf-8');
        $result = array_merge(array('added' => array()), $header);
        $paths = $args['upload_path'] ? $args['upload_path'] : array();
        $chunk = $args['chunk'] ? $args['chunk'] : '';
        $cid = $args['cid'] ? (int)$args['cid'] : '';
        $mtimes = $args['mtime'] ? $args['mtime'] : array();
        $tmpfname = '';

        if (!$volume) {
            return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target)), $header);
        }

        // check $chunk
        if (strpos($chunk, '/') !== false || strpos($chunk, '\\') !== false) {
            return array('error' => $this->error(self::ERROR_UPLOAD));
        }

        if ($args['overwrite'] !== '') {
            $volume->setUploadOverwrite($args['overwrite']);
        }

        $renames = $hashes = array();
        $suffix = '~';
        if ($args['renames'] && is_array($args['renames'])) {
            $renames = array_flip($args['renames']);
            if (is_string($args['suffix']) && !preg_match($ngReg, $args['suffix'])) {
                $suffix = $args['suffix'];
            }
        }
        if ($args['hashes'] && is_array($args['hashes'])) {
            $hashes = array_flip($args['hashes']);
        }

        $this->itemLock($target);

        // file extentions table by MIME
        $extTable = array_flip(array_unique($volume->getMimeTable()));

        if (empty($files)) {
            if (isset($args['upload']) && is_array($args['upload']) && ($tempDir = $this->getTempDir($volume->getTempPath()))) {
                $names = array();
                foreach ($args['upload'] as $i => $url) {
                    // check chunked file upload commit
                    if ($chunk) {
                        if ($url === 'chunkfail' && $args['mimes'] === 'chunkfail') {
                            $this->checkChunkedFile(null, $chunk, $cid, $tempDir);
                            if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
                                $result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], self::ERROR_UPLOAD_TEMP);
                            }
                            return $result;
                        } else {
                            $tmpfname = $tempDir . '/' . $chunk;
                            $files['tmp_name'][$i] = $tmpfname;
                            $files['name'][$i] = $url;
                            $files['error'][$i] = 0;
                            $GLOBALS['elFinderTempFiles'][$tmpfname] = true;
                            break;
                        }
                    }

                    $tmpfname = $tempDir . DIRECTORY_SEPARATOR . 'ELF_FATCH_' . md5($url . microtime(true));
                    $GLOBALS['elFinderTempFiles'][$tmpfname] = true;

                    $_name = '';
                    // check is data:
                    if (substr($url, 0, 5) === 'data:') {
                        list($data, $args['name'][$i]) = $this->parse_data_scheme($url, $extTable, $args);
                    } else {
                        $fp = fopen($tmpfname, 'wb');
                        if ($data = $this->get_remote_contents($url, 30, 5, 'Mozilla/5.0', $fp)) {
                            // to check connection is aborted
                            try {
                                elFinder::checkAborted();
                            } catch(elFinderAbortException $e) {
                                fclose($fp);
                                throw $e;
                            }
                            if (strpos($url, '%') !== false) {
                                $url = rawurldecode($url);
                            }
                            if (is_callable('mb_convert_encoding') && is_callable('mb_detect_encoding')) {
                                $url = mb_convert_encoding($url, 'UTF-8', mb_detect_encoding($url));
                            }
                            $url = iconv('UTF-8', 'UTF-8//IGNORE', $url);
                            $_name = preg_replace('~^.*?([^/#?]+)(?:\?.*)?(?:#.*)?$~', '$1', $url);
                            // Check `Content-Disposition` response header
                            if (($headers = get_headers($url, true)) && !empty($headers['Content-Disposition'])) {
                                if (preg_match('/filename\*=(?:([a-zA-Z0-9_-]+?)\'\')"?([a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
                                    $_name = rawurldecode($m[2]);
                                    if ($m[1] && strtoupper($m[1]) !== 'UTF-8' && function_exists('mb_convert_encoding')) {
                                        $_name = mb_convert_encoding($_name, 'UTF-8', $m[1]);
                                    }
                                } else if (preg_match('/filename="?([ a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
                                    $_name = rawurldecode($m[1]);
                                }
                            }
                        } else {
                            fclose($fp);
                        }
                    }
                    if ($data) {
                        if (isset($args['name'][$i])) {
                            $_name = $args['name'][$i];
                        }
                        if ($_name) {
                            $_ext = '';
                            if (preg_match('/(\.[a-z0-9]{1,7})$/', $_name, $_match)) {
                                $_ext = $_match[1];
                            }
                            if ((is_resource($data) && fclose($data)) || file_put_contents($tmpfname, $data)) {
                                $GLOBALS['elFinderTempFiles'][$tmpfname] = true;
                                $_name = preg_replace($ngReg, '_', $_name);
                                list($_a, $_b) = array_pad(explode('.', $_name, 2), 2, '');
                                if ($_b === '') {
                                    if ($_ext) {
                                        rename($tmpfname, $tmpfname . $_ext);
                                        $tmpfname = $tmpfname . $_ext;
                                    }
                                    $_b = $this->detectFileExtension($volume, $tmpfname, $_name);
                                    $_name = $_a . $_b;
                                } else {
                                    $_b = '.' . $_b;
                                }
                                if (isset($names[$_name])) {
                                    $_name = $_a . '_' . $names[$_name]++ . $_b;
                                } else {
                                    $names[$_name] = 1;
                                }
                                $files['tmp_name'][$i] = $tmpfname;
                                $files['name'][$i] = $_name;
                                $files['error'][$i] = 0;
                                // set to auto rename
                                $volume->setUploadOverwrite(false);
                            } else {
                                unlink($tmpfname);
                            }
                        }
                    }
                }
            }
            if (empty($files)) {
                return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_UPLOAD_NO_FILES)), $header);
            }
        }

        $addedDirs = array();
        $errors = array();
        foreach ($files['name'] as $i => $name) {
            if (($error = $files['error'][$i]) > 0) {
                $result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, $error == UPLOAD_ERR_INI_SIZE || $error == UPLOAD_ERR_FORM_SIZE ? self::ERROR_UPLOAD_FILE_SIZE : self::ERROR_UPLOAD_TRANSFER, $error);
                $this->uploadDebug = 'Upload error code: ' . $error;
                break;
            }

            $tmpname = $files['tmp_name'][$i];
            $thash = ($paths && isset($paths[$i])) ? $paths[$i] : $target;
            $mtime = isset($mtimes[$i]) ? $mtimes[$i] : 0;
            if ($name === 'blob') {
                if ($chunk) {
                    if ($tempDir = $this->getTempDir($volume->getTempPath())) {
                        list($tmpname, $name) = $this->checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume);
                        if ($tmpname) {
                            if ($name === false) {
                                preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m);
                                $result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], $tmpname);
                                $result['_chunkfailure'] = true;
                                $this->uploadDebug = 'Upload error: ' . $tmpname;
                            } else if ($name) {
                                $result['_chunkmerged'] = basename($tmpname);
                                $result['_name'] = $name;
                                $result['_mtime'] = $mtime;
                            }
                        }
                    } else {
                        $result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $chunk, self::ERROR_UPLOAD_TEMP);
                        $this->uploadDebug = 'Upload error: unable open tmp file';
                    }
                    return $result;
                } else {
                    // for form clipboard with Google Chrome or Opera
                    $name = 'image.png';
                }
            }

            // Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
            if (strtolower(substr($name, 0, 5)) === 'image' && is_array($args['name']) && isset($args['name'][$i])) {
                $type = $files['type'][$i];
                $name = $args['name'][$i];
                $ext = isset($extTable[$type]) ? '.' . $extTable[$type] : '';
                if ($ext) {
                    $name = preg_replace('/\.[^.]*$/', '', $name);
                }
                $name .= $ext;
            }

            // do hook function 'upload.presave'
            try {
                $this->trigger('upload.presave', array(&$thash, &$name, $tmpname, $this, $volume), $errors);
            } catch (elFinderTriggerException $e) {
                if (!is_uploaded_file($tmpname) && unlink($tmpname) && $tmpfname) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
                }
                continue;
            }

            clearstatcache();
            if ($mtime && is_file($tmpname)) {
                // for keep timestamp option in the LocalFileSystem volume
                touch($tmpname, $mtime);
            }

            $fp = null;
            if (!is_file($tmpname) || ($fp = fopen($tmpname, 'rb')) === false) {
                $errors = array_merge($errors, array(self::ERROR_UPLOAD_FILE, $name, ($fp === false? self::ERROR_UPLOAD_TEMP : self::ERROR_UPLOAD_TRANSFER)));
                $this->uploadDebug = 'Upload error: unable open tmp file';
                if (!is_uploaded_file($tmpname)) {
                    if (unlink($tmpname) && $tmpfname) unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
                    continue;
                }
                break;
            }
            $rnres = array();
            if ($thash !== '' && $thash !== $target) {
                if ($dir = $volume->dir($thash)) {
                    $_target = $thash;
                    if (!isset($addedDirs[$thash])) {
                        $addedDirs[$thash] = true;
                        $result['added'][] = $dir;
                        // to support multi-level directory creation
                        $_phash = isset($dir['phash']) ? $dir['phash'] : null;
                        while ($_phash && !isset($addedDirs[$_phash]) && $_phash !== $target) {
                            if ($_dir = $volume->dir($_phash)) {
                                $addedDirs[$_phash] = true;
                                $result['added'][] = $_dir;
                                $_phash = isset($_dir['phash']) ? $_dir['phash'] : null;
                            } else {
                                break;
                            }
                        }
                    }
                } else {
                    $result['error'] = $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, 'hash@' . $thash);
                    break;
                }
            } else {
                $_target = $target;
                // file rename for backup
                if (isset($renames[$name])) {
                    $dir = $volume->realpath($_target);
                    if (isset($hashes[$name])) {
                        $hash = $hashes[$name];
                    } else {
                        $hash = $volume->getHash($dir, $name);
                    }
                    $rnres = $this->rename(array('target' => $hash, 'name' => $volume->uniqueName($dir, $name, $suffix, true, 0)));
                    if (!empty($rnres['error'])) {
                        $result['warning'] = $rnres['error'];
                        if (!is_array($rnres['error'])) {
                            $errors = array_push($errors, $rnres['error']);
                        } else {
                            $errors = array_merge($errors, $rnres['error']);
                        }
                        continue;
                    }
                }
            }
            if (!$_target || ($file = $volume->upload($fp, $_target, $name, $tmpname, ($_target === $target) ? $hashes : array())) === false) {
                $errors = array_merge($errors, $this->error(self::ERROR_UPLOAD_FILE, $name, $volume->error()));
                fclose($fp);
                if (!is_uploaded_file($tmpname) && unlink($tmpname)) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpname]);
                }
                continue;
            }

            is_resource($fp) && fclose($fp);
            if (!is_uploaded_file($tmpname)) {
                clearstatcache();
                if (!is_file($tmpname) || unlink($tmpname)) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpname]);
                }
            }
            $result['added'][] = $file;
            if ($rnres) {
                $result = array_merge_recursive($result, $rnres);
            }
        }

        if ($errors) {
            $result['warning'] = $errors;
        }

        if ($GLOBALS['elFinderTempFiles']) {
            foreach (array_keys($GLOBALS['elFinderTempFiles']) as $_temp) {
                is_file($_temp) && is_writable($_temp) && unlink($_temp);
            }
        }
        $result['removed'] = $volume->removed();

        if (!empty($args['node'])) {
            $result['callback'] = array(
                'node' => $args['node'],
                'bind' => 'upload'
            );
        }
        return $result;
    }

    /**
     * Copy/move files into new destination
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function paste($args)
    {
        $dst = $args['dst'];
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $cut = !empty($args['cut']);
        $error = $cut ? self::ERROR_MOVE : self::ERROR_COPY;
        $result = array('changed' => array(), 'added' => array(), 'removed' => array(), 'warning' => array());

        if (($dstVolume = $this->volume($dst)) == false) {
            return array('error' => $this->error($error, '#' . $targets[0], self::ERROR_TRGDIR_NOT_FOUND, '#' . $dst));
        }

        $this->itemLock($dst);

        $hashes = $renames = array();
        $suffix = '~';
        if (!empty($args['renames'])) {
            $renames = array_flip($args['renames']);
            if (is_string($args['suffix']) && !preg_match('/[\/\\?*:|"<>]/', $args['suffix'])) {
                $suffix = $args['suffix'];
            }
        }
        if (!empty($args['hashes'])) {
            $hashes = array_flip($args['hashes']);
        }

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($srcVolume = $this->volume($target)) == false) {
                $result['warning'] = array_merge($result['warning'], $this->error($error, '#' . $target, self::ERROR_FILE_NOT_FOUND));
                continue;
            }

            $rnres = array();
            if ($renames) {
                $file = $srcVolume->file($target);
                if (isset($renames[$file['name']])) {
                    $dir = $dstVolume->realpath($dst);
                    $dstName = $file['name'];
                    if ($srcVolume !== $dstVolume) {
                        $errors = array();
                        try {
                            $this->trigger('paste.copyfrom', array(&$dst, &$dstName, '', $this, $dstVolume), $errors);
                        } catch (elFinderTriggerException $e) {
                            $result['warning'] = array_merge($result['warning'], $errors);
                            continue;
                        }
                    }
                    if (isset($hashes[$file['name']])) {
                        $hash = $hashes[$file['name']];
                    } else {
                        $hash = $dstVolume->getHash($dir, $dstName);
                    }
                    $rnres = $this->rename(array('target' => $hash, 'name' => $dstVolume->uniqueName($dir, $dstName, $suffix, true, 0)));
                    if (!empty($rnres['error'])) {
                        $result['warning'] = array_merge($result['warning'], $rnres['error']);
                        continue;
                    }
                }
            }

            if ($cut && $this->itemLocked($target)) {
                $rm = $srcVolume->file($target);
                $result['warning'] = array_merge($result['warning'], $this->error(self::ERROR_LOCKED, $rm['name']));
                continue;
            }

            if (($file = $dstVolume->paste($srcVolume, $target, $dst, $cut, $hashes)) == false) {
                $result['warning'] = array_merge($result['warning'], $this->error($dstVolume->error()));
                continue;
            }

            if ($error = $dstVolume->error()) {
                $result['warning'] = array_merge($result['warning'], $this->error($error));
            }

            if ($rnres) {
                $result = array_merge_recursive($result, $rnres);
            }
        }
        if (count($result['warning']) < 1) {
            unset($result['warning']);
        } else {
            $result['sync'] = true;
        }

        return $result;
    }

    /**
     * Return file content
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function get($args)
    {
        $target = $args['target'];
        $volume = $this->volume($target);
        $enc = false;

        if (!$volume || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if ($volume->commandDisabled('get')) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target, self::ERROR_ACCESS_DENIED));
        }

        if (($content = $volume->getContents($target)) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, $volume->path($target), $volume->error()));
        }

        $mime = isset($file['mime']) ? $file['mime'] : '';
        if ($mime && (strtolower(substr($mime, 0, 4)) === 'text' || in_array(strtolower($mime), self::$textMimes))) {
            $enc = '';
            if ($content !== '') {
                if (!$args['conv'] || $args['conv'] == '1') {
                    // detect encoding
                    if (function_exists('mb_detect_encoding')) {
                        if ($enc = mb_detect_encoding($content, mb_detect_order(), true)) {
                            $encu = strtoupper($enc);
                            if ($encu === 'UTF-8' || $encu === 'ASCII') {
                                $enc = '';
                            }
                        } else {
                            $enc = 'unknown';
                        }
                    } else if (!preg_match('//u', $content)) {
                        $enc = 'unknown';
                    }
                    if ($enc === 'unknown') {
                        $enc = $volume->getOption('encoding');
                        if (!$enc || strtoupper($enc) === 'UTF-8') {
                            $enc = 'unknown';
                        }
                    }
                    // call callbacks 'get.detectencoding'
                    if (!empty($this->listeners['get.detectencoding'])) {
                        foreach ($this->listeners['get.detectencoding'] as $handler) {
                            call_user_func_array($handler, array('get', &$enc, array_merge($args, array('content' => $content)), $this, $volume));
                        }
                    }
                    if ($enc && $enc !== 'unknown') {
                        $errlev = error_reporting();
                        error_reporting($errlev ^ E_NOTICE);
                        $utf8 = iconv($enc, 'UTF-8', $content);
                        if ($utf8 === false && function_exists('mb_convert_encoding')) {
                            error_reporting($errlev ^ E_WARNING);
                            $utf8 = mb_convert_encoding($content, 'UTF-8', $enc);
                            if (mb_convert_encoding($utf8, $enc, 'UTF-8') !== $content) {
                                $enc = 'unknown';
                            }
                        } else {
                            if ($utf8 === false || iconv('UTF-8', $enc, $utf8) !== $content) {
                                $enc = 'unknown';
                            }
                        }
                        error_reporting($errlev);
                        if ($enc !== 'unknown') {
                            $content = $utf8;
                        }
                    }
                    if ($enc) {
                        if ($args['conv'] == '1') {
                            $args['conv'] = '';
                            if ($enc === 'unknown') {
                                $content = false;
                            }
                        } else if ($enc === 'unknown') {
                            return array('doconv' => $enc);
                        }
                    }
                    if ($args['conv'] == '1') {
                        $args['conv'] = '';
                    }
                }
                if ($args['conv']) {
                    $enc = $args['conv'];
                    if (strtoupper($enc) !== 'UTF-8') {
                        $_content = $content;
                        $errlev = error_reporting();
                        $this->setToastErrorHandler(array(
                            'prefix' => 'Notice: '
                        ));
                        error_reporting($errlev | E_NOTICE | E_WARNING);
                        $content = iconv($enc, 'UTF-8//TRANSLIT', $content);
                        if ($content === false && function_exists('mb_convert_encoding')) {
                            $content = mb_convert_encoding($_content, 'UTF-8', $enc);
                        }
                        error_reporting($errlev);
                        $this->setToastErrorHandler(false);
                    } else {
                        $enc = '';
                    }
                }
            }
        } else {
            $content = 'data:' . ($mime ? $mime : 'application/octet-stream') . ';base64,' . base64_encode($content);
        }

        if ($enc !== false) {
            $json = false;
            if ($content !== false) {
                $json = json_encode($content);
            }
            if ($content === false || $json === false || strlen($json) < strlen($content)) {
                return array('doconv' => 'unknown');
            }
        }

        $res = array(
            'header' => array(
                'Content-Type: application/json'
            ),
            'content' => $content
        );

        // add cache control headers
        if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
            $res['header'] = array_merge($res['header'], $cacheHeaders);
        }

        if ($enc) {
            $res['encoding'] = $enc;
        }
        return $res;
    }

    /**
     * Save content into text file
     *
     * @param $args
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function put($args)
    {
        $target = $args['target'];
        $encoding = isset($args['encoding']) ? $args['encoding'] : '';

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_SAVE, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        $this->itemLock($target);

        if ($encoding === 'scheme') {
            if (preg_match('~^https?://~i', $args['content'])) {
                /** @var resource $fp */
                $fp = $this->get_remote_contents($args['content'], 30, 5, 'Mozilla/5.0', $volume->tmpfile());
                if (!$fp) {
                    return array('error' => self::ERROR_SAVE, $args['content'], self::ERROR_FILE_NOT_FOUND);
                }
                $fmeta = stream_get_meta_data($fp);
                $mime = $this->detectMimeType($fmeta['uri']);
                if ($mime === 'unknown') {
                    $mime = 'application/octet-stream';
                }
                $mime = $volume->mimeTypeNormalize($mime, $file['name']);
                $args['content'] = 'data:' . $mime . ';base64,' . base64_encode(file_get_contents($fmeta['uri']));
            }
            $encoding = '';
            $args['content'] = "\0" . $args['content'];
        } else if ($encoding === 'hash') {
            $_hash = $args['content'];
            if ($_src = $this->getVolume($_hash)) {
                if ($_file = $_src->file($_hash)) {
                    if ($_data = $_src->getContents($_hash)) {
                        $args['content'] = 'data:' . $file['mime'] . ';base64,' . base64_encode($_data);
                    }
                }
            }
            $encoding = '';
            $args['content'] = "\0" . $args['content'];
        }
        if ($encoding) {
            $content = iconv('UTF-8', $encoding, $args['content']);
            if ($content === false && function_exists('mb_detect_encoding')) {
                $content = mb_convert_encoding($args['content'], $encoding, 'UTF-8');
            }
            if ($content !== false) {
                $args['content'] = $content;
            }
        }
        if (($file = $volume->putContents($target, $args['content'])) == false) {
            return array('error' => $this->error(self::ERROR_SAVE, $volume->path($target), $volume->error()));
        }

        return array('changed' => array($file));
    }

    /**
     * Extract files from archive
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function extract($args)
    {
        $target = $args['target'];
        $makedir = isset($args['makedir']) ? (bool)$args['makedir'] : null;

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_EXTRACT, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        $res = array();
        if ($file = $volume->extract($target, $makedir)) {
            $res['added'] = isset($file['read']) ? array($file) : $file;
            if ($err = $volume->error()) {
                $res['warning'] = $err;
            }
        } else {
            $res['error'] = $this->error(self::ERROR_EXTRACT, $volume->path($target), $volume->error());
        }
        return $res;
    }

    /**
     * Create archive
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws Exception
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function archive($args)
    {
        $targets = isset($args['targets']) && is_array($args['targets']) ? $args['targets'] : array();
        $name = isset($args['name']) ? $args['name'] : '';

        $targets = array_filter($targets, array($this, 'volume'));
        if (!$targets || ($volume = $this->volume($targets[0])) === false) {
            return $this->error(self::ERROR_ARCHIVE, self::ERROR_TRGDIR_NOT_FOUND);
        }

        foreach ($targets as $target) {
            $this->itemLock($target);
        }

        return ($file = $volume->archive($targets, $args['type'], $name))
            ? array('added' => array($file))
            : array('error' => $this->error(self::ERROR_ARCHIVE, $volume->error()));
    }

    /**
     * Search files
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function search($args)
    {
        $q = trim($args['q']);
        $mimes = !empty($args['mimes']) && is_array($args['mimes']) ? $args['mimes'] : array();
        $target = !empty($args['target']) ? $args['target'] : null;
        $type = !empty($args['type']) ? $args['type'] : null;
        $result = array();
        $errors = array();

        if ($target) {
            if ($volume = $this->volume($target)) {
                $result = $volume->search($q, $mimes, $target, $type);
                $errors = array_merge($errors, $volume->error());
            }
        } else {
            foreach ($this->volumes as $volume) {
                $result = array_merge($result, $volume->search($q, $mimes, null, $type));
                $errors = array_merge($errors, $volume->error());
            }
        }

        $result = array('files' => $result);
        if ($errors) {
            $result['warning'] = $errors;
        }
        return $result;
    }

    /**
     * Return file info (used by client "places" ui)
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function info($args)
    {
        $files = array();
        $compare = null;
        // long polling mode
        if ($args['compare'] && count($args['targets']) === 1) {
            $compare = intval($args['compare']);
            $hash = $args['targets'][0];
            if ($volume = $this->volume($hash)) {
                $standby = (int)$volume->getOption('plStandby');
                $_compare = false;
                if (($syncCheckFunc = $volume->getOption('syncCheckFunc')) && is_callable($syncCheckFunc)) {
                    $_compare = call_user_func_array($syncCheckFunc, array($volume->realpath($hash), $standby, $compare, $volume, $this));
                }
                if ($_compare !== false) {
                    $compare = $_compare;
                } else {
                    $sleep = max(1, (int)$volume->getOption('tsPlSleep'));
                    $limit = max(1, $standby / $sleep) + 1;
                    do {
                        elFinder::extendTimeLimit(30 + $sleep);
                        $volume->clearstatcache();
                        if (($info = $volume->file($hash)) != false) {
                            if ($info['ts'] != $compare) {
                                $compare = $info['ts'];
                                break;
                            }
                        } else {
                            $compare = 0;
                            break;
                        }
                        if (--$limit) {
                            sleep($sleep);
                        }
                    } while ($limit);
                }
            }
        } else {
            foreach ($args['targets'] as $hash) {
                elFinder::checkAborted();
                if (($volume = $this->volume($hash)) != false
                    && ($info = $volume->file($hash)) != false) {
                    $info['path'] = $volume->path($hash);
                    $files[] = $info;
                }
            }
        }

        $result = array('files' => $files);
        if (!is_null($compare)) {
            $result['compare'] = strval($compare);
        }
        return $result;
    }

    /**
     * Return image dimensions
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function dim($args)
    {
        $res = array();
        $target = $args['target'];

        if (($volume = $this->volume($target)) != false) {
            if ($dim = $volume->dimensions($target, $args)) {
                if (is_array($dim) && isset($dim['dim'])) {
                    $res = $dim;
                } else {
                    $res = array('dim' => $dim);
                    if ($subImgLink = $volume->getSubstituteImgLink($target, explode('x', $dim))) {
                        $res['url'] = $subImgLink;
                    }
                }
            }
        }

        return $res;
    }

    /**
     * Resize image
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function resize($args)
    {
        $target = $args['target'];
        $width = (int)$args['width'];
        $height = (int)$args['height'];
        $x = (int)$args['x'];
        $y = (int)$args['y'];
        $mode = $args['mode'];
        $bg = $args['bg'];
        $degree = (int)$args['degree'];
        $quality = (int)$args['quality'];

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_RESIZE, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if ($mode !== 'rotate' && ($width < 1 || $height < 1)) {
            return array('error' => $this->error(self::ERROR_RESIZESIZE));
        }
        return ($file = $volume->resize($target, $width, $height, $x, $y, $mode, $bg, $degree, $quality))
            ? (!empty($file['losslessRotate']) ? $file : array('changed' => array($file)))
            : array('error' => $this->error(self::ERROR_RESIZE, $volume->path($target), $volume->error()));
    }

    /**
     * Return content URL
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function url($args)
    {
        $target = $args['target'];
        $options = isset($args['options']) ? $args['options'] : array();
        if (($volume = $this->volume($target)) != false) {
            if (!$volume->commandDisabled('url')) {
                $url = $volume->getContentUrl($target, $options);
                return $url ? array('url' => $url) : array();
            }
        }
        return array();
    }

    /**
     * Output callback result with JavaScript that control elFinder
     * or HTTP redirect to callbackWindowURL
     *
     * @param  array  command arguments
     *
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function callback($args)
    {
        $checkReg = '/[^a-zA-Z0-9;._-]/';
        $node = (isset($args['node']) && !preg_match($checkReg, $args['node'])) ? $args['node'] : '';
        $json = (isset($args['json']) && json_decode($args['json'])) ? $args['json'] : '{}';
        $bind = (isset($args['bind']) && !preg_match($checkReg, $args['bind'])) ? $args['bind'] : '';
        $done = (!empty($args['done']));

        while (ob_get_level()) {
            if (!ob_end_clean()) {
                break;
            }
        }

        if ($done || !$this->callbackWindowURL) {
            $script = '';
            if ($node) {
                if ($bind) {
                    $trigger = 'elf.trigger(\'' . $bind . '\', data);';
                    $triggerdone = 'elf.trigger(\'' . $bind . 'done\');';
                    $triggerfail = 'elf.trigger(\'' . $bind . 'fail\', data);';
                } else {
                    $trigger = $triggerdone = $triggerfail = '';
                }
                $origin = isset($_SERVER['HTTP_ORIGIN'])? str_replace('\'', '\\\'', $_SERVER['HTTP_ORIGIN']) : '*';
                $script .= '
var go = function() {
    var w = window.opener || window.parent || window,
        close = function(){
            window.open("about:blank","_self").close();
            return false;
        };
    try {
        var elf = w.document.getElementById(\'' . $node . '\').elfinder;
        if (elf) {
            var data = ' . $json . ';
            if (data.error) {
                ' . $triggerfail . '
                elf.error(data.error);
            } else {
                data.warning && elf.error(data.warning);
                data.removed && data.removed.length && elf.remove(data);
                data.added   && data.added.length   && elf.add(data);
                data.changed && data.changed.length && elf.change(data);
                ' . $trigger . '
                ' . $triggerdone . '
                data.sync && elf.sync();
            }
        }
    } catch(e) {
        // for CORS
        w.postMessage && w.postMessage(JSON.stringify({type:\'io.studio-42.github\',bind:\'' . $bind . '\',data:' . $json . '}), \'' . $origin . '\');
    }
    close();
    setTimeout(function() {
        var msg = document.getElementById(\'msg\');
        msg.style.display = \'inline\';
        msg.onclick = close;
    }, 100);
};
';
            }

            $out = '<!DOCTYPE html><html lang="en"><head><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2"><script>' . $script . '</script></head><body><h2 id="msg" style="display:none;"><a href="#">Please close this tab.</a></h2><script>go();</script></body></html>';

            header('Content-Type: text/html; charset=utf-8');
            header('Content-Length: ' . strlen($out));
            header('Cache-Control: private');
            header('Pragma: no-cache');

            echo $out;

        } else {
            $url = $this->callbackWindowURL;
            $url .= ((strpos($url, '?') === false) ? '?' : '&')
                . '&node=' . rawurlencode($node)
                . (($json !== '{}') ? ('&json=' . rawurlencode($json)) : '')
                . ($bind ? ('&bind=' . rawurlencode($bind)) : '')
                . '&done=1';

            header('Location: ' . $url);

        }
        throw new elFinderAbortException();
    }

    /**
     * Error handler for send toast message to client side
     *
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param int    $errline
     *
     * @return boolean
     */
    protected function toastErrorHandler($errno, $errstr, $errfile, $errline)
    {
        $proc = false;
        if (!(error_reporting() & $errno)) {
            return $proc;
        }
        $toast = array();
        $toast['mode'] = $this->toastParams['mode'];
        $toast['msg'] = $this->toastParams['prefix'] . $errstr;
        $this->toastMessages[] = $toast;
        return true;
    }

    /**
     * PHP error handler, catch error types only E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE
     *
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param int    $errline
     *
     * @return boolean
     */
    public static function phpErrorHandler($errno, $errstr, $errfile, $errline)
    {
        static $base = null;

        $proc = false;

        if (is_null($base)) {
            $base = dirname(__FILE__) . DIRECTORY_SEPARATOR;
        }

        if (!(error_reporting() & $errno)) {
            return $proc;
        }

        // Do not report real path
        if (strpos($errfile, $base) === 0) {
            $errfile = str_replace($base, '', $errfile);
        } else if ($pos = strrpos($errfile, '/vendor/')) {
            $errfile = substr($errfile, $pos + 1);
        } else {
            $errfile = basename($errfile);
        }

        switch ($errno) {
            case E_WARNING:
            case E_USER_WARNING:
                elFinder::$phpErrors[] = "WARNING: $errstr in $errfile line $errline.";
                $proc = true;
                break;

            case E_NOTICE:
            case E_USER_NOTICE:
                elFinder::$phpErrors[] = "NOTICE: $errstr in $errfile line $errline.";
                $proc = true;
                break;

            case E_RECOVERABLE_ERROR:
                elFinder::$phpErrors[] = "RECOVERABLE_ERROR: $errstr in $errfile line $errline.";
                $proc = true;
                break;
        }

        // E_STRICT is deprecated; see https://wiki.php.net/rfc/deprecations_php_8_4#remove_e_strict_error_level_and_deprecate_e_strict_constant
        if (defined('E_STRICT') && $errno === @E_STRICT) {
            elFinder::$phpErrors[] = "STRICT: $errstr in $errfile line $errline.";
            $proc = true;
        }

        if (defined('E_DEPRECATED')) {
            switch ($errno) {
                case E_DEPRECATED:
                case E_USER_DEPRECATED:
                    elFinder::$phpErrors[] = "DEPRECATED: $errstr in $errfile line $errline.";
                    $proc = true;
                    break;
            }
        }

        return $proc;
    }

    /***************************************************************************/
    /*                                   utils                                 */
    /***************************************************************************/

    /**
     * Return root - file's owner
     *
     * @param  string  file hash
     *
     * @return elFinderVolumeDriver|boolean (false)
     * @author Dmitry (dio) Levashov
     **/
    protected function volume($hash)
    {
        foreach ($this->volumes as $id => $v) {
            if (strpos('' . $hash, $id) === 0) {
                return $this->volumes[$id];
            }
        }
        return false;
    }

    /**
     * Return files info array
     *
     * @param  array $data one file info or files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function toArray($data)
    {
        return isset($data['hash']) || !is_array($data) ? array($data) : $data;
    }

    /**
     * Return fils hashes list
     *
     * @param  array $files files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function hashes($files)
    {
        $ret = array();
        foreach ($files as $file) {
            $ret[] = $file['hash'];
        }
        return $ret;
    }

    /**
     * Remove from files list hidden files and files with required mime types
     *
     * @param  array $files files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function filter($files)
    {
        $exists = array();
        foreach ($files as $i => $file) {
            if (isset($file['hash'])) {
                if (isset($exists[$file['hash']]) || !empty($file['hidden']) || !$this->default->mimeAccepted($file['mime'])) {
                    unset($files[$i]);
                }
                $exists[$file['hash']] = true;
            }
        }
        return array_values($files);
    }

    protected function utime()
    {
        $time = explode(" ", microtime());
        return (double)$time[1] + (double)$time[0];
    }

    /**
     * Return Network mount volume unique ID
     *
     * @param  array  $netVolumes Saved netvolumes array
     * @param  string $prefix     Id prefix
     *
     * @return string|false
     * @author Naoki Sawada
     **/
    protected function getNetVolumeUniqueId($netVolumes = null, $prefix = 'nm')
    {
        if (is_null($netVolumes)) {
            $netVolumes = $this->getNetVolumes();
        }
        $ids = array();
        foreach ($netVolumes as $vOps) {
            if (isset($vOps['id']) && strpos($vOps['id'], $prefix) === 0) {
                $ids[$vOps['id']] = true;
            }
        }
        if (!$ids) {
            $id = $prefix . '1';
        } else {
            $i = 0;
            while (isset($ids[$prefix . ++$i]) && $i < 10000) ;
            $id = $prefix . $i;
            if (isset($ids[$id])) {
                $id = false;
            }
        }
        return $id;
    }

    /**
     * Is item locked?
     *
     * @param string $hash
     *
     * @return boolean
     */
    protected function itemLocked($hash)
    {
        if (!elFinder::$commonTempPath) {
            return false;
        }
        $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . self::filenameDecontaminate($hash) . '.lock';
        if (file_exists($lock)) {
            if (filemtime($lock) + $this->itemLockExpire < time()) {
                unlink($lock);
                return false;
            }
            return true;
        }

        return false;
    }

    /**
     * Do lock target item
     *
     * @param array|string $hashes
     * @param boolean      $autoUnlock
     *
     * @return void
     */
    protected function itemLock($hashes, $autoUnlock = true)
    {
        if (!elFinder::$commonTempPath) {
            return;
        }
        if (!is_array($hashes)) {
            $hashes = array($hashes);
        }
        foreach ($hashes as $hash) {
            $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . self::filenameDecontaminate($hash) . '.lock';
            if ($this->itemLocked($hash)) {
                $cnt = file_get_contents($lock) + 1;
            } else {
                $cnt = 1;
            }
            if (file_put_contents($lock, $cnt, LOCK_EX)) {
                if ($autoUnlock) {
                    $this->autoUnlocks[] = $hash;
                }
            }
        }
    }

    /**
     * Do unlock target item
     *
     * @param string $hash
     *
     * @return boolean
     */
    protected function itemUnlock($hash)
    {
        if (!$this->itemLocked($hash)) {
            return true;
        }
        $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . $hash . '.lock';
        $cnt = file_get_contents($lock);
        if (--$cnt < 1) {
            unlink($lock);
            return true;
        } else {
            file_put_contents($lock, $cnt, LOCK_EX);
            return false;
        }
    }

    /**
     * unlock locked items on command completion
     *
     * @return void
     */
    public function itemAutoUnlock()
    {
        if ($this->autoUnlocks) {
            foreach ($this->autoUnlocks as $hash) {
                $this->itemUnlock($hash);
            }
            $this->autoUnlocks = array();
        }
    }

    /**
     * Ensure directories recursively
     *
     * @param  object $volume Volume object
     * @param  string $target Target hash
     * @param  array  $dirs   Array of directory tree to ensure
     * @param  string $path   Relative path form target hash
     *
     * @return array|false      array('stats' => array([stat of maked directory]), 'hashes' => array('[path]' => '[hash]'), 'makes' => array([New directory hashes]), 'error' => array([Error name]))
     * @author Naoki Sawada
     **/
    protected function ensureDirsRecursively($volume, $target, $dirs, $path = '')
    {
        $res = array('stats' => array(), 'hashes' => array(), 'makes' => array(), 'error' => array());
        foreach ($dirs as $name => $sub) {
            $name = (string)$name;
            $dir = $newDir = null;
            if ((($parent = $volume->realpath($target)) && ($dir = $volume->dir($volume->getHash($parent, $name)))) || ($newDir = $volume->mkdir($target, $name))) {
                $_path = $path . '/' . $name;
                if ($newDir) {
                    $res['makes'][] = $newDir['hash'];
                    $dir = $newDir;
                }
                $res['stats'][] = $dir;
                $res['hashes'][$_path] = $dir['hash'];
                if (count($sub)) {
                    $res = array_merge_recursive($res, $this->ensureDirsRecursively($volume, $dir['hash'], $sub, $_path));
                }
            } else {
                $res['error'][] = $name;
            }
        }
        return $res;
    }

    /**
     * Sets the toast error handler.
     *
     * @param array $opts The options
     */
    public function setToastErrorHandler($opts)
    {
        $this->toastParams = $this->toastParamsDefault;
        if (!$opts) {
            restore_error_handler();
        } else {
            $this->toastParams = array_merge($this->toastParams, $opts);
            set_error_handler(array($this, 'toastErrorHandler'));
        }
    }

    /**
     * String encode convert to UTF-8
     *
     * @param      string  $str  Input string
     *
     * @return     string  UTF-8 string
     */
    public function utf8Encode($str)
    {
        static $mbencode = null;
        $str = (string) $str;
        if (@iconv('utf-8', 'utf-8//IGNORE', $str) === $str) {
            return $str;
        }

        if ($this->utf8Encoder) {
            return $this->utf8Encoder($str);
        }

        if ($mbencode === null) {
            $mbencode = function_exists('mb_convert_encoding') && function_exists('mb_detect_encoding');
        }

        if ($mbencode) {
            if ($enc = mb_detect_encoding($str, mb_detect_order(), true)) {
                $_str = mb_convert_encoding($str, 'UTF-8', $enc);
                if (@iconv('utf-8', 'utf-8//IGNORE', $_str) === $_str) {
                    return $_str;
                }
            }
        }
        return utf8_encode($str);
    }

    /***************************************************************************/
    /*                           static  utils                                 */
    /***************************************************************************/

    /**
     * Return full version of API that this connector supports all functions
     *
     * @return string
     */
    public static function getApiFullVersion()
    {
        return (string)self::$ApiVersion . '.' . (string)self::$ApiRevision;
    }

    /**
     * Return self::$commonTempPath
     *
     * @return     string  The common temporary path.
     */
    public static function getCommonTempPath()
    {
        return self::$commonTempPath;
    }

    /**
     * Return Is Animation Gif
     *
     * @param  string $path server local path of target image
     *
     * @return bool
     */
    public static function isAnimationGif($path)
    {
        list(, , $type) = getimagesize($path);
        switch ($type) {
            case IMAGETYPE_GIF:
                break;
            default:
                return false;
        }

        $imgcnt = 0;
        $fp = fopen($path, 'rb');
        fread($fp, 4);
        $c = fread($fp, 1);
        if (ord($c) != 0x39) {  // GIF89a
            return false;
        }

        while (!feof($fp)) {
            do {
                $c = fread($fp, 1);
            } while (ord($c) != 0x21 && !feof($fp));

            if (feof($fp)) {
                break;
            }

            $c2 = fread($fp, 2);
            if (bin2hex($c2) == "f904") {
                $imgcnt++;
                if ($imgcnt === 2) {
                    break;
                }
            }

            if (feof($fp)) {
                break;
            }
        }

        if ($imgcnt > 1) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Return Is Animation Png
     *
     * @param  string $path server local path of target image
     *
     * @return bool
     */
    public static function isAnimationPng($path)
    {
        list(, , $type) = getimagesize($path);
        switch ($type) {
            case IMAGETYPE_PNG:
                break;
            default:
                return false;
        }

        $fp = fopen($path, 'rb');
        $img_bytes = fread($fp, 1024);
        fclose($fp);
        if ($img_bytes) {
            if (strpos(substr($img_bytes, 0, strpos($img_bytes, 'IDAT')), 'acTL') !== false) {
                return true;
            }
        }
        return false;
    }

    /**
     * Return Is seekable stream resource
     *
     * @param resource $resource
     *
     * @return bool
     */
    public static function isSeekableStream($resource)
    {
        $metadata = stream_get_meta_data($resource);
        return $metadata['seekable'];
    }

    /**
     * Rewind stream resource
     *
     * @param resource $resource
     *
     * @return void
     */
    public static function rewind($resource)
    {
        self::isSeekableStream($resource) && rewind($resource);
    }

    /**
     * Determines whether the specified resource is seekable url.
     *
     * @param      <type>   $resource  The resource
     *
     * @return     boolean  True if the specified resource is seekable url, False otherwise.
     */
    public static function isSeekableUrl($resource)
    {
        $id = (int)$resource;
        if (isset(elFinder::$seekableUrlFps[$id])) {
            return elFinder::$seekableUrlFps[$id];
        }
        return null;
    }

    /**
     * serialize and base64_encode of session data (If needed)
     *
     * @deprecated
     *
     * @param  mixed $var target variable
     *
     * @author Naoki Sawada
     * @return mixed|string
     */
    public static function sessionDataEncode($var)
    {
        if (self::$base64encodeSessionData) {
            $var = base64_encode(serialize($var));
        }
        return $var;
    }

    /**
     * base64_decode and unserialize of session data  (If needed)
     *
     * @deprecated
     *
     * @param  mixed $var     target variable
     * @param  bool  $checkIs data type for check (array|string|object|int)
     *
     * @author Naoki Sawada
     * @return bool|mixed
     */
    public static function sessionDataDecode(&$var, $checkIs = null)
    {
        if (self::$base64encodeSessionData) {
            $data = unserialize(base64_decode($var));
        } else {
            $data = $var;
        }
        $chk = true;
        if ($checkIs) {
            switch ($checkIs) {
                case 'array':
                    $chk = is_array($data);
                    break;
                case 'string':
                    $chk = is_string($data);
                    break;
                case 'object':
                    $chk = is_object($data);
                    break;
                case 'int':
                    $chk = is_int($data);
                    break;
            }
        }
        if (!$chk) {
            unset($var);
            return false;
        }
        return $data;
    }

    /**
     * Call session_write_close() if session is restarted
     *
     * @deprecated
     * @return void
     */
    public static function sessionWrite()
    {
        if (session_id()) {
            session_write_close();
        }
    }

    /**
     * Return elFinder static variable
     *
     * @param $key
     *
     * @return mixed|null
     */
    public static function getStaticVar($key)
    {
        return isset(elFinder::$$key) ? elFinder::$$key : null;
    }

    /**
     * Extend PHP execution time limit and also check connection is aborted
     *
     * @param Int $time
     *
     * @return void
     * @throws elFinderAbortException
     */
    public static function extendTimeLimit($time = null)
    {
        static $defLimit = null;
        if (!self::aborted()) {
            if (is_null($defLimit)) {
                $defLimit = ini_get('max_execution_time');
            }
            if ($defLimit != 0) {
                $time = is_null($time) ? $defLimit : max($defLimit, $time);
                set_time_limit($time);
            }
        } else {
            throw new elFinderAbortException();
        }
    }

    /**
     * Check connection is aborted
     * Script stop immediately if connection aborted
     *
     * @return void
     * @throws elFinderAbortException
     */
    public static function checkAborted()
    {
        elFinder::extendTimeLimit();
    }

    /**
     * Return bytes from php.ini value
     *
     * @param string $iniName
     * @param string $val
     *
     * @return number
     */
    public static function getIniBytes($iniName = '', $val = '')
    {
        if ($iniName !== '') {
            $val = ini_get($iniName);
            if ($val === false) {
                return 0;
            }
        }
        $val = trim($val, "bB \t\n\r\0\x0B");
        $last = strtolower($val[strlen($val) - 1]);
        $val = sprintf('%u', $val);
        switch ($last) {
            case 'y':
                $val = elFinder::xKilobyte($val);
            case 'z':
                $val = elFinder::xKilobyte($val);
            case 'e':
                $val = elFinder::xKilobyte($val);
            case 'p':
                $val = elFinder::xKilobyte($val);
            case 't':
                $val = elFinder::xKilobyte($val);
            case 'g':
                $val = elFinder::xKilobyte($val);
            case 'm':
                $val = elFinder::xKilobyte($val);
            case 'k':
                $val = elFinder::xKilobyte($val);
        }
        return $val;
    }

    /**
     * Return X 1KByte
     *
     * @param      integer|string  $val    The value
     *
     * @return     number
     */
    public static function xKilobyte($val)
    {
        if (strpos((string)$val * 1024, 'E') !== false) {
            if (strpos((string)$val * 1.024, 'E') === false) {
                $val *= 1.024;
            }
            $val .= '000';
        } else {
            $val *= 1024;
        }
        return $val;
    }

    /**
     * Get script url.
     *
     * @return string full URL
     * @author Naoki Sawada
     */
    public static function getConnectorUrl()
    {
        if (defined('ELFINDER_CONNECTOR_URL')) {
            return ELFINDER_CONNECTOR_URL;
        }

        $https = (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off');
        $url = ($https ? 'https://' : 'http://')
            . $_SERVER['SERVER_NAME']                                              // host
            . ((empty($_SERVER['SERVER_PORT']) || (!$https && $_SERVER['SERVER_PORT'] == 80) || ($https && $_SERVER['SERVER_PORT'] == 443)) ? '' : (':' . $_SERVER['SERVER_PORT']))  // port
            . $_SERVER['REQUEST_URI'];                                             // path & query
        list($url) = explode('?', $url);

        return $url;
    }

    /**
     * Get stream resource pointer by URL
     *
     * @param array $data array('target'=>'URL', 'headers' => array())
     * @param int   $redirectLimit
     *
     * @return resource|boolean
     * @author Naoki Sawada
     */
    public static function getStreamByUrl($data, $redirectLimit = 5)
    {
        if (isset($data['target'])) {
            $data = array(
                'cnt' => 0,
                'url' => $data['target'],
                'headers' => isset($data['headers']) ? $data['headers'] : array(),
                'postData' => isset($data['postData']) ? $data['postData'] : array(),
                'cookies' => array(),
            );
        }
        if ($data['cnt'] > $redirectLimit) {
            return false;
        }
        $dlurl = $data['url'];
        $data['url'] = '';
        $headers = $data['headers'];

        if ($dlurl) {
            $url = parse_url($dlurl);
            $ports = array(
                'http' => '80',
                'https' => '443',
                'ftp' => '21'
            );
            $url['scheme'] = strtolower($url['scheme']);
            if (!isset($url['port']) && isset($ports[$url['scheme']])) {
                $url['port'] = $ports[$url['scheme']];
            }
            if (!isset($url['port'])) {
                return false;
            }
            $cookies = array();
            if ($data['cookies']) {
                foreach ($data['cookies'] as $d => $c) {
                    if (strpos($url['host'], $d) !== false) {
                        $cookies[] = $c;
                    }
                }
            }

            $transport = ($url['scheme'] === 'https') ? 'ssl' : 'tcp';
            $query = isset($url['query']) ? '?' . $url['query'] : '';
            if (!($stream = stream_socket_client($transport . '://' . $url['host'] . ':' . $url['port']))) {
                return false;
            }

            $body = '';
            if (!empty($data['postData'])) {
                $method = 'POST';
                if (is_array($data['postData'])) {
                    $body = http_build_query($data['postData']);
                } else {
                    $body = $data['postData'];
                }
            } else {
                $method = 'GET';
            }

            $sends = array();
            $sends[] = "$method {$url['path']}{$query} HTTP/1.1";
            $sends[] = "Host: {$url['host']}";
            foreach ($headers as $header) {
                $sends[] = trim($header, "\r\n");
            }
            $sends[] = 'Connection: Close';
            if ($cookies) {
                $sends[] = 'Cookie: ' . implode('; ', $cookies);
            }
            if ($method === 'POST') {
                $sends[] = 'Content-Type: application/x-www-form-urlencoded';
                $sends[] = 'Content-Length: ' . strlen($body);
            }
            $sends[] = "\r\n" . $body;

            stream_set_timeout($stream, 300);
            fputs($stream, join("\r\n", $sends) . "\r\n");

            while (($res = trim(fgets($stream))) !== '') {
                // find redirect
                if (preg_match('/^Location: (.+)$/i', $res, $m)) {
                    $data['url'] = $m[1];
                }
                // fetch cookie
                if (strpos($res, 'Set-Cookie:') === 0) {
                    $domain = $url['host'];
                    if (preg_match('/^Set-Cookie:(.+)(?:domain=\s*([^ ;]+))?/i', $res, $c1)) {
                        if (!empty($c1[2])) {
                            $domain = trim($c1[2]);
                        }
                        if (preg_match('/([^ ]+=[^;]+)/', $c1[1], $c2)) {
                            $data['cookies'][$domain] = $c2[1];
                        }
                    }
                }
                // is seekable url
                if (preg_match('/^(Accept-Ranges|Content-Range): bytes/i', $res)) {
                    elFinder::$seekableUrlFps[(int)$stream] = true;
                }
            }
            if ($data['url']) {
                ++$data['cnt'];
                fclose($stream);

                return self::getStreamByUrl($data, $redirectLimit);
            }

            return $stream;
        }

        return false;
    }

    /**
     * Gets the fetch cookie file for curl.
     *
     * @return string  The fetch cookie file.
     */
    public function getFetchCookieFile()
    {
        $file = '';
        if ($tmpDir = $this->getTempDir()) {
            $file = $tmpDir . '/.elFinderAnonymousCookie';
        }
        return $file;
    }

    /**
     * Call curl_exec() with supported redirect on `safe_mode` or `open_basedir`
     *
     * @param resource $curl
     * @param array    $options
     * @param array    $headers
     * @param array    $postData
     *
     * @throws \Exception
     * @return mixed
     * @author Naoki Sawada
     */
    public static function curlExec($curl, $options = array(), $headers = array(), $postData = array())
    {
        $followLocation = (!ini_get('safe_mode') && !ini_get('open_basedir'));
        if ($followLocation) {
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        }

        if ($options) {
            curl_setopt_array($curl, $options);
        }

        if ($headers) {
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        }

        $result = curl_exec($curl);

        if (!$followLocation && $redirect = curl_getinfo($curl, CURLINFO_REDIRECT_URL)) {
            if ($stream = self::getStreamByUrl(array('target' => $redirect, 'headers' => $headers, 'postData' => $postData))) {
                $result = stream_get_contents($stream);
            }
        }

        if ($result === false) {
            if (curl_errno($curl)) {
                throw new \Exception('curl_exec() failed: ' . curl_error($curl));
            } else {
                throw new \Exception('curl_exec(): empty response');
            }
        }

        curl_close($curl);

        return $result;
    }

    /**
     * Return bool that current request was aborted by client side
     *
     * @return boolean
     */
    public static function aborted()
    {
        if ($file = self::$abortCheckFile) {
            (version_compare(PHP_VERSION, '5.3.0') >= 0) ? clearstatcache(true, $file) : clearstatcache();
            if (!is_file($file)) {
                // GC (expire 12h)
                list($ptn) = explode('elfreq', $file);
                self::GlobGC($ptn . 'elfreq*', 43200);
                return true;
            }
        }
        return false;
    }

    /**
     * Return array ["name without extention", "extention"] by filename
     *
     * @param string $name
     *
     * @return array
     */
    public static function splitFileExtention($name)
    {
        if (preg_match('/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i', $name, $m)) {
            return array((string)$m[1], $m[2]);
        } else {
            return array($name, '');
        }
    }

    /**
     * Gets the memory size by imageinfo.
     *
     * @param      array $imgInfo array that result of getimagesize()
     *
     * @return     integer  The memory size by imageinfo.
     */
    public static function getMemorySizeByImageInfo($imgInfo)
    {
        $width = $imgInfo[0];
        $height = $imgInfo[1];
        $bits = isset($imgInfo['bits']) ? $imgInfo['bits'] : 24;
        $channels = isset($imgInfo['channels']) ? $imgInfo['channels'] : 3;
        return round(($width * $height * $bits * $channels / 8 + Pow(2, 16)) * 1.65);
    }

    /**
     * Auto expand memory for GD processing
     *
     * @param      array $imgInfos The image infos
     */
    public static function expandMemoryForGD($imgInfos)
    {
        if (elFinder::$memoryLimitGD != 0 && $imgInfos && is_array($imgInfos)) {
            if (!is_array($imgInfos[0])) {
                $imgInfos = array($imgInfos);
            }
            $limit = self::getIniBytes('', elFinder::$memoryLimitGD);
            $memLimit = self::getIniBytes('memory_limit');
            $needs = 0;
            foreach ($imgInfos as $info) {
                $needs += self::getMemorySizeByImageInfo($info);
            }
            $needs += memory_get_usage();
            if ($needs > $memLimit && ($limit == -1 || $limit > $needs)) {
                ini_set('memory_limit', $needs);
            }
        }
    }

    /**
     * Decontaminate of filename
     *
     * @param      String  $name   The name
     *
     * @return     String  Decontaminated filename
     */
    public static function filenameDecontaminate($name)
    {
        // Directory traversal defense
        if (DIRECTORY_SEPARATOR === '\\') {
            $name = str_replace('\\', '/', $name);
        }
        $parts = explode('/', trim($name, '/'));
        $name = array_pop($parts);
        return $name;
    }

    /**
     * Execute shell command
     *
     * @param  string $command      command line
     * @param  string $output       stdout strings
     * @param  int    $return_var   process exit code
     * @param  string $error_output stderr strings
     * @param  null   $cwd          cwd
     *
     * @return int exit code
     * @throws elFinderAbortException
     * @author Alexey Sukhotin
     */
    public static function procExec($command, &$output = '', &$return_var = -1, &$error_output = '', $cwd = null)
    {

        static $allowed = null;

        if ($allowed === null) {
            if ($allowed = function_exists('proc_open')) {
                if ($disabled = ini_get('disable_functions')) {
                    $funcs = array_map('trim', explode(',', $disabled));
                    $allowed = !in_array('proc_open', $funcs);
                }
            }
        }

        if (!$allowed) {
            $return_var = -1;
            return $return_var;
        }

        if (!$command) {
            $return_var = 0;
            return $return_var;
        }

        $descriptorspec = array(
            0 => array("pipe", "r"),  // stdin
            1 => array("pipe", "w"),  // stdout
            2 => array("pipe", "w")   // stderr
        );

        $process = proc_open($command, $descriptorspec, $pipes, $cwd, null);

        if (is_resource($process)) {
            stream_set_blocking($pipes[1], 0);
            stream_set_blocking($pipes[2], 0);

            fclose($pipes[0]);

            $tmpout = '';
            $tmperr = '';
            while (feof($pipes[1]) === false || feof($pipes[2]) === false) {
                elFinder::extendTimeLimit();
                $read = array($pipes[1], $pipes[2]);
                $write = null;
                $except = null;
                $ret = stream_select($read, $write, $except, 1);
                if ($ret === false) {
                    // error
                    break;
                } else if ($ret === 0) {
                    // timeout
                    continue;
                } else {
                    foreach ($read as $sock) {
                        if ($sock === $pipes[1]) {
                            $tmpout .= fread($sock, 4096);
                        } else if ($sock === $pipes[2]) {
                            $tmperr .= fread($sock, 4096);
                        }
                    }
                }
            }

            fclose($pipes[1]);
            fclose($pipes[2]);

            $output = $tmpout;
            $error_output = $tmperr;
            $return_var = proc_close($process);

        } else {
            $return_var = -1;
        }

        return $return_var;

    }

    /***************************************************************************/
    /*                                 callbacks                               */
    /***************************************************************************/

    /**
     * Get command name of binded "commandName.subName"
     *
     * @param string $cmd
     *
     * @return string
     */
    protected static function getCmdOfBind($cmd)
    {
        list($ret) = explode('.', $cmd);
        return trim($ret);
    }

    /**
     * Add subName to commandName
     *
     * @param string $cmd
     * @param string $sub
     *
     * @return string
     */
    protected static function addSubToBindName($cmd, $sub)
    {
        return $cmd . '.' . trim($sub);
    }

    /**
     * Remove a file if connection is disconnected
     *
     * @param string $file
     */
    public static function rmFileInDisconnected($file)
    {
        (connection_aborted() || connection_status() !== CONNECTION_NORMAL) && is_file($file) && unlink($file);
    }

    /**
     * Call back function on shutdown
     *  - delete files in $GLOBALS['elFinderTempFiles']
     */
    public static function onShutdown()
    {
        self::$abortCheckFile = null;
        if (!empty($GLOBALS['elFinderTempFps'])) {
            foreach (array_keys($GLOBALS['elFinderTempFps']) as $fp) {
                is_resource($fp) && fclose($fp);
            }
        }
         //Delete temp file paths
        if (!empty($GLOBALS['elFinderTempFiles'])) {
            foreach (array_keys($GLOBALS['elFinderTempFiles']) as $f) {
                //Make sure paths are safe before deleting them
                $tf = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . basename($f);
                is_file($tf) && is_writable($tf) && unlink($tf);
            }
            unset($f);
        }

        //Delete abort file paths
        if(!empty($GLOBALS['elFinderAbortFiles'])) {
            foreach (array_keys($GLOBALS['elFinderAbortFiles']) as $f) {
                //Make sure paths are safe before deleting them
                $tf = elFinder::$connectionFlagsPath . DIRECTORY_SEPARATOR . basename($f);
                is_file($tf) && is_writable($tf) && unlink($tf);
            }
            unset($f);
        }

    }

    /**
     * Garbage collection with glob
     *
     * @param string  $pattern
     * @param integer $time
     */
    public static function GlobGC($pattern, $time)
    {
        $now = time();
        foreach (glob($pattern) as $file) {
            (filemtime($file) < ($now - $time)) && unlink($file);
        }
    }

} // END class

/**
 * Custom exception class for aborting request
 */
class elFinderAbortException extends Exception
{
}

class elFinderTriggerException extends Exception
{
}
                                                                                                                                                                                       includes/File_manager/lib/php/elFinderFlysystemGoogleDriveNetmount.php                              0000644                 00000035511 15266052700 0022332 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
use League\Flysystem\Cached\CachedAdapter;
use League\Flysystem\Cached\Storage\Adapter as ACache;
use Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter;
use Hypweb\Flysystem\Cached\Extra\Hasdir;
use Hypweb\Flysystem\Cached\Extra\DisableEnsureParentDirectories;
use Hypweb\elFinderFlysystemDriverExt\Driver as ExtDriver;

elFinder::$netDrivers['googledrive'] = 'FlysystemGoogleDriveNetmount';

if (!class_exists('elFinderVolumeFlysystemGoogleDriveCache', false)) {
    class elFinderVolumeFlysystemGoogleDriveCache extends ACache
    {
        use Hasdir;
        use DisableEnsureParentDirectories;
    }
}

class elFinderVolumeFlysystemGoogleDriveNetmount extends ExtDriver
{

    public function __construct()
    {
        parent::__construct();

        $opts = array(
            'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
            'rootCssClass' => 'elfinder-navbar-root-googledrive',
            'gdAlias' => '%s@GDrive',
            'gdCacheDir' => __DIR__ . '/.tmp',
            'gdCachePrefix' => 'gd-',
            'gdCacheExpire' => 600
        );

        $this->options = array_merge($this->options, $opts);
    }

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     **/
    protected function init()
    {
        if (empty($this->options['icon'])) {
            $this->options['icon'] = true;
        }
        if ($res = parent::init()) {
            if ($this->options['icon'] === true) {
                unset($this->options['icon']);
            }
            // enable command archive
            $this->options['useRemoteArchive'] = true;
        }
        return $res;
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return Array
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $client = new \Google_Client();
            $client->setClientId($options['client_id']);
            $client->setClientSecret($options['client_secret']);

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('GoogleDriveAuthParams', [])->set('GoogleDriveTokens', []);
            } else if ($options['pass'] === 'googledrive') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('GoogleDriveAuthParams', []), $options);

            if (!isset($options['access_token'])) {
                $options['access_token'] = $this->session->get('GoogleDriveTokens', []);
                $this->session->remove('GoogleDriveTokens');
            }
            $aToken = $options['access_token'];

            $rootObj = $service = null;
            if ($aToken) {
                try {
                    $client->setAccessToken($aToken);
                    if ($client->isAccessTokenExpired()) {
                        $aToken = array_merge($aToken, $client->fetchAccessTokenWithRefreshToken());
                        $client->setAccessToken($aToken);
                    }
                    $service = new \Google_Service_Drive($client);
                    $rootObj = $service->files->get('root');

                    $options['access_token'] = $aToken;
                    $this->session->set('GoogleDriveAuthParams', $options);

                } catch (Exception $e) {
                    $aToken = [];
                    $options['access_token'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('GoogleDriveAuthParams', $options);
                        return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
                    }
                }

            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code || $options['user'] === 'init') {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (isset($options['id'])) {
                    $callback = $options['url'] . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=googledrive&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                    $client->setRedirectUri($callback);
                }

                if (!$aToken && empty($code)) {
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    if (!empty($options['offline'])) {
                        $client->setApprovalPrompt('force');
                        $client->setAccessType('offline');
                    }
                    $url = $client->createAuthUrl();

                    $html = '<input id="elf-volumedriver-googledrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "googledrive", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('GoogleDriveAuthParams', $options);
                        return array('exit' => true, 'body' => $html);
                    } else {
                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "googledrive", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount'
                        );
                        return array('exit' => 'callback', 'out' => $out);
                    }
                } else {
                    if ($code) {
                        if (!empty($options['id'])) {
                            $aToken = $client->fetchAccessTokenWithAuthCode($code);
                            $options['access_token'] = $aToken;
                            unset($options['code']);
                            $this->session->set('GoogleDriveTokens', $aToken)->set('GoogleDriveAuthParams', $options);
                            $out = array(
                                'node' => $options['id'],
                                'json' => '{"protocol": "googledrive", "mode": "done", "reset": 1}',
                                'bind' => 'netmount'
                            );
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = array(
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'googledrive',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code'=> $code
                                    )
                                )),
                                'bind' => 'netmount'
                            );
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $folders = [];
                    foreach ($service->files->listFiles([
                        'pageSize' => 1000,
                        'q' => 'trashed = false and mimeType = "application/vnd.google-apps.folder"'
                    ]) as $f) {
                        $folders[$f->getId()] = $f->getName();
                    }
                    natcasesort($folders);
                    $folders = ['root' => $rootObj->getName()] + $folders;
                    $folders = json_encode($folders);
                    $json = '{"protocol": "googledrive", "mode": "done", "folders": ' . $folders . '}';
                    $options['pass'] = 'return';
                    $html = 'Google.com';
                    $html .= '<script>
                        $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('GoogleDriveAuthParams', $options);
                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            $this->session->remove('GoogleDriveAuthParams')->remove('GoogleDriveTokens');
            if (empty($options['pass'])) {
                return array('exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage());
            } else {
                return array('exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]);
            }
        }

        if (!$aToken) {
            return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
        }

        if ($options['path'] === '/') {
            $options['path'] = 'root';
        }

        try {
            $file = $service->files->get($options['path']);
            $options['alias'] = sprintf($this->options['gdAlias'], $file->getName());
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        } catch (Google_Service_Exception $e) {
            $err = json_decode($e->getMessage(), true);
            if (isset($err['error']) && $err['error']['code'] == 404) {
                return array('exit' => true, 'error' => [elFinder::ERROR_TRGDIR_NOT_FOUND, $options['path']]);
            } else {
                return array('exit' => true, 'error' => $e->getMessage());
            }
        } catch (Exception $e) {
            return array('exit' => true, 'error' => $e->getMessage());
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop table `dropbox` & rm thumbs
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     * @internal param array $options
     */
    public function netunmount($netVolumes, $key)
    {
        $cache = $this->options['gdCacheDir'] . DIRECTORY_SEPARATOR . $this->options['gdCachePrefix'] . $this->netMountKey;
        if (file_exists($cache) && is_writeable($cache)) {
            unlink($cache);
        }
        if ($tmbs = glob($this->tmbPath . DIRECTORY_SEPARATOR . $this->netMountKey . '*')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }
        return true;
    }

    /**
     * "Mount" volume.
     * Return true if volume available for read or write,
     * false - otherwise
     *
     * @param array $opts
     *
     * @return bool
     * @author Naoki Sawada
     */
    public function mount(array $opts)
    {
        $creds = null;
        if (isset($opts['access_token'])) {
            $this->netMountKey = md5(join('-', array('googledrive', $opts['path'], (isset($opts['access_token']['refresh_token']) ? $opts['access_token']['refresh_token'] : $opts['access_token']['access_token']))));
        }

        $client = new \Google_Client();
        $client->setClientId($opts['client_id']);
        $client->setClientSecret($opts['client_secret']);

        if (!empty($opts['access_token'])) {
            $client->setAccessToken($opts['access_token']);
        }
        if ($this->needOnline && $client->isAccessTokenExpired()) {
            try {
                $creds = $client->fetchAccessTokenWithRefreshToken();
            } catch (LogicException $e) {
                $this->session->remove('GoogleDriveAuthParams');
                throw $e;
            }
        }

        $service = new \Google_Service_Drive($client);

        // If path is not set, use the root
        if (!isset($opts['path']) || $opts['path'] === '') {
            $opts['path'] = 'root';
        }

        $googleDrive = new GoogleDriveAdapter($service, $opts['path'], ['useHasDir' => true]);

        $opts['fscache'] = null;
        if ($this->options['gdCacheDir'] && is_writeable($this->options['gdCacheDir'])) {
            if ($this->options['gdCacheExpire']) {
                $opts['fscache'] = new elFinderVolumeFlysystemGoogleDriveCache(new Local($this->options['gdCacheDir']), $this->options['gdCachePrefix'] . $this->netMountKey, $this->options['gdCacheExpire']);
            }
        }
        if ($opts['fscache']) {
            $filesystem = new Filesystem(new CachedAdapter($googleDrive, $opts['fscache']));
        } else {
            $filesystem = new Filesystem($googleDrive);
        }

        $opts['driver'] = 'FlysystemExt';
        $opts['filesystem'] = $filesystem;
        $opts['separator'] = '/';
        $opts['checkSubfolders'] = true;
        if (!isset($opts['alias'])) {
            $opts['alias'] = 'GoogleDrive';
        }

        if ($res = parent::mount($opts)) {
            // update access_token of session data
            if ($creds) {
                $netVolumes = $this->session->get('netvolume');
                $netVolumes[$this->netMountKey]['access_token'] = array_merge($netVolumes[$this->netMountKey]['access_token'], $creds);
                $this->session->set('netvolume', $netVolumes);
            }
        }

        return $res;
    }

    /**
     * @inheritdoc
     */
    protected function tmbname($stat)
    {
        return $this->netMountKey . substr(substr($stat['hash'], strlen($this->id)), -38) . $stat['ts'] . '.png';
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && empty($this->options['refresh_token']) && $this->options['access_token'] && isset($this->options['access_token']['refresh_token'])) {
            $res['refresh_token'] = $this->options['access_token']['refresh_token'];
        }

        return $res;
    }
}
                                                                                                                                                                                       includes/File_manager/lib/themes/Material-Light/icons/material.eot                                  0000644                 00000060204 15266052700 0021210 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       „`  Ü_                �    LP                       ãŠfž                   m a t e r i a l    R e g u l a r    V e r s i o n   1 . 0    m a t e r i a l          €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/themes/Material-Light/icons/material.woff2                                0000644                 00000027104 15266052700 0021446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOF2     .D     _Ü  -ç                       TV �  	–p
�„T÷<�> 6$‚x …M‡<�~W5ÊîC)·ªHeXE°qP ö¤/gÿÿ÷ä†ÈÀ?Pçöª XF–ÝXTaPXáº¾9âzÞ‹7Žû¾Œ÷]¾»0PQíÂáÄÍ®Ôò»Õñõî$ãm‹ž¤Å�ÄƒÆÏ3æZñ8Ü‘_…­ …SM	+°Yd	Ö-Ÿ)¬|*<ŠR<¤º�åè¢±óEŽÐØ'¹À¸¼5‰?)¶…pî«—4iR¢?Ð?HP·$áÈ¸qjÕé•gôÁó¹éªŠóUž¹ÂÚJÕ¸�³µ“&?PP�´'¼:‚àp÷-ŒBZ¶6îE!oË0L¬Á63Ù<Ù™Ê‰éoóÐvâ¾ðµÊï™*=UàÈ Í­m¤úÊF›cwã	,‰	Gº n7b,é6†Ø�ÖàýÙ�˜ØøíÏáûìÍÿR­|ï›þÝ ÝÎç3ÉU<Ê±X<n‚…ÌŒÃ�O™µA®0W¤x3Ùüþw.?tÇÂUŽr¤ö¦€üØ¦Dé%¿#¡æ$¹nVÍþµýÏŠR�4s¹_,‹ØÍ*	š<+jŠ’“®š,nÖ\íR&)d�Û9¡^Õñ�:ßô$Ë±ŒB†í$ÁÇ8þ­ãÁ¼·½y»¥5M
÷„y€–ÑØM‰7~f'rÖA>Ø–Z¯r–Ýû.éž‘‚øþóÐ0`[6o•ö •+}4yŽ*¿Cþ… lGÀß«Z¶ï’^.uIŽpHrÑÈç«òãƒàá€ä'(Ê ¨ÝaÐŽEJ²!ê¤Mº‰bªœ2Dm vwÆ¢.i³t!vç.Ä0½‹ÒE›òºÞã¢mÜ»­Lü»ã×Öüy G�ja@JÇ1û;ÎhÒ …ý´ßê]¯Ê�B£ A)/þ^‚�±‰š´Ø+‡nB $ÍÛ%‹	å6{c¼ì|)›p@ÝáÄ�Mñ|è“”(
 ›t{L*Ö¢¼âþÿÙ÷>ðe9
é$O‡³Ò„ÿÃS�:Ël]ó¯ÏbN)4áþ`™d3ºHžàð_VùˆRíåïýãùù"nYú™üWïÅÍßÿ_Ëã„"±D*“+”*-:uéVkëÑ«O¿ƒ†1jÌ¸	“¦L›1kÎ¼‹–,[±jÍº›¶lÛ±kÏ¾@(K¤2¹B©Rk´:B3zƒÑd¶Xmv‡�O<Žoà‰…@Â×‚!ˆ0D"
ƒˆC$ ’)ˆ4D"‘ƒÈC Š%ˆ2D¢
Qƒ¨C4 š-ˆ6D¢ÑƒèC F F!Æ Æ!& &!¦ ¦!f f!æ æ! !– –!V V!Ö Ö!6 6!¶ ¶!v v!ö ö! !Ž Ž!N N!Î Î!. .!® ®!n n!î î! !†OÏ/¯oïŸpðUn¡ÜCy„òl¬œz¼�Ô&‘i|÷âÛ <ùG¬ŸÐýô\¾s¼ˆ3äO©é¿�,_Ç:2"¤!GÚŽ¢³`9³”Àü-Töq�]¶ãöõ'/*&¿ƒ÷/½p?p}w×‹€‚áfÒ„ã±zBÞð<Ÿ'‚ß.Ì�?Ò>‹	ïGs‡WaUÄ`ò†Â—’{?%_KhA¥i"„æiòâèò%‘@QZ*¨¨`Rtí€Œ5Lßå7²èä’³ˆl»û5ïe~¸¢²W>¾4éuð^ìý7^q3 µUÂ7Õ áÞ€d¸šÁ¼‚ÈáDYÏˆ5Ú¢Îµc€ºŽÿ©è‹fpg?†üLlÂ�YfµnW^=ã¿[¸æòTƒ±<TaÂ%“š“‚ý.µÏ"†TSSýi	hÓþÑ4‚�ÆfýàÅ¨„]ážEö¿U,ch�ÉÇ´òV� GM´L ¦ìðàŸŠ¾æ¡êŸç0"ÒâGP¿OÞú¢Ú&¬—Óéw-K†^ù'oÒ´(¢s’è�–¬S(*ÇÄÃ`*R]	oPä¡8)èhÇãUœËhÒÎE¿Ä†))ÏÊ�;0dÏäL1MGx»-PhCA²;ˆ8¾í\`®D&o=qh¬/M_(J‡¸üêwº™G1‡.*ùhäß{æz°,Q(ö,+‰´°„ì@'VÐ…5tcjl �-ô`ÏêÅžÑÞ	Ô‡zQ?` KÄaÃXÃvaÃÆ±Wš NT	&«"ÓuózÍoÂLNHÔÏÍ8éœÌ-§ô`uQÓ�š©éZFB›šáÿÆâÄéœâxs`ú,Gš_/Í÷úÈæßÏE¨˜hî6GiýâéççøLÊ\lv-€ô}´È‘$ê´ˆjíÄr	OPdåRï2ŠŒZ¨„C†dvøQþèÕVüÈ˜;r³ð°Ãqy×r¤E¥“’ïO�{Ó<+ÀI^ê³Ú�ª|‘JÙø§™ìÝåÊÏbk†Š-æÁi·Kä!B¡]sŽŠK„G3â>’q¢t˜&R¾¤“á<j—†äVRÈ…”i—ŒÒ²£T§´p®WÀ4Ë#ßm­inˆáPÙhtí€¼/õWM;Z`-L‹PVÛø-=9¸¬hÅåµhCt¢øJé¼ÊÍÉ<û
'*&‰§5»Ó®³ÙÕ˜�š*­:)\d—o>*œVïxt»‡£ØÂÎ+ŽYÝkŸ¸CU¦b½w·fû•^¶Ø!l^|ë»àŠWèÞW=÷'TRÎ-¯‡ã¨Xqª,µ¯\ØTù#Jœ OT•?Ø/¶9£�þKôŠG»NMÊMOôÀÈTg%ô�2">v|”…¤¼ÁpÑ±QÍLs`	jK¹ðBþêœŸîÄ%ÍE^8Ûç²ƒóÑjº<TñÈ¼Ø—Eò ã.÷8è
3uDAh{Iˆ:$¢ �L/qQ�ÁQÐˆ¦^â£ƒ%¢ l½$B;GDA'¸z‰‡nžˆ‚^¤ôû¼f1GiÞ¨@D’)Z 9È)"„$¨Aâ-P ¯Œ `+ØkN�á^�Oôµ?z_LVEZ·«Î'¿ÈíŸ¿\I›"ø¹37ž"-ôç¥M'õ¿È„ÅaùÿÚ‹ÿ3ù¦Y¯Â¥a%Aj�ºÀyÎÀƒN]/RRÛØd°b¼¥1ƒÃËƒ*ñíEã^�Ö,«‹év?æÜ’Ò'£A•+3{ÈØÄ²ûæGÌ‰k,å»Ì2AX˜M�/î›$Ÿî˜“•1m§–®¢9¦öƒ7ŸÛš ˜Ðèª[ ”6Ëõ¥âkõØ§U�^B�mó,wéEæ–›ÔË³ƒ)içscM™ù’îçëOk4µª…1ú�2mü·ªŠ˜úÜfeÂ)�ÚÜ
Ìt<²{L9œ;Šk§Ï 2°àé˜£BºÖxÒ¶*k	J7g;HèÖlÒ°…•‹8©(¼�äŽ8xPø,f£ªÿ ŽÒ¤sôßM£* Gè¿L¡¾f(�Lbeep r‹¥­©õË‹á¡ö ïa;Tæa®$ƒë>8�ÔitõH-P�wÐ´M$ÅÊÑ™ªÅÌmÔI«j}Ð:“ò¿U:åïÛ¿[VŠ?žþ¦ŒþúÅ2oˆ5¾XÂU|‰Çøô…_Ç{Ê?ú_Í>•~¨q]Hb�•tÁú	ï”äse' �¢ð(,­–Èett§ª§ýÖøeÆÝÁ—{Õ:�ØÞÁ“Á�MU§ÚUmf˜Óé9åîæ±ãd¹Þ[WÙÔRÙ½×òúDwuOö0"•oË`•lÌ0ØªrÿqÝ«+([“§EFbFðæ¹(Ç±û„ƒ(h¹‡ÕK{¸È€Û *-”qBóÌH¢„Þ=yx<Ô‡H¡D…†�†Àè€s;8"1CáˆT5ßTÈÿÿëùÜÌ«ŒåÒ-8§…Uó§VÝhå½«&>aJÉŸªAæ¢R0ÿNqABF4éŒŒ)�–L©ª#.s%¼sÊ+$/‹Y¯²Ma÷¡8ôp„1eyzýÄ9szOjwr3×¬$±ÝPN1R4‡²ò}»*´3p1f•‰r7Á8Â„è÷kg½«µ†À>PûA¨åXœµ>Vå›ùî&W’&¬‡ ¬îu¯4)xmK6'h‚²OER\Óu@E¹!€Ø§,¤~x¾Q•RÙUÏ…r„U5;X^œ!Ð–1ÿ$ÚA7|Uþ
°f<rþ#4û�ä¶‹ô^Êœ©ikISÊ]²lï`Ô¾­S$TÐ†ÜÂÿô„2ø#]Çg`°°�7v$ÀÒµ~wÍ5Og¯¶
$¾@Èikˆ:KZrÎBmð‡Ç�¡%ŸÂãge‘W‹`þë$·¶)©º®“¨â)>>ÀÅ’í|Ñyü?ŸÀÜ¾|oo~˜?žçEÒì‹¥í�r·´?.r@Í|ü®{ÿGVÏ†nÐãÎÈô�îul&Þ6¶mfMw5¦øú2\í+×iC$5ªv)¤ž 'Ë}JÐ�)\�‘é…~ ÀLo»…ÞíÌæî«•<Ðr£7ûd^_…$¨VoJ”MÎ B)˜î˜aT�>ÝSˆGœ:G=9Âßjdôj:/Ñ$MÚ8]ãv-ä1W&ÿ¬—áj¦!œ›j}‡>g“è“©¬9uå´½zP”x=a¢¶xS}µÖ}0ŽŽÀ®Oiª &Æ¹ÙK`µÍÐö–ëý˜Mà	ß ypTe5ö*v€šPôûLœö.øáùêÞ  M¤PÑ¬ò¥àÉÙ~Ã¿“„äÍªNrU-dIž¨Ø)¦ ¢cË%Ã�ÞÍghÏ2
;žêÉØÌ&nZÈˆ„D%8R{Â'Ñ°àØ¯˜éÆ,÷Š«0[O\}ò(ºZ|g‘šrGwi·+7ùùžþ8�v­ð°û/@á›Z]u~PÙ›«(}­ÝßB%áÃª¾<¢Ý}?9Ä[J\¨oÅç²Vñ­b„D$€è�×3bù£þ$JEãëÞV[0S6›–MµbìO1•­•ÛÝ1iÂ‚½(Ì@Ù
Þï“¨)7‡žUï`ƒ¹»˜à»F®ù­ä*‹�Ž<”e…ÝNôrñòŸö°!|iš£°ÿ÷G6jœ¶û÷«–ßn4à¹ð©ûo©/æµi9\~¥úÒâ¿èèçïO!úŒšðYü…¦(~ÅýgD“×ùV×ù‹î=™ÌÉ9Hy»PÖC›dÂ…T–}€cæ·Ø4„´¡©²{ÌZx}{ûH~Rf ÍÏ¶P¾ÊÈV³&ÃYbÜfe=cÉÛÉæ±†ÃIi#Ì)Õýó¤dà,P›ö»ð<cƒÆ;ÀèÐª”Ûó†¾Sç‰¹OÜ4“C'3c¥û5ÌŒ(´íŒ¬÷�n:“¹Á×XhÛ(ÐÚ5›ïŒ8Òë:òÍ¥'¹ÌœµF«":WãúÝTFq°(YWÅ«&ô/½pÅP¸KÝ ã¤rŸ¾¶Œ¶ÒÛ4ú»Ñ´m\3ëÊ4KX�ØÂîšknŒ•°´îr4¯õÍÃéáÕV¬-íê"?CM(Âí·#?¥ˆSýÇ£�aX£èÙ!ËËx³éÇÍ�Çf,VâºB9!9A;Q85QÄNg;Á•¼ÕxÕ¥ƒ¤yî¡êÇÍ�Qˆ"<3÷®Ä4¦‘›÷›?Î«E%PÊ²ò¹/(€ßG^(f—o–oý
“¹Á.Ò¤í_üûÀ@ƒP$ªžRí›Ò�eMý]hõ±‡29yöøiã1-yúÔÏ¼÷ˆ†ØáQçdEÀG@A"=™—÷Or
�d%u,CÅÛ²äYkK�‘R/¾§¦­GøÖößIˆW)mçjÏïë’‰ŠœïZíq>¯£³C©@�ª¯EÍóÎDËä&:éÊôÛZ0õùûwï@‰âë×aóS•§†+·a0�‚B5”xˆIÏZÑeýûÞ¯š¥:Î¹p´rl�Ž46eÑhaFÝ:ÝÏ²„…Ç+–¯€ŽIœKF„›Êæ¤rCãömàÛ(×'7ÏØ4ò.Y¿iïünD¦”‡5^©$G•Ü6»F¤]Ò‚�R¾ŸK²ÁƒÑC1¶”íŽëÄn¢¯Ì÷z¥ÜÊ³r:éÌ¾fÉ:ï©,¦\ÎT7¤áê´ÀšVa4Úýœz®æ„_Mô;€‰÷ŠwÆÿìþ‰ÐÃêõÂë®×½É+¾~E ·ý8¶ÃÜ.m7ï võ?ÔZ¢•ŠW¥ÅeìóÖËjçÔÊ’¿:ì>ù.ãdÓòöv¹óIŽšš0wž»+ˆ«©†<òK	Å„%„š¦»s„&‚—këbÝ�{»GÖÿ'—œÐ¸²Uy65Ûc�{Výœ´qc‰þV[ Ñ5z�÷
ôïí\j¤T–°áYS*àf8Ê³Qz¿¹Ÿ~…qhåìZc§RñM¡ìELßL·,hZ‹8€ÉmÅ
½(-µB÷P4è€í˜loÒ¢`0§…ˆX²’�°–gÓaÍ³°ô°	
ˆK¤>¡\¢â]PHLLú†½SÌÐ·@ÐUU†ð¿zeÉÁœƒ ïÒÀUˆC†0æˆE„ÝZ…~Ci5‘V ÐŠïqä WñÖ¨±Þ€„¾U6µ‚%e0¤,Åñ‰8r�këãé_ºn¡J4Q„k�–wôàé^ÖåÑrÅÔXJ:´”Å²:-?viÎjº$÷´Ìž¬ÇMDqùéÈ«C†-Óéç)ðÑ™ÒŒ¥Ðb}Ž²c' _†|¿jØY�¨Ï3rF~U~Vü{•~‚˜[¹¨¥%VDZ¡pœú›‹Sxä™¬ÙÞ
bâ0`àÛ-ª÷z·îQ"õÐÀ÷KäáÕ[ ¤¡´‰¦¤ø;£¥eÚúˆuˆ®©èÅþÞ?û Ð÷goÿE49qN	ïÀfIåfÐnS+èì\Ø¥é] %Å"Ö…ºš‰8&Ú€]ô=îÉhrÃoÑ-¥'Ð�b,Jbù|‡Âa”Èêxj"}w�ESãéI»é‰ËŠ§%ÑPq!´à\°Í–�0Öa‹�uâœq½îëçI–ÍZ¸`þ‚ðùÝƒ4á|±\?§uÖÜÖ¼%‡5�è®6\ã®Ïn¼KÞ¸C
HÐ3wQQºNpãÆRÕ˜•FŠ”ª8J•£ÿ
Cúõ@îqe‹¸ÂíÿÀ¾%Œ_Œâ¤Á>>ã¨s&$
‡¼«Ö¨TÏ,µŠ1éè`XL÷X“IÐÙÊ�ÊDºñê3vìÇ7ÈÒÆçÊ��¼'ŸÍz’�Ó€º™nÈW 4XÐ¢¤–ÈJr“²ìîšÒ 3ˆÄiéØ*�‘¯×ˆôáo\Œ_¤	×»¼¾D¯ú¥ÿÓŒU³å,©Œ¦`da[
¡–ç·Æ’
M}f±gN€yŒ;=ÝæpjæòSö)
%Ö—3‡EC Á[q–òS«øû¯;¿òuCÉ~¼ÅmCþ$»cÉÞžMhTZdÁÂWªúz÷´¶FDî�$X¯˜Åz™Ð¦i£Í£Á¦°¼Ù‡xëC#�Þx¬ÁÚ±Ý¹}ûØqæh@äJBªŽo�ö±¼ãWƒ,Üx¼ŠlzÆ#ÚßK“zsèÒEòu=¥ß?º�·²êÈ YC›Öà ûÀ^Ó9žŠËUqUªÞ«]¯iœT;…ƒ\äXr�ÓpŽ[å0uN
;ÏÒÙ	U#\ÃË]/ù”V	u¿ÛörC;Ì©tÏŒ8tªY�ð)¤ÝX7¡Ô�§Ås�?¾œ^HC†!d5ŸŸë1ÉkRÝ‹Ä¢ÓÈš÷Ç—ìç¼ó]7=~H…!N�¦RÓï‰0!×dÙe1õõQAÛ}º%K™€fæ²·yA–¬mBÍ3AÌÞ…®ì¢ –dÇ¢†ªšêª�]È^øò7y¡qÄ(Ï9À‚Ü¨>Ÿ|ßâ-¨¥£ï°Û¨í7r;èÐh²5ONcÞ1� Ï&û|Ò`Ì lý¬
¨)|žZÍ/#à�K¡�†H+(mò¿çñCK“�ª¸* e´èÅï+¬+Ð×aŒ/¨uCVÁh
åi‹m+)«ºEQ:±¡}È§ÕÇÅ�yI\Ô^9ºš1s´úày?qjì®§¼e—Â®eA0-·‡¼ãÍ%Fö)•r#+SPÍaSwq�Ÿß�_ø²24ŒMfLN˜4ÝÚŠÊ­;K(	&±:ß7Z?mÚ°(•¬æ•û�á8ÐâPÚa¶©Á8²¡¡ô¦Ñû*™ngÏ™&åÅòxGì“‘â»¢3gg^ð¬éÕ¾Zè …ÖÝì`Õ�D)}‘,Ÿ·i<vìfø'×»zöÖ†<Ÿ|ù2&ýs�‘bú¶‚üIzl=¯c¡VQ¿Ä´�«$åZÒtV¥YZž[{å#¡fâœ
Æª‚”'�räÄB�Ç¶CeO€âWdó¬�svÌÑ
#îvöEšÍ#[ö®pêæÅß[w6j—ï<¸Àx–æ¯7‹ò9ÆÞwsÿ4ÿ�oþH<ûõl÷¿–vÇ³„ÚðæÿHÁWXd—‰.yRóS‰+™À‰/—†&Ê©LZbÐj¿ ŸNQqb6Pc)”X*¥Qw‡ ž4"�TM^™CÕ"RùäØ<XîÚÙ&òÿ?8f:ŒFøÝA6f6ŸÃQ�ÑÛ“fg&ŠD0k‹pÓãÝLÍ‡R(wÏG\˜U»¡,; u½åáö}1é¢×§À><z{Ì÷=Ad‚,ßÍÒ4ÇuÑÉ5í·g_˜ÍãIvãFÜhé¿d$,šM~½J¾0VOšpJ¾ O”ËoLvÁâÄnû
<‹Ààh±Ý±¢²®¢æ×3×¾ðõƒ‡ÃÎÞ#€Îx/e­�;M‰–îîÛ\S{¡»§§–Ò¶.C¡v^*XÍí@›¼`3Ãs38Zº†š‹¹��èåúaùð:çH~_ÿ™Þ31öèš63X‹$0v¡DÍ‰o4‹ÇEEFÂû1Q‘E<Š oë‘7 \úÍT¹…#[s�;Ì¶ÚhŒ�¸«v”Ä»ÝíŽ½{Íæ!ÛÙ™ùü.ç§ÃõõáFc¸ø™>¼³Ø(®o8|xïáÃõž�¶~wa{ôµšío+JíÐ*h¨¥)ø@Ã²-×®Áqžž"»‚I$iRWvf‘èØµ=Iê;â"%&íìšU4ëN—.Ê[žÜe••YÙ¶Ò
[€Aœú[À^°­7å!Æ«{��S5ŽÎN¿]~ÀîXU–£]\ºoÖ]ÜAÕö¶ˆi`èäpr¬!À’•ì$ ‰Uô–3Í'{KnñµR­¾_è‰˜è”m–qeªýõs°¹—yAYé ón'×²¯àK<‡’.Ù’CÓ«yUÃ¦�Äi&CÆHJZ¬ÃR†dtýÓÎ”IæÏŽ†cÃƒS)JmuŸEµöŽÜß9VŠCc¹v†¯]³h³ß/_¯‰W9J†i:ÛactRu"t/þ<UBñ"”ûw9¤:c{ÓTïN|˜D°LÛˆ'>J&ºb]Ûëaé¡¡aÂn'Qar’éåŸ}:hÕòiÿU”;·o“¶…e¼“qRðÇòò_áìÐ®wn¸µ\6)5•¥Ÿë|²~$ú{~µâ.b ÉÂµeOjÅíµ‡Júì{��KÎC‹Z·~ù4¡AZ/¸HA7éì�·äcµîÀ¬�äñ@	R›²8ib-HžÕ5›�JA$S‹nÒíÒæ‚[ó0Q¶ÞR ¬æ(Xç]ó0Î£ÖaY¼Ì«yV	¿àlØ ŽÝGCècè^@ý®·ãÖ‡6�Å�0<] L±Ú†¾ô=ÚÅ?•˜QÒVµu¤l4Ä×³¸—užvk›Ö—kCíW\4°@Y€ÌÙb§«�§ ª}!„MÏ�sÐ‚�S3·	�‰% ×œ·8¦GãpH„Àß”é=™08ÿ$Ä_ïNS Óq6!vey:rÝznü8QÈØ\ñ\ŽÈ�(Âïc
5ôp†¨Ê
ýý¤ž}ˆÂ]¼é1Ú×Gá *�©ÀØôpü˜é©ÄV7² a'Sâ÷-LÑ‘ÜÓŠ”üžüõw¼[+2ˆC”£'8ñ-ÍuÓfçXõç�=¦Ù³fÁk¬ÈÒX
4Æh_uì×ñ;>úö;qHEôûšHÀ’Þ3,lƒÁõÌNÛ.÷ö4¤m6	œdSj·éÑ8¤ÕM"‚;+…F:ÑÔL¿ï"!ZLÄ–˜É;ÄDÍJ“šÚÃëj[¸£†ì€®¸Š<KÿYÌ;ä3ì¡péáøŸ‹€l¸k2¨w¯QÔzÃ-%?UsXKIK  �SËâ_GóÔCOC.!,²·ÖöçvxŽN,Î=:¿ãK9¢ ¯÷:œèÎq—¥"âŸââŸÔ³Ÿá'ƒ Ð�ücLuaÓ‹ã<0kE,eãbP�Úb™.æ-Èl€`¿ª
í‘Ä#w(jó[FmçN[\jÒHÖp$FOÏh‚>š–¢ÃÜm…™opó…È‹Ìajë<�ÂªDÂÜ1z8ÎuÄä‰ÞˆBZC‘¨©ÅÍ|‰»m0·E°xöo‚â,õR¡Z‡žç¿WÓ¿"6Ç,Õ¹
‹ìÍök€oÂBß&j$Ô©§baUúXÙb¡aÚ$GêBVÎAÉ]$Lc‰Ðš\.‘ø,&”À8\Ì�D…p™<�JdF@Ô0Ë•á4ç°¦�ÖÉ-(G´8ròÜ’TU‚V)ª#t7˜ï»¶iKq�ÔåÀS4>=ßødœuçvË!iñ­ÜvX‚£˜ŸP•T*÷É£,eÂÀá�J…Ò2À0†]"!KÊ#Ô1ª;B5–Œî3ÖßñÞ·ßi\cóª‚òqÎ”Qø¯æ÷Ðœ×·CðÒÃ5õPkL˜¸E|7ö;íÇ»ëË³Ó´ßm›UñåêFñô(xòÊ#
¥ÉÎA¤Œ®pq°gûm	M”‚¿iÕ�µ·
E¸RHÙ8å¼‹¥ËõáU	_êúêâüì´>ÞÃ‡iÜï¶èÜöBu}·ê­ÆÙ¦p�w §�ÂÍICMº˜ÀŸÚYŸÎRV†î…‹�V+@÷BíÔMy¦Ý¸û(gàñ=p&U-Ë1j:Õì4Rp*ÏfÆŽcÍç%XAX³Õ–Ž_{çfDÕ� Å©ïO_Fà!ÞHŒÔBÀˆÖ£‹¬<¼Yò¢;£Ö‹³Óq9d‡ü…vž¦‚»#\ù–œØÉÅ“ôŠ¨‹n<Á[”Ô%ªÜ@å¢Çh-UK!â»KG`Õ$±)³%UØCžQfŒ…˜6¯[Ïiï±k{’zÌyä:
%Úh¸ê ™ÊX¥­” Ñh4^n	¹Ö¥ä$îùô¤õt²æñ Tc3¿ã¿¸XèÇb£¤ˆLžz÷-ß¯htk&6fzÜ[ºï¶ÊÚ•y©©qà{‘KŽÒSØ;ÜúìG‰‡Ò�C½}sî˜|¾~Xº¾¼8þ˜þqpðu©ø‚‰Ï Sø«+¾‘#zU …'è3¡²¿’PeEQ½y+giVÏP	WBÚñhC‚“Ào'@£‰Eó·xº'qFÄæ-‘c�.¸Eö–îŽ�UHY¼×vGÈuìa.¡TNzoñìÏ?øXµ»�÷pùÇþ¯mË2œfµZ,†B>cf³^¯Ö’öÁJÒ•�TWA•ÆQè�ÔnUR½V¬HåR¨PÌçÒIy°}AŸ´™—Éb;d*Sz¶ÐBŠ€[)
ËÀ¬«µì2ós[ÙÑµ…A8Ñá0ÍCKe#²²‘�·¤Ew¶Y-ûªÈ¦|ª[uƒ'Ç¼¾h	Û^J0¤i›J³ÓçŽ`• ‚ö‹Þj9T»z·Ë¸miç»rK¼°s@ŠøàBáz V'DåËÉ¢%AJ’–¢Z–”¢ëhûé£óVLpäµ'jë²ÈÓ_â!ERCøhˆsFÒD+	³Á¦fßK Öî®Ê¬–&gœàéÞU”ÌNx2$‰2¹Ò’™ž¢x%áÎšse4‚c®¼3E|,Å\]®Ì,#ùØfX—œp×á!?Fˆ°zgtú¬*sûÌXF¯*¡•$@$/¹¶¦¯ÛÎeötîc[¥3¬¨8Öïzù©Eç¼Ä›P ›¡¿‚H]áõº´2P@!ZÑ°Kàk@ÌíÌu®M„ÉF¼â²©êæ£TE€Ó¼©5˜Â£«ˆA¶æ
RÝu)‘¥k¯óÜdéÉ60B•ƒïiç"ø!<¢M8]dÉð�ÖôE§2ì“¨K3�ö,gá$Ü&Ò@�¡ Ž–q¢ÒD·25™ÁÄJ
ˆT Š“L‰‘®Z	ï@¡±â¶ ‹~ùƒhãA”¯‘ó_ŒWËñÞd¯zk]œÏ¡@Ie‚†úºOFÇÚnÓŽî±8ï¤BlP“üÐ¨¿‰�áŽ´iÓ´ïRÞÁ™ìÑÚë´9ÄYt¢Á$Äƒí^N.ÍUòÀ2Sò­\Ý×4+sœ¶Yúv�‘´Jx0Éƒ8m9"äÊ BdÀ5ýð4Ùäè&“ª¶ú˜"–ÃßÞ¬è_5šÌL•É`X"	BCÙl:]ÃŠCo%�63[Rg¡RºJ¦ŒJMVÈaiÔŒ¤ÄxIŒ==<JŠŒˆ%‘0”/ñÂØ!—CgILD;Eu/ŠŠùÛ÷¸¤kƒ€pøÄ“ö'�„M04¡€m\�°¹xÓìCâDäå–ÐöÞ%G"Ç7ê™¨3“¿à(l§‡U…¥¼\5Ò�º²ÐûXÈÜÕ‰aw½¡å8ÿÚ&
b·6i3‰þ%_gÙ#ÆÄe9\~ƒ‚ê"s}Ô%¸¨,ò¨ƒóžuÎ«³ÔsNÃ“_ažÂÀcåZ´$·ü¶þpw{s}Õ‘¦~Ž¬fjˆëUÙ€"‰¦ÎÔZ…RZX™èBÙ=/Ï&òÌ\F<OÎ�çÓ¸YW¹QQXnº½`Ððwc& ŒÎ-Y7x·ÊtÕ9 ±ë¦Îû¢×Âw“ãf.½}6€¥ÑôÒÜ#=;"âù"Çbz\àir<M§U_I¬äïíº{nìÐÌïbÚ�×P�JëªuDŠîÎyMÙÓ{ÇVIñùÎûàWÂ!SÛAðƒ¦€.5U¬%(æ¸Ê§ÿŸr–GŽ…�†™SÂ›üBdÀyr,Øji¶$¹Œc…¢³Tä—…Û�æ66?)€òÐ¯r
ÛjeQz¼r|lû`|éõ\¥;Ÿãþ´Êu­ewí¶ÛªW’¯%„…•’CÍ=Ãäûà¾_Å–¾tÿì§`†6§X;Ñ*¦¾õ¡¦3çh“ˆ}”#…§¨@.‘wSÈ²¢n`á´¤ŸùÞ^^œž,ÔÚïò»â.ô7"ìë*ãAæy§?¹fZÞ�Ë—ó(ßú¤€�ý;mØ4ÇCç¬vÚ±ýÕõ ¤¼ÝbÇ¾<1Yµ÷¹šºõXVË[rhŽ-)$õ@Ú’bEDÚ�"-&¶€¾Ô¸¿»¾Ø~ýÄßÕ¥¶…{¸ñ¼‹¾XtÝ¡†QºH?ÛX$´Y�¬50†ê´Ã“ï‚Yi*¥L‡%Êñp<ûòÏËõÕçÇËÏëÏýÝÕóõólÚ~¹ºìËµòOáÅx,çýèIÉ¶Žè0¨˜¶˜5'gz¨šÆÝ¶©×xÌÂlÞsÃ`EÓ©·z?ƒÂY78ÇWµK
Ë¹÷ä|¦·¨™.ó„Ú­]¦6·ãr±-QQùå‘7¹gûnÒ
Àœ‡•ÁÖ˜¸þÎ½Ðîã.¥]DáÕªhÊÆè0�òëÖ™MÞ™ˆ?×%SàÓ…—�ˆ6Ìz€#ìn%ãMû¸ÆòíÃ¾‰në
6Œ{šËFÝÔå‚z¯ä“»Hgdòt;a@ò.PP	�ŽëPHÕÌàñû´zèS3‘‡õfèU1;;pÐžè‘Î{×ÉéëìÝãêûÌ> ‰ÝµsL�b=«šs{€zcÂƒSÝ /–NÒ Û·íè]U"Î,9VšlU> Õ hG….*Íy‘êÖ´\YG
»7+êçô Ú”ÐfÌVI•­1±£°r¥~F�lVSŒ¥	u&š†—(ÜmUƒ]!¸µIV¦b„y¼.¤9ûzB§Ýnõ1‚‚Mé	¤ù’¦¸äHtt¤œˆŒ|(ØA…é1ÜtWÕ'P¡D ªUK™c%ov’‡¹%½Ø“”Is�?ÄpQÏ“Á\¸¥÷~·räiß¤›|s"DÑ½3Ÿ5*lùÙ›ó&J¼4bÌ»@Ä›I ³‰-ÞÅÆØC>û-žhpÛãî×éññ~|™^«Ô,èù �?Íàÿ¾ÿÏ£	ð�Ò¿’WYâ�ÇC† ]+j8Ž.•,¨Oð¶éß\ÒkÁÛÝò[(  Ÿñ;øð™÷/®±}øg”Ÿô 2Þ¾H‘qëŽ+	ïUx?|×8€¿�Zðþî@L0"ñÅ±þÌq„?H˜à$‹ø^ÃÚ¹I`4þþM5§õ|wìq$¨JcszåQ)'Õ÷E‹ãyU½>›ÊÔÖ=û£úõ#Û¼½¥ºçÄp˜ñÏ�T%»uãêÒ¹ uÞ…Lö2lßë°�÷,|è.ä¹ÜRjœ¨ôPÞ”Y`§ÌNéÎF	²ú´"d�åª	í_é“Ýž,ëYÝ·4mGõÇ³H‡üÑÖV] ÞV«ÍRñtÛÖ‹°7õt
u3E—¸žÖ\ k^.%¢^_,†ûÄÒNkÞú=¡7Ã÷ŸÃ»„åR5Ý0-Ûñðôr{©´‰“4Ë‹²ª›¶ë‡åj½Ùîöãt8žÎÎ/.¯®onïîŸž_^ç Œâ$Íò¢¬ê¦íD›~§yY·ý8¯»YXè&�PEcE§x}çÇ…aòPÙTåPé�¦
’•
P·ã™† Q6g�+ujÅ�z$2ÕJÂ²»I	!m‚~n8Ù«.ðSÊ¢TtšäzSdj‚Éo<å 8å"Ä¥$•ƒèÔ :Z«A‘T²Û-¹Ñ¨0‘/…‘;Y› VˆP¢Õ°jä¹öÇŸå€¯–x¤ëO´¥bÕ˜JUAMD'ºXb+Ö È2c pÕÙÂ,Z�ÄjªÜ)ckŒ¼êŸTf"ð´‚tPi,ïÛ`U3ûÞÌHJÐ´:‘·r aÊÚ
Ò<œêçqìÛmÍ°Ú¡P¿U¼
0;Èu[à~Cº�ò3Á9À³tµ	&–åÃÅoCY^jÙ«Œ·µœÓÙóªùx‘Ž&HíEøÓ	bûÓ˜(cô+æETÉlòµÒ|P�¸&Êlð’óþ4\Ô†\ƒú¨Su€%Ž­$mcí®.UÂÆ°'åÀ«‹Ò¶œês3=n¬SÚäÕÿ(: w÷è8\}øÏøo�ýÓ€‚*¾ÑpŒi²0úëã˜½=1f²›ßÉ‹Á“`Ž`ß_aŽßÃ>þkÿÇ»„<<êÚÙ";_ß>·f³ëßÇÁÃ�t.b]õ.˜c                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/Material-Light/icons/material.ttf                                  0000644                 00000057734 15266052700 0021234 0                                                                                                    ustar 00                                                                                                                                                                                                                                                            €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                      includes/File_manager/lib/themes/Material-Light/icons/material.woff                                 0000644                 00000034120 15266052700 0021360 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOFF     8P     _Ü                       GSUB  X   ;   T ‹%zOS/2  ”   C   V> IÔcmap  Ø  ù  €ÛÞ¦¬cvt   Ô       Õÿfpgm  è  �  pŠ‘�Ygasp  	x         glyf  	€  )  BTáfQRhead  2    /   6P!hhea  2Ð      $<±hmtx  2ì     xo0  loca  2ü   ¾   ¾8ÿ(®maxp  3¼        Ž…name  3Ü  }  Íw‡ûpost  5\  v  ¼¿ç÷}prep  7Ô   z   †åA+¼xœc`d``àb0`°c`rqó	aàËI,Éc�b`a€ �<2›1'3=‘�ÆÊ±€i fƒˆ &;H xœc`d~Á8��•��©ŠiC„f|À`ÈÈe`efÀ
Ò\S^0¼ˆeúŸÅÅÄ0(Ì’ Tr xœíÕeRa „á	1âÄÝÝÝÝÝ	°7Èùr üê[�wØ>F¨zøv‡š­©ÚîXLéœ¦arŽ	_1±Ñ«+×§X·r}š¿¾Ÿñœ`2ó-/CÈÂp·ø·?+ç¤÷LûÉ3¬fk½=³l`#›ØÌ¶²�9¶³ƒ�ìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8ësœç¹Äe®p•k\ç7¹Åmîp—{ÜçyÄcžð”g<ç/yÅkÞð–w¼çùÄg¾ð•o|ç?™ç,²ÄÈGŸáÿÏìðkúwß�†ïxlÈCÊï˜Ô�ŸÔ�¡Ô�­”Y e*H™R&…Ô�¹”é!5<]ÊD‘2[¤L)óFÊä‘2ƒ¤L#)sIÊ„’2«¤L-)óKÊ$“2Ó¤L7)sNÊÄ“2û¤l)û@Êf�²#¤l){CÊ‘²K¤l)ûEÊ¦‘²s¤l©a'R6’”Ý$eKIÙWR6—”&e›IÙkR6œ”]'eëIÙR.)7�”ë@Ê� åb�r;H¹"¤ÜR.)7†”kCÊÝ!å‘r‹H¹J¤Ü'R.)7‹”ëEÊ#å¢‘rÛH¹r¤Ü;R.)7�”kHÊ]$åB’r+I¹š¤ÜOR.©ÿÆÎÅ1†siŒá�1ú„ø   xœc`@Èô?„lÝ xœ­ViwÓFyIœ„,%-jaÄÄi°F&lÁ€	A²c ]œ­• ‹;é¾ñ‰ßà_ódÚsè7~Zï/$�´çpš“£wçÍÕÌÛeZ’Øë‘”›/ÅÔÖ&�ì<	é†MËQ|(;{!eŠÉßQ­–Ú·‡DD"Pµ®°DûYšd|èQFË¶¤WMÊ-=é.[ãA½Uß~:Ê±;¡¤f3th=²%UU¢H¦=RÒ¦e¨ú+I+¼¿ÂÌWÍPÂˆN"i¼ÆÐHÞg´Êh5¶ã(Šl²Ü(R$šáAy”ÕçäŠ	ÊÍ�òÊ§åÃüˆ¬Ø£œV°K¶Óü¾/y§w9?±_oQ¶ä@ÈŽìàìt%_„[[aÜ´“í(Tv×wBlÙìTÿf�òšF·+2½ÐŒ`©|…+?¡Ìþ!Y-œOù’G£Z²‘AëeNìK>�Öãˆ)qÍYÐÝÑ	Ôý’3ö˜>üñÞ)–xËzG%œ)as4IÚ0r`%e‹*©õ®˜8åuZÄ[Â~íÚÑ—ÎhãPwb<[[9QÉñhR§™L�ÚIÍ£)¢”t&xÌ¯(?¢I^mc5‰•GÓ8fÆ„D"-ÜKSA,;±¤)Í£½¹¦¹v-Z¤ÉõÜ£÷ôæV¸¹ÓSÚô³FV§b:ØÓéiä/ñiÚå"Eéúé~LâAÖ2‘-6Ã”ƒoýÒË×–…×Øîíó+¨}ÖDð¤ûÐOÕ)	L…˜UˆV@b­kY–ÉÕ¬©ÈÔwCšV¾¬ÓŠrÇ¾Œqý_33–˜¾ß‰Ó³#.=síKÓ|›u=š×©ÅrqfyN§Y–ïë4Çò�æYž×éK[§£,?Ôi�åG:cyAštßÁ�‹0ä�0„¥CX^‚!,a¹CXaË%ÂòcÂr†°¼¬eÕÔSIãÚ™XlB`bŽ¹ÌEåj*¹TB»hTjCžn•TÏªe ^<ò†9°H—Èš_1Î•�FåøÖ-o;WÀ±êoŽö9ñRÖ‹…?ÿÕÖT%½bÍÃ“«ð†žl'ª6©xtM—ÏU=ºþ_TTXôH…X(Ê²lpg"„�:�†j •CÌlÌ<´ëuËšŸÃý71BPýø7ÜƒNYIYíà¬Õ×Û²Ü;ƒr8,I17óúVø"#³Ò~‘YÊž�|pŒJeØj­¼Ù'1™Þ$Ïq[Q6HÚØÎ‰ó€yó�&aêªäNá†øanÁy'\¢z£,‡îEìó(¤ü[§âDö¨hŒÀ³Ùa¯ïBÊoq$4ù¥~T¡©5Ð4Rn¨_ÆÙºmBÆô#*vÃ²¬âÃÇ÷•’m„|¤ˆÕ££ŸÖ^¢NªÜ~f—ï�¾Á 51{ßtq�Ê»ZÉ2GmS·•S×šCãU‡êæQõ½ãì9kšnº'z_ÓªÛÁÅ\,°ömÒR&Ôõa…¢ËÅ¥Pêe4Iï¸ÐïPŠ�ÿ«úØ|ž+U…Ñq$ßNÔ·Ñç`üØGõÐ÷cèr.Ï÷šŸnôál™®¢ë§è70k­¹YºÜÐtâ!G­Ž¸Ê|§qz¤¹é!àcÝâÀ&€ÅàÝµŒæS £ùŒ9>ÀçÌaÐdƒ-æ0ØfÎÀsì2‡Ás|Áœu€/™Ã dƒˆ9ž0' xÊ_1‡Á×Ìaðsî|Ë1s$Ìa°¯éÖ0Ì-^Ð] ¶AU SOXÜÃâPSeÈþŽ†ý½AÌþÁ ¦þ¨éö�ú/õgƒ˜ú‹ALýUÓ�!õ7^êï1õƒ˜úL¿Ëe¿Œ|—
”]l>çï‰÷ÛÅ@¹  ÿÿ xœ½{	x×}çû¿9qc @$®ÁA @ÀC$AI%:H¦$š¢hK‘#S’¥ZjÜ2NbÇuï:›ÄŠã´ŽoÄ´þÙ‘Óm+Nªºþ²»�Ü¯õ:vÒ´q»Ív[w×Ÿêvõ£ý¿ÀC–ÜöëvAÎÌ›™7oÞñ?~ÿcrý=î1ú1“X1"å€zœ Çž&oš]Š¢ˆBCRÈeÕ¬’5AV�sç_]Òè–øk×`
Îè¿®_dâ�ë _ 2i-Æx c¥dT(lÆ
@¦±
ìÁª0îuRÁ›„p!a‚B"Ìuè±7zõW 7ÿ&ü)<ôFAÿý•üëÛM£²Ñ.îF%ñ&Í*.£YÉVÃ’àjþM]ƒ7ßì…>ú…Â;ßÈCïú6Õ¢K–D�ç¨DFñòa'j2¦)öLJÐæé×zï{=¯¿Žýz_'õ6£Ï…øŠB(9N(àâäÅr!Nð%A‹ˆªâñfÃÝùœÒ×ÂpîšÖÕ¥Ñ'Ø^¿HŸéŠèÖHWWÎEºVÚü"QÉÑo:�ð06ñœsçLQ#@)ÜAxŽp<Y°æ1B9Ž–	¥Üm„£Ü„¿ÁZpü+í-*”¸‡Ýj6ID¥ª(x’±p$ŽýË€/ÜíUÃŠ;ÌÙ�þ¯ÊÅp&þŸ;@	§+‡wÓßÜ'¶k™0¼ÎìL‡õ3Ð¯_l
³¡Wûýaâ AòÂ7eDÖsö¼UÆB¢E¸CŽ°ÎQÄ2Ea/DaÊ?ñœëwžH„—‰ø”=F@<zëçŠíµWÀâ?Yyï^¶TÁ€¿±ÁëR°»v—;lbKÅFÞš¯ åzÒ 	RVõ NàÜBÁíðž|üñSÁž >€‡\¦õ¿uxOÑMx�/^ºô"^k}ñîÙùê¼<C8\Ñ}Ï9p€A\ÊÝ! ÃÌì(o�0?ƒCç'ýÅ [©ã·¬°·èx§MyUP§ˆ+á\8q¹q#•Ãô	ýbi•æî„s¥Ò:š£kè¸…<P]„ÆLÇe%N	Àñ<w‡	éI‰4GxJùiìÝK(Oq2kës‹ì‰ã�Þò‰½ÅF -Íþ¦ÆŸWõ¸]VO‰Š©Þ?MÕrZ.Ë„7²n@“Kå%ü§3ëF¥_\Z*--CCY÷"7B¯ãH�¤™|îwJÀÈÓ 7(Ç±�L³(�À#±Bá'S^ ü)§‘‚X×E6Ø®›<Âââ­ŸÙ[lVžSš•5C¶Èœ“w:-(m ›ˆ…}ŠGÔjŒèÎáˆU-Ž™þò/õŸÀÔµÚ ß)±±Á›9|M·Öç¡òscÀ%ƒæp¼}8^®èÜÄsÍ8Êh•æ¥ö”ã�
�Æn#P~há}p­½EêÅÝ-
MÉB}�Â1-¡IšþY>'¹ÊktßWÒÝñ4}¸1‘ËÇiê‘tz–­oôïcFÿlØC•l-Žâ|p<c"€„´R
œÍ96 :�ŒÌ°ÁMÚíf3!vÅ®8f›Ùfµ`C¦¬‰M#
-6ƒ	Îç»©%—(ø¸�}Rê
é_	w	¹æîÕ÷^xä‘OÓëS(™Ñ˜©£Ÿ­üþ…òéG1æ�éÆ�6ÒMv'ý¸¨R3.2câEAZ”‘°9‘p(_ˆÄ‹Ò<á�/#�3Dà…I ]�©P ©ÁaGA+’6h31ÚŽHØ‚ÊÄLOaº}^Ÿ×Ã.i‘„„â¦»�/ä{ñDœë‰GD�·;O;–vuv�ùò“gâ±ûÏ‡cñxl¸8Qšêí81x°¼3ÓÕ•ÙUR2Ó™‘ý;™òÉÉâð8«g<ÐÓ�áõéï—vf:õß§3ÅLºÎ³¸2i@Þ* ôDÙ-°Å§¡s¸DNœÃañÂ4Áa¢øI‹‰Ñ²Ûij°4(î�Ìdh˜±mV	ûÂkù7çP<Ñ/ëýÁÔ¼|BŸ¦RAx*˜‚THŸ‡§èõT°ò7Ô3ÅìõS•sÔÃèE0úøö1B’¤‡’�äÅÏÛ)E0ƒLf'È4 ’,Œ�€‰Ûâ ®ŽùÒ&0›í`¢ø•'ñ¢(qÞŠôfæqíe‰Êó6ÀÛR7C8‰›Êç:RQmhãÐÆþ¾Ü`~°«3ÕÓÑÓšÐ’Ñ¤O�ÆT§Ð˜„<Ó;xŒ¥ôIq­zÒ=¹žD²9ˆÄ{òÝ^�ÈÕîzQäà³ŽŽ©}SS�ÄÂBKk+ãÇD—*‡P ŒvvjÕÃ“ìv‡ÍÍ×J¥îµ•Ö6£ÿ¤®²F»tkõ½ìI‡Ágµö*-|�ÇyVI€ÄÉöâS¬ü<5S‚`H`’\ ²(È(â8Îql†DnÒç�EµH8ô7y¾€¡¡Pï�je„¯áÄˆÒ‚=ÌÆÍÆa%«†sYZù²¥¼ßòå:¤õ×�^oHõBCåí	øÕ	úB¸½=Œ”rÎ¨r{0íùÔPC¥Lœ:eà²ë/Ò·q"/b÷;’n�Ü¸ä×àê;Ÿšýä3ôºÞ¡êWÚ!÷ô
}íÁú’ 9²‰LÀ'‹Î®j6‚�Ò±Jû-Um±«›xTf“h2"T¶ËôÃ8MsØšÉLLsÄJl²Õ6ï@0"SQž'vb‘ì–y"qœ4MVÈ
!�[ÝzC«7iŽV›“�ÚEúAíYÿzYÜÉ$‚i±Ú"²Ô¿²É½ˆÃ‚ÁàÄ¶-›G†zsÙÎLª½­5˜&4o6–w;Q¹@"žD¶ÉPÄÍU² u…v“ªìŠâCäÃ®d�SNõ žæñÙˆèË2CÅ0}Š{88ÅIúo(��Ê§ø®ÒPù0l3K{ÿ“>¼ÒØb÷ž6½ôyÑç²)ŠÍ:>‹øç¤Ô¨T¾ 4Ì²ç©ƒ×?BçfE³nx{}¿dÖØe	x=ÁålpÖuÝ_¡ìú#iÔ&yrªxB"#¸:æ2QA®(“y·�Šv°*¢uÎ
qZç
03`æÐ˜Bô_ÆÐŽ=;™ÍÆã„dóY9Ý]�™x:žîH%qñ]Ñ°†>Ž…U¡%	*ÎNŸh”
8I9ÍÀ´
BÝ¼q†‚
¡$N$þù²ªCäWKl¤¥Rg4š)aùÕWÙY&íÔ­pN¿SW––ôüú'¥FE·*�¥pKíðT»Q^nÓ½t­Tº¶\.×q	“ã<â0±ÁnCé 0$f€Gfz5(Ìz+¨YHùžÄ#ðuJÏRxºíö»íqÛîg¡ýÃìB+žÜm·ï~6Éd—�aï#.´?Rd[q‹±
Ï a¶7/£$cxb�]œÅ²Äft†ÙK“á�Ç$¥Â)ÔhAOÐl".pÕôµP1û¼Ý¨®i¤I.’†TÝðØ�Cù®2-Í?\½}÷ôR(´4½ûÛõÂíÙÛzzn;ÌvY´6.læèG¢ÚÇK¥�kÑúQOÔêàº¹P×Æ�]¡\€ÔçmÜ�gf¢CH£´Š@qàCy„l<XQ\ŠS@-„Æ 3Ô94�aâ—õßÖ¿vù2ýzeúã‡ýkú//ÔÛ�¬µ›-vŠLÖW×‚2¾F„ç8~<·‡½f\’$³dv+Ìèh@‘®„­åpŽ›¼¬¿~™µM¿?†¸þ†þµ………U¼ÇÖ�CŒÑAºÈXq3Ê1"HT@Á€èBBt�ëÄ™3ï,›Ø;gØ;'›é;Õ;š:v¾AhPœffôdsšÛÀS£Ö@§Û÷°óU€Åamøa¹Ü~òà\¡¯¯0wð­Vè�;xÏ¾í©t:5±ý…záÁrùß_ƒ3¬Ú_¬UûùÁ¹Þ¾Šk]=£ ?,Õ±ÔYC6“)y€¢,!¢¢‚HDsåŽ2¥#D¶ `"Çè�ƒÉ–––PKÈ¥(ÞÞ¬lÈ¿4ƒ³"JÓ5`JðÆW#²17;+¯9¦1öÃ‰§Ïé_ùöW†p§è§,v»e*ÐRy1QÀû›Ëúì,üa:MÞßßáââ<cÝŽÂ"²æ±z_qLßãAd´ rãÿ¼ÞBÂ0Úà{[ùþ-º[ùï¬¿£F­5ÿö\"4ÝÝÄGüÈïêí$É�»‹w5ú,&¼f™ÃÙ%s6Ià8+ÂêàèœêV8"¦i£à°ïñ¸œœÝaO¥<žT&•Iw0š¨ã˜@ÕBõø�¾T7s…?g
U7’“‚›¯¶á85f¯±ë°æ:Û¼^º€¿7/\øií?uáBe±~÷àÏ/ègX¥IÜ°¨Ÿ¾PýÁ7/\@¨Zÿï¬?R™ÕB3ðh à*
<Îà#fðMã�£{�Û8:îñ¼o 6H¡6¶¹Qþ3-  K—.¿wédå…êöÞe}Ëehe{Vø›Ë—oÆßÛÉ�â,‘d“,!^0�l‚£fÆî"²»•‰ƒ¿[ªünYå÷Lšqü¦�ù\¶;½=³}=ßÛþå|Ï$t–!lÕ87ì¯¬Q©P•ÚL(ÜÃx{…Éo!ö!š.wmîr˜›,.³¥ì¶B6OÇÔ�%ºuÝÃ·tÛ`F{ƒÇêqYÜ^¿lt65»š£xƒÍ§}e>e¤y'ñ�F�ÞCzÉR$ÛÈÙ/š»@õvB£›ŽM<DÔwÊŒzÍFáq+�Š»q±Zýþ–CqKLŽŠA;ù�GéNçZ	Î†ˆÃi³Îµ�‡8½ç\²¡�óú@U¼ê\ª‰*¤±EiœË„ÓAÞïrù§«%¿ko(ÐÌ¹ü®)ñÞÚ[m‹ë^ÛØâ_ü7|ïÞâýÛ·���Œöõårñx$¨*Â5›Édû®í»vîŸŸšœÙ6‚(sÓÆÁâ`qx¨oCß†�þ\o®%LO¼'Û�é`,‰E�éá ²½Ú¢63'�âQ<n—Íis:ì&«Éj13?1‘AîDdàŽˆ-�­ú¤Ön¸ïah*›ã†GI3€ia�R¿,›†p,?BíáåHw¹­\*±ÿ¶r—Vq•éåÊï¾ôG¿èŽ\¹‚%vŽ¿¶6­KÏa5z½Kkk+×~ìò«%üµ•¯\‰tÿâ�^‚íKìÆr©´ÜVîŽT«Ve¿!KÒH]ˆ—Ðî7‹‹
@æ”ñJÙ�!e™É�“!¨Œ±h¤Åß˜jJ!ÂŒ…5Š~7Â!F¶®QJƒå16B'Ðs�ÝžÖ´óçûæ{{çûÎŸÇ“ß†íú7à–7hø_»sxkGï�“zwhRù<î·Ô¯²O6“66ZPZs”Ð±f?¥›kÖÉ¼À.QRfGBgðI:h‰j-m�¶¶F„2¾dLK0iÀàÝª`ÁÅ)øT_!¶ðÑå˜Móx ´eë×¶miK&Û¶l+÷i³¾=Vùû�…þþ;î]èë¿ãk{w¾·ühµÂ×¶nioODm±·ÇÞî_ø¥;úûî½£¯n{4|“±¡&“£Å#-.*ñ>àLÔt àÛl1™œ`PVy´ÅEBM"�#&Ž3M“‰Ûc3£Â3qã^/‡‹ì{ÃÈ2~æ…²!ý¢L9�ØØº-ø)š¤¹³nTaª9À�sç4¤Ri>õÉxÀñK¡K÷}ìN4t,f*[þñ ~é%ú+>XyùÁ¿wÎê~~w+þôk=à¦SyýÓ©ºn˜ÆñyHbŒ8I[|7E=0	b×¬	6ãÒ1'ª‹ªMjÇz—P{ãZ üÎ¥).AAâ	ÉëãÔ|!!|ù‚&ÒÏ¾²çßµ¶µµ>rÛÐ�ýýwÁÃ¶þ¡ ãÇwlî¾ghÈ´O¤…W6/LlÿÆÔÄAó>óø‰�7?“ZØ6œ*êWö9z‡µƒC»öå×ôW@ë&í$ZîZ£¿aÅpæQ§jw]n#Ü”¥l^Ò¼¾B	'Ox$wNòå˜Ýàa„Š}G…ÊÆoôHžÁ>F£“6tßzå•¡CÍ�@ó¡¡Ú@àâð®}…Ï,lÊ_ì³ï3G!DK¿rùYóx¡ï½…qDm85‡Á	²¥¸ÉlL¥	X H6 'š:ëxÀÈÑ”2%eÊ0N?sF«.”o6‹IIâ6ñkÌE¯Šf+GâÌ:¬Ù‹†“:K/3Mv¾Mi„¨þ“Få¼Ò¨ÿ¢�JÛùHww„I'}>Ò�6aÕ’D«°;Oi]u¿üw¸/ Xñ Õ§I{1¡(jÐ©úç€\^È™öF•g†Gõ|I§ç; L•Ç…ÎhPø@ ªªëáäò·Ï¿µp o€g¥Ÿ/Ì÷T<4“žÜ¾yW�…#…7Ã ™ŽÉíûûŽÀž{X�ÕÚFéþýSí)
‰°žOy~˜üp_õ—¨É#gpàˆ2Åêfª�1ó“‰ <º‡±ß8%hÅHÄA¼óXï²JB¢o×"Wq_ùë+GŽ°)­®;ýËúÅáaBÖÒ€�4}«¼NÁJ63ËÚÃ‚š+\–‹ùŸd�,é¯@sÛ�¼þÚåÏ?»üyH—–Ï0�|Ï³¥kGAÑ¯^'kGŠA#ˆ!°Hì*ë±˜‰<ÜŠ›ûFx–(øpe®Ö°…¸tùÕ�³°a€^7Ì²Åì³Ê£WúÏÂ`ÿŠÎ:UÃ¿ÝÅŒ5M…—(*+ÃŠ„iÞÃ&e\–e‹lax×)¡a\¨:8Â9o¹�ï]ªnÛf?=ûW³³kôâoÖÞ,6‹(O™IÌãò‘Ã74Ë¢ý‹Ü
|äÝwõ7ÞE¼ün�~´ò‰ê¶3™¢ fßZ5Ç³ø$$PžÐ£Ä3Û#Ši‘9(öHŒ‘Ç].—ÏeD�ÖCw4ÀÑd $šŠÆ8“ÙYå‡g ýâ™3õ×è¾íg.^<óWúkgàÜÅ3•Þ£gð2¹Yß6‹&@q\d†Ø-mZ•,ÃDÁn!MÜ²[¬a·Ñ!!…Q¡`OK/œÖ_{áh?w²Î�Á®Üƒ§pï]zá4bWWè­û%	ý`t6†vÇ‚ô5Šëi¬ûQ�‚ JV¨…Ð¸ŽöÊß&ê¿äÔ�?…t6ªÿÇhüh:'¦\wo¨üj» %ÚÓ³ŽwšHg±‡Í1ï
E¾åFE #þ7ÂÜo,Æ?Ù†ÐÆ�D6ÈÕŽ†rr•Ö“ g˜,ünÏž®®==zþl~zW¦³3³kzþ»ôú«W–ºöÙÓ½ÜÙ¹³ô‹Ê�÷÷¥	_ÝÈpóÊ°Ü0Ü<1üWdÅ}·…�¾¨Úì‚d^…- Æè=ß™/íììd/›‡ŸéáëUî;¥×—X—Xº–»ö|xw×Ò•úü?Šý#eR(öøí8ñQŠpp¸ÇÏ�Õ\O”;ÎC=éaÛÖÛ·–T·À„ šWñ\a2(‘gæ”u€(%âìà‚GôxU”ãA”ØÃàeæ¿Ä^^vˆ'„u·vŽ›)_ìâ‘–vµÈçeU´èÑÉ•�ƒöQº¦‚²¦‚äàJ/èÇZ7%›v²äm-’_ìò£h£´7¸î–Ìfé˜ÃßÎ	Ò£¢SÜ,ù~y³à�>S­pL6­TøŒà£µ¦pWÃ¥µxºˆØq© ÌÄüj<Á‰[ÚŸ»1´/Kn§Å$5È,íM]#êís¿/"NÇÎŸµm}hiyéUˆ®�îD17·'Û_\Žô‘A2BÆI‰ÜFö“ðåª5yºnMöi½\¨!J[:ä”˜äÛ×Ús]J§##Øœvju£I×ãËªÝ‚Ûë¡®F·k®Ð’÷ç„Ææ&Újl˜ÛÐ6�è�…¥` œ^9	nk�G#| ˜ðyÅ ¬½¹!\üÿñê½Å§gggfÊå‰‰�‡†úûóùîîtº½ýFëröÀì�¹ÛgöÏìß··|[ù¶=»'J¥�Û§&7Žoß¶ulthdh¤8Ü?Ø?¸a ß—ïë-tçºs=ÙtWº«3ÓÞÑÞ‘JÆÛâÿb»sðŸew�´ªíy‹²a�2Œƒz+t	žZ*¿wéÆ#3(éÌê¬<jÔ¿…9Z*�¯^Y®ž-·±W¬¤†IŠÔ¹J§
Ê¿ºW/K.VcoCM9�2�¨È²xÈ*PbCR@^šs�ÓŠèTæìf'K’<mdi¯ÃB%Yšò‹µœ‹FŠ(/þËšØ[L¸\Ym©…Z˜§0bø	]M®&ÍVDT¡MbÊ8½Z¬š¹ÒíåpvŽÎ‹€²:¸WpcÇnŽ—–ÊÜÆòÒb;œú¥Ê£XŽtÃöóøƒ§Êe\Œ2}ï.á¯ÜUÙÄn³˜nÎY®.ÃU¬¸V��³ÅÏ‰¨À™Î4ÜžNÇ	"7ƒ<ÝÂ	H³	šÑ‚$æ&“yŽøI“Åß4‡hÀÚ`±Î‘FÒ`Cî!>»Ó7�ªÝi³ã™Ï¹ÇëqqNŸs| É%ý�ó²ÖƒZMxY	Ãzùjë6-·nCr_³]˜Ý?Ëþïœ­ýŒÓ•3z}Ýõ«ÕpÏ÷¸¬Ak’B9X.îB�&RNœ—xÇÂÝÔ„xÍ)„hóV�AžÆƒÌì'Y˜Lw˜Qtf:�¥SÉD¼¥Iu#»FÌ‘*«ÚXZ]w¾šÄZ-/ e}F`bUÅ†×!¬„¸N§7¦Q]¶æöß½?—`ùwðÓP†fô3áÞÍ½áwá.=?} 3’ÉlLÃ‡väöçóûs;2aý^£ò§Ã™‘Þp¸7²C×àÓú½¤Ûgãm4Æ‹(éA" Í‹TÆ»Øgaþý±�¶Ö(ÚeMÄ£XÍ¢€ˆ¤ÑÈÒºå˜VRÜXÅžJþþñ¼Sê¾w�qÁ_ßl$úWÆYÓÚ±ÈhŸgÈþ"ËG¡Oñž€ `^´Ð›, ch¶€ÒAfžL%Ù¦;’™T&iñû¼n.`»¹ýƒPÍÖ,¼~ÐÜÍ–oÂšþøê¨C7[¼Úr­x}éVrB¿MÌ,W•ÉªQ³H«f]3ëL 2Swå÷˜þ�?{èDbæ¾÷Âè·BO|ì÷ï;y‰5!®ñÓ¯Æ‹ýX6sóœá&0Ì(“@CŠÑ”’y†VÆo`b+2±PcHXsd÷Ø2þôo0±¥_\^¦_Z^Þ´¼|^·Vwpuy�Œ²ñ"Ú9I`·&ð™ €F;Z·úÅ2³EË0SeýôÜÁöu7ÖµÓVŒ£UÅg`ë„Àr@¹i<pdˆ#ãÕž³Ä5ä6Íˆt ¥‚“ö¥ÓúáÐiøDô/ýKkæ^EÔÔSìr:džÁÝ1�ÁñÍúªcˆÕ5³ƒùºœPÂ	\¤Ÿ@¦°s|¬ï³püóÉ£[>º_�÷ŸÙU†·›ýÙÿ öl¬µÿðHp÷C±xýýð‹­ÕÍ[¥–C�Ã!0C¢§×Çc$$­äùjÞi¯k5hlC�É¼ƒ¹�ó8íV³,J†�H¥Ž2ÌSá ãþbßMu,þÓÏî-v‡CˆqI,j·Þ œu·$/ñˆq°yNQ‘¢Ý\˜ä'á%QÛÂ±zÚÐ2S—·±âjko¯ÿëy:Û�öÄÐ¼Ñ­pµòsfŠ•Ê+¿¥¥h^Ãû«ùe#†lìEkg‘<LN7÷Qž;°›ŠÂ}Ç¨,qc[€ŸñW@æ¶ LAƒ´ê¡"làÌe.J‚ÈÂÙ²I’çQú€©L-¢�fC�~âã÷žúÐáýû¶O‡ÚÛšzý½v+¦ÖÕ´@¥æwfÞBDù‰4•Œ@–ÏÛÃÝeD¸ñA`¬!�¼uG5šJõøV$Á¨,§÷B+wðaãÙÚ�µ­Ü‚«KÝ�šJºoøäœ_ÓZfOç{:£��f³Ú¢Ý¹ˆe¿Ïlö´;¨Ã´°4|2mrpfk\ëÌžÈvŽ:Íœd Ì‰³ÙÓN.hø'ZE£¶h5™-‰úez½Uõ'ZukJ¹âj"�ˆÃÕ”ÖWË&“Ãâ’l`6¹ÍN7žYãÌeqºg˜oUÝ¼‰$›Ãá0á/d“-Ç)/ÑD‚Jb^f Úår²ÇN /rXŸ…¼„0ÆÉd^¯ÓÀ"Ï¼½F2:ŠVÃ5jce¡#KH	ÕË¹Ø_!á–|�ô‹_}jNrîÝg€T¼÷Õw¦Þ»ðÎòµs¿²´Ô»á·–7À¹ßxäì¯�½ÿ	ˆåÁ'ôÿrÿÙ_«û?ÿßù_kòx¤8d1¾m0Hb´êeæ™ËF#œ+á\Â¢¹Œ§Öp�È¾Y€0šÙa”�>7÷	ýïõk`þóàÚƒ•ß½ö ®Ã�ô®Ä/~ßÑGß]±S÷!Î!÷�qø¢hˆÊüpÊÄI2Çœ¹E3 ‰s¿Hx™ãå£ÙA–Žœa‰Š‹,É›˜cÏ¤2‘$q¹Aœlk2´¡¯7×Ý:Ò6¢…ÍnEäI†“9"VÓ#ÑQ�ý £Ú$kŠpÙ—Ïvû�þ€a¯ç}¡…Ã’ó#Rh¨0×
Ç5šÈ¦J u'„ìTªmk£Ëç¶pù=[7·Æ³ƒI¸ïé‰‡
!£º‰îÈ(Ñ¡(gæ„�¶ÔÎoOn±'·¶…ƒ"í.u~¢B"9˜ï	çC¶PÂ ã“ô³h7ˆÜCîCqWñðÔFß½¥M�ÄOtSÅD$ØRKhâÉq–*{œ}ypÜ"# ~ãX¶°X#,®ÆsòÔÉ»Žœ9}ò¾S÷-Þ}äž»î™êÉFšãn+ðqÃÝÍÔððØ«®m;õ`€z«‚@Ì€áXÓPã	£€R"Ï>jÈ#¿#«AâÌGîBÕYîµ#ÁTFb¬šm\è‰g«¥ž¸‘.à%¬ÊÜ·Ÿh.ä¦,fÞÕ™Îå=Ô&š½­ÎÖN³£ñW·_ØPj¿«ØÕp¿êî°z¬²lnà¤äÜ`´+\ls6Ø;º:ý8àØá¤,ƒ	u†¹£Á*ó�œŠ[ÕF™ÓÍ‰XoŒÆ¾ÞœHô&Zw o‘Ÿ�£œ7Ç4�Ê¦‚×bD+' <hÙ3ŸÞ¶ydKþ£Ï9ÍNÏ;<¶´Ð“–ÅæBø%ê™²ßlm�¦Ä„É†h‰çÌÍaT‡Éíõ6IVÙ·ªÏÆQÍß�çcÑ\+œYh.46†9ç®åËT}à$GÆ‹c—]b‰ÿ"ò!”%…³Ùyö] j�9ÃS7½ê©cöB*Ù†Z�)Àª·ÜtKo9â¨B5Y<×Ã/Ç ¨ªÕµG\u¤¯f2�•Ë»cM&[¹³Çjëí*IÀjÕ±~C"Ó@ùïbMjsJÝ˜ë±­³S3Ò‡;š»ÖçuˆÄnäÍowš(ƒÔ<§Z¥ÈrÑš@Þ¼6MâQ�Ë(dù˜`¦ìÓ‘iväø=">É�ËR³ŸA † lVÉ.Ûq…,,•{BÊJ‹�esBÂ0š‘.¿õø©—.�j=ùÝK§¨ré$ûÏáU¼ðø©K—N��¸têñSSxZ[«Ïaßm¤	1ÊVð‚Yb¦Îû`ˆ-Ñ|ÕÙ^W³›ý{ Ålª{“£)’�µîÃZ�$KšQé›•?ŽªYMúÁx1/N²Ýa=?¢×óñÊ/9M©Ê³;±»¯~ë[5_kûêBé²¹8ÂæÒï±Y‘\¡å>7†ðr´¸Í,e†¹*æW?êšaþÄIöESS#6àò,Î£jQx|…x.>‚„ˆËÆÌvW3_àêã�O�mnmëìõÃ†»`°×?x×`íaóÛÖºylzß–Þ®¾G7á+œ|ülõú^rO43O1K¸4¦øÖLPG€U�>ˆ£âæt^.ß”ª½V*ÕrÀß5ââE®n[€¾{'ûà`A¿Ls�}Ã¸ Ãu¿;½Z«oäŒ†ÀžØ ÿ`�}£° _ÿþœ[ç§7±hX5Ò&²TÖ:#63“‡cëáf€ÄgôÏÀ9öO¯³rýtMŒMDª•¿i‘`²~$¸X¢ ‚ñ†�Û÷üéX8ý¼¾_òôóÏŸ¡×Ÿ?­?9€WÎöŸÁ§×çFxHˆ}�¹Æcù€¨ÝjÖÔj&• %$ãÝìÅêRüE½ òÙ³ýõÿµKR/¼ºæ>Y›Ÿï`Y§Yb�0fSÕ¾§"<l�¥ct-7·ñ%*ZnŠ‘B£HõÏ£¾Ô¦Ï·•~¼ñÇ0‡V"‡¥òµkåÛíKÆš
Î	˜}y˜hß¦å—GõÀc}==†OÁSTêë¹9 !qB?x"OÓ#ôém› ²íiz_å¡/O¬Æn¼7¶1ºÒÒSÍM_ÞÕ¶õ«GžÞ†ÖÉŸn{ºò½ïé‰•þŽá¼(EûJ�Kí2Œ<#ÞãdWá²û*q_‹íiÜí }ö–‡þ9»ŽÛ}*¹e{¨·Y`¡'ñˆd(&Ó¸Çúçi»þ9‡ÃÖ@ßðµ|ÕÇZb’Š½¥FSô”‘¿mP=…µdarX@ˆ$˜[MÂ»Eµ®)ÛÑSsçp°ÈoÜÆêþÿYL™Åþ|põ&ù{ú{^yeRäûó¾<»W“_ã-º‘SŠ½”Q£2¢oãf©áè	œHÎÓ0yK¸IÕãtú<!5ät;Q‹±ohq‰�¾ùhÅ|êZÎø´'ÛÕíU»˜¾Ö»#5µãàÁS©ýÊDÌxp£×ëÈÁ›674lÞtàà‘·îzë-ýþ@«q×èã»8O/v‚™¤ŠmfÔºõœyDËó†Œå÷žò†ŸÃHgÎ7!´iz[ �ãû_¤WVøñgFîÀ:º3¾¤6A¼ªøªdG„–jiIÛ‘îàA¤»–2ôyjmýÔÐ»7k+_M,‰ íõ@#>c4¥?vcSéu2Œ#í¤£ØÞà½�ÕZe:ß #a¿âä�ï®•¬›ÙÆêª0c–E¢ªë”C¢‘ÙÙ?ßÔ¥RÛ&Ÿ›Ø–L÷ŽlŽ·®Kk)·ŽnJ7ŽÏLnK¥XÍ™‰R›v•o_!¼{n/ïZ/{eâ'SÅq	‰®%#ŒËœ®‹e»Äd\1%s„E#œÙNœˆÝßäó8ï6${“ju	
?ÎHÓ]I4ºó¼Þ¿	^ž�­œ†Qý;U4Ï3w¸Þ‹7ÎÃX¥‰~j¶ŠE
1]£¿%´xä[ÏÙ�ï‘ð­fË!úÆ)Ç•¶³Åjfa™7ÉL·û6S"l\,�é�ØlŸØf�l“þâ¶jS¦Åu[{‹MM‘`C¢)qƒ'Ò!´$cF�@Íº�ðA=P f7äÕÐé9!˜«Eþ‡1	6Où3ûgg¡ÁˆÌÍþn}–è§âÕ¼°D<ù2v²	©qˆå8oh¡¼0ˆk›ë
6
®n7‚œ8"6am�Ñ¶VZ…lˆ'pø¸Òô(Z‚ì;þ}.•èK¥†:bªÄ‚ù>ã+tQò‰ÆgèÝù¬Odi•¹8D3�e–e»AÄ4‚aH¾Úç)h"úòðöG¹] �\�WøþÖdö¶,ÿÝÝÊIã«”}SÎã�•ƒ0‘�É:Ž%7yŒ«““»4xë´ì	Ò`¿ÉÌi¿ŠUÐ’ß£ì8Æ>U	*Ç:é“�cs±Ð±èl¶ô±hÔ¿Ëþ±µ·¾   xœc`d`` âyé¬ññü6_¸™_ En0±9 èÿ»™_0ƒTr00�D’ô xœc`d``úŸ$_00€IFT ]Rõ xœc~ÁÀÀ<ŠéŽºåVK     * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p    xœu�ÝJÃ0ÅOÜüÚ@EÁ[s%±û aƒÉ¼Ñ›!»•®vmGÛ”4ì5|Æ—ðY<m3‘‰m~çäŸNà_¨ž{¾QU¼‡C-×è?X®“Ÿ,ï£‰Ëô_-7p‹ÀrxgQ?¦ZâÃ²À™8µ¼‡qe¹FÿÎr�<´¼�Kñlù€¾g¹�™È-7q->Ç*Ûè(�¼·d¯ÓíËùF*ZQêÆÒ]™Pé\ŽäB¥Æ�cåx*I\ãëÈ�§~°Š]½•Ûyæë<R©ì:�­õè§¾&¿ÝóuÐ3f!Z%rbûÊL«¥ï'4&´Û¿ÏÃ
6ÐˆxU!$nè¶8÷ÐA}Òœ’•UU„.b:.VÜ–+9õˆï‚*¥ë³"&;ðøM8ÜÒ-z»§ä€ûc*ýguWÏJÎ©Šî’¹¦Û­z$§¥®ü·Ÿì9Ö<­G×0a‘R—©$&;y%ï£X[Òñè;å­º´9þù¿o0ïƒ³   xœmR×rÛ0ÔZ�H;qzï=a§÷Þ{ïq†O"† @ dûëRöd<<€»¼Ãv�©Æduÿ_ó˜B-´ D]ôÐÇ4f°1‹MØŒ-ØŠmØŽØ‰]Ø�=Ø‹}Ø�8ˆC8Œ#8Šc8Ž8‰S8�3ˆpçps¸€‹¸„Ë¸‚«¸†ë¸�›¸…Û¸ƒ»¸‡ûx€‡x„Çx‚§x†çx�—x…×xƒ·x‡÷ø€�ø„Ïø‚¯ø†ïø�Ÿø…ß˜ÇŸKuNl!æY0Ðf›dª,š‰0�.HùoÛ�ÔqÂ*ÚÊ³êOž„¤)“·œ‰m²Nb\ËM^ºV[GÁ�\•×IÊB
;ò¥Tì»Q"\g±<“ZgmöÂD�UÝI¨�hÉ×æ.ˆOÅˆØHÐ¸Sm‘Ö±”dáËY±BL
•µ-U™ÌjãB£�ï™5 CE.×¥r]JUÃv!cN¶ÅÓ\'í˜s*ËI•!×r,—v¥”–"Õ/Õ?Ò¢¼pË¬T‰f†Ý-ÈkãÔ	Õ±$‰»XÊî)­¨?�B�È8&5ÏZ™Ü†¥ª%�]Î+1�ZX¼ ©Å¥¶Ä
YZ¯Ö•Æ�@¨Ò6Ó$iÚE$Fz©7Ôz()1ÞªÐ·ªA³
TFE\.‰åÚiã•ÏB{•ÕkQ¯bÄ”÷}zQFÿÔÎ®c‘úõ¥V�5¡¼‡Ä³™Ø=v©k4ÙõTuyìDÕ�Ã	,‹^ew4™b¿N_-:‘çfÚ?Hå/ÅÒ{Ö›4b˜ºÕz’®-õP—®~°ŠÆÍQ°T$Ôhü¾ûT  xœcðÞÁp"(b##c_äÆ�ÉX�6102h�›¹˜9 ,>0‹ÍiÓ 4'�Íî´‹ÁÂffpÙ¨ÂØ±Á¡#b#sŠËF5oG#‹CGrHHI$læabäÑÚÁø¿uKïF& v#ô                                                                                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/Material-Light/icons/material.svg                                  0000644                 00000063132 15266052700 0021223 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

<glyph glyph-name="back" unicode="&#xe801;" d="M813 390h-475l218 218-56 55-312-313 312-312 54 54-219 218h478v80z" horiz-adv-x="1000" />

<glyph glyph-name="forward" unicode="&#xe802;" d="M500 663l-54-55 219-218h-477v-80h475l-219-218 56-54 313 312-313 313z" horiz-adv-x="1000" />

<glyph glyph-name="up" unicode="&#xe803;" d="M540 38h-82v472l-214-216-56 56 312 313 313-313-57-56-216 216v-472z" horiz-adv-x="1000" />

<glyph glyph-name="dir" unicode="&#xe804;" d="M417 683h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83h-333l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="opendir" unicode="&#xe805;" d="M752 35h-589c-44 0-80 36-80 80v470c0 44 36 80 80 80h235l79-80h273c44 0 79-35 79-79l0 0h-666v-393l85 314h669l-90-333c-8-34-39-59-75-59z" horiz-adv-x="1000" />

<glyph glyph-name="reload" unicode="&#xe806;" d="M354 615l61-75h275c20 0 37-17 37-38v-189h-114l152-190 152 190h-115v189c0 63-52 115-114 115l-334-2 0 0z m-119-38l-152-189h115v-190c0-63 52-115 115-115h333l-61 75h-275c-20 0-37 17-37 38v189h115l-153 192z" horiz-adv-x="1000" />

<glyph glyph-name="open" unicode="&#xe807;" d="M833 100h-666v417h666m0 83h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="mkdir" unicode="&#xe808;" d="M833 600h-333l-83 83h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z m-41-333h-125v-125h-84v125h-125v83h125v125h84v-125h125v-83z" horiz-adv-x="1000" />

<glyph glyph-name="mkfile" unicode="&#xe809;" d="M542 475h229l-229 229v-229m-292 292h333l250-250v-500c0-46-37-84-83-84h-500c-46 0-83 38-83 84v666c0 46 37 84 83 84m208-542v125h-83v-125h-125v-83h125v-125h83v125h125v83h-125z" horiz-adv-x="1000" />

<glyph glyph-name="rm" unicode="&#xe80a;" d="M223 25c0-52 42-92 92-92h370c53 0 92 42 92 92v556h-554v-556z m602 696h-162l-46 46h-234l-45-46h-163v-92h648l2 92 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="trash" unicode="&#xe80b;" d="M896 767l-133-759c-9-41-44-75-88-75h-350c-44 0-81 32-87 75l-134 759h792m-688-88l117-658h350l117 658h-584m161-571v175h175v-175h-175m175 213l-140 139 140 140 139-140-139-139z" horiz-adv-x="1000" />

<glyph glyph-name="restore" unicode="&#xe80c;" d="M560 706c-197 0-358-160-358-356h-119l159-158 158 158h-119c0 154 125 277 277 277s277-125 277-277-125-277-277-277c-60 0-114 21-160 52l-56-56c60-48 137-73 218-73 198 0 357 160 357 356s-161 354-357 354m80-356c0 44-36 79-80 79s-79-37-79-79 36-79 79-79 80 35 80 79z" horiz-adv-x="1000" />

<glyph glyph-name="copy" unicode="&#xe80d;" d="M671 767h-454c-42 0-75-34-75-75v-532h75v532h454v75z m112-152h-416c-42 0-75-34-75-75v-532c0-41 33-75 75-75h416c42 0 75 34 75 75v532c2 41-33 75-75 75z m0-607h-416v532h416v-532z" horiz-adv-x="1000" />

<glyph glyph-name="cut" unicode="&#xe80e;" d="M402 531c11 21 15 44 15 69 0 92-75 167-167 167s-167-75-167-167 75-167 167-167c25 0 48 7 69 15l98-98-98-98c-21 11-44 15-69 15-92 0-167-75-167-167s75-167 167-167 167 75 167 167c0 25-7 48-15 69l98 98 292-292h125v42l-515 514z m-152-14c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m0-500c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m250 312c-10 0-21 11-21 21s11 21 21 21 21-11 21-21-11-21-21-21z m292 396l-250-250 83-83 292 291v42h-125z" horiz-adv-x="1000" />

<glyph glyph-name="paste" unicode="&#xe80f;" d="M765 692h-159c-14 43-56 75-106 75s-92-32-106-75h-159c-41 0-75-34-75-75v-607c0-41 34-75 75-75h532c41 0 75 34 75 75v605c0 41-36 77-77 77z m-265 0c21 0 38-17 38-38s-17-39-38-39-37 16-37 37 16 40 37 40z m265-684h-530v607h75v-115h380v115h75v-607z" horiz-adv-x="1000" />

<glyph glyph-name="getfile" unicode="&#xe810;" d="M250 767l500-467-242-21 138-304-92-42-133 309-171-163v688" horiz-adv-x="1000" />

<glyph glyph-name="duplicate" unicode="&#xe811;" d="M850 510l-115 115c-2 2-6 4-10 4h-52v6c0 5-2 7-4 11l-115 114c-2 5-6 7-10 7h-356c-23 0-42-19-42-42v-617c0-23 19-41 42-41h139v-92c0-23 19-42 42-42h444c22 0 41 19 41 42v527c0 2-2 6-4 8z m-658-395v606h329v-92c0-8 8-16 17-16h89v-498h-435z m618-136h-437v92h260c23 0 42 19 42 42v472h29v-91c0-9 9-17 17-17h89v-498z m-118 117v-81c0-7 4-11 10-11h31c30 0 52 23 52 52 3 27-22 50-52 50h-31c-6 0-10-4-10-10z m23-13h18c17 0 30-12 30-29 0-14-13-27-30-27h-18v56z" horiz-adv-x="1000" />

<glyph glyph-name="rename" unicode="&#xe812;" d="M500 725v-83h83c23 0 42-19 42-42v-500c0-23-19-42-42-42h-83v-83h83c32 0 61 12 84 33 23-21 52-33 83-33h83v83h-83c-23 0-42 19-42 42v42h167 42v41 334 41h-42-167v42c0 23 19 42 42 42h83v83h-83c-31 0-60-12-83-33-23 21-52 33-84 33h-83z m-417-167v-41-334-41h42 375v83h-333v250h333v83h-375-42z m625-83h125v-250h-125v250z m-458-83v-84h208v84h-208z" horiz-adv-x="1000" />

<glyph glyph-name="edit" unicode="&#xe813;" d="M83 106v-173h173l513 513-173 173-513-513z m819 473c19 19 19 48 0 65l-108 108c-19 19-48 19-65 0l-85-85 173-173c2 0 85 85 85 85z" horiz-adv-x="1000" />

<glyph glyph-name="quicklook" unicode="&#xe814;" d="M500 633c-190 0-352-116-417-283 65-167 227-283 417-283s352 116 417 283c-65 167-227 283-417 283z m0-473c-104 0-190 86-190 190s86 190 190 190 190-86 190-190-86-190-190-190z m0 305c-62 0-115-50-115-115s50-115 115-115 115 50 115 115-52 115-115 115z" horiz-adv-x="1000" />

<glyph glyph-name="upload" unicode="&#xe815;" d="M352 129h294v294h196l-342 344-344-344h196v-294z m-196-98h686v-98h-686v98z" horiz-adv-x="1000" />

<glyph glyph-name="download" unicode="&#xe816;" d="M844 473h-196v294h-296v-294h-196l344-344 344 344z m-688-442v-98h686v98h-686z" horiz-adv-x="1000" />

<glyph glyph-name="info" unicode="&#xe817;" d="M458 142h84v250h-84v-250z m42 625c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333z m-42 458h84v83h-84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="extract" unicode="&#xe818;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-198l254-254h-162v-92h-186v92h-162l256 254z m-319 208l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="archive" unicode="&#xe819;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-569l-254 254h162v92h186v-92h162l-256-254z m-319 579l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="view" unicode="&#xe81a;" d="M83 481h175v175h-175v-175z m0-218h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m-221 218h175v175h-175v-175z m221 175v-175h175v175h-175z m219-393h175v175h-175v-175z m-659-219h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m219 0h175v175h-175v-175z m0 612v-175h175v175h-175z" horiz-adv-x="1000" />

<glyph glyph-name="view-list" unicode="&#xe81b;" d="M83 252h196v196h-196v-196z m0-246h196v196h-196v-196z m0 492h196v196h-196v-196z m246-246h588v196h-588v-196z m0-246h588v196h-588v-196z m0 688v-196h588v196h-588z" horiz-adv-x="1000" />

<glyph glyph-name="help" unicode="&#xe81c;" d="M458 100h84v83h-84v-83m42 667c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333m0 583c-92 0-167-75-167-167h84c0 46 37 84 83 84s83-38 83-84c0-83-125-73-125-208h84c0 94 125 104 125 208 0 92-75 167-167 167z" horiz-adv-x="1000" />

<glyph glyph-name="resize" unicode="&#xe81d;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m750 0v-83h84v83h-84z m-500-41v-84h192l-210-208h-232v-83-125c0-46 38-84 84-84h208v84 148l208 210v-192h84v292 42h-42-292z m-250-125v-84h84v84h-84z m750 0v-84h84v84h-84z m0-167v-83h84v83h-84z m0-167v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-375-41v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="link" unicode="&#xe81e;" d="M163 350c0 71 58 129 129 129h166v79h-166c-115 0-209-93-209-208s94-208 209-208h166v79h-166c-71 0-129 58-129 129z m170-42h334v84h-334v-84z m375 250h-166v-79h166c71 0 130-58 130-129s-59-129-130-129h-166v-79h166c115 0 209 93 209 208s-94 208-209 208z" horiz-adv-x="1000" />

<glyph glyph-name="search" unicode="&#xe81f;" d="M679 242h-37l-13 12c46 54 75 125 75 202-2 171-139 311-310 311s-311-140-311-311 140-310 311-310c77 0 148 27 202 75l12-13v-37l238-238 71 71-238 238z m-285 0c-119 0-215 96-215 214s96 215 215 215 214-96 214-215-98-214-214-214z" horiz-adv-x="1000" />

<glyph glyph-name="sort" unicode="&#xe820;" d="M394 635l133 132 131-132h-264m264-570l-131-132-131 132h262m-277 191h-116l-32-110h-95l125 406h122l128-406h-100l-32 110m-104 67h92l-25 85-11 40-10 40h-2l-8-40-11-40-25-85m273-177v52l194 275v2h-175v77h294v-54l-190-271v-2h192v-77l-315-2 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-r" unicode="&#xe821;" d="M658 567l-200 200v-136c-173-21-308-168-308-350s133-327 308-348v90c-125 21-220 129-220 260s95 238 220 259v-171l200 196z m192-240c-8 61-31 121-71 171l-62-63c23-33 37-70 46-108h87z m-304-304v-90c60 9 121 32 171 71l-63 63c-33-23-71-38-108-44z m171 106l62-62c40 52 65 110 71 171h-90c-4-38-20-75-43-109z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-l" unicode="&#xe822;" d="M283 435l-62 63c-40-52-65-110-71-171h90c4 38 20 75 43 108z m-45-197h-88c8-61 31-121 71-171l62 62c-23 34-39 71-45 109z m45-234c52-39 111-62 171-71v90c-37 6-75 21-108 46 0-2-63-65-63-65z m259 627v136l-200-200 200-196v173c125-21 221-129 221-261s-96-239-221-260v-90c173 21 308 169 308 350s-133 327-308 348z" horiz-adv-x="1000" />

<glyph glyph-name="netmount" unicode="&#xe823;" d="M708 767c46 0 84-38 84-84v-416c0-46-38-84-84-84h-166v-83h41c23 0 42-19 42-42h292v-83h-292c0-23-19-42-42-42h-166c-23 0-42 19-42 42h-292v83h292c0 23 19 42 42 42h41v83h-166c-46 0-84 38-84 84v416c0 46 38 84 84 84h416z" horiz-adv-x="1000" />

<glyph glyph-name="netunmount" unicode="&#xe824;" d="M917 342c4 229-179 421-409 425-231 4-420-179-425-409-4-229 180-421 409-425s421 180 425 409z m-750 14c4 184 156 332 339 327 77-2 148-29 202-73l-475-458c-43 56-68 127-66 204z m125-266l475 458c43-56 68-129 66-206-4-184-154-332-339-327-77 4-148 31-202 75z" horiz-adv-x="1000" />

<glyph glyph-name="places" unicode="&#xe825;" d="M750 767h-500c-46 0-83-38-83-84v-666c0-46 37-84 83-84h500c46 0 83 38 83 84v666c0 46-37 84-83 84z m-500-84h208v-333l-104 63-104-63v333z" horiz-adv-x="1000" />

<glyph glyph-name="chmod" unicode="&#xe826;" d="M381 302l-298 83 55 167 291-119-19 334h186l-19-334 286 113 54-173-298-83 196-250-148-107-173 273-167-262-148 102 202 256z" horiz-adv-x="1000" />

<glyph glyph-name="accept" unicode="&#xe827;" d="M500 767c-231 0-417-186-417-417 0-229 186-417 417-417 229 0 417 188 417 417 0 231-188 417-417 417z m-83-625l-209 208 59 58 150-150 316 317 59-58-375-375z" horiz-adv-x="1000" />

<glyph glyph-name="menu" unicode="&#xe828;" d="M83 73h834v92h-834v-92z m0 231h834v92h-834v-92z m0 323v-92h834v92h-834z" horiz-adv-x="1000" />

<glyph glyph-name="colwidth" unicode="&#xe829;" d="M377 31h246v638h-246v-638z m-294 0h246v638h-246v-638z m588 638v-638h246v638h-246z" horiz-adv-x="1000" />

<glyph glyph-name="fullscreen" unicode="&#xe82a;" d="M202 231h-119v-298h298v119h-179v179z m-119 238h119v179h179v119h-298v-298z m715-417h-179v-119h298v298h-119v-179z m-179 715v-119h179v-179h119v298h-298z" horiz-adv-x="1000" />

<glyph glyph-name="unfullscreen" unicode="&#xe82b;" d="M83 113h180v-180h118v298h-298v-118z m180 475h-180v-119h298v298h-118c0 0 0-179 0-179z m356-655h119v180h179v118h-298v-298z m119 655v179h-119v-298h298v119c0 0-179 0-179 0z" horiz-adv-x="1000" />

<glyph glyph-name="empty" unicode="&#xe82c;" d="M813 463l-42-75-531 304 43 75 134-77 58 18 190-108 16-60 132-77m-628-442v525h221l302-175v-350c0-48-39-88-87-88h-348c-48 0-88 40-88 88z" horiz-adv-x="1000" />

<glyph glyph-name="undo" unicode="&#xe82d;" d="M375 767l-292-209 292-208v125h188c106 0 187-81 187-187s-81-188-187-188h-480v-167h480c195 0 354 159 354 355s-159 354-354 354h-188v125z" horiz-adv-x="1000" />

<glyph glyph-name="redo" unicode="&#xe82e;" d="M625 767v-125h-187c-196 0-355-159-355-354s159-355 355-355h479v167h-479c-107 0-188 81-188 188s81 187 188 187h187v-125l292 208-292 209z" horiz-adv-x="1000" />

<glyph glyph-name="preference" unicode="&#xe82f;" d="M810 310c3 13 3 28 3 42s-3 27-3 42l88 69c8 6 10 16 4 27l-83 143c-6 9-17 13-25 9l-104-42c-21 17-46 31-71 42l-15 108c-2 8-10 17-21 17h-166c-11 0-19-9-21-17l-17-110c-25-11-48-25-71-42l-104 42c-8 4-21 0-25-9l-83-143c-6-9-2-21 4-28l90-68c0-15-2-27-2-42s2-27 2-42l-88-68c-8-7-10-17-4-27l83-144c7-9 17-13 25-9l104 42c21-17 46-31 71-42l17-110c2-10 10-17 21-17h166c11 0 19 9 21 17l17 110c25 11 48 25 71 42l104-42c10-4 21 0 25 9l83 144c7 8 2 20-4 27l-92 70z m-310-106c-81 0-146 65-146 146s65 146 146 146 146-65 146-146-65-146-146-146z" horiz-adv-x="1000" />

<glyph glyph-name="mkdirin" unicode="&#xe830;" d="M583 100v125h-166v167h166v125l209-209m41 292h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="selectall" unicode="&#xe831;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-166v-84h84v84h-84z m209 0v-84h416v84h-416z m541 0v-84h84v84h-84z m-750-167v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-167v-41c0-46 38-84 84-84h41v84h-41v41h-84z m750 0v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-541-41v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="selectnone" unicode="&#xe832;" d="M83 683c0 46 38 84 84 84h125v-84h-125v-125h-84v125m834 0v-125h-84v125h-125v84h125c46 0 84-38 84-84m-84-666v125h84v-125c0-46-38-84-84-84h-125v84h125m-750 0v125h84v-125h125v-84h-125c-46 0-84 38-84 84m334 750h166v-84h-166v84m0-750h166v-84h-166v84m416 416h84v-166h-84v166m-750 0h84v-166h-84v166z" horiz-adv-x="1000" />

<glyph glyph-name="selectinvert" unicode="&#xe833;" d="M175 767h92v-92h91v92h92v-92h92v92h91v-92h92v92h92v-92h100v-92h-92v-91h92v-92h-92v-92h92v-91h-92v-92h92v-92h-92v-100h-92v92h-91v-92h-92v92h-92v-92h-91v92h-92v-92h-100v92h-92v92h92v91h-92v92h92v92h-92v91h92v92h-92v100h92v92z" horiz-adv-x="1000" />

<glyph glyph-name="lock" unicode="&#xe834;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-361 79c0 69 54 123 123 123s123-54 123-123v-79h-246v79z m361-556h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="perms" unicode="&#xe835;" d="M738 490h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-238-359c-44 0-79 36-79 79s35 80 79 80 79-36 79-80-35-79-79-79z m123 359h-246v79c0 69 54 123 123 123s123-54 123-123v-79z" horiz-adv-x="1000" />

<glyph glyph-name="unlocked" unicode="&#xe836;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198h75c0 69 54 123 123 123s123-54 123-123v-79h-360c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m0-477h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="symlink" unicode="&#xe837;" d="M917 373l-325 325v-185c-323-46-463-280-509-511 117 163 277 236 509 236v-190l325 325z" horiz-adv-x="1000" />

<glyph glyph-name="resizable" unicode="&#xe838;" d="M917-67h-167v167h167v-167m0 334h-167v166h167v-166m-334-334h-166v167h166v-167m0 334h-166v166h166v-166m-333-334h-167v167h167v-167m667 667h-167v167h167v-167z" horiz-adv-x="1000" />

<glyph glyph-name="close" unicode="&#xe839;" d="M917 683l-84 84-333-334-333 334-84-84 334-333-334-333 84-84 333 334 333-334 84 84-334 333 334 333z" horiz-adv-x="1000" />

<glyph glyph-name="plus" unicode="&#xe83a;" d="M917 290h-357v-357h-118v357h-359v118h357v359h118v-357h359v-120z" horiz-adv-x="1000" />

<glyph glyph-name="return" unicode="&#xe83b;" d="M513 494c-109 0-207-40-282-106l-146 145v-366h367l-148 150c56 48 129 77 209 77 143 0 266-94 308-225l96 31c-54 171-215 294-404 294z" horiz-adv-x="1000" />

<glyph glyph-name="minus" unicode="&#xe83c;" d="M917 292h-834v118h834v-118z" horiz-adv-x="1000" />

<glyph glyph-name="hdd" unicode="&#xe83d;" d="M167 767l-84-500h834l-84 500h-666z m-84-542v-292h834v292h-834z m84-83h41v-84h42v84h42v-84h41v84h42v-84h42v84h41v-84h42v84h42v-84h41v84h42v-84-41h-42-41-42-42-41-42-42-41-42-42-41v41 84z m604 0c35 0 62-27 62-63s-27-62-62-62-63 27-63 62 27 63 63 63z" horiz-adv-x="1000" />

<glyph glyph-name="sql" unicode="&#xe83e;" d="M500 767c-85 0-162-15-223-40-29-12-56-27-75-48s-35-48-35-79v-333-167c0-31 14-58 35-79s46-38 75-50c61-23 138-38 223-38s163 15 223 40c29 12 56 29 75 50s35 46 35 77v167 333c0 31-14 58-35 79s-46 36-75 48c-60 25-138 40-223 40z m0-84c75 0 144-14 190-33 23-10 39-21 50-29s10-17 10-21 0-10-10-19-27-21-50-29c-46-21-115-35-190-35s-144 14-190 33c-22 10-39 21-50 29s-10 17-10 21 0 10 10 19 28 21 50 29c46 21 115 35 190 35z m-250-195c8-5 17-11 27-15 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 15v-55c0-4-2-10-10-20s-27-21-50-30c-46-20-113-33-190-33s-144 13-190 33c-22 11-39 21-50 30s-10 16-10 20v55z m0-167c8-4 17-11 27-15 61-25 138-39 223-39s163 14 223 39c10 4 19 11 27 15v-54c0-4-2-11-10-21s-27-21-50-29c-46-21-113-34-190-34s-144 13-190 34c-22 10-39 21-50 29s-10 17-10 21v54z m0-167c8-4 17-10 27-14 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 14v-54c0-4-2-10-10-21s-27-21-50-29c-46-21-113-33-190-33s-144 12-190 33c-22 10-39 21-50 29s-10 17-10 21v54z" horiz-adv-x="1000" />

<glyph glyph-name="dropbox" unicode="&#xe83f;" d="M665 123l-165 125-160-125-94 56v-60l254-169 256 167v60l-91-54z m252 471l-246 156-171-140 256-150 161 134z m-834-269l252-150 165 127-242 154-175-131z m252 425l-252-162 175-132 242 154-165 140z m165-448l167-127 250 150-161 135-256-158z" horiz-adv-x="1000" />

<glyph glyph-name="googledrive" unicode="&#xe840;" d="M898 254l-267 463h-262l0 0 266-463h263z m-488-39l-131-232h506l132 232h-507l0 0z m-77 443l-250-443 132-232 254 444-136 231z" horiz-adv-x="1000" />

<glyph glyph-name="onedrive" unicode="&#xe841;" d="M544 602c-75 0-142-44-173-106-19 10-42 17-65 17-75 0-133-61-133-134 0-6 2-10 2-16-52-7-92-50-92-105 0-58 46-104 105-104h83c-4 15-8 29-8 44 0 58 37 108 89 127 11 88 88 156 177 156 54 0 104-23 138-64 12 4 27 6 41 6 11 0 19 0 30-2-7 102-90 181-194 181z m-15-148c-81 0-148-66-148-148v-2c-50-6-89-50-89-102 0-58 46-104 104-104h431c50 0 90 40 90 90s-40 89-90 89c0 67-54 119-119 119-18 0-35-4-52-13-27 42-73 71-127 71z" horiz-adv-x="1000" />

<glyph glyph-name="box" unicode="&#xe842;" d="M898 365c-38 93-113 139-213 145-14 3-20 7-25 19-12 36-35 67-66 90-104 79-265 29-306-94-3-8-13-17-21-21-29-14-63-23-88-41-81-59-114-165-83-257 33-98 123-162 227-162h175c60 0 123-2 185 0 67 2 125 25 169 73 65 71 83 156 46 248z m-100-244c-15-11-29-6-40 8-14 19-29 40-45 61-17-21-30-40-44-59-9-12-21-23-38-12s-16 25-8 41c-58-62-117-58-198 11-23-29-50-48-85-54-67-13-138 43-138 110v192c0 21 13 33 27 33 17 0 27-12 27-33v-84c32 19 63 23 94 17 31-8 56-25 75-54 4 2 6 6 8 8 50 59 125 63 182 11l8-9c-10 17-10 32 2 40 17 10 29 2 40-10 14-19 29-38 45-59 13 15 25 29 36 44 4 6 8 12 12 17 13 14 27 16 40 6 15-13 12-25 2-40-15-18-29-39-44-58-8-10-8-17 0-27 17-19 32-40 46-61 11-16 8-31-4-39z m-473 179c-37 0-67-29-67-65 0-37 27-64 65-64s65 27 67 62c0 38-27 67-65 67z m202 0c-37 0-67-29-67-65 0-37 30-64 67-64 38 0 67 27 67 62 0 36-31 67-67 67z m106-4c2-6 5-13 5-19 14-37 10-75-13-108 17 19 31 37 46 58 4 4 2 15-2 19-11 17-23 33-36 50z" horiz-adv-x="1000" />

<glyph glyph-name="help-circle" unicode="&#xe843;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-709h-84v84h84v-84z m85 323l-37-37c-30-31-48-56-48-119h-84v21c0 46 19 87 48 119l52 52c15 14 25 35 25 58 0 46-37 83-83 83s-83-37-83-83h-84c0 92 75 167 167 167s167-75 167-167c0-37-15-71-40-94z" horiz-adv-x="1000" />

<glyph glyph-name="move" unicode="&#xe844;" d="M425 465h152v114h115l-192 188-190-190h115v-112z m-40-40h-114v115l-188-190 190-190v115h115v150z m532-75l-190 190v-115h-114v-152h114v-115l190 192z m-342-115h-152v-114h-115l192-188 190 190h-115v112z" horiz-adv-x="1000" />

<glyph glyph-name="save" unicode="&#xe845;" d="M731 767h-556c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c52 0 92 42 92 92v556l-184 186z m-231-742c-77 0-140 63-140 140s63 139 140 139 140-62 140-139-63-140-140-140z m140 465h-465v185h463v-185z" horiz-adv-x="1000" />

<glyph glyph-name="loading" unicode="&#xe846;" d="M500 577v-114l152 152-152 152v-115c-167 0-302-135-302-302 0-60 17-115 48-160l56 56c-17 31-27 67-27 106-2 123 100 225 225 225z m256-67l-56-56c17-31 27-66 27-106 0-125-102-227-227-227v114l-152-152 152-150v115c167 0 302 135 302 302 0 60-17 115-46 160z" horiz-adv-x="1000" />

<glyph glyph-name="info-circle" unicode="&#xe847;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-625h-84v250h84v-250z m0 333h-84v83h84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="prev" unicode="&#xe848;" d="M758 669l-100 98-416-417 416-417 98 98-316 319 318 319z" horiz-adv-x="1000" />

<glyph glyph-name="next" unicode="&#xe849;" d="M342 767l-98-98 316-319-318-319 98-98 416 417-414 417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen" unicode="&#xe84a;" d="M500 767l171-171-417-417-171 171v-417h417l-171 171 417 417 171-171v417h-417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen-off" unicode="&#xe84b;" d="M858 767l-177-177-118 118-59-354 354 59-118 118 177 177-59 59z m-362-421l-354-58 118-119-177-177 59-59 177 177 119-118 58 354z" horiz-adv-x="1000" />

<glyph glyph-name="close-circle" unicode="&#xe84c;" d="M500 767c231 0 417-186 417-417s-186-417-417-417-417 186-417 417 186 417 417 417m150-209l-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150 58 58-150 150 150 150-58 58z" horiz-adv-x="1000" />

<glyph glyph-name="pin" unicode="&#xe84d;" d="M667 350v333h41v84h-416v-84h41v-333l-83-83v-84h217v-250h66v250h217v84l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="check" unicode="&#xe84e;" d="M348 167l-198 198-67-69 265-265 569 569-67 67-502-500z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-s" unicode="&#xe84f;" d="M498-67l290 290-75 73-163-163-2 634h-104l2-634-163 159-73-75 288-284z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-n" unicode="&#xe850;" d="M502 767l-289-290 72-73 165 163v-634h104v634l163-163 73 75-288 288z" horiz-adv-x="1000" />

<glyph glyph-name="caret-down" unicode="&#xe851;" d="M902 569c-10 10-23 14-37 14h-730c-14 0-27-4-37-14s-15-23-15-38c0-14 5-27 15-37l365-365c10-10 22-14 37-14s27 4 38 14l364 367c11 10 15 23 15 37 0 13-4 25-15 36z" horiz-adv-x="1000" />

<glyph glyph-name="caret-up" unicode="&#xe852;" d="M917 165c0 14-4 27-15 37l-364 367c-11 10-23 14-38 14s-27-4-37-14l-365-365c-10-10-15-21-15-37s5-27 15-38 23-14 37-14h730c14 0 27 4 37 14s15 23 15 36z" horiz-adv-x="1000" />

<glyph glyph-name="menu-resize" unicode="&#xe853;" d="M627 767c0-277 0-554 0-834-31 0-62 0-94 0 0 277 0 557 0 834 32 0 63 0 94 0z m-160 0c0-277 0-554 0-834-32 0-63 0-94 0 0 277 0 555 0 834 31 0 62 0 94 0z" horiz-adv-x="1000" />

<glyph glyph-name="arrow-circle" unicode="&#xe854;" d="M500 767c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417z m0-577l-260 260 60 60 200-200 200 200 60-60-260-260z" horiz-adv-x="1000" />

<glyph glyph-name="tn-error" unicode="&#xe855;" d="M500 767l-342-152v-227c0-211 146-407 342-455 196 48 342 244 342 455v227l-342 152z m38-257v-227h-75v227h75z m-38-385c-27 0-50 23-50 50 0 27 23 50 50 50l0 0c27 0 50-23 50-50l0 0c0-27-23-50-50-50" horiz-adv-x="1000" />

<glyph glyph-name="warning-alert" unicode="&#xe856;" d="M538 256h-75v152h75m0-304h-75v75h75m-455-189h834l-417 720-417-720z" horiz-adv-x="1000" />

<glyph glyph-name="caret-right" unicode="&#xe857;" d="M719 388l-365 364c-10 11-23 15-35 15-13 0-27-4-38-15s-14-23-14-37v-730c0-14 4-27 14-37s23-15 38-15c14 0 27 4 37 15l365 365c10 10 14 22 14 37 0 15-6 27-16 38z" horiz-adv-x="1000" />

<glyph glyph-name="caret-left" unicode="&#xe858;" d="M281 388l365 364c10 11 23 15 35 15 15 0 27-4 38-15s14-23 14-37v-730c0-14-4-27-14-37s-23-15-38-15-27 4-37 15l-363 365c-10 10-14 22-14 37 0 15 4 27 14 38z" horiz-adv-x="1000" />

<glyph glyph-name="logout" unicode="&#xe85a;" d="M546 767h-92v-463h92v463z m225-100l-67-67c73-60 119-150 119-250 0-179-146-325-325-325s-323 146-323 325c0 102 46 192 119 250l-65 67c-89-77-146-190-146-317 0-229 188-417 417-417s417 188 417 417c0 127-57 240-146 317z" horiz-adv-x="1000" />

<glyph glyph-name="opennew" unicode="&#xe85b;" d="M592 767v-92h166l-454-456 67-67 454 454v-166h92v327m-92-742h-650v650h325v92h-325c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c50 0 92 42 92 92v325h-92l2-325 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="zip" unicode="&#xe85c;" d="M594 119h-94v91h-92v92h92v-92h92m2 280h-94v-92h92v-92h-92v92h-92v92h92v91h-92v94h92v-92h92m233 184h-648c-52 0-94-42-94-92v-648c0-52 42-94 94-94h648c50 0 92 42 92 92v650c0 50-42 92-92 92z" horiz-adv-x="1000" />

<glyph glyph-name="hide" unicode="&#xe85d;" d="M494 483l121-118c0 2 0 4 0 6 0 62-50 114-115 114-2-2-4-2-6-2m-163-31l59-58c-2-9-2-17-2-25 0-63 50-115 114-115 8 0 17 2 25 2l58-58c-25-13-54-21-83-21-104 0-189 86-189 190-3 31 6 60 18 85m-210 211l85-86 17-17c-63-50-113-114-142-189 65-167 227-283 417-283 58 0 115 10 167 31l16-17 111-110 48 48-671 670m331-152c104 0 190-85 190-189 0-25-5-48-15-69l110-110c57 48 103 110 130 179-65 166-227 283-417 283-52 0-104-10-152-27l81-81c25 10 48 14 73 14z" horiz-adv-x="1000" />
</font>
</defs>
</svg>                                                                                                                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/Material-Light/images/icons-big.svg                                0000644                 00000055525 15266052701 0021441 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1998"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M25.3 1965.3l-5 17.5h2.5l5-17.5h-2.5zm-8.8 2.5l-5 6.3 5 6.3H19l-5-6.4 5-6.3-2.5.1zm12.5 0l5 6.3-5 6.3h2.5l5-6.3-5-6.3H29z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M20.6 1914.9v2.3h-4.9c-.4-.7-1.2-1.1-2-1.1a2.26 2.26 0 1 0 0 4.6c.8 0 1.6-.4 2-1.1h2.7c-1.5 1.4-2.4 3.5-2.4 5.7v1.1h-2.3v6.8h6.8v-6.8h-2.3v-1.1c0-1.9.9-3.5 2.3-4.5v1.1h6.8v-1.1c1.4 1 2.3 2.7 2.3 4.5v1.1h-2.3v6.8h6.8v-6.8H32v-1.1c0-2.2-.9-4.2-2.4-5.7h2.7c.4.7 1.2 1.1 2 1.1a2.26 2.26 0 1 0 0-4.6c-.8 0-1.6.4-2 1.1h-4.9v-2.3h-6.8zm2.3 2.3h2.3v2.3h-2.3v-2.3zm-6.9 11.3h2.3v2.3H16v-2.3zm13.7 0H32v2.3h-2.3v-2.3z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M24 1861.4c-2.9 0-5.5.5-7.4 1.4-1 .4-1.8 1-2.3 1.6-.6.6-.9 1.3-.9 2.1v14.8c0 .8.4 1.5.9 2.1s1.4 1.1 2.3 1.6c1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c1-.4 1.8-1 2.3-1.6.6-.6.9-1.3.9-2.1v-14.8c0-.8-.4-1.5-.9-2.1-.6-.6-1.4-1.1-2.3-1.6-1.9-.9-4.5-1.4-7.4-1.4zm0 1c2.8 0 5.2.5 7 1.3.9.4 1.6.9 2 1.3s.7 1 .7 1.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4c0-.5.2-1 .7-1.4s1.1-.9 2-1.3c1.8-.7 4.2-1.3 7-1.3zm-9.7 6.3c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.1c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.2c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.4z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M24 1825.3h7.3c.2 0 .1 0 .2.1.1.4 0 .8 0 1.2v1.1c0 .1-.1.1-.2.1h-7c-.2 0-.2 0-.2-.1v-1.4c-.1-.3-.1-.7-.1-1zm-4.8 1.6s.1.2.1.3v.6h.8c.1 0 0 0 .1-.1s0-.4 0-.5v-.3c0-.1 0 0 .1-.1s.3-.1.5-.2c1-.4 1.5-1.9.7-2.7-.1-.1-.4-.2-.6-.3s-.5-.2-.7-.3c-.3-.1-1.2-.4-.9-.9s1.1-.3 1.6-.2c.1 0 .2.1.4.1.2.1.2 0 .2-.1s.1-.3.1-.4.2-.4.1-.5-.3-.1-.4-.1-.3-.1-.4-.1h-.4c-.1 0-.1 0-.1-.1v-.7c-.1-.1-.6 0-.7 0h-.2c-.1.1 0 .4 0 .4v.4c-.1.1-.3.1-.4.1-.6.2-.9.6-1.1 1.2-.1.3-.1.6.1.9s.5.5.7.7c.5.3 1 .4 1.5.7.2.1.5.4.4.6s-.5.4-.7.4c-.3.1-.7 0-1.1-.1-.2 0-.3-.1-.4-.2-.1 0-.3-.1-.3-.1 0 .2-.1.4-.2.6 0 .1-.2.4-.1.5 0 .1.2.1.3.1s.2.1.4.1c.1.2.3.3.6.3zm14.8-14.1H15.9c-.7 0-1.6-.1-2.3 0-1.2.2-2.1 1.3-2.2 2.5v16c0 1.1-.1 2.3.7 3.2.9.9 1.9.8 3 .8h18.6c.9 0 1.7-.4 2.2-1.2.3-.5.4-1 .4-1.6v-17.1c.2-1.5-1-2.6-2.3-2.6zm0 20H14.1v-12c0-.9-.1-1.9 0-2.8 0-.2 0-.1.1-.1h19.3c.1 0 .5-.1.6 0 .1 0 0 .3 0 .4v14.2c-.1-.1-.1.1-.1.3z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M14.5 1776.4l-3 7.1 5.7-.2-2.7-6.9zm14.8.1c-3.7 2.3-7.3 4.7-10.9 7.1l16.5 2.3-5.6-9.4zm7.1-10.3l-1.5 2.2-5 7.6c-.1.2-.2.3-.1.5l4.8 8c.3.4.5.8.8 1.3l1-19.6zm-22 8.2c.1.1.2.1.3.1l4.6-2.3c.5-.3.8-.8 1.3-1.2l4.3-3.9c.1-.1.2-.2.2-.3l1.5-3c-.6-.2-1.2-.4-1.7-.7-.1 0-.2 0-.3.1l-4.1 2.4c-.7.4-1.2 1-1.8 1.6l-2.8 2.6c-.2.3-.5.5-.7.8-.7.9-1.3 1.8-1.9 2.8l1.1 1zm5.6-1.2l-2.3 9.8 10.9-7.1-8.6-2.7zm6.2-5.4l3.2 7.7 6.2-9.3-9.4 1.6zm-6 4.7l8.4 2.8-3.1-7.6-5.3 4.8zm-2.9 9.1l2.1-8.5-4.5 2.3 2.4 6.2zm17-15.9l-2.7-.8-3.9-1c-.2-.1-.3-.1-.3.1l-1.4 2.8v.2l8.3-1.3zm-5.1-2.1l7.3 2-1.3-3.4-6 1.4zm2.1 22.3l-13.5-1.8c-.9-.1-1.8 0-2.7 0l-2.3.1c-.1 0-.2 0-.2.1l18.7 1.6c0 .1 0 0 0 0zm-19.6-4.6l2.4-5.6c.1-.2.1-.3-.1-.5l-1-1.1-1.5 7.3.2-.1c-.1.1 0 .1 0 0zm15.8-18.2l4.1-.9c.1 0 .2-.1.2-.1v-.1l-5.9.7c.7.4 1.1.6 1.6.4z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M26 1723.3c1.7 0 3.2-1.2 3.2-2.9v-5.6c0-1.6-1.2-2.8-2.7-3.1 0 0-1.2-.2-2.2-.2s-1.7.1-2.6.2c-2.5.4-3 1.3-3 3.1v2.6h5.9v1.3h-9c-1.7 0-3.2.8-3.7 2.7-.6 2.2-.6 3.7 0 6 .4 1.7 1.4 3.1 3.1 3.1h2.4v-3.3c0-1.9 1.7-3.9 3.8-3.9H26zm-5-7.1c-.5 0-1-.4-1-.9v-.1c.1-.6.5-1 1-1s1 .4 1 1c0 .5-.4 1-.9 1H21zm15.1 4.3c-.4-1.7-1.4-3.1-3.1-3.1h-2.4v3.3c0 1.9-1.7 3.9-3.8 3.9H22c-1.7 0-3.2 1.2-3.2 2.9v5.6c0 1.6 1.2 2.8 2.7 3.1 0 0 1.2.2 2.2.2s1.7-.1 2.6-.2c2.5-.4 3-1.3 3-3.1v-2.6h-5.9v-1.3h9c1.7 0 3.2-.8 3.7-2.7.5-2.3.5-3.7 0-6zm-9.1 11.3c.5 0 1 .4 1 .9v.1c-.1.6-.5 1-1 1s-1-.4-1-1c0-.5.4-1 .9-1h.1z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M19.7 1678.6c-.1-.8-.4-1.4-1.3-1.7-.3-.1-.6-.3-.8-.5-.3-.2-.7-.3-1.1-.4-.3-.1-.5.1-.7.3-.2.3-.1.4.1.7.1.2.3.4.5.6.3.3.6.7.8 1 .3.3.5.7.4 1.1a3.47 3.47 0 0 1-1.2 2.3c.1 0 0 0-.2 0-.4-.1-.8-.3-1.2-.5-.3-.3-.3-.8.2-1 .1-.1.3-.1.3-.2.3-.2.3-.6.3-.8-.1-.2-.2-.3-.3-.4l-1.7-1.5c-1.4-1.2-2.2-2.6-2.3-4.4-.2-2 .3-3.8 1.4-5.6.4-.7.8-1.3 1.6-1.6.5-.3 1-.3 1.5-.5 1.4-.4 2.9-.7 4.3-.4 1.3.3 2.3.9 2.7 2.2.3.8.3 1.7.3 2.6-.2 1.8-1.4 3.3-3.1 3.7-.8.2-1.1.1-1.5-.5-.3-.4-.6-.8-.8-1.3 0-.1-.1-.2-.1-.3s-.1-.2-.1-.3c.1.8.3 1.5.7 2.1.3.3.5.6.9.7 1.6.2 2.9-.4 3.8-1.7 1.1-1.4 1.3-3.1 1-4.8l-.3-1c-.1-.3 0-.4.3-.4.1 0 .2-.1.3-.1 1.3-.3 2.6-.3 3.9-.3 1.5.2 2.9.6 4.2 1.4 2 1.3 3.2 3.2 3.8 5.4.1.3.1.7.1 1s-.2.3-.3.2l-.5-.5c-.2-.2-.3-.3-.4-.6-.1-.2-.3-.1-.3.1 0 .1-.1.3-.1.3-.3 1.3-.9 2.3-1.8 3.3-.1.2-.3.3-.3.5 0 .5-.1 1 0 1.5l.3 3.1c.1.6-.1.9-.7 1.2-.4.2-.8.3-1.3.3-.7.1-1.3 0-2 0 0-.8.1-1.4-.7-1.8.2-.6.3-1.1.4-1.6.1-.4 0-.8-.3-1.3-.3-.3-.7-.4-1-.3-1 .6-2 .6-3.1.2-.5-.2-.8-.1-1.1.3-.3.5-.4 1-.4 1.6 0 .7.2 1.3.3 2 .1.4 0 .5-.3.6-.8.3-1.7.3-2.6.2h-.1c-.1-.8 0-1.4-.8-1.8.6-.7.5-1.6.4-2.4zm-5.1-2.8c.1-.1.3-.3.3-.5.1-.4-.3-1-.6-1.2-.2-.1-.3-.1-.5.1-.3.4-.7.8-1 1.2-.1.1-.1.2-.2.3-.2.3-.1.4.3.5a.9.9 0 0 0 .5.1c.5-.1.9-.2 1.2-.5zm.1-4.2a.65.65 0 0 0-.6-.6.65.65 0 0 0-.6.6c0 .3.3.6.6.5.4.1.6-.2.6-.5z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M33.3 1629c0 .2.1.3.1.8-.1 1.1.3 1.2.2 2.8-.1.7-.4 1.1-.6 2-.1.3-.1.5-.3.8l1.8.3c0-.5.1-.8-.3-1.7-.4-1-.1-1.2-.1-2 0-1.3.8-1.3.3-2.6-.3-.7.1-.7-.1-2.2-.3-1.8 0-5 .6-4.9.5.1.5 1.3.6 1.9.2 1.1-.5 1.7-.7 2.2 0 .3.3.5.5.4.3-.2.6-.7.9-1.2.3-1.1.3-1.9.2-3 0-.7-.1-1-.7-1.5-1.1-1.2-1.7-2.2-2.3-3.5-.2-.3-.5-.7-.8-.9-.8-.7-1-2.2-1.7-3.1-.8-.8-1.7-1.3-2.8-1.3-.9-.1-3 .8-3.8 1.4-.8.7-.7 1.8-2.7 2.8-.8.4-2.3 1.5-2.7 3.7-.5.4-.8-.2-.8-.6.3-1 .8-1.9.8-3-.2-1.5-.8-2.8-1.9-3.3-.9-.4-1.5-.2-1.9.3-1.6 1.1-2.9-.2-3.7 1.7-.1 1.3 2 .4 2.2 1.5-.3 1.3-1 .6-.6 4.5.1 1 .9 1.6 1.5 2.4.9 1 2.5 2 4 1.6 1-.3 1.2.3 1 .8-.3 1.3.1 1.8.1 3 0 .6.3.8.3 2.6.2 1.3-.4 2.5-.9 3.3l1.3-.1c.2-.8.2-1.3.3-2.4.2-.8.7-1 .6-2.2 0-2.2.8-2.2.8-3.2 0-.8.3-1.3 1-1.3.9 0 .8.4.6 1.2-.1 1.3-.4 1.1-.6 1.8-.1.6-.1 1.4.3 1.7.3.3.7.5 1.3.9.3.3 1.3 1 1.3 1.7-.2 1.4-1.7 1.2-1.6 1.8h2.2c.3-.2.3-.6.5-.6s.4.4.7.6c.3 0 .6 0 .8.1.2-.2.3-.8.2-1-.2-1-1.1-.8-.9-1.7.4-.9.7-1 1-1.4.4-.8.8-.8 1-1.3 0-1 0-1.9.2-2.7.1-.8.3-1.3.8-1.9.5-.7.6-.8.9-.3.3 1.8 1.2 3.1 1.6 4.3zm-8.1.5c.1-.1.4-.3.6-.5.4-.3.4-.4.5-.9.2-.9.5-.5.8-1.8 0-.1.2-.8.4-.7.3 0 .3.1.4.9l.3 2.4c0 .2 0 .5-.1.7 0 1-.6 1.5-.8 2-.3.5-.5.8-1.6-.2-.7-.7-1.2-1.3-.5-1.9z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M13.8 1566.2c-1.2 0-2.3 1-2.3 2.2v11.2c0 1.3 1 2.2 2.3 2.2h20.5c1.3 0 2.3-1 2.3-2.2v-11.2c0-1.3-1-2.2-2.3-2.2H13.8zm0 1.6h20.5a.68.68 0 0 1 .7.7v11.2c0 .3-.2.7-.7.7H13.8a.68.68 0 0 1-.7-.7v-11.3c0-.3.2-.6.7-.6zm1.6 2.3v7.8h2.3v-5.2l2.3 3.1 2.3-3.1v5.2h2.3v-7.8h-2.3l-2.3 3.2-2.3-3.2c.1 0-2.3 0-2.3 0zm13.3 0v3.9h-2.3l3.5 3.9 3.5-3.9H31v-3.9h-2.3z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M19.4 1536.4c-3.1-.9-4.6-2.8-4.6-5.9v-2.5c0-1.8-.8-2.7-2.3-2.7v-2.6c1.5 0 2.2-.8 2.3-2.5v-2.7c0-1.6.4-2.8 1.1-3.8s1.9-1.7 3.4-2.1l.7 2.1c-.6.2-1.1.7-1.5 1.2-.3.6-.5 1.4-.5 2.5v2.7c0 1.9-.8 3.3-2.3 4 1.5.8 2.3 2.1 2.3 4.1v2.7c0 2 .7 3.2 2 3.6l-.6 1.9zm3.8.1l-1.9-1 .5-.8c.6-1 .9-2.1.9-3.1v-2.9h3.1v2.5c0 .9-.2 1.9-.7 2.9s-1.1 1.8-1.9 2.4zm-1.2-16.9c0-.6.2-1.1.6-1.4.4-.4.9-.5 1.5-.5s1.1.2 1.5.5c.4.4.6.8.6 1.4s-.2 1-.6 1.4-.9.5-1.5.5-1.1-.2-1.5-.5-.6-.8-.6-1.4zm5.9 14.8c1.3-.5 2-1.7 2-3.7v-2.7c0-1.9.8-3.3 2.3-4-1.6-.7-2.3-2.1-2.3-4.1v-2.7c0-2-.7-3.2-2-3.7l.7-2.1c1.5.4 2.7 1.1 3.4 2.1.8 1 1.2 2.2 1.2 3.8v2.7c0 1.7.8 2.5 2.3 2.5v2.6c-1.5 0-2.3.9-2.3 2.7v2.8c-.1 3-1.6 4.9-4.6 5.7l-.7-1.9z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M35 1461.5H13c-.9 0-1.6.8-1.6 1.6v21.9c0 .9.8 1.6 1.6 1.6h21.9c.9 0 1.6-.8 1.6-1.6v-21.9c.1-.9-.7-1.6-1.5-1.6zm-9.8 19.2c0 2.5-1.5 3.6-3.5 3.6-1.9 0-3.2-1.2-3.8-2.5l1.8-1.1c.3.7.9 1.1 1.7 1.1s1.1-.3 1.1-1.5v-7.6H25l.2 8zm5.3 3.5c-2.1 0-3.3-1.1-4-2.5l1.8-1.2c.4.9 1 1.6 2.1 1.6.9 0 1.5-.4 1.5-1.1 0-.8-.4-1.1-1.6-1.6l-.6-.2c-1.7-.7-2.8-1.6-2.8-3.5 0-1.7 1.3-3 3.3-3 1.5 0 2.6.6 3.2 1.8l-1.8 1.2c-.4-.7-.9-1-1.5-1-.7 0-1.1.4-1.1 1 0 .7.4.9 1.5 1.5l.6.2c1.9.9 3 1.7 3 3.6 0 2-1.5 3.2-3.6 3.2z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M25.5 1411.5c1.3 3.1-4.9 5.2-5.5 7.8-.6 2.5 3.8 5.2 3.8 5.2-.7-1-1.1-1.9-1.8-3.5-1.2-2.6 6.7-4.9 3.5-9.5zm4.2 4.4s-5.5.3-5.9 3.9c-.1 1.6 1.4 2.5 1.6 3.6 0 .9-.9 1.8-.9 1.8s1.8-.3 2.3-1.8c.6-1.6-1.2-2.7-1-3.9.2-1.3 3.9-3.6 3.9-3.6zm1.4 8.2c-.6 0-1.2.1-1.8.6 1.2-.2 2.1.4 2.1 1.2 0 1.9-2.6 3.6-2.6 3.6s4.2-.5 4.2-3.5c-.1-1.2-.9-1.9-1.9-1.9zm-10.1 0s-5.1-.1-5.1 1.3 6.7 1.6 11.4.7c0 0 1.2-.9 1.6-1.1-3.1.7-10.1.8-10.1.1 0-.5 2.2-1 2.2-1zm-1.2 2.8c-.8 0-1.9.6-1.9 1.2 0 1.2 5.9 2.1 10.1.3l-1.4-.9c-3 1-8.5.6-6.8-.6zm.7 2.6c-1.1 0-1.8.7-1.8 1.2 0 1.4 6.4 1.7 8.9.1l-1.6-1c-1.8.7-6.5.8-5.5-.3zm-3.5 1.4c-1.8 0-2.9.8-2.9 1.4 0 3.5 17.8 3.2 17.8-.2 0-.6-.7-.9-.9-1 1.4 3.3-14.5 3.1-14.5 1.1 0-.4 1.1-.9 2.2-.7l-.9-.4c-.3-.2-.5-.2-.8-.2zm16.9 2.3c-2.7 2.6-9.6 3.6-16.5 1.9 6.8 2.7 16.4 1.2 16.5-1.9z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M35.2 1361.5H12.8l2.4 22.5 8.8 2.6 8.8-2.6 2.4-22.5zm-5.2 7.6h-9.6l.2 2.8h9.1l-.7 8-5 1.6h-.1l-5-1.7-.2-3.2h2.6l.1 1.2 2.9.7 2.8-.7.3-3.4h-8.8l-.7-7.9h12.3l-.2 2.6z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M12.8 1311.6l2.4 22.4 8.7 2.5 8.7-2.5 2.5-22.5-22.3.1zm17 10.3l-.4 7.9-5.4 1.8-5.4-1.8-.2-3.8h2.8l.1 1.7 2.8.9 2.9-.9.2-3.1h-6l-.1-2.8h6.2l.1-2.8H18l-.2-2.5h12.4l-.4 5.4z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M35.2 1267.8l-5.3 3.1c-.9-1.3-2-2.2-3.4-2.7-1.3-.4-2.8-.4-4.1.2-2.9 1.1-4.3 3.8-4 6.5s2.2 4.9 5 5.4c2.9.6 5.4-.8 6.6-3 .9.4 1.8 1 2.7 1.4.9.6 1.9 1 2.7 1.5-3.5 6-10.2 7.4-15 5.4-5.5-2.2-8.5-7.2-8.2-12.4.4-6.4 5-10.4 9.7-11.5 6.3-1.1 11.3 2.4 13.3 6.1z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><path d="M34.5 1221.3a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-6.4zm-18 0a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.47 1.47 0 0 0 1.5-1.5v-6.4zm10.8-7.4l1.1-2c.1-.1 0-.2-.1-.3h-.1c-.1 0-.2 0-.2.1l-1.1 2c-.9-.4-1.9-.6-3-.6s-2.1.2-3 .6l-1.1-2c0-.1-.1-.1-.2 0-.1 0-.2.2-.1.3l1.1 2c-2.1 1.1-3.5 3.2-3.5 5.5h13.8c-.1-2.4-1.5-4.5-3.6-5.6zm-6.5 3a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c-.1.4-.3.6-.6.6zm6.3 0a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c0 .4-.3.6-.6.6zm-10 3.1v10c0 .9.7 1.7 1.7 1.7h1.1v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4H25v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4h1.1c.9 0 1.7-.7 1.7-1.7v-10H17.1z" class="C"/><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M13.4 1186.6v-4.9h.1c1.9 0 3.3-.9 4.6-2.1.9-1 1.7-2.1 2.2-3.4.8-1.4 1.2-2.9 1.9-4.4.4-1.3 1-2.8 1.8-4 1-1.8 2.2-3.1 3.9-4.3.9-.6 1.7-1.1 2.7-1.3.9-.2 1.9-.4 2.8-.4h1.3v4.8h-.4c-1.2 0-2.3.3-3.3 1-.7.6-1.2 1-1.8 1.7s-.9 1.3-1.2 2.1c0 .1-.1.1-.1.1h4.2v5h-5.9c-.2 0-.2 0-.2.2-.7 1.8-1.4 3.3-2.6 4.8-2.2 2.8-5 4.4-8.4 5.1-.4.1-.9.1-1.2.2-.3-.2-.4-.2-.4-.2z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M15.5 1126.5v5.6h-4v-16.4H18c1.3 0 2.3.3 3.3.7s1.8 1.1 2.3 2c.5.8.8 1.8.8 2.9 0 1.6-.6 2.9-1.8 3.8s-2.8 1.4-4.7 1.4h-2.4zm0-3h2.6c.8 0 1.3-.2 1.8-.6.4-.4.6-.9.6-1.7s-.2-1.4-.6-1.8c-.4-.5-1-.7-1.7-.7h-2.7v4.8zm17.2 5.1c0-.3-.2-.6-.5-.8s-1-.4-1.9-.6-1.7-.5-2.3-.8-1.1-.8-1.4-1.3c-.4-.4-.6-1-.6-1.5 0-1.1.5-2.1 1.4-2.7.9-.8 2.2-1.1 3.7-1.1 1.6 0 2.9.3 3.9 1.1s1.5 1.7 1.5 2.9h-3.8c0-1-.5-1.5-1.6-1.5-.4 0-.8.1-1 .3s-.4.5-.4.8.2.6.5.8c.3.3.8.4 1.6.5l1.9.5c1.8.7 2.7 1.7 2.7 3.4 0 1.1-.5 2-1.5 2.7-1 .8-2.3 1.1-3.8 1.1-1.1 0-2-.2-2.8-.6s-1.5-.9-1.9-1.5c-.5-.7-.7-1.3-.7-2.1h3.6c0 .6.2 1 .6 1.2.4.3.8.4 1.4.4.5 0 .9-.1 1.2-.3 0-.2.2-.5.2-.9z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M24.6 1080.4h-7.3l-1.4 4.2h-4.4l7.5-20.2h3.9l7.6 20.2H26l-1.4-4.2zm-6.2-3.4h5l-2.5-7.6-2.5 7.6zm13.6-11.3c0-.6.2-1.1.6-1.5s.9-.6 1.6-.6 1.2.2 1.6.6.6.9.6 1.5-.2 1.1-.6 1.5-1 .6-1.6.6-1.2-.2-1.6-.6-.6-.9-.6-1.5zm4.3 18.9h-4v-15h4v15z" class="C"/><path fill="#fbc02d" d="M0 1000.1h48v10.7H0v-10.7m2.7 13.3h42.7v34.7H2.7v-34.7m14.6 8c-.7 0-1.3.6-1.3 1.3v4h16v-4c0-.7-.6-1.3-1.3-1.3H17.3z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M11.5 967.8v2.5h13.2v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm24.2-19.9h-7.5c-.4 0-.8.4-.8.8v5.8c0 .5.4.8.8.8h7.5c.4 0 .8-.4.8-.8v-5.8c0-.4-.4-.8-.8-.8m-6.7 5.8l1.5-1.9 1 1.3 1.5-1.9 1.9 2.5H29zm-17.5-5.8v2.5h13.2v-2.5H11.5z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M11.5 933h25v-17.8h-25V933zm16.1-13.4h6.3v1.8h-6.3v-1.8zm0 3.6h6.3v1.8h-6.3v-1.8zm0 3.6h3.6v1.8h-3.6v-1.8zm-8.1-8.1v5.4h5.4c0 2.9-2.4 5.4-5.4 5.4s-5.4-2.4-5.4-5.4 2.5-5.4 5.4-5.4z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M33.7 864.4H11.5v19.4h25v-19.4h-2.8zm-19.4 2.8h5.6v2.8h-5.6v-2.8zm0 5.5h5.6v2.8h-5.6v-2.8zm0 5.6h5.6v2.8h-5.6v-2.8zm19.4 2.7H22.6v-2.8h11.1v2.8zm0-5.5H22.6v-2.8h11.1v2.8zm0-5.6H22.6v-2.8h11.1v2.8z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M24 811.6c-6.9 0-12.5 5.6-12.5 12.5 0 .9.1 1.7.3 2.6 1.1-.3 2.3-.5 3.4-.5 1.9 0 3.7.4 5.4 1.1 2.1-1.5 4.8-2.4 7.6-2.4 1.8 0 3.5.4 5 1 .1 0 .1.1.1.2s-.1.2-.2.2h-1.2c-4.4 0-8.3 1.6-10.7 4.9 0 .1-.1.2-.1.2l-.1.1h-.1c-2.3-2.1-5.3-3-8.6-3 1.7 4.9 6.3 8.3 11.8 8.3 6.9 0 12.5-5.6 12.5-12.5-.1-7.1-5.7-12.7-12.6-12.7zm9.8 7.5h-.2c-.1 0-.3 0-.4-.1-2.5-.2-4.9.5-6.5 2.3-.1.1-.1.1-.2 0-1.2-1.4-3-2-5-2.2-.7-.1-1.4 0-2.1.1-.1 0-.1-.1-.1-.1s0-.1.1-.1c1.3-.7 2.7-1 4.2-.8 1.1.1 2.1.4 3 .9 1.3-.8 2.9-1.1 4.5-1 .9.1 1.8.3 2.6.7 0 0 .1 0 .1.1v.2c.1-.1.1 0 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M36.5 765.3c.1-.5-.3-1-.8-1.1h-9.4v-2.3h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-2.3h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16.8zM21 778c-.5.2-1.2 0-1.7 0l-1.2-5.6-1.1 5.5c-.5 0-1.1-.1-1.6-.1l-1.5-7.5c.5 0 1 0 1.5-.1l.9 5.4 1.2-5.6c.5 0 1.1-.1 1.6-.1l1.2 5.7 1-5.9c.6 0 1.1-.1 1.7-.1l-2 8.4zm14.6 5.2h-9.4v-2.3h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.3h-7.4v-1.4h7.4v-1.1h-7.4v-1.5h7.4V767h-7.4v-2h9.4v18.2z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M36.5 715.6c.1-.7-.4-1.2-1.1-1.1h-9.1v-2.6h-1.6c-4.4.7-8.8 1.5-13.2 2.3v19.9l13 2.3h1.8v-2.8h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16zM19.8 725c-.6.3-1.4.3-2.1.3v3.3c-.6 0-1.1-.1-1.7-.1v-9.1c1.5.1 3.4-.6 4.7.5 1.3 1.5.9 4.3-.9 5.1zm15.8 7.6h-9.4v-2.3H33v-1.1h-6.8v-1.4H33v-1.1h-6.8V725c1.1.3 2.4.3 3.4-.3 1.1-.6 1.7-1.9 1.7-3.1h-3.7v-3.7l-1.4.3v-2.8h9.4v17.2zM32 721c-.1-2-1.8-3.6-3.7-3.7v3.7H32zm-14.3-.1v2.9c.6-.1 1.3 0 1.6-.6a2.12 2.12 0 0 0 0-1.9c-.3-.5-1-.4-1.6-.4z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M36.5 665.7v-.7c-.1-.5-.2-.7-.7-.8-.4-.1-.9-.1-1.3-.1h-8.1v-2.3l-2.4.1-7.3 1.3-4.8.8h-.2v19.9l7.8 1.3 5.1.9h1.8v-2.6H35c.3 0 .6 0 .9-.1.4-.1.6-.3.6-.6 0-.4.1-.8.1-1.2l-.1-15.9zM20 678.5c-.1 0-.1-.1-.2-.2l-1.3-3.3-.1-.1c-.1.1-.1.3-.2.4l-1.2 2.8c0 .1-.1.1-.1.1h-1.8c.1-.1.1-.2.1-.3l1.9-3.8c0-.1.1-.3 0-.4l-1.7-3.8c0-.1-.1-.2-.1-.3.6 0 1.2-.1 1.9-.1l1.2 3.3 1.3-3.2c.1-.2.1-.2.3-.2.5 0 1.1-.1 1.7-.1-.2.5-.5 1-.7 1.4l-1.4 2.9c-.1.2-.1.4 0 .6l2.1 4.2c0 .1.1.1.1.2-.6 0-1.2 0-1.8-.1zm15.6 4.4h-9.3v-1.7h2.2v-2h-2.2v-1.1h2.2v-2h-2.2V675h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.7h9.3v17.8zm-2-16.2h-4v2h4v-2zm0 6.3h-4v2h4v-2zm0 6.2h-4v2h4v-2zm0-9.4h-4v2h4v-2zm-3.9 8.3h4v-2h-4v2z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M36.5 617.3c.1-1.2-1-2-2-2.3-2.6-.9-5.5-1-8.2-.6v-2.5h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-3.1c2.7.4 5.6.3 8.2-.6 1-.3 2.1-1.1 2-2.3v-13.1zm-16.4 11.3l-.5-2.1c-.9 0-1.7 0-2.6-.1l-.5 2c-.6 0-1.1-.1-1.7-.1l2.5-9c.7 0 1.3-.1 2-.1l2.8 9.6-2-.2zm6.2-13.4c2.5-.3 5.2-.3 7.6.4.7.3 1.6.6 1.7 1.4-.1.7-.8 1-1.3 1.2-2.6.9-5.4 1-8 .5v-3.5zm0 9a28.11 28.11 0 0 0 5.8 0c1.2-.2 2.5-.5 3.5-1.3-.1 1.2.1 2.4-.1 3.7-.5.6-1.3.8-2 1-2.4.6-4.9.6-7.3.3l.1-3.7zm9.3 6.9c-.8.9-2.1 1-3.2 1.3-2 .3-4.1.3-6.1 0v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.5-.5 3.6-1.3l-.1 3.7zm0-9.1c-.5.6-1.3.8-2 1-2.4.6-4.8.6-7.3.3v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.6-.5 3.6-1.3l-.1 3.7zm-18.3 2.9h1.9l-1-4c-.2 1.4-.6 2.7-.9 4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M34.4 564v20.4l-7.3 2.2-13.4-4.8 13.4 1.6v-17.7l-8.7 2.1v12l-4.7 2v-15.2l13.4-5 7.3 2.4z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M24.4 514.5c-.1 1.6-.3 3.5-.7 5.2v.4c.8 2 2 3.8 3.6 5.2.4.3.9.7 1.3.9a.45.45 0 0 0 .5 0c1.5-.2 3-.3 4.5-.2.7.1 1.3.1 2 .4.5.2.8.6.8 1.2 0 .3 0 .7-.1.9-.2.8-.7 1.1-1.5 1.2-1.1.1-2.3-.2-3.3-.6l-3.1-1.3c-.2-.1-.5-.2-.7-.2-2.9.4-5.7 1.1-8.4 2-.1 0-.2.1-.2.2l-2.4 3.6c-.7.9-1.4 1.9-2.6 2.4-.5.2-1 .2-1.6 0-.2-.1-.3-.2-.5-.2-.6-.2-.7-.7-.6-1.3.2-.7.6-1.1 1.1-1.6 1.1-1.1 2.3-2 3.7-2.6.1 0 .1-.1.2-.1.7-.2 1.1-.7 1.4-1.3l2.2-4.1c.7-1.2 1.1-2.6 1.7-3.8.1-.2.1-.4.1-.6l-1-5.2c-.1-.8 0-1.6.2-2.5.2-.5.6-.7 1-.8.3-.1.7-.1 1-.1.5 0 .7.3 1 .7.5.8.4 1.5.4 2.2zM20 528.7c2.1-.8 4.3-1.3 6.5-1.7l-2-2c-.6-.7-1.1-1.5-1.6-2.2l-2.9 5.9zm3-11.1c.2-.2.2-.3.3-.4.3-1 .4-2 .2-3-.1-.3-.2-.7-.3-1.1-.1-.2-.2-.2-.4-.3-.1.2-.2.3-.2.4-.2 1.1-.1 2.3.1 3.4.1.2.2.6.3 1zm8.3 9.9v.2l2.8.9c.4.1.9.1 1.4 0 .3 0 .4-.2.2-.5-.2-.2-.5-.2-.7-.3-.7-.2-1.4-.2-2.2-.2-.6-.1-1-.1-1.5-.1zm-14.8 3.7c-1.3 1.1-2.6 2.3-3.4 3.8 1.5-.8 2.4-2.3 3.4-3.8z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M11.5 462.9v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M11.5 413v22.4h25V413h-25zm4.3 20.8H13v-2.7h2.8v2.7zm0-5.5H13v-2.8h2.8v2.8zm0-5.6H13v-2.8h2.8v2.8zm0-5.5H13v-2.8h2.8v2.8zm19.3 16.6h-2.8v-2.7h2.8v2.7zm0-5.5h-2.8v-2.8h2.8v2.8zm0-5.6h-2.8v-2.8h2.8v2.8zm0-5.5h-2.8v-2.8h2.8v2.8z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M34.2 361.9h-.6l-12.5 1.7c-1.2.2-2.1 1.2-2.1 2.6v11.5c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3 0 2.2 2.2 3.7 5 3 2.7-.6 5-3 5-5.3v-11L34 368v7.1c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3s2.2 3.7 5 3c2.7-.6 5-3 5-5.3v-13.7c.2-1.5-.9-2.5-2.2-2.5z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M14 314.1c-1.4 0-2.5 1.1-2.5 2.5v14.9c0 1.4 1.1 2.5 2.5 2.5h20c1.4 0 2.5-1.1 2.5-2.5v-14.8c0-1.4-1.1-2.5-2.5-2.5 0-.1-20-.1-20-.1zm0 2.6h20v14.9H14v-14.9zm15.6 2.4a1.97 1.97 0 0 0-1.9 1.9c0 1.1.9 1.9 1.9 1.9 1.1 0 1.9-.9 1.9-1.9a1.97 1.97 0 0 0-1.9-1.9zM19 321.7l-2.5 2.4v5h14.9v-2l-5-3-2.5 1.3-4.9-3.7z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M11.5 263v2.5h25V263h-25zm0 5v2.5h25V268h-25zm0 5v2.5h25V273h-25zm0 5v2.5h25V278h-25zm0 5v2.5h25V283h-25z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><path d="M17.1 222.4H15v-8l-2.5.8v-1.7l4.3-1.6h.2v10.5h.1zm10.4-4.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3s-1.5 1.1-2.6 1.1-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm-14.8 16.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm8.5 6.5h-2.1v-8l-2.5.8v-1.7l4.3-1.6h.3v10.5z" class="C"/><path d="M45.6 165v23.5c-.5 1.5-1.1 2-2.5 2H12.8c-1.6 0-2.5-.9-2.5-2.5v-35.5c0-1.6.9-2.5 2.5-2.5h15.4v12.4c0 .3 0 .5.1.8.2 1.1 1.1 1.7 2.3 1.7h14.5l.5.1zM8 157.6v33c0 1.1.3 1.9 1.3 2.3.4.2.9.2 1.3.2h27.1v2.7c-.1 1-.8 1.8-1.7 2-.2.1-.4.1-.8.1l-30.3.2c-1.2 0-2.1-.6-2.3-1.7-.2-.3-.2-.5-.2-.8V160c0-1.5.9-2.4 2.4-2.4H8zm22-7.5l15.6 13.4c-.2 0-.3.1-.4.1H32.4c-1.5 0-2.5-.9-2.5-2.4v-10.6c.1-.2.1-.4.1-.5zm8.5-6.9h-34C2 143.2 0 141 0 138.4v-28.9c0-2.7 2-4.8 4.5-4.8h13.6l4.5 4.8h15.8c2.5 0 4.5 2.1 4.5 4.8H4.5v24.1l4.9-19.2H48l-5.2 20.4c-.5 2.1-2.2 3.6-4.3 3.6zM19.2 54.8H4.8c-2.7 0-4.8 2.1-4.8 4.8v28.8c0 2.6 2.2 4.8 4.8 4.8h38.4c2.6 0 4.8-2.2 4.8-4.8v-24c0-2.7-2.2-4.8-4.8-4.8H24l-4.8-4.8z" fill="#1565c0"/><path fill="#478fcc" d="M32.1,0H8.6C7.2,0,5.8,1,5.8,2.3v43.1c0,1.4,1.4,2.6,2.8,2.6h31.3c1.3,0,2.3-1.2,2.3-2.6V9.6L32.1,0z"/><path d="M21.5 32.8h3.8v3.8h-3.8v-3.8M24 11.5c6.7.2 9.6 7 5.7 12.1-1 1.3-2.7 2.1-3.5 3.2-.8 1-.8 2.3-.8 3.5h-3.8c0-2.1 0-3.8.8-5.1s2.5-2 3.5-2.8c3-2.8 2.3-6.8-1.9-7.1a3.8 3.8 0 0 0-3.8 3.8h-3.7c0-4.3 3.5-7.6 7.5-7.6z" class="C"/><path d="M32.1,7.2c0,1.4,1,2.4,2.3,2.4h7.7L32.1,0V7.2z" class="B"/><defs ><path id="B" d="M32.1 1950H8.6c-1.4 0-2.8 1-2.8 2.3v43.1c0 1.4 1.4 2.6 2.8 2.6h31.3c1.3 0 2.3-1.2 2.3-2.6v-35.8l-10.1-9.6z"/><path id="C" d="M32.1 1957.2c0 1.4 1 2.4 2.3 2.4h7.7l-10-9.6v7.2z"/></defs></svg>                                                                                                                                                                           includes/File_manager/lib/themes/Material-Light/images/loading.svg                                  0000644                 00000005234 15266052701 0021174 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/themes/Material-Light/images/icons-small.svg                              0000644                 00000045471 15266052701 0022007 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="1966"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M8.4 1955.1l-1.7 5.8h.8l1.7-5.8h-.8zm-2.9.8l-1.7 2.1 1.7 2.1h.8l-1.7-2.1 1.7-2.1h-.8zm4.2 0l1.7 2.1-1.7 2.1h.8l1.7-2.1-1.7-2.1h-.8z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M6.9 1905v.8H5.2c-.1-.2-.4-.4-.7-.4-.4 0-.8.3-.8.8s.3.8.8.8c.3 0 .5-.1.7-.4h.9c-.5.5-.8 1.2-.8 1.9v.4h-.7v2.3h2.3v-2.3h-.8v-.4c0-.6.3-1.2.8-1.5v.4h2.3v-.4c.5.3.8.9.8 1.5v.4h-.9v2.3h2.3v-2.3h-.7v-.4c0-.7-.3-1.4-.8-1.9h.9c.1.2.4.4.7.4.4 0 .8-.3.8-.8s-.3-.8-.8-.8c-.3 0-.5.1-.7.4H9.1v-.8H6.9zm.7.7h.8v.8h-.8v-.8zm-2.3 3.8h.8v.8h-.8v-.8zm4.6 0h.8v.8h-.8v-.8z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M8 1853.7c-1 0-1.8.2-2.5.5-.3.1-.6.3-.8.5s-.3.4-.3.7v4.9c0 .3.1.5.3.7s.5.4.8.5c.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5s.3-.4.3-.7v-4.9c0-.3-.1-.5-.3-.7s-.5-.4-.8-.5c-.7-.3-1.5-.5-2.5-.5zm0 .4c.9 0 1.7.2 2.3.4.3.1.5.3.7.4.1.1.2.3.2.5s-.1.3-.2.5c-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5s.1-.3.2-.5c.2-.1.4-.3.7-.4.6-.2 1.4-.4 2.3-.4zm-3.2 2.1c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.8c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.8z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M8 1808.4h2.5v.8H8v-.8zm-1.6.6v.3h.3v-.3s.1 0 .2-.1c.3-.1.5-.6.2-.9 0 0-.1-.1-.2-.1s-.2-.1-.2-.1c-.1 0-.4-.1-.3-.3s.4-.1.5-.1h.2v-.1s.1-.1 0-.2-.1 0-.1 0h-.2v-.2h-.3v.2h-.1a.78.78 0 0 0-.4.4v.3l.2.2c.2.1.3.1.5.2.1 0 .2.1.1.2 0 .1-.2.1-.2.1h-.4c-.1 0-.1 0-.1-.1H6c0 .1 0 .1-.1.2 0 0-.1.1 0 .2h.2c.1.1.2.2.3.2zm4.9-4.7H4.5c-.4.1-.7.4-.7.8v5.3c0 .4 0 .8.2 1.1.3.3.6.3 1 .3h6.2c.3 0 .6-.1.7-.4.1-.2.1-.3.1-.5v-5.7c.2-.6-.2-.9-.7-.9zm0 6.6H4.7v-4.9c0-.1 0 0 0 0h6.6v4.9c0-.1 0 0 0 0z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M4.8 1758.8l-1 2.4 1.9-.1-.9-2.3zm5 0l-3.6 2.4 5.5.8-1.9-3.2zm2.3-3.4l-.5.7-1.7 2.5c0 .1-.1.1 0 .2l1.6 2.7c.1.1.2.3.3.4l.3-6.5zm-7.3 2.7c0 .1.1.1 0 0l1.6-.7c.2-.1.3-.3.4-.4l1.4-1.3.1-.1.5-1c-.2-.1-.4-.1-.6-.2h-.1l-1.4.8c-.2.1-.4.3-.6.5l-.9.9c-.1.1-.2.2-.2.3l-.6.9.4.3zm1.9-.4l-.8 3.3 3.6-2.4-2.8-.9zm2-1.8l1.1 2.6 2.1-3.1-3.2.5zm-2 1.6l2.8.9-1-2.5-1.8 1.6zm-.9 3l.7-2.8-1.5.8.8 2zm5.6-5.3l-.9-.3-1.3-.3h-.1l-.5.9v.1l2.8-.4zm-1.7-.7l2.4.7-.4-1.1-2 .4zm.7 7.5l-4.5-.6H4.1l6.3.6zm-6.5-1.6l.8-1.9v-.2l-.3-.4-.5 2.5c0 .1 0 .1 0 0zm5.3-6l1.4-.3h.1l-2 .2a.9.9 0 0 0 .5.1z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M8.7 1707.8c.6 0 1.1-.4 1.1-1v-1.9c0-.5-.4-.9-.9-1 0 0-.4-.1-.7-.1s-.6 0-.9.1c-.8.1-1 .4-1 1v.9h2v.4h-3c-.6 0-1.1.3-1.2.9-.2.7-.2 1.2 0 2 .1.6.5 1 1 1h.8v-1.1c0-.6.6-1.3 1.3-1.3l1.5.1zm-1.7-2.4c-.2 0-.3-.1-.3-.3s.2-.3.3-.3c.2 0 .3.1.3.3 0 .1-.1.3-.3.3zm5 1.4c-.1-.6-.5-1-1-1h-.8v1.1c0 .6-.6 1.3-1.3 1.3H7.3c-.6 0-1.1.4-1.1 1v1.9c0 .5.4.9.9 1a3.55 3.55 0 0 0 .7.1c.3 0 .6 0 .9-.1.8-.1 1-.4 1-1v-.9h-2v-.4h3c.6 0 1.1-.3 1.2-.9.3-.8.3-1.3.1-2.1zm-3 3.8c.2 0 .3.1.3.3s-.2.3-.3.3c-.2 0-.3-.1-.3-.3 0-.1.1-.3.3-.3z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M6.6 1659.5c0-.3-.1-.5-.4-.6-.1 0-.2-.1-.3-.2s-.2-.1-.4-.1c-.1 0-.2 0-.2.1-.1.1 0 .1 0 .2s.1.1.2.2l.3.3c.1.1.2.2.1.4 0 .3-.2.6-.4.8h-.1a.76.76 0 0 1-.4-.2c-.1-.1-.1-.3.1-.3 0 0 .1 0 .1-.1.1-.1.1-.2.1-.3s-.1-.1-.1-.1l-.6-.5c-.5-.4-.7-.9-.8-1.5-.1-.7.1-1.3.5-1.9.1-.2.3-.4.5-.5s.3-.1.5-.2c.5-.1 1-.2 1.4-.1s.8.3.9.7c.1.3.1.6.1.9-.1.6-.5 1.1-1 1.2-.3.1-.4 0-.5-.2-.1-.1-.2-.3-.3-.4v-.2c0 .3.1.5.2.7.1.1.2.2.3.2.5.1 1-.1 1.3-.6.4-.5.4-1 .3-1.6l-.1-.3c0-.1 0-.1.1-.1h.1c.4-.1.9-.1 1.3-.1.5.1 1 .2 1.4.5.7.4 1.1 1.1 1.3 1.8v.3c0 .1-.1.1-.1.1l-.2-.2c-.1-.1-.1-.1-.1-.2s-.1 0-.1 0v.1c-.1.4-.3.8-.6 1.1 0 .1-.1.1-.1.2v.5l.1 1c0 .2 0 .3-.2.4-.1.1-.3.1-.4.1h-.7c0-.3 0-.5-.2-.6.1-.2.1-.4.1-.5s0-.3-.1-.4-.2-.1-.3-.1c-.3.2-.7.2-1 .1-.2-.1-.3 0-.4.1-.1.2-.1.3-.1.5s.1.4.1.7c0 .1 0 .2-.1.2-.3.1-.6.1-.9.1 0-.3 0-.5-.3-.6.1-.2.1-.5.1-.8zm-1.7-.9s.1-.1.1-.2a.76.76 0 0 0-.2-.4h-.2c-.1.1-.2.3-.3.4 0 0 0 .1-.1.1-.1.1 0 .1.1.2h.2c.1 0 .3 0 .4-.1zm0-1.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2.1.2.2.2.2-.1.2-.2z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M11.1 1609.7v.3c0 .4.1.4.1.9 0 .2-.1.4-.2.7 0 .1 0 .2-.1.3l.6.1c0-.2 0-.3-.1-.6s0-.4 0-.7c0-.4.3-.4.1-.9-.1-.2 0-.2 0-.7-.1-.6 0-1.7.2-1.6.2 0 .2.4.2.6.1.4-.2.6-.2.7s.1.2.2.1.2-.2.3-.4c.1-.4.1-.6.1-1 0-.2 0-.3-.2-.5-.4-.4-.6-.7-.8-1.2l-.3-.3c-.3-.2-.3-.7-.6-1s-.6-.4-.9-.4-1 .3-1.3.5-.2.6-.9.9c-.3.1-.8.5-.9 1.2-.2.1-.3-.1-.3-.2.1-.3.3-.6.3-1-.1-.5-.3-.9-.6-1.1-.3-.1-.5-.1-.6.1-.5.4-1-.1-1.2.6 0 .4.7.1.7.5-.1.4-.3.2-.2 1.5 0 .3.3.5.5.8.3.3.8.7 1.3.5.3-.1.4.1.3.3-.1.4 0 .6 0 1 0 .2.1.3.1.9.1.4-.1.8-.3 1.1h.4c.1-.3.1-.4.1-.8.1-.3.2-.3.2-.7 0-.7.3-.7.3-1.1 0-.3.1-.4.3-.4.3 0 .3.1.2.4 0 .4-.1.4-.2.6 0 .2 0 .5.1.6a1.38 1.38 0 0 0 .4.3c.1.1.4.3.4.6-.1.5-.6.4-.5.6h.7c.1-.1.1-.2.2-.2s.1.1.2.2h.3c.1-.1.1-.3.1-.3-.1-.3-.4-.3-.3-.6s.2-.3.3-.5c.1-.3.3-.3.3-.4 0-.3 0-.6.1-.9 0-.3.1-.4.3-.6s.2-.3.3-.1c.1.4.4.9.5 1.3zm-2.7.1l.2-.2c.1-.1.1-.1.2-.3.1-.3.2-.2.3-.6 0 0 .1-.3.1-.2.1 0 .1 0 .1.3l.1.8v.2c0 .3-.2.5-.3.7s-.2.3-.5-.1c-.3-.2-.4-.4-.2-.6z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M4.6 1555.4c-.4 0-.8.3-.8.7v3.7c0 .4.3.7.8.7h6.8c.4 0 .8-.3.8-.7v-3.7c0-.4-.3-.7-.8-.7H4.6zm0 .5h6.8c.1 0 .2.1.2.2v3.7c0 .1-.1.2-.2.2H4.6c-.1 0-.2-.1-.2-.2v-3.8s0-.1.2-.1zm.5.8v2.6h.8v-1.7l.8 1 .8-1v1.7h.8v-2.6h-.9l-.8 1.1-.8-1.1c.1 0-.7 0-.7 0zm4.5 0v1.3h-.8l1.2 1.3 1.2-1.3h-.8v-1.3h-.8z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M6.5 1512.1c-1-.3-1.5-.9-1.5-2v-.8c0-.6-.3-.9-.8-.9v-.9c.5 0 .7-.3.8-.8v-.9c0-.5.1-.9.4-1.3.2-.3.6-.6 1.1-.7l.2.7c-.2.1-.4.2-.5.4s-.2.5-.2.8v.9c0 .6-.3 1.1-.8 1.3.5.3.8.7.8 1.4v.9c0 .7.2 1.1.7 1.2l-.2.7zm1.2.1l-.6-.3.2-.3a1.93 1.93 0 0 0 .3-1v-1h1v.8c0 .3-.1.6-.2 1-.2.3-.4.6-.7.8zm-.4-5.7c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.3-.2.5-.3.2-.5.2-.4-.1-.5-.2-.2-.3-.2-.5zm2 5c.4-.2.7-.6.7-1.2v-.9c0-.6.3-1.1.8-1.3-.5-.2-.8-.7-.8-1.4v-.9c0-.7-.2-1.1-.7-1.2l.2-.7c.5.1.9.4 1.1.7.3.3.4.7.4 1.3v.9c0 .6.3.8.8.8v.9c-.5 0-.8.3-.8.9v.9c0 1-.5 1.6-1.5 1.9l-.2-.7z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M11.7 1453.8H4.3c-.3 0-.5.3-.5.5v7.3c0 .3.3.5.5.5h7.3c.3 0 .5-.3.5-.5v-7.3c.1-.2-.2-.5-.4-.5zm-3.3 6.4c0 .8-.5 1.2-1.2 1.2a1.51 1.51 0 0 1-1.3-.8l.6-.4c.1.2.3.4.6.4s.4-.1.4-.5v-2.5h.8l.1 2.6zm1.8 1.2c-.7 0-1.1-.4-1.3-.8l.6-.4c.1.3.3.5.7.5.3 0 .5-.1.5-.4s-.1-.4-.5-.5l-.2-.1c-.6-.2-.9-.5-.9-1.2 0-.6.4-1 1.1-1 .5 0 .9.2 1.1.6l-.6.4a.55.55 0 0 0-.5-.3c-.2 0-.4.1-.4.3s.1.3.5.5l.2.1c.6.3 1 .6 1 1.2-.1.7-.6 1.1-1.3 1.1z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M8.5 1403.8c.4 1-1.6 1.7-1.8 2.6-.2.8 1.3 1.7 1.3 1.7-.2-.3-.4-.6-.6-1.2-.5-.8 2.2-1.5 1.1-3.1zm1.4 1.5s-1.8.1-2 1.3c0 .5.5.8.5 1.2 0 .3-.3.6-.3.6s.6-.1.8-.6-.4-.9-.3-1.3 1.3-1.2 1.3-1.2zm.5 2.7c-.2 0-.4 0-.6.2.4-.1.7.1.7.4 0 .6-.9 1.2-.9 1.2s1.4-.2 1.4-1.2a.65.65 0 0 0-.6-.6zm-3.4 0s-1.7 0-1.7.4 2.2.5 3.8.2l.5-.4c-1 .2-3.4.3-3.4 0 .1 0 .8-.2.8-.2zm-.4 1c-.3 0-.6.2-.6.4 0 .4 2 .7 3.4.1l-.5-.3c-1 .3-2.9.2-2.3-.2zm.2.8c-.4 0-.6.2-.6.4 0 .5 2.1.6 3 0l-.5-.3c-.6.3-2.2.3-1.9-.1zm-1.1.5c-.6 0-1 .3-1 .5 0 1.2 5.9 1.1 5.9-.1 0-.2-.2-.3-.3-.3.5 1.1-4.8 1-4.8.4 0-.1.4-.3.7-.2l-.3-.1c-.1-.2-.1-.2-.2-.2zm5.6.8c-.9.9-3.2 1.2-5.5.6 2.3.9 5.5.4 5.5-.6z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M11.7 1353.8H4.3l.8 7.5 2.9.9 2.9-.9.8-7.5zm-1.7 2.6H6.8l.1.9h3l-.2 2.7-1.7.5-1.7-.6-.1-1.1h.9v.4l1 .2.9-.2.1-1.1H6.2l-.2-2.6h4.1l-.1.9z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M4.3 1303.9l.8 7.5 2.9.8 2.9-.8.8-7.5c0-.1-7.4 0-7.4 0zm5.6 3.4l-.1 2.6-1.8.6-1.8-.6-.1-1.3H7v.6l.9.3 1-.3.1-1H7v-.9h2.1v-.9H6l-.1-.8H10l-.1 1.7z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M11.7 1256l-1.8 1c-.3-.4-.7-.7-1.1-.9-.4-.1-.9-.1-1.4.1-1 .4-1.4 1.3-1.3 2.2s.7 1.6 1.7 1.8 1.8-.3 2.2-1c.3.1.6.3.9.5s.6.3.9.5c-1.2 2-3.4 2.5-5 1.8-1.8-.7-2.8-2.4-2.7-4.1.1-2.1 1.7-3.5 3.2-3.8 2.1-.5 3.8.7 4.4 1.9z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><g class="C"><use xlink:href="#D"/><use xlink:href="#D" x="-6"/><path d="M9.1 1204.7l.4-.7v-.1h-.1l-.4.7c-.3-.1-.6-.2-1-.2s-.7.1-1 .2l-.4-.7h-.1s-.1.1 0 .1l.4.7c-.7.4-1.2 1.1-1.2 1.8h4.6c0-.7-.5-1.4-1.2-1.8zm-2.2 1c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm2.1 0c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm-3.3 1v3.3c0 .3.2.6.6.6h.4v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.7v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.4c.3 0 .6-.2.6-.6v-3.3H5.7z"/></g><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M4.5 1162.3v-1.6c.6 0 1.1-.3 1.5-.7.3-.3.6-.7.7-1.1.3-.5.4-1 .6-1.5a3.79 3.79 0 0 1 .6-1.3c.3-.6.7-1 1.3-1.4.3-.2.6-.4.9-.4.3-.1.6-.1.9-.1h.4v1.6h-.1c-.4 0-.8.1-1.1.3-.2.2-.4.3-.6.6-.2.2-.3.4-.4.7h1.4v1.7h-2c-.1 0-.1 0-.1.1-.2.6-.5 1.1-.9 1.6a4.59 4.59 0 0 1-2.8 1.7c-.1 0-.3 0-.4.1l.1-.3z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M5.2 1108.9v1.9H3.8v-5.5H6c.4 0 .8.1 1.1.2s.6.4.8.7a1.69 1.69 0 0 1 .3 1c0 .5-.2 1-.6 1.3s-.9.5-1.6.5c0-.1-.8-.1-.8-.1zm0-1H6c.3 0 .4-.1.6-.2.1-.1.2-.3.2-.6s-.1-.5-.2-.6c-.1-.2-.3-.2-.6-.2h-.8v1.6zm5.7 1.7c0-.1-.1-.2-.2-.3s-.3-.1-.6-.2l-.8-.3c-.2-.1-.4-.3-.5-.4s-.2-.3-.2-.5c0-.4.2-.7.5-.9.3-.3.7-.4 1.2-.4s1 .1 1.3.4.5.6.5 1h-1.3a.47.47 0 0 0-.5-.5c-.1 0-.3 0-.3.1-.1.1-.1.2-.1.3s.1.2.2.3.3.1.5.2l.6.2c.6.2.9.6.9 1.1 0 .4-.2.7-.5.9-.3.3-.8.4-1.3.4-.4 0-.7-.1-.9-.2-.3-.1-.5-.3-.6-.5-.2-.2-.2-.4-.2-.7h1.2c0 .2.1.3.2.4s.3.1.5.1.3 0 .4-.1c-.1-.2 0-.3 0-.4z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M8.2 1060.2H5.8l-.5 1.4H3.8l2.5-6.7h1.3l2.5 6.7H8.7l-.5-1.4zm-2.1-1.1h1.7l-.8-2.5-.9 2.5zm4.6-3.8c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.4-.2.5-.3.2-.5.2-.4-.1-.5-.2c-.2-.1-.2-.3-.2-.5zm1.4 6.3h-1.3v-5h1.3v5z" class="C"/><path fill="#fbc02d" d="M0 1000.1h16v3.6H0v-3.6m.9 4.4h14.2v11.6H.9v-11.6m4.9 2.7c-.2 0-.4.2-.4.4v1.3h5.3v-1.3c0-.2-.2-.4-.4-.4H5.8z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M3.8 956v.8h4.4v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm8.1-6.6H9.4c-.1 0-.3.1-.3.3v1.9c0 .2.1.3.3.3h2.5c.1 0 .3-.1.3-.3v-1.9c0-.2-.2-.3-.3-.3m-2.2 1.9l.5-.6.3.4.5-.6.6.8H9.7zm-5.9-1.9v.8h4.4v-.8H3.8z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M3.8 911.1h8.3v-5.9H3.8v5.9zm5.4-4.5h2.1v.6H9.2v-.6zm0 1.2h2.1v.6H9.2v-.6zm0 1.2h1.2v.6H9.2v-.6zm-2.7-2.7v1.8h1.8a1.79 1.79 0 0 1-1.8 1.8 1.79 1.79 0 1 1 0-3.6z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M11.2 854.9H3.8v6.5h8.3v-6.5h-.9zm-6.4.9h1.9v.9H4.8v-.9zm0 1.8h1.9v.9H4.8c0 .1 0-.9 0-.9zm0 1.9h1.9v.9H4.8v-.9zm6.4.9H7.5v-.9h3.7v.9zm0-1.8H7.5v-.9h3.7v.9zm0-1.9H7.5v-.9h3.7v.9z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M8 803.9a4.23 4.23 0 0 0-4.2 4.2c0 .3 0 .6.1.9.4-.1.8-.2 1.1-.2.6 0 1.2.1 1.8.4.7-.5 1.6-.8 2.5-.8.6 0 1.2.1 1.7.3v.1c0 .1 0 .1-.1.1h-.4c-1.5 0-2.8.5-3.6 1.6v.1c-.8-.7-1.8-1-2.9-1 .6 1.6 2.1 2.8 3.9 2.8a4.23 4.23 0 0 0 4.2-4.2c.1-2.4-1.8-4.3-4.1-4.3zm3.3 2.5h-.2c-.8-.1-1.6.2-2.2.8h-.1c-.4-.5-1-.7-1.7-.7h-.7c.4-.2.9-.3 1.4-.3a1.69 1.69 0 0 1 1 .3c.4-.3 1-.4 1.5-.3.4-.1.7 0 1 .2-.1-.1 0-.1 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M12.2 755.2c0-.2-.1-.3-.3-.4H8.8v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-.8h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.5h.1zM7 759.4c-.2.1-.4 0-.6 0l-.4-1.9-.4 1.8h-.5l-.5-2.5h.5l.3 1.8.4-1.9h.5l.4 1.9.3-2h.6l-.6 2.8zm4.9 1.7H8.7v-.8h2.5v-.3H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.3h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.7h3.1v6.1z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M12.2 705.3c0-.2-.1-.4-.4-.4h-3v-.9h-.6l-4.4.8v6.6l4.3.8h.6v-.9h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.3h.1zm-5.6 3.1c-.2.1-.5.1-.7.1v1.1h-.6v-3c.5 0 1.1-.2 1.6.2.4.4.3 1.3-.3 1.6zm5.3 2.5H8.7v-.8H11v-.4H8.7v-.5H11v-.2H8.7v-.6c.4.1.8.1 1.1-.1a1.1 1.1 0 0 0 .6-1H9.2V706l-.5.1v-.9h3.1v5.7h.1zm-1.2-3.8c0-.7-.6-1.2-1.2-1.2v1.2h1.2zm-4.8-.1v1c.2 0 .4 0 .5-.2s.1-.4 0-.6-.3-.2-.5-.2z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M12.2 655.3v-.2c0-.2-.1-.2-.2-.3H8.8v-.8H8l-2.4.4-1.6.3h-.1v6.6l2.6.4 1.7.3h.6v-.9H12c.1 0 .2-.1.2-.2v-5.6zm-5.5 4.3c-.1 0-.1-.1 0 0l-.5-1.2s0 .1-.1.1l-.4.9H5v-.1l.6-1.3v-.1l-.6-1.3v-.1h.6l.4 1.1.4-1.1c0-.1 0-.1.1-.1h.6c-.1.2-.2.3-.2.5l-.5 1v.2l.7 1.4v.1h-.4zm5.2 1.4H8.8v-.6h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.6h3.1v6.3zm-.7-5.4H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0-3.1H9.9v.7h1.3v-.7zm-1.3 2.7h1.3v-.7H9.9v.7z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M12.2 605.8c0-.4-.3-.7-.7-.8-.9-.3-1.8-.3-2.7-.2v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-1c.9.1 1.9.1 2.7-.2.3-.1.7-.4.7-.8l.1-4.4zm-5.5 3.8l-.2-.7h-.9l-.2.7h-.6l.8-3h.7l.9 3.2-.5-.2zm2.1-4.5c.8-.1 1.7-.1 2.5.1.2.1.5.2.6.5 0 .2-.3.3-.4.4-.9.3-1.8.3-2.7.2v-1.2zm0 3c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2zm3.1 2.3c-.3.3-.7.3-1.1.4-.7.1-1.4.1-2 0v-1.2c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2zm0-3c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2c.6.1 1.3.1 1.9 0 .4-.1.9-.2 1.2-.4v1.2zm-6.1 1h.6l-.3-1.4-.3 1.4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M11.5 554.7v6.8l-2.5.8-4.5-1.6 4.5.5v-5.9l-2.9.7v4l-1.6.7v-5.1l4.5-1.7 2.5.8z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M8.1 504.9c0 .5-.1 1.2-.2 1.7v.1c.3.7.7 1.3 1.2 1.7.1.1.3.2.4.3h.2c.5-.1 1-.1 1.5-.1.2 0 .4 0 .7.1.2.1.3.2.3.4v.3c-.1.3-.2.4-.5.4-.4 0-.8-.1-1.1-.2l-1-.4c-.1 0-.2-.1-.2-.1-1 .1-1.9.4-2.8.7 0 0-.1 0-.1.1l-.8 1.2a2.36 2.36 0 0 1-.9.8.45.45 0 0 1-.5 0c-.1 0-.1-.1-.2-.1-.2-.1-.2-.2-.2-.4.1-.2.2-.4.4-.5.4-.4.8-.7 1.2-.9h.1c.2-.1.4-.2.5-.4l.7-1.4.6-1.3v-.2l-.3-1.7c0-.3 0-.5.1-.8.1-.2.2-.2.3-.3h.3c.2 0 .2.1.3.2.1.3 0 .6 0 .8zm-1.4 4.7c.7-.3 1.4-.4 2.2-.6l-.7-.7a3.04 3.04 0 0 1-.5-.7l-1 2zm1-3.7l.1-.1c.1-.3.1-.7.1-1 0-.1-.1-.2-.1-.4 0-.1-.1-.1-.1-.1 0 .1-.1.1-.1.1-.1.4 0 .8 0 1.1 0 .2 0 .3.1.4zm2.7 3.3l.9.4h.5c.1 0 .1-.1.1-.2-.1-.1-.2-.1-.2-.1-.2-.1-.5-.1-.7-.1h-.6zm-4.9 1.3c-.4.4-.9.8-1.1 1.3.5-.3.8-.8 1.1-1.3z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M3.8 454.4v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h6.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M3.8 404.4v7.5h8.3v-7.5H3.8zm1.5 6.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm0-1.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm6.4 5.5h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9zm0-1.9h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M11.4 354h-.2l-4.2.6c-.4.1-.7.4-.7.9v3.8c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8 0 .7.7 1.2 1.7 1 .9-.2 1.7-1 1.7-1.8v-3.7l4.2-.6v2.4c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8s.7 1.2 1.7 1c.9-.2 1.7-1 1.7-1.8v-4.6c.1-.4-.3-.8-.7-.8z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M4.7 304.8c-.5 0-.8.4-.8.8v5c0 .5.4.8.8.8h6.7c.5 0 .8-.4.8-.8v-4.9c0-.5-.4-.8-.8-.8-.1-.1-6.7-.1-6.7-.1zm0 .8h6.7v5H4.7v-5zm5.2.8a.65.65 0 0 0-.6.6c0 .4.3.6.6.6.4 0 .6-.3.6-.6a.65.65 0 0 0-.6-.6zm-3.6.9l-.8.8v1.7h5v-.7l-1.7-1-.8.4-1.7-1.2z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M3.8 254.5v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><g class="C"><path d="M5.7 207.7H5V205l-.8.3v-.6l1.4-.5h.1v3.5z"/><use xlink:href="#E"/><path d="M12 206.2c0 .5-.1.9-.3 1.1s-.5.4-.9.4-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/><use xlink:href="#E" x="-2.8" y="4.8"/><use xlink:href="#E" y="4.8"/><path d="M11.3 212.4h-.7v-2.7l-.8.3v-.6l1.4-.5h.1v3.5z"/></g><path d="M15.2 155v7.8c-.2.5-.4.7-.8.7H4.3c-.5 0-.8-.3-.8-.8v-11.8c0-.5.3-.8.8-.8h5.1v4.4c.1.4.4.6.8.6H15l.2-.1zm-12.5-2.4v11c0 .4.1.6.4.8.1.1.3.1.4.1h9v.9c0 .3-.3.6-.6.7h-.3l-10.1.1c-.4 0-.7-.2-.8-.6-.1-.1-.1-.2-.1-.3v-11.9c0-.5.3-.8.8-.8h1.3zm7.3-2.5l5.2 4.5h-4.4c-.5 0-.8-.3-.8-.8v-3.7zm2.8-35.7H1.5c-.8 0-1.5-.7-1.5-1.6v-9.6c0-.9.7-1.6 1.5-1.6H6l1.5 1.6h5.3c.8 0 1.5.7 1.5 1.6H1.5v8l1.6-6.4H16l-1.7 6.8c-.2.7-.8 1.2-1.5 1.2zM6.4 51.6H1.6A1.58 1.58 0 0 0 0 53.2v9.6a1.58 1.58 0 0 0 1.6 1.6h12.8a1.58 1.58 0 0 0 1.6-1.6v-8a1.58 1.58 0 0 0-1.6-1.6H8l-1.6-1.6z" fill="#1565c0"/><path fill="#478fcc" d="M10.7 0H2.9c-.5 0-1 .3-1 .8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-12L10.7 0z"/><path d="M7.2 10.9h1.3v1.3H7.2v-1.3M8 3.8c2.2.1 3.2 2.3 1.9 4-.3.5-.9.8-1.2 1.1s-.3.8-.3 1.2H7.2c0-.7 0-1.3.3-1.7.2-.4.8-.7 1.1-.9 1-.9.8-2.3-.6-2.4-.7 0-1.3.6-1.3 1.3H5.5c0-1.5 1.2-2.6 2.5-2.6z" class="C"/><path d="M10.7 2.4c0 .5.3.8.8.8H14L10.7 0v2.4z" class="B"/><defs ><path id="B" d="M10.7 1950H2.9c-.5 0-.9.3-.9.8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-11.9l-3.4-3.3z"/><path id="C" d="M10.7 1952.4c0 .5.3.8.8.8H14l-3.3-3.2v2.4z"/><path id="D" d="M11.5 1207.2a.47.47 0 0 0-.5-.5.47.47 0 0 0-.5.5v2.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-2.1z"/><path id="E" d="M9.2 206.2c0 .5-.1.9-.3 1.1-.2.3-.5.4-.9.4s-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/></defs></svg>                                                                                                                                                                                                       includes/File_manager/lib/themes/Material-Light/css/theme.css                                       0000644                 00000134313 15266052701 0020176 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder-Material-Theme (Light) v2.1.10 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 RÃ³bert KelÄ�Ã¡k {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  -webkit-background-size: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #1E88E5;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #fff;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #fff;
}
.elfinder .elfinder-button-text {
  top: -3px;
  margin-left: 6px;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(16, 96, 167, 0.79);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #f3f3f3;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #1d1d1d;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #525252;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #1976D2;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #1a83df;
  color: #fff;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #1E88E5;
  color: #fff !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #fff;
}
.elfinder-cwd-file {
  color: #555;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #42A5F5;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #339ef4;
  color: #555;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #42A5F5;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #4d4d4d;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #1976D2;
  color: #fff;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #1669bb;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #176ec4;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #2196F3;
  background-color: rgba(33, 138, 232, 0.5);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #eee;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #42A5F5;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #339ef4;
  color: #555;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #2196F3;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #fff;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #1565C0;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/themes/Material-Gray/icons/material.eot                                   0000644                 00000060204 15266052701 0021044 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       „`  Ü_                �    LP                       ãŠfž                   m a t e r i a l    R e g u l a r    V e r s i o n   1 . 0    m a t e r i a l          €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/themes/Material-Gray/icons/material.woff2                                 0000644                 00000027104 15266052701 0021302 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOF2     .D     _Ü  -ç                       TV �  	–p
�„T÷<�> 6$‚x …M‡<�~W5ÊîC)·ªHeXE°qP ö¤/gÿÿ÷ä†ÈÀ?Pçöª XF–ÝXTaPXáº¾9âzÞ‹7Žû¾Œ÷]¾»0PQíÂáÄÍ®Ôò»Õñõî$ãm‹ž¤Å�ÄƒÆÏ3æZñ8Ü‘_…­ …SM	+°Yd	Ö-Ÿ)¬|*<ŠR<¤º�åè¢±óEŽÐØ'¹À¸¼5‰?)¶…pî«—4iR¢?Ð?HP·$áÈ¸qjÕé•gôÁó¹éªŠóUž¹ÂÚJÕ¸�³µ“&?PP�´'¼:‚àp÷-ŒBZ¶6îE!oË0L¬Á63Ù<Ù™Ê‰éoóÐvâ¾ðµÊï™*=UàÈ Í­m¤úÊF›cwã	,‰	Gº n7b,é6†Ø�ÖàýÙ�˜ØøíÏáûìÍÿR­|ï›þÝ ÝÎç3ÉU<Ê±X<n‚…ÌŒÃ�O™µA®0W¤x3Ùüþw.?tÇÂUŽr¤ö¦€üØ¦Dé%¿#¡æ$¹nVÍþµýÏŠR�4s¹_,‹ØÍ*	š<+jŠ’“®š,nÖ\íR&)d�Û9¡^Õñ�:ßô$Ë±ŒB†í$ÁÇ8þ­ãÁ¼·½y»¥5M
÷„y€–ÑØM‰7~f'rÖA>Ø–Z¯r–Ýû.éž‘‚øþóÐ0`[6o•ö •+}4yŽ*¿Cþ… lGÀß«Z¶ï’^.uIŽpHrÑÈç«òãƒàá€ä'(Ê ¨ÝaÐŽEJ²!ê¤Mº‰bªœ2Dm vwÆ¢.i³t!vç.Ä0½‹ÒE›òºÞã¢mÜ»­Lü»ã×Öüy G�ja@JÇ1û;ÎhÒ …ý´ßê]¯Ê�B£ A)/þ^‚�±‰š´Ø+‡nB $ÍÛ%‹	å6{c¼ì|)›p@ÝáÄ�Mñ|è“”(
 ›t{L*Ö¢¼âþÿÙ÷>ðe9
é$O‡³Ò„ÿÃS�:Ël]ó¯ÏbN)4áþ`™d3ºHžàð_VùˆRíåïýãùù"nYú™üWïÅÍßÿ_Ëã„"±D*“+”*-:uéVkëÑ«O¿ƒ†1jÌ¸	“¦L›1kÎ¼‹–,[±jÍº›¶lÛ±kÏ¾@(K¤2¹B©Rk´:B3zƒÑd¶Xmv‡�O<Žoà‰…@Â×‚!ˆ0D"
ƒˆC$ ’)ˆ4D"‘ƒÈC Š%ˆ2D¢
Qƒ¨C4 š-ˆ6D¢ÑƒèC F F!Æ Æ!& &!¦ ¦!f f!æ æ! !– –!V V!Ö Ö!6 6!¶ ¶!v v!ö ö! !Ž Ž!N N!Î Î!. .!® ®!n n!î î! !†OÏ/¯oïŸpðUn¡ÜCy„òl¬œz¼�Ô&‘i|÷âÛ <ùG¬ŸÐýô\¾s¼ˆ3äO©é¿�,_Ç:2"¤!GÚŽ¢³`9³”Àü-Töq�]¶ãöõ'/*&¿ƒ÷/½p?p}w×‹€‚áfÒ„ã±zBÞð<Ÿ'‚ß.Ì�?Ò>‹	ïGs‡WaUÄ`ò†Â—’{?%_KhA¥i"„æiòâèò%‘@QZ*¨¨`Rtí€Œ5Lßå7²èä’³ˆl»û5ïe~¸¢²W>¾4éuð^ìý7^q3 µUÂ7Õ áÞ€d¸šÁ¼‚ÈáDYÏˆ5Ú¢Îµc€ºŽÿ©è‹fpg?†üLlÂ�YfµnW^=ã¿[¸æòTƒ±<TaÂ%“š“‚ý.µÏ"†TSSýi	hÓþÑ4‚�ÆfýàÅ¨„]ážEö¿U,ch�ÉÇ´òV� GM´L ¦ìðàŸŠ¾æ¡êŸç0"ÒâGP¿OÞú¢Ú&¬—Óéw-K†^ù'oÒ´(¢s’è�–¬S(*ÇÄÃ`*R]	oPä¡8)èhÇãUœËhÒÎE¿Ä†))ÏÊ�;0dÏäL1MGx»-PhCA²;ˆ8¾í\`®D&o=qh¬/M_(J‡¸üêwº™G1‡.*ùhäß{æz°,Q(ö,+‰´°„ì@'VÐ…5tcjl �-ô`ÏêÅžÑÞ	Ô‡zQ?` KÄaÃXÃvaÃÆ±Wš NT	&«"ÓuózÍoÂLNHÔÏÍ8éœÌ-§ô`uQÓ�š©éZFB›šáÿÆâÄéœâxs`ú,Gš_/Í÷úÈæßÏE¨˜hî6GiýâéççøLÊ\lv-€ô}´È‘$ê´ˆjíÄr	OPdåRï2ŠŒZ¨„C†dvøQþèÕVüÈ˜;r³ð°Ãqy×r¤E¥“’ïO�{Ó<+ÀI^ê³Ú�ª|‘JÙø§™ìÝåÊÏbk†Š-æÁi·Kä!B¡]sŽŠK„G3â>’q¢t˜&R¾¤“á<j—†äVRÈ…”i—ŒÒ²£T§´p®WÀ4Ë#ßm­inˆáPÙhtí€¼/õWM;Z`-L‹PVÛø-=9¸¬hÅåµhCt¢øJé¼ÊÍÉ<û
'*&‰§5»Ó®³ÙÕ˜�š*­:)\d—o>*œVïxt»‡£ØÂÎ+ŽYÝkŸ¸CU¦b½w·fû•^¶Ø!l^|ë»àŠWèÞW=÷'TRÎ-¯‡ã¨Xqª,µ¯\ØTù#Jœ OT•?Ø/¶9£�þKôŠG»NMÊMOôÀÈTg%ô�2">v|”…¤¼ÁpÑ±QÍLs`	jK¹ðBþêœŸîÄ%ÍE^8Ûç²ƒóÑjº<TñÈ¼Ø—Eò ã.÷8è
3uDAh{Iˆ:$¢ �L/qQ�ÁQÐˆ¦^â£ƒ%¢ l½$B;GDA'¸z‰‡nžˆ‚^¤ôû¼f1GiÞ¨@D’)Z 9È)"„$¨Aâ-P ¯Œ `+ØkN�á^�Oôµ?z_LVEZ·«Î'¿ÈíŸ¿\I›"ø¹37ž"-ôç¥M'õ¿È„ÅaùÿÚ‹ÿ3ù¦Y¯Â¥a%Aj�ºÀyÎÀƒN]/RRÛØd°b¼¥1ƒÃËƒ*ñíEã^�Ö,«‹év?æÜ’Ò'£A•+3{ÈØÄ²ûæGÌ‰k,å»Ì2AX˜M�/î›$Ÿî˜“•1m§–®¢9¦öƒ7ŸÛš ˜Ðèª[ ”6Ëõ¥âkõØ§U�^B�mó,wéEæ–›ÔË³ƒ)içscM™ù’îçëOk4µª…1ú�2mü·ªŠ˜úÜfeÂ)�ÚÜ
Ìt<²{L9œ;Šk§Ï 2°àé˜£BºÖxÒ¶*k	J7g;HèÖlÒ°…•‹8©(¼�äŽ8xPø,f£ªÿ ŽÒ¤sôßM£* Gè¿L¡¾f(�Lbeep r‹¥­©õË‹á¡ö ïa;Tæa®$ƒë>8�ÔitõH-P�wÐ´M$ÅÊÑ™ªÅÌmÔI«j}Ð:“ò¿U:åïÛ¿[VŠ?žþ¦ŒþúÅ2oˆ5¾XÂU|‰Çøô…_Ç{Ê?ú_Í>•~¨q]Hb�•tÁú	ï”äse' �¢ð(,­–Èett§ª§ýÖøeÆÝÁ—{Õ:�ØÞÁ“Á�MU§ÚUmf˜Óé9åîæ±ãd¹Þ[WÙÔRÙ½×òúDwuOö0"•oË`•lÌ0ØªrÿqÝ«+([“§EFbFðæ¹(Ç±û„ƒ(h¹‡ÕK{¸È€Û *-”qBóÌH¢„Þ=yx<Ô‡H¡D…†�†Àè€s;8"1CáˆT5ßTÈÿÿëùÜÌ«ŒåÒ-8§…Uó§VÝhå½«&>aJÉŸªAæ¢R0ÿNqABF4éŒŒ)�–L©ª#.s%¼sÊ+$/‹Y¯²Ma÷¡8ôp„1eyzýÄ9szOjwr3×¬$±ÝPN1R4‡²ò}»*´3p1f•‰r7Á8Â„è÷kg½«µ†À>PûA¨åXœµ>Vå›ùî&W’&¬‡ ¬îu¯4)xmK6'h‚²OER\Óu@E¹!€Ø§,¤~x¾Q•RÙUÏ…r„U5;X^œ!Ð–1ÿ$ÚA7|Uþ
°f<rþ#4û�ä¶‹ô^Êœ©ikISÊ]²lï`Ô¾­S$TÐ†ÜÂÿô„2ø#]Çg`°°�7v$ÀÒµ~wÍ5Og¯¶
$¾@Èikˆ:KZrÎBmð‡Ç�¡%ŸÂãge‘W‹`þë$·¶)©º®“¨â)>>ÀÅ’í|Ñyü?ŸÀÜ¾|oo~˜?žçEÒì‹¥í�r·´?.r@Í|ü®{ÿGVÏ†nÐãÎÈô�îul&Þ6¶mfMw5¦øú2\í+×iC$5ªv)¤ž 'Ë}JÐ�)\�‘é…~ ÀLo»…ÞíÌæî«•<Ðr£7ûd^_…$¨VoJ”MÎ B)˜î˜aT�>ÝSˆGœ:G=9Âßjdôj:/Ñ$MÚ8]ãv-ä1W&ÿ¬—áj¦!œ›j}‡>g“è“©¬9uå´½zP”x=a¢¶xS}µÖ}0ŽŽÀ®Oiª &Æ¹ÙK`µÍÐö–ëý˜Mà	ß ypTe5ö*v€šPôûLœö.øáùêÞ  M¤PÑ¬ò¥àÉÙ~Ã¿“„äÍªNrU-dIž¨Ø)¦ ¢cË%Ã�ÞÍghÏ2
;žêÉØÌ&nZÈˆ„D%8R{Â'Ñ°àØ¯˜éÆ,÷Š«0[O\}ò(ºZ|g‘šrGwi·+7ùùžþ8�v­ð°û/@á›Z]u~PÙ›«(}­ÝßB%áÃª¾<¢Ý}?9Ä[J\¨oÅç²Vñ­b„D$€è�×3bù£þ$JEãëÞV[0S6›–MµbìO1•­•ÛÝ1iÂ‚½(Ì@Ù
Þï“¨)7‡žUï`ƒ¹»˜à»F®ù­ä*‹�Ž<”e…ÝNôrñòŸö°!|iš£°ÿ÷G6jœ¶û÷«–ßn4à¹ð©ûo©/æµi9\~¥úÒâ¿èèçïO!úŒšðYü…¦(~ÅýgD“×ùV×ù‹î=™ÌÉ9Hy»PÖC›dÂ…T–}€cæ·Ø4„´¡©²{ÌZx}{ûH~Rf ÍÏ¶P¾ÊÈV³&ÃYbÜfe=cÉÛÉæ±†ÃIi#Ì)Õýó¤dà,P›ö»ð<cƒÆ;ÀèÐª”Ûó†¾Sç‰¹OÜ4“C'3c¥û5ÌŒ(´íŒ¬÷�n:“¹Á×XhÛ(ÐÚ5›ïŒ8Òë:òÍ¥'¹ÌœµF«":WãúÝTFq°(YWÅ«&ô/½pÅP¸KÝ ã¤rŸ¾¶Œ¶ÒÛ4ú»Ñ´m\3ëÊ4KX�ØÂîšknŒ•°´îr4¯õÍÃéáÕV¬-íê"?CM(Âí·#?¥ˆSýÇ£�aX£èÙ!ËËx³éÇÍ�Çf,VâºB9!9A;Q85QÄNg;Á•¼ÕxÕ¥ƒ¤yî¡êÇÍ�Qˆ"<3÷®Ä4¦‘›÷›?Î«E%PÊ²ò¹/(€ßG^(f—o–oý
“¹Á.Ò¤í_üûÀ@ƒP$ªžRí›Ò�eMý]hõ±‡29yöøiã1-yúÔÏ¼÷ˆ†ØáQçdEÀG@A"=™—÷Or
�d%u,CÅÛ²äYkK�‘R/¾§¦­GøÖößIˆW)mçjÏïë’‰ŠœïZíq>¯£³C©@�ª¯EÍóÎDËä&:éÊôÛZ0õùûwï@‰âë×aóS•§†+·a0�‚B5”xˆIÏZÑeýûÞ¯š¥:Î¹p´rl�Ž46eÑhaFÝ:ÝÏ²„…Ç+–¯€ŽIœKF„›Êæ¤rCãömàÛ(×'7ÏØ4ò.Y¿iïünD¦”‡5^©$G•Ü6»F¤]Ò‚�R¾ŸK²ÁƒÑC1¶”íŽëÄn¢¯Ì÷z¥ÜÊ³r:éÌ¾fÉ:ï©,¦\ÎT7¤áê´ÀšVa4Úýœz®æ„_Mô;€‰÷ŠwÆÿìþ‰ÐÃêõÂë®×½É+¾~E ·ý8¶ÃÜ.m7ï võ?ÔZ¢•ŠW¥ÅeìóÖËjçÔÊ’¿:ì>ù.ãdÓòöv¹óIŽšš0wž»+ˆ«©†<òK	Å„%„š¦»s„&‚—këbÝ�{»GÖÿ'—œÐ¸²Uy65Ûc�{Výœ´qc‰þV[ Ñ5z�÷
ôïí\j¤T–°áYS*àf8Ê³Qz¿¹Ÿ~…qhåìZc§RñM¡ìELßL·,hZ‹8€ÉmÅ
½(-µB÷P4è€í˜loÒ¢`0§…ˆX²’�°–gÓaÍ³°ô°	
ˆK¤>¡\¢â]PHLLú†½SÌÐ·@ÐUU†ð¿zeÉÁœƒ ïÒÀUˆC†0æˆE„ÝZ…~Ci5‘V ÐŠïqä WñÖ¨±Þ€„¾U6µ‚%e0¤,Åñ‰8r�këãé_ºn¡J4Q„k�–wôàé^ÖåÑrÅÔXJ:´”Å²:-?viÎjº$÷´Ìž¬ÇMDqùéÈ«C†-Óéç)ðÑ™ÒŒ¥Ðb}Ž²c' _†|¿jØY�¨Ï3rF~U~Vü{•~‚˜[¹¨¥%VDZ¡pœú›‹Sxä™¬ÙÞ
bâ0`àÛ-ª÷z·îQ"õÐÀ÷KäáÕ[ ¤¡´‰¦¤ø;£¥eÚúˆuˆ®©èÅþÞ?û Ð÷goÿE49qN	ïÀfIåfÐnS+èì\Ø¥é] %Å"Ö…ºš‰8&Ú€]ô=îÉhrÃoÑ-¥'Ð�b,Jbù|‡Âa”Èêxj"}w�ESãéI»é‰ËŠ§%ÑPq!´à\°Í–�0Öa‹�uâœq½îëçI–ÍZ¸`þ‚ðùÝƒ4á|±\?§uÖÜÖ¼%‡5�è®6\ã®Ïn¼KÞ¸C
HÐ3wQQºNpãÆRÕ˜•FŠ”ª8J•£ÿ
Cúõ@îqe‹¸ÂíÿÀ¾%Œ_Œâ¤Á>>ã¨s&$
‡¼«Ö¨TÏ,µŠ1éè`XL÷X“IÐÙÊ�ÊDºñê3vìÇ7ÈÒÆçÊ��¼'ŸÍz’�Ó€º™nÈW 4XÐ¢¤–ÈJr“²ìîšÒ 3ˆÄiéØ*�‘¯×ˆôáo\Œ_¤	×»¼¾D¯ú¥ÿÓŒU³å,©Œ¦`da[
¡–ç·Æ’
M}f±gN€yŒ;=ÝæpjæòSö)
%Ö—3‡EC Á[q–òS«øû¯;¿òuCÉ~¼ÅmCþ$»cÉÞžMhTZdÁÂWªúz÷´¶FDî�$X¯˜Åz™Ð¦i£Í£Á¦°¼Ù‡xëC#�Þx¬ÁÚ±Ý¹}ûØqæh@äJBªŽo�ö±¼ãWƒ,Üx¼ŠlzÆ#ÚßK“zsèÒEòu=¥ß?º�·²êÈ YC›Öà ûÀ^Ó9žŠËUqUªÞ«]¯iœT;…ƒ\äXr�ÓpŽ[å0uN
;ÏÒÙ	U#\ÃË]/ù”V	u¿ÛörC;Ì©tÏŒ8tªY�ð)¤ÝX7¡Ô�§Ås�?¾œ^HC†!d5ŸŸë1ÉkRÝ‹Ä¢ÓÈš÷Ç—ìç¼ó]7=~H…!N�¦RÓï‰0!×dÙe1õõQAÛ}º%K™€fæ²·yA–¬mBÍ3AÌÞ…®ì¢ –dÇ¢†ªšêª�]È^øò7y¡qÄ(Ï9À‚Ü¨>Ÿ|ßâ-¨¥£ï°Û¨í7r;èÐh²5ONcÞ1� Ï&û|Ò`Ì lý¬
¨)|žZÍ/#à�K¡�†H+(mò¿çñCK“�ª¸* e´èÅï+¬+Ð×aŒ/¨uCVÁh
åi‹m+)«ºEQ:±¡}È§ÕÇÅ�yI\Ô^9ºš1s´úày?qjì®§¼e—Â®eA0-·‡¼ãÍ%Fö)•r#+SPÍaSwq�Ÿß�_ø²24ŒMfLN˜4ÝÚŠÊ­;K(	&±:ß7Z?mÚ°(•¬æ•û�á8ÐâPÚa¶©Á8²¡¡ô¦Ñû*™ngÏ™&åÅòxGì“‘â»¢3gg^ð¬éÕ¾Zè …ÖÝì`Õ�D)}‘,Ÿ·i<vìfø'×»zöÖ†<Ÿ|ù2&ýs�‘bú¶‚üIzl=¯c¡VQ¿Ä´�«$åZÒtV¥YZž[{å#¡fâœ
Æª‚”'�räÄB�Ç¶CeO€âWdó¬�svÌÑ
#îvöEšÍ#[ö®pêæÅß[w6j—ï<¸Àx–æ¯7‹ò9ÆÞwsÿ4ÿ�oþH<ûõl÷¿–vÇ³„ÚðæÿHÁWXd—‰.yRóS‰+™À‰/—†&Ê©LZbÐj¿ ŸNQqb6Pc)”X*¥Qw‡ ž4"�TM^™CÕ"RùäØ<XîÚÙ&òÿ?8f:ŒFøÝA6f6ŸÃQ�ÑÛ“fg&ŠD0k‹pÓãÝLÍ‡R(wÏG\˜U»¡,; u½åáö}1é¢×§À><z{Ì÷=Ad‚,ßÍÒ4ÇuÑÉ5í·g_˜ÍãIvãFÜhé¿d$,šM~½J¾0VOšpJ¾ O”ËoLvÁâÄnû
<‹Ààh±Ý±¢²®¢æ×3×¾ðõƒ‡ÃÎÞ#€Îx/e­�;M‰–îîÛ\S{¡»§§–Ò¶.C¡v^*XÍí@›¼`3Ãs38Zº†š‹¹��èåúaùð:çH~_ÿ™Þ31öèš63X‹$0v¡DÍ‰o4‹ÇEEFÂû1Q‘E<Š oë‘7 \úÍT¹…#[s�;Ì¶ÚhŒ�¸«v”Ä»ÝíŽ½{Íæ!ÛÙ™ùü.ç§ÃõõáFc¸ø™>¼³Ø(®o8|xïáÃõž�¶~wa{ôµšío+JíÐ*h¨¥)ø@Ã²-×®Áqžž"»‚I$iRWvf‘èØµ=Iê;â"%&íìšU4ëN—.Ê[žÜe••YÙ¶Ò
[€Aœú[À^°­7å!Æ«{��S5ŽÎN¿]~ÀîXU–£]\ºoÖ]ÜAÕö¶ˆi`èäpr¬!À’•ì$ ‰Uô–3Í'{KnñµR­¾_è‰˜è”m–qeªýõs°¹—yAYé ón'×²¯àK<‡’.Ù’CÓ«yUÃ¦�Äi&CÆHJZ¬ÃR†dtýÓÎ”IæÏŽ†cÃƒS)JmuŸEµöŽÜß9VŠCc¹v†¯]³h³ß/_¯‰W9J†i:ÛactRu"t/þ<UBñ"”ûw9¤:c{ÓTïN|˜D°LÛˆ'>J&ºb]Ûëaé¡¡aÂn'Qar’éåŸ}:hÕòiÿU”;·o“¶…e¼“qRðÇòò_áìÐ®wn¸µ\6)5•¥Ÿë|²~$ú{~µâ.b ÉÂµeOjÅíµ‡Júì{��KÎC‹Z·~ù4¡AZ/¸HA7éì�·äcµîÀ¬�äñ@	R›²8ib-HžÕ5›�JA$S‹nÒíÒæ‚[ó0Q¶ÞR ¬æ(Xç]ó0Î£ÖaY¼Ì«yV	¿àlØ ŽÝGCècè^@ý®·ãÖ‡6�Å�0<] L±Ú†¾ô=ÚÅ?•˜QÒVµu¤l4Ä×³¸—užvk›Ö—kCíW\4°@Y€ÌÙb§«�§ ª}!„MÏ�sÐ‚�S3·	�‰% ×œ·8¦GãpH„Àß”é=™08ÿ$Ä_ïNS Óq6!vey:rÝznü8QÈØ\ñ\ŽÈ�(Âïc
5ôp†¨Ê
ýý¤ž}ˆÂ]¼é1Ú×Gá *�©ÀØôpü˜é©ÄV7² a'Sâ÷-LÑ‘ÜÓŠ”üžüõw¼[+2ˆC”£'8ñ-ÍuÓfçXõç�=¦Ù³fÁk¬ÈÒX
4Æh_uì×ñ;>úö;qHEôûšHÀ’Þ3,lƒÁõÌNÛ.÷ö4¤m6	œdSj·éÑ8¤ÕM"‚;+…F:ÑÔL¿ï"!ZLÄ–˜É;ÄDÍJ“šÚÃëj[¸£†ì€®¸Š<KÿYÌ;ä3ì¡péáøŸ‹€l¸k2¨w¯QÔzÃ-%?UsXKIK  �SËâ_GóÔCOC.!,²·ÖöçvxŽN,Î=:¿ãK9¢ ¯÷:œèÎq—¥"âŸââŸÔ³Ÿá'ƒ Ð�ücLuaÓ‹ã<0kE,eãbP�Úb™.æ-Èl€`¿ª
í‘Ä#w(jó[FmçN[\jÒHÖp$FOÏh‚>š–¢ÃÜm…™opó…È‹Ìajë<�ÂªDÂÜ1z8ÎuÄä‰ÞˆBZC‘¨©ÅÍ|‰»m0·E°xöo‚â,õR¡Z‡žç¿WÓ¿"6Ç,Õ¹
‹ìÍök€oÂBß&j$Ô©§baUúXÙb¡aÚ$GêBVÎAÉ]$Lc‰Ðš\.‘ø,&”À8\Ì�D…p™<�JdF@Ô0Ë•á4ç°¦�ÖÉ-(G´8ròÜ’TU‚V)ª#t7˜ï»¶iKq�ÔåÀS4>=ßødœuçvË!iñ­ÜvX‚£˜ŸP•T*÷É£,eÂÀá�J…Ò2À0†]"!KÊ#Ô1ª;B5–Œî3ÖßñÞ·ßi\cóª‚òqÎ”Qø¯æ÷Ðœ×·CðÒÃ5õPkL˜¸E|7ö;íÇ»ëË³Ó´ßm›UñåêFñô(xòÊ#
¥ÉÎA¤Œ®pq°gûm	M”‚¿iÕ�µ·
E¸RHÙ8å¼‹¥ËõáU	_êúêâüì´>ÞÃ‡iÜï¶èÜöBu}·ê­ÆÙ¦p�w §�ÂÍICMº˜ÀŸÚYŸÎRV†î…‹�V+@÷BíÔMy¦Ý¸û(gàñ=p&U-Ë1j:Õì4Rp*ÏfÆŽcÍç%XAX³Õ–Ž_{çfDÕ� Å©ïO_Fà!ÞHŒÔBÀˆÖ£‹¬<¼Yò¢;£Ö‹³Óq9d‡ü…vž¦‚»#\ù–œØÉÅ“ôŠ¨‹n<Á[”Ô%ªÜ@å¢Çh-UK!â»KG`Õ$±)³%UØCžQfŒ…˜6¯[Ïiï±k{’zÌyä:
%Úh¸ê ™ÊX¥­” Ñh4^n	¹Ö¥ä$îùô¤õt²æñ Tc3¿ã¿¸XèÇb£¤ˆLžz÷-ß¯htk&6fzÜ[ºï¶ÊÚ•y©©qà{‘KŽÒSØ;ÜúìG‰‡Ò�C½}sî˜|¾~Xº¾¼8þ˜þqpðu©ø‚‰Ï Sø«+¾‘#zU …'è3¡²¿’PeEQ½y+giVÏP	WBÚñhC‚“Ào'@£‰Eó·xº'qFÄæ-‘c�.¸Eö–îŽ�UHY¼×vGÈuìa.¡TNzoñìÏ?øXµ»�÷pùÇþ¯mË2œfµZ,†B>cf³^¯Ö’öÁJÒ•�TWA•ÆQè�ÔnUR½V¬HåR¨PÌçÒIy°}AŸ´™—Éb;d*Sz¶ÐBŠ€[)
ËÀ¬«µì2ós[ÙÑµ…A8Ñá0ÍCKe#²²‘�·¤Ew¶Y-ûªÈ¦|ª[uƒ'Ç¼¾h	Û^J0¤i›J³ÓçŽ`• ‚ö‹Þj9T»z·Ë¸miç»rK¼°s@ŠøàBáz V'DåËÉ¢%AJ’–¢Z–”¢ëhûé£óVLpäµ'jë²ÈÓ_â!ERCøhˆsFÒD+	³Á¦fßK Öî®Ê¬–&gœàéÞU”ÌNx2$‰2¹Ò’™ž¢x%áÎšse4‚c®¼3E|,Å\]®Ì,#ùØfX—œp×á!?Fˆ°zgtú¬*sûÌXF¯*¡•$@$/¹¶¦¯ÛÎeötîc[¥3¬¨8Öïzù©Eç¼Ä›P ›¡¿‚H]áõº´2P@!ZÑ°Kàk@ÌíÌu®M„ÉF¼â²©êæ£TE€Ó¼©5˜Â£«ˆA¶æ
RÝu)‘¥k¯óÜdéÉ60B•ƒïiç"ø!<¢M8]dÉð�ÖôE§2ì“¨K3�ö,gá$Ü&Ò@�¡ Ž–q¢ÒD·25™ÁÄJ
ˆT Š“L‰‘®Z	ï@¡±â¶ ‹~ùƒhãA”¯‘ó_ŒWËñÞd¯zk]œÏ¡@Ie‚†úºOFÇÚnÓŽî±8ï¤BlP“üÐ¨¿‰�áŽ´iÓ´ïRÞÁ™ìÑÚë´9ÄYt¢Á$Äƒí^N.ÍUòÀ2Sò­\Ý×4+sœ¶Yúv�‘´Jx0Éƒ8m9"äÊ BdÀ5ýð4Ùäè&“ª¶ú˜"–ÃßÞ¬è_5šÌL•É`X"	BCÙl:]ÃŠCo%�63[Rg¡RºJ¦ŒJMVÈaiÔŒ¤ÄxIŒ==<JŠŒˆ%‘0”/ñÂØ!—CgILD;Eu/ŠŠùÛ÷¸¤kƒ€pøÄ“ö'�„M04¡€m\�°¹xÓìCâDäå–ÐöÞ%G"Ç7ê™¨3“¿à(l§‡U…¥¼\5Ò�º²ÐûXÈÜÕ‰aw½¡å8ÿÚ&
b·6i3‰þ%_gÙ#ÆÄe9\~ƒ‚ê"s}Ô%¸¨,ò¨ƒóžuÎ«³ÔsNÃ“_ažÂÀcåZ´$·ü¶þpw{s}Õ‘¦~Ž¬fjˆëUÙ€"‰¦ÎÔZ…RZX™èBÙ=/Ï&òÌ\F<OÎ�çÓ¸YW¹QQXnº½`Ððwc& ŒÎ-Y7x·ÊtÕ9 ±ë¦Îû¢×Âw“ãf.½}6€¥ÑôÒÜ#=;"âù"Çbz\àir<M§U_I¬äïíº{nìÐÌïbÚ�×P�JëªuDŠîÎyMÙÓ{ÇVIñùÎûàWÂ!SÛAðƒ¦€.5U¬%(æ¸Ê§ÿŸr–GŽ…�†™SÂ›üBdÀyr,Øji¶$¹Œc…¢³Tä—…Û�æ66?)€òÐ¯r
ÛjeQz¼r|lû`|éõ\¥;Ÿãþ´Êu­ewí¶ÛªW’¯%„…•’CÍ=Ãäûà¾_Å–¾tÿì§`†6§X;Ñ*¦¾õ¡¦3çh“ˆ}”#…§¨@.‘wSÈ²¢n`á´¤ŸùÞ^^œž,ÔÚïò»â.ô7"ìë*ãAæy§?¹fZÞ�Ë—ó(ßú¤€�ý;mØ4ÇCç¬vÚ±ýÕõ ¤¼ÝbÇ¾<1Yµ÷¹šºõXVË[rhŽ-)$õ@Ú’bEDÚ�"-&¶€¾Ô¸¿»¾Ø~ýÄßÕ¥¶…{¸ñ¼‹¾XtÝ¡†QºH?ÛX$´Y�¬50†ê´Ã“ï‚Yi*¥L‡%Êñp<ûòÏËõÕçÇËÏëÏýÝÕóõólÚ~¹ºìËµòOáÅx,çýèIÉ¶Žè0¨˜¶˜5'gz¨šÆÝ¶©×xÌÂlÞsÃ`EÓ©·z?ƒÂY78ÇWµK
Ë¹÷ä|¦·¨™.ó„Ú­]¦6·ãr±-QQùå‘7¹gûnÒ
Àœ‡•ÁÖ˜¸þÎ½Ðîã.¥]DáÕªhÊÆè0�òëÖ™MÞ™ˆ?×%SàÓ…—�ˆ6Ìz€#ìn%ãMû¸ÆòíÃ¾‰në
6Œ{šËFÝÔå‚z¯ä“»Hgdòt;a@ò.PP	�ŽëPHÕÌàñû´zèS3‘‡õfèU1;;pÐžè‘Î{×ÉéëìÝãêûÌ> ‰ÝµsL�b=«šs{€zcÂƒSÝ /–NÒ Û·íè]U"Î,9VšlU> Õ hG….*Íy‘êÖ´\YG
»7+êçô Ú”ÐfÌVI•­1±£°r¥~F�lVSŒ¥	u&š†—(ÜmUƒ]!¸µIV¦b„y¼.¤9ûzB§Ýnõ1‚‚Mé	¤ù’¦¸äHtt¤œˆŒ|(ØA…é1ÜtWÕ'P¡D ªUK™c%ov’‡¹%½Ø“”Is�?ÄpQÏ“Á\¸¥÷~·räiß¤›|s"DÑ½3Ÿ5*lùÙ›ó&J¼4bÌ»@Ä›I ³‰-ÞÅÆØC>û-žhpÛãî×éññ~|™^«Ô,èù �?Íàÿ¾ÿÏ£	ð�Ò¿’WYâ�ÇC† ]+j8Ž.•,¨Oð¶éß\ÒkÁÛÝò[(  Ÿñ;øð™÷/®±}øg”Ÿô 2Þ¾H‘qëŽ+	ïUx?|×8€¿�Zðþî@L0"ñÅ±þÌq„?H˜à$‹ø^ÃÚ¹I`4þþM5§õ|wìq$¨JcszåQ)'Õ÷E‹ãyU½>›ÊÔÖ=û£úõ#Û¼½¥ºçÄp˜ñÏ�T%»uãêÒ¹ uÞ…Lö2lßë°�÷,|è.ä¹ÜRjœ¨ôPÞ”Y`§ÌNéÎF	²ú´"d�åª	í_é“Ýž,ëYÝ·4mGõÇ³H‡üÑÖV] ÞV«ÍRñtÛÖ‹°7õt
u3E—¸žÖ\ k^.%¢^_,†ûÄÒNkÞú=¡7Ã÷ŸÃ»„åR5Ý0-Ûñðôr{©´‰“4Ë‹²ª›¶ë‡åj½Ùîöãt8žÎÎ/.¯®onïîŸž_^ç Œâ$Íò¢¬ê¦íD›~§yY·ý8¯»YXè&�PEcE§x}çÇ…aòPÙTåPé�¦
’•
P·ã™† Q6g�+ujÅ�z$2ÕJÂ²»I	!m‚~n8Ù«.ðSÊ¢TtšäzSdj‚Éo<å 8å"Ä¥$•ƒèÔ :Z«A‘T²Û-¹Ñ¨0‘/…‘;Y› VˆP¢Õ°jä¹öÇŸå€¯–x¤ëO´¥bÕ˜JUAMD'ºXb+Ö È2c pÕÙÂ,Z�ÄjªÜ)ckŒ¼êŸTf"ð´‚tPi,ïÛ`U3ûÞÌHJÐ´:‘·r aÊÚ
Ò<œêçqìÛmÍ°Ú¡P¿U¼
0;Èu[à~Cº�ò3Á9À³tµ	&–åÃÅoCY^jÙ«Œ·µœÓÙóªùx‘Ž&HíEøÓ	bûÓ˜(cô+æETÉlòµÒ|P�¸&Êlð’óþ4\Ô†\ƒú¨Su€%Ž­$mcí®.UÂÆ°'åÀ«‹Ò¶œês3=n¬SÚäÕÿ(: w÷è8\}øÏøo�ýÓ€‚*¾ÑpŒi²0úëã˜½=1f²›ßÉ‹Á“`Ž`ß_aŽßÃ>þkÿÇ»„<<êÚÙ";_ß>·f³ëßÇÁÃ�t.b]õ.˜c                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/Material-Gray/icons/material.ttf                                   0000644                 00000057734 15266052701 0021070 0                                                                                                    ustar 00                                                                                                                                                                                                                                                            €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                      includes/File_manager/lib/themes/Material-Gray/icons/material.woff                                  0000644                 00000034120 15266052701 0021214 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOFF     8P     _Ü                       GSUB  X   ;   T ‹%zOS/2  ”   C   V> IÔcmap  Ø  ù  €ÛÞ¦¬cvt   Ô       Õÿfpgm  è  �  pŠ‘�Ygasp  	x         glyf  	€  )  BTáfQRhead  2    /   6P!hhea  2Ð      $<±hmtx  2ì     xo0  loca  2ü   ¾   ¾8ÿ(®maxp  3¼        Ž…name  3Ü  }  Íw‡ûpost  5\  v  ¼¿ç÷}prep  7Ô   z   †åA+¼xœc`d``àb0`°c`rqó	aàËI,Éc�b`a€ �<2›1'3=‘�ÆÊ±€i fƒˆ &;H xœc`d~Á8��•��©ŠiC„f|À`ÈÈe`efÀ
Ò\S^0¼ˆeúŸÅÅÄ0(Ì’ Tr xœíÕeRa „á	1âÄÝÝÝÝÝ	°7Èùr üê[�wØ>F¨zøv‡š­©ÚîXLéœ¦arŽ	_1±Ñ«+×§X·r}š¿¾Ÿñœ`2ó-/CÈÂp·ø·?+ç¤÷LûÉ3¬fk½=³l`#›ØÌ¶²�9¶³ƒ�ìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8ësœç¹Äe®p•k\ç7¹Åmîp—{ÜçyÄcžð”g<ç/yÅkÞð–w¼çùÄg¾ð•o|ç?™ç,²ÄÈGŸáÿÏìðkúwß�†ïxlÈCÊï˜Ô�ŸÔ�¡Ô�­”Y e*H™R&…Ô�¹”é!5<]ÊD‘2[¤L)óFÊä‘2ƒ¤L#)sIÊ„’2«¤L-)óKÊ$“2Ó¤L7)sNÊÄ“2û¤l)û@Êf�²#¤l){CÊ‘²K¤l)ûEÊ¦‘²s¤l©a'R6’”Ý$eKIÙWR6—”&e›IÙkR6œ”]'eëIÙR.)7�”ë@Ê� åb�r;H¹"¤ÜR.)7†”kCÊÝ!å‘r‹H¹J¤Ü'R.)7‹”ëEÊ#å¢‘rÛH¹r¤Ü;R.)7�”kHÊ]$åB’r+I¹š¤ÜOR.©ÿÆÎÅ1†siŒá�1ú„ø   xœc`@Èô?„lÝ xœ­ViwÓFyIœ„,%-jaÄÄi°F&lÁ€	A²c ]œ­• ‹;é¾ñ‰ßà_ódÚsè7~Zï/$�´çpš“£wçÍÕÌÛeZ’Øë‘”›/ÅÔÖ&�ì<	é†MËQ|(;{!eŠÉßQ­–Ú·‡DD"Pµ®°DûYšd|èQFË¶¤WMÊ-=é.[ãA½Uß~:Ê±;¡¤f3th=²%UU¢H¦=RÒ¦e¨ú+I+¼¿ÂÌWÍPÂˆN"i¼ÆÐHÞg´Êh5¶ã(Šl²Ü(R$šáAy”ÕçäŠ	ÊÍ�òÊ§åÃüˆ¬Ø£œV°K¶Óü¾/y§w9?±_oQ¶ä@ÈŽìàìt%_„[[aÜ´“í(Tv×wBlÙìTÿf�òšF·+2½ÐŒ`©|…+?¡Ìþ!Y-œOù’G£Z²‘AëeNìK>�Öãˆ)qÍYÐÝÑ	Ôý’3ö˜>üñÞ)–xËzG%œ)as4IÚ0r`%e‹*©õ®˜8åuZÄ[Â~íÚÑ—ÎhãPwb<[[9QÉñhR§™L�ÚIÍ£)¢”t&xÌ¯(?¢I^mc5‰•GÓ8fÆ„D"-ÜKSA,;±¤)Í£½¹¦¹v-Z¤ÉõÜ£÷ôæV¸¹ÓSÚô³FV§b:ØÓéiä/ñiÚå"Eéúé~LâAÖ2‘-6Ã”ƒoýÒË×–…×Øîíó+¨}ÖDð¤ûÐOÕ)	L…˜UˆV@b­kY–ÉÕ¬©ÈÔwCšV¾¬ÓŠrÇ¾Œqý_33–˜¾ß‰Ó³#.=síKÓ|›u=š×©ÅrqfyN§Y–ïë4Çò�æYž×éK[§£,?Ôi�åG:cyAštßÁ�‹0ä�0„¥CX^‚!,a¹CXaË%ÂòcÂr†°¼¬eÕÔSIãÚ™XlB`bŽ¹ÌEåj*¹TB»hTjCžn•TÏªe ^<ò†9°H—Èš_1Î•�FåøÖ-o;WÀ±êoŽö9ñRÖ‹…?ÿÕÖT%½bÍÃ“«ð†žl'ª6©xtM—ÏU=ºþ_TTXôH…X(Ê²lpg"„�:�†j •CÌlÌ<´ëuËšŸÃý71BPýø7ÜƒNYIYíà¬Õ×Û²Ü;ƒr8,I17óúVø"#³Ò~‘YÊž�|pŒJeØj­¼Ù'1™Þ$Ïq[Q6HÚØÎ‰ó€yó�&aêªäNá†øanÁy'\¢z£,‡îEìó(¤ü[§âDö¨hŒÀ³Ùa¯ïBÊoq$4ù¥~T¡©5Ð4Rn¨_ÆÙºmBÆô#*vÃ²¬âÃÇ÷•’m„|¤ˆÕ££ŸÖ^¢NªÜ~f—ï�¾Á 51{ßtq�Ê»ZÉ2GmS·•S×šCãU‡êæQõ½ãì9kšnº'z_ÓªÛÁÅ\,°ömÒR&Ôõa…¢ËÅ¥Pêe4Iï¸ÐïPŠ�ÿ«úØ|ž+U…Ñq$ßNÔ·Ñç`üØGõÐ÷cèr.Ï÷šŸnôál™®¢ë§è70k­¹YºÜÐtâ!G­Ž¸Ê|§qz¤¹é!àcÝâÀ&€ÅàÝµŒæS £ùŒ9>ÀçÌaÐdƒ-æ0ØfÎÀsì2‡Ás|Áœu€/™Ã dƒˆ9ž0' xÊ_1‡Á×Ìaðsî|Ë1s$Ìa°¯éÖ0Ì-^Ð] ¶AU SOXÜÃâPSeÈþŽ†ý½AÌþÁ ¦þ¨éö�ú/õgƒ˜ú‹ALýUÓ�!õ7^êï1õƒ˜úL¿Ëe¿Œ|—
”]l>çï‰÷ÛÅ@¹  ÿÿ xœ½{	x×}çû¿9qc @$®ÁA @ÀC$AI%:H¦$š¢hK‘#S’¥ZjÜ2NbÇuï:›ÄŠã´ŽoÄ´þÙ‘Óm+Nªºþ²»�Ü¯õ:vÒ´q»Ív[w×Ÿêvõ£ý¿ÀC–ÜöëvAÎÌ›™7oÞñ?~ÿcrý=î1ú1“X1"å€zœ Çž&oš]Š¢ˆBCRÈeÕ¬’5AV�sç_]Òè–øk×`
Îè¿®_dâ�ë _ 2i-Æx c¥dT(lÆ
@¦±
ìÁª0îuRÁ›„p!a‚B"Ìuè±7zõW 7ÿ&ü)<ôFAÿý•üëÛM£²Ñ.îF%ñ&Í*.£YÉVÃ’àjþM]ƒ7ßì…>ú…Â;ßÈCïú6Õ¢K–D�ç¨DFñòa'j2¦)öLJÐæé×zï{=¯¿Žýz_'õ6£Ï…øŠB(9N(àâäÅr!Nð%A‹ˆªâñfÃÝùœÒ×ÂpîšÖÕ¥Ñ'Ø^¿HŸéŠèÖHWWÎEºVÚü"QÉÑo:�ð06ñœsçLQ#@)ÜAxŽp<Y°æ1B9Ž–	¥Üm„£Ü„¿ÁZpü+í-*”¸‡Ýj6ID¥ª(x’±p$ŽýË€/ÜíUÃŠ;ÌÙ�þ¯ÊÅp&þŸ;@	§+‡wÓßÜ'¶k™0¼ÎìL‡õ3Ð¯_l
³¡Wûýaâ AòÂ7eDÖsö¼UÆB¢E¸CŽ°ÎQÄ2Ea/DaÊ?ñœëwžH„—‰ø”=F@<zëçŠíµWÀâ?Yyï^¶TÁ€¿±ÁëR°»v—;lbKÅFÞš¯ åzÒ 	RVõ NàÜBÁíðž|üñSÁž >€‡\¦õ¿uxOÑMx�/^ºô"^k}ñîÙùê¼<C8\Ñ}Ï9p€A\ÊÝ! ÃÌì(o�0?ƒCç'ýÅ [©ã·¬°·èx§MyUP§ˆ+á\8q¹q#•Ãô	ýbi•æî„s¥Ò:š£kè¸…<P]„ÆLÇe%N	Àñ<w‡	éI‰4GxJùiìÝK(Oq2kës‹ì‰ã�Þò‰½ÅF -Íþ¦ÆŸWõ¸]VO‰Š©Þ?MÕrZ.Ë„7²n@“Kå%ü§3ëF¥_\Z*--CCY÷"7B¯ãH�¤™|îwJÀÈÓ 7(Ç±�L³(�À#±Bá'S^ ü)§‘‚X×E6Ø®›<Âââ­ŸÙ[lVžSš•5C¶Èœ“w:-(m ›ˆ…}ŠGÔjŒèÎáˆU-Ž™þò/õŸÀÔµÚ ß)±±Á›9|M·Öç¡òscÀ%ƒæp¼}8^®èÜÄsÍ8Êh•æ¥ö”ã�
�Æn#P~há}p­½EêÅÝ-
MÉB}�Â1-¡IšþY>'¹ÊktßWÒÝñ4}¸1‘ËÇiê‘tz–­oôïcFÿlØC•l-Žâ|p<c"€„´R
œÍ96 :�ŒÌ°ÁMÚíf3!vÅ®8f›Ùfµ`C¦¬‰M#
-6ƒ	Îç»©%—(ø¸�}Rê
é_	w	¹æîÕ÷^xä‘OÓëS(™Ñ˜©£Ÿ­üþ…òéG1æ�éÆ�6ÒMv'ý¸¨R3.2câEAZ”‘°9‘p(_ˆÄ‹Ò<á�/#�3Dà…I ]�©P ©ÁaGA+’6h31ÚŽHØ‚ÊÄLOaº}^Ÿ×Ã.i‘„„â¦»�/ä{ñDœë‰GD�·;O;–vuv�ùò“gâ±ûÏ‡cñxl¸8Qšêí81x°¼3ÓÕ•ÙUR2Ó™‘ý;™òÉÉâð8«g<ÐÓ�áõéï—vf:õß§3ÅLºÎ³¸2i@Þ* ôDÙ-°Å§¡s¸DNœÃañÂ4Áa¢øI‹‰Ñ²Ûij°4(î�Ìdh˜±mV	ûÂkù7çP<Ñ/ëýÁÔ¼|BŸ¦RAx*˜‚THŸ‡§èõT°ò7Ô3ÅìõS•sÔÃèE0úøö1B’¤‡’�äÅÏÛ)E0ƒLf'È4 ’,Œ�€‰Ûâ ®ŽùÒ&0›í`¢ø•'ñ¢(qÞŠôfæqíe‰Êó6ÀÛR7C8‰›Êç:RQmhãÐÆþ¾Ü`~°«3ÕÓÑÓšÐ’Ñ¤O�ÆT§Ð˜„<Ó;xŒ¥ôIq­zÒ=¹žD²9ˆÄ{òÝ^�ÈÕîzQäà³ŽŽ©}SS�ÄÂBKk+ãÇD—*‡P ŒvvjÕÃ“ìv‡ÍÍ×J¥îµ•Ö6£ÿ¤®²F»tkõ½ìI‡Ágµö*-|�ÇyVI€ÄÉöâS¬ü<5S‚`H`’\ ²(È(â8Îql†DnÒç�EµH8ô7y¾€¡¡Pï�je„¯áÄˆÒ‚=ÌÆÍÆa%«†sYZù²¥¼ßòå:¤õ×�^oHõBCåí	øÕ	úB¸½=Œ”rÎ¨r{0íùÔPC¥Lœ:eà²ë/Ò·q"/b÷;’n�Ü¸ä×àê;Ÿšýä3ôºÞ¡êWÚ!÷ô
}íÁú’ 9²‰LÀ'‹Î®j6‚�Ò±Jû-Um±«›xTf“h2"T¶ËôÃ8MsØšÉLLsÄJl²Õ6ï@0"SQž'vb‘ì–y"qœ4MVÈ
!�[ÝzC«7iŽV›“�ÚEúAíYÿzYÜÉ$‚i±Ú"²Ô¿²É½ˆÃ‚ÁàÄ¶-›G†zsÙÎLª½­5˜&4o6–w;Q¹@"žD¶ÉPÄÍU² u…v“ªìŠâCäÃ®d�SNõ žæñÙˆèË2CÅ0}Š{88ÅIúo(��Ê§ø®ÒPù0l3K{ÿ“>¼ÒØb÷ž6½ôyÑç²)ŠÍ:>‹øç¤Ô¨T¾ 4Ì²ç©ƒ×?BçfE³nx{}¿dÖØe	x=ÁålpÖuÝ_¡ìú#iÔ&yrªxB"#¸:æ2QA®(“y·�Šv°*¢uÎ
qZç
03`æÐ˜Bô_ÆÐŽ=;™ÍÆã„dóY9Ý]�™x:žîH%qñ]Ñ°†>Ž…U¡%	*ÎNŸh”
8I9ÍÀ´
BÝ¼q†‚
¡$N$þù²ªCäWKl¤¥Rg4š)aùÕWÙY&íÔ­pN¿SW––ôüú'¥FE·*�¥pKíðT»Q^nÓ½t­Tº¶\.×q	“ã<â0±ÁnCé 0$f€Gfz5(Ìz+¨YHùžÄ#ðuJÏRxºíö»íqÛîg¡ýÃìB+žÜm·ï~6Éd—�aï#.´?Rd[q‹±
Ï a¶7/£$cxb�]œÅ²Äft†ÙK“á�Ç$¥Â)ÔhAOÐl".pÕôµP1û¼Ý¨®i¤I.’†TÝðØ�Cù®2-Í?\½}÷ôR(´4½ûÛõÂíÙÛzzn;ÌvY´6.læèG¢ÚÇK¥�kÑúQOÔêàº¹P×Æ�]¡\€ÔçmÜ�gf¢CH£´Š@qàCy„l<XQ\ŠS@-„Æ 3Ô94�aâ—õßÖ¿vù2ýzeúã‡ýkú//ÔÛ�¬µ›-vŠLÖW×‚2¾F„ç8~<·‡½f\’$³dv+Ìèh@‘®„­åpŽ›¼¬¿~™µM¿?†¸þ†þµ………U¼ÇÖ�CŒÑAºÈXq3Ê1"HT@Á€èBBt�ëÄ™3ï,›Ø;gØ;'›é;Õ;š:v¾AhPœffôdsšÛÀS£Ö@§Û÷°óU€Åamøa¹Ü~òà\¡¯¯0wð­Vè�;xÏ¾í©t:5±ý…záÁrùß_ƒ3¬Ú_¬UûùÁ¹Þ¾Šk]=£ ?,Õ±ÔYC6“)y€¢,!¢¢‚HDsåŽ2¥#D¶ `"Çè�ƒÉ–––PKÈ¥(ÞÞ¬lÈ¿4ƒ³"JÓ5`JðÆW#²17;+¯9¦1öÃ‰§Ïé_ùöW†p§è§,v»e*ÐRy1QÀû›Ëúì,üa:MÞßßáââ<cÝŽÂ"²æ±z_qLßãAd´ rãÿ¼ÞBÂ0Úà{[ùþ-º[ùï¬¿£F­5ÿö\"4ÝÝÄGüÈïêí$É�»‹w5ú,&¼f™ÃÙ%s6Ià8+ÂêàèœêV8"¦i£à°ïñ¸œœÝaO¥<žT&•Iw0š¨ã˜@ÕBõø�¾T7s…?g
U7’“‚›¯¶á85f¯±ë°æ:Û¼^º€¿7/\øií?uáBe±~÷àÏ/ègX¥IÜ°¨Ÿ¾PýÁ7/\@¨Zÿï¬?R™ÕB3ðh à*
<Îà#fðMã�£{�Û8:îñ¼o 6H¡6¶¹Qþ3-  K—.¿wédå…êöÞe}Ëehe{Vø›Ë—oÆßÛÉ�â,‘d“,!^0�l‚£fÆî"²»•‰ƒ¿[ªünYå÷Lšqü¦�ù\¶;½=³}=ßÛþå|Ï$t–!lÕ87ì¯¬Q©P•ÚL(ÜÃx{…Éo!ö!š.wmîr˜›,.³¥ì¶B6OÇÔ�%ºuÝÃ·tÛ`F{ƒÇêqYÜ^¿lt65»š£xƒÍ§}e>e¤y'ñ�F�ÞCzÉR$ÛÈÙ/š»@õvB£›ŽM<DÔwÊŒzÍFáq+�Š»q±Zýþ–CqKLŽŠA;ù�GéNçZ	Î†ˆÃi³Îµ�‡8½ç\²¡�óú@U¼ê\ª‰*¤±EiœË„ÓAÞïrù§«%¿ko(ÐÌ¹ü®)ñÞÚ[m‹ë^ÛØâ_ü7|ïÞâýÛ·���Œöõårñx$¨*Â5›Édû®í»vîŸŸšœÙ6‚(sÓÆÁâ`qx¨oCß†�þ\o®%LO¼'Û�é`,‰E�éá ²½Ú¢63'�âQ<n—Íis:ì&«Éj13?1‘AîDdàŽˆ-�­ú¤Ön¸ïah*›ã†GI3€ia�R¿,›†p,?BíáåHw¹­\*±ÿ¶r—Vq•éåÊï¾ôG¿èŽ\¹‚%vŽ¿¶6­KÏa5z½Kkk+×~ìò«%üµ•¯\‰tÿâ�^‚íKìÆr©´ÜVîŽT«Ve¿!KÒH]ˆ—Ðî7‹‹
@æ”ñJÙ�!e™É�“!¨Œ±h¤Åß˜jJ!ÂŒ…5Š~7Â!F¶®QJƒå16B'Ðs�ÝžÖ´óçûæ{{çûÎŸÇ“ß†íú7à–7hø_»sxkGï�“zwhRù<î·Ô¯²O6“66ZPZs”Ð±f?¥›kÖÉ¼À.QRfGBgðI:h‰j-m�¶¶F„2¾dLK0iÀàÝª`ÁÅ)øT_!¶ðÑå˜Móx ´eë×¶miK&Û¶l+÷i³¾=Vùû�…þþ;î]èë¿ãk{w¾·ühµÂ×¶nioODm±·ÇÞî_ø¥;úûî½£¯n{4|“±¡&“£Å#-.*ñ>àLÔt àÛl1™œ`PVy´ÅEBM"�#&Ž3M“‰Ûc3£Â3qã^/‡‹ì{ÃÈ2~æ…²!ý¢L9�ØØº-ø)š¤¹³nTaª9À�sç4¤Ri>õÉxÀñK¡K÷}ìN4t,f*[þñ ~é%ú+>XyùÁ¿wÎê~~w+þôk=à¦SyýÓ©ºn˜ÆñyHbŒ8I[|7E=0	b×¬	6ãÒ1'ª‹ªMjÇz—P{ãZ üÎ¥).AAâ	ÉëãÔ|!!|ù‚&ÒÏ¾²çßµ¶µµ>rÛÐ�ýýwÁÃ¶þ¡ ãÇwlî¾ghÈ´O¤…W6/LlÿÆÔÄAó>óø‰�7?“ZØ6œ*êWö9z‡µƒC»öå×ôW@ë&í$ZîZ£¿aÅpæQ§jw]n#Ü”¥l^Ò¼¾B	'Ox$wNòå˜Ýàa„Š}G…ÊÆoôHžÁ>F£“6tßzå•¡CÍ�@ó¡¡Ú@àâð®}…Ï,lÊ_ì³ï3G!DK¿rùYóx¡ï½…qDm85‡Á	²¥¸ÉlL¥	X H6 'š:ëxÀÈÑ”2%eÊ0N?sF«.”o6‹IIâ6ñkÌE¯Šf+GâÌ:¬Ù‹†“:K/3Mv¾Mi„¨þ“Få¼Ò¨ÿ¢�JÛùHww„I'}>Ò�6aÕ’D«°;Oi]u¿üw¸/ Xñ Õ§I{1¡(jÐ©úç€\^È™öF•g†Gõ|I§ç; L•Ç…ÎhPø@ ªªëáäò·Ï¿µp o€g¥Ÿ/Ì÷T<4“žÜ¾yW�…#…7Ã ™ŽÉíûûŽÀž{X�ÕÚFéþýSí)
‰°žOy~˜üp_õ—¨É#gpàˆ2Åêfª�1ó“‰ <º‡±ß8%hÅHÄA¼óXï²JB¢o×"Wq_ùë+GŽ°)­®;ýËúÅáaBÖÒ€�4}«¼NÁJ63ËÚÃ‚š+\–‹ùŸd�,é¯@sÛ�¼þÚåÏ?»üyH—–Ï0�|Ï³¥kGAÑ¯^'kGŠA#ˆ!°Hì*ë±˜‰<ÜŠ›ûFx–(øpe®Ö°…¸tùÕ�³°a€^7Ì²Åì³Ê£WúÏÂ`ÿŠÎ:UÃ¿ÝÅŒ5M…—(*+ÃŠ„iÞÃ&e\–e‹lax×)¡a\¨:8Â9o¹�ï]ªnÛf?=ûW³³kôâoÖÞ,6‹(O™IÌãò‘Ã74Ë¢ý‹Ü
|äÝwõ7ÞE¼ün�~´ò‰ê¶3™¢ fßZ5Ç³ø$$PžÐ£Ä3Û#Ši‘9(öHŒ‘Ç].—ÏeD�ÖCw4ÀÑd $šŠÆ8“ÙYå‡g ýâ™3õ×è¾íg.^<óWúkgàÜÅ3•Þ£gð2¹Yß6‹&@q\d†Ø-mZ•,ÃDÁn!MÜ²[¬a·Ñ!!…Q¡`OK/œÖ_{áh?w²Î�Á®Üƒ§pï]zá4bWWè­û%	ý`t6†vÇ‚ô5Šëi¬ûQ�‚ JV¨…Ð¸ŽöÊß&ê¿äÔ�?…t6ªÿÇhüh:'¦\wo¨üj» %ÚÓ³ŽwšHg±‡Í1ï
E¾åFE #þ7ÂÜo,Æ?Ù†ÐÆ�D6ÈÕŽ†rr•Ö“ g˜,ünÏž®®==zþl~zW¦³3³kzþ»ôú«W–ºöÙÓ½ÜÙ¹³ô‹Ê�÷÷¥	_ÝÈpóÊ°Ü0Ü<1üWdÅ}·…�¾¨Úì‚d^…- Æè=ß™/íììd/›‡ŸéáëUî;¥×—X—Xº–»ö|xw×Ò•úü?Šý#eR(öøí8ñQŠpp¸ÇÏ�Õ\O”;ÎC=éaÛÖÛ·–T·À„ šWñ\a2(‘gæ”u€(%âìà‚GôxU”ãA”ØÃàeæ¿Ä^^vˆ'„u·vŽ›)_ìâ‘–vµÈçeU´èÑÉ•�ƒöQº¦‚²¦‚äàJ/èÇZ7%›v²äm-’_ìò£h£´7¸î–Ìfé˜ÃßÎ	Ò£¢SÜ,ù~y³à�>S­pL6­TøŒà£µ¦pWÃ¥µxºˆØq© ÌÄüj<Á‰[ÚŸ»1´/Kn§Å$5È,íM]#êís¿/"NÇÎŸµm}hiyéUˆ®�îD17·'Û_\Žô‘A2BÆI‰ÜFö“ðåª5yºnMöi½\¨!J[:ä”˜äÛ×Ús]J§##Øœvju£I×ãËªÝ‚Ûë¡®F·k®Ð’÷ç„Ææ&Újl˜ÛÐ6�è�…¥` œ^9	nk�G#| ˜ðyÅ ¬½¹!\üÿñê½Å§gggfÊå‰‰�‡†úûóùîîtº½ýFëröÀì�¹ÛgöÏìß··|[ù¶=»'J¥�Û§&7Žoß¶ulthdh¤8Ü?Ø?¸a ß—ïë-tçºs=ÙtWº«3ÓÞÑÞ‘JÆÛâÿb»sðŸew�´ªíy‹²a�2Œƒz+t	žZ*¿wéÆ#3(éÌê¬<jÔ¿…9Z*�¯^Y®ž-·±W¬¤†IŠÔ¹J§
Ê¿ºW/K.VcoCM9�2�¨È²xÈ*PbCR@^šs�ÓŠèTæìf'K’<mdi¯ÃB%Yšò‹µœ‹FŠ(/þËšØ[L¸\Ym©…Z˜§0bø	]M®&ÍVDT¡MbÊ8½Z¬š¹ÒíåpvŽÎ‹€²:¸WpcÇnŽ—–ÊÜÆòÒb;œú¥Ê£XŽtÃöóøƒ§Êe\Œ2}ï.á¯ÜUÙÄn³˜nÎY®.ÃU¬¸V��³ÅÏ‰¨À™Î4ÜžNÇ	"7ƒ<ÝÂ	H³	šÑ‚$æ&“yŽøI“Åß4‡hÀÚ`±Î‘FÒ`Cî!>»Ó7�ªÝi³ã™Ï¹ÇëqqNŸs| É%ý�ó²ÖƒZMxY	Ãzùjë6-·nCr_³]˜Ý?Ëþïœ­ýŒÓ•3z}Ýõ«ÕpÏ÷¸¬Ak’B9X.îB�&RNœ—xÇÂÝÔ„xÍ)„hóV�AžÆƒÌì'Y˜Lw˜Qtf:�¥SÉD¼¥Iu#»FÌ‘*«ÚXZ]w¾šÄZ-/ e}F`bUÅ†×!¬„¸N§7¦Q]¶æöß½?—`ùwðÓP†fô3áÞÍ½áwá.=?} 3’ÉlLÃ‡väöçóûs;2aý^£ò§Ã™‘Þp¸7²C×àÓú½¤Ûgãm4Æ‹(éA" Í‹TÆ»Øgaþý±�¶Ö(ÚeMÄ£XÍ¢€ˆ¤ÑÈÒºå˜VRÜXÅžJþþñ¼Sê¾w�qÁ_ßl$úWÆYÓÚ±ÈhŸgÈþ"ËG¡Oñž€ `^´Ð›, ch¶€ÒAfžL%Ù¦;’™T&iñû¼n.`»¹ýƒPÍÖ,¼~ÐÜÍ–oÂšþøê¨C7[¼Úr­x}éVrB¿MÌ,W•ÉªQ³H«f]3ëL 2Swå÷˜þ�?{èDbæ¾÷Âè·BO|ì÷ï;y‰5!®ñÓ¯Æ‹ýX6sóœá&0Ì(“@CŠÑ”’y†VÆo`b+2±PcHXsd÷Ø2þôo0±¥_\^¦_Z^Þ´¼|^·Vwpuy�Œ²ñ"Ú9I`·&ð™ €F;Z·úÅ2³EË0SeýôÜÁöu7ÖµÓVŒ£UÅg`ë„Àr@¹i<pdˆ#ãÕž³Ä5ä6Íˆt ¥‚“ö¥ÓúáÐiøDô/ýKkæ^EÔÔSìr:džÁÝ1�ÁñÍúªcˆÕ5³ƒùºœPÂ	\¤Ÿ@¦°s|¬ï³püóÉ£[>º_�÷ŸÙU†·›ýÙÿ öl¬µÿðHp÷C±xýýð‹­ÕÍ[¥–C�Ã!0C¢§×Çc$$­äùjÞi¯k5hlC�É¼ƒ¹�ó8íV³,J†�H¥Ž2ÌSá ãþbßMu,þÓÏî-v‡CˆqI,j·Þ œu·$/ñˆq°yNQ‘¢Ý\˜ä'á%QÛÂ±zÚÐ2S—·±âjko¯ÿëy:Û�öÄÐ¼Ñ­pµòsfŠ•Ê+¿¥¥h^Ãû«ùe#†lìEkg‘<LN7÷Qž;°›ŠÂ}Ç¨,qc[€ŸñW@æ¶ LAƒ´ê¡"làÌe.J‚ÈÂÙ²I’çQú€©L-¢�fC�~âã÷žúÐáýû¶O‡ÚÛšzý½v+¦ÖÕ´@¥æwfÞBDù‰4•Œ@–ÏÛÃÝeD¸ñA`¬!�¼uG5šJõøV$Á¨,§÷B+wðaãÙÚ�µ­Ü‚«KÝ�šJºoøäœ_ÓZfOç{:£��f³Ú¢Ý¹ˆe¿Ïlö´;¨Ã´°4|2mrpfk\ëÌžÈvŽ:Íœd Ì‰³ÙÓN.hø'ZE£¶h5™-‰úez½Uõ'ZukJ¹âj"�ˆÃÕ”ÖWË&“Ãâ’l`6¹ÍN7žYãÌeqºg˜oUÝ¼‰$›Ãá0á/d“-Ç)/ÑD‚Jb^f Úår²ÇN /rXŸ…¼„0ÆÉd^¯ÓÀ"Ï¼½F2:ŠVÃ5jce¡#KH	ÕË¹Ø_!á–|�ô‹_}jNrîÝg€T¼÷Õw¦Þ»ðÎòµs¿²´Ô»á·–7À¹ßxäì¯�½ÿ	ˆåÁ'ôÿrÿÙ_«û?ÿßù_kòx¤8d1¾m0Hb´êeæ™ËF#œ+á\Â¢¹Œ§Öp�È¾Y€0šÙa”�>7÷	ýïõk`þóàÚƒ•ß½ö ®Ã�ô®Ä/~ßÑGß]±S÷!Î!÷�qø¢hˆÊüpÊÄI2Çœ¹E3 ‰s¿Hx™ãå£ÙA–Žœa‰Š‹,É›˜cÏ¤2‘$q¹Aœlk2´¡¯7×Ý:Ò6¢…ÍnEäI†“9"VÓ#ÑQ�ý £Ú$kŠpÙ—Ïvû�þ€a¯ç}¡…Ã’ó#Rh¨0×
Ç5šÈ¦J u'„ìTªmk£Ëç¶pù=[7·Æ³ƒI¸ïé‰‡
!£º‰îÈ(Ñ¡(gæ„�¶ÔÎoOn±'·¶…ƒ"í.u~¢B"9˜ï	çC¶PÂ ã“ô³h7ˆÜCîCqWñðÔFß½¥M�ÄOtSÅD$ØRKhâÉq–*{œ}ypÜ"# ~ãX¶°X#,®ÆsòÔÉ»Žœ9}ò¾S÷-Þ}äž»î™êÉFšãn+ðqÃÝÍÔððØ«®m;õ`€z«‚@Ì€áXÓPã	£€R"Ï>jÈ#¿#«AâÌGîBÕYîµ#ÁTFb¬šm\è‰g«¥ž¸‘.à%¬ÊÜ·Ÿh.ä¦,fÞÕ™Îå=Ô&š½­ÎÖN³£ñW·_ØPj¿«ØÕp¿êî°z¬²lnà¤äÜ`´+\ls6Ø;º:ý8àØá¤,ƒ	u†¹£Á*ó�œŠ[ÕF™ÓÍ‰XoŒÆ¾ÞœHô&Zw o‘Ÿ�£œ7Ç4�Ê¦‚×bD+' <hÙ3ŸÞ¶ydKþ£Ï9ÍNÏ;<¶´Ð“–ÅæBø%ê™²ßlm�¦Ä„É†h‰çÌÍaT‡Éíõ6IVÙ·ªÏÆQÍß�çcÑ\+œYh.46†9ç®åËT}à$GÆ‹c—]b‰ÿ"ò!”%…³Ùyö] j�9ÃS7½ê©cöB*Ù†Z�)Àª·ÜtKo9â¨B5Y<×Ã/Ç ¨ªÕµG\u¤¯f2�•Ë»cM&[¹³Çjëí*IÀjÕ±~C"Ó@ùïbMjsJÝ˜ë±­³S3Ò‡;š»ÖçuˆÄnäÍowš(ƒÔ<§Z¥ÈrÑš@Þ¼6MâQ�Ë(dù˜`¦ìÓ‘iväø=">É�ËR³ŸA † lVÉ.Ûq…,,•{BÊJ‹�esBÂ0š‘.¿õø©—.�j=ùÝK§¨ré$ûÏáU¼ðø©K—N��¸têñSSxZ[«Ïaßm¤	1ÊVð‚Yb¦Îû`ˆ-Ñ|ÕÙ^W³›ý{ Ålª{“£)’�µîÃZ�$KšQé›•?ŽªYMúÁx1/N²Ýa=?¢×óñÊ/9M©Ê³;±»¯~ë[5_kûêBé²¹8ÂæÒï±Y‘\¡å>7†ðr´¸Í,e†¹*æW?êšaþÄIöESS#6àò,Î£jQx|…x.>‚„ˆËÆÌvW3_àêã�O�mnmëìõÃ†»`°×?x×`íaóÛÖºylzß–Þ®¾G7á+œ|ülõú^rO43O1K¸4¦øÖLPG€U�>ˆ£âæt^.ß”ª½V*ÕrÀß5ââE®n[€¾{'ûà`A¿Ls�}Ã¸ Ãu¿;½Z«oäŒ†ÀžØ ÿ`�}£° _ÿþœ[ç§7±hX5Ò&²TÖ:#63“‡cëáf€ÄgôÏÀ9öO¯³rýtMŒMDª•¿i‘`²~$¸X¢ ‚ñ†�Û÷üéX8ý¼¾_òôóÏŸ¡×Ÿ?­?9€WÎöŸÁ§×çFxHˆ}�¹Æcù€¨ÝjÖÔj&• %$ãÝìÅêRüE½ òÙ³ýõÿµKR/¼ºæ>Y›Ÿï`Y§Yb�0fSÕ¾§"<l�¥ct-7·ñ%*ZnŠ‘B£HõÏ£¾Ô¦Ï·•~¼ñÇ0‡V"‡¥òµkåÛíKÆš
Î	˜}y˜hß¦å—GõÀc}==†OÁSTêë¹9 !qB?x"OÓ#ôém› ²íiz_å¡/O¬Æn¼7¶1ºÒÒSÍM_ÞÕ¶õ«GžÞ†ÖÉŸn{ºò½ïé‰•þŽá¼(EûJ�Kí2Œ<#ÞãdWá²û*q_‹íiÜí }ö–‡þ9»ŽÛ}*¹e{¨·Y`¡'ñˆd(&Ó¸Çúçi»þ9‡ÃÖ@ßðµ|ÕÇZb’Š½¥FSô”‘¿mP=…µdarX@ˆ$˜[MÂ»Eµ®)ÛÑSsçp°ÈoÜÆêþÿYL™Åþ|põ&ù{ú{^yeRäûó¾<»W“_ã-º‘SŠ½”Q£2¢oãf©áè	œHÎÓ0yK¸IÕãtú<!5ät;Q‹±ohq‰�¾ùhÅ|êZÎø´'ÛÕíU»˜¾Ö»#5µãàÁS©ýÊDÌxp£×ëÈÁ›674lÞtàà‘·îzë-ýþ@«q×èã»8O/v‚™¤ŠmfÔºõœyDËó†Œå÷žò†ŸÃHgÎ7!´iz[ �ãû_¤WVøñgFîÀ:º3¾¤6A¼ªøªdG„–jiIÛ‘îàA¤»–2ôyjmýÔÐ»7k+_M,‰ íõ@#>c4¥?vcSéu2Œ#í¤£ØÞà½�ÕZe:ß #a¿âä�ï®•¬›ÙÆêª0c–E¢ªë”C¢‘ÙÙ?ßÔ¥RÛ&Ÿ›Ø–L÷ŽlŽ·®Kk)·ŽnJ7ŽÏLnK¥XÍ™‰R›v•o_!¼{n/ïZ/{eâ'SÅq	‰®%#ŒËœ®‹e»Äd\1%s„E#œÙNœˆÝßäó8ï6${“ju	
?ÎHÓ]I4ºó¼Þ¿	^ž�­œ†Qý;U4Ï3w¸Þ‹7ÎÃX¥‰~j¶ŠE
1]£¿%´xä[ÏÙ�ï‘ð­fË!úÆ)Ç•¶³Åjfa™7ÉL·û6S"l\,�é�ØlŸØf�l“þâ¶jS¦Åu[{‹MM‘`C¢)qƒ'Ò!´$cF�@Íº�ðA=P f7äÕÐé9!˜«Eþ‡1	6Où3ûgg¡ÁˆÌÍþn}–è§âÕ¼°D<ù2v²	©qˆå8oh¡¼0ˆk›ë
6
®n7‚œ8"6am�Ñ¶VZ…lˆ'pø¸Òô(Z‚ì;þ}.•èK¥†:bªÄ‚ù>ã+tQò‰ÆgèÝù¬Odi•¹8D3�e–e»AÄ4‚aH¾Úç)h"úòðöG¹] �\�WøþÖdö¶,ÿÝÝÊIã«”}SÎã�•ƒ0‘�É:Ž%7yŒ«““»4xë´ì	Ò`¿ÉÌi¿ŠUÐ’ß£ì8Æ>U	*Ç:é“�cs±Ð±èl¶ô±hÔ¿Ëþ±µ·¾   xœc`d`` âyé¬ññü6_¸™_ En0±9 èÿ»™_0ƒTr00�D’ô xœc`d``úŸ$_00€IFT ]Rõ xœc~ÁÀÀ<ŠéŽºåVK     * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p    xœu�ÝJÃ0ÅOÜüÚ@EÁ[s%±û aƒÉ¼Ñ›!»•®vmGÛ”4ì5|Æ—ðY<m3‘‰m~çäŸNà_¨ž{¾QU¼‡C-×è?X®“Ÿ,ï£‰Ëô_-7p‹ÀrxgQ?¦ZâÃ²À™8µ¼‡qe¹FÿÎr�<´¼�Kñlù€¾g¹�™È-7q->Ç*Ûè(�¼·d¯ÓíËùF*ZQêÆÒ]™Pé\ŽäB¥Æ�cåx*I\ãëÈ�§~°Š]½•Ûyæë<R©ì:�­õè§¾&¿ÝóuÐ3f!Z%rbûÊL«¥ï'4&´Û¿ÏÃ
6ÐˆxU!$nè¶8÷ÐA}Òœ’•UU„.b:.VÜ–+9õˆï‚*¥ë³"&;ðøM8ÜÒ-z»§ä€ûc*ýguWÏJÎ©Šî’¹¦Û­z$§¥®ü·Ÿì9Ö<­G×0a‘R—©$&;y%ï£X[Òñè;å­º´9þù¿o0ïƒ³   xœmR×rÛ0ÔZ�H;qzï=a§÷Þ{ïq†O"† @ dûëRöd<<€»¼Ãv�©Æduÿ_ó˜B-´ D]ôÐÇ4f°1‹MØŒ-ØŠmØŽØ‰]Ø�=Ø‹}Ø�8ˆC8Œ#8Šc8Ž8‰S8�3ˆpçps¸€‹¸„Ë¸‚«¸†ë¸�›¸…Û¸ƒ»¸‡ûx€‡x„Çx‚§x†çx�—x…×xƒ·x‡÷ø€�ø„Ïø‚¯ø†ïø�Ÿø…ß˜ÇŸKuNl!æY0Ðf›dª,š‰0�.HùoÛ�ÔqÂ*ÚÊ³êOž„¤)“·œ‰m²Nb\ËM^ºV[GÁ�\•×IÊB
;ò¥Tì»Q"\g±<“ZgmöÂD�UÝI¨�hÉ×æ.ˆOÅˆØHÐ¸Sm‘Ö±”dáËY±BL
•µ-U™ÌjãB£�ï™5 CE.×¥r]JUÃv!cN¶ÅÓ\'í˜s*ËI•!×r,—v¥”–"Õ/Õ?Ò¢¼pË¬T‰f†Ý-ÈkãÔ	Õ±$‰»XÊî)­¨?�B�È8&5ÏZ™Ü†¥ª%�]Î+1�ZX¼ ©Å¥¶Ä
YZ¯Ö•Æ�@¨Ò6Ó$iÚE$Fz©7Ôz()1ÞªÐ·ªA³
TFE\.‰åÚiã•ÏB{•ÕkQ¯bÄ”÷}zQFÿÔÎ®c‘úõ¥V�5¡¼‡Ä³™Ø=v©k4ÙõTuyìDÕ�Ã	,‹^ew4™b¿N_-:‘çfÚ?Hå/ÅÒ{Ö›4b˜ºÕz’®-õP—®~°ŠÆÍQ°T$Ôhü¾ûT  xœcðÞÁp"(b##c_äÆ�ÉX�6102h�›¹˜9 ,>0‹ÍiÓ 4'�Íî´‹ÁÂffpÙ¨ÂØ±Á¡#b#sŠËF5oG#‹CGrHHI$læabäÑÚÁø¿uKïF& v#ô                                                                                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/Material-Gray/icons/material.svg                                   0000644                 00000063132 15266052702 0021060 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

<glyph glyph-name="back" unicode="&#xe801;" d="M813 390h-475l218 218-56 55-312-313 312-312 54 54-219 218h478v80z" horiz-adv-x="1000" />

<glyph glyph-name="forward" unicode="&#xe802;" d="M500 663l-54-55 219-218h-477v-80h475l-219-218 56-54 313 312-313 313z" horiz-adv-x="1000" />

<glyph glyph-name="up" unicode="&#xe803;" d="M540 38h-82v472l-214-216-56 56 312 313 313-313-57-56-216 216v-472z" horiz-adv-x="1000" />

<glyph glyph-name="dir" unicode="&#xe804;" d="M417 683h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83h-333l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="opendir" unicode="&#xe805;" d="M752 35h-589c-44 0-80 36-80 80v470c0 44 36 80 80 80h235l79-80h273c44 0 79-35 79-79l0 0h-666v-393l85 314h669l-90-333c-8-34-39-59-75-59z" horiz-adv-x="1000" />

<glyph glyph-name="reload" unicode="&#xe806;" d="M354 615l61-75h275c20 0 37-17 37-38v-189h-114l152-190 152 190h-115v189c0 63-52 115-114 115l-334-2 0 0z m-119-38l-152-189h115v-190c0-63 52-115 115-115h333l-61 75h-275c-20 0-37 17-37 38v189h115l-153 192z" horiz-adv-x="1000" />

<glyph glyph-name="open" unicode="&#xe807;" d="M833 100h-666v417h666m0 83h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="mkdir" unicode="&#xe808;" d="M833 600h-333l-83 83h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z m-41-333h-125v-125h-84v125h-125v83h125v125h84v-125h125v-83z" horiz-adv-x="1000" />

<glyph glyph-name="mkfile" unicode="&#xe809;" d="M542 475h229l-229 229v-229m-292 292h333l250-250v-500c0-46-37-84-83-84h-500c-46 0-83 38-83 84v666c0 46 37 84 83 84m208-542v125h-83v-125h-125v-83h125v-125h83v125h125v83h-125z" horiz-adv-x="1000" />

<glyph glyph-name="rm" unicode="&#xe80a;" d="M223 25c0-52 42-92 92-92h370c53 0 92 42 92 92v556h-554v-556z m602 696h-162l-46 46h-234l-45-46h-163v-92h648l2 92 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="trash" unicode="&#xe80b;" d="M896 767l-133-759c-9-41-44-75-88-75h-350c-44 0-81 32-87 75l-134 759h792m-688-88l117-658h350l117 658h-584m161-571v175h175v-175h-175m175 213l-140 139 140 140 139-140-139-139z" horiz-adv-x="1000" />

<glyph glyph-name="restore" unicode="&#xe80c;" d="M560 706c-197 0-358-160-358-356h-119l159-158 158 158h-119c0 154 125 277 277 277s277-125 277-277-125-277-277-277c-60 0-114 21-160 52l-56-56c60-48 137-73 218-73 198 0 357 160 357 356s-161 354-357 354m80-356c0 44-36 79-80 79s-79-37-79-79 36-79 79-79 80 35 80 79z" horiz-adv-x="1000" />

<glyph glyph-name="copy" unicode="&#xe80d;" d="M671 767h-454c-42 0-75-34-75-75v-532h75v532h454v75z m112-152h-416c-42 0-75-34-75-75v-532c0-41 33-75 75-75h416c42 0 75 34 75 75v532c2 41-33 75-75 75z m0-607h-416v532h416v-532z" horiz-adv-x="1000" />

<glyph glyph-name="cut" unicode="&#xe80e;" d="M402 531c11 21 15 44 15 69 0 92-75 167-167 167s-167-75-167-167 75-167 167-167c25 0 48 7 69 15l98-98-98-98c-21 11-44 15-69 15-92 0-167-75-167-167s75-167 167-167 167 75 167 167c0 25-7 48-15 69l98 98 292-292h125v42l-515 514z m-152-14c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m0-500c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m250 312c-10 0-21 11-21 21s11 21 21 21 21-11 21-21-11-21-21-21z m292 396l-250-250 83-83 292 291v42h-125z" horiz-adv-x="1000" />

<glyph glyph-name="paste" unicode="&#xe80f;" d="M765 692h-159c-14 43-56 75-106 75s-92-32-106-75h-159c-41 0-75-34-75-75v-607c0-41 34-75 75-75h532c41 0 75 34 75 75v605c0 41-36 77-77 77z m-265 0c21 0 38-17 38-38s-17-39-38-39-37 16-37 37 16 40 37 40z m265-684h-530v607h75v-115h380v115h75v-607z" horiz-adv-x="1000" />

<glyph glyph-name="getfile" unicode="&#xe810;" d="M250 767l500-467-242-21 138-304-92-42-133 309-171-163v688" horiz-adv-x="1000" />

<glyph glyph-name="duplicate" unicode="&#xe811;" d="M850 510l-115 115c-2 2-6 4-10 4h-52v6c0 5-2 7-4 11l-115 114c-2 5-6 7-10 7h-356c-23 0-42-19-42-42v-617c0-23 19-41 42-41h139v-92c0-23 19-42 42-42h444c22 0 41 19 41 42v527c0 2-2 6-4 8z m-658-395v606h329v-92c0-8 8-16 17-16h89v-498h-435z m618-136h-437v92h260c23 0 42 19 42 42v472h29v-91c0-9 9-17 17-17h89v-498z m-118 117v-81c0-7 4-11 10-11h31c30 0 52 23 52 52 3 27-22 50-52 50h-31c-6 0-10-4-10-10z m23-13h18c17 0 30-12 30-29 0-14-13-27-30-27h-18v56z" horiz-adv-x="1000" />

<glyph glyph-name="rename" unicode="&#xe812;" d="M500 725v-83h83c23 0 42-19 42-42v-500c0-23-19-42-42-42h-83v-83h83c32 0 61 12 84 33 23-21 52-33 83-33h83v83h-83c-23 0-42 19-42 42v42h167 42v41 334 41h-42-167v42c0 23 19 42 42 42h83v83h-83c-31 0-60-12-83-33-23 21-52 33-84 33h-83z m-417-167v-41-334-41h42 375v83h-333v250h333v83h-375-42z m625-83h125v-250h-125v250z m-458-83v-84h208v84h-208z" horiz-adv-x="1000" />

<glyph glyph-name="edit" unicode="&#xe813;" d="M83 106v-173h173l513 513-173 173-513-513z m819 473c19 19 19 48 0 65l-108 108c-19 19-48 19-65 0l-85-85 173-173c2 0 85 85 85 85z" horiz-adv-x="1000" />

<glyph glyph-name="quicklook" unicode="&#xe814;" d="M500 633c-190 0-352-116-417-283 65-167 227-283 417-283s352 116 417 283c-65 167-227 283-417 283z m0-473c-104 0-190 86-190 190s86 190 190 190 190-86 190-190-86-190-190-190z m0 305c-62 0-115-50-115-115s50-115 115-115 115 50 115 115-52 115-115 115z" horiz-adv-x="1000" />

<glyph glyph-name="upload" unicode="&#xe815;" d="M352 129h294v294h196l-342 344-344-344h196v-294z m-196-98h686v-98h-686v98z" horiz-adv-x="1000" />

<glyph glyph-name="download" unicode="&#xe816;" d="M844 473h-196v294h-296v-294h-196l344-344 344 344z m-688-442v-98h686v98h-686z" horiz-adv-x="1000" />

<glyph glyph-name="info" unicode="&#xe817;" d="M458 142h84v250h-84v-250z m42 625c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333z m-42 458h84v83h-84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="extract" unicode="&#xe818;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-198l254-254h-162v-92h-186v92h-162l256 254z m-319 208l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="archive" unicode="&#xe819;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-569l-254 254h162v92h186v-92h162l-256-254z m-319 579l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="view" unicode="&#xe81a;" d="M83 481h175v175h-175v-175z m0-218h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m-221 218h175v175h-175v-175z m221 175v-175h175v175h-175z m219-393h175v175h-175v-175z m-659-219h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m219 0h175v175h-175v-175z m0 612v-175h175v175h-175z" horiz-adv-x="1000" />

<glyph glyph-name="view-list" unicode="&#xe81b;" d="M83 252h196v196h-196v-196z m0-246h196v196h-196v-196z m0 492h196v196h-196v-196z m246-246h588v196h-588v-196z m0-246h588v196h-588v-196z m0 688v-196h588v196h-588z" horiz-adv-x="1000" />

<glyph glyph-name="help" unicode="&#xe81c;" d="M458 100h84v83h-84v-83m42 667c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333m0 583c-92 0-167-75-167-167h84c0 46 37 84 83 84s83-38 83-84c0-83-125-73-125-208h84c0 94 125 104 125 208 0 92-75 167-167 167z" horiz-adv-x="1000" />

<glyph glyph-name="resize" unicode="&#xe81d;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m750 0v-83h84v83h-84z m-500-41v-84h192l-210-208h-232v-83-125c0-46 38-84 84-84h208v84 148l208 210v-192h84v292 42h-42-292z m-250-125v-84h84v84h-84z m750 0v-84h84v84h-84z m0-167v-83h84v83h-84z m0-167v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-375-41v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="link" unicode="&#xe81e;" d="M163 350c0 71 58 129 129 129h166v79h-166c-115 0-209-93-209-208s94-208 209-208h166v79h-166c-71 0-129 58-129 129z m170-42h334v84h-334v-84z m375 250h-166v-79h166c71 0 130-58 130-129s-59-129-130-129h-166v-79h166c115 0 209 93 209 208s-94 208-209 208z" horiz-adv-x="1000" />

<glyph glyph-name="search" unicode="&#xe81f;" d="M679 242h-37l-13 12c46 54 75 125 75 202-2 171-139 311-310 311s-311-140-311-311 140-310 311-310c77 0 148 27 202 75l12-13v-37l238-238 71 71-238 238z m-285 0c-119 0-215 96-215 214s96 215 215 215 214-96 214-215-98-214-214-214z" horiz-adv-x="1000" />

<glyph glyph-name="sort" unicode="&#xe820;" d="M394 635l133 132 131-132h-264m264-570l-131-132-131 132h262m-277 191h-116l-32-110h-95l125 406h122l128-406h-100l-32 110m-104 67h92l-25 85-11 40-10 40h-2l-8-40-11-40-25-85m273-177v52l194 275v2h-175v77h294v-54l-190-271v-2h192v-77l-315-2 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-r" unicode="&#xe821;" d="M658 567l-200 200v-136c-173-21-308-168-308-350s133-327 308-348v90c-125 21-220 129-220 260s95 238 220 259v-171l200 196z m192-240c-8 61-31 121-71 171l-62-63c23-33 37-70 46-108h87z m-304-304v-90c60 9 121 32 171 71l-63 63c-33-23-71-38-108-44z m171 106l62-62c40 52 65 110 71 171h-90c-4-38-20-75-43-109z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-l" unicode="&#xe822;" d="M283 435l-62 63c-40-52-65-110-71-171h90c4 38 20 75 43 108z m-45-197h-88c8-61 31-121 71-171l62 62c-23 34-39 71-45 109z m45-234c52-39 111-62 171-71v90c-37 6-75 21-108 46 0-2-63-65-63-65z m259 627v136l-200-200 200-196v173c125-21 221-129 221-261s-96-239-221-260v-90c173 21 308 169 308 350s-133 327-308 348z" horiz-adv-x="1000" />

<glyph glyph-name="netmount" unicode="&#xe823;" d="M708 767c46 0 84-38 84-84v-416c0-46-38-84-84-84h-166v-83h41c23 0 42-19 42-42h292v-83h-292c0-23-19-42-42-42h-166c-23 0-42 19-42 42h-292v83h292c0 23 19 42 42 42h41v83h-166c-46 0-84 38-84 84v416c0 46 38 84 84 84h416z" horiz-adv-x="1000" />

<glyph glyph-name="netunmount" unicode="&#xe824;" d="M917 342c4 229-179 421-409 425-231 4-420-179-425-409-4-229 180-421 409-425s421 180 425 409z m-750 14c4 184 156 332 339 327 77-2 148-29 202-73l-475-458c-43 56-68 127-66 204z m125-266l475 458c43-56 68-129 66-206-4-184-154-332-339-327-77 4-148 31-202 75z" horiz-adv-x="1000" />

<glyph glyph-name="places" unicode="&#xe825;" d="M750 767h-500c-46 0-83-38-83-84v-666c0-46 37-84 83-84h500c46 0 83 38 83 84v666c0 46-37 84-83 84z m-500-84h208v-333l-104 63-104-63v333z" horiz-adv-x="1000" />

<glyph glyph-name="chmod" unicode="&#xe826;" d="M381 302l-298 83 55 167 291-119-19 334h186l-19-334 286 113 54-173-298-83 196-250-148-107-173 273-167-262-148 102 202 256z" horiz-adv-x="1000" />

<glyph glyph-name="accept" unicode="&#xe827;" d="M500 767c-231 0-417-186-417-417 0-229 186-417 417-417 229 0 417 188 417 417 0 231-188 417-417 417z m-83-625l-209 208 59 58 150-150 316 317 59-58-375-375z" horiz-adv-x="1000" />

<glyph glyph-name="menu" unicode="&#xe828;" d="M83 73h834v92h-834v-92z m0 231h834v92h-834v-92z m0 323v-92h834v92h-834z" horiz-adv-x="1000" />

<glyph glyph-name="colwidth" unicode="&#xe829;" d="M377 31h246v638h-246v-638z m-294 0h246v638h-246v-638z m588 638v-638h246v638h-246z" horiz-adv-x="1000" />

<glyph glyph-name="fullscreen" unicode="&#xe82a;" d="M202 231h-119v-298h298v119h-179v179z m-119 238h119v179h179v119h-298v-298z m715-417h-179v-119h298v298h-119v-179z m-179 715v-119h179v-179h119v298h-298z" horiz-adv-x="1000" />

<glyph glyph-name="unfullscreen" unicode="&#xe82b;" d="M83 113h180v-180h118v298h-298v-118z m180 475h-180v-119h298v298h-118c0 0 0-179 0-179z m356-655h119v180h179v118h-298v-298z m119 655v179h-119v-298h298v119c0 0-179 0-179 0z" horiz-adv-x="1000" />

<glyph glyph-name="empty" unicode="&#xe82c;" d="M813 463l-42-75-531 304 43 75 134-77 58 18 190-108 16-60 132-77m-628-442v525h221l302-175v-350c0-48-39-88-87-88h-348c-48 0-88 40-88 88z" horiz-adv-x="1000" />

<glyph glyph-name="undo" unicode="&#xe82d;" d="M375 767l-292-209 292-208v125h188c106 0 187-81 187-187s-81-188-187-188h-480v-167h480c195 0 354 159 354 355s-159 354-354 354h-188v125z" horiz-adv-x="1000" />

<glyph glyph-name="redo" unicode="&#xe82e;" d="M625 767v-125h-187c-196 0-355-159-355-354s159-355 355-355h479v167h-479c-107 0-188 81-188 188s81 187 188 187h187v-125l292 208-292 209z" horiz-adv-x="1000" />

<glyph glyph-name="preference" unicode="&#xe82f;" d="M810 310c3 13 3 28 3 42s-3 27-3 42l88 69c8 6 10 16 4 27l-83 143c-6 9-17 13-25 9l-104-42c-21 17-46 31-71 42l-15 108c-2 8-10 17-21 17h-166c-11 0-19-9-21-17l-17-110c-25-11-48-25-71-42l-104 42c-8 4-21 0-25-9l-83-143c-6-9-2-21 4-28l90-68c0-15-2-27-2-42s2-27 2-42l-88-68c-8-7-10-17-4-27l83-144c7-9 17-13 25-9l104 42c21-17 46-31 71-42l17-110c2-10 10-17 21-17h166c11 0 19 9 21 17l17 110c25 11 48 25 71 42l104-42c10-4 21 0 25 9l83 144c7 8 2 20-4 27l-92 70z m-310-106c-81 0-146 65-146 146s65 146 146 146 146-65 146-146-65-146-146-146z" horiz-adv-x="1000" />

<glyph glyph-name="mkdirin" unicode="&#xe830;" d="M583 100v125h-166v167h166v125l209-209m41 292h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="selectall" unicode="&#xe831;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-166v-84h84v84h-84z m209 0v-84h416v84h-416z m541 0v-84h84v84h-84z m-750-167v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-167v-41c0-46 38-84 84-84h41v84h-41v41h-84z m750 0v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-541-41v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="selectnone" unicode="&#xe832;" d="M83 683c0 46 38 84 84 84h125v-84h-125v-125h-84v125m834 0v-125h-84v125h-125v84h125c46 0 84-38 84-84m-84-666v125h84v-125c0-46-38-84-84-84h-125v84h125m-750 0v125h84v-125h125v-84h-125c-46 0-84 38-84 84m334 750h166v-84h-166v84m0-750h166v-84h-166v84m416 416h84v-166h-84v166m-750 0h84v-166h-84v166z" horiz-adv-x="1000" />

<glyph glyph-name="selectinvert" unicode="&#xe833;" d="M175 767h92v-92h91v92h92v-92h92v92h91v-92h92v92h92v-92h100v-92h-92v-91h92v-92h-92v-92h92v-91h-92v-92h92v-92h-92v-100h-92v92h-91v-92h-92v92h-92v-92h-91v92h-92v-92h-100v92h-92v92h92v91h-92v92h92v92h-92v91h92v92h-92v100h92v92z" horiz-adv-x="1000" />

<glyph glyph-name="lock" unicode="&#xe834;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-361 79c0 69 54 123 123 123s123-54 123-123v-79h-246v79z m361-556h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="perms" unicode="&#xe835;" d="M738 490h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-238-359c-44 0-79 36-79 79s35 80 79 80 79-36 79-80-35-79-79-79z m123 359h-246v79c0 69 54 123 123 123s123-54 123-123v-79z" horiz-adv-x="1000" />

<glyph glyph-name="unlocked" unicode="&#xe836;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198h75c0 69 54 123 123 123s123-54 123-123v-79h-360c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m0-477h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="symlink" unicode="&#xe837;" d="M917 373l-325 325v-185c-323-46-463-280-509-511 117 163 277 236 509 236v-190l325 325z" horiz-adv-x="1000" />

<glyph glyph-name="resizable" unicode="&#xe838;" d="M917-67h-167v167h167v-167m0 334h-167v166h167v-166m-334-334h-166v167h166v-167m0 334h-166v166h166v-166m-333-334h-167v167h167v-167m667 667h-167v167h167v-167z" horiz-adv-x="1000" />

<glyph glyph-name="close" unicode="&#xe839;" d="M917 683l-84 84-333-334-333 334-84-84 334-333-334-333 84-84 333 334 333-334 84 84-334 333 334 333z" horiz-adv-x="1000" />

<glyph glyph-name="plus" unicode="&#xe83a;" d="M917 290h-357v-357h-118v357h-359v118h357v359h118v-357h359v-120z" horiz-adv-x="1000" />

<glyph glyph-name="return" unicode="&#xe83b;" d="M513 494c-109 0-207-40-282-106l-146 145v-366h367l-148 150c56 48 129 77 209 77 143 0 266-94 308-225l96 31c-54 171-215 294-404 294z" horiz-adv-x="1000" />

<glyph glyph-name="minus" unicode="&#xe83c;" d="M917 292h-834v118h834v-118z" horiz-adv-x="1000" />

<glyph glyph-name="hdd" unicode="&#xe83d;" d="M167 767l-84-500h834l-84 500h-666z m-84-542v-292h834v292h-834z m84-83h41v-84h42v84h42v-84h41v84h42v-84h42v84h41v-84h42v84h42v-84h41v84h42v-84-41h-42-41-42-42-41-42-42-41-42-42-41v41 84z m604 0c35 0 62-27 62-63s-27-62-62-62-63 27-63 62 27 63 63 63z" horiz-adv-x="1000" />

<glyph glyph-name="sql" unicode="&#xe83e;" d="M500 767c-85 0-162-15-223-40-29-12-56-27-75-48s-35-48-35-79v-333-167c0-31 14-58 35-79s46-38 75-50c61-23 138-38 223-38s163 15 223 40c29 12 56 29 75 50s35 46 35 77v167 333c0 31-14 58-35 79s-46 36-75 48c-60 25-138 40-223 40z m0-84c75 0 144-14 190-33 23-10 39-21 50-29s10-17 10-21 0-10-10-19-27-21-50-29c-46-21-115-35-190-35s-144 14-190 33c-22 10-39 21-50 29s-10 17-10 21 0 10 10 19 28 21 50 29c46 21 115 35 190 35z m-250-195c8-5 17-11 27-15 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 15v-55c0-4-2-10-10-20s-27-21-50-30c-46-20-113-33-190-33s-144 13-190 33c-22 11-39 21-50 30s-10 16-10 20v55z m0-167c8-4 17-11 27-15 61-25 138-39 223-39s163 14 223 39c10 4 19 11 27 15v-54c0-4-2-11-10-21s-27-21-50-29c-46-21-113-34-190-34s-144 13-190 34c-22 10-39 21-50 29s-10 17-10 21v54z m0-167c8-4 17-10 27-14 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 14v-54c0-4-2-10-10-21s-27-21-50-29c-46-21-113-33-190-33s-144 12-190 33c-22 10-39 21-50 29s-10 17-10 21v54z" horiz-adv-x="1000" />

<glyph glyph-name="dropbox" unicode="&#xe83f;" d="M665 123l-165 125-160-125-94 56v-60l254-169 256 167v60l-91-54z m252 471l-246 156-171-140 256-150 161 134z m-834-269l252-150 165 127-242 154-175-131z m252 425l-252-162 175-132 242 154-165 140z m165-448l167-127 250 150-161 135-256-158z" horiz-adv-x="1000" />

<glyph glyph-name="googledrive" unicode="&#xe840;" d="M898 254l-267 463h-262l0 0 266-463h263z m-488-39l-131-232h506l132 232h-507l0 0z m-77 443l-250-443 132-232 254 444-136 231z" horiz-adv-x="1000" />

<glyph glyph-name="onedrive" unicode="&#xe841;" d="M544 602c-75 0-142-44-173-106-19 10-42 17-65 17-75 0-133-61-133-134 0-6 2-10 2-16-52-7-92-50-92-105 0-58 46-104 105-104h83c-4 15-8 29-8 44 0 58 37 108 89 127 11 88 88 156 177 156 54 0 104-23 138-64 12 4 27 6 41 6 11 0 19 0 30-2-7 102-90 181-194 181z m-15-148c-81 0-148-66-148-148v-2c-50-6-89-50-89-102 0-58 46-104 104-104h431c50 0 90 40 90 90s-40 89-90 89c0 67-54 119-119 119-18 0-35-4-52-13-27 42-73 71-127 71z" horiz-adv-x="1000" />

<glyph glyph-name="box" unicode="&#xe842;" d="M898 365c-38 93-113 139-213 145-14 3-20 7-25 19-12 36-35 67-66 90-104 79-265 29-306-94-3-8-13-17-21-21-29-14-63-23-88-41-81-59-114-165-83-257 33-98 123-162 227-162h175c60 0 123-2 185 0 67 2 125 25 169 73 65 71 83 156 46 248z m-100-244c-15-11-29-6-40 8-14 19-29 40-45 61-17-21-30-40-44-59-9-12-21-23-38-12s-16 25-8 41c-58-62-117-58-198 11-23-29-50-48-85-54-67-13-138 43-138 110v192c0 21 13 33 27 33 17 0 27-12 27-33v-84c32 19 63 23 94 17 31-8 56-25 75-54 4 2 6 6 8 8 50 59 125 63 182 11l8-9c-10 17-10 32 2 40 17 10 29 2 40-10 14-19 29-38 45-59 13 15 25 29 36 44 4 6 8 12 12 17 13 14 27 16 40 6 15-13 12-25 2-40-15-18-29-39-44-58-8-10-8-17 0-27 17-19 32-40 46-61 11-16 8-31-4-39z m-473 179c-37 0-67-29-67-65 0-37 27-64 65-64s65 27 67 62c0 38-27 67-65 67z m202 0c-37 0-67-29-67-65 0-37 30-64 67-64 38 0 67 27 67 62 0 36-31 67-67 67z m106-4c2-6 5-13 5-19 14-37 10-75-13-108 17 19 31 37 46 58 4 4 2 15-2 19-11 17-23 33-36 50z" horiz-adv-x="1000" />

<glyph glyph-name="help-circle" unicode="&#xe843;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-709h-84v84h84v-84z m85 323l-37-37c-30-31-48-56-48-119h-84v21c0 46 19 87 48 119l52 52c15 14 25 35 25 58 0 46-37 83-83 83s-83-37-83-83h-84c0 92 75 167 167 167s167-75 167-167c0-37-15-71-40-94z" horiz-adv-x="1000" />

<glyph glyph-name="move" unicode="&#xe844;" d="M425 465h152v114h115l-192 188-190-190h115v-112z m-40-40h-114v115l-188-190 190-190v115h115v150z m532-75l-190 190v-115h-114v-152h114v-115l190 192z m-342-115h-152v-114h-115l192-188 190 190h-115v112z" horiz-adv-x="1000" />

<glyph glyph-name="save" unicode="&#xe845;" d="M731 767h-556c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c52 0 92 42 92 92v556l-184 186z m-231-742c-77 0-140 63-140 140s63 139 140 139 140-62 140-139-63-140-140-140z m140 465h-465v185h463v-185z" horiz-adv-x="1000" />

<glyph glyph-name="loading" unicode="&#xe846;" d="M500 577v-114l152 152-152 152v-115c-167 0-302-135-302-302 0-60 17-115 48-160l56 56c-17 31-27 67-27 106-2 123 100 225 225 225z m256-67l-56-56c17-31 27-66 27-106 0-125-102-227-227-227v114l-152-152 152-150v115c167 0 302 135 302 302 0 60-17 115-46 160z" horiz-adv-x="1000" />

<glyph glyph-name="info-circle" unicode="&#xe847;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-625h-84v250h84v-250z m0 333h-84v83h84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="prev" unicode="&#xe848;" d="M758 669l-100 98-416-417 416-417 98 98-316 319 318 319z" horiz-adv-x="1000" />

<glyph glyph-name="next" unicode="&#xe849;" d="M342 767l-98-98 316-319-318-319 98-98 416 417-414 417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen" unicode="&#xe84a;" d="M500 767l171-171-417-417-171 171v-417h417l-171 171 417 417 171-171v417h-417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen-off" unicode="&#xe84b;" d="M858 767l-177-177-118 118-59-354 354 59-118 118 177 177-59 59z m-362-421l-354-58 118-119-177-177 59-59 177 177 119-118 58 354z" horiz-adv-x="1000" />

<glyph glyph-name="close-circle" unicode="&#xe84c;" d="M500 767c231 0 417-186 417-417s-186-417-417-417-417 186-417 417 186 417 417 417m150-209l-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150 58 58-150 150 150 150-58 58z" horiz-adv-x="1000" />

<glyph glyph-name="pin" unicode="&#xe84d;" d="M667 350v333h41v84h-416v-84h41v-333l-83-83v-84h217v-250h66v250h217v84l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="check" unicode="&#xe84e;" d="M348 167l-198 198-67-69 265-265 569 569-67 67-502-500z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-s" unicode="&#xe84f;" d="M498-67l290 290-75 73-163-163-2 634h-104l2-634-163 159-73-75 288-284z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-n" unicode="&#xe850;" d="M502 767l-289-290 72-73 165 163v-634h104v634l163-163 73 75-288 288z" horiz-adv-x="1000" />

<glyph glyph-name="caret-down" unicode="&#xe851;" d="M902 569c-10 10-23 14-37 14h-730c-14 0-27-4-37-14s-15-23-15-38c0-14 5-27 15-37l365-365c10-10 22-14 37-14s27 4 38 14l364 367c11 10 15 23 15 37 0 13-4 25-15 36z" horiz-adv-x="1000" />

<glyph glyph-name="caret-up" unicode="&#xe852;" d="M917 165c0 14-4 27-15 37l-364 367c-11 10-23 14-38 14s-27-4-37-14l-365-365c-10-10-15-21-15-37s5-27 15-38 23-14 37-14h730c14 0 27 4 37 14s15 23 15 36z" horiz-adv-x="1000" />

<glyph glyph-name="menu-resize" unicode="&#xe853;" d="M627 767c0-277 0-554 0-834-31 0-62 0-94 0 0 277 0 557 0 834 32 0 63 0 94 0z m-160 0c0-277 0-554 0-834-32 0-63 0-94 0 0 277 0 555 0 834 31 0 62 0 94 0z" horiz-adv-x="1000" />

<glyph glyph-name="arrow-circle" unicode="&#xe854;" d="M500 767c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417z m0-577l-260 260 60 60 200-200 200 200 60-60-260-260z" horiz-adv-x="1000" />

<glyph glyph-name="tn-error" unicode="&#xe855;" d="M500 767l-342-152v-227c0-211 146-407 342-455 196 48 342 244 342 455v227l-342 152z m38-257v-227h-75v227h75z m-38-385c-27 0-50 23-50 50 0 27 23 50 50 50l0 0c27 0 50-23 50-50l0 0c0-27-23-50-50-50" horiz-adv-x="1000" />

<glyph glyph-name="warning-alert" unicode="&#xe856;" d="M538 256h-75v152h75m0-304h-75v75h75m-455-189h834l-417 720-417-720z" horiz-adv-x="1000" />

<glyph glyph-name="caret-right" unicode="&#xe857;" d="M719 388l-365 364c-10 11-23 15-35 15-13 0-27-4-38-15s-14-23-14-37v-730c0-14 4-27 14-37s23-15 38-15c14 0 27 4 37 15l365 365c10 10 14 22 14 37 0 15-6 27-16 38z" horiz-adv-x="1000" />

<glyph glyph-name="caret-left" unicode="&#xe858;" d="M281 388l365 364c10 11 23 15 35 15 15 0 27-4 38-15s14-23 14-37v-730c0-14-4-27-14-37s-23-15-38-15-27 4-37 15l-363 365c-10 10-14 22-14 37 0 15 4 27 14 38z" horiz-adv-x="1000" />

<glyph glyph-name="logout" unicode="&#xe85a;" d="M546 767h-92v-463h92v463z m225-100l-67-67c73-60 119-150 119-250 0-179-146-325-325-325s-323 146-323 325c0 102 46 192 119 250l-65 67c-89-77-146-190-146-317 0-229 188-417 417-417s417 188 417 417c0 127-57 240-146 317z" horiz-adv-x="1000" />

<glyph glyph-name="opennew" unicode="&#xe85b;" d="M592 767v-92h166l-454-456 67-67 454 454v-166h92v327m-92-742h-650v650h325v92h-325c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c50 0 92 42 92 92v325h-92l2-325 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="zip" unicode="&#xe85c;" d="M594 119h-94v91h-92v92h92v-92h92m2 280h-94v-92h92v-92h-92v92h-92v92h92v91h-92v94h92v-92h92m233 184h-648c-52 0-94-42-94-92v-648c0-52 42-94 94-94h648c50 0 92 42 92 92v650c0 50-42 92-92 92z" horiz-adv-x="1000" />

<glyph glyph-name="hide" unicode="&#xe85d;" d="M494 483l121-118c0 2 0 4 0 6 0 62-50 114-115 114-2-2-4-2-6-2m-163-31l59-58c-2-9-2-17-2-25 0-63 50-115 114-115 8 0 17 2 25 2l58-58c-25-13-54-21-83-21-104 0-189 86-189 190-3 31 6 60 18 85m-210 211l85-86 17-17c-63-50-113-114-142-189 65-167 227-283 417-283 58 0 115 10 167 31l16-17 111-110 48 48-671 670m331-152c104 0 190-85 190-189 0-25-5-48-15-69l110-110c57 48 103 110 130 179-65 166-227 283-417 283-52 0-104-10-152-27l81-81c25 10 48 14 73 14z" horiz-adv-x="1000" />
</font>
</defs>
</svg>                                                                                                                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/Material-Gray/images/icons-big.svg                                 0000644                 00000055525 15266052702 0021275 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1998"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M25.3 1965.3l-5 17.5h2.5l5-17.5h-2.5zm-8.8 2.5l-5 6.3 5 6.3H19l-5-6.4 5-6.3-2.5.1zm12.5 0l5 6.3-5 6.3h2.5l5-6.3-5-6.3H29z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M20.6 1914.9v2.3h-4.9c-.4-.7-1.2-1.1-2-1.1a2.26 2.26 0 1 0 0 4.6c.8 0 1.6-.4 2-1.1h2.7c-1.5 1.4-2.4 3.5-2.4 5.7v1.1h-2.3v6.8h6.8v-6.8h-2.3v-1.1c0-1.9.9-3.5 2.3-4.5v1.1h6.8v-1.1c1.4 1 2.3 2.7 2.3 4.5v1.1h-2.3v6.8h6.8v-6.8H32v-1.1c0-2.2-.9-4.2-2.4-5.7h2.7c.4.7 1.2 1.1 2 1.1a2.26 2.26 0 1 0 0-4.6c-.8 0-1.6.4-2 1.1h-4.9v-2.3h-6.8zm2.3 2.3h2.3v2.3h-2.3v-2.3zm-6.9 11.3h2.3v2.3H16v-2.3zm13.7 0H32v2.3h-2.3v-2.3z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M24 1861.4c-2.9 0-5.5.5-7.4 1.4-1 .4-1.8 1-2.3 1.6-.6.6-.9 1.3-.9 2.1v14.8c0 .8.4 1.5.9 2.1s1.4 1.1 2.3 1.6c1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c1-.4 1.8-1 2.3-1.6.6-.6.9-1.3.9-2.1v-14.8c0-.8-.4-1.5-.9-2.1-.6-.6-1.4-1.1-2.3-1.6-1.9-.9-4.5-1.4-7.4-1.4zm0 1c2.8 0 5.2.5 7 1.3.9.4 1.6.9 2 1.3s.7 1 .7 1.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4c0-.5.2-1 .7-1.4s1.1-.9 2-1.3c1.8-.7 4.2-1.3 7-1.3zm-9.7 6.3c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.1c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.2c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.4z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M24 1825.3h7.3c.2 0 .1 0 .2.1.1.4 0 .8 0 1.2v1.1c0 .1-.1.1-.2.1h-7c-.2 0-.2 0-.2-.1v-1.4c-.1-.3-.1-.7-.1-1zm-4.8 1.6s.1.2.1.3v.6h.8c.1 0 0 0 .1-.1s0-.4 0-.5v-.3c0-.1 0 0 .1-.1s.3-.1.5-.2c1-.4 1.5-1.9.7-2.7-.1-.1-.4-.2-.6-.3s-.5-.2-.7-.3c-.3-.1-1.2-.4-.9-.9s1.1-.3 1.6-.2c.1 0 .2.1.4.1.2.1.2 0 .2-.1s.1-.3.1-.4.2-.4.1-.5-.3-.1-.4-.1-.3-.1-.4-.1h-.4c-.1 0-.1 0-.1-.1v-.7c-.1-.1-.6 0-.7 0h-.2c-.1.1 0 .4 0 .4v.4c-.1.1-.3.1-.4.1-.6.2-.9.6-1.1 1.2-.1.3-.1.6.1.9s.5.5.7.7c.5.3 1 .4 1.5.7.2.1.5.4.4.6s-.5.4-.7.4c-.3.1-.7 0-1.1-.1-.2 0-.3-.1-.4-.2-.1 0-.3-.1-.3-.1 0 .2-.1.4-.2.6 0 .1-.2.4-.1.5 0 .1.2.1.3.1s.2.1.4.1c.1.2.3.3.6.3zm14.8-14.1H15.9c-.7 0-1.6-.1-2.3 0-1.2.2-2.1 1.3-2.2 2.5v16c0 1.1-.1 2.3.7 3.2.9.9 1.9.8 3 .8h18.6c.9 0 1.7-.4 2.2-1.2.3-.5.4-1 .4-1.6v-17.1c.2-1.5-1-2.6-2.3-2.6zm0 20H14.1v-12c0-.9-.1-1.9 0-2.8 0-.2 0-.1.1-.1h19.3c.1 0 .5-.1.6 0 .1 0 0 .3 0 .4v14.2c-.1-.1-.1.1-.1.3z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M14.5 1776.4l-3 7.1 5.7-.2-2.7-6.9zm14.8.1c-3.7 2.3-7.3 4.7-10.9 7.1l16.5 2.3-5.6-9.4zm7.1-10.3l-1.5 2.2-5 7.6c-.1.2-.2.3-.1.5l4.8 8c.3.4.5.8.8 1.3l1-19.6zm-22 8.2c.1.1.2.1.3.1l4.6-2.3c.5-.3.8-.8 1.3-1.2l4.3-3.9c.1-.1.2-.2.2-.3l1.5-3c-.6-.2-1.2-.4-1.7-.7-.1 0-.2 0-.3.1l-4.1 2.4c-.7.4-1.2 1-1.8 1.6l-2.8 2.6c-.2.3-.5.5-.7.8-.7.9-1.3 1.8-1.9 2.8l1.1 1zm5.6-1.2l-2.3 9.8 10.9-7.1-8.6-2.7zm6.2-5.4l3.2 7.7 6.2-9.3-9.4 1.6zm-6 4.7l8.4 2.8-3.1-7.6-5.3 4.8zm-2.9 9.1l2.1-8.5-4.5 2.3 2.4 6.2zm17-15.9l-2.7-.8-3.9-1c-.2-.1-.3-.1-.3.1l-1.4 2.8v.2l8.3-1.3zm-5.1-2.1l7.3 2-1.3-3.4-6 1.4zm2.1 22.3l-13.5-1.8c-.9-.1-1.8 0-2.7 0l-2.3.1c-.1 0-.2 0-.2.1l18.7 1.6c0 .1 0 0 0 0zm-19.6-4.6l2.4-5.6c.1-.2.1-.3-.1-.5l-1-1.1-1.5 7.3.2-.1c-.1.1 0 .1 0 0zm15.8-18.2l4.1-.9c.1 0 .2-.1.2-.1v-.1l-5.9.7c.7.4 1.1.6 1.6.4z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M26 1723.3c1.7 0 3.2-1.2 3.2-2.9v-5.6c0-1.6-1.2-2.8-2.7-3.1 0 0-1.2-.2-2.2-.2s-1.7.1-2.6.2c-2.5.4-3 1.3-3 3.1v2.6h5.9v1.3h-9c-1.7 0-3.2.8-3.7 2.7-.6 2.2-.6 3.7 0 6 .4 1.7 1.4 3.1 3.1 3.1h2.4v-3.3c0-1.9 1.7-3.9 3.8-3.9H26zm-5-7.1c-.5 0-1-.4-1-.9v-.1c.1-.6.5-1 1-1s1 .4 1 1c0 .5-.4 1-.9 1H21zm15.1 4.3c-.4-1.7-1.4-3.1-3.1-3.1h-2.4v3.3c0 1.9-1.7 3.9-3.8 3.9H22c-1.7 0-3.2 1.2-3.2 2.9v5.6c0 1.6 1.2 2.8 2.7 3.1 0 0 1.2.2 2.2.2s1.7-.1 2.6-.2c2.5-.4 3-1.3 3-3.1v-2.6h-5.9v-1.3h9c1.7 0 3.2-.8 3.7-2.7.5-2.3.5-3.7 0-6zm-9.1 11.3c.5 0 1 .4 1 .9v.1c-.1.6-.5 1-1 1s-1-.4-1-1c0-.5.4-1 .9-1h.1z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M19.7 1678.6c-.1-.8-.4-1.4-1.3-1.7-.3-.1-.6-.3-.8-.5-.3-.2-.7-.3-1.1-.4-.3-.1-.5.1-.7.3-.2.3-.1.4.1.7.1.2.3.4.5.6.3.3.6.7.8 1 .3.3.5.7.4 1.1a3.47 3.47 0 0 1-1.2 2.3c.1 0 0 0-.2 0-.4-.1-.8-.3-1.2-.5-.3-.3-.3-.8.2-1 .1-.1.3-.1.3-.2.3-.2.3-.6.3-.8-.1-.2-.2-.3-.3-.4l-1.7-1.5c-1.4-1.2-2.2-2.6-2.3-4.4-.2-2 .3-3.8 1.4-5.6.4-.7.8-1.3 1.6-1.6.5-.3 1-.3 1.5-.5 1.4-.4 2.9-.7 4.3-.4 1.3.3 2.3.9 2.7 2.2.3.8.3 1.7.3 2.6-.2 1.8-1.4 3.3-3.1 3.7-.8.2-1.1.1-1.5-.5-.3-.4-.6-.8-.8-1.3 0-.1-.1-.2-.1-.3s-.1-.2-.1-.3c.1.8.3 1.5.7 2.1.3.3.5.6.9.7 1.6.2 2.9-.4 3.8-1.7 1.1-1.4 1.3-3.1 1-4.8l-.3-1c-.1-.3 0-.4.3-.4.1 0 .2-.1.3-.1 1.3-.3 2.6-.3 3.9-.3 1.5.2 2.9.6 4.2 1.4 2 1.3 3.2 3.2 3.8 5.4.1.3.1.7.1 1s-.2.3-.3.2l-.5-.5c-.2-.2-.3-.3-.4-.6-.1-.2-.3-.1-.3.1 0 .1-.1.3-.1.3-.3 1.3-.9 2.3-1.8 3.3-.1.2-.3.3-.3.5 0 .5-.1 1 0 1.5l.3 3.1c.1.6-.1.9-.7 1.2-.4.2-.8.3-1.3.3-.7.1-1.3 0-2 0 0-.8.1-1.4-.7-1.8.2-.6.3-1.1.4-1.6.1-.4 0-.8-.3-1.3-.3-.3-.7-.4-1-.3-1 .6-2 .6-3.1.2-.5-.2-.8-.1-1.1.3-.3.5-.4 1-.4 1.6 0 .7.2 1.3.3 2 .1.4 0 .5-.3.6-.8.3-1.7.3-2.6.2h-.1c-.1-.8 0-1.4-.8-1.8.6-.7.5-1.6.4-2.4zm-5.1-2.8c.1-.1.3-.3.3-.5.1-.4-.3-1-.6-1.2-.2-.1-.3-.1-.5.1-.3.4-.7.8-1 1.2-.1.1-.1.2-.2.3-.2.3-.1.4.3.5a.9.9 0 0 0 .5.1c.5-.1.9-.2 1.2-.5zm.1-4.2a.65.65 0 0 0-.6-.6.65.65 0 0 0-.6.6c0 .3.3.6.6.5.4.1.6-.2.6-.5z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M33.3 1629c0 .2.1.3.1.8-.1 1.1.3 1.2.2 2.8-.1.7-.4 1.1-.6 2-.1.3-.1.5-.3.8l1.8.3c0-.5.1-.8-.3-1.7-.4-1-.1-1.2-.1-2 0-1.3.8-1.3.3-2.6-.3-.7.1-.7-.1-2.2-.3-1.8 0-5 .6-4.9.5.1.5 1.3.6 1.9.2 1.1-.5 1.7-.7 2.2 0 .3.3.5.5.4.3-.2.6-.7.9-1.2.3-1.1.3-1.9.2-3 0-.7-.1-1-.7-1.5-1.1-1.2-1.7-2.2-2.3-3.5-.2-.3-.5-.7-.8-.9-.8-.7-1-2.2-1.7-3.1-.8-.8-1.7-1.3-2.8-1.3-.9-.1-3 .8-3.8 1.4-.8.7-.7 1.8-2.7 2.8-.8.4-2.3 1.5-2.7 3.7-.5.4-.8-.2-.8-.6.3-1 .8-1.9.8-3-.2-1.5-.8-2.8-1.9-3.3-.9-.4-1.5-.2-1.9.3-1.6 1.1-2.9-.2-3.7 1.7-.1 1.3 2 .4 2.2 1.5-.3 1.3-1 .6-.6 4.5.1 1 .9 1.6 1.5 2.4.9 1 2.5 2 4 1.6 1-.3 1.2.3 1 .8-.3 1.3.1 1.8.1 3 0 .6.3.8.3 2.6.2 1.3-.4 2.5-.9 3.3l1.3-.1c.2-.8.2-1.3.3-2.4.2-.8.7-1 .6-2.2 0-2.2.8-2.2.8-3.2 0-.8.3-1.3 1-1.3.9 0 .8.4.6 1.2-.1 1.3-.4 1.1-.6 1.8-.1.6-.1 1.4.3 1.7.3.3.7.5 1.3.9.3.3 1.3 1 1.3 1.7-.2 1.4-1.7 1.2-1.6 1.8h2.2c.3-.2.3-.6.5-.6s.4.4.7.6c.3 0 .6 0 .8.1.2-.2.3-.8.2-1-.2-1-1.1-.8-.9-1.7.4-.9.7-1 1-1.4.4-.8.8-.8 1-1.3 0-1 0-1.9.2-2.7.1-.8.3-1.3.8-1.9.5-.7.6-.8.9-.3.3 1.8 1.2 3.1 1.6 4.3zm-8.1.5c.1-.1.4-.3.6-.5.4-.3.4-.4.5-.9.2-.9.5-.5.8-1.8 0-.1.2-.8.4-.7.3 0 .3.1.4.9l.3 2.4c0 .2 0 .5-.1.7 0 1-.6 1.5-.8 2-.3.5-.5.8-1.6-.2-.7-.7-1.2-1.3-.5-1.9z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M13.8 1566.2c-1.2 0-2.3 1-2.3 2.2v11.2c0 1.3 1 2.2 2.3 2.2h20.5c1.3 0 2.3-1 2.3-2.2v-11.2c0-1.3-1-2.2-2.3-2.2H13.8zm0 1.6h20.5a.68.68 0 0 1 .7.7v11.2c0 .3-.2.7-.7.7H13.8a.68.68 0 0 1-.7-.7v-11.3c0-.3.2-.6.7-.6zm1.6 2.3v7.8h2.3v-5.2l2.3 3.1 2.3-3.1v5.2h2.3v-7.8h-2.3l-2.3 3.2-2.3-3.2c.1 0-2.3 0-2.3 0zm13.3 0v3.9h-2.3l3.5 3.9 3.5-3.9H31v-3.9h-2.3z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M19.4 1536.4c-3.1-.9-4.6-2.8-4.6-5.9v-2.5c0-1.8-.8-2.7-2.3-2.7v-2.6c1.5 0 2.2-.8 2.3-2.5v-2.7c0-1.6.4-2.8 1.1-3.8s1.9-1.7 3.4-2.1l.7 2.1c-.6.2-1.1.7-1.5 1.2-.3.6-.5 1.4-.5 2.5v2.7c0 1.9-.8 3.3-2.3 4 1.5.8 2.3 2.1 2.3 4.1v2.7c0 2 .7 3.2 2 3.6l-.6 1.9zm3.8.1l-1.9-1 .5-.8c.6-1 .9-2.1.9-3.1v-2.9h3.1v2.5c0 .9-.2 1.9-.7 2.9s-1.1 1.8-1.9 2.4zm-1.2-16.9c0-.6.2-1.1.6-1.4.4-.4.9-.5 1.5-.5s1.1.2 1.5.5c.4.4.6.8.6 1.4s-.2 1-.6 1.4-.9.5-1.5.5-1.1-.2-1.5-.5-.6-.8-.6-1.4zm5.9 14.8c1.3-.5 2-1.7 2-3.7v-2.7c0-1.9.8-3.3 2.3-4-1.6-.7-2.3-2.1-2.3-4.1v-2.7c0-2-.7-3.2-2-3.7l.7-2.1c1.5.4 2.7 1.1 3.4 2.1.8 1 1.2 2.2 1.2 3.8v2.7c0 1.7.8 2.5 2.3 2.5v2.6c-1.5 0-2.3.9-2.3 2.7v2.8c-.1 3-1.6 4.9-4.6 5.7l-.7-1.9z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M35 1461.5H13c-.9 0-1.6.8-1.6 1.6v21.9c0 .9.8 1.6 1.6 1.6h21.9c.9 0 1.6-.8 1.6-1.6v-21.9c.1-.9-.7-1.6-1.5-1.6zm-9.8 19.2c0 2.5-1.5 3.6-3.5 3.6-1.9 0-3.2-1.2-3.8-2.5l1.8-1.1c.3.7.9 1.1 1.7 1.1s1.1-.3 1.1-1.5v-7.6H25l.2 8zm5.3 3.5c-2.1 0-3.3-1.1-4-2.5l1.8-1.2c.4.9 1 1.6 2.1 1.6.9 0 1.5-.4 1.5-1.1 0-.8-.4-1.1-1.6-1.6l-.6-.2c-1.7-.7-2.8-1.6-2.8-3.5 0-1.7 1.3-3 3.3-3 1.5 0 2.6.6 3.2 1.8l-1.8 1.2c-.4-.7-.9-1-1.5-1-.7 0-1.1.4-1.1 1 0 .7.4.9 1.5 1.5l.6.2c1.9.9 3 1.7 3 3.6 0 2-1.5 3.2-3.6 3.2z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M25.5 1411.5c1.3 3.1-4.9 5.2-5.5 7.8-.6 2.5 3.8 5.2 3.8 5.2-.7-1-1.1-1.9-1.8-3.5-1.2-2.6 6.7-4.9 3.5-9.5zm4.2 4.4s-5.5.3-5.9 3.9c-.1 1.6 1.4 2.5 1.6 3.6 0 .9-.9 1.8-.9 1.8s1.8-.3 2.3-1.8c.6-1.6-1.2-2.7-1-3.9.2-1.3 3.9-3.6 3.9-3.6zm1.4 8.2c-.6 0-1.2.1-1.8.6 1.2-.2 2.1.4 2.1 1.2 0 1.9-2.6 3.6-2.6 3.6s4.2-.5 4.2-3.5c-.1-1.2-.9-1.9-1.9-1.9zm-10.1 0s-5.1-.1-5.1 1.3 6.7 1.6 11.4.7c0 0 1.2-.9 1.6-1.1-3.1.7-10.1.8-10.1.1 0-.5 2.2-1 2.2-1zm-1.2 2.8c-.8 0-1.9.6-1.9 1.2 0 1.2 5.9 2.1 10.1.3l-1.4-.9c-3 1-8.5.6-6.8-.6zm.7 2.6c-1.1 0-1.8.7-1.8 1.2 0 1.4 6.4 1.7 8.9.1l-1.6-1c-1.8.7-6.5.8-5.5-.3zm-3.5 1.4c-1.8 0-2.9.8-2.9 1.4 0 3.5 17.8 3.2 17.8-.2 0-.6-.7-.9-.9-1 1.4 3.3-14.5 3.1-14.5 1.1 0-.4 1.1-.9 2.2-.7l-.9-.4c-.3-.2-.5-.2-.8-.2zm16.9 2.3c-2.7 2.6-9.6 3.6-16.5 1.9 6.8 2.7 16.4 1.2 16.5-1.9z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M35.2 1361.5H12.8l2.4 22.5 8.8 2.6 8.8-2.6 2.4-22.5zm-5.2 7.6h-9.6l.2 2.8h9.1l-.7 8-5 1.6h-.1l-5-1.7-.2-3.2h2.6l.1 1.2 2.9.7 2.8-.7.3-3.4h-8.8l-.7-7.9h12.3l-.2 2.6z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M12.8 1311.6l2.4 22.4 8.7 2.5 8.7-2.5 2.5-22.5-22.3.1zm17 10.3l-.4 7.9-5.4 1.8-5.4-1.8-.2-3.8h2.8l.1 1.7 2.8.9 2.9-.9.2-3.1h-6l-.1-2.8h6.2l.1-2.8H18l-.2-2.5h12.4l-.4 5.4z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M35.2 1267.8l-5.3 3.1c-.9-1.3-2-2.2-3.4-2.7-1.3-.4-2.8-.4-4.1.2-2.9 1.1-4.3 3.8-4 6.5s2.2 4.9 5 5.4c2.9.6 5.4-.8 6.6-3 .9.4 1.8 1 2.7 1.4.9.6 1.9 1 2.7 1.5-3.5 6-10.2 7.4-15 5.4-5.5-2.2-8.5-7.2-8.2-12.4.4-6.4 5-10.4 9.7-11.5 6.3-1.1 11.3 2.4 13.3 6.1z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><path d="M34.5 1221.3a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-6.4zm-18 0a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.47 1.47 0 0 0 1.5-1.5v-6.4zm10.8-7.4l1.1-2c.1-.1 0-.2-.1-.3h-.1c-.1 0-.2 0-.2.1l-1.1 2c-.9-.4-1.9-.6-3-.6s-2.1.2-3 .6l-1.1-2c0-.1-.1-.1-.2 0-.1 0-.2.2-.1.3l1.1 2c-2.1 1.1-3.5 3.2-3.5 5.5h13.8c-.1-2.4-1.5-4.5-3.6-5.6zm-6.5 3a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c-.1.4-.3.6-.6.6zm6.3 0a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c0 .4-.3.6-.6.6zm-10 3.1v10c0 .9.7 1.7 1.7 1.7h1.1v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4H25v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4h1.1c.9 0 1.7-.7 1.7-1.7v-10H17.1z" class="C"/><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M13.4 1186.6v-4.9h.1c1.9 0 3.3-.9 4.6-2.1.9-1 1.7-2.1 2.2-3.4.8-1.4 1.2-2.9 1.9-4.4.4-1.3 1-2.8 1.8-4 1-1.8 2.2-3.1 3.9-4.3.9-.6 1.7-1.1 2.7-1.3.9-.2 1.9-.4 2.8-.4h1.3v4.8h-.4c-1.2 0-2.3.3-3.3 1-.7.6-1.2 1-1.8 1.7s-.9 1.3-1.2 2.1c0 .1-.1.1-.1.1h4.2v5h-5.9c-.2 0-.2 0-.2.2-.7 1.8-1.4 3.3-2.6 4.8-2.2 2.8-5 4.4-8.4 5.1-.4.1-.9.1-1.2.2-.3-.2-.4-.2-.4-.2z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M15.5 1126.5v5.6h-4v-16.4H18c1.3 0 2.3.3 3.3.7s1.8 1.1 2.3 2c.5.8.8 1.8.8 2.9 0 1.6-.6 2.9-1.8 3.8s-2.8 1.4-4.7 1.4h-2.4zm0-3h2.6c.8 0 1.3-.2 1.8-.6.4-.4.6-.9.6-1.7s-.2-1.4-.6-1.8c-.4-.5-1-.7-1.7-.7h-2.7v4.8zm17.2 5.1c0-.3-.2-.6-.5-.8s-1-.4-1.9-.6-1.7-.5-2.3-.8-1.1-.8-1.4-1.3c-.4-.4-.6-1-.6-1.5 0-1.1.5-2.1 1.4-2.7.9-.8 2.2-1.1 3.7-1.1 1.6 0 2.9.3 3.9 1.1s1.5 1.7 1.5 2.9h-3.8c0-1-.5-1.5-1.6-1.5-.4 0-.8.1-1 .3s-.4.5-.4.8.2.6.5.8c.3.3.8.4 1.6.5l1.9.5c1.8.7 2.7 1.7 2.7 3.4 0 1.1-.5 2-1.5 2.7-1 .8-2.3 1.1-3.8 1.1-1.1 0-2-.2-2.8-.6s-1.5-.9-1.9-1.5c-.5-.7-.7-1.3-.7-2.1h3.6c0 .6.2 1 .6 1.2.4.3.8.4 1.4.4.5 0 .9-.1 1.2-.3 0-.2.2-.5.2-.9z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M24.6 1080.4h-7.3l-1.4 4.2h-4.4l7.5-20.2h3.9l7.6 20.2H26l-1.4-4.2zm-6.2-3.4h5l-2.5-7.6-2.5 7.6zm13.6-11.3c0-.6.2-1.1.6-1.5s.9-.6 1.6-.6 1.2.2 1.6.6.6.9.6 1.5-.2 1.1-.6 1.5-1 .6-1.6.6-1.2-.2-1.6-.6-.6-.9-.6-1.5zm4.3 18.9h-4v-15h4v15z" class="C"/><path fill="#fbc02d" d="M0 1000.1h48v10.7H0v-10.7m2.7 13.3h42.7v34.7H2.7v-34.7m14.6 8c-.7 0-1.3.6-1.3 1.3v4h16v-4c0-.7-.6-1.3-1.3-1.3H17.3z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M11.5 967.8v2.5h13.2v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm24.2-19.9h-7.5c-.4 0-.8.4-.8.8v5.8c0 .5.4.8.8.8h7.5c.4 0 .8-.4.8-.8v-5.8c0-.4-.4-.8-.8-.8m-6.7 5.8l1.5-1.9 1 1.3 1.5-1.9 1.9 2.5H29zm-17.5-5.8v2.5h13.2v-2.5H11.5z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M11.5 933h25v-17.8h-25V933zm16.1-13.4h6.3v1.8h-6.3v-1.8zm0 3.6h6.3v1.8h-6.3v-1.8zm0 3.6h3.6v1.8h-3.6v-1.8zm-8.1-8.1v5.4h5.4c0 2.9-2.4 5.4-5.4 5.4s-5.4-2.4-5.4-5.4 2.5-5.4 5.4-5.4z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M33.7 864.4H11.5v19.4h25v-19.4h-2.8zm-19.4 2.8h5.6v2.8h-5.6v-2.8zm0 5.5h5.6v2.8h-5.6v-2.8zm0 5.6h5.6v2.8h-5.6v-2.8zm19.4 2.7H22.6v-2.8h11.1v2.8zm0-5.5H22.6v-2.8h11.1v2.8zm0-5.6H22.6v-2.8h11.1v2.8z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M24 811.6c-6.9 0-12.5 5.6-12.5 12.5 0 .9.1 1.7.3 2.6 1.1-.3 2.3-.5 3.4-.5 1.9 0 3.7.4 5.4 1.1 2.1-1.5 4.8-2.4 7.6-2.4 1.8 0 3.5.4 5 1 .1 0 .1.1.1.2s-.1.2-.2.2h-1.2c-4.4 0-8.3 1.6-10.7 4.9 0 .1-.1.2-.1.2l-.1.1h-.1c-2.3-2.1-5.3-3-8.6-3 1.7 4.9 6.3 8.3 11.8 8.3 6.9 0 12.5-5.6 12.5-12.5-.1-7.1-5.7-12.7-12.6-12.7zm9.8 7.5h-.2c-.1 0-.3 0-.4-.1-2.5-.2-4.9.5-6.5 2.3-.1.1-.1.1-.2 0-1.2-1.4-3-2-5-2.2-.7-.1-1.4 0-2.1.1-.1 0-.1-.1-.1-.1s0-.1.1-.1c1.3-.7 2.7-1 4.2-.8 1.1.1 2.1.4 3 .9 1.3-.8 2.9-1.1 4.5-1 .9.1 1.8.3 2.6.7 0 0 .1 0 .1.1v.2c.1-.1.1 0 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M36.5 765.3c.1-.5-.3-1-.8-1.1h-9.4v-2.3h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-2.3h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16.8zM21 778c-.5.2-1.2 0-1.7 0l-1.2-5.6-1.1 5.5c-.5 0-1.1-.1-1.6-.1l-1.5-7.5c.5 0 1 0 1.5-.1l.9 5.4 1.2-5.6c.5 0 1.1-.1 1.6-.1l1.2 5.7 1-5.9c.6 0 1.1-.1 1.7-.1l-2 8.4zm14.6 5.2h-9.4v-2.3h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.3h-7.4v-1.4h7.4v-1.1h-7.4v-1.5h7.4V767h-7.4v-2h9.4v18.2z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M36.5 715.6c.1-.7-.4-1.2-1.1-1.1h-9.1v-2.6h-1.6c-4.4.7-8.8 1.5-13.2 2.3v19.9l13 2.3h1.8v-2.8h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16zM19.8 725c-.6.3-1.4.3-2.1.3v3.3c-.6 0-1.1-.1-1.7-.1v-9.1c1.5.1 3.4-.6 4.7.5 1.3 1.5.9 4.3-.9 5.1zm15.8 7.6h-9.4v-2.3H33v-1.1h-6.8v-1.4H33v-1.1h-6.8V725c1.1.3 2.4.3 3.4-.3 1.1-.6 1.7-1.9 1.7-3.1h-3.7v-3.7l-1.4.3v-2.8h9.4v17.2zM32 721c-.1-2-1.8-3.6-3.7-3.7v3.7H32zm-14.3-.1v2.9c.6-.1 1.3 0 1.6-.6a2.12 2.12 0 0 0 0-1.9c-.3-.5-1-.4-1.6-.4z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M36.5 665.7v-.7c-.1-.5-.2-.7-.7-.8-.4-.1-.9-.1-1.3-.1h-8.1v-2.3l-2.4.1-7.3 1.3-4.8.8h-.2v19.9l7.8 1.3 5.1.9h1.8v-2.6H35c.3 0 .6 0 .9-.1.4-.1.6-.3.6-.6 0-.4.1-.8.1-1.2l-.1-15.9zM20 678.5c-.1 0-.1-.1-.2-.2l-1.3-3.3-.1-.1c-.1.1-.1.3-.2.4l-1.2 2.8c0 .1-.1.1-.1.1h-1.8c.1-.1.1-.2.1-.3l1.9-3.8c0-.1.1-.3 0-.4l-1.7-3.8c0-.1-.1-.2-.1-.3.6 0 1.2-.1 1.9-.1l1.2 3.3 1.3-3.2c.1-.2.1-.2.3-.2.5 0 1.1-.1 1.7-.1-.2.5-.5 1-.7 1.4l-1.4 2.9c-.1.2-.1.4 0 .6l2.1 4.2c0 .1.1.1.1.2-.6 0-1.2 0-1.8-.1zm15.6 4.4h-9.3v-1.7h2.2v-2h-2.2v-1.1h2.2v-2h-2.2V675h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.7h9.3v17.8zm-2-16.2h-4v2h4v-2zm0 6.3h-4v2h4v-2zm0 6.2h-4v2h4v-2zm0-9.4h-4v2h4v-2zm-3.9 8.3h4v-2h-4v2z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M36.5 617.3c.1-1.2-1-2-2-2.3-2.6-.9-5.5-1-8.2-.6v-2.5h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-3.1c2.7.4 5.6.3 8.2-.6 1-.3 2.1-1.1 2-2.3v-13.1zm-16.4 11.3l-.5-2.1c-.9 0-1.7 0-2.6-.1l-.5 2c-.6 0-1.1-.1-1.7-.1l2.5-9c.7 0 1.3-.1 2-.1l2.8 9.6-2-.2zm6.2-13.4c2.5-.3 5.2-.3 7.6.4.7.3 1.6.6 1.7 1.4-.1.7-.8 1-1.3 1.2-2.6.9-5.4 1-8 .5v-3.5zm0 9a28.11 28.11 0 0 0 5.8 0c1.2-.2 2.5-.5 3.5-1.3-.1 1.2.1 2.4-.1 3.7-.5.6-1.3.8-2 1-2.4.6-4.9.6-7.3.3l.1-3.7zm9.3 6.9c-.8.9-2.1 1-3.2 1.3-2 .3-4.1.3-6.1 0v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.5-.5 3.6-1.3l-.1 3.7zm0-9.1c-.5.6-1.3.8-2 1-2.4.6-4.8.6-7.3.3v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.6-.5 3.6-1.3l-.1 3.7zm-18.3 2.9h1.9l-1-4c-.2 1.4-.6 2.7-.9 4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M34.4 564v20.4l-7.3 2.2-13.4-4.8 13.4 1.6v-17.7l-8.7 2.1v12l-4.7 2v-15.2l13.4-5 7.3 2.4z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M24.4 514.5c-.1 1.6-.3 3.5-.7 5.2v.4c.8 2 2 3.8 3.6 5.2.4.3.9.7 1.3.9a.45.45 0 0 0 .5 0c1.5-.2 3-.3 4.5-.2.7.1 1.3.1 2 .4.5.2.8.6.8 1.2 0 .3 0 .7-.1.9-.2.8-.7 1.1-1.5 1.2-1.1.1-2.3-.2-3.3-.6l-3.1-1.3c-.2-.1-.5-.2-.7-.2-2.9.4-5.7 1.1-8.4 2-.1 0-.2.1-.2.2l-2.4 3.6c-.7.9-1.4 1.9-2.6 2.4-.5.2-1 .2-1.6 0-.2-.1-.3-.2-.5-.2-.6-.2-.7-.7-.6-1.3.2-.7.6-1.1 1.1-1.6 1.1-1.1 2.3-2 3.7-2.6.1 0 .1-.1.2-.1.7-.2 1.1-.7 1.4-1.3l2.2-4.1c.7-1.2 1.1-2.6 1.7-3.8.1-.2.1-.4.1-.6l-1-5.2c-.1-.8 0-1.6.2-2.5.2-.5.6-.7 1-.8.3-.1.7-.1 1-.1.5 0 .7.3 1 .7.5.8.4 1.5.4 2.2zM20 528.7c2.1-.8 4.3-1.3 6.5-1.7l-2-2c-.6-.7-1.1-1.5-1.6-2.2l-2.9 5.9zm3-11.1c.2-.2.2-.3.3-.4.3-1 .4-2 .2-3-.1-.3-.2-.7-.3-1.1-.1-.2-.2-.2-.4-.3-.1.2-.2.3-.2.4-.2 1.1-.1 2.3.1 3.4.1.2.2.6.3 1zm8.3 9.9v.2l2.8.9c.4.1.9.1 1.4 0 .3 0 .4-.2.2-.5-.2-.2-.5-.2-.7-.3-.7-.2-1.4-.2-2.2-.2-.6-.1-1-.1-1.5-.1zm-14.8 3.7c-1.3 1.1-2.6 2.3-3.4 3.8 1.5-.8 2.4-2.3 3.4-3.8z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M11.5 462.9v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M11.5 413v22.4h25V413h-25zm4.3 20.8H13v-2.7h2.8v2.7zm0-5.5H13v-2.8h2.8v2.8zm0-5.6H13v-2.8h2.8v2.8zm0-5.5H13v-2.8h2.8v2.8zm19.3 16.6h-2.8v-2.7h2.8v2.7zm0-5.5h-2.8v-2.8h2.8v2.8zm0-5.6h-2.8v-2.8h2.8v2.8zm0-5.5h-2.8v-2.8h2.8v2.8z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M34.2 361.9h-.6l-12.5 1.7c-1.2.2-2.1 1.2-2.1 2.6v11.5c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3 0 2.2 2.2 3.7 5 3 2.7-.6 5-3 5-5.3v-11L34 368v7.1c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3s2.2 3.7 5 3c2.7-.6 5-3 5-5.3v-13.7c.2-1.5-.9-2.5-2.2-2.5z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M14 314.1c-1.4 0-2.5 1.1-2.5 2.5v14.9c0 1.4 1.1 2.5 2.5 2.5h20c1.4 0 2.5-1.1 2.5-2.5v-14.8c0-1.4-1.1-2.5-2.5-2.5 0-.1-20-.1-20-.1zm0 2.6h20v14.9H14v-14.9zm15.6 2.4a1.97 1.97 0 0 0-1.9 1.9c0 1.1.9 1.9 1.9 1.9 1.1 0 1.9-.9 1.9-1.9a1.97 1.97 0 0 0-1.9-1.9zM19 321.7l-2.5 2.4v5h14.9v-2l-5-3-2.5 1.3-4.9-3.7z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M11.5 263v2.5h25V263h-25zm0 5v2.5h25V268h-25zm0 5v2.5h25V273h-25zm0 5v2.5h25V278h-25zm0 5v2.5h25V283h-25z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><path d="M17.1 222.4H15v-8l-2.5.8v-1.7l4.3-1.6h.2v10.5h.1zm10.4-4.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3s-1.5 1.1-2.6 1.1-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm-14.8 16.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm8.5 6.5h-2.1v-8l-2.5.8v-1.7l4.3-1.6h.3v10.5z" class="C"/><path d="M45.6 165v23.5c-.5 1.5-1.1 2-2.5 2H12.8c-1.6 0-2.5-.9-2.5-2.5v-35.5c0-1.6.9-2.5 2.5-2.5h15.4v12.4c0 .3 0 .5.1.8.2 1.1 1.1 1.7 2.3 1.7h14.5l.5.1zM8 157.6v33c0 1.1.3 1.9 1.3 2.3.4.2.9.2 1.3.2h27.1v2.7c-.1 1-.8 1.8-1.7 2-.2.1-.4.1-.8.1l-30.3.2c-1.2 0-2.1-.6-2.3-1.7-.2-.3-.2-.5-.2-.8V160c0-1.5.9-2.4 2.4-2.4H8zm22-7.5l15.6 13.4c-.2 0-.3.1-.4.1H32.4c-1.5 0-2.5-.9-2.5-2.4v-10.6c.1-.2.1-.4.1-.5zm8.5-6.9h-34C2 143.2 0 141 0 138.4v-28.9c0-2.7 2-4.8 4.5-4.8h13.6l4.5 4.8h15.8c2.5 0 4.5 2.1 4.5 4.8H4.5v24.1l4.9-19.2H48l-5.2 20.4c-.5 2.1-2.2 3.6-4.3 3.6zM19.2 54.8H4.8c-2.7 0-4.8 2.1-4.8 4.8v28.8c0 2.6 2.2 4.8 4.8 4.8h38.4c2.6 0 4.8-2.2 4.8-4.8v-24c0-2.7-2.2-4.8-4.8-4.8H24l-4.8-4.8z" fill="#1565c0"/><path fill="#478fcc" d="M32.1,0H8.6C7.2,0,5.8,1,5.8,2.3v43.1c0,1.4,1.4,2.6,2.8,2.6h31.3c1.3,0,2.3-1.2,2.3-2.6V9.6L32.1,0z"/><path d="M21.5 32.8h3.8v3.8h-3.8v-3.8M24 11.5c6.7.2 9.6 7 5.7 12.1-1 1.3-2.7 2.1-3.5 3.2-.8 1-.8 2.3-.8 3.5h-3.8c0-2.1 0-3.8.8-5.1s2.5-2 3.5-2.8c3-2.8 2.3-6.8-1.9-7.1a3.8 3.8 0 0 0-3.8 3.8h-3.7c0-4.3 3.5-7.6 7.5-7.6z" class="C"/><path d="M32.1,7.2c0,1.4,1,2.4,2.3,2.4h7.7L32.1,0V7.2z" class="B"/><defs ><path id="B" d="M32.1 1950H8.6c-1.4 0-2.8 1-2.8 2.3v43.1c0 1.4 1.4 2.6 2.8 2.6h31.3c1.3 0 2.3-1.2 2.3-2.6v-35.8l-10.1-9.6z"/><path id="C" d="M32.1 1957.2c0 1.4 1 2.4 2.3 2.4h7.7l-10-9.6v7.2z"/></defs></svg>                                                                                                                                                                           includes/File_manager/lib/themes/Material-Gray/images/loading.svg                                   0000644                 00000005234 15266052702 0021030 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/themes/Material-Gray/images/icons-small.svg                               0000644                 00000045471 15266052702 0021643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="1966"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M8.4 1955.1l-1.7 5.8h.8l1.7-5.8h-.8zm-2.9.8l-1.7 2.1 1.7 2.1h.8l-1.7-2.1 1.7-2.1h-.8zm4.2 0l1.7 2.1-1.7 2.1h.8l1.7-2.1-1.7-2.1h-.8z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M6.9 1905v.8H5.2c-.1-.2-.4-.4-.7-.4-.4 0-.8.3-.8.8s.3.8.8.8c.3 0 .5-.1.7-.4h.9c-.5.5-.8 1.2-.8 1.9v.4h-.7v2.3h2.3v-2.3h-.8v-.4c0-.6.3-1.2.8-1.5v.4h2.3v-.4c.5.3.8.9.8 1.5v.4h-.9v2.3h2.3v-2.3h-.7v-.4c0-.7-.3-1.4-.8-1.9h.9c.1.2.4.4.7.4.4 0 .8-.3.8-.8s-.3-.8-.8-.8c-.3 0-.5.1-.7.4H9.1v-.8H6.9zm.7.7h.8v.8h-.8v-.8zm-2.3 3.8h.8v.8h-.8v-.8zm4.6 0h.8v.8h-.8v-.8z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M8 1853.7c-1 0-1.8.2-2.5.5-.3.1-.6.3-.8.5s-.3.4-.3.7v4.9c0 .3.1.5.3.7s.5.4.8.5c.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5s.3-.4.3-.7v-4.9c0-.3-.1-.5-.3-.7s-.5-.4-.8-.5c-.7-.3-1.5-.5-2.5-.5zm0 .4c.9 0 1.7.2 2.3.4.3.1.5.3.7.4.1.1.2.3.2.5s-.1.3-.2.5c-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5s.1-.3.2-.5c.2-.1.4-.3.7-.4.6-.2 1.4-.4 2.3-.4zm-3.2 2.1c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.8c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.8z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M8 1808.4h2.5v.8H8v-.8zm-1.6.6v.3h.3v-.3s.1 0 .2-.1c.3-.1.5-.6.2-.9 0 0-.1-.1-.2-.1s-.2-.1-.2-.1c-.1 0-.4-.1-.3-.3s.4-.1.5-.1h.2v-.1s.1-.1 0-.2-.1 0-.1 0h-.2v-.2h-.3v.2h-.1a.78.78 0 0 0-.4.4v.3l.2.2c.2.1.3.1.5.2.1 0 .2.1.1.2 0 .1-.2.1-.2.1h-.4c-.1 0-.1 0-.1-.1H6c0 .1 0 .1-.1.2 0 0-.1.1 0 .2h.2c.1.1.2.2.3.2zm4.9-4.7H4.5c-.4.1-.7.4-.7.8v5.3c0 .4 0 .8.2 1.1.3.3.6.3 1 .3h6.2c.3 0 .6-.1.7-.4.1-.2.1-.3.1-.5v-5.7c.2-.6-.2-.9-.7-.9zm0 6.6H4.7v-4.9c0-.1 0 0 0 0h6.6v4.9c0-.1 0 0 0 0z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M4.8 1758.8l-1 2.4 1.9-.1-.9-2.3zm5 0l-3.6 2.4 5.5.8-1.9-3.2zm2.3-3.4l-.5.7-1.7 2.5c0 .1-.1.1 0 .2l1.6 2.7c.1.1.2.3.3.4l.3-6.5zm-7.3 2.7c0 .1.1.1 0 0l1.6-.7c.2-.1.3-.3.4-.4l1.4-1.3.1-.1.5-1c-.2-.1-.4-.1-.6-.2h-.1l-1.4.8c-.2.1-.4.3-.6.5l-.9.9c-.1.1-.2.2-.2.3l-.6.9.4.3zm1.9-.4l-.8 3.3 3.6-2.4-2.8-.9zm2-1.8l1.1 2.6 2.1-3.1-3.2.5zm-2 1.6l2.8.9-1-2.5-1.8 1.6zm-.9 3l.7-2.8-1.5.8.8 2zm5.6-5.3l-.9-.3-1.3-.3h-.1l-.5.9v.1l2.8-.4zm-1.7-.7l2.4.7-.4-1.1-2 .4zm.7 7.5l-4.5-.6H4.1l6.3.6zm-6.5-1.6l.8-1.9v-.2l-.3-.4-.5 2.5c0 .1 0 .1 0 0zm5.3-6l1.4-.3h.1l-2 .2a.9.9 0 0 0 .5.1z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M8.7 1707.8c.6 0 1.1-.4 1.1-1v-1.9c0-.5-.4-.9-.9-1 0 0-.4-.1-.7-.1s-.6 0-.9.1c-.8.1-1 .4-1 1v.9h2v.4h-3c-.6 0-1.1.3-1.2.9-.2.7-.2 1.2 0 2 .1.6.5 1 1 1h.8v-1.1c0-.6.6-1.3 1.3-1.3l1.5.1zm-1.7-2.4c-.2 0-.3-.1-.3-.3s.2-.3.3-.3c.2 0 .3.1.3.3 0 .1-.1.3-.3.3zm5 1.4c-.1-.6-.5-1-1-1h-.8v1.1c0 .6-.6 1.3-1.3 1.3H7.3c-.6 0-1.1.4-1.1 1v1.9c0 .5.4.9.9 1a3.55 3.55 0 0 0 .7.1c.3 0 .6 0 .9-.1.8-.1 1-.4 1-1v-.9h-2v-.4h3c.6 0 1.1-.3 1.2-.9.3-.8.3-1.3.1-2.1zm-3 3.8c.2 0 .3.1.3.3s-.2.3-.3.3c-.2 0-.3-.1-.3-.3 0-.1.1-.3.3-.3z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M6.6 1659.5c0-.3-.1-.5-.4-.6-.1 0-.2-.1-.3-.2s-.2-.1-.4-.1c-.1 0-.2 0-.2.1-.1.1 0 .1 0 .2s.1.1.2.2l.3.3c.1.1.2.2.1.4 0 .3-.2.6-.4.8h-.1a.76.76 0 0 1-.4-.2c-.1-.1-.1-.3.1-.3 0 0 .1 0 .1-.1.1-.1.1-.2.1-.3s-.1-.1-.1-.1l-.6-.5c-.5-.4-.7-.9-.8-1.5-.1-.7.1-1.3.5-1.9.1-.2.3-.4.5-.5s.3-.1.5-.2c.5-.1 1-.2 1.4-.1s.8.3.9.7c.1.3.1.6.1.9-.1.6-.5 1.1-1 1.2-.3.1-.4 0-.5-.2-.1-.1-.2-.3-.3-.4v-.2c0 .3.1.5.2.7.1.1.2.2.3.2.5.1 1-.1 1.3-.6.4-.5.4-1 .3-1.6l-.1-.3c0-.1 0-.1.1-.1h.1c.4-.1.9-.1 1.3-.1.5.1 1 .2 1.4.5.7.4 1.1 1.1 1.3 1.8v.3c0 .1-.1.1-.1.1l-.2-.2c-.1-.1-.1-.1-.1-.2s-.1 0-.1 0v.1c-.1.4-.3.8-.6 1.1 0 .1-.1.1-.1.2v.5l.1 1c0 .2 0 .3-.2.4-.1.1-.3.1-.4.1h-.7c0-.3 0-.5-.2-.6.1-.2.1-.4.1-.5s0-.3-.1-.4-.2-.1-.3-.1c-.3.2-.7.2-1 .1-.2-.1-.3 0-.4.1-.1.2-.1.3-.1.5s.1.4.1.7c0 .1 0 .2-.1.2-.3.1-.6.1-.9.1 0-.3 0-.5-.3-.6.1-.2.1-.5.1-.8zm-1.7-.9s.1-.1.1-.2a.76.76 0 0 0-.2-.4h-.2c-.1.1-.2.3-.3.4 0 0 0 .1-.1.1-.1.1 0 .1.1.2h.2c.1 0 .3 0 .4-.1zm0-1.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2.1.2.2.2.2-.1.2-.2z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M11.1 1609.7v.3c0 .4.1.4.1.9 0 .2-.1.4-.2.7 0 .1 0 .2-.1.3l.6.1c0-.2 0-.3-.1-.6s0-.4 0-.7c0-.4.3-.4.1-.9-.1-.2 0-.2 0-.7-.1-.6 0-1.7.2-1.6.2 0 .2.4.2.6.1.4-.2.6-.2.7s.1.2.2.1.2-.2.3-.4c.1-.4.1-.6.1-1 0-.2 0-.3-.2-.5-.4-.4-.6-.7-.8-1.2l-.3-.3c-.3-.2-.3-.7-.6-1s-.6-.4-.9-.4-1 .3-1.3.5-.2.6-.9.9c-.3.1-.8.5-.9 1.2-.2.1-.3-.1-.3-.2.1-.3.3-.6.3-1-.1-.5-.3-.9-.6-1.1-.3-.1-.5-.1-.6.1-.5.4-1-.1-1.2.6 0 .4.7.1.7.5-.1.4-.3.2-.2 1.5 0 .3.3.5.5.8.3.3.8.7 1.3.5.3-.1.4.1.3.3-.1.4 0 .6 0 1 0 .2.1.3.1.9.1.4-.1.8-.3 1.1h.4c.1-.3.1-.4.1-.8.1-.3.2-.3.2-.7 0-.7.3-.7.3-1.1 0-.3.1-.4.3-.4.3 0 .3.1.2.4 0 .4-.1.4-.2.6 0 .2 0 .5.1.6a1.38 1.38 0 0 0 .4.3c.1.1.4.3.4.6-.1.5-.6.4-.5.6h.7c.1-.1.1-.2.2-.2s.1.1.2.2h.3c.1-.1.1-.3.1-.3-.1-.3-.4-.3-.3-.6s.2-.3.3-.5c.1-.3.3-.3.3-.4 0-.3 0-.6.1-.9 0-.3.1-.4.3-.6s.2-.3.3-.1c.1.4.4.9.5 1.3zm-2.7.1l.2-.2c.1-.1.1-.1.2-.3.1-.3.2-.2.3-.6 0 0 .1-.3.1-.2.1 0 .1 0 .1.3l.1.8v.2c0 .3-.2.5-.3.7s-.2.3-.5-.1c-.3-.2-.4-.4-.2-.6z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M4.6 1555.4c-.4 0-.8.3-.8.7v3.7c0 .4.3.7.8.7h6.8c.4 0 .8-.3.8-.7v-3.7c0-.4-.3-.7-.8-.7H4.6zm0 .5h6.8c.1 0 .2.1.2.2v3.7c0 .1-.1.2-.2.2H4.6c-.1 0-.2-.1-.2-.2v-3.8s0-.1.2-.1zm.5.8v2.6h.8v-1.7l.8 1 .8-1v1.7h.8v-2.6h-.9l-.8 1.1-.8-1.1c.1 0-.7 0-.7 0zm4.5 0v1.3h-.8l1.2 1.3 1.2-1.3h-.8v-1.3h-.8z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M6.5 1512.1c-1-.3-1.5-.9-1.5-2v-.8c0-.6-.3-.9-.8-.9v-.9c.5 0 .7-.3.8-.8v-.9c0-.5.1-.9.4-1.3.2-.3.6-.6 1.1-.7l.2.7c-.2.1-.4.2-.5.4s-.2.5-.2.8v.9c0 .6-.3 1.1-.8 1.3.5.3.8.7.8 1.4v.9c0 .7.2 1.1.7 1.2l-.2.7zm1.2.1l-.6-.3.2-.3a1.93 1.93 0 0 0 .3-1v-1h1v.8c0 .3-.1.6-.2 1-.2.3-.4.6-.7.8zm-.4-5.7c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.3-.2.5-.3.2-.5.2-.4-.1-.5-.2-.2-.3-.2-.5zm2 5c.4-.2.7-.6.7-1.2v-.9c0-.6.3-1.1.8-1.3-.5-.2-.8-.7-.8-1.4v-.9c0-.7-.2-1.1-.7-1.2l.2-.7c.5.1.9.4 1.1.7.3.3.4.7.4 1.3v.9c0 .6.3.8.8.8v.9c-.5 0-.8.3-.8.9v.9c0 1-.5 1.6-1.5 1.9l-.2-.7z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M11.7 1453.8H4.3c-.3 0-.5.3-.5.5v7.3c0 .3.3.5.5.5h7.3c.3 0 .5-.3.5-.5v-7.3c.1-.2-.2-.5-.4-.5zm-3.3 6.4c0 .8-.5 1.2-1.2 1.2a1.51 1.51 0 0 1-1.3-.8l.6-.4c.1.2.3.4.6.4s.4-.1.4-.5v-2.5h.8l.1 2.6zm1.8 1.2c-.7 0-1.1-.4-1.3-.8l.6-.4c.1.3.3.5.7.5.3 0 .5-.1.5-.4s-.1-.4-.5-.5l-.2-.1c-.6-.2-.9-.5-.9-1.2 0-.6.4-1 1.1-1 .5 0 .9.2 1.1.6l-.6.4a.55.55 0 0 0-.5-.3c-.2 0-.4.1-.4.3s.1.3.5.5l.2.1c.6.3 1 .6 1 1.2-.1.7-.6 1.1-1.3 1.1z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M8.5 1403.8c.4 1-1.6 1.7-1.8 2.6-.2.8 1.3 1.7 1.3 1.7-.2-.3-.4-.6-.6-1.2-.5-.8 2.2-1.5 1.1-3.1zm1.4 1.5s-1.8.1-2 1.3c0 .5.5.8.5 1.2 0 .3-.3.6-.3.6s.6-.1.8-.6-.4-.9-.3-1.3 1.3-1.2 1.3-1.2zm.5 2.7c-.2 0-.4 0-.6.2.4-.1.7.1.7.4 0 .6-.9 1.2-.9 1.2s1.4-.2 1.4-1.2a.65.65 0 0 0-.6-.6zm-3.4 0s-1.7 0-1.7.4 2.2.5 3.8.2l.5-.4c-1 .2-3.4.3-3.4 0 .1 0 .8-.2.8-.2zm-.4 1c-.3 0-.6.2-.6.4 0 .4 2 .7 3.4.1l-.5-.3c-1 .3-2.9.2-2.3-.2zm.2.8c-.4 0-.6.2-.6.4 0 .5 2.1.6 3 0l-.5-.3c-.6.3-2.2.3-1.9-.1zm-1.1.5c-.6 0-1 .3-1 .5 0 1.2 5.9 1.1 5.9-.1 0-.2-.2-.3-.3-.3.5 1.1-4.8 1-4.8.4 0-.1.4-.3.7-.2l-.3-.1c-.1-.2-.1-.2-.2-.2zm5.6.8c-.9.9-3.2 1.2-5.5.6 2.3.9 5.5.4 5.5-.6z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M11.7 1353.8H4.3l.8 7.5 2.9.9 2.9-.9.8-7.5zm-1.7 2.6H6.8l.1.9h3l-.2 2.7-1.7.5-1.7-.6-.1-1.1h.9v.4l1 .2.9-.2.1-1.1H6.2l-.2-2.6h4.1l-.1.9z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M4.3 1303.9l.8 7.5 2.9.8 2.9-.8.8-7.5c0-.1-7.4 0-7.4 0zm5.6 3.4l-.1 2.6-1.8.6-1.8-.6-.1-1.3H7v.6l.9.3 1-.3.1-1H7v-.9h2.1v-.9H6l-.1-.8H10l-.1 1.7z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M11.7 1256l-1.8 1c-.3-.4-.7-.7-1.1-.9-.4-.1-.9-.1-1.4.1-1 .4-1.4 1.3-1.3 2.2s.7 1.6 1.7 1.8 1.8-.3 2.2-1c.3.1.6.3.9.5s.6.3.9.5c-1.2 2-3.4 2.5-5 1.8-1.8-.7-2.8-2.4-2.7-4.1.1-2.1 1.7-3.5 3.2-3.8 2.1-.5 3.8.7 4.4 1.9z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><g class="C"><use xlink:href="#D"/><use xlink:href="#D" x="-6"/><path d="M9.1 1204.7l.4-.7v-.1h-.1l-.4.7c-.3-.1-.6-.2-1-.2s-.7.1-1 .2l-.4-.7h-.1s-.1.1 0 .1l.4.7c-.7.4-1.2 1.1-1.2 1.8h4.6c0-.7-.5-1.4-1.2-1.8zm-2.2 1c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm2.1 0c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm-3.3 1v3.3c0 .3.2.6.6.6h.4v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.7v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.4c.3 0 .6-.2.6-.6v-3.3H5.7z"/></g><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M4.5 1162.3v-1.6c.6 0 1.1-.3 1.5-.7.3-.3.6-.7.7-1.1.3-.5.4-1 .6-1.5a3.79 3.79 0 0 1 .6-1.3c.3-.6.7-1 1.3-1.4.3-.2.6-.4.9-.4.3-.1.6-.1.9-.1h.4v1.6h-.1c-.4 0-.8.1-1.1.3-.2.2-.4.3-.6.6-.2.2-.3.4-.4.7h1.4v1.7h-2c-.1 0-.1 0-.1.1-.2.6-.5 1.1-.9 1.6a4.59 4.59 0 0 1-2.8 1.7c-.1 0-.3 0-.4.1l.1-.3z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M5.2 1108.9v1.9H3.8v-5.5H6c.4 0 .8.1 1.1.2s.6.4.8.7a1.69 1.69 0 0 1 .3 1c0 .5-.2 1-.6 1.3s-.9.5-1.6.5c0-.1-.8-.1-.8-.1zm0-1H6c.3 0 .4-.1.6-.2.1-.1.2-.3.2-.6s-.1-.5-.2-.6c-.1-.2-.3-.2-.6-.2h-.8v1.6zm5.7 1.7c0-.1-.1-.2-.2-.3s-.3-.1-.6-.2l-.8-.3c-.2-.1-.4-.3-.5-.4s-.2-.3-.2-.5c0-.4.2-.7.5-.9.3-.3.7-.4 1.2-.4s1 .1 1.3.4.5.6.5 1h-1.3a.47.47 0 0 0-.5-.5c-.1 0-.3 0-.3.1-.1.1-.1.2-.1.3s.1.2.2.3.3.1.5.2l.6.2c.6.2.9.6.9 1.1 0 .4-.2.7-.5.9-.3.3-.8.4-1.3.4-.4 0-.7-.1-.9-.2-.3-.1-.5-.3-.6-.5-.2-.2-.2-.4-.2-.7h1.2c0 .2.1.3.2.4s.3.1.5.1.3 0 .4-.1c-.1-.2 0-.3 0-.4z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M8.2 1060.2H5.8l-.5 1.4H3.8l2.5-6.7h1.3l2.5 6.7H8.7l-.5-1.4zm-2.1-1.1h1.7l-.8-2.5-.9 2.5zm4.6-3.8c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.4-.2.5-.3.2-.5.2-.4-.1-.5-.2c-.2-.1-.2-.3-.2-.5zm1.4 6.3h-1.3v-5h1.3v5z" class="C"/><path fill="#fbc02d" d="M0 1000.1h16v3.6H0v-3.6m.9 4.4h14.2v11.6H.9v-11.6m4.9 2.7c-.2 0-.4.2-.4.4v1.3h5.3v-1.3c0-.2-.2-.4-.4-.4H5.8z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M3.8 956v.8h4.4v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm8.1-6.6H9.4c-.1 0-.3.1-.3.3v1.9c0 .2.1.3.3.3h2.5c.1 0 .3-.1.3-.3v-1.9c0-.2-.2-.3-.3-.3m-2.2 1.9l.5-.6.3.4.5-.6.6.8H9.7zm-5.9-1.9v.8h4.4v-.8H3.8z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M3.8 911.1h8.3v-5.9H3.8v5.9zm5.4-4.5h2.1v.6H9.2v-.6zm0 1.2h2.1v.6H9.2v-.6zm0 1.2h1.2v.6H9.2v-.6zm-2.7-2.7v1.8h1.8a1.79 1.79 0 0 1-1.8 1.8 1.79 1.79 0 1 1 0-3.6z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M11.2 854.9H3.8v6.5h8.3v-6.5h-.9zm-6.4.9h1.9v.9H4.8v-.9zm0 1.8h1.9v.9H4.8c0 .1 0-.9 0-.9zm0 1.9h1.9v.9H4.8v-.9zm6.4.9H7.5v-.9h3.7v.9zm0-1.8H7.5v-.9h3.7v.9zm0-1.9H7.5v-.9h3.7v.9z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M8 803.9a4.23 4.23 0 0 0-4.2 4.2c0 .3 0 .6.1.9.4-.1.8-.2 1.1-.2.6 0 1.2.1 1.8.4.7-.5 1.6-.8 2.5-.8.6 0 1.2.1 1.7.3v.1c0 .1 0 .1-.1.1h-.4c-1.5 0-2.8.5-3.6 1.6v.1c-.8-.7-1.8-1-2.9-1 .6 1.6 2.1 2.8 3.9 2.8a4.23 4.23 0 0 0 4.2-4.2c.1-2.4-1.8-4.3-4.1-4.3zm3.3 2.5h-.2c-.8-.1-1.6.2-2.2.8h-.1c-.4-.5-1-.7-1.7-.7h-.7c.4-.2.9-.3 1.4-.3a1.69 1.69 0 0 1 1 .3c.4-.3 1-.4 1.5-.3.4-.1.7 0 1 .2-.1-.1 0-.1 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M12.2 755.2c0-.2-.1-.3-.3-.4H8.8v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-.8h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.5h.1zM7 759.4c-.2.1-.4 0-.6 0l-.4-1.9-.4 1.8h-.5l-.5-2.5h.5l.3 1.8.4-1.9h.5l.4 1.9.3-2h.6l-.6 2.8zm4.9 1.7H8.7v-.8h2.5v-.3H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.3h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.7h3.1v6.1z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M12.2 705.3c0-.2-.1-.4-.4-.4h-3v-.9h-.6l-4.4.8v6.6l4.3.8h.6v-.9h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.3h.1zm-5.6 3.1c-.2.1-.5.1-.7.1v1.1h-.6v-3c.5 0 1.1-.2 1.6.2.4.4.3 1.3-.3 1.6zm5.3 2.5H8.7v-.8H11v-.4H8.7v-.5H11v-.2H8.7v-.6c.4.1.8.1 1.1-.1a1.1 1.1 0 0 0 .6-1H9.2V706l-.5.1v-.9h3.1v5.7h.1zm-1.2-3.8c0-.7-.6-1.2-1.2-1.2v1.2h1.2zm-4.8-.1v1c.2 0 .4 0 .5-.2s.1-.4 0-.6-.3-.2-.5-.2z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M12.2 655.3v-.2c0-.2-.1-.2-.2-.3H8.8v-.8H8l-2.4.4-1.6.3h-.1v6.6l2.6.4 1.7.3h.6v-.9H12c.1 0 .2-.1.2-.2v-5.6zm-5.5 4.3c-.1 0-.1-.1 0 0l-.5-1.2s0 .1-.1.1l-.4.9H5v-.1l.6-1.3v-.1l-.6-1.3v-.1h.6l.4 1.1.4-1.1c0-.1 0-.1.1-.1h.6c-.1.2-.2.3-.2.5l-.5 1v.2l.7 1.4v.1h-.4zm5.2 1.4H8.8v-.6h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.6h3.1v6.3zm-.7-5.4H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0-3.1H9.9v.7h1.3v-.7zm-1.3 2.7h1.3v-.7H9.9v.7z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M12.2 605.8c0-.4-.3-.7-.7-.8-.9-.3-1.8-.3-2.7-.2v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-1c.9.1 1.9.1 2.7-.2.3-.1.7-.4.7-.8l.1-4.4zm-5.5 3.8l-.2-.7h-.9l-.2.7h-.6l.8-3h.7l.9 3.2-.5-.2zm2.1-4.5c.8-.1 1.7-.1 2.5.1.2.1.5.2.6.5 0 .2-.3.3-.4.4-.9.3-1.8.3-2.7.2v-1.2zm0 3c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2zm3.1 2.3c-.3.3-.7.3-1.1.4-.7.1-1.4.1-2 0v-1.2c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2zm0-3c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2c.6.1 1.3.1 1.9 0 .4-.1.9-.2 1.2-.4v1.2zm-6.1 1h.6l-.3-1.4-.3 1.4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M11.5 554.7v6.8l-2.5.8-4.5-1.6 4.5.5v-5.9l-2.9.7v4l-1.6.7v-5.1l4.5-1.7 2.5.8z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M8.1 504.9c0 .5-.1 1.2-.2 1.7v.1c.3.7.7 1.3 1.2 1.7.1.1.3.2.4.3h.2c.5-.1 1-.1 1.5-.1.2 0 .4 0 .7.1.2.1.3.2.3.4v.3c-.1.3-.2.4-.5.4-.4 0-.8-.1-1.1-.2l-1-.4c-.1 0-.2-.1-.2-.1-1 .1-1.9.4-2.8.7 0 0-.1 0-.1.1l-.8 1.2a2.36 2.36 0 0 1-.9.8.45.45 0 0 1-.5 0c-.1 0-.1-.1-.2-.1-.2-.1-.2-.2-.2-.4.1-.2.2-.4.4-.5.4-.4.8-.7 1.2-.9h.1c.2-.1.4-.2.5-.4l.7-1.4.6-1.3v-.2l-.3-1.7c0-.3 0-.5.1-.8.1-.2.2-.2.3-.3h.3c.2 0 .2.1.3.2.1.3 0 .6 0 .8zm-1.4 4.7c.7-.3 1.4-.4 2.2-.6l-.7-.7a3.04 3.04 0 0 1-.5-.7l-1 2zm1-3.7l.1-.1c.1-.3.1-.7.1-1 0-.1-.1-.2-.1-.4 0-.1-.1-.1-.1-.1 0 .1-.1.1-.1.1-.1.4 0 .8 0 1.1 0 .2 0 .3.1.4zm2.7 3.3l.9.4h.5c.1 0 .1-.1.1-.2-.1-.1-.2-.1-.2-.1-.2-.1-.5-.1-.7-.1h-.6zm-4.9 1.3c-.4.4-.9.8-1.1 1.3.5-.3.8-.8 1.1-1.3z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M3.8 454.4v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h6.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M3.8 404.4v7.5h8.3v-7.5H3.8zm1.5 6.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm0-1.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm6.4 5.5h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9zm0-1.9h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M11.4 354h-.2l-4.2.6c-.4.1-.7.4-.7.9v3.8c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8 0 .7.7 1.2 1.7 1 .9-.2 1.7-1 1.7-1.8v-3.7l4.2-.6v2.4c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8s.7 1.2 1.7 1c.9-.2 1.7-1 1.7-1.8v-4.6c.1-.4-.3-.8-.7-.8z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M4.7 304.8c-.5 0-.8.4-.8.8v5c0 .5.4.8.8.8h6.7c.5 0 .8-.4.8-.8v-4.9c0-.5-.4-.8-.8-.8-.1-.1-6.7-.1-6.7-.1zm0 .8h6.7v5H4.7v-5zm5.2.8a.65.65 0 0 0-.6.6c0 .4.3.6.6.6.4 0 .6-.3.6-.6a.65.65 0 0 0-.6-.6zm-3.6.9l-.8.8v1.7h5v-.7l-1.7-1-.8.4-1.7-1.2z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M3.8 254.5v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><g class="C"><path d="M5.7 207.7H5V205l-.8.3v-.6l1.4-.5h.1v3.5z"/><use xlink:href="#E"/><path d="M12 206.2c0 .5-.1.9-.3 1.1s-.5.4-.9.4-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/><use xlink:href="#E" x="-2.8" y="4.8"/><use xlink:href="#E" y="4.8"/><path d="M11.3 212.4h-.7v-2.7l-.8.3v-.6l1.4-.5h.1v3.5z"/></g><path d="M15.2 155v7.8c-.2.5-.4.7-.8.7H4.3c-.5 0-.8-.3-.8-.8v-11.8c0-.5.3-.8.8-.8h5.1v4.4c.1.4.4.6.8.6H15l.2-.1zm-12.5-2.4v11c0 .4.1.6.4.8.1.1.3.1.4.1h9v.9c0 .3-.3.6-.6.7h-.3l-10.1.1c-.4 0-.7-.2-.8-.6-.1-.1-.1-.2-.1-.3v-11.9c0-.5.3-.8.8-.8h1.3zm7.3-2.5l5.2 4.5h-4.4c-.5 0-.8-.3-.8-.8v-3.7zm2.8-35.7H1.5c-.8 0-1.5-.7-1.5-1.6v-9.6c0-.9.7-1.6 1.5-1.6H6l1.5 1.6h5.3c.8 0 1.5.7 1.5 1.6H1.5v8l1.6-6.4H16l-1.7 6.8c-.2.7-.8 1.2-1.5 1.2zM6.4 51.6H1.6A1.58 1.58 0 0 0 0 53.2v9.6a1.58 1.58 0 0 0 1.6 1.6h12.8a1.58 1.58 0 0 0 1.6-1.6v-8a1.58 1.58 0 0 0-1.6-1.6H8l-1.6-1.6z" fill="#1565c0"/><path fill="#478fcc" d="M10.7 0H2.9c-.5 0-1 .3-1 .8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-12L10.7 0z"/><path d="M7.2 10.9h1.3v1.3H7.2v-1.3M8 3.8c2.2.1 3.2 2.3 1.9 4-.3.5-.9.8-1.2 1.1s-.3.8-.3 1.2H7.2c0-.7 0-1.3.3-1.7.2-.4.8-.7 1.1-.9 1-.9.8-2.3-.6-2.4-.7 0-1.3.6-1.3 1.3H5.5c0-1.5 1.2-2.6 2.5-2.6z" class="C"/><path d="M10.7 2.4c0 .5.3.8.8.8H14L10.7 0v2.4z" class="B"/><defs ><path id="B" d="M10.7 1950H2.9c-.5 0-.9.3-.9.8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-11.9l-3.4-3.3z"/><path id="C" d="M10.7 1952.4c0 .5.3.8.8.8H14l-3.3-3.2v2.4z"/><path id="D" d="M11.5 1207.2a.47.47 0 0 0-.5-.5.47.47 0 0 0-.5.5v2.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-2.1z"/><path id="E" d="M9.2 206.2c0 .5-.1.9-.3 1.1-.2.3-.5.4-.9.4s-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/></defs></svg>                                                                                                                                                                                                       includes/File_manager/lib/themes/Material-Gray/css/theme.css                                        0000644                 00000134334 15266052702 0020035 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder-Material-Theme (Gray) v2.1.10 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 RÃ³bert KelÄ�Ã¡k {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  -webkit-background-size: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder .elfinder-button-text {
  top: -3px;
  margin-left: 6px;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(40, 42, 45, 0.79);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #535e64;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #1d1d1d;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #000000;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #3c4448;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #41494e;
  color: #e8e8e8 !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #e8e8e8 !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #cdcfd4;
}
.elfinder-cwd-file {
  color: #555;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #4c5961;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #4d4d4d;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #353b42;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #2a2e34;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #2e333a;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #3b4047;
  background-color: rgba(104, 111, 121, 0.5);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #353b44;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/themes/dark-slim/img/elfinder.eot                                         0000644                 00000111470 15266052702 0017727 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       8“  �’                �    LP                       2
KF                   e l f i n d e r    R e g u l a r    V e r s i o n   1 . 0    e l f i n d e r          €  pGSUB ‹%z   ü   TOS/2>4S�  P   Vcmapósó»  ¨  cvt ýþÜ  †x    fpgmŠ‘�Y  †˜  pgasp     †p   glyf–"NV  	¼  q2headÛáÏ  zð   6hhea;  {(   $hmtx›Ïÿ€  {L  ÄlocaÅ/ãc  }   ämaxp’�  }ô    nameg…è  ~  ÍpostsÅ   €ä  ‹prepåA+¼  ’   †    
 0 > DFLT latn                      liga                     ¥�   z¼   Œz¼  à 1                         PfEd @è òHRÿj Zf ª                  ,     Â     ¼     ,  
  Â �   (    èTèWðð†ðŽð ðÛðêðöññ-ñ>ñ]ñvñÀñÞñåñøòHÿÿ  è èVðð†ðŽð ðÛðêðöññ-ñ>ñ\ñuñÀñÞñåñøòEÿÿ                                        ( Ð Ò Ö Ö Ö Ö Ö Ö Ö Ø Ø Ø Ú Ü Ü Ü Ü Ü           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p                                                                                                                                                                                                                                                                         P       p  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èV  èV   V  èW  èW   W  ð  ð   X  ð  ð   Y  ð  ð   Z  ð†  ð†   [  ðŽ  ðŽ   \  ð   ð    ]  ðÛ  ðÛ   ^  ðê  ðê   _  ðö  ðö   `  ñ  ñ   a  ñ  ñ   b  ñ-  ñ-   c  ñ>  ñ>   d  ñ\  ñ\   e  ñ]  ñ]   f  ñu  ñu   g  ñv  ñv   h  ñÀ  ñÀ   i  ñÞ  ñÞ   j  ñå  ñå   k  ñø  ñø   l  òE  òE   m  òF  òF   n  òG  òG   o  òH  òH   p     ÿù’Å  1 .@+.&% Go  o  f*(#"!+#5##"&'	7#"'	&/&6762546;2Ö�ÖAA|"þ~þ~#‘0ˆ
k
z(þõÖÖþø$)Bþ¾)Nql

ãf   ÿúÿ±êÃ  J X f s € † {@xwv@>	xmlhgB-	ƒy* †€z'
‚
G m m  	` 	  	`    `  

` T X Lfd_]XV*(('++2.6"'%##"'&7>76326?'&'#"'.'&67632%626&'&#"32>'&#"3254?'#'7% ³Hþ>6/JPL036.JQ.&DD&.QJ.6/MPJ.8>�Hýi-47*-38)-)83-*7—6,	x6šGþSYâGþÞc^ "Þ($Ø$+P/,/E*P/()/N+!<,/N,%Ø$	'MJ!H!þuJ!Jw!	‚A$ð@5²#äM      ÿŸ�     9@6
	 G o  f+%7!7'7'!7''7'þ±€€OþÒ�€P~€O��þ±€€}€O€o€þ°‚O.P€�Oýƒ‚P€€.þ±�€P   ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½M   $@!  G  p   T  X   L8+4&6"'.=46732ú*:,(>&Uþî;þq*éH�X*&@$0þÙþî�Hè*þq   ÿþÿÄ6ø   %@"
 G	E D  o   f+?%7&767'67>'ºtþìXtvdŒdHX¢Xtv`�bHXVrŒtþÜVzPxdfHXúúVzþ°xbhHXú\t      ÿŸ�     :@7
	
E D o  f+%!7'777'!'7À€OOüÒ€O~�þ±€€O�ß€€N~!‚P€�O/�~O~þ±þ �€þ°‚‚/O~O~�      ÿjrR  " % 0 1 šµ#GK°PX@0	 ^  `  ` 

 X  HX I@4  
 
^	 ^  `  `RX LY@! 0/.,'&%$""! +!"#"3!26=32654&!;##4/&#!5!Pýq|�}üÞÄy_55ýd	—
þ¿]RtüïtüSÞyý»´4þÍ	–
Zý" ÿøÿ¶ì  # wµGK°PX@) o	ooc   R  Y   M@( o	ooo   R  Y   MY@##"6
+%#!"&/&?332!76;'3'%33È$üÐ$
*žbª²(,(²ªb0þüþü¦¾Æ
,šš0l‚nn‚Öôô ÿ  ÿøÿ¶ì  # iK°PX@(  oo oc R Y M@'  oo oo R Y MY@"7	+####!"&/&?332!76;'3ô¤¾¦Ø$üÐ$
*žbª²(,(²ªbôÿ  þ²
,šš0l‚nn‚    ÿ±   / ; C g d@aWE)!	 G  m  k  		`
^ T X Leda^[YSROLIGA?$&&&&&#++"&546;2+"&546;2+"&546;2!3!2>3'&'#+#!"&'#"&=46;7>73232
$

$
�
$

$
Ž
$

$
HþÐþ‰ú±ë
64%þ0%45

¬'	,²*	'­
·þ¿

A

þ¿

A

þ¿

A

þdýï

eAS$
ýï.DB.
$
]]
 ÿÿÿ‰ª3  ! C L �·3&#GK°
PX@6 m k e    `  a T Y M@7 m k m    `  a T Y MY@/$	+4>2".7>74."76235467>?67>74&#"26.J~¬a_®|LJ~¬À®|Lv8^‚�€`6^¢¾¤\×-a8uT@S*C*&F(^_®|LJ~¬¿®~JJ~®_G„\:6`€I_¢^^¢Qe%(#1Dþ� ""@"$   ÿÃè± 	  > D W W@T4 S RCPB)'G o   m  k  k n   T  X   LLK.$+%7.7474&"265463267#"'&547.'&47>327632#7>7&'76+08"€U^jFdD0Ê;ê;
D	P†2Vü—22
$	XI�ú'TÜ|)wÈEA]#5b iO#j=C:A„�gdE0DuiþZi2	'
*$xM*ƒ˜
6	þýN€^$-`jJ
„id@?$b6    ÿž�    4@1
 G  m   n T V J				+    7#5#�þúþ�þøtýdßÞ¥p^¸þú
lÿ ½ÞÞáá      ÿ��   2@/
 G   oo R X L				+4     %'335sþúþ�þøŸàÞ§p^¹þúþŽþü·ÞÞáá     kj  ³-+%'7w¹;þè:°º;þè;    ÿ��!   "@
 G  o f  +2    ''Ñ¸þúþ�þøt\Oþó~OþúþŽþüjýo\Oþô~N    ÿŸ�  	    # + 3 A@>!  E10%$	D  o	f  -,)(
  
+53#>7.'5#.#>7.'335>	<V¢¢V<q¢V<<V˜ÚqšþqÚ™j˜šØqšïqØ™iš—¢X:q;X;Vþí¢V<†qÚ™k˜þý˜Úq˜þrÜ˜k˜™Úr˜   ÿùè}  " 3 F@C G m   k   k  ` T X L$+&'.547 64&"26546326 $'&476,¡U€"’Ð’"€UKàâþ·FdD0ÙNþøþÚþøNN&N:„A:Cg”�iC:A„rˆˆIdE0DÌ�šš�&€šž~    ÿËªò  & ;@8#$%G o oo  o   f"!&&"+#"'.'"'&47>%./5	5ª<žh=Xþ·HZ¶êþ,à�Æ„/þÞ"]PK*=B.C *Y$þàºÐi~®·þâþá·   ÿËªò  ( V@S! 'G o o   m  nTX L #"(( +"&=475476'&=7	"65ì´ XHþ·X iœ<†4"þÞ„Æ�5 4º $Y* þ½,þ¾*KR\8··°}i     Q”         # ' + /KK°	PX@E  ^" 	^#!		R#!		V
	JK°
PX@H  ^" ^#	R!		R!		V
	J@E  ^" 	^#!		R#!		V
	JYY@b,,(($$    ,/,/.-(+(+*)$'$'&% # #"!
	  $+#5!#5#5!#5#5!#5#5!#5#5#5%#5#5  ‡¡F ‡¡F ‡¡†¡† E¡¡¡†   ”¡¡¡¡æ¢¢¢¢æ    Ì¡¡¡¡å¢¢ç  ç¢¢ä££      !”       t@q  ^   ^	 	^ ^R 

^V J  
	  +#5#5#5!5!5!5      !ýëýëýë”¡¡æ¢¢æ  –QQæQQÙQQ     ÿ��!   +@(  o oo f		 		
 +2    5!Ñ¸þúþ�þø™þAþúþŽþüjþpp      ÿièQ  ³-+		'	7	ŽZšþ¦þ¦šZþ¦šZZš]þ¦šZþ¦šZZšþ¦Zš   ÿjèR         Æ@GFEDK°PX@6  ^ 	^ 	
	
^VH VI@9 ^  ^ 	^ 	
	
^ R VJY@4
	+535353'535!%5!%7!žJübJêêê)ëëëèþèþ7‘8LžJübäëëêêþèë-êêýƒƒ¨ƒƒ¨ƒƒ   ÿáøÛ ! 1 /@, G  p  `   T  X   L+%"+#"&'#"&54?.547>2%32>4."¨)f61](3‚-�~ "'%€•@?&&þ™@!-O./N[O/ )*" }‚/‚3&^2K@?K'%?AJ824$.O]N./N-"@     ÿjèR # 5·	 GK°PX@  HI@  ofY¶+	64/&"	&"	27	2?64'M•:þlþl9”þl9””:^”:þk•:þlþl:•þk:  ÿàÿbÀV 2 8@ G-& DK°PX@   p I@	  o   fY¶+'&767&76.7>7267677<.d0
,,t.
�".ˆ,Ì6z8 hj0B*nŠd~š¢ \Dž®F,d.`<ðB n,$
0PD<88     ÿÊ¡@ 	 ) '@$	 G  o  f%$+7/7#"/"&547'&547%762{ªëjiì«)ÓÓþÊ0
ûú0Ë~ } "¦"ÕÕ"¦ëoo²Åþé„„
Å(þþ(      ÿ�Í    @  T  X  L 
 +%!"3!26=4&²ûÍ3
N

N
     ÿŸ�   9@6GD   m    ` R V J+'7654'&"3!376 '7$kkTOTJJHØH™�þ±pœg8¨OOO¶k›–kTPTJglKHH›mN“œgü‚OQQ     ÿù¡  @ o  o   f#53+#!"&546;2!2¡J3ýY3JJ3³3Jw3Jÿþw3JJ33JJ3J    ÿÊ¡@  @
 G  o  f+/"&547'&547%762¡Ê0ûú0Ë~ } éÅþé„„
Å(þþ(   ÿj¬R     # ¿¶	GK°PX@A   ^
	^ 	 	^  ^  ^ VH V I@D  ^   ^
	^ 	 	^  ^  ^ R V JY@$  #"!   +##!5353!!35#53#'!5!#!5!'uu„uvþÛýð`°vdu;†þ±u;þ,RuuýwuüüSˆ°;udþSÅ‡:ýïL:      ÿjèR  ! 3 D ÎK°PX@.mk
 X	  HXIK°PX@+mk\
 X	  I@3mk	 
 `TXLYY@+64#" ?>;94D6D.+(&"3#3!! +!"265!264&!4&"3!264&"!"3!2654&!"3!2654&[þÌ þõ!3Uþõ2þÌ RþÍ ühþÎ 2þó 4f þó4     ÿjCR    uK°PX@' ^    ^ V	H V I@*	 ^ ^    ^ R V JY@  
	  
+!!!3!!!!CþïüÎ!¶ý„Æý)|ý„Rý„þ”|lýßk¶ýßl    	  ÿÈ-ô     # * 4 B K ¶@310/,*'& A6GK°(PX@3e
 ^	` 	 	`   R  V   J@4m
 ^	` 	 	`   R  V   JY@"DC55  HGCKDK5B5B<;
	  +!!63!377&%677&'&76?76?2654&'52"&46¼qýì¶þQ%/ .ú58
w8p<),[$8L8$ôüó,>"ýo‘2	( 	(,%   K "hD
0'77'0
D}    ÿÿÿ¥é  $ 4 3@0# GD  o   oo f&%.,%4&4+%!2764'&#!"'&#01"301276!"3!276'&“6þÆþÊ:¸ þØ›-ý«›U›ä#ýÝÙýõþîóþî    ÿjèô  + / 3 < I U @&GK°PX@[ 	^	 	^ 

^ ` `  `^  ^    ^ X I@` 	^	 	^ 

^ ` `  `^  ^    ^ T X LY@EJJ>=5400,,  JUJUTSRQPONMLKDC=I>I984<5<030321,/,/.-+*%#  #+!32>54.'!"654&'5#327!35352"&462".4>#33535#5¼p#23:DsC1U5ýÍô-S!$>$8&(þóÛ>>>3V33VfV22V^^>^^ôüó,CsD9dFŸ>þ¨ 0
DD
0'7
>I0.‘??^??Û>3VfV32WfW2?^>^^>^     ÿ†êQ 5 6 S T ¡¶SL	GK°PX@3 		m
k p  	 `` X I@9 		m
k p   `  	 `TXLY@ POHGBA980-*'" 55+!&/&#!"3!264&#!"&5463!3!2#!"3!2654&#2>'1"5'&"27017265Œþzlþó'77'þæi†þæ'77'þØ		…		…	
PPÔi7'ýÍ'73dþJ7'¶'7þ	
…		…		PþvŠP     ÿeëR   T U �´DK°PX@,   mp  `	
` X I@2   mp  `  `	T	X
LY@ OLIFA><:52/,'$T T+%4&"'&"2176?>&"!&/&#!"3!264&#!"&5463!3!2#!"3!2654&#ePP		……	
(þzlþó'77'þæi†þæ'77'"OŠþvO
	†…		³i7'ýÍ'73dþJ7'¶'7    $  ÿl P   
        % & , - 4 5 < = P ] b c i j p q w x ~  … † � Ž • – Ï@*t
‰omf3  ”’„‚}{a_^8)$!
GK°PX@7

m k  m 	  ^ HX I@8 
o

o o  m 	  ^TX LY@&srRQ��Œ‹zyrwswhgXWQ]R]NLIFA?;:10+*+67&'67&''35&'7&'7567&/'675#73&'67#5!"3!265#".".4>2'53&/67%3'3#67&'7&'367#67&'µ"*)"„Y('üä&)³	
Á"-Yï8!#8þl'99'A'9ž3tDtCCtˆtDDtY&(z"-YÁ
	?�Æ(tY-"ü
	#88#a0þt2aÛ&"†
%a2þÎm&"³"-8/	È	25'(¿¬9'üÜ'99'j2ýÇDtˆtDDtˆtD6a4&!m
[Ï‹(þÔ&!†	þ	.8. x8. .     ÿ½H  @ G D  o   f(+%"/'&7632767>=+©þÅì¨"�qZ=	6Ð-8%©ì;©! 9-~Ñ6	?Yn   ÿóÿ¢Ý  ³-+	&76'&fþšˆþxrtþvþv     ÿŸ�      ! H@E !G   o ooo o f "+632!>7!&547#"'`á/"±Áégþ`þU%�_§%Ž^ùêh!ã0&¬‚—~xþJ‹}ž5;[†ý²Z† þt~Ÿ4;¥þ	y   ÿÿÿù  ) ,@) o   m   n T X L#:#65+#!".?>3!2'!"'&746;2!2»V&ý¡¼V%_Àþ05r#¼J3³3J/4H?Ý("Ý(¯Z4)Ý3JJ3J    ÿúÿæŽÔ  # $@! o o   T  X   L5475+#!"&/&763!26&#!"3!267t""ý8$"ž2˜2Xý|"N"0,4¸¸4,v..þ  J ÿÿÿù0  @
 G o  o   f#)2+%!"&7467&54632632/|Zý¡g”P@¨vXŽ"'6;TH^ÏY|’hJzv¨bP#T;*#t  ÿúÿjéX  < Z x ˜ v@j“G+ EK°PX@"   o o o m X I@'   o o o m T X LY@‘�}usgeJH0.+71#.'&67>2&'"5156767>'#"/.7%13'"&'&/&'&'&?>101&/&67>767632101#"'.'&4?672#. 	PP	xC˜N
 (3_(ON8Lf	0Y	ö	
!iC
!KbþJ"M�:R	^j	�<K˜G;)2g08>&	`+!:
B4†L

^8	\ýè Fq&^
Igþr	?5	;/\     ÿu G     @
	-+7'%7'57-77ÖÖ7ËÐ.ÆÆþÍËËb^ËþÛ&(þÚÊd7£¢Ë®®Á¥ª¹œœB97›þ�g¹Ä©üåc›<?        è« * I _@\':G   m m k k k n  T  X  L DA530.&$"  **	+"&#"&546767>7363232..#".#"3!2>54&$@1V8'?$*G+)	Ac;	.U# B^2K+M)1Q.2A(C(ò'C(D«#-O0/F(+J."C%:a>2P.þˆ*D' 9X3Q3(C((C(5Q     éi  ( 1 O m@j H@9G 	o
	 	op  `TXL*)!  LJFD<;76.-)1*1%$ (!( +".#"54&"326732>4."&462!"&462%76.'.32?32>'ý6ZY63+$1R16ZY71R00Rþ†'77N67#'77N77Pi$ba#iiabÅ<00<”þÓ1R0<01;0RbR1þî7N77N77N77N7`x$pp$xx$pp$      ÿþB¿  "@ GD   o o f+4>	"&=547  *Iþ·* „ÌPî²Šþ¼þ½‚Ty5´
       <í  @  G  o   f5+"/&463!2;
úúôÉúú  ÿÿ  ;É  @  o   f2+%'!".?62;þú

ú
«ú

ú       g|  @  G  o   f+"/&4?62e 	ú

úXþúú        A}  
·   f+"&54>A
úú
^úôú
  ÿüÿ�š,   ) b@_#"G m k 	 `  `
T
X L
	 &$ ))	
 +6    "32654267'#"?6#"632Æ¾þöþ„þîò*." &.´l40
*0v84$*þøþ„þî
|–0 , :ý®44$& `:.""˜h  ÿüÿ�š,   ? X@U86G m k k   `TX L
	 '&" 	
 	+6    2656&+"654&#"35476235476?6Æ¾þöþ„þî¼&&&&¨jR@(DnN

l.*þøþ„þî
|ý&&$&H",NL*h	:" ÿúÿ¶Ç    <@9 o o ^  R X   L2+#!"'&7625#7#½
ü„
¾,nnn"ý$dd®,þÔ     ÿù¡R   ' ? ~@<	  GK°PX@(	m m  `  \ I@- o	o m  T  ` X LY@?=$%"%9
+%4.>74.>7!"&'5463!2?!2"/&76;54673232Ê� F üË K!V!L ¶
ú

ú	
���dŒ³ ³ L  L (úúúú   ÿ±¡.   ) @ F@C5	  G 		oo o  T  ` X L=<#3#"2%9
+%4&674&67#!"&'5463;26732+#"&'5#"&?62Ê� F üË î6#�"6î ¶	���ú

ú  ‰³  ³ ((Rúú,ú

ú      ÿØð   @ E D   f+7767&'.#'Î üþÞî2"ü6þZ2.¨ @üþà4ð üý8,2P   ÿüÿÎØî 
  * 8 �@*' 8+	GK°PX@4 	e 		k n
 ^    ^ R VJ@5 		m 		k n
 ^    ^ R VJY@6310/.-,)(+!5467!2'2!467!"'&'&>?!55#!5#3!265HýH`”þ’"L ý:4B
(DÚFþüD0,X22€È $þ>2Š,(PPþÔdPPd2     ÿ±[ $ G ]@ZC%	/G 		mmk   m  `  T  X   LFE&%%6%&5$
+#"&'"&=46;27267676;2+"&6?&#"+"&75>32762K$ä™Q˜<Hú	M(d7J‚'k
ú	MRpK‚'o$æ™Qš<H–º>9HúM$*J>
8¸úMMJ>
8–º>9H    ÿm*O   $ * + p¶'GK°PX@'m k k H  X    I@% oo o o   T  X   LY@&%%*&*#5%"7+%3!267!".55!"3!265#"&53'3W%2".þ!8!ãþ—#11##2Œ);ds²%*».ý1#3%!9!Œ™2#ý0#22#):)=¹|$        �­  $@! D  p T X L+3'354.46 pßàp¢è¤æBæ'8ßß8t¢¦r¢ää      ÿjrR     * + ‡µ GK°PX@.   m   k k k XH I@3   m   k k k nTX LY@%#**#5$+3'5!"3!265#"&5!"!232654&#:ˆˆ:þ#�³Pýq˜
®D%‡‡³üï_H;­
ýÞ      ÿoÞM ; 8@52-#
 G oo  o   f870/('+/"/&/.?'&4?'&6?>76276_ss=‹	|NN{
‰?uu?‰
{NN|	‹ÁNN{
Š>tt>‹	{NN|	‹=tt=‹	   ÿVf ; u X@UQMI1,([@;"pke
 G 	 	 m`
  ^ H Iusig*.-+/"/&/.?'&4?'&6?>76276&6?'&?'.///76327>7>?û`3"s,hA6@h.u3``3 u.h@<Ah0s 3r	
FF$%SK(/.(KT&	EE	&TK
./&KR‹:@h.u3``3 u,h@6@h.s 3``3"s,hÜ&./(KS%$FF$%SK$/.&KT&FE	&T        ¶F  @ G  o  f+%"'	"/&4762«\
þØþØ]žžk\

)þ×

\
ž

þb     ÿ¦P    C M Î·3%"GK°
PX@5 e k e    `  a T Y MK°PX@6 m k e    `  a T Y M@7 m k m    `  a T Y MYY@#/	+4.>'.74>'&"2#54&'&/&/.'4632"&4672PFv¤³¤vFFv¤³¤vFn6V~„|V8X˜´šVÊ*\-
n	P<N(?&&!&`Z¢xDFv¤²¤xDFv¦XC|V80^tGZ˜X\”J_#&!.@þ¢  < "     ÿmN    ?ð@ :"GK°	PX@A  m k k
kk	k k H IK°
PX@2  o  o o o
oo	o o IK°PX@A  m k k
kk	k k H IK°PX@2  o  o o o
oo	o o IK°PX@A  m k k
kk	k k H IK°PX@2  o  o o o
oo	o o I@0  o  o o o
oo	o o fYYYYYY@ =<98751/,*)(%$
 +3'3'5!"3!265#".463!2"&=#32+"&46;#"&5z�Å(nþl'99'@'9ž3þÏ	P	~6		—7~_Ï‹(D«8'üÝ'88'i3™		;%þå%     ÿmO  " ) * 8 A B K L R S Z [ Û@O .-	ZY6,'&%GK°PX@F  m  k  k m 
` 
	
	` `   H I@E   oo o o m n 
` 
	
	` T XLY@(NMDC:9$#UTMRNRHGCKDK>=9A:A20#)$)55#5!+5!"3!265#".463!2#!"&53'37754&#!"7672"&463264&"373'3326=þl(88(@(8ž3þ¬`þ 0ç…gpZ›þ `o$#4$%½�Å(c1u?¤«8'üÝ(88(i3½ÿ `.+Š@Qk¦,a$3$$3$QüÏ‹(þcd=.    ÿlN    ' 9 K‘@ C1GK°	PX@2	  m kkk k H IK°
PX@'  o	  o ooo o IK°PX@2	  m kkk k H IK°PX@'  o	  o ooo o IK°PX@2	  m kkk k H IK°PX@'  o	  o ooo o I@%  o	  o ooo o fYYYYYY@ HG?>65-,%#
 
+3'3'5!"3!265#".>+.'4?6"/&%"&6?'.>~�Å(nþl'99'A'8ž3²J
J
Àvccv vddv_Ï‹(D«8'üÜ'88'j3þ^	
þ¢
´
eUTd

dTUe     Öb  @ G o  f+%"/"'&4?'&4762762Ä$2„„2ŠŠ2„„2$ŠÂ2"˜˜2œž2˜˜"2ž    ÿsH    )@& G   oo o f#5!+5!"3!265#".3'3þq&88&9'7œ2l€Ã'Ÿ©8'üè&88&a2%Ì‰'     ÿl)O  . 4 5 9 : > ? Ã@1 9876+GK°PX@7  m  k  k  k  k  k   H IK°PX@*   oo o o o o o I@(   oo o o o o o fYY@0/>=<;/4045=#5!	+5!"3!265#"."/#!"&=463!276'3'35%3#5þl'99'A'8ž2v
t	þê			u�Å(‹iiþéíí£¬8(üÝ'99'i2Á÷H5		ö		+>�Ï‹(þÖB®84zÍÍ     ÿmK     ' W b c @FED5- G, GK°PX@% oo  o   o o o I@# oo  o   o o o fY@RP=;%# +676'.#"3'3'5!"3!265#".676546?6#"&'&6765##"'.'&7>&'& '
u�Å(lþm'88'?'8ž2þÑ"
å	+#/*$º"?)0-ÎŠ(Dª7(üà'88'g2þz	º$
Á"6" 7ˆÉ		  .


   ÿôÿ¢Þ  ³	-+'&76ÄþxˆþšŠŠþŒ      ÿ”f( 
  B X@U;9G m k k   `TX L *)%#  

	+&   76 "&5&6;2&547632#54'&"#54'&/& ½þôxþöº&&$&§64Q?(CmN

k.&þü¾¼þð½¼ý$&&$&E"+N%&)g	:!    ÿÑ.Ó ! 1 /@, G  p  `   T  X   L+%"+%326732654/>54'."%#".4>2~)h71_'4ƒ-‚!!'%‚–A@%'k@!.O//P\O/ó)+"!~„/„3'_2LA?L'&@AK834$/P]O//P-"A      ÿ¬J       =@:  

^^	  R	 V  J+35#535#35#535#35#35#è®®®®[¬¬¬¬Z­­ýK®®T®­­ýø®­­ýø®­    ÿùƒ   *@'  m n T X L#%6+!54&!"&'463546232³TvTÐ ýé ”Ì–¥l;TP=¡þ¾ B lf””fl   ÿ±Y 1 >@;*%G m k  `   T  X   L)5#$+#"&'&4?632>."+"&'546>32YDr V`®<L)vC:hP*.Llod(Mú,H<šRWžtB^WžtDRIM5:.LjtjL.(%M-úH9>Dtž    ÿþÿ±Y 0 =@:-	 G   m k   ` T X L'''$3++"&?&#"3267>".>3276YúMRp:jL..Lj:Bv)L<®_W pH@x˜[R˜=H,Ãú-MM.LjtjL.:5MJPDtž®žtD>9H       0Y  @
 E  f+547	"'	"&‡†#4þÑþÏ2$§‡þy4#1þÏ#   ÿÂïõ  @
 G   o f+147	&4>	"&1þÏ$4†þz0&004"þyþy$     ÿÈïú  @ G   o f+62	"'‡1%þÐ0$2a‡$4þÐþÏ4#    ÿÿÿ‰ª3  " + / C@@ mk    `  ` T X L,,,/,/$	+4>2".7>.%462.3J~¬a_®|LJ~¬À®|Lv8^‚�€`6:\„Œ†Z<(?&&@&„^_®|LJ~¬¿®~JJ~®_G„\:6`€’~b4<Z†e""8$"þ‹+þÕ      ÿùèR ' ? }@(7.!GK°PX@$ m k  `    \ I@, o m k  `   T  X   LY@
:%56%3+#!"&5467!2#!"!26=46;2/"/&47'&463!2^Cþ0C^^C‰

þw%46$Ð%4
$
Öbþ”@lbL²C^^CÐB^
$
4%þ0%46$²

Úþãbþ”@lb   ÿÿÿùYÄ   ! + A J@G	   G 	 	`  `  ` T X L=:7#&%
+%"&>"&>54&'!"!26!.#!"#!"&7547>!2D$(‘$(AýY
§
ýR“XþKž4%ýY$6	n	4µ2
n	«$$m³
³


þš³%44%³R&$þ®  ÿÿÿ±¡    9@6 G  ^  T  X  L 
	 +!!%!!26!"&7467!2YTþšþ›S
H6$ý$64%î%4ƒý�qý}
®ýZ%46$¦%46      ÿjèR    7 ¼@
2GK°PX@-   m  ^  ` X H   X IK°PX@+   m  `  ^  `   X I@0   m  `  ^  `   R   X  LYY@5#5$!	+!#"&'5#754&'!"7!263'!"&'5!"&'467!2­ôéÖŽ
þw
‰
�§§ ýéþÑ _ äOfè¡$
$
þ‘§îþ‰ Y î ·ä6      ÿjYR   # 3 C S ú@,$@8	PH
GK°PX@8  `  	`	 	` 

` X H X    IK°PX@6  ^  `  	`	 	` 

` X    I@<  ^  `  	`	 	` 

`  R X   LYY@"DD44DSDRLJ4C4B<:0.(&##&56+!"&'467!23&/&#"&'5!463!2#!"&52#!"&=4632#!"&=4633ý ô6JÒ¯ÆèþS�
‰

þw
›

þw

‰

þw

~4ý~ |&Ò¯ü°< éü¦ã

$

Y
$

$
�
$

$
      ÿù¡  , ,@)  `    ` T X L#55553+%4&!"&'54&#"3!26#!"&546;2!2Yþw³  § GJ3ýY3JJ3³3Jw3Jv‰  $ ýè  Ÿþw3JJ33JJ3J   ÿù)  ' E J@G$ G  `  `	   ` T X LB@=;850-!''61
+4#!"3!26?6%!54&!"&'54&#"7>#!"&546;2!232âý¡4¤_2¤
ýƒ­ þ¿³ �Pê¥R%ý¡3JJ3³3J/4Hk4KË	ËdZ  $ þ$¯&Z# Ë&J33JJ3J3Z    ÿþÿù2Ã   -@*  o   oRX L  	  +%7!#!"&'&6763!2ô¼þS¼â	þ þS"
ô ­$@××Y*ýÄ*<   ÿùƒS # fK°PX@    m  k n X I@%   m  k n T X LY@  	 ##+2!"&'463546+"&54&"M ýé ”Ì–$TvT¥þ¾ B ³g”�i;TT;³    ÿjYR   ( 8 H Ú@ B:	2*"GK°PX@1   m
 	` 	 	`  ` H X IK°PX@.  o   o
 	` 	 	`  ` X I@3  o   o
 	` 	 	`  ` T X LYY@FD><64.,&$+!!!"&'467!54&#!"3!26=4&#!"3!26=4&#!"3!263þø&/ý ¾ o
þw

‰

þw

‰

þw

‰
HþÁý³ |þÐþd$

$

—$

$

—$

$

     ÿjŸR 
 " > Nw@ 4,&	GK°PX@E e

k
		
c    ^^  ^H 		YIK°PX@F e

k
	
	k    ^^  ^H 		YIK°PX@G m

k
	
	k    ^^  ^H 		YI@L o m

k
	
	k    ^^  ^ 		T 		Y	MYYY@(??##?N?NMLKJIHGFEDCBA@#>#>=;#$+3/&5#"/&6;46;232!56?5#+#5!76;5#53'#3#533™b(þÚ²³k
k
k
ÒþºÎ
‚C=Î‹u¡*ˆ* '€[€nz	

ýF²³	 

ý 
J‚2'@€2þØ
Bõ<<PP<<qþ�  ÿýÿŽ¯R  =µGK°PX@  m   n I@ o o   fY¶$#$+%"/&6;46;232«ÃÆ
}
k
}}
	××	¸

ýH  ÿþÿj¯.  ;µ GK°PX@  o  o I@  o  o fY¶$#!+++"&5#"&?62«}
k
}ÃÆ?ýH

¸××     ÿj[R   , = «@9*! G )FK°PX@,   m   `
 `H	X I@/o  o   `
 `	T	X LY@#.- 65-=.=&%,, +267".'5267".'57267.'52".'54>­„æBrÈäÊnBæ…„æBrÈäÊnBæ…„æBrÈäÊnBæ…tÄvrÈäÊntÄ¥0/_&B&&B&_/0þT0/_'B&&B'_/0Ö0/_&B&*>(_/0ƒ&B'G'B&&B'G'B& 	  ÿ±YÄ      / ? C G Ÿ@œ+;G^
 
`^ `T	  ^X LDD@@10!   DGDGFE@C@CBA960?1?)& /!/
  +7#5%2+"&=46?!5#5!52#"&'5462#"&'546#5!5ÄÄ‰�èþ}}Yþe}Žô�A}}þ@GGH��ÖGGHHýÄGGƒŽŽþâ��GGGHH    ÿjèR   % / 9 ¦@3)! GFK°PX@-m k   k	X
H   I@2m k   k  n
T
V	JY@   7521-+('$"  7+!"&'63!#!"&'"&'32%#546;2#546;2‰þã‹ŸŽ;þãíþ>Å
¡
wÅ
¡
ŸþTþ¿èþxˆþþãA¬­}}

}}

      ÿ±   / 7 [ X@UK9)!	 G  `
 T  `		T	X 		LYXUROMGFC@&"&&&&&#+%4&+";2674&+";2674&+";263'&'#+#!"&'#"&=46;7>73232
$

$
�
$

$
Ž
$

$
þÑú±ë
64%þ0%45

¬'	,²*	'­
R‰

þw

‰

þw

‰

þw

2AS$
ýï.DB.
$
]]
    ÿgŠR  :µ GK°PX@   m n I@  o   o fYµ(#++&/#"'&547632x
	Õpck®
þö*ü®
G	     ÿjôR % …@
! GK°PX@$^	  
X

HXI@(
	 
 `^TXLY@ $" 
 %%+"3#;#"'+5325#5354+5326;Ð²GG²$$—?>˜$$²GG²$$˜>?—$}éGþÐ}GQQG}0Gé}GQQG 	  ÿjwR     + / 7 ; AÑK°	PX@t
 
 m  cek  
^  ^  ^  ^&   ^$ ^"!V	H%#WIK°PX@v
 
 m  kmk  
^  ^  ^  ^&   ^$ ^"!V	H%#WI@|
 
 m  kmk	"!^  
^  ^  ^  ^&   ^$ ^%#R%#WKYY@T<<,,  <A<A@?>=;:9876543210,/,/.- + +*)('&%$#"!'+#3#5!#53#53!5335!355#%53#5!#35#3!5#!!!##wHHÖý5ÖGGÖËÖ�GüHHZGGý5GGYGþâ×þ×ôþTeþ›;�Ö|ýÄÖGGÖ<ÖGGGHHHHü¦HHHG<GGýÄGHHH<þS�­þ›þTÖG    
  ÿjR  # ' + / 3 ? C G WWK°	PX@–		m		c % % m$  c&c%k2+) !e" * c  ^ ,^  %%^ (^/'_ * !*^.-
V

H1#0!!WIK°PX@›		m		k % % m$ % k&%k%k2+)  m" * *k  ^ ,^  %%^ (^/'_ * !*^.-
V

H1#0!!WI@¡		m		k % % m$ % k&%k%k2+)  m" * *k
.-
^  ^ ,^  %%^ (^/'_ * !*^1#0!!R1#0!!W!KYY@nHHDD@@,,(($$  HWHWVUTSRQPONMLKJIDGDGFE@C@CBA?>=<;:9876543210,/,/.-(+(+*)$'$'&% # #"!3+#3#5!#535##53#53!53#35335%35!355#%#3%!53#5!#35#!5#5#5#3#5#3!5HH×þÖH×ÖGGÖô×HÖ×�GþTGüîHHGGý}ôHHþGGGGHÖH×ÖGô¥þ›ÖGGÖHH×eÖGGÖHHHGG×HHHHý}GGGGGHeGGþ›þšHHHH�eHÖ×HHGG         FK
2_<õ è    ØkO    ØkOÿàÿVf             Rÿj  5ÿàÿó                qè     èÿú   è  Y  4ÿþ   è  èÿøèÿø  ©ÿÿè        è        è  ª  ª  Q  !     è  è  ø  è  ºÿà   5           è  è  C  è  èÿÿè  è  è  5  B  Ñÿó   /ÿÿ†ÿú/ÿÿèÿú   è  è  B  ;  ;ÿÿe  e  ˜ÿü˜ÿüÂÿú        ÕÿüY  5     è  Þ    è  5  5  5  5  Ö  5  5  5  Ñÿô5  5  5  ‚  Y  Yÿþ0  ï  ï  ©ÿÿè  Yÿÿ ÿÿè  Y     /  /ÿþ‚  Y     ¬ÿý¬ÿþY  Y  è    Ê  ;  v         hxÌ\¨þ˜~Bú¬ì(>vòjÊ	:
*
�
È
ìˆìH¶<Š¸ü˜fÈ æªPtÚ2€¼Ø²b˜Àæ0ª<‚"¦äŒ" ÐZÔ ¶ ì!Æ#$%N%Ž%Î&�'j'Ž($(ˆ(Ð))‚)ê**>*h*Ô+r, ,R-. .X.ä/(/’0j1˜1Ü2 2Ô3�4>4ê585¬6ø8™    q ™ $      f v s  #p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2019 by original authors @ fontello.comelfinderRegularelfinderelfinderVersion 1.0elfinderGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 9   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m e l f i n d e r R e g u l a r e l f i n d e r e l f i n d e r V e r s i o n   1 . 0 e l f i n d e r G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       q	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr homecut
fullscreen	resizableacceptreloadunfullscreencopyuploaddownloadtrashhelphidehelper-down	helper-upcheck	helper-oktarget	quicklookundoredoview	view-listhelper-minus
netunmountmenusearchwindow-closeeditplaceswindow-minimizerestorenavbar-foldernavbar-root-places	duplicate
selectnoneopennewextractnavbar-root-googledrivearchivemkdirinempty	file-html
helper-pinquicklook-nextresizenavbar-open-foldernavbar-root-localnavbar-root-networkspinnernavbar-root-dropboxnavbar-root-onedrivenavbar-root-boxhelper-symlink
arrow-downarrow-up
arrow-leftarrow-rightdialog-infodialog-confirmdialog-attentiondialog-uploaddialog-downloaddialog-editdialog-archivedialog-reloadfilesarrow-curveddialog-copydialog-chmodchmodarrow-go-parenthelp-rtl	file-text
file-image	file-codesearch-clearfile
file-video
file-audioquicklook-previousdialog-confirm-rtl
search-rtlresizable-rtllockrotate-rrotate-lupforwardbackinfolinknetmountcolwidthpastemkfilediropendirrmunlockdialog-mkfilesort	sort-downsort-upnavbar-root-sql
preferencedialog-findnavbar-root-trashgetfilerename	selectallselectinvert     ÿÿ                     fÿVfÿV° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                                                                                                                                                                                          includes/File_manager/lib/themes/dark-slim/img/elfinder.ttf                                         0000644                 00000111220 15266052702 0017726 0                                                                                                    ustar 00                                                                                                                                                                                                                                                            €  pGSUB ‹%z   ü   TOS/2>4S�  P   Vcmapósó»  ¨  cvt ýþÜ  †x    fpgmŠ‘�Y  †˜  pgasp     †p   glyf–"NV  	¼  q2headÛáÏ  zð   6hhea;  {(   $hmtx›Ïÿ€  {L  ÄlocaÅ/ãc  }   ämaxp’�  }ô    nameg…è  ~  ÍpostsÅ   €ä  ‹prepåA+¼  ’   †    
 0 > DFLT latn                      liga                     ¥�   z¼   Œz¼  à 1                         PfEd @è òHRÿj Zf ª                  ,     Â     ¼     ,  
  Â �   (    èTèWðð†ðŽð ðÛðêðöññ-ñ>ñ]ñvñÀñÞñåñøòHÿÿ  è èVðð†ðŽð ðÛðêðöññ-ñ>ñ\ñuñÀñÞñåñøòEÿÿ                                        ( Ð Ò Ö Ö Ö Ö Ö Ö Ö Ø Ø Ø Ú Ü Ü Ü Ü Ü           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p                                                                                                                                                                                                                                                                         P       p  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èV  èV   V  èW  èW   W  ð  ð   X  ð  ð   Y  ð  ð   Z  ð†  ð†   [  ðŽ  ðŽ   \  ð   ð    ]  ðÛ  ðÛ   ^  ðê  ðê   _  ðö  ðö   `  ñ  ñ   a  ñ  ñ   b  ñ-  ñ-   c  ñ>  ñ>   d  ñ\  ñ\   e  ñ]  ñ]   f  ñu  ñu   g  ñv  ñv   h  ñÀ  ñÀ   i  ñÞ  ñÞ   j  ñå  ñå   k  ñø  ñø   l  òE  òE   m  òF  òF   n  òG  òG   o  òH  òH   p     ÿù’Å  1 .@+.&% Go  o  f*(#"!+#5##"&'	7#"'	&/&6762546;2Ö�ÖAA|"þ~þ~#‘0ˆ
k
z(þõÖÖþø$)Bþ¾)Nql

ãf   ÿúÿ±êÃ  J X f s € † {@xwv@>	xmlhgB-	ƒy* †€z'
‚
G m m  	` 	  	`    `  

` T X Lfd_]XV*(('++2.6"'%##"'&7>76326?'&'#"'.'&67632%626&'&#"32>'&#"3254?'#'7% ³Hþ>6/JPL036.JQ.&DD&.QJ.6/MPJ.8>�Hýi-47*-38)-)83-*7—6,	x6šGþSYâGþÞc^ "Þ($Ø$+P/,/E*P/()/N+!<,/N,%Ø$	'MJ!H!þuJ!Jw!	‚A$ð@5²#äM      ÿŸ�     9@6
	 G o  f+%7!7'7'!7''7'þ±€€OþÒ�€P~€O��þ±€€}€O€o€þ°‚O.P€�Oýƒ‚P€€.þ±�€P   ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½M   $@!  G  p   T  X   L8+4&6"'.=46732ú*:,(>&Uþî;þq*éH�X*&@$0þÙþî�Hè*þq   ÿþÿÄ6ø   %@"
 G	E D  o   f+?%7&767'67>'ºtþìXtvdŒdHX¢Xtv`�bHXVrŒtþÜVzPxdfHXúúVzþ°xbhHXú\t      ÿŸ�     :@7
	
E D o  f+%!7'777'!'7À€OOüÒ€O~�þ±€€O�ß€€N~!‚P€�O/�~O~þ±þ �€þ°‚‚/O~O~�      ÿjrR  " % 0 1 šµ#GK°PX@0	 ^  `  ` 

 X  HX I@4  
 
^	 ^  `  `RX LY@! 0/.,'&%$""! +!"#"3!26=32654&!;##4/&#!5!Pýq|�}üÞÄy_55ýd	—
þ¿]RtüïtüSÞyý»´4þÍ	–
Zý" ÿøÿ¶ì  # wµGK°PX@) o	ooc   R  Y   M@( o	ooo   R  Y   MY@##"6
+%#!"&/&?332!76;'3'%33È$üÐ$
*žbª²(,(²ªb0þüþü¦¾Æ
,šš0l‚nn‚Öôô ÿ  ÿøÿ¶ì  # iK°PX@(  oo oc R Y M@'  oo oo R Y MY@"7	+####!"&/&?332!76;'3ô¤¾¦Ø$üÐ$
*žbª²(,(²ªbôÿ  þ²
,šš0l‚nn‚    ÿ±   / ; C g d@aWE)!	 G  m  k  		`
^ T X Leda^[YSROLIGA?$&&&&&#++"&546;2+"&546;2+"&546;2!3!2>3'&'#+#!"&'#"&=46;7>73232
$

$
�
$

$
Ž
$

$
HþÐþ‰ú±ë
64%þ0%45

¬'	,²*	'­
·þ¿

A

þ¿

A

þ¿

A

þdýï

eAS$
ýï.DB.
$
]]
 ÿÿÿ‰ª3  ! C L �·3&#GK°
PX@6 m k e    `  a T Y M@7 m k m    `  a T Y MY@/$	+4>2".7>74."76235467>?67>74&#"26.J~¬a_®|LJ~¬À®|Lv8^‚�€`6^¢¾¤\×-a8uT@S*C*&F(^_®|LJ~¬¿®~JJ~®_G„\:6`€I_¢^^¢Qe%(#1Dþ� ""@"$   ÿÃè± 	  > D W W@T4 S RCPB)'G o   m  k  k n   T  X   LLK.$+%7.7474&"265463267#"'&547.'&47>327632#7>7&'76+08"€U^jFdD0Ê;ê;
D	P†2Vü—22
$	XI�ú'TÜ|)wÈEA]#5b iO#j=C:A„�gdE0DuiþZi2	'
*$xM*ƒ˜
6	þýN€^$-`jJ
„id@?$b6    ÿž�    4@1
 G  m   n T V J				+    7#5#�þúþ�þøtýdßÞ¥p^¸þú
lÿ ½ÞÞáá      ÿ��   2@/
 G   oo R X L				+4     %'335sþúþ�þøŸàÞ§p^¹þúþŽþü·ÞÞáá     kj  ³-+%'7w¹;þè:°º;þè;    ÿ��!   "@
 G  o f  +2    ''Ñ¸þúþ�þøt\Oþó~OþúþŽþüjýo\Oþô~N    ÿŸ�  	    # + 3 A@>!  E10%$	D  o	f  -,)(
  
+53#>7.'5#.#>7.'335>	<V¢¢V<q¢V<<V˜ÚqšþqÚ™j˜šØqšïqØ™iš—¢X:q;X;Vþí¢V<†qÚ™k˜þý˜Úq˜þrÜ˜k˜™Úr˜   ÿùè}  " 3 F@C G m   k   k  ` T X L$+&'.547 64&"26546326 $'&476,¡U€"’Ð’"€UKàâþ·FdD0ÙNþøþÚþøNN&N:„A:Cg”�iC:A„rˆˆIdE0DÌ�šš�&€šž~    ÿËªò  & ;@8#$%G o oo  o   f"!&&"+#"'.'"'&47>%./5	5ª<žh=Xþ·HZ¶êþ,à�Æ„/þÞ"]PK*=B.C *Y$þàºÐi~®·þâþá·   ÿËªò  ( V@S! 'G o o   m  nTX L #"(( +"&=475476'&=7	"65ì´ XHþ·X iœ<†4"þÞ„Æ�5 4º $Y* þ½,þ¾*KR\8··°}i     Q”         # ' + /KK°	PX@E  ^" 	^#!		R#!		V
	JK°
PX@H  ^" ^#	R!		R!		V
	J@E  ^" 	^#!		R#!		V
	JYY@b,,(($$    ,/,/.-(+(+*)$'$'&% # #"!
	  $+#5!#5#5!#5#5!#5#5!#5#5#5%#5#5  ‡¡F ‡¡F ‡¡†¡† E¡¡¡†   ”¡¡¡¡æ¢¢¢¢æ    Ì¡¡¡¡å¢¢ç  ç¢¢ä££      !”       t@q  ^   ^	 	^ ^R 

^V J  
	  +#5#5#5!5!5!5      !ýëýëýë”¡¡æ¢¢æ  –QQæQQÙQQ     ÿ��!   +@(  o oo f		 		
 +2    5!Ñ¸þúþ�þø™þAþúþŽþüjþpp      ÿièQ  ³-+		'	7	ŽZšþ¦þ¦šZþ¦šZZš]þ¦šZþ¦šZZšþ¦Zš   ÿjèR         Æ@GFEDK°PX@6  ^ 	^ 	
	
^VH VI@9 ^  ^ 	^ 	
	
^ R VJY@4
	+535353'535!%5!%7!žJübJêêê)ëëëèþèþ7‘8LžJübäëëêêþèë-êêýƒƒ¨ƒƒ¨ƒƒ   ÿáøÛ ! 1 /@, G  p  `   T  X   L+%"+#"&'#"&54?.547>2%32>4."¨)f61](3‚-�~ "'%€•@?&&þ™@!-O./N[O/ )*" }‚/‚3&^2K@?K'%?AJ824$.O]N./N-"@     ÿjèR # 5·	 GK°PX@  HI@  ofY¶+	64/&"	&"	27	2?64'M•:þlþl9”þl9””:^”:þk•:þlþl:•þk:  ÿàÿbÀV 2 8@ G-& DK°PX@   p I@	  o   fY¶+'&767&76.7>7267677<.d0
,,t.
�".ˆ,Ì6z8 hj0B*nŠd~š¢ \Dž®F,d.`<ðB n,$
0PD<88     ÿÊ¡@ 	 ) '@$	 G  o  f%$+7/7#"/"&547'&547%762{ªëjiì«)ÓÓþÊ0
ûú0Ë~ } "¦"ÕÕ"¦ëoo²Åþé„„
Å(þþ(      ÿ�Í    @  T  X  L 
 +%!"3!26=4&²ûÍ3
N

N
     ÿŸ�   9@6GD   m    ` R V J+'7654'&"3!376 '7$kkTOTJJHØH™�þ±pœg8¨OOO¶k›–kTPTJglKHH›mN“œgü‚OQQ     ÿù¡  @ o  o   f#53+#!"&546;2!2¡J3ýY3JJ3³3Jw3Jÿþw3JJ33JJ3J    ÿÊ¡@  @
 G  o  f+/"&547'&547%762¡Ê0ûú0Ë~ } éÅþé„„
Å(þþ(   ÿj¬R     # ¿¶	GK°PX@A   ^
	^ 	 	^  ^  ^ VH V I@D  ^   ^
	^ 	 	^  ^  ^ R V JY@$  #"!   +##!5353!!35#53#'!5!#!5!'uu„uvþÛýð`°vdu;†þ±u;þ,RuuýwuüüSˆ°;udþSÅ‡:ýïL:      ÿjèR  ! 3 D ÎK°PX@.mk
 X	  HXIK°PX@+mk\
 X	  I@3mk	 
 `TXLYY@+64#" ?>;94D6D.+(&"3#3!! +!"265!264&!4&"3!264&"!"3!2654&!"3!2654&[þÌ þõ!3Uþõ2þÌ RþÍ ühþÎ 2þó 4f þó4     ÿjCR    uK°PX@' ^    ^ V	H V I@*	 ^ ^    ^ R V JY@  
	  
+!!!3!!!!CþïüÎ!¶ý„Æý)|ý„Rý„þ”|lýßk¶ýßl    	  ÿÈ-ô     # * 4 B K ¶@310/,*'& A6GK°(PX@3e
 ^	` 	 	`   R  V   J@4m
 ^	` 	 	`   R  V   JY@"DC55  HGCKDK5B5B<;
	  +!!63!377&%677&'&76?76?2654&'52"&46¼qýì¶þQ%/ .ú58
w8p<),[$8L8$ôüó,>"ýo‘2	( 	(,%   K "hD
0'77'0
D}    ÿÿÿ¥é  $ 4 3@0# GD  o   oo f&%.,%4&4+%!2764'&#!"'&#01"301276!"3!276'&“6þÆþÊ:¸ þØ›-ý«›U›ä#ýÝÙýõþîóþî    ÿjèô  + / 3 < I U @&GK°PX@[ 	^	 	^ 

^ ` `  `^  ^    ^ X I@` 	^	 	^ 

^ ` `  `^  ^    ^ T X LY@EJJ>=5400,,  JUJUTSRQPONMLKDC=I>I984<5<030321,/,/.-+*%#  #+!32>54.'!"654&'5#327!35352"&462".4>#33535#5¼p#23:DsC1U5ýÍô-S!$>$8&(þóÛ>>>3V33VfV22V^^>^^ôüó,CsD9dFŸ>þ¨ 0
DD
0'7
>I0.‘??^??Û>3VfV32WfW2?^>^^>^     ÿ†êQ 5 6 S T ¡¶SL	GK°PX@3 		m
k p  	 `` X I@9 		m
k p   `  	 `TXLY@ POHGBA980-*'" 55+!&/&#!"3!264&#!"&5463!3!2#!"3!2654&#2>'1"5'&"27017265Œþzlþó'77'þæi†þæ'77'þØ		…		…	
PPÔi7'ýÍ'73dþJ7'¶'7þ	
…		…		PþvŠP     ÿeëR   T U �´DK°PX@,   mp  `	
` X I@2   mp  `  `	T	X
LY@ OLIFA><:52/,'$T T+%4&"'&"2176?>&"!&/&#!"3!264&#!"&5463!3!2#!"3!2654&#ePP		……	
(þzlþó'77'þæi†þæ'77'"OŠþvO
	†…		³i7'ýÍ'73dþJ7'¶'7    $  ÿl P   
        % & , - 4 5 < = P ] b c i j p q w x ~  … † � Ž • – Ï@*t
‰omf3  ”’„‚}{a_^8)$!
GK°PX@7

m k  m 	  ^ HX I@8 
o

o o  m 	  ^TX LY@&srRQ��Œ‹zyrwswhgXWQ]R]NLIFA?;:10+*+67&'67&''35&'7&'7567&/'675#73&'67#5!"3!265#".".4>2'53&/67%3'3#67&'7&'367#67&'µ"*)"„Y('üä&)³	
Á"-Yï8!#8þl'99'A'9ž3tDtCCtˆtDDtY&(z"-YÁ
	?�Æ(tY-"ü
	#88#a0þt2aÛ&"†
%a2þÎm&"³"-8/	È	25'(¿¬9'üÜ'99'j2ýÇDtˆtDDtˆtD6a4&!m
[Ï‹(þÔ&!†	þ	.8. x8. .     ÿ½H  @ G D  o   f(+%"/'&7632767>=+©þÅì¨"�qZ=	6Ð-8%©ì;©! 9-~Ñ6	?Yn   ÿóÿ¢Ý  ³-+	&76'&fþšˆþxrtþvþv     ÿŸ�      ! H@E !G   o ooo o f "+632!>7!&547#"'`á/"±Áégþ`þU%�_§%Ž^ùêh!ã0&¬‚—~xþJ‹}ž5;[†ý²Z† þt~Ÿ4;¥þ	y   ÿÿÿù  ) ,@) o   m   n T X L#:#65+#!".?>3!2'!"'&746;2!2»V&ý¡¼V%_Àþ05r#¼J3³3J/4H?Ý("Ý(¯Z4)Ý3JJ3J    ÿúÿæŽÔ  # $@! o o   T  X   L5475+#!"&/&763!26&#!"3!267t""ý8$"ž2˜2Xý|"N"0,4¸¸4,v..þ  J ÿÿÿù0  @
 G o  o   f#)2+%!"&7467&54632632/|Zý¡g”P@¨vXŽ"'6;TH^ÏY|’hJzv¨bP#T;*#t  ÿúÿjéX  < Z x ˜ v@j“G+ EK°PX@"   o o o m X I@'   o o o m T X LY@‘�}usgeJH0.+71#.'&67>2&'"5156767>'#"/.7%13'"&'&/&'&'&?>101&/&67>767632101#"'.'&4?672#. 	PP	xC˜N
 (3_(ON8Lf	0Y	ö	
!iC
!KbþJ"M�:R	^j	�<K˜G;)2g08>&	`+!:
B4†L

^8	\ýè Fq&^
Igþr	?5	;/\     ÿu G     @
	-+7'%7'57-77ÖÖ7ËÐ.ÆÆþÍËËb^ËþÛ&(þÚÊd7£¢Ë®®Á¥ª¹œœB97›þ�g¹Ä©üåc›<?        è« * I _@\':G   m m k k k n  T  X  L DA530.&$"  **	+"&#"&546767>7363232..#".#"3!2>54&$@1V8'?$*G+)	Ac;	.U# B^2K+M)1Q.2A(C(ò'C(D«#-O0/F(+J."C%:a>2P.þˆ*D' 9X3Q3(C((C(5Q     éi  ( 1 O m@j H@9G 	o
	 	op  `TXL*)!  LJFD<;76.-)1*1%$ (!( +".#"54&"326732>4."&462!"&462%76.'.32?32>'ý6ZY63+$1R16ZY71R00Rþ†'77N67#'77N77Pi$ba#iiabÅ<00<”þÓ1R0<01;0RbR1þî7N77N77N77N7`x$pp$xx$pp$      ÿþB¿  "@ GD   o o f+4>	"&=547  *Iþ·* „ÌPî²Šþ¼þ½‚Ty5´
       <í  @  G  o   f5+"/&463!2;
úúôÉúú  ÿÿ  ;É  @  o   f2+%'!".?62;þú

ú
«ú

ú       g|  @  G  o   f+"/&4?62e 	ú

úXþúú        A}  
·   f+"&54>A
úú
^úôú
  ÿüÿ�š,   ) b@_#"G m k 	 `  `
T
X L
	 &$ ))	
 +6    "32654267'#"?6#"632Æ¾þöþ„þîò*." &.´l40
*0v84$*þøþ„þî
|–0 , :ý®44$& `:.""˜h  ÿüÿ�š,   ? X@U86G m k k   `TX L
	 '&" 	
 	+6    2656&+"654&#"35476235476?6Æ¾þöþ„þî¼&&&&¨jR@(DnN

l.*þøþ„þî
|ý&&$&H",NL*h	:" ÿúÿ¶Ç    <@9 o o ^  R X   L2+#!"'&7625#7#½
ü„
¾,nnn"ý$dd®,þÔ     ÿù¡R   ' ? ~@<	  GK°PX@(	m m  `  \ I@- o	o m  T  ` X LY@?=$%"%9
+%4.>74.>7!"&'5463!2?!2"/&76;54673232Ê� F üË K!V!L ¶
ú

ú	
���dŒ³ ³ L  L (úúúú   ÿ±¡.   ) @ F@C5	  G 		oo o  T  ` X L=<#3#"2%9
+%4&674&67#!"&'5463;26732+#"&'5#"&?62Ê� F üË î6#�"6î ¶	���ú

ú  ‰³  ³ ((Rúú,ú

ú      ÿØð   @ E D   f+7767&'.#'Î üþÞî2"ü6þZ2.¨ @üþà4ð üý8,2P   ÿüÿÎØî 
  * 8 �@*' 8+	GK°PX@4 	e 		k n
 ^    ^ R VJ@5 		m 		k n
 ^    ^ R VJY@6310/.-,)(+!5467!2'2!467!"'&'&>?!55#!5#3!265HýH`”þ’"L ý:4B
(DÚFþüD0,X22€È $þ>2Š,(PPþÔdPPd2     ÿ±[ $ G ]@ZC%	/G 		mmk   m  `  T  X   LFE&%%6%&5$
+#"&'"&=46;27267676;2+"&6?&#"+"&75>32762K$ä™Q˜<Hú	M(d7J‚'k
ú	MRpK‚'o$æ™Qš<H–º>9HúM$*J>
8¸úMMJ>
8–º>9H    ÿm*O   $ * + p¶'GK°PX@'m k k H  X    I@% oo o o   T  X   LY@&%%*&*#5%"7+%3!267!".55!"3!265#"&53'3W%2".þ!8!ãþ—#11##2Œ);ds²%*».ý1#3%!9!Œ™2#ý0#22#):)=¹|$        �­  $@! D  p T X L+3'354.46 pßàp¢è¤æBæ'8ßß8t¢¦r¢ää      ÿjrR     * + ‡µ GK°PX@.   m   k k k XH I@3   m   k k k nTX LY@%#**#5$+3'5!"3!265#"&5!"!232654&#:ˆˆ:þ#�³Pýq˜
®D%‡‡³üï_H;­
ýÞ      ÿoÞM ; 8@52-#
 G oo  o   f870/('+/"/&/.?'&4?'&6?>76276_ss=‹	|NN{
‰?uu?‰
{NN|	‹ÁNN{
Š>tt>‹	{NN|	‹=tt=‹	   ÿVf ; u X@UQMI1,([@;"pke
 G 	 	 m`
  ^ H Iusig*.-+/"/&/.?'&4?'&6?>76276&6?'&?'.///76327>7>?û`3"s,hA6@h.u3``3 u.h@<Ah0s 3r	
FF$%SK(/.(KT&	EE	&TK
./&KR‹:@h.u3``3 u,h@6@h.s 3``3"s,hÜ&./(KS%$FF$%SK$/.&KT&FE	&T        ¶F  @ G  o  f+%"'	"/&4762«\
þØþØ]žžk\

)þ×

\
ž

þb     ÿ¦P    C M Î·3%"GK°
PX@5 e k e    `  a T Y MK°PX@6 m k e    `  a T Y M@7 m k m    `  a T Y MYY@#/	+4.>'.74>'&"2#54&'&/&/.'4632"&4672PFv¤³¤vFFv¤³¤vFn6V~„|V8X˜´šVÊ*\-
n	P<N(?&&!&`Z¢xDFv¤²¤xDFv¦XC|V80^tGZ˜X\”J_#&!.@þ¢  < "     ÿmN    ?ð@ :"GK°	PX@A  m k k
kk	k k H IK°
PX@2  o  o o o
oo	o o IK°PX@A  m k k
kk	k k H IK°PX@2  o  o o o
oo	o o IK°PX@A  m k k
kk	k k H IK°PX@2  o  o o o
oo	o o I@0  o  o o o
oo	o o fYYYYYY@ =<98751/,*)(%$
 +3'3'5!"3!265#".463!2"&=#32+"&46;#"&5z�Å(nþl'99'@'9ž3þÏ	P	~6		—7~_Ï‹(D«8'üÝ'88'i3™		;%þå%     ÿmO  " ) * 8 A B K L R S Z [ Û@O .-	ZY6,'&%GK°PX@F  m  k  k m 
` 
	
	` `   H I@E   oo o o m n 
` 
	
	` T XLY@(NMDC:9$#UTMRNRHGCKDK>=9A:A20#)$)55#5!+5!"3!265#".463!2#!"&53'37754&#!"7672"&463264&"373'3326=þl(88(@(8ž3þ¬`þ 0ç…gpZ›þ `o$#4$%½�Å(c1u?¤«8'üÝ(88(i3½ÿ `.+Š@Qk¦,a$3$$3$QüÏ‹(þcd=.    ÿlN    ' 9 K‘@ C1GK°	PX@2	  m kkk k H IK°
PX@'  o	  o ooo o IK°PX@2	  m kkk k H IK°PX@'  o	  o ooo o IK°PX@2	  m kkk k H IK°PX@'  o	  o ooo o I@%  o	  o ooo o fYYYYYY@ HG?>65-,%#
 
+3'3'5!"3!265#".>+.'4?6"/&%"&6?'.>~�Å(nþl'99'A'8ž3²J
J
Àvccv vddv_Ï‹(D«8'üÜ'88'j3þ^	
þ¢
´
eUTd

dTUe     Öb  @ G o  f+%"/"'&4?'&4762762Ä$2„„2ŠŠ2„„2$ŠÂ2"˜˜2œž2˜˜"2ž    ÿsH    )@& G   oo o f#5!+5!"3!265#".3'3þq&88&9'7œ2l€Ã'Ÿ©8'üè&88&a2%Ì‰'     ÿl)O  . 4 5 9 : > ? Ã@1 9876+GK°PX@7  m  k  k  k  k  k   H IK°PX@*   oo o o o o o I@(   oo o o o o o fYY@0/>=<;/4045=#5!	+5!"3!265#"."/#!"&=463!276'3'35%3#5þl'99'A'8ž2v
t	þê			u�Å(‹iiþéíí£¬8(üÝ'99'i2Á÷H5		ö		+>�Ï‹(þÖB®84zÍÍ     ÿmK     ' W b c @FED5- G, GK°PX@% oo  o   o o o I@# oo  o   o o o fY@RP=;%# +676'.#"3'3'5!"3!265#".676546?6#"&'&6765##"'.'&7>&'& '
u�Å(lþm'88'?'8ž2þÑ"
å	+#/*$º"?)0-ÎŠ(Dª7(üà'88'g2þz	º$
Á"6" 7ˆÉ		  .


   ÿôÿ¢Þ  ³	-+'&76ÄþxˆþšŠŠþŒ      ÿ”f( 
  B X@U;9G m k k   `TX L *)%#  

	+&   76 "&5&6;2&547632#54'&"#54'&/& ½þôxþöº&&$&§64Q?(CmN

k.&þü¾¼þð½¼ý$&&$&E"+N%&)g	:!    ÿÑ.Ó ! 1 /@, G  p  `   T  X   L+%"+%326732654/>54'."%#".4>2~)h71_'4ƒ-‚!!'%‚–A@%'k@!.O//P\O/ó)+"!~„/„3'_2LA?L'&@AK834$/P]O//P-"A      ÿ¬J       =@:  

^^	  R	 V  J+35#535#35#535#35#35#è®®®®[¬¬¬¬Z­­ýK®®T®­­ýø®­­ýø®­    ÿùƒ   *@'  m n T X L#%6+!54&!"&'463546232³TvTÐ ýé ”Ì–¥l;TP=¡þ¾ B lf””fl   ÿ±Y 1 >@;*%G m k  `   T  X   L)5#$+#"&'&4?632>."+"&'546>32YDr V`®<L)vC:hP*.Llod(Mú,H<šRWžtB^WžtDRIM5:.LjtjL.(%M-úH9>Dtž    ÿþÿ±Y 0 =@:-	 G   m k   ` T X L'''$3++"&?&#"3267>".>3276YúMRp:jL..Lj:Bv)L<®_W pH@x˜[R˜=H,Ãú-MM.LjtjL.:5MJPDtž®žtD>9H       0Y  @
 E  f+547	"'	"&‡†#4þÑþÏ2$§‡þy4#1þÏ#   ÿÂïõ  @
 G   o f+147	&4>	"&1þÏ$4†þz0&004"þyþy$     ÿÈïú  @ G   o f+62	"'‡1%þÐ0$2a‡$4þÐþÏ4#    ÿÿÿ‰ª3  " + / C@@ mk    `  ` T X L,,,/,/$	+4>2".7>.%462.3J~¬a_®|LJ~¬À®|Lv8^‚�€`6:\„Œ†Z<(?&&@&„^_®|LJ~¬¿®~JJ~®_G„\:6`€’~b4<Z†e""8$"þ‹+þÕ      ÿùèR ' ? }@(7.!GK°PX@$ m k  `    \ I@, o m k  `   T  X   LY@
:%56%3+#!"&5467!2#!"!26=46;2/"/&47'&463!2^Cþ0C^^C‰

þw%46$Ð%4
$
Öbþ”@lbL²C^^CÐB^
$
4%þ0%46$²

Úþãbþ”@lb   ÿÿÿùYÄ   ! + A J@G	   G 	 	`  `  ` T X L=:7#&%
+%"&>"&>54&'!"!26!.#!"#!"&7547>!2D$(‘$(AýY
§
ýR“XþKž4%ýY$6	n	4µ2
n	«$$m³
³


þš³%44%³R&$þ®  ÿÿÿ±¡    9@6 G  ^  T  X  L 
	 +!!%!!26!"&7467!2YTþšþ›S
H6$ý$64%î%4ƒý�qý}
®ýZ%46$¦%46      ÿjèR    7 ¼@
2GK°PX@-   m  ^  ` X H   X IK°PX@+   m  `  ^  `   X I@0   m  `  ^  `   R   X  LYY@5#5$!	+!#"&'5#754&'!"7!263'!"&'5!"&'467!2­ôéÖŽ
þw
‰
�§§ ýéþÑ _ äOfè¡$
$
þ‘§îþ‰ Y î ·ä6      ÿjYR   # 3 C S ú@,$@8	PH
GK°PX@8  `  	`	 	` 

` X H X    IK°PX@6  ^  `  	`	 	` 

` X    I@<  ^  `  	`	 	` 

`  R X   LYY@"DD44DSDRLJ4C4B<:0.(&##&56+!"&'467!23&/&#"&'5!463!2#!"&52#!"&=4632#!"&=4633ý ô6JÒ¯ÆèþS�
‰

þw
›

þw

‰

þw

~4ý~ |&Ò¯ü°< éü¦ã

$

Y
$

$
�
$

$
      ÿù¡  , ,@)  `    ` T X L#55553+%4&!"&'54&#"3!26#!"&546;2!2Yþw³  § GJ3ýY3JJ3³3Jw3Jv‰  $ ýè  Ÿþw3JJ33JJ3J   ÿù)  ' E J@G$ G  `  `	   ` T X LB@=;850-!''61
+4#!"3!26?6%!54&!"&'54&#"7>#!"&546;2!232âý¡4¤_2¤
ýƒ­ þ¿³ �Pê¥R%ý¡3JJ3³3J/4Hk4KË	ËdZ  $ þ$¯&Z# Ë&J33JJ3J3Z    ÿþÿù2Ã   -@*  o   oRX L  	  +%7!#!"&'&6763!2ô¼þS¼â	þ þS"
ô ­$@××Y*ýÄ*<   ÿùƒS # fK°PX@    m  k n X I@%   m  k n T X LY@  	 ##+2!"&'463546+"&54&"M ýé ”Ì–$TvT¥þ¾ B ³g”�i;TT;³    ÿjYR   ( 8 H Ú@ B:	2*"GK°PX@1   m
 	` 	 	`  ` H X IK°PX@.  o   o
 	` 	 	`  ` X I@3  o   o
 	` 	 	`  ` T X LYY@FD><64.,&$+!!!"&'467!54&#!"3!26=4&#!"3!26=4&#!"3!263þø&/ý ¾ o
þw

‰

þw

‰

þw

‰
HþÁý³ |þÐþd$

$

—$

$

—$

$

     ÿjŸR 
 " > Nw@ 4,&	GK°PX@E e

k
		
c    ^^  ^H 		YIK°PX@F e

k
	
	k    ^^  ^H 		YIK°PX@G m

k
	
	k    ^^  ^H 		YI@L o m

k
	
	k    ^^  ^ 		T 		Y	MYYY@(??##?N?NMLKJIHGFEDCBA@#>#>=;#$+3/&5#"/&6;46;232!56?5#+#5!76;5#53'#3#533™b(þÚ²³k
k
k
ÒþºÎ
‚C=Î‹u¡*ˆ* '€[€nz	

ýF²³	 

ý 
J‚2'@€2þØ
Bõ<<PP<<qþ�  ÿýÿŽ¯R  =µGK°PX@  m   n I@ o o   fY¶$#$+%"/&6;46;232«ÃÆ
}
k
}}
	××	¸

ýH  ÿþÿj¯.  ;µ GK°PX@  o  o I@  o  o fY¶$#!+++"&5#"&?62«}
k
}ÃÆ?ýH

¸××     ÿj[R   , = «@9*! G )FK°PX@,   m   `
 `H	X I@/o  o   `
 `	T	X LY@#.- 65-=.=&%,, +267".'5267".'57267.'52".'54>­„æBrÈäÊnBæ…„æBrÈäÊnBæ…„æBrÈäÊnBæ…tÄvrÈäÊntÄ¥0/_&B&&B&_/0þT0/_'B&&B'_/0Ö0/_&B&*>(_/0ƒ&B'G'B&&B'G'B& 	  ÿ±YÄ      / ? C G Ÿ@œ+;G^
 
`^ `T	  ^X LDD@@10!   DGDGFE@C@CBA960?1?)& /!/
  +7#5%2+"&=46?!5#5!52#"&'5462#"&'546#5!5ÄÄ‰�èþ}}Yþe}Žô�A}}þ@GGH��ÖGGHHýÄGGƒŽŽþâ��GGGHH    ÿjèR   % / 9 ¦@3)! GFK°PX@-m k   k	X
H   I@2m k   k  n
T
V	JY@   7521-+('$"  7+!"&'63!#!"&'"&'32%#546;2#546;2‰þã‹ŸŽ;þãíþ>Å
¡
wÅ
¡
ŸþTþ¿èþxˆþþãA¬­}}

}}

      ÿ±   / 7 [ X@UK9)!	 G  `
 T  `		T	X 		LYXUROMGFC@&"&&&&&#+%4&+";2674&+";2674&+";263'&'#+#!"&'#"&=46;7>73232
$

$
�
$

$
Ž
$

$
þÑú±ë
64%þ0%45

¬'	,²*	'­
R‰

þw

‰

þw

‰

þw

2AS$
ýï.DB.
$
]]
    ÿgŠR  :µ GK°PX@   m n I@  o   o fYµ(#++&/#"'&547632x
	Õpck®
þö*ü®
G	     ÿjôR % …@
! GK°PX@$^	  
X

HXI@(
	 
 `^TXLY@ $" 
 %%+"3#;#"'+5325#5354+5326;Ð²GG²$$—?>˜$$²GG²$$˜>?—$}éGþÐ}GQQG}0Gé}GQQG 	  ÿjwR     + / 7 ; AÑK°	PX@t
 
 m  cek  
^  ^  ^  ^&   ^$ ^"!V	H%#WIK°PX@v
 
 m  kmk  
^  ^  ^  ^&   ^$ ^"!V	H%#WI@|
 
 m  kmk	"!^  
^  ^  ^  ^&   ^$ ^%#R%#WKYY@T<<,,  <A<A@?>=;:9876543210,/,/.- + +*)('&%$#"!'+#3#5!#53#53!5335!355#%53#5!#35#3!5#!!!##wHHÖý5ÖGGÖËÖ�GüHHZGGý5GGYGþâ×þ×ôþTeþ›;�Ö|ýÄÖGGÖ<ÖGGGHHHHü¦HHHG<GGýÄGHHH<þS�­þ›þTÖG    
  ÿjR  # ' + / 3 ? C G WWK°	PX@–		m		c % % m$  c&c%k2+) !e" * c  ^ ,^  %%^ (^/'_ * !*^.-
V

H1#0!!WIK°PX@›		m		k % % m$ % k&%k%k2+)  m" * *k  ^ ,^  %%^ (^/'_ * !*^.-
V

H1#0!!WI@¡		m		k % % m$ % k&%k%k2+)  m" * *k
.-
^  ^ ,^  %%^ (^/'_ * !*^1#0!!R1#0!!W!KYY@nHHDD@@,,(($$  HWHWVUTSRQPONMLKJIDGDGFE@C@CBA?>=<;:9876543210,/,/.-(+(+*)$'$'&% # #"!3+#3#5!#535##53#53!53#35335%35!355#%#3%!53#5!#35#!5#5#5#3#5#3!5HH×þÖH×ÖGGÖô×HÖ×�GþTGüîHHGGý}ôHHþGGGGHÖH×ÖGô¥þ›ÖGGÖHH×eÖGGÖHHHGG×HHHHý}GGGGGHeGGþ›þšHHHH�eHÖ×HHGG         FK
2_<õ è    ØkO    ØkOÿàÿVf             Rÿj  5ÿàÿó                qè     èÿú   è  Y  4ÿþ   è  èÿøèÿø  ©ÿÿè        è        è  ª  ª  Q  !     è  è  ø  è  ºÿà   5           è  è  C  è  èÿÿè  è  è  5  B  Ñÿó   /ÿÿ†ÿú/ÿÿèÿú   è  è  B  ;  ;ÿÿe  e  ˜ÿü˜ÿüÂÿú        ÕÿüY  5     è  Þ    è  5  5  5  5  Ö  5  5  5  Ñÿô5  5  5  ‚  Y  Yÿþ0  ï  ï  ©ÿÿè  Yÿÿ ÿÿè  Y     /  /ÿþ‚  Y     ¬ÿý¬ÿþY  Y  è    Ê  ;  v         hxÌ\¨þ˜~Bú¬ì(>vòjÊ	:
*
�
È
ìˆìH¶<Š¸ü˜fÈ æªPtÚ2€¼Ø²b˜Àæ0ª<‚"¦äŒ" ÐZÔ ¶ ì!Æ#$%N%Ž%Î&�'j'Ž($(ˆ(Ð))‚)ê**>*h*Ô+r, ,R-. .X.ä/(/’0j1˜1Ü2 2Ô3�4>4ê585¬6ø8™    q ™ $      f v s  #p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2019 by original authors @ fontello.comelfinderRegularelfinderelfinderVersion 1.0elfinderGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 9   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m e l f i n d e r R e g u l a r e l f i n d e r e l f i n d e r V e r s i o n   1 . 0 e l f i n d e r G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       q	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr homecut
fullscreen	resizableacceptreloadunfullscreencopyuploaddownloadtrashhelphidehelper-down	helper-upcheck	helper-oktarget	quicklookundoredoview	view-listhelper-minus
netunmountmenusearchwindow-closeeditplaceswindow-minimizerestorenavbar-foldernavbar-root-places	duplicate
selectnoneopennewextractnavbar-root-googledrivearchivemkdirinempty	file-html
helper-pinquicklook-nextresizenavbar-open-foldernavbar-root-localnavbar-root-networkspinnernavbar-root-dropboxnavbar-root-onedrivenavbar-root-boxhelper-symlink
arrow-downarrow-up
arrow-leftarrow-rightdialog-infodialog-confirmdialog-attentiondialog-uploaddialog-downloaddialog-editdialog-archivedialog-reloadfilesarrow-curveddialog-copydialog-chmodchmodarrow-go-parenthelp-rtl	file-text
file-image	file-codesearch-clearfile
file-video
file-audioquicklook-previousdialog-confirm-rtl
search-rtlresizable-rtllockrotate-rrotate-lupforwardbackinfolinknetmountcolwidthpastemkfilediropendirrmunlockdialog-mkfilesort	sort-downsort-upnavbar-root-sql
preferencedialog-findnavbar-root-trashgetfilerename	selectallselectinvert     ÿÿ                     fÿVfÿV° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/dark-slim/img/elfinder.woff2                                       0000644                 00000044550 15266052702 0020167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOF2     Ih     ’�  I
                       TV � 	–p
�â4�Ä�d 6$ƒD …M‹�}�'Ø6šßíÀ¬zö¿ØlDív¢´~†ÕQHÃ(§˜ÙÿÿŸ˜TÆÐ¤ƒ´P>P�¿ÛgKp±„ðÆzÄ�ØŸŽÑDkÛûÐB?öA'~aZM²…ËzbÐ’Ù9_ù;oÅ�rûß�Å#Þ7Ë¾�eïË\Ÿjo~³ì} [�ž�ŠLÜÐFnžz<Tê+#hÃ’©Ó9B�ÒÈÖ£’ðÃÚ*ÎËr»×tßz�ÐØ'¹\x¾lfïw÷HÚI‹d ”@&� ¹.2Ptmv³¨Ó‚!~.½GSÛm ÚY¯
}¢|¥$ù¢G‹¿„òõHÒ,!Ï»!4#yþ=fŸÅöÙÃnØ{ìýíî¶ßÜm·Û÷ÞƒsÝãæ×@à‡(	G<6Á×L«-ª{½YÑ�×û¿:ß—ì¢d'Ÿ^ß9š‰Æ\II]Jb(²k•VcÒrÂà?}€ ãjûE•ø¡ÆÙ÷©–Ý/þ€ä¤¸!Gi©‘éD£hnBaCDA˜ÃÙ7Ÿmòö·ûF96°>ð Á¶¡WRpêÛa=A =s¿•8øÿŽýÞêV¿JHÚÄ°Ìä""§ãõKÉÄ2A… Z×ÎÝ[nDëNQó¾3•Z–6–ä@ËI(
”fÄ-çÇÞ§ýúg\ïF¹³�"Š<ÙBÇÿ[†N¯bec‚b1ù x‚¹Ñ%úçfÐ3Ç[b L›šŽ9-;ÃGPOPQØ¶Ðö?+Ê�o3Ë"v‡Ø4'•,š<+jŠ:]59|˜®
3,!â@dÄ“ãÝÚ-šm¿îÎü~¹þãE�'¡Å’6É·Q]¬Æ—=¾úçE A©#×fé	)Lenúp�¿7Õlÿ_J'ðxžáL:RŽŠÆ)–®Wßüÿw!ì. s±P@Ï
"½$/‘P$¥98Å”@*��x)P”C•âôž>Äé¯t©Ò­;W­ÇUÈE[¹îM´:íš‰pA0Äßä›Ð&|à^gßÝOW\„³�KíåZØÂcÉq¿àË1ŠÒ#:Ndè]»Ÿ»‡lZCª¶Q£4ƒb� •™®ò;l+×àD´E‚h„èD€~õ!€MZ¡ÚwìÞŸð”Ñs¦‘‡�úy–eÊÄähB�ƒphA€°S}Vv`�Z¤ž [Üo½|K]�ÂÒ§Õ;Ña±2ôóœöõO†è—ØòY@$\™¨zE¬�'h¤þ(�ý«mdP…¡²þ
Ýƒm†žè­þþâ€!‚Æ</üÌ/ýïWqý^‹ªÍþq+ÌbÖ|øž“1žùÙýšðð™{j_’zøU�Ãÿ¯ð¤ÒtÃ´l'£8I³¼(«ºi»~0�'ÓÙ|±\­7ÛÝþp<�/×Ûýñ|½?ßß_%YQ5Ý0-Ûq=?£8I³¼(«ºi»~§yY·ý8¯ûy?_�ÚÓb‘‡ËÕl+pND„aDEÄqD‘D¤iD‘Eäy¢@‰Q&*D•¨u¢A4‰Ñ&:D—è}b@‰1&&Ä”˜sÄ<±@,KÄ2±B¬kÄ:±Al[Ä6±Cì{Ä>q@GÄ1qBœgˆsÄâq…¸FÜ nwˆ{Äâñ„xF¼ ^oˆwÄâñ…•Å7Í ˜‚FFV‘,
j‹’6DECQÓ“hèm´ôwtl=;ÄÀŒ9"&^3kbáªX¹:6>;?‹ƒ_ÆÉÿÆ%bâ±ñQ¼B|ùœMÑÓZZ×æ:kH|¥ˆƒOÿž2ðÿÙàÆqžÖ(—"•æÿ¡hL½°¹¨â¤�õShH€íbÝ�–à×W4öiªÒrXo>G5•r<ûêH]¸`.3sG‘ÊKVy*’D.R¡¯EX£|“”d)àm2OÎéFr“>ÛFéJ7l�Ò¼iöÄ'%0À½EÕ)EC
¦¢ËjUD™3Üˆ9²¥¨3MÙD±SûsÓ«8Ð¤ìuL¯$¿ñhž‰ãÛØ1ù)BE~\ŒóâJ/èˆÆiÒ@h³™ªZ«¥M+“N�°8ÅÅ?U’wbÉïŽ¤o�ÁŸEÂÕ4JŒÔ¼žd'ÜRIM·å¥|‰¥‘,È7$9ÉFÓA5«÷ñoLj[“>`ªVQã=9Ó^ˆ*¦~A¹+ƒJvÇ¤f!)ˆ“æ“mÅ�`§çÁ}q†hƒÅ®åôáÂ?*ªKùòKÊ]š}Eæ•ÃÓw±š¦÷Sxk?h>Xú:>}Û2Eeß“C…ˆôžFæ!”20âž˜¼ÒPÝ6ö\”£�1xÕœAóL”MàÏÔjÔ¥.AH‰Nê;]Îè11J6­Næí°o=…¤ÕDt:�Æ<6jPÊ»Èˆtæ#ÓE@ºóåïèz,ù…2ª¦|QNzCÒ/6,´7LP4IÉ1Ê¦¨˜¦ê#jŽS7CÃ‰Iô§]
µT¤vÙ¡c’®côLÑ7ÍÀGgd†±û	p§,1µ¡,1Z ãÏ;s‹Œ¼A�2fPÔ%Íö·ËÀºN[ÞµãÔêÚ¢Þ‡æ.GÎ3‡+	Ó–©¾9³nªÈÄü1'(Î±*)Y¿`øããÝ³ÝºêXJÀÌT´I»–tYíÑ;Ë&)áJRÄºUT2:žF+R¾Èf—M3³ùŒ8—ã�[ÂT¿‡.°AY¤t’îöf
/®J-îóíEô(ÚèiR(ÈÆïîÈn|ª÷v"sÞ¶=·C”¥a£:]Ã}„§Œ|¯A2-�1æ¥¢jaròtp•ÞÎ†v"ÊlÌ»bd8Ré"	8Ã„*7Ä,É“Ùã´f7j‡ÆR£©>Mòáë$b¨�ÈðA�mé·íÎn¬ÍL‘‘�¦#N�SÜ"IÒ+ÆLÿØâŽ©jë\ ­o3 ·ß¯Ê™TµÔ*¹Â¥èr{ †V»<=ìŽš<5í5¬f�obPìm�uøÅØ¼Í‹½cKY=ø†w æ1Ò}2©{iPPÎ¨4	.!Å–3\K6µøQCQèÐn\ÉÃ¥Ê¨“;ÃCbVò@v8¦\ûŽíŠæuL]=îhBM»àÆÔj?Jr±§gî˜ÖÄ>HwR>){Yülp©‚\LÊœ†y¦.(Úd†c)_šÈJ(³FQ$/âQbÕ˜ Ú�²-8‘kÁK@[ù‚ˆ(´% •bID”ZÈSn¡ˆˆJUÚ©¶ÐDD­….­Õ["¢Ñržj–tÜžWFj]¶HgC’Á6�)ÙƒÌäÎé”û\…;(<AáÞ•OPù•_PßükLòF=)jF�ÜøºBïÕ%¿,@¿�0Œ3ùã{�ã�YÈ¯•Ë¨y`J$$„0î¢Ñâ0/´×é(æT³6ÿîŒª”ÍÌ<E¨±ekÃQ¦²Ž4:N™QÖYyîª(H^¡êH¡©Êa “qÕ¼W»jîÞý˜sJ†M›îvÓR¸håT@¿}CD{êšƒóíÉTÇ�2ÎÁö�îÚvú¨-§7ªá¡9}äwÍROwÑ<‘[£)cÙg×Nšv­\)~Šæ§¦›aÀVM>uÈXçÚDÆÔùçÝf×Ã.mÆíÎ¹¡–’‹3—ïIkçfçó˜ƒ›çó±E5h:Lðõ×_NÛæèê¥6Œìà`xÖ®¹ë†jP7š±¤·Pßä�‡&…Þvñá¥ä®uú¶ E�Ÿ17KRm&Ì‰©±˜v³AONÜ]ŠÃbÓÌç…X­ŽÈO[kzÏÙS™„Q[mvLYÌþ�Ó�‘E&ˆ(‡™�—äfi„(æ»±Á~5L!è©Q†¥‰©Ö,‘ö¨vÉêv*õL>é +¬¾:FEàŸ6æjÎ_èògÎ„žž	‚§ìRÙ+Þ�sgSÏ±Î\v�¹Õ�L¥,9JöŽ¼qï»ÓÿzÓU?9DjÕ%ž`½u5–âü¢‘�4ÄV|‚9Ju:—uˆI(Kp±p0w³L&N¸à§¦˜`êºøÈgûvÙºÕøºy»ý¹wûJÒzË¶Hµ›ð¹œQÓgøÈŒ·ûy˜<(®²3øÁ¤€iƒÓ‚&WpÛà°Çd‚KÊ�®ÆŒl\ÖuˆiSºX:ûÚèùÛ5]°m©S2ž"—„�ãÈ/¡÷Ô•?7SP š2[d˜rÊwÔ©I�°Fb’Cá¶‘†ˆ2 ™;›’ñN°¹¯µ *ëØÖfõ<äILj(˜ÄÊ9²”7d!¥€‹ÖU‘êËAöÅî-}ã×ª‹­oè™�.,2¡Ã°™Ç*(§‘åí€bi
Y�ðùl�NÍ{#µIjªíoZ^£�S#åB®Ü}Ù ßÜ ]5¡ô1›bNû5NC*k@9vêMEÏ’öâ‰&;0:ýA'Éf‰§·)peÖØr1ðÌÂ?]¥(Jÿüñ÷üÿùy’äÈÿ�üûeØè<QÜ6¸|S¨‰Æ^}—_,8‚ßºE ø¢-ä²¿²zç•<q5šz;hæŒù.èƒY�}<æ
Ò�¼Nñ^c)¸\7ñßiUæ¥Àøcü—ì^ßßŸº|H²�
á§j@ôLIú©,#?1 L~Ô»':zW¦@×Ã”±ü9ejä&¼D"nŸ'Ãšc®Jï.E��Tä,ñ×Á¶Üõo ì¨·/¢Þçµê¢å]h¡#ø.|á…ìäfLBUÆe~+¶Q!ÑÊ�')o@©”a!®á}¸F«÷\jÜ�Ýö}¬}¿hL@�Þón&³�©B\ßÏ·>–¨çÎ·!Q…Àc›Þ>çXë†gðPvÝ{ÏÃIæþ5ÕþÔûn°àñ'œÄ‰?Á­�äîÔü�œ0Ì‰TQ„ã+(§}A‰ÑRƒ¬Ö)¾¡h€HÇjbi]*�æbÆdÖ¦ÓY&Eb69˜,¤ÅjÅÞô	[+?SgóG„·ùcÈüuzÏØ6`"âTXÂ–Ç¡§Ö€¸­ºn[³÷bwÓÔŠ‹›/‹öx×ÊK\-û5§Ég¯ˆò€I&4¢«lCº¯¼ÅÆUQ©ç::Œ7'¢Ã#	D‚S¼Âý¢q-‡-1¡â÷$ñ›Sø.þK]„Õƒàª4ÔÌYñ­Ô|zù\9øÝäêÐù4j7@ÏÕï¡lÅ0h[²G®ú²2™íN‘¥HLw%Ù-‡!!Ð�àUM°„ZØ“}üŠDÂi™oÆÉXº,²Ÿ.ÏnÆ`øLï½¶¡ø´V¼:áòý`-¾ F[ÛÅ€¨°B^uÝÛƒ
½«­¬ ‚(¢Çíš¡•2>D–zìÁ4àéràBYç¬7À#²�©ð÷ÉÈMPÓ¨2¬ OqÉV	…î±`l1ÓÈ*QYB!DV�]íwÐO ûâµÆã‰Ý)ˆS|oF>HcEðóôÝ(~0®ÚK¥lY)ÎïOÅälPœL/Í‰	Jèë293h3…çÊú{¸�¨g¶éBÖË‘lOº9Ý¹3ékü\ˆ·ã	m…”£¨‰+Ý�Ü
ƒè0‘Æž£çÃ@.ÎÎÄæ�‘¥0¾ÃáÃ¡-¬s>ªwlðUd¬x2ð‡©QÂÄÝ~r¸gË}¬3›œ	5Ì·f>¶Ûc®vT¦LŽ¬Uï •-FqèïÙîÎ”ÁXÖµ,°Ÿ1CØI¬ãÃ®„RöÒXç:S£«-§ËYAV\þTt5F<­/7FVLÇÍ´£~.7jâ IóLh`šTƒ•è$î\pG'bƒ)¸ãQj$Î‚ÖÁkŒ´ÉÛŒÆSC8€i'‘$þuZ×WKCË*lj!®¢­XÂ<`­±�GDßSÈ®
3˜˜iÜXÂ6R±©Ÿ7d×i‡¥'PiLcd
Þ`¢lÀ»{®×îZ£~Ò™otBEî<Šw‘â<#šå”ë6šPú©ë3/ûþ,îaíNw=¢—<o·3Å‚yƒ}ñ&*ì='÷®ÂG]KG§á2
mÂ�½é¦ÛØQ^Èß«Ï¥g/?Ï@!—u:çðô‚ÕAÄGm¬Á¬ë]l�¬_”´º¢D@¹döDÆŠÄ�•é§±ŒS,3>ìu—~Ûˆýn6¿MÖC?†Eÿ÷ñçãïé_+ð]Æºå6Õß˜l 5TÌ¸â«‚O…ãs¶šO¶Zˆ {¢fÔ¹=ãcþ÷”á–,@�˜|2¡/¬|Ø&Zâ×íCú1ôžbM!Ìß�­˜ aã€tº­’ÝSÏ='AdEJNOÎÔCu¦h[Ê‘Þåºá¦IC ¡A�§ŸÖàïPM}Ô¹¨F”�1ÕOÃ´�—‰û©`˜¨©�¹›ƒöi ¸ ñÇAªsƒs-û"ÝI‚!*U’+kÝÎ:œ—»´ï!-Ur‹”ÔˆæO¡f—)þÞ¯`‚,¢Eò=F`ëRmÃ#¼#Lµ]"ðÔ]ªúÍ‰†ßÚDD’UAL—Ÿ§�ƒuŽ€g‡¯'RE¡o» ÃÚaK=¹ÁöÈ”qáÈDFYˆ(p*§K-=þ÷@Œ-/XØ&¶ÜfˆÐ¤M¡�%ñ¨M[ÔM4wŒ~.ïPµKd=”	ª]k,*“°#EêüE#âÏ/Åü¹ò·¯„üÝaWNù›'EëjÔßRƒþ^38	Í.�š�Æb˜óÁx0Æù®Ì°r«4ÞÑzAŠ˜]îdX?ð‹èuQ„;42C£ ”z‰T”=ƒ,²™FºÀWrOH“&ýHétNWéµr,fEHÖ}bˆÄÚÒfé’rE¾*êfqLÇáR<¿K6±í:Y‘¬mbÐ‹l”C5É�Æs­_×4eü†r /qÁŸMh ‘åÔ¦ÔPZr#mÆˆ€DE/p
sÎ$¬i×d›¶ffM'•XC$5²ÜN®¼4ŒZy ´ÂÄ2’“W.<’‚-5”‡¶ïnÊaÁÁB¤‚\QSŠCj«úCD¤°?¸5,ê õ‰¬–m}Ã€êÔdý1k[åÚE!ci7RÄéÍ�·êS{Q,MÑm dòìµIqê	­Pó¦hî™+âýI¤m&–:¬¹º&öê–ž³Ê´6H'ýa*%öYqÃé�â¿ŸÿðÿV”l¶1ÕÍ`Ôˆl¾åÚ§BOŸh@°5•@
&ôÓ	}iÃPÎš±¯Z…¦ÀÎÌe¬##Ó!ÎŸCMv¶÷¨Ë©ñ7Ö=¤å)A"ƒ±Ëºþ®'|¼ÇÆÒã¶X3"+RRNÈ”T&–5fZ¬“ä‡,±�}Y©h�¯òY¬sÉ°¼¼š`ÿBõab�2@vm!��<¸rò ]’-å£ËP¦�ðeIßí+­÷ÏéåöÝ„çôFÄ×ÝÄÕµC�ãèv0­s§µÙÖÕ‘óÉ`U(7Q ~ùhòÒï!–õr¾cœ‹…�'Õ^D¬ìªŸ·3ÏÀ§é’Ò÷V–µùÅ«›S~i�BÑ3TR/†bvZO£¶~¬™—cS/Î¢6vöÉ“ê-”ßO-ëçù—M¢8á:ÌŠÊ˜Ð-ÙŒ9>Lly‚öÕE·@	eÉéâþŒ-N’âÍÞ§€h“ñôP_r[äÐ¼:Ö¯½A—Gý˜MéDªax…�ÃÇßj±0ùYr/ 1(ÿÖ=DöÉË5?ÄÈÿØU9�t8¢ú~°(ä,‹²S•]	5»„=Cn\Þ#ÇR#re-eCé‰âá(L¨eºÓTì1 K&¼Y€iQ8bSàÇò˜l@âaX°ºôU1]ì›bÓo>,ìdÂ<$1"n0­ ã�ù¬‰š§œ }º–C«�}îB$ûð“¾@4ƒ0QáÐ²wU?,”ëÉá‰»ø~.æXc]uáÌÏLé‹þ7´€	�¬ö°S+Ý–ÆÌN�zY­;æ£ƒ;fEOl:¶bú»~TÓ:"S%œqzK¥$Óï¯�™[k¡¡ò=v G¤ª3À  ~ŠH±.\,ÅkŠ@Ø¶ZáÈ56ü@lq6‹n"²riøœìZlv>Çò;DºûãH´›Å}+L¶ðÞÚ$G¹bkoœ§Ý™ÚÆf±­"®%ö×,�'¾è£Ðf‚lZFÓôqåŒ–ê˜h1®sãéIÝÒq
ÝïÍôÓö®(ÒÐCÇ‚Ü‹Åå½Ll»reÍTtç¢½¸Äè�I$¦{Y	Ü/nô5¹
Œ?AƒRº8|ÁFöLPœgDÿˆ¨:œ®áÁ/lp­SWú>Î_–¸èo|¢§TNÝ¢J!]èU+Säî1ËM
!§·¾K’±™}ÊKòu^“ýkÃƒœNDý7vq[b¯KÜ&ÏGØë"ºEòvìºá·MáDvg[èÃÛV-ƒÙ;ëO~ r: bh”›ù±ÔÑOü´Àhvj æãïã±î”Ù‰@y-°ªÞ$“šMõ	ƒÑPß¸¥R£ÉÔ •Ôõ¹†F©Ìdì:†”F%BÌåƒƒeÂ‘arïHÒ7)
BÍÄowÞ7½«áó*’¹ç¨›þž6Å“ˆÅ¦„nØM_ÍgßH}ýÉzœ\«×{àÐ*¥¾,­2ètkÑà\Z$R©ÀóÃóÄç×fuã€ùYM+ÓËõ´3dS£LZoªo�HØÏLõÆÍ0…-•Ì]<M&©¬¡±¾ñ™¿Ô”7�II‚ªÂ'w£Ø¨Ê:Ï°œ\žDEVg•M{v±éŽ¬‰É˜rÿ{—sÕ±m«%X®yÖÖpÙÉEîbæã™ø`Ž‹y°w 8{ãœG/õS¶2A²Ù÷Àß”k/àóÝ„pÅv‹‹zîsR¤A…Äc¸îá÷ô6ÀÖ„õó`wfõc¿cmõ5 P�¾:gÁ™È—¾MÞú2¬?GH›¡qH7�QÏ-S²	Â@óFÇè”r2´qcÆÚƒ	™ íX\­1á àÙ#c<w¶þÛXU†ˆ×¬Ioîš¸Z-×k5ÃÃšÓ»4éÃ÷e¤œ›Y�"ÄÔ¥Ÿt¤U9ƒ• OçsLIæ�X
!_�© ÷{Üä1 ýFn��ä+¯ÐVèdâ§4kºól,C±:]Œ�o±Ù
…LËµJ0¤àÍž�‚q±5LèÙjë”R[¬Ä!ŸaeÓbo/Ûé¥Ø|og`MH¢2‰� Íkp;%
í“Â:¯¸jÄ•æè¾nE¤¿0+ë¯�ª /' ÐU@X¶ÑC�–þég³³³{~/û=«9	†ê¡Ð
(xf³ãØ\�ì‘]ýã‰“¾}{õªÏŠˆ#ž¸ûNÁHýÆôt‰ÄÖÆh”$¹Ã·í<£TÍ—í\X:O—ÙÅ•‡qasÊE»Öò^»G�pÛË±EæÞ� r»ÞÛn·ãÊ±½½ÀÏf»Op½äNûíìŠ,ÙA6$¥ÙÄwæ÷l¾ìé.ÔÙû_>×ù½],6›ûáÜÎ¤˜Ùs"Kv§ç®$Sû'Œ„$wÅ†ñ³çBWHóa	>7ÓN‰ý?ˆ¢¦ÔÀ[Ÿ|ÔG©oÜ 'ßß™ƒ4�—ÆšÑ¿§)¤ã¡Ñ„9ûÀŸÞ¹MRÕ>–Yð†(ê£ß'±à¦
xûŸ„«~yhú?­<æq
‰B<nßÓŒºô#±®¡ upóðÐpûððpÌË�C;ÛwïŒy944Ô>4<Ôz#ÆÚÞÌè?ˆ5ôç:ûQ9øb×Ð.‹$ŒÀ©‡°±Ûärû—SüpìÊ¬ðÜ>_v¦Ìwý
µÚlV£6Ê­ƒ_ìˆ‹ÃÅ/Þ½}÷†ðÖØ^„wõk½Î7¿n~5ÂfóêÈÆ¦ æË#–Ž\ïe¬»®±QâHºMr~ÞÐhdÿEÑ°VILñ[ÿþ#ƒÆ�bqò¨íó†„!\ÿ¤$FºÄ_7f¸$j¶lNµK5+í•›·¨A¹v¹�yvy›¹HC�‘03â3œÚ©%8�u£Î0<è›î+$  c.1ézÝ/F¬¶ÿ‹m÷'ì/í‚¹ã„Ò©©Ô£óÇµ5.<é 0æÀ+µ<ðJa¿­¡ìßó–RøkÁ¯ï(öx½ýy¥=€Kã¶¯]ÀÛº¬�-4Ï7Ã�[C`øëŸÙ:üA —ö’�Õ-èßé	dgŽÍÖë%ŽÍÒêþ�ÌŽ:VTÔ¿M
‰Ô—_/=ä�·÷­/•JÊ6÷÷çåY7×K•AQpÖÒÉÁXœ‘©à(Lšv „—ÐEÞ›3üÑNŸ\eìÿ[ìÀWÿg§Ãtd>Z]e§ÓUŽ†^jm“†`*1¡‰¿† Ï8L&bò0L¹ck‹M%çqÛml0y”<“Ÿ¤ùO3…•gH-�	JÄ›¨\ÏÈ		¾A·£9ÉuØ¶ûŠ$“�×»|Ÿ\WRW5õÍYî‡?6žmÛó½VÆ’ÙNt¼²pÿÑ<×yßhÀ¬Iµq¢v3•YÓVÅ·?Ã_7í>’½?’D¯N¬¦“"÷G“ê�Xg Ö{lÓ‹eV`,ìÎ/sìí6oêñ‡ƒ{( Ëžnýpú°¸�çgcoõU	æ¨J;{X	ÅaÎ‘én•ù¼C¢+¢¢*¢ƒ™º”˜¤Avø÷4F²›ßV”!x"Oû`c“�|¼12"2\ãßDz,…Ë*œ£d³•yÃ‘”ì<%‹•š÷l%+"#cb5èü¯m€Ôâ²’žGç€éŒ¬£H�´Cr�m	²@çåÖìØCÙ,"Ø1gÓ¿uÜŠá� ¶´ì¬Ã{ ìœ·è%íB*¿²«b8‡"•tE ]„vŠ­":€€5k9É““ÉœÐ—�>!ü³lýT–ýûU;Ö­+oŸÕüXíY‘™OYlÝ«þúÔÿ…GÆpÖúò	Öš*÷¶”mAgKH=Õ”ü�Ã~A*Ôÿ¯¯¾þŸä9‚?=º…ÞA÷pXà]´ƒÄ¸«ŠÖ£ôÜ¯vPáŽ…CÓ¸YÃÍµ5öL¾’ÈgK~Ð™[ž~�XÞxéöZWQï«ö¼H* /¶ê~ ßÜÖZzˆbð‚?"A<Æ”ï�Œ;a„Y_Ë¾}!ïÞ…Œì«><ç>P¤ö3¶ksîÌÄÞë¨�ðKã•º^È-ÏÕ›·šÕí�5FÕÇçŽ•vÛoÆWîãõ†³G_wåÕíà.z,ïnÍ Ö'�x¨×·jÜþux³6ß8¸@Þý¼á_ÏÑÆÕbAO$÷ÓÓZ%ÝS‹;OUÍ={æÐòn9Çëqi;+pŸn& PçÇ0û')ÇqDüUûpÜößG}ú@•†½�mTÍ;˜ð-x“2Î�ˆ—à‰QŸï¨kkÕ mþæ@2^Z³„†W�ŒT§­Ï¢H³—…*¡>Ù"ŒFïÆèÈˆï
d<¦×-×Ä¥!,nÕ>j¹M^ =GÊc7R� C8 Õxay­—”ï±qÓ‚õL¯ž»ôŸ2
œ"	f!¨I ÐØ³øHŸÐŠN°Oåç )`§ì¤u€&�§s$¥ƒ[  †w�ÙFŽ)(‹¢±zp@¢LgÍ[ßŒ;åÑáY ¨zt= Þ‘Ü›áë"¶°y«Á=ò˜æ¨Æ¿Š »¦ãx ¨šwoç½áe×¯�Ýcœ½´ûÒ~ö‰ëý×û³Áše×û c=òh'èhû õ] Ù˜k}ºÐH$ñ �ÊýÚÆ³”~<‰6÷#5ÆË×;.–1¬rr'D¥ÿÑÔÉÏÌßÂ"üSˆ~¶ÄÆRÃÕ f	ã=}†§Ý¼m°V² †ŠvæË8^ô¨(º×Wz�åÅÊ´ÿ]\¦•JÓB—ql±ëðè°c°˜ry k™:4’ŸÂcÉäÙr9³KÏ“äIR%yÔ
Œš�jÓ¸ÖXÖªÌUÓ”c¸é;4’{Ñö·9ù‘<m�ÞËg¨t°Óa©ç“X(Žúè³„ojßPHWs�|@ŒãÜC®¢úæç¸˜6T¢¾£”„�(îoßÑâOÄ6“Ì$Û‡ÍQ}'&¹ëÐ\)ÓU¾&
„'E�Šñƒ¿á¬]u>§€h´�­…bÐZì—­>sÎ.ndÏ'ä�I9©˜Ã!|sDmõtÒ2IUÁÆyÞvœÚë”Ÿ½¥çÔï$¥+QI¹*\ö¯œñQ�Ÿ¤0!™_#ôçCVBœÿ‘L~s´û«öxÆ¶^þ>Õ/Áðˆm¤B;~7-tÆq�e_g7xîG—¨r¿r§'9+sJÇüVú…]Ó¡9wyN†ý:šó…à¤×Ç¬�Ä/É¸„9ˆð²àÁñ	èTtBX»�Ò·¹ÍÏ÷‘úÆ™B·m!t/ 3Ý(%r¡Û±þš+Š{—åV¾¹f�Šûë&Ÿ¬‰éØ:Å%ÌAÙ„²�§UÔnwÕí�ø¥£òVÇ±›ó[7š»ˆàÐmCLì­Ë³¸HqûÀa}šÉ~×Ó÷\1¸`•�lïª°Ò3XÃqB`SûoÏ´úrr³I™ø¯·ƒØsÅ-\®H8Ç�¿X®tj¶>Q¹dÑ²G¾9±2ˆ,:‡ÍôÃ÷ÚŽCÁ@êÖ'ÍòÞð"Q¾EP“æ\ºõ:ïÌøÆ¸Rµ!Ì¶Þ�<žŠq1ä´<±,¡º³üDÛU°)(„ºõåI³ÜÌà®UiR½§.'‘îPíÜ¡¤_K>SÊà”çkÍ…T uÆ=ˆ*–ê½Î{¿·.L?~¢ÎIè\ÆúB*{ölîYYPåðð+à®=;_¾ˆâ_§G°GG{[{ßäì3Ârí$Ò)=SÜJèvlÿØèI;÷è w;÷Ë¹Š¤ãÎÇ}3akJÿïBÀ;m´÷jÃ“ôE®EM3kÂïi]]ð³„ºˆ5•I{]÷6ÙˆÚâfžý]6¦ËkÂ¨ÄÚ°Ë&[xWüð_¥A‘ãk3B4ÚHvþ#bE…•U¥×©é|6_ûÏ²"µ›=0G§ÙJ«¦'7^	Â1-+£
<^*¯TxÍý@HúbØE>êú³ª¨À‹S/Ò°u!†ãL÷ˆO†0§À�äx�ŠÍþ¡±¹b'·Æà)¦B‹oœ\Œö�f,mD×böã ŠxÚ[âŸß’Ñ?¦ÃG¢ÀyË!i!‡‹ÓÓ÷“Ìt/ë±ßuÿŠô¤ý»è›<àêÌ\3\eØ%œ œîPU³kBœtu¦ö”ª„ÜZ¥ÒÈk×(5<=0v¹ª·W5	4§+7_‹sÍè[�?£œI�îJ|¯u¥Xáhþ={ÄÆÍã/�“ 5$S¤6LûE~›·SÛxñ¾t°k©ðàz;�ê0¿Vá’ßyævÄOYã
ŸÆÞ„Óê]–!¶Ü¢~ãÚ€çROƒßÄNÃ-ßÎ@»?ú¼„µ{ñ%ä¥˜¶¿�Ë´Ÿ²àö©gânâþzÕ¢Ícø‚<@«:Õ‘}²b”I½öj}w¯Ìtâp¨�Í.„NrøÌAÌæ'øô¢dñìXÞºœÊ°OxÏ•ÅOÐô"÷ø«8üxa¹óV'aÐòg&­«ªrrcŒÏNÉVäN¥EWéª,ˆancGãNÅ:….EÔ"ÆË²åÂ9,›ÅvkîµÔm™ÿûKgç@ÈÍ/¾PìèAb~Üßíi ;º{æLÏ÷Ìú�èz®Ø£áü�N×<WoÖÏ»F·ÐÛ½¨�qøjCN•x·êì?È­Ûd½ˆ‹¸‰À#¦#¦Öãß@øV†ïö…mH“g—w�àP/_óá–mæË¤j,y‡úý]Lh8³Ò¯¤ýVWÍbá�Íôj/2Ý@�Ô_(ù;HÄsþ­jÂÅÕ?Áû2ÿ 6¼³>·Æ_¾‡6sû=]»mY«¡ã¤Ëµ  ˆV³Ü4nå˜ð*8@ûÁÉž­Q?˜ïŒ_þÀt÷¨ÃPs�Í¹z+°ç4Ð9œ‚¡P48žB O>!)]ŽóÇwimxot�¯$…+�¬‰òçAJ!N‹¯ÐaX+Ï®t|&Íøµ#ß‡ÇÊ drŒMÍ'·ÛnÎ_›ëÙVäv¢'_Ò˜°�ïù—Ô“ŸÄæQ·ÏSü%þþR�r¤þ+æ.†»?à•â�ac0ßrØè¡Ñ1S»šG¬žŸëá»‰%¡
EP!µ½3…_’s�(¼E†-ÉÛ¼ùæÖÍÀÜ;Â¬·'C%(×
S3Çä¡b.J˜�˜à¶TCòÒïB žQ˜�PÌX¥£W&&¢ý{å8‰N˜Ã“UB½^0ÁÝtáø› ø¡«vH!ãùÄ+[ä˜Å�¨ªà. %!QHT†Æ�I3 ªAá*½h <9`Ð÷
Ó“{Ã¯ŠDÀ‰ðgL[[k �{ ÀŸiÜ6Ûà„e@	6�Åµ¾d)L…cVA–%Ä02Ð@8{±„7¤ö°'Ø˜žÕÌYnU«C[�s\Ë#åAŠÏrp¥o‹¯�EIœj4Â™)ŠÊD:ƒo†¹a�4d†¦`ª×cîwî=">±ðÊÊ*.ŽÁp-)(åF.ð ER»á…ìÌ'qµåª�¸ùVø%“°“²X?´þ Œa7«lñ�`Ga�ð¹“4mÄC™D­-•¯ãÎuÃÀì­�O³JiÎ+‡M13qå¹Í
¸Y4¶—¦`~ôP‚÷Ò8ü�4nð¨ä{Þü¬Õëûë‡<`æÌNØ”øúË6cÞ°rdï^â¡DØPu€7!/Íjñè—c†/þWNsØõ…ca6óc¦Z7…ïxå§8ÚÏ?ósJµÕÉÂ^×ÿÍØòÏafxçk‹¸ÓìKóê
¸§×±a­öwcu'~.³“0õ îIüÁoÁ�¸3»ãÙ#¿JŽ¤ÅóÎîº>Š°ßý§Oï¾¿N7¶o‘	Ø|ÿO7Z/¥½QS»w_7Êi4mC}ÎáZ^L
>Pÿ-rêþØ4Y„»ºIýì[¨Š<æà°¹b�E·Íe$î&ÌZí<¾ÉüÆ7€[»�(.Ú¥D…*Õôû¶žÌã°ÅÕupø-" IoN3ñK+ûS¯¸c÷zG1á}|¼½4›^£v�¬�œh´“V©ããÑ¨”‰‰Õ•ÈbÀà›¹×Ë¾åY�„Ë­›øÂ†ðk3tNM*°L`³6ªò{Øp˜�“´c8’OØPÝT–>ËšuÁçï§ £/Ý_½ÅÆx"¶Û:a´	?¿fÛVå£üÑè”&óCGw·¼øk=ËWh\£•
hÚ�<£-Ióès<×¿G»êà5ïÒpzíÝ6U^ U	ð¢9½ ²Íƒ"EE"”Õ=i­˜yuOô\TGÅÜMa¢þƒ6Ñ,zšó™ú¸È"åÌ7"JQ¤<Z?ägø±"#uÑsñ`ÇŽÑÂö&f‰]¯B‘¡½¡#¤\üëL@¼G? CÏ�/áfø°ë­†-–ì%Ê3I}s}´5aý\ ³×ŸõŠú�K3Ø`¶´9Þ[…X1u1Ûû^ÿŠ¢Å±±(X¶š rLË†¡ûBˆ`›	ã‘HÄ4Nxˆ<z#dá²í‰`fÛº]M{iÍVQE�8L|ÿ¾è†Èã0˜oˆ‹Ä¯Å†-—wè"&E7qîFqº„ú`ì{÷0ø`N.17ä ±»ÊÛò«,k�8W|ÿ�è»èNzþ`�sEŠÐû­¹Adz¼/‰íÄ´yqD,òzª)ö»¸N"š7SŒufwn…æñ(¦'ý_£n~Ñ¸i‚ñ›«åD0,ñç«M Kk÷ ¸L¼ö)ðV�ÅÛ]® 'ã˜¬�ú�.!�B«8	9h‹+P‚A×€ÜTY¶�®‚ ï^í5Nä‚ß‘V”@È`6-¹ÄpJ¼tùT8Ÿ
#€|ð-Ns¹æd$©– xµ”>¶š–Ò.Ù®®¦¼�÷TÇB·½u.M"GK0. Ñ¼ ÏòI�)ì1[‹I‰ªZŠ;3uB·fBWÉ=7µÔ/¤pÌ®:Ì:QG©E¡ãÿ"Äªûå‹òB¢]AT'#Zôt™®Õ¼zÝN^ ¡ÙÕqõüy±VDhÁÔ)’mkÂ )«VY×¢»ÐiÇÛš24¾•Q"ËLZmEg�R£Œ*ÕG šÖšQ+ÚöÚV�´ÕÝÏ‡wn]½<õÊ²Xx�éþhtÏu„Í�Å¶©%ÜxE€Û&6U³¨`õøúÚî¥»ÅÐõÑØ  Ñ¶:ª))¸w·A˜„€8‡pWÚ²Àd€m{€	P_Wpv¦G[ÚA†š)Ë°„§ÓPœ˜ŽáÙ:Et¡²Kr;O“ Ê_¤‚“úÁÿt·ÿtºŠâ „%m�ð’>*Ð(:jS€îlP„‰¬äÁ‚Q7Ü¸†h†h"úX‘ØGi*dØñ<$^Û¬—E®•—ÙVÓ8ð9�ÅtÜFËD×ÆO$•Â£Ÿ.&€#—”‘`,
—š¨ÊOÐ=U|PüµfÆt§+K5yó¡¡’„‘V±›!ÝE5#À°0Œ¶ ó�ð@¨†?B;5tüQ¸Óõ¥šL0NÄðAÆß»â“©òüÞ%(Û&‚˜©H��œ¬QËºŽ#E)]#ÁƒlÛìe¶Gm¶»ïÝ¾qíÂù3'�…‡=W<GÅwúñËGk¤Eo#-îO5›™«ù$‹HþÐ€Ž%½ü@H&üñkþuÁ¹®JI™#èï1ëuXÂê \T}$ì_m$Ø»$ùÇ‹IÑGmËÍB8c€1	�Ž4Q½`@=·©�ìÀ�<Á¯]ÅÃÝ�4„Û&!¢PÁÀP•=R”zž²uS7—áôV9ZùTU Žò­á•»Ìÿƒ"_Mkšº¶q‚ÛˆÈ_‹à†Â¢~m4»4±ø�Si«ž4	)–2OU5Õ`¤¼¼¬Ê0p�Yµ=‚‡ñ&÷Ã�›ŠÄdE¨l™¨˜Î¢˜ pÑ�=Ò�œ¾›±·»GwGcJiy
ÊžúŠª[b²0µ¥‘À¯Û²4ÈÃ\ˆ¬{µW:=é|ÚŸ…²G!Õ¶t-cH`óØq¦õ7ÑŠìËn9„âÉ,,£Òu8ÜƒK×Æ_þüã;ú­Ù�–jÁXw¢pbèZ	ñ{+¦kMWYu6DÊÂÑ†])uÿŽÀÓt¨J-çÔ¼IQAÂÍ
8wöæ/hTš¿8ý.´éNÆ5¼?_–¥RIŽÃ9ÆãXŠðÒÆÖ«r˜Wªä:‘�,â@:~Às¹ØfJÆ%°^•6ÐTË@8Ôº|Ò8å+ÈPbÈA‡"µCâ*Ã0oÍ÷c0 ±¶ùøÜÌí|¿¦õ	�3nƒO8Ä*ë¸økÊµ³Ñ¶a~„n¥UA…ÛAäW9­”“�
!4Km`E¶à ½‚XÛnP/Ãgm†‘ÔZUåÐéÎd–Ã(´eU4ÌŠHIW¢Cd)¹Ï9I–ó@Õ÷…`lVºlÜl „pf,>ëNÓâŽ[×ëîVæ¤+¡
º`*6ª¡Ž»ß¡Î:t{ü²îJ M#ú2VQ•„Kã‡üÿó·Ûr¨+[ƒ ë(ïsœ|ÃN­T ñÈŽbAb¢ŠèyŽ„„»¸|šjIí(;ñWF KqjÂ¡¸ud5PÑ&ú…C¬!+C“ØÈ&é è„r»è{]r9¡ ”3Ô0E¸GÊ�PÎ'¡AG# Í*ÕÇðD¯>˜+oM•Î¼©·Åipñ“Ÿ—3ärlÚlzE¬Xø(³2x]lk×¶öh¡Ñê./áÎc�¼;!ãÉ¼ð�— ]z$Á†t>°Ä“Yšü¶GjðïÝŸG‹öòõRÚYŽx©¿�bB›‡SBuuÊDpd³�b{g]QTýØs_ùƒ…ŽŽ3C€,bw^õïP¡Kã(¥•&dDº”»öµìwõ]\ÃYs”%H|ú¼]Žßêß.ežä!òm‹¤4�„’¸„šFc·Î¨A1)±Qnf w=$ª¼WÊrEÎ¦áÛ õ!ýò$sŸqXò<°ÄàI€4…Dj>¤�I‡Ýv³œy‡�¯ ÊI¯²úüNÐ­Æe¥•ý%s‹(†²c©	ña5ÀöÂ¡ï¼fT„³+ç¨ñ5ì~ëj5g¡{Â;¡}m›Û´Å²>¶®$à%·y„Àâe¨Ìï^°¬¯¿nëõRó£ƒ;€|—¹ÈGÑo¹¶g`VJñõn¡„VÑaF^ã–ÏÊgìŸB~Ñ¼Ùä•­G+ÄõdÆIØTØrÓ¾ÕàTt`Jß �Mb€Í†GòbwKî#7}ùõ6ÜúÇ�ïõ"	Äù%ÛôÅçÏ�=súÔÉž»ýi÷“u>ÞëûöÐD÷;•Gº´–aÀOû ÐHtfãç_ÉLåv³_à¼x-sVÔ‹NZi¼ÂÇ–&¥U™õ´½³ñ-ä:Úˆ˜Ñ~)W9vD-�»×‚âg¢Ð9Xçíj^dqèÛO¬ãmøIÜþÑê'{pç@”(ˆ¹DçÃŠ-c�á£L;2ëòCNûR-Ç<)÷è3qÌ<|XKâ?N»ûµÞo–…Šÿmÿ[÷->f¤™›þOäì¿ïÒÇJàO±FüÿßÒd¬½wç¶Y©thãƒÅ°0�zŠ5eVÂJLCyU"ÁœEWEÁÀÐÜãœËô#QUjL [j�Ò,}ØˆI¬8Ö=ûžíok%}Eß>;¶oÙ¼há¬ù³çOHÔgxßá=û4´u¨-‰3®Eó óRg¥Gçá¶µeÛÆÎ‡àÐa?×#šàñPXm‚Á2ô@¦uŽVªEýÒP]î¿NÛ]óØ`û¶%“­õ„­…N²Ø–S ´&bI€5Š¬°q•M­Íæv�Žªß3ÚñTkê|Ý¥C¥ØFÓ|Õ~gÙ[‘Ôÿ1‘í§´ƒº—"hëfÄÍÅfîÓ¾²�¥èó>]+n»@ö÷1?}xòèx$®»ú{';3‹‘™S{y47G�âH—-BA�™†ZÌÂ5|’àE&’*9É¼è�Šžè‘BwE89h‡í:WYÂhßàøpõ|\ž3ghÙ-ò�-©²duÔjû°(

ÃãHz­®êýóŒ»kêºÛ¯ÒŠÝñÀÛÜNÍzUíæ;­’2-=‡ÓqHÇ£pÛœ¥[´#�©¾a<Á>"˜�Ñ	‰ 8)èp�÷šì§öÂ¾J–ÃKŒyµH%õï¤©<ypD›R|LÈ‘ßU·p›z¨…Œ‘cf¤õ‹$ŒöÝ¸›âCG<£’ÈwyeUxê®újã¶Ž¹d6HùUHF6Ã~)”í¨¹…~³S°€�=KÚì�pä»r·ølž%¡O¦î†Ÿ•)TnUÍÊ€ÀY�¡E½Kö­¨(O&éòÄ�4éjíûC·µÔ	\*D ÊÉ‚ZRg—?ÑPeÊ¡9‡ˆÉwJéŒñ’°Y–ÒÅšË±ôóúô*�M˜½~£´�Q}qè0°ÜÕ GÍ95ê2f2…­^!oùø.2Û×ÚÀiÅš°á„”Gà�l&=»"Á÷FäŒ
Œ÷V5òÕ¢ÚÄì"Sxí«�ƒŸ‡°´{h˜E¯kyÎ¾:Ge�åQxÇÔákK¿(
F5ÔÞ"£1ÿ•¿î�©¯‚â&”Rm«–(5æŽ‡„Ë\Ñ	JÌP^b¤Lõ¨u£óš«Á°>_'>¨UÝ6îò.&Ž¤"­TŠrb]Y$z+(s jØ‚�š{	B‹À>•Eàp³£³žçsYëìÔ“™™pbÙø‚J[ RPø°Ó>9 
}U,.Šu´dRÉ$Äƒƒ˜³:JIø› ¤Ž‹\p±FèA	6iÞZF�˜»sY+ÜÝ­kû’úäÐQ”k%4ê–Šq˜ªlØœyÚnÊÂs)éðíÝ;wê˜´,»Ê¾}¶ÎÂ¶)ñðß£›ú$oÓ$“Œ²ç¥»¡¢^eãÌãÿ‡gO¦ë•ád9#¶õ;#�$½$Ó.ýå£sæ¹›£�œ¿þð~ùsôõ…°�óÔ8Xp¥oý@æ! £Ù0N]vOYx÷4À³{J²tMŠðÍ’&äaÑd|­2ŠEÏ§-l)ÂŠ%¶|‰Í\DoY�‰iõ¯œÙ!am^öÙiÄÖ¯q-Áæ»ññýr>Õ»Ír^•ZÅ�°èÌ8}3¹)ÿAäñ
äx¶~ºŸ¿¯GÅäÑ‘ƒ´’…Lf%sºqkf9j6¬¥©£Ò­Ä­ø˜JÛ^0> Å’ƒAZÈ¶$t)âÉ‹bŠÜK¯ ?–Ç‹˜ØÙø÷Sžk_”üïâ©ó§Ï[‚ÓÚ=._Ù_É[Y©ª®e�’Î’ŽŸõå2þ*ò yÖ§žrÔ!Œ"©Ê¶m£¹	9 Y¾Äf,b£ÖuRÉ+pöÊ±^aâ,›A&•ÙPåë8÷Ï¦^-µd3¡)«…öÔ˜í­DÁãªç†TPÅµ(*j>ŸdÌáŽ¬Ó¥Ç]±sÞ?Ÿš…×å&}¼Ñ‡Ž2lfä˜¤JêT@�.Õ¡ÈO�pô
‰â}GfàÈÚU¡ä“cœ²µ_ãrÛÍóq¿mŽÛcý�u: ËéðB¾zíi«Ž°í!"h´A‡Q'‰R5!˜§úNŒ…êJ,˜^–Ö~fyÿm{Ó2	{ZK]ÙYÎ§VÛ»Â¥õ)¿p}ƒù^¨´L"†G‹¸0„†Íf-úa×å¼l`ÔQâ�ó„\0óÃåL7wgž†¯çPùÓ=Ò5]J5vQ”b9z<æ¸¬[1©…
q°½‚ðJ�'iûxÂÙaŽ’Š�‚ê°]…Í©à”Ñ5áÞ°B`½²(¥þè¼B‡ŽY:)BxzäÜKñÖµÔtúó<ÌÇ a¬Ãe('Î˜M‘Bw§Ã—q’ï¾AZ™Á»Ê>ÐâbddBŒB¬ºø"ºx°`æ`–v5³�$l½k˜<¬uÝèC¯b_È·
ï‚0€èùÔŽÆ
…pb/Å}Fe'ÅËîñõ$Y®gÎÖ3äUÔsUJ`†þ‰cÔÊŠpÏåÄ+h©4˜'EîŠ­yiú¤Ý‰²†- LXBi7)¤¥ZûöKwˆ£ˆUx‡ƒ9ÞÚµ¢cÎçgÑˆû"°?s;8vÌõ±fB±7(p(í¥âøìÙfù;2×ZëÓ&�°;`ûe�‡|‰�‡O„[y6ÈÝ��;’ÐÔÃ&eŒD<ûÌ&×±€ï/,Gÿšï~ë©Gßÿö‚wþäqõõëÍu».s_Ú2–óº™É…ôh`¼vAc‡*x>�˜µ‘9,öùØ	ç_B%uì³" °DíÍ×¸½�ëí*�\›¬hvCÿ](è2*f„cån°±[jÃ$�à^´�v¸a&S:8�Ë½‰	í\ƒVÿ¹´0ÀÅšÃ^ Åc±ïp†§.ð$<Òîí*´ýâ¹òÆq<±Bdø&¡T0�¾°T†Ï…–0OÍôº¯Q»`W/Ÿ‚ ì×<uŸˆ÷y,<·^íóW¯v÷æ¸^æ*
,6yË.ºQ g¶¡o½B¦<ÔI‰ò?!‘¿Ô¤	i¦	èkm~¬:¬†IŠ§ºÛ°-];(ˆ,1ŒÁ.¨•_7ô:æã]ÍÑÔ)Âîœð•9Ê˜“y8–kýìT²ö¬þ7N„!ã×KÊ×ï{ÿ¾÷ñcQøžë°÷´·ëq#Äå\ª[�~üIqðÏÃ·p%\ZÔÒXp�ªàlfF÷<S“ –g«©Ðhö+,Ÿ>ê$ÓûÙ¸Œ•f¼°GÀ]ŠÈt; ÏC}R¿òàŸ‘˜¿Æò:gø8 ¢;K&¿bÅV£0B•Ì‘D\ô&ÑÃO`o½Š#<Þ©W�õ#×Ñ2^
{Ö7aŸ±æºók£ùy�"™lç‰ÕâK0mÆ0=Ú®iÇ¹ÙDÑš¶rfaÄJºÕ8%UúéA§P%¾Úþ¯<Di›®8(êhà$´�ÀG÷Gà¬fûÚ½ª<Ù¤›µoW©
¼ž¶)*Äåq�ÜŸN¢Áu[sŽß$‹nÔÖ˜’”™Á �ä4ÒaŸpŽ™f‹ÕDùFÊY!™](ñƒÐGò`iîãy`› Þ­÷»Õ¢,TG¾ëµ,€”w—âú]:a!k§|„­³ºô¹´Œ(ýP^ÂDÀÀHÇÂZÙ?íëQeÝÅÕKçÏœ
‡[/Å§¬‹òaHq@(6¤rŽ²aô—ù¯\Ëô6’] kªˆñSèƒÉ9Èé¥‚ Íq@Ótg-U;6|þlœ€¤K±Á˜YDÚ«}6ÂäùªŠ§²$
ý_TP2KpÈ+ž†ç�l‹~žLk®ˆn(fžtîŽÄOî(ÞÎ…¿LÃ|}9�¾‡‚+C{å	wAïøáÜCàDop/†«]à½áN,ánùÖ‡S¡6×Õs}²W¡ÅÑ7–ÝÙ–�­²‘×äþXŸëí£`ýýq.‘çèl0_*?J…\Ý%Û¡R•—ÙìëÞÖFþ×ðâæ¾\®ù1î_Ù2Ü?·«+¹J}<ìwÛEP;Y$ÒªÊU�ÕWþœÔ
A…‚Í?ßrtý ï/ËÁDÕÍU÷¯Kœ1xéCQ.‹‡±ß²7æýgál¥mï]^TÍ|lÿ_‡»Gw÷/´¸OGý6/¡ÍåòÖxOÏO¸SBssÕ}ÎmÐü
™7ùO/ õø£õ<¶V­Z‡2í[y&·­ýßcýTJ1z_n0Õ—>-ìT£g9æ{œf<öR£=y¨½ãßó‡b‰´FÌÕüÕ§’’Z—–òñ_$Ô/8Îë(:|«_3~¤d•|O]~¸q(g­ÿÏ_¥PUùR™j9z´—¶XQ bo�ºêµ‘¿G—|¹^³Ý�Z¾õS�€N !PKð¯q¬†ôMí‡|&‹¤>ëþ‚èp|Qÿ/�µ–J–\ô}zpF]†.!Ü'\J’PLýé:�üo�^«a´‘4½¦�HdQ±B‹Ú>AÞúßLS;—hóÿvñë0t�¥šOH:-ÐõÿßÐ«tÂ.û®W—¡¯{MªÈ‘ø´ò	Þà»7¦V™ÇQ�¨ü0	š�Åé‚¡eÒR
ÑT¹âÿçÊq\BËRA}•®fX–)g&©Àp'Šó˜RÞ)£²$�¯ó=®î’¢!E�–4!ÚÇLwý1’Mu’‡tv¡“Lâl…4EXŠi¢Âˆ™pY’$@TtlÊìÇ¡’\ûóuÝâ¸Þä¿)E…¢VÎ¤…óO^	ì©ÃU§ó)�Î±ñ³./Am©®rf	‹YKq}Ä©Â”ë«“õ*+ç‡Še©^?ŒÊ?BT„vö{™ÅDË¾¹9”P%Áª®Z=ËÂ¬©fc²‹J˜NQ:‘iŒf
‰�fn±6�Èfs,qcÓl|–M9ãµ;hS½Z"Çâ³è;Ç“ÌM°Ñ·‘ÕzÚ@Ìfk`üÖ—P—ZÔ¡À�´iH-<<Níølæ‰x=æX-¡ 6K¡ó+¡£ª‰f�Ù$ÆÆ¦´Zas†x3jÛÕJ[TÑ~lþ›ùB,!)%-#+'¯ ¨¤¬B(ã–-×óƒ0Š“4“JçEYÍÊÏË•(ÉŠªé†iÙëÍv·G‘D¦Pit“Åæpy|�P$–Her…R¥ÖhuzƒÑd¶Xmv‡Óåöx}|ýüƒi]èß½³þäŽŽ<ìY\×¹­w�Ûj?Wè®à×u}¾@ž—3«[³ ¸9 uÌ�QcPÈë¼Æl©«Þ…´skè!ïî(�î*Žƒ=À¥GÈõPØSþd5¿ñ/‚’@ø9@±ëÜþºB±khO�\½Î-¹ëÉFØ’®nÑÿ(ìÚg£«ýtc'[ò¡Üvéul‡½+õ’mÊƒ­{. ÛÉû
ðÿš¶lq_‘çBp“ç>¬�ÈÅ ì¹LÏñz¾”ä ;'ž#p¼ÎAüUi@”¢Þ‹e’eù
Ÿ-Ÿæ^‡5 ó/ÓÑ¯ôGé’sƒ¤#"B±\Žù;/Ÿ‹Ä	×¾ù¨É…¨?ÀÖÏ	¤ƒ§Øûç©Š—
t(m!ñCQC.F¡¤¯–&•	ä¡Šcª[É“3'jB	ìÞé\0”ÒPˆˆÈœ4°=¡[8ž
 —I]ŠÚæ%Í%(yØè×Ã2¦!°?‡žF²ÝßæKg°^ž•ê)Œ‘›8é>#X„£}N‹ Dj²­mÕÙòãånqZÎ€ƒy9äMF^£Ý2²§ãÜ8;Y‚ôÈÏ]"úš.°âš|é“£ vUƒr0‡sPàÞTÒ¾&æ§uw¡¸”Q‡.ªyá~md‘”Ži1�–eˆ_¿¤îí:=Â¹òàÝ¹èö€×áßM‘mñQ˜žq¤Î¢ÚlÙm[Iw„hûH½@HiQðbÞ$íoVÀ}ßˆmÜ¢qB¥¢G¡ˆy:cû¾›ÅÍä·]%nµèÿ7[o*Ú5                                                                                                                                                        includes/File_manager/lib/themes/dark-slim/img/elfinder.svg                                         0000644                 00000130256 15266052702 0017742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
<defs>
<font id="elfinder" horiz-adv-x="1000" >
<font-face font-family="elfinder" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M786 296v-267q0-15-11-25t-25-11h-214v214h-143v-214h-214q-15 0-25 11t-11 25v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-3-7 1-12 6l-35 41q-4 6-3 13t6 12l401 334q18 15 42 15t43-15l136-113v108q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q6-4 6-12t-4-13z" horiz-adv-x="928.6" />
<glyph glyph-name="cut" unicode="&#xe801;" d="M536 350q14 0 25-11t10-25-10-25-25-10-25 10-11 25 11 25 25 11z m167-36l283-222q16-11 14-31-3-20-19-28l-72-36q-7-4-16-4-10 0-17 4l-385 216-62-36q-4-3-7-3 8-28 6-54-4-43-31-83t-74-69q-74-47-154-47-76 0-124 44-51 47-44 116 4 42 31 82t73 69q74 47 155 47 46 0 84-18 5 8 13 13l68 40-68 41q-8 5-13 12-38-17-84-17-81 0-155 47-46 30-73 69t-31 82q-3 33 8 63t36 52q47 44 124 44 80 0 154-47 46-29 74-68t31-83q2-27-6-54 3-1 7-3l62-37 385 216q7 5 17 5 9 0 16-4l72-36q16-9 19-28 2-20-14-32z m-380 145q26 24 12 61t-59 65q-52 33-107 33-42 0-63-20-26-24-12-60t59-66q51-33 107-33 41 0 63 20z m-47-415q45 28 59 65t-12 60q-22 20-63 20-56 0-107-33-45-28-59-65t12-60q21-20 63-20 55 0 107 33z m99 342l54-33v7q0 20 18 31l8 4-44 26-15-14q-1-2-5-6t-7-7q-1-1-2-2t-2-1z m125-125l54-18 410 321-71 36-429-240v-64l-89-53 5-5q1-1 4-3 2-2 6-7t6-6l15-15z m393-232l71 35-290 228-99-77q-1-2-7-4z" horiz-adv-x="1000" />
<glyph glyph-name="fullscreen" unicode="&#xe802;" d="M784 111l127 128 0-336-335 0 128 130-128 127 79 79z m-431 686l-129-127 128-127-80-80-126 128-128-129 0 335 335 0z m0-637l-129-127 129-130-335 0 0 336 128-128 128 128z m558 637l0-335-127 129-128-128-79 80 127 127-128 127 335 0z" horiz-adv-x="928" />
<glyph glyph-name="resizable" unicode="&#xe803;" d="M917-67h-167v167h167v-167m0 334h-167v166h167v-166m-334-334h-166v167h166v-167m0 334h-166v166h166v-166m-333-334h-167v167h167v-167m667 667h-167v167h167v-167z" horiz-adv-x="1000" />
<glyph glyph-name="accept" unicode="&#xe804;" d="M250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z" horiz-adv-x="857.1" />
<glyph glyph-name="reload" unicode="&#xe805;" d="M186 140l116 116 0-292-276 16 88 86q-116 122-114 290t120 288q100 100 240 116l4-102q-100-16-172-88-88-88-90-213t84-217z m332 598l276-16-88-86q116-122 114-290t-120-288q-96-98-240-118l-2 104q98 16 170 88 88 88 90 213t-84 217l-114-116z" horiz-adv-x="820" />
<glyph glyph-name="unfullscreen" unicode="&#xe806;" d="M704 33l-128-130 0 336 335 0-127-128 127-129-79-79z m-686 429l128 129-127 126 79 79 126-126 129 127 0-335-335 0z m0-480l128 129-128 128 335 0 0-336-129 130-127-130z m558 480l0 335 128-127 128 126 78-79-126-126 127-129-335 0z" horiz-adv-x="928" />
<glyph glyph-name="copy" unicode="&#xe807;" d="M848 850h-655c-19 0-34-15-34-33v-116h-124c-19 0-34-15-34-33v-785c0-18 15-33 34-33h655c18 0 33 15 33 33v116h125c19 0 34 15 34 33v785c0 18-15 33-34 33z m-788-941v734h452v-121c0-18 14-32 32-32h121v-462 0 0-119z m510 692l53-52h-53z m253-544h-100v461c0 8-3 17-9 23l-151 150c-7 7-15 10-24 10h-321v90h605v-734z m0 0" horiz-adv-x="1000" />
<glyph glyph-name="upload" unicode="&#xe808;" d="M968 198q18-10 27-32t3-40l-28-154q-4-20-22-33t-40-13l-816 0q-22 0-40 13t-22 33l-28 154q-10 48 32 72l158 108 98 0-170-130 178 0q8 0 12-8l40-110 300 0 40 110q8 8 12 8l178 0-170 130 98 0z m-208 322l-260-244-260 244 166 0 0 256 190 0 0-256 164 0z" horiz-adv-x="1000" />
<glyph glyph-name="download" unicode="&#xe809;" d="M500 776l260-244-164 0 0-256-190 0 0 256-166 0z m468-578q18-10 27-32t3-40l-28-154q-4-20-22-33t-40-13l-816 0q-22 0-40 13t-22 33l-28 154q-10 48 32 72l158 108 98 0-170-130 178 0q8 0 12-8l40-110 300 0 40 110q8 8 12 8l178 0-170 130 98 0z" horiz-adv-x="1000" />
<glyph glyph-name="trash" unicode="&#xe80a;" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
<glyph glyph-name="help" unicode="&#xe80b;" d="M0 350q0 95 37 182t100 149 149 100 183 37q95 0 182-37t149-100 100-149 37-182q0-95-37-182t-100-150-149-100-182-37q-96 0-183 37t-149 100-100 150-37 182z m117 0q0-71 28-137t75-112 112-75 137-28 136 28 112 75 75 112 28 137q0 95-47 176t-128 128-176 47-177-47-128-128-47-176z m216 176l31-101q45 29 93 29 49 0 49-23 0-4-2-8t-3-5-6-5-7-5-8-4l-8-4-40-21q-22-12-28-25t-6-37v-37h117v16q0 7 0 10t3 6 6 5q1 1 11 5t17 8 19 11 18 13q19 17 29 37t11 55q0 49-42 83t-106 34q-83 0-148-37z m48-334q0-32 21-49t55-17q33 0 54 17t20 49-20 49-54 18q-35 0-55-18t-21-49z" horiz-adv-x="937.5" />
<glyph glyph-name="hide" unicode="&#xe80c;" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="helper-down" unicode="&#xe80d;" d="M911 350q0-184-131-315t-315-132-316 132-131 315 131 316 316 131 315-131 131-316z m-670-1l223-222 222 222-165 0 0 225-112 0 0-225-168 0z" horiz-adv-x="928" />
<glyph glyph-name="helper-up" unicode="&#xe80e;" d="M18 350q0 185 130 316t316 131q185 0 316-131t131-316-131-315-315-132-316 132-131 315z m670 2l-224 222-222-222 167 0 0-225 112 0 0 225 167 0z" horiz-adv-x="928" />
<glyph glyph-name="check" unicode="&#xe80f;" d="M375 176l441 442 59-59-500-500-232 232 58 59z" horiz-adv-x="1000" />
<glyph glyph-name="helper-ok" unicode="&#xe810;" d="M465 797q184 0 315-131t131-316-131-315-315-132-316 132-131 315 131 316 316 131z m-70-653l348 348-79 79-269-268-126 126-79-78z" horiz-adv-x="928" />
<glyph glyph-name="target" unicode="&#xe811;" d="M521 407l0 162q60-16 103-60t59-102l-162 0z m0-113l162 0q-16-59-59-103t-103-59l0 162z m-113 113l-162 0q16 59 59 102t103 60l0-162z m0-113l0-162q-60 16-103 59t-59 103l162 0z m113 390l0 113q152-19 261-128t129-262l-113 0q-18 107-95 183t-182 94z m-390-277l-113 0q19 152 128 261t262 129l0-113q-106-18-182-94t-95-183z m277-390l0-114q-154 19-262 129t-128 262l113 0q18-107 95-183t182-94z m390 277l113 0q-21-153-129-262t-261-129l0 114q105 18 182 94t95 183z" horiz-adv-x="928" />
<glyph glyph-name="quicklook" unicode="&#xe812;" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="undo" unicode="&#xe813;" d="M938-1q0-22-15-37t-38-15q-26 0-42 24-60 93-139 133t-183 48l0-75q0-42-31-73-30-30-74-30t-72 30l-329 322q-15 15-15 38t15 37l328 323q28 28 73 29t74-29q31-32 31-74l0-89q182-36 299-180t118-330l0-52z m-468 260q224-5 353-110-30 126-129 213t-231 103l-47 2 0 183-290-286 290-287 0 183q39-1 54-1z" horiz-adv-x="938" />
<glyph glyph-name="redo" unicode="&#xe814;" d="M53-53q-23 0-38 16t-15 36l0 52q0 186 118 330t298 180l0 89q0 42 32 74 30 30 74 29t73-29l328-323q15-15 15-37t-15-38l-329-322q-29-29-73-30t-73 30q-32 31-32 73l0 75q-105-7-183-48t-138-133q-16-24-42-24z m416 312l52 1 0-183 290 287-290 286 0-183q-20 0-46-2-132-15-231-103t-129-213q129 105 354 110z" horiz-adv-x="938" />
<glyph glyph-name="view" unicode="&#xe815;" d="M160 660l0-161-160 0 0 161 160 0z m231 0l0-161-161 0 0 161 161 0z m-231-230l0-162-160 0 0 162 160 0z m231 0l0-162-161 0 0 162 161 0z m-231-230l0-160-160 0 0 160 160 0z m231 0l0-160-161 0 0 160 161 0z m229 460l0-161-161 0 0 161 161 0z m229 0l0-161-160 0 0 161 160 0z m-229-229l0-162-161 0 0 162 161 0z m0-231l0-160-161 0 0 160 161 0z m229 231l0-162-160 0 0 162 160 0z m0-228l0-163-160 0 0 163 160 0z" horiz-adv-x="849" />
<glyph glyph-name="view-list" unicode="&#xe816;" d="M160 660l0-161-160 0 0 161 160 0z m0-230l0-162-160 0 0 162 160 0z m0-230l0-160-160 0 0 160 160 0z m641 406l0-81-533 0 0 81 533 0z m0-230l0-81-533 0 0 81 533 0z m0-217l0-81-533 0 0 81 533 0z" horiz-adv-x="801" />
<glyph glyph-name="helper-minus" unicode="&#xe817;" d="M465 797q184 0 315-131t131-316-131-315-315-132-316 132-131 315 131 316 316 131z m223-502l0 112-447 0 0-112 447 0z" horiz-adv-x="928" />
<glyph glyph-name="netunmount" unicode="&#xe818;" d="M654 349l346-346-154-154-346 346-346-346-154 154 346 346-346 346 154 154 346-346 346 346 154-154z" horiz-adv-x="1000" />
<glyph glyph-name="menu" unicode="&#xe819;" d="M0-76l926 926 74-74-926-926z m0 410l0 235 234 0 0-235-234 0z m0 280l0 234 234 0 0-234-234 0z m275-280l0 235 235 0z m0 280l0 234 235 0 0-234-235 0z m237-762l0 131 488 0 0-131-488 0z m0 168l0 131 488 0 0-131-488 0z m31 168l145 131 312 0 0-131-457 0z" horiz-adv-x="1000" />
<glyph glyph-name="search" unicode="&#xe81a;" d="M680 256c-55-55-126-83-197-83-65 0-129 23-182 66l-51-125-130-130c-14-10-29-15-45-15-41 0-75 37-75 77 0 16 5 32 15 45l129 130 126 51c-44 52-66 117-66 182 0 152 127 277 279 277 150 0 277-128 277-278 0-72-26-144-80-197z m-319 75c34-33 78-50 122-50 92 0 170 77 170 172 0 93-79 170-170 170-94 0-172-79-172-170 0-45 17-89 50-122z" horiz-adv-x="760" />
<glyph glyph-name="window-close" unicode="&#xe81b;" d="M589 350l405 404c8 9 8 23 0 32l-58 58c-4 4-10 6-16 6-6 0-12-2-16-6l-404-405-404 405c-9 8-23 8-32 0l-57-58c-9-9-9-23 0-32l404-404-404-404c-9-9-9-23 0-32l57-58c4-4 10-6 16-6s12 2 16 6l404 405 404-405c4-4 10-6 16-6s12 2 16 6l58 58c8 9 8 23 0 32l-405 404z" horiz-adv-x="1000" />
<glyph glyph-name="edit" unicode="&#xe81c;" d="M60-138q-6-20-26-8-18 8-16 34 4 100 50 226-100 154-52 316 10-32 32-78t44-80 32-30q8 4 0 83t-11 166 25 157q22 44 80 94t104 70q-24-46-33-94t-4-78 21-32q12 0 84 120t106 122q46 4 114-29t82-65q12-24 0-79t-40-83q-44-44-146-62t-114-24q-16-10 12-34 54-48 176-20-56-80-136-114t-132-38-54-10q-4-24 49-54t101-14q-30-56-63-84t-54-35-76-11-85-8z" horiz-adv-x="698" />
<glyph glyph-name="places" unicode="&#xe81d;" d="M635 290l170 166-235 34-106 213-105-213-236-34 171-166-41-235 211 111 211-111z m294 199q0-12-15-27l-202-197 48-279q0-4 0-12 0-28-23-28-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="window-minimize" unicode="&#xe81e;" d="M1202 26l-1075 0c-15 0-27-10-27-23l0-78c0-13 12-24 27-24l1075 0c15 0 27 11 27 24l0 78c0 13-12 23-27 23z" horiz-adv-x="1333" />
<glyph glyph-name="restore" unicode="&#xe81f;" d="M804 694q107-107 107-262 0-150-107-257l-84-84-79 80 84 84q74 74 74 177 0 108-74 183-72 72-180 72t-180-72l-153-155 141 0 0-109-335 0 0 334 112 0 0-147 156 156q103 103 259 103t259-103z m-271-791l-79 79 79 81 79-81z" horiz-adv-x="928" />
<glyph glyph-name="navbar-folder" unicode="&#xe820;" d="M929 511v-393q0-51-37-88t-88-37h-679q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h375q51 0 88-37t37-88z" horiz-adv-x="928.6" />
<glyph glyph-name="navbar-root-places" unicode="&#xe821;" d="M929 489q0-12-15-27l-202-197 48-279q0-4 0-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="duplicate" unicode="&#xe822;" d="M295 850v-117h-117v-117h-117v-766h644v119h117v117h118v764h-645z m352-941h-528v648h352v-176h176v-472z m0 531h-118v117h18l100-100v-17z m117-412h-59v453l-134 135h-335v58h528v-646z m117 117h-59v588h-468v58h527v-646z" horiz-adv-x="1000" />
<glyph glyph-name="selectnone" unicode="&#xe823;" d="M347 850h-308c-21 0-39-18-39-39v-307c0-21 18-39 39-39 22 0 40 18 40 39v268h268c22 0 39 17 39 39 0 21-17 39-39 39z m-1-920h-267v267c0 22-18 39-40 39-21 0-39-17-39-39v-306c0-22 18-40 39-40h307c21 0 39 18 39 40s-18 39-39 39z m613 306c-21 0-39-17-39-39v-269h-267c-21 0-39-17-39-39s18-39 39-39h306c22 0 40 18 40 39v308c0 22-18 39-40 39z m2 614h-308c-21 0-39-18-39-39 0-22 18-39 39-39h269v-269c0-21 17-39 39-39 21 0 39 18 39 39v308c0 21-18 39-39 39z" horiz-adv-x="1000" />
<glyph glyph-name="opennew" unicode="&#xe824;" d="M1091 850v-636h-273v-364h-818v636h273v364h818z m-273-545h182v363h-636v-182h454v-181z m-727-364h636v364h-636v-364z" horiz-adv-x="1091" />
<glyph glyph-name="extract" unicode="&#xe825;" d="M188 756l0-31 0-750 0-31 31 0 562 0 32 0 0 31 0 750 0 31-32 0-562 0-31 0z m93-62l438 0 12-34c7 3 13 3 19 3l0-657-500 0 0 657c0 0 12 0 19-3l12 34z m69-13l-37-50c12-9 24-21 37-34l47 40c-16 16-32 32-47 44z m300-3c-15-12-31-28-46-44l46-40c13 16 25 28 38 37l-38 47z m-212-91l-53-37c12-12 22-28 31-47l56 32c-13 18-22 37-34 52z m125 0c-13-15-25-34-35-52l56-32c9 19 19 35 28 50l-49 34z m-63-109l-60-24c7-19 13-35 19-54l41 13 44-13c3 19 9 35 16 54l-60 24z m-31-128l0-68c-36-13-63-48-63-88 0-52 43-94 94-94 51 0 94 42 94 94 0 40-27 75-63 88l0 68-62 0z m31-125c18 0 31-14 31-31 0-18-13-31-31-31-18 0-31 13-31 31 0 17 13 31 31 31z" horiz-adv-x="1000" />
<glyph glyph-name="navbar-root-googledrive" unicode="&#xe826;" d="M659 228h310c3 0 6 1 7 4 2 2 2 6 0 8l-314 547c-2 2-4 4-7 4h-310c-3 0-5-2-7-4-1-3-1-6 0-8l314-547c2-3 5-4 7-4z m-188 217l-160 273c-1 3-4 5-7 5 0 0 0 0 0 0-3 0-6-2-7-5l-296-523c-1-3-1-6 0-8l155-274c1-2 4-4 7-4 0 0 0 0 0 0 3 0 6 2 7 4l301 524c1 3 1 6 0 8z m521-246h-597c-3 0-5-2-7-4l-155-274c-1-2-1-5 0-8 2-2 4-4 7-4h597c3 0 6 2 7 4l155 274c1 2 1 5 0 8-2 2-4 4-7 4z" horiz-adv-x="1000" />
<glyph glyph-name="archive" unicode="&#xe827;" d="M188 756l0-31 0-750 0-31 31 0 337 0c46-57 115-94 194-94 138 0 250 112 250 250 0 116-80 213-187 241l0 384 0 31-32 0-562 0-31 0z m62-62l500 0 0-344c-61 0-118-23-161-60 3 10 5 19 5 29 0 40-27 75-63 88l0 68-62 0 0-68c-36-13-63-48-63-88 0-52 43-94 94-94 14 0 28 4 40 10-25-39-40-85-40-135 0-33 7-65 19-94l-269 0 0 688z m219-31l0-63 62 0 0 63-62 0z m0-94l0-63 62 0 0 63-62 0z m31-219c18 0 31-14 31-31 0-18-13-31-31-31-18 0-31 13-31 31 0 17 13 31 31 31z m250-62c104 0 188-84 188-188 0-104-84-188-188-188-104 0-187 84-187 188 0 104 83 188 187 188z m-31-63l0-94-94 0 0-62 94 0 0-94 62 0 0 94 94 0 0 62-94 0 0 94-62 0z" horiz-adv-x="1000" />
<glyph glyph-name="mkdirin" unicode="&#xe828;" d="M908 724h-390c-1 2-3 3-5 5l-106 103c-12 11-28 17-44 17h-269c-52 0-94-42-94-94v-563c0-52 42-94 94-94h282c17 0 31 14 31 31s-14 31-31 31h-282c-17 0-31 14-31 32v563c0 17 14 31 31 31h269l105-100c12-16 30-25 50-25h390c17 0 31-14 31-31v-438c0-18-14-32-31-32h-282c-17 0-31-14-31-31s14-31 31-31h282c52 0 94 42 94 94v438c0 52-42 94-94 94z m0 0m-296-500c12-12 32-12 44 0 12 12 13 31 1 44 0 0-1 0-1 1l-133 133c-12 12-32 12-44 0l-133-133c-12-12-13-32-1-45 12-12 32-12 45 0 0 0 0 0 0 0l80 80v-394c0-18 14-32 31-32s31 14 31 32v394z m0 0" horiz-adv-x="1000" />
<glyph glyph-name="empty" unicode="&#xe829;" d="M613 34l-80-79v394c0 17-14 31-31 31s-31-14-31-31v-394l-80 79c-12 13-32 13-44 1-12-12-13-32-1-44 1 0 1-1 1-1l133-133c3-3 6-5 10-7 8-3 16-3 24 0 4 2 7 4 10 7l133 133c12 12 13 32 1 44-12 13-32 13-45 1 0 0 0 0 0-1z m0 0m296 691h-390c-1 2-3 3-5 5l-106 103c-12 11-28 17-44 17h-269c-52 0-94-42-94-94v-563c0-52 42-94 94-94h282c17 0 31 14 31 31s-14 31-31 31h-282c-17 0-31 14-31 32v563c0 17 14 31 31 31h269l105-100c12-16 30-25 50-25h390c17 0 31-14 31-31v-438c0-18-14-32-31-32h-282c-17 0-31-14-31-31s14-31 31-31h282c52 0 94 42 94 94v438c0 52-42 94-94 94z m0 0" horiz-adv-x="1000" />
<glyph glyph-name="file-html" unicode="&#xe82a;" d="M693 527l0-97c22 3 44 9 65 18-16 33-38 59-65 79z m0 0m0-396c27 19 49 46 65 79-21 9-43 15-65 18l0-97z m0 0m-132 219l89 0 0 38c-27 2-54 9-79 20-5-18-8-38-10-58z m0 0m252 134c-15 13-31 25-49 33 12-14 22-31 30-48 6 5 13 10 19 15z m0 0m-228-37c21-8 43-15 65-17l0 97c-27-20-49-47-65-80z m0 0m179-306c18 8 34 20 48 33-5 5-12 10-18 15-8-18-19-34-30-48z m0 0m-193 109c25 11 52 17 79 20l0 38-89 0c2-20 5-40 10-58z m0 0m239 179c8-25 12-51 14-79l56 0c-4 38-18 73-39 103-10-9-20-17-31-24z m0 0m0-200c11-7 21-15 31-24 21 30 36 65 39 103l-56 0c-2-28-7-54-14-79z m0 0m-23 447l0 172-404 0c-52 0-96-44-96-96l0-804c0-52 44-96 96-96l577 0c52 0 96 44 96 96l0 618-158 0c-61 0-111 49-111 110z m-116-599c-139 0-251 113-251 252 0 139 112 252 251 252 139 0 252-113 252-252 0-139-113-252-252-252z m-21 54l0 97c-22-2-44-9-65-17 16-33 38-61 65-80z m0 0m122 277c-25-11-52-17-79-20l0-38 89 0c-2 21-5 40-10 58z m0 0m-193 109c-18-9-34-20-49-33 6-6 12-11 19-15 8 17 18 34 30 48z m0 0m319 91l129 0-198 207 0-139c0-38 31-68 69-68z m0 0m-116-300l-89 0 0-38c27-3 54-9 79-20 5 18 8 37 10 58z m0 0m-252-134c15-13 31-24 49-33-12 14-22 31-30 49-7-5-13-10-19-16z m0 0m3 254c-11 7-22 16-31 24-22-29-36-64-39-102l56 0c2 28 6 54 14 78z m0 0m-14-120l-56 0c3-38 17-73 39-102 9 9 20 17 31 24-8 24-12 50-14 78z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="helper-pin" unicode="&#xe82b;" d="M573 37q0-23-15-38t-37-15q-21 0-37 16l-169 169-315-236 236 315-168 169q-24 23-12 56 14 32 48 32 157 0 270 57 90 45 151 171 9 24 36 32t50-13l208-209q21-23 14-50t-32-36q-127-63-172-152-56-110-56-268z" horiz-adv-x="834" />
<glyph glyph-name="quicklook-next" unicode="&#xe82c;" d="M13-20l358 370-358 372q-26 26 0 48 26 26 48 0l392-394q24-26 0-50l-392-394q-22-26-48 0-26 22 0 48z" horiz-adv-x="465" />
<glyph glyph-name="resize" unicode="&#xe82d;" d="M608 407l-225 382q47 8 81 8 177 0 304-120z m-33-168l233 395q103-125 103-283 0-53-16-112l-320 0z m-96 280l-427 0q37 91 109 158t167 97z m-24-335l423 0q-37-90-108-157t-165-99z m-99 278l-234-396q-104 126-104 285 0 52 16 111l322 0z m-33-165l227-385q-48-9-86-9-172 0-302 121z" horiz-adv-x="928" />
<glyph glyph-name="navbar-open-folder" unicode="&#xe82e;" d="M1049 319q0-17-18-37l-187-221q-24-28-67-48t-81-20h-607q-19 0-33 7t-15 24q0 17 17 37l188 221q24 28 67 48t80 20h607q19 0 34-7t15-24z m-192 192v-90h-464q-53 0-110-26t-92-67l-188-221-2-3q0 2-1 7t0 7v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q52 0 88-37t37-88z" horiz-adv-x="1071.4" />
<glyph glyph-name="navbar-root-local" unicode="&#xe82f;" d="M884 304q26-44 14-96l-34-184q-2-20-19-35t-39-15l-712 0q-20 0-38 15t-20 35l-34 184q-8 52 14 96l158 374q22 46 72 46l408 0q50 0 74-46z m-68-132q2 22-10 38t-34 16l-644 0q-22 0-34-16t-10-38l14-74q2-22 19-37t39-15l590 0q22 0 39 15t19 37z" horiz-adv-x="902" />
<glyph glyph-name="navbar-root-network" unicode="&#xe830;" d="M1071 207q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 74 40 135t104 91q-1 16-1 24 0 118 84 202t202 84q88 0 159-49t105-129q39 35 93 35 59 0 101-42t42-101q0-42-23-77 72-17 119-75t46-134z" horiz-adv-x="1071.4" />
<glyph glyph-name="spinner" unicode="&#xe831;" d="M46 144l0 0c0 0-1 0-1 0-8 18-15 37-21 55-6 19-11 38-15 58-19 99-8 203 35 298 3 6 10 8 15 5 1 0 2 0 2-1l0 0 80-59c5-3 6-9 4-14-5-12-9-25-12-37-4-13-7-26-9-40-11-67-3-137 23-201 2-5 0-10-4-13l0 0-80-56c-5-4-12-2-16 3-1 0-1 1-1 2l0 0z m120 574l0 0c0 1 0 1 0 1 15 13 30 25 46 37 16 11 33 22 51 31 89 50 192 72 297 60 6-1 10-6 10-13 0-1-1-1-1-2l0 0-31-94c-2-5-8-8-13-7-13 0-27 0-40 0-14-1-27-2-40-4-68-11-133-40-186-84-4-3-10-3-14 0l0 0-79 58c-5 3-6 11-2 16 0 0 1 1 2 1l0 0z m588 65l0 0c0 0 1 0 1 0 17-10 34-21 50-32 16-12 31-25 46-38 74-69 127-160 148-262 2-6-2-12-9-13-1 0-1 0-2 0l0 0-100 1c-5 0-10 4-11 9-3 13-8 26-12 38-5 12-10 25-17 36-31 61-78 113-137 150-5 3-6 8-5 13l0 0 31 92c2 6 9 9 15 7 1 0 2-1 2-1l0 0z m244-535l0 0c0 0 0 0 0 0-4-20-9-39-15-57-7-19-14-37-22-55-44-92-114-170-205-221-6-3-13-1-16 4 0 1-1 2-1 2l0 0-30 94c-2 6 1 12 6 14 11 7 22 15 32 23 11 9 21 18 30 27 49 48 84 109 101 176 2 5 6 8 11 8l0 0 98-1c6 0 11-5 11-11 0-1 0-2 0-3l0 0z m-438-395l0 0c0 0 0 0 0 0-20-2-40-3-60-3-20 0-40 1-59 4-102 12-198 54-276 125-5 4-5 11 0 16 0 0 1 1 1 1l0 0 81 58c5 3 12 2 16-2 10-8 20-16 32-23 11-7 22-14 34-20 62-31 131-45 200-41 6 0 10-3 12-8l0 0 29-92c2-6-1-12-7-14-1-1-2-1-3-1l0 0z" horiz-adv-x="1000" />
<glyph glyph-name="navbar-root-dropbox" unicode="&#xe832;" d="M0 311l214 163-214 162 311 203 203-174 208 174 302-193-198-165 198-170-307-185-203 156-203-156z m213-251l0 57 94-55 203 155 1-1 0-355z m5 416l294-185 296 196-294 169z m293-615l1 355 2 1 202-155 100 60 0-63z" horiz-adv-x="1024" />
<glyph glyph-name="navbar-root-onedrive" unicode="&#xe833;" d="M542 683c-14 0-28-1-42-4-48-8-92-32-126-68-13 3-26 4-39 4-100 0-184-75-197-172-78-13-138-81-138-163 0-88 69-160 156-165-4 16-6 32-6 49 0 46 17 92 46 129 20 24 44 43 72 56 18 118 113 210 232 223 10 1 19 2 29 2 61 0 119-21 166-59 4 0 8 0 12 0 21 0 41-3 61-8-25 101-117 176-226 176z m339-376c-13 85-86 149-174 149-11 0-21 0-32-2-38 39-91 61-146 61-10 0-20-1-29-2-99-14-176-100-176-203 0-1 0-2 0-3-66-15-115-74-115-143 0-81 66-147 147-147h498c80 0 146 66 146 147 0 71-51 131-119 143z" horiz-adv-x="1000" />
<glyph glyph-name="navbar-root-box" unicode="&#xe834;" d="M509 453c-74 0-137-45-165-108-27 63-91 108-164 108-35 0-67-10-94-27v148c0 24-19 43-43 43s-43-19-43-43v-301c0-99 81-179 180-179 73 0 137 44 164 108 28-64 91-108 165-108 99 0 179 80 179 179 0 99-80 180-179 180z m-329-274c-52 0-94 42-94 94 0 52 42 94 94 94s93-42 93-94c0-52-42-94-93-94z m329 0c-52 0-94 42-94 94 0 52 42 94 94 94s94-42 94-94c0-52-42-94-94-94z m375 96l105 120c16 18 14 45-4 61s-45 14-60-4l-98-112-97 112c-16 18-43 19-61 4-18-16-20-43-4-61l105-120-105-120c-16-18-14-45 4-61 8-7 18-11 28-11 12 0 24 5 33 15l97 112 98-112c8-10 20-15 32-15 10 0 20 4 28 11 18 16 20 43 4 61l-105 120z" horiz-adv-x="1000" />
<glyph glyph-name="helper-symlink" unicode="&#xe835;" d="M416 650q0 21 16 36t37 16 36-15l329-324-329-323q-15-15-36-15t-37 15-16 37l0 130q-132-4-234-46t-182-163l0 53q0 180 119 313t297 153l0 133z" horiz-adv-x="834" />
<glyph glyph-name="arrow-down" unicode="&#xe836;" d="M571 457q0-14-10-25l-250-250q-11-11-25-11t-25 11l-250 250q-11 11-11 25t11 25 25 11h500q14 0 25-11t10-25z" horiz-adv-x="571.4" />
<glyph glyph-name="arrow-up" unicode="&#xe837;" d="M571 171q0-14-10-25t-25-10h-500q-15 0-25 10t-11 25 11 26l250 250q10 10 25 10t25-10l250-250q10-11 10-26z" horiz-adv-x="571.4" />
<glyph glyph-name="arrow-left" unicode="&#xe838;" d="M357 600v-500q0-14-10-25t-26-11-25 11l-250 250q-10 11-10 25t10 25l250 250q11 11 25 11t26-11 10-25z" horiz-adv-x="357.1" />
<glyph glyph-name="arrow-right" unicode="&#xe839;" d="M321 350q0-14-10-25l-250-250q-11-11-25-11t-25 11-11 25v500q0 15 11 25t25 11 25-11l250-250q10-10 10-25z" horiz-adv-x="357.1" />
<glyph glyph-name="dialog-info" unicode="&#xe83a;" d="M454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m52-152q-42 0-65-24t-23-50q-2-28 15-44t49-16q38 0 61 22t23 54q0 58-60 58z m-120-594q30 0 84 26t106 78l-18 24q-48-36-72-36-14 0-4 38l42 160q26 96-22 96-30 0-89-29t-115-75l16-26q52 34 74 34 12 0 0-34l-36-152q-26-104 34-104z" horiz-adv-x="920" />
<glyph glyph-name="dialog-confirm" unicode="&#xe83b;" d="M454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m-2-740q30 0 49 19t19 47q2 30-17 49t-49 19l-2 0q-28 0-47-18t-21-46q0-30 19-49t47-21l2 0z m166 328q26 34 26 78 0 78-54 116-52 38-134 38-64 0-104-26-68-42-72-146l0-4 110 0 0 4q0 26 16 54 16 24 54 24 40 0 52-20 16-20 16-44 0-18-16-40-8-12-20-20l-6-4q-6-4-16-11t-20-15-21-17-17-17q-14-20-18-78l0-8 108 0 0 4q0 12 4 28 6 20 28 36l28 18q46 34 56 50z" horiz-adv-x="920" />
<glyph glyph-name="dialog-attention" unicode="&#xe83c;" d="M957-24q10-16 0-34-10-16-30-16l-892 0q-18 0-28 16-13 18-2 34l446 782q8 18 30 18t30-18z m-420 50l0 100-110 0 0-100 110 0z m0 174l0 300-110 0 0-300 110 0z" horiz-adv-x="962" />
<glyph glyph-name="dialog-upload" unicode="&#xe83d;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
<glyph glyph-name="dialog-download" unicode="&#xe83e;" d="M714 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m143 0q0 14-10 25t-26 10-25-10-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-38t-38-16h-821q-23 0-38 16t-16 38v179q0 22 16 38t38 15h238q12-31 39-51t62-20h143q34 0 61 20t40 51h238q22 0 38-15t16-38z m-182 361q-9-22-33-22h-143v-250q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v250h-143q-23 0-33 22-9 22 8 39l250 250q10 10 25 10t25-10l250-250q18-17 8-39z" horiz-adv-x="928.6" />
<glyph glyph-name="dialog-edit" unicode="&#xe83f;" d="M718 680q32-32 47-64t15-48l0-16-252-252-290-288-238-52 50 240 290 288 252 252q54 12 126-60z m-494-640l24 24q-2 44-52 94-22 22-45 35t-35 13l-14 2-22-24-18-80q28-16 46-34 24-24 36-48z" horiz-adv-x="780" />
<glyph glyph-name="dialog-archive" unicode="&#xe840;" d="M840 600l0-50-696 0 0 50q0 22 13 35t25 15l608 0q6 0 14-1t22-14 14-35z m-148 150q6 0 14-1t22-14 14-35l-498 0q0 22 13 35t25 15l410 0z m248-200q34-32 38-46 6-18 0-54l-76-450q-4-22-20-35t-28-15l-710 0q-52 0-60 50-6 26-39 223t-39 227q-10 22-3 44t10 26 21 20l10 10 30 30 0-80 836 0 0 80z m-248-270l0 100-70 0 0-80-260 0 0 80-68 0 0-100q0-50 48-50l300 0q22 0 35 12t13 24z" horiz-adv-x="981" />
<glyph glyph-name="dialog-reload" unicode="&#xe841;" d="M843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-36 90-57t105-20q74 0 139 37t104 99q6 10 30 66 4 13 16 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" />
<glyph glyph-name="files" unicode="&#xe842;" d="M343 42l0 699c-38-9-66-43-66-83l0-719c0-47 38-86 84-86l517 0c40 0 74 28 83 66l-496 0c-67 0-122 56-122 123z m0 0m483 652l0 153-361 0c-47 0-84-38-84-85l0-720c0-47 37-85 84-85l516 0c47 0 85 38 85 85l0 553-140 0c-55 0-100 44-100 99l0 0z m100-61l115 0-178 185 0-124c0-34 29-61 63-61z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="arrow-curved" unicode="&#xe843;" d="M799 295l0-56 112 0-223-223-224 223 112 0 0 56q0 116-81 197t-197 82-198-82-82-197q0 162 115 276t276 114 276-114 114-276z" horiz-adv-x="928" />
<glyph glyph-name="dialog-copy" unicode="&#xe844;" d="M570 549h136l-136 135z m0 0m-58-27v179h-477c-19 0-34-15-34-33v-785c0-18 15-33 34-33h655c18 0 33 15 33 33v607h-179c-18 0-32 14-32 32z m0 0m336 328h-655c-19 0-34-15-34-33v-59h408c10 0 20-4 27-12l174-173c8-7 12-17 12-28v-546h68c19 0 34 15 34 33v785c0 18-15 33-34 33z m0 0" horiz-adv-x="1000" />
<glyph glyph-name="dialog-chmod" unicode="&#xe845;" d="M863 449l115-78q12-8 12-21t-12-21l-115-78 61-123q7-14-1-25t-20-13l-139-10-9-138q-1-12-12-20t-25-2l-124 62-78-116q-7-11-21-11t-21 11l-78 116-123-62q-14-6-25 2t-13 20l-10 139-137 9q-13 1-22 13t-1 25l63 123-117 78q-11 7-11 21t11 21l117 78-63 124q-7 12 1 24t22 13l137 9 10 139q1 12 13 20t25 1l123-61 78 116q7 11 21 11t21-11l78-116 124 61q13 7 25-1t12-20l9-139 139-9q12-1 20-12t1-25z" horiz-adv-x="990" />
<glyph glyph-name="chmod" unicode="&#xe846;" d="M1019 395q22-15 22-44t-22-43l-96-64 51-104q14-26-3-49t-41-26l-115-7-7-117q-3-25-25-40t-50-2l-104 51-65-96q-16-24-43-24-27 0-43 24l-64 96-104-51q-26-14-49 2t-26 40l-7 117-117 7q-25 3-40 25t-2 50l51 104-96 64q-24 16-24 43t24 44l96 64-51 104q-14 27 2 50t40 25l117 7 7 115q3 25 26 41t49 3l104-51 64 96q13 21 43 21t43-21l65-96 104 51q26 14 50-3t25-41l7-115 115-7q25-3 41-25t3-50l-51-104z m-210-156q-9 17-4 36t21 30l70 46-70 47q-36 26-17 66l37 75-83 5q-20 1-34 15t-15 34l-5 83-75-37q-40-19-66 17l-47 70-46-70q-26-36-66-17l-75 37-5-83q-1-20-15-34t-34-15l-84-5 38-75q9-18 3-36t-22-30l-69-47 69-46q16-11 22-30t-3-36l-38-75 84-5q20-1 33-15t15-34l6-84 75 38q10 5 22 5 29 0 44-23l46-70 47 69q11 16 30 22t36-3l75-38 5 84q1 20 15 34t34 15l82 5z" horiz-adv-x="1041" />
<glyph glyph-name="arrow-go-parent" unicode="&#xe847;" d="M939 107l-92-92q-11-10-26-10t-25 10l-296 297-296-297q-11-10-25-10t-25 10l-93 92q-11 11-11 26t11 25l414 414q11 10 25 10t25-10l414-414q11-11 11-25t-11-26z" horiz-adv-x="1000" />
<glyph glyph-name="help-rtl" unicode="&#xe848;" d="M1104 352q0 90-35 171t-94 141-141 94-172 35q-89 0-171-35t-141-94-94-141-35-171q0-89 35-171t94-142 141-94 171-35q90 0 172 35t141 94 94 142 35 171z m-110 0q0-67-27-129t-70-105-106-71-129-26-128 26-105 71-71 105-26 129q0 90 44 166t120 120 166 45 167-45 120-120 45-166z m-204 166l-29-95q-42 27-88 27-46 0-46-22 0-3 2-7t3-5 6-5 6-4 8-4l7-4 38-20q21-11 26-23t6-35l0-35-110 0 0 15q0 7 0 10t-3 5-6 5q-1 1-10 5t-16 7-18 11-17 12q-18 16-27 35t-11 52q0 46 40 78t100 32q78 0 139-35z m-45-315q0-30-20-46t-52-16q-31 0-50 16t-19 46 19 46 50 17q33 0 52-17t20-46z" horiz-adv-x="1333" />
<glyph glyph-name="file-text" unicode="&#xe849;" d="M890 607l129 0-197 207 0-139c0-38 30-68 68-68z m0 0m-110 68l0 171-404 0c-52 0-96-43-96-95l0-803c0-52 44-95 96-95l576 0c52 0 96 43 96 95l0 617-158 0c-61 0-110 49-110 110z m-305-183c0 12 10 20 21 20l336 0c11 0 21-8 21-20l0-59c0-11-9-21-21-21-11 0-21 10-21 21l0 37-126 0 0-283 54 0c12 0 21-10 21-21 0-12-9-21-21-21l-151 0c-11 0-21 9-21 21 0 11 10 21 21 21l55 0 0 283-126 0 0-37c0-11-10-21-21-21-12 0-21 10-21 21l0 59z" horiz-adv-x="1333" />
<glyph glyph-name="file-image" unicode="&#xe84a;" d="M784 676l0 171-404 0c-53 0-96-43-96-95l0-803c0-53 43-96 96-96l576 0c53 0 96 43 96 96l0 617-158 0c-61 0-110 49-110 110z m-340-219c0 26 22 48 48 48l352 0c26 0 48-22 48-48l0-256c0-26-22-48-48-48l-352 0c-26 0-48 22-48 48l0 256z m48-262l231 0-133 96-103-46 0-43c0-3 2-7 5-7z m0 0m112 138l90-64 155 81 0 107c0 3-2 6-5 6l-352 0c-3 0-5-3-5-6l0-166 96 44c7 3 15 2 21-2z m101 104c34 0 61-28 61-62 0-34-27-61-61-61-34 0-62 27-62 61 0 34 28 62 62 62z m0 0m0-81c11 0 19 9 19 19 0 11-8 20-19 20-11 0-20-9-20-20 0-10 9-19 20-19z m0 0m189 252l129 0-197 207 0-139c0-38 30-68 68-68z m0 0m-99-413l49 0c3 0 5 4 5 7l0 100-117-61 63-46z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="file-code" unicode="&#xe84b;" d="M894 607l129 0-197 207 0-139c0-38 30-68 68-68z m0 0m-110 68l0 171-404 0c-52 0-96-43-96-95l0-804c0-52 44-95 96-95l577 0c52 0 95 43 95 95l0 618-158 0c-61 0-110 49-110 110z m-178-518l74 350c2 12 13 19 25 17 11-3 18-14 16-25l-74-350c-2-10-11-17-20-17-2 0-3 0-5 0-11 3-19 14-16 25z m-194 172c0 6 3 12 8 16l118 101c9 8 22 7 30-2 7-9 6-22-3-30l-99-85 99-84c9-8 10-21 3-30-5-5-10-7-17-7-4 0-9 1-13 5l-118 100c-5 4-8 10-8 16z m512 0c0-6-2-12-7-16l-118-100c-4-4-9-5-14-5-6 0-12 2-16 7-8 9-7 22 2 30l100 84-100 85c-9 8-10 21-2 30 8 9 21 10 30 2l118-101c5-4 7-10 7-16z" horiz-adv-x="1333" />
<glyph glyph-name="search-clear" unicode="&#xe84c;" d="M452 194q18-18 18-43t-18-43q-18-16-43-16t-43 16l-132 152-132-152q-18-16-43-16t-43 16q-16 18-16 43t16 43l138 156-138 158q-16 18-16 43t16 43q18 16 43 16t43-16l132-152 132 152q18 16 43 16t43-16q18-18 18-43t-18-43l-138-158z" horiz-adv-x="470" />
<glyph glyph-name="file" unicode="&#xe84d;" d="M783 671l0 169-399 0c-51 0-94-43-94-95l0-792c0-51 43-94 94-94l569 0c52 0 94 43 94 94l0 609-156 0c-60 0-108 49-108 109z m108-67l128 0-195 204 0-137c0-38 30-67 67-67z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="file-video" unicode="&#xe84e;" d="M797 675l0 172-404 0c-52 0-96-43-96-96l0-803c0-52 44-96 96-96l577 0c52 0 95 44 95 96l0 617-158 0c-61 0-110 50-110 110z m118-223l0-247c0-8-3-15-10-19-3-2-6-2-10-2-4 0-7 1-11 3l-116 72 0-53c0-12-10-22-22-22l-278 0c-12 0-21 10-21 22l0 246c0 12 9 21 21 21l278 0c12 0 22-9 22-21l0-43 117 62c7 3 14 3 21-1 6-4 9-11 9-18z m-8 155l129 0-197 207 0-139c0-37 30-68 68-68z m0 0m-139-298l105-66 0 174-105-56 0-52z m0 0m-279 122l237 0 0-205-237 0 0 205z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="file-audio" unicode="&#xe84f;" d="M769 304c-25-5-43-25-39-45 4-20 28-32 54-27 12 2 24 9 31 18 7 8 9 18 7 27-3 17-21 28-41 28-4 0-8 0-12-1z m0 0m117 301l129 0-197 206 0-138c0-38 30-68 68-68z m0 0m-108 68l0 170-403 0c-52 0-95-42-95-95l0-800c0-52 43-95 95-95l575 0c52 0 95 43 95 95l0 615-158 0c-60 0-109 49-109 110z m-303-420c14 17 34 29 56 34 18 3 37 2 53-4l0 186c0 10 7 19 17 20l229 36c6 1 12-1 17-5 5-4 7-10 7-16l0-193c5-7 9-16 11-26 4-21-1-43-16-61-13-17-33-29-56-33-6-1-13-2-19-2-41 0-76 25-84 62-8 43 24 85 72 94 17 4 34 3 49-2l0 136-186-28 0-201c3-8 7-15 9-23 4-22-2-43-16-62-14-17-34-29-56-33-7-1-13-2-20-2-16 0-31 4-45 12-20 11-34 29-38 50-4 21 2 43 16 61z m41-75c11-6 24-8 36-5 13 2 25 9 32 18 6 9 9 18 7 27-2 9-8 17-17 22-10 6-23 8-36 5-13-3-24-9-31-18-7-9-10-18-8-27 2-9 8-17 17-22z m0 0" horiz-adv-x="1333" />
<glyph glyph-name="quicklook-previous" unicode="&#xe850;" d="M452-20q26-26 0-48-26-26-48 0l-392 394q-24 24 0 50l392 394q22 26 48 0 26-22 0-48l-358-372z" horiz-adv-x="465" />
<glyph glyph-name="dialog-confirm-rtl" unicode="&#xe851;" d="M672 806q-189 2-323-128t-139-320q-2-188 130-324t320-140q188-2 324 130t138 321q4 188-129 324t-321 137z m2-733q-30 0-49 19t-19 46q-2 30 17 49t49 19l2 0q28 0 46-18t21-46q0-29-19-48t-46-21l-2 0z m-165 325q-26 34-26 77 0 78 54 115 52 38 133 38 63 0 103-26 67-41 71-144l0-4-109 0 0 4q0 25-16 53-15 24-53 24-40 0-52-20-16-20-16-44 0-17 16-39 8-12 20-20l6-4q6-4 16-11t20-15 21-17 16-16q14-20 18-78l0-8-107 0 0 4q0 12-4 28-6 20-27 36l-28 18q-46 33-56 49z" horiz-adv-x="1333" />
<glyph glyph-name="search-rtl" unicode="&#xe852;" d="M382 243c56-56 128-84 200-84 65 0 130 23 183 67l52-126 131-132c14-10 30-15 46-15 41 0 76 37 76 78 0 16-5 32-16 45l-130 132-127 51c44 53 66 118 66 184 0 154-128 280-281 280-152 0-280-129-280-281 0-73 26-145 80-199z m323 76c-35-33-79-51-123-51-93 0-172 78-172 174 0 94 80 172 172 172 95 0 173-80 173-172 0-45-17-90-50-123z" horiz-adv-x="1333" />
<glyph glyph-name="resizable-rtl" unicode="&#xe853;" d="M232-84l174 0 0 174-174 0 0-174m0 347l174 0 0 173-174 0 0-173m347-347l172 0 0 174-172 0 0-174m0 347l172 0 0 173-172 0 0-173m346-347l173 0 0 174-173 0 0-174m-693 693l174 0 0 173-174 0 0-173z" horiz-adv-x="1333" />
<glyph glyph-name="lock" unicode="&#xe854;" d="M179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />
<glyph glyph-name="rotate-r" unicode="&#xe856;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
<glyph glyph-name="rotate-l" unicode="&#xe857;" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" />
<glyph glyph-name="up" unicode="&#xf005;" d="M0 167q0 26 18 43l391 391 390-391q17-17 17-43 0-26-17-44-18-17-44-17t-43 17l-303 305-305-305q-18-17-43-17t-43 17q-18 18-18 44z" horiz-adv-x="816.9" />
<glyph glyph-name="forward" unicode="&#xf006;" d="M0 0q0 25 18 43l305 304-305 304q-18 18-18 44t18 43 44 18 43-18l390-391-390-391q-19-18-43-18t-44 18q-18 18-18 44z" horiz-adv-x="495.1" />
<glyph glyph-name="back" unicode="&#xf007;" d="M0 353l391 391q18 18 43 18 24 0 43-18 18-18 18-44t-18-43l-304-304 304-305q18-17 18-43t-18-43q-18-18-43-18t-43 18z" horiz-adv-x="495.1" />
<glyph glyph-name="info" unicode="&#xf086;" d="M0 350q0 95 37 182t100 149 149 100 183 37q95 0 182-37t149-100 100-149 37-182q0-95-37-182t-100-150-149-100-182-37q-96 0-183 37t-149 100-100 150-37 182z m117 0q0-71 28-137t75-112 112-75 137-28 136 28 112 75 75 112 28 137-28 136-75 112-112 75-136 28-137-28-112-75-75-112-28-136z m281 170q0 28 20 45t51 17q32 0 51-17t19-45-19-46-51-17q-32 0-51 17t-20 46z m5-402v299h132v-299h-132z" horiz-adv-x="937.5" />
<glyph glyph-name="link" unicode="&#xf08e;" d="M786 332v-178q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h393q7 0 12-5t5-13v-36q0-8-5-13t-12-5h-393q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v178q0 8 5 13t13 5h36q8 0 13-5t5-13z m214 482v-285q0-15-11-25t-25-11-25 11l-98 98-364-364q-5-6-13-6t-12 6l-64 64q-6 5-6 12t6 13l364 364-98 98q-11 11-11 25t11 25 25 11h285q15 0 25-11t11-25z" horiz-adv-x="1000" />
<glyph glyph-name="netmount" unicode="&#xf0a0;" d="M580 171q0-18-13-31t-31-13-32 13-13 31 13 32 32 13 31-13 13-32z m143 0q0-18-13-31t-31-13-32 13-13 31 13 32 32 13 31-13 13-32z m63-89v179q0 7-6 12t-12 6h-679q-7 0-12-6t-6-12v-179q0-7 6-12t12-6h679q7 0 12 6t6 12z m-687 268h659l-88 269q-2 7-9 12t-14 5h-437q-7 0-14-5t-9-12z m758-89v-179q0-37-26-63t-63-26h-679q-36 0-63 26t-26 63v179q0 14 9 42l110 338q9 29 35 48t56 18h437q31 0 56-18t35-48l110-338q9-28 9-42z" horiz-adv-x="857.1" />
<glyph glyph-name="colwidth" unicode="&#xf0db;" d="M89-7h340v643h-358v-625q0-7 6-13t12-5z m768 18v625h-357v-643h339q8 0 13 5t5 13z m72 678v-678q0-37-27-63t-63-27h-750q-36 0-63 27t-26 63v678q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" />
<glyph glyph-name="paste" unicode="&#xf0ea;" d="M429-79h500v358h-233q-22 0-37 15t-16 38v232h-214v-643z m142 804v36q0 7-5 12t-12 6h-393q-7 0-13-6t-5-12v-36q0-7 5-13t13-5h393q7 0 12 5t5 13z m143-375h167l-167 167v-167z m286-71v-375q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v89h-303q-23 0-38 16t-16 37v750q0 23 16 38t38 16h607q22 0 38-16t15-38v-183q12-7 20-15l228-228q16-15 27-42t11-49z" horiz-adv-x="1000" />
<glyph glyph-name="mkfile" unicode="&#xf0f6;" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0 13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z" horiz-adv-x="857.1" />
<glyph glyph-name="dir" unicode="&#xf114;" d="M857 118v393q0 22-15 38t-38 15h-393q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-536q0-22 16-38t38-16h679q22 0 38 16t15 38z m72 393v-393q0-51-37-88t-88-37h-679q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h375q51 0 88-37t37-88z" horiz-adv-x="928.6" />
<glyph glyph-name="opendir" unicode="&#xf115;" d="M994 331q0 19-30 19h-607q-22 0-48-12t-39-29l-164-203q-11-13-11-22 0-20 30-20h607q23 0 48 13t40 29l164 203q10 12 10 22z m-637 90h429v90q0 22-16 38t-38 15h-321q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-476l143 175q25 30 65 49t78 19z m708-90q0-35-25-67l-165-203q-24-30-65-49t-78-19h-607q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q52 0 88-37t37-88v-90h107q30 0 56-13t37-40q8-17 8-37z" horiz-adv-x="1071.4" />
<glyph glyph-name="rm" unicode="&#xf12d;" d="M500 64l188 215h-429l-188-215h429z m565 601q9-19 6-40t-17-36l-500-572q-22-24-54-24h-429q-21 0-38 11t-27 31q-8 19-5 40t17 36l500 572q21 24 53 24h429q21 0 39-11t26-31z" horiz-adv-x="1071.4" />
<glyph glyph-name="unlock" unicode="&#xf13e;" d="M589 421q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v179q0 103 74 177t176 73 177-73 73-177q0-14-10-25t-25-11h-36q-14 0-25 11t-11 25q0 59-42 101t-101 42-101-42-41-101v-179h410z" horiz-adv-x="642.9" />
<glyph glyph-name="dialog-mkfile" unicode="&#xf15c;" d="M819 584q8-7 16-20h-264v264q13-8 21-16z m-265-91h303v-589q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h446v-304q0-22 16-37t38-16z m89-411v36q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v36q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v36q0 7-5 12t-13 5h-393q-8 0-13-5t-5-12v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z" horiz-adv-x="857.1" />
<glyph glyph-name="sort" unicode="&#xf15d;" d="M665 622h98l-40 122-6 26q-2 9-2 11h-2l-1-11q0 0-2-10t-5-16z m-254-576q0-6-6-13l-178-178q-5-5-13-5-6 0-12 5l-179 179q-8 9-4 19 4 11 17 11h107v768q0 8 5 13t13 5h107q8 0 13-5t5-13v-768h107q8 0 13-5t5-13z m466-66v-130h-326v50l206 295q7 11 12 16l6 5v1q-1 0-3 0t-5 0q-6-2-16-2h-130v-64h-67v128h317v-50l-206-296q-4-4-12-14l-6-7v-1l8 1q5 2 16 2h139v66h67z m50 501v-60h-161v60h42l-26 80h-136l-26-80h42v-60h-160v60h39l128 369h91l128-369h39z" horiz-adv-x="928.6" />
<glyph glyph-name="sort-down" unicode="&#xf175;" d="M427 125q4-10-3-19l-195-215q-6-5-13-5-8 0-13 5l-198 215q-8 9-3 19 5 11 16 11h125v696q0 8 5 13t13 5h107q8 0 13-5t5-13v-696h125q11 0 16-11z" horiz-adv-x="428.6" />
<glyph glyph-name="sort-up" unicode="&#xf176;" d="M427 575q-5-11-16-11h-125v-696q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v696h-125q-12 0-16 11t3 19l195 215q5 5 13 5 7 0 13-5l198-215q7-8 3-19z" horiz-adv-x="428.6" />
<glyph glyph-name="navbar-root-sql" unicode="&#xf1c0;" d="M429 421q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-19-215 19-156 52-58 71v95q66-47 181-71t248-24z m0-428q132 0 247 24t181 71v-95q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v95q66-47 181-71t248-24z m0 214q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-20-215 20-156 52-58 71v95q66-47 181-71t248-24z m0 643q116 0 214-19t157-52 57-72v-71q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v71q0 39 58 72t156 52 215 19z" horiz-adv-x="857.1" />
<glyph glyph-name="preference" unicode="&#xf1de;" d="M196 64v-71h-196v71h196z m197 72q14 0 25-11t11-25v-143q0-14-11-25t-25-11h-143q-14 0-25 11t-11 25v143q0 15 11 25t25 11h143z m89 214v-71h-482v71h482z m-357 286v-72h-125v72h125z m732-572v-71h-411v71h411z m-536 643q15 0 26-10t10-26v-142q0-15-10-25t-26-11h-142q-15 0-25 11t-11 25v142q0 15 11 26t25 10h142z m358-286q14 0 25-10t10-25v-143q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v143q0 14 11 25t25 10h143z m178-71v-71h-125v71h125z m0 286v-72h-482v72h482z" horiz-adv-x="857.1" />
<glyph glyph-name="dialog-find" unicode="&#xf1e5;" d="M393 671v-428q0-15-11-25t-25-11v-321q0-15-10-25t-26-11h-285q-15 0-25 11t-11 25v285l139 488q4 12 17 12h237z m178 0v-392h-142v392h142z m429-500v-285q0-15-11-25t-25-11h-285q-15 0-25 11t-11 25v321q-15 0-25 11t-11 25v428h237q13 0 17-12z m-589 661v-125h-197v125q0 8 5 13t13 5h161q8 0 13-5t5-13z m375 0v-125h-197v125q0 8 5 13t13 5h161q8 0 13-5t5-13z" horiz-adv-x="1000" />
<glyph glyph-name="navbar-root-trash" unicode="&#xf1f8;" d="M286 82v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m143 0v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m142 0v393q0 8-5 13t-12 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q7 0 12 5t5 13z m-303 554h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
<glyph glyph-name="getfile" unicode="&#xf245;" d="M632 268q18-17 8-38-9-23-33-23h-213l112-266q6-13 0-27t-19-19l-99-42q-14-6-27 0t-19 19l-107 252-174-174q-11-11-25-11-7 0-14 3-22 10-22 33v839q0 24 22 33 7 3 14 3 15 0 25-11z" horiz-adv-x="714.3" />
<glyph glyph-name="rename" unicode="&#xf246;" d="M464 779q-178 0-178-125v-233h71v-71h-71v-304q0-125 178-125h36v-71h-36q-151 0-214 81-62-81-214-81h-36v71h36q178 0 178 125v304h-71v71h71v233q0 125-178 125h-36v71h36q152 0 214-81 63 81 214 81h36v-71h-36z" horiz-adv-x="571.4" />
<glyph glyph-name="selectall" unicode="&#xf247;" d="M1143 636h-72v-572h72v-214h-214v71h-715v-71h-214v214h71v572h-71v214h214v-71h715v71h214v-214z m-143 143v-72h71v72h-71z m-929 0v-72h72v72h-72z m72-858v72h-72v-72h72z m786 72v71h71v572h-71v71h-715v-71h-71v-572h71v-71h715z m142-72v72h-71v-72h71z m-357 572h215v-429h-500v143h-215v429h500v-143z m-428-214h357v285h-357v-285z m571-143v285h-143v-214h-214v-71h357z" horiz-adv-x="1142.9" />
<glyph glyph-name="selectinvert" unicode="&#xf248;" d="M1286 421h-72v-357h72v-214h-215v71h-500v-71h-214v214h72v72h-215v-72h-214v215h71v357h-71v214h214v-71h500v71h215v-214h-72v-72h214v72h215v-215z m-143 143v-71h71v71h-71z m-357 215v-72h71v72h-71z m-715 0v-72h72v72h-72z m72-643v71h-72v-71h72z m714 71h-71v-71h71v71z m-643 0h500v72h72v357h-72v71h-500v-71h-71v-357h71v-72z m286-286v72h-71v-72h71z m714 0v72h-71v-72h71z m-71 143v357h-72v72h-214v-214h72v-215h-215v72h-214v-72h71v-71h500v71h72z" horiz-adv-x="1285.7" />
</font>
</defs>
</svg>                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/dark-slim/img/elfinder.woff                                        0000644                 00000054344 15266052703 0020110 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOFF     Xä     ’�                       GSUB  X   ;   T ‹%zOS/2  ”   C   V>4S�cmap  Ø  î  ósó»cvt   È       ýþÜfpgm  Ü  �  pŠ‘�Ygasp  
l         glyf  
t  G   q2–"NVhead  Q”   2   6ÛáÏhhea  QÈ       $;hmtx  Qè   Î  Ä›Ïÿ€loca  R¸   ä   äÅ/ãcmaxp  Sœ        ’�name  S¼  �  Íg…èpost  U@  &  ‹sÅ prep  Xh   z   †åA+¼xœc`d``àb0`°c`rqó	aàËI,Éc�b`a€ �<2›1'3=‘�ÆÊ±€i fƒˆ &;H xœc`d^Ê8��•��©ŠiC„f|À`ÈÈe`efÀ
Ò\S^0|ò`úŸÅÅœÆ°
(Ì’ üUL xœÝÕËn•U Åñÿ�^P.Š´*wPP+*  XP(”‹ÊMªÒ"^Aé�!ñxÄ'0ŒÃŒd…ÑÞg@˜áúºWH˜1æœüÚž“/éùNÖZæÛÛ6 óþ¤ç¿èýáw{sïÏçÙ¹÷z¿ûõF^ñutRSe¸\+×Ë�r»Ü+÷ëh«ãu¦^­7ë�z·>èO>|B§ÊàcWŽÌ]9]¯<ºr¢»ò‰=‚¿ø›{þ;÷¼Å�žÝ•óüÙ|‡C³€g|YÄb–ðÏ³”XÆ£¼ÈK¼ÌrV°’U¬fk}—¯òëXÏ^çÿ×M¼É[þ>Æx‡Í¼Ë{¼Ï¶²�ØÎvò!±‹�g7{ø„OÙË>&ØÏ&9È!s„Ïøœ/8Ê1Žs‚“|É)¦øŠ¯ù†ÓL3Ã¾å,ßñ=?ð#?ñ3ç8Ï/üÊ.r‰ß¸Ì¬opè	¿³§ù±¨û1x4¯f»¼5]zNŠ.íŠ.ñŠ®	
'…³ƒÂ)Bá<¡è¢pÆPtŸNáÜ¡pQ8‹(œJÎ'
'…3‹ÂéEá£p¢Q8Û(œrÎ;
'…;€Âm@á^ pCP¸+(Üî
7	…;…ÂíBáž¡pãP¸{(ÜBî#
7…;Š¢[5…{‹ÂFá.£p«Q¸ß(Ütî<
·…w ……·…W…÷…—…7…×…w……·…W…÷…—…7	…×	…w
……·…W…÷…—…7…×…w……·…W…÷…—…7…×…wÔ'MC÷{ªñ¶R¯,e¨ñÞR†//åZã¦\o¼Æ”�w™r»ñBSî5ÞjÊýÆ«Mi¼ßÔÑÆKNk¼éÔñÆëN�n¼óÔ™Æ‹O½Òxû©WŸÔ›�Ïê�Æ'õnã3‚ú ñiA¢ñ¹Aã„þ�Æg	ýÉ†Ùÿ*�„  xœc`@Èœö?„¼Ý xœ­ViwÓFyIœ„,%-jaÄÄi°F&lÁ€	A²c ]œ­• ‹;é¾ñ‰ßà_ódÚsè7~Zï/$�´çpš“£wçÍÕÌÛeZ’Øë‘”›/ÅÔÖ&�ì<	é†MËQ|(;{!eŠÉßQ­–Ú·‡DD"Pµ®°DûYšd|èQFË¶¤WMÊ-=é.[ãA½Uß~:Ê±;¡¤f3th=²%UU¢H¦=RÒ¦e¨ú+I+¼¿ÂÌWÍPÂˆN"i¼ÆÐHÞg´Êh5¶ã(Šl²Ü(R$šáAy”ÕçäŠ	ÊÍ�òÊ§åÃüˆ¬Ø£œV°K¶Óü¾/y§w9?±_oQ¶ä@ÈŽìàìt%_„[[aÜ´“í(Tv×wBlÙìTÿf�òšF·+2½ÐŒ`©|…+?¡Ìþ!Y-œOù’G£Z²‘AëeNìK>�Öãˆ)qÍYÐÝÑ	Ôý’3ö˜>üñÞ)–xËzG%œ)as4IÚ0r`%e‹*©õ®˜8åuZÄ[Â~íÚÑ—ÎhãPwb<[[9QÉñhR§™L�ÚIÍ£)¢”t&xÌ¯(?¢I^mc5‰•GÓ8fÆ„D"-ÜKSA,;±¤)Í£½¹¦¹v-Z¤ÉõÜ£÷ôæV¸¹ÓSÚô³FV§b:ØÓéiä/ñiÚå"Eéúé~LâAÖ2‘-6Ã”ƒoýÒË×–…×Øîíó+¨}ÖDð¤ûÐOÕ)	L…˜UˆV@b­kY–ÉÕ¬©ÈÔwCšV¾¬ÓŠrÇ¾Œqý_33–˜¾ß‰Ó³#.=síKÓ|›u=š×©ÅrqfyN§Y–ïë4Çò�æYž×éK[§£,?Ôi�åG:cyAštßÁ�‹0ä�0„¥CX^‚!,a¹CXaË%ÂòcÂr†°¼¬eÕÔSIãÚ™XlB`bŽ¹ÌEåj*¹TB»hTjCžn•TÏªe ^<ò†9°H—Èš_1Î•�FåøÖ-o;WÀ±êoŽö9ñRÖ‹…?ÿÕÖT%½bÍÃ“«ð†žl'ª6©xtM—ÏU=ºþ_TTXôH…X(Ê²lpg"„�:�†j •CÌlÌ<´ëuËšŸÃý71BPýø7ÜƒNYIYíà¬Õ×Û²Ü;ƒr8,I17óúVø"#³Ò~‘YÊž�|pŒJeØj­¼Ù'1™Þ$Ïq[Q6HÚØÎ‰ó€yó�&aêªäNá†øanÁy'\¢z£,‡îEìó(¤ü[§âDö¨hŒÀ³Ùa¯ïBÊoq$4ù¥~T¡©5Ð4Rn¨_ÆÙºmBÆô#*vÃ²¬âÃÇ÷•’m„|¤ˆÕ££ŸÖ^¢NªÜ~f—ï�¾Á 51{ßtq�Ê»ZÉ2GmS·•S×šCãU‡êæQõ½ãì9kšnº'z_ÓªÛÁÅ\,°ömÒR&Ôõa…¢ËÅ¥Pêe4Iï¸ÐïPŠ�ÿ«úØ|ž+U…Ñq$ßNÔ·Ñç`üØGõÐ÷cèr.Ï÷šŸnôál™®¢ë§è70k­¹YºÜÐtâ!G­Ž¸Ê|§qz¤¹é!àcÝâÀ&€ÅàÝµŒæS £ùŒ9>ÀçÌaÐdƒ-æ0ØfÎÀsì2‡Ás|Áœu€/™Ã dƒˆ9ž0' xÊ_1‡Á×Ìaðsî|Ë1s$Ìa°¯éÖ0Ì-^Ð] ¶AU SOXÜÃâPSeÈþŽ†ý½AÌþÁ ¦þ¨éö�ú/õgƒ˜ú‹ALýUÓ�!õ7^êï1õƒ˜úL¿Ëe¿Œ|—
”]l>çï‰÷ÛÅ@¹  ÿÿ xœ½½|\U™?~žsßïÜy½3÷N&3“yŸ¼N’yM“4™¶¡	iÚ¦i(I�4”R(i›mA–¾€•ª‹ZAXW„ªàº¾¬?‘Ÿ+¾à¾ «.º®ëºègÅýi·¹ý?çÎ$MyQñïï7™¹÷ž{Ï9÷¼<çy¾ÏsžsB(!g~Ë½�~�xH7ÉUÛr™t0àv9eà4 @‡yà€›'x=O���­ÍÉDÜë³¼~QJ–’�d"“õ*`T$'²
ˆ™NÈ”+PÎ7A©Xîƒ¼Óðs>ÃõÌñgÜ~€UøwcB�¨$X‡­Ã’SHòT€÷úºô[UyNVo¡Ùú5F}æÃn�­ß@ªEÀâ¬¶¾„Q[D— Üî«wËª*ÿÛNÞC‘Îœ:ó÷ý*‘É(™";Éµä(¹…üYõúëVxE¾~Ïî+¯XÝ!	Ê[ßÒÊ¹åèYŸ ò7¨C†‰$Ê¢$ï!ÔÁ9(·‡ˆDVDy–(D Š0‹ï žÀ,á‰êàÕY‚‘“Äáà¦çàÆvîØvÉÔ–ÖPss¶-¤{4!Ò†•wAŽ–MÁÝ &²iIL’ð”Èf*P)òfy²™,»•Ã‹²}/Š�&5Ašµc$¡œÉf’	I4L£�çÀ¹€…t³TÄ$öŠd@VHMÔh¡‚ï“hÐeP_ÌÇ‡NB£GðŒHºdà9™òåÎÑñ±®‚Ä—s£›rA’…LnÓh®ÌsFCçúñÑ\Gei nÂd#˜|aW(ÜQ¬´ðTèiiè‡Œ–žž­•–}r»xàú2Ü9lmžx‘§nøñ°õüe ÂŒ¶K“xÞÑ,§xþ¹µ�G:Û;ÏkÅ“Oš[ÉÛÝÐï7Ú;#Ú¹ôsŸR²Úúàh8îŽDãÖ�ð¨é�³\—ü>ä¢øâ›}°*õËjIà$Ü�&²ž"©ì5ræ£Üq.‚ýê$~ÒHVTË¡† Ò¦îskU‘E�8ž["û@@’��F¯GrJNŸ(ÚÒo¼’­€dJYÉ‹§¸×¬€7+e+YÎsÄzäèÑ�ÖßßttüðQØxÓM,L9ºñÈÑù£Ö§o>²‘æŽ?zl\xë‘›aç¬G0þ‘#X:ræ‹ÜûéÂ‰8ˆ›èÄ$+«½x­ruFN
�QV@˜`g [džâ`5� ÖÈ[ÿØt($K…þ`Ù™ý¸÷?€ëÑûñc�|àz×¬yà�û-­v€W Ô.ÏzÎ�ã*BRÕ86�aÆö±‡t’`Oáë	ù8äz1ã‚(-ƒ_bD9X	År¥�7L0Nµö¶Óæ�½Ào½lôù­«ÑÖÈ‹‘‘ ÷Ó©h+ÍTSb—õÏÑ€õr oF"/DZƒW°éëÌ\™þ†¸°<éj"6½*ë8¤»ó C6ÓÂÈ;Ã>*mƒàMW2¾J¹bŠ8h@�Š##[Æ˜•>¿ßúùÔ~þàŽwñ;F¦x¸ü,8ûºƒ[®y×~ëž-7Àøõ;<;=#S§à­O_¿Ý%^¼ÿõé«·Z±éË¦-ÎctÆHL&C¿—À$o‰�ÈÌŠOq$.@"3%“þ-Õ‘#OÿýÑ#ÛÄ…Dv~xôè†ÃGâŒœnÚH;o:¼ñ0R¢»‰‘ÜÍ´á­›XY,ëUÜ5Üi 	’&](îül$†×}ºa|ªÚ…-Ix	ø$BA–�ýÉ„en–¨*™r`¹µD‘Na÷;éù�Õ"»©QgÞ0-& TœXL'Ò±éj<¢¤«3×žÍ¤S¡D(o
7úqDJi NÁßñ„�dBxýF!ž/¯„B¾\ò3à�üFx93©'½E”=Éx)îåÆ®vùotùý.zÜ¥Â‹ÓÏÃºó-ÛJ¥…ÊU—õez	7¡»öë®Ó¿pé~'^p^—~z3}þ-N}áoègŠ–¾åR> n]H ÝýæÌcÜÏ9™„I’\÷Ù(ŽAÖZl­”Ò¼"SÄyðÉ<”ãèe8ˆ	63Ç‘i¼ ë«Í¯—Î¿:êtÕ‰D’‘¤W÷&t¯QV…p[:ŠòÐÉx‚ÉÙA(Hñ

Úl!+¤Þ‚—ûºÏ'†ù”qúi#Å‡ÕÖ»·òQ™o†öf™ô“Û»¬ÓÖéû¿ô¤Úî»Ó
ùïì
î¾YÞ»W¾ù™W^r†,««ˆuÝU«d3+Oæeà�GT À¼‚(
—‘ãÄ	"ŠÜ4v3‡uÌ¾nTaþÕ1§«š]µ
2*…ÉK!éÅ?ø]•„W€ÿØ—î§ÏýîJrò+g�X�¾¶–Äæ±�p>Žq×&ÒIúÈrÙQ½ôÂó¨(·ÄÒˆ	ÅÈ™œ$iÙŽ"»”Y·“ÊšŠ½(‹Hç‡4I$É1E’cìò—Î\4½ybãØùÃ«ý)†}’VEDNm�È õÚàÈü=aÝ‹�+
Hõ „	IQ,Fd-”õ"cüµž@&Û„£Ã€¨*§<ÂÃñ³—·«RíRRG,M–)<MeÙzÇ©F^xDäágª\.¦­®tJ,Þ§²J»ñ¨ÙªdBö¸õevV±ã\[;¨wáš_UýôòUHàÂf|ãÂ/rC«sT·qI Qÿ%*áÏœ9óî“\�xIû`Œ¼çñB&É	6R‘èÊH2<'ò{�<S˜#’L©t9ò0N$ÈŒ‚üE¾”àX´Lc·’`åuÊÝóûR"Iêzg8`Í#Ioq€šù(uq‰­ø£t€«s�pAÅ,ç±#t1b�@á.öÀ °c¥ˆøŒóùrŽŠ£‡?ué¶‡o¼ø[<ì™¹ù=GgË0sß—>vñ³M—ò 
´ÇÐˆ
M]u?LV7{[× 8\Û3‹É¿üðáÑÑÃo>vq/-Ï=Û}33÷mº<bò2`³E´P0âD
2ï�Dos²{Èzw,‘¨& eóý¯r/ÐGÓ†È ÊÉÉ…ÕÉb#%üfdÍdb:¾º%+#‹~˜<ŽZ+(ì!lLˆsØ°ø�CFµ—	=~’ð<“ÿ<[§çRþˆ$„#å°*¢d@1#!ïf��M„œ»âˆ”�UÄÀ¥b…�Þ"¶¢^}‘~ÉÐQÁÐÓ/1��d-šÉV(†r[W$Ž^0WykwxÏP—Ãó�¾—úÂ‚*)ã·äŽ-§?˜Ï7	*çr¤ ¦ÎÿÊad'pcËu_?oÕ%ÉÒö˜c×ÆäU+×ô®:ö¸Âá�ç9<G×�ç »¬­»òJVT¥ÖÔõë½­¾·žPËŠ(úE¬…G!Ø0£ë©ŽÙ«FÕc»vTSÛË:±ñÒÝˆb(ôÜ¤XíVYãÈ@8ÂQÂ(p/ŽƒID,Ü‚JÖ¨¢(nÅíE„ 
Á6ðccúð'˜¦dqÇ­SÖ{¬ßPä§û�.ìøáóß3Ÿ³NQPa7hâòÅçŸÿ×e²�½ÿ#6aïÏW;U ¯áƒy»LÒà‹™¤�),Œ�ûv½Hb¨ò$�•
�BÉ‡o½Äz>ú£çÀwÿµ}ãvë4Úãö«�½œ›£W!•‰'ñmi0Qòuð×}–öBï§áóìÜw¶Œq,£‹$ªM.'‚$�áJ”@PfÀN@â#2ÈC y»D>¢C|÷sK~?\¼ÑúÕá�\d©Hp¸æÙýWo ø–ElÆ#å»Q7¢\k#²ª:�ü.$íóº»Ò)�"Â6“Ì³bH¢ÂñX·›�Žö–æH¸!èÖÝºCÌŠWYÑJH•Ru:.‰Tê 9Û÷’9 v'€€“Ý,D‘�c´Ò P¥‹ç¾û<[ú¯f€~â{þ«}wZÞ«õï}èª@ï|Ž…áWžûÐ®;áƒ÷y¦z¯î›rƒÞ·Åký'K·°Ès'¬;ñ	Ë}�þƒs'€ûÐ÷ü×øN0D�:þôò×Övmu�ƒRž:)q˜ðH<*ºAÒœCM	‡7¡¼HgQl6‰
SD aÌ4Rþ@Ð�„Æ6ÈdQÇs¨àãøŽB¬üš!.àÀåc)6°ËíÀ›wïGï{ú}8p×ýø[�/¼ðÏŽÖo¬ïY¿Ùàpl 2 op@ï±U½k®¸ƒ¾g¢×Üz+œ¿|�~S×oºóÎ›ôŒÿè�ôîÃþ]=Å}’þöo†ôU{’A¬m
8>•qœqÃX7¤žãç…³Ö¦(DÂ‰x8É˜fBDFð×Õq¬'j0X@æÃg¦3�PR Ä}2j†<ýw_¹r*l=îvÃHxk¤é±—ÀjÿÑMÑ'�uZÏCŒhð’qy]ëÊ(¬vç\°&L£±Öé”õ£Ï?-ì:ü°‡>nýØú×Ç—•?LšÉ–êæ¸Dˆ/d±M‘%38UçË5†‚ð„ìE¸Íqü$žxf�à¹±hH2iŽ67ýºæ aËH°¦|ì¼2SÈPIs!^	Ì,�äª@€Y¤rÉŒþü3±èTFÜnëñÈT$¶ëÃý¸¥	ëyèØ“Ñ›J1ñóKM·Æ¢4l}ÑÝî±¾¡MM­ë¤‰‹ƒÐ�CD§îOÚE4›Gl¢wœ£Û6"K’,ŽÇNX·îÓ
ŠýóšÜQgÄ¢iXKä3‰@ÌÛ(…$ÁïAÉ®üLÒŒëGXRdY™X
(òÃ§r²"�6Ö0ÄÈïËÌd™�©Èæ„�‰`çX¿\žßŸ¨\ÓÓÕíííÍÍ©T,ƒ~¿Ç£!C9JÚ;Û;sÍmÍm­-©, t,K"m6…›¢‘`c°1Ôà7ý¨ä{tªùš[c6;‡ŒJ&/ñ2&¤
o
•H=�,Åñ'½êËÂ&þÒõó=÷ÀÛï]»t€[ð{Ïy÷ÞËN÷ÜCïÀ«{z~~ŠÁ{à›,üï÷Ý÷÷Üó÷Ý÷“¿øWcÿÆ_Õ¿û«W»Q=Gð,Îh¨¢ø!3PˆLyÆ	È~gÏ¸@pðÂ„Då*ü„oüèòú*ï«WÞ¬ÿ /	õß=ö‡‹/üŒê¿;ìja¥à›6ýtÓ¦Þ´‰œ+£4ÒVmæ�‰PÂè"ï€�ŠDÑ&½la%.V€Í|®¨‚Y«^%¦,qß>ÖlØ.gvq/p›°ÝÄ“Ì;Ú�È*PQÀ¤·ÃÖ;­û­ûï„­öƒpÉ9Aë~<Ø²î*Ìg¢Þ.,ˆ�h/Jž¬êÌlÃØ	°aïyÈCë>m2œ�µs6=Ì‡4Å¡ÍÅª¤¨3nÑÅ¡2»E JµTsdX²ì”Që_�7íçØ03¿+à²4±˜XÂQP-66š¦®»Ý¬g£�ÑHØ™¡† nè(`Ü>·ÏëYÞ¿{6€¨‚+ì§—
Yû¤Ù¯pw�žÞ>úÒK/µüìg?£ð‚Ä_å½Ð3f?�Ÿüìg|é%ë…Ÿu¼ôÒ‚øÖ·~ÂþÚýý¯ô7ôû¨‰t“Îj»W¤H©K†.eå¬­£O2}Šéèc�¶H:!mL]E]Ìµˆi©- oÌ'‰¨¸P…«©((é'Zv–»/i.ÜF;Ü7Ž%²é£ï¯f2~¿õ¡†j¼cc®sÃE;C@ZZ±C7»;£!ýæBf&¿®:¸.›\5Ú“/¦‚¡ÜÆK6`ÜŽDµNGµþO’Òã�>…cð¯fÕq‚m·á n²q€MÓ,¼sú1Øoð (3CJ‰/“ÀùMÔ†ýˆÊóHˆFœb–®‡÷‹b/¢ak·µ[òI+$	îÀ+iCÈwÀxêEbîÀ§xeÍÙ)0POÁž¾ßš«ÝÃrŸùÑ™íôoçIOÕåfÏëÈÈ"/$Ò ßÁj·ïk€…W–d÷ôcÌÌF™l³™J¹’©Di9gëÃ.0LÔ8PÒ¢mx7�Š‹J"9©_ôû(ŸÛÑ¥¶·û<bØØŸúT�öžDîV—·Só„Ë7ôÜs%å¯êŠ®nÝ½Í¯É¡‡ï¼/vñ�|÷ÃkÛwøs³ýô—”_î·§D5Ø’Å`¿§§Ç…@²ÆK¾ÁÝËU}¶�l5nð»œŠŒ‹�©…Î³ÞÙ™N™†ÏcƒÞJ'¸[VLÝ�°/àO&:±Œ¾*º­9¥+lz@0èŸ}ògWíúùƒ-ÿð–û]¦ªýÏ)ÍÐ ë)W;bÚ!Æ qâŸþ)qÿÏæçáQÍý5ëE-,;&ùTÔÍ¯¹µ€Ðl™¦Õ,,ò£�ðßBÎá&±j„ár “¶ÁyŠµü%ªDÜÔÍŠš¶-t‹Æ¹b†ô¾ÅP_ÀcÈ©nP].<8ëmQÃâAD9+ªå *#0n‰‚@‡pT!8EeÛ�ã	ÂPTÍ'ðÝt¶Õ½^_ØqŒC z�€3ËÈ´ˆ{�J9Æe+&—š››Ü89::òÜÈ‡Þm=²ïÃW@Ï'6nÜH›»ës“ã“£Wì^72r×Øðç¾âôÍmž6^¾—s?1«~f˜·{†Q³—×§¾˜ÝeÑ@�xÑíhaaº0:Z8Y…ëðwÆºŽi�}£µ¼k4ÐD"Õ�Ï­òœpn×Gü¦ý†Zo»àz›»ûX¼~¿XëXÄÉoÐµ5Ûï§�?8P+0HùÄ—k0¨"-²‰Un,êN&®U&„$äãDv¡¸FyÂ;\<2xÂ‰n†x<Â/Šj¢È:©ÆZ†ðŠAÁ3óf2³ÍÃõ|DŠ""EÃÆc}�@‚¦=³áA™¯a‡=Áác´H’Þx©P*x!î�ìYSOz³ñR\g�â�=p€;pÐúþÂ/aöÓ};ôÝb=B=ú¬v¤â‰èuèéÓ›é­Ÿî;°ÃÚ_{{ïÂ/èXï¢}¿ÆW=(!
dˆ|»Æ•rÈEQ« ~�K¤LJps¨rS2åV4Ž±[ÉI9N˜’±‘œÂù�µ6n{m*#qÂÅç¤g­Yxmlû)FD>ËR
7yöMœ0†(³­\L&|^JúV‡ÊC¹¶æL¢�,D�€7î‹;²D<û°fegvfYÇa\Ìpqo1sÖè^Ì `¬Z˜Ùß¹z¨ž£\d}Ócš± h^ÃôZ¿6ã¦é�Þ£xLë×Ì{‚¦ÛŽè§3MnÂôXß²Ã†O_	°¾í	c&JQ�õ+ÏE�Iwâ¥õ+O=È 'ë~ö�DœHÕjmœQ£•Q™Ÿa½'ñd†`+mQP´alA¾âd²¤ïqæµI$ ·°Ø M„Ôh�Íëà%¤BÕæqû
H�qF‡üë§¿^lá<¹ÐBo\8ÆM,³î 7Âî…ÂÜcxØÍèKÁ:|�ë ¯à‹Ý$`[(ZI‘¬&ëÈcÕH¡»«³½5›‰5áH`
�WÒ%nU™5qØ6cuK©D¹ËU&ÖQ¨Ï8@Ò@V${[äqÖ¶ØM0‹ÝFÒ¨Òë©¤=o"Ùt51´¦T"ddxÍº¡u¥Õ¥Õý}®ú$*³Œøœ6ÇÖâfÄ[0ÌŠ„¿LZ”ÌrÅì¥529‡av%l|Ä	™lIÊ¨€gŠå/Ð«~�i’fi’ÌoJk�1ˆè�9¿ïTÉëêUí:¯¯Görûú©&´´s\Ô˜êëI569}ÞFŸ�¾ÒtúW\û@‚[˜§ïÈ+Í1Åi:ÛÓÞhLöê²?†úœ¸.(Ä¼N§ž€+‡Ô®h¶RÉF»Ô¡C¾�¿¶šsæÌ™�s/r&òƒöS¡Ú•ô#ÔjÀæ¤ÃQà'!`-Nðp;3é\{º˜)=‚` ØÌWL±I«"0²\&ÙÕ��@4u£ÐÕ�¯@YÀgÂs½œÍÐ?‡2R)µžä9ë�ò±—ûÜ=¥§õ¥w±è TZx�ãï¢Œ]\ PvñæfA“</pÿÂÿ3xaá×g½ÌóØb¿â­—9�çÁ‡G¤ý¿Czô0Í9^?9Ÿ\ ±ª'ÚˆÑ7uñ�\]j\dàÐáTL¦Û9�¿™.' .G„ÐxACB
�ËÉ»fqœŠ§8ë�^Éã�i„ ª*›5$n	GžÛÍ Fm„ÎþéspOÖßá†±éêy££+KÅ®®övBF/½`róÄ¦ñ�Ö�­Z³òü�óWôûKý]…®B¾»¦§·µ¦“‘0JØJž$"Ã¦zÛKc U€dqx¢T£çd�ºùŠð›q%•Ä~‹d.ä£€’?‘ƒâ  î`X&Í¾ û’ùBïÐµkº/(-|^éØR�Há¨04ëÖ¯¾?00P't�
[
…-;·äó[ü33336é·Ck®Z±c­>:`}"öjŒ¨k®œß•£ïœü~�ÌX…ü…;/Ì²Lfêrðî%ÔSK¤L6“Irïc›Ç¨¬0ôÀäa�(‚,(2ò™dnŽ8¨cŸ†(@Pˆ0+'up{‹·ûWã™ùº©›G~vyjJ¹I<qtJbÃ
;®	ÈøÆ‘áÕ«Vôtu´fM‘FC÷8e�” T›@ÎØ3ÃË…Ù"†+Äí¡…òÐÆuË„[•�Èv'J6Àt1¨«»R—u&÷.ë »õëWŒ=@Èéó9­Ÿ²#8wéMpË²!ÅzN	ù@�·)!åm
øBê8¶ò8ýG »¼•ìÂ·²ëNZpúv4`ÚQ§Ž70ïÇ²KS|*¦Å¤!]·:uÝ	·�×ûärîg(ÿ"¨çO’È»?##4ª�L$gY”‰¸‡°Ï�²N&œ<‹j�Š7DaÅ?…ý¡IØùs£cîÇK³Ë“	‚8‰'Q˜RÙÄ.öAc¬iãØùkWô÷–ò�íÙTÓdl2ÜðkŒÏIu$�é3ßÍ´â
2û¦fþÈî¡—ÛÍWoS^Ô4‘¯5+4¿Ù®Il„Ûì{7ª¾�rÏñøµ[èÉ?¤˜L@´zf7ãÆÙÜQm„í#&j:¬_Ò$CÚIÊŠòÒ•dœ\B¶“ËÈ.rjµW“ëÈõä09BÞFn!ï&·“÷“�ïT[÷ƒÊ¿c~ÏÎB¸Ñx\ jïxß±›ýÙ¥ÛfzZRqU=0>ÌL9(Zõóª¼»‘—Å9§ƒÃD¢—=DÔ�…²‰¼ÖÛ#¨KÌ¾oÓjáU~“Ëê<#�ù×O‰‰Aš\L+±îÏ\{ÍÄ¦÷×;oxË5×]{Ý•WL]¸é’‰K60’ìëíîjk{@ µó¬—ÙB)“%¼¬Aƒ’(éø lÏœRïf�E	ˆ’¢Ä•–ÑHÉ›D6ÉÕXe�mf1ÃÔ1AÁÎ†%K²ŒárI;¼U§(0˜d73YúÙD“ÙÚlJ›nÎJÜéFÃãÒ’il	ž9ETý_ItLsÒ/\�÷¸Ýž$ßÃ9LkwvÅŠ,]•]qw´Ý?´Íšý·îÚ?Ý˜ih¾ÁNó•�©*.ÞôdsdÿtŠóÓfÈëTÎåµ³qõðIMGžè¾Tpv5Yû#y§pé÷3œ7˜¸ÅTõˆ;í¦—FóÖ·'	fÃ·�IO&:z:ÝÊ×w¾”m†/jEöôìò\Í/üï¡ZIðP¾”º‹a`ªxÃ§_"úEßyg¸ÙúÇŒànˆßâwú#’b)î\O.v}ONÓb¹º>üEnõÔ	W$�2£Œ¸ÜÁªÙv°J£ôêAgÖ”ml¼	QÂ?º2ÚæùKëk?ÿDPs%>rõÖ•JÙ|:àj8ÒÑ“6£ž¿ü9ôý¥�­è8ô¾k–•Áé½ìÝg~uæ>ø.ÌdùI‡ m¦˜?Â$ÄGÙŒvZw†B!n­ë�PÈ×Àþ^XCAü…©Û¾5{ƒ€ãÑc#ë8©žç‘à)‰GÌ "Z›!µç‡$ÛoEdv	m7�d§aˆb,j4�>¯S¢#!3‚æ˜·&Çì•Ä ¢Çq`8€)ì‚Î&‘èì¿v&9ò•¯ðX³Öé÷l;¤oŸùíKWz þo]™OÝ„ÃòõÖ(¼óÐÝ¥>^tKtáÑ­·Ä¨aí?üÑbßÇ­#Ê[lß·3g~Ë7pä*-¤½ÚÂ&zæÙ¼ª�µ‰e„ƒöŒ<ó¯âéX²7Y.ÙæÝ¥&Œí2–šàhrSì³å¦¾Á÷7Á-™…{õ0x¿Ü’¦ÛôèßZ]¥k’_@� 5Ggq½þ	7»öñ¯¶[þi“žµx°òž:óSîvú�DGmÆö´-*‹ÞNË,©Ø\%f|c™ëâ],¨©—máÀaÙÀ¯pûCZ‚&Œ…Š&dãn#'òÁ)4n4‚Ô…Ïè#A¡«½ø94êÿ\±ær–hÄbÆ¨�H_¬-»°-IS5ÜàS9Ûs®Í§%Ï,2HÞ–¨RD^aÏo"×ÀvyøÎ·.Ü{Å0^…Oœº=‘-÷Mš#3ß™¾ÞwåèQ�|ðÛÇ““}­Iï~„1Ø&W¡Þ0EšP
lEž‚¬º®B�ýÏ‘ép�ójr;AjsáKdH^ ü$G[Z;pÊ¾a$Ê“õ¨�<ÚýÞãG¸öŠËGGºrl¢¢Ò�¬9#ÔÌÌ(ØRÍn3ÙDIï.•í±l|Ä\�Xé9¨¤»Q£3l?eä×	Tå°Ã²øÇÈËÔ»»ºE©?ÓIíwT˜g³‰ÍìaÝÛ¹8Ì6k‚|�g`¡ºèòÆ¨ÂÓqlÉÁÉšÎIã¼ÂÁõ�†ˆ±æÄ52ßr¶5s2·‘G`¸‚!O´gÌCEa'�:’$(b×´D›@þ[T45¾k¯R¤#Ž÷Ä�ëBœ¼]­Ñh4Ñ°þÝ½<?�oðk†6s•ÂE°ý€¾'ØYwb•(è£2ïiñç¯è’…G Ýçwdšê˜E0K©Ü§´—ªüj—Oo$ÄP¼ª»êL¯\Œ]³ðB´1f®½:Ãfâgx™ª�Îó¯�TY×p¼2Xâ¾�ç‘\b§(_Œ1 Žñð„¶QãbÎª4º×­p|G”´Y$SÈº¡„º´„àôŠY	<óTžzrO>i}ë©§¶Ï<Ö÷!ƒ(é{¨îcTþâ¾§~ø+ÿä_øÃ«WTîë#ôŠ¿~â/Oÿ;\wõÖýJp ¾@$­¨n«^œEä×T lŠ‘·‡ðœÈñ"b�…9Û Bç•8*Í!ÄÜ+£ÔàÈ¤Ìæ §ØTÝŠ’U¥BW.“JÄtŸ,’VhUb·§ 3I„‹’‹üHflä1j¤•‚=‘íæ(äh2!å€9ÃÓ0åªî,‡ê�šzªòÝ[zÄì`ªu¸MM-ÊªËú¨OÉ]�Ô"1mõDÄüº¶€#¼¾ÅáëÞ”Ë¯j^Óÿ•]Ó<DäÅd#ß±±Kì\ÛÜ6š£Á†ÄšpZï½t@¤ÑˆœÏY·¶ei$F¥SÎ±©€©ñ[ÚÄúkú"Ý…c½™t“�dOõ*ìi?+A4¶Uè¼Š*­2¯�ƒsì'%Œˆ8ë–\8¢9aÒ¾¸)$r�km‰Ç€Œ�®êï«”s-Ý­ÝéT¬9Þ
ú}šCH4Ù&=Ô;í¶)Õylª\YšŠ¦r2Õ3¾x‘Æ™CŽMŠpIdq¡¦Îfa¡¼5˜.ÚRÝÝå­þÀt¥{¢«kÂºaô†r’ì\©Àø.�6¦Û/Õ’aªíb!·ßyévÍïn¤|­¿««¿ñ_CƒÏúÌ¡¿«»¯kbûD·õ2K¾ø�½Þ™B†¾oŸ“š)çõ2Ýûö¹ñzqŽÂâVÓ/£<LT›|(}» †êÂ¨=K«ûm¿t[§Fµ%Qsv(}¸'Öê†ó­ÇÝ­±cßùQz[ J=Ö¬/º£ÆÍüä[JŸÕ_{fÚÿ‰ðÛž`Ph	•ü1!ËØc†é-yƒö©§aÇ)‡á‚W\ü�¯ñ6†o˜£müæç­º–r
äë€*[“ÕÌæ�9ùÝ–æöSí”UO©bnþ¨ã”Š/X,\AoD¬ôÚ²™º]6¯¿V4–¥—ûcŠ�<¤S–æ2õ¢’¥üVÑCX6õq–‡Ö±«ÇÔ2ÞÁ*Õ®&SaÆU¯g­�Ì>vúÌ{¸;¹vTuD+Û«Û4äÑÉDÐä‰²å6‚(	(§xQàç�' ¦…"˜Í±"ÒgUDaÀOâÉ6ð0ð«
�L*mlð·Z<.EWõÚÄ»ƒ‘{Ùöš£ÄDbæ#^ä�ÞÙÒ¬u2Ál�…<VžüxDë¿­cÖË"hÿÕš£‰X&÷™èî¢¯+èR[C]Ñƒ=ž¢¡i©×J­ßÔbªp#ø>Ð
ÇÚc½‹ÁTæžÙÞ\(‘8qå¹u6È ™ª^ÐSF&¨3CÅ0yVW¬1‡€sŽ03>�“°±y‘ð³LaŠÌ‘RV_
c¬¶¨1Ç"�^—b¨F­¦ÊòšêXÇrÆè~Ô|˜‘‰­b6¥b¥œ¯Í=Û.ªâÒ]lŠWÕÿÑÍDi�áO„®š¨6ñ{=žšÇ#k†ª¢‹ßÍ‹F8÷êÆXˆfÂÑL
FíÆB­Wò|(ôûƒ>C“Ý’ìUd¯Ìk¿Ç—À6:uæ1îsÌ«ÂCü¤¿º‚uî<)ÌMœ0¡1#‚íÏì<u€èõ:�^?sRtzœ=�—™›–ÁŒˆ`‘¦M½”T¼I/÷EÕï?}Ì§:ð%¹]íÝ»7èIx|Îåó-¤vìxÚ­¬ËT6ß7�ýå%Yì±ÃUG?H²ÂÖ´Ðºa³YÁ;œ,±%a5ŸbæÿÁlå„ÆQŠ_LdYcÞD–äyŒÏIóg�1Êäò$‹à|ºê\™J	_zEÐ‡JY[ºÈø®Áü‡/5ì™-Õl!ÈŒÙ|£Qg4Ì'¾T[[ƒ½›§ßðGý4
¾ÛóQ#\3N?… -f ·.¾%>œ{LõÙlÄ«¨æqÃu™Éñà·��úÝ‹ï:i`ÂÀI#6Ã/4›Æ¾<fà”Û†ë”Ý~�`ûåìök!UæaXB©Qo?¢ˆÊ¼ÌHožØMò†M±²?YH&ògÛ!ã¢Q(WÏ�º³;ÖÕ,Dµ»ÎœØ¬�˜ïE	‹ìò�›áe­œ<ž(;_ÆfP‚ÇýîãX—ã¦îµ[ÄY\+§-^¼ã$Óð MÍÍMQ˜0êµo÷2þé]ô¹}ŽÓè/›50Ì#†o8%5eäž>Äb8h£	¤
"aæÎŒ’9Ë¦A“~;=m=ÿr§ËÖÖ Í9,€/ìjô±ªÇsÚúQñ—;­-ôÛóFˆÇ=¾`�Ñ0òœosÏÑ—‰Š|¶•ô��TµÖ,
Âž6ªØ“C$â"ò[E”.'
/*ü¶ü^•y^±udŒß3W6Â–sL Ê naDm¬–jÉ”=o*Ýt5èp”Ù”UŽ¹ÍFÃÝ¡ý^Â�8#Øx>
Yüâ°$E2Ë¨�2/zŒÆá€ŽãÏo›{¸‘…‘�FgEOøüY.¼/Á‹âÓz‹²¸ZT]¢¯™úÞZëôP´c;MåYkÑÐQ2ðâë1—/eàU>·E�vÙÓ<>nýãŽññù VïËG¸‹P/L‘arIuëš4•N»&ÖY`>˜Š,ÊŠ¸‡­jA]ƒîa<"EžŽMÃ1U\F,‹³,°\Ë]{^&�.§3%Š‘9ø5¿!I\\Ã‘g+E£Pa>+•Ú
�@mEòíaøÇ‚•ó˜7Läò·.õ“m:Ñ?ÂÄ±ë’®²¾yGeôæ¬äµ9Yuù=µ»ûÖáMSÐæ%R?ýÐ¦;Y¢ *Ÿð�Ï¬qØÉQ¤¯OµÂè€ÚãÔàsõ;ëka‘¯Ç¬­#ÛÃ·r‘“{±½ZIÙ÷X–)l6À¨ÍÁ¢"Š:éR›·Æ&¡ VÀ\É�`Ã jAÞ™FÍ•ÎctæÚÊ<tIÝA—ØnÈ,"¢^ä™Ø„­™Öd)�¨HBC[Ú‹¨¿n¬0ÌT‚W›	3%³f„#é|‚
Ñœdyâ=qø7ëƒÉîî$å“ùwµôí¸öÑt¨•þ�”‹.t'éH|Eœ¾ëCùäBW2ŸOÒ–Þ–•}cCj	#qÇéCÄÍ,ØÑC¶7Õ>bÏP6AÁ,clvÈ¶l
R¶À¦„Ä@±3¸¦}?üÑ¾û^øØOaõO!ÛóÃöì¿�ÞÍ}?ù	©Û­jkô(RN ñkÝ·ÖvÄ©K¦Ay)Ø¦N ¬m™æ5GDŠt9gëþÌ!ºî•QøÝ	(e~Ä˜Ìö#fÆ]žw½f:›­Øê)�Ì*ƒí)½¶™k+õâŒ¼…E;}ï­·öZÉÅÅx'�:ØËóà„W}X²ï§ßþöÆ“‹+ñè6Ý	#º«O{Hõ-<_[—·ˆ÷ç¹ç¹õ¤�ôTKùlédi¥–Cåqôcësl¾ÕFþu ÜSéêlÎ†|^�±aÓð³éfÑMë.6�5#CÛ¶A"‹c�2ˆk;ÜTÊFÀ^ƒÍm»VÓ®])y´w*( nÜ …¥†ÃJ}‡Ó'p8J×;T:ÿÌ~x£3¨¼SóHð•rH®Å½MóˆûŽý¢�ÑR\-vä•ìáÒ[l~´…÷r;±Î¢Ü´þüîöfUû^”Å}s—›ºKE$É1ÖD¾0ˆ"�(Û8š@®›ükª®ÝuEk®Ã4#¦t0Vô¦¥	³›fìÅëƒLad)ê?Ô2“-åÃC“½Ò½	lÃ°½JŠûÃ˜-¸Ák%®=|å*OÙS½2”ã¤Qga6Ä‡±à‰Ë…®¬:û�«®u�tmCÌY¸FQ=k×¦ôôf„uÍ¡Î\¨y� aÿdFÑ<ç�çÑ”Ì¤?DÅuªqç:¯ýxÞéîu½þk°UOÙ[½²1Gk¯™–ðÞŒ#×YÏæ´žZV_JëÌ-¾d2#˜këEÀ‡gyÅct-âÝ†ª!À¹~_fM=Mc«³l-ÍF´Ø)Üƒ;¢ªõœõªg—8p7žñ0w±ªB‹õ¬ª²çp·ªZÛá:¦½Ÿç�'ÇÈ²ž|ûñB:±lM]©†L/“Kêj«@ÿß/È›®jI½3ÂVäùíE¢Åç¢þ(7@³È9r\¥8€¤˜•2	dñÌM•�Væ÷]¬%™¹2Ë¬¶zmŽ½’7øñµ?vòc×ÖO{Ë[»qK�:ñ™;·|#Òz±½"Oê¨°Wä@ñH¯ÏGÇû7xš3™¦xf·Þwý`�~Ì>ß?µsà»föo=1E/¾ct[£Áºx>èšÉ¶æ›—8Yódâ¹ªu_4ë�A¢Þg{ø ·�­�B9¿¬:Ø íM0Æ<\[±ŠmËÁ ÅÂñCŒ‰À‹s*¿s�HsL]ÁïÁq/#WX 5ÈÛœQcV»ùÚ/òó,qže"0FF¸Ž=4¿”Òõ§*‚û�.BàOUã�,BµëM&Ú9m˜‹ÂÊþ=•Rwg{kKs:Õ6>·*³µU¶‹B d_;Ã)ÔŒIðÛ 1‰rÕ¨!B†½I¶B)Sân¸ékÍá½õùÈª=±¾£)0®hš×y¸Œ'åƒ²Ó)W;½ÝÆæÿ†ìÉžþ—lOO–îŠ>¤8J‹’¶þã`2hL³°�Ñ�†ëùHu=¦i¬²½ÓÆÈÙL¶’‹È÷«Á�à 9 +[§ËlU?Žj¾Ž×zð1%öÌÖcÂ /°Õ«¨`£ ŠÒ,QÝ Èª2KdÍ‰èQ¶÷_Y”^�ÕóªZó˜u,Î'‰¬3êÙ ì}½¬AžDU]˜byÊÚ4oX?´¦wE*yÁäú‰5w¶�•+Võ®Êw%[R-¥R²÷²	´7ì™À¢G0‚L‰ubÅ¬”lÄBÆnj|§`Ž¶C¥>)]`îÒ’Éy¬ÝÍ==Í´ÚÜc÷Û§":ÌúÃa¿u�éú�·]ÁÑ}[ïâ¨uåfó©d1•n�¶,æ‹¬ç/ë¦Ü�Aú1»Cí¼°C¿È²8CôHDgsmT¸­ºiŽ¢Ò}»piª�Âï&–…ÇqÚž¾L ;VæjØs7öõ"?Ê’d¼·Æ“Öt3•§Î“òÊÙÑˆ�C˜C~‡^œCð�,”�N
üë1¡¬=’”úH¸yÙÞ"€¥±#).çùã^ä~s/
üÑ/2ßÌ‹PÕùb.²Ž #ÃƒåRG{:y–i¨¿“ipú€Y]ÐfK¿A(G¡†Çl|‘®™rË6p³­¹ÜáådUÖ&ÄGGÁíUé(h8ˆÕ¿•J^H—]&�æÊ”H]iÇ¼ã•JËØÊl¶rU¤`aFQy·lÝ'©ÔýU¼\—W¼`Rôº„¢ªŠ;O^€aÀ‡uûó3t;ó›©6F—È3ÈÄÁfò‡ü:ÓªÒ†¿†Uu”Z¬ãÓ<´ð„/•÷;æËû<žÛnóx|µPÊwÛÿòåž'ì[¾ÛŽ€¡DÞwwÍŸøZÞäF�×‘þ[ª™ jöl5Ç¼9™Ž±4¹à×õ ?ˆ\ÂÞëµ]QW=9·uu¦§'CWd+Žä#»�~5¦ýKl©ìû—Fòéo¾#œ%µõÊ»ù›×æl¡¤—�AòÕª»1%J’r[ˆyWÔkEf–S"0ÆÊŒls¶M™iv~lqø�³Í¨{/ã¤5Òmeº<£B*Ì×—È¢X#gwõõn6ïmþ##W}]�+ûû:‹]ÅÒJl#åõ9©ÉÌÔØ�u33…ÔdêÙzû™%)�. ¬ã"Ë‰4=¨rš¸ß©X/1†â<àÐeFÍïÜµËzñ?ÿ“þÅ§zšQÌ±4»¢ù¯ü§H¹‘’ât*ÿÍ’´Úq›>³úážâßúV½öðnÑPöéˆÜ³äBÛ_ëHU÷ F]{ÞP©C üp;EUºÞi›,$¨Y´	6k+RßüDd>ÀNÛ0ùûãíœ®úÝ®‰ñ•}éd,4\º[Ù.'.`&ÑrÖžÚÓß�°8f©Èìýlá²iÏ­³‰zû¾`sîlÛ¶Å©xÓ@Å³%Sè¦Ë:TŽÝ2€µænk�=¤íf�Xß5‘ *ý»âF5³-©IM�¢Øšj~žGFi	ª‰Á€ÛÏ‰ƒ>Ÿß]ž– 
å.>õHnÍ­a+v|û6dŸ¬4Ÿþ‘�÷Ñ¼uÖRù¼ì€hêWîDY¤‰p¬"‰ò­á¿S!m©&‡<±œ*pÑ�¬ª��²í3ôÊ™ûàùºÏ�ÂAG›€UÌ› ÀÊ"?`CÖõÁ Üjà¥u§ŸùÁmAüá“�õ.R_Op¿“k&*ŽÿÕLëî[A9!ðÇÍãh ­-Ø‹QÝãjAQ *¨ö<N†m*Ã“J™p 2µ-`ü¢Ä1ÿ!æYdØŠL6“�˜Ã0Sošl“qí.rrzÏ­WÄ¸p=x(oý÷çë“9).Óø@¨\Ü4Ø¼†ßãq/›Í\ü/Â9.C­Ó_ú‚õKä/~<©L#›Í‰d(œ—hÛ�Î„Z®àù{:Ç»8�#-MçÄköÒïò9úÔºÉtmFëdÏÖuR6q�ÔÈæ°ì
§™�tÑÅÙn¹²Ò½-[|k ¡©Ãsó‘x<›¾ù«ªé¬ßs¡j<·±³süâ��¡_µ´%â‡�¹;›Bú±Bv[~lÕàX6S]µ®§PL5„:Ç/aQ;«ímŸâG9×Ÿpß5Ó^‡TJÂ²3û½ð0~à¢Oá¶>ôÐÂº‡ž|Ï¿©¨ôP­]KßÊ9°4M¤µšØBN¶Üg³Ó{r”,Í�&õtY÷ˆB¨M�—Øþk¦à­ÏyÙœI‰Íï³)"ã$D&N<3^´çD¼w|óÔ‡—ßÝ7IÇWÞk}Éžù�ÕFvï¼ãŽ�»£¶íínËÓMª}­�ÒFùÃØÅ¨‡1ÔÍV�Ì!#cãböÕ›Ãµ”Ì¤™b%TÛmFTsþ±Ý¸eÓ³†­Ø°iž&æ¥–�Rnzèš{¶Ì>ÜÏc¢—o9¸¦÷ÊñVšÛ=¿£y½W7ÙtL»w¤ÿÎ‰ïÞ¿fð84q¾èâ×£>XêÍ�]µÿª±\sz½§Ãp�
ê¾‘Cûï¶!Æ«^§.ÖÓ ‚bo}I–  ëpV%@Ì…UBìÌªÄ|ª(?–ÍêÙTÁ®RÝHoÛè™u‚2²fÀªæU•ÈÑ®f®7¸i¿ç”©{×OìëÅ’a{Wlá½â˜@Åþ‡·]xÏ¾¾zý‰‹&N¬ñ¶Ó¯žržõëë5é-!]Ï»ÄÑqÀz<ŒÕX1âÓ—ìL]tš­ú®º‘y“ójhÉd. ÈRP<úëV¦ŒÞ·x“E¯õ]ë;ˆ‰yáíÖ[¼Å¤º­ïx“vŸÿ/øý5æ¬0?{ë¿ÅZj¹v³\3K®>–Ö—*záë½+Óàƒ.èòT·Þb½Å—ªÛq¿Žùžªù+HpN¶AÛ¥ÔËÜüR½Àðv_wÚg=�9! ƒK1Œ¯°žÆb“özœå{I%ì+kªU"¢J.J{d�¨ Q†|8ž›xµ<ê”KÆ¦§nogë:tÝ¨mÿÔø:Û?ñÌú”®yËä@÷¼o´½í½øØ»nÙÚ�ÌdTÍðÇÞx§÷Þ^äû·Þry8‘èIAÂz'´Yÿ´8·ø[{Ý!›Ÿ>TÕ›D/¶’Cìgæ¥úl@
i’9ý1ÁD™`B^Á­1_r1EMDèÑNØÎs¿+î2F=]U{Ó¥rº`oü8»öµR·I05WBÜaÖ–þÖ7-³W¯.™2³u‡Î7³ÆêZ33³Þ!©ªd]—.B9O§‹öÆ`ÏaÇvëÁÃWEvog%Þc�Úiž^=v¼úeåÔ£(úá{Ö¿1§L(ŠUÁe'´]lˆÀ|<¹iú„=?GªXEF«Ã:²N…íjÕ‚m2g“œÒ,Š ¦àÍrlS>6K2KY¶}(å)"òØÊÞJRÏ¤uäóö,5Óë™že.]0›#k�@­A ÎåÀn¡Å¦cÛ® n†S7èP(¦Áfã½õó*M\˜–TÐDú€¤.LÐ?Ÿ¢.ÉZ'¹(½»˜^˜N•AÙ«£ðÙ¦¼ºWyÐ²Súëç='íÄö|à´[ùÎ“éb1}Ò†‰HRQëápmýÚ#öZg¶_e„­Äæk~C¶T`†CAÎód’�	ãx„nð{Ù:?ä-HG[tÏ=ú�4[ü˜/ëu±S©ÓÈ4LZwjœhÝ›eu¤œZðaŠiúrº(Ñ·.—4�^½pH¥/lµ;•ÞÏNç®¹•‡5’
ùBÕíSQêä�òØ{”«/:ê ˆ¿@"¶·…ÀÓÆ²%Æ²9ŽužŒ
Êø)NqiîR"Ù‚l³…s/KRíúý±E‘LÔÓ‘-ÀÕPîëfJ�{˜åZˆ{kŽ
•:™ ÚcTX›²KÒºTÙ¬í¤€Á<¯¼ˆù™ÛÙ�‘4lüàˆÖ…¸õ][’Óm(±5ù'c#ìŒš/Ü›²É!ÅÒXï}àeëv´éX€¾l_=.É?q—ÏÎ7Nc[ë$D’¤@Ö�ÍäT5àÇ¦nOQI¬öPY¡ªƒ¯·z››D]ŠI¥Yg}mÞ¬«¾6ïì"¯ai¶·Öe¶¾‹²�Bo>ç¤®ö¿©„È&Ó„õKbh¨XllÚ<416Z\S\ÝßÛ•kÎ4&q|ûKe7SS£lZy	B±þ0kK2z­ã^ý¬mÖæ‹ÂÙk[‡}u˜+xŒ¨¹à«yä¼b”Ý£/H%>ùëÃÍÇYÇÚû)^'«p×âÕò»ªL{ŠÁ…ÃvÜ�x2<™¿÷Š%�þ4í�^<}?üöö>�Ó¯»äY¹ÂÆ¿IÚíµ<aÆS6ƒt�Ì�m`Êd#sÕ¥ÜX²„ì¤½ÅLÝ')#-Û–UÝ­¦£¦u3jÚž4ô#6üªÝÂ;�ncF
�Ø</`<øè«6P°÷2ã[8‡í©uãã©n@¶-!ÛFœÌQ‰›•¶á3Pòš-ÌtßêêÊ¾žRWG<Ú`ø¼•»UæYd,ÚbÍÓAišaès«ˆ`NX\CqnM†ªMƒûqtá^£èü˜#J·™y÷ÇÔ…·ÂC1Ãúòbå�7ŒÓ—>œH/Ü»X{¶�b.ZtÈ°NzŸr*þ�ç)mÇÖeía¥þ*šÙšŒ=Íœm�ÂÖPcÍ÷1ìoù<ý*¶�I:ª­Ì¯zÞS¨"°Í3ðÌè!†®)ö&I‚½�u\b.÷Ps®²÷mgô¯|ÁÚüîÇŠè²4#fm$TU÷W1x(�ª>û,�Ö[ÝO?žiÐ¨í��úÊfä;kÃ;Fx�mâ·‡¢Áas¶ažy2#[ÖÛúºQìÝÛË€Ø[Tu ±¦Æ _÷¸‘$!)Ù-ÙÛ¥ž£ä Ü®o ÊLíf€®·ÊrMÇïN¹[ú86î2Uç¤½×œË0\}““}'÷If<QDùÓLzÈù^5€r’[ÝK9ßŠl1¢5Æ8b7ÛÝŠ#`/¦—¨-¡—Øz	«*1U˜m> K'/ºr,uÛ']–ªZøƒPjã–L Œó…diíÐ@¹˜kÏ¤¢á€îrHA9ès0Ãb¯arñsØn}i:ãì/¿+ÌdÙú�SÎ@çYn÷¥Øüë±³W_ÓÉ	2¦ÿÊÂÉ³<ÎzÚˆZ;ù—úÁeW‹¼n	/|ûKE`€l€ëªn{«ØNE,(/èlƒ9„|T”.GÌ«ŠT�ÓAUõ2&_4âœñû<.^sƒCÖ3Ì™K’ÅomßE�i­§~6«õ:™‰ª2÷æsc”0\ËÍv*ûÿ•]uÌ6�ü1ù[kr1?…ÍÃOW›“ÉÁƒlIüèù#ÃkÏZ³zU59�XÙçõ6øýÉTÔ`“ô“¥$s;^rŠg³•5¶É|ƒ¶›ŽÌ¶”dNœlK:ypÀöhe»·²I‰™{zA§ÚÞ,"/Cad}O|AþIYvÎÙÿ-¿ð÷Öç¿�Šž,ª7¯�•ßæeQï<pokèÖPë=Ù£¥{o)Ô¡ªâÂZQzTN*Ž0*Z êèÍyÈ:PXÐêÑ¼õ¯¢FJWÃ¯ûûÇÇûûájë8³,œ¹þ
iË +?«1¡®wéLa8»�R{Ë·máež®‹›T¥’)mÊâuä¥¯ŠnáIYu²kvÏÊ³‚ð¬ Ÿ³‹:R³Y\…åÈa9ú>ËÛ"°V¯Í–6PµIÀ}î=¶ËW*·ÝÑÄe{QŸu�……Å·k²ôUÁ->)ÑAÇÂˆ=>gÈ¬<òÒX»ÛƒíÃßNV’«‘ÇIbk_ØˆZ<Ï;€´ Ê­]\Œ.‰lVb[dÿC�L�u ª¨#
Ô GÍPÞé¨»iþµ){—õÉÅ$ˆR¦«É\GSÔãR.u¬Ì­Ì¤£íMí¦áŽx"²D\àÒlÑÁ|Ší�²¥(èç+µ ]|ˆBeéiq ñø±Ÿ®¾æë?ùÆ^nõOßöF×ûŸ8Hk�ýOÀÇ»:·eVgð»­³ËšÄP–…²z¦öˆ¶4cˆ¾ï×²“½/Ì#¶Ë-í–ÙI�“�V?Ü±œ<yœäÑ!‰3&¨Ä¡©ŽÙ·Ÿ\À;~&8Ú©æœÕm3æ¤¡ø8�ÁÞŽQ?Û‚CCÕjwW¼¾3%Û
dhx‡zuMûŠr×`÷`K&Öï|íž”N•×ÝÆ�(P*lwÉftÆ °íØ«×7eä˜Š³è¾�^0žŽñžxÞÁÄòqvxÁŠ:ÄM[—rà÷Ün{cÛëkjÎÜXuè�­�Ô“°ÛÏCtddá‰áaúÖÅd·cÖ�Ó1GøáZ´EÙ_ÛïÉOÒØæ+ÈýU³ÐB%9Žšg$àÔ�
¹a¨Óv‡¨q$*³Ò
e«àˆ$æŽ"ÉS*0M”‡º“ãø,Î^ŒŽ©&Y*i‹íX2:]�y÷UJùîŽ¶æl*Ñml¨­‹À‚º+lßû¿ó,Ép¶†Ö›ôÂÒö+äM¶íg�ûKWˆÃ]~³§À;y'|ôvÚg¸ì ~ÿÓÉ[_Så{‘á^W;Ó�Z“øÄúr­Ý#ð‚f]·Zš�†õþ>¥=tècö‘aVáUûïWÈElŽeÝ
*‹õÝ÷�-Ð�Whó`$¢<étP‘mÃ"™eó£lšdgP¦PZ)cÓSLl\?¼vM5“Ðk;î»˜•µ•6¨i)öº�ßþÓî²o}÷ÚZâwA¢ú5Íÿžíôm~½i6Lz?ëZ&|„‰#Rw�©‹(W}�ó¢lølscÒ^'g0sÝþŸE™Îú?+B•Çž�¢×ûT%øOûDÍy™+$Î=ìpI’aH’[Í0­ÿv†…V|zúa§šÜpPáêkÔPn½‚eK“·UÕ8Îeo•T7^Ê ’=�0£h¨¿©SPUm„­ â§¨¯vnÆ»ì9ò·Ù³)0Ï×v…±ãr|mW˜T"�4ÚÿãÇçu;*û?ICÚv¹JD †×ß‡ð#‘Å*—
y”…%Ô#ìk{; O?:<üh*õÁÁ�©TíúÄÀàSœãÐ‹ÃÖÓ‡†7m>]Ã/ÚW6¿¾Š¿Î¶£Ô¸u›Má}d|·æ4³_ÕG|*Ù£{EŽ4:Èe~�ÀAƒË—à
4¸sÄ|ªì›Á,�ÅFfP‰†ƒÑn‚P,šÉ@Œ4@¬a&Â¹ÜLÂç›SHÚHÚLrn7½�‡åzÆÁW½ÛGçê/o ×žÿko¯Þø‡½SÛÉ’�Eßl!ì×RêžXö~7]‡Øu²¿¿½}q¿åþUý«ªƒZ{™'E©XÈwwÕvtŠµÅÚZ[šÙ?£yÝ]——ÍðeÎMzõí”ŒrPXØ2;¶¡·”¤íÛø£	f{Ã•’^{w8æ»—ð×�Œ<³PBñô}ê™ãÃ§ƒ##ÜÖáá…Òð07=lýøYK{^±&árë.ÚwüzãÂvì~<�àçôýx¦ý˜è	vƒö[›�ÃCÖ]Ád‘g†ÏU]
"ÒåÒnÛ¤PÇÒk”ù?ø"JÄ§ì‰†�œâÖ•Ëˆ'MÒ²'…:¦—\–ijädÃ”/‚J¡¹|[‹€",‡Ëkc—‰øØ]îvðºÜ^¶ÍcÚãJÏ�P3ˆfHœiè¤f¯)m#­„‹·r3¹@§ëêÍõÝÉ..5íÞõªÒE÷Üòâ¥‰<W+_Z6æ^]@	b{X	¥XëÜÿ…"Vïý“•_`¿Ë¡ê3TIí²QŸXVÈ¸=
öŽŒ0|·¸ûøÈ…#nY¶ÏÙèùË±Þ sÝyÍyíÞäµÝ9›=g¼ðªñÁþ]àÙQÂö6«�•ôòñ‚wÓñ³ƒêKÀ[f›¡ÕŽñ’ ŽŒàÀxfäY6à•gGžyöø°59|úe>>	‡à•‘Kcpn˜ó�ØQáø¸uK‚ÉáòÚÅÈðð³l-fŸ¸|xØºËº“Ý;—cÎ,
ùÿ GG†�xœc`d`` b7	¾x~›¯ÜÌ/€"7²ýÅaôÿÿÃXÙ˜Ó€\&�( \
T  xœc`d``úŸÅÀÀjúÿÁÿÏ¬l@P ‘aHxœ]�©Â@†÷ŠÃ¤**@n´@j@ÆÂP‰‹’AÆ!@d2�Ç¿gvß¼û”c²uN¦ÔG»¡Ö’C?ÉPâ©~ô¬À8ñÑzy¦‡ñg³¤6ÉSË8—‚Ï`óŒñŠ^&_ˆï¨³û+6äš<17ñ5j€ÜÓÇrñ·F †O'û˜ú;úçÃÜ~û³+z§¶Øújüp‚øÓ§!Ë »™ª°÷ô±>~¢/è]/¿vWw›Ú`^ÆØk"q|       hxÌ\¨þ˜~Bú¬ì(>vòjÊ	:
*
�
È
ìˆìH¶<Š¸ü˜fÈ æªPtÚ2€¼Ø²b˜Àæ0ª<‚"¦äŒ" ÐZÔ ¶ ì!Æ#$%N%Ž%Î&�'j'Ž($(ˆ(Ð))‚)ê**>*h*Ô+r, ,R-. .X.ä/(/’0j1˜1Ü2 2Ô3�4>4ê585¬6ø8™    q ™ $      f v s  #p    xœu�ÍJÃ@…ÏhëO*
n�•´ˆé¸P(*ºÑ�H·’&“Ÿ’fÂdZèkø>Œ/á³xšNE*&äÎwÏÜ{çd œâëç†ßš˜­yû8Þ¥~ï¸F~r\G¯Ž÷¨¿9nà
±ã&ÎðÎ	¢vÈlŠÇ'âØñŽÄ…ã]ê×Žkä�ã:ÎÅ³ã=ê�ãÆ¢tÜÄ¥øébiÒ8±²5jË~·w+'K©)¥¹ŸInmJ9”‘Î­Ê2íz¦²(ÍCe^T<Ï|³I7ëX™2Õ¹ìyÝ�ô¨re|«ÂÕôr÷­�ddôL>¸¹²0zªë%Öw�Îïó0‚F�%R^U‰Õ6×>ºèá–4a…dåº*Esv$ÕNÉ|È/b–SU¬ÈÈÆY•GUoH6xaŒÙŸqŠù³»��«XRYM—ôåÑÝvÕ#c^‘_9¼—Xð´>UËŽ•KS¹’xØò+y«½)•€ºWÝŠ¥z‡ßþïú=ƒ…   xœmT÷{Û6Õ³)J¢e+qÒ¦{ï–Ý{¥mÒ½÷xQ‚8¥8}‘täï+ Þî78Úu_2úÿï{ØG„1bL0Å	0Ç!Ž°À\Ä1.á2nÃí¸‚;p'îÂÝ¸÷â>Ü�ð ÂÃx�â1<Ž'ð$žÂÓx)žÅsx/àE¼„—ñ
^ÅkxoàM¼…·ñÞÅU¼‡÷ñ®á:>ÄGøŸàS|†Ïñ¾ÄWøßà[|‡ïñ~ÄOø¿àWü†ßñþÄ_øÿ@`	‰„+Pø%4*0jœÀŽ¢‚+Ú—­KòVëFZ"3³Ô¨›b©)RRíbKšE6oÍ-£Hr}·u8˜f¼1Œ�M¤ë¨PD6ç³·õX$ËAæ2vÂ®ÈÍNZ%KÍ\F­É8²ä—µ¢Í,,©V�›÷>•2m“r­©¸5.ªÈ´qCÂÊb¾QÞ{“JÍE”)×ZHjý�wV•ºI_¦cK‡F¬—Â¦9ëŒìq/Yf—vŽ³Ì—©¤p”4¤I:Ã†&\“1´™Ð_´tWvýVÌ+M™Ukš„œÂ^•™²ÊŒ©ªÝé,WšÒÂU:éKª•9:k@j|Ôx;
÷õ9^Ü½K³úÒ®Æ÷eÃ¶œ4>¦!{î,³\/ùÆå]�¯f›êbWé�ŽúÔšÓJ+S&ÂZß¾0ËiÛº×iÊÝA­Zî SBó*U&ç£K6¹²Õ…^Î‘qŠÍa¯è¨´è¥�QC¤0Ç!RßÑÁ±#ç8t´™wIÈÖ®éÌ70u>à¢âl¼]�íŠÓZXŸË4”›Z§»á8?‚d‹T%VÔ)%g4ïxæ	æ÷(¨;³µ'<wP´™âã[ã¬-­·Íñù^„Ë’>š‡‡gï.H‘l9µì<ïR; ½×Ö“œíFØ,Z
YF¡ÇQ˜ÏÔÏ}û¦’õFe®×¢qWeHjßÓoKZ¿ïÙ*nM¸`hbg5lÝ,,ÛL¶¨­Ï£9Ñ‰¯''ß3IC�sÿ¶ÎÑrû'˜øgâz*QÑ¬{>Bëy‡”Y“u£ÑÄÅ  xœcðÞÁp"(b##c_äÆ�ÉX�6102h�›¹˜9 ,>0‹ÍiÓ 4'�Íî´‹ÁÂffpÙ¨ÂØ±Á¡#b#sŠËF5oG#‹CGrHHI$læabäÑÚÁø¿uKïF& v#ô                                                                                                                                                                                                                                                                                              includes/File_manager/lib/themes/dark-slim/css/theme.css                                            0000644                 00000147272 15266052703 0017270 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Dark Slim theme for elFinder 2.1.43 or older.
 * Not supported MS IE!
 *
 * @author	John Fort
 * @date 	21.01.2019
 * @link 	https://github.com/johnfort/elFinder.themes
 **/

/*************************************/
/*				MAIN				 */
/*************************************/
/* Hard reset main rules */
.elfinder{
	font-size: 19px;
}
.elfinder-mobile{
	font-size: 18px;
}
.elfinder,
.elfinder *{
	font-family: 'Trebuchet MS', 'Tahoma', 'Arial', 'Verdana', 'Helvetica', 'sans-serif';
	outline: 0 !important;
	border: 0 !important;
	-webkit-border-radius: 0 !important;
	-moz-border-radius: 0 !important;
	border-radius: 0 !important;
}
.elfinder *{
	-webkit-box-shadow: none !important;
	-moz-box-shadow: none !important;
	box-shadow: none !important;
}
.elfinder .elfinder-button-menu,
.elfinder .elfinder-button-search-menu,
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub,
.elfinder-dialog,
.elfinder .elfinder-quicklook{
	-webkit-box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important;
	-moz-box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important;
	box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important;
}
.elfinder .ui-icon,
.elfinder .elfinder-toolbar *,
.elfinder .elfinder-navbar *,
.elfinder .elfinder-contextmenu *,
.elfinder .elfinder-table-header-sticky *,
.elfinder .elfinder-dialog-resize .elfinder-resize-handle *{
	background-image: none !important;
}
.elfinder .ui-icon-gripsmall-diagonal-se{
	font-size: initial;
	opacity: .6;
}
.elfinder a,
.elfinder a:link,
.elfinder a:visited{
	color: #999;
	text-decoration: underline;
}
.elfinder a:hover,
.elfinder a:focus,
.elfinder a:active{
	color: #ccc;
	text-decoration: underline;
}
/* Reset jquery-ui rules in elfinder container */
.elfinder,
.elfinder .ui-widget,
.elfinder .ui-widget-header,
.elfinder .ui-widget-content,
.elfinder .ui-state-default{
	color: #999;
}
.elfinder,
.elfinder .ui-widget,
.elfinder .ui-widget-header{
	background: #1d1d1d;
}
.elfinder .ui-widget-header{
	padding: .4em .2em .4em .7em;
	font-weight: normal;
}
.elfinder-rtl .ui-widget-header{
	padding: .4em .7em .4em .2em;
}
.elfinder .ui-widget-content{
	background: #292929;
}
.elfinder .ui-state-default{
	background: none;
}
.elfinder .ui-state-hover,
.elfinder .ui-state-hover:hover,
.elfinder .ui-state-hover:focus,
.elfinder .ui-state-focus,
.elfinder .ui-state-focus:hover,
.elfinder .ui-state-focus:focus,
.elfinder .ui-state-active,
.elfinder .ui-state-active:hover,
.elfinder .ui-state-active:focus{
	color: #ccc;
	background: #4e4e4e;
}
.ui-selectable-helper{
	border: 1px dashed #666;
	background: rgba(255, 255, 255, .05);
}
.elfinder .ui-tabs-nav{
	padding: 0;
}
.elfinder-rtl .ui-tabs-nav li{
	float: right;
}
.elfinder .ui-tabs-nav li.ui-state-default{
	margin: 0;
	padding: 0;
	font-weight: normal;
	background: #222;
}
.elfinder .ui-tabs-nav li.ui-state-default a{
	padding: 6px 10px !important;
	color: #666;
	text-decoration: underline;
}
.elfinder .ui-tabs-nav li.ui-state-hover a{
	color: #999;
}
.elfinder .ui-tabs-nav li.ui-state-active{
	background: #292929;
}
.elfinder .ui-tabs-nav li.ui-state-active a{
	color: #999;
	text-decoration: none;
	cursor: default !important;
}
.elfinder .ui-tabs .ui-tabs-panel{
	padding: 10px;
}
.elfinder .ui-checkboxradio-label{
	background: #444 !important;
}
.elfinder-rtl .ui-checkboxradio-label .ui-widget{
	float: right;
}
.elfinder .ui-checkboxradio-label.ui-state-active,
.elfinder .ui-checkboxradio-label.ui-controlgroup-item:hover,
.elfinder .ui-checkboxradio-label.ui-checkboxradio-radio-label:hover{
	background: #333 !important;
}
.elfinder .ui-slider-horizontal.ui-widget.ui-widget-content{
	margin: 0 8px;
	padding: 0;
	background: #3e3e3e;
}
.elfinder .ui-slider-horizontal .ui-slider-handle{
	top: -.22em;
	background: #4e4e4e;
}
/* Reset form elements with jquery-ui */
.elfinder legend,
.elfinder label{
	font-weight: normal;
}
.elfinder label.ui-state-hover,
.elfinder label.ui-state-hover:hover{
	background: none;
}
.elfinder fieldset{
	margin: 0;
	padding: 2px 10px 10px;
	border: 1px solid #444 !important;
	border-radius: 8px !important;
	background: transparent;
}
.elfinder legend{
	margin: 0 auto;
	padding: 2px 4px 2px;
}
.elfinder input,
.elfinder button,
.elfinder select,
.elfinder textarea,
.elfinder .elfinder-dialog-upload .ui-button,
.elfinder .elfinder-resize-preset-container .ui-button{
	-moz-appearance: none !important;
	-webkit-appearance: none !important;
	appearance: none !important;
	display: inline-block;
	margin: 0 !important;
	padding: 2px 3px !important; /* input, select, textarea */
	vertical-align: middle;
	font-size: 13px !important;
	font-weight: normal !important;
	color: #999 !important; /* input, select, textarea */
	background: #3e3e3e !important; /* input, select, textarea */
}
.elfinder input,
.elfinder .elfinder-dialog-upload .ui-button,
.elfinder .elfinder-resize-preset-container .ui-button{
	height: 24px !important;
}
.elfinder button,
.elfinder input[type="button"],
.elfinder input[type="reset"],
.elfinder input[type="submit"],
.elfinder .elfinder-dialog-upload .ui-button,
.elfinder .elfinder-resize-preset-container .ui-button{
	padding: 4px 12px !important;
	height: 28px !important;
	color: #999 !important;
	background: #444 !important;
	text-align: center !important;
	box-sizing: border-box !important;
	-webkit-user-select: none !important;
	-moz-user-select: none !important;
	user-select: none !important;
}
.elfinder select{
	-moz-appearance: menulist !important;
	-webkit-appearance: menulist !important;
	appearance: menulist !important;
	height: 28px !important;
}
.elfinder textarea{
	overflow: auto;
}
.elfinder input[type="radio"],
.elfinder input[type="checkbox"]{
	margin: 2px !important;
	width: 16px !important;
	height: 16px !important;
	vertical-align: middle !important;
	cursor: pointer !important;
}
.elfinder input[type="checkbox"]{
	position: relative;
}
input[type="radio"]{
	border-radius: 50% !important;
}
.elfinder input[disabled],
.elfinder button[disabled],
.elfinder select[disabled],
.elfinder textarea[disabled],
.elfinder input[readonly],
.elfinder textarea[readonly]{
	pointer-events: none;
	cursor: not-allowed !important;
	color: #888;
	-webkit-box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1);
	-moz-box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1);
	box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1);
	opacity: .4;
}
.elfinder button:hover,
.elfinder input[type="button"]:hover,
.elfinder input[type="reset"]:hover,
.elfinder input[type="submit"]:hover,
.elfinder .elfinder-dialog-upload .ui-button:hover,
.elfinder .elfinder-resize-preset-container .ui-button:hover,
.elfinder button:focus,
.elfinder input[type="button"]:focus,
.elfinder input[type="reset"]:focus,
.elfinder input[type="submit"]:focus,
.elfinder .elfinder-dialog-upload .ui-button:focus,
.elfinder .elfinder-resize-preset-container .ui-button:focus{
	background: #333 !important;
}
.elfinder button[disabled]:hover,
.elfinder input[disabled][type="button"]:hover,
.elfinder input[disabled][type="reset"]:hover,
.elfinder input[disabled][type="submit"]:hover{
	background: #444 !important;
}
.elfinder input:focus,
.elfinder select:focus,
.elfinder textarea:focus{
	background: #4e4e4e !important;
}
.elfinder button:active,
.elfinder input[type="button"]:active,
.elfinder input[type="reset"]:active,
.elfinder input[type="submit"]:active,
.elfinder input[type="checkbox"]:active,
.elfinder input[type="radio"]:active,
.elfinder .elfinder-dialog-upload .ui-button:active,
.elfinder .elfinder-resize-preset-container .ui-button:active{
	-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important;
	-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important;
	box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important;
}
.elfinder input[type="radio"]:checked{
	border: 4px solid #3e3e3e !important;
    background: #888 !important;
}
.elfinder input[type="checkbox"]:checked:before{
	content: '';
	position: absolute;
	top: -5px;
	left: 7px;
	display: table;
	width: 5px;
	height: 14px;
	border: 2px solid #999;
	border-top: 0;
	border-left: 0;
	-webkit-transform: rotate(45deg);
	-moz-transform: rotate(45deg);
	transform: rotate(45deg);
}
.elfinder button::-moz-focus-inner,
.elfinder input::-moz-focus-inner{
	padding: 0;
}
.elfinder input:-moz-placeholder,
.elfinder textarea:-moz-placeholder,
.elfinder input::-webkit-input-placeholder,
.elfinder textarea::-webkit-input-placeholder{
	color: #333 !important;
}

/* Effects */
@-moz-keyframes blink{
	0%{opacity: 1;}
	50%{opacity: .2;}
	100%{opacity: .8;}
}
@-webkit-keyframes blink{
	0%{opacity: 1;}
	50%{opacity: .2;}
	100%{opacity: .8;}
}
@keyframes blink{
	0%{opacity: 1;}
	50%{opacity: .2;}
	100%{opacity: .8;}
}
@-moz-keyframes spin{
	0%{-moz-transform: rotate(0deg);}
	100%{-moz-transform: rotate(359deg);}
}
@-webkit-keyframes spin{
	0%{-webkit-transform: rotate(0deg);}
	100%{-webkit-transform: rotate(359deg);}
}
@keyframes spin{
	0%{transform: rotate(0deg);}
	100%{transform: rotate(359deg);}
}

/*************************************/
/*				TOOLBAR				 */
/*************************************/
.elfinder .elfinder-toolbar{
	padding: 4px 0;
}
.elfinder .elfinder-toolbar .elfinder-buttonset{
	margin: 1px 5px;
	background: transparent;
}
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button.ui-state-hover{
	background: none;
}
.elfinder .elfinder-toolbar .elfinder-button{
	cursor: pointer;
}
.elfinder .elfinder-toolbar .elfinder-button-text{
	margin: 0 0 0 4px;
}
.elfinder .elfinder-toolbar .elfinder-button-menu.elfinder-button-search-menu{
	background: #292929;
}
.elfinder .elfinder-toolbar .elfinder-button-search{
	margin: 1px 5px;
	min-height: 24px;
	background: transparent;
}
.elfinder-touch .elfinder-toolbar .elfinder-button-search{
	zoom: 1.15;
}
.elfinder .elfinder-toolbar .elfinder-button-search input{
	height: 24px;
	padding: 0 22px !important;
	color: #999 !important;
	background: #1b1b1b !important;
	font-size: 14px !important;
	-webkit-border-radius: 2px !important;
	-moz-border-radius: 2px !important;
	border-radius: 2px !important;
	box-shadow: inset 0px 0px 8px rgba(0, 0, 0, .2) !important;
}
.elfinder .elfinder-toolbar .elfinder-button-search .ui-icon{
	margin: -9px 4px 0 4px;
}
.elfinder-toolbar-swipe-handle{
	height: 40px;
	background: linear-gradient(to top, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%);
}

/*************************************/
/*			STATUSBAR				 */
/*************************************/
.elfinder .elfinder-statusbar{
	padding: 3px;
	padding-right: 18px;
	background: #292929;
	color: #666;
}

/*************************************/
/*			WORKZONE				 */
/*************************************/
.elfinder .elfinder-workzone{
	background: #333;
}
.elfinder .elfinder-workzone *{
	font-family: 'Verdana', 'Tahoma', 'Arial';
}
.elfinder .elfinder-workzone .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board{ /* Trash */
	background-image: linear-gradient(45deg, #00000008 25%, transparent 25%, transparent 75%, #00000008 75%, #00000008), linear-gradient(45deg, #00000008 25%, transparent 25%, transparent 75%, #00000008 75%, #00000008);
	background-size: 20px 20px;
	background-position: 0 0, 10px 10px;
}
.elfinder-cwd-wrapper{
	color: #bbb;
}
.elfinder .elfinder-cwd-file.ui-state-hover,
.elfinder .elfinder-cwd-file.ui-state-hover .ui-state-hover,
.elfinder .elfinder-cwd-file.ui-state-hover .ui-state-active,
.elfinder .elfinder-cwd-file.ui-selected,
.elfinder .elfinder-cwd-file.ui-selected .ui-state-hover,
.elfinder .elfinder-cwd-file.elfinder-droppable-active{
	color: #f3f3f3;
}
.elfinder .elfinder-cwd-file.ui-state-hover,
.elfinder .elfinder-cwd-file .ui-state-hover,
.elfinder .elfinder-cwd-file.elfinder-droppable-active{
	background: #444;
}
.elfinder .elfinder-cwd-file .elfinder-cwd-icon{
	float: none;
}
/* path in workzone (case of swipe to navbar close) */
.elfinder .elfinder-workzone-path{
	padding: 3px;
	background: #252525;
	color: #666;
}
.elfinder .elfinder-workzone-path .elfinder-path-roots,
.elfinder .elfinder-workzone-path .elfinder-path{
	display: inline-block;
	position: relative;
	margin: 0;
}
/* view "icons" */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file{
	margin: 2px;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover{
	background: transparent;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover .elfinder-cwd-file-wrapper,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected .elfinder-cwd-file-wrapper,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.elfinder-droppable-active{
	-webkit-border-radius: 3px !important;
	-moz-border-radius: 3px !important;
	border-radius: 3px !important;
	background: #444;
}
/* list view */
.elfinder .elfinder-cwd-wrapper-list{
	padding-bottom: 1px;
}
.elfinder .elfinder-cwd table{
	margin: 0;
	padding: 0;
	color: #bbb;
}
/* list view: header */
.elfinder .elfinder-cwd table thead tr{
	background: #292929;
	vertical-align: top;
}
.elfinder .elfinder-cwd table thead td .ui-resizable-e,
.elfinder .elfinder-cwd table thead td .ui-resizable-w{
	top: 10%;
	margin: 0;
	width: 3px;
	height: 80%;
}
.elfinder .elfinder-cwd table thead td .ui-resizable-e{
	right: 0;
	border-right: 1px dashed #444 !important;
}
.elfinder .elfinder-cwd table thead td .ui-resizable-w{
	left: 0;
	border-left: 1px dashed #444 !important;
}
.elfinder-touch .elfinder-cwd table thead td .ui-resizable-e,
.elfinder-touch .elfinder-cwd table thead td .ui-resizable-w{
	border-width: 2px !important;
}
.elfinder .elfinder-cwd table thead td{
	color: #666;
}
.elfinder .elfinder-cwd table thead td.ui-state-active{
	color: #bbb;
	background: #333;
}
.elfinder .elfinder-cwd table thead td.ui-state-hover{
	background: #2f2f2f;
}
.elfinder .elfinder-droppable-active .elfinder-table-header-sticky table{
	border: 1px solid transparent !important;
	border-bottom: 0 !important;
}
/* list view: markers files */
.elfinder .elfinder-cwd-view-list .elfinder-perms,
.elfinder .elfinder-cwd-view-list .elfinder-lock,
.elfinder .elfinder-cwd-view-list .elfinder-symlink{
	opacity: .9;
	transform: scale(0.6);
}
.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms{
	right: 8px;
}
.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock{
	right: -10px;
}
.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink{
	right: -7px;
}
/* droppable */
.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{
	outline: 1px dashed #666 !important;
	outline-offset: -1px;
}
/* in lazy execution status */
.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after{
	background: #666;
	-moz-animation: blink 1s infinite linear;
	-webkit-animation: blink 1s infinite linear;
	animation: blink 1s infinite linear;
}

/*************************************/
/*			NAVIGATION PANEL		 */
/*************************************/
.elfinder .elfinder-navbar{
	padding: 5px 3px;
	background: #252525;
}
.elfinder-ltr .elfinder-navbar{
	padding-right: 10px;
}
.elfinder-rtl .elfinder-navbar{
	padding-left: 10px;
}
.elfinder .elfinder-navbar .ui-resizable-handle{
	width: 10px;
	background: none;
}
.elfinder .elfinder-navbar .ui-resizable-handle:before{
	content: '';
	position: absolute;
	top: 50%;
	right: 1px;
	width: 2px;
	height: 20px;
	margin-top: -10px;
	border: 1px solid #444;
	border-top: 0;
	border-bottom: 0;
}
.elfinder .elfinder-navbar .elfinder-tree{
	margin: 0;
}
.elfinder-navbar-dir{
	padding: 4px 12px;
}
.elfinder .elfinder-navbar .ui-state-hover,
.elfinder .elfinder-navbar .ui-state-active{
	background: #1f1f1f;
}
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-symlink{
	opacity: 1;
	transform: scale(0.5);
}
.elfinder-touch .elfinder-navbar .elfinder-perms{
	bottom: 6px;
}
.elfinder-ltr .elfinder-navbar-swipe-handle{
	background: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%);
}
.elfinder-rtl .elfinder-navbar-swipe-handle{
	background: linear-gradient(to left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%);
}

/*************************************/
/*			NAVIGATION DOCK			 */
/*************************************/
.elfinder .elfinder-navdock .ui-resizable-n{
	top: -7px;
	height: 14px;
}
.elfinder .elfinder-navdock .elfinder-quicklook{
	padding-top: 32px;
	background: #272727;
}
.elfinder .elfinder-navdock .elfinder-quicklook-titlebar{
	position: absolute;
	background: #1d1d1d;
	z-index: 1;
}
.elfinder-ltr .elfinder-navdock .elfinder-quicklook-title{
	text-align: left;
}
.elfinder-rtl .elfinder-navdock .elfinder-quicklook-title{
	text-align: right;
}
.elfinder .elfinder-navdock .elfinder-quicklook-preview{
	height: 100%;
	background: #272727;
}


/*************************************/
/*			CONTEXTMENU				 */
/*************************************/
.elfinder .elfinder-contextmenu-header{
	font-size: 0.8em;
}
.elfinder .elfinder-contextmenu-header span{
	font-weight: normal;
	font-size: inherit;
}
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub{
	color: #999;
	background: #3e3e3e;
}
.elfinder .elfinder-contextmenu-item{
	padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-separator{
	height: 0;
	border-top: 1px solid rgba(153, 153, 153, .1) !important;
}
.elfinder .elfinder-contextmenu-extra-icon a,
.elfinder .elfinder-contextmenu-extra-icon span{
	position: absolute;
	z-index: 1;
}

/*************************************/
/*			BUTTON MENU				 */
/*************************************/
.elfinder .elfinder-button-menu{
	background: #3e3e3e;
}
.elfinder .elfinder-button-menu-item-separated{
	border-top: 1px solid rgba(153, 153, 153, .1) !important;
}


/*************************************/
/*				DIALOGS 			 */
/*************************************/
.dialogelfinder .dialogelfinder-drag{
	font-size: 15px;
	font-weight: bold;
}
.dialogelfinder .dialogelfinder-drag-close{
	position: relative;
	top: 6px;
	right: 6px;
	float: right;
	margin: 0;
	font-size: 16px;
}
.elfinder .elfinder-dialog{
	background: #333;
}
.elfinder .elfinder-dialog .elfinder-dialog-title{
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.elfinder-touch .elfinder-dialog .ui-dialog-titlebar span.elfinder-dialog-title{
	padding: 0;
}
.elfinder .elfinder-dialog .ui-resizable-se{
	opacity: 0;
}
/* title buttons */
.elfinder .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button,
.elfinder .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{
	float: right;
	left: auto;
	right: 6px;
	top: 6px;
	height: auto;
	width: auto;
	margin: 0;
	padding: 0;
	padding-left: 5px;
}
.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button,
.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{
	float: left;
	right: auto;
	left: 5px;
	padding: 0;
	padding-right: 5px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-button .ui-icon{
	height: 16px;
	width: 16px;
	opacity: 1;
}
.elfinder .elfinder-dialog .elfinder-titlebar-button:hover{
	color: #ccc;
}
.dialogelfinder .dialogelfinder-drag-close:hover,
.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover{
	color: #c32020;
}
/* contents */
.elfinder .elfinder-dialog .ui-widget-content{
	padding: 10px;
}
.elfinder .elfinder-dialog.elfinder-dialog-help > .ui-widget-content,
.elfinder .elfinder-dialog.elfinder-dialog-help > .ui-widget-content > .ui-widget-content,
.elfinder .elfinder-dialog.elfinder-dialog-preference > .ui-widget-content,
.elfinder .elfinder-dialog.elfinder-dialog-preference > .ui-widget-content > .ui-widget-content{
	padding: 0;
}
/* bottom buttons */
.elfinder .elfinder-dialog .ui-dialog-buttonpane{
	padding: .5em;
	border-top: 1px solid #3e3e3e !important;
}
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{
	margin: 0 0 0 .4em !important;
}
.elfinder-rtl .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{
	float: left;
}
.elfinder-rtl .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{
	margin: 0 .4em 0 0 !important;
}
.elfinder .elfinder-dialog .ui-dialog-buttonpane button span{
	padding: 0;
}
.elfinder .elfinder-dialog .ui-dialog-buttonpane button span.ui-icon{
	padding: 0;
}
/* dialog: help/preference */
.elfinder .elfinder-dialog .elfinder-help{
	margin: 0;
}
.elfinder .elfinder-dialog .elfinder-help .elfinder-help-logo{
	background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABgCAMAAADcrSdwAAACNFBMVEVHcEwjHhspIh4mIyMnIR4nIh4dGhgqJyEiGxYnJyclIh8oIh0hHRsnIiEkIB8iHx4eGBogICEhICALAAAjHhwjIB4jIB8lHx4iICEfHyEiIB4kHx0iHx4jHx4jICAhHh4mISAfFxIgGRQeFRElIR4jIB8gICH///8pIh7u7u3n5+bq6unl5eW60+vt7ezs7Ovv7+/o6Ojw8PAgICIXFxceHiDz8/IrJCAZGRoUFBXx8vEfFxIiIyUbGhwXFRUSERO2zeGoxd/L2uQODA20zeHI2eWQt9wdHB2qxuAaGBf39/fE1uMkHBdbV1UhGRX19fVBSFCTud4eHR50c3InJyn+/v67urrO3umryOOxyuDA2vLW1tWWu94mHxoJCAg1ODteXFsdFA+fnp2mxOD6+vrb29q50eScvt9VUlGtyeBqaGjFxcWiwt/BwMDMzMs9RExNV2ErLC7h4eFCPz0vMDPQ0M/JyMeesMCKiIeWveOamJepqKcvKSWysrFIRkU1LyudweNwbm04NDLE2OiTkpJIUFeEg4I+ODWko6JLTE5/fXw2PUMnIR1gdIaixOSPjo2+0uJ6eHhPSkd3g4+cu9fe3t2Upreov9PA1ea3t7awzOZkYmFofpOMobW60uevrq1VZna9z9yCn7qGpsV6mLWls719j6COsNKJmKSnuci+vb1NWmdXYGe+1++0ydlwi6ZsdoCzwsx+ipRha3JzfYdASlSVrMKWoqxteodlcn7J0NUhHh67pT+nAAAAJnRSTlMAuPMaZncKEPMTVXHSO6abBfjeAciASykw8SOSwehBsF/p3fiJazBiy+cAABBySURBVGjezZoHVxrbFsc1xhK7xhJji5oMIgQcZigDjuTaCIoQEUskCHIlEogaBY3dYOya2GKLGpOb3ttNW+/LvXNmQGcQk2feu2u9HVcWjMvzY//3Ofvssw9BQUe24PSTQf+0hWQeC/nHIWekx0JOR0ZGpsT/g5Ds/GMnjkvnTfmn/jfjnYhNOfDsdBoFGRyURnqfhKWc+C8Yp5Ow6HD/h+cwCtKzOhrlfZJsyj2b+ruMrEREhSX7PTyZQUM6eK5070fJqfaM5mWnhP1WgNPEYrM+zU/51ASEgvTK7dn0k1hpR2XPgksbHXVkzMlkTK//9NGsCmZPolDMC6l0RFPLJSZvVifXVfJ3l01H1SwsDiMN3xoaXsiQM6xfJPkgrZO58JPHZ0zZdHK5XNLqiT6iJyHBGG5+2lBSUvIGT9xbemGnY6ISEPE8DRnIywKjnlEMVMohZHUq7miMU9FY8aWPkFHysUtM/XF4Vmh2YhqCIUjREA1xSvNyg5NzlwvkImC6elPkkRgpmUjxm0cUo6ThE56QFZYSl4hgAABMVm2PgBCdvHdgyT7aMlgJGaLKvogjJZtzCWLZhyqaUVJSNSFLjEZoADSldYuGiHSVOoFxk3ZELqjO8KbNE3FRv0TEp2Mq5FPJnjU8LRLvIxCxYdXihcCxJTqKIZIYR5N9UmtMv6KcyMZkXd+8bjQ0gBcNfxfvMxB8q656H7JnOquCzkBncsZ2a7VRv8okcFqVl5eUA8i3lZcN5SWPOsl9iHKXEwgiGTflgsCHpSvsPa08z08pWYlY8cxHyKgCg3+WKbsAsOGbWOxj6N0FASEiebtdGxcTrFni60QS9GeUM2nUtCovryopb/g4QQB1ZqoA8fOeYISHQ8vVUSkXFTJMpEMXpHlDVrkcvJGjnvmok4dlEjitSsqrqsqrGp6acThq8QoQ7KPZJxixSUHOSQeN3VydTs7AyHWb9nodTdYZRxPDDskkYsOncgpRUv7CIKP1KXpaUgWzC2XkmJCChEpNQ1PVs8M2iY7hj4TnhYoKaw9ZmvHZGP65oQpaedXfpB5MV5yEgi0C7hucdmSJ44Xkz5s0Cu2Yp17IwPhe6Qa0yYclrESx4WY5RflAgFCTBssMCQUrryp/2aWnIK/2IJSZFBr7MFdSyDZdvTT4sALgZFaCrPMdpHw0gCH1Xb2cygUcCgYon6ArpEvOhgDTaLd6JFymSYyu3J+kmGSs+DNU6yUGHFECaThctx7BJx5VVT2aUINHfZwDkPx8xWi9nMEQ8bciYn6WUoIR8gVwZXECp/XnCACEFuxmkRghrYOzA5X+kPzScR0DIp9tCf35gs9UuV/eXrx9s0gP5HLW6fqgSnrD09tVtz8UI5hYqezg+EE0pgVeIRNSPxTrWyOBIxOJQXEWb8N8RRZVj9DrQz3xaKPq3RwJV7zQD6Kd2pSI2DEZ1x6nJlJKelJgn9Kx4r9vL248ugRCIJb51mDxCnDvmx5OuXYaotWa5gFivsVi1HEFLCvkWXJSY0KDc7RjU5kBS7KwDDG25hVs36Bgixswu5CuV3a44j2eEZPCpDX1oXKBv0mcQxEK6fLsrm3YdPwQwci59Q1aMEaGn3i0uLEOswtJSo+Fg9yl47fXTlVvygsFB03eV23tQCUSecFyUnzgdQ+S5OLi4jso2L5Rgr2gvJs/lnoOQArlom6BRBDIuKhQJ4cigqUfaDZnwV1Q9mxjcWOtSMwS7ObtjZdmFfUmM/Nf490SkaDQLxpyn3Rc7y9ExrFANUw2hKgMNwHlO0sw9cTNz10ARuI4TooRmXnSKPFntDv9AySfDVBfgCqUCsGld4tX33XKmBQxgpME0TVi2aoeMRAEqXQP8ERshnSol02RC/s07O0rPiQ1Nd1bMxT/eHB1Yw1jCobolV1L9XwdSCy61WFHEUESWzbGmKLVEY22GmV4JxLVV5uSmEE5dTY6DcPEXtOrXmxc2PjAFIxEJlc5+2b04KRyxsigeBQgj03vTYVCSY8nP5NZhYfEJSAkri/aM7H55VWWYITLyWFaXd1uF0nM2ERC7+IY0MIcM9Ltg6wujOalh7ALCBkysbJ2k2HrFy482BeMmOmGQ1f2TE8u9Q0a6+CbnjEZscUTCKGBgJiolDwop94XGl152axjR2SaWD2xVvbgKtMuAHvgEwwf4YNRW3dnZM3QEEs7RQG+DFCDckFA6FRmEQroB65g9tpI0yN/X35woeyAXfAKpjf0gDFRh7LU/eb7yocbhmZ8EswAzrCMdBsLoSMLLXS+nJd2iChXuI7oePa2iz17UBbQrq4ZoGDKcTAif6bZsLL+tqmp6fz6D3GpA84zD6GchK4IqrW+LWxAQus3nneasevGYuSnQxhAwRsgu5BmAYejszTP3Wx6ex7a26YdQ+ksCIyxiByzAX3kkwpf6ndwaciwhnF0jknA35SVXYZWdvUyy66tv7hRBJY35Yi11P2y6bzPmnbEOIhLnYMgYKgLO4bmvbWFq5sKSmGvJjc4PTQy5jQ8QMeKu14CRtnlsrK1zxOXmNbZhSuVZlCoGMFub1Y+22cAyo9SSyuHs0kQtSIeTyi0aPaCwuUBE6zWbi1PDZkUEYmhQSFp+A/agbIVsbKUbYTBPm0cw0eA/Julc2UMxvm36wY9YHd34TMFQh5P3ufTS1MPoeBHIOTbOuqnJ4cyglIQ/dp9yLi/o5IZJofrmdbb3cox6gkHUGu2+TvTEUC50TwNFs4I7rYJAGTaBwErhWJA9wRckc42GhwUqzevX7527drlstfFBvaips0JJhAQ31L6gg1p+t5MPScMPQAi2vVNrxarnMcwgRFAEsnOiwBx7fL6nHIrAINTTygXwDq0E2t+kE/NteDXDqKoFwRBNKzxQQZEByCZFOTatcb1OcJeFwDSTsCarq5aueMHWWmeBb/eIoo6BCxIAE8yVHPrEHLt/pticlx+ENJBEvAT1zav+MXkc/MA8HAG7zJCyOCeXNNMiEAEY3IOKfp6n4LsYCTuctQybWlhk8/vwu1grk43T7AZl81EL4fDc+Mj3XB2jbf4ZtewVy5w/oLza3AoOOhUQvHK/YvQ7j8zFPvP4VLC7XCTBpCBuw0kKyhNz5RwZjtxwiGAn9jh9WQ+3ymgGN3WhSVqpUjjguKTVHPXGylK49cfr2+w7FKXGsfBih+k5nDn5beMZeIuBTOYM6lUDohQVGibMnlX/JRNiAITdGjycqKD48CaD4NdMnybduVi4/1Gll38496zCVAGyaBeBebS12U+X5rWO0urgSPoGAlmMIoWDuytxWqUByGFm5rjJ/bycHi02LBz/4+LgeyPxvvfYflFDIMP3WsovfT1fFMTyMMPdsylLrgZLyiBWmBIoWUv7n0iyEBFA3mp7JrR/LXxj4DWuENVX6QLhcvS3Cy+8Wzt69rKF7x5xgZ3LQOJtHPBkNwlX9xNr7gURODJZbUW4zC1eScw5XonVUeKCUcl3FGWipqbCZmyudm9IALvhTMy5RJ0BBX2jtIx0Sx3Uwxe9wh7ZwwLxkjD9r3Gxj/9rfGOr15RLkEKxzbgmBmZ8QzCzZgjsBAyFx1mlGul9WoZL6TeC3uGckJZp+zwbEyvntv+eu860wBjZ7+2Jzw8enG26lrpFzY7QXa10+KAj14LQ28aM9JQtOBVtSY6ktkxiD+bgKnwornO/a3k9b0//7zHLLoJ12YrIxFIpt04aRguRH2Q1WUtDLsPinL50y5FMKvezspOwBC9SkXSJit+1nh9Xyy6usOrdwvo7Na6ah0hSMJcvzckiLRzyKRxGXn7T7g2/9Ir6NS5uNjYDN955OGf1+/usA5CiJrECbdldtw6vmQ3KGUy2VaPAGUY16pQDHKZT3jcDsf8wRNdSBr9oedAeO6xTyiqG3NqUg/2Y6WSkIlx0r6L8lC2jQ/4P5H35QVo6cfBiltc9Nfd63fZYqkvtd179kWFILAhgukdm3wu6m8Cgd8Dns0VHKBbdAqeHdR37rbd/Yt9aoTc6xMkIhsZS4g8K3WCdS0QCngFaCADtStNndYGbOTEYoj6y0GxiiF3Ww2aqQJLRNgZqVMutFkdfUZBQQATWCedq+AToPzq3IAdqRhMb3gMBryDs2ZWJ+A+BsWRcphD9bvGrbUurbZlaliAHmDwesZapCO1gz28V/mBu0Ugx2wfEAsGqa0NFpNKK32OB30omEc08318nh8DRT15Z0IzcrSjFnvE6UCM45j6RltbGyWWTKnUM8R6D1sHpNnJ6kjMK8BE9hNrUHOWbkhER8QGbKCnqdzPb7XdgjNLZp8ed5NesdrantNHXxIDbXRmb0U7Nczyhdc7luTNv/GpgRoSYUmI6j1gQLHIGZBoX+lpscCzh96JAC8EWF0ik2mQx9831NNy/KddItBZeQjEuvLF19zSwSZE8R3AeIL4Dl35/pCWASG/YO8f6pxK/FnbHrY8nrddaXsMT3Gglw0yLTieqDsr2toqvB1oUinLPxbOgMy3jE0XFDA84QuGD+8Owm6XGHty6wqA0Nthn7HXLgNigWe36OUvJkbGncsR+xCTYmgWBJ7P8ITPFy5ozx56+wP2rjuAAexhMaQQRaQMLv9bV9r+gl1JRI8MgOqv2guZ1yg0rskOsOT8rIDv0EYe2oFE9Nv9FKTiIUlFHDa4OiuuXKmBHUhErIf1BA3RKjSjy0u7NiYC5BHvC+NIZuphdzOYWH8HjFhTc6V/u0jlXYZP+mv6t6mZRU0FjgDIFSWdnd7s6ObxmMEQdtR2CL0vXw0lhR16yyRWP6yAlJr+J25qYPWd/porj92QqB8DG3Cd1ZwP+11OkZ9MKDo41TLyiqIUoH35sfGH35eBbtDzforyGBYq6s7n4OVrikfV3btKkoK0+0WC11Nrig7NHLICyQrQSW1s2M9u/sC4j2nK89fqYgMU672KWiLKaXhMwZFAkALrWF76iaDUJM3SKq9gUhP70+vA0ARM7X7SXwGspuL9nSdXKmqez6l89zMcuYvcg3Tz93/QpRbqPjI8TmHv7dPG/uLKMTINFGHvKUpFf38N+M+XT0AChqc3tifeyKP1895cci5iND/2l9eaMYmYCtmuqfBazRPfxRl1PnWKiXkvBGyAvNUePuUJ3+bK9v19dOx/cHV6OgPTkw8rfJgv6rSMBHjJqDfA8tdpGaIhqx2b1qXl0Ve0SwWOHF/pG/YffeUgHG7Br59TFLBEsKigU6EZCbCIhNVdnT0CQrgD8yZFTlLEFp/yhWdVZB3tWjb+LJi8Xx4DSs3jLjG9rEA+QIiFuj1IYV9eVExIULKGzvOocyj5qDflx8Ekm/sLhP+1OiHGe4zBQH702Ki0AiCC2hwIP5G7bKOCwrcnHfmbJiDHkF3v+9+TWLovoLDuIwwOq4uKCc9C97POaMeBKzx++3Lg/fxXN9kqw/acKtG3g55MScNgslfSs6t7mT5/xCeN9XBtgxZpRPZvfB8D5Bg9qccYd/4x0Ri9M0KIzde7ztJ4Flya3LO/9w0TmGOwbKbQJ0ITMQyTHgsDCbJjyFdJx85rk47//rdKQrE0v20hPCU5Njsq6Jy0fnfvJvH02az/6ss4Zw65wj0nHR3Nj/mnv0+UmZmZER70f2X/Bu5wnCihP08lAAAAAElFTkSuQmCC') center center no-repeat;
}
.elfinder .elfinder-dialog .elfinder-help .elfinder-help-team{
	border-bottom: .5px solid #404040 !important;
}
.elfinder .elfinder-dialog .elfinder-help .elfinder-help-shortcuts{
	background: none;
	color: #999;
}
.elfinder .elfinder-dialog .elfinder-preference dl{
	margin: 0;
}
.elfinder .elfinder-preference dd label{
	margin: 3px;
}
/* dialog: notify/error/confirm */
.elfinder .elfinder-dialog-notify .elfinder-notify{
	border-bottom: .5px solid #3e3e3e !important;
}
.elfinder .elfinder-dialog-notify .elfinder-notify:last-child{
	border: 0 !important;
}
.elfinder .elfinder-dialog-notify .ui-dialog-content{
	-moz-animation: blink 1s infinite linear;
	-webkit-animation: blink 1s infinite linear;
	animation: blink 1s infinite linear;
}
.elfinder .elfinder-dialog-notify .elfinder-notify{
	padding: .5em 32px;
}
.elfinder .elfinder-dialog-notify .elfinder-notify .elfinder-notify-progressbar{
	display: none;
}
.elfinder .elfinder-dialog-notify .elfinder-notify-cancel{
	position: absolute;
	top: 50%;
	right: 0;
	margin-top: -7px;
}
.elfinder-rtl .elfinder-dialog-notify .elfinder-notify-cancel{
	left: 0;
	right: auto;
}
.elfinder .elfinder-dialog-notify .elfinder-notify-cancel button{
	padding: 1px !important;
	height: auto !important;
	background: none !important;
}
.elfinder .elfinder-dialog-notify .elfinder-notify-cancel .ui-button-text{
	display: none;
}
.elfinder .elfinder-dialog-confirm .ui-dialog-content,
.elfinder .elfinder-dialog-error .ui-dialog-content{
	min-height: 52px;
}
.elfinder-ltr .elfinder-dialog-confirm .ui-dialog-content,
.elfinder-ltr .elfinder-dialog-error .ui-dialog-content{
	padding-right: 46px;
}
.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content,
.elfinder-rtl .elfinder-dialog-error .ui-dialog-content{
	padding-left: 46px;
}
.elfinder .elfinder-dialog-confirm .elfinder-dialog-icon,
.elfinder .elfinder-dialog-error .elfinder-dialog-icon{
	top: 26px;
	left: auto;
	right: 10px;
}
.elfinder-rtl .elfinder-dialog-confirm .elfinder-dialog-icon,
.elfinder-rtl .elfinder-dialog-error .elfinder-dialog-icon{
	left: 10px;
	right: auto;
}
.elfinder .elfinder-dialog-confirm .elfinder-dialog-confirm-encoding{
	padding: 0 0 .5em 0;
}
/* dialog: info/delete */
.elfinder .elfinder-dialog .elfinder-info-title .elfinder-cwd-icon,
.elfinder .elfinder-dialog .elfinder-rm-title .elfinder-cwd-icon{
	position: relative;
}
.elfinder .elfinder-dialog .elfinder-info-tb{
	margin: 0;
}
.elfinder .elfinder-dialog .elfinder-info-tb span{ /* TODO: Delete later */
	float: none;
}
/* upload */
.elfinder .elfinder-dialog-upload .elfinder-upload-dropbox{
	border: 2px dashed #555 !important;
}
/* file-edit */
.elfinder .elfinder-dialog-edit .elfinder-edit-editor{
	padding: 0 .5em;
	background: #333;
}
.elfinder .elfinder-dialog-edit .elfinder-edit-editor .elfinder-file-edit{
	height: 100%;
	color: #999 !important;
	background: #444 !important;
}
.elfinder .elfinder-dialog-edit .elfinder-edit-extras{
	margin: 0;
}
.elfinder-rtl .elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-edit-extras{
	float: right;
}
/* batch rename */
.elfinder .elfinder-rename-batch-preview{
	min-height: unset;
}
/* quicklook */
.elfinder .elfinder-quicklook{
	padding: 0;
	background: #1d1d1d;
}
.elfinder .elfinder-quicklook-titlebar{
	position: relative;
	padding: .4em .4em .4em .7em;
	height: auto;
	font-size: .82em;
	background: none;
	box-sizing: border-box;
}
.elfinder .elfinder-quicklook-titlebar-icon{
	top: 0;
	left: auto;
	right: 0;
	bottom: 0;
	height: auto;
	margin: 0;
}
.elfinder-rtl .elfinder-quicklook-titlebar-icon{
	left: 0;
	right: auto;
}
.elfinder .elfinder-quicklook .elfinder-quicklook-titlebar-icon .ui-icon{
	float: right;
	margin: 0;
	padding: 0 .4em 0 0;
	height: 100%;
	opacity: 1;
}
.elfinder-rtl .elfinder-quicklook .elfinder-quicklook-titlebar-icon .ui-icon{
	float: left;
	padding: 0 0 0 .4em;
}
.elfinder .elfinder-quicklook-titlebar-icon .ui-icon:hover{
	color: #ccc;
}
.elfinder .elfinder-quicklook-titlebar-icon .elfinder-icon-close:hover{
	color: #c32020;
}
.elfinder .elfinder-quicklook-title{
	display: inherit;
	font-size: inherit;
	line-height: 1.3;
	text-overflow: ellipsis;
}
.elfinder .elfinder-quicklook-preview{
	height: calc(100% - 72px);
	background: #333;
}
.elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-text-wrapper,
.elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-archive-wrapper,
.elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-html,
.elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-pdf,
.elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-iframe{
	background: none;
	color: inherit;
	font-size: inherit;
}
.elfinder .elfinder-quicklook-navbar{
	width: auto;
	font-size: 140%;
}
.elfinder .elfinder-quicklook .ui-resizable-se{
	right: 1px;
	bottom: 1px;
	width: 16px;
	height: 16px;
}
.elfinder .elfinder-quicklook-fullscreen{
	z-index: 1002;
}
.elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-preview{
	height: 100%;
}
.elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{
	bottom: 0;
}
/* resize */
.elfinder .elfinder-resize-container{
	margin: 0;
}
.elfinder .elfinder-resize-container fieldset .ui-button{
	width: 49%;
	box-sizing: border-box;
}
.elfinder .elfinder-resize-container .elfinder-resize-rotate-slider{
	width: 204px;
}
.elfinder .elfinder-resize-preview{
	padding: 5px;
	background: linear-gradient(#ffffff1a 1px, transparent 1px), linear-gradient(90deg, #ffffff1a 1px, transparent 1px);
	background-size: 16px 16px;
	background-position: center;
}
.elfinder .elfinder-resize-loading{
	background: transparent;
	-moz-animation: blink 1s infinite linear;
	-webkit-animation: blink 1s infinite linear;
	animation: blink 1s infinite linear;
}
.elfinder .elfinder-resize-preview img{
	padding: 1px;
	background-color: rgba(255, 255, 255, .05);
}
.elfinder .elfinder-resize-preview .elfinder-resize-handle.ui-draggable{
	box-sizing: border-box;
	border: 1px dashed #000 !important;
}
.elfinder .elfinder-resize-handle-point{
	background: rgba(255, 255, 255, .7);
	border: 1px solid #111 !important;
}
.elfinder .elfinder-dialog-resize .ui-draggable-handle{
	background: none !important;
}

/*************************************/
/*				OVERLAYS			 */
/*************************************/
.elfinder-overlay{
	background: #000;
	opacity: .5;
}

/*************************************/
/*				TOAST				 */
/*************************************/
.elfinder .elfinder-toast > div{
	-moz-border-radius: 2px !important;
	-webkit-border-radius: 2px !important;
	border-radius: 2px !important;
}
.elfinder .elfinder-toast > .toast-success button.ui-button{
	background: green !important;
	color: #fff !important;
}
.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover{
	background: #add6ad !important;
	color: #254b25 !important;
}
.elfinder .elfinder-toast > .toast-info button.ui-button{
	background: #046580 !important;
	color: #fff !important;
}
.elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover{
	background: #7dc6db !important;
	color: #046580 !important;
}

/*************************************/
/*				ICONS				 */
/*************************************/
@font-face{
	font-family: 'elfinder';
	font-style: normal;
	font-weight: normal;
	src: 	url('../img/elfinder.woff2') format('woff2'),
			url('../img/elfinder.woff') format('woff'),
			url('../img/elfinder.svg') format('svg'),
			url('../img/elfinder.ttf') format('truetype'),
			url('../img/elfinder.eot') format('embedded-opentype');
}

.elfinder .ui-icon,
.elfinder .elfinder-button-icon,
.elfinder .elfinder-navbar-icon,
.elfinder .elfinder-navbar-arrow,
.elfinder .elfinder-spinner,
.elfinder .elfinder-dialog-icon,
.elfinder .elfinder-notify-cancel button,
.elfinder .elfinder-symlink,
.elfinder .elfinder-perms,
.elfinder .elfinder-lock,
.elfinder .elfinder-drag-helper-icon-status,
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item .ui-icon,
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon,
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextmenu-arrow,
.elfinder .elfinder-cwd-icon,
.elfinder-quicklook-navbar-icon{
	display: flex;
	justify-content: center;
	align-items: center;
	min-width: 16px;
	background: none;
	text-indent: 0;
}
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon{
	float: left;
}
.elfinder-rtl .elfinder-button-menu-item .ui-icon{
	left: auto;
	right: 2px;
}
.elfinder-button-menu-item .ui-icon,
.elfinder .ui-checkboxradio-icon,
.elfinder .elfinder-quicklook-navbar .elfinder-quicklook-navbar-icon-close,
.elfinder .ui-resizable-disabled .ui-resizable-handle,
.elfinder .ui-resizable-autohide .ui-resizable-handle{
	display: none;
}
.elfinder-button-menu-item-selected .ui-icon,
.elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close{
	display: flex;
}
.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n,
.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s{
	display: none;
}
.elfinder .elfinder-navbar .elfinder-tree .elfinder-spinner{
	margin: -10px 0 0;
}
.elfinder-ltr .elfinder-navbar-icon{
	left: 15px;
}
.elfinder-rtl .elfinder-navbar-icon{
	right: 15px;
}
.elfinder .elfinder-spinner{
	display: inline-block;
	float: none;
	vertical-align: text-top;
}
.elfinder .elfinder-dialog-icon{ /* error/confirm, any dialogs may be in future version */
	font-size: 30px;
}
.elfinder .elfinder-dialog-notify .elfinder-dialog-icon{ /* notify dialogs */
	left: 0;
	font-size: 18px;
}
.elfinder .elfinder-perms{
	font-size: 20px;
	border-radius: 50% !important;
	background: #fff;
}
.elfinder .elfinder-cwd-view-list .elfinder-cwd-icon{
	background: none !important;
}
.elfinder .elfinder-quicklook-navbar-icon:hover{
	color: #ccc;
}

/* Add elements of icons (before/after) */
.ui-icon:before, /* jquery-ui, use anywhere */
.elfinder-button-icon:before, /* use in toolbar, contextmenu */
.elfinder-navbar-icon:before, /* use in navbar */
.elfinder-navbar-arrow:before, /* use in navbar */
.elfinder-spinner:before, /* use in navbar, dialogs (info, confirm, upload, edit, quicklook) and may be other places */
.elfinder-symlink:before, /* use in workzone */
.elfinder-lock:before, /* use in workzone */
.elfinder-perms:before, /* use in navbar, workzone */
.elfinder-drag-helper-icon-status:before, /* use when drag files */
.elfinder-contextmenu-arrow:before, /* use in contextmenu */
.elfinder-cwd-icon:after, /* use in workzone */
.elfinder-dialog-icon:before, /* use in dialogs: confirm, error, notify */
.elfinder-notify-cancel button:before, /* use in dialogs: notify */
.elfinder-quicklook-navbar-icon:before /* use in dialogs: quicklook */
{
	/* content: '\e000'; */ /* for debug */
	display: inline-block;
	background: none;
	font-family: 'elfinder';
	font-style: normal;
	font-weight: normal;
	line-height: 16px;
	text-align: center;
	text-decoration: none;
/* For safety - reset parent styles, that can break glyph codes*/
	font-variant: normal;
	text-transform: none;
/* Font smoothing. That was taken from TWBS */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
/* Superstructure elements */
.elfinder-button-icon-spinner:before,
.elfinder-spinner:before{
	-moz-animation: spin 1.5s infinite linear;
	-webkit-animation: spin 1.5s infinite linear;
	animation: spin 1.5s infinite linear;
}
.elfinder .elfinder-cwd-icon:before{/* type lable cwd-icon */
	top: 2px;
	left: -4px;
	padding: 2px 4px;
	font-family: 'Trebuchet MS';
	font-weight: bold;
	color: #999;
	background-color: #202020;
	box-shadow: 1px 1px 1px rgba(255, 255, 255, .5);
	z-index: 1;
}
.elfinder .elfinder-info-title .elfinder-cwd-icon:before,
.elfinder .elfinder-rm-title .elfinder-cwd-icon:before,
.elfinder .elfinder-quicklook .elfinder-cwd-icon:before{/* cwd-icon lable type */
	left: -4px;
	right: auto;
}
/* Contents of news elements */
/* jquery-ui icons */
.elfinder .ui-icon-close:before{ content: '\e84c'; }
.elfinder .ui-icon-closethick:before,
.elfinder .elfinder-notify-cancel button:before{ content: '\e81b'; font-size: 90%; }
.elfinder .ui-icon-check:before{ content: '\e80f'; font-size: 110%; }
.elfinder .ui-icon-caret-1-n:before{ content: '\e837'; }
.elfinder .ui-icon-caret-1-s:before{ content: '\e836'; }
.elfinder .ui-icon-search:before{ content: '\e81a'; }
.elfinder .ui-icon-triangle-1-n:before,
.elfinder .ui-icon-arrowthick-1-n:before{ content: '\f176'; }
.elfinder .ui-icon-triangle-1-s:before,
.elfinder .ui-icon-arrowthick-1-s:before{ content: '\f175'; }
.elfinder .ui-icon-gripsmall-diagonal-se:before{ content: '\e803'; }
.elfinder .ui-icon-plusthick:before{ content: '\e802'; }
.elfinder .ui-icon-arrowreturnthick-1-s:before{ content: '\e806'; }
.elfinder .ui-icon-minusthick:before{ content: '\e81e'; }
.elfinder .ui-icon-pin-s:before{ content: '\e811'; }
.elfinder .ui-icon-arrowrefresh-1-n:before{ content: '\e81f'; }
.elfinder .ui-icon-unlocked:before{ content: '\e854'; }
.elfinder .ui-icon-locked:before{ content: '\f13e'; }
/* main icons */
.elfinder-button-icon-accept:before{ content: '\e810'; }
.elfinder-button-icon-archive:before{ content: '\e827'; font-size: 110%; margin-left: -2px; }
.elfinder-button-icon-back:before{ content: '\f007'; }
.elfinder-button-icon-chmod:before{ content: '\e846'; }
.elfinder-button-icon-copy:before{ content: '\e807'; }
.elfinder-button-icon-colwidth:before{ content: '\f0db'; }
.elfinder-button-icon-cut:before{ content: '\e801'; }
.elfinder-button-icon-dir:before{ content: '\f114'; }
.elfinder-button-icon-download:before{ content: '\e809'; }
.elfinder-button-icon-duplicate:before{ content: '\e822'; }
.elfinder-button-icon-edit:before{ content: '\e81c'; }
.elfinder-button-icon-empty:before{ content: '\e829'; }
.elfinder-button-icon-extract:before{ content: '\e825'; font-size: 110%; margin-left: -2px; }
.elfinder-button-icon-forward:before{ content: '\f006'; }
.elfinder-button-icon-fullscreen:before{ content: '\e802'; }
.elfinder-button-icon-getfile:before{ content: '\f245'; }
.elfinder-button-icon-help:before{ content: '\e80b'; }
.elfinder-button-icon-home:before{ content: '\e800'; }
.elfinder-button-icon-hide:before{ content: '\e80c'; }
.elfinder-button-icon-info:before{ content: '\f086'; }
.elfinder-button-icon-link:before{ content: '\f08e'; }
.elfinder-button-icon-mkdir:before{ content: '\f114'; }
.elfinder-button-icon-mkdirin:before{ content: '\e828'; }
.elfinder-button-icon-mkfile:before{ content: '\f0f6'; font-size: 85%; }
.elfinder-button-icon-menu:before{ content: '\e819'; }
.elfinder-button-icon-netmount:before{ content: '\f0a0'; font-size: 110%; }
.elfinder-button-icon-netunmount:before{ content: '\e818'; font-size: 85%; }
.elfinder-button-icon-open:before{ content: '\f115'; }
.elfinder-button-icon-opendir:before{ content: '\f115'; }
.elfinder-button-icon-opennew:before{ content: '\e824'; }
.elfinder-button-icon-paste:before{ content: '\f0ea'; }
.elfinder-button-icon-places:before{ content: '\e81d'; }
.elfinder-button-icon-preference:before{ content: '\f1de'; }
.elfinder-button-icon-quicklook:before{ content: '\e812'; }
.elfinder-button-icon-redo:before{ content: '\e814'; }
.elfinder-button-icon-reload:before{ content: '\e805'; }
.elfinder-button-icon-rename:before{ content: '\f246'; font-size: 85%; }
.elfinder-button-icon-restore:before{ content: '\e81f'; }
.elfinder-button-icon-resize:before{ content: '\e82d'; }
.elfinder-button-icon-rotate-r:before{ content: '\e857'; }
.elfinder-button-icon-rotate-l:before{ content: '\e856'; }
.elfinder-button-icon-rm:before{ content: '\f12d'; }
.elfinder-button-icon-search:before{ content: '\e81a'; }
.elfinder-button-icon-selectall:before{ content: '\f247'; font-size: 90%; }
.elfinder-button-icon-selectnone:before{ content: '\e823'; font-size: 90%; }
.elfinder-button-icon-selectinvert:before{ content: '\f248'; font-size: 85%; margin-left: -1px; }
.elfinder-button-icon-sort:before{ content: '\f15d'; font-size: 90%; }
.elfinder-button-icon-text:before{ content: '\e804'; }
.elfinder-button-icon-trash:before{ content: '\e80a'; font-size: 110%; }
.elfinder-button-icon-undo:before{ content: '\e813'; }
.elfinder-button-icon-unfullscreen:before{ content: '\e806'; }
.elfinder-button-icon-up:before{ content: '\f005'; }
.elfinder-button-icon-upload:before{ content: '\e808'; }
.elfinder-button-icon-view:before{ content: '\e815'; font-size: 110%; }
.elfinder-button-icon-view-list:before{ content: '\e816'; font-size: 110%; }
.elfinder-button-icon-spinner:before,
.elfinder-spinner:before{ content: '\e831'; }
.elfinder-path-roots .elfinder-button-icon-menu:before{ content: '\e836'; }
/* permissions, dragable icons (workzone/toolbar/on the screen) */
.elfinder-symlink:before{ content: '\e835'; }
.elfinder-lock:before{ content: '\e82b'; font-size: 85%; }
.elfinder-group .elfinder-perms:before{ content: '\e800'; }
.elfinder-ro .elfinder-perms:before{ content: '\e80e'; color: #f3b80b; }
.elfinder-wo .elfinder-perms:before{ content: '\e80d'; color: #0272bf; }
.elfinder-na .elfinder-perms:before,
.elfinder-drag-helper-icon-status:before{ content: '\e817'; color: #d00000; }
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{ content: '\e843'; color: #0272bf; }
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{ content: '\e844'; color: #00ab07; }
/* arrows icons (navbar/contextmenu) */
.elfinder-navbar-arrow:before{ content: none; }
.elfinder-navbar-icon:before{ content: '\e820'; }
.ui-state-hover .elfinder-navbar-icon:before,
.ui-state-active .elfinder-navbar-icon:before,
.elfinder-droppable-active .elfinder-navbar-icon:before{ content: '\e82e'; }
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before,
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow:before{ content: '\e839'; }
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before,
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow:before{ content: '\e838'; }
.elfinder .elfinder-navbar-collapsed.elfinder-navbar-expanded .elfinder-navbar-arrow:before{ content: '\e836'; }
/* cmd icons (dialogs) */
.elfinder-dialog-icon:before{ content: '\e83a'; } /* default icon (info icon) */
.elfinder-dialog-icon-confirm:before{ content: '\e83b'; color: #f3b80b; }
.elfinder-rtl .elfinder-dialog-icon-confirm:before{ content: '\e851'; color: #f3b80b; }
.elfinder-dialog-icon-error:before{ content: '\e83c'; color: #c32020; }
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before{ content: '\e82e'; }
.elfinder-dialog-icon-reload:before{ content: '\e841'; }
.elfinder-dialog-icon-mkdir:before{ content: '\e820'; }
.elfinder-dialog-icon-mkfile:before{ content: '\f15c'; }
.elfinder-dialog-icon-copy:before{ content: '\e844'; }
.elfinder-dialog-icon-prepare:before{ content: '\e831'; }
.elfinder-dialog-icon-move:before{ content: '\e843'; }
.elfinder-dialog-icon-save:before,
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before{ content: '\e83d'; }
.elfinder-dialog-icon-rm:before{ content: '\f1f8'; }
.elfinder-dialog-icon-download:before{ content: '\e83e'; }
.elfinder-dialog-icon-rename:before,
.elfinder-dialog-icon-chkcontent:before{ content: '\e83f'; }
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before,
.elfinder-dialog-icon-extract:before{ content: '\e840'; }
.elfinder-dialog-icon-search:before{ content: '\f1e5'; }
.elfinder-dialog-icon-chmod:before{ content: '\e845'; }
/* icons files (workzone/dialogs) */
.elfinder .elfinder-cwd-icon:after{
	content: '\e84d';
	font-size: 50px;
	color: #999;
}
.elfinder .elfinder-cwd-view-list table .elfinder-cwd-icon:after{
	font-size: 16px;
	top: auto;
	right: auto;
	left: auto;
	width: auto;
	height: auto;
	opacity: 1;
	-webkit-transform: none;
	-moz-transform: none;
	transform: none;
}
.elfinder .elfinder-cwd-bgurl{
	-moz-background-size: cover;
	background-size: cover;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after{
	display: none;
}
/* icons roots (navbar/workzone/dialogs/contextmenu) */
.elfinder [class^='elfinder-navbar-root-'] .elfinder-cwd-icon:after,
.elfinder [class*=' elfinder-navbar-root-'] .elfinder-cwd-icon:after{
	font-size: 53px;
}
.elfinder .elfinder-navbar-root-sql .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-dropbox .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-network .elfinder-cwd-icon:after{
	font-size: 46px;
}
/*
 roots icons: 	navbar - .elfinder-navbar-root-[..] .elfinder-navbar-icon,
				workzone - .elfinder-navbar-root-[..] .elfinder-cwd-icon,
				contextmenu - .elfinder-navbar-root-[..].elfinder-contextmenu-icon
*/
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{ content: '\e821'; }
.elfinder .elfinder-navbar-root-local .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-local .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-local.elfinder-contextmenu-icon:before{ content: '\e82f'; color: #999; }
.elfinder .elfinder-navbar-root-trash .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-trash .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-trash.elfinder-contextmenu-icon:before{ content: '\f1f8'; color: #999; }
.elfinder .elfinder-navbar-root-ftp .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-ftp .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-ftp.elfinder-contextmenu-icon:before{ content: '\f0a0'; color: #999; }
.elfinder .elfinder-navbar-root-sql .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-sql .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-sql.elfinder-contextmenu-icon:before{ content: '\f1c0'; color: #999; }
.elfinder .elfinder-navbar-root-dropbox .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-dropbox .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-dropbox.elfinder-contextmenu-icon:before{ content: '\e832'; color: #999; }
.elfinder .elfinder-navbar-root-googledrive .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-googledrive .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-googledrive.elfinder-contextmenu-icon:before{ content: '\e826'; color: #999; }
.elfinder .elfinder-navbar-root-onedrive .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-onedrive .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-onedrive.elfinder-contextmenu-icon:before{ content: '\e833'; color: #999; }
.elfinder .elfinder-navbar-root-box .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-box .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-box.elfinder-contextmenu-icon:before{ content: '\e834'; color: #999; }
.elfinder .elfinder-navbar-root-network .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root-network .elfinder-cwd-icon:after,
.elfinder .elfinder-navbar-root-network.elfinder-contextmenu-icon:before{ content: '\e830'; color: #999; }
/* icons files (workzone/dialogs) */
.elfinder .elfinder-cwd-icon-directory:after{ content: '\e820'; color: #c3a530; }
.elfinder .elfinder-cwd-icon-zip:after,
.elfinder .elfinder-cwd-icon-x-zip:after,
.elfinder .elfinder-cwd-icon-x-xz:after,
.elfinder .elfinder-cwd-icon-x-7z-compressed:after,
.elfinder .elfinder-cwd-icon-x-gzip:after,
.elfinder .elfinder-cwd-icon-x-tar:after,
.elfinder .elfinder-cwd-icon-x-bzip:after,
.elfinder .elfinder-cwd-icon-x-bzip2:after,
.elfinder .elfinder-cwd-icon-x-rar:after,
.elfinder .elfinder-cwd-icon-x-rar-compressed:after{ content: '\e840'; color: #b3791e; }
.elfinder .elfinder-cwd-icon-text:after,
.elfinder .elfinder-cwd-icon-plain:after,
.elfinder .elfinder-cwd-icon-x-empty:after{ content: '\e849'; color: #ddd; }
.elfinder .elfinder-cwd-icon-image:after{ content: '\e84a'; color: #9e2974; }
.elfinder .elfinder-cwd-icon-audio:after{ content: '\e84f'; color: #278a00; }
.elfinder .elfinder-cwd-icon-video:after{ content: '\e84e'; color: #29629e; }
.elfinder .elfinder-cwd-icon-html:after{ content: '\e82a'; color: #bd4c4c; }
.elfinder .elfinder-cwd-icon-postscript:after,
.elfinder .elfinder-cwd-icon-css:after,
.elfinder .elfinder-cwd-icon-javascript:after,
.elfinder .elfinder-cwd-icon-x-javascript:after,
.elfinder .elfinder-cwd-icon-x-perl:after,
.elfinder .elfinder-cwd-icon-x-python:after,
.elfinder .elfinder-cwd-icon-x-ruby:after,
.elfinder .elfinder-cwd-icon-x-sh:after,
.elfinder .elfinder-cwd-icon-x-shellscript:after,
.elfinder .elfinder-cwd-icon-x-c:after,
.elfinder .elfinder-cwd-icon-x-csrc:after,
.elfinder .elfinder-cwd-icon-x-chdr:after,
.elfinder .elfinder-cwd-icon-x-c--:after,
.elfinder .elfinder-cwd-icon-x-c--src:after,
.elfinder .elfinder-cwd-icon-x-c--hdr:after,
.elfinder .elfinder-cwd-icon-x-java:after,
.elfinder .elfinder-cwd-icon-x-java-source:after,
.elfinder .elfinder-cwd-icon-x-php:after,
.elfinder .elfinder-cwd-icon-xml:after{ content: '\e84b'; color: #6e73b1; }
.elfinder .elfinder-cwd-icon-group:after{ content: '\e842'; }
/* workzone: parent rewrited */
.elfinder .elfinder-cwd-parent .elfinder-lock,
.elfinder .elfinder-cwd-parent .elfinder-perms{
	display: none;
}
.elfinder .elfinder-cwd-wrapper .elfinder-cwd-parent .elfinder-cwd-icon:after{ content: '\e847'; color: #999; }
/* quicklook */
.elfinder-quicklook-navbar-icon-prev:before{ content: '\e850'; }
.elfinder-quicklook-navbar-icon-next:before{ content: '\e82c'; }
.elfinder-quicklook-navbar-icon-fullscreen:before{ content: '\e802'; }
.elfinder-quicklook-navbar-icon-fullscreen-off:before{ content: '\e806'; }
.elfinder-quicklook-navbar-icon-close:before{ content: '\e81b'; font-size: 85%; }                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/Default/css/theme.css                                              0000644                 00000027451 15266052703 0016765 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * MacOS X like theme for elFinder.
 * Required jquery ui "smoothness" theme.
 *
 * @author Dmitry (dio) Levashov
 **/

/* scrollbar for Chrome and Safari */
.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-track {
    border-radius: 10px;
    box-shadow: inset 0 0 6px rgba(0, 0, 0, .1);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 50, 0.08);
    border-radius: 10px;
    box-shadow:0 0 0 1px rgba(255, 255, 255, .3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:hover {
    background-color: rgba(0, 0, 50, 0.16);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:active {
    background-color: rgba(0, 0, 50, 0.24);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-corner {
    background-color: transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button {
    background-color: transparent;
    width: 10px;
    height: 10px;
    border: 5px solid transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:hover {
    border: 5px solid rgba(0, 0, 50, 0.08);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:active {
    border: 5px solid rgba(0, 0, 50, 0.5);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:decrement {
    border-bottom: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:increment {
    border-top: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:decrement {
    border-right: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:increment {
    border-left: 8px solid rgba(0, 0, 50, 0.3);
}

/* input textarea */
.elfinder input,
.elfinder textarea {
    color: #000;
    background-color: #FFF;
    border-color: #ccc;
}

/* dialogs */
.std42-dialog, .std42-dialog .ui-widget-content {
    background-color: #ededed;
    background-image: none;
    background-clip: content-box;
}

.std42-dialog.elfinder-bg-translucent {
    background-color: #fff;
    background-color: rgba(255, 255, 255, 0.9);
}

.std42-dialog.elfinder-bg-translucent .ui-widget-content {
    background-color: transparent;
}

.elfinder-quicklook-title {
    color: #fff;
}

.elfinder-quicklook-titlebar-icon {
    background-color: transparent;
    background-image: none;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    background-color: #d4d4d4;
    border-color: #8a8a8a;
}

.elfinder-quicklook-info-progress {
    background-color: gray;
}

.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close {
    background-color: #ff6252;
    border-color: #e5695d;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize {
    background-color: #ffbc00;
    border-color: #e3a40b;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
    background-color: #26c82f;
    border-color: #13ae10;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .elfinder-help,
.std42-dialog .elfinder-help .ui-widget-content {
    background: #fff;
}

/* navbar */
.elfinder .elfinder-navbar {
    background: #dde4eb;
}

.elfinder-navbar .ui-state-hover {
    color: #000;
    background-color: #edf1f4;
    border-color: #bdcbd8;
}

.elfinder-navbar .ui-droppable-hover {
    background: transparent;
}

.elfinder-navbar .ui-state-active {
    background: #3875d7;
    border-color: #3875d7;
    color: #fff;
}

.elfinder-navbar .elfinder-droppable-active {
    background: #A7C6E5;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-navbar .ui-state-active {
    background: #dadada;
    border-color: #aaa;
    color: #777;
}

/* workzone */
.elfinder-workzone {
    background: #fff;
}

/* current directory */
/* Is in trash */
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
    background-color: #f0f0f0;
}

/* selected file in "icons" view */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
    background: #ccc;
}

/* type badge in "icons" view */
/* default */
.elfinder-cwd-icon:before {
    color: white;
    background-color: #798da7;
}

/* type */
.elfinder-cwd-icon-text:before {
    background-color: #6f99e6
}

.elfinder-cwd-icon-image:before {
    background-color: #2ea26c
}

.elfinder-cwd-icon-audio:before {
    background-color: #7bad2a
}

.elfinder-cwd-icon-video:before {
    background-color: #322aad
}

/* subtype */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-plain:before {
    background-color: #719be6
}

.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before {
    background-color: #83aae7
}

.elfinder-cwd-icon-pdf:before {
    background-color: #db7424
}

.elfinder-cwd-icon-html:before {
    background-color: #82bc12
}

.elfinder-cwd-icon-xml:before,
.elfinder-cwd-icon-css:before {
    background-color: #7c7c7c
}

.elfinder-cwd-icon-x-shockwave-flash:before {
    background-color: #f43a36
}

.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
    background-color: #97638e
}

.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before {
    background-color: #7c607c
}

.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-office:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:before {
    background-color: #2b569a
}

.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:before {
    background-color: #107b10
}

.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:before {
    background-color: #d24625
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:before,
.elfinder-cwd-icon-vnd-openofficeorg-extension:before {
    background-color: #00a500
}

.elfinder-cwd-icon-postscript:before {
    background-color: #ff5722
}

/* list view*/
.elfinder-cwd table thead td.ui-state-hover {
    background: #ddd;
}

.elfinder-cwd table tr:nth-child(odd) {
    background-color: #edf3fe;
}

.elfinder-cwd table tr {
    border: 1px solid transparent;
    border-top: 1px solid #fff;
}

.elfinder-cwd .elfinder-droppable-active td {
    background: #A7C6E5;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #fff;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #A7C6E5;
}

/* common selected background/color */
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-cwd table td.ui-state-hover,
.elfinder-button-menu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover {
    background: #dadada;
}

/* statusbar */
.elfinder .elfinder-statusbar {
    color: #555;
}

.elfinder .elfinder-statusbar a {
    text-decoration: none;
    color: #555;
}

/* contextmenu */
.elfinder-contextmenu .ui-state-active {
    background: #6293df;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
    background-image: url('../img/arrows-active.png');
}

/* dialog */
.elfinder .ui-dialog input:text.ui-state-hover,
.elfinder .ui-dialog textarea.ui-state-hover {
    background-image: none;
    background-color: inherit;
}

.elfinder-notify-cancel .elfinder-notify-button {
    background-color: #707070;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.elfinder-notify-cancel .elfinder-notify-button.ui-state-hover {
    background-color: #aaa;
}

/* edit dialog */
.elfinder-dialog-edit select.elfinder-edit-changed {
    border-bottom: 2px solid #13ae10;
}

/* tooltip */
.ui-widget-content.elfinder-ui-tooltip {
    background-color: #fff;
}

.elfinder-ui-tooltip.ui-widget-shadow,
.elfinder .elfinder-ui-tooltip.ui-widget-shadow {
    box-shadow: 2px 6px 4px -4px #cecdcd;
}

/* progressbar */
.elfinder-ui-progressbar {
    background-color: #419bf3;
}                                                                                                                                                                                                                       includes/File_manager/lib/themes/moono/css/view.less                                                0000644                 00000003001 15266052703 0016537 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* main file wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  padding: 4px;
  cursor: pointer;
}

/* reset inner styles */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-file-wrapper {
  background: none;
  cursor: pointer;
  color: #000;
}

/* icon */
.elfinder .elfinder-cwd-wrapper .elfinder-cwd-view-icons .elfinder-cwd-icon {
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
}

/* filename */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  font-size: 12px;
}

/* hover state */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: none; /* reset background */
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0,0,0,.1) inset;
  border-radius: 6px;
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected * {
  color: #666666;
}

/* active and hovered */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover {
  background-color: #f4f4f4;
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover * {
  color: #b7b7b7;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/moono/css/mainui.less                                              0000644                 00000001714 15266052703 0017060 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* main */
.elfinder {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0,0,0,.15);
  height: 100%;
  border-radius: 0;
}


.elfinder * {
  border-collapse: collapse;
  font: normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
  color: #000;
  text-align: left;
  cursor: auto;
}

/* resizer */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  background-image: none;
  bottom: 3px;
  right: 3px;
  width: 0;
  height: 0;
  overflow: hidden;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 10px 10px 0 0;
  border-color: transparent #666 transparent transparent;
  border-style: dashed solid dashed dashed;
  font-size: 0;
  vertical-align: bottom;
  margin-top: 6px;
  margin-bottom: 2px;
  box-shadow: 0 1px 0 rgba(255,255,255,.3);
  cursor: se-resize;
}

/* dragging */
.elfinder-drag-helper * { font-size: 42px; }
.elfinder-drag-num { font-size: 12px; }
                                                    includes/File_manager/lib/themes/moono/css/theme.css                                                0000644                 00000063536 15266052703 0016534 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Moono CKEditor like theme for elFinder
 * Required jquery ui "smoothness" theme and FontAwesome for icons
 * Style rules copied and edited from Moono CKEditor source
 * @author lokothodida
 **/
/* FontAwesome Icons */
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css');
/* Main features of the whole UI */
/* main */
.elfinder {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
  height: 100%;
  border-radius: 0;
}
.elfinder * {
  border-collapse: collapse;
  font: normal normal normal 12px Arial, Helvetica, Tahoma, Verdana, Sans-Serif;
  color: #000;
  text-align: left;
  cursor: auto;
}
/* resizer */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  background-image: none;
  bottom: 3px;
  right: 3px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 10px 10px 0 0;
  border-color: transparent #666 transparent transparent;
  border-style: dashed solid dashed dashed;
  font-size: 0;
  vertical-align: bottom;
  margin-top: 6px;
  margin-bottom: 2px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
  cursor: se-resize;
}
/* dragging */
.elfinder-drag-helper * {
  font-size: 42px;
}
.elfinder-drag-num {
  font-size: 12px;
}
/* File Icons */
/* default settings */
.elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
}
.elfinder-cwd-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
}
/* generic files */
.elfinder-cwd-icon-application:before {
  content: '\f016';
}
/* directories */
.elfinder-cwd-icon-directory:before {
  content: '\f07b';
}
.elfinder-droppable-active .elfinder-cwd-icon-directory:before {
  content: '\f07c';
}
/* empty files */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-inode:before {
  content: '\f1c9';
}
/* rich text */
.elfinder-cwd-icon-text:before,
.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before {
  content: '\f0f6';
}
/* pdfs */
.elfinder-cwd-icon-pdf:before {
  content: '\f1c1';
}
/* html/web documents */
.elfinder-cwd-icon-html:before {
  content: '\f0ac';
}
/* word */
.elfinder-cwd-icon-vnd-ms-word:before {
  content: '\f1c2';
}
/* powerpoint */
.elfinder-cwd-icon-vnd-ms-powerpoint:before {
  content: '\f1c4';
}
/* excel */
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: '\f1c3';
}
/* images */
.elfinder-cwd-icon-image:before,
.elfinder-cwd-icon-vnd-adobe-photoshop:before,
.elfinder-cwd-icon-postscript:before {
  content: '\f1c5';
}
/* audio */
.elfinder-cwd-icon-audio:before {
  content: '\f1c7';
}
/* video */
.elfinder-cwd-icon-video:before,
.elfinder-cwd-icon-flash-video:before {
  content: '\f1c8';
}
/* archives */
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before {
  content: '\f1c6';
}
/* code/script files */
.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before,
.elfinder-cwd-icon-xml:before {
  content: '\f1c9';
}
/* unknown file types */
.elfinder-cwd-icon-unknown:before {
  content: '\f016';
}
/* Toolbar  */
/* toolbar */
.elfinder .elfinder-toolbar {
  /*border: 1px solid #b2b2b2;*/
  border-bottom: 1px solid #b6b6b6;
  padding: 6px 8px 2px;
  /* Allow breaking toolbars when in a narrow editor. (#9947) */
  white-space: normal;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* toolbar buttons */
.elfinder .elfinder-buttonset {
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* toolbar buttons */
.elfinder .elfinder-buttonset .elfinder-button {
  display: inline-block;
  height: 18px;
  padding: 4px 6px;
  outline: none;
  cursor: default;
  float: left;
  border: none;
  border-radius: 0;
  background: none;
}
/* hovered buttons */
.elfinder .elfinder-buttonset .elfinder-button:hover,
.elfinder .elfinder-buttonset .elfinder-button:focus,
.elfinder .elfinder-buttonset .elfinder-button:active {
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
/* disabled buttons */
.elfinder .elfinder-buttonset .elfinder-button.ui-state-disabled {
  opacity: 0.3;
}
/* disabled buttons */
/* don't show any separators in the toolbar buttonset */
.elfinder .elfinder-buttonset .elfinder-toolbar-button-separator {
  display: none;
}
/* searchbar */
.elfinder-toolbar .elfinder-button-search {
  margin: 0 0 5px 5px;
  height: 28px;
  width: 200px;
  box-sizing: border-box;
}
/* searchbar menu (v2.1) */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu {
  padding: 4px 0 0 4px;
}
/* searchbar menu items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text {
  cursor: pointer;
}
/* searchbar menu unselected items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-default {
  background-image: none;
  background: #eaeaea;
}
/* searchbar menu hovered items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-hover {
  background-image: none;
  background: #d0ebf4;
  border: 1px solid #509ece !important;
}
/* searchbar menu hovered items text */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text:hover {
  color: #509ece;
}
/* at the time of speaking, v2.1 has a second, non-functional search bar, so
   we'll hide it - this does mean that the CTRL-F shortcut will not work in v2.1
   though */
.elfinder-toolbar .elfinder-button-search:nth-child(2) {
  display: none !important;
}
.elfinder-toolbar .elfinder-button-search input {
  height: 26px;
  width: 200px;
  padding-left: 24px;
  box-sizing: border-box;
}
.elfinder-toolbar .elfinder-button-search .ui-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  text-align: center;
}
.elfinder-toolbar .elfinder-button-search .ui-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  text-indent: 0;
}
/* search icon */
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  margin-left: 5px;
  margin-right: 5px;
  overflow: hidden;
  display: block;
}
.elfinder-toolbar .elfinder-button-search .ui-icon-search:before {
  content: '\f002';
}
/* close search results */
.elfinder-toolbar .elfinder-button-search .ui-icon-close:before {
  content: '\f00d';
}
/* Toolbar Icons */
/* toolbar */
.elfinder-button-icon,
.elfinder-menu-item-sort-dir {
  background: none;
  font-size: 14px;
  height: 16px;
  width: 16px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 16px;
}
.elfinder-button-icon:before,
.elfinder-button-icon:after,
.elfinder-menu-item-sort-dir:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-button-icon-back:before {
  content: '\f137';
}
.elfinder-button-icon-forward:before {
  content: '\f138';
}
.elfinder-button-icon-netmount:before {
  content: '\f233';
}
.elfinder-button-icon-reload:before {
  content: '\f021';
}
.elfinder-button-icon-home:before {
  content: '\f015';
}
.elfinder-button-icon-up:before {
  content: '\f148';
}
.elfinder-button-icon-mkdir:before {
  content: '\f114';
}
.elfinder-button-icon-mkfile:before {
  content: '\f016';
}
.elfinder-button-icon-upload:before {
  content: '\f093';
}
.elfinder-button-icon-open:before {
  content: '\f115';
}
.elfinder-button-icon-download:before {
  content: '\f019';
}
.elfinder-button-icon-getfile:before {
  content: '\f0a6';
}
.elfinder-button-icon-info:before {
  content: '\f05a';
}
.elfinder-button-icon-quicklook:before {
  content: '\f06e';
}
.elfinder-button-icon-copy:before {
  content: '\f0c5';
}
.elfinder-button-icon-cut:before {
  content: '\f0c4';
}
.elfinder-button-icon-paste:before {
  content: '\f0ea';
}
.elfinder-button-icon-view:before {
  content: '\f00a';
}
.elfinder-button-icon-view-list:before {
  content: '\f0ca';
}
.elfinder-button-icon-help:before {
  content: '\f059';
}
.elfinder-button-icon-help:before {
  content: '\f059';
}
.elfinder-button-icon-duplicate:before {
  content: '\f24d';
}
.elfinder-button-icon-rm:before {
  content: '\f014';
}
.elfinder-button-icon-edit:before {
  content: '\f044';
}
.elfinder-button-icon-rename:before {
  content: '\f246';
}
.elfinder-button-icon-archive:before {
  content: '\f1c6';
}
.elfinder-button-icon-archive:after {
  /* '+' icon overlaying archive */
  position: absolute;
  content: '\f067';
  bottom: 2px;
  right: 5px;
  font-size: 10px;
}
.elfinder-button-icon-resize:before {
  content: '\f065';
}
.elfinder-button-icon-extract:before {
  content: '\f1c6';
}
.elfinder-button-icon-sort:before {
  content: '\f0dc';
}
/* menus */
.elfinder-button-menu {
  background-color: #fff;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
  margin: 0;
  padding: 0;
}
.elfinder-button-menu-item {
  margin: 3px;
  cursor: pointer;
}
.elfinder-button-menu-item-selected,
.elfinder-button-menu-item.ui-state-hover {
  background-image: none;
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0, 0, 0, 0.1) inset;
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir:before {
  content: '\f0de';
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir:before {
  content: '\f0dd';
}
/* Navbar */
.elfinder .elfinder-navbar {
  background: #fff;
}
/* directory */
.elfinder .elfinder-navbar-dir {
  padding: 3px 3px 3px 38px;
  /* push the text away from the icon */
  margin: 0 0 3px 0;
  display: block;
  overflow: hidden;
  cursor: pointer;
}
/* active directory */
.elfinder .elfinder-navbar-dir.ui-state-active {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  color: #000;
  /* fix for 2.x */
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
.elfinder .elfinder-navbar-dir:hover {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* Navbar Restrictions */
/* prevents 2nd-level children from being displayed in the navbar */
.elfinder .elfinder-navbar-subtree .elfinder-navbar-subtree * {
  /*display: none !important; */
}
/* Navbar Icons */
/* arrow */
.elfinder .elfinder-navbar-arrow {
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
}
.elfinder .elfinder-navbar-arrow:before {
  font-family: FontAwesome;
  height: 16px;
  width: 16px;
  content: '\f0da';
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
/* arrow open */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\f0d7';
}
.elfinder .elfinder-navbar-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  margin-left: 3px;
}
.elfinder .elfinder-navbar-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
/* home */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f015';
}
/* directory */
.elfinder .elfinder-navbar-icon:before {
  content: '\f07b';
}
/* directory open */
.elfinder .elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f07c';
}
/* directories */
/* resizable handle */
.elfinder .ui-resizable-handle.ui-resizable-e {
  cursor: e-resize;
}
/* Thumbnail View */
/* main file wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  padding: 4px;
  cursor: pointer;
}
/* reset inner styles */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-file-wrapper {
  background: none;
  cursor: pointer;
  color: #000;
}
/* icon */
.elfinder .elfinder-cwd-wrapper .elfinder-cwd-view-icons .elfinder-cwd-icon {
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
}
/* filename */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  font-size: 12px;
}
/* hover state */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: none;
  /* reset background */
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0, 0, 0, 0.1) inset;
  border-radius: 6px;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected * {
  color: #666666;
}
/* active and hovered */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover {
  background-color: #f4f4f4;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover * {
  color: #b7b7b7;
}
/* List View */
/* headings */
.elfinder .elfinder-cwd table thead tr {
  background: none;
  border: none;
}
.elfinder .elfinder-cwd table thead tr td,
.elfinder .elfinder-cwd table thead tr td.ui-state-active {
  font-weight: bold;
  font-size: 13px;
  position: relative;
  color: #474747;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
  border-bottom: 2px solid #b2b2b2;
  padding: 6px 18px 6px 10px;
  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* sorter icon */
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon,
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon {
  text-indent: 0;
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  line-height: 28px;
  margin: auto 0 auto auto;
}
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon:before {
  font-family: FontAwesome;
  height: 16px;
  height: 100%;
  background: none;
  display: block;
  text-align: center;
}
/* down */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-s:before {
  content: '\f0d7';
}
/* up */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-n:before {
  content: '\f0de';
}
/* files */
.elfinder .elfinder-cwd table {
  padding: 0;
  /* fix for v2.1 */
}
.elfinder .elfinder-cwd table tr * {
  cursor: default;
}
.elfinder .elfinder-cwd table tbody tr:nth-child(odd) {
  background-color: #eaeaea;
}
/* fix for font sizes on v2.x */
.elfinder .elfinder-cwd-view-list td {
  font-size: 12px;
}
.elfinder .elfinder-cwd-view-list td div {
  padding-top: 3px;
  padding-bottom: 3px;
}
/* hover state */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover {
  /* fix for v2.x */
  background-image: none;
  background: #d0ebf4;
}
/* fix text hover color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover * {
  /* fix for v2.x */
  color: #509ece;
}
/* selected files */
.elfinder .elfinder-cwd table tbody tr.ui-selected td {
  background-color: #D2D2D7;
  background-image: none;
}
/* selected files text color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected:hover * {
  color: #fff;
}
/* icon size settings */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon {
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
}
/* View Icons */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  border-radius: 3px;
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {
  cursor: pointer;
}
/* Modal Dialogs */
/* main dialog styles */
.elfinder-dialog {
  padding: 0;
  background: #eaeaea;
  border: 1px solid #b2b2b2;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
}
/* reset the margin */
.elfinder-dialog .ui-dialog-content,
.elfinder-dialog .ui-dialog-content .ui-tabs {
  padding: 0;
  margin: 0;
  border: 0;
}
/* titlebar */
.elfinder-dialog .ui-dialog-titlebar {
  font-weight: bold;
  font-size: 13px;
  cursor: move;
  position: relative;
  color: #474747;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
  border-bottom: 1px solid #999;
  padding: 6px 10px;
  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* icons */
.elfinder-dialog-icon {
  background: none;
  font-size: 18px;
  height: 20px;
  width: 20px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 20px;
  position: relative;
  margin: 0 20px 0 0;
  float: left;
}
.elfinder-dialog-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-dialog-icon-error:before {
  content: '\f06a';
}
.elfinder-dialog-icon-confirm:before {
  content: '\f059';
}
/* tabs navigation backdrop */
.elfinder-dialog .ui-tabs-nav {
  height: 24px;
  background: #eaeaea;
  border: 0;
  border-bottom: 1px solid #999;
  border-radius: 0;
}
/* regular tab */
.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
  display: block;
  padding: 3px;
  border: none;
  outline: none;
}
.elfinder-dialog .ui-tabs-nav .ui-state-default {
  height: 16px;
  padding: 3px;
  margin-right: 3px;
  display: inline-block;
  cursor: pointer;
  line-height: 16px;
  outline: none;
  color: #595959;
  border: 1px solid #bfbfbf;
  border-radius: 3px 3px 0 0;
  background: #d4d4d4;
  background-image: linear-gradient(to bottom, #fafafa, #ededed);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#fafafa', endColorstr='#ededed');
}
/* selected tab */
.elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  background: #fff;
  color: #383838;
  border-bottom-color: #fff;
  cursor: default;
  filter: none;
  padding-bottom: 4px !important;
}
/* active tab */
.elfinder-dialog .ui-tabs-nav li:active {
  background: #ededed;
  background: linear-gradient(to bottom, #ededed 0%, #ffffff 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff', GradientType=0);
}
/* info dialog */
.elfinder-dialog .elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
  margin: 6px;
}
/* file upload dialog */
.elfinder-dialog .elfinder-upload-dropbox,
.elfinder-dialog .elfinder-upload-dialog-or,
.elfinder-dialog .ui-button.ui-button-text-only {
  margin: 6px;
  text-align: center;
}
/* file editing dialog */
.elfinder-dialog .elfinder-file-edit {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 5px;
}
/* error dialog */
.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
  white-space: normal;
  padding: 5px;
}
/* disable resizing on textarea */
.elfinder-dialog textarea {
  resize: none;
}
/* footer */
.elfinder-dialog .ui-dialog-buttonpane {
  text-align: right;
  position: relative;
  border: none;
  outline: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0 0 2px 2px;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}
/* buttons */
.elfinder-dialog .ui-dialog-buttonset {
  margin-right: 8px;
}
.elfinder-dialog .ui-button {
  display: inline-block;
  *display: inline;
  *zoom: 1;
  padding: 4px 0;
  margin: 0 0 4px 4px !important;
  text-align: center;
  color: #333;
  vertical-align: middle;
  cursor: pointer;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
.elfinder-dialog .ui-button:hover {
  border-color: #9e9e9e;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
.elfinder-dialog .ui-button:active {
  border-color: #969696;
  outline: none;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.4) inset;
}
/* Context menu */
.elfinder-contextmenu * {
  font: normal normal normal 16px Arial, Helvetica, Tahoma, Verdana, Sans-Serif;
}
.elfinder-contextmenu {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
}
/* item */
.elfinder-contextmenu .elfinder-contextmenu-item {
  padding: 5px 30px 5px 30px;
  box-sizing: border-box;
  height: 24px;
}
/* item hovered */
.elfinder-contextmenu .elfinder-contextmenu-item:hover {
  background-color: #EFF0EF;
}
/* icons */
.elfinder-contextmenu .elfinder-contextmenu-icon {
  top: 0;
  left: 0;
  margin: 0;
  background-color: #D7D8D7;
  opacity: 0.70;
  /* Safari, Opera and Mozilla */
  filter: alpha(opacity=70);
  /* IE */
  height: 100%;
  line-height: 24px;
  width: 24px;
  text-align: center;
}
/* separator */
.elfinder-contextmenu .elfinder-contextmenu-separator {
  border: none;
  background-color: #D3D3D3;
  height: 1px;
  filter: alpha(opacity=70);
  /* IE */
  opacity: 0.70;
  /* Safari, Opera and Mozilla */
}
/* Status Bar */
/* status bar */
.elfinder .elfinder-statusbar {
  padding: 6px 8px 2px;
  position: relative;
  border-top: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}
/* breadcrumbs */
.elfinder .elfinder-path {
  max-width: none;
  font-size: 0;
  /* hide the text "/" divider */
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* style each element of the trail */
.elfinder .elfinder-path a {
  font-size: 12px;
  cursor: pointer;
  display: block;
  float: left;
  padding: 5px;
}
/* css divider */
.elfinder .elfinder-path a:not(:first-child) {
  border-left: 1px dotted #a6a6a6;
}
/* hovering */
.elfinder .elfinder-path a:hover,
.elfinder .elfinder-path a:hover:focus,
.elfinder .elfinder-path a:hover:active {
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
.elfinder .elfinder-statusbar .elfinder-stat-selected {
  float: right;
  font-size: 12px;
  margin: 0 0 5px 6px;
  padding: 5px;
  text-align: right;
}
/* size information */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;
}
                                                                                                                                                                  includes/File_manager/lib/themes/moono/css/navbar-icons.less                                        0000644                 00000003436 15266052703 0020163 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* arrow */
.elfinder .elfinder-navbar-arrow {
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
}
.elfinder .elfinder-navbar-arrow:before {
  font-family: FontAwesome;
  height: 16px;
  width: 16px;
  content: '\f0da';
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}

/* arrow open */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\f0d7';
}

.elfinder .elfinder-navbar-icon,
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  margin-left: 3px;
}

.elfinder .elfinder-navbar-icon:before,
.elfinder-lock:before,
.elfinder-perms:before,
.elfinder-symlink:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
  font-size: smaller;
}

.elfinder-lock:before,
.elfinder-perms:before,
.elfinder-symlink:before {
  color:grey;
  opacity: 0.9;
}
/* read-only */
.elfinder-ro .elfinder-perms:before {
  content: '\f023';
}

/* not available */
.elfinder-na .elfinder-perms:before {
  content: '\f05e';
}

/* write-only available */
.elfinder-wo .elfinder-perms:before {
  content: '\f01a';
}

/* home */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f015';
}

/* directory */
.elfinder .elfinder-navbar-icon:before {
  content: '\f07b';
}

/* directory open */
.elfinder .elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f07c';
}

/* directories */

/* resizable handle */
.elfinder .ui-resizable-handle.ui-resizable-e {
  cursor: e-resize;
}
                                                                                                                                                                                                                                  includes/File_manager/lib/themes/moono/css/file-icons.less                                          0000644                 00000005321 15266052704 0017625 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* default settings */
.elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
}
.elfinder-cwd-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
}

/* generic files */
.elfinder-cwd-icon-application:before { content: '\f016'; }

/* directories */
.elfinder-cwd-icon-directory:before { content: '\f07b'; }
.elfinder-droppable-active .elfinder-cwd-icon-directory:before { content: '\f07c'; }

/* empty files */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-inode:before { content: '\f1c9'; }

/* rich text */
.elfinder-cwd-icon-text:before,
.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before { content: '\f0f6'; }

/* pdfs */
.elfinder-cwd-icon-pdf:before { content: '\f1c1'; }

/* html/web documents */
.elfinder-cwd-icon-html:before { content: '\f0ac'; }

/* word */
.elfinder-cwd-icon-vnd-ms-word:before { content: '\f1c2'; }

/* powerpoint */
.elfinder-cwd-icon-vnd-ms-powerpoint:before { content: '\f1c4'; }

/* excel */
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before { content: '\f1c3'; }

/* images */
.elfinder-cwd-icon-image:before,
.elfinder-cwd-icon-vnd-adobe-photoshop:before,
.elfinder-cwd-icon-postscript:before { content: '\f1c5'; }

/* audio */
.elfinder-cwd-icon-audio:before { content: '\f1c7'; }

/* video */
.elfinder-cwd-icon-video:before,
.elfinder-cwd-icon-flash-video:before { content: '\f1c8'; }

/* archives */
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before { content: '\f1c6'; }

/* code/script files */
.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before,
.elfinder-cwd-icon-xml:before { content: '\f1c9'; }

/* unknown file types */
.elfinder-cwd-icon-unknown:before { content: '\f016'; }
                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/moono/css/navbar.less                                              0000644                 00000002301 15266052704 0017041 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .elfinder .elfinder-navbar {
  background: #fff;
}

/* directory */
.elfinder .elfinder-navbar-dir {
  padding: 3px 3px 3px 38px; /* push the text away from the icon */
  margin: 0 0 3px 0;
  display: block;
  overflow: hidden;
  cursor: pointer;
}

/* active directory */
.elfinder .elfinder-navbar-dir.ui-state-active {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  color: #000; /* fix for 2.x */
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
  }

.elfinder .elfinder-navbar-dir:hover {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/moono/css/statusbar.less                                           0000644                 00000003620 15266052704 0017605 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* status bar */
.elfinder .elfinder-statusbar {
  padding: 6px 8px 2px;
  position: relative;

  border-top: 1px solid #bfbfbf;

  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}

.elfinder .elfinder-stat-size {
}

/* breadcrumbs */
.elfinder .elfinder-path {
  max-width: none;
  font-size: 0; /* hide the text "/" divider */
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

/* style each element of the trail */
.elfinder .elfinder-path a {
  font-size: 12px;
  cursor: pointer;
  display: block;
  float: left;
  padding: 5px;
}

/* css divider */
.elfinder .elfinder-path a:not(:first-child) {
  border-left: 1px dotted #a6a6a6;
}

/* hovering */
.elfinder .elfinder-path a:hover,
.elfinder .elfinder-path a:hover:focus,
.elfinder .elfinder-path a:hover:active {
  box-shadow: 0 0 1px rgba(0,0,0,.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

.elfinder .elfinder-statusbar .elfinder-stat-selected {
  float: right;
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;

  padding: 5px;
  text-align: right;
}

/* size information */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;
}
                                                                                                                includes/File_manager/lib/themes/moono/css/theme.less                                               0000644                 00000001731 15266052704 0016700 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Moono CKEditor like theme for elFinder
 * Required jquery ui "smoothness" theme and FontAwesome for icons
 * Style rules copied and edited from Moono CKEditor source
 * @author lokothodida
 **/

/* FontAwesome Icons */
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css');

/* Main features of the whole UI */
@import url('mainui.less');

/* File Icons */
@import url('file-icons.less');

/* Toolbar  */
@import url('toolbar.less');

/* Toolbar Icons */
@import url('toolbar-icons.less');

/* Navbar */
@import url('navbar.less');

/* Navbar Restrictions */
@import url('navbar-restrict.less');

/* Navbar Icons */
@import url('navbar-icons.less');

/* Thumbnail View */
@import url('view.less');

/* List View */
@import url('view-list.less');

/* View Icons */
@import url('view-icons.less');

/* Modal Dialogs */
@import url('dialog.less');

/* Context menu */
@import url('contextmenu.less');

/* Status Bar */
@import url('statusbar.less');
                                       includes/File_manager/lib/themes/moono/css/view-icons.less                                          0000644                 00000000276 15266052704 0017664 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  border-radius: 3px;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {
  cursor: pointer;
}
                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/moono/css/toolbar-icons.less                                       0000644                 00000005746 15266052705 0020364 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* toolbar */
.elfinder-button-icon,
.elfinder-menu-item-sort-dir {
  background: none;
  font-size: 14px;
  height: 16px;
  width: 16px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 16px;
}
.elfinder-button-icon:before,
.elfinder-button-icon:after,
.elfinder-menu-item-sort-dir:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-button-icon-back:before { content: '\f137'; }
.elfinder-button-icon-forward:before { content: '\f138'; }
.elfinder-button-icon-netmount:before { content: '\f233'; }
.elfinder-button-icon-reload:before { content: '\f021'; }
.elfinder-button-icon-home:before { content: '\f015'; }
.elfinder-button-icon-up:before { content: '\f148'; }
.elfinder-button-icon-mkdir:before { content: '\f114'; }
.elfinder-button-icon-mkfile:before { content: '\f016'; }
.elfinder-button-icon-upload:before { content: '\f093'; }
.elfinder-button-icon-open:before { content: '\f115'; }
.elfinder-button-icon-download:before { content: '\f019'; }
.elfinder-button-icon-getfile:before { content: '\f0a6'; }
.elfinder-button-icon-info:before { content: '\f05a'; }
.elfinder-button-icon-quicklook:before { content: '\f06e'; }
.elfinder-button-icon-copy:before { content: '\f0c5'; }
.elfinder-button-icon-cut:before { content: '\f0c4'; }
.elfinder-button-icon-paste:before { content: '\f0ea'; }
.elfinder-button-icon-view:before { content: '\f00a'; }
.elfinder-button-icon-view-list:before { content: '\f0ca'; }
.elfinder-button-icon-help:before { content: '\f059'; }
.elfinder-button-icon-help:before { content: '\f059'; }
.elfinder-button-icon-duplicate:before { content: '\f24d';}
.elfinder-button-icon-rm:before { content: '\f014'; }
.elfinder-button-icon-edit:before { content: '\f044'; }
.elfinder-button-icon-rename:before { content: '\f246'; }
.elfinder-button-icon-archive:before { content: '\f1c6'; }
.elfinder-button-icon-archive:after { /* '+' icon overlaying archive */
  position: absolute;
  content: '\f067';
  bottom: 2px;
  right: 5px;
  font-size: 10px;
}
.elfinder-button-icon-resize:before { content: '\f065'; }
.elfinder-button-icon-extract:before { content: '\f1c6'; }
.elfinder-button-icon-sort:before { content: '\f0dc'; }
.elfinder-button-icon-fullscreen:before { content: '\f0b2'; }

/* menus */
.elfinder-button-menu {
  background-color: #fff;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0,0,0,.15);
  margin: 0;
  padding: 0;
}
.elfinder-button-menu-item {
  margin: 3px;
  cursor: pointer;
}
.elfinder-button-menu-item-selected,
.elfinder-button-menu-item.ui-state-hover {
  background-image: none;
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0,0,0,.1) inset;
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir:before { content: '\f0de'; }
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir:before { content: '\f0dd'; }
                          includes/File_manager/lib/themes/moono/css/navbar-restrict.less                                     0000644                 00000000250 15266052705 0020700 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* prevents 2nd-level children from being displayed in the navbar */
.elfinder .elfinder-navbar-subtree .elfinder-navbar-subtree * {
  /*display: none !important; */
}
                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/themes/moono/css/dialog.less                                              0000644                 00000011537 15266052705 0017043 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* main dialog styles */
.elfinder-dialog {
  padding: 0;
  background: #eaeaea;
  border: 1px solid #b2b2b2;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, .15);
}

/* reset the margin */
.elfinder-dialog .ui-dialog-content,
.elfinder-dialog .ui-dialog-content .ui-tabs {
  padding: 0;
  margin: 0;
  border: 0;
}

/* titlebar */
.elfinder-dialog .ui-dialog-titlebar {
  font-weight: bold;
  font-size: 13px;
  cursor: move;
  position: relative;

  color: #474747;
  text-shadow: 0 1px 0 rgba(255,255,255,.75);

  border-bottom: 1px solid #999;
  padding: 6px 10px;

  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* icons */
.elfinder-dialog-icon {
  background: none;
  font-size: 18px;
  height: 20px;
  width: 20px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 20px;
  position: relative;
  margin: 0 20px 0 0;
  float: left;
}

.elfinder-dialog-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}

.elfinder-dialog-icon-error:before { content: '\f06a'; }
.elfinder-dialog-icon-confirm:before { content: '\f059'; }

/* tabs navigation backdrop */
.elfinder-dialog .ui-tabs-nav {
  height: 24px;
  background: #eaeaea;
  border: 0;
  border-bottom: 1px solid #999;
  border-radius: 0;
}

/* regular tab */
.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
  display: block;
  padding: 3px;
  border: none;
  outline: none;
}

.elfinder-dialog .ui-tabs-nav .ui-state-default {
  height: 16px;
  padding: 3px;
  margin-right: 3px;
  display: inline-block;
  cursor: pointer;
  line-height: 16px;
  outline: none;
  color: #595959;
  border: 1px solid #bfbfbf;

  border-radius: 3px 3px 0 0;

  background: #d4d4d4;
  background-image: linear-gradient(to bottom, #fafafa, #ededed);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#fafafa', endColorstr='#ededed');
}

/* selected tab */
.elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  background: #fff;
  color: #383838;
  border-bottom-color: #fff;
  cursor: default;
  filter: none;
  padding-bottom: 4px !important;
}

/* active tab */
.elfinder-dialog .ui-tabs-nav li:active {
  background: #ededed;
  background: linear-gradient(to bottom, #ededed 0%,#ffffff 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#ffffff',GradientType=0 );
}

/* info dialog */
.elfinder-dialog .elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
  margin: 6px;
}

/* file upload dialog */
.elfinder-dialog .elfinder-upload-dropbox,
.elfinder-dialog .elfinder-upload-dialog-or,
.elfinder-dialog .ui-button.ui-button-text-only {
  margin: 6px;
  text-align: center;
}

/* file editing dialog */
.elfinder-dialog .elfinder-file-edit {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 5px;
}

/* error dialog */
.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
  white-space: normal;
  padding: 5px;
}

/* disable resizing on textarea */
.elfinder-dialog textarea {
  resize: none;
}

/* footer */
.elfinder-dialog .ui-dialog-buttonpane {
  text-align: right;
  position: relative;
  border: none;
  outline: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0 0 2px 2px;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}

/* buttons */
.elfinder-dialog .ui-dialog-buttonset {
  margin-right: 8px;
}

.elfinder-dialog .ui-button {
  display: inline-block;
  *display: inline;
  *zoom: 1;

  padding: 4px 0;
  margin: 0 0 4px 4px !important;

  text-align: center;
  color: #333;
  vertical-align: middle;
  cursor: pointer;

  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;

  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

.elfinder-dialog .ui-button:hover {
  border-color: #9e9e9e;

  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

.elfinder-dialog .ui-button:active {
  border-color: #969696;
  outline: none;
  box-shadow: 0 0 6px rgba(0,0,0,.4) inset;
}
                                                                                                                                                                 includes/File_manager/lib/themes/moono/css/toolbar.less                                             0000644                 00000007627 15266052705 0017253 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* toolbar */
.elfinder .elfinder-toolbar {
  /*border: 1px solid #b2b2b2;*/
  border-bottom: 1px solid #b6b6b6;
  padding: 6px 8px 2px;

  /* Allow breaking toolbars when in a narrow editor. (#9947) */
  white-space: normal;

  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* toolbar buttons */
.elfinder .elfinder-buttonset {
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;

  border-radius: 3px;

  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;

  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

/* toolbar buttons */
.elfinder .elfinder-buttonset .elfinder-button {
  display: inline-block;
  height: 18px;
  padding: 4px 6px;
  outline: none;
  cursor: default;
  float: left;
  border: none;
  border-radius: 0;
  background: none;
}

/* hovered buttons */
.elfinder .elfinder-buttonset .elfinder-button:hover,
.elfinder .elfinder-buttonset .elfinder-button:focus,
.elfinder .elfinder-buttonset .elfinder-button:active {
  box-shadow: 0 0 1px rgba(0,0,0,.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

/* disabled buttons */
.elfinder .elfinder-buttonset .elfinder-button.ui-state-disabled {
  opacity: 0.3;
}

/* disabled buttons */

/* don't show any separators in the toolbar buttonset */
.elfinder .elfinder-buttonset .elfinder-toolbar-button-separator {
  display: none;
}

/* searchbar */
.elfinder-toolbar .elfinder-button-search {
  margin: 0 0 5px 5px;
  height: 28px;
  width: 200px;
  box-sizing: border-box;
}

/* searchbar menu (v2.1) */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu {
  padding: 4px 0 0 4px;
}

/* searchbar menu items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text {
  cursor: pointer;
}

/* searchbar menu unselected items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-default {
  background-image: none;
  background: #eaeaea;
}

/* searchbar menu hovered items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-hover {
  background-image: none;
  background: #d0ebf4;
  border: 1px solid #509ece !important;
}

/* searchbar menu hovered items text */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text:hover {
  color: #509ece;
}

/* at the time of speaking, v2.1 has a second, non-functional search bar, so
   we'll hide it - this does mean that the CTRL-F shortcut will not work in v2.1
   though */
.elfinder-toolbar .elfinder-button-search:nth-child(2) {
  display: none !important;
}

.elfinder-toolbar .elfinder-button-search input {
  height: 26px;
  width: 200px;
  padding-left: 24px;
  box-sizing: border-box;
}

.elfinder-toolbar .elfinder-button-search .ui-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  text-align: center;
}

.elfinder-toolbar .elfinder-button-search .ui-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  text-indent: 0;
}

/* search icon */
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  margin-left: 5px;
  margin-right: 5px;
  overflow: hidden;
  display: block;
}

.elfinder-toolbar .elfinder-button-search .ui-icon-search:before {
  content: '\f002';
}

/* close search results */
.elfinder-toolbar .elfinder-button-search .ui-icon-close:before {
  content: '\f00d';
}
                                                                                                         includes/File_manager/lib/themes/moono/css/contextmenu.less                                         0000644                 00000002073 15266052705 0020150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .elfinder {
  .elfinder-contextmenu * {
    font: normal normal normal 16px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
  }

  .elfinder-contextmenu {
    display: block;
    border: 1px solid #b6b6b6;
    padding: 0;
    box-shadow: 0 0 3px rgba(0,0,0,.15);
  }

  /* item */
  .elfinder-contextmenu .elfinder-contextmenu-item {
    padding: 5px 30px 5px 30px;
    box-sizing: border-box;
    height: 24px;
  }

  /* item hovered */
  .elfinder-contextmenu .elfinder-contextmenu-item:hover {
    background-color: #EFF0EF;
  }

  /* icons */
  .elfinder-contextmenu .elfinder-contextmenu-icon {
    top: 0;
    left: 0;
    margin: 0;
    background-color: #D7D8D7;
    opacity: 0.70; /* Safari, Opera and Mozilla */
    filter: alpha(opacity=70); /* IE */
    height: 100%;
    line-height: 24px;
    width: 24px;
    text-align: center;
  }

  /* separator */
  .elfinder-contextmenu .elfinder-contextmenu-separator {
    border: none;
    background-color: #D3D3D3;
    height: 1px;
    filter: alpha(opacity=70); /* IE */
    opacity: 0.70; /* Safari, Opera and Mozilla */
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/themes/moono/css/view-list.less                                           0000644                 00000005606 15266052705 0017527 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* headings */
.elfinder .elfinder-cwd table thead tr {
  background: none;
  border: none;
}
.elfinder .elfinder-cwd table thead tr td,
.elfinder .elfinder-cwd table thead tr td.ui-state-active {
  font-weight: bold;
  font-size: 13px;
  position: relative;

  color: #474747;
  text-shadow: 0 1px 0 rgba(255,255,255,.75);

  border-bottom: 2px solid #b2b2b2;
  padding: 6px 18px 6px 10px;

  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* sorter icon */
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon,
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon {
  text-indent: 0;
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  line-height: 28px;
  margin: auto 0 auto auto;
}

.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon:before {
  font-family: FontAwesome;
  height: 16px;
  height: 100%;
  background: none;
  display: block;
  text-align: center;
}

/* down */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-s:before {
  content: '\f0d7';
}

/* up */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-n:before {
  content: '\f0de';
}

/* files */
.elfinder .elfinder-cwd table {
  padding: 0; /* fix for v2.1 */
}

.elfinder .elfinder-cwd table tr * {
  cursor: default;
}

.elfinder .elfinder-cwd table tbody tr:nth-child(odd) { background-color:#eaeaea; }
.elfinder .elfinder-cwd table tbody tr { }

/* fix for font sizes on v2.x */
.elfinder .elfinder-cwd-view-list td { font-size: 12px; }
.elfinder .elfinder-cwd-view-list td div {
  padding-top: 3px;
  padding-bottom: 3px;
}

/* hover state */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover { /* fix for v2.x */
  background-image: none;
  background: #d0ebf4;
}

/* fix text hover color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover * { /* fix for v2.x */
  color: #509ece;
}

/* selected files */
.elfinder .elfinder-cwd table tbody tr.ui-selected td {
  background-color: #D2D2D7;
  background-image: none;
}

/* selected files text color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected:hover * { color: #fff; }

/* icon size settings */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon {
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {

}
                                                                                                                          includes/File_manager/lib/themes/Material/icons/material.eot                                        0000644                 00000060204 15266052705 0020150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       „`  Ü_                �    LP                       ãŠfž                   m a t e r i a l    R e g u l a r    V e r s i o n   1 . 0    m a t e r i a l          €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/themes/Material/icons/material.woff2                                      0000644                 00000027104 15266052705 0020406 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOF2     .D     _Ü  -ç                       TV �  	–p
�„T÷<�> 6$‚x …M‡<�~W5ÊîC)·ªHeXE°qP ö¤/gÿÿ÷ä†ÈÀ?Pçöª XF–ÝXTaPXáº¾9âzÞ‹7Žû¾Œ÷]¾»0PQíÂáÄÍ®Ôò»Õñõî$ãm‹ž¤Å�ÄƒÆÏ3æZñ8Ü‘_…­ …SM	+°Yd	Ö-Ÿ)¬|*<ŠR<¤º�åè¢±óEŽÐØ'¹À¸¼5‰?)¶…pî«—4iR¢?Ð?HP·$áÈ¸qjÕé•gôÁó¹éªŠóUž¹ÂÚJÕ¸�³µ“&?PP�´'¼:‚àp÷-ŒBZ¶6îE!oË0L¬Á63Ù<Ù™Ê‰éoóÐvâ¾ðµÊï™*=UàÈ Í­m¤úÊF›cwã	,‰	Gº n7b,é6†Ø�ÖàýÙ�˜ØøíÏáûìÍÿR­|ï›þÝ ÝÎç3ÉU<Ê±X<n‚…ÌŒÃ�O™µA®0W¤x3Ùüþw.?tÇÂUŽr¤ö¦€üØ¦Dé%¿#¡æ$¹nVÍþµýÏŠR�4s¹_,‹ØÍ*	š<+jŠ’“®š,nÖ\íR&)d�Û9¡^Õñ�:ßô$Ë±ŒB†í$ÁÇ8þ­ãÁ¼·½y»¥5M
÷„y€–ÑØM‰7~f'rÖA>Ø–Z¯r–Ýû.éž‘‚øþóÐ0`[6o•ö •+}4yŽ*¿Cþ… lGÀß«Z¶ï’^.uIŽpHrÑÈç«òãƒàá€ä'(Ê ¨ÝaÐŽEJ²!ê¤Mº‰bªœ2Dm vwÆ¢.i³t!vç.Ä0½‹ÒE›òºÞã¢mÜ»­Lü»ã×Öüy G�ja@JÇ1û;ÎhÒ …ý´ßê]¯Ê�B£ A)/þ^‚�±‰š´Ø+‡nB $ÍÛ%‹	å6{c¼ì|)›p@ÝáÄ�Mñ|è“”(
 ›t{L*Ö¢¼âþÿÙ÷>ðe9
é$O‡³Ò„ÿÃS�:Ël]ó¯ÏbN)4áþ`™d3ºHžàð_VùˆRíåïýãùù"nYú™üWïÅÍßÿ_Ëã„"±D*“+”*-:uéVkëÑ«O¿ƒ†1jÌ¸	“¦L›1kÎ¼‹–,[±jÍº›¶lÛ±kÏ¾@(K¤2¹B©Rk´:B3zƒÑd¶Xmv‡�O<Žoà‰…@Â×‚!ˆ0D"
ƒˆC$ ’)ˆ4D"‘ƒÈC Š%ˆ2D¢
Qƒ¨C4 š-ˆ6D¢ÑƒèC F F!Æ Æ!& &!¦ ¦!f f!æ æ! !– –!V V!Ö Ö!6 6!¶ ¶!v v!ö ö! !Ž Ž!N N!Î Î!. .!® ®!n n!î î! !†OÏ/¯oïŸpðUn¡ÜCy„òl¬œz¼�Ô&‘i|÷âÛ <ùG¬ŸÐýô\¾s¼ˆ3äO©é¿�,_Ç:2"¤!GÚŽ¢³`9³”Àü-Töq�]¶ãöõ'/*&¿ƒ÷/½p?p}w×‹€‚áfÒ„ã±zBÞð<Ÿ'‚ß.Ì�?Ò>‹	ïGs‡WaUÄ`ò†Â—’{?%_KhA¥i"„æiòâèò%‘@QZ*¨¨`Rtí€Œ5Lßå7²èä’³ˆl»û5ïe~¸¢²W>¾4éuð^ìý7^q3 µUÂ7Õ áÞ€d¸šÁ¼‚ÈáDYÏˆ5Ú¢Îµc€ºŽÿ©è‹fpg?†üLlÂ�YfµnW^=ã¿[¸æòTƒ±<TaÂ%“š“‚ý.µÏ"†TSSýi	hÓþÑ4‚�ÆfýàÅ¨„]ážEö¿U,ch�ÉÇ´òV� GM´L ¦ìðàŸŠ¾æ¡êŸç0"ÒâGP¿OÞú¢Ú&¬—Óéw-K†^ù'oÒ´(¢s’è�–¬S(*ÇÄÃ`*R]	oPä¡8)èhÇãUœËhÒÎE¿Ä†))ÏÊ�;0dÏäL1MGx»-PhCA²;ˆ8¾í\`®D&o=qh¬/M_(J‡¸üêwº™G1‡.*ùhäß{æz°,Q(ö,+‰´°„ì@'VÐ…5tcjl �-ô`ÏêÅžÑÞ	Ô‡zQ?` KÄaÃXÃvaÃÆ±Wš NT	&«"ÓuózÍoÂLNHÔÏÍ8éœÌ-§ô`uQÓ�š©éZFB›šáÿÆâÄéœâxs`ú,Gš_/Í÷úÈæßÏE¨˜hî6GiýâéççøLÊ\lv-€ô}´È‘$ê´ˆjíÄr	OPdåRï2ŠŒZ¨„C†dvøQþèÕVüÈ˜;r³ð°Ãqy×r¤E¥“’ïO�{Ó<+ÀI^ê³Ú�ª|‘JÙø§™ìÝåÊÏbk†Š-æÁi·Kä!B¡]sŽŠK„G3â>’q¢t˜&R¾¤“á<j—†äVRÈ…”i—ŒÒ²£T§´p®WÀ4Ë#ßm­inˆáPÙhtí€¼/õWM;Z`-L‹PVÛø-=9¸¬hÅåµhCt¢øJé¼ÊÍÉ<û
'*&‰§5»Ó®³ÙÕ˜�š*­:)\d—o>*œVïxt»‡£ØÂÎ+ŽYÝkŸ¸CU¦b½w·fû•^¶Ø!l^|ë»àŠWèÞW=÷'TRÎ-¯‡ã¨Xqª,µ¯\ØTù#Jœ OT•?Ø/¶9£�þKôŠG»NMÊMOôÀÈTg%ô�2">v|”…¤¼ÁpÑ±QÍLs`	jK¹ðBþêœŸîÄ%ÍE^8Ûç²ƒóÑjº<TñÈ¼Ø—Eò ã.÷8è
3uDAh{Iˆ:$¢ �L/qQ�ÁQÐˆ¦^â£ƒ%¢ l½$B;GDA'¸z‰‡nžˆ‚^¤ôû¼f1GiÞ¨@D’)Z 9È)"„$¨Aâ-P ¯Œ `+ØkN�á^�Oôµ?z_LVEZ·«Î'¿ÈíŸ¿\I›"ø¹37ž"-ôç¥M'õ¿È„ÅaùÿÚ‹ÿ3ù¦Y¯Â¥a%Aj�ºÀyÎÀƒN]/RRÛØd°b¼¥1ƒÃËƒ*ñíEã^�Ö,«‹év?æÜ’Ò'£A•+3{ÈØÄ²ûæGÌ‰k,å»Ì2AX˜M�/î›$Ÿî˜“•1m§–®¢9¦öƒ7ŸÛš ˜Ðèª[ ”6Ëõ¥âkõØ§U�^B�mó,wéEæ–›ÔË³ƒ)içscM™ù’îçëOk4µª…1ú�2mü·ªŠ˜úÜfeÂ)�ÚÜ
Ìt<²{L9œ;Šk§Ï 2°àé˜£BºÖxÒ¶*k	J7g;HèÖlÒ°…•‹8©(¼�äŽ8xPø,f£ªÿ ŽÒ¤sôßM£* Gè¿L¡¾f(�Lbeep r‹¥­©õË‹á¡ö ïa;Tæa®$ƒë>8�ÔitõH-P�wÐ´M$ÅÊÑ™ªÅÌmÔI«j}Ð:“ò¿U:åïÛ¿[VŠ?žþ¦ŒþúÅ2oˆ5¾XÂU|‰Çøô…_Ç{Ê?ú_Í>•~¨q]Hb�•tÁú	ï”äse' �¢ð(,­–Èett§ª§ýÖøeÆÝÁ—{Õ:�ØÞÁ“Á�MU§ÚUmf˜Óé9åîæ±ãd¹Þ[WÙÔRÙ½×òúDwuOö0"•oË`•lÌ0ØªrÿqÝ«+([“§EFbFðæ¹(Ç±û„ƒ(h¹‡ÕK{¸È€Û *-”qBóÌH¢„Þ=yx<Ô‡H¡D…†�†Àè€s;8"1CáˆT5ßTÈÿÿëùÜÌ«ŒåÒ-8§…Uó§VÝhå½«&>aJÉŸªAæ¢R0ÿNqABF4éŒŒ)�–L©ª#.s%¼sÊ+$/‹Y¯²Ma÷¡8ôp„1eyzýÄ9szOjwr3×¬$±ÝPN1R4‡²ò}»*´3p1f•‰r7Á8Â„è÷kg½«µ†À>PûA¨åXœµ>Vå›ùî&W’&¬‡ ¬îu¯4)xmK6'h‚²OER\Óu@E¹!€Ø§,¤~x¾Q•RÙUÏ…r„U5;X^œ!Ð–1ÿ$ÚA7|Uþ
°f<rþ#4û�ä¶‹ô^Êœ©ikISÊ]²lï`Ô¾­S$TÐ†ÜÂÿô„2ø#]Çg`°°�7v$ÀÒµ~wÍ5Og¯¶
$¾@Èikˆ:KZrÎBmð‡Ç�¡%ŸÂãge‘W‹`þë$·¶)©º®“¨â)>>ÀÅ’í|Ñyü?ŸÀÜ¾|oo~˜?žçEÒì‹¥í�r·´?.r@Í|ü®{ÿGVÏ†nÐãÎÈô�îul&Þ6¶mfMw5¦øú2\í+×iC$5ªv)¤ž 'Ë}JÐ�)\�‘é…~ ÀLo»…ÞíÌæî«•<Ðr£7ûd^_…$¨VoJ”MÎ B)˜î˜aT�>ÝSˆGœ:G=9Âßjdôj:/Ñ$MÚ8]ãv-ä1W&ÿ¬—áj¦!œ›j}‡>g“è“©¬9uå´½zP”x=a¢¶xS}µÖ}0ŽŽÀ®Oiª &Æ¹ÙK`µÍÐö–ëý˜Mà	ß ypTe5ö*v€šPôûLœö.øáùêÞ  M¤PÑ¬ò¥àÉÙ~Ã¿“„äÍªNrU-dIž¨Ø)¦ ¢cË%Ã�ÞÍghÏ2
;žêÉØÌ&nZÈˆ„D%8R{Â'Ñ°àØ¯˜éÆ,÷Š«0[O\}ò(ºZ|g‘šrGwi·+7ùùžþ8�v­ð°û/@á›Z]u~PÙ›«(}­ÝßB%áÃª¾<¢Ý}?9Ä[J\¨oÅç²Vñ­b„D$€è�×3bù£þ$JEãëÞV[0S6›–MµbìO1•­•ÛÝ1iÂ‚½(Ì@Ù
Þï“¨)7‡žUï`ƒ¹»˜à»F®ù­ä*‹�Ž<”e…ÝNôrñòŸö°!|iš£°ÿ÷G6jœ¶û÷«–ßn4à¹ð©ûo©/æµi9\~¥úÒâ¿èèçïO!úŒšðYü…¦(~ÅýgD“×ùV×ù‹î=™ÌÉ9Hy»PÖC›dÂ…T–}€cæ·Ø4„´¡©²{ÌZx}{ûH~Rf ÍÏ¶P¾ÊÈV³&ÃYbÜfe=cÉÛÉæ±†ÃIi#Ì)Õýó¤dà,P›ö»ð<cƒÆ;ÀèÐª”Ûó†¾Sç‰¹OÜ4“C'3c¥û5ÌŒ(´íŒ¬÷�n:“¹Á×XhÛ(ÐÚ5›ïŒ8Òë:òÍ¥'¹ÌœµF«":WãúÝTFq°(YWÅ«&ô/½pÅP¸KÝ ã¤rŸ¾¶Œ¶ÒÛ4ú»Ñ´m\3ëÊ4KX�ØÂîšknŒ•°´îr4¯õÍÃéáÕV¬-íê"?CM(Âí·#?¥ˆSýÇ£�aX£èÙ!ËËx³éÇÍ�Çf,VâºB9!9A;Q85QÄNg;Á•¼ÕxÕ¥ƒ¤yî¡êÇÍ�Qˆ"<3÷®Ä4¦‘›÷›?Î«E%PÊ²ò¹/(€ßG^(f—o–oý
“¹Á.Ò¤í_üûÀ@ƒP$ªžRí›Ò�eMý]hõ±‡29yöøiã1-yúÔÏ¼÷ˆ†ØáQçdEÀG@A"=™—÷Or
�d%u,CÅÛ²äYkK�‘R/¾§¦­GøÖößIˆW)mçjÏïë’‰ŠœïZíq>¯£³C©@�ª¯EÍóÎDËä&:éÊôÛZ0õùûwï@‰âë×aóS•§†+·a0�‚B5”xˆIÏZÑeýûÞ¯š¥:Î¹p´rl�Ž46eÑhaFÝ:ÝÏ²„…Ç+–¯€ŽIœKF„›Êæ¤rCãömàÛ(×'7ÏØ4ò.Y¿iïünD¦”‡5^©$G•Ü6»F¤]Ò‚�R¾ŸK²ÁƒÑC1¶”íŽëÄn¢¯Ì÷z¥ÜÊ³r:éÌ¾fÉ:ï©,¦\ÎT7¤áê´ÀšVa4Úýœz®æ„_Mô;€‰÷ŠwÆÿìþ‰ÐÃêõÂë®×½É+¾~E ·ý8¶ÃÜ.m7ï võ?ÔZ¢•ŠW¥ÅeìóÖËjçÔÊ’¿:ì>ù.ãdÓòöv¹óIŽšš0wž»+ˆ«©†<òK	Å„%„š¦»s„&‚—këbÝ�{»GÖÿ'—œÐ¸²Uy65Ûc�{Výœ´qc‰þV[ Ñ5z�÷
ôïí\j¤T–°áYS*àf8Ê³Qz¿¹Ÿ~…qhåìZc§RñM¡ìELßL·,hZ‹8€ÉmÅ
½(-µB÷P4è€í˜loÒ¢`0§…ˆX²’�°–gÓaÍ³°ô°	
ˆK¤>¡\¢â]PHLLú†½SÌÐ·@ÐUU†ð¿zeÉÁœƒ ïÒÀUˆC†0æˆE„ÝZ…~Ci5‘V ÐŠïqä WñÖ¨±Þ€„¾U6µ‚%e0¤,Åñ‰8r�këãé_ºn¡J4Q„k�–wôàé^ÖåÑrÅÔXJ:´”Å²:-?viÎjº$÷´Ìž¬ÇMDqùéÈ«C†-Óéç)ðÑ™ÒŒ¥Ðb}Ž²c' _†|¿jØY�¨Ï3rF~U~Vü{•~‚˜[¹¨¥%VDZ¡pœú›‹Sxä™¬ÙÞ
bâ0`àÛ-ª÷z·îQ"õÐÀ÷KäáÕ[ ¤¡´‰¦¤ø;£¥eÚúˆuˆ®©èÅþÞ?û Ð÷goÿE49qN	ïÀfIåfÐnS+èì\Ø¥é] %Å"Ö…ºš‰8&Ú€]ô=îÉhrÃoÑ-¥'Ð�b,Jbù|‡Âa”Èêxj"}w�ESãéI»é‰ËŠ§%ÑPq!´à\°Í–�0Öa‹�uâœq½îëçI–ÍZ¸`þ‚ðùÝƒ4á|±\?§uÖÜÖ¼%‡5�è®6\ã®Ïn¼KÞ¸C
HÐ3wQQºNpãÆRÕ˜•FŠ”ª8J•£ÿ
Cúõ@îqe‹¸ÂíÿÀ¾%Œ_Œâ¤Á>>ã¨s&$
‡¼«Ö¨TÏ,µŠ1éè`XL÷X“IÐÙÊ�ÊDºñê3vìÇ7ÈÒÆçÊ��¼'ŸÍz’�Ó€º™nÈW 4XÐ¢¤–ÈJr“²ìîšÒ 3ˆÄiéØ*�‘¯×ˆôáo\Œ_¤	×»¼¾D¯ú¥ÿÓŒU³å,©Œ¦`da[
¡–ç·Æ’
M}f±gN€yŒ;=ÝæpjæòSö)
%Ö—3‡EC Á[q–òS«øû¯;¿òuCÉ~¼ÅmCþ$»cÉÞžMhTZdÁÂWªúz÷´¶FDî�$X¯˜Åz™Ð¦i£Í£Á¦°¼Ù‡xëC#�Þx¬ÁÚ±Ý¹}ûØqæh@äJBªŽo�ö±¼ãWƒ,Üx¼ŠlzÆ#ÚßK“zsèÒEòu=¥ß?º�·²êÈ YC›Öà ûÀ^Ó9žŠËUqUªÞ«]¯iœT;…ƒ\äXr�ÓpŽ[å0uN
;ÏÒÙ	U#\ÃË]/ù”V	u¿ÛörC;Ì©tÏŒ8tªY�ð)¤ÝX7¡Ô�§Ås�?¾œ^HC†!d5ŸŸë1ÉkRÝ‹Ä¢ÓÈš÷Ç—ìç¼ó]7=~H…!N�¦RÓï‰0!×dÙe1õõQAÛ}º%K™€fæ²·yA–¬mBÍ3AÌÞ…®ì¢ –dÇ¢†ªšêª�]È^øò7y¡qÄ(Ï9À‚Ü¨>Ÿ|ßâ-¨¥£ï°Û¨í7r;èÐh²5ONcÞ1� Ï&û|Ò`Ì lý¬
¨)|žZÍ/#à�K¡�†H+(mò¿çñCK“�ª¸* e´èÅï+¬+Ð×aŒ/¨uCVÁh
åi‹m+)«ºEQ:±¡}È§ÕÇÅ�yI\Ô^9ºš1s´úày?qjì®§¼e—Â®eA0-·‡¼ãÍ%Fö)•r#+SPÍaSwq�Ÿß�_ø²24ŒMfLN˜4ÝÚŠÊ­;K(	&±:ß7Z?mÚ°(•¬æ•û�á8ÐâPÚa¶©Á8²¡¡ô¦Ñû*™ngÏ™&åÅòxGì“‘â»¢3gg^ð¬éÕ¾Zè …ÖÝì`Õ�D)}‘,Ÿ·i<vìfø'×»zöÖ†<Ÿ|ù2&ýs�‘bú¶‚üIzl=¯c¡VQ¿Ä´�«$åZÒtV¥YZž[{å#¡fâœ
Æª‚”'�räÄB�Ç¶CeO€âWdó¬�svÌÑ
#îvöEšÍ#[ö®pêæÅß[w6j—ï<¸Àx–æ¯7‹ò9ÆÞwsÿ4ÿ�oþH<ûõl÷¿–vÇ³„ÚðæÿHÁWXd—‰.yRóS‰+™À‰/—†&Ê©LZbÐj¿ ŸNQqb6Pc)”X*¥Qw‡ ž4"�TM^™CÕ"RùäØ<XîÚÙ&òÿ?8f:ŒFøÝA6f6ŸÃQ�ÑÛ“fg&ŠD0k‹pÓãÝLÍ‡R(wÏG\˜U»¡,; u½åáö}1é¢×§À><z{Ì÷=Ad‚,ßÍÒ4ÇuÑÉ5í·g_˜ÍãIvãFÜhé¿d$,šM~½J¾0VOšpJ¾ O”ËoLvÁâÄnû
<‹Ààh±Ý±¢²®¢æ×3×¾ðõƒ‡ÃÎÞ#€Îx/e­�;M‰–îîÛ\S{¡»§§–Ò¶.C¡v^*XÍí@›¼`3Ãs38Zº†š‹¹��èåúaùð:çH~_ÿ™Þ31öèš63X‹$0v¡DÍ‰o4‹ÇEEFÂû1Q‘E<Š oë‘7 \úÍT¹…#[s�;Ì¶ÚhŒ�¸«v”Ä»ÝíŽ½{Íæ!ÛÙ™ùü.ç§ÃõõáFc¸ø™>¼³Ø(®o8|xïáÃõž�¶~wa{ôµšío+JíÐ*h¨¥)ø@Ã²-×®Áqžž"»‚I$iRWvf‘èØµ=Iê;â"%&íìšU4ëN—.Ê[žÜe••YÙ¶Ò
[€Aœú[À^°­7å!Æ«{��S5ŽÎN¿]~ÀîXU–£]\ºoÖ]ÜAÕö¶ˆi`èäpr¬!À’•ì$ ‰Uô–3Í'{KnñµR­¾_è‰˜è”m–qeªýõs°¹—yAYé ón'×²¯àK<‡’.Ù’CÓ«yUÃ¦�Äi&CÆHJZ¬ÃR†dtýÓÎ”IæÏŽ†cÃƒS)JmuŸEµöŽÜß9VŠCc¹v†¯]³h³ß/_¯‰W9J†i:ÛactRu"t/þ<UBñ"”ûw9¤:c{ÓTïN|˜D°LÛˆ'>J&ºb]Ûëaé¡¡aÂn'Qar’éåŸ}:hÕòiÿU”;·o“¶…e¼“qRðÇòò_áìÐ®wn¸µ\6)5•¥Ÿë|²~$ú{~µâ.b ÉÂµeOjÅíµ‡Júì{��KÎC‹Z·~ù4¡AZ/¸HA7éì�·äcµîÀ¬�äñ@	R›²8ib-HžÕ5›�JA$S‹nÒíÒæ‚[ó0Q¶ÞR ¬æ(Xç]ó0Î£ÖaY¼Ì«yV	¿àlØ ŽÝGCècè^@ý®·ãÖ‡6�Å�0<] L±Ú†¾ô=ÚÅ?•˜QÒVµu¤l4Ä×³¸—užvk›Ö—kCíW\4°@Y€ÌÙb§«�§ ª}!„MÏ�sÐ‚�S3·	�‰% ×œ·8¦GãpH„Àß”é=™08ÿ$Ä_ïNS Óq6!vey:rÝznü8QÈØ\ñ\ŽÈ�(Âïc
5ôp†¨Ê
ýý¤ž}ˆÂ]¼é1Ú×Gá *�©ÀØôpü˜é©ÄV7² a'Sâ÷-LÑ‘ÜÓŠ”üžüõw¼[+2ˆC”£'8ñ-ÍuÓfçXõç�=¦Ù³fÁk¬ÈÒX
4Æh_uì×ñ;>úö;qHEôûšHÀ’Þ3,lƒÁõÌNÛ.÷ö4¤m6	œdSj·éÑ8¤ÕM"‚;+…F:ÑÔL¿ï"!ZLÄ–˜É;ÄDÍJ“šÚÃëj[¸£†ì€®¸Š<KÿYÌ;ä3ì¡péáøŸ‹€l¸k2¨w¯QÔzÃ-%?UsXKIK  �SËâ_GóÔCOC.!,²·ÖöçvxŽN,Î=:¿ãK9¢ ¯÷:œèÎq—¥"âŸââŸÔ³Ÿá'ƒ Ð�ücLuaÓ‹ã<0kE,eãbP�Úb™.æ-Èl€`¿ª
í‘Ä#w(jó[FmçN[\jÒHÖp$FOÏh‚>š–¢ÃÜm…™opó…È‹Ìajë<�ÂªDÂÜ1z8ÎuÄä‰ÞˆBZC‘¨©ÅÍ|‰»m0·E°xöo‚â,õR¡Z‡žç¿WÓ¿"6Ç,Õ¹
‹ìÍök€oÂBß&j$Ô©§baUúXÙb¡aÚ$GêBVÎAÉ]$Lc‰Ðš\.‘ø,&”À8\Ì�D…p™<�JdF@Ô0Ë•á4ç°¦�ÖÉ-(G´8ròÜ’TU‚V)ª#t7˜ï»¶iKq�ÔåÀS4>=ßødœuçvË!iñ­ÜvX‚£˜ŸP•T*÷É£,eÂÀá�J…Ò2À0†]"!KÊ#Ô1ª;B5–Œî3ÖßñÞ·ßi\cóª‚òqÎ”Qø¯æ÷Ðœ×·CðÒÃ5õPkL˜¸E|7ö;íÇ»ëË³Ó´ßm›UñåêFñô(xòÊ#
¥ÉÎA¤Œ®pq°gûm	M”‚¿iÕ�µ·
E¸RHÙ8å¼‹¥ËõáU	_êúêâüì´>ÞÃ‡iÜï¶èÜöBu}·ê­ÆÙ¦p�w §�ÂÍICMº˜ÀŸÚYŸÎRV†î…‹�V+@÷BíÔMy¦Ý¸û(gàñ=p&U-Ë1j:Õì4Rp*ÏfÆŽcÍç%XAX³Õ–Ž_{çfDÕ� Å©ïO_Fà!ÞHŒÔBÀˆÖ£‹¬<¼Yò¢;£Ö‹³Óq9d‡ü…vž¦‚»#\ù–œØÉÅ“ôŠ¨‹n<Á[”Ô%ªÜ@å¢Çh-UK!â»KG`Õ$±)³%UØCžQfŒ…˜6¯[Ïiï±k{’zÌyä:
%Úh¸ê ™ÊX¥­” Ñh4^n	¹Ö¥ä$îùô¤õt²æñ Tc3¿ã¿¸XèÇb£¤ˆLžz÷-ß¯htk&6fzÜ[ºï¶ÊÚ•y©©qà{‘KŽÒSØ;ÜúìG‰‡Ò�C½}sî˜|¾~Xº¾¼8þ˜þqpðu©ø‚‰Ï Sø«+¾‘#zU …'è3¡²¿’PeEQ½y+giVÏP	WBÚñhC‚“Ào'@£‰Eó·xº'qFÄæ-‘c�.¸Eö–îŽ�UHY¼×vGÈuìa.¡TNzoñìÏ?øXµ»�÷pùÇþ¯mË2œfµZ,†B>cf³^¯Ö’öÁJÒ•�TWA•ÆQè�ÔnUR½V¬HåR¨PÌçÒIy°}AŸ´™—Éb;d*Sz¶ÐBŠ€[)
ËÀ¬«µì2ós[ÙÑµ…A8Ñá0ÍCKe#²²‘�·¤Ew¶Y-ûªÈ¦|ª[uƒ'Ç¼¾h	Û^J0¤i›J³ÓçŽ`• ‚ö‹Þj9T»z·Ë¸miç»rK¼°s@ŠøàBáz V'DåËÉ¢%AJ’–¢Z–”¢ëhûé£óVLpäµ'jë²ÈÓ_â!ERCøhˆsFÒD+	³Á¦fßK Öî®Ê¬–&gœàéÞU”ÌNx2$‰2¹Ò’™ž¢x%áÎšse4‚c®¼3E|,Å\]®Ì,#ùØfX—œp×á!?Fˆ°zgtú¬*sûÌXF¯*¡•$@$/¹¶¦¯ÛÎeötîc[¥3¬¨8Öïzù©Eç¼Ä›P ›¡¿‚H]áõº´2P@!ZÑ°Kàk@ÌíÌu®M„ÉF¼â²©êæ£TE€Ó¼©5˜Â£«ˆA¶æ
RÝu)‘¥k¯óÜdéÉ60B•ƒïiç"ø!<¢M8]dÉð�ÖôE§2ì“¨K3�ö,gá$Ü&Ò@�¡ Ž–q¢ÒD·25™ÁÄJ
ˆT Š“L‰‘®Z	ï@¡±â¶ ‹~ùƒhãA”¯‘ó_ŒWËñÞd¯zk]œÏ¡@Ie‚†úºOFÇÚnÓŽî±8ï¤BlP“üÐ¨¿‰�áŽ´iÓ´ïRÞÁ™ìÑÚë´9ÄYt¢Á$Äƒí^N.ÍUòÀ2Sò­\Ý×4+sœ¶Yúv�‘´Jx0Éƒ8m9"äÊ BdÀ5ýð4Ùäè&“ª¶ú˜"–ÃßÞ¬è_5šÌL•É`X"	BCÙl:]ÃŠCo%�63[Rg¡RºJ¦ŒJMVÈaiÔŒ¤ÄxIŒ==<JŠŒˆ%‘0”/ñÂØ!—CgILD;Eu/ŠŠùÛ÷¸¤kƒ€pøÄ“ö'�„M04¡€m\�°¹xÓìCâDäå–ÐöÞ%G"Ç7ê™¨3“¿à(l§‡U…¥¼\5Ò�º²ÐûXÈÜÕ‰aw½¡å8ÿÚ&
b·6i3‰þ%_gÙ#ÆÄe9\~ƒ‚ê"s}Ô%¸¨,ò¨ƒóžuÎ«³ÔsNÃ“_ažÂÀcåZ´$·ü¶þpw{s}Õ‘¦~Ž¬fjˆëUÙ€"‰¦ÎÔZ…RZX™èBÙ=/Ï&òÌ\F<OÎ�çÓ¸YW¹QQXnº½`Ððwc& ŒÎ-Y7x·ÊtÕ9 ±ë¦Îû¢×Âw“ãf.½}6€¥ÑôÒÜ#=;"âù"Çbz\àir<M§U_I¬äïíº{nìÐÌïbÚ�×P�JëªuDŠîÎyMÙÓ{ÇVIñùÎûàWÂ!SÛAðƒ¦€.5U¬%(æ¸Ê§ÿŸr–GŽ…�†™SÂ›üBdÀyr,Øji¶$¹Œc…¢³Tä—…Û�æ66?)€òÐ¯r
ÛjeQz¼r|lû`|éõ\¥;Ÿãþ´Êu­ewí¶ÛªW’¯%„…•’CÍ=Ãäûà¾_Å–¾tÿì§`†6§X;Ñ*¦¾õ¡¦3çh“ˆ}”#…§¨@.‘wSÈ²¢n`á´¤ŸùÞ^^œž,ÔÚïò»â.ô7"ìë*ãAæy§?¹fZÞ�Ë—ó(ßú¤€�ý;mØ4ÇCç¬vÚ±ýÕõ ¤¼ÝbÇ¾<1Yµ÷¹šºõXVË[rhŽ-)$õ@Ú’bEDÚ�"-&¶€¾Ô¸¿»¾Ø~ýÄßÕ¥¶…{¸ñ¼‹¾XtÝ¡†QºH?ÛX$´Y�¬50†ê´Ã“ï‚Yi*¥L‡%Êñp<ûòÏËõÕçÇËÏëÏýÝÕóõólÚ~¹ºìËµòOáÅx,çýèIÉ¶Žè0¨˜¶˜5'gz¨šÆÝ¶©×xÌÂlÞsÃ`EÓ©·z?ƒÂY78ÇWµK
Ë¹÷ä|¦·¨™.ó„Ú­]¦6·ãr±-QQùå‘7¹gûnÒ
Àœ‡•ÁÖ˜¸þÎ½Ðîã.¥]DáÕªhÊÆè0�òëÖ™MÞ™ˆ?×%SàÓ…—�ˆ6Ìz€#ìn%ãMû¸ÆòíÃ¾‰në
6Œ{šËFÝÔå‚z¯ä“»Hgdòt;a@ò.PP	�ŽëPHÕÌàñû´zèS3‘‡õfèU1;;pÐžè‘Î{×ÉéëìÝãêûÌ> ‰ÝµsL�b=«šs{€zcÂƒSÝ /–NÒ Û·íè]U"Î,9VšlU> Õ hG….*Íy‘êÖ´\YG
»7+êçô Ú”ÐfÌVI•­1±£°r¥~F�lVSŒ¥	u&š†—(ÜmUƒ]!¸µIV¦b„y¼.¤9ûzB§Ýnõ1‚‚Mé	¤ù’¦¸äHtt¤œˆŒ|(ØA…é1ÜtWÕ'P¡D ªUK™c%ov’‡¹%½Ø“”Is�?ÄpQÏ“Á\¸¥÷~·räiß¤›|s"DÑ½3Ÿ5*lùÙ›ó&J¼4bÌ»@Ä›I ³‰-ÞÅÆØC>û-žhpÛãî×éññ~|™^«Ô,èù �?Íàÿ¾ÿÏ£	ð�Ò¿’WYâ�ÇC† ]+j8Ž.•,¨Oð¶éß\ÒkÁÛÝò[(  Ÿñ;øð™÷/®±}øg”Ÿô 2Þ¾H‘qëŽ+	ïUx?|×8€¿�Zðþî@L0"ñÅ±þÌq„?H˜à$‹ø^ÃÚ¹I`4þþM5§õ|wìq$¨JcszåQ)'Õ÷E‹ãyU½>›ÊÔÖ=û£úõ#Û¼½¥ºçÄp˜ñÏ�T%»uãêÒ¹ uÞ…Lö2lßë°�÷,|è.ä¹ÜRjœ¨ôPÞ”Y`§ÌNéÎF	²ú´"d�åª	í_é“Ýž,ëYÝ·4mGõÇ³H‡üÑÖV] ÞV«ÍRñtÛÖ‹°7õt
u3E—¸žÖ\ k^.%¢^_,†ûÄÒNkÞú=¡7Ã÷ŸÃ»„åR5Ý0-Ûñðôr{©´‰“4Ë‹²ª›¶ë‡åj½Ùîöãt8žÎÎ/.¯®onïîŸž_^ç Œâ$Íò¢¬ê¦íD›~§yY·ý8¯»YXè&�PEcE§x}çÇ…aòPÙTåPé�¦
’•
P·ã™† Q6g�+ujÅ�z$2ÕJÂ²»I	!m‚~n8Ù«.ðSÊ¢TtšäzSdj‚Éo<å 8å"Ä¥$•ƒèÔ :Z«A‘T²Û-¹Ñ¨0‘/…‘;Y› VˆP¢Õ°jä¹öÇŸå€¯–x¤ëO´¥bÕ˜JUAMD'ºXb+Ö È2c pÕÙÂ,Z�ÄjªÜ)ckŒ¼êŸTf"ð´‚tPi,ïÛ`U3ûÞÌHJÐ´:‘·r aÊÚ
Ò<œêçqìÛmÍ°Ú¡P¿U¼
0;Èu[à~Cº�ò3Á9À³tµ	&–åÃÅoCY^jÙ«Œ·µœÓÙóªùx‘Ž&HíEøÓ	bûÓ˜(cô+æETÉlòµÒ|P�¸&Êlð’óþ4\Ô†\ƒú¨Su€%Ž­$mcí®.UÂÆ°'åÀ«‹Ò¶œês3=n¬SÚäÕÿ(: w÷è8\}øÏøo�ýÓ€‚*¾ÑpŒi²0úëã˜½=1f²›ßÉ‹Á“`Ž`ß_aŽßÃ>þkÿÇ»„<<êÚÙ";_ß>·f³ëßÇÁÃ�t.b]õ.˜c                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/Material/icons/material.ttf                                        0000644                 00000057734 15266052705 0020174 0                                                                                                    ustar 00                                                                                                                                                                                                                                                            €  pGSUB ‹%z   ü   TOS/2> IÔ  P   VcmapÛÞ¦¬  ¨  €cvt Õÿ  SÄ    fpgmŠ‘�Y  Sä  pgasp     S¼   glyfáfQR  (  BTheadP!  J|   6hhea<±  J´   $hmtxo0    JØ  xloca8ÿ(®  LP   ¾maxpŽ…  M    namew‡û  M0  Ípost¿ç÷}  P   ¼prepåA+¼  _T   †    
 0 > DFLT latn                      liga                     è�   z¼   Œz¼  à 1                         PfEd @è è]Rÿj ZR –                  ,               ,  
    â      èXè]ÿÿ  è èZÿÿ       ¶           	 
                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]                                                                                                                                                                                                                                                                         l       ]  è   è      è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è   	  è	  è	   
  è
  è
     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è     è  è      è   è    !  è!  è!   "  è"  è"   #  è#  è#   $  è$  è$   %  è%  è%   &  è&  è&   '  è'  è'   (  è(  è(   )  è)  è)   *  è*  è*   +  è+  è+   ,  è,  è,   -  è-  è-   .  è.  è.   /  è/  è/   0  è0  è0   1  è1  è1   2  è2  è2   3  è3  è3   4  è4  è4   5  è5  è5   6  è6  è6   7  è7  è7   8  è8  è8   9  è9  è9   :  è:  è:   ;  è;  è;   <  è<  è<   =  è=  è=   >  è>  è>   ?  è?  è?   @  è@  è@   A  èA  èA   B  èB  èB   C  èC  èC   D  èD  èD   E  èE  èE   F  èF  èF   G  èG  èG   H  èH  èH   I  èI  èI   J  èJ  èJ   K  èK  èK   L  èL  èL   M  èM  èM   N  èN  èN   O  èO  èO   P  èP  èP   Q  èQ  èQ   R  èR  èR   S  èS  èS   T  èT  èT   U  èU  èU   V  èV  èV   W  èW  èW   X  èX  èX   Y  èZ  èZ   Z  è[  è[   [  è\  è\   \  è]  è]   ]   ÿü•À 
 %@"E o   of   
 
+5333	3¡¦Ñ}þ_þ_}úúMwþ‰þ³      -—  (@% G ED   R   V  J+!7'	7'!-þ%Ú8þÈ86ÛÞ†Ú7þÇþÈ6Ú      -—  '@$ G ED   R   V  J+!!ô6Ûþ#ÛÛ89—7ÚPÚ68      -—  @ E   f+%#'	'RÖ8899Ø&ØØ89þÇ8Ø       •«  @   o o f%5 +#"3!2654&#!¡ú#11#š#11#þ³«1"þ"11"¡"1     •™  kµ GK°PX@# c   m  n T W K@" o   m  n T W KY@ 
	 +%!"&546;!2!!ðý³!//!ëO!.ýfU�Z*#/!Ö!/P.!þw:þ³!      •j   ´µGK°	PX@(  ec   ` T Y MK°
PX@0   m  k k   ` T Y M@*  m k   ` T Y MYY@    !	+!2#7#54.#33!'!"&=3b=r˜˜s4þ;˜s5M=þísgK½¾¾½5(½¾5K½      •«   ZK°PX@ c  _   R   X  L@ o  _   R   X  LY@+%!!5!'#"3!2654&Aýfšþ³Sú#11#š#11d¡SS1"þ"11"¡"1     •«   ƒK°
PX@-  oec	   ^ R Y M@/  omk	   ^ R Y MY@ 	 
+!'#"3!2654&##5#53533Aþ³Sú#11#š#11L}T}}T}XS1"þ"11"¡"1þ³}}S}}      ÿ½Aÿ    “¶ GK°
PX@0	 o   me  
 ^ R Y M@1	 o   mm  
 ^ R Y MY@+3'%!#!"&5465##33535ååþÜMú1"þ"11òS}}S}Ûå?úþ#11#š#1ýâ}}S}}S    ÿ½9ÿ 	  ^K°PX@$ c   m   nRW K@# o   m   nRW KY@	2+73!265!%#'##!ß6&r'5ýÖZ¢.ê-£ˆ'56&,Œ..\      ÿ½€ÿ 	    H@EG^ ^   R  X   L

  

 	 	3	+#!"&'!535'7€…1 þ¢!1†hu^uþY¯ŒŒ‹ÿý	 ++ ÷Xýn’ýÅ¯¯Õ‹ŒŒ   ÿü•Â ) 2 O@LGm   `  ` T X L 10-, 
	 ))	+"#7#47>2#"'3276764'&'&4&"260aSQ01wŸžw&%–@?%&&%?@KSM8-p=aTP/11/QS/B./A/Â1/QS`žžL@?J&%?@–@?%&48$%1/QRÁSP/0þœ!./@/.    ÿ½\ÿ    >@; m    ^ ^ R X L		 +!"3!!"3!2656&!!Ÿþ:,KÆpþ`,, ,, þ` ÿ,ýìM,ýì,,,ý¡      ÿ½•ÿ " + 4 = B —@”?@
	
GA"F  m 
	
	m		k m    ` 
`  `TX L>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625’-MZM--M-'bb(-M--MZM-b$}ýe"11E00#"11E00×úS$(-M--MZM-bb-MZM--M-'bþÜ*ô1E00E1þ1E00E18ŒúS#*    ÿ¿Jÿ   & N@K  `
 	 ^  ^ R X L &%$#"!  +#."#"3!2654&!2"&46!3!53ýŸ:J:Ÿ,,,.þØ ýîK|K´!**!,ý¡,,].  ýT_ss    ÿ½îÿ  ³ -+úôòŠ\…«ÿþ-þÐ*5£     ÿ½Vÿ  ' 5 C K…@1
	=G" FK°
PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X LK°PX@H  	e 
		
e   ^   	
 	^  ``  ` R X LK°PX@N  	e 
		
e e   ^   	
 	^  ` `  ` R X L@P  	 	m 
		
m e   ^   	
 	^  ` `  ` R X LYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4sþœ‹¼ýjI
Y·þKYv
þsrý—\þy^\
þˆ\Ø[
þƒQ      ÿç•Õ % . 2 6 s@p# G	  `^ ^
^TXL33&&  363654210/&.&.-,+*)( % $!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35ôSSS0$$/SSÑÑSS/$$0þ¡þ³MÐ}}þ6ÐÕSþS!!S* *S!!§)þ‰SúSSú§TT    ÿ½•ÿ   @  G  o   f+73'64/&"27S­­2l&U­*j­­(&lU­+     •z   , I@FG   ` `TX L!  '& ,!,
	 	+"27>7.'&".4>2"2654.ô]UR}  }RUºUR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$þ'4WfW44WfW415 1BB1 5     ÿ½Jÿ  
 #@ E o   o o f+%!3	3!!`&Äþªþ¨ÄÄ®ýR�&Xþ¨þxb    ÿ½Lÿ  
 3@0 G  o  oRV J

+#!#!5LÄþØÄXþ¨®Ù&þÚþ¨bbb      ÿ½•ÿ   - 1 G@D `  ^    ^	T	X L10/.$#--
+%35#"276764'&'&"'&'&47676235#ÊTT*ra^7997^aãb^7998^aqZNK,..,KN´NK,..,KN„TTŽúw97^aäa^7998^aâa^89ý.,KN´NK,..,KN´NK,.ÊS    ÿ½–ÿ     A@>Gmk    ^ R X L  83+'.#!"3!2656##5#7!€A
ýÖ	A6&ˆ'5þ^þ¢º¢?&,,™MMý½'76&C§þ\\Î..     ÿ½–ÿ     ?@<Gm n    ^RV J  83+'.#!"3!2656'35337!€A
ýÖ	A6&ˆ'5þ^þ¢º¢ýÁ&,,™MMý½'76&Cýæþ\\E..       •�         # ' + / l@i	
  ^^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S¯¯¯¯Û¯¯Ý¯¯Ý¯¯Ý¯,¯¯ým¯¯Û¯¯Ý¯¯Û¯¯¯á¯þw¯¯¯¯¯+¯¯¯þw¯þv¯¯¯¯¯¯¯µ¯¯      •¶       A@>
^  ^	R	VJ+735#35#35#!5!!5!!5SÄÄÄÄÄÄöLý´Lý´LüÄþFÄ(ÄþFÄþFÄìÄÄ      ÿ½•ÿ   - N _@\ 		m 		k
 ` `    ^TX L/.CB6532.N/N$#--+%35#"276764'&'&"'&'&476762"34623476767654.ÊTT*qa^8998^aâa^8998^aqZNK,..,KN´NK,..,KNZ-M-T1D1

T -MdSH98^aâa^8998^aâa^89ý.,KN´NK,..,KN´NK,.G-M-#11##$-M-      ÿ½•ÿ      ! % 4 8 < @ I M Q�@
10GK°PX@s
e m-e&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y M@u
m m-m&%$#"	 	 ^('^) ^+*^, ^/!.R/!.Y MY@NNJJAA==9955&&""		 NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 		
 0+"353533533533533354&#35!353#;57335!3535#326=35335§"2T)TSSTSST)T1#ýTšTý¸ÀÒè2"ÐÐTý¸TšTTTT))#1þ5TSSÿ1#))TTTTTTTT))#1ÑSSSS)TÐÐ"2èÒÀN}TTTT§SS§)T2"))TTTT       •.   , >@;
  `  ^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.£#;#¦¦9`88`9¦¦#;#ªNþ²w¦¦#<##<#¦¦9`88`^#;#O8_r_8O#;T¦O#;F;#O8_r_8      ÿ½•ÿ  ) >@;  GD   `  T  X  L$#)))+%#'6765.'&"32677%".4>2§%#SFH¨IF)++)FIT9h)îGýõ;b::cub9:cò*268T�)++)FI¨HF**'$%îGî:btc::buc9    ÿ½aÿ     ! k@h	G ED  op ^  	^ 		R 		V
	J  !! 
	  +7/##3#'3/#55#5!3Š…ƒƒƒt _}z€dˆ\
øÂ¯&¾À{„„ýÆ„„¿n–þj±U((((þú4M6þñM    ÿ½Rÿ     & +@( E"D  o f%$+'5.4>7&'67'767#’ÈV�())(ŒW>d::d>ˆ:>ÙcH?2q>>	Z7Èˆ
bKN²MKa
Z
Jp€oJ
«,bI?,@þÐZ8?#a>QZ6   ÿ½Rÿ    * $@! E"!
	D   o f+'36#7&5&'55>764'.>>	ZX:>$$L_<0ãÈÈ>ee>V�())(Œ³?QZ7�bI>6³9Z
$ SˆÈÄ­
J79‚87J
Z
bKN²MKa    ÿ½•ÿ ' F@C
  o	oT^X L !	 '&+2+32!!+"&5!5!46;5#"&5463Ä#11#¦)$þÜ¦þÜ$)¦"22"ÿ1#þ`"2SSSS2" #1      ÿ»—  ! . *@'#G    ` T X L/*+6'&'.7676%67676.'.•76]`ãb_9;76]`âb`9;ý/.LNZ9h)þ%!"~Û!"/-LN[9hVqb`9;76]`âb`9;76]`[MK*,'!þ6+hÑÊ+j9[MK*,'   ÿ½Aÿ   /@,G p  T  V  J 
 +!"3!2654&3'îþ"11"ô"11ýêÐhhÿ1#ýf#11#š#1Tþ³??      ÿ½•ÿ  @
	 D   f+%73%'}þÖ7#º6þÖÄ”­§”.S§wNþ²q­Súkþúf     ÿ½•ÿ   "@ G  o f 
 +"276764'&'&'7ôra^7997^bâa^8998^aÄÑ;–<;ÿ97^aãa^8998^aâb^79ý�Ð:–=:     •s    2@/ ^  ^   R  V   J+7!5!5!5!5!5SBü¾Bü¾BI\‹\ç\\       •�    @ o  f+%3#3#!3yööþÚööLö~ý‚~ý‚~    ÿ½•ÿ     H@E
  m  k	^RVJ+7#!5#3535!#!#33Êw*³ww³þÖË³*w³³wçþÖw¡³wý5w*w³*     ÿ½•ÿ     C@@	o p
^  R V  J+733!#!#3535!5#!5S´vþÖ´´*vdw³þÖww*q´*ew*ü¾´ve³þÖw     ÿ½-ÿ   @ G E   o f4+773#!"&-*ýí+†:¾þÝ.3$þ¤$4ÏK0KMl<ýù¯þ¢$44     ÿ½•ÿ  0@-  G E    ` T X L)!%#+532#!!276764'&'&+wþÜ$¼4V11V4þ à`RQ/00/QR`¼ÿÑÐ}1VhV2§00PSÀSP/0      ÿ½•ÿ  0@- G  E    ` T X L%!)!+#"3!5!".4>;%q»`SP0000PS`ßþ!5V11V5»$ÿ}0/QRÀSP/1§1VjU1}Ð    ÿ½�ÿ G T 7@4 $?2G   o oo fIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*¦#$hSZXSh*¦#$hSþn(C''CPC''C6E�*l

n*�DD�*n	
n*�$'CPC''CPC'        •«   >@;   G o  ^   R   X  L	+%5#535!'#"3!2654&G¦¦Ñ)þ³Sú#11#š#11d}§}Ñ$S1"þ"11"¡"1     ÿ½•ÿ      ! % ) - 1 5 9 = A J S W [ _ŸK°PX@v
e9#8  e.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"K@x
m9#8  m.-,+*	 	 ^10/^432^765 ^<);':%!R<);':%!W(&$"KY@£\\XXTTKKBB>>::6622..**&&""		 \_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 		
 =+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335§"2T)TSSTSST)T1#ýT} }Tü¾T} }Tü¾T} }Tü¾2"))š))#1ý�SSTSSÿ1#))TTTTTTTT))#1ÑSSSSSS¦TTTTTT§SSSSSS§)"2T))T2"))TTTTTT      ÿ½•ÿ    # ' + / 3 ³K°
PX@>e	e  ^^
R
YM@@m	m  ^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}ý�T}}"2N¦¦¦¦ TTýTT«#1T}}}}T1ýC}}"2T}}T2TýfTô¦¦¦    ÿ½•ÿ ; –@“  op R 	^ 	 
	
^  ^  ^  ^ R  ^ VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53¯\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\ÿ\\\\\\\\[\\[\\d\\\\\\\\[\\[\d     ÿ¿3ÿ  " , 1 T@Q  ` 		^ 
  `RX L.-
	 0/-1.1,+'&	"
" +%264&"#54."#"3!265.%4>2#!!ô!..B..(5[l[5'!//!Ý //þw!8D8!öiþ%Ýƒ/A//B.gO5[66[5O/!þu!//!‹!/O"8!!8"Oþ#‹þu     ÿ¿3ÿ  " , C@@   `   `	T	X L )($#""
 
+#54."#"3!265."&462#54>2â(5[l[5'!//!Ý //þò!..B..Zö!8D8!êO5[66[5O/!þu!//!‹!/þ™/A//B.gO"8!!8"    ÿ¿3ÿ  * / [@X m  ` 		^ 
  `RX L,+
	 .-+/,/%"	*
* +%264&"#54."34>2!"3!265.!!ô!..B..(5[l[5K!8D8!þ˜!//!Ý // þ%Ýƒ/A//B.gO5[66[5"8!!8"O/!þu!//!‹!/þ#‹þu        •º 
 @ E
 D   f+	>3•þ»à†p'X÷®uE¹ š€Åzr¾      ÿ½•ÿ       =@:  

^^	  R	 V  J+#535#53#535#53#53#53•§§§§þ²¦¦¦¦þ³§§›§§C§§¦þ§§¦þ§ô§   ÿ½•ÿ  ³-+'			7•Tþ³þ³TNþ²TMMTþ²«Tþ²NTþ³þ³TNþ²TM   ÿ½•ÿ  )@& o  p  R V  J+!#!5!3!•þ›vþ™evg"þ›evgþ›       •  4@1G E p  T  X  L 
 +"'!'>327.'&PJG9’o”+k;F~[`wQTî3‘þ’–%(:fAU†%&     •š  @   R  V   J+!5!•ü¾B$v    ÿ½•ÿ    ( ±K°PX@8 o   o	e
^TV J@9 o   o	m
^TV JY@2!   %$ (!(
	  +!!3353353353353353!%2"&46§TBTýBý)**)**)**)*þ6\$$4%$ÿþôýâþÜ$STTTTTTTTTT}}$6#$4%      ÿ½Aÿ  8 T m ˆ p@mD9_UznGF`{F
  `  `  `  	` 		T 		X 	L ‚�usgf[ZNM@>*)88 +"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5ô}b2## +ez?r^##\r?640$

#dm40$

#dÃ	b}?r.	
&#03p30E
_^

%#brb#
b}?r.	
'#brb#
ÿ('(þ,# &''&ô,#&T		
	
		
	Ã	(	7				 o''6p(6      ÿÎ•î      @	-+%''%5'7'77'™¥ ^þ ¡ö« ý_ü¥òMü¯ò§ú¡{}}8<©§<¡œŒ–‡–š&¢„šþÌ–‡      ÿï•Í    A@> G	F
D   ooRV J    +%!!7‚þõþú
áƒú„ý¸ú„þþÏþ1'èè»þEè¼     •Z ' A q@n$ ?,	G   m
m k k m	   ` T X L)( ><9852(A)A#! ''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+¯&44& 7 CZ;/$>$
;),<+F+H)!2S0”(D(:'+=5J4!6  '      ž’ % g q z ˆ i@fMB„oUF)‚2G5F  o   o o o
	` T X LsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&‚75M
03A?56
((0
|N¯<S*i@1-
+^=$1!@)-10%f+	

-þ'%8%%®''8'(OmD%#	7#&#%<	V`.IYF6~°=.4.7!ÀT
*,'	
;	&­&7$#&&6%$5(
7!   ÿ½•ÿ   5 J@G m k   `  ^ R X L 0/,+)(
 	+"276764'&'&#537#54?>54&"#4>2ôra^7997^aãb^7998^aGTTU%	T040E1T-MZM-ÿ97^aäa^7998^aâa^89ý;Tï%,B54#00#-M--M-1      ÿ½•ÿ     `@]	 
GED o   o m	n
R
VJ+353'3#5535'#3'##7#©˜sÀ¾s(r¼¾s¾rr˜˜sÀ¾sÑr¼¾˜s¾¾s–K¾s˜sMr¼¾   ÿ½“ÿ    A@>G    ^ `TX L5 +!"3!265".4>2!5!ÛýÔ%76&ˆ'5þa&@&&@L@&&@fþ/Ïÿ6&ýx'76&,ýÔ&@L@%%@L@&Ñ¹¹   ÿ½"ÿ  % D@A G ED   ` T X L    +7'"7&5&>#552767654ô˜˜RGD()08<i=8=i=˜˜RGD()Ar˜˜s)(DGRZF819<h=C819=i=r˜–s)(DGRY    ÿ½•ÿ    7@4   ^  ^ R X L 
 +"276764'&'&#535#53ôra^7997^aãb^7998^aGTTTTÿ97^aäa^7998^aâa^89ý�úSS   ÿ½öÿ  ³-+'	7ödþ` bþÄ�bþ_þ_b?     ÿ½ôÿ  ³ -+	Vb<þÂb ÿbþÁþÁb¡     ÿ½•ÿ 	 "@ G o   f   	 	+'!'ô«þ_«¡«¡«ÿ«þ_«þ_«¡«¡   ÿ½•ÿ   µ -+'%'77Z±v;bv±þ[þžv±;±wÿ±vþž;v±þ–:w±;±v      ÿ½•ÿ    (@%  G  o f 
 +2"'&'&47676'77'7ôra^7997^aäa^7997^a––:––:––:––ÿ97^aäa^7997^aäa^79Ñ––:––:––:––     ÿ½îÿ  3@0  G  m n   R  V  J+35!333535›)þ`)SÙBÙ^MTTþ³STúúT     •›  ³-+%'	'\ÆC	9C§ÆEþ÷9C    ÿ½ÿ  @ D   f+'#'ò"K£h£IC"I£zý†ŸK      ÿ½ÿ  @ E   f+	737öþßH¥h£IÿþÞI£ý†z£K     •G  @   o f1+&#!"27654†ý&m.l9-þ“o      •G  @   o f6+%4'&"3!26•þ”.þ“Ú¥oþ“+    ÿ½sÿ  	 "@ o  f  		  +###s^B^ÿþ_þ_Bþ_þ_B    ÿ½•ÿ   "@ G  o f 
 +"276764'&'&77ôqa^8998^aâa^8998^aqþü<ÈÈ<ÿ98^aâa^8998^aâa^89ý¿<ÈÈ<   ÿ½Jÿ     ;@8ED op   R   X  L  +67676=#5"&463121ôþª-,MOaaOM,-þÐK%ÿ˜ãha_CDDC_ahãiããþ(   ÿö•Æ   
 ,@)
E  o    ^ R V J+#53#53!KKKKþ9Bþ_ ˜þÐK½Ð     ÿ½ßÿ  @   o f+	&"27654Ïþ“,.m„lý&m   ÿ½Ýÿ  @   o f+	62"'&4m,.þ•„lý&m.     ÿ½•ÿ  * -@* G   o o T X L"!+#3"'&'&5467'2767654'&"\\áC8 ,,IL°KI+,?8AD&(98^aâa^89(&ÿþ1kC.@BJXLI,,,,ILXKƒ,C;QT]qa^8998^aq]TQ      ÿ½•ÿ   M@J G   m  k  ^ R X L  
	  	+33!!5!"3!265#P¦þ:CÆ\\ývEþ»%76&ˆ&6\ÿ\þ8CÆ¦GýŠ\6&ýx'77%E   ÿ½•ÿ   ' ¹K°PX@H 
	
e   m 

^ 	 	^  ^  ^  ^   R   X  L@I 
	
	m   m 

^ 	 	^  ^  ^  ^   R   X  LY@"''+%#5#533#3#5#535#5337!"3!2654&R^\\\^\\\\\\\éýx'77'ˆ&66w[\\\\\\[^\¸6&ýx'77%Š&6   ÿø“Æ   * > _@\<= 51 2&G*E)(D   m k  ` T X L,+;9+>,>-%+54.#3263#".5&32772>7.'&#"6îy5 §;5:(+3W3¼Uc+ }RU]ZMo0ýaK3X3n+C }RU]LLQ#ãv4:	5:3X3( VOnS�#$n0ž˜3W3% n$\3S€$$Q      žfŠã_<õ è    Ø@    Ø@  ÿ»è             Rÿj  è    è                ^è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è  è       * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p        Þ        5          5        =        D        L        T        _      
 + g        ’  	   j ¥  	    	    	  -  	  =  	  M  	  c  	 
 Vs  	  &ÉCopyright (C) 2018 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com C o p y r i g h t   ( C )   2 0 1 8   b y   o r i g i n a l   a u t h o r s   @   f o n t e l l o . c o m m a t e r i a l R e g u l a r m a t e r i a l m a t e r i a l V e r s i o n   1 . 0 m a t e r i a l G e n e r a t e d   b y   s v g 2 t t f   f r o m   F o n t e l l o   p r o j e c t . h t t p : / / f o n t e l l o . c o m           
                       ^	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnextql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-errorwarning-alertcaret-right
caret-leftlogoutopennewziphide    ÿÿ                     RÿjRÿj° , ° UXEY  K¸ QK°SZX°4°(Y`f ŠUX°%a¹  cc#b!!° Y° C#D²  C`B-°,° `f-°, d °ÀP°&Z²(
CEcER[X!#!ŠX °PPX!°@Y °8PX!°8YY ±
CEcEad°(PX!±
CEcE °0PX!°0Y °ÀPX f ŠŠa °
PX` ° PX!°
` °6PX!°6``YYY°+YY#° PXeYY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#! d±bB °#B±
CEc±
C°`Ec°*! °C Š Š°+±0%°&QX`PaRYX#Y! °@SX°+!°@Y#° PXeY-°,°C+²  C`B-°,°#B# ° #Ba°bf°c°`°*-°,  E °Cc¸ b ° PX°@`Yf°c`D°`-°,² CEB*!²  C`B-°	,° C#D²  C`B-°
,  E °+#° C°%` EŠ#a d ° PX!° °0PX° °@YY#° PXeY°%#aDD°`-°,  E °+#° C°%` EŠ#a d°$PX° °@Y#° PXeY°%#aDD°`-°, ° #B²
EX!#!Y*!-°,±E°daD-°,°`  °CJ° PX °#BY°CJ° RX °#BY-°, °bf°c ¸ cŠ#a°C` Š` °#B#-°,KTX±dDY$°e#x-°,KQXKSX±dDY!Y$°e#x-°,± CUX±C°aB°+Y° C°%B±%B±%B°# °%PX± C`°%BŠŠ Š#a°*!#°a Š#a°*!± C`°%B°%a°*!Y°CG°CG`°b ° PX°@`Yf°c °Cc¸ b ° PX°@`Yf°c`±  #D°C° >²C`B-°, ± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±	+-°, °+± ETX°#B E°#B°
#°`B `°aµ  BBŠ`±+°r+"Y-°,± +-° ,±+-°!,±+-°",±+-°#,±+-°$,±+-°%,±+-°&,±+-°',±+-°(,±	+-°), <°`-°*, `°` C#°`C°%a°`°)*!-°+,°*+°**-°,,  G  °Cc¸ b ° PX°@`Yf°c`#a8# ŠUX G  °Cc¸ b ° PX°@`Yf°c`#a8!Y-°-, ± ETX°°,*°0"Y-°., °+± ETX°°,*°0"Y-°/, 5°`-°0, °Ec¸ b ° PX°@`Yf°c°+°Cc¸ b ° PX°@`Yf°c°+° ´     D>#8±/*-°1, < G °Cc¸ b ° PX°@`Yf°c`° Ca8-°2,.<-°3, < G °Cc¸ b ° PX°@`Yf°c`° Ca°Cc8-°4,± % . G° #B°%IŠŠG#G#a Xb!Y°#B²3*-°5,° °%°%G#G#a°	C+eŠ.#  <Š8-°6,° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# °C Š#G#G#a#F`°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca#  °&#Fa8#°CF°%°CG#G#a` °C°b ° PX°@`Yf°c`# °+#°C`°+°%a°%°b ° PX°@`Yf°c°&a °%`d#°%`dPX!#!Y#  °&#Fa8Y-°7,°    °& .G#G#a#<8-°8,°  °#B   F#G°+#a8-°9,° °%°%G#G#a° TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹  cc# Xb!Yc¸ b ° PX°@`Yf°c`#.#  <Š8#!Y-°:,°  °C .G#G#a `° `f°b ° PX°@`Yf°c#  <Š8-°;,# .F°%FRX <Y.±++-°<,# .F°%FPX <Y.±++-°=,# .F°%FRX <Y# .F°%FPX <Y.±++-°>,°5+# .F°%FRX <Y.±++-°?,°6+Š  <°#BŠ8# .F°%FRX <Y.±++°C.°++-°@,° °%°& .G#G#a°	C+# < .#8±++-°A,±%B° °%°% .G#G#a °#B°	C+ °`PX °@QX³  ³&YBB# G°C°b ° PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b ° PX°@`Yf°ca°%Fa8# <#8!  F#G°+#a8!Y±++-°B,°5+.±++-°C,°6+!#  <°#B#8±++°C.°++-°D,°  G° #B² .°1*-°E,°  G° #B² .°1*-°F,± °2*-°G,°4*-°H,° E# . FŠ#a8±++-°I,°#B°H+-°J,²  A+-°K,² A+-°L,² A+-°M,²A+-°N,²  B+-°O,² B+-°P,² B+-°Q,²B+-°R,²  >+-°S,² >+-°T,² >+-°U,²>+-°V,²  @+-°W,² @+-°X,² @+-°Y,²@+-°Z,²  C+-°[,² C+-°\,² C+-°],²C+-°^,²  ?+-°_,² ?+-°`,² ?+-°a,²?+-°b,°7+.±++-°c,°7+°;+-°d,°7+°<+-°e,° °7+°=+-°f,°8+.±++-°g,°8+°;+-°h,°8+°<+-°i,°8+°=+-°j,°9+.±++-°k,°9+°;+-°l,°9+°<+-°m,°9+°=+-°n,°:+.±++-°o,°:+°;+-°p,°:+°<+-°q,°:+°=+-°r,³	EX!#!YB+°e°$Px°0- K¸ ÈRX±ŽY°¹  cp± B²  *± B³
*± B³ *± BºÀ  	*± Bº @  	*± D±$ˆQX°@ˆX±dD±&ˆQXº€ @ˆcTX± DYYYY³*¸ÿ…°�± D                                      includes/File_manager/lib/themes/Material/icons/material.woff                                       0000644                 00000034120 15266052706 0020321 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOFF     8P     _Ü                       GSUB  X   ;   T ‹%zOS/2  ”   C   V> IÔcmap  Ø  ù  €ÛÞ¦¬cvt   Ô       Õÿfpgm  è  �  pŠ‘�Ygasp  	x         glyf  	€  )  BTáfQRhead  2    /   6P!hhea  2Ð      $<±hmtx  2ì     xo0  loca  2ü   ¾   ¾8ÿ(®maxp  3¼        Ž…name  3Ü  }  Íw‡ûpost  5\  v  ¼¿ç÷}prep  7Ô   z   †åA+¼xœc`d``àb0`°c`rqó	aàËI,Éc�b`a€ �<2›1'3=‘�ÆÊ±€i fƒˆ &;H xœc`d~Á8��•��©ŠiC„f|À`ÈÈe`efÀ
Ò\S^0¼ˆeúŸÅÅÄ0(Ì’ Tr xœíÕeRa „á	1âÄÝÝÝÝÝ	°7Èùr üê[�wØ>F¨zøv‡š­©ÚîXLéœ¦arŽ	_1±Ñ«+×§X·r}š¿¾Ÿñœ`2ó-/CÈÂp·ø·?+ç¤÷LûÉ3¬fk½=³l`#›ØÌ¶²�9¶³ƒ�ìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8ësœç¹Äe®p•k\ç7¹Åmîp—{ÜçyÄcžð”g<ç/yÅkÞð–w¼çùÄg¾ð•o|ç?™ç,²ÄÈGŸáÿÏìðkúwß�†ïxlÈCÊï˜Ô�ŸÔ�¡Ô�­”Y e*H™R&…Ô�¹”é!5<]ÊD‘2[¤L)óFÊä‘2ƒ¤L#)sIÊ„’2«¤L-)óKÊ$“2Ó¤L7)sNÊÄ“2û¤l)û@Êf�²#¤l){CÊ‘²K¤l)ûEÊ¦‘²s¤l©a'R6’”Ý$eKIÙWR6—”&e›IÙkR6œ”]'eëIÙR.)7�”ë@Ê� åb�r;H¹"¤ÜR.)7†”kCÊÝ!å‘r‹H¹J¤Ü'R.)7‹”ëEÊ#å¢‘rÛH¹r¤Ü;R.)7�”kHÊ]$åB’r+I¹š¤ÜOR.©ÿÆÎÅ1†siŒá�1ú„ø   xœc`@Èô?„lÝ xœ­ViwÓFyIœ„,%-jaÄÄi°F&lÁ€	A²c ]œ­• ‹;é¾ñ‰ßà_ódÚsè7~Zï/$�´çpš“£wçÍÕÌÛeZ’Øë‘”›/ÅÔÖ&�ì<	é†MËQ|(;{!eŠÉßQ­–Ú·‡DD"Pµ®°DûYšd|èQFË¶¤WMÊ-=é.[ãA½Uß~:Ê±;¡¤f3th=²%UU¢H¦=RÒ¦e¨ú+I+¼¿ÂÌWÍPÂˆN"i¼ÆÐHÞg´Êh5¶ã(Šl²Ü(R$šáAy”ÕçäŠ	ÊÍ�òÊ§åÃüˆ¬Ø£œV°K¶Óü¾/y§w9?±_oQ¶ä@ÈŽìàìt%_„[[aÜ´“í(Tv×wBlÙìTÿf�òšF·+2½ÐŒ`©|…+?¡Ìþ!Y-œOù’G£Z²‘AëeNìK>�Öãˆ)qÍYÐÝÑ	Ôý’3ö˜>üñÞ)–xËzG%œ)as4IÚ0r`%e‹*©õ®˜8åuZÄ[Â~íÚÑ—ÎhãPwb<[[9QÉñhR§™L�ÚIÍ£)¢”t&xÌ¯(?¢I^mc5‰•GÓ8fÆ„D"-ÜKSA,;±¤)Í£½¹¦¹v-Z¤ÉõÜ£÷ôæV¸¹ÓSÚô³FV§b:ØÓéiä/ñiÚå"Eéúé~LâAÖ2‘-6Ã”ƒoýÒË×–…×Øîíó+¨}ÖDð¤ûÐOÕ)	L…˜UˆV@b­kY–ÉÕ¬©ÈÔwCšV¾¬ÓŠrÇ¾Œqý_33–˜¾ß‰Ó³#.=síKÓ|›u=š×©ÅrqfyN§Y–ïë4Çò�æYž×éK[§£,?Ôi�åG:cyAštßÁ�‹0ä�0„¥CX^‚!,a¹CXaË%ÂòcÂr†°¼¬eÕÔSIãÚ™XlB`bŽ¹ÌEåj*¹TB»hTjCžn•TÏªe ^<ò†9°H—Èš_1Î•�FåøÖ-o;WÀ±êoŽö9ñRÖ‹…?ÿÕÖT%½bÍÃ“«ð†žl'ª6©xtM—ÏU=ºþ_TTXôH…X(Ê²lpg"„�:�†j •CÌlÌ<´ëuËšŸÃý71BPýø7ÜƒNYIYíà¬Õ×Û²Ü;ƒr8,I17óúVø"#³Ò~‘YÊž�|pŒJeØj­¼Ù'1™Þ$Ïq[Q6HÚØÎ‰ó€yó�&aêªäNá†øanÁy'\¢z£,‡îEìó(¤ü[§âDö¨hŒÀ³Ùa¯ïBÊoq$4ù¥~T¡©5Ð4Rn¨_ÆÙºmBÆô#*vÃ²¬âÃÇ÷•’m„|¤ˆÕ££ŸÖ^¢NªÜ~f—ï�¾Á 51{ßtq�Ê»ZÉ2GmS·•S×šCãU‡êæQõ½ãì9kšnº'z_ÓªÛÁÅ\,°ömÒR&Ôõa…¢ËÅ¥Pêe4Iï¸ÐïPŠ�ÿ«úØ|ž+U…Ñq$ßNÔ·Ñç`üØGõÐ÷cèr.Ï÷šŸnôál™®¢ë§è70k­¹YºÜÐtâ!G­Ž¸Ê|§qz¤¹é!àcÝâÀ&€ÅàÝµŒæS £ùŒ9>ÀçÌaÐdƒ-æ0ØfÎÀsì2‡Ás|Áœu€/™Ã dƒˆ9ž0' xÊ_1‡Á×Ìaðsî|Ë1s$Ìa°¯éÖ0Ì-^Ð] ¶AU SOXÜÃâPSeÈþŽ†ý½AÌþÁ ¦þ¨éö�ú/õgƒ˜ú‹ALýUÓ�!õ7^êï1õƒ˜úL¿Ëe¿Œ|—
”]l>çï‰÷ÛÅ@¹  ÿÿ xœ½{	x×}çû¿9qc @$®ÁA @ÀC$AI%:H¦$š¢hK‘#S’¥ZjÜ2NbÇuï:›ÄŠã´ŽoÄ´þÙ‘Óm+Nªºþ²»�Ü¯õ:vÒ´q»Ív[w×Ÿêvõ£ý¿ÀC–ÜöëvAÎÌ›™7oÞñ?~ÿcrý=î1ú1“X1"å€zœ Çž&oš]Š¢ˆBCRÈeÕ¬’5AV�sç_]Òè–øk×`
Îè¿®_dâ�ë _ 2i-Æx c¥dT(lÆ
@¦±
ìÁª0îuRÁ›„p!a‚B"Ìuè±7zõW 7ÿ&ü)<ôFAÿý•üëÛM£²Ñ.îF%ñ&Í*.£YÉVÃ’àjþM]ƒ7ßì…>ú…Â;ßÈCïú6Õ¢K–D�ç¨DFñòa'j2¦)öLJÐæé×zï{=¯¿Žýz_'õ6£Ï…øŠB(9N(àâäÅr!Nð%A‹ˆªâñfÃÝùœÒ×ÂpîšÖÕ¥Ñ'Ø^¿HŸéŠèÖHWWÎEºVÚü"QÉÑo:�ð06ñœsçLQ#@)ÜAxŽp<Y°æ1B9Ž–	¥Üm„£Ü„¿ÁZpü+í-*”¸‡Ýj6ID¥ª(x’±p$ŽýË€/ÜíUÃŠ;ÌÙ�þ¯ÊÅp&þŸ;@	§+‡wÓßÜ'¶k™0¼ÎìL‡õ3Ð¯_l
³¡Wûýaâ AòÂ7eDÖsö¼UÆB¢E¸CŽ°ÎQÄ2Ea/DaÊ?ñœëwžH„—‰ø”=F@<zëçŠíµWÀâ?Yyï^¶TÁ€¿±ÁëR°»v—;lbKÅFÞš¯ åzÒ 	RVõ NàÜBÁíðž|üñSÁž >€‡\¦õ¿uxOÑMx�/^ºô"^k}ñîÙùê¼<C8\Ñ}Ï9p€A\ÊÝ! ÃÌì(o�0?ƒCç'ýÅ [©ã·¬°·èx§MyUP§ˆ+á\8q¹q#•Ãô	ýbi•æî„s¥Ò:š£kè¸…<P]„ÆLÇe%N	Àñ<w‡	éI‰4GxJùiìÝK(Oq2kës‹ì‰ã�Þò‰½ÅF -Íþ¦ÆŸWõ¸]VO‰Š©Þ?MÕrZ.Ë„7²n@“Kå%ü§3ëF¥_\Z*--CCY÷"7B¯ãH�¤™|îwJÀÈÓ 7(Ç±�L³(�À#±Bá'S^ ü)§‘‚X×E6Ø®›<Âââ­ŸÙ[lVžSš•5C¶Èœ“w:-(m ›ˆ…}ŠGÔjŒèÎáˆU-Ž™þò/õŸÀÔµÚ ß)±±Á›9|M·Öç¡òscÀ%ƒæp¼}8^®èÜÄsÍ8Êh•æ¥ö”ã�
�Æn#P~há}p­½EêÅÝ-
MÉB}�Â1-¡IšþY>'¹ÊktßWÒÝñ4}¸1‘ËÇiê‘tz–­oôïcFÿlØC•l-Žâ|p<c"€„´R
œÍ96 :�ŒÌ°ÁMÚíf3!vÅ®8f›Ùfµ`C¦¬‰M#
-6ƒ	Îç»©%—(ø¸�}Rê
é_	w	¹æîÕ÷^xä‘OÓëS(™Ñ˜©£Ÿ­üþ…òéG1æ�éÆ�6ÒMv'ý¸¨R3.2câEAZ”‘°9‘p(_ˆÄ‹Ò<á�/#�3Dà…I ]�©P ©ÁaGA+’6h31ÚŽHØ‚ÊÄLOaº}^Ÿ×Ã.i‘„„â¦»�/ä{ñDœë‰GD�·;O;–vuv�ùò“gâ±ûÏ‡cñxl¸8Qšêí81x°¼3ÓÕ•ÙUR2Ó™‘ý;™òÉÉâð8«g<ÐÓ�áõéï—vf:õß§3ÅLºÎ³¸2i@Þ* ôDÙ-°Å§¡s¸DNœÃañÂ4Áa¢øI‹‰Ñ²Ûij°4(î�Ìdh˜±mV	ûÂkù7çP<Ñ/ëýÁÔ¼|BŸ¦RAx*˜‚THŸ‡§èõT°ò7Ô3ÅìõS•sÔÃèE0úøö1B’¤‡’�äÅÏÛ)E0ƒLf'È4 ’,Œ�€‰Ûâ ®ŽùÒ&0›í`¢ø•'ñ¢(qÞŠôfæqíe‰Êó6ÀÛR7C8‰›Êç:RQmhãÐÆþ¾Ü`~°«3ÕÓÑÓšÐ’Ñ¤O�ÆT§Ð˜„<Ó;xŒ¥ôIq­zÒ=¹žD²9ˆÄ{òÝ^�ÈÕîzQäà³ŽŽ©}SS�ÄÂBKk+ãÇD—*‡P ŒvvjÕÃ“ìv‡ÍÍ×J¥îµ•Ö6£ÿ¤®²F»tkõ½ìI‡Ágµö*-|�ÇyVI€ÄÉöâS¬ü<5S‚`H`’\ ²(È(â8Îql†DnÒç�EµH8ô7y¾€¡¡Pï�je„¯áÄˆÒ‚=ÌÆÍÆa%«†sYZù²¥¼ßòå:¤õ×�^oHõBCåí	øÕ	úB¸½=Œ”rÎ¨r{0íùÔPC¥Lœ:eà²ë/Ò·q"/b÷;’n�Ü¸ä×àê;Ÿšýä3ôºÞ¡êWÚ!÷ô
}íÁú’ 9²‰LÀ'‹Î®j6‚�Ò±Jû-Um±«›xTf“h2"T¶ËôÃ8MsØšÉLLsÄJl²Õ6ï@0"SQž'vb‘ì–y"qœ4MVÈ
!�[ÝzC«7iŽV›“�ÚEúAíYÿzYÜÉ$‚i±Ú"²Ô¿²É½ˆÃ‚ÁàÄ¶-›G†zsÙÎLª½­5˜&4o6–w;Q¹@"žD¶ÉPÄÍU² u…v“ªìŠâCäÃ®d�SNõ žæñÙˆèË2CÅ0}Š{88ÅIúo(��Ê§ø®ÒPù0l3K{ÿ“>¼ÒØb÷ž6½ôyÑç²)ŠÍ:>‹øç¤Ô¨T¾ 4Ì²ç©ƒ×?BçfE³nx{}¿dÖØe	x=ÁålpÖuÝ_¡ìú#iÔ&yrªxB"#¸:æ2QA®(“y·�Šv°*¢uÎ
qZç
03`æÐ˜Bô_ÆÐŽ=;™ÍÆã„dóY9Ý]�™x:žîH%qñ]Ñ°†>Ž…U¡%	*ÎNŸh”
8I9ÍÀ´
BÝ¼q†‚
¡$N$þù²ªCäWKl¤¥Rg4š)aùÕWÙY&íÔ­pN¿SW––ôüú'¥FE·*�¥pKíðT»Q^nÓ½t­Tº¶\.×q	“ã<â0±ÁnCé 0$f€Gfz5(Ìz+¨YHùžÄ#ðuJÏRxºíö»íqÛîg¡ýÃìB+žÜm·ï~6Éd—�aï#.´?Rd[q‹±
Ï a¶7/£$cxb�]œÅ²Äft†ÙK“á�Ç$¥Â)ÔhAOÐl".pÕôµP1û¼Ý¨®i¤I.’†TÝðØ�Cù®2-Í?\½}÷ôR(´4½ûÛõÂíÙÛzzn;ÌvY´6.læèG¢ÚÇK¥�kÑúQOÔêàº¹P×Æ�]¡\€ÔçmÜ�gf¢CH£´Š@qàCy„l<XQ\ŠS@-„Æ 3Ô94�aâ—õßÖ¿vù2ýzeúã‡ýkú//ÔÛ�¬µ›-vŠLÖW×‚2¾F„ç8~<·‡½f\’$³dv+Ìèh@‘®„­åpŽ›¼¬¿~™µM¿?†¸þ†þµ………U¼ÇÖ�CŒÑAºÈXq3Ê1"HT@Á€èBBt�ëÄ™3ï,›Ø;gØ;'›é;Õ;š:v¾AhPœffôdsšÛÀS£Ö@§Û÷°óU€Åamøa¹Ü~òà\¡¯¯0wð­Vè�;xÏ¾í©t:5±ý…záÁrùß_ƒ3¬Ú_¬UûùÁ¹Þ¾Šk]=£ ?,Õ±ÔYC6“)y€¢,!¢¢‚HDsåŽ2¥#D¶ `"Çè�ƒÉ–––PKÈ¥(ÞÞ¬lÈ¿4ƒ³"JÓ5`JðÆW#²17;+¯9¦1öÃ‰§Ïé_ùöW†p§è§,v»e*ÐRy1QÀû›Ëúì,üa:MÞßßáââ<cÝŽÂ"²æ±z_qLßãAd´ rãÿ¼ÞBÂ0Úà{[ùþ-º[ùï¬¿£F­5ÿö\"4ÝÝÄGüÈïêí$É�»‹w5ú,&¼f™ÃÙ%s6Ià8+ÂêàèœêV8"¦i£à°ïñ¸œœÝaO¥<žT&•Iw0š¨ã˜@ÕBõø�¾T7s…?g
U7’“‚›¯¶á85f¯±ë°æ:Û¼^º€¿7/\øií?uáBe±~÷àÏ/ègX¥IÜ°¨Ÿ¾PýÁ7/\@¨Zÿï¬?R™ÕB3ðh à*
<Îà#fðMã�£{�Û8:îñ¼o 6H¡6¶¹Qþ3-  K—.¿wédå…êöÞe}Ëehe{Vø›Ë—oÆßÛÉ�â,‘d“,!^0�l‚£fÆî"²»•‰ƒ¿[ªünYå÷Lšqü¦�ù\¶;½=³}=ßÛþå|Ï$t–!lÕ87ì¯¬Q©P•ÚL(ÜÃx{…Éo!ö!š.wmîr˜›,.³¥ì¶B6OÇÔ�%ºuÝÃ·tÛ`F{ƒÇêqYÜ^¿lt65»š£xƒÍ§}e>e¤y'ñ�F�ÞCzÉR$ÛÈÙ/š»@õvB£›ŽM<DÔwÊŒzÍFáq+�Š»q±Zýþ–CqKLŽŠA;ù�GéNçZ	Î†ˆÃi³Îµ�‡8½ç\²¡�óú@U¼ê\ª‰*¤±EiœË„ÓAÞïrù§«%¿ko(ÐÌ¹ü®)ñÞÚ[m‹ë^ÛØâ_ü7|ïÞâýÛ·���Œöõårñx$¨*Â5›Édû®í»vîŸŸšœÙ6‚(sÓÆÁâ`qx¨oCß†�þ\o®%LO¼'Û�é`,‰E�éá ²½Ú¢63'�âQ<n—Íis:ì&«Éj13?1‘AîDdàŽˆ-�­ú¤Ön¸ïah*›ã†GI3€ia�R¿,›†p,?BíáåHw¹­\*±ÿ¶r—Vq•éåÊï¾ôG¿èŽ\¹‚%vŽ¿¶6­KÏa5z½Kkk+×~ìò«%üµ•¯\‰tÿâ�^‚íKìÆr©´ÜVîŽT«Ve¿!KÒH]ˆ—Ðî7‹‹
@æ”ñJÙ�!e™É�“!¨Œ±h¤Åß˜jJ!ÂŒ…5Š~7Â!F¶®QJƒå16B'Ðs�ÝžÖ´óçûæ{{çûÎŸÇ“ß†íú7à–7hø_»sxkGï�“zwhRù<î·Ô¯²O6“66ZPZs”Ð±f?¥›kÖÉ¼À.QRfGBgðI:h‰j-m�¶¶F„2¾dLK0iÀàÝª`ÁÅ)øT_!¶ðÑå˜Móx ´eë×¶miK&Û¶l+÷i³¾=Vùû�…þþ;î]èë¿ãk{w¾·ühµÂ×¶nioODm±·ÇÞî_ø¥;úûî½£¯n{4|“±¡&“£Å#-.*ñ>àLÔt àÛl1™œ`PVy´ÅEBM"�#&Ž3M“‰Ûc3£Â3qã^/‡‹ì{ÃÈ2~æ…²!ý¢L9�ØØº-ø)š¤¹³nTaª9À�sç4¤Ri>õÉxÀñK¡K÷}ìN4t,f*[þñ ~é%ú+>XyùÁ¿wÎê~~w+þôk=à¦SyýÓ©ºn˜ÆñyHbŒ8I[|7E=0	b×¬	6ãÒ1'ª‹ªMjÇz—P{ãZ üÎ¥).AAâ	ÉëãÔ|!!|ù‚&ÒÏ¾²çßµ¶µµ>rÛÐ�ýýwÁÃ¶þ¡ ãÇwlî¾ghÈ´O¤…W6/LlÿÆÔÄAó>óø‰�7?“ZØ6œ*êWö9z‡µƒC»öå×ôW@ë&í$ZîZ£¿aÅpæQ§jw]n#Ü”¥l^Ò¼¾B	'Ox$wNòå˜Ýàa„Š}G…ÊÆoôHžÁ>F£“6tßzå•¡CÍ�@ó¡¡Ú@àâð®}…Ï,lÊ_ì³ï3G!DK¿rùYóx¡ï½…qDm85‡Á	²¥¸ÉlL¥	X H6 'š:ëxÀÈÑ”2%eÊ0N?sF«.”o6‹IIâ6ñkÌE¯Šf+GâÌ:¬Ù‹†“:K/3Mv¾Mi„¨þ“Få¼Ò¨ÿ¢�JÛùHww„I'}>Ò�6aÕ’D«°;Oi]u¿üw¸/ Xñ Õ§I{1¡(jÐ©úç€\^È™öF•g†Gõ|I§ç; L•Ç…ÎhPø@ ªªëáäò·Ï¿µp o€g¥Ÿ/Ì÷T<4“žÜ¾yW�…#…7Ã ™ŽÉíûûŽÀž{X�ÕÚFéþýSí)
‰°žOy~˜üp_õ—¨É#gpàˆ2Åêfª�1ó“‰ <º‡±ß8%hÅHÄA¼óXï²JB¢o×"Wq_ùë+GŽ°)­®;ýËúÅáaBÖÒ€�4}«¼NÁJ63ËÚÃ‚š+\–‹ùŸd�,é¯@sÛ�¼þÚåÏ?»üyH—–Ï0�|Ï³¥kGAÑ¯^'kGŠA#ˆ!°Hì*ë±˜‰<ÜŠ›ûFx–(øpe®Ö°…¸tùÕ�³°a€^7Ì²Åì³Ê£WúÏÂ`ÿŠÎ:UÃ¿ÝÅŒ5M…—(*+ÃŠ„iÞÃ&e\–e‹lax×)¡a\¨:8Â9o¹�ï]ªnÛf?=ûW³³kôâoÖÞ,6‹(O™IÌãò‘Ã74Ë¢ý‹Ü
|äÝwõ7ÞE¼ün�~´ò‰ê¶3™¢ fßZ5Ç³ø$$PžÐ£Ä3Û#Ši‘9(öHŒ‘Ç].—ÏeD�ÖCw4ÀÑd $šŠÆ8“ÙYå‡g ýâ™3õ×è¾íg.^<óWúkgàÜÅ3•Þ£gð2¹Yß6‹&@q\d†Ø-mZ•,ÃDÁn!MÜ²[¬a·Ñ!!…Q¡`OK/œÖ_{áh?w²Î�Á®Üƒ§pï]zá4bWWè­û%	ý`t6†vÇ‚ô5Šëi¬ûQ�‚ JV¨…Ð¸ŽöÊß&ê¿äÔ�?…t6ªÿÇhüh:'¦\wo¨üj» %ÚÓ³ŽwšHg±‡Í1ï
E¾åFE #þ7ÂÜo,Æ?Ù†ÐÆ�D6ÈÕŽ†rr•Ö“ g˜,ünÏž®®==zþl~zW¦³3³kzþ»ôú«W–ºöÙÓ½ÜÙ¹³ô‹Ê�÷÷¥	_ÝÈpóÊ°Ü0Ü<1üWdÅ}·…�¾¨Úì‚d^…- Æè=ß™/íììd/›‡ŸéáëUî;¥×—X—Xº–»ö|xw×Ò•úü?Šý#eR(öøí8ñQŠpp¸ÇÏ�Õ\O”;ÎC=éaÛÖÛ·–T·À„ šWñ\a2(‘gæ”u€(%âìà‚GôxU”ãA”ØÃàeæ¿Ä^^vˆ'„u·vŽ›)_ìâ‘–vµÈçeU´èÑÉ•�ƒöQº¦‚²¦‚äàJ/èÇZ7%›v²äm-’_ìò£h£´7¸î–Ìfé˜ÃßÎ	Ò£¢SÜ,ù~y³à�>S­pL6­TøŒà£µ¦pWÃ¥µxºˆØq© ÌÄüj<Á‰[ÚŸ»1´/Kn§Å$5È,íM]#êís¿/"NÇÎŸµm}hiyéUˆ®�îD17·'Û_\Žô‘A2BÆI‰ÜFö“ðåª5yºnMöi½\¨!J[:ä”˜äÛ×Ús]J§##Øœvju£I×ãËªÝ‚Ûë¡®F·k®Ð’÷ç„Ææ&Újl˜ÛÐ6�è�…¥` œ^9	nk�G#| ˜ðyÅ ¬½¹!\üÿñê½Å§gggfÊå‰‰�‡†úûóùîîtº½ýFëröÀì�¹ÛgöÏìß··|[ù¶=»'J¥�Û§&7Žoß¶ulthdh¤8Ü?Ø?¸a ß—ïë-tçºs=ÙtWº«3ÓÞÑÞ‘JÆÛâÿb»sðŸew�´ªíy‹²a�2Œƒz+t	žZ*¿wéÆ#3(éÌê¬<jÔ¿…9Z*�¯^Y®ž-·±W¬¤†IŠÔ¹J§
Ê¿ºW/K.VcoCM9�2�¨È²xÈ*PbCR@^šs�ÓŠèTæìf'K’<mdi¯ÃB%Yšò‹µœ‹FŠ(/þËšØ[L¸\Ym©…Z˜§0bø	]M®&ÍVDT¡MbÊ8½Z¬š¹ÒíåpvŽÎ‹€²:¸WpcÇnŽ—–ÊÜÆòÒb;œú¥Ê£XŽtÃöóøƒ§Êe\Œ2}ï.á¯ÜUÙÄn³˜nÎY®.ÃU¬¸V��³ÅÏ‰¨À™Î4ÜžNÇ	"7ƒ<ÝÂ	H³	šÑ‚$æ&“yŽøI“Åß4‡hÀÚ`±Î‘FÒ`Cî!>»Ó7�ªÝi³ã™Ï¹ÇëqqNŸs| É%ý�ó²ÖƒZMxY	Ãzùjë6-·nCr_³]˜Ý?Ëþïœ­ýŒÓ•3z}Ýõ«ÕpÏ÷¸¬Ak’B9X.îB�&RNœ—xÇÂÝÔ„xÍ)„hóV�AžÆƒÌì'Y˜Lw˜Qtf:�¥SÉD¼¥Iu#»FÌ‘*«ÚXZ]w¾šÄZ-/ e}F`bUÅ†×!¬„¸N§7¦Q]¶æöß½?—`ùwðÓP†fô3áÞÍ½áwá.=?} 3’ÉlLÃ‡väöçóûs;2aý^£ò§Ã™‘Þp¸7²C×àÓú½¤Ûgãm4Æ‹(éA" Í‹TÆ»Øgaþý±�¶Ö(ÚeMÄ£XÍ¢€ˆ¤ÑÈÒºå˜VRÜXÅžJþþñ¼Sê¾w�qÁ_ßl$úWÆYÓÚ±ÈhŸgÈþ"ËG¡Oñž€ `^´Ð›, ch¶€ÒAfžL%Ù¦;’™T&iñû¼n.`»¹ýƒPÍÖ,¼~ÐÜÍ–oÂšþøê¨C7[¼Úr­x}éVrB¿MÌ,W•ÉªQ³H«f]3ëL 2Swå÷˜þ�?{èDbæ¾÷Âè·BO|ì÷ï;y‰5!®ñÓ¯Æ‹ýX6sóœá&0Ì(“@CŠÑ”’y†VÆo`b+2±PcHXsd÷Ø2þôo0±¥_\^¦_Z^Þ´¼|^·Vwpuy�Œ²ñ"Ú9I`·&ð™ €F;Z·úÅ2³EË0SeýôÜÁöu7ÖµÓVŒ£UÅg`ë„Àr@¹i<pdˆ#ãÕž³Ä5ä6Íˆt ¥‚“ö¥ÓúáÐiøDô/ýKkæ^EÔÔSìr:džÁÝ1�ÁñÍúªcˆÕ5³ƒùºœPÂ	\¤Ÿ@¦°s|¬ï³püóÉ£[>º_�÷ŸÙU†·›ýÙÿ öl¬µÿðHp÷C±xýýð‹­ÕÍ[¥–C�Ã!0C¢§×Çc$$­äùjÞi¯k5hlC�É¼ƒ¹�ó8íV³,J†�H¥Ž2ÌSá ãþbßMu,þÓÏî-v‡CˆqI,j·Þ œu·$/ñˆq°yNQ‘¢Ý\˜ä'á%QÛÂ±zÚÐ2S—·±âjko¯ÿëy:Û�öÄÐ¼Ñ­pµòsfŠ•Ê+¿¥¥h^Ãû«ùe#†lìEkg‘<LN7÷Qž;°›ŠÂ}Ç¨,qc[€ŸñW@æ¶ LAƒ´ê¡"làÌe.J‚ÈÂÙ²I’çQú€©L-¢�fC�~âã÷žúÐáýû¶O‡ÚÛšzý½v+¦ÖÕ´@¥æwfÞBDù‰4•Œ@–ÏÛÃÝeD¸ñA`¬!�¼uG5šJõøV$Á¨,§÷B+wðaãÙÚ�µ­Ü‚«KÝ�šJºoøäœ_ÓZfOç{:£��f³Ú¢Ý¹ˆe¿Ïlö´;¨Ã´°4|2mrpfk\ëÌžÈvŽ:Íœd Ì‰³ÙÓN.hø'ZE£¶h5™-‰úez½Uõ'ZukJ¹âj"�ˆÃÕ”ÖWË&“Ãâ’l`6¹ÍN7žYãÌeqºg˜oUÝ¼‰$›Ãá0á/d“-Ç)/ÑD‚Jb^f Úår²ÇN /rXŸ…¼„0ÆÉd^¯ÓÀ"Ï¼½F2:ŠVÃ5jce¡#KH	ÕË¹Ø_!á–|�ô‹_}jNrîÝg€T¼÷Õw¦Þ»ðÎòµs¿²´Ô»á·–7À¹ßxäì¯�½ÿ	ˆåÁ'ôÿrÿÙ_«û?ÿßù_kòx¤8d1¾m0Hb´êeæ™ËF#œ+á\Â¢¹Œ§Öp�È¾Y€0šÙa”�>7÷	ýïõk`þóàÚƒ•ß½ö ®Ã�ô®Ä/~ßÑGß]±S÷!Î!÷�qø¢hˆÊüpÊÄI2Çœ¹E3 ‰s¿Hx™ãå£ÙA–Žœa‰Š‹,É›˜cÏ¤2‘$q¹Aœlk2´¡¯7×Ý:Ò6¢…ÍnEäI†“9"VÓ#ÑQ�ý £Ú$kŠpÙ—Ïvû�þ€a¯ç}¡…Ã’ó#Rh¨0×
Ç5šÈ¦J u'„ìTªmk£Ëç¶pù=[7·Æ³ƒI¸ïé‰‡
!£º‰îÈ(Ñ¡(gæ„�¶ÔÎoOn±'·¶…ƒ"í.u~¢B"9˜ï	çC¶PÂ ã“ô³h7ˆÜCîCqWñðÔFß½¥M�ÄOtSÅD$ØRKhâÉq–*{œ}ypÜ"# ~ãX¶°X#,®ÆsòÔÉ»Žœ9}ò¾S÷-Þ}äž»î™êÉFšãn+ðqÃÝÍÔððØ«®m;õ`€z«‚@Ì€áXÓPã	£€R"Ï>jÈ#¿#«AâÌGîBÕYîµ#ÁTFb¬šm\è‰g«¥ž¸‘.à%¬ÊÜ·Ÿh.ä¦,fÞÕ™Îå=Ô&š½­ÎÖN³£ñW·_ØPj¿«ØÕp¿êî°z¬²lnà¤äÜ`´+\ls6Ø;º:ý8àØá¤,ƒ	u†¹£Á*ó�œŠ[ÕF™ÓÍ‰XoŒÆ¾ÞœHô&Zw o‘Ÿ�£œ7Ç4�Ê¦‚×bD+' <hÙ3ŸÞ¶ydKþ£Ï9ÍNÏ;<¶´Ð“–ÅæBø%ê™²ßlm�¦Ä„É†h‰çÌÍaT‡Éíõ6IVÙ·ªÏÆQÍß�çcÑ\+œYh.46†9ç®åËT}à$GÆ‹c—]b‰ÿ"ò!”%…³Ùyö] j�9ÃS7½ê©cöB*Ù†Z�)Àª·ÜtKo9â¨B5Y<×Ã/Ç ¨ªÕµG\u¤¯f2�•Ë»cM&[¹³Çjëí*IÀjÕ±~C"Ó@ùïbMjsJÝ˜ë±­³S3Ò‡;š»ÖçuˆÄnäÍowš(ƒÔ<§Z¥ÈrÑš@Þ¼6MâQ�Ë(dù˜`¦ìÓ‘iväø=">É�ËR³ŸA † lVÉ.Ûq…,,•{BÊJ‹�esBÂ0š‘.¿õø©—.�j=ùÝK§¨ré$ûÏáU¼ðø©K—N��¸têñSSxZ[«Ïaßm¤	1ÊVð‚Yb¦Îû`ˆ-Ñ|ÕÙ^W³›ý{ Ålª{“£)’�µîÃZ�$KšQé›•?ŽªYMúÁx1/N²Ýa=?¢×óñÊ/9M©Ê³;±»¯~ë[5_kûêBé²¹8ÂæÒï±Y‘\¡å>7†ðr´¸Í,e†¹*æW?êšaþÄIöESS#6àò,Î£jQx|…x.>‚„ˆËÆÌvW3_àêã�O�mnmëìõÃ†»`°×?x×`íaóÛÖºylzß–Þ®¾G7á+œ|ülõú^rO43O1K¸4¦øÖLPG€U�>ˆ£âæt^.ß”ª½V*ÕrÀß5ââE®n[€¾{'ûà`A¿Ls�}Ã¸ Ãu¿;½Z«oäŒ†ÀžØ ÿ`�}£° _ÿþœ[ç§7±hX5Ò&²TÖ:#63“‡cëáf€ÄgôÏÀ9öO¯³rýtMŒMDª•¿i‘`²~$¸X¢ ‚ñ†�Û÷üéX8ý¼¾_òôóÏŸ¡×Ÿ?­?9€WÎöŸÁ§×çFxHˆ}�¹Æcù€¨ÝjÖÔj&• %$ãÝìÅêRüE½ òÙ³ýõÿµKR/¼ºæ>Y›Ÿï`Y§Yb�0fSÕ¾§"<l�¥ct-7·ñ%*ZnŠ‘B£HõÏ£¾Ô¦Ï·•~¼ñÇ0‡V"‡¥òµkåÛíKÆš
Î	˜}y˜hß¦å—GõÀc}==†OÁSTêë¹9 !qB?x"OÓ#ôém› ²íiz_å¡/O¬Æn¼7¶1ºÒÒSÍM_ÞÕ¶õ«GžÞ†ÖÉŸn{ºò½ïé‰•þŽá¼(EûJ�Kí2Œ<#ÞãdWá²û*q_‹íiÜí }ö–‡þ9»ŽÛ}*¹e{¨·Y`¡'ñˆd(&Ó¸Çúçi»þ9‡ÃÖ@ßðµ|ÕÇZb’Š½¥FSô”‘¿mP=…µdarX@ˆ$˜[MÂ»Eµ®)ÛÑSsçp°ÈoÜÆêþÿYL™Åþ|põ&ù{ú{^yeRäûó¾<»W“_ã-º‘SŠ½”Q£2¢oãf©áè	œHÎÓ0yK¸IÕãtú<!5ät;Q‹±ohq‰�¾ùhÅ|êZÎø´'ÛÕíU»˜¾Ö»#5µãàÁS©ýÊDÌxp£×ëÈÁ›674lÞtàà‘·îzë-ýþ@«q×èã»8O/v‚™¤ŠmfÔºõœyDËó†Œå÷žò†ŸÃHgÎ7!´iz[ �ãû_¤WVøñgFîÀ:º3¾¤6A¼ªøªdG„–jiIÛ‘îàA¤»–2ôyjmýÔÐ»7k+_M,‰ íõ@#>c4¥?vcSéu2Œ#í¤£ØÞà½�ÕZe:ß #a¿âä�ï®•¬›ÙÆêª0c–E¢ªë”C¢‘ÙÙ?ßÔ¥RÛ&Ÿ›Ø–L÷ŽlŽ·®Kk)·ŽnJ7ŽÏLnK¥XÍ™‰R›v•o_!¼{n/ïZ/{eâ'SÅq	‰®%#ŒËœ®‹e»Äd\1%s„E#œÙNœˆÝßäó8ï6${“ju	
?ÎHÓ]I4ºó¼Þ¿	^ž�­œ†Qý;U4Ï3w¸Þ‹7ÎÃX¥‰~j¶ŠE
1]£¿%´xä[ÏÙ�ï‘ð­fË!úÆ)Ç•¶³Åjfa™7ÉL·û6S"l\,�é�ØlŸØf�l“þâ¶jS¦Åu[{‹MM‘`C¢)qƒ'Ò!´$cF�@Íº�ðA=P f7äÕÐé9!˜«Eþ‡1	6Où3ûgg¡ÁˆÌÍþn}–è§âÕ¼°D<ù2v²	©qˆå8oh¡¼0ˆk›ë
6
®n7‚œ8"6am�Ñ¶VZ…lˆ'pø¸Òô(Z‚ì;þ}.•èK¥†:bªÄ‚ù>ã+tQò‰ÆgèÝù¬Odi•¹8D3�e–e»AÄ4‚aH¾Úç)h"úòðöG¹] �\�WøþÖdö¶,ÿÝÝÊIã«”}SÎã�•ƒ0‘�É:Ž%7yŒ«““»4xë´ì	Ò`¿ÉÌi¿ŠUÐ’ß£ì8Æ>U	*Ç:é“�cs±Ð±èl¶ô±hÔ¿Ëþ±µ·¾   xœc`d`` âyé¬ññü6_¸™_ En0±9 èÿ»™_0ƒTr00�D’ô xœc`d``úŸ$_00€IFT ]Rõ xœc~ÁÀÀ<ŠéŽºåVK     * V € ¢ Ì(´vî>ŽV
n†´:hÖ6ª		Z	Ú
&
Î bÄ4ŒæBªèZŒ¶P†Ì®öJð€ø^ÖúBf”Ôî†ˆÂ˜špÆ$pˆ Êð>rˆªÊòB„Ö,R®  ˜!*      ^ ‰       z Š s  /p    xœu�ÝJÃ0ÅOÜüÚ@EÁ[s%±û aƒÉ¼Ñ›!»•®vmGÛ”4ì5|Æ—ðY<m3‘‰m~çäŸNà_¨ž{¾QU¼‡C-×è?X®“Ÿ,ï£‰Ëô_-7p‹ÀrxgQ?¦ZâÃ²À™8µ¼‡qe¹FÿÎr�<´¼�Kñlù€¾g¹�™È-7q->Ç*Ûè(�¼·d¯ÓíËùF*ZQêÆÒ]™Pé\ŽäB¥Æ�cåx*I\ãëÈ�§~°Š]½•Ûyæë<R©ì:�­õè§¾&¿ÝóuÐ3f!Z%rbûÊL«¥ï'4&´Û¿ÏÃ
6ÐˆxU!$nè¶8÷ÐA}Òœ’•UU„.b:.VÜ–+9õˆï‚*¥ë³"&;ðøM8ÜÒ-z»§ä€ûc*ýguWÏJÎ©Šî’¹¦Û­z$§¥®ü·Ÿì9Ö<­G×0a‘R—©$&;y%ï£X[Òñè;å­º´9þù¿o0ïƒ³   xœmR×rÛ0ÔZ�H;qzï=a§÷Þ{ïq†O"† @ dûëRöd<<€»¼Ãv�©Æduÿ_ó˜B-´ D]ôÐÇ4f°1‹MØŒ-ØŠmØŽØ‰]Ø�=Ø‹}Ø�8ˆC8Œ#8Šc8Ž8‰S8�3ˆpçps¸€‹¸„Ë¸‚«¸†ë¸�›¸…Û¸ƒ»¸‡ûx€‡x„Çx‚§x†çx�—x…×xƒ·x‡÷ø€�ø„Ïø‚¯ø†ïø�Ÿø…ß˜ÇŸKuNl!æY0Ðf›dª,š‰0�.HùoÛ�ÔqÂ*ÚÊ³êOž„¤)“·œ‰m²Nb\ËM^ºV[GÁ�\•×IÊB
;ò¥Tì»Q"\g±<“ZgmöÂD�UÝI¨�hÉ×æ.ˆOÅˆØHÐ¸Sm‘Ö±”dáËY±BL
•µ-U™ÌjãB£�ï™5 CE.×¥r]JUÃv!cN¶ÅÓ\'í˜s*ËI•!×r,—v¥”–"Õ/Õ?Ò¢¼pË¬T‰f†Ý-ÈkãÔ	Õ±$‰»XÊî)­¨?�B�È8&5ÏZ™Ü†¥ª%�]Î+1�ZX¼ ©Å¥¶Ä
YZ¯Ö•Æ�@¨Ò6Ó$iÚE$Fz©7Ôz()1ÞªÐ·ªA³
TFE\.‰åÚiã•ÏB{•ÕkQ¯bÄ”÷}zQFÿÔÎ®c‘úõ¥V�5¡¼‡Ä³™Ø=v©k4ÙõTuyìDÕ�Ã	,‹^ew4™b¿N_-:‘çfÚ?Hå/ÅÒ{Ö›4b˜ºÕz’®-õP—®~°ŠÆÍQ°T$Ôhü¾ûT  xœcðÞÁp"(b##c_äÆ�ÉX�6102h�›¹˜9 ,>0‹ÍiÓ 4'�Íî´‹ÁÂffpÙ¨ÂØ±Á¡#b#sŠËF5oG#‹CGrHHI$læabäÑÚÁø¿uKïF& v#ô                                                                                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/Material/icons/material.svg                                        0000644                 00000063132 15266052706 0020164 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

<glyph glyph-name="back" unicode="&#xe801;" d="M813 390h-475l218 218-56 55-312-313 312-312 54 54-219 218h478v80z" horiz-adv-x="1000" />

<glyph glyph-name="forward" unicode="&#xe802;" d="M500 663l-54-55 219-218h-477v-80h475l-219-218 56-54 313 312-313 313z" horiz-adv-x="1000" />

<glyph glyph-name="up" unicode="&#xe803;" d="M540 38h-82v472l-214-216-56 56 312 313 313-313-57-56-216 216v-472z" horiz-adv-x="1000" />

<glyph glyph-name="dir" unicode="&#xe804;" d="M417 683h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83h-333l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="opendir" unicode="&#xe805;" d="M752 35h-589c-44 0-80 36-80 80v470c0 44 36 80 80 80h235l79-80h273c44 0 79-35 79-79l0 0h-666v-393l85 314h669l-90-333c-8-34-39-59-75-59z" horiz-adv-x="1000" />

<glyph glyph-name="reload" unicode="&#xe806;" d="M354 615l61-75h275c20 0 37-17 37-38v-189h-114l152-190 152 190h-115v189c0 63-52 115-114 115l-334-2 0 0z m-119-38l-152-189h115v-190c0-63 52-115 115-115h333l-61 75h-275c-20 0-37 17-37 38v189h115l-153 192z" horiz-adv-x="1000" />

<glyph glyph-name="open" unicode="&#xe807;" d="M833 100h-666v417h666m0 83h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="mkdir" unicode="&#xe808;" d="M833 600h-333l-83 83h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z m-41-333h-125v-125h-84v125h-125v83h125v125h84v-125h125v-83z" horiz-adv-x="1000" />

<glyph glyph-name="mkfile" unicode="&#xe809;" d="M542 475h229l-229 229v-229m-292 292h333l250-250v-500c0-46-37-84-83-84h-500c-46 0-83 38-83 84v666c0 46 37 84 83 84m208-542v125h-83v-125h-125v-83h125v-125h83v125h125v83h-125z" horiz-adv-x="1000" />

<glyph glyph-name="rm" unicode="&#xe80a;" d="M223 25c0-52 42-92 92-92h370c53 0 92 42 92 92v556h-554v-556z m602 696h-162l-46 46h-234l-45-46h-163v-92h648l2 92 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="trash" unicode="&#xe80b;" d="M896 767l-133-759c-9-41-44-75-88-75h-350c-44 0-81 32-87 75l-134 759h792m-688-88l117-658h350l117 658h-584m161-571v175h175v-175h-175m175 213l-140 139 140 140 139-140-139-139z" horiz-adv-x="1000" />

<glyph glyph-name="restore" unicode="&#xe80c;" d="M560 706c-197 0-358-160-358-356h-119l159-158 158 158h-119c0 154 125 277 277 277s277-125 277-277-125-277-277-277c-60 0-114 21-160 52l-56-56c60-48 137-73 218-73 198 0 357 160 357 356s-161 354-357 354m80-356c0 44-36 79-80 79s-79-37-79-79 36-79 79-79 80 35 80 79z" horiz-adv-x="1000" />

<glyph glyph-name="copy" unicode="&#xe80d;" d="M671 767h-454c-42 0-75-34-75-75v-532h75v532h454v75z m112-152h-416c-42 0-75-34-75-75v-532c0-41 33-75 75-75h416c42 0 75 34 75 75v532c2 41-33 75-75 75z m0-607h-416v532h416v-532z" horiz-adv-x="1000" />

<glyph glyph-name="cut" unicode="&#xe80e;" d="M402 531c11 21 15 44 15 69 0 92-75 167-167 167s-167-75-167-167 75-167 167-167c25 0 48 7 69 15l98-98-98-98c-21 11-44 15-69 15-92 0-167-75-167-167s75-167 167-167 167 75 167 167c0 25-7 48-15 69l98 98 292-292h125v42l-515 514z m-152-14c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m0-500c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m250 312c-10 0-21 11-21 21s11 21 21 21 21-11 21-21-11-21-21-21z m292 396l-250-250 83-83 292 291v42h-125z" horiz-adv-x="1000" />

<glyph glyph-name="paste" unicode="&#xe80f;" d="M765 692h-159c-14 43-56 75-106 75s-92-32-106-75h-159c-41 0-75-34-75-75v-607c0-41 34-75 75-75h532c41 0 75 34 75 75v605c0 41-36 77-77 77z m-265 0c21 0 38-17 38-38s-17-39-38-39-37 16-37 37 16 40 37 40z m265-684h-530v607h75v-115h380v115h75v-607z" horiz-adv-x="1000" />

<glyph glyph-name="getfile" unicode="&#xe810;" d="M250 767l500-467-242-21 138-304-92-42-133 309-171-163v688" horiz-adv-x="1000" />

<glyph glyph-name="duplicate" unicode="&#xe811;" d="M850 510l-115 115c-2 2-6 4-10 4h-52v6c0 5-2 7-4 11l-115 114c-2 5-6 7-10 7h-356c-23 0-42-19-42-42v-617c0-23 19-41 42-41h139v-92c0-23 19-42 42-42h444c22 0 41 19 41 42v527c0 2-2 6-4 8z m-658-395v606h329v-92c0-8 8-16 17-16h89v-498h-435z m618-136h-437v92h260c23 0 42 19 42 42v472h29v-91c0-9 9-17 17-17h89v-498z m-118 117v-81c0-7 4-11 10-11h31c30 0 52 23 52 52 3 27-22 50-52 50h-31c-6 0-10-4-10-10z m23-13h18c17 0 30-12 30-29 0-14-13-27-30-27h-18v56z" horiz-adv-x="1000" />

<glyph glyph-name="rename" unicode="&#xe812;" d="M500 725v-83h83c23 0 42-19 42-42v-500c0-23-19-42-42-42h-83v-83h83c32 0 61 12 84 33 23-21 52-33 83-33h83v83h-83c-23 0-42 19-42 42v42h167 42v41 334 41h-42-167v42c0 23 19 42 42 42h83v83h-83c-31 0-60-12-83-33-23 21-52 33-84 33h-83z m-417-167v-41-334-41h42 375v83h-333v250h333v83h-375-42z m625-83h125v-250h-125v250z m-458-83v-84h208v84h-208z" horiz-adv-x="1000" />

<glyph glyph-name="edit" unicode="&#xe813;" d="M83 106v-173h173l513 513-173 173-513-513z m819 473c19 19 19 48 0 65l-108 108c-19 19-48 19-65 0l-85-85 173-173c2 0 85 85 85 85z" horiz-adv-x="1000" />

<glyph glyph-name="quicklook" unicode="&#xe814;" d="M500 633c-190 0-352-116-417-283 65-167 227-283 417-283s352 116 417 283c-65 167-227 283-417 283z m0-473c-104 0-190 86-190 190s86 190 190 190 190-86 190-190-86-190-190-190z m0 305c-62 0-115-50-115-115s50-115 115-115 115 50 115 115-52 115-115 115z" horiz-adv-x="1000" />

<glyph glyph-name="upload" unicode="&#xe815;" d="M352 129h294v294h196l-342 344-344-344h196v-294z m-196-98h686v-98h-686v98z" horiz-adv-x="1000" />

<glyph glyph-name="download" unicode="&#xe816;" d="M844 473h-196v294h-296v-294h-196l344-344 344 344z m-688-442v-98h686v98h-686z" horiz-adv-x="1000" />

<glyph glyph-name="info" unicode="&#xe817;" d="M458 142h84v250h-84v-250z m42 625c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333z m-42 458h84v83h-84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="extract" unicode="&#xe818;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-198l254-254h-162v-92h-186v92h-162l256 254z m-319 208l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="archive" unicode="&#xe819;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-569l-254 254h162v92h186v-92h162l-256-254z m-319 579l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="view" unicode="&#xe81a;" d="M83 481h175v175h-175v-175z m0-218h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m-221 218h175v175h-175v-175z m221 175v-175h175v175h-175z m219-393h175v175h-175v-175z m-659-219h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m219 0h175v175h-175v-175z m0 612v-175h175v175h-175z" horiz-adv-x="1000" />

<glyph glyph-name="view-list" unicode="&#xe81b;" d="M83 252h196v196h-196v-196z m0-246h196v196h-196v-196z m0 492h196v196h-196v-196z m246-246h588v196h-588v-196z m0-246h588v196h-588v-196z m0 688v-196h588v196h-588z" horiz-adv-x="1000" />

<glyph glyph-name="help" unicode="&#xe81c;" d="M458 100h84v83h-84v-83m42 667c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333m0 583c-92 0-167-75-167-167h84c0 46 37 84 83 84s83-38 83-84c0-83-125-73-125-208h84c0 94 125 104 125 208 0 92-75 167-167 167z" horiz-adv-x="1000" />

<glyph glyph-name="resize" unicode="&#xe81d;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m750 0v-83h84v83h-84z m-500-41v-84h192l-210-208h-232v-83-125c0-46 38-84 84-84h208v84 148l208 210v-192h84v292 42h-42-292z m-250-125v-84h84v84h-84z m750 0v-84h84v84h-84z m0-167v-83h84v83h-84z m0-167v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-375-41v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="link" unicode="&#xe81e;" d="M163 350c0 71 58 129 129 129h166v79h-166c-115 0-209-93-209-208s94-208 209-208h166v79h-166c-71 0-129 58-129 129z m170-42h334v84h-334v-84z m375 250h-166v-79h166c71 0 130-58 130-129s-59-129-130-129h-166v-79h166c115 0 209 93 209 208s-94 208-209 208z" horiz-adv-x="1000" />

<glyph glyph-name="search" unicode="&#xe81f;" d="M679 242h-37l-13 12c46 54 75 125 75 202-2 171-139 311-310 311s-311-140-311-311 140-310 311-310c77 0 148 27 202 75l12-13v-37l238-238 71 71-238 238z m-285 0c-119 0-215 96-215 214s96 215 215 215 214-96 214-215-98-214-214-214z" horiz-adv-x="1000" />

<glyph glyph-name="sort" unicode="&#xe820;" d="M394 635l133 132 131-132h-264m264-570l-131-132-131 132h262m-277 191h-116l-32-110h-95l125 406h122l128-406h-100l-32 110m-104 67h92l-25 85-11 40-10 40h-2l-8-40-11-40-25-85m273-177v52l194 275v2h-175v77h294v-54l-190-271v-2h192v-77l-315-2 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-r" unicode="&#xe821;" d="M658 567l-200 200v-136c-173-21-308-168-308-350s133-327 308-348v90c-125 21-220 129-220 260s95 238 220 259v-171l200 196z m192-240c-8 61-31 121-71 171l-62-63c23-33 37-70 46-108h87z m-304-304v-90c60 9 121 32 171 71l-63 63c-33-23-71-38-108-44z m171 106l62-62c40 52 65 110 71 171h-90c-4-38-20-75-43-109z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-l" unicode="&#xe822;" d="M283 435l-62 63c-40-52-65-110-71-171h90c4 38 20 75 43 108z m-45-197h-88c8-61 31-121 71-171l62 62c-23 34-39 71-45 109z m45-234c52-39 111-62 171-71v90c-37 6-75 21-108 46 0-2-63-65-63-65z m259 627v136l-200-200 200-196v173c125-21 221-129 221-261s-96-239-221-260v-90c173 21 308 169 308 350s-133 327-308 348z" horiz-adv-x="1000" />

<glyph glyph-name="netmount" unicode="&#xe823;" d="M708 767c46 0 84-38 84-84v-416c0-46-38-84-84-84h-166v-83h41c23 0 42-19 42-42h292v-83h-292c0-23-19-42-42-42h-166c-23 0-42 19-42 42h-292v83h292c0 23 19 42 42 42h41v83h-166c-46 0-84 38-84 84v416c0 46 38 84 84 84h416z" horiz-adv-x="1000" />

<glyph glyph-name="netunmount" unicode="&#xe824;" d="M917 342c4 229-179 421-409 425-231 4-420-179-425-409-4-229 180-421 409-425s421 180 425 409z m-750 14c4 184 156 332 339 327 77-2 148-29 202-73l-475-458c-43 56-68 127-66 204z m125-266l475 458c43-56 68-129 66-206-4-184-154-332-339-327-77 4-148 31-202 75z" horiz-adv-x="1000" />

<glyph glyph-name="places" unicode="&#xe825;" d="M750 767h-500c-46 0-83-38-83-84v-666c0-46 37-84 83-84h500c46 0 83 38 83 84v666c0 46-37 84-83 84z m-500-84h208v-333l-104 63-104-63v333z" horiz-adv-x="1000" />

<glyph glyph-name="chmod" unicode="&#xe826;" d="M381 302l-298 83 55 167 291-119-19 334h186l-19-334 286 113 54-173-298-83 196-250-148-107-173 273-167-262-148 102 202 256z" horiz-adv-x="1000" />

<glyph glyph-name="accept" unicode="&#xe827;" d="M500 767c-231 0-417-186-417-417 0-229 186-417 417-417 229 0 417 188 417 417 0 231-188 417-417 417z m-83-625l-209 208 59 58 150-150 316 317 59-58-375-375z" horiz-adv-x="1000" />

<glyph glyph-name="menu" unicode="&#xe828;" d="M83 73h834v92h-834v-92z m0 231h834v92h-834v-92z m0 323v-92h834v92h-834z" horiz-adv-x="1000" />

<glyph glyph-name="colwidth" unicode="&#xe829;" d="M377 31h246v638h-246v-638z m-294 0h246v638h-246v-638z m588 638v-638h246v638h-246z" horiz-adv-x="1000" />

<glyph glyph-name="fullscreen" unicode="&#xe82a;" d="M202 231h-119v-298h298v119h-179v179z m-119 238h119v179h179v119h-298v-298z m715-417h-179v-119h298v298h-119v-179z m-179 715v-119h179v-179h119v298h-298z" horiz-adv-x="1000" />

<glyph glyph-name="unfullscreen" unicode="&#xe82b;" d="M83 113h180v-180h118v298h-298v-118z m180 475h-180v-119h298v298h-118c0 0 0-179 0-179z m356-655h119v180h179v118h-298v-298z m119 655v179h-119v-298h298v119c0 0-179 0-179 0z" horiz-adv-x="1000" />

<glyph glyph-name="empty" unicode="&#xe82c;" d="M813 463l-42-75-531 304 43 75 134-77 58 18 190-108 16-60 132-77m-628-442v525h221l302-175v-350c0-48-39-88-87-88h-348c-48 0-88 40-88 88z" horiz-adv-x="1000" />

<glyph glyph-name="undo" unicode="&#xe82d;" d="M375 767l-292-209 292-208v125h188c106 0 187-81 187-187s-81-188-187-188h-480v-167h480c195 0 354 159 354 355s-159 354-354 354h-188v125z" horiz-adv-x="1000" />

<glyph glyph-name="redo" unicode="&#xe82e;" d="M625 767v-125h-187c-196 0-355-159-355-354s159-355 355-355h479v167h-479c-107 0-188 81-188 188s81 187 188 187h187v-125l292 208-292 209z" horiz-adv-x="1000" />

<glyph glyph-name="preference" unicode="&#xe82f;" d="M810 310c3 13 3 28 3 42s-3 27-3 42l88 69c8 6 10 16 4 27l-83 143c-6 9-17 13-25 9l-104-42c-21 17-46 31-71 42l-15 108c-2 8-10 17-21 17h-166c-11 0-19-9-21-17l-17-110c-25-11-48-25-71-42l-104 42c-8 4-21 0-25-9l-83-143c-6-9-2-21 4-28l90-68c0-15-2-27-2-42s2-27 2-42l-88-68c-8-7-10-17-4-27l83-144c7-9 17-13 25-9l104 42c21-17 46-31 71-42l17-110c2-10 10-17 21-17h166c11 0 19 9 21 17l17 110c25 11 48 25 71 42l104-42c10-4 21 0 25 9l83 144c7 8 2 20-4 27l-92 70z m-310-106c-81 0-146 65-146 146s65 146 146 146 146-65 146-146-65-146-146-146z" horiz-adv-x="1000" />

<glyph glyph-name="mkdirin" unicode="&#xe830;" d="M583 100v125h-166v167h166v125l209-209m41 292h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="selectall" unicode="&#xe831;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-166v-84h84v84h-84z m209 0v-84h416v84h-416z m541 0v-84h84v84h-84z m-750-167v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-167v-41c0-46 38-84 84-84h41v84h-41v41h-84z m750 0v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-541-41v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="selectnone" unicode="&#xe832;" d="M83 683c0 46 38 84 84 84h125v-84h-125v-125h-84v125m834 0v-125h-84v125h-125v84h125c46 0 84-38 84-84m-84-666v125h84v-125c0-46-38-84-84-84h-125v84h125m-750 0v125h84v-125h125v-84h-125c-46 0-84 38-84 84m334 750h166v-84h-166v84m0-750h166v-84h-166v84m416 416h84v-166h-84v166m-750 0h84v-166h-84v166z" horiz-adv-x="1000" />

<glyph glyph-name="selectinvert" unicode="&#xe833;" d="M175 767h92v-92h91v92h92v-92h92v92h91v-92h92v92h92v-92h100v-92h-92v-91h92v-92h-92v-92h92v-91h-92v-92h92v-92h-92v-100h-92v92h-91v-92h-92v92h-92v-92h-91v92h-92v-92h-100v92h-92v92h92v91h-92v92h92v92h-92v91h92v92h-92v100h92v92z" horiz-adv-x="1000" />

<glyph glyph-name="lock" unicode="&#xe834;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-361 79c0 69 54 123 123 123s123-54 123-123v-79h-246v79z m361-556h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="perms" unicode="&#xe835;" d="M738 490h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-238-359c-44 0-79 36-79 79s35 80 79 80 79-36 79-80-35-79-79-79z m123 359h-246v79c0 69 54 123 123 123s123-54 123-123v-79z" horiz-adv-x="1000" />

<glyph glyph-name="unlocked" unicode="&#xe836;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198h75c0 69 54 123 123 123s123-54 123-123v-79h-360c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m0-477h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="symlink" unicode="&#xe837;" d="M917 373l-325 325v-185c-323-46-463-280-509-511 117 163 277 236 509 236v-190l325 325z" horiz-adv-x="1000" />

<glyph glyph-name="resizable" unicode="&#xe838;" d="M917-67h-167v167h167v-167m0 334h-167v166h167v-166m-334-334h-166v167h166v-167m0 334h-166v166h166v-166m-333-334h-167v167h167v-167m667 667h-167v167h167v-167z" horiz-adv-x="1000" />

<glyph glyph-name="close" unicode="&#xe839;" d="M917 683l-84 84-333-334-333 334-84-84 334-333-334-333 84-84 333 334 333-334 84 84-334 333 334 333z" horiz-adv-x="1000" />

<glyph glyph-name="plus" unicode="&#xe83a;" d="M917 290h-357v-357h-118v357h-359v118h357v359h118v-357h359v-120z" horiz-adv-x="1000" />

<glyph glyph-name="return" unicode="&#xe83b;" d="M513 494c-109 0-207-40-282-106l-146 145v-366h367l-148 150c56 48 129 77 209 77 143 0 266-94 308-225l96 31c-54 171-215 294-404 294z" horiz-adv-x="1000" />

<glyph glyph-name="minus" unicode="&#xe83c;" d="M917 292h-834v118h834v-118z" horiz-adv-x="1000" />

<glyph glyph-name="hdd" unicode="&#xe83d;" d="M167 767l-84-500h834l-84 500h-666z m-84-542v-292h834v292h-834z m84-83h41v-84h42v84h42v-84h41v84h42v-84h42v84h41v-84h42v84h42v-84h41v84h42v-84-41h-42-41-42-42-41-42-42-41-42-42-41v41 84z m604 0c35 0 62-27 62-63s-27-62-62-62-63 27-63 62 27 63 63 63z" horiz-adv-x="1000" />

<glyph glyph-name="sql" unicode="&#xe83e;" d="M500 767c-85 0-162-15-223-40-29-12-56-27-75-48s-35-48-35-79v-333-167c0-31 14-58 35-79s46-38 75-50c61-23 138-38 223-38s163 15 223 40c29 12 56 29 75 50s35 46 35 77v167 333c0 31-14 58-35 79s-46 36-75 48c-60 25-138 40-223 40z m0-84c75 0 144-14 190-33 23-10 39-21 50-29s10-17 10-21 0-10-10-19-27-21-50-29c-46-21-115-35-190-35s-144 14-190 33c-22 10-39 21-50 29s-10 17-10 21 0 10 10 19 28 21 50 29c46 21 115 35 190 35z m-250-195c8-5 17-11 27-15 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 15v-55c0-4-2-10-10-20s-27-21-50-30c-46-20-113-33-190-33s-144 13-190 33c-22 11-39 21-50 30s-10 16-10 20v55z m0-167c8-4 17-11 27-15 61-25 138-39 223-39s163 14 223 39c10 4 19 11 27 15v-54c0-4-2-11-10-21s-27-21-50-29c-46-21-113-34-190-34s-144 13-190 34c-22 10-39 21-50 29s-10 17-10 21v54z m0-167c8-4 17-10 27-14 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 14v-54c0-4-2-10-10-21s-27-21-50-29c-46-21-113-33-190-33s-144 12-190 33c-22 10-39 21-50 29s-10 17-10 21v54z" horiz-adv-x="1000" />

<glyph glyph-name="dropbox" unicode="&#xe83f;" d="M665 123l-165 125-160-125-94 56v-60l254-169 256 167v60l-91-54z m252 471l-246 156-171-140 256-150 161 134z m-834-269l252-150 165 127-242 154-175-131z m252 425l-252-162 175-132 242 154-165 140z m165-448l167-127 250 150-161 135-256-158z" horiz-adv-x="1000" />

<glyph glyph-name="googledrive" unicode="&#xe840;" d="M898 254l-267 463h-262l0 0 266-463h263z m-488-39l-131-232h506l132 232h-507l0 0z m-77 443l-250-443 132-232 254 444-136 231z" horiz-adv-x="1000" />

<glyph glyph-name="onedrive" unicode="&#xe841;" d="M544 602c-75 0-142-44-173-106-19 10-42 17-65 17-75 0-133-61-133-134 0-6 2-10 2-16-52-7-92-50-92-105 0-58 46-104 105-104h83c-4 15-8 29-8 44 0 58 37 108 89 127 11 88 88 156 177 156 54 0 104-23 138-64 12 4 27 6 41 6 11 0 19 0 30-2-7 102-90 181-194 181z m-15-148c-81 0-148-66-148-148v-2c-50-6-89-50-89-102 0-58 46-104 104-104h431c50 0 90 40 90 90s-40 89-90 89c0 67-54 119-119 119-18 0-35-4-52-13-27 42-73 71-127 71z" horiz-adv-x="1000" />

<glyph glyph-name="box" unicode="&#xe842;" d="M898 365c-38 93-113 139-213 145-14 3-20 7-25 19-12 36-35 67-66 90-104 79-265 29-306-94-3-8-13-17-21-21-29-14-63-23-88-41-81-59-114-165-83-257 33-98 123-162 227-162h175c60 0 123-2 185 0 67 2 125 25 169 73 65 71 83 156 46 248z m-100-244c-15-11-29-6-40 8-14 19-29 40-45 61-17-21-30-40-44-59-9-12-21-23-38-12s-16 25-8 41c-58-62-117-58-198 11-23-29-50-48-85-54-67-13-138 43-138 110v192c0 21 13 33 27 33 17 0 27-12 27-33v-84c32 19 63 23 94 17 31-8 56-25 75-54 4 2 6 6 8 8 50 59 125 63 182 11l8-9c-10 17-10 32 2 40 17 10 29 2 40-10 14-19 29-38 45-59 13 15 25 29 36 44 4 6 8 12 12 17 13 14 27 16 40 6 15-13 12-25 2-40-15-18-29-39-44-58-8-10-8-17 0-27 17-19 32-40 46-61 11-16 8-31-4-39z m-473 179c-37 0-67-29-67-65 0-37 27-64 65-64s65 27 67 62c0 38-27 67-65 67z m202 0c-37 0-67-29-67-65 0-37 30-64 67-64 38 0 67 27 67 62 0 36-31 67-67 67z m106-4c2-6 5-13 5-19 14-37 10-75-13-108 17 19 31 37 46 58 4 4 2 15-2 19-11 17-23 33-36 50z" horiz-adv-x="1000" />

<glyph glyph-name="help-circle" unicode="&#xe843;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-709h-84v84h84v-84z m85 323l-37-37c-30-31-48-56-48-119h-84v21c0 46 19 87 48 119l52 52c15 14 25 35 25 58 0 46-37 83-83 83s-83-37-83-83h-84c0 92 75 167 167 167s167-75 167-167c0-37-15-71-40-94z" horiz-adv-x="1000" />

<glyph glyph-name="move" unicode="&#xe844;" d="M425 465h152v114h115l-192 188-190-190h115v-112z m-40-40h-114v115l-188-190 190-190v115h115v150z m532-75l-190 190v-115h-114v-152h114v-115l190 192z m-342-115h-152v-114h-115l192-188 190 190h-115v112z" horiz-adv-x="1000" />

<glyph glyph-name="save" unicode="&#xe845;" d="M731 767h-556c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c52 0 92 42 92 92v556l-184 186z m-231-742c-77 0-140 63-140 140s63 139 140 139 140-62 140-139-63-140-140-140z m140 465h-465v185h463v-185z" horiz-adv-x="1000" />

<glyph glyph-name="loading" unicode="&#xe846;" d="M500 577v-114l152 152-152 152v-115c-167 0-302-135-302-302 0-60 17-115 48-160l56 56c-17 31-27 67-27 106-2 123 100 225 225 225z m256-67l-56-56c17-31 27-66 27-106 0-125-102-227-227-227v114l-152-152 152-150v115c167 0 302 135 302 302 0 60-17 115-46 160z" horiz-adv-x="1000" />

<glyph glyph-name="info-circle" unicode="&#xe847;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-625h-84v250h84v-250z m0 333h-84v83h84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="prev" unicode="&#xe848;" d="M758 669l-100 98-416-417 416-417 98 98-316 319 318 319z" horiz-adv-x="1000" />

<glyph glyph-name="next" unicode="&#xe849;" d="M342 767l-98-98 316-319-318-319 98-98 416 417-414 417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen" unicode="&#xe84a;" d="M500 767l171-171-417-417-171 171v-417h417l-171 171 417 417 171-171v417h-417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen-off" unicode="&#xe84b;" d="M858 767l-177-177-118 118-59-354 354 59-118 118 177 177-59 59z m-362-421l-354-58 118-119-177-177 59-59 177 177 119-118 58 354z" horiz-adv-x="1000" />

<glyph glyph-name="close-circle" unicode="&#xe84c;" d="M500 767c231 0 417-186 417-417s-186-417-417-417-417 186-417 417 186 417 417 417m150-209l-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150 58 58-150 150 150 150-58 58z" horiz-adv-x="1000" />

<glyph glyph-name="pin" unicode="&#xe84d;" d="M667 350v333h41v84h-416v-84h41v-333l-83-83v-84h217v-250h66v250h217v84l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="check" unicode="&#xe84e;" d="M348 167l-198 198-67-69 265-265 569 569-67 67-502-500z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-s" unicode="&#xe84f;" d="M498-67l290 290-75 73-163-163-2 634h-104l2-634-163 159-73-75 288-284z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-n" unicode="&#xe850;" d="M502 767l-289-290 72-73 165 163v-634h104v634l163-163 73 75-288 288z" horiz-adv-x="1000" />

<glyph glyph-name="caret-down" unicode="&#xe851;" d="M902 569c-10 10-23 14-37 14h-730c-14 0-27-4-37-14s-15-23-15-38c0-14 5-27 15-37l365-365c10-10 22-14 37-14s27 4 38 14l364 367c11 10 15 23 15 37 0 13-4 25-15 36z" horiz-adv-x="1000" />

<glyph glyph-name="caret-up" unicode="&#xe852;" d="M917 165c0 14-4 27-15 37l-364 367c-11 10-23 14-38 14s-27-4-37-14l-365-365c-10-10-15-21-15-37s5-27 15-38 23-14 37-14h730c14 0 27 4 37 14s15 23 15 36z" horiz-adv-x="1000" />

<glyph glyph-name="menu-resize" unicode="&#xe853;" d="M627 767c0-277 0-554 0-834-31 0-62 0-94 0 0 277 0 557 0 834 32 0 63 0 94 0z m-160 0c0-277 0-554 0-834-32 0-63 0-94 0 0 277 0 555 0 834 31 0 62 0 94 0z" horiz-adv-x="1000" />

<glyph glyph-name="arrow-circle" unicode="&#xe854;" d="M500 767c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417z m0-577l-260 260 60 60 200-200 200 200 60-60-260-260z" horiz-adv-x="1000" />

<glyph glyph-name="tn-error" unicode="&#xe855;" d="M500 767l-342-152v-227c0-211 146-407 342-455 196 48 342 244 342 455v227l-342 152z m38-257v-227h-75v227h75z m-38-385c-27 0-50 23-50 50 0 27 23 50 50 50l0 0c27 0 50-23 50-50l0 0c0-27-23-50-50-50" horiz-adv-x="1000" />

<glyph glyph-name="warning-alert" unicode="&#xe856;" d="M538 256h-75v152h75m0-304h-75v75h75m-455-189h834l-417 720-417-720z" horiz-adv-x="1000" />

<glyph glyph-name="caret-right" unicode="&#xe857;" d="M719 388l-365 364c-10 11-23 15-35 15-13 0-27-4-38-15s-14-23-14-37v-730c0-14 4-27 14-37s23-15 38-15c14 0 27 4 37 15l365 365c10 10 14 22 14 37 0 15-6 27-16 38z" horiz-adv-x="1000" />

<glyph glyph-name="caret-left" unicode="&#xe858;" d="M281 388l365 364c10 11 23 15 35 15 15 0 27-4 38-15s14-23 14-37v-730c0-14-4-27-14-37s-23-15-38-15-27 4-37 15l-363 365c-10 10-14 22-14 37 0 15 4 27 14 38z" horiz-adv-x="1000" />

<glyph glyph-name="logout" unicode="&#xe85a;" d="M546 767h-92v-463h92v463z m225-100l-67-67c73-60 119-150 119-250 0-179-146-325-325-325s-323 146-323 325c0 102 46 192 119 250l-65 67c-89-77-146-190-146-317 0-229 188-417 417-417s417 188 417 417c0 127-57 240-146 317z" horiz-adv-x="1000" />

<glyph glyph-name="opennew" unicode="&#xe85b;" d="M592 767v-92h166l-454-456 67-67 454 454v-166h92v327m-92-742h-650v650h325v92h-325c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c50 0 92 42 92 92v325h-92l2-325 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="zip" unicode="&#xe85c;" d="M594 119h-94v91h-92v92h92v-92h92m2 280h-94v-92h92v-92h-92v92h-92v92h92v91h-92v94h92v-92h92m233 184h-648c-52 0-94-42-94-92v-648c0-52 42-94 94-94h648c50 0 92 42 92 92v650c0 50-42 92-92 92z" horiz-adv-x="1000" />

<glyph glyph-name="hide" unicode="&#xe85d;" d="M494 483l121-118c0 2 0 4 0 6 0 62-50 114-115 114-2-2-4-2-6-2m-163-31l59-58c-2-9-2-17-2-25 0-63 50-115 114-115 8 0 17 2 25 2l58-58c-25-13-54-21-83-21-104 0-189 86-189 190-3 31 6 60 18 85m-210 211l85-86 17-17c-63-50-113-114-142-189 65-167 227-283 417-283 58 0 115 10 167 31l16-17 111-110 48 48-671 670m331-152c104 0 190-85 190-189 0-25-5-48-15-69l110-110c57 48 103 110 130 179-65 166-227 283-417 283-52 0-104-10-152-27l81-81c25 10 48 14 73 14z" horiz-adv-x="1000" />
</font>
</defs>
</svg>                                                                                                                                                                                                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/Material/images/icons-big.svg                                      0000644                 00000055525 15266052710 0020374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1998"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M25.3 1965.3l-5 17.5h2.5l5-17.5h-2.5zm-8.8 2.5l-5 6.3 5 6.3H19l-5-6.4 5-6.3-2.5.1zm12.5 0l5 6.3-5 6.3h2.5l5-6.3-5-6.3H29z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M20.6 1914.9v2.3h-4.9c-.4-.7-1.2-1.1-2-1.1a2.26 2.26 0 1 0 0 4.6c.8 0 1.6-.4 2-1.1h2.7c-1.5 1.4-2.4 3.5-2.4 5.7v1.1h-2.3v6.8h6.8v-6.8h-2.3v-1.1c0-1.9.9-3.5 2.3-4.5v1.1h6.8v-1.1c1.4 1 2.3 2.7 2.3 4.5v1.1h-2.3v6.8h6.8v-6.8H32v-1.1c0-2.2-.9-4.2-2.4-5.7h2.7c.4.7 1.2 1.1 2 1.1a2.26 2.26 0 1 0 0-4.6c-.8 0-1.6.4-2 1.1h-4.9v-2.3h-6.8zm2.3 2.3h2.3v2.3h-2.3v-2.3zm-6.9 11.3h2.3v2.3H16v-2.3zm13.7 0H32v2.3h-2.3v-2.3z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M24 1861.4c-2.9 0-5.5.5-7.4 1.4-1 .4-1.8 1-2.3 1.6-.6.6-.9 1.3-.9 2.1v14.8c0 .8.4 1.5.9 2.1s1.4 1.1 2.3 1.6c1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c1-.4 1.8-1 2.3-1.6.6-.6.9-1.3.9-2.1v-14.8c0-.8-.4-1.5-.9-2.1-.6-.6-1.4-1.1-2.3-1.6-1.9-.9-4.5-1.4-7.4-1.4zm0 1c2.8 0 5.2.5 7 1.3.9.4 1.6.9 2 1.3s.7 1 .7 1.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4c0-.5.2-1 .7-1.4s1.1-.9 2-1.3c1.8-.7 4.2-1.3 7-1.3zm-9.7 6.3c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.1c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.2c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.4z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M24 1825.3h7.3c.2 0 .1 0 .2.1.1.4 0 .8 0 1.2v1.1c0 .1-.1.1-.2.1h-7c-.2 0-.2 0-.2-.1v-1.4c-.1-.3-.1-.7-.1-1zm-4.8 1.6s.1.2.1.3v.6h.8c.1 0 0 0 .1-.1s0-.4 0-.5v-.3c0-.1 0 0 .1-.1s.3-.1.5-.2c1-.4 1.5-1.9.7-2.7-.1-.1-.4-.2-.6-.3s-.5-.2-.7-.3c-.3-.1-1.2-.4-.9-.9s1.1-.3 1.6-.2c.1 0 .2.1.4.1.2.1.2 0 .2-.1s.1-.3.1-.4.2-.4.1-.5-.3-.1-.4-.1-.3-.1-.4-.1h-.4c-.1 0-.1 0-.1-.1v-.7c-.1-.1-.6 0-.7 0h-.2c-.1.1 0 .4 0 .4v.4c-.1.1-.3.1-.4.1-.6.2-.9.6-1.1 1.2-.1.3-.1.6.1.9s.5.5.7.7c.5.3 1 .4 1.5.7.2.1.5.4.4.6s-.5.4-.7.4c-.3.1-.7 0-1.1-.1-.2 0-.3-.1-.4-.2-.1 0-.3-.1-.3-.1 0 .2-.1.4-.2.6 0 .1-.2.4-.1.5 0 .1.2.1.3.1s.2.1.4.1c.1.2.3.3.6.3zm14.8-14.1H15.9c-.7 0-1.6-.1-2.3 0-1.2.2-2.1 1.3-2.2 2.5v16c0 1.1-.1 2.3.7 3.2.9.9 1.9.8 3 .8h18.6c.9 0 1.7-.4 2.2-1.2.3-.5.4-1 .4-1.6v-17.1c.2-1.5-1-2.6-2.3-2.6zm0 20H14.1v-12c0-.9-.1-1.9 0-2.8 0-.2 0-.1.1-.1h19.3c.1 0 .5-.1.6 0 .1 0 0 .3 0 .4v14.2c-.1-.1-.1.1-.1.3z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M14.5 1776.4l-3 7.1 5.7-.2-2.7-6.9zm14.8.1c-3.7 2.3-7.3 4.7-10.9 7.1l16.5 2.3-5.6-9.4zm7.1-10.3l-1.5 2.2-5 7.6c-.1.2-.2.3-.1.5l4.8 8c.3.4.5.8.8 1.3l1-19.6zm-22 8.2c.1.1.2.1.3.1l4.6-2.3c.5-.3.8-.8 1.3-1.2l4.3-3.9c.1-.1.2-.2.2-.3l1.5-3c-.6-.2-1.2-.4-1.7-.7-.1 0-.2 0-.3.1l-4.1 2.4c-.7.4-1.2 1-1.8 1.6l-2.8 2.6c-.2.3-.5.5-.7.8-.7.9-1.3 1.8-1.9 2.8l1.1 1zm5.6-1.2l-2.3 9.8 10.9-7.1-8.6-2.7zm6.2-5.4l3.2 7.7 6.2-9.3-9.4 1.6zm-6 4.7l8.4 2.8-3.1-7.6-5.3 4.8zm-2.9 9.1l2.1-8.5-4.5 2.3 2.4 6.2zm17-15.9l-2.7-.8-3.9-1c-.2-.1-.3-.1-.3.1l-1.4 2.8v.2l8.3-1.3zm-5.1-2.1l7.3 2-1.3-3.4-6 1.4zm2.1 22.3l-13.5-1.8c-.9-.1-1.8 0-2.7 0l-2.3.1c-.1 0-.2 0-.2.1l18.7 1.6c0 .1 0 0 0 0zm-19.6-4.6l2.4-5.6c.1-.2.1-.3-.1-.5l-1-1.1-1.5 7.3.2-.1c-.1.1 0 .1 0 0zm15.8-18.2l4.1-.9c.1 0 .2-.1.2-.1v-.1l-5.9.7c.7.4 1.1.6 1.6.4z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M26 1723.3c1.7 0 3.2-1.2 3.2-2.9v-5.6c0-1.6-1.2-2.8-2.7-3.1 0 0-1.2-.2-2.2-.2s-1.7.1-2.6.2c-2.5.4-3 1.3-3 3.1v2.6h5.9v1.3h-9c-1.7 0-3.2.8-3.7 2.7-.6 2.2-.6 3.7 0 6 .4 1.7 1.4 3.1 3.1 3.1h2.4v-3.3c0-1.9 1.7-3.9 3.8-3.9H26zm-5-7.1c-.5 0-1-.4-1-.9v-.1c.1-.6.5-1 1-1s1 .4 1 1c0 .5-.4 1-.9 1H21zm15.1 4.3c-.4-1.7-1.4-3.1-3.1-3.1h-2.4v3.3c0 1.9-1.7 3.9-3.8 3.9H22c-1.7 0-3.2 1.2-3.2 2.9v5.6c0 1.6 1.2 2.8 2.7 3.1 0 0 1.2.2 2.2.2s1.7-.1 2.6-.2c2.5-.4 3-1.3 3-3.1v-2.6h-5.9v-1.3h9c1.7 0 3.2-.8 3.7-2.7.5-2.3.5-3.7 0-6zm-9.1 11.3c.5 0 1 .4 1 .9v.1c-.1.6-.5 1-1 1s-1-.4-1-1c0-.5.4-1 .9-1h.1z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M19.7 1678.6c-.1-.8-.4-1.4-1.3-1.7-.3-.1-.6-.3-.8-.5-.3-.2-.7-.3-1.1-.4-.3-.1-.5.1-.7.3-.2.3-.1.4.1.7.1.2.3.4.5.6.3.3.6.7.8 1 .3.3.5.7.4 1.1a3.47 3.47 0 0 1-1.2 2.3c.1 0 0 0-.2 0-.4-.1-.8-.3-1.2-.5-.3-.3-.3-.8.2-1 .1-.1.3-.1.3-.2.3-.2.3-.6.3-.8-.1-.2-.2-.3-.3-.4l-1.7-1.5c-1.4-1.2-2.2-2.6-2.3-4.4-.2-2 .3-3.8 1.4-5.6.4-.7.8-1.3 1.6-1.6.5-.3 1-.3 1.5-.5 1.4-.4 2.9-.7 4.3-.4 1.3.3 2.3.9 2.7 2.2.3.8.3 1.7.3 2.6-.2 1.8-1.4 3.3-3.1 3.7-.8.2-1.1.1-1.5-.5-.3-.4-.6-.8-.8-1.3 0-.1-.1-.2-.1-.3s-.1-.2-.1-.3c.1.8.3 1.5.7 2.1.3.3.5.6.9.7 1.6.2 2.9-.4 3.8-1.7 1.1-1.4 1.3-3.1 1-4.8l-.3-1c-.1-.3 0-.4.3-.4.1 0 .2-.1.3-.1 1.3-.3 2.6-.3 3.9-.3 1.5.2 2.9.6 4.2 1.4 2 1.3 3.2 3.2 3.8 5.4.1.3.1.7.1 1s-.2.3-.3.2l-.5-.5c-.2-.2-.3-.3-.4-.6-.1-.2-.3-.1-.3.1 0 .1-.1.3-.1.3-.3 1.3-.9 2.3-1.8 3.3-.1.2-.3.3-.3.5 0 .5-.1 1 0 1.5l.3 3.1c.1.6-.1.9-.7 1.2-.4.2-.8.3-1.3.3-.7.1-1.3 0-2 0 0-.8.1-1.4-.7-1.8.2-.6.3-1.1.4-1.6.1-.4 0-.8-.3-1.3-.3-.3-.7-.4-1-.3-1 .6-2 .6-3.1.2-.5-.2-.8-.1-1.1.3-.3.5-.4 1-.4 1.6 0 .7.2 1.3.3 2 .1.4 0 .5-.3.6-.8.3-1.7.3-2.6.2h-.1c-.1-.8 0-1.4-.8-1.8.6-.7.5-1.6.4-2.4zm-5.1-2.8c.1-.1.3-.3.3-.5.1-.4-.3-1-.6-1.2-.2-.1-.3-.1-.5.1-.3.4-.7.8-1 1.2-.1.1-.1.2-.2.3-.2.3-.1.4.3.5a.9.9 0 0 0 .5.1c.5-.1.9-.2 1.2-.5zm.1-4.2a.65.65 0 0 0-.6-.6.65.65 0 0 0-.6.6c0 .3.3.6.6.5.4.1.6-.2.6-.5z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M33.3 1629c0 .2.1.3.1.8-.1 1.1.3 1.2.2 2.8-.1.7-.4 1.1-.6 2-.1.3-.1.5-.3.8l1.8.3c0-.5.1-.8-.3-1.7-.4-1-.1-1.2-.1-2 0-1.3.8-1.3.3-2.6-.3-.7.1-.7-.1-2.2-.3-1.8 0-5 .6-4.9.5.1.5 1.3.6 1.9.2 1.1-.5 1.7-.7 2.2 0 .3.3.5.5.4.3-.2.6-.7.9-1.2.3-1.1.3-1.9.2-3 0-.7-.1-1-.7-1.5-1.1-1.2-1.7-2.2-2.3-3.5-.2-.3-.5-.7-.8-.9-.8-.7-1-2.2-1.7-3.1-.8-.8-1.7-1.3-2.8-1.3-.9-.1-3 .8-3.8 1.4-.8.7-.7 1.8-2.7 2.8-.8.4-2.3 1.5-2.7 3.7-.5.4-.8-.2-.8-.6.3-1 .8-1.9.8-3-.2-1.5-.8-2.8-1.9-3.3-.9-.4-1.5-.2-1.9.3-1.6 1.1-2.9-.2-3.7 1.7-.1 1.3 2 .4 2.2 1.5-.3 1.3-1 .6-.6 4.5.1 1 .9 1.6 1.5 2.4.9 1 2.5 2 4 1.6 1-.3 1.2.3 1 .8-.3 1.3.1 1.8.1 3 0 .6.3.8.3 2.6.2 1.3-.4 2.5-.9 3.3l1.3-.1c.2-.8.2-1.3.3-2.4.2-.8.7-1 .6-2.2 0-2.2.8-2.2.8-3.2 0-.8.3-1.3 1-1.3.9 0 .8.4.6 1.2-.1 1.3-.4 1.1-.6 1.8-.1.6-.1 1.4.3 1.7.3.3.7.5 1.3.9.3.3 1.3 1 1.3 1.7-.2 1.4-1.7 1.2-1.6 1.8h2.2c.3-.2.3-.6.5-.6s.4.4.7.6c.3 0 .6 0 .8.1.2-.2.3-.8.2-1-.2-1-1.1-.8-.9-1.7.4-.9.7-1 1-1.4.4-.8.8-.8 1-1.3 0-1 0-1.9.2-2.7.1-.8.3-1.3.8-1.9.5-.7.6-.8.9-.3.3 1.8 1.2 3.1 1.6 4.3zm-8.1.5c.1-.1.4-.3.6-.5.4-.3.4-.4.5-.9.2-.9.5-.5.8-1.8 0-.1.2-.8.4-.7.3 0 .3.1.4.9l.3 2.4c0 .2 0 .5-.1.7 0 1-.6 1.5-.8 2-.3.5-.5.8-1.6-.2-.7-.7-1.2-1.3-.5-1.9z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M13.8 1566.2c-1.2 0-2.3 1-2.3 2.2v11.2c0 1.3 1 2.2 2.3 2.2h20.5c1.3 0 2.3-1 2.3-2.2v-11.2c0-1.3-1-2.2-2.3-2.2H13.8zm0 1.6h20.5a.68.68 0 0 1 .7.7v11.2c0 .3-.2.7-.7.7H13.8a.68.68 0 0 1-.7-.7v-11.3c0-.3.2-.6.7-.6zm1.6 2.3v7.8h2.3v-5.2l2.3 3.1 2.3-3.1v5.2h2.3v-7.8h-2.3l-2.3 3.2-2.3-3.2c.1 0-2.3 0-2.3 0zm13.3 0v3.9h-2.3l3.5 3.9 3.5-3.9H31v-3.9h-2.3z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M19.4 1536.4c-3.1-.9-4.6-2.8-4.6-5.9v-2.5c0-1.8-.8-2.7-2.3-2.7v-2.6c1.5 0 2.2-.8 2.3-2.5v-2.7c0-1.6.4-2.8 1.1-3.8s1.9-1.7 3.4-2.1l.7 2.1c-.6.2-1.1.7-1.5 1.2-.3.6-.5 1.4-.5 2.5v2.7c0 1.9-.8 3.3-2.3 4 1.5.8 2.3 2.1 2.3 4.1v2.7c0 2 .7 3.2 2 3.6l-.6 1.9zm3.8.1l-1.9-1 .5-.8c.6-1 .9-2.1.9-3.1v-2.9h3.1v2.5c0 .9-.2 1.9-.7 2.9s-1.1 1.8-1.9 2.4zm-1.2-16.9c0-.6.2-1.1.6-1.4.4-.4.9-.5 1.5-.5s1.1.2 1.5.5c.4.4.6.8.6 1.4s-.2 1-.6 1.4-.9.5-1.5.5-1.1-.2-1.5-.5-.6-.8-.6-1.4zm5.9 14.8c1.3-.5 2-1.7 2-3.7v-2.7c0-1.9.8-3.3 2.3-4-1.6-.7-2.3-2.1-2.3-4.1v-2.7c0-2-.7-3.2-2-3.7l.7-2.1c1.5.4 2.7 1.1 3.4 2.1.8 1 1.2 2.2 1.2 3.8v2.7c0 1.7.8 2.5 2.3 2.5v2.6c-1.5 0-2.3.9-2.3 2.7v2.8c-.1 3-1.6 4.9-4.6 5.7l-.7-1.9z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M35 1461.5H13c-.9 0-1.6.8-1.6 1.6v21.9c0 .9.8 1.6 1.6 1.6h21.9c.9 0 1.6-.8 1.6-1.6v-21.9c.1-.9-.7-1.6-1.5-1.6zm-9.8 19.2c0 2.5-1.5 3.6-3.5 3.6-1.9 0-3.2-1.2-3.8-2.5l1.8-1.1c.3.7.9 1.1 1.7 1.1s1.1-.3 1.1-1.5v-7.6H25l.2 8zm5.3 3.5c-2.1 0-3.3-1.1-4-2.5l1.8-1.2c.4.9 1 1.6 2.1 1.6.9 0 1.5-.4 1.5-1.1 0-.8-.4-1.1-1.6-1.6l-.6-.2c-1.7-.7-2.8-1.6-2.8-3.5 0-1.7 1.3-3 3.3-3 1.5 0 2.6.6 3.2 1.8l-1.8 1.2c-.4-.7-.9-1-1.5-1-.7 0-1.1.4-1.1 1 0 .7.4.9 1.5 1.5l.6.2c1.9.9 3 1.7 3 3.6 0 2-1.5 3.2-3.6 3.2z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M25.5 1411.5c1.3 3.1-4.9 5.2-5.5 7.8-.6 2.5 3.8 5.2 3.8 5.2-.7-1-1.1-1.9-1.8-3.5-1.2-2.6 6.7-4.9 3.5-9.5zm4.2 4.4s-5.5.3-5.9 3.9c-.1 1.6 1.4 2.5 1.6 3.6 0 .9-.9 1.8-.9 1.8s1.8-.3 2.3-1.8c.6-1.6-1.2-2.7-1-3.9.2-1.3 3.9-3.6 3.9-3.6zm1.4 8.2c-.6 0-1.2.1-1.8.6 1.2-.2 2.1.4 2.1 1.2 0 1.9-2.6 3.6-2.6 3.6s4.2-.5 4.2-3.5c-.1-1.2-.9-1.9-1.9-1.9zm-10.1 0s-5.1-.1-5.1 1.3 6.7 1.6 11.4.7c0 0 1.2-.9 1.6-1.1-3.1.7-10.1.8-10.1.1 0-.5 2.2-1 2.2-1zm-1.2 2.8c-.8 0-1.9.6-1.9 1.2 0 1.2 5.9 2.1 10.1.3l-1.4-.9c-3 1-8.5.6-6.8-.6zm.7 2.6c-1.1 0-1.8.7-1.8 1.2 0 1.4 6.4 1.7 8.9.1l-1.6-1c-1.8.7-6.5.8-5.5-.3zm-3.5 1.4c-1.8 0-2.9.8-2.9 1.4 0 3.5 17.8 3.2 17.8-.2 0-.6-.7-.9-.9-1 1.4 3.3-14.5 3.1-14.5 1.1 0-.4 1.1-.9 2.2-.7l-.9-.4c-.3-.2-.5-.2-.8-.2zm16.9 2.3c-2.7 2.6-9.6 3.6-16.5 1.9 6.8 2.7 16.4 1.2 16.5-1.9z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M35.2 1361.5H12.8l2.4 22.5 8.8 2.6 8.8-2.6 2.4-22.5zm-5.2 7.6h-9.6l.2 2.8h9.1l-.7 8-5 1.6h-.1l-5-1.7-.2-3.2h2.6l.1 1.2 2.9.7 2.8-.7.3-3.4h-8.8l-.7-7.9h12.3l-.2 2.6z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M12.8 1311.6l2.4 22.4 8.7 2.5 8.7-2.5 2.5-22.5-22.3.1zm17 10.3l-.4 7.9-5.4 1.8-5.4-1.8-.2-3.8h2.8l.1 1.7 2.8.9 2.9-.9.2-3.1h-6l-.1-2.8h6.2l.1-2.8H18l-.2-2.5h12.4l-.4 5.4z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M35.2 1267.8l-5.3 3.1c-.9-1.3-2-2.2-3.4-2.7-1.3-.4-2.8-.4-4.1.2-2.9 1.1-4.3 3.8-4 6.5s2.2 4.9 5 5.4c2.9.6 5.4-.8 6.6-3 .9.4 1.8 1 2.7 1.4.9.6 1.9 1 2.7 1.5-3.5 6-10.2 7.4-15 5.4-5.5-2.2-8.5-7.2-8.2-12.4.4-6.4 5-10.4 9.7-11.5 6.3-1.1 11.3 2.4 13.3 6.1z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><path d="M34.5 1221.3a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-6.4zm-18 0a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.47 1.47 0 0 0 1.5-1.5v-6.4zm10.8-7.4l1.1-2c.1-.1 0-.2-.1-.3h-.1c-.1 0-.2 0-.2.1l-1.1 2c-.9-.4-1.9-.6-3-.6s-2.1.2-3 .6l-1.1-2c0-.1-.1-.1-.2 0-.1 0-.2.2-.1.3l1.1 2c-2.1 1.1-3.5 3.2-3.5 5.5h13.8c-.1-2.4-1.5-4.5-3.6-5.6zm-6.5 3a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c-.1.4-.3.6-.6.6zm6.3 0a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c0 .4-.3.6-.6.6zm-10 3.1v10c0 .9.7 1.7 1.7 1.7h1.1v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4H25v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4h1.1c.9 0 1.7-.7 1.7-1.7v-10H17.1z" class="C"/><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M13.4 1186.6v-4.9h.1c1.9 0 3.3-.9 4.6-2.1.9-1 1.7-2.1 2.2-3.4.8-1.4 1.2-2.9 1.9-4.4.4-1.3 1-2.8 1.8-4 1-1.8 2.2-3.1 3.9-4.3.9-.6 1.7-1.1 2.7-1.3.9-.2 1.9-.4 2.8-.4h1.3v4.8h-.4c-1.2 0-2.3.3-3.3 1-.7.6-1.2 1-1.8 1.7s-.9 1.3-1.2 2.1c0 .1-.1.1-.1.1h4.2v5h-5.9c-.2 0-.2 0-.2.2-.7 1.8-1.4 3.3-2.6 4.8-2.2 2.8-5 4.4-8.4 5.1-.4.1-.9.1-1.2.2-.3-.2-.4-.2-.4-.2z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M15.5 1126.5v5.6h-4v-16.4H18c1.3 0 2.3.3 3.3.7s1.8 1.1 2.3 2c.5.8.8 1.8.8 2.9 0 1.6-.6 2.9-1.8 3.8s-2.8 1.4-4.7 1.4h-2.4zm0-3h2.6c.8 0 1.3-.2 1.8-.6.4-.4.6-.9.6-1.7s-.2-1.4-.6-1.8c-.4-.5-1-.7-1.7-.7h-2.7v4.8zm17.2 5.1c0-.3-.2-.6-.5-.8s-1-.4-1.9-.6-1.7-.5-2.3-.8-1.1-.8-1.4-1.3c-.4-.4-.6-1-.6-1.5 0-1.1.5-2.1 1.4-2.7.9-.8 2.2-1.1 3.7-1.1 1.6 0 2.9.3 3.9 1.1s1.5 1.7 1.5 2.9h-3.8c0-1-.5-1.5-1.6-1.5-.4 0-.8.1-1 .3s-.4.5-.4.8.2.6.5.8c.3.3.8.4 1.6.5l1.9.5c1.8.7 2.7 1.7 2.7 3.4 0 1.1-.5 2-1.5 2.7-1 .8-2.3 1.1-3.8 1.1-1.1 0-2-.2-2.8-.6s-1.5-.9-1.9-1.5c-.5-.7-.7-1.3-.7-2.1h3.6c0 .6.2 1 .6 1.2.4.3.8.4 1.4.4.5 0 .9-.1 1.2-.3 0-.2.2-.5.2-.9z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M24.6 1080.4h-7.3l-1.4 4.2h-4.4l7.5-20.2h3.9l7.6 20.2H26l-1.4-4.2zm-6.2-3.4h5l-2.5-7.6-2.5 7.6zm13.6-11.3c0-.6.2-1.1.6-1.5s.9-.6 1.6-.6 1.2.2 1.6.6.6.9.6 1.5-.2 1.1-.6 1.5-1 .6-1.6.6-1.2-.2-1.6-.6-.6-.9-.6-1.5zm4.3 18.9h-4v-15h4v15z" class="C"/><path fill="#fbc02d" d="M0 1000.1h48v10.7H0v-10.7m2.7 13.3h42.7v34.7H2.7v-34.7m14.6 8c-.7 0-1.3.6-1.3 1.3v4h16v-4c0-.7-.6-1.3-1.3-1.3H17.3z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M11.5 967.8v2.5h13.2v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm24.2-19.9h-7.5c-.4 0-.8.4-.8.8v5.8c0 .5.4.8.8.8h7.5c.4 0 .8-.4.8-.8v-5.8c0-.4-.4-.8-.8-.8m-6.7 5.8l1.5-1.9 1 1.3 1.5-1.9 1.9 2.5H29zm-17.5-5.8v2.5h13.2v-2.5H11.5z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M11.5 933h25v-17.8h-25V933zm16.1-13.4h6.3v1.8h-6.3v-1.8zm0 3.6h6.3v1.8h-6.3v-1.8zm0 3.6h3.6v1.8h-3.6v-1.8zm-8.1-8.1v5.4h5.4c0 2.9-2.4 5.4-5.4 5.4s-5.4-2.4-5.4-5.4 2.5-5.4 5.4-5.4z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M33.7 864.4H11.5v19.4h25v-19.4h-2.8zm-19.4 2.8h5.6v2.8h-5.6v-2.8zm0 5.5h5.6v2.8h-5.6v-2.8zm0 5.6h5.6v2.8h-5.6v-2.8zm19.4 2.7H22.6v-2.8h11.1v2.8zm0-5.5H22.6v-2.8h11.1v2.8zm0-5.6H22.6v-2.8h11.1v2.8z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M24 811.6c-6.9 0-12.5 5.6-12.5 12.5 0 .9.1 1.7.3 2.6 1.1-.3 2.3-.5 3.4-.5 1.9 0 3.7.4 5.4 1.1 2.1-1.5 4.8-2.4 7.6-2.4 1.8 0 3.5.4 5 1 .1 0 .1.1.1.2s-.1.2-.2.2h-1.2c-4.4 0-8.3 1.6-10.7 4.9 0 .1-.1.2-.1.2l-.1.1h-.1c-2.3-2.1-5.3-3-8.6-3 1.7 4.9 6.3 8.3 11.8 8.3 6.9 0 12.5-5.6 12.5-12.5-.1-7.1-5.7-12.7-12.6-12.7zm9.8 7.5h-.2c-.1 0-.3 0-.4-.1-2.5-.2-4.9.5-6.5 2.3-.1.1-.1.1-.2 0-1.2-1.4-3-2-5-2.2-.7-.1-1.4 0-2.1.1-.1 0-.1-.1-.1-.1s0-.1.1-.1c1.3-.7 2.7-1 4.2-.8 1.1.1 2.1.4 3 .9 1.3-.8 2.9-1.1 4.5-1 .9.1 1.8.3 2.6.7 0 0 .1 0 .1.1v.2c.1-.1.1 0 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M36.5 765.3c.1-.5-.3-1-.8-1.1h-9.4v-2.3h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-2.3h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16.8zM21 778c-.5.2-1.2 0-1.7 0l-1.2-5.6-1.1 5.5c-.5 0-1.1-.1-1.6-.1l-1.5-7.5c.5 0 1 0 1.5-.1l.9 5.4 1.2-5.6c.5 0 1.1-.1 1.6-.1l1.2 5.7 1-5.9c.6 0 1.1-.1 1.7-.1l-2 8.4zm14.6 5.2h-9.4v-2.3h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.3h-7.4v-1.4h7.4v-1.1h-7.4v-1.5h7.4V767h-7.4v-2h9.4v18.2z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M36.5 715.6c.1-.7-.4-1.2-1.1-1.1h-9.1v-2.6h-1.6c-4.4.7-8.8 1.5-13.2 2.3v19.9l13 2.3h1.8v-2.8h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16zM19.8 725c-.6.3-1.4.3-2.1.3v3.3c-.6 0-1.1-.1-1.7-.1v-9.1c1.5.1 3.4-.6 4.7.5 1.3 1.5.9 4.3-.9 5.1zm15.8 7.6h-9.4v-2.3H33v-1.1h-6.8v-1.4H33v-1.1h-6.8V725c1.1.3 2.4.3 3.4-.3 1.1-.6 1.7-1.9 1.7-3.1h-3.7v-3.7l-1.4.3v-2.8h9.4v17.2zM32 721c-.1-2-1.8-3.6-3.7-3.7v3.7H32zm-14.3-.1v2.9c.6-.1 1.3 0 1.6-.6a2.12 2.12 0 0 0 0-1.9c-.3-.5-1-.4-1.6-.4z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M36.5 665.7v-.7c-.1-.5-.2-.7-.7-.8-.4-.1-.9-.1-1.3-.1h-8.1v-2.3l-2.4.1-7.3 1.3-4.8.8h-.2v19.9l7.8 1.3 5.1.9h1.8v-2.6H35c.3 0 .6 0 .9-.1.4-.1.6-.3.6-.6 0-.4.1-.8.1-1.2l-.1-15.9zM20 678.5c-.1 0-.1-.1-.2-.2l-1.3-3.3-.1-.1c-.1.1-.1.3-.2.4l-1.2 2.8c0 .1-.1.1-.1.1h-1.8c.1-.1.1-.2.1-.3l1.9-3.8c0-.1.1-.3 0-.4l-1.7-3.8c0-.1-.1-.2-.1-.3.6 0 1.2-.1 1.9-.1l1.2 3.3 1.3-3.2c.1-.2.1-.2.3-.2.5 0 1.1-.1 1.7-.1-.2.5-.5 1-.7 1.4l-1.4 2.9c-.1.2-.1.4 0 .6l2.1 4.2c0 .1.1.1.1.2-.6 0-1.2 0-1.8-.1zm15.6 4.4h-9.3v-1.7h2.2v-2h-2.2v-1.1h2.2v-2h-2.2V675h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.7h9.3v17.8zm-2-16.2h-4v2h4v-2zm0 6.3h-4v2h4v-2zm0 6.2h-4v2h4v-2zm0-9.4h-4v2h4v-2zm-3.9 8.3h4v-2h-4v2z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M36.5 617.3c.1-1.2-1-2-2-2.3-2.6-.9-5.5-1-8.2-.6v-2.5h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-3.1c2.7.4 5.6.3 8.2-.6 1-.3 2.1-1.1 2-2.3v-13.1zm-16.4 11.3l-.5-2.1c-.9 0-1.7 0-2.6-.1l-.5 2c-.6 0-1.1-.1-1.7-.1l2.5-9c.7 0 1.3-.1 2-.1l2.8 9.6-2-.2zm6.2-13.4c2.5-.3 5.2-.3 7.6.4.7.3 1.6.6 1.7 1.4-.1.7-.8 1-1.3 1.2-2.6.9-5.4 1-8 .5v-3.5zm0 9a28.11 28.11 0 0 0 5.8 0c1.2-.2 2.5-.5 3.5-1.3-.1 1.2.1 2.4-.1 3.7-.5.6-1.3.8-2 1-2.4.6-4.9.6-7.3.3l.1-3.7zm9.3 6.9c-.8.9-2.1 1-3.2 1.3-2 .3-4.1.3-6.1 0v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.5-.5 3.6-1.3l-.1 3.7zm0-9.1c-.5.6-1.3.8-2 1-2.4.6-4.8.6-7.3.3v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.6-.5 3.6-1.3l-.1 3.7zm-18.3 2.9h1.9l-1-4c-.2 1.4-.6 2.7-.9 4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M34.4 564v20.4l-7.3 2.2-13.4-4.8 13.4 1.6v-17.7l-8.7 2.1v12l-4.7 2v-15.2l13.4-5 7.3 2.4z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M24.4 514.5c-.1 1.6-.3 3.5-.7 5.2v.4c.8 2 2 3.8 3.6 5.2.4.3.9.7 1.3.9a.45.45 0 0 0 .5 0c1.5-.2 3-.3 4.5-.2.7.1 1.3.1 2 .4.5.2.8.6.8 1.2 0 .3 0 .7-.1.9-.2.8-.7 1.1-1.5 1.2-1.1.1-2.3-.2-3.3-.6l-3.1-1.3c-.2-.1-.5-.2-.7-.2-2.9.4-5.7 1.1-8.4 2-.1 0-.2.1-.2.2l-2.4 3.6c-.7.9-1.4 1.9-2.6 2.4-.5.2-1 .2-1.6 0-.2-.1-.3-.2-.5-.2-.6-.2-.7-.7-.6-1.3.2-.7.6-1.1 1.1-1.6 1.1-1.1 2.3-2 3.7-2.6.1 0 .1-.1.2-.1.7-.2 1.1-.7 1.4-1.3l2.2-4.1c.7-1.2 1.1-2.6 1.7-3.8.1-.2.1-.4.1-.6l-1-5.2c-.1-.8 0-1.6.2-2.5.2-.5.6-.7 1-.8.3-.1.7-.1 1-.1.5 0 .7.3 1 .7.5.8.4 1.5.4 2.2zM20 528.7c2.1-.8 4.3-1.3 6.5-1.7l-2-2c-.6-.7-1.1-1.5-1.6-2.2l-2.9 5.9zm3-11.1c.2-.2.2-.3.3-.4.3-1 .4-2 .2-3-.1-.3-.2-.7-.3-1.1-.1-.2-.2-.2-.4-.3-.1.2-.2.3-.2.4-.2 1.1-.1 2.3.1 3.4.1.2.2.6.3 1zm8.3 9.9v.2l2.8.9c.4.1.9.1 1.4 0 .3 0 .4-.2.2-.5-.2-.2-.5-.2-.7-.3-.7-.2-1.4-.2-2.2-.2-.6-.1-1-.1-1.5-.1zm-14.8 3.7c-1.3 1.1-2.6 2.3-3.4 3.8 1.5-.8 2.4-2.3 3.4-3.8z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M11.5 462.9v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M11.5 413v22.4h25V413h-25zm4.3 20.8H13v-2.7h2.8v2.7zm0-5.5H13v-2.8h2.8v2.8zm0-5.6H13v-2.8h2.8v2.8zm0-5.5H13v-2.8h2.8v2.8zm19.3 16.6h-2.8v-2.7h2.8v2.7zm0-5.5h-2.8v-2.8h2.8v2.8zm0-5.6h-2.8v-2.8h2.8v2.8zm0-5.5h-2.8v-2.8h2.8v2.8z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M34.2 361.9h-.6l-12.5 1.7c-1.2.2-2.1 1.2-2.1 2.6v11.5c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3 0 2.2 2.2 3.7 5 3 2.7-.6 5-3 5-5.3v-11L34 368v7.1c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3s2.2 3.7 5 3c2.7-.6 5-3 5-5.3v-13.7c.2-1.5-.9-2.5-2.2-2.5z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M14 314.1c-1.4 0-2.5 1.1-2.5 2.5v14.9c0 1.4 1.1 2.5 2.5 2.5h20c1.4 0 2.5-1.1 2.5-2.5v-14.8c0-1.4-1.1-2.5-2.5-2.5 0-.1-20-.1-20-.1zm0 2.6h20v14.9H14v-14.9zm15.6 2.4a1.97 1.97 0 0 0-1.9 1.9c0 1.1.9 1.9 1.9 1.9 1.1 0 1.9-.9 1.9-1.9a1.97 1.97 0 0 0-1.9-1.9zM19 321.7l-2.5 2.4v5h14.9v-2l-5-3-2.5 1.3-4.9-3.7z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M11.5 263v2.5h25V263h-25zm0 5v2.5h25V268h-25zm0 5v2.5h25V273h-25zm0 5v2.5h25V278h-25zm0 5v2.5h25V283h-25z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><path d="M17.1 222.4H15v-8l-2.5.8v-1.7l4.3-1.6h.2v10.5h.1zm10.4-4.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3s-1.5 1.1-2.6 1.1-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm-14.8 16.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm8.5 6.5h-2.1v-8l-2.5.8v-1.7l4.3-1.6h.3v10.5z" class="C"/><path d="M45.6 165v23.5c-.5 1.5-1.1 2-2.5 2H12.8c-1.6 0-2.5-.9-2.5-2.5v-35.5c0-1.6.9-2.5 2.5-2.5h15.4v12.4c0 .3 0 .5.1.8.2 1.1 1.1 1.7 2.3 1.7h14.5l.5.1zM8 157.6v33c0 1.1.3 1.9 1.3 2.3.4.2.9.2 1.3.2h27.1v2.7c-.1 1-.8 1.8-1.7 2-.2.1-.4.1-.8.1l-30.3.2c-1.2 0-2.1-.6-2.3-1.7-.2-.3-.2-.5-.2-.8V160c0-1.5.9-2.4 2.4-2.4H8zm22-7.5l15.6 13.4c-.2 0-.3.1-.4.1H32.4c-1.5 0-2.5-.9-2.5-2.4v-10.6c.1-.2.1-.4.1-.5zm8.5-6.9h-34C2 143.2 0 141 0 138.4v-28.9c0-2.7 2-4.8 4.5-4.8h13.6l4.5 4.8h15.8c2.5 0 4.5 2.1 4.5 4.8H4.5v24.1l4.9-19.2H48l-5.2 20.4c-.5 2.1-2.2 3.6-4.3 3.6zM19.2 54.8H4.8c-2.7 0-4.8 2.1-4.8 4.8v28.8c0 2.6 2.2 4.8 4.8 4.8h38.4c2.6 0 4.8-2.2 4.8-4.8v-24c0-2.7-2.2-4.8-4.8-4.8H24l-4.8-4.8z" fill="#1565c0"/><path fill="#478fcc" d="M32.1,0H8.6C7.2,0,5.8,1,5.8,2.3v43.1c0,1.4,1.4,2.6,2.8,2.6h31.3c1.3,0,2.3-1.2,2.3-2.6V9.6L32.1,0z"/><path d="M21.5 32.8h3.8v3.8h-3.8v-3.8M24 11.5c6.7.2 9.6 7 5.7 12.1-1 1.3-2.7 2.1-3.5 3.2-.8 1-.8 2.3-.8 3.5h-3.8c0-2.1 0-3.8.8-5.1s2.5-2 3.5-2.8c3-2.8 2.3-6.8-1.9-7.1a3.8 3.8 0 0 0-3.8 3.8h-3.7c0-4.3 3.5-7.6 7.5-7.6z" class="C"/><path d="M32.1,7.2c0,1.4,1,2.4,2.3,2.4h7.7L32.1,0V7.2z" class="B"/><defs ><path id="B" d="M32.1 1950H8.6c-1.4 0-2.8 1-2.8 2.3v43.1c0 1.4 1.4 2.6 2.8 2.6h31.3c1.3 0 2.3-1.2 2.3-2.6v-35.8l-10.1-9.6z"/><path id="C" d="M32.1 1957.2c0 1.4 1 2.4 2.3 2.4h7.7l-10-9.6v7.2z"/></defs></svg>                                                                                                                                                                           includes/File_manager/lib/themes/Material/images/loading.svg                                        0000644                 00000005234 15266052710 0020127 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/themes/Material/images/icons-small.svg                                    0000644                 00000045471 15266052710 0020742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="1966"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M8.4 1955.1l-1.7 5.8h.8l1.7-5.8h-.8zm-2.9.8l-1.7 2.1 1.7 2.1h.8l-1.7-2.1 1.7-2.1h-.8zm4.2 0l1.7 2.1-1.7 2.1h.8l1.7-2.1-1.7-2.1h-.8z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M6.9 1905v.8H5.2c-.1-.2-.4-.4-.7-.4-.4 0-.8.3-.8.8s.3.8.8.8c.3 0 .5-.1.7-.4h.9c-.5.5-.8 1.2-.8 1.9v.4h-.7v2.3h2.3v-2.3h-.8v-.4c0-.6.3-1.2.8-1.5v.4h2.3v-.4c.5.3.8.9.8 1.5v.4h-.9v2.3h2.3v-2.3h-.7v-.4c0-.7-.3-1.4-.8-1.9h.9c.1.2.4.4.7.4.4 0 .8-.3.8-.8s-.3-.8-.8-.8c-.3 0-.5.1-.7.4H9.1v-.8H6.9zm.7.7h.8v.8h-.8v-.8zm-2.3 3.8h.8v.8h-.8v-.8zm4.6 0h.8v.8h-.8v-.8z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M8 1853.7c-1 0-1.8.2-2.5.5-.3.1-.6.3-.8.5s-.3.4-.3.7v4.9c0 .3.1.5.3.7s.5.4.8.5c.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5s.3-.4.3-.7v-4.9c0-.3-.1-.5-.3-.7s-.5-.4-.8-.5c-.7-.3-1.5-.5-2.5-.5zm0 .4c.9 0 1.7.2 2.3.4.3.1.5.3.7.4.1.1.2.3.2.5s-.1.3-.2.5c-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5s.1-.3.2-.5c.2-.1.4-.3.7-.4.6-.2 1.4-.4 2.3-.4zm-3.2 2.1c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.8c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.8z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M8 1808.4h2.5v.8H8v-.8zm-1.6.6v.3h.3v-.3s.1 0 .2-.1c.3-.1.5-.6.2-.9 0 0-.1-.1-.2-.1s-.2-.1-.2-.1c-.1 0-.4-.1-.3-.3s.4-.1.5-.1h.2v-.1s.1-.1 0-.2-.1 0-.1 0h-.2v-.2h-.3v.2h-.1a.78.78 0 0 0-.4.4v.3l.2.2c.2.1.3.1.5.2.1 0 .2.1.1.2 0 .1-.2.1-.2.1h-.4c-.1 0-.1 0-.1-.1H6c0 .1 0 .1-.1.2 0 0-.1.1 0 .2h.2c.1.1.2.2.3.2zm4.9-4.7H4.5c-.4.1-.7.4-.7.8v5.3c0 .4 0 .8.2 1.1.3.3.6.3 1 .3h6.2c.3 0 .6-.1.7-.4.1-.2.1-.3.1-.5v-5.7c.2-.6-.2-.9-.7-.9zm0 6.6H4.7v-4.9c0-.1 0 0 0 0h6.6v4.9c0-.1 0 0 0 0z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M4.8 1758.8l-1 2.4 1.9-.1-.9-2.3zm5 0l-3.6 2.4 5.5.8-1.9-3.2zm2.3-3.4l-.5.7-1.7 2.5c0 .1-.1.1 0 .2l1.6 2.7c.1.1.2.3.3.4l.3-6.5zm-7.3 2.7c0 .1.1.1 0 0l1.6-.7c.2-.1.3-.3.4-.4l1.4-1.3.1-.1.5-1c-.2-.1-.4-.1-.6-.2h-.1l-1.4.8c-.2.1-.4.3-.6.5l-.9.9c-.1.1-.2.2-.2.3l-.6.9.4.3zm1.9-.4l-.8 3.3 3.6-2.4-2.8-.9zm2-1.8l1.1 2.6 2.1-3.1-3.2.5zm-2 1.6l2.8.9-1-2.5-1.8 1.6zm-.9 3l.7-2.8-1.5.8.8 2zm5.6-5.3l-.9-.3-1.3-.3h-.1l-.5.9v.1l2.8-.4zm-1.7-.7l2.4.7-.4-1.1-2 .4zm.7 7.5l-4.5-.6H4.1l6.3.6zm-6.5-1.6l.8-1.9v-.2l-.3-.4-.5 2.5c0 .1 0 .1 0 0zm5.3-6l1.4-.3h.1l-2 .2a.9.9 0 0 0 .5.1z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M8.7 1707.8c.6 0 1.1-.4 1.1-1v-1.9c0-.5-.4-.9-.9-1 0 0-.4-.1-.7-.1s-.6 0-.9.1c-.8.1-1 .4-1 1v.9h2v.4h-3c-.6 0-1.1.3-1.2.9-.2.7-.2 1.2 0 2 .1.6.5 1 1 1h.8v-1.1c0-.6.6-1.3 1.3-1.3l1.5.1zm-1.7-2.4c-.2 0-.3-.1-.3-.3s.2-.3.3-.3c.2 0 .3.1.3.3 0 .1-.1.3-.3.3zm5 1.4c-.1-.6-.5-1-1-1h-.8v1.1c0 .6-.6 1.3-1.3 1.3H7.3c-.6 0-1.1.4-1.1 1v1.9c0 .5.4.9.9 1a3.55 3.55 0 0 0 .7.1c.3 0 .6 0 .9-.1.8-.1 1-.4 1-1v-.9h-2v-.4h3c.6 0 1.1-.3 1.2-.9.3-.8.3-1.3.1-2.1zm-3 3.8c.2 0 .3.1.3.3s-.2.3-.3.3c-.2 0-.3-.1-.3-.3 0-.1.1-.3.3-.3z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M6.6 1659.5c0-.3-.1-.5-.4-.6-.1 0-.2-.1-.3-.2s-.2-.1-.4-.1c-.1 0-.2 0-.2.1-.1.1 0 .1 0 .2s.1.1.2.2l.3.3c.1.1.2.2.1.4 0 .3-.2.6-.4.8h-.1a.76.76 0 0 1-.4-.2c-.1-.1-.1-.3.1-.3 0 0 .1 0 .1-.1.1-.1.1-.2.1-.3s-.1-.1-.1-.1l-.6-.5c-.5-.4-.7-.9-.8-1.5-.1-.7.1-1.3.5-1.9.1-.2.3-.4.5-.5s.3-.1.5-.2c.5-.1 1-.2 1.4-.1s.8.3.9.7c.1.3.1.6.1.9-.1.6-.5 1.1-1 1.2-.3.1-.4 0-.5-.2-.1-.1-.2-.3-.3-.4v-.2c0 .3.1.5.2.7.1.1.2.2.3.2.5.1 1-.1 1.3-.6.4-.5.4-1 .3-1.6l-.1-.3c0-.1 0-.1.1-.1h.1c.4-.1.9-.1 1.3-.1.5.1 1 .2 1.4.5.7.4 1.1 1.1 1.3 1.8v.3c0 .1-.1.1-.1.1l-.2-.2c-.1-.1-.1-.1-.1-.2s-.1 0-.1 0v.1c-.1.4-.3.8-.6 1.1 0 .1-.1.1-.1.2v.5l.1 1c0 .2 0 .3-.2.4-.1.1-.3.1-.4.1h-.7c0-.3 0-.5-.2-.6.1-.2.1-.4.1-.5s0-.3-.1-.4-.2-.1-.3-.1c-.3.2-.7.2-1 .1-.2-.1-.3 0-.4.1-.1.2-.1.3-.1.5s.1.4.1.7c0 .1 0 .2-.1.2-.3.1-.6.1-.9.1 0-.3 0-.5-.3-.6.1-.2.1-.5.1-.8zm-1.7-.9s.1-.1.1-.2a.76.76 0 0 0-.2-.4h-.2c-.1.1-.2.3-.3.4 0 0 0 .1-.1.1-.1.1 0 .1.1.2h.2c.1 0 .3 0 .4-.1zm0-1.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2.1.2.2.2.2-.1.2-.2z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M11.1 1609.7v.3c0 .4.1.4.1.9 0 .2-.1.4-.2.7 0 .1 0 .2-.1.3l.6.1c0-.2 0-.3-.1-.6s0-.4 0-.7c0-.4.3-.4.1-.9-.1-.2 0-.2 0-.7-.1-.6 0-1.7.2-1.6.2 0 .2.4.2.6.1.4-.2.6-.2.7s.1.2.2.1.2-.2.3-.4c.1-.4.1-.6.1-1 0-.2 0-.3-.2-.5-.4-.4-.6-.7-.8-1.2l-.3-.3c-.3-.2-.3-.7-.6-1s-.6-.4-.9-.4-1 .3-1.3.5-.2.6-.9.9c-.3.1-.8.5-.9 1.2-.2.1-.3-.1-.3-.2.1-.3.3-.6.3-1-.1-.5-.3-.9-.6-1.1-.3-.1-.5-.1-.6.1-.5.4-1-.1-1.2.6 0 .4.7.1.7.5-.1.4-.3.2-.2 1.5 0 .3.3.5.5.8.3.3.8.7 1.3.5.3-.1.4.1.3.3-.1.4 0 .6 0 1 0 .2.1.3.1.9.1.4-.1.8-.3 1.1h.4c.1-.3.1-.4.1-.8.1-.3.2-.3.2-.7 0-.7.3-.7.3-1.1 0-.3.1-.4.3-.4.3 0 .3.1.2.4 0 .4-.1.4-.2.6 0 .2 0 .5.1.6a1.38 1.38 0 0 0 .4.3c.1.1.4.3.4.6-.1.5-.6.4-.5.6h.7c.1-.1.1-.2.2-.2s.1.1.2.2h.3c.1-.1.1-.3.1-.3-.1-.3-.4-.3-.3-.6s.2-.3.3-.5c.1-.3.3-.3.3-.4 0-.3 0-.6.1-.9 0-.3.1-.4.3-.6s.2-.3.3-.1c.1.4.4.9.5 1.3zm-2.7.1l.2-.2c.1-.1.1-.1.2-.3.1-.3.2-.2.3-.6 0 0 .1-.3.1-.2.1 0 .1 0 .1.3l.1.8v.2c0 .3-.2.5-.3.7s-.2.3-.5-.1c-.3-.2-.4-.4-.2-.6z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M4.6 1555.4c-.4 0-.8.3-.8.7v3.7c0 .4.3.7.8.7h6.8c.4 0 .8-.3.8-.7v-3.7c0-.4-.3-.7-.8-.7H4.6zm0 .5h6.8c.1 0 .2.1.2.2v3.7c0 .1-.1.2-.2.2H4.6c-.1 0-.2-.1-.2-.2v-3.8s0-.1.2-.1zm.5.8v2.6h.8v-1.7l.8 1 .8-1v1.7h.8v-2.6h-.9l-.8 1.1-.8-1.1c.1 0-.7 0-.7 0zm4.5 0v1.3h-.8l1.2 1.3 1.2-1.3h-.8v-1.3h-.8z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M6.5 1512.1c-1-.3-1.5-.9-1.5-2v-.8c0-.6-.3-.9-.8-.9v-.9c.5 0 .7-.3.8-.8v-.9c0-.5.1-.9.4-1.3.2-.3.6-.6 1.1-.7l.2.7c-.2.1-.4.2-.5.4s-.2.5-.2.8v.9c0 .6-.3 1.1-.8 1.3.5.3.8.7.8 1.4v.9c0 .7.2 1.1.7 1.2l-.2.7zm1.2.1l-.6-.3.2-.3a1.93 1.93 0 0 0 .3-1v-1h1v.8c0 .3-.1.6-.2 1-.2.3-.4.6-.7.8zm-.4-5.7c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.3-.2.5-.3.2-.5.2-.4-.1-.5-.2-.2-.3-.2-.5zm2 5c.4-.2.7-.6.7-1.2v-.9c0-.6.3-1.1.8-1.3-.5-.2-.8-.7-.8-1.4v-.9c0-.7-.2-1.1-.7-1.2l.2-.7c.5.1.9.4 1.1.7.3.3.4.7.4 1.3v.9c0 .6.3.8.8.8v.9c-.5 0-.8.3-.8.9v.9c0 1-.5 1.6-1.5 1.9l-.2-.7z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M11.7 1453.8H4.3c-.3 0-.5.3-.5.5v7.3c0 .3.3.5.5.5h7.3c.3 0 .5-.3.5-.5v-7.3c.1-.2-.2-.5-.4-.5zm-3.3 6.4c0 .8-.5 1.2-1.2 1.2a1.51 1.51 0 0 1-1.3-.8l.6-.4c.1.2.3.4.6.4s.4-.1.4-.5v-2.5h.8l.1 2.6zm1.8 1.2c-.7 0-1.1-.4-1.3-.8l.6-.4c.1.3.3.5.7.5.3 0 .5-.1.5-.4s-.1-.4-.5-.5l-.2-.1c-.6-.2-.9-.5-.9-1.2 0-.6.4-1 1.1-1 .5 0 .9.2 1.1.6l-.6.4a.55.55 0 0 0-.5-.3c-.2 0-.4.1-.4.3s.1.3.5.5l.2.1c.6.3 1 .6 1 1.2-.1.7-.6 1.1-1.3 1.1z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M8.5 1403.8c.4 1-1.6 1.7-1.8 2.6-.2.8 1.3 1.7 1.3 1.7-.2-.3-.4-.6-.6-1.2-.5-.8 2.2-1.5 1.1-3.1zm1.4 1.5s-1.8.1-2 1.3c0 .5.5.8.5 1.2 0 .3-.3.6-.3.6s.6-.1.8-.6-.4-.9-.3-1.3 1.3-1.2 1.3-1.2zm.5 2.7c-.2 0-.4 0-.6.2.4-.1.7.1.7.4 0 .6-.9 1.2-.9 1.2s1.4-.2 1.4-1.2a.65.65 0 0 0-.6-.6zm-3.4 0s-1.7 0-1.7.4 2.2.5 3.8.2l.5-.4c-1 .2-3.4.3-3.4 0 .1 0 .8-.2.8-.2zm-.4 1c-.3 0-.6.2-.6.4 0 .4 2 .7 3.4.1l-.5-.3c-1 .3-2.9.2-2.3-.2zm.2.8c-.4 0-.6.2-.6.4 0 .5 2.1.6 3 0l-.5-.3c-.6.3-2.2.3-1.9-.1zm-1.1.5c-.6 0-1 .3-1 .5 0 1.2 5.9 1.1 5.9-.1 0-.2-.2-.3-.3-.3.5 1.1-4.8 1-4.8.4 0-.1.4-.3.7-.2l-.3-.1c-.1-.2-.1-.2-.2-.2zm5.6.8c-.9.9-3.2 1.2-5.5.6 2.3.9 5.5.4 5.5-.6z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M11.7 1353.8H4.3l.8 7.5 2.9.9 2.9-.9.8-7.5zm-1.7 2.6H6.8l.1.9h3l-.2 2.7-1.7.5-1.7-.6-.1-1.1h.9v.4l1 .2.9-.2.1-1.1H6.2l-.2-2.6h4.1l-.1.9z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M4.3 1303.9l.8 7.5 2.9.8 2.9-.8.8-7.5c0-.1-7.4 0-7.4 0zm5.6 3.4l-.1 2.6-1.8.6-1.8-.6-.1-1.3H7v.6l.9.3 1-.3.1-1H7v-.9h2.1v-.9H6l-.1-.8H10l-.1 1.7z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M11.7 1256l-1.8 1c-.3-.4-.7-.7-1.1-.9-.4-.1-.9-.1-1.4.1-1 .4-1.4 1.3-1.3 2.2s.7 1.6 1.7 1.8 1.8-.3 2.2-1c.3.1.6.3.9.5s.6.3.9.5c-1.2 2-3.4 2.5-5 1.8-1.8-.7-2.8-2.4-2.7-4.1.1-2.1 1.7-3.5 3.2-3.8 2.1-.5 3.8.7 4.4 1.9z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><g class="C"><use xlink:href="#D"/><use xlink:href="#D" x="-6"/><path d="M9.1 1204.7l.4-.7v-.1h-.1l-.4.7c-.3-.1-.6-.2-1-.2s-.7.1-1 .2l-.4-.7h-.1s-.1.1 0 .1l.4.7c-.7.4-1.2 1.1-1.2 1.8h4.6c0-.7-.5-1.4-1.2-1.8zm-2.2 1c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm2.1 0c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm-3.3 1v3.3c0 .3.2.6.6.6h.4v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.7v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.4c.3 0 .6-.2.6-.6v-3.3H5.7z"/></g><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M4.5 1162.3v-1.6c.6 0 1.1-.3 1.5-.7.3-.3.6-.7.7-1.1.3-.5.4-1 .6-1.5a3.79 3.79 0 0 1 .6-1.3c.3-.6.7-1 1.3-1.4.3-.2.6-.4.9-.4.3-.1.6-.1.9-.1h.4v1.6h-.1c-.4 0-.8.1-1.1.3-.2.2-.4.3-.6.6-.2.2-.3.4-.4.7h1.4v1.7h-2c-.1 0-.1 0-.1.1-.2.6-.5 1.1-.9 1.6a4.59 4.59 0 0 1-2.8 1.7c-.1 0-.3 0-.4.1l.1-.3z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M5.2 1108.9v1.9H3.8v-5.5H6c.4 0 .8.1 1.1.2s.6.4.8.7a1.69 1.69 0 0 1 .3 1c0 .5-.2 1-.6 1.3s-.9.5-1.6.5c0-.1-.8-.1-.8-.1zm0-1H6c.3 0 .4-.1.6-.2.1-.1.2-.3.2-.6s-.1-.5-.2-.6c-.1-.2-.3-.2-.6-.2h-.8v1.6zm5.7 1.7c0-.1-.1-.2-.2-.3s-.3-.1-.6-.2l-.8-.3c-.2-.1-.4-.3-.5-.4s-.2-.3-.2-.5c0-.4.2-.7.5-.9.3-.3.7-.4 1.2-.4s1 .1 1.3.4.5.6.5 1h-1.3a.47.47 0 0 0-.5-.5c-.1 0-.3 0-.3.1-.1.1-.1.2-.1.3s.1.2.2.3.3.1.5.2l.6.2c.6.2.9.6.9 1.1 0 .4-.2.7-.5.9-.3.3-.8.4-1.3.4-.4 0-.7-.1-.9-.2-.3-.1-.5-.3-.6-.5-.2-.2-.2-.4-.2-.7h1.2c0 .2.1.3.2.4s.3.1.5.1.3 0 .4-.1c-.1-.2 0-.3 0-.4z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M8.2 1060.2H5.8l-.5 1.4H3.8l2.5-6.7h1.3l2.5 6.7H8.7l-.5-1.4zm-2.1-1.1h1.7l-.8-2.5-.9 2.5zm4.6-3.8c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.4-.2.5-.3.2-.5.2-.4-.1-.5-.2c-.2-.1-.2-.3-.2-.5zm1.4 6.3h-1.3v-5h1.3v5z" class="C"/><path fill="#fbc02d" d="M0 1000.1h16v3.6H0v-3.6m.9 4.4h14.2v11.6H.9v-11.6m4.9 2.7c-.2 0-.4.2-.4.4v1.3h5.3v-1.3c0-.2-.2-.4-.4-.4H5.8z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M3.8 956v.8h4.4v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm8.1-6.6H9.4c-.1 0-.3.1-.3.3v1.9c0 .2.1.3.3.3h2.5c.1 0 .3-.1.3-.3v-1.9c0-.2-.2-.3-.3-.3m-2.2 1.9l.5-.6.3.4.5-.6.6.8H9.7zm-5.9-1.9v.8h4.4v-.8H3.8z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M3.8 911.1h8.3v-5.9H3.8v5.9zm5.4-4.5h2.1v.6H9.2v-.6zm0 1.2h2.1v.6H9.2v-.6zm0 1.2h1.2v.6H9.2v-.6zm-2.7-2.7v1.8h1.8a1.79 1.79 0 0 1-1.8 1.8 1.79 1.79 0 1 1 0-3.6z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M11.2 854.9H3.8v6.5h8.3v-6.5h-.9zm-6.4.9h1.9v.9H4.8v-.9zm0 1.8h1.9v.9H4.8c0 .1 0-.9 0-.9zm0 1.9h1.9v.9H4.8v-.9zm6.4.9H7.5v-.9h3.7v.9zm0-1.8H7.5v-.9h3.7v.9zm0-1.9H7.5v-.9h3.7v.9z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M8 803.9a4.23 4.23 0 0 0-4.2 4.2c0 .3 0 .6.1.9.4-.1.8-.2 1.1-.2.6 0 1.2.1 1.8.4.7-.5 1.6-.8 2.5-.8.6 0 1.2.1 1.7.3v.1c0 .1 0 .1-.1.1h-.4c-1.5 0-2.8.5-3.6 1.6v.1c-.8-.7-1.8-1-2.9-1 .6 1.6 2.1 2.8 3.9 2.8a4.23 4.23 0 0 0 4.2-4.2c.1-2.4-1.8-4.3-4.1-4.3zm3.3 2.5h-.2c-.8-.1-1.6.2-2.2.8h-.1c-.4-.5-1-.7-1.7-.7h-.7c.4-.2.9-.3 1.4-.3a1.69 1.69 0 0 1 1 .3c.4-.3 1-.4 1.5-.3.4-.1.7 0 1 .2-.1-.1 0-.1 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M12.2 755.2c0-.2-.1-.3-.3-.4H8.8v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-.8h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.5h.1zM7 759.4c-.2.1-.4 0-.6 0l-.4-1.9-.4 1.8h-.5l-.5-2.5h.5l.3 1.8.4-1.9h.5l.4 1.9.3-2h.6l-.6 2.8zm4.9 1.7H8.7v-.8h2.5v-.3H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.3h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.7h3.1v6.1z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M12.2 705.3c0-.2-.1-.4-.4-.4h-3v-.9h-.6l-4.4.8v6.6l4.3.8h.6v-.9h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.3h.1zm-5.6 3.1c-.2.1-.5.1-.7.1v1.1h-.6v-3c.5 0 1.1-.2 1.6.2.4.4.3 1.3-.3 1.6zm5.3 2.5H8.7v-.8H11v-.4H8.7v-.5H11v-.2H8.7v-.6c.4.1.8.1 1.1-.1a1.1 1.1 0 0 0 .6-1H9.2V706l-.5.1v-.9h3.1v5.7h.1zm-1.2-3.8c0-.7-.6-1.2-1.2-1.2v1.2h1.2zm-4.8-.1v1c.2 0 .4 0 .5-.2s.1-.4 0-.6-.3-.2-.5-.2z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M12.2 655.3v-.2c0-.2-.1-.2-.2-.3H8.8v-.8H8l-2.4.4-1.6.3h-.1v6.6l2.6.4 1.7.3h.6v-.9H12c.1 0 .2-.1.2-.2v-5.6zm-5.5 4.3c-.1 0-.1-.1 0 0l-.5-1.2s0 .1-.1.1l-.4.9H5v-.1l.6-1.3v-.1l-.6-1.3v-.1h.6l.4 1.1.4-1.1c0-.1 0-.1.1-.1h.6c-.1.2-.2.3-.2.5l-.5 1v.2l.7 1.4v.1h-.4zm5.2 1.4H8.8v-.6h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.6h3.1v6.3zm-.7-5.4H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0-3.1H9.9v.7h1.3v-.7zm-1.3 2.7h1.3v-.7H9.9v.7z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M12.2 605.8c0-.4-.3-.7-.7-.8-.9-.3-1.8-.3-2.7-.2v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-1c.9.1 1.9.1 2.7-.2.3-.1.7-.4.7-.8l.1-4.4zm-5.5 3.8l-.2-.7h-.9l-.2.7h-.6l.8-3h.7l.9 3.2-.5-.2zm2.1-4.5c.8-.1 1.7-.1 2.5.1.2.1.5.2.6.5 0 .2-.3.3-.4.4-.9.3-1.8.3-2.7.2v-1.2zm0 3c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2zm3.1 2.3c-.3.3-.7.3-1.1.4-.7.1-1.4.1-2 0v-1.2c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2zm0-3c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2c.6.1 1.3.1 1.9 0 .4-.1.9-.2 1.2-.4v1.2zm-6.1 1h.6l-.3-1.4-.3 1.4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M11.5 554.7v6.8l-2.5.8-4.5-1.6 4.5.5v-5.9l-2.9.7v4l-1.6.7v-5.1l4.5-1.7 2.5.8z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M8.1 504.9c0 .5-.1 1.2-.2 1.7v.1c.3.7.7 1.3 1.2 1.7.1.1.3.2.4.3h.2c.5-.1 1-.1 1.5-.1.2 0 .4 0 .7.1.2.1.3.2.3.4v.3c-.1.3-.2.4-.5.4-.4 0-.8-.1-1.1-.2l-1-.4c-.1 0-.2-.1-.2-.1-1 .1-1.9.4-2.8.7 0 0-.1 0-.1.1l-.8 1.2a2.36 2.36 0 0 1-.9.8.45.45 0 0 1-.5 0c-.1 0-.1-.1-.2-.1-.2-.1-.2-.2-.2-.4.1-.2.2-.4.4-.5.4-.4.8-.7 1.2-.9h.1c.2-.1.4-.2.5-.4l.7-1.4.6-1.3v-.2l-.3-1.7c0-.3 0-.5.1-.8.1-.2.2-.2.3-.3h.3c.2 0 .2.1.3.2.1.3 0 .6 0 .8zm-1.4 4.7c.7-.3 1.4-.4 2.2-.6l-.7-.7a3.04 3.04 0 0 1-.5-.7l-1 2zm1-3.7l.1-.1c.1-.3.1-.7.1-1 0-.1-.1-.2-.1-.4 0-.1-.1-.1-.1-.1 0 .1-.1.1-.1.1-.1.4 0 .8 0 1.1 0 .2 0 .3.1.4zm2.7 3.3l.9.4h.5c.1 0 .1-.1.1-.2-.1-.1-.2-.1-.2-.1-.2-.1-.5-.1-.7-.1h-.6zm-4.9 1.3c-.4.4-.9.8-1.1 1.3.5-.3.8-.8 1.1-1.3z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M3.8 454.4v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h6.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M3.8 404.4v7.5h8.3v-7.5H3.8zm1.5 6.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm0-1.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm6.4 5.5h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9zm0-1.9h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M11.4 354h-.2l-4.2.6c-.4.1-.7.4-.7.9v3.8c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8 0 .7.7 1.2 1.7 1 .9-.2 1.7-1 1.7-1.8v-3.7l4.2-.6v2.4c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8s.7 1.2 1.7 1c.9-.2 1.7-1 1.7-1.8v-4.6c.1-.4-.3-.8-.7-.8z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M4.7 304.8c-.5 0-.8.4-.8.8v5c0 .5.4.8.8.8h6.7c.5 0 .8-.4.8-.8v-4.9c0-.5-.4-.8-.8-.8-.1-.1-6.7-.1-6.7-.1zm0 .8h6.7v5H4.7v-5zm5.2.8a.65.65 0 0 0-.6.6c0 .4.3.6.6.6.4 0 .6-.3.6-.6a.65.65 0 0 0-.6-.6zm-3.6.9l-.8.8v1.7h5v-.7l-1.7-1-.8.4-1.7-1.2z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M3.8 254.5v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><g class="C"><path d="M5.7 207.7H5V205l-.8.3v-.6l1.4-.5h.1v3.5z"/><use xlink:href="#E"/><path d="M12 206.2c0 .5-.1.9-.3 1.1s-.5.4-.9.4-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/><use xlink:href="#E" x="-2.8" y="4.8"/><use xlink:href="#E" y="4.8"/><path d="M11.3 212.4h-.7v-2.7l-.8.3v-.6l1.4-.5h.1v3.5z"/></g><path d="M15.2 155v7.8c-.2.5-.4.7-.8.7H4.3c-.5 0-.8-.3-.8-.8v-11.8c0-.5.3-.8.8-.8h5.1v4.4c.1.4.4.6.8.6H15l.2-.1zm-12.5-2.4v11c0 .4.1.6.4.8.1.1.3.1.4.1h9v.9c0 .3-.3.6-.6.7h-.3l-10.1.1c-.4 0-.7-.2-.8-.6-.1-.1-.1-.2-.1-.3v-11.9c0-.5.3-.8.8-.8h1.3zm7.3-2.5l5.2 4.5h-4.4c-.5 0-.8-.3-.8-.8v-3.7zm2.8-35.7H1.5c-.8 0-1.5-.7-1.5-1.6v-9.6c0-.9.7-1.6 1.5-1.6H6l1.5 1.6h5.3c.8 0 1.5.7 1.5 1.6H1.5v8l1.6-6.4H16l-1.7 6.8c-.2.7-.8 1.2-1.5 1.2zM6.4 51.6H1.6A1.58 1.58 0 0 0 0 53.2v9.6a1.58 1.58 0 0 0 1.6 1.6h12.8a1.58 1.58 0 0 0 1.6-1.6v-8a1.58 1.58 0 0 0-1.6-1.6H8l-1.6-1.6z" fill="#1565c0"/><path fill="#478fcc" d="M10.7 0H2.9c-.5 0-1 .3-1 .8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-12L10.7 0z"/><path d="M7.2 10.9h1.3v1.3H7.2v-1.3M8 3.8c2.2.1 3.2 2.3 1.9 4-.3.5-.9.8-1.2 1.1s-.3.8-.3 1.2H7.2c0-.7 0-1.3.3-1.7.2-.4.8-.7 1.1-.9 1-.9.8-2.3-.6-2.4-.7 0-1.3.6-1.3 1.3H5.5c0-1.5 1.2-2.6 2.5-2.6z" class="C"/><path d="M10.7 2.4c0 .5.3.8.8.8H14L10.7 0v2.4z" class="B"/><defs ><path id="B" d="M10.7 1950H2.9c-.5 0-.9.3-.9.8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-11.9l-3.4-3.3z"/><path id="C" d="M10.7 1952.4c0 .5.3.8.8.8H14l-3.3-3.2v2.4z"/><path id="D" d="M11.5 1207.2a.47.47 0 0 0-.5-.5.47.47 0 0 0-.5.5v2.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-2.1z"/><path id="E" d="M9.2 206.2c0 .5-.1.9-.3 1.1-.2.3-.5.4-.9.4s-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/></defs></svg>                                                                                                                                                                                                       includes/File_manager/lib/themes/Material/css/theme.css                                             0000644                 00000134335 15266052710 0017135 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder-Material-Theme (Default) v2.1.10 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 RÃ³bert KelÄ�Ã¡k {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  -webkit-background-size: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #d8d8d8;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder .elfinder-button-text {
  top: -3px;
  margin-left: 6px;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(22, 43, 76, 0.75);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #2a384d;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #000;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #000000;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #17202c;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #1b2533;
  color: #e8e8e8 !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #e8e8e8 !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #0e1827;
}
.elfinder-cwd-file {
  color: #020202;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #1a283c;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #d8d8d8;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #010e21;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #000308;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #010812;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #022861;
  background-color: rgba(3, 62, 150, 0.38);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #0f1f2f;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/themes/windows-10/images/README.md                                        0000644                 00000000235 15266052710 0017416 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       # Images
Store all images for your elFinder skin in this directory.

It is best to group similar images into one file and use the files as CSS spritesheets.
                                                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/themes/windows-10/images/16px/root.png                                    0000644                 00000001247 15266052710 0020432 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   bKGD      ùC»   	pHYs  .#  .#x¥?v  GIDAT8O�‘ßKSa‡¿•D÷^GÑu	IW»ÍH½hI&õÄÞI$T®¥k‡ma$XXÓýJ‰¥]„•xã–l¹SÏyßs¶I]ˆ°˜á9ûôµ�6]åï9pžç}ÏûR)ë#SºN[†÷)3øå÷¬{6„ç¸©{©êÀÊ#â¯#@%~ ×d{K¦ôÚK†ïŸç_dÀPLSzì%]Ùm \öºÇ4E·Ý’÷wØ!òžijn»%zþ¨*â®iª®s–pÓ·éæj�~â“vV—]€vÇÚXêl±´n*ä¦Hè¹m�|€,ÙíDÖ·Mîbù66–»°¾pk¬0{ù ¡¥~Ê!^™x{N>m–{XvƒÿE­«ÚKäEY‘ù.¥èz¾‘¥ÚÌçyú²¨RgçM¢ÂÒ‚ávð=£(°*âÈËYH©�…2r›¬K#ÿ‘ç¾%Už*þ°ˆ†��>|ò)õº. ç¾B+[BªÐ1¿°ˆäl
ï§¦‡BáÈ^
ƒÇ.µ¶Ê³�Mèè¸�p$†T:SUzûn
ñWˆ½C(a¯†âñø‡Ã±l³ÙPWwõ'ëÑt¾¾@’*%Ž[áHT0ÁàðÈ¾ƒ=”N§„B!»¢(ÏÚÛÛÕ–‹-–í‚m×Ú‹�"�•X�›s…W>:ŠÖ<SC7’É$ùý~°offæ0ÇZ96äU”4Ã,\Ý’ø�ø¹Z[[£D"AªªÒää$�ÍXÍÜÜ\íøÄëý¼ƒ�RÙø	ÜÄ|/´¶ôZ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/themes/windows-10/images/16px/invert_selection.png                        0000644                 00000001345 15266052711 0023023 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  —IDATxÚmSMOQ}?Š�þÝèB7¬dÚig¦}3íBVÆX%�!Ñ–™é|tÚJ+Á`ŒÑ˜©UÄNiA&L*½Þ;ý /¹éË¤çÜ{Î¹�©ªÊ.*>øÕx‚¥¸r®èüg�e™E"‘s%K“•$â	”Oâ·ÓT~J@àééé1Û¶EÃ0DC×E«`Š™™G—&ž}ð¦Ê�Ÿv›¾æ`y�sa[''		A`Žã¨ðß±ª[«·+ûÍ­ß •6€·°ö áv‚ÉÊI*}×ÄÎ:>>†££#€“.ä‹¯SnàWh|È(4âfÓ'9©áD`|xx½îÈ¹ÕEÕ	|¯Õ¿h è? DãJ°L9œ;/`–j+š×Þ© » 6J‰Y{ßG8W™$ÅÙƒÙ¹qw}{Ù(o,ë¥õe«²±tçavâÚÓÏkŠ·ß­Î¡€åì7®Î,…I„0W	£
Ý~Ùª§‹A]s[õ”×ª_òiíîÂó	³¶�ÍW6³¹òfV¯¾[º73?.cSÎ9cZRfŽ3Unï†n£a¤¹ú@qÛ;ÅÚ›•~&CYtœ‚!‘ìph³È�4fLQ�u[4_/¿^$à0�^¯ù|^ŒF£a }‚êAÊyä61ß(õ	†ét»]Èår"%×'@	ä¨æuZêLQ‘Û«Ó´koWÃpNNB0]×Õ�†�£7¿7”ÒA#f·Q«ÝÑí+èöýÙ¹ËEÇ–qOdÊÓ”3™Ì­H@FÐÃ�œÝ’46)©aÑ]Jà;A·©i¦¢»¢(£G8z–”iå¤¸ÌÒƒ"ø™§}Qý@$r ³–³Ö    IEND®B`‚                                                                                                                                                                                                                                                                                           includes/File_manager/lib/themes/windows-10/images/16px/copy.png                                    0000644                 00000000620 15266052711 0020414 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  WIDAT8��’»NA†?˜µÂKHe��…Z‹ÄwÀN}	/ñB¤!&b�†'ÐÂõ141qÙ°³Çbv—ë'9Ídæ;ÿù2	€ÇVK|ßgº•R?®ën‹ï,ªF³)ZkÑZ‹§µxž–v»-¶mKµVû.•+›qo“ ¾ï µF{Ok 2™[¹Üº²T/`… ºŸÀn6a’5fŠ²Ö—ØË&0a?`.(Å]©»þ tmó�ß¯N$3�NñP¯K¬ØûjU<Ï“ÁÀ'èUÅN8xµ£ bEV‰}ë÷{@jÂÁÎ†D©ž>ôøÙœ]æ‹ æÒše!Á¬z]X,6JP®T&~a:�à¤3JÖíáhÅØš'Öqòçd8ÊÙù…D	æU(öôeüÔx¸K°€Àe~l	%WÌŠ�°,Á´ØéøH<$�[·    IEND®B`‚                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/up.png                                      0000644                 00000000566 15266052711 0020077 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  =IDAT8�Å“¿NÂPÆÇ�.¬-øŸÁ4		�Ð’¸998°ëât/ÏAR^ÁõÔÖÅ\˜LŽƒ´´…2èà7Ý?çû�“ïæ
RU§¼‘ôP�1/­µ-€^¯÷\ŠÈ{SÃŠYUWëõZ£(Ò(ŠÔZ«ªºRU÷èyçÍf3Œã˜4ý™ÚqÂ0¤Ûí>o'yÛ4™s• /[È+ÀI“Ùqvº®Kš¦ÄqŒµöXªêi êæétZ Â0¤ßï“eóùkíp_°X,*fcL0ÆƒÁ€,ËH’¤¸kå‹Ñh„ˆàyÆ˜'`XÎÀóÁE’$ø¾¿¸i·Û:™LòóPs¯ÓéÜ�Çã|[ Dä¸*W«jÅ-"ÀuºËà·úÀÁÏ µD¤±öOúqJ•h×àˆì    IEND®B`‚                                                                                                                                          includes/File_manager/lib/themes/windows-10/images/16px/select_all.png                              0000644                 00000001220 15266052711 0021546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  BIDATxÚ…S]kQ½?R”Š ê›Ð&iwïîÝ¯h©BP+ŠŠÒ&i¾cZ_ÄR_/lDÝÕÄ—–¼�s6nvÄ‡aÙÃœ33gæ
×óÂw•›¿¶þÈÍxK²ç
ËV¢l:¢b*Q‘*ýZÊÒv_þ#�ƒ\pR�ÜÚ=®íc}»éj;ÒÛÝH_{<Ñ×ŸLôÝ^¤Æ¼V¤ý^¬oÞ?®�ãq'Âw,Q2l±3˜Åo§D½¯DãïDæhAÁÑ‚ÞýÌñÑœÈéÌbp|9�¹b(�ÊHj| ÚŸµ>mör^%4úBTg|�ñƒˆH6"]fŽŸvÀ˜-¢È/CúHTf{˜Ð0^’�×XØdø@ Hlq‡gFÛ¨r�«nõrG	½ù–ã.b5!`ç’�aöøœŒAB›L4¹ò…§sºôlN6�QánJ]Žá9­=œhpV¦¥Ü®�¥3+&{\äËÏçT'd1&Y\¾>£+»,`Ò-ðªà6ÃÌh[2	ä“9~Ècº-˜X†øíå2·13ZFåâ¼ão±F	¶°WØÂz‡½ä[xÁø>Ö[g#øsH~wãH°g¬
n¯÷$ù˜Ðv†·f,Ð\R�ÎòÆƒ÷uÕ?ÍÖ44šÓÐjOÃ‹�>…kNwn1V9àhŸ†Wï�ÔÓ÷€²Ç$•+6¤/JÒ[…©|apl˜9†ä®Sñ9WyœÀÍ£ú�
Ïù7}È{ÖîzoÎ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/extract.png                                 0000644                 00000000740 15266052712 0021120 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  §IDAT8�u’?HaÆ­‘ÆÅ&t
5’E(jíÒµ�œìv˜-‹B¦fq—Ž2[êàÖ@‡‚J‡Ú¡8W¡‡ ¢ µ5-‰˜|�ÃýÉÝ—xÜñ}Üw¿çžç}ß;×ÿ½IÿÁñé[»/(•J4o“ÏM€´ûàÙ—9€T( ‰É‡‹>‰‰‹“}Êå2½^ÇqøÝ¼`vz†óãÏOBî.‘	8\=Ï£Z­ây^ì<¢þ»Œ _ V«dâ¼å ËDáãŸ+Xm#`d’A�ŠÙÐ°ƒJ¥B¿ß�E¼5‚å ¨×ëVo�‡…©,®ëÒjµØ\{Ea*‹Œ‡væ3Ãb02òYn�N§©¿ûN!ŸáßÙc©4ˆO–p¸w–Ö)‹¼yýdè__’É=xnÕ`Fâãû
®ëR]Ý„$ÆR÷‚Èö Y0œå·	Q±5ªö(3ÂAðqØ‡T‚·GY†¥•´ÛmšÍ&¹GáŸ"$þ}�öa«¿ýºO·Û¥ÓéPßAˆ³ƒµn *9Ç;ˆW    IEND®B`‚                                includes/File_manager/lib/themes/windows-10/images/16px/download.png                                0000644                 00000000572 15266052712 0021260 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  AIDAT8�•’½NÂP†ßæ´P°˜S0n�\;{LÀ¦×àèMø—vêÖ¡“!²v¤‹b¤…5HÒãÐ ¶=€|ÛùÎ÷<yÏ� N�_?1QQ3½%�ð|s!ägEž€ì©(62½$ðFù‚„,ßãâ›¬Øû¿ œ»+ùD›ðŽÀçw¸Ä5	„æ•mJJ½]úóî’RG9÷4Âb6ùYF#,cj	  ]ÚæþñY»rp´&h¶æáß³^o[ QÏqK§†F$Y+µ­ðØ÷¬·»V ÈjcÚs\ñÄÐHYÖ¥*_2†}Ïz¿OáŒ  f/ŽKš†FJ².å’Ðpˆ`àY¿pA  ´ï¸ÂJR­� A
�Y˜+ €¸ï¸¬‘J¾bŠ‘ïYc¼µÔ®mª]ÛÜ4ó)J„çï£vÆ    IEND®B`‚                                                                                                                                      includes/File_manager/lib/themes/windows-10/images/16px/arrow_right.png                             0000644                 00000000335 15266052713 0021776 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         Ä¾‹   	pHYs  .#  .#x¥?v   �IDATxÚu�M
!…3-Sèºsq£‹^Å•'(ºÿEÐ[×u`h»	$ïË{	„ ¥Æ˜µÖ
¥pÎ-1F@¼÷�s­õƒsþÃö8Gh/£Yp[ñ$„Ã´Nh·Am{ï ¥$”Ò0ÄûÐ®ÿ€x ?"Ê)b©”ÚcúëÈa­½´Öà#o¾%A]®ÙO    IEND®B`‚                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/themes/windows-10/images/16px/chmod.png                                   0000644                 00000001211 15266052713 0020533 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         (-S   gAMA  ±�üa    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   áPLTE   §®³§®³§®³§®³§®³ÞàãÝßâÞáäàâåÉÌÐÏÔÙÂÇÌÛáæÎÓØ§®³w¢¼h�©ÏÐÑ´¹¼ÛÝáÙÜß×ÚÝÕØÜÝßâßáäÔÖÚÒÔØÐÒ×ÎÑÕÌÏÓÊÍÒ©¬°§ª®¥©¬£§«¢¦©¡¥¨ £§Ÿ¢¦ž¢¥�¡¥�¡¤� ¤¼ÁÅ[[[TTTNNNHHHBBB===999555222'c'---,,,œ ¤4e4\ÿ\"b"*c*»ÀÃ¹¾Â¸¼À¶»¾µ¹½´¸¼²·»±¶º±µ¹°µ¸°´¸¯³·ÿÿÿl¹   tRNS ¿pŸ€ ï¿p`ïïïïI    bKGDJµÆ   tIMEä¿:‹u   ŠIDATÓc`€F&~~&F`âgfægBàga``áG`e@@ p! llì"¢bâH „œ’`)iY9y. nE%eU5uM-m €Ž®ž¾�¡‘±‰©™¹…%²€•µª€©-D¯�½ƒ£“³‹«›»‡'  _æø<`   %tEXtdate:create 2020-03-17T14:13:02+00:005-g   %tEXtdate:modify 2020-03-17T14:13:02+00:00DX•Û    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                       includes/File_manager/lib/themes/windows-10/images/16px/duplicate.png                               0000644                 00000000400 15266052713 0021412 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ÇIDAT8�µ‘Aƒ E§�I½‚šÊª^�ÐËÔKØãô Ã%XØG°,\h»‚ Ô¤é_1à¿™ ð£±"®”_VÕ#ÏO×ú\¿“Éˆ¸†2ž”£ÄÈ—¦�ç0Øºm[zúY)eks?£ÈB�ìzŒ1˜¹çÜk
! ,
Xæc^0@‰"OÓdÏÇÔcÎùf*  ­õ¾€P†üGë}]!$ßûÞól€»WŠ|ë:ïÿm€»×ò&ÀÝ+E&'ˆQþª’C~þ3    IEND®B`‚                                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/paste.png                                   0000644                 00000000542 15266052714 0020564 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  )IDAT8�•“=JCA…¿gt	ºµsje%Y€¥ó^«�u;AA0­+°p'Ö‰
Þs®E~LÌóóÃ�s¿¹3SÑÒúý~”…¥f0Ôm±Àíùam»„ÌîÑy[ Ãë3ÂBrsõðRlØ.ã§—O”Rþ4hnž)'Èø1™Ï÷ñ$¨iþ4 Èø"ØšÏ§Bi^ß¢só”¥—$c'{;›ÝÙ3f"i•À^— ‘þI�™s=fíù‚l#ð
Ábæ™îÛŽÎu*2M¬Ô –kÐ–y¦;'^©��·PM5©A¸å*'»Û½Îì3)~(DæÇûØ‰3'½“L/Œ“Ñg ßa7rU¤’'O[9K„�BÈÆÎù‡ùñšH9zî™F    IEND®B`‚                                                                                                                                                              includes/File_manager/lib/themes/windows-10/images/16px/resize.png                                  0000644                 00000000712 15266052714 0020750 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ‘IDAT8�Í’±KqÇ?¹^jbm¼D4–4mD½\œââjgOÚÁb2…’Á¬Íâ’!™~[ÉØÅÁÿ@Ç"‚pŠb.6ˆ´½»×¡¤„–ÓN¥ßéñÞû~ø>xð_+_T¯ïÛÑ‚s›Êü
oÏmªÖ 7¾®Ì¿Ì?¶F’Ùƒ±™säÉŒ•}§Š ‰É©�{Ï7T•G	ë¦ß?ìÚ'½ÞÕÅ¡ëÓOL¦ÞªÌ�€¯+×—gëG–_uÏíöÍ—ë¥ÓÝÕÀÃH”§/f·ƒÎ ñFUƒf;Ÿe±~,Ï6”˜ Û\øzt#•-~W½^·�†à	x>„GckwÊå²Ñl6«�NÇÉår­H$’$ðôÇ™ùÊž K¥’™Ïç·âñ¸‹ÅDÏó~�à6¦·€¶P«Õ¬t:½–L&ºþ“90‹®ë2œ@$j˜/ß*è•J¥•J¥2¾ïcÛöþ°yP;ŽspÛwöÅý†-4í�Ïü÷úzàœ04‡z    IEND®B`‚                                                      includes/File_manager/lib/themes/windows-10/images/16px/redo.png                                    0000644                 00000001240 15266052715 0020376 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  RIDATxÚchhh`@ÆõPº¹¾†¡­®‚¡µ¾Š¡±¡,“ñaê147Õ×2´Ö–3ÔÖÕ3•7tˆWÔ·ð7ÕVª„Ë7ÕUÃCÑÜ\_ÍP[[ÇÑµ¹Ínú½g&³ßü7™ñâ¯sßé]Y“lºj‹JëÚÄB›–æ5]7 ¤¹h2P3§Çäó'þþo=ãÑg¯	'ö9NºtIgö—ÿº3Þþ�j\˜fÙ{áŒSÏ‰=­5eHÔ×3´ "z¶õ/þý? oÿ¢šÚ:^�XSM9Czã4gÓ)÷ŸkÍøð_mæ—ÿžÝû–´  ²½º®‘Óqö£¯Ž3î½¨­©ah©«Ëµ ±®¦ŠÑºÿÒEÝYþkÌüüß½ûÀ
4×U1”6u«XÍÿð?hÂÁ•-5¥@oÕƒ®ªmtì9±ß`Æ«ÿÆSýÐšúê‡gçž…-À€† 
Õ²†)›yoÿûN:¹d@Ð[ \]ßÌ]ÜØ«ZÞÐ.	Â@u’•õ-`yx,Ô×14ÔV3xL»rÝrÞûyýúmµeÐ¨ª§	dŠJ”hqZj+2Zfû˜-øúßfÆÃEõ�jmuå(	Fp 1Ó¾ªÔhÁ�ÿVÓ¾(¬#ljz¥µ¦„!ª}u™Áüÿ-¦=|Q@ÀŒ¤ÜØ 1$¢mu™Þ¼ïÿÍ¦>|‘Wß«ÛL¥Hy «è†„Ñœ÷û¿Uÿåkõ5Õ,� À&d ²! ¸o]Y˜Õ<ÝÕ°¨#h Â�z†®šBH4b Bà·aÎjûÖ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/preview.png                                 0000644                 00000000372 15266052715 0021133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ÁIDAT8�­�!ÂPD_Io�iËzÔZL�QS[Óc { 58B0ƒ]DúC üó&3³³?"¨ëÚR�UUeÏ€Ãñdóbm¾^Î¬WË PµøÊ¤ÍLÓø€P;60ã–¶I+„RPT5!`ÒŽ+(i+³üŠÞâèkƒ}¿‹6GADzéüß‰HÿI;{c.€hœj€ÒùïÀÚ¶ üœ�
ØÓhœÿ?î@}[w‘5Ý6    IEND®B`‚                                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/windows-10/images/16px/undo.png                                    0000644                 00000001235 15266052715 0020416 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  OIDATxÚchhh` áÆ†z0]Å ~k}C[]Cs}\®Ã%šêªšêkÁìÖúJ†¦ÚJ†Šúþò†ñÚºz¦ÖÚr¸<†M@B›–æ•Öµ‰uÕ1d5L²qî;½ËdÆ‹¿&³ßü·›~ïYD×æ¶ÚÚ:öæújCÀDkMƒSÏ‰=–½ÎD5.LÓ�ñö¿Îì/ÿ']ºä5áÄ>ë�>.üýßcòù@C8‘\&Z€xvï[¢6óË­þ›N¹ÿ<½qšsSM9X®¦¶Ž7 oÿ"ãÅ¿ÿGôlë‰Õ××£ºÀ½ûÀ
�™ŸÿëÎúðßºÿÒÅºš*Æ` ‚-¨«d¨­©apœqï…ãìG_«ëÁ®@¸ @ž�{jM}õÃxÊ£3^ýwì9±¿ª¶AâÜz KJ‚&\i5ÿÃÿÒ¦n•æº*„@çTÖ·”5tH–7´ƒqqc¯ju}37H„AøN:¹ßfÞÛÿ@uR XC�F M øFÆ@›Armµeyýú–óÞÿó˜våzC-Ps}’°`X‚j«+g(¬ïT³™ñð…Ù‚¯ÿ3Zfû´ÔV Æ^Íu�jVÓ¾0ZðãLûªRP4@c «Èš€š-¦=|a0ÿÇÿÈöÕe­5%`§c$$T\�j†¼ú^]³©_èÍûþ?¢¢¹±¡{RFÆ� jªY¬ú/_Óœ÷ûx+nÍØ] ô(Š²š§;„·®,¥\šñ„A#8ºj
ÁÙ—f ]·^C%0G    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/themes/windows-10/images/16px/edit.png                                    0000644                 00000000757 15266052716 0020407 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ¶IDAT8�u“ÁKAÆ¿dg£ä5
’œÛ‚<+¹	Þ¢½ôæQ¡‡þ‚—Œ¡4šàAüýâ%Ä¼V%%QØ`Læ}=dwvv£;3¼ß7ß¼ÙIÀ�jµJ!A�„A
‚5!¡§Û}-ìlo×�ã“j­Mµæpf­Vc£ÑàÏr¹³_:X
¸d0  @‹@k�ÖZký€l6‹•ååŒRê2à” ý@0æo4¯T*#(•ÊŒ	ˆÐ/µ…Â(7@ Êqð»\†·»ÛÏû�1Øž÷½6^Dã6—Ëîî¾¡_‡­%z-L6>cåÃÎšÍîE>_kb½Ts/½gLÜŸbq¾[ØÜÛ«G	$S6üøÏÅu{_¾Ö�È5†þiÃ†Ú.æ
¿ÐL�–	ö6‡gV��šú¡˜š7þÿÛûu…ÝÌGËmÜ�0ìYÿ/Üwàh¿ìX¶�-xƒü›p¼6r¡”ƒ§WHæ¶0¿v†ôì\W™4nÇz Ä~©
‘LÏàðüd}Ô\áhŠÿÌC�ÿ-1C­Ý6vZ    IEND®B`‚                 includes/File_manager/lib/themes/windows-10/images/16px/directory.png                               0000644                 00000000444 15266052717 0021460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ëIDAT8��“»N1EOÈJP¡HTˆŸ 4´tTÔùLŠ(5JŸý€ÑE�
in
{½^ïjmaYËöÏŒïLðã§~’$pÓYÉFk	�6W÷/s€ªq ‰Ë›…»�ù›æé®=¼/oîŒà�"Ø�ªuàöJ`‹ù$‚Ød ‚R‹ù(‚Pîq¸C÷S(�m,…<,;"ÁÇúqÖO!÷2â{W3­.@<'�…‘ñ÷ûÉìúà!©A!‰iu¤ÝRFÖ[C¿P eßRA�ÿ�2‘�º‰ýÛ*¬C'§-ŽØm_ú8²ÜæÞ    IEND®B`‚                                                                                                                                                                                                                            includes/File_manager/lib/themes/windows-10/images/16px/archive.png                                 0000644                 00000000745 15266052717 0021101 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ¬IDAT8�}’ÏJãPÆ´*V¤DŠZGDëR7ZŠ¸*Ó…ÒGè<@_ »y€y€®gÀ? Ã,f#UD]q¡¶(*´©÷Ì"ÍMÒCÂ½|—ß—ïœ{"tžçÓM°_¸º}ã×É*ù|žJ¥ÂæÜÌñÏ r2²¼÷ Ç1ßl"Ô¯/)
4›Mr¹wuRÓ<^ýžw¸Oh|°³Z–E±XÄ²,Ï¹¦\[óÀ`”Ëe×@”—ïJà…Eiç³Ï¥³v'�å7è” a%è]`jf�x<NµZ%‘H05³Fš¨¹­‰ˆ³ig%fn¹&Æ"¥½^Z
ÚÊÎö=uÃÏsÓ§u•àI€ÐR°–žeme–Ö;Äûš¿Û·ÑVÐxïü16ÐÐ<ƒ„¶�°ûïŒ¶s»Ôt�22<™uSK þ=cÔ\"™LbÈ)¯�Ñ¡/¼6j“;mðp”‘‘‰Œ›ÂHSÚ�úö#ûDé`0¼‰ÁQ61Lûp”»¦õ¸	„ûÚ�Þ÷›c(R¾†½Ô¯Qù´ÿ:ï@·R¸    IEND®B`‚                           includes/File_manager/lib/themes/windows-10/images/16px/view-list.png                               0000644                 00000000357 15266052717 0021402 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ¶IDAT8�c\ºté ::š—°0000DEEaH,[¶Œ����¡¬¬§]]]Œ,0ÎÌ=÷$^}æ`ÈqdDQDÐ‹1‰
1¨¨š308¦Ád/ý‰ÓS£Ù.8ºx=NE] ó/9€z�Ø¹ö,Ãß§{¾|½ÊÐV¹EA0000h]ÚÁð›w%Ã¶7(
"ÃÒ¥Kÿcø†G Žà” €ÝnD †ì    IEND®B`‚                                                                                                                                                                                                                                                                                 includes/File_manager/lib/themes/windows-10/images/16px/getfile.png                                 0000644                 00000000426 15266052717 0021073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ÝIDAT8�­R»‚@ÀZ0áC|UXù7Zú#b¢•”„ï ¢³°â7|UXÜXñÜÁ„I¶¸»�ÙÙ½µ !I*¥ð„ãØ×âù\®W«3~!ŽcJ¤iÊ<ÏyŒ¢ËþpKŽ­”R €ÛýQ ø¾�ExŽ3H¥À N@"Ë2 @QÞß“é$á¹ClÃ�ñ.Z ‘@$ÔÎ@’ß÷ŠmZ‚Nþ80Ö:�äÊA×$™?Ä/”Gžk$vPØ†»r…Y®±\íÞa}�6'sÌuçV{Rïª¾ +ÐiŸ(Î5    IEND®B`‚                                                                                                                                                                                                                                          includes/File_manager/lib/themes/windows-10/images/16px/cut.png                                     0000644                 00000001040 15266052720 0020232 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  çIDAT8�•’¿oaÇ?ï½wA× Ñ¤9'cë`�4)1æVéàì¹8t¡˜4v*m×&^Y:8ÁâàR\ñ/ðÃLj\(˜Ó á—à 5\­>ã÷ù>Ÿçû¾y`¢Êåò‡Ií´6÷§zÊ¤ ëº_©Tv†í è ÓéC¡PÆu]c¢õ(^°,« „ð5MÛ8³=¤€Ò… €n·[Ôu=ãº®yf»·¿½^ÿ'Àp8<�F†ªª¹Í½C°�|�7`Y–ßëõ
‘HÄž‰èÎXžŠ.  ßïçn\O¤�Òþöºÿ_ Ë²¼Ö×¶×hÿÀHÆßŸçAbøá3ÈÌßºgw�E#ªQý6Åf.Uø+`6û&5øò93h§G�ïžº°h†oÞ7Š'i¢H©æO^Ü9|‚]8’±xJF¯¬u*¯VÍc@ ´p5´‚ªr/?ÚS€„S»­ÌÌröêÓöë­Ò¥Ç¹´Ðtc4T…¦?:Ùº[ª¾†Tëe5(�!¤Fk÷A	@�»¶*�¤'cÉ<RK4ž/ûü>gótH�ü”„Ssþ|;h~²ÑÂ»Qü„SÛ< T§4²KÕqcE¾“±x]^ž+4²K>�rÀÑØþç*—ÝfþÛ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/clear_folder.png                            0000644                 00000001263 15266052720 0022067 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  eIDATxÚ�“KLQ†/‰it…Ñ a¥ãÔ�ºuåN£&>6(‚@%±(Ì»Û±´¥±VêkeŒë7«Q•&V"¯4@�¶PKmi�ú{J-TŒ‹rï™|ß9ss‡I’ÄVÒr…cM-]¬©u£p¬EÏ3Q,2ËA©(0¿W•üšû½ÏBÑ
)¬û,î�~³û…×$I¢X‘cV</�„g‹“Î$ï©^ í)	íSn ãÂ�)û’":ŽË'HŽö„�$ v˜»“Ï,�1uñdÆ¬1Eu</ýKà.‡£ªÙI ý‡ ®‡#6ªu#3jÞ@ l¾T°ž±RMCfDÝ@@™È	æ{ËáH7	4Ú›I`Œ)’¨ãþ:Áˆ#„„»¼sÒN¡uTÅÂ'9Â�Ì ¨L4*+!/¶“Àµ¦ó/‚gOBÚz
øîÀ·¨š¸Åë÷{wÔ?154îZ;ÁpwŸ�ÅÎ4öoêœ"8Ì6#ýà²ãˆTmÇ³�{dykA åC7Cˆ;òð4}ó´›€¬Ï#\Y�hm5>>0Ø¡Ý`œª²5‚Ä�Âœ­O©À¤|±`),b¢²3Œá�r²ßà´#®\eiù*Yæ‘¦�'xÎH°	?ƒW©­AêìAdÇDÅ¸Žœ8f°YK& ‹ôú)oüèçï}œ'Ø×å	ú:=�7‚'°oÏØ«ºúç�·|ïà çñ_>zÿ¥®j\jh¬c¥¿sk»ÀšÛxÖ¬Vs©]f�g.n3Ð/Ü|ÍDï%Öf¶2ùBãnùzç¦?©l�ô¾R    IEND®B`‚                                                                                                                                                                                                                                                                                                                                             includes/File_manager/lib/themes/windows-10/images/16px/help.png                                    0000644                 00000001124 15266052720 0020372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  IDAT8�•“¿kaÇ?ï½—K[1F²¨Š:dP,1�.‚Ý…šÑE�®þ�:è$„‚ÃMN�ÜÔB¥*´%fh*X¬—½6¹\^‡Ü…¤çâ»¼/Ïûý<Ï÷yx_Á…5³²žÖ€,�òÃuÀJN¹`�ëÅŠJ�û‰4^,É Ú™�l¢Ÿì!<×òN¹`�øpÅ‹%3½Ù{( †»ž‹q´�ì4ª@Î)lÝ7PôbÉL÷æýôêáÜº€íôÉ¿¯a;Šîì2ÑÆfFvE`UÌ¬¬g•4*çéG•ÕÆ]¬ƒ6ñiIfvk¿Eîõ÷aß^�©Ú'ÄÀÍéÀZ?‘Ù^}·�ùí(øòr‘ì|lèU)”ˆÐ¿:Oä÷îšd½X2Ôs Ç§%©D”ê¡J�tÞ¥ë YHÓX Wžß&>-yñ±>q70â )Í÷‚AQ|2G*%·±‹µ×»¶ uíÌÁ�óëÉ?a­Û¨ë€%Û‡OÑ+’@nc7*ËÓ# KJþ	Õ›%ÔÛ¥,¼zó  ¤9å‚%<×4Ž¶'…Á™I¥0Žw×tÊ+x‰yÙi¤¢�ÍLïÚ”ˆ 
ñl+TÙ8ÞAžþ¬y 	àÖ¶Î#sË´^{A·k‚h”œLoýÀøõ­×4�Õ‰Ï4¾þ÷;ÿI}q»z    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/themes/windows-10/images/16px/hide.png                                    0000644                 00000001216 15266052721 0020356 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         (-S   gAMA  ±�üa    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   ÒPLTE   ÄÄÅÀÀÁÁÁÂ½½½¾¾¾ÐÑÒÏÏÐÍÎÏËÌÍÊÊËÈÉÊÇÇÈÅÅÆÃÃÄûûûÑÑÑÝÝÞ÷÷÷êêêÝÝÝ¯¯¯º¹º¸·¸ôÚÊ¶µ¶ò¼ží\
öÒ¾´´´ò»žï[ñ¹�úúú³²³ð•còºžïXñ¸�ôôô±°°ÂÂÃîYò¹žò¸žïUñ·�ùùù¯®¯ÀÀÁïTïRñ¶�óóó­¬¬¿¾¿öööñµ�òòòøøø«ª«½½½õõõñññª¨©»»¼¨¦§¦¤¥¤££ÿÿÿ÷¼}   tRNS ï0ï0ïyDñ¹   bKGDEŽ³¨W   tIMEä+T¾Øƒ   §IDATÓ5Èé�@@á±¦E—¡²“e²’˜låýŸ	W�ç#„Ô¥†¬¨ZS/•	&Á¿V»REh ÅZ�nA.À0L%JÁBPèAAËa0ÙÍ?8ã	st˜:”ÎæÎ<„%8«õf»ãÜö@×‡cÈùÉ�Î@ãðòý«HnÇ÷ß?Äáù?DŠ`cÌ÷…4C°ú¶ëQòL³7!Í Çi”R”   %tEXtdate:create 2020-03-17T14:22:43+00:00a%   %tEXtdate:modify 2020-03-17T14:22:43+00:00E�ª    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/themes/windows-10/images/16px/sort.png                                    0000644                 00000000710 15266052722 0020433 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  �IDAT8��ÓAkAÆñ63Kµ¥Ó¦PŠm-4w›´è9×~ñä7(õKxòšk@Ä€–Xè­hÅj{êEÐ žÒ(Mö}<L²RÊnÕ��™x÷÷>Ì Þ½ß—Ì03Ì„Éø³S
gµÚjaáa³B|©uÒÿÙp 2ceå�Nç- Q�ÍéùÅÅÞÑ§M`f¼þò‹ÓÛ”«uºý!Ãƒ@º�Š‘ ÇO7WžìêÇ³�Æ¨€¨ÏO0,­°<Cy=ýóòTŒsŽ7‡vN
èoCdd–+XšôxïiÌäd0W­Óí(F	–%°�¤ ¸/÷ÿC0[­Ñí(º�tV°4éanIHâæeGÇ¼ØË(Œ{NÂ¥™½»Ê·“Î	³$?ƒÁµµ´g•ji7F‚ç¦‹3÷lŸw (Ý¹Ç×Þ)ÞçÆ÷@å hÚÃÂý°–¸=#‰Ö(ÄÊãfËü×5[© ýª}æõ…™„×iIú-e+ù~\)Ø:Gú×ñò†'"š>ˆ    IEND®B`‚                                                        includes/File_manager/lib/themes/windows-10/images/16px/upload.png                                  0000644                 00000000676 15266052723 0020744 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  …IDAT8�}“!oTA…¿í{é:¨Øƒ)SÑ4Á¿€¤ülù5„"Á ºk¨ Yº+IJŠ@UT`1lšÔð@€h÷Í9ˆ�÷¦;Óp“›Ì½¹çäœ;3=bL&ËÆ¶‘Œ-Úžlêªú}yuõøùîîwòøxtäB—Mnš”ÓéÔ³ÙÌïG›-n¥=X H„ B„hbno¯Õu}ÚâêŽÀŽ0Îô-êñx¼ ­®®’ãèu¢;;O1PWÃÑ¨ë'Vdà¼–UÈq*/Š*•:ÅsðuYÝšœ¦ÒºæÍ;h‹“ó¯HÉBº%ý7©0ðêì-_æ'¬÷ï•—Xø�à—goøÜÿD¸sÉÅæ9÷G>,+H‹]¼8}Íñün5ô ÷ÁwõlýÝVö
ùªýG{ì³ÇÆ·-¸-üw…ŸO~ô2Êpå{œÓÐC89_¾cêº*4´Ñü�À2Ã!–ãwŽßÚÂ2²™ohAð'‘þd\ÝAH–Ò    IEND®B`‚                                                                  includes/File_manager/lib/themes/windows-10/images/16px/netmount.png                                0000644                 00000000576 15266052724 0021331 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  EIDAT8�Å’½JQ…¿�’&bkãFÓ(þE±‘yÁ°°°ô|A+Á:`+Š±Ôhtý­”H0H’Í‹¢A<p™{ççÌ™áÂÃézª9 @>¹� P½\òI‡BUa$Ÿtz—uÜ(‰†Žì_ŽÐx€{ã=¸Ã×�Ày©,3!3Ì3a
ïéÙéq/ È'Ó Ü=ì¾søÑ‡ô­ÑWl‹Á€wÿ´"iã‡N½ ÙÒÜÌÄ¶pzvY)]œ§Ì¬�$$C2µ•	#£™·…ù™�~€××—ÔþÞ.õz�F£žf³‰ïûø¾O«Õ¢6Y#~G+«k)þA$Ä¦cd7³Ô²µnT;1ŠËEÇ‰.¿pu÷\ñnË©pi²pvS`iï�$†ÜôÛÔXf ª€žøˆBØ
�¢¡r    IEND®B`‚                                                                                                                                  includes/File_manager/lib/themes/windows-10/images/16px/fullscreen.png                              0000644                 00000000467 15266052724 0021621 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   bKGD      ùC»   	pHYs  .#  .#x¥?v   ×IDAT8Oc`Ã(¥ÎfÐÎžÇ …„A|�8GP;ãªésäõr`` ¸4Gp?!VºþàÂ½W.ÝõàÊÃ×`|éÁëGË]?2ä¼àÂýWÿAàèµ'ÿçí¾ÆwŸø2ä�wð‚ów_Bxú?iÒŽÿ\!ý`C@. E¬Ço<ûß¿lI\záÆ“·ÿ#»·€¹äP˜eÀ¥¯þ¿þøl2 ,Qa Œ…ÿ C@.y„AŠPŠ V"Ïd#p     IEND®B`‚                                                                                                                                                                                                         includes/File_manager/lib/themes/windows-10/images/16px/search.png                                  0000644                 00000001213 15266052724 0020712 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  =IDATxÚ•SÏOAžƒ‰Þýô¤/z.¼˜p!1F&&zP ­R¶¦;;³³»ý½mSii-�Zµ$ ©ád´£¢´HbPIÀƒ&å¦‰<žo›†ˆ-6¾d33ß÷Þ÷Þ·DÓ4ò?0Æ•ÝD¡2QUµé~_¢¢N24q8ðŸú¼ÇuN	gJ{«W(Ig²ÎÂë÷«�+ß>N¼Ù\)ÌMGÌ`Ã;±Ÿ€U™aåÌÃ©Ð‹/¿¶‹5¨NnÀ“Ä¤�*Ä³ëÅ¨ìd�Nš=+
1ÃáÓO?Ô¾?¯Á«Ü'˜Z�aÏ"è¼v^��tanLgò!«Ó&voü¾{fcûsnÄ–á®QÎÀ¡–àºòºã/¿…|ÆI…ÒXÙI}|mçYlL½2’û‘|qAY„®Äü–a¼g¨,·@ÿñÄð¥èÛ±6$ßDâQ†ü>‡N�W£^ÁŽr\qËx„BFfæ§±š„èFïçY:éK.ÿ¶§F36FÝ-†ˆ°öŽÆ:’©t%þh6o–~r_.†ª;=£¥-m4›ª‚Ä·{¬•Õ´1?8%©Ã§ñ#hçrr"oOer}3t–×)þ	Rƒ,üá�>‚~‰ÞÑ4AD#PÛ­=!ö&Ñ:Ðñ±ˆ8{Yl.*šØU»…èB%.ªÞ¾Aý`w)‘µ¶äº€×c‡SºÖ{kÐaèú�È»<(âCX³8ÙÂA&Ø˜æd-R    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/themes/windows-10/images/16px/arrow_down.png                              0000644                 00000000345 15266052725 0021634 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         Ä¾‹   	pHYs  .#  .#x¥?v   —IDATxÚU�Í
Ã „Ç¤´´—öQ$ÍÃää´9…ÿP|ìîJ„Vøœ‘ÝÎ9�„÷'ãdÁŒbŒ8Ž£=b1§”cÛ¶Ëº®ÏœsX¥�÷Ú÷} 7­õgY–¹Ö
³RêM<‚F´ë!¥ŒÆÉ¢È»ÓúÖZÁèr�¦É“óÙ½T/úÇ­dÿV7~™³/PF]ÁÉú´    IEND®B`‚                                                                                                                                                                                                                                                                                           includes/File_manager/lib/themes/windows-10/images/16px/open.png                                    0000644                 00000000621 15266052725 0020411 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  XIDAT8�¥’?/AÆ»·"Á
—h´=	‰Z¢òetJ¥o¢—h$JT
…†(qgoofç}³{vÅ�Â$“y3ožïüs%þnOzWÀÑÌÖÕÛŸë<ïtÇ—åý~]ÞûÓH&:H:ó¤Û$³k €@%ÈƒyT�Y¶z<Å @cpÜ×žtZ¾ÕC-¢É2À?Àæcm~šƒ
\+7H"Q$Á<YvÚ?äÁ-óVŠ�AäA
Î`#{åºwŠƒl9xô+ä!
#gÂ”‚[×‹àß"|Ž£ª3p^$LTüÏöMàzñŒî|ZÍ±ðtBPœN¿ŸÓ�S3B|ïhF&ò|Øz®€0@‚</�90GÖü,Ã:·`X„2¡“ÄcE©ª×!M<Is›7ÕSÙí¶zéå»T‘p°Ôêýk}[6‰*�ö    IEND®B`‚                                                                                                               includes/File_manager/lib/themes/windows-10/images/16px/view.png                                    0000644                 00000000354 15266052726 0020426 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   ³IDAT8�c\ºtéJÀÒ¥Kÿ£RÄ˜`5®>Ï0iÏ{ÃN/dXø#ŠØ:AA†‹S³á|¸[××0\=×ƒ¢ø•ò;†Û7V ˆ‰ºi2¬ÝµÎg�1N-ÛŠá½R·…b¶+�1Ø"ñO fÏ<Ç0w²3ŠáÄ,Ü€ ‹µÇß½CQLLÀÂÑyÚVTû‰ØAˆØ=`¿üøHZJÄ°$¥Dô€åáà§~J f?4ßîŽ&    IEND®B`‚                                                                                                                                                                                                                                                                                    includes/File_manager/lib/themes/windows-10/images/16px/file.png                                    0000644                 00000000511 15266052726 0020366 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  IDAT8�•“1oƒ0…Ÿ+¦¤ìÍŠƒiþCñ¯›F�˜C:0ÀÊÈ^ç]›º‰Aô$‹ÃØï}w6
.šË—	Š€$|.$è†Rêj­=ì÷o�ß§|r>7²Û½b*Ú¶Ešf†ájí÷¡ªª žüŠ  ¬µÑ Y–b³yY+¥>ý¾d  ]×=¸k­ u] VÏ«õƒ€8¿8&¢µF’$8}œÆù_WBŒ Œ²,GÚˆ3P"s=Ã¡LÜ„Î>'o‘ö (
p	AÌyž`a¶Ûí�ëlžçQç?ï±côª}ß/ ˜¹Æ˜ñã}í>�
�Äñý
!�70x†¿ux‘~ ’L÷þÌ)	x    IEND®B`‚                                                                                                                                                                                       includes/File_manager/lib/themes/windows-10/images/16px/deselect_all.png                            0000644                 00000000633 15266052727 0022075 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   	pHYs     šœ  MIDATxÚ­“Knƒ0†9Td‘[A�b ‘U–$¼N
æz)î(vÅ¢i‘Yž<ÿ`É0é/±.!’ªª\ Ûâœ ÇqvY–iqkqiišjÀdÏóä…GO~»Ýv‹ÈüREÊóÜ`ÂS–ååñx\D"æ¬x,
ðc×u¬m[6M£”š lŠü#µãñÈÄOÜÔ4†�[Þ÷=ïw^ �}Î-`L~um9&ã^Xt8�N’çzûº®-²Ò$± òÌ:Apø¬ë3òä›[×ëuÏ™8€ÛUU™°q\û¾?ˆÜu]sþw
ñ/¦ŠS@5q
hØÖî0ÎDq
‹Û`ÚÚÂ8ŽÛSX~å¢(T%°�@2A·ÁÜ=Ç)%¶mó¿òëeÂÞ0ÄËôÊu]ÿyß�/x
hÑË‡Ð    IEND®B`‚                                                                                                     includes/File_manager/lib/themes/windows-10/images/16px/info.png                                    0000644                 00000000771 15266052727 0020413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  ÀIDAT8�•“ÍjQ€¿{ïÌ¤Ø"–lR”"…†,]ä…)ø ö	Äe7ÝøB@\vç�U–@V]”�ºˆR´&“:ãxºèdtÔz6çrÎùÎ÷(–$S®»@p�blîÐò;o1^-€9 )Æ©L7·‰²f9@Ð·CÌøëç7T¶�šßi“1ü)ÊJAþ 16€üÕñ[E!Î ‹¹îŸ /ýNc¨ãšQ¶Pš<}‘‚åíòn/I$Úb’?$z”/M �)×]1N%ÈÌ+&:–%[°µ‹h»’)×]¨N7·×¶­ÞtWŠ Êfúø9öÕ×ªÜ([X;³¼ßG>ì§à;_ôð	€«�âÝ¶áÔK03'PÔÉ�+°Ü'6@=};\…ÿ±DDÐ“@OžŸß³
˜›€§�VüÃÖÎ;˜ÛT`�NZÚï4<…mgÐM®[b¬�ËcÔ,lû�†gÅîš¹î7úŸKÁÖ.¢l@P¯�V*;—Ç˜›'@À „gG¿íg‡u0Þ±†g;Šh1’…Y¿¾ã\|A£6ð*uL‹ò¿çüu«ûZ}!D½    IEND®B`‚       includes/File_manager/lib/themes/windows-10/images/16px/directory_opened.png                        0000644                 00000002142 15266052730 0023002 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         Ä´l;   	pHYs     šœ  IDATxÚ••ËSÛVÆEÝ&�é*3é„þY'ÓMW!‹v×écÕé®3%lŒÁ¶¤+Sã@Zìšg€4™$ÓM�é¦uÚé¢íÐ€bðã!áå0ñÛØºº§W¶Ë”À]|s$Ý«Ÿ>}÷\‰�)	¡RµŠè�+:MuªR_!AÕ)A@Beís*:p¢N°°cfE*Z-eÚ¢ç*P8<VŸLëð ÷î„ËxyÂm¹4é¶Ô©šbë¦†¹º©ž
ÕÝ.OŽˆïÑ·Óœì¡ÕÁ†È_X4Br¶²¾ÈZa/¤ƒb¤p¬”e`E€â²-ßï@ç,,r<Ï3k�›3dû>NÅâÎÌUœòjqÆ×Ž³Áœ_ìÂ…ˆËK<ÎE­Éþ>¡–åJÐš#fÍ?6K÷€<ÿ^Î/Ý )oÉøZI6 'ùP')DM
~Ì‘\TL8„sð±ŽKàõÀ¸D¶ï�¿ƒaó.dÝ�žk†l@¹ìEº	^b!ÒýŽjïƒÇ$ `¿�IüdüFHy›`×ßù 
a#›)¥¯;PŒjªr‰» lLa²1	iŸ’R#ìúÚ ÔÁÞb'‘c&
æ+ŽùjóÇw@YŸÀ°qRóðBº
™y-íê:d Åh7É…9
Fµ¶ZÇþQ	¶¾emÃú$çt°3Û@sn¡9·ÑÖë r´²‹lŠ‚ßQ£P½Ür¯ �Hð|Š‚G1¬�@ÒÛ;¯”Áþ6È/è•"Í9±dvtFÝ�U8¦Qø†$Øœ eu˜‚‡ ù¨ëé^£9·ªHÛÎˆÉ3‘<¼“ã¿v²cŸ›‚Ç)Ø�Éª‹æ«…í¿ëéšK9çtP ˆcf(>Fòõ>t–ãPQø\<¼âÂ°ê,ƒ§¿¤Ž›©c­Úd/Ô©à%Ùó;ö^þm®ÜàÀ<OwÞ¼sâÃ <ub¼<@¶¦å­ézù…Ô,§çµrÖ¯“ó�E9j–wù„k°ï¬(Z�vüïWjmîIYÿ“•AYŽÙ 1ýd¤zÈÍ7B!Ø8Ü$f xj†BŒU>ÿì£Z­¶•EñhÇjV«Þ¯ÿ€M(OnsaÛîÌ��ïO×<¾ŸÛ<Á:Oè7ƒ'ü{×/±?Ùs¿šøàýKgššš«Õz•ÀîAëùg¾�¿`³â�¾òöÚŒ Úµ_YN8 usØí}ŒÍf;>
õWc¶ðôµÐéÈtßý�SüâÅo64\Ñôôˆ´­xû�Ïs¥Ïíq‹W “kÊ»Idn�v}úÉÇ¾¥×wºñ$½t¡üSáôøu£ÉÊ8�.¦··÷AUýAðýÀQÊÿ    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/themes/windows-10/images/16px/rename.png                                  0000644                 00000000664 15266052731 0020723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  {IDAT8�•“±ŠSQ†¿ÉÞ°D›Ma³*²¾€ò ‚`/‚•©Bºä	$�àVR[šÒ:¬/°ZdµL1 šsÏÿ[\³f#.×�æÌáÿ˜3Ã	j„í£áp¸²ð%ç|×6�Nç8j�Ãñxüx¹\¾i·ÛOG£Ñ[ 5ê "âgD|“tn›V«õ!"¾GDªãßíäæ`0°í—ðétjIHF’°„l¶õê,�>}<çää>›”�“ÉÄ9çK•9»,·*�¶J•úý¾7)y“’_ŽÇ.$ðèõòŸ­¿{rDµ °MJ%Íf�d
Y ü(¯{ü•9üÉ%
IØä~û
@…%0ÌŸßúËâ=‚© ÍfQdâÕé©÷§-UðN.‹ ø|±àøöÊœ«-üOØ.z½žmlk×öcµZ=Ì9?›Ífïçóù¢6Àvc½^wRJ/l?°M·Ûýzvv¶¨û™Š^¯—~ç¶ïDD». € Þ½ûZX4Ûkµ:    IEND®B`‚                                                                            includes/File_manager/lib/themes/windows-10/images/16px/preference.png                              0000644                 00000000701 15266052731 0021562 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         íÝâR   gAMA  ±�üa    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<   *PLTE   &rì&rì&rì&rì&rì&rì&rì&rì&rì&rì&rì&rìÿÿÿ‡8%M   tRNS €ŸPßpÏ ¯ï¿:ª^   bKGDö´aõ   tIMEäbÊ•E   |IDAT×c``Tfð	c ö3sN‚ÌgÎœ9b°§’72dj�Y½$sæ¸ cÍ™ÃgÎ,d`�:“Ààyf÷™c
PXêƒDñQ�3 í‹¦1H›­š˜ 2(vÆ Ä˜s²íLˆ‘z„ÁH€ ¸<4ÝTÀ   %tEXtdate:create 2020-03-17T14:23:23+00:00HµG¯   %tEXtdate:modify 2020-03-17T14:23:23+00:009èÿ    IEND®B`‚                                                               includes/File_manager/lib/themes/windows-10/images/16px/back.png                                    0000644                 00000000560 15266052732 0020350 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   sBIT|dˆ  'IDAT8�¥‘1Na„¿Vÿï®'PÃ)$vÜö&Þ€ÆB/`g²Ë	 'Xx‰‡ø±‘Ý¡%Ã.§œ¼™7oü¶�”tÜ×¨[3«Žr””HúX¯×šÍfÚn·’ôÔ4öG‹¢(.ó<gµZÑív�;5q,Ê²¼ú'IB¿ßoMlÄ½<Ï	!Ç1ÃáçÜpcfŸ{$yà¥.Ž¢ˆÑh„s®}»™™$_Åëd2¹!´
ê�Ç˜™u�¶cwBUU½,Ë!à½'MÓ£Nè˜Y ®�sË4MñÞB Ë2ªªX‘íü¼ñ€IxhJ±ë Éd>ŸŸVŠ$/é½,KM§Sm6Iznì¡Éx¬QwföuZ”#ñiµ£Þ€¹^ç    IEND®B`‚                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/16px/forward.png                                 0000644                 00000000547 15266052733 0021122 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa   sBIT|dˆ  IDAT8�¥’±mAEßÈÑ­äHÜ€,ê ºpâ¹K–œY: I …Œ‘+0Ü†ˆ‘|' �,XþáìÿogFÿ”�{�t¼”J�fæ¯&Kzßn·‡Z¯×’ô!Éû*1Èx<&Ïs²,#„P¦Ç�( ÙlâœÃ{Û�¦!„z–exïqÎÑétH’d4ÌÌÛÞ¬X'!ÎB€n·cü’sŽV«õU«Õî£;¸FW�Ðëõ(Šçív›jµ: ;! òý~ÿTøÁÌ|l„çÍfs7X.—¤izîÃ\¸ƒÉdÂb±(‡çåpT’Þv»�F£‘V«•$Í%Ýûb‡” ¯¥Ò“™}_üù¯új@¡ý.†I    IEND®B`‚                                                                                                                                                         includes/File_manager/lib/themes/windows-10/images/16px/rm.png                                      0000644                 00000000530 15266052733 0020064 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR         óÿa  IDAT8�­’ÁNÂ@„¿BâA’nwyŸÀð¾…÷údË…TbÄgàH ��„.FÃÉãÉ¤”Öšè${Ù�ùgvvá?‘bâ:NRÅ¹ÅøNcŒ¯0~†UZä¤˜x�Ó;m­q•`üV/8M±ê“Œ1~�Óm=ã4ÌÉ‹±ºÊ�ù!#ŒïÐŒ[À1g×pJ#n°Edìºç|\T–4ÄøVœ–XU9ÿˆkŒ_bõŠ«7Ê6U±~…baX­qºÇª_’¢YÛ yDÐ9& "èœqt’òySëœ¿sãï°Za•)!ÜO’`âYMÛ—„>#Ò«	‘º„ñ!ÅøiÍS%„~B¤^1Á7¾g	œÿŠ/Þÿ ²wë,Æ    IEND®B`‚                                                                                                                                                                        includes/File_manager/lib/themes/windows-10/images/close.png                                        0000644                 00000000420 15266052734 0017754 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   -      >`å7   bKGD ÿ ÿ ÿ ½§“   	pHYs  Ã  ÃÇo¨d   tIMEß
/MX;   tEXtComment Created with GIMPW�   xIDATXÃí×A
€PÐ1ˆºÿ¹Æ3MÛˆ
~øÒÌV�·PÁ�$4Ë‚†1Úh£�6z,�Ì|¬g&"¢N­‚�Ôºí"9TûT5ºÃÍ —¢¯ÈYàrô>,I-¯Ç¿Ç£Ý"¶<y ^Q$U9‰áwËh£�6Úh£HÇh,[Mx    IEND®B`‚                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/images/close-hover.png                                  0000644                 00000000527 15266052734 0021105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   -      >`å7   bKGD ÿ ÿ ÿ ½§“   	pHYs  Ã  ÃÇo¨d   tIMEß
,R£8   tEXtComment Created with GIMPW�   ¿IDATXÃí×¯B!ðïº[(lò
¾ˆO`¡Ql&»Ï@'Ñ(6OÀã˜¢¦{§çaƒí|‰?å7v8ƒé¾Ý½0X60Œf4£Íèß¢R„0ºº/Œ†J±/töÒÙ"\é,²dè™}½ ¤³_óü<_ÖµnÐ%ø2¦“¢Kðàa»éIÖp©Æ»C×.]øÜ\ë*ÿf¢ø¹¨‘}¨¢„Ñ§#ûC?h~{0šÑŒf4£‡G¿‹ýT ¡äv    IEND®B`‚                                                                                                                                                                         includes/File_manager/lib/themes/windows-10/images/48px/directory.png                               0000644                 00000002003 15266052735 0021456 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   IHDR   0   0   Wù‡  ÊIDATh�í™ÏnÝDÆã„+µI HT¢J�@aH„�Q¶R¶ˆeY”' <JŸ ñ¤þì-
"½×§Û3çŒÇñÌµïÍæ~’c{f<÷;ÿ¾;°Ã“àÆ,*/ÿúd	®Â9gp¸JµW8Gå\;¾¹ïÎ•« ª ßwQ�~ûöºTcöG¼uú)ÕâDº€æZº{‘fÍ¹9°×búî¬K>Ë \µÇ›ÇŸ°88ñäEº%ŒS<Ek˜h7h õ+¨¯¸}÷nß½¯œ§=MdDG’èµOD†·+¨/Yžpx|Õ~K–@ÚÆˆ&/Ûˆ€ÿ±W°zÉÞâ€£Ó/¨w|Ÿ †Œˆ@í{ì|¦¶b€¾]Áòçj�?gÿð}Ÿ÷ÉÂí"!QüßM�œ_`ù7¬þåÖ;2žoª¨EÍ¥¢5±Ê#à›Vÿ�Ô}IõÏIkKBJ!Deò‹Ø@§JÝŠŽÎõ„·ãþÖ�€òèÜ–�6º‚èèµ£½ßN$ºÖ¤ëV�ðäŒäëgûì(O!£&!DE¡¨Æck!UÌk¢Ð€H¿»¨ü“ï¶ Ã,:"ÓP`€ç{¨M6¤R,ŸbžëÜdL4šþ�âkÃVNáí‘_Ä)ïûjeTU¯Þ©Úä™‡x¹½#n'¬LI¨ö¸€­læ†¼O�†S«ùb�ñsòýæuQ°�Å^Eìõß£Õýr“ªƒ,ÈØÌ¥”Ûæó¤k7$.í<«ß¾[ûµ²à} íýæPëù+oÇÛ‡xp<Ù¬CÞ§Ë{¬×õ‹�I›tÊ8xP?ÿþi)yÈU¡^áZµ¤Š7) ºÅ=È%­‘_ƒGíÕ]ï4Uý&ýn7zC£ÆQVÄ½ûët\�—Øûª&
Qy÷
ºîsî)‘îŸAüÊ²Ä‚Ö¤K‚X/:†MÀDu˜ ™™é 
j ¬€ÛçòŸ?Ìp7˜:Ó�AYzÞ._üiˆlÇï™5Ðžc#DX-ÿ¿F‰º²åf�ŒOþûãCRÞ§¹wõ5Ï…§ +`	\‘auÙBfÔ¨õ<ä“¯Wõšd“‡¼<Cä³¡UøÝ�*
ùÜ�€;~xòcúsÊx
mY›9wòÕ× _"raÒi¦ó)Èþ*áNýrœG;Ï5¿¯Îƒ¢wï}ó+R<h·ÒÀ-à�Òùnrþø‰<ÿA€{4ÿi\P¨á79|Ÿ,%Ûa‡6…×(;²´Í”™    IEND®B`‚                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             includes/File_manager/lib/themes/windows-10/js/README.md                                            0000644                 00000000507 15266052736 0016577 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       # Scripts
Any extra (funky) Javascript that you want to load along with your
theme should be located here. This could be:

* Special configuration for elFinder under your theme
* Extra JavaScript libraries that your theme depends on
* Javascript hacks to the elFinder markup after the file browser has loaded (not recommended)
                                                                                                                                                                                         includes/File_manager/lib/themes/windows-10/css/statusbar.css                                       0000644                 00000001041 15266052736 0020210 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* statusbar.css */
/* Statusbar wrapper */
.elfinder .elfinder-statusbar {
  /* */
}

/* File size */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}

/* Current path (breadcrumb trail) */
.elfinder .elfinder-statusbar .elfinder-path {
  /* */
}

/* Breadcrumb in current path */
.elfinder .elfinder-statusbar .elfinder-path a {
  /* */
}

/* Name of selected file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-selected {
  /* */
}

/* Size of current file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               includes/File_manager/lib/themes/windows-10/css/README.md                                           0000644                 00000004625 15266052737 0016761 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       # Stylesheets
All CSS for your theme will be located here.

The `theme.css` file is the focal point for loading the styles. These could all have been in one file, but have been split up for the sake of more easily structuring and maintaining the codebase.

* **reset.css** : resets background and border of all elfinder elements so that you can skin from scratch without manually positioning the main elements yourself
* **main.css** : main UI elements (wrapper for the main elfinder div, global styles, etc..)
* **icons.css** : icons across the UI (e.g. file associations)
* **toolbar.css** : toolbar at the top of the elfinder container. Contains toolbar buttons and searchbar
* **navbar.css** : directory navigation on the left-hand panel
* **view-list.css** : defines the list view
* **view-thumbnail.css** : defines the thumbnail/tile view
* **contextmenu.css** : context menu shown when right-clicking on in the list/thumbnail view or navbar
* **dialog.css** : information dialogs/modal windows
* **statusbar.css** : footer; contains information about directory and currently selected files

Note that many of the styles have a large degree of selectivity. E.g:

```css
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active:hover { /* */ }
```

This is to minimize the need for using `!important` flags to override the existing styles (particularly with respect to jQuery UI's CSS).

## Tips
* Use the `reset.css` style to reset the styles that you need to. Comment out selectors that you wish to remain untouched.
* If you need to reset a style outside of `reset.css`, the following normally suffices:

    ```css
      background: none;
      border: none;
    ```
* If you want to change the icons in a particular container, it is best to reset the icon's style from a general selector, then style each individual icon separately. For example:

    ```css
    /* All toolbar icons */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
      /* reset the style and set  properties common to all toolbar icons */
    }

    /* mkfile toolbar icon */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
      /* styles specific to the mkfile button (e.g. background-position) */
    }
    ```
* Some styles have their `text-indent` property set to `-9999px` to keep the text out of view. If after styling you can't see the text (and you need to), change the `text-indent` property
                                                                                                           includes/File_manager/lib/themes/windows-10/css/theme.css                                           0000644                 00000001200 15266052740 0017272 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * elFinder Theme Template
 * @author lokothodida
 */

/* Reset */
@import url('reset.css');

/* Google Fonts */
@import url('//fonts.googleapis.com/css?family=Open+Sans:300');

/* Main features of the whole UI */
@import url('main.css');

/* Icons */
@import url('icons.css');

/* Toolbar (top panel) */
@import url('toolbar.css');

/* Navbar (left panel) */
@import url('navbar.css');

/* Views (List and Thumbnail) */
@import url('view-list.css');
@import url('view-thumbnail.css');

/* Context menu */
@import url('contextmenu.css');

/* (Modal) Dialogs */
@import url('dialog.css');

/* Status Bar */
@import url('statusbar.css');
                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/themes/windows-10/css/toolbar.css                                         0000644                 00000020071 15266052740 0017641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* toolbar.css */
/* Main toolbar wrapper */
.elfinder .elfinder-toolbar {
  /* */
}

/* Buttonset wrapper */
.elfinder .elfinder-toolbar .elfinder-buttonset {
  /* */
}
/* Buttonset wrapper for search field */
.elfinder .elfinder-button-search .elfinder-button-menu {
  background: #fff !important;
}
/* Buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button {
  border: 1px solid transparent;
  webkit-transition: background 0.3s, border 0.3s; /* Safari */
  transition: background 0.3s, border 0.3s;
}

/* Hovered buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button:hover {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* Hovered buttons in search field */
.elfinder .elfinder-button-search .elfinder-button-menu .ui-button:hover {
  background: #cce8ff;
  border: 0px solid #99d1ff;
}

/* Disabled buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button.ui-state-disabled {
  /* */
}

/* Buttonset separator */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-toolbar-button-separator {
  /* */
}

/* Button icons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
  /* */
}

/* Searchbar */
.elfinder-toolbar .elfinder-button-search {
  /* */
  border: 1px solid #ccc;
  margin-right: 5px;
  border-radius: 0;
}

/* Searchbar icons (search and close) */
.elfinder-toolbar .elfinder-button-search .ui-icon {
  /* */
}

.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  /* */
   background-image: url('../images/16px/search.png');
}


.elfinder-toolbar .elfinder-button-search .ui-icon-close {
  /* */
}

/* Commands */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
    background-color: transparent;
    background-position: center center;
    height: 16px;
    width: 16px;
  }

  /* Root */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-home {
    background-image: url('../images/16px/root.png');
  }

  /* Preference */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-preference {
    background-image: url('../images/16px/preference.png');
  }

  /* Hide */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-hide {
    background-image: url('../images/16px/hide.png');
  }

  /* Chmod */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-chmod {
    background-image: url('../images/16px/chmod.png');
  }

  /* Fullscreen */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-fullscreen {
    background-image: url('../images/16px/fullscreen.png');
  }
  
  /* Back */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-back {
    background-image: url('../images/16px/back.png');
  }

  /* Forward */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-forward {
    background-image: url('../images/16px/forward.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-reload {
    background-image: url('../images/16px/reload.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-netmount {
    background-image: url('../images/16px/netmount.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-up {
    background-image: url('../images/16px/up.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkdir {
    background-image: url('../images/16px/directory.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
    background-image: url('../images/16px/file.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-upload {
    background-image: url('../images/16px/upload.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-open {
    background-image: url('../images/16px/open.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-download {
    background-image: url('../images/16px/download.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-getfile {
    background-image: url('../images/16px/getfile.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-info {
    background-image: url('../images/16px/info.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-quicklook {
    background-image: url('../images/16px/preview.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-copy {
    background-image: url('../images/16px/copy.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-cut {
    background-image: url('../images/16px/cut.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-paste {
    background-image: url('../images/16px/paste.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view {
    background-image: url('../images/16px/view.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view-list {
    background-image: url('../images/16px/view-list.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-help {
    background-image: url('../images/16px/help.png');
  }


  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-duplicate {
    background-image: url('../images/16px/duplicate.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rm {
    background-image: url('../images/16px/rm.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-edit {
    background-image: url('../images/16px/edit.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rename {
    background-image: url('../images/16px/rename.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-archive {
    background-image: url('../images/16px/archive.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-resize {
    background-image: url('../images/16px/resize.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-extract {
    background-image: url('../images/16px/extract.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-sort {
    background-image: url('../images/16px/sort.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-undo {
    background-image: url('../images/16px/undo.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-redo {
    background-image: url('../images/16px/redo.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectall {
    background-image: url('../images/16px/select_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectnone {
    background-image: url('../images/16px/deselect_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectinvert {
    background-image: url('../images/16px/invert_selection.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-empty {
    background-image: url('../images/16px/clear_folder.png');
  }

  /* Menus (e.g. for sorting) */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
    /* */
  }

  /* Menu items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item {
    /* */
  }

  /* Selected items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected {
    /* */
  }

  /* Hovered items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item.ui-state-hover {
    /* */
  }

  /* Menu item sorting ascending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir {
    /* */
  }

  /* Menu item sorting descending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir {
    /* */
  }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       includes/File_manager/lib/themes/windows-10/css/view-list.css                                       0000644                 00000004517 15266052740 0020131 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* view-list.css */
/* Wrapper for list view */
.elfinder .elfinder-cwd-wrapper-list {
  /* */
}

/* List view table */
.elfinder .elfinder-cwd-wrapper-list table {
  /* */
}

/* Column headings */
.elfinder .elfinder-cwd-wrapper-list table thead tr td {
  color: #43536a;
}

.elfinder .elfinder-cwd-wrapper-list table thead tr td:not(:last-child) {
  border-right: 1px solid #e5e5e5;
}

/* Hovered column heading */
.elfinder .elfinder-cwd-wrapper-list table thead tr td.ui-state-hover,
.elfinder .elfinder-cwd-wrapper-list table thead tr td:hover {
  background: #d0dded;
}

/* Actively sorted column heading */
.elfinder .elfinder-cwd-wrapper-list table thead tr td.ui-state-active {
  border-right: 1px solid #e5e5e5;
}

/* Table heading icons (mainly the sorter) */
.elfinder .elfinder-cwd-wrapper-list table tr td .ui-icon {
  /* */
}

/* Table heading sorter up */
.elfinder .elfinder-cwd-wrapper-list table tr.ui-state-default td .ui-icon-triangle-1-n:before {
  /* */
}

/* Table heading sorter down */
.elfinder .elfinder-cwd-wrapper-list table tr.ui-state-default td .ui-icon-triangle-1-s:before {
  /* */
}

/* Files */
/* File */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file td {
  border: 1px solid transparent;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file td:not(:first-child) {
  color: #9d9d9d;
}

/* Filename */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-filename {
  /* */
}

/* Hovered file */

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover,          /* fix for 2.x */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover {   /* fix for 2.1 */
  background: #e5f3ff;
  border-color: #e5f3ff;
}

/* Selected file */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected {
  background: #cce8ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td {
  border-top: 1px solid #99d1ff;
  border-bottom: 1px solid #99d1ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td:first-child {
  border-left: 1px solid #99d1ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td:last-child {
  border-right: 1px solid #99d1ff;
}

/* Icons */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-icon {
  /* */
}
                                                                                                                                                                                 includes/File_manager/lib/themes/windows-10/css/main.css                                            0000644                 00000001203 15266052740 0017117 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* main.css */
/* Container div for elFinder */
.elfinder,
.elfinder .elfinder-dialog,
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
  background: #fff;
  border: 1px solid #69bcee;
  box-shadow: 0 0 5px #cdcdcd;
  border-radius: 0;
}

/* Override styles in child elements of elFinder div */
/* Use for consistently setting text sizes and overriding general jQuery UI styles */
.elfinder * {
  color: #000;
  font-family: 'Open Sans', sans-serif;
}

/* Resizer */
/* Used if elFinder is resizable and on dialogs */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  /* */
}
                                                                                                                                                                                                                                                                                                                                                                                             includes/File_manager/lib/themes/windows-10/css/icons.css                                           0000644                 00000004310 15266052741 0017311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* icons.css */

/* These are shown thoughought the UI, not just in the list/thumbnail view */
/* General icon settings (in main view panel) */
.elfinder-cwd-icon {
  /* */
}

.elfinder-cwd-icon:before {
  color: white;
  background: #70787d91;
}

.elfinder-cwd-icon:before {
  background: #ffffffa6;
}

/* If you are using CSS sprites for your icons, set the background position
   in each of the below styles */
/* Directory */
.elfinder-cwd-icon-directory {
  background-color: transparent;
  background-image: url('../images/16px/directory.png') !important;
  background-position: center center;
  height: 16px;
  width: 16px;
}

/* Empty file */
.elfinder-cwd-icon-x-empty,
.elfinder-cwd-icon-inode {
  /* */
}

/* (Rich) Text */
.elfinder-cwd-icon-text,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
  /* */
}

/* PDF */
.elfinder-cwd-icon-pdf {
  /* */
}

/* Microsoft Word */
.elfinder-cwd-icon-vnd-ms-word {
  /* */
}

/* Microsoft PowerPoint */
.elfinder-cwd-icon-vnd-ms-powerpoint {
  /* */
}

/* Microsoft Excel */
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  /* */
}

/* Audio */
.elfinder-cwd-icon-audio {
  /* */
}

/* Video */
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video {
  /* */
}

/* Archives */
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar {
  /* */
}

/* Code/Scripts */
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript,
.elfinder-cwd-icon-x-perl,
.elfinder-cwd-icon-x-python,
.elfinder-cwd-icon-x-ruby,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source,
.elfinder-cwd-icon-x-php,
.elfinder-cwd-icon-xml {
  /* */
}
                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/themes/windows-10/css/navbar.css                                          0000644                 00000003412 15266052741 0017451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* navbar.css */
/* Main wrapper for navbar */
.elfinder .elfinder-navbar {
  border-right: 1px solid #e5e5e5;
}

/* Directories */
.elfinder .elfinder-navbar .elfinder-navbar-dir {
  color: #000;
  border-radius: 0;
}

/* Hovered directory  */
.elfinder .elfinder-navbar .elfinder-navbar-dir:hover {
  background: #e5f3ff;
}

/* Current/active directory (cwd) */
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* Howvered cwd */
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active:hover {
  /* */
}

/* Icons */
/* Arrow */
.elfinder .elfinder-navbar .elfinder-navbar-arrow {
  /* */
    background-image: url('../images/16px/arrow_right.png');
  background-position: center center;
  background-repeat: no-repeat;
}

/* Expanded directory arrow */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow {
  /* */
  background-image: url('../images/16px/arrow_down.png');
  background-position: center center;
  background-repeat: no-repeat;
}

/* All icons (directories) */
.elfinder .elfinder-navbar .elfinder-navbar-icon {
  background-color: transparent;
  background-image: url('../images/16px/directory.png') !important;
  background-position: center center;
  background-repeat: none;
  height: 16px;
  width: 16px;
}
/* Expanded directory */
.elfinder .elfinder-navbar-expanded.ui-state-active .elfinder-navbar-icon {
	  background-image: url('../images/16px/directory_opened.png') !important;
}
/* Root/volume */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon {
  /* */
}

/* Root/volume expanded */
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded  > .elfinder-navbar-icon {
  /* */
}

/* Resizable handle */
.elfinder .elfinder-navbar .ui-resizable-handle.ui-resizable-e {
  /* */
}
                                                                                                                                                                                                                                                      includes/File_manager/lib/themes/windows-10/css/view-thumbnail.css                                  0000644                 00000002033 15266052741 0021131 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* view-thumbnail.css */
/* Wrapper for thumbnail view */
.elfinder .elfinder-cwd-view-icons {
}

/* File wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  width: 80px;
  height: 80px;
  border: 1px solid transparent;
  border-radius: 0;
}

/* Hovered file */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover {
  background: #e5f3ff;
}

/* Selected file */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* File icon */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon {
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon-directory,
.elfinder .elfinder-dialog .elfinder-cwd-icon-directory {
  background-color: transparent;
  background-image: url('../images/48px/directory.png') !important;
  background-position: center center;
  height: 48px;
  width: 48px;
}

/* File name */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  color: #000 !important;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/themes/windows-10/css/dialog.css                                          0000644                 00000004605 15266052742 0017445 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* dialog.css */
/* Dialog wrapper */
.elfinder .elfinder-dialog {
  /* */
}

/* Dialog title */
.elfinder .elfinder-dialog .ui-dialog-titlebar {
  padding: 3px 0 3px 6px;
  height: 30px;
  box-sizing: border-box;
}

/* Close button */
.elfinder .elfinder-dialog .ui-dialog-titlebar-close {
  background: url('../images/close.png');
  right: 0;
  border-radius: 0;
  margin-top: -15px;
  webkit-transition: background 0.3s; /* Safari */
  transition: background-image 0.3s;
  height: 29px;
  width: 45px;
}

.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover {
  background: url('../images/close-hover.png');
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
  left: 1px;
  top: 12px;
}
/* Dialog content */
.elfinder .elfinder-dialog .ui-dialog-content {
  /* */
}

/* Tabs */
/* Tabs wrapper */
.elfinder .elfinder-dialog .ui-tabs-nav {
  /* */
}

/* Normal tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-default {
  /* */
}

/* Current tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  /* */
}

/* Active tab */
.elfinder .elfinder-dialog .ui-tabs-nav li:active {
  /* */
 }
.elfinder .ui-state-active {
	background: #1979CA none repeat scroll 0 0;	
	/*background: #009688 none repeat scroll 0 0;	*/
}
/* Icons */
/* Dialog icon (e.g. for error messages) */
.elfinder .elfinder-dialog .elfinder-dialog-icon {
  /* */
}

/* Error icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-error {
  /* */
}

/* Confirmation icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-confirm {
  /* */
}

/* Footer */
.elfinder .elfinder-dialog .ui-dialog-buttonpane {
  /* */
}

/* Buttonset (wrapper) */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
  /* */
}

/* Button */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
  /* */
}

/* Styling specific types of dialogs */
/* Error */
.elfinder .elfinder-dialog-error {
  /* */
}

/* Confirm */
.elfinder .elfinder-dialog-confirm {
  /* */
}

/* File editing */
.elfinder .elfinder-dialog .elfinder-file-edit {
  /* */
}

/* File information */
/* Title */
.elfinder .elfinder-dialog .elfinder-info-title {
  /* */
}

/* Table */
.elfinder .elfinder-dialog .elfinder-info-tb {
  /* */
}

/* File upload (including dropbox) */
.elfinder .elfinder-dialog .elfinder-upload-dropbox,
.elfinder .elfinder-dialog .elfinder-upload-dialog-or {
  /* */
}
                                                                                                                           includes/File_manager/lib/themes/windows-10/css/reset.css                                           0000644                 00000003027 15266052742 0017325 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* reset.css */
/* Comment out/delete the reset rules where appropriate */

/* container */
.elfinder,

/* toolbar */
.elfinder .elfinder-toolbar,
.elfinder .elfinder-buttonset,
.elfinder .elfinder-button,
.elfinder .elfinder-toolbar-button-separator,
.elfinder .elfinder-toolbar input,

/* navbar */
.elfinder .elfinder-navbar,
.elfinder .elfinder-navbar *,

/* current working directory */
.elfinder .elfinder-cwd,
.elfinder .elfinder-cwd table tr td.ui-state-active,
.elfinder .elfinder-cwd table tr td.ui-state-hover,
.elfinder .elfinder-cwd table tr td.ui-state-selected,
.elfinder .elfinder-cwd table thead tr,
.elfinder .elfinder-cwd table tbody tr,
.elfinder .elfinder-cwd-file .ui-state-hover,
.elfinder .elfinder-cwd-file .elfinder-cwd-icon-directory,
.elfinder .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,

/* general states */
.elfinder .ui-state-default,
.elfinder .ui-state-active,
.elfinder .ui-state-hover,
.elfinder .ui-selected,

/* ui-widgets (normally for dialogs) */
.elfinder .ui-widget,
.elfinder .ui-widget-header,
.elfinder .ui-widget-content,

/* icons */
.elfinder-button-icon,
.elfinder-navbar-icon,
.elfinder-cwd-icon-directory,
.elfinder .ui-icon,

/* statusbar */
.elfinder .elfinder-statusbar,
.elfinder .elfinder-statusbar *,

/* context menu (outside of elfinder div */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-contextmenu-item,
.elfinder-contextmenu-separator,
.elfinder-contextmenu .ui-state-hover {
  background: none;
  border: none;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/themes/windows-10/css/contextmenu.css                                     0000644                 00000002027 15266052743 0020554 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* contextmenu.css */
/* **Note** that the context menu is NOT inside the main elfinder div */
/* Context menu wrapper */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-button-menu {
  font-size: 16px;
  font-family: 'Open Sans', sans-serif;
  background: #fff!important;
  border: 1px solid #b5b5b5!important;
  box-shadow: 0 0 5px #cdcdcd!important;
  border-radius: 0;
  padding: 3px 3px 0 3px;
}

/* Menu item */
.elfinder-contextmenu .elfinder-contextmenu-item,
.elfinder-button-menu .elfinder-button-menu-item {
  margin: 0 0 3px 0;
}

/* Hovered menu item */
.elfinder-contextmenu .elfinder-contextmenu-item:hover,
.elfinder-button-menu .elfinder-button-menu-item:hover  {
  background: #dedddc;
  color: #000;
}

/* Item icon */
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextmenu-icon {
  /* */
}

/* Separator */
.elfinder-contextmenu .elfinder-contextmenu-separator {
  background: #e2e3e4;
  height: 1px;
  margin: 1px;
}

.elfinder-contextmenu .elfinder-button-icon-open + span {
  font-weight: bold;
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/sounds/rm.wav                                                             0000644                 00000264054 15266052743 0014166 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       RIFF,h WAVEfmt      "V  ˆX   data h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ÿÿÿÿ                                                                                                                                                                                                                ÿÿ                          ÿÿÿÿÿÿÿÿ         ÿÿÿÿ                            ÿÿ                                ÿÿÿÿ                        ÿÿÿÿ                                             ÿÿÿÿ                       ÿÿ                                      ÿÿÿÿ                ÿÿÿÿ                                     ÿÿÿÿ                      ÿÿÿÿÿÿÿÿ                                          ÿÿÿÿ                      ÿÿÿÿÿÿÿÿ                                      ÿÿÿÿ              ÿÿÿÿ                ÿÿ                      ÿÿ              ÿÿÿÿ                              ÿÿÿÿ                                    ÿÿÿÿ                        ÿÿÿÿÿÿÿÿÿÿ                        ÿÿÿÿ        ÿÿÿÿ       ÿÿÿÿ              ÿÿÿÿ       ÿÿ                                          ÿÿÿÿ                              ÿÿÿÿ                   ÿÿÿÿ                       ÿÿÿÿ                                  ÿÿÿÿ                  ÿÿÿÿÿÿÿÿÿÿÿÿ                       ÿÿÿÿÿÿÿÿ                                 ÿÿþÿþÿ                         ÿÿÿÿÿÿÿÿ                              ÿÿÿÿÿÿÿÿ        ÿÿÿÿÿÿÿÿ                            ÿÿÿÿ                              ÿÿÿÿÿÿÿÿ                                  ÿÿÿÿ            ÿÿÿÿÿÿÿÿ                          ÿÿÿÿ   ÿÿ                ÿÿÿÿ         ÿÿ    ÿÿÿÿ          þÿþÿ              ÿÿÿÿ            ÿÿÿÿ              ÿÿÿÿÿÿ                    ÿÿÿÿÿÿÿÿÿÿ            ÿÿÿÿ    ÿÿÿÿ            ÿÿÿÿ  ÿÿÿÿþÿþÿ        ÿÿÿÿ      ÿÿÿÿ    ÿÿÿÿ    ÿÿÿÿ        ÿÿÿÿÿÿÿÿ    ÿÿÿÿ    ÿÿÿÿ        ÿÿÿÿ    ÿÿÿÿ                          ÿÿÿÿÿÿÿÿ              ÿÿÿÿÿÿþÿ    ÿÿþÿ    ÿÿÿÿ                    ÿÿ          ÿÿÿÿÿÿ          ÿÿÿÿ                ÿÿÿÿÿÿÿÿ      ÿÿ             ÿÿÿÿ  ÿÿ                         ÿÿÿÿ            ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ        ÿÿÿÿýÿýÿ              ÿÿÿÿ    ÿÿÿÿýÿýÿþÿþÿ          ýÿýÿ      ýÿýÿ    ÿÿÿÿÿÿÿÿÿÿ    ÿÿ  ýÿýÿþÿþÿ    ýÿýÿ    ÿÿýÿüÿÿÿÿÿÿÿÿÿ      ýÿþÿûÿüÿþÿþÿ    ÿÿÿÿ    ÿÿÿÿ    ûÿûÿþÿþÿ      ÿÿ  üÿüÿùÿúÿûÿüÿ   	   ÿÿÿÿþÿýÿùÿùÿ        ýÿýÿ    
 
   ÷ÿøÿøÿøÿûÿüÿ        ÿÿùÿøÿöÿõÿ    ÿÿõÿôÿ
 
   ýÿþÿñÿñÿüÿýÿ  ûÿüÿñÿòÿúÿûÿ    óÿòÿ    æÿåÿíÿìÿþÿýÿ  !     óÿóÿäÿåÿâÿâÿ
 
 ! "   ûÿüÿ     þÿþÿÜÿÜÿçÿçÿ    ( )   âÿâÿÙÿÙÿãÿãÿùÿùÿ  $ $   ïÿïÿÞÿÝÿóÿóÿ    üÿüÿõÿõÿ  % & äÿäÿÍÿÍÿûÿüÿ  	 
     îÿíÿÌÿÌÿ  + + ÙÿÙÿÝÿÝÿ    õÿöÿîÿïÿ 	 õÿöÿèÿèÿ% % 4 4 óÿòÿÕÿÔÿâÿáÿöÿõÿ    & &   ÌÿËÿùÿøÿ  ôÿôÿ    îÿîÿÔÿÔÿèÿèÿ% %   øÿøÿ7 6   ·ÿ·ÿþÿþÿ  íÿíÿ÷ÿ÷ÿ    
 
   ? ? ÒÿÒÿ—ÿ—ÿ    ÿÿÿÿB B * * ÷ÿ÷ÿæÿæÿáÿáÿ      E D íÿìÿ¶ÿ¶ÿîÿîÿ    5 6 S T   ÔÿÕÿÀÿÁÿäÿåÿF G $ % óÿóÿ  öÿöÿëÿëÿ  E E   œÿ›ÿâÿáÿq q   ¾ÿ¾ÿýÿþÿ  æÿæÿ  Q R   œÿœÿòÿòÿ? ? ôÿôÿ÷ÿ÷ÿ4 4 & &   àÿàÿ‰ÿ‰ÿºÿºÿA A s s ? ?   ÚÿÛÿiÿiÿ~ÿ~ÿ> > t t F F + + ¾ÿ¾ÿ�ÿ�ÿ	 	 O O çÿçÿ€ÿ€ÿ  Ë Ê   �ÿœÿÎÿÍÿ’ÿ’ÿéÿéÿ} } r r 2 2 šÿšÿ¯ÿ¯ÿH H áÿâÿËÿËÿK L a a   ™ÿ™ÿÂÿÂÿ* * kÿkÿÆþÆþ8 8 00i i éÿéÿ¶ÿ¶ÿÆÿÆÿÞÿÞÿhÿhÿ�ÿ�ÿa a ï ï ä ä ÌÿÌÿ4ÿ4ÿÿÿËþËþI I AA8ÿ8ÿôþôþ¤ÿ¤ÿþþþþ ÿ ÿÔÕÉÉ¢ÿ¢ÿbþbþ^ÿ^ÿ† † ÑÿÑÿÈÿÉÿ³ ³ ‚ ‚ 6 6 ÂÿÂÿRÿRÿ+ + µ µ ÜÿÜÿ2ÿ2ÿyÿyÿm m 32ç ç ’ÿ’ÿFÿFÿrÿrÿfÿfÿ© © Ä Ä ù ù E E WþWþ)ÿ)ÿËÿËÿª ª ‰ŠG G ÐþÐþ˜ÿ™ÿ‰ ‰ VÿUÿ}ÿ~ÿùÿøÿ  Ÿ 45b a ÜÿÝÿDÿDÿ€ÿ€ÿ4 5 þÿþÿ    Î Î GÿHÿ¼ÿ»ÿê ê ¶ÿ¶ÿGþGþN M š›_ _ Øþ×þíþîþ§ ¦   …ÿ†ÿ² ² ° ¯ 9ÿ;ÿ£þ¡þ£ ¥ ¥¤  ÛþÜþ  ÷ö; < ¾þ¼þæÿæÿq s Þ Ü   –ÿ–ÿéÿéÿ³ÿ²ÿVÿXÿ[ÿZÿƒ „ XX¯ ¯ ;ÿ<ÿ0ÿ/ÿ'ÿ(ÿKÿLÿ_ [ · ¼ þÿýÿMÿIÿ† � "  ùþùþEÿHÿå å « ¥ ~þ‡þ‹ÿ†ÿØÿÕÿQ X ^ÿXÿ`þbþe f ]ÿZÿÞþàþ�ÿŽÿÍ Ï cÿaÿWÿZÿçþäþ† ‰ �ˆCM!  `ÿhÿjÿjÿÌÿÈÿ.ÿ2ÿÂ Á ÍÌ< : ¬ÿ³ÿâÿÖÿ  ªþŸþ;þBþ’ ‘ `Yê ô Ì Ç ,ÿ&ÿ†þ•þÿøþ  FKN D ·ÿÁÿ± ¨ 6ÿAÿ¸ Ã ÕÿÎÿLPÎ Ë ÷ÿúÿÝÿàÿò é u{¥ „ |ÿžÿu n m N _þ�þiK�þžþŠÿ’ÿ´ÿ‹ÿ;ÝÿÀÿùþëþsÿœÿI & K W ƒÿ‹ÿ2 # wþ…þâÿØÿ† ‰ tþ~þ6ÿÿù ø î Ñ Ñ ÓÿÅÿwý¥ýìÿ¨ÿ ; âÿçÿÏ › úý0þkþaþŠaðÿ' þûýS;° ë ÿÃþúþCÿmþ'þ¦ÿåÿ‡ [  , · ¢ |™Vþ;þeýXýèÿ; = ¬ÿe ü ‰  E ¬ÿŸÿ”ÿšÿl f aTŠ ¿ ¹ÿfÿ7 ‡ “ e k k ‚ £  êÿi ™ fÿOÿÿîþs · [
�Àhÿkÿ�þvþ»ý¬ýM œ õŽÚÿ	 (ÿ\ÿá h ´ÿ — u wYûþ$ÿ–ÿƒÿz ‹ b ) [ ´ £ s 1ÿâþ7ÿ T 9ÿo K% Íÿìþ×þ_ÿ™ÿô ¾ 1}¬ÿÿðþÑÿ $ÿ~Ã û Æÿ)ÿÑÿK „ýœý±þþÔ ±1 Ÿÿéþþþ¶ÿóÿ.ì ·âCû †ÿ2 §þ˜ý–þ£ÿ‡ Ù œ Îþ‡ÿ× ( rÿºÿË à í¾I i ~ÿVÿ%w•2|þ þBÿ–ÿ]þ³ý_ýñýãþºþ$ÿ÷þ 9 Éÿ –ÿÿ— ¦ � —þbþ K ß Ë ¨þ�þÿÿ3 H îþMÿú ¡ k„{Ì
iZÿÿÿ¹þ>þ/þ¥þ‚þ¾ýÍÿõ ši<ÿåÿµÿáÿþAýøûîü±Ý •Zj �ÿ%þ4ÿ¯ ¼ÿÑþaÿþþa 
 Üþ�ÿM$ » ~ÿdÿ½þøÿ8 †þ) T‡þiþÃ ( ™ÿ% ¡�ïÒ~ 1 îÌþÁý¨]ÿYÿqÿ[ÿVü  ÎBóþÿ<Eÿ
ÿ2ü^üþºý`ý'þPþyýÅÿ è(9˜ ¾ÿ9þ zþÑü @ ©/Œ¼Îü,ý# ¦“ÿŠý3ùÛù’ ~ý!ý'ÿÓ,ëÌERþ'ÿÈð oÿ‚ÿÎ>` ³ü+ýŒýIýî “Ü²ÿþ ÄÿÁÿ,ö Ä r… ~ÿFþþr ÇŸÓ  ÿKò¦üíü§ýhþÿvý—ý,ÿP Æ G ' ÞÿwþÌý±þÿÑþ)Ú ÿÿð ý eÿ\þ7 ÿ¸ýtýÓýÿ,gÎíÿ@þûÐý, Ïþ® ÷ÿÉþÝ�«ýÕþdþÛýh ÙéÊÿYý
%	¡ùýøb ÍVû­û	§o¢àÿþ` Ò<¼ùèøwýÿU,Äýû^¦vþú1ü) å § ÿôû‘ý² KÿSÿÀ 4 ©þ'ÿ§ ;éºøÿ±ýýTþKbšýÍý{þùþ®Ë ¥µ?ôþq Â#ý“þ¾Ž ‰„þý:üý#’ ¬Àg  Àü‡ýü sÿÂýN _–ü«ûŽ[ý�ÎüJüÛý2ýøÿÉ -Æü¡ûTÿ‰ …,À a ƒý‹ýôû!ýX>Eüþv ½(]ÿ* £ÿcÿ8 
 Åý™ýMý^þ¢ïÿôü|þ®ÿãþÜüý| i $ÿuÿäþ~þ3þDþ¯ÿ- Ú ÛàÿüþXþÿO »ÿ Lþÿ uÿñþ�ÿ; ÷ýxý9 V çþ'ÿEþÓýbÿÎÿb0¢z!ÿ£ÿ XÿÅÿM )ÿÿa³4Uçfÿ�ÿ) ! ªŸ‡þ þ!ë)ÿ�ÿd  Þ4#|ÿ�ÿ�ü}ü¸ÿóÿÇ¤L óþtÿïR˜þÿ  äÿvþcþœ Å íý¬ý + × ä ¯t' o Fpÿ�ÿÿùþYÿ_ÿš ’ ÙÿêÿÖþ·þcŒÓý«ýîþ
ÿâýÕý«ÿ«ÿ.8qþ\þÚþýþË�6c¶þ”þ)<,ý"ý~þ…þÕýÒýý	ýxþ�þýÿâÿ ) žý�ýþþÄþÙþ,0þ0þ�þªþä Ð Nÿ`ÿÌ Ã ¬ÿ§ÿ7 F   ÿÿ¾ ¼ ÔÿÏÿr | ¤ – fÿxÿ­ÿšÿµþÄþ0 ) WUÅ Ç ¤ÿ¥ÿ@ÿ@ÿœþ—þ³ÿÂÿòGW‚ { ¬ ¬ GþGþDýHýxþnþ>ÿHÿÿÿŒ“‘ÿˆÿ" ) “ÿ�ÿ	 	 ÿþ ÿÈÌƒ z žÿªÿvþlþ�ÿ�ÿ>@‚  ÄÅ; < ±ý³ýÏþËþZ_RýMýÃÆ•ÿ”ÿöý÷ýÿÿ@D	  Å Æ  þ¢þºÿµÿ‚þ†þj g ¦ ¦ ™›Bþ?þ,þ/þ! ®ý­ýÿÿ™ — 7 8 ÀþÁþDÿCÿþþíýëýƒ … ¼ º ºþ¼þ6 6 îÿîÿTÿTÿ1ÿ1ÿ//ÿÿÞþàþêè2ÿ3ÿþþZþZþÐÏŽ Ž .-TþUþõ ô RSNþNþ  Ÿ ÒÑÍ Í ÕÿÕÿª ª CÿBÿÂýÃýji¶ ¶ Ý Þ 66µþµþ¸ý¸ýŠþŠþ÷ÿ÷ÿyzF E ìþìþ  2 2 ÿÿ% %   e e NN¢û£ûóò66ww2 3 ËüËü    0þ/þ	ý
ýààôôÖüÖüFýFý±ü±ü“ “ Û÷Ü÷ýþýþþþþþddƒøƒøÄÄû÷û÷'ù'ù˜ý˜ý55öö�ý�ýÄ
Ä
Ç Ç óóÆÆ§§[ö[ö>ú>ú+þ+þ¸¸«õ«õäÿäÿÑþÑþÝÿÝÿtütüññx x ÿÿ®®88þÿþÿ¡û¡ûêêàúàú‰ÿ‰ÿYY-þ-þòòø ø 99  mýmýBùBùÿÿÔÔÆÆIIéóéóXX??GGàà4ÿ4ÿâýâý&ÿ&ÿÖÖßößörrƒûƒû‡ ‡  ÿ ÿˆúˆú¿¿  ^^þþ5 5 VVffbbËüËüwûwû·ý·ý^^åüåüIúIúD D òòþ þ @@—ý—ýûûRÿRÿªýªýóûóûýý{ü{üýýÑÑ  nÿnÿüüÈÿÈÿýüýüºººÿºÿûûdÿdÿ
 
 þþ00==CüCü- - wüwücc^^uÿuÿë ë þþÅÅÛÛ¹¹C C ¾¾]ü]üÁÿÁÿqþqþ�ü�ü¢¢N N ””ˆ ˆ |ÿ|ÿaþaþóÿóÿCCÿÿo o žž”ÿ”ÿ�þ�þiÿiÿ^ ^ ¬ ¬ ··ÿÿ5ý5ýÑýÑýìýìý

eeõþõþöûöû‚þ‚þgÿgÿH H ÿÿ''½ÿ½ÿüü@@..þþ6þ6þÈýÈýîüîüµµËË	 	 ìýìýŠûŠûÞÿÞÿ@@{ { óó..ýýËþËþÑÑññSÿSÿ~ý~ýÚþÚþƒþƒþj j Ø Ø dd› › œþœþª ª KÿKÿ#ý#ý//úÿúÿiûiû= = „„òò:ÿ:ÿA A ¦û¦ûÏúÏúÚþÚþ__2ÿ2ÿ5 5 °þ°þ,ü,ü’ý’ýââ§§ÝÿÝÿZüZü—ý—ý\ÿ\ÿœœ¿¿éþéþvvjüjüíí\\NN&&ñùñùqqWW××¯ü¯üªýªýÌ Ì ‹‹AA¾ÿ¾ÿÿÿÿÿ}þ}þªÿªÿ    àþàþ¶ü¶ü‡‡¾¾YÿYÿõýõý[["ÿ"ÿ ý ýôôllÎÿÎÿúú¦ ¦ ''ÃÃÀ À ÕÿÕÿï ï   ââ7þ7þ¥û¥ûH H 		ô ô LLttôþôþ ü üûûûûÛüÛüÙÙzþzþnûnû““SýSýÊþÊþyýyýƒûƒû˜˜àûàû$ù$ùÊÿÊÿ__€€þþ4ý4ýøþøþÈÈ¼ý¼ý¨þ¨þ		ÁûÁû°ÿ°ÿÞùÞùúú»»ÜÜ  ¹þ¹þÀýÀý¼¼ÒÒkÿkÿIýIý¤ÿ¤ÿôþôþv v „„y y � � y y ¯ÿ¯ÿ¹¹© © |ÿ|ÿ  ¦¦°°. . „ „ œœ¢ü¢ü££ŠŠ‚ü‚ü‹ÿ‹ÿ‰ ‰ küküþþZZXÿXÿÝ Ý yûyû×ü×üë ë º º ýÿýÿ¤þ¤þ��$ $ ¢ ¢ ðÿðÿ  ­þ­þrr™ ™ >ÿ>ÿ%%1û1ûËËÖ Ö ŠŠOÿOÿóùóùûüûüµµøøÙÙ]õ]õeýeý¶¶ððöýöýŠúŠúïïÐ Ð pÿpÿrry y ØûØûuûuûÉ É úúiþiþ  ììÕúÕú­­AýAýHHn n 99dd°ú°úùùÕýÕý¼¼ìüìüþüþüôô¬ý¬ýîýîý€
€
ƒƒ¼ù¼ùŽùŽù»»ÿÿ«ý«ý¬û¬û/ / ÷÷¨ü¨üii„ÿ„ÿ¨þ¨þYùYùéþéþëëo o ÿöÿöllÖÖÒ Ò ××\\…ú…ú·ÿ·ÿ$þ$þ´ ´ ++  •ü•ü+ö+ö¤¤llÞÞÙýÙýqüqüSüSüHH  �þ�þž ž   ÿÿ‡þ‡þZZFþFþÃÃÅÅöýöý÷ú÷úÅòÅò»ý»ýxxppJJ7ö7öÎõÎõÒüÒü§§¬
¬
ËþËþ ð ðAùAùööÏþÏþƒüƒüêýêýÌ Ì ÇöÇöíídûdûÙúÙú
 
 ØØÁùÁùûûùù/ú/úWùWùÙÙ««á á ÎÎaaÇüÇübÿbÿ– – åÿåÿåå³³LûLûXÿXÿïïõõ;ÿ;ÿRRáûáûFFffþþEöEöœþœþbþbþoo��ÎÎ®ÿ®ÿýý¦ù¦ù««,,GûGû'ÿ'ÿ¿¿­ ­ ´ý´ý[þ[þ××KþKþ�ÿ�ÿËËyúyúMýMý× × "þ"þ##¹¹éýéýnünüýüýüe e XýXý���ü�ü­þ­þ‡‡ýý™þ™þDýDý$ $   aa)ÿ)ÿQQl l cÿcÿxýxý, , ··âüâüLûLû'ü'ü……QQ)ý)ýùù++NÿNÿ¶¶‹ÿ‹ÿºüºüÊÊHþHþpúpú..4ÿ4ÿ  ññÀÀ‘ÿ‘ÿÙÿÙÿqq––JþJþÓÓ´´ÏýÏý=û=ûÃÃæýæý˜˜ÝýÝýûýûý3ý3ý‡þ‡þ22sþsþ	ÿ	ÿyÿyÿççŸûŸûþþØýØý·þ·þ  äÿäÿÄÄÔ Ô „„gÿgÿ¾ÿ¾ÿäþäþà à ¯ ¯ ùÿùÿkkmÿmÿ¬ÿ¬ÿÊþÊþÇ Ç ÀÿÀÿýýÏ Ï þþÿÿàà�ÿ�ÿôüôüxþxþääíïíïžž++^õ^õ	 	 ÐÿÐÿïïÝùÝùÍÍÛ	Û	ôùôù’ý’ýccž ž ; ;   GüGüþþñ ñ úúy y aüaü�ÿ�ÿ~ ~ „„ þ þjýjýEEEýEý–– ÿ ÿ<ý<ý#ý#ý%ÿ%ÿ—ÿ—ÿÒ Ò îîfÿfÿŸýŸý\ü\üÖÖ. . ÿÿþþ2 2 ÀÀ" " ƒƒ°û°ûO O ¿ ¿ ¼ ¼ « « ‰ÿ‰ÿŸ Ÿ ›ý›ý” ” ÎÿÎÿl l ÿÿÊ Ê jþjþÊÊ¦ ¦ 7 7 þþì ì   ÓüÓüœœ‹ÿ‹ÿâ â }}!þ!þPÿPÿGG²þ²þÿÿ“ÿ“ÿ®ý®ýr r <<55  zÿzÿ^^ÿÿýûýûžž´ÿ´ÿ  ´´ÈýÈýÕýÕý¾¾¹¹¦þ¦þ  ~þ~þÞþÞþššÂüÂüKþKþ22h h ‚‚¨ý¨ý••¢þ¢þ‹ ‹ øþøþ¦þ¦þ¦¦BÿBÿ© © ÑþÑþ×ÿ×ÿ¥ý¥ý-û-ûlýlýÇÇT T SSttþþuýuý‡‡‹‹ßüßü¥þ¥þöÿöÿ' ' ÿÿY Y þþTþTþpp¬ ¬ eþeþÜÜ‘ÿ‘ÿZÿZÿþþñýñýúþúþ4 4 ”ü”ü22‹ ‹ g g æ æ uýuý¿ ¿ óýóýÀ À ”ý”ý‘þ‘þ  îîZÿZÿööýýG G þþüüÔ Ô ¥¥ÙüÙüy y ÑþÑþüüÏ	Ï	ïÿïÿZÿZÿBBþþÖÿÖÿþþÔÿÔÿ¿¿“þ“þ[þ[þìùìù��% % ttýýýýÞÞþþ×ÿ×ÿ//2ý2ýbbP P «þ«þ  ²þ²þEE1ü1ü>>mm•þ•þssŒÿŒÿ þ þüü=ÿ=ÿSS++èþèþ¬ ¬   ³³ªÿªÿUU
 
 ´´ÿÿÎÿÎÿôýôý††}}´´þýþýmûmûëþëþÙÙ÷ù÷ù--¼ø¼øPüPü??HHÛ Û ÿÿŠŠÿÿ‹ ‹ l l ˆˆ%%]]›ÿ›ÿ�ÿ�ÿ}þ}þQÿQÿ™ÿ™ÿCüCüÌ Ì ” ” ØÿØÿ‹ý‹ýÛþÛþ338 8 |ÿ|ÿßþßþIÿIÿ•ÿ•ÿ  ;ý;ýaþaþìì5ÿ5ÿ1þ1þ  ÔþÔþ~þ~þIþIþî î ®ÿ®ÿÒþÒþl l ô ô ¢ ¢ » » ��ôôÐÿÐÿþþ°ý°ý¿ÿ¿ÿ^^00{{  R R  ÿ ÿü ü iÿiÿÓþÓþMM( ( `ÿ`ÿUÿUÿ÷ÿ÷ÿ¸ÿ¸ÿÕÿÕÿîÿîÿ¥ÿ¥ÿX X   ÷ÿ÷ÿ  ½ ½ ññ¼þ¼þ
ÿ
ÿ…ÿ…ÿÿÿ°þ°þ®þ®þàÿàÿ� � 	 	 Þ Þ ×þ×þ:ÿ:ÿ‹ÿ‹ÿ}þ}þ‡ ‡ ãÿãÿÆþÆþ�þ�þ¦ÿ¦ÿ©þ©þÔÿÔÿ·ÿ·ÿüÿüÿnÿnÿóÿóÿ¶¶øþøþÿÿ> > › › ~ÿ~ÿ  ÙýÙýh h 33KÿKÿÆ Æ \\$ÿ$ÿûÿûÿõþõþnÿnÿ½ ½ ÈÈ{{ ÿ ÿõ õ » » ÞÞiÿiÿñþñþô ô ýþýþüü&ÿ&ÿIÿIÿÚÚ˜ ˜ ccXÿXÿm m ôÿôÿtt    ‹ÿ‹ÿ00ŸÿŸÿ¥¥éþéþ00WWGþGþZZÚÿÚÿûÿûÿ� � <þ<þë ë þþ~ÿ~ÿKKÅþÅþ¶¶«þ«þþþ� � 0 0 àÿàÿûýûý´ÿ´ÿÿÿ  §þ§þy y ÿÿÅÿÅÿöÿöÿÈÿÈÿÿÿp p Â Â £þ£þÎÎ³ý³ý_ _ óýóýþþXX«ý«ýY Y ››;;ŸþŸþ  – – UÿUÿ..ÍþÍþ‹ ‹ cþcþ  º º ¡ý¡ý,ÿ,ÿ®®77WþWþÎÿÎÿ  d d “ÿ“ÿVVAÿAÿDÿDÿ$$MMôÿôÿu u RÿRÿm m UUž ž �ÿ�ÿ}ÿ}ÿgg™ÿ™ÿ¥þ¥þ] ]     		  ÿÿ›þ›þŠþŠþƒÿƒÿS S kk¾ ¾ ƒ ƒ ÏþÏþÛýÛý~ ~ 
 
 ‰ ‰ ô ô í í ñþñþ¨ý¨ýN N ÷þ÷þŠþŠþ#ÿ#ÿŠÿŠÿ¯ÿ¯ÿ–þ–þúÿúÿÕÿÕÿu u ··� �   Í Í ¾þ¾þþþþþ) ) lÿlÿ``q q L L úÿúÿ ÿ ÿÿÿdd3 3 ÿ ÿ ßÿßÿ7ÿ7ÿ‡þ‡þXÿXÿêÿêÿøÿøÿ  P P ,ÿ,ÿ  … … ÀÿÀÿ}ÿ}ÿŽÿŽÿ:ÿ:ÿqþqþ† † �ý�ýmþmþ† † ††´´��¨ÿ¨ÿvþvþ* * r r ÕþÕþjj99  % % s s éÿéÿíÿíÿ  ? ? +ÿ+ÿÀþÀþÎÿÎÿ3ÿ3ÿ” ” î î Ð Ð wÿwÿ-ÿ-ÿ* * ( ( i i ¢ ¢ G G çÿçÿ¨ÿ¨ÿÿÿ³ ³ 33È È ±ÿ±ÿW W æ æ îþîþ"ÿ"ÿÔÿÔÿ„ÿ„ÿÏþÏþ‹ÿ‹ÿz z \ \ ÛÿÛÿ×ÿ×ÿ½ÿ½ÿWÿWÿ�ÿ�ÿR R U U sÿsÿ¼ÿ¼ÿÆÿÆÿÏÿÏÿÿÿÉþÉþz z Z Z } } iÿiÿ  !!ËþËþß ß K K žÿžÿ  ÒÿÒÿšÿšÿkÿkÿ  ñþñþ� � O O ¤ ¤ ÔÿÔÿ@ÿ@ÿÀþÀþÐÿÐÿv v ÇþÇþ  $ $ £ÿ£ÿ†ÿ†ÿÿÿÓÿÓÿ{{ÈÈ÷ÿ÷ÿåýåýÏ Ï § § pþpþssÅÅÏÿÏÿ¨ÿ¨ÿšš¹ ¹ µÿµÿƒþƒþÉ É Â Â # # u u   öÿöÿ.þ.þƒ ƒ ­ ­ ++[ [ ÞÿÞÿôþôþÿÿ„ „ ÐÿÐÿe e U U Þ Þ ÈÿÈÿ  & & z z ïÿïÿ­ÿ­ÿ&&VÿVÿ& & „ÿ„ÿÿÿ  ­ÿ­ÿì ì 88bÿbÿkþkþŒŒzÿzÿ

Ú Ú €ü€üÍþÍþžþžþÊÿÊÿÿþÿþ    ’ ’ . . JÿJÿ‰ ‰ ëüëüHÿHÿq q :ÿ:ÿk k ÁÿÁÿ¤þ¤þBÿBÿXÿXÿ  › › � � èÿèÿïÿïÿJ J XÿXÿH H äÿäÿ””‚ÿ‚ÿ³ ³ ««I I ŸþŸþoÿoÿAAäÿäÿÝ Ý ÐÿÐÿÇ Ç èýèýþ þ ÀÿÀÿ¨ÿ¨ÿš š E E éþéþ}ÿ}ÿ�ÿ�ÿ¿ ¿ }ÿ}ÿššeÿeÿ™þ™þs s p p ‡ÿ‡ÿ  $ $ **0 0 ŠÿŠÿ?ÿ?ÿ^^II”ÿ”ÿÿÿþÿþÿ‹ÿ‹ÿwwØÿØÿtÿtÿûÿûÿ••äÿäÿ6ÿ6ÿv v / / j j VþVþèÿèÿ´ ´ þÿþÿ#ÿ#ÿ§§ùþùþÿÿ­þ­þ>þ>þqýqý  ýýýý-ÿ-ÿÛÿÛÿttÿÿÏÏ¹ÿ¹ÿ`ÿ`ÿÀþÀþÎ Î 4ÿ4ÿ‚ÿ‚ÿ‰‰¸ý¸ýÿÿ@@­ ­ oþoþ++ÊÊ‚‚¨þ¨þ•ÿ•ÿ=ÿ=ÿá á Y Y ÉÿÉÿTTÚÿÚÿÿÿ  ttFÿFÿÞÞlÿlÿ9ÿ9ÿi i ˜ÿ˜ÿ@@êê” ” ¬þ¬þ( ( «ÿ«ÿÛþÛþ~þ~þd d �þ�þ�þ�þF F $ $ ^þ^þÕÿÕÿg g ÛþÛþfÿfÿ¶¶šýšýšýšýt t ÈÿÈÿiiã ã   àþàþä ä   ºÿºÿË Ë ÁÿÁÿþ þ � �  ÿ ÿ  ÿÿÄÄ÷ÿ÷ÿŽ Ž I I ÊýÊý{ü{ü‚‚  ”ÿ”ÿŒŒsýsý-ü-üNN¼¼ÇýÇý––ÐþÐþ/ý/ýºÿºÿÆÆÙüÙüþþ2þ2þ‘û‘ûA A AA�ý�ý~ÿ~ÿååèþèþ»þ»þOO+ + xýxý¤ ¤ uÿuÿÿÿ_ _ îÿîÿßÿßÿaþaþ´ÿ´ÿP P 88öÿöÿ˜þ˜þÉÿÉÿÜ Ü î î É É % % UUÁÿÁÿ4 4     ÿÿÍ Í ™™? ? [ý[ýýÿýÿ> > ÍÿÍÿæÿæÿÖ Ö ´ÿ´ÿîÿîÿÙýÙý  QQâþâþšš= = ,ÿ,ÿOÿOÿ´ ´ ëÿëÿäÿäÿÖÖFFÿþÿþm m ªªŸÿŸÿôþôþvþvþöö&&· · âþâþYÿYÿBB–þ–þ¹ÿ¹ÿ~ ~ ”ÿ”ÿ�ÿ�ÿß ß „ „ ( ( BÿBÿmÿmÿçÿçÿñþñþ(ÿ(ÿ0 0 tt……·þ·þ‹þ‹þð ð 3þ3þ‘ÿ‘ÿC C » » ×ÿ×ÿ¨þ§þÌÿÌÿcÿcÿ[ [ ‚ ‚ ¹ÿ¹ÿ  55þ þ [þ[þþþ¥ÿ¥ÿñýñýe e i i ¨ ¨   a a ©©ñ ñ ”ü”ü©ü©üó ó ”ÿ”ÿ{{Y Y ×þ×þÙþÙþë ë † † ÿÿN M å å õÿõÿÏ Ï vv<ÿ<ÿcþbþôþôþÝ Ý m m OO²ÿ²ÿþþZ Z ÉÿÈÿê ê ºÿºÿßÿßÿ´ÿ´ÿw w ´ ´ 4ÿ4ÿÔþÔþ{þ{þ” ” • • öþöþûûççÈÿÈÿûþûþ‰ÿ‰ÿ| | ›ÿ›ÿ;ÿ;ÿJJa a Y Y 
 
 ..Ï Ï ‰ÿ‰ÿ³ÿ³ÿÌÿÌÿÿÿ@ÿ@ÿÆÿÆÿ‘þ‘þ]ÿ]ÿ‡þ†þÇ Ç W W ¸ÿ·ÿ¡ý¡ýiþiþ¾ÿ¾ÿÕÿÕÿâÿâÿ
 
 ™ý™ý·ÿ·ÿ¤ÿ¤ÿl l F E ÀÿÀÿ ÿ ÿçþæþþþKÿKÿ…„$#*ü*üŸÿŸÿ¡¡ÃÿÃÿ	 	 OýNý··@ÿ@ÿQýQý§§”ü”üýýýý€ € ¾ ½ TT< < ::„ƒ98ýý8 8 ÉÉù ù þþ‘ ‘ ” ” ×þ×þKÿKÿ« « ˆˆþþá á ÔÿÔÿõõ  h g W V +ÿ*ÿ10  Øÿ×ÿ• “ R P �œ�Ž{úyúëê, + 2þ0þÿÿšý˜ýUS¶ý´ý{z…ÿ„ÿÉ Ç ¯ý®ý;û:ûkjnþlþïÿíÿZ X ÃþÂþCþAþ1þ0þ¯þ®þýÿûÿÂ À ™˜;þ9þîìDBùþøþK J –þ•þ'þ&þ:ü:üçÿçÿŽýŽýG G ¶µED  ýýÿÿLLÚÚøÿøÿ.þ.þ[\Q R 		BCï ð Ä Å   EGLþNþ»½”ü–üu w Þ à óûôûÐÑbd,-ãÿäÿdþeþ  µ·\þ]þ56»ú¼ú34ÿÿ  ÜÜœùœùÙüÙüÇÆµ³
ú	ú  þÿs q ÛÿØÿtÿqÿÉþÆþ:ÿ7ÿGúCúËûÆû¿ûºû~ýyýgþaþÿúþGý@ýìåûýúTþKþA8!ÿÿküaü°ü¥ü·¬‰}Žþ‚þþýñýâÕÊ¼9 + Í¾oVFÿÚÉÿôâjW"…rÿûþ/ÔÀ�þyþ’ü}üçþÒþE0N9üðûE0ÞþÈþ˜ý‚ýÂü­üLÿ7ÿ"þþ[úFúéÕdPâûÎûÍü¹ü%�ü|üàüÍü…ÿrÿÌÿºÿûöúïýÞý¬ÿœÿýý§ÿ˜ÿƒÿtÿí ß Æÿ¸ÿmþ`þhþ\þPEjÿ_ÿºÿ°ÿÞÿÕÿÍÿÅÿE = Àþ¹þýÿ÷ÿX S to±­HÿEÿ»þ¹þÿÿ——d e jk¯ÿ°ÿwz,/\ÿ`ÿ>BÄ É ;Aÿÿs z ½Ä¯ÿ·ÿI Q s|Öß\ÿeÿÎÿØÿMþWþ£ÿ­ÿ  * ¹ Ä çòpþ|þhþsþ»þÇþ{ ‡ DPÃÏ‰ • ¸ÿÄÿ� © ‘ � *‚ÿŽÿiþuþ>ÿIÿmÿxÿØ ã çòÿÿjt"+ÿ"ÿôþþþÊÓÞÿæÿÿÿ ‰‘o v ÈÿÏÿ  k r ˆýŽýG M ¼ÿÁÿWþ\þÿ ÿ] a ÿÿÛýÞýPÿSÿóþöþq t EÿGÿŽ � êþëþñÿòÿcþdþæÿæÿ  pÿqÿÿÿ£ÿ£ÿPPõþôþIHED1 0 |ÿ{ÿŽ Œ ±þ¯þ= ; MþJþ­ « ”ÿ‘ÿyÿvÿZWŠý‡ýÑ Î ÖÿÒÿž›Aÿ>ÿ¼þ¸þY U �ÿŒÿ‘ÿ�ÿñÿíÿýÿùÿ	Q L lÿgÿ²ÿ­ÿùÿôÿ'!C = ñÿëÿ#£ÿ�ÿŒ‡x s yþsþ¹ÿ³ÿÃÿ½ÿÕÿÏÿ�Šƒÿ}ÿi c   - & HÿAÿXÿRÿÄÿ½ÿÏÿÉÿ‘ Š ;5´ ­ ¶ÿ°ÿ üÿ. ( ÏÿÊÿÿÿîÿéÿi d ÈþÄþïÿêÿ¯þ«þx t ÓÿÏÿ`ÿ^ÿ ÿžÿ9þ7þ2þ1þˆÿ‡ÿ¸ ¸   �þžþf h ®±  ž ¢ >þCþ  =ÿDÿòþùþwÿÿÁÿËÿ@ J (q}ÆÿÓÿG U < L Ž ž •þ¦þn � Ðÿäÿ©ÿ½ÿÝþóþ° Ç Iax‘íÊ å ÿ›ÿ / Ç æ ³ Ó ÿ/ÿÿ?ÿÙ û 6 Y £ È ¬ÿÑÿ| ¢ ‡ ® õýþEþmþ
3•þ¾þ]‡j • ÖûüÁ ì .ýZýCþoþ=i¢ Î ?ükü­Ù)øVø Ìï´ôàôqœµ à çÿ ƒþ­þyÿ¢ÿöûü¼ ä Ìó4ZHmÝ ´þ×þ$ÿGÿÙú ? ÿÿ þüýš ¶ õþÿÓ ì ˜þ°þæÿýÿ· Ì ÿ#ÿ  -/þ=þ€Œ‹þ–þ�Šíõ¬ý±ýWý[ýÐÿÓÿD D óòäþáþç ã „  UÿNÿƒÿ{ÿÊýÁý`ÿUÿ  œ � n`Cÿ4ÿÁÿ²ÿÌ ¼ ž � ` N zÿhÿÿ ì ë × D 1 nÿYÿO :  ÿÿ1  ¼ § 3�þzþK6Ö Á 9 $ Óÿ¿ÿæÿÑÿ£�{ýgýÙ Æ œ ‰ ‰ÿwÿÏ ¾ ¤ “ þþ  ‘ ÷þéþ&ÿÿÍ À ¹þ®þðýæýwm@7ûûk e ¥ÿŸÿ¬ÿ§ÿ  "ÿÿN L ÿÿ¯ÿ¯ÿ  BDFþIþ� ‘ ÿÿe k í ô øú û4ÿ<ÿaÿjÿ¹ Ã Œ – ÅþÐþ�œE Q ÌÿÙÿ½üÊü!.S a 1ú?úƒ’‰—ãÿòÿ° ¿ o~þþÄýÓýãóRþaþKÿZÿ:I¦ÿµÿ%þ4þ#3 A ÐÿÞÿ.ÿ<ÿ’þŸþ��™¥†’kþvþÛþæþ¿ÿÉÿ ƒŒÿ"ÿ"*  ˆþ�þÖÿÜÿ÷ÿýÿmÿrÿá å þþq t ƒ † óþôþð ñ §þ¨þ>>Ž Ž ó ò +ÿ*ÿ üþû	&ÿ#ÿÓÐEBZüWüü ü½¸gb0 , þþýŸÿšÿƒ ~ ÿÿ¹³»þ¶þñþìþíÿèÿôþïþÒ Í 1 , û ö 
3ÿ.ÿ·þ²þ~ z $ÿ ÿOþKþF B ½ÿºÿäÿáÿ� ~ ><Bÿ@ÿ}ÿ{ÿaÿ`ÿ›ÿšÿW V ËÿÊÿåÿåÿ»ý»ý""N O Î Ï �ÿ�ÿÑ Ó   ¢     " ðÿòÿO R =@V Y ªÿ®ÿÏÿÓÿÿÿe i ae­±êýïýŠþ�þçýìý® ³ 49°þµþ¿ÿÅÿ4 : HMH N á ç !ÿ&ÿ¯þµþlráþçþ¿Å,ÿ2ÿDýJýˆ � 1ÿ7ÿK Q / 5 D J �þ–þLþRþ¨ÿ®ÿÑþ×þÇÿÍÿ#)­ÿ³ÿ”ÿšÿ®þ´þÑþ×þìòÝ ã R X eþlþÀýÆý  Ÿþ¥þgÿnÿ#ÁþÈþeÿlÿQX� ” ‘þ™þNþVþR Z E M   ]ÿfÿ¿ÿÇÿ©þ²þ­¶Xa7AÿÿÁÿËÿ�ÿ§ÿ¬¶« µ ÐÛ¯þºþÿÿ
 ìÿ÷ÿD O p{¦þ±þÿÿ~‰@LÒ Þ ªÿ¶ÿ= H GþSþ£¯xƒÃøÏø¯ º "-Q\FþQþŠö•öö ÅÿÏÿ'ÿ2ÿ¶ À ÿ(ÿÙûãû{ … ENFÿOÿ‰ ’ ’ÿšÿôü»ÃGþNþ]þdþioVþ[þ; @ º ¾ Ù Ý ° ´ ±ÿ´ÿ¿ÿÂÿ‘“&'<þ>þ()ù ù 4 4 ~ÿ~ÿ>þ=þ	þþ  WU¿ÿ¼ÿªÿ§ÿ+(ûþøþöþòþ—þ“þM H ¡œ”ýŽýüÿöÿH B òÿìÿ` Y æýàý¢ › þ ¹ ² J B dþ\þ~ÿvÿ5 , Õ Ì y p ±ÿ©ÿ  …ÿ|ÿÖ Í ™ � ËþÂþ=ý5ýØÿÐÿ† ~ 0)?8Cþ<þ:3Äÿ¾ÿ> 7 Œ † E?Ãÿ¾ÿÍÿÈÿ/+ìþèþÅÂIÿFÿ�ý�ýs q þÿýúù£ü¢üxüxü®®³ÿ²ÿ˜ ™ 5ý5ýtÿuÿæþèþîÿïÿ "ÿ€ÿ¨ÿ©ÿƒ … & ( Ë Í ‹ Ž äç¯ÿ²ÿ‚ †   vþzþõûLQ” ™ ðÿ÷ÿÿ$ÿÿ!ÿ= D /ÿ5ÿ† � (ÿ/ÿÿ&ÿÿÿ¥ ® — Ÿ &þ/þ " «ÿ³ÿ¿ÿÉÿYþ`þä ì ›ÿ¢ÿÔÿÞÿöÿþÿ‹ ‘ &ÿ.ÿK R ¥ ¬ FþKþÞÿåÿ!þ&þ“š1 6 ;ÿAÿàþçþE G 19u y  ÿ$ÿPÿWÿ}ÿ€ÿ{ ~   … Š NÿRÿÛÿáÿ,-&ÿ-ÿ-6VÿUÿ­ ± 1ÿ9ÿÝßæÿïÿ¬þ¯þŽ Œ Ôÿàÿ$ÿ
ÿÂÿÉÿ  îÿóÿ†þ�þ’’\ÿ]ÿµÿ¾ÿÄ Å ÐÿÎÿ÷ÿ Žÿ…ÿ,þ2þ«ÿ¯ÿÈ¿ÿÿð ì 1 2 �ÿ‹ÿY Y I H ôÿùÿ Q L fÿsÿS H ±²ÿÿÑ ß þþþþýSZËýÎýÿÿòï"$[ÿWÿæ û 'ÝþçþµþÈþÀ £ ô FÿFÿÿüþØýíý	Ñ Æ | “ mÿeÿðÿåÿÎ × � y ( + ›þµþLþ$þ 
 0 ; 2þþª Á  ñÿNx – XÿcÿèÿÈÿüÿ '¶þ¼þãþõþÙÿÆÿyh§ Ê ¾ ®   ^   .ì jþ’þœ ª ×ÿÃÿV z R 8 Bÿnÿî „ � ÿÿÞÿ ¢ X >ÿPÿµË y ÎÿÞÿÏ œ ) ž @ÿÿáÿŽÿ¤ Ô jÿsÿ  úþØþs h M  { hÇ NÿuÿÒ #´ÿ÷þïÿž  ­ÿ>  ÕýLþ” S Oõuþëþ·ý�ýHÿ¢ÿäÿ0ÿ¡ÿ ] Wr �ÿ¸ÿqÿ¼ÿ† (ÿÈþ[ÿÝÿD^"ÿ$þXÿ/ ýÿ6 Qÿëþ;þ¤þÓ{óÿ€ÿí 
Ãÿdÿ>ÿ�þ ÿ Aÿ0þp¸âýÿny ¬ý´þª�û˜ù#ÓúÒøûû¤2Pû°ú±UŸýþÿHþ¯ÿéÿ  I -*þ|ý3ÿ±ÿGþÿm (ÿTþ_ÿâþØþ® ˜ º Ûÿ¤ÿ{7ÿ/ÿR²ý{ý6ÿY¿ÿ O¸ÿxý†þÑìÿ± ·’Ùÿ•ÿ­ÿ #ÿ4ÿ„ÿBI %ÿþ£ÿõÿoÿ} VË µ ³ Õ X ³ÿÿÿ@ Òý«þH…ÿµÿ/ÿ9þÞÿ’ úÿ Ž  ÿvÿ®ÿ¤ÿ¾ÿGþÉþ«ÿ n þ§þç õÿÔÿ¯ì ¶ h ˜ý/þKÿO L ¢þ¢ªw+wþ*ÿ@pÿAþ–ÿœ 1 uOþéÿÕþYþ\ÿÑþµÿ¨þäÿF< ƒ µ : KÿCþ<þÄþŽ � =šØÞyýjùSû˜þŽ e+þ�úK Eò�“þ€üçþèò—`’‡¾þ¬û|ÿe [þ ¿ Jû$û0 ÎþÃþM % (× ˜þæíûÿ$ÿ7zl¢Xþ…üq MþNüÿËÿ ;% s þÿËþu ¹þqþ¸ ˆÿ<ÿ_ $[ ¨ûAüÿs —c ‡I ¢þaûýVÁ ? äÿüÿ)
3ÿÂÿ- â0¦ù^FÿkúûùEþ}ÿ1|½þEþgÿHýŸýÁþþüÃü¦þ7®þcÿK É ÑÖ þÿ` ïÿËÿ/ÿŠÿî j [ õÿ Îÿ– �]vì ¢þØüåþ(ÿÅÿç Ñ 2ÚuüøüÖþ¢†:”ÿÏýþø1ù
ÿž / 	 qü[ÿ²þ¦ÿ·È ôý’ rÿ¥þ*ÿwþ!þƒý:ÕjrþüÝû«ÿdÿ“ÿNütúgTøëBÿäþ©ÿ& LþGÊz Ÿÿ	ýü”ÿÊ¢ œþÄÿŒÿK �â ¢ýøþ=Œ™Ÿû¬ú¢þ¢�ð ?óq÷\Ð$ýWóøx	ªÿ¿Kô�ôWþÆÿ™	sÿù¾úþÉ‚ü8øcÿ.^îÿF �+ÿ±Âú÷ûqü÷û’ýþþÏy õ ”û/üWxü>ÿÜñ”â×ýåýö ñ üÿ”ÛHòþcþJ þ0ýIüzú´ÿ¿ÿ�ÿóÿþ¸²Š1ûÐ÷Rü[ <ÿü� ÌGÿ ø@úÚ ˆÿ�ÿ+	¢õ¶ ^ßþ¶—ÿêöú®�
ÌNó™ôdÿ9ÿ" ržwÿç þƒùûù0þÏ¡¬ÿ ‚ÿ¿þ8ÿüXû�P�þ9¶ûýo0— 9ýÃÿÛ %gî‘D ,�] 	GØüÅûÍýYþLüþŠÿÓÿUÿ; »ý/úLþîOq{ýû«þÿÂþœ…þ+ çþéþ¾ž‹û ýµþeûÚþ/ <Äý6þîþ mlÿ¥¡ýÓþF €ÿjü‰þcÑÿCû'û/ÿ| vjÊùTÍzüúSµZÿøû©‹
]  #ù	ú^ÿ_ÿüþ{þ(¯ÿ½ýXþä "ýD�”uÓý™ÿõÿÆÿéÿÁþ¬ÿ�ÇýƒúøEûÎFOªG�çÿ nþ¡þtÿèþ“ý5þ÷û�û�þ.ÿ;oéÿF8 ^þ{ü‘þU  ¬�Uþ)ü›úþ4*xÂÊ
z CýªüGúHû½þÿð‘Žý�ýëþhýýßü¾ÒèAý ŸÿóüXþ¡üT ë{Œžþnþ³ý…ý¯ùÂ÷MÿÛ ¨šïHþ/ûWüvþJ †ò]þ>ý¶ãþùýûÿaÿ9þZN­ÿb U  #üÿDÿÿÑü]ÿ_ÿ·þº (Êÿ·òúø3yû�c
�ûÙôý)–c‹ý«ûmÿ�ýKøÏý¿Â—‘ aúùþÓ Cþ4 �êU wúÙû
üTûWþžý.  ¦©Ñöâý†ýŠø(þœþý¦ý þCþOŠü*ü iì%ýþ™8� åþ“wÊú–ú Èýi†” ÷†ÿ£öTù… Çþºþèþ¡ûÕû§ üþ¦) `V"þãüIM¡ GN õ-ÿ	ÿû–ûÃ¾ þ% K ^ú)ü/ŽŽý÷ÜûZFý<ü íÉÿ"û¤ü6 N !=niõ `¸úÀûO² Sÿ( ]½7 Þ }ûû)  kÿy /ŠÑþÑÊÿ¹ü¹û˜ý­ "? OŽ Bÿ8 ² ÿ‹ÿÒù5ù‰»2(> L¾ú=üÚ &aÿ? ‰ÿ1à+ý-üŽ¸ ÷üa ˆ ñþ�„ù•ûHücýlÿÏû±þTÿ+ Cÿ üÿè íýá©;þŸÿ‰Ïÿƒ•ÿ©þûµüÅ› †ÿ×ÿIýóÿ£žÆýïÿ ÿ»ÿýfÅÿÀþký‡þ"þÚþ£ÿ_ƒ`ÿmýAþ^øòÿ6ý9 ~ßúý·ü¿ýdþ9 Íë Ó H€ü‚ü¬þHü×þûÿñä†� B Jüúûüÿüþ[û’3µÿ{Ž~ÿJ§×û+ûéý.þsûEû–=þÓ Ó Èÿ–ïø7ú§ÿ§r5ÿ>ÿÿÕý{ ¬I Yÿ¨ qÿ™ýŒÿJÿþ² Ùÿqÿ WÄð ùýûÈOÿÿzý,úyý&ý±ú¬û¾
ü�üÓüý Š6ýÑøëú,vá¬þ;þgÿ™ JþžþybþËþR4ã ýs¶þ°ÿ47²}¸Ü¢ýøþý úØ©™ú2þÍ�½ü¢ÿ Èý«ùÇüJÿ#9… êüBÿ¡ýzÿl¿û,ú�þW9J ÈýôÿHÙþÿÓz$ûû÷õ×÷wNÔ s �ÿ:KÿÊ Ç­þÿu ú¬úèþ$üþ>FÿÖþ	ÿû¥þƒ\û-ûn ãþ¢QýoýÝ‡± ˜ù•ù~8¦tø>ü«%Ãûsþ.ûÏüÇË ×ÿ*ýºú2Þÿƒ^³Š ûVü¹s|üóüÍþ@ÿý;üºþûþÐý<œÿñúÜÿ8u&‘ÿÊþ] äÐûÁúsû<ûT rþZþøýÿÄþKýEÿðÿ1ÿ^þàý£üÆŒ` výùü:—A ¿$ @ d0
ÿlbþ
ý>ÿ¬w ÿAÿ¹PD &€ÿ> ôÿ7ý-ÿWÝþmü& ÿZ 1S ¼ Ì´åÿ#Š �þCþyüìÿeÿ 
 Ûý;ú/û › ZÏ¹ý¤ý0ü[‚ÜW $ýëýã [ü‘l„EýïøLþ¦­Ìø ýµÿþÍØûXüyÿþfý2í 7þ3 »  Ñþ/²zÿKÿNþ)þÿ êî FûqÿþÚ å Ûÿ:ÿ¨ # âo|üèþ­þ™ûñÿû¶¨ý§ú÷ürÿcÿãþãþ	ý.ê *ÿ®ñü–ÿ¿ý=úäþ@†Úÿ®ÿ((ÿÎüì`¬ÿUÿÔLÿb þlþFø‹úYýÕý¦þ ) aÿ½‘‰å)ýVùîý«ûÍûXzÿ<þ�¤˜ Q°§úúüÀ‰ÿ7ÿ/þaü•wþˆ�<üÅþ$þ•ûýFÿp ëþ˜2¿þ¬ÿ0'kþªü€ÿ•ÀýÅûÏÿ‘”¸ÿþ¸©þYþüýrüQÑZú ¤Þü!×‘üüþ´_‚ì† ‘üýê ~ÿ�ÿŸþÕ’ vüðýñþÕ€ Ìü¬ZÃûÆû0#»üPþ½ûìøÿ‰þi ”ºµ­÷*üöÂÿÿýíúîÿÐÙüzÖ  úý0bŸÿ•þ´ýXÝBþ¼þ Œá~ mþ�ªþ-úFÿÐ÷¿fû<ÙÊ÷jô˜fþôü2þ•íöýC
¿ÿ lúÌÿˆÆ IIbû½àYõm	zžöÿ÷ï< ®ýþµüœøµr
fÿ�û¸ýö" (®ƒúüýg ]¨	ŸûøøOþ(<¦ûH  £ L_õý+út‚üæsö±ÿÚÿBû# Xý—øvÿúÂ š‰øîtÜ�ù€ûÝýñû4û®ùæ ‡ š#~�ÿ+ù›ú© 2þúÁ÷~û–Jÿ_ÿÒügüüþµÿØC
{ýûÒú¾û=ÿiüšúÞûúÁü�G&›
…�7	^þûýÙûšùÌÿ/ÿÔ÷†÷mþ® É0eÿºþb ³Ó cþè÷ëþªHývþôÿ$ùJÿ�ÿHú·!š
—ÿ÷ýn2(ý�û#±ûxú�ÞÿŠþûõþ¡;ñôûœûK)ÿÇú¤œLƒEþq }õ Éþyú‘üÅ‚4; ?ÿCÿ.û³ ÿÿÿ!ü×Q¼þÎü(ý�ÿ†ýrmÖü„ýýùý¨ ,Og& ¾æ¨ùÿ8ôöEÿ™Ïû8û¬ S ‹ ’Bûû5 Cþeþ¢L BŒþÝÿCÿõÿîÿHÿ)þPK4ûöøå7×ÿ«Ù Cüä5kþtþæ Íþ
üìüØüò è § 4Óü~ ÑFŽ $ýíüðÿ›ÑþƒüZ N4)ì¼† $øwþ•ÿS–£û I KûF ¢üqüÍÿÐý/,F`ñúSôKÿ VüîþŠþóÿ� Gü~ÿÅþ‹{Ýóþ<ñüÄùæ mÎôFô¶}ö��û¯ù^÷Zü‹	÷¾û¹üxøêùýEïøùB·íýyýùúú'úåü…C³»ú.þSR7\þøˆ¾ú9úãh· ´üVû÷üšB\—ÿ!ý{ûÀû¾“JúRüôÖþc ™ÿ@OÿfüÆû&þkÿ¦ öãÿ¡ýôó<„ Z	Ü×û÷©ø³þÿ•ûñúÔÿ{üqÿ±YCþøìïÔ	,ô}ïý©ù„°åó�÷vøÉˆÎóõ±
ÔGônó.ûûÛýMf–£É
´ö¸üüºö(ÿàtL/žm~*c÷cþ$ýÁ÷»ÿâàÿVÿˆŠ Ük,
úµþMþáý�-þÛú²ùõüÛ1* zü·ù'<{ýXÐöPôYý�ýí
ØSûý¾iÊ­÷úC ;úE.šn®ûþ÷&÷�ªh¹\ÿúÿ–eÇÿ	ý�Ú­ù`ý–œ Äý( ­ *ÿø·ú÷ú€ ÜWýWÔÍõÿö� «ÙúÛù8ûíöƒ	E÷õ÷–÷<’eævôÙø•ïWFôúû	oöEüû±÷×û³/}¾ñ�ëÿjkþµS
DÃžðÌè9ù	M”þEþTÖüƒèûæ®$!hKöÉîô€¶ø(â×ïÏå
¼
h›æìèÞ_ï9‘oðþú¥ùäøf 
„õNýÜ qÿúY™õcû·�ýAu®úLð^ 
î÷^ü«	å~!®àòúçùsý©Æxúr{ý  Àõ–öø¹Í©þ]úŸö	¯sõ?õMòf÷[Áyý@ûÃg EûÓø_ R ùV=Sýø Gþ«ú¶Êø ýBÛ²ÿÖÿøý¤ô òîø¦ü²ý×�êüÝ   ¨YéüþØùrúøüÒ9Jÿ² åþOû„
Ó	CùÌþ¨ý®ûÊïþÜú¯þV1ûq> á> GùÌþ þLýN ÿ:Jþ«û©éßûó ,þþýþè÷êÿ> C÷¹ù©ó?ó²ìÔ~
.¦ÿüó’õQmÅ:ú«úýþ
 _�cû©þx�
íhøñ÷HþÙý�Ä3úùô›øºú³o¯þý|¬VÇò÷›ô5ÐÞ
üiÿîþ˜þ	Ì ìúÆòŽûskþ“Uœö‰ú7«‰ 	
ý³ IWÿVþr…�øcûÉ „û¢þönþuû
 %ö ÄS	ë9 QÍúºûóÿãÿ°Ï&þöÿæýDü* EkÿjþÀ¡ÿ·ðý¥úîˆ	K “üiú5öL àøÿ]ELþÎýŠýÂýëû‹ýáýùgîÞ aÿ´™D%þ×þ9fþ	þ ÿ”ý™ þúÿèÿÈÿOü|þ»(˜<Áû5ü]p4ÿ@Äú«ø�þg Šÿ [ Ž hËþüøý÷ûM…þ™ýF ÌýÈôãüú‰Êbø^øjÿœh ‚ýþööhôÃ
6ÿÐ 3Wr ‚ÿ|û)ûzø²ù. L+n�0“}û*û$ÿé ‡ÿ¸ýÓúÅ „VþÄúkßEþý-üÛ Èÿhþ+ú�ù€ïëýÕÿVþøýÌúâú‰üÿßæÇ	* ‚û:øÒønýá~ gxþìývÿsÂÿÚùí ÏAþ–Iþ^þÙü¤û¨û#äìÿ9þ@ÿE;íþÿmý@ ÊÆQùûÈÚý¬þH¨½	Óý¿ÿiŽüþ7þ±ÿ¥Zýü Hß é Þÿ*ý•þ'€ ÑþÄüòýNáÇü›ü¹úxù½@ ¸B�ÿž Äú . ¤ýMþu  ¦'þÞ ¦Â
ÿüü¹ýýümþîþØûˆÿ°ÿZ×˜û "ýŸØ¤þÚÿª 	û(ü{ÿ^ý¦ÿ$  ýÇ¯ÅüèüÿŸúÄÿHüþ9¤/k¡<ÿ	÷_ýw” býqþ¿ÑYúÍûÝüÿmzý¨û¶þò	ž,±Ëeiý1û%õ´øP÷Ññ’ôôø|µiy¯-þ|ü¿ýŽ Ñ úÿ‚÷û~ÿ¸ýÃý<ýüÿüÄùpñ5ÐýDþÒÿmþÀþþ k^¯P D¢ÿíýùþe ™ü«ý“ü¯üŠükü	ÿÛ¨ûþÓ ËÓô <I ç *± Ú{fø¼ùþ.ÿËÿC º  žr÷iùÁý7ûDúËý´ÿµýQŽc¯*�þÄþµü|ùû5ÿfÀÜÿ, ‘Xÿùÿ< Îý ÿYÿsü[þÿùˆþ&ûÑý.qê'®þ´CÍÿ,ýÓüÜû°û)ý¯þ=ýIþ‰Øþ›™©ÿio �ô OþnþäþVý3 âþžûøýÑÿãr¤ÿ7 v  Ázýûûu ¨ÿ\ÿ¢ � ‚  ÿŽý< meþàÿ ýVýÿ¼ü´ýXÿý ÿœ óúÎÿ)™r · Ã ÿWþâüØþ­ÿ¬Ý 5*L Î§ÿ ­“ýÀ €µþœþþÀý…û5ýûý™ü< ýÛðŠ~ÿÁýÿ³þ|ý.ÿùx sÿKÿ1ý•ü’ÿ– þxÿÐ—á  	þ¯ýO ØÿG žÿl \8†ÿ;ý|üþ
"Òý= güÞýÙý÷ý5þ÷ýaýfyUÿû êÿ62€þíþö ; 1ÿ éýdüéþtþ@aA <ÿI Îÿ Hývýš«
òLþGÿî Íÿº áþàûXý©ü¹ýpþãü{ÿ‹ü9úœó~	�
âÿ€ûñþz ‚ÿ oþ¼ÿÅ yþþ„ÿ	ÿ£Cr ÿTüÛû¤ g'ÿ¶ýÌ ×þ¬~]Ðÿ GþüýGn”ÿÕf‰oûÓûmü¶þ!üØú›¢sø1ùÐõû_”m	Q	Üô&õ� ü#ê þíÿxý¤ÿ‡ì uTÿnûŽý£ ÿý]þ30üùdý� “ø)öRT7§È�îË	üýçø‘ûcÿfþ+ý; Àüödûªƒ’°KëÚ~ úü½þGôÝýfûÑ wK �Òþ³þ~ �¡ƒþ&21
Vûþ‚ügû"w�ü‡ÿ• +ûY	¡ ‰ ž :ÿ. ½; {üû}ülÿ
ŽÀÿyÿyüïþ¨Šüþúà1c·þfú¥þµàm‹÷ö õ*úuxÿó Þ  n Lý+ h·ú5ü–‘¯þ\ÿÔü²þß±
ÿïþ.–ÊZÔ ‰ÿ<ý2 «ýÿù†ÿ] ;zÞè b¡ôþ1ÿ(ýÅþ×U .øú/¼zgú�û ÿ· þvþEþîþ±þsÿ�ÿÈû"þÿÿö ;¬ûûý„ÿÑÿ¡Þùý| þÿ°ÿzÿ ÿ«üy ¬¸ÿîýþtÿŠÍü¶ýîÿ½ |Æþ7þ� �þM ûŠüªÉhüÑý.¤ ©ú< Éþáþª¾O÷ý‰Wê÷„ù}0úmþöþý6ëtü‰46à÷Òúw¬ã 2 úü0ú—ú }ýÿrÉÿŽkþ° †|üŒÿoþ»û,þžúÇü þ"ÿÅGÿv?ýÜþ=þèþ0û&ý‡	 H ÙÊþTfH÷Â øýþº Eç® kþ†Þ€H¤üuÌþoýþþ]þ#ÿ~Gþ ÿ†ýCüSþ ýøúrúV åÿ³Z &ÿü	È ýXý5ÿßÿ)üNý�iÿUü§þ5 8°#ûþ¨ýd<ÿ(þ–ÿ1ýÉþ1ÿhŸ �«þÿ­þU þ¼ ¸Ú Ö ñúüëýSþÿÿæÿ�ÿB¶þˆû«UK!w#ÿÐÿª:ûoúµ� ^ÿÀf Ýÿ— ¶þl ýýVüçVÿ† “ý#ÿ‡oçÿDÿJýÿXþÛþ� ÿ>þ@þ¯½þGÿ 2 çTŽ Ûÿ-5úXþ¿úÿÿŒ Ù J X› ‡ühþZ£t åþ¥õÿ»ý X Ÿÿ÷üJùvÿ¸9ÿ ÿ¥ýýb„ú Àÿm…E çÿD÷ªõÑý±A{ýó+³ £Œÿ?üVÿ…SÿÏüŸþÚ œý8JÿiGýþÿÜýªýšý|ýùÿÖNÿ]ü�þ¯þ£…YþÃþ	4ÿ˜wûšüÔÁ —ý¿ÿ6óÿ‰ÀýhýTþFúRú$þÊ²Ê…”}þfþÿL Ûi™ÿ}üiýÄ    ÞþZ   £úÑúk™¿ÿOüþÊ:ÿS$þ ‘jþoþç†Å u  [ 8{þ‡úWü  Yéýýø Òþg »ÿ@û›ÿ*ÿ–ýìðÿû2ûiþ�•ÿf ¾Õü¡þ™(_}ÿ¦ Jw£ñû‡9\rÿfûäùÍû3ÿïÿS'üeþ	 XÿhþðÿÔ¥Õ·þª ¥9ýgü üJÿG“þHþC �ÿ†þõýý6 GŽ uýCüç Ÿˆ � v£uì¼þHý%ÿz &üÀþ8ßþ" Âýæÿ2uÿÿ“þBü« cþžþ”ÿ‹6Øÿ•„Y ² "ü˜þðÿ¯ÿDnþZýWÿÎügþ™mRŒ7ÿØý` Ø Qÿòý?]ÿ‹ mÿ‚ÿ¹ÿ¡Lþ©ý æù¹ú\ªþ_þWÿýeýmý‡þðû€Š ÿïü�ú�ø¢ (þ’þùÈßÿ-T‘ˆ¦*j†ûIþPö àè “ÿX m 8 ¥2ÿ·þîýŸü|¦Ký3ü\ÿªÿX ¢ mè¬
ñÐ vûŒþ¸þ–ýÇþˆû¿üÎ ½ò IýWÿÌÿ, 1)ÿ½‘xüäûîüüÒn£ûOþ_ÿ�þK€ÊýÒþL½þ> ‘ûèú�±wþyþîþµÃ Øýx ý½ ŠR ‡ ÿûrùýÿq‡þ$þÄý–þP £´”ûoJÏþx ÿIúZþ¬ °Ä-ÇWCû üVG�ûù“û¦û¿üyþ/"N£Dû�øüCþâþ@ÿò #ÿOý Xÿûýä {ºóøÃ ¨ø[ûCÿ�þ ¡þÿû _ : ˜ ³þ_ÿP Èÿ! [ çU€ýwý+ÿâüÒï
 ?ÿoÿGþ,u®¼týçþ÷úçø¹ú–ûèÿ0ÿþ Ôþ;ÿZ:þµþú Ï¶ŠŽ ¨ÿÖþžú.ü� ÿ0þäý~ú üûE ¯Xl¼NýÛýÖ < æþðþÂ C Ñ=ÿ!þü‚ý ÿÿ 7·h ŸûÚû�üCþß•ü¶þÅ79¢ ¡DûùÊø9 Wÿöÿ¸àÿ øùo÷Mö·-C±Ö÷øÈùZ uÿˆðÿVÿ¯úaù�þý ÊÀ� øÿ%üBý(9 ð Ú ýAþo x �Š )ùOû™€ÝEü&þÿ¥üö_ø“nö<ölùúú8ÿ•ú¸ýNøÿìq	I	çýÓü¹úŠü}üIú&ýÅþì ÿŒÿïÿëÿyž¨O8ýŠýÝþSý4 <ÿË nVÿêûÿÎþùû¸þ ýþÊü¯ý½ ¨ÿ¼	¤°2ûrøG Þ„ûsü&†´ù�ù† (áÙ\úØù6ÿAÿšgçøÞú˜ »ÿ# rÿ~1¼ù
û4ûjzø¯úyÿíý}ý+þEþkþvuÿÃþoÄ Ýd·Ð¿øôøhª-úšùäþ•ÿ”±ÖýÃüQDý€ýáÿú Ñ\ žû
ý”ÿ¨ÿÐÿÿ5 ‘ ;ýºýk2  þúÞûRü#ú‘ Àâ÷• êÿÌáèÕ- ¾ )ý+ý=þ€ýxÿÊþÓãV| Ï�ûýìýDýËâ�ÿkýbÿøÿïýxÿûþ�ýÿŸÿþ(ÿJÿœwgÿ™þh ”ÿÍ Ñþ¼þµ = c¼` øýFþÈGÿÿ` ÅÿÛþX ìÿœÿá–íÚ˜Iu Îÿ"ÿÍþ" ¯ áÿ�ÿwÿ¡ÿ] o 1L= Ë eþ©þä
º `› $ ÿ4ÿ† 
K šÿÿ¹ÿxÿÁþ“ÿ  ÿYÿ/ÿþa å � ( N  OýÑý# ÒÐÿ·ë ` "÷Óú²û;ÿfÿºùƒ /õ 'úYû„þ þwû¹úÖû4ûW{³¸><¯þ¢þ	ÿkÿÂ$` „ÿÓþéþ5ž,ÿ¥þ‹û\ü} ÖÿK« êÿBÿÿÙþ"Ù°•‘ ú Ä � ²ý{ýWÀÿ¨ Ñÿvÿa ÜÿÙ &Ð Ç `þ„þ¢ÿ*ÿ• “ Ñ Ã cþÃþoþ0þ­ÿýþ²ÿ} êÿ¸ÿ–ÿbÿŒ—e 6 þ•þZÿÿÿªþjýÚý7ÿ:ÿ ¸â rþ[þÛý±ýÌÿ# ÷þƒþWý{ýO � ”ÿÿ» +a ! ’ k �ÿïÿÏ x >ÿjÿÏþ¦þ  áþÿç`¿þïþ� ³ °ÿ\ÿX t %8ÿ(ÿ:fØþ¯þ÷ Ù $ O ]ÿ@ÿ6  ,ÿÿÝÿíÿ'¨þþ®´ñþëþ'ÿ-ÿý >þþ‡ ¦ ÚþÉþÿ„ÿ†ÿ�ÿË Å ê ‚ÿyÿŽÿÿ�ý€ýÚ ã g _  ´«z v 4åÔ|{ß à qs? L ñ Ø $0ÂÿÀÿøýüýBüRüÿôþ@ L ¾ Ì øÿéÿ	ÿ
ÿ¬ÿ­ÿ
   . oþhþ‰þ~þ] w �„¸þ¶þªý±ý„ � B 6 ÓÿØÿ—ÿžÿòýåý™ÿ¦ÿ®þªþòþïþ€ÿ‹ÿ|vš š Ÿþ§þá Ý ˆûŠû[_A<åÿíÿFH�þŒþnÿqÿ0 1 05ôò® ­ mþsþªª­þ°þãþäþdeŠ�EýHýiþgþSS«ÿ¯ÿ;þ=þãþåþ§ÿ¦ÿt x ¬²Ÿýžýþþ/ 1 ‹ � ~  ’ý–ýÂþÄþž Ç É ÿÿâýäýÚÜâæÿÿ¯ý«ý6<JÿIÿôþøþÿÿµþ¸þ–ÿ–ÿíÿïÿT Q f h " ! “‘õþóþ7þ:þÒþÓþŸ š ªÿ¦ÿ‰ý‘ýˆ ƒ ¶ ¯ ‚ÿ†ÿ~ ~ á Û þþ`þcþÀ¹��«ý®ýõÿîÿúÿõÿìñZÿYÿ‘ý‰ý+0þ‘ÿˆÿb ` ¯ÿ³ÿ‡�§þœþG H ì î GþAþÂµ9ü=ü-/úêÿÿ‰ÿ‰ÿ²ý·ý: ' Eþ:þ`ÿrÿ™‹QA‰‡°ýºýFþ9þþûýþþrd¨þ©þ  �‡µþ½þV@3ÿ8ÿZþNþ.ÿ*ÿ�þ}þG 6 EUé‚þyþÜýãýOJ‚o• ~ AKÿ0ÿÛÿ¾ÿKY˜þ–þ84º�b r Ÿ ° ´ý�ýŒ|=þDþéýúýx S ßþÃþ]ÿxÿãüëü� o Æ ­ ÿ=ÿYþRþüÿÄÿ þÿ� ± æ ú À ¹û×ûÝÿõÿ*Hýý— Õ xý†ý|.‚€ööÀ°F3ýøüOýßý“Yÿý¸ý’ƒuLý)ý„þþ&Š«ÿ}ÿÎý×ýôÔZþGþcý›ýÆX _Fÿ
ÿE)ù -é { àþnÿ ¶ÿÛþrþ·ý:þ%LFÿÉþ|þ — Ÿ3  £ÿ:ýžýŒýÙý  ® ÚÿÂ \û÷ , ñÿôÿ¦ýøý*ÿÿ²ÿvÿv‚BŒÿdÿ<þþÁþßþÅÿóÿ
¡ ËþÕþ B å¶++¾¨-ÿÿ¶ýôý'ý!\þìþ( ± T -ÿ' Ÿ z°®ÿÿ# øÿ€ÿoÿ
 “ Ã îÿýÿt Z’ÎÿÿÜþ+ÿh “ µ Ó ´ ¶ÿc 8u Æ ïÿÔþãÿ´ 
 uÿ�þÿTWR 9ÿþ™ÿ\QÿšþÏ a ÁµþìþIÿ+þyÿG Û 
 õÿÑþÓþÎþ°þ L �â ^ KÙÿxÿÿ*þ, X| B >¬ ‰þÎþþDþÌRþ|þÛþÒþ6ÿÎþ¹üNý¶ © ì u Qtf­•ÿxÿuþEþ>ýRý›ÿ¿ÿ™ | Ç h �ýjþ2 ¦ÿ k ôýNÿ~ 1 ãÿ0ÿp&@ÿw ÿrÿbÿCý›üxýµÿý «þ Ëo : 7¦þóÿÇ äþª <µþØþÑþ˜þe'b;�ý*þYu2	ÜþÏþ<  ÿ½ÿ” ƒÿ'þñþ·ÿõÿª“àÿD ‚ < ® §þÕü«þ`ÿ0Û­ÖÿÅÿ¨ÿÏÿ¡ Øþ-ÿ{  1 TÿÛþˆÿ* [—¡dýÜþ2 ·   üý‘ýþ=Âº Q 6ÒÿEÿæÿ½ÿ‡e a ‘ÿmþèÿ ÿÿq/ñþ¨ÿþæý¯ _ ´ HœK; Œ  ¸ÿ� w ±ýþ$  Hþþ2 µ ö Œ úïÿüÿ3þ;þÿþG ÀÿDþ+ ½ÿ?ÿ> KfÿWÿ‘ÿ6ÿ‹ y‚   tÿTþ$ÿj = ·þ„þ '  µÿ›þþéýBÿPÝþ„þ¸ 9å£ÿÅÿÂþ_ÿºÿ-ÿ8þ�þÒý'ýDaˆþÛþ6
– Í ÛýÙýAž Ê q y þ Ã ³‹ÿ�ÿ½ÿ~þ�þáþßÿ& ·ÿmÿ$ v loÏÿ1yÓ§ƒÿTüYýþÿ]  , ¢ÿc£�d/:ÿV óüBýÿ$þó” AÖ G K }ÿdü€ý´ n¹¬þBýrÿI  Ž ÿÞþ0 ž ' …ÿí )  œ _ W  ™ rÿ÷ÿÃÿ½þÿKÿƒí“þbþèý{ÿ�ˆ|ÿ·ÿ¦ 4 ÿÞþ=ÿ ÿ JÿF .ÿ�þu %ÿ66L‹K’þdþ: ÿÿUü>üšýþs nþÈú;û– ?´Êª¢l×Rþ¡ýþsþŸþ˜ÿÑ `�þ)ü¯ÿóÿ™l¿¸  þ  §ÿ: «ÿ(ÿ¡ÿ|ÿ?« cþ‡ýµÕm[8þâü{ ¡ ± @ýÞýýý˜þŽ]«ÿ¹ kQ  ©Óÿp +{ =þÎÿRü™üÒþ6þ| ¥ e¢• ­ —þnÿÍOBÿ–ÿ8êÿnýµü%ýsÿ'“ �S«ö9 ·þ ûüû¶ýJþ:þßþÌ œ ÁÄ±Úò�¤ýäü�üiþ§ ” µÖÿ,ÿdþTÿÏ ”Ô dÿÒþ� ×þ¿ý¥ýýÍ è e œ hÿ¢ÿeû eU £ýÖýUÿ‹þÿîë l vYÿ ÿ«þøþöþ,ÿüÿ4 " ÿCÿÊÆ óÿ' Ò b40òüsþ:ø ×ÿi ?ÿr Ž €þ%ný0ÿÙýýþ‰ó  ”ÿ© Jÿ' \@ h ‚- íÿRÿêýK¶) DÔþ:ý{ ª \ö +ýïþ‚ÿ´ÿÍ R £ Pÿrÿ# / Î0"þeþ²ÿ� Êÿ! H³ÿ5ÿík´cþÄþYýþâ ÿþ Ê¸ÿwþCÿ¦ è Ù‰ sþãýnþòÿ' r²â æþQ ïÿ
ÿ" ‹ÿºý‘ú~üÿ v AäÙÿÐÿ�ÿ³ÿ²ÿ+äÌÿ4ý[úhûÝ €Òïý‰þDÿ†þóþÕl / Ã cý8ýwÿŠ^ÿzÿ¨þÀþÉü·ýÿÿËþï  í™³²þ+ ½þ@þÑ þÒûyÿ-Æÿ)ÿ4 l 7þxý¨ý[ÿ¿ÿÝû™ü¨þÖýÆÿ¶Ù ç”ÌýCû¯ü. W’ë-�ý<ýN§º ERÿ}ýÆØbÜ ­ý`ÿ(ýáûòþyûùeþËû'”Âê ÿ�ýÌÿ:ªÿìþÒøì÷D˜_‹×ù«û—oDžNþ
 Èÿeþ# 5ûzúÀ'Boþ¥ûþà ûèü@îëüû| ÍÿeúKÚþz Ïý(ýäÿ¤ÿ{þ (Ûþ:ÿ}µþ[ú¾üí_¶¸F "þ²û²þR« þ} 0ý[ùSÿÄ’& Æÿžþ>¹ü{üGþùûyùgùøLc£ËþYý¶ý¸þYýšª¢þÜ“€4 ?úkþlû—ÿ„ü]üXYþ1�ý‚ 1˜ È 4ýý¾úOü®þ ŸÝüµÿÛ˜®Äøqü`ä£8øú¹yù_ô»ýúJô ªüÏûº(ãÇëÜãù8Vh\ô†î•þŽ•JœD ”ö`ýðþþêö+úöW¹ ¸Îö ¹îýüýeþý³øçýh �â„þ‡ùÿ±ÁÕÿEü–ÿEC{ Áøêú7ÿ=~úþFÿâüé ¬ßþü_ýþ·ûý§X,Þý/ÿ¯ÿ˜p‰ü;þ‡ýÜûÆþ^Íû&N |ÿšÿ†ÿYÿ¹ÿ  W ÿ³ÿEÿêýÅûƒûg ¼ % ¥ÿ¶ N„j ï ÿó ;ýûÆþ8 Úþ~kœÿ,`üîùOüƒûAä–¼+ÛÏùþ íÿŒü]üÐþdþ6ý�ýaþr Òð4¨o þþyþËþ§þ–þØCðþÏrþ øòiyÍ¨ü¢ýCùYúàþšûäÄ
Æ3‚ Hÿmùƒþ¹ Öý þãþñþ¬þÂÿIþ k\ —\hœúü.ÿ:ÿ�þ‡ÿ
ý:ý$víû›ü3ÿÅþ õýõ� ‚ $‰Éö¸ö¹ÿÜþÇñþ0ÿZùÈø!ÿº €lÿ!ÿý�ý¼Øñ¯–úÍù¶ÿ 8	‡þû¶üÈøãùäúoúO	ºUýÞú)þ‰ O=¦  ÐºË gþ†þì nÿIÿÆÿûúUüj âþ{ý´ü� ¬ ÂÿVÿîÞ ü0ýþuýê,> „Jÿnþwÿ±ÿMfÿÁþ;ü9ý)?K½!ã †ýÚþ£ÿ4ÿUýDýxþÿŽÿ²þ £ÿÝ À -ÿÇþÎ G  ­þ‡ü7þÈþÃÿÍþmJÎÿ¶y ’ÿ�ý@ýÚü=8 Öÿ…ÿ¤ý¤ÿ dbÿ»ÿzýFüÀÿìý©ÿ’þ�ÿK ¿+�ð¥ÿVþ©ýÎûŠ© ¯ ý�ÿ{â	 hÿÉù'ùÀ®¥Gv÷²ùGþ vLÖXrOú„ùHýÀý¦ú†û©û-ýJ´·� 0ÿÜý—þ_ÿWãÿÿÃðýâý9 L ÞÊ‘ ß ÎÛ�ùÔø ÿ0ÿ…^kûµüÔ½Þ€[ #ÿ“¤Ïý¥þ½÷¯÷Zç
h ëú¼ù�
	Ìù¶úÿú¸üÈ'<ûbû9ƒþýÏüF[ãý § žööóóØÿÒü&ãSp¶OØþÔÿêøN÷YtˆþŽýàþÍ Û`üüyuC8~þ£ý[üXþ $ Ç ¬üý÷qq Zþjÿ¯þÍþ ÎüÏþ¶”SD &þ �ðÿ	 *ý$þ@ý\þèþÿáÿG JŽþ+DÿôþTb™H9ùçøÿ-þÜÃJþ
ÿàià¦²ý‡ý Š hÿ•ülû%­0pÀüŸý™* OnUþIÿ„µîýSÿûQü’µ[þ¨ÿ‚ ƒÿÏ Ðÿ,ýwübþi Åþâ A€< þýrÿÍÿ„ýÿ¦ÿ$ÿrXÜþ@ý? Îþ¡ þ ü£ýü\ý¯ÿ‹  ±ýà z?	Ñf#pûûªûìûiþ>ÿúþ<üPüµþÊ  %›�Åcþ ý=û›ý ýßûM E*+ Òß ¹Ñ �û�ýCûsüp´™øþ>ý< ‰LíhYüÁýfýpüüþÒ W Tblþšþó ­¸ …ú4ø0ÿ ø –ÿ$þÝ…h“·Ô£ ÍýÄüSýÉý¶ÿ< ß ? *ÿwþ©þþÜþŠþ«ý°þœUíÿZ õÿ þ±ýý±ü0‹zþ� ï %þ2Õþ¹ÿÅ š ý T ,û	úÎü …Hà«æÿåñ� Ñ FûÅûÒý¶ýeÿžÿ† [ÿDþ:ÿ¯ÿK ë 9ÿ9Ð“ÖÿC  äÿýû¦ûÉÿÒÿ-Mÿ¿ÿWÜÿúþd §>9þ³ÿmý™ýÑÿ2 ¿^qyÿDÿ“þþ'Þ}ýÍýêý@ýy ¡  Sz«ÿ2þ%þSh9 ÿÿþÿŸ –ÿ£þäÿUÿ?þsþ«ÿuþþ«aö„<Â �ûýJ–ÏÿþTûšú·ýGÿÄþU „ú JÿÈû~ýði<Gïÿ·þG Atþóÿ²ÿLÿþ¯üdüsüëû`ý` ³ ™� þþÖÿ Éÿ¸ÿJý êþ ý Ðþšýp?±î , • ÿ ½õÿÛüþß ¬ÿUÿu_n œüAú)ûþ,åýïýúÚ÷H C f ã¯ÿPþ“üüûµ üD ·þûÿÁ ¥ —þŸýZÿx0rÿ�ýRÇä×€ OD£þÉü|ýÇýPý÷ý›ÿc3†Ãÿý7 - èü£%Dùáÿ_ Ãÿ® `  þ–ÿ~£ÿìýðþ¦ÿÊÿÿ ìÿÈç_þeý—û°ü	­:éþµý¹þ•ÿ¾!:¿¥û{ü†A >þyÿÄþKýiÿ™Ÿ“ùëÿj ÏÿþOù~ü³ H @0 �ÿ®ÿ)ü@þÓ þ¡ ‹P–ü^ý…þ[þç W ��ÿÅÿïú§úxý`ýå ˜XÖ!‰‡ Müíý¯ÿÿEþôüÅ Î¥« iû=ÿ<I  4  w ýý'  eýžÿS ®‚* i ÌÆû¡úÎ � .  ! üþÉ3©þ$ÿ|ÿsþ~þ¦ / Eþ´þŸÿžÿþÿ]? Lãþküýÿ‰L Ü ìþþý s „ø¿:/þCü·ýyÿPHÿfÿ²ÿüXýÖ ýþëÿYS ÿ‰ Ëìÿx-ä ûêýêÿwý´Û0ÿÅÿEý-ü"·åûžÿÝ d >ÿÀþLþÿ¯þÐþüzûYýÞÿ( *ÿM òìÿ2üÝÿšQÿü£ÿÛÿ—ÿ	È )üûÿ± Îüîýå8àÿ&0 )íÞþ³ýúÿÿý¢ÿ Žþþmë&˜C Æÿÿ7ýlü
ü�ÿÿKþ2 B‘ûÍø­þ±þyü{ÐQ =²ëáäóBÑñ&ê‘@ß	r0î`êÜ÷ŸúöúŸ÷…cÎï¿îÓÿ�ÿ¿ü§üý1ÿŠþóý~ý&7ñð`ñº	2ãç ~üÔÿÀˆ�û¼ûíTØ¥ÁûþÓ 2üþÖ �9+þ8þ ‘9 ¼ýî Ê¤W&s ‘õîü”úwž8ûXú›�“ 4Èü9ýýåü¡ Fõ ¶ÿjþ rGLôü&ÿ| ³þþ¢üwûcµãÿ± ¾ÿçý~ýÿmðhÿêÿ,`Fÿ‰þdÿ .ÿ…þIþíýÐþðýhyn ‡ è R ËüíýÜ - sý#þÿ$ÿh Éÿ>þòÚÂø:ù&Æ 9þ÷ý¸üÿü'ŸÛÝ«¯ý!ýþ­ýÜ _ ²ýý¬þ»þR�Åûz / k%Í ­þîý¹þ1ÿŠÿðþ+ Q B?ŸþrþÇÿC F  &ÿÅÿ¤ü�üˆþÿYuY Œ Eo­ù„ùÃÿêÿŠ ¯üüo4Üa·ù.ùbÛý(ýè°hÿÇþrQyþ%þ{rÁÿÙÿœÿ§ÿQÊµýÛý�%×þ+ÿý“ý1»ìKRùïù+ÿiÿÊ:H>]³ÿÁÿIþ#þ­þ…þÿ´·¾þ[þÁü]üÏ \ 0ýÛü —E°üvüs ? ÖÔÇû¯ûû1ûb ‡ x°� ¥ ?ýƒý~§¬ÿæÿ}û«û? i Ñ ù ï· Ö ”¤† µþ¾þÞýôýÁûÊûËþÕþcÿnÿîç%,ž‰ZûMû‰þiþ æÿåÿ¹ÿë«îü³üû«Füïýšýg  €û1û{ÿ3ÿ¹ÿ€ÿÕ�‡j´ÿ™ÿêþçþ¥ÿ­ÿ7 H nÿ’ÿ×þùþ¾üîü Ê: g mÿ”ÿ;Y[ v ‡“ þ§þ€ý|ý�ÿtÿÍÿ¼ÿÇ¬~ÿaÿ‰ÿkÿD&Ëý°ý:$*oÿeÿnÿgÿ¸ · ¯®  £üŸümÿhÿ5.4  Ë¹dûAûù Ñ Ô¨{ûDûÞþ­þË ‘ tBî ­ † ÿðþ÷ â >>–þšþþþÍ ì Ï ï ìÿ >ýgý : GdDÿ]ÿØß† € ª™äþÀþo > éÿ©ÿÁÿÿaÿÿïýŸýy4u, ßÿLÿ ÿ6  �þ‰þØÙ , qþ¢þH~§ ò �ÿÍÿe ª eü¥ü# F �¸äþïþÜýÁýÝÿ¯ÿ8ô£ÿAÿÓÿbÿ�ýþü O Àÿ€9þ»ý�þ(þ´pî 0ÿÿFþVþÚûÞû{þÓþä8[ÿµÿÌQ»û4üƒÚþDÿBø©ø/‚Ëûùû‡¤�ý†ý÷ýðý_Rñ ã ™ †ýý þ*þÍe#ÿ¶þä ‚ Wý'ý“K¬—YücüŽÿœÿµ Ù Þ…ÿæÿ®ýäýwÿ£ÿ|èÚûòûp ­ g ~ ¢ÿŠÿ³¿ýIýOZ²ÿ»ÿ® < 1FÿÒþ| o ëþÏþÿ ç í ßþàþ;¡ù“ùŽÜ = ïûÅûŒ üüdØÿ2 ;® ÿ5ÿÿµþµ‡sV(™uÖžþþ¢þ�þªþìþ9ÿÉþ1 » •r�þ…þ¬þZÿ*å  m ñý-þSÿdÿ«ÉŒ ¤ ¿üÉüáÿ•ÿ’þ¸þ$ ¢ÿÈÿ >S D € C"Gˆ ïýWþ™ÿÿÑ>� Šþöþ"“ÿ;ÿ›€Òþ:ÿãÿŒ ëýuý9 ‹ ˜—þcþ�6ÿ7ÿ’þ!þìþ©ÿÿàý®ý†ý† ›\œ‰ÿíÿøþÑþ‘ýÎýTö5^ý4þÁ’—þ”ÿòÿÔÿý˜ý9ÿ mé:¡…þþfÿ F9 ¨þ%ÿ xÿ;ÿÿõ +ê7 f óÿ< ¦ÿŒÿ Ì ßqá÷Ãö# ­“k;ÿ¢ÿýÿýµøû÷“
q­<›5ýŠýÂú$úõíœýÃýÄ ÁÿÆÿ> =[  ëÿÓýGþÎþˆý8 ÎÛ%ü¯û: Ý 2ã"¾ ýÆÿ! øþÎþšþÿ�ý»ýG-�þZþ¶ªe·uünü� âÿ£ Õ ˆTÿVûiþN  a oÿìO‹ý~ýøÿXÿ\ rý·ü†þªÿiˆ!ÿ4ÿÿýþQ[0;ÿÿ: ÿÈïý}ý<‚ lýìÿÀ)ýÿœz �ü™ØÊý`þ�H ÆÿÙ �CÿfþÎA rüýÎÿ3Ò 
óùvúÜî 'B 8zþ ÿëü^ûd$%þû”ôÊôhÚ	¼þ�ýCû*úþ6þR1È yÿÜ ’  S þ `ÿþ^ýèþ”ûÇùðòüÍü |ÿ( ûúüm¦÷ú»ý…þjýðüÊÿþžT\ÿ¥ÿUý×þƒ–vþþ³ 	!ÿ‰ÿ¾þýR„qˆë Ä —þ"ÿ˜ýŒýk X9lÃþ[ ÿ Ø`jqžûüÊÿƒýÿPÀ q ÿþÊÿoÄ/ÿ[ ›ÿWþ¨Aáþ5ÿ: m$ÏýáüÃ «S $ÿOøJü¸úØü^þ Hÿœ ² �Pÿ	ýNÿe ÿÿ9 çA�ûºüxþËýßÿ sÿ[ÿ ñÿqý_ýþŠý­ÿ«ÿüûqûÒÿ÷ î…ïþÎþCû&ý¾þ�ý¼ÿ¹ÿ3ü¬üÚÿ’ ñ;Öþ™þº ë -ý™ý«ÿÿQ : ³ Ýÿ­ +4òVLù¯ûþ¼üB"ÿÜÿqÿ3ÿçgKÏ vÿÏÿ�  ,ÿÖÿzÿóþeÿùþfü×ý#hp �ÓþÃýç V ¹ýÐ wrúý™ÿÿÊþØ î Âbÿàþ·ý;þ|ñÿ™ÿ9þ„ýâÿs‚ýqþR § aþþýÌþnûÀ  7¸Ûÿ©þãþ„þ¥ [ –»!þáû9þ‰ÿøvW ñþÆü�þ›± ëÿà §ÿÝþ"ÿ\0 hþCŒí Aÿ¼ûFÿæÿþ÷ øÿ÷ÿa ƒ òÉþ'ý(þÿµ ŒK hÿÿìüÇÿÛÜÿœ ªû#J·û´þP Çÿÿÿj † ­ÿÌþõÿ@S™ÿkýžþéøþô ‰#«pÿLþ®BþGþ?øÿLúõüTü­g;•îûjþ™û†úqýéÒúœþëþïú‰´‰eäjÿ\ýw Á RûóüÝ ù£üŒþ]z
þø„ùÈùæý(
$¢ý+y üûÑâü¬ÿŒ3ùäûè®ÿëý8¬þ·üÂ ÍùÿÞýÉ  ýÊúçÿ†üà ½ýúôfþ«ú|ü‹úwýþôü†1ÿåþõûrýZ6kÿ» Ù ¾   ,ÿJ ÿ^ÿÁþ7ý—ÿ¶ Ö ˜^Ã¶ý’þý=þh+ÿÊ , _ 5ý€ûËÕ"¤ú ¸(ÿiÿjû�úý àMÿèÿÀËæ÷€úm‰ÿgtùû˜þÿúq yù5eü©þ®ÿÄþ ¶þ2ÿ«z£ÿ®ü‘ü¸ýpþ²ÿp @ÿƒþbUµþéc›šýhü}ÿø ¾ÿIÿœõÐ IÿBÿžOÿõûùQû»›éáý²ÿþüóÿ%² :Tçþöþe™ÿxþÿüjÿî³ÿ•ÿOÿ( wÑS ÍþÛþmÿùþ5þ5ûBüfv>ý¼ùNÿè u^ Þÿ³ÿEþýŠ  ×þÿšÿËÒó ç ¸þ?â%ýý(1?ÿ%"Ý ¿ 6 4ÿ8 C*ÿ/þ²ÿCÿžöV+Bý_ûµüÿXþdý @ÿþ ¬ÿþ$ÿÎý©ÿF;ýüÙ ]ýeûýÎûÿfaãfÜð €ÿêþSÌgLý$û©ý|ÿyümþÕ$ pÅ¼þÓ `þJûÁþ‘ 3AcþTþ§ú+ü'ÝÿÓwþ çÿÆþkÿLþŠÿÅb“¸ÿûüz ­þÐþQÉþøþçBþ¦ýâ ä °ÿ	ÿèýþßþ´ÿü JÇa ‰ÿó�^ 3þ4ÿj Õ BˆüÏüòÿXþšie Àÿã | 
ÿ  ÿýü# ù ÿ!‘ bý‹ ‹¼ÿ� Fãþý	 |ÿ I7>üõüÍhWþõþ§ÿ#þ  Ù«°þº Û ÿ9>Úÿ¸ü0þ‰ “ÿŠþ5 #µÿ4þèÿVÿäþ! Lþ6èšÂß¾ÿn sÿ›ÿúÿ)ýªú ÿˆübþxÒ 0Ëý¬üÜbaù›úÙýèý+ õgþ5ùÿZÇÿ„$;ü£ÿ+ÿ³þÛ (þ¥öý«üQØ4à ¦ ë_ 8þÎüzýcü÷ü	XŠº¾�/þKþ@ýÒýpÿFþÊýþþ˜ý'ýiêúnOýÿ�þLþ- aþ¨ÿ€91"Eüú�ÿ‘œ Ûþ„ úÿ” cÐÛÿ4ÿàþ‰þ”ÿ6ÿU bª ãþ¾þ¹üÿMd¶ú`b6=kÿbýÁÿA ¹þªþ’ÿU ÿÀÿÑ Ÿþmýyüþü3lOäþzÿúŠ1 éý
þ&þîûÿ-^²ý;ýQûþ Wþ‚ÿÌþ$çýüû!6SL¦ÿëþ&þ©ýxüyþˆÿöÿ½ýhÿFýnþèüÊþ‘Û†ÿs ·Þÿáþ9ÿÉÿLHÿ² çÿKþ#ÿ¬üàýž ¶þt4» ž›Zü
þoý-üyg]ÐýþÙÿ5ÿÏ#	  p ½ÿý‡þ_’ÿ†ÿíÿH ¼\ÿýýo ûÿ»þ¡ÿÏþuÿS 	(Ê =Iþòü B LŸ ýÿM¸ÿáþ¿õ *ý_þÖWýrýüÄûð ko ƒÿ6]oÒ°þ züÙý:ÿÿ—ÿÿýØÿGþNý^þ»ý‚)ÓÇ>þ =þ­ü×ýÏþÛ"|Äþ®þÓÿ‡ÿlþ1ÿñ + “ü�ýS ÿ¦þ¹ ½@ÿ? f : ÖÿyýRþ× Cþ*þ™~ÿòÿ¯ ï Ù @”s § «þtýùú&ýÍ `ÿÜ y  ˆ�áú – ÆþJþKüõý� 9þ^ÿƒ aÊÛÿòÿÿ¾þ­þoÿù # Z > ×ü¯þXE pÿ¦ uÔ™^þ„ýÁþ�þ� ! xÿE±ÿGÿ�þ¿ýBý{ÿõÈ ˆs ûü6Ùéÿrþ{ýÈÿ6÷ 	ÿìÿàÿåÿÑ Küwÿ0ÿ¾üÆ˜þyÿrÿD Âízþ!þ• xþ¢þ¹þnü|5Ä«bþ_ýðûkþ‡c üÿ‰þ+þRøYÿžþþ@ÿ– % 8{z ®ÿRÿÀÿ^þÐþ!Þÿö -)ÿìýÿÆÿ\ý¸ý<ÛÆ ¾9v¢× ›ÿNÿ`ýiÿìü(ú- ­È ™ãtÿ:þK E rÿ… ‰ “ÿdÿþþ¡hOTþ>ÿÂ Ëÿæ=®þ^ýpÿØþj(mô1îbøÆý]=uÿžõ<ý}÷úûÿ¡ç¯úŠùÊÿëW. Üþ] Ëý¸ü©ý·þ�M>¯™·ý
ýq Àÿ8 ï –þ¯þßý©ý½ýüüM ¢Æ\ÆpÉ § ’þ.þòþ5ÿ”× ‡ÿÏ¨üù/ûàý‡Yà–Ò #�üûDýŽý¨ÿf ï; Æþ¨ý¬þáý‚ÿ’ÿ~Úþóþª+ gÿ� %xæÿ×þþ¶þ-ÿhÿ¯  i¤5íÿþÆþ”þÎþ«+¯öV— ãûyýïþÄüZÿñ Â ‰ êþÔý6 ÁL T ½ çþ«þêÿ/ &úýúü]y¬€ýßýÎýÿ Çþ�|rþ§ÿøþtþ…Üÿý9 À£ÿI”zCvýƒýó � ÀþÝþQþËþ‚þ™þôßË (¶ÿeÿí >ÿ|ýu Ýôÿhþ×ÿ(ÿ#ÿÿÕþC®k Éƒÿ'ÿ¨ÿSý¡ýzyÇüOþ# eýÑþYvÍì Åÿöþ7ÿuýký ÿ‹ÿ4ý„ým`Úþ Þ ¬ 9ÿ¦Â /ÿeýBýTÿW Àÿ›ý$ÿ¼ RÿÎs_& ±ÿ–ý/þK Pÿžý¥þâýùý—NE M=ýÃýCiÿI¸ õ o »ýôþr (ÿÌþ ›P ÒýÿS!âÿŒþþ¡ ô ‚ÿR ¯ Kÿvÿ´î WWý;ýé b j Xÿˆÿ¥þ	þzo* Þ }hg 1ÿüŸýÿþÆûÀ õ FN ‚ÿ, îþŸÿÌÿÿþçÿœ $ÿ•ÿCéó ý�üÊ ÆOXÿ£ÿn ^ C ‘þéþ ;ÿaÿ›ÿŒ ¤½ ]þkÿëWÿÛýž u Yÿà Ä 4 *qþwþ™ÿ†ÿ1 vÿtÿô G kÿ×ÿxþþg÷‹þýýÿ,þåÿâÿs :gþ!ý
 ¯ÿlm �ÿÌ �Ô ð ÿ´û]ÿúï pÿ8ý@:a ý0übý*ý»ýÿÈý C€A TÀýbûùÿ ß.Rÿ²ý‘ü©ÿÚü—ù~ÿ|Í Õÿ0 ™ p`Úðíûîýýý¦ûÅüiþ—ûùú™s®¿D€Ù&ý¦üšûøû0äH  %O(þ=þb Ñÿû 8ÞþBÿ>ÿ�þkþ>þÿq Î ôþ Ë ¡œßþå 5ý8üÕ Ä 0=ûÿ„ Yÿ�þÃþ˜þ9 ¡ƒþ|üœýùþi+ì|'Omÿåÿ¾ . [  šýRÿ~ÿý[ýÜþ% – “bÀÿ4³Á ÿÇýý¼ÿæŸÿ> ‰ bþV ´ÿ°ü‰ÿÒ&Ë[Üÿ²¾F
@ÿ3ÿNÿ pý¸ü"þoþ_ý(ýÐþ9ÿu7µ0ÂÿFÀÿÛý' ˆ€ýfý6 UÿÃ Á �üDþ� ˆþ¡ƒGü¼ûŠý¾û·u~ÿÓû%ý°þ§ëþ{ÿ%~ÿ \ÿõúwýÒq Nþðý¥þ7 ž>ýíý<Òy ¦ÿaýŽýÓþ¨ÿ £ ï Ã ê ­ uÿ4ÿÔ l )ÿYþÆþ!þVþè ý mûÞ 7´þLÿþÿgþ> !¬þåý&ÿƒþïþ˜ V Cÿbå%ÿì ý¬û
 Y ˜ÀÔÎ e U.v ˜ÿoÿ%þÛþŠþ¦ýZÿ2 wÿ;ÿ›þÑþÚrJ ß 1ÿÿi  ÿï gý—üžþÉ tõûõÍùÿú§Âúõû|.(!oþvýï·kó Iüáú•üoÿþ5ûºÿœ  —Y žþ;w[ ¸Pÿ%þqýjü�ýK «dÎ•
ky@yëAíPñ-ó�¶þ51tˆú-ùŒûóý@€kJÿ
ý~ý*ÿ³üëûUÿ—þ&j™½ûõþ›ý©úÑþ‰ >ü—üjÔÿ+Þv •ý”šL÷#üú¡üdþZý ýaîp…˜ 9 pÿ€ 7 lÿ# �þ‹ýÍý þ#ýïýõ÷ÿô þŠ ·ÿY   z L�ÿþ[þ“þ’ÿ— & ¹ÿ<è ´ 3¯ |ÿ ÿè ÿþÿP Åþ[þ¼ »ÿ üv Œýö q’ R Ý Žÿ	ÿ£  Ëþ;ýý½þ�ÿ}ÿ‘ÿ¿éOWnù�ø-ýÒüÿf ìÿ~ÿÄÿ ÅàŸ’þ"þwÿE ¸ K ïþíþBý tÿ ÅÿÛþ V +IR#kþÒýÆú©ûk S ŒŒ0ÿŒDªÿÿ!ÿ> ûQ Lþ�üNþ Ñ›Pþûýmü“üz¢ c } ÿ c ÔÿPÿÿþaÿTÿ}ÿ K Ãÿÿ ï%þúýÓý—þä  žÿî Ë U øý˜ýÕÿöÿ)¦ "™S ó „ ¹ÿqx�ÿçÿŠÿ�þþ‹ÿ°þUþþý- B ( ÿþ‹ �èj sÿ påþ¦ýxþUþ1þ»þ7ÿÂÿ” ²ÿx «ÿ�à Rÿ¯þ�ÿÆÿçþÁÿ»ÿgý>þs e ƒ/D ö £à =þGþõÿ �ÿ²ÿ2  Ïÿh y øÿ™  ­þ±þ^ÿÿDÿý È ®ÿ“ ð XÓ Ëýmý:ûäü±xÃLaÿÿùþhþ¢ýèþú ´ÿ9M F­ÿ�þ1üßü	G ²€Ö¢Ì  ¬ «ÿºþ³þN  ùþS t ‡þÓþÏÿÈþÿü uÿ“ý†k’ kþ›þµþ× UÚþþ— å¨ K dÿ¥ýÿ° ÈÿÜ ‚ïÿàÿ- Lþš .ÿ ýåýxþ–þ: … DþƒRì W H .ÿwüþå ÿû Êÿÿ> ;iÿÿ…  (ÿËþ1ÿ ÊK ‡ÿ~þáÿ¨u ÄÿLÿ~ÿ@ Š Sÿ&þPÿe üÿrÿ¼= oÿzÿ ‘ÿ×ÿ8ÿDþñ Ô&; Ìþ+ |ÿ ÿþ l Ê %ž Vþžÿ@ÿ²þ* k ”ãðþ¤þþÜþ~üxü+þ˜S¨ qâCõäôçþ9Îå Ný<þÀ¤�ÿ'þýôýžèBÂ¨ÿËþ+üßü¼ ôÿC  r ¦_Ñþ¢ÿè žÿšÿ¤ÿ"ÿ²ÿ- �ÿ"ÿå ä ÏÿÚW 1þÿÿ˜ pÿ³þÿ6 ¤ É Ùÿÿ~ dþ#ý1  D ^Ñÿ$þçþé � öþ¯þ6þòÿ‰2 D 5 «ÿ}ÿ  È `Âõþÿ—ÿ”ýáýC ¢þœþÜÿ« 4© Iÿ/ÿ¾Ì ¬ýt Œ	 h îÿÎþ«ýQ  Vþlfçþ‹ýù – ‹ Ë�þüý.ÿ;ÿCZ ¤i(ÿ¿ÿþþE¼> 4  –ÿVÿ¾ÿˆÿ“þ[ÿûþÁþpUQéþbÿ² ÁÿÐÿ  ÿ¿ þòÿè ü HÿçþÀÿD Æ 'ÿ ÿcþÉþ);öý‰þKÿ9 €$ =ÿê ‚… Éýÿ•5ñ ¶ 6þ @ÿÓü¨ æþý
ü§ý4á-ÇÙþÿüÿ´ý—þê 	ˆüüÂÿ
 ÷úKÿ þ:þeÿCÿRþEÿÿÝ ®y¨þjÿ÷þ©ý © 0þòÿx Jÿïÿt ËÿÿÐ g ™ »œÿsÿoþiþ$ B ÁG ] ‡Ù 3ÿ4þRþ²ÿÌÿ«þ	Ç Ïþ Ñ <ÿ4n&þ'ÿ¦þ@þŸ)bÿÿn uM¦ üýØþºã äýfý† MVÉÏý.þÖ ëþ8 òM `ÿŒþ>ÿgÿœÿqÿBÿÇÿ! xÿ[þÑÿÍ€+ÒýÑÿ¦ÿÐÿ Ö ªý‡þå Íÿ< ì  ˆÿÀÿó ¯ Tÿ¯þËþ}ÿˆÿŽ 0þG   ) Ô 2 °ÿf iÿfþT ä †ýzþÿ9þër} 7 Ž  þ Ž |ÿtþÍþ ú~- ‹ÿÒþlÿ$ ÿáþþé h# 	þËý¡ÿP Â ·  yþ#ÿf R æÿP}ÿŽÿX Ðÿ6ÿ1ÿ7ý~ýþÿŒÿÃ zäÉ§  ` }ÿèþG ýþdýKþLÿ[ y  Üÿÿþ)ÿ¥²^“”ÿªþ¶ÿÊ | Aÿ  ~ ýùü Òÿþ =Éþ8þh ³™ÿ@þ�ý£þ‰ "ÿ‡üÐýÿjÿ´ ˆ¶N– 8%ÿÆþŒ— ®ÿ× jþ	þUÿuÿ  " t ÿ"†ÿhÿŽ¢ ƒýlÿ€_ Ò«·ýfýQþìþyýåüA ¡ ÈJ] „ý.þœÿ³ÿŽþWÿÿäþ¶ ½Ç !ÿSÿ{þŽþà�‘ÿ8 ³ÿA ÕÿWþ»þ ÅEe öü3þ˜ *è ØûpúŠ HþøüPýGýSþ¡@© ± ºý;ý&1  èþÿfý ý_ � b‰ðÿýÿ- Êÿ ®þAþTþhþ<± / ¹ÿSÿ9 wþ¡ý×ú¤üØüòÿ- jÿhÿCÿöÿ¢ÿfÿ²Â bÌ ,þMÿEÈÿ9þ.ÿ/Ûÿ qž �ÿâþŽÿT } ³  õû!šÂüuþù ±ûÑò#ÿËôq £Q¶û‘÷\ö3 ˜4? Êþ\ Ê–sQZü³ùÅþ•š¸÷ü”ýÚû'ü“1ÜTþ€þ¸ÿb #ÿÜüîýD²Øÿ$üéýúì 5† ¾ÿ›)§ÿ¬ûjþ×þÜý4=Ô 1 8ÿúþSÿ  Y ¤i1þ‘ý¸þ »pçÿú îÿ’þ›ýeþ�þ‹þO j 8nê ¹ÿJþ¨ÿ!ÿ» Óc ñÿ  Ðÿ@ÿŠ Þþþ¼ÿêÿÛÿ) ¢ÿåÿ¯ÿ7þk û• þ ôÿ¦ ¥ fý{ý÷	úåú‹ø˜ýé .¶þìøzû¸@Fÿ~ òþ �ÿ¨ýãý× SÿPÈý¤þ; ÌÿÈ
RÿÑÿ þðþÖ éÿ¶ v¾ÿ¯þ•þŸþÿßÿ˜> ÿçÿ ×ÿí XŒÿ‰ÿÛþïþ˜ 	US [þ¶þã p„ÿ,ÿ"ÿ…þdÿ0ÿI : ± R" mÿÿ þmÿÈÿJÿñ � ŽÿËÿ&i{ý¼ý¢ ê  ²þ¼ÿÐÁþøýøÿ"å z ûÿÛÿ¥ÿªÿ= Áÿuÿ„ÿ( Éÿ~ÿ  ½ Õ # 4ÿ±þ`ÿ1ÿ³þ0 F ÿG ³� '· m   ~>þÇýÇþ½ÿÄ « z þþŸÿmúÿÿvÿ~ÿ~ RÒ G Ûþzþ©ÿaÿHÿöÿ ÿ{ `Ú « ñÿUÿíÿ¸ g Ëÿÿ¶ÿ¼ÿØÿbÿ.ÿ¾ÿêÿá‡“ ¬ 8ÿgÿ¦ÿ0ÿ’þ�þè e < m Kÿ—ÿ€  ? Ú ¨ÿêþi ÷ Zÿˆÿ™ÿ»ÿi { Ÿþÿ  Zþ:þWc3 ßpÿšþ¸ i Øþ2ÿwÿÑþß Ô š Î ¾þ¯ÿs ’ÿ  çÿó jôÿõþòþéÿr µ 3 ±ÿ& ÈÿÔÿ®ÿ½ B¨ÿÍþ­þÏÿŒ˜	 çþ_þÇÿ9 Cÿ; ˜ ¥ÿq ÷ N öÿ• áÿüþo ¹ £ÿ®ÿ£ÿWÿMÿÅÿ]Ã vÿ‡ÿfÿ^ÿ° Õ A � G  ±ÿÆÿPÿuÿ”ÿwÿQ É T× 0 4 –ÿ¤ÿ… Áÿ¿þ¬ÿÝÿ&ÿÁÿ½ÿd ¬ mÿïþâ q Ç ¥þ<ÿ< RÿIÿW Ä ôÿ$ÿýþ8  »ÿ@FÒ Õ & Íÿ> ±ÿ¢ÿ, žþ&ÿÅÿýþ,ÿŽÿÙÿ›ÿ*âÿR àÿ|ÿ³ÿ8 » Á  vÿO i éÿÄÿ¶ÿ ÿbÿÙÿÃÿlÿ™ ÷ÿAòüÿœÿÿÜþÿ—ÿnÿXÿp¡K ¹ÿ'V,ÿUÿáþðþ D - ƒÿ e  G O ( -ÿÿãÿÜÿÙÿ:  1 ×ÿgÿL 7 O © †ÿ7ÿD c @ öÿ¼ÿ¶ÿ87ÿýþ�ÿÙÿ¹  éÿy D g {ÿÿîÿè ÿ{þê ð U ¦ Åÿ§ÿd µ äÿ×þ«ÿ ¬ÿbÿ£ÿðÿ, öÿå áÿ‹þy » £ÿïÿ( ¦ÿP ÄÚÿþÓ ¹ 9 Ž ëþ�þ9 kP =ÿ¦ÿ±ÿÔÿy ¦ÿ j S g ; ( î g òþ,ÿlÿÇÿéÿ Ñÿ|ÿ>ÿªÿ2 
 û õ �ÿ žÿJÿbÿìÿ¡     A Æ ¸ kÿ|ÿÿAÿg òÿVÿ¿ÿ’ y ÉÿòÿŠ ñÿêÿ\ ôÿ°ÿ]ÿ¶ÿ †ÿ0 ÅÿÿÛÿ" †ÿw Ñ áÿlÿýÿàÿ) o ÍÿUÿ! 8Á äÿd ` .  ÿôÿéÿzÿÂÿL @ÿÒþ/ ¹ÿÝ EÍÿõÿ…  ä u ®þ  jþpÿ˜´ Ùÿ{ ¢ÿÃþ^{ÿÏþO ²þðýu } r Oóÿvÿëÿb Ìÿ; e íÿÐÿÂÿ‰ÿšÿŽÿƒ ¬ w > × Îÿÿâÿ2 �ÿ  ‡ÿYÿòÿä d  7 ÎþÔþ-  ¾ÿ»ÿ@ö ”ÿ˜ÿÌÿˆÿ¶ÿÆÿéÿ£ÿöÿñÿ÷ÿ  ¥ ˆ +  ÙÿÞÿ¹ÿ©ÿ : @ G o D fÿŽÿáÿÜÿÿþ7ÿèÿ‹ÿ5 d —ÿÑÿZ îÿe Ù 8 Ýÿ=  »ÿ" bÿÿ¶ÿµÿN W K A Nÿ1ÿ>Hq L §ÿ’ÿðÿ1 - ÝÿŒ ° üÿÜÿûÿæÿB € œÿyÿÃÿÌÿð ì ÿÿøÿ§ÿ—ÿ½ÿÕÿ6    ‡ÿ�ÿÿÿÞ ½ : < #ÿ3ÿ… l . } G ïÿ E ³ÿÏÿ<ÿÿ O V  ' I íÿæÿãÿçÿ  ­ÿ·ÿK D j J 0ÿGÿ²ÿ~ÿÑÿÓÿ²ÿ²ÿïÿ×ÿ™ÿžÿ· ­ ] ` •ÿ®ÿÑÿ×ÿýÿêÿ‰ÿœÿG ; Ó × P t º ± ±ÿ¯ÿ¿ÿ¸ÿqÿsÿcÿ_ÿ 	 îÿâÿ® œ nÿXÿÙ í  	 ÆÿÒÿ$ 8 ¤ÿ~ÿ¹ ž 'ÿ$ÿ ' Øÿ¹ÿ	 7 ³ÿ¹ÿ0 - [ÿ’ÿI a Á Ú ‡ÿWÿ E Ãÿ—ÿ` G ÿcÿTÿ&ÿ¹ÿ�ÿý ß <õ ÁÿÅÿíþÿ| z 
 ËÿÍÿÜÿ? G ' ßÿ( m ûÿ ¢ÿzÿ•ÿ˜ÿ“ÿàÿ‡ÿ»ÿ%h t *  ïþÿ 0 
ÿÿY • ­ÿÈÿ÷ÿÒÿB  Žÿ—ÿë î xÿ€ÿ	Õ ÿGÿÈ Î C  ì ÿ [þÕþµ ¹ ÿÿ�ÿD = f ¢þ�þRØ=ÿ[ÿ§ ô ôþBÿmÿ×ÿ:þƒþÝ Y"qÅ¨· û ÿþÿV  tÿÜÿ.þÝý‡ÿìþ¹rçþJÿ† N EÿØþaªÝþïþC“ žÿÕÿéÿ% – ˆ , '  ¸ÿñþ,ÿç !qýMþ›&þ-þÀ$ ÕÿF à 2 ƒÿ)®· ®ÿ»û[üçþzþæý¿ýº‹ 5 Í¹¢  þÿý ÑÿWþý|ÿ'ÿâýô Ã ç ÔL÷ ô ÐÿNü•û  ' þ£þíþÄý(ù‚ÿ ÈþxýíývÿV % yÿ—ÿŸþ5ýãv„ êÿ¦‹ÿ4ÿÖÿJ åþ7ÿ Ôÿþÿ âÿŸó zþÔþF � 0 Êÿ[ë ŸÿÚÿûÿwÿ}þ,þkÿ® Áÿ—¼ÙÿB éÿÿRÿîÿU Lÿ_  vÿïÿ±ÿÆÿ@ çþ¤ÿþ‡ÿB ÿÿ_ÿÿyÿýÿo Œó —ÿ§ ?ÿ%ÿ• ñÿÔÿ š çÿþÿŽÿSÿ xÿf Ùÿ�ÿ’ÿ  mò ´ÿ ˜ÿ%ÿpù OÿVÿŒ  þÝÿ†ÿÿ`ÿRÿå D >  éÿTiÒÿ‰ÿÏÿöþÿáýëþû * Kº Ô F ” ÐœVÿÿMþ$þæü©ü–ÿž / ÿÍÿñÿ6œI� Ô ë ~ý"þƒo½þÿ ÿSÿ®ÿ¹ÿ˜þãþáH›*¤þýÉý\ÿ’ ùÿÉÿ6þ¥ Çxÿ ÿ# ¾ ­ÿôþ<ÿPþ ÿÔþ¡ÿ-V YÿÎÿIŠÿ † æÿ¯ÿýþH O·ÿKÿ(ÿÜþ
 Ìÿ^ÿ*Ö ªÿïÿìlhþîþkþÞý´Šp Q³ Òÿr n 7 �ÿŒÿ¿ÿ1þ2ÿfÿþh8 £ÿp }*aÿŸ éþ¨þtÿBÿÊÿÿz � Ûÿÿ{ÿ\ÿ†ÿ÷ æ S a ¬þÄþýÿÞÿˆþœÿZ ° “¡ Àÿ†þ›ÿ' /    D Ú òÿ=ÿjþ?þå S)‹ÿÒþ¤ ú ¯ÿ§ÿ°ÿÝÿiÿ+ _ pþ� y aÿs¸… œÿmÿaê �ÿ„ `þ¨þÿÕýƒ 'ÿ] } Úÿ! £ ` þJþWf³cÈýÙþ J Nÿ¶þž Ö ö� MñÔ Ïÿ[ýÄýªþDÿbþÂþ@ÚÓ,h ÷þýÿxþ3þšþƒþpý �8 Zþ‡ÿÎ ¸ ÿDÿ^ÿ·ÿl ìÿö ‚y ÿ=  ‘þ¶ÿ> ÿþ RJÿ? .: ÿÌý ª ÍÿéåÿøýE u ‡ ÿŒ /² _ ñÿßÿT ûÿf tþ„ ™‘ÿÕý5ÿaþÂþ´ÿÿG C “¸ ’ÿ A ÿ²ÿ ºÿÿÿÅÿÙ   ) àÿŸ4þKýFr  ÿôÿŽÿoÿñþÿëþ1þiœenôükÿl ¿þ} W 1þ¼þeÿ'ÊïÿŠþuÿè†E×þ[ÿRÿnýiÿaÿ¥ÿAš j óÿs ÕÿÍÿlÿÿZÿvà  O ² Áÿh h —ÿ?� ½þåþÝÿªÿ• $ ðÿœ oË “þåý›þYÿŠÿ´Ì3 È pÿ… ªþKÿ² Fý’þ ò 3ÿhýOþ*ÿ” ÷–ÿýþ< 9ÿøþO VçþPþ­ ‹{ ]ÿ7 K ¦ ,ÿ±ý˜ü“ÿš z ½eøÿüþ` ÿþÿãÀÿjA 	.› UýÁþ ÿÿ ÿ¡ Ú*5ÿ< ²—l¢þÚÙ¸}Aý4 ^ºû"üšÏ žúÕþdäV {ûœkÓÿaýbÿéü¡þ\üõúø »¯‡üÕþºÿ`ÿdý¾ KW ÁþòÿÏþïýüGþKu ºýÂþ“Xu~ü@ü§  íÿ‹þ° ˜$ 8þW Y,= Lþ�þ2²0ý3þ<ÿZ , j Öÿ -ýlÿ­–+zþŠyÕÿ­ ÂþWýL fþ*þm T ¯£ ÿ  ”ÿÞ -Ûÿ<ÿTÿq9Cÿ¦þ¿ÿ’ÿèþäÿGÎÿwÿÝÿ±ÿ8¢ Ç ü  D~ ðýÿß ãþGÿÏŠÿÝþÆþM ds  îÿ‚ÿ8 ïÿ¸ Ô Èÿp lÿ <ýÀþÄÿ¯ÿ¶ ÙýpýÃ ûþñÿzq:ýLþ¾s  ÄþU À…ˆüIýbÿ° ÿ�þ9ÿÿ� �ðQ…ÿû Ê ¦þ  õÿi ÿ½þÎÿqþ& ¿ÿùþø ØÿÕÿþþ_àðûjÿÕJ ™ÿ¹ÿ.ý«þCCÒÿ0ÿ: áÿ~þ… ÷ÿ|þ¹þþÿæ Žk � Åÿª B ëÿ& Šÿ-šÿêýÛý0£ J“þ+þðÿÆÿøÿÉ ØÿCÿ ËÊ U … šÿ, èÿ )u <û|ý…þûþÊ" ÿ·ÿ…I © <Øÿ² m = yÿ¶ÿ ¡ÿÆ Øÿs ôÿ—þ@ ÷ÿlÿ0þš m –ÿ¯þX <åÿXÿQÿyÿ¬ 
 # ¶þHÿ< C ~ø [þv Nýþ¤þ‘ÿÐ s …£;Å Eþ{ÿwÿþøÿÃÿaÿqÿ|ÿ,¿ Fÿà ¬ iÿYÿÃýDÿ"ÿÏþ×T! ÿÔÿìüÿÿä Ñÿ³ÿË ½ÿUþXÿ3ÿ˜þ
Èµ •þe Rþþ; ˆþ"ÿp›ý™ýÐÿAvþ9ýÛÿüiCþi –—ÿFúÔû®“ÿh¢�íÿ¼ž 5~üÆöjýysoÿ;øü€þ" ]µ¢ÿß`þ`ÿâ›ÿWÿ¬ýÍ  —ýnëðütûÖþŸþ=þõþ�á‡C �üÚý+ TQÿ3ý‹²þüþi2>¢þûýÿª/ qý€ÿt  $  Š Èþ4ÿó �: Tþ)ýÖþþþØÿGƒ |þ‹ÿsÑýÕ §¤ÿÚÿïÿœ ) „þyÿ Òÿz4ýþí Žr ý@ 0ÿ „  "ÿÂþÊ ÿ_ý? m Ë Èÿ•ý`ýI á Ê ´¤üûùÁ L±Ðiþ¸ýÿVÿ1ÿLþXü‰ýïÿUÿ1 ŸMº@ ²ýR–óýiÿ¡ dÿ kÿ]þçý6ÿŒ êþ‰þ;h£ýmüÍÿKÿ#ÿ¯ ì ùÿÓ 	ÿlÿß5=ÿ ÿ Ñ þ÷ýyŒÿAÿuÿ: òr wþ·ÿöÿËl  þ$Yñþ� O Eý,üòÿ>ÿÿˆƒò×/ÿšÿÜ r µÿ7 hÿ.þ¼þx (ÿÿœ¦qþäÿþÿ\ÿoþ‹ÿ�óþ2‹n ›m ý	ûöýœ  ‘o JA4ÿsÿëýAÿÝÿ}þ¥ÿ*þ î Fã‹ eü  ÂþýO øþþ%þ} ¦Í šþ€ D•ÿ”þ€ý÷7eý…üèÿÿ ¡^¢~÷ÿG Ùüsb1ó§þÌ�pÿ· nÿ þ$+ }þ  Ÿÿ¬þÛ J* õ@§üLýøÉ ÿm!Ú¦E\ü'ôËõ5õ‚ölO«	qÝ @øöüúüúç?éNÿ›Ãüâûš öì lËþŸü¬ ÈÿŽ3ôüHÿ+ F¦×ýýY ZMÿ/ýwÿ7t yþñ œõþ- ýþû0 _ – þ}þP ÿ‰þŽE ‹üõ«lÿ6/ð ³ü¡þæþŒþ¿ÿp „²ÚÌÿnýÔü“  ¯þR!Ï âÿW °ÿ×ýQÿ/ÿÿþ½°ÿÿ1F©õþ{ýHÿÙþùþºþŸþjÿJ  †ÿ” Ìwcÿüÿ· ƒþ,ÿóÿÑþ�ý;ÿô ÿ�ÿÈÿØz òÿ¼ ›þÓ =Ñÿv Íþ·þªýÇþÆ æéÿîþ×ÿ>ýbÿc ÿOÿWÑÿ¡ÿÿãý“ °ÿ,ÆP 6ˆÿƒ ùÿý«üÀÿ[‘ÿ õÿ”ý� [ Œÿän =û8ù…ûVÿ©üMÿã)yY�ú<ü1™þNÿy` )ÿ@ÿù T™{þ„ýèÿœÿÓ ˜ Œ þþôýíÿfm Ç ã *þòÚ«ýýµþFÿÉ¸ãÿŒýOüÇý–e ;ÿ| [ÿ0ÿdÍú®4ÿbÿ�þùýüý²þ2 rÿä0U & ®Æÿ3þD 3 �ÿBþÜ Üÿ>þ„ÿKþÉÿãÿŽ~ ìþßýðü€ýAþþÃ.þ2þZÿœÿlŒ
Eÿö¼† �Ë zþrÿÛ ˜üìý¼þþ…L·þtþëÿ9r ê ˜ÿAþ…ÿñÿ2îÿèþoþ¦ÿ›Kö\ÿqçÿ®ýêþ›ÿ3ÿ¢ÿHýzü-–§þ3ÿuÿ: âÿ) f S M | \þ)þ­ýŸü‘ ô ³üåý�ª|Ü«ÿNÿŠüÆúZþ± ¾‡Œþ»þ®" 	 Î ¡þ®€¢ÿiþ5ÿºÿ�ÿî  �ÿˆ� S ·—ÿAþóþg R�¾ Öÿ ÖûwûRþ�þ½Kg4ý^û-üðý@|Äý?ÿçÿyÿŽþsþ1ÿ��ÿiþ‘ÿ(–ìþ—þ¯ÿ;üìõõ ŠÿJü½ü®�êû�ýÿdþQÿ¤ŒNû,ûÏ ìþ2wþûÙ Æþzû-	äíCîKö_ÿ{ŒÝúªýLþÕ÷Ûþ²áÿsýšý_P~úôø_üoÚÿhûƒþ9³ë¢ý¤ÿ+™üµü_ÿÔ O 
ý²þÒ Õÿ `ÿoÿX ÿ� Ý ç¨AÿHÿ9ýâýÄþe ê / (ÿÐªvþ!ÿÓþþÑý¥ „”òÑþ±ü=þ³ÿûÿþ2 F-ÿî™ë ”þ¾ÿúüýü úþ‚__ É >«É qÿýþÄ ÿþöÿFtÿ‘þèþxÿz Ç ` ÿ‰þ'¸ÿþÿI ¢ÿ­ý4þyÿl ¾ ± J 0 ŠÿÊþü ( ,þ3
�ÿNÿ/öþËÿmüúù)JÿFû9áQÿ7zþºû Ñ þ³ýâü Óyäý­û>tÌÿèýáÿÒÿxþÑÿhSêþ"ÿþý—ýoµ�þCýR ÀþŒþéþîýÄÿŠñÿà ‡n Ðÿ	þ\þÒþ€ÿ¬, àÿlëÿÕþºÿ— ê ÎþÜýT ï © Ëÿìÿæ= ”þ:ÿçÿ»þXþOÿ2 >=�½ý7þ–S Ôþôÿ•ÿÓ ´ ´ t ÖýÁ 7 þ}þÏþçý�ÿ½ ó ¦ÿv " ¢ èþæÿV  ª �ÿÜÿ\ÿmþ³ÿ}ÿ‰�>þZþØþÐÿE^ ‘ *  Ú B ê  þ,   � 4 ‡þƒÿÑÿ) ¾ÿ1ý @±þ$¨MÊ}ÿU ™ýïþT	þ�þ½ ûþ†þ@éâÜÿ÷ü¾þzÿ»ÿ¥ ÿ¦þ‰ÿ¼Ô• B‡WÅý…þiüGýÆ¿= ÿÿÿükþ É µÿcýþ¾ÿþW £¸ œü=üâýÀþgÏl Q3 zþÿÿÐÿWL“Æý9ÿu !   n }ÿµþ oÿ—ÿnýþÈÿÚþ¶ `„£ x 6 øÿ5  âÿÕ š4 wÿÿ)ÿQþÏýÛÿÐ ”ÿÃÿ¦þ ÿµAƒÿýKý÷þ´´ÚÿLþóÿÿþg ~Œýü�þn ¨ÿRüû u°X .üïýÀŽý-ÿ³þb 
þrûSÍU ¯ÿ®þðþ¦ÿ)Sÿ¶þ“2 ßý`r ¥ÿ`þÀýü ZÝþVþÕ Ø#;ÿ Á 6ÿàÿtþ¨ý1  fþ |w¥ÿÇ }ÿWÿ‚ñÿóýgë_þîÿ° èý†þW : W�Õ 8þvý½ÿ$ÿ±ÿ®  þç ‰þÿE0dÿþqÿTþúþsµÿ"ü£T¤þÉÿ­LþýL  § v/‘ #ÿƒ †þ]ýûþƒÿ;ÿ‡ÿé ûþDþ¬ß’þ´þ( ÙŽÛÿèý}ÿ…1“ÿ³þªÿRÿÄÿ!˜ÿ²ÿ\ Çþòÿô&¥ÿÚþ•ÿ= ‰ÿ( "  ÃÿðþÐÿªÿ¦ÿÖ ç©  æÿ¦ÿ¢ ôþªÿØÿ!ÿŽþÍþØþ@þÞ ô¡„¤  Õ ¨Ûþ‰ý:ÿÄ ° ¹ ¼ÿJÿ¨ÿsÿf ù Ž hÿ‘þpÿ‰ ë r ÿÿyÿtÿœ ä F ‹ „b´ÿ_ Rþ/ÿ +ÿöþ;ý‡ýW ì ˆÿÿ<» ÎŽÿÿÍþœ € ßþfÿ	þëý¾ +àþþý(ÿ _ÿÿãþOý}ÿŠƒ ‡“ ý$þþÿ¢òúfû]ýþLM;ÚšúDøcþ �ÿ 	ÿÔþæÁ‘þtþTÿZ÷ÿ³ÿµÿÝüÙü‚þõÿüþþëéB(/Fÿ7 õ"ý©üÉ   :ÿ‚þÝþ”ÿ¹ Ú ¢þ^þ‘Ë G Ø PnjþèûoÿÇýËýmÐ9 ö,xùû�sÇþví 5ÿþ—þÿþ; p¶ÿ–�{ûšþßâ ú�ýxµÿÇþýþÑþåÇþÇýteG Åþóþ`ÞE !ý©þ^ƒüÆü³´ · �ÿ6ÿ�¨  ÃÿÜþ�ÿŽÿ×üL~×þùþ¬ÿ&ü4 �«ÿÁ Ù rÿñ îÿ = è œÿÿûþÝþÅþ2ÿð ¬ÿ^ 8 ùþY¡Ô eKÿzý¶ý•ÿÿ‘þ9 > ÷ª Pÿ‘ ! Pÿÿ»ÿeþaþÉÿ3mÿçýI F <;¢ÿ»þÿm ˜ Ýþ, w ÿs Ç Ìÿ4 Jÿ®ÿÌ Òÿ æ Yÿ‚ÿØ dÿPþwþÿ­ÿ` ¥ˆ ìþ± f < ü Œ P Â O ½ÿ>ÿñÿ,þSþ#ÿóþf©ÿ lÿ" 8dG C 7ÿ½ÿÍ › EÿMÿ{ÿÿ  š êÿ£ÿ�ÿñþÕ­ ¡ àÿHÿ; Îÿ±ÿ»  o ¹ÿ~ÿéÿ xÿÜþØþ®ÿ“ öÿèÿÏÿ ¿ (ÿ_ÿ'ÿjÿþ � è Ö  Ïÿ~ÿ ˜ ‚ Z Êÿ4ÿ5ÿþŽþGd¡ W Øÿfÿ� 3þ¯þT ˜ÿö ÿÉÿÙ 8 "„GþSþ$ Uÿÿ’ (Ÿÿ3ÿ œÿìÿÐÀ •ÿÆ ŠÿˆþÌÿ§  ¥ÿLÿGÿ êÿ™ÿQ © c žÿ®þä Jþ# _þÈþÈþ�ý*ù×ÿãÿó ù ¦ÿÿÃÿªÿg †¢Ï ^ÿñþ=ÿÝÿCþéý%ÿ~ ‹ÿ? ÿ®ÿÏÿºþ3ÿ7 º ïÿODþ°þ½_nþ[þéÿr výëüÀ » +�ÐþZÿ–úòù–—éþ¡þüAû•÷Zø¨ÛôjA£ö³õ ôXôÿ[ d	n²  „ ‹ ¤úàú‹ü•û üæüIÜí!çÿüÿ^Ãÿ9 R ¤ êýlý»þƒþÿþ¸ÿÛÿ‹ÿù ´ Ï;H 6 Óþìþ™þbþTþxþâÿ" Üs…àÿ§ÿ q ÿñþE 0 Öþµþºþ«þP±Ò „ "û ¿ÿ¤ÿ9þ«þsÿ÷þq c ¾ÿ “  N ˜ m ] i L "ÿBÿz%‚ÿ˜ÿ®ÿ$ ÃÿMÿýÿäÿƒ µ ™ÿØÿÁ À Xÿêþ) z Tÿ�ÿ  ' Ûÿm © = P Oÿsÿ0  *óÿn �þ$þ B 1ÿ8ÿCÿcÿ Î ·�Mÿ¸ÿ\     ®ÿnÿ| º � Ì ºþoþ	ÿ
ÿ@ V bÿ–ÿøõ üÿ  Sÿ…ÿ¹ÿÕÿÃÿ¸ÿ(	ãÿöÿÿcÿ çÿUÿ@ÿý ³ÿ´ÿ� · Nÿÿ` ` ûÿóÿÁ»© – wÿ)ÿÿþ'ÿ¨ýqýÿöþ+ & c,2 4 qÿ7ÿuþ[þýý=VAÉþ¸þ�‚ðþáþWýHýü ü ´ÿºÿbhÊÿ½ÿC a YÿNÿtÿ…ÿ 4 ‰ÿvÿ9\‘ ‰ pþƒþiÿtÿ†ýtýBÿYÿ	„ ~ A8Ó Ï FþFþñþäþ 
 ™ÿ‡ÿÞÿÚÿ K 0 i ] ùÿøÿFÿ?ÿ=ÿ4ÿ_ÿVÿ¾»  y ~ ×ÿÕÿ5ÿ;ÿ6 @  &   LÿUÿ(<ãÿñÿj  –ÿžÿÑþâþÎýàýq€.<ÓÚ…™�ûŠû�ýŒý‹ý›ý:BÛí™ £ ëÿûÿ
öÿ 3þIþÿÿÅÿßÿÂÞ0 O n ‘ ?ÿcÿ³Úxÿ ÿ©ÖøFø×ö÷´
ã
D™þÆþaþˆþåþÿ,þQþ´ÿÒÿÛüy“Rþgþ€þ’þvü„ü¡þ¬þ©­c d jÿgÿ’ÿ�ÿSÿLÿ�ÿÿó æ pþbþÿôþ7'§ – •þ…þ  ÿÿ5þ'þ  ÔþÉþMD× Î LÿCÿ° ª cÿ]ÿ• � wÿrÿmþhþúÿöÿ  , % ™ÿ•ÿ“ � ùÿòÿsÿlÿ  ˆÿ€ÿvm¤ÿ›ÿØþÐþïþæþE > xq� | äþáþ: 9 ™ÿ™ÿ¡ÿ£ÿÅ È 8>“ÿšÿáÿêÿÎ Ø ·ÿÂÿ�ÿ™ÿm y îþúþ¨ ³  $ µÿ¿ÿ—ÿ ÿÿÿãþçþçþéþˆ ‰ ÿÿÖ Ô ƒþ€þÿÿ¢ÿŸÿ•ÿ‘ÿN K ù ö ¯ ­ ÿÿóýóý‘ÿ’ÿJ L ÆÿÉÿÂÿÆÿËÏ´ÿ¹ÿUÿZÿ� • ÿÿI O L R ÂÿÇÿm r çÿìÿŠþŽþ¿ÿÂÿJ M ê ì O Q §ÿ§ÿBÿBÿÚÿÙÿª © ¼ÿ»ÿS R +ÿ*ÿ!   ¼ » Ë Ë †ÿ…ÿÃÿÄÿ¨ © /0ëÿìÿ  " ~�âÿåÿ! $ vþyþª ­ ™ÿœÿ‘ÿ“ÿ‹ � 9 : » » 9ÿ8ÿ¯ÿ®ÿËþÉþÇÿÄÿûÿøÿA < ÒÿÍÿVÿPÿ 	 / ( C < ºÿ²ÿO H ± ©   êÿâÿ¨ÿ¢ÿÞÿ×ÿ– �    ùÿôÿæÿâÿ~ÿ{ÿçÿäÿ  :ÿ8ÿ�ÿÿa _ < : ËÿÊÿH G „ ‚ §ÿ¥ÿÍÿËÿëÿéÿ�ÿ‹ÿB A ö õ †ÿ„ÿÇÿÅÿÕ Ó 
 	 ¡ÿ ÿÉ É e f ”ÿ•ÿk m ÷ÿúÿµ ¸ # ' ¡þ¥þWÿ\ÿþ X _ âþéþ®þµþ  ƒ ‹ ýÿ â ê w  “ › #ÿ+ÿ   §ÿ®ÿ×þÝþ™ÿŸÿK P „ ˆ íÿòÿÝþáþgjRüUü±´3 6 þþYÿ]ÿûÿÿÿß ã ðþôþ§¬!þ&þé ï ·þ½þþþ¬²Ø Þ NÿTÿËÿÑÿsþyþ‚ ‡ ÓÿØÿ38ÌÿÐÿ2ÿ6ÿÑÿÓÿÇ É ÆÿÇÿ¯ÿ¯ÿ- . jÿjÿV U ¾ÿ½ÿ  ÅÿÃÿ¬ « A ? ø ö ~ÿ}ÿ5 4 êÿéÿPÿOÿHÿHÿ  ÀÿÁÿÄÿÅÿÈþÉþaÿcÿM O  VÿWÿ  éÿëÿ  ´ÿµÿšÿšÿŸÿ ÿå å ÛÛdÿdÿáþáþ"ÿ"ÿDÿDÿuvßàhÿiÿ`ÿbÿžÿ¡ÿ˜þ›þôÿøÿ  15ùÿþÿÿ!ÿþþÿ¤ ª k r ~ÿ…ÿÛÿâÿöÿýÿ$ + Ÿþ¦þŒ“cüiü½ÿÃÿHMÑÖ	  —š1ü4ü÷÷I L ³µ«ÿ­ÿ-ý/ýîýðýRÿSÿ~  € ‚ VXª¬ºÿ¼ÿ²þµþý‚ýÊÿÍÿÄ Ç p s …ˆ-0ùþüþsÿuÿ¾þ¿þ‚ ƒ HI  [ Z ÷þõþ^ \ [ Y vÿsÿ]ÿYÿ±ÿ®ÿcÿ_ÿÔ Ï 0,ØÿÓÿ®ÿªÿ( $ ®ÿ«ÿžÿ›ÿK I ­ÿ«ÿïÿîÿ2 1 ÁÿÁÿ@ A ; < ËÿÍÿSÿTÿÉÿËÿž   üÿýÿIÿKÿœÿ�ÿÑ Ñ Žÿ�ÿÿÿèþçþ#"Ž Œ Aÿ>ÿiÿeÿðþìþzu  &!š ” : 4 U O Cÿ=ÿ5ÿ0ÿßÿÚÿ  4ÿ/ÿ©ÿ¥ÿÌ È PÿMÿ1ÿ.ÿP M SQN L NþLþ" UÿRÿDÿBÿ]ÿ[ÿ^ÿ\ÿa^W T d a 5 1 (þ%þcþ`þnj÷ÿôÿCþ?þ¦ £ wtðþíþ)ÿ'ÿëÿêÿ×ÿ×ÿž ž ðÿñÿýÿÿÿ¾ÿÁÿLOæÿëÿÅ Ë ®þµþxÿÿ6 > õþþþ˜ v € ÍÿÖÿ«ÿ´ÿ $ d m »ÿÄÿÿÿ¾ÿÅÿe m Ê Ð + 0 "ÿ'ÿ#ÿ'ÿ` c 4 7 0 2 n n ÐÿÒÿÐ Ð bÿbÿ†þ†þúþúþb a 10ßÝQ P ÿ ÿæþæþFÿCÿúþùþÍÿÍÿ£   ó ò Š ˆ ’ÿ‘ÿÅÿÃÿ÷þ÷þQ N zÿzÿfÿdÿNM¥ ¤ Øÿ×ÿ
ÿÿ›ÿ›ÿïÿíÿe c ÷ÿ÷ÿ* ( âÿâÿ­ÿ«ÿ¾þ¿þ¹þ·þùý3.‘ — M J Ö Ø ¨ ¬ &ÿ%ÿ^ýaýÐþÑþO T »¹5= ÿÿÃþÅþèþðþ®þ¬þ  ~„ù ö …Œ‘ÿ’ÿ"ÿ%ÿÅÿÅÿª ´ ÊÿÆÿÔ Ø !*Fþ?þHÿRÿð ñ 0ÿ0ÿ]ÿ`ÿáé1 + õ ý ÚÿÚÿ­ ² ØÿÒÿÙ ç æÿßÿËÿÍÿ )Äý½ý	7ÿ6ÿGþQþDÿ8ÿ;K¿ÿ¹ÿK M gþkþÿÿ‚‚nþqþ® ° ¬ÿ²ÿ%  Ðÿßÿ¢ š Vÿbÿ] W ÉÿÑÿ«ÿ²ÿß Î   @ Æÿ¨ÿ�ÿ«ÿÃ ³ ùþÿr f ­ÿ½ÿ= 4 µÿ½ÿ! # f ^ Æ Ú ˆÿxÿÀÿËÿá ä :ÿ>ÿ� Ž – ¹ Èþ©þVþeþW^  éÿßÿ]ÿÿQ#.ÿYÿ öÿRU0ÿIÿË ¤ÿßÿ: 	 ’þ§þO ; ÷ÿ ì Ç 7 L ’ÿ‰ÿorÿþþ)ÿFÿ!  yÿGÿÚÿ# ¶ � ÖÿÆÿ• ¸ w ~ T  'ÿbÿ' - ëÿ£ÿ&ÿlÿ• ” ö « eÿÇÿŸ L ö 8Zýý6ÿ|ÿD2íÿžÿ œ ŽœþÓþ¥ÿžÿbÿ�ÿ8× ÿ™ÿÐþ‡þb 8  ­ ÓJŠþ´þÖÿ, 0 ¥ÿâÿ? Ýÿëÿ8 àÿýÿE J E ÿÞþ´ÿÃÿO ‹ g ÓÿBß„ÿêþ# – àþqþ“ Å ÍÿØÿ‘ÿ1ÿrÌ âÿðÿ • H úýŸþöþ
þŒÿQ O Íÿu1ÿ”þ¹ÿ} Ž ó¤¹þäÿMÿ£ýºú-ü® ÁÿŽ
Ý
6ù:ùµø…øž ¶ §ÿ½ÿDêýhÙü¯ü™H7þÿ9ü[û0ÿÔÿ‰ÿ|ÿ¬ÿgÿÝ[bG+ö ©ÿ` ŒúúC ™ : V ˆ Ö êñTÿ&º ?ÿéýþ™úpü Š¡ï ßþúË1þþûü üàþuÿAÿþÐ (�5Pýþš0üÿüÿßþ·þµ Þ 9þæýY … 'ú!Àþ¶þ—ÿ‚ÿÿ6ÿ% ÕÿbÿÍÿWÿÌþ" Â ÜþþN ? Jÿ¦ÿÈ é üÿÿ( ] ’ÿ’ · X h þþ‘ÿGÿ4 Q |ÿ­ÿ² * Söÿ2 Ñ : ð b- Ûÿÿµÿ ßÿþÿ‹ÿ®ÿÒÈ 2þŸL5þ-þ‘ÿM î Œ ÞþÄ‘þHýHÿA Jƒ”ýÿý@þTþ©ÿ9ÿÈºÿíÿëÿPÿ¯ÿ! Èÿºÿóÿ�ÿÿˆÿ'Ò  ( )ÿÿ  < ^â îÿ« Èÿÿ­ÿC ?ÿÿ×ÿÌÿ¸ÿúÿÏÿ�ÿ/{¨ÿdÿ¦ Iÿëþ3þ»þ# Dÿ  ”ÿ. F ™þìþZ ûÿµÆ " a c AþÍýo ä e 0ÿUÿ!  £þÿ¡ÿÿ‚ À – ü Ðÿÿzÿ! B 8  ˜ÿ4Èø œ ÿ2ÿ›ÿ¶ÿÖþ‚þ9 ¾ iÿõþ' ? Mÿ‡ÿú ¸ 4ÿ
ÿpÿãÿEÏÍ Í Im ? d ( –ýÞýE  :  = ‘ ¢ / Ãþ*ÿbÿùþl ƒ !ÿ~ÿa ¨ÿ{ þ :ÿdÿ_ ˜ÿ Ü ¯FÂþÍþCþ,þ�ÿôÿ0Ú Š j GÿÔÿ“ÿïþnÿ¨ÿ( ! Ç è c óþîÿr yÿxþèþ  w5|ÿÆÿüÿ›ÿÿsÿÂýqýØ 1UÌ gD®ÿ¶þþþáÿì Œ vþyþ´ÿ Ãÿuÿ_ÿ¤ÿ>þEþìõZÿ+ÿ? ö ¯ ¯ÿø`ðnõ`õÿüýp	®	žô Õú…ûÇý*ý§;ñÏÿ$ÿðþN9$ýÇþøhVÿÏ –ÿÂÿp4pþ¢ý×ÿnÿÿ� h “ÿ¹ÿ,7ÇþTÿo ‘ÿÝ ™ÿTÿ"l ²ÿS y { † _ Ñþ„þ¸ •‚ÿÆþ¡\þ~ÿW Cþ|Töü»û)©bÿZÿJ òÿeÿûÿƒþÏýy4s Ãÿ€ e ”ÿ "Ó ÕÿV *mÿÿr ~ ÿûþ_ÿ	 ’K 7ÿ_ ¥þUþ2ó ‰ µk €ýýÿõòþûŸþŸ _ Lüìüðÿ·FUþˆ÷?ý×,ÿZ¾?ÿ0 ˜ª•ÿMÿ¢þBÿ–ÿIÿWþåýœÿG € R ¥ * cþ�ÿ ÿÿÈÿV Ö ž B��ÿƒýˆûøüü£u�oÿ & ½þšüèþ˜baxßíïÞø‘õg›
Õ
ôÁìÿ5ÿTù&ú¯ý£ü½“ÿOÿ' ©ûý @ÿ¸ :Yz ¾óÿ…þd™ý~ü¯ýØþÍ µÿžø9ÿ : ’þÿ` v C Î  îÿK sþ9ÿäÿþé ^ýÿãÿRôÿ¬þ? âÿhÿN .ÿBÿ> ˆþÀþ"ÿ”öÿšÿ Èÿˆÿ< …ÿnÿé òÿ1 Ïû  ÿxþ2ÿo ãÿ¹ �… �ÿðýëý=þ�ÿòRÿ: ýþ­ÿ• Pÿ÷ÿmÿ+  Ðþ. † _>3 =ÿ�ÿ�ÿúÿ!/þ
ýðþ_ÿÿ TI ŒCxÿ pÿ>ÿŽÿÿÖ ¹ Ÿý2þùþ[þT;U \uþÞüýý7ÿ¨# ñÿÿtÿUÿ zÿpÿ³ ÷ ú v �ÿýÿìÿ¨ÿ²þ°þæ] 0 üÿG ( ¡ÿîþ£ÿŸí ÿ¨ÿ«ÿÿÿ®ÿŸ  Çÿàÿ\ÿÂÿÿ l ½ á G ~ öÿÙÿR —ÿÿe ç ‡ÿÿ˜ÿÒþÿñÿnÿd x ÿ_ÿ Úÿ7õ { %…Ó lÿõÿûÿÔÿÝÿºÿþ›þÒþ8þ – N3 ôÿo ¾ » T ÿÊÿ   ª #ÿQÿ/ÿ0þ? DÕ ‹ æÿ[ÿdÿôÿÿÿ½ A Ãÿòÿ … ¥  A @  Î J ‹ÿ ‘ c þ  ¡ÿ|ÿ@ÿeþ4ÿNÿ¸þò ‡ÿÓÿ� g ]�Þÿ�ÿÝÿW ¬ ~ ºþCþúýëþè " ¥ ¬ l 	V{ Úÿˆ ¥ÿ	ÿ§ÿE Ã   7ÿ‹ÿÿ”ÿq®ÿ /ä ÿcÿýþoþ8Šÿ¼þ.ÿ¸ÿÚÿÐÿ»  q RþVþpÿæþr *Ë › Ý  6ÿ• ½ ‘ÿm³þÿ©þHþ�ÿ„ÿx Ä 	 èÿ¢ÿiÿBÿpÿ| ” 5 ýÿ3ÿ"ÿÿÿd € 9 ü Ù ûÿS � ¶ µÿþþäþµÿj k Íÿÿ?þÿ¶ · ˆ æÿ}þ0ÿëÿ¾ÿE A ~ ñ Yÿÿ, ÄÿÔÿÈ ´ òÿ 4 Íþêþú Â ÿÿ5ÿÞÿ àþ] þ %Ë ðÿ�þ=ÿæÿÖÿ5¯ ÿqÿ›þ–þŸÿ-ÿs Ú )  z  ;¤µ ™ Ã H "ÿÛÿ¨ÿ-ÿâÿ©ÿÈþuÿ= ¡ÿ” ­ r � *ÿdÿ0V úÿæ Š N * Mÿ‰þûÿ¢W oÿ  ! 7 Ãÿ0ÿÅþ˜ÿV ]ÿÜÿ� ºÿ«ÿ} ¾ÿíÿ¹ ßÿõ @† Ÿ ¦ÿ_ÿÿ‹ÿV ©ÿŠÿ@ ÿÉþ'þ«ýþé³Fþ4þSÿèÿ$¤ ÿLÿ ÿÿéÿ	 3ÿÿmÿ‰ÿI M ãÿŽÿ›þúþ: 3 °:= À äÿ±ÿD  % = o›�ÿ5ÿ>þ…þ�ÿ+ÿí ½¹ü�ûœ IJ  üðùBúxüÚøÖý•þ„þ®ý¼ ^ š’ ’ÿþ›ýž iÌ X Êÿžÿ� \ÿ­þ° ® Œ 	òþ•þÿÚþMÿÉÿŽ d ŒÞ *ÿ� C äþ« J§ å ÏÿHÿIÿŠÿ§ÿÌÿÿþþ ¿ÿO é Ï E �ÿúÿ, Öÿ s † g ó ž 'þÌþ# âÿQ Ñÿúþïÿ0 ªÿh  ! ö  �ÿÝÿ¤ÿtÿÛÿÿÿ ñþPþ½ÿ< ]€Æ - ôÿ@ Q ¡ ¦ÿÿÿFÿ [ w (  Âÿ±þ‡ÿ] nÿ s � » xÿàþ¯ÿN �è Z Ç ‰ÿ0ÿ%ÿ\ÿ ÒÿOÿ�ÿúÿÌÿÒÿ¯ÿ D Ïÿ¾ÿCË ! Ô ’ - œ 2 {þnÿÊÿöþÿ'ÿ)ÿ—ÿÏÿeÿ© ‹ Êc| %ÿïÿ¢  ©  ‹ÿ\ÿ.ÿNÿr p ÚÿÁÿ
ÿjÿH ¨ÿŽÿf 	C Nÿöÿ ‰ÿ�ÿ0 Òÿÿÿÿ“ î Ç R ! % € µÿYÿòþnÿÐ , ÛþrÿZ ' Ò �  7 V å P ÿ°þ  3 ~ÿýÿ   6 öÿ Ìÿ‘ÿ� G y V¿ ©ÿvÿ7 p  #ÿšÿÁÿÙþ¶þÑÿéÿMÿ’^  ¸ ËÿHÿ9 < KÿŸÿÉÿœÿÅÿ©ÿ w ö † Üÿs B ˆÿPÿ#  xÿPÿºÿ4 ûÿ´ÿíÿŽ c X U ªÿýÿ, Ÿÿˆÿ# ` Öÿvÿíÿ‰  “ ¬ ; ÿeÿ0 óÿv Z  ” úÿWÿ*ÿ|ÿ¶ÿêÿ }ÿŸ ï ¡ ì S mÿ   èÿ�ÿXÿœÿçÿvÿuÿ´ÿkÿY « Äÿ”ÿòÿ > 1 }–)  ÷þÿþ{ÿ¨ÿÕ d V 	þÿVÿ~ÿÎÿzÿ®ÿ…  ›ÿÕÿCÿhÿèÿÀÿM *  ‘ Æ z ¾ “ 4ÿÀÿ2ÿãþ íÿŸÿ �ÿuÿ! ÐÿÜÿ> J t � ìÿpÿ ×ÿÓÿÓÿXÿÍþSÿ™ � Ä Ëÿ= — `   ÿ ÿ ùÿWÿ‡ÿaÿÿ­ ç _ [ ¾ ´ 	 Ûÿ¶ÿ> f ÿYÿÙÿ ®  ÉÿD ¯ÿ“ÿ>ÿÿ8 K Ÿÿãÿ: »ÿz Þ úÿ	 R ÜÿÌÿJ ‡ÿrÿÞÿ�ÿ1 š ÒÿÜÿ" ™ÿMÿÏÿž ¿ t— íþæÿÈÿoÿ¶ ( ³ÿ® *ÿbþäÿ% 2 = ëÿÛÿþÿýÿôÿØÿN ’ ) åÿ…ÿ�ÿÜÿ † a ëÿÖÿpÿ°ÿ±ÿyÿ4 C èÿòÿ0 ) Àÿ¹ÿ! ,  ùÿÓÿçÿz f 
ÿûþ^ ¡ Z ùÿ# Y ÁÿÚÿÃÿhÿd µ 4  O 7 mÿ”ÿ½ Œ . j èÿžÿøÿ" úÿ ( Åÿ„ÿõÿ Êÿœÿ¥ÿÊÿóÿe  V ¶  ´ÿwÿ¥ÿ! I ¬ 9 žÿ  ßÿ1  ¯ÿÜÿ*   Üÿ½ÿ–ÿ¬ÿ? V òÿ²ÿ|ÿ±ÿ• � 0  . R Ÿ � ³ÿ’ÿÝÿ àÿÖÿ‘ÿvÿñÿ ? ,  ùÿìÿ    Üÿ5 ‡ ‹ÿ\ÿuÿbÿ› á ! êÿÖÿãÿ½ÿÊÿ®ÿ¸ÿC   & òÿúÿàÿµÿ *   ¢ÿ”ÿÃÿÄÿ  ôÿãÿ  óÿÒÿìÿE =  ] R ~ ‰ t 6ÿÿ¹ÿØÿ° ¡ = , ¥ÿµÿ±ÿ­ÿ&  žÿ£ÿê ç ØÿÛÿ¡ÿŽÿð ÿ ±ÿ­ÿ"  äÿéÿæÿøÿ)  ,ÿIÿÓÿÓÿ· ˜ ïÿ Ãÿ°ÿ$ #   þÿ °ÿ›ÿÅÿÙÿ€ÿpÿ™ ˜ W ` ^ÿPÿi o  
 üÿùÿ÷ÿñÿéÿòÿ  j p ¹ÿ¶ÿJ J æÿåÿþþöþþ€þ$ÿ*ÿ"ÿÿbÿeÿ	  = 6 ! & ‰ÿŠÿ© � 1ÿ8ÿàÿàÿÉ » ×ÿÞÿáÿâÿ2 " Ýÿéÿ¤ÿ�ÿ> 9 qÿuÿèÿãÿa ` ôÿðÿ  ÚÿÚÿ3 -   âÿÞÿâÿÞÿêÿîÿ ûÿ   W V öÿðÿ  !   ‡ÿƒÿjÿlÿâÿÜÿ& % 	  ª ¨ ÕÿÓÿÀÿ»ÿ    îÿëÿ“ÿ’ÿ$        ÕÿÓÿ[ÿWÿJ I ðÿìÿ    ØÿÕÿ  ØÿÖÿ} x ÆÿÃÿ© ¦ êÿæÿìÿêÿ¦ÿ¡ÿ\ X à Ý ØþÕþ7ÿ2ÿuÿsÿØÔ–ÿ�ÿÚýØým h Áÿ¼ÿ‘Ž^ Y ÕþÐþ…ÿƒÿØ Ó ¬ÿ¨ÿ–ÿ’ÿc _ ´ÿ±ÿ
  òÿïÿ* ' / , f c ×ÿÔÿùÿöÿÔÿÒÿaÿ]ÿ  ­ÿªÿn k ‘ � ØÿÕÿY V   �ÿ~ÿ¾ÿ¼ÿ  ïÿíÿ& $ & $ ÇÿÆÿóÿðÿ  ( & ) ' 	  üÿùÿH F   b _   4ÿ1ÿÌÿÉÿáÿßÿÔÿÒÿ  . , ÉÿÆÿçÿäÿ' $ = :   ×ÿÔÿ#   ÷ÿõÿîÿìÿaÿ^ÿ·ÿ´ÿ& # ÷ÿôÿj g 2 / > ; ÛÿØÿ, ) ªÿ§ÿ½ÿºÿ‡ „   ˜ • rÿoÿ  “ � ) % p l   A > öÿóÿR O ÿ ÿoÿlÿúÿ÷ÿÑÿÍÿ´ ± !  q o   ÓÿÑÿ|ÿzÿUÿSÿ¥ÿ¤ÿ- , l l 2 2 � � h h 0ÿ1ÿ†ÿ‡ÿñ ó ’ÿ”ÿDÿGÿO R & ) ÙÿÜÿÁÿÅÿ”ÿ˜ÿ‰ÿ�ÿ… ‰ Û ß ¾ÿÂÿ. 3   Xÿ\ÿ·ÿ»ÿ£ÿ§ÿÿÿ v y ‰ Œ  ÿ£ÿÆÿÉÿ–ÿ™ÿ. 0 ) * âÿãÿ† ˆ bÿcÿL M ! " ÂÿÃÿ  ÷ÿ÷ÿòÿòÿ4 4 J J ÞÿÞÿ    »ÿ¼ÿ·ÿ·ÿ„ … d e   , . ( ) CÿDÿøÿúÿ2 4   ×ÿÚÿ  —ÿšÿÿÿûÿþÿW [ ¯ ² ˜ÿ›ÿ/ 3  ÿÿ¾ Á ÿÿ¹ ½ ™�Yý\ýË Ï �þ“þÝÿàÿøÿûÿ ‚ <?1ÿ4ÿãÿæÿ¹ÿ¼ÿT W    Ã Ç ìþðþ½ Á »ÿÀÿÖþÛþ; @ ÆÿÌÿlr¢ÿ©ÿY ` } … 4ÿ<ÿ  © ¢ÿ«ÿµÿ¾ÿ % tÿ~ÿ¬ ¶ ãÿíÿíÿöÿ³ÿ½ÿT ] 7 A ËÿÔÿ{ „     BÿIÿ  ÂÿÈÿ¹ÿ¿ÿ    	  E H ‘ÿ“ÿk m r s ìÿíÿ4 3 OÿNÿTÿSÿ5ÿ5ÿ!   ¿ÿ¾ÿŒ‹ùþøþ ÿŸÿƒ ‚ ) (   ~ÿ~ÿÀÀÏüÐüÿÿ¿ Á L O òö?ÿCÿ
  9 > iÿnÿ ÿ&ÿAG¸ÿ¾ÿœÿ¢ÿ 	 7 = � ˆ ²ÿ¸ÿµÿ¼ÿÀÿÆÿœ ¢ øÿýÿãÿèÿåÿéÿ¤ ¨ éÿíÿ‹ÿŽÿ 
 p r ëÿíÿeÿfÿ' ( íÿîÿ– —   øÿùÿP P ïÿðÿ    ­ÿ®ÿqÿsÿ´ÿ¶ÿúÿüÿD F G J N R - 1 ¶ÿºÿ) - ÄÿÈÿ“ÿ—ÿ{ €  	 ÑÿÖÿ  ºÿ¿ÿâÿæÿ_ c äÿçÿA D ƒÿ†ÿÞÿàÿƒ „ 5ÿ6ÿT T åÿäÿ: 9 � � €ÿ~ÿÊÿÈÿÇÿÄÿ= 9 üÿøÿ      } x  ýÿ) $ Üÿ×ÿâÿÝÿÛÿÖÿéÿåÿB >   7 4 ÇÿÄÿ¡ÿ ÿBÿAÿ!   		¼ ¼ W X âÿãÿ£ÿ¤ÿÜþÞþqÿsÿQ T ýÿ  «ÿ®ÿ` c > A žÿ¡ÿ 
 a d ! # êÿìÿÖÿØÿ¸ÿ¹ÿ" " ÌÿÌÿñÿðÿÖÿÕÿñÿðÿ   ÿžÿÞÿÜÿõÿóÿT Q / - t q ñÿîÿ¨ÿ¥ÿRÿOÿ…ÿ‚ÿV S ™ÿ–ÿÆÿÃÿ  ~ {      òÿñÿ‚ÿ�ÿ!   ( '   æÿæÿíÿíÿ£ÿ£ÿôÿôÿøÿøÿ  4 4 ÿÿÿÿ  öÿ÷ÿ  ‹ÿ‹ÿªÿªÿuÿtÿA @ › š ÅÿÃÿçÿåÿ   "  ãÿàÿñÿîÿÜÿØÿ  ýÿ 	 L I > : ûÿøÿÝÿÙÿ  ÑÿÎÿ   � ~ ÆÿÃÿ²ÿ¯ÿvÿsÿ   — •      ßÿÞÿÓÿÓÿÔÿÔÿ* + M M   ðÿñÿæÿçÿÑÿÓÿ
    , -   ÷ÿùÿïÿñÿ    
  âÿãÿÐÿÑÿ  / / X X ÒÿÒÿÊÿÉÿ  ýÿüÿ      @ > 4 2 ' $   ËÿÉÿõÿòÿÛÿØÿðÿíÿ( & - *     éÿçÿøÿ÷ÿÙÿØÿ­ÿ¬ÿ7 7 / /   ÃÿÃÿàÿáÿ  ÙÿÚÿ  5 6 òÿóÿM N R T XÿYÿ²ÿ³ÿ    àÿâÿ ! A B ØÿÚÿ   ôÿõÿ·ÿ·ÿþÿþÿ  âÿâÿüÿüÿþÿýÿ   - ,   ÎÿÍÿüÿúÿ	      õÿôÿýÿûÿèÿæÿ7 5 ôÿóÿ    ãÿãÿ& &     ËÿËÿÕÿÖÿñÿòÿ@ A ëÿìÿëÿìÿÑÿÓÿÕÿÖÿ  ýÿÿÿ  , - [ \ ÝÿÞÿ# $ îÿïÿ   èÿéÿáÿáÿ$ $ ¸ÿ¸ÿ  ÙÿÙÿìÿëÿ   öÿõÿùÿøÿøÿöÿ”ÿ“ÿ    þÿŒÿŠÿ  ùÿ÷ÿÄÿÃÿáÿàÿ' & ÅÿÄÿðÿïÿ¿ÿ¾ÿG F 5 5 ÞÿÞÿöÿöÿ®ÿ¯ÿ* *   òÿóÿäÿåÿùÿúÿíÿîÿ  âÿãÿ2 3   ÝÿÞÿóÿôÿ÷ÿøÿ  îÿïÿ  ËÿËÿ  + , " " s s   MÿMÿ“ÿ’ÿåþåþyÿxÿ))J I Ž � ™ ™ éÿèÿçÿæÿ®ÿ­ÿ£ÿ¢ÿ; : ÙÿÙÿñÿðÿR R ÀÿÁÿáÿáÿ  / 0 8 9 : ;   U V 
  ëÿìÿðÿñÿòÿóÿñÿòÿ¨ÿ©ÿòÿóÿ` a ; <   
 
 ¿ÿÀÿ  âÿãÿåÿåÿòÿóÿÖÿÖÿÌÿÍÿ  > > çÿçÿ    1 1 U T ìÿëÿÆÿÅÿB B   çÿæÿ/ . * )   ûÿùÿ´ÿ²ÿ"     ×ÿÔÿ  «ÿ©ÿ3 0 ÷ÿõÿºÿ¸ÿ. ,   °ÿ®ÿÍÿÊÿ¿ÿ½ÿµÿ³ÿ  þÿýÿÿÿþÿ  ÖÿÖÿŠÿŠÿk k c c ÂÿÃÿ§ÿ¨ÿçÿèÿùÿüÿ+ .   Ÿÿ£ÿÊÿÎÿ  3 7   7 < ×ÿÛÿ  øÿüÿûÿÿÿéÿíÿÏÿÓÿ  ÎÿÑÿ  ÂÿÄÿ
  , - òÿòÿ  % $ A @   ÇÿÅÿ  úÿ÷ÿíÿéÿ  ñÿíÿ ýÿ 
 ' #     ëÿèÿ      åÿãÿ³ÿ±ÿ  åÿãÿ  h g        ÃÿÃÿõÿöÿ  > ? êÿëÿ    �ÿ�ÿ¬ÿ­ÿôÿõÿ  ûÿüÿèÿèÿ×ÿ×ÿÈÿÉÿ% % æÿåÿôÿóÿ' & ¢ÿ¡ÿ  ÿÿýÿ  ÖÿÔÿ­ÿ«ÿ  æÿäÿ}ÿ{ÿ   Ì Ê � Ž ÙÿÙÿ  B B   ¯ ° XÿYÿÒÿÔÿkÿmÿxÿ{ÿH K }ÿ�ÿ " ùÿýÿ‡ Œ µ º îÿòÿ¿ÿÃÿ… Š õÿúÿGÿKÿX \ h l °ÿ³ÿ 
 p s   êÿëÿãÿäÿÇÿÇÿs s   ªÿ¨ÿØÿÕÿ 	 K H îÿêÿ^ Z tÿpÿ   ËÿÆÿp k õÿðÿ÷ ò ú õ ŸüšüßÿÚÿZÿVÿŽÿŠÿ¾ÿ»ÿm k |zÛ Ú z y Œ‹=ÿ=ÿ¨þ¨þ{þ{þ³ÿ´ÿëÿìÿ£ ¤   mÿoÿ�éÿëÿ  ¡ £ s u ¡ÿ£ÿ± ² �þ’þEýFýÏ Ð   “ “ fÿgÿaÿaÿkj% % d c HGÁÿÀÿüþûþX W 4 3 ¶ ¶ {ÿzÿ'ÿ&ÿ‹ÿŠÿ…ÿ…ÿ,,íÿíÿÝÿÝÿûÿüÿI J L N lÿnÿ2 4  	 ½ÿ¿ÿÂÿÅÿ·ÿºÿ- 1 ÈÿÌÿŽÿ’ÿG K ñÿõÿÛÿßÿÙÿÜÿëÿïÿòÿõÿ  [ ]   àÿâÿŠÿŒÿÏÿÐÿ; ; ÌÿÌÿÏÿÎÿw v    °ÿ®ÿ@ = c _ O J X T ÐÿËÿâÿÝÿ  ËÿÅÿ@ ; äÿÞÿ 
 m g •ÿ�ÿàÿÚÿ8 3 ñÿìÿËÿÆÿ= 9   ÝÿÚÿ( & QÿPÿÊÿÉÿíÿìÿb b F G ØÿÙÿI K ÂÿÄÿO R Ýÿàÿ- 1 " & çÿëÿ2 6 ®ÿ²ÿ   	 ¨ÿ¬ÿ- 1   ‹ÿŽÿ- 0     % ' ëÿíÿ¼ÿ½ÿÂÿÃÿ  øÿøÿ�ÿ�ÿÞÿÞÿ  ¥ÿ¤ÿ> > £ ¢ ýÿýÿ¤ÿ¤ÿ­ÿ­ÿzÿ{ÿÇÿÈÿc c - . öÿ÷ÿU W 	  ÙÿÛÿàÿâÿÏÿÒÿ  % ) 8 < ¢ÿ¦ÿÝÿáÿ  $ áÿäÿ    íÿïÿãÿåÿÜÿÝÿ    7 6 ×ÿÕÿ¢ÿŸÿJ F   öÿðÿ< 5 ßÿ×ÿ0 (   ãÿÙÿ   ÷ÿ] S ÕÿËÿA 7 öÿìÿåÿÛÿôÿëÿÌÿÅÿ   3 - � | ÔÿÐÿ* ( $ # 2 3 ¾ÿÀÿþÿ ¸ÿ½ÿ     
 5 > ^ÿhÿ+ 6 LÿXÿûÿ  ) „ �   ­ÿºÿL W ®ÿ¹ÿ  €ÿŠÿþÿ  
 d j 1 6 ÚÿÝÿ& ( áÿâÿèÿèÿ  çÿåÿîÿëÿ] X   
    ØÿÑÿÛÿÓÿüÿôÿ  @ 7 8 /  
 ¶ÿ¯ÿ  åÿÞÿ þÿ   ¸ÿ´ÿ5 1 	  ùÿ÷ÿËÿÊÿçÿçÿôÿôÿ  / 0 ùÿûÿ    ÛÿÞÿ
  ¿ÿÂÿöÿùÿâÿäÿ    èÿéÿ? A ÓÿÔÿ) ) ÂÿÂÿ  D D 5 4 / . ÎÿÍÿýÿûÿàÿÞÿäÿâÿüÿúÿ. + ÿÿüÿ  ãÿáÿ    ãÿâÿøÿøÿÕÿÕÿ  Þÿßÿ  
  ÕÿØÿÿÿ òÿöÿ  àÿåÿøÿüÿ   ñÿõÿ   ØÿÜÿ   # - 1 âÿåÿÓÿÖÿêÿíÿúÿýÿ  îÿïÿýÿþÿäÿäÿ    !   
     	     
  üÿùÿ{ÿxÿÆÿÃÿÝÿÚÿÊÿÆÿ2 / , )  
 M J         åÿãÿÕÿÓÿ, *   ÛÿÛÿÝÿÝÿ÷ÿ÷ÿñÿñÿ= =   êÿêÿÜÿÝÿúÿûÿûÿüÿ½ÿ½ÿÄÿÅÿÐÿÑÿâÿãÿ    çÿèÿ1 2     ñÿòÿ  ªÿªÿÑÿÑÿ  –ÿ–ÿ‡ ˆ ÇÿÇÿàÿàÿ– – öÿöÿåÿåÿ2 3 ×ÿØÿÛÿÜÿE F ßÿßÿ×ÿØÿÛÿÜÿ´ÿµÿÕÿÖÿP Q ÷ÿøÿ 
 + - ÑÿÒÿ& '   òÿóÿøÿùÿèÿéÿõÿöÿúÿûÿðÿñÿ  ÝÿÞÿãÿäÿ3 4 5 6 ôÿõÿüÿýÿ  ÜÿÜÿ  ýÿýÿ0 0 	 	 àÿàÿ  * )   ëÿêÿ 
 ßÿÝÿøÿ÷ÿ  ðÿîÿüÿúÿ. + åÿãÿîÿìÿ  éÿçÿîÿìÿûÿøÿ) &   éÿçÿ  
      îÿìÿÛÿÚÿõÿôÿ  äÿäÿâÿâÿ    òÿóÿ  * ,   " Ýÿßÿøÿúÿ  " êÿìÿíÿðÿóÿõÿýÿÿÿÛÿÝÿ  + .   þÿ  + - ÍÿÏÿëÿíÿîÿðÿâÿãÿP Q ýÿþÿ. .   þÿþÿûÿûÿ÷ÿ÷ÿ    ÛÿÚÿûÿùÿ÷ÿõÿÃÿÂÿ6 4 úÿøÿóÿñÿäÿâÿ  õÿóÿB @ ( & Ä Ã ­ÿ¬ÿ‰ýˆý*)TTŠþŠþÒÿÒÿc c ÎÿÏÿo p   ôÿõÿ! " ÿÿ    ¨ÿ©ÿm n ôÿõÿ‚ÿƒÿ·ÿ¸ÿøÿùÿ  ›ÿ›ÿ# # p p p o 
 
 ¼ÿ»ÿ4 3    ßÿÞÿÚÿÙÿ÷ÿöÿ  ÌÿÊÿ°ÿ®ÿ? = Q P   ÇÿÆÿõÿóÿ. , áÿàÿ  ÿÿÝÿÝÿ  ÙÿÙÿãÿãÿ5 6 ùÿùÿïÿðÿ½ÿ¾ÿ  èÿêÿüÿýÿ  ûÿýÿ     6 8 “ÿ”ÿµÿ·ÿúÿüÿôÿöÿüÿþÿ5 7 Z [   + +   ¿ÿÀÿ    ÞÿÞÿ    ÿÿþÿôÿôÿðÿïÿ    îÿíÿûÿûÿîÿíÿ   ) ( , + ÞÿÝÿÌÿËÿíÿìÿãÿâÿ    úÿùÿøÿøÿËÿÊÿ¤ÿ¤ÿ( ( ? ? æÿåÿáÿáÿ) )     øÿøÿåÿäÿ* )           ëÿêÿòÿñÿÿÿÿÿ  ÿÿüÿüÿóÿóÿ     	   êÿëÿÿÿ  ÇÿÈÿêÿëÿ  êÿëÿñÿòÿ         èÿêÿðÿñÿúÿûÿ  úÿüÿ  æÿçÿïÿñÿøÿùÿøÿùÿ" # êÿëÿÿÿÿÿýÿýÿ  ýÿýÿ      ÿÿ 
   ÿÿøÿ÷ÿöÿõÿ÷ÿöÿïÿîÿ        üÿûÿ  öÿõÿöÿõÿ  õÿôÿ         þÿþÿ  ÷ÿ÷ÿýÿýÿêÿêÿñÿñÿ      üÿüÿûÿûÿèÿèÿ    ÂÿÂÿ×ÿ×ÿ    ÿÿÿÿóÿóÿñÿñÿ  óÿóÿ      úÿúÿùÿùÿêÿëÿòÿóÿ
 
 ÝÿÞÿæÿæÿýÿþÿ  	 
 õÿöÿïÿïÿ  ãÿãÿ 	   óÿôÿüÿüÿõÿöÿëÿìÿïÿïÿ  ùÿúÿ            üÿûÿÿÿþÿöÿõÿïÿîÿ  % $ ìÿëÿ  âÿáÿ      õÿôÿëÿêÿ  çÿçÿúÿúÿ    ÷ÿöÿïÿïÿõÿõÿ  æÿæÿ    öÿöÿùÿúÿùÿúÿ 	 ðÿñÿ	 
 úÿúÿ    öÿöÿÿÿÿÿñÿòÿîÿîÿòÿòÿóÿóÿÿÿÿÿ  ôÿôÿ                
 
 öÿõÿ    ñÿðÿ  ñÿñÿøÿøÿþÿþÿþÿþÿ      úÿúÿ  íÿíÿ    úÿûÿøÿùÿñÿòÿ  ýÿþÿøÿùÿ      úÿûÿøÿùÿ  úÿúÿÿÿÿÿýÿýÿ  èÿèÿêÿêÿ  úÿùÿüÿüÿ  ÿÿ  ûÿúÿ  ûÿûÿ÷ÿöÿüÿûÿþÿþÿúÿùÿøÿ÷ÿøÿ÷ÿ  ÿÿÿÿþÿôÿôÿÿÿþÿüÿüÿÿÿþÿ    þÿþÿþÿþÿ  ùÿùÿüÿüÿ      ûÿûÿøÿøÿ  ûÿûÿöÿ÷ÿûÿüÿ  ÿÿÿÿ        øÿøÿ  øÿùÿ        úÿúÿ    úÿûÿ  ýÿýÿüÿüÿþÿþÿüÿüÿ÷ÿøÿ  óÿóÿ    üÿüÿÿÿÿÿûÿûÿðÿðÿöÿöÿÿÿÿÿ    øÿøÿ    úÿúÿ    üÿüÿ  ÿÿÿÿüÿüÿ÷ÿ÷ÿüÿüÿúÿúÿþÿþÿ  ôÿôÿÿÿÿÿöÿöÿ  ùÿùÿ  ÿÿÿÿýÿýÿ  õÿõÿ      ûÿûÿóÿóÿ  ûÿûÿòÿòÿøÿøÿ  	    ýÿýÿ          ûÿûÿÿÿÿÿ  ûÿûÿúÿúÿüÿüÿ    ÿÿ        öÿöÿ  ÿÿÿÿúÿúÿøÿøÿûÿûÿ                ÿÿÿÿ  øÿøÿÿÿÿÿýÿýÿùÿùÿûÿûÿ  þÿþÿþÿþÿ
 
   þÿþÿ    ÿÿÿÿ    öÿöÿüÿüÿÿÿÿÿ  ÷ÿ÷ÿöÿöÿÿÿÿÿúÿúÿ  ÿÿÿÿ  þÿþÿýÿýÿüÿüÿýÿýÿ÷ÿ÷ÿ    øÿøÿþÿþÿ    üÿüÿýÿýÿ  üÿüÿÿÿÿÿýÿýÿ          þÿþÿ  ûÿûÿøÿøÿþÿþÿþÿþÿ  ýÿýÿ  ÿÿÿÿ    úÿúÿûÿûÿÿÿÿÿ    þÿþÿ  ÷ÿ÷ÿüÿüÿöÿöÿúÿúÿüÿüÿ    þÿþÿúÿúÿ  ûÿûÿûÿûÿúÿúÿýÿýÿ      ýÿýÿ  ýÿýÿ  ùÿùÿ          þÿþÿûÿûÿûÿûÿýÿýÿ  üÿüÿ  úÿúÿ          óÿóÿþÿþÿüÿüÿ  þÿþÿúÿúÿúÿúÿúÿúÿüÿüÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿ          úÿúÿ  úÿúÿ      ÿÿÿÿ        þÿþÿýÿýÿ      ÷ÿ÷ÿ  ùÿùÿüÿüÿ      ÿÿÿÿ  þÿþÿ  ýÿýÿüÿüÿûÿûÿþÿþÿýÿýÿþÿþÿ    ýÿýÿýÿýÿ  ÿÿÿÿûÿûÿýÿýÿþÿþÿùÿùÿ        þÿþÿþÿþÿ  þÿþÿüÿüÿ    ýÿýÿ                ùÿùÿûÿûÿùÿùÿûÿûÿüÿüÿþÿþÿ            ûÿûÿþÿþÿûÿûÿ            úÿúÿþÿþÿ      ÿÿÿÿýÿýÿ  ýÿýÿ          ÿÿÿÿýÿýÿþÿþÿ      üÿüÿ        øÿøÿüÿüÿþÿþÿÿÿÿÿûÿûÿþÿþÿ  ÿÿÿÿ    ýÿýÿ    úÿúÿÿÿÿÿýÿýÿüÿüÿ    ýÿýÿ      úÿúÿÿÿÿÿ      ýÿýÿ  ÿÿÿÿüÿüÿþÿþÿúÿúÿýÿýÿ            þÿþÿûÿûÿûÿûÿþÿþÿÿÿÿÿüÿüÿýÿýÿ  úÿúÿÿÿÿÿ    þÿþÿ    ÿÿÿÿ  þÿþÿ  ýÿýÿ      ùÿùÿúÿúÿüÿüÿ          þÿþÿ          þÿþÿüÿüÿüÿüÿ  ýÿýÿùÿùÿ            ÿÿÿÿ    úÿúÿûÿûÿÿÿÿÿ    úÿúÿÿÿÿÿ  ûÿûÿûÿûÿ  ÿÿÿÿ              ÿÿÿÿûÿûÿ  ÿÿÿÿýÿýÿþÿþÿ                    ÿÿÿÿÿÿÿÿ                þÿþÿýÿýÿ    ýÿýÿ    üÿüÿþÿþÿ    óÿóÿ    öÿöÿ  	 	 ýÿýÿýÿýÿþÿþÿþÿþÿúÿúÿýÿýÿûÿûÿ      üÿüÿ        ÿÿÿÿ    ýÿýÿýÿýÿþÿþÿþÿþÿ  þÿþÿÿÿÿÿ  þÿþÿýÿýÿ    üÿüÿÿÿÿÿ  þÿþÿ          ÿÿÿÿ  ÿÿÿÿÿÿÿÿýÿýÿ    þÿþÿ        ÿÿÿÿÿÿÿÿ  þÿþÿ      þÿþÿüÿüÿ    þÿþÿ    þÿþÿ      ÿÿÿÿþÿþÿ    ÿÿÿÿüÿüÿ  ÿÿÿÿ              þÿþÿ    ÿÿÿÿ    ÿÿÿÿÿÿÿÿþÿþÿ        ÿÿÿÿýÿýÿÿÿÿÿ    ÿÿÿÿ  üÿüÿ  þÿþÿÿÿÿÿ  üÿüÿ            ÿÿÿÿÿÿÿÿ    ýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿ    ÿÿÿÿ  þÿþÿþÿþÿ    ÿÿÿÿ  þÿþÿ      þÿþÿþÿþÿ      ÿÿÿÿ    ÿÿÿÿ    ÿÿÿÿ            ÿÿÿÿ              ÿÿÿÿ                ÿÿÿÿ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿ    ÿÿÿÿ  ÿÿÿÿ          ÿÿÿÿ                                                      ÿÿÿÿÿÿÿÿþÿþÿ                  þÿþÿ    ÿÿÿÿ                      ÿÿÿÿ    ÿÿÿÿ                  ÿÿÿÿ              ÿÿÿÿ                                    ÿÿÿÿÿÿÿÿ                                            þÿþÿ                                              ÿÿÿÿ            ÿÿÿÿ        ÿÿÿÿ    ÿÿÿÿ                                                      ÿÿÿÿ                ÿÿÿÿ                    ÿÿÿÿ                              ÿÿÿÿ                                                                                  ÿÿÿÿ    þÿþÿ        ÿÿÿÿ    ÿÿÿÿ  ÿÿÿÿ                                      ÿÿÿÿ    ÿÿÿÿ                                                ÿÿÿÿ                                  ÿÿÿÿ    ÿÿÿÿ                ÿÿÿÿ                            ÿÿÿÿ    ÿÿÿÿ                                                                      ÿÿÿÿ        ÿÿÿÿ                                                          ÿÿÿÿ                                                                                                                          ÿÿÿÿ                                                              ÿÿÿÿ                      ÿÿÿÿ    ÿÿÿÿ                ÿÿÿÿÿÿÿÿ    ÿÿÿÿ                                                ÿÿÿÿ                                                        ÿÿÿÿ                                                      ÿÿÿÿ                                                                                                                  ÿÿÿÿ                ÿÿÿÿ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/composer.json                                                             0000644                 00000002460 15266052743 0014227 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       {
    "name":        "studio-42/elfinder",
    "description": "File manager for web",
    "license":     "BSD-3-Clause",
    "homepage":    "http://elfinder.org",
    "authors": [
        {
            "name":     "Dmitry Levashov",
            "homepage": "http://std42.ru",
            "email":    "dio@std42.ru"
        },
        {
            "name":     "Troex Nevelin",
            "homepage": "http://std42.ru",
            "email":    "troex@fury.scancode.ru"
        },
        {
            "name":     "Naoki Sawada",
            "homepage": "http://xoops.hypweb.net",
            "email":    "hypweb+elfinder@gmail.com"
        },
        {
            "name":     "Community contributions",
            "homepage": "https://github.com/Studio-42/elFinder/contributors"
        }
    ],
    "require": {
        "php": ">=5.2"
    },
    "suggest": {
        "kunalvarma05/dropbox-php-sdk": "VolumeDriver `Dropbox`2 require `kunalvarma05/dropbox-php-sdk.",
        "google/apiclient": "VolumeDriver GoogleDrive require `google/apiclient:^2.0.",
        "barryvdh/elfinder-flysystem-driver": "VolumeDriver for elFinder to use Flysystem as a root.",
        "nao-pon/flysystem-google-drive": "require in GoogleDrive network volume mounting with Flysystem."
    },
    "autoload": {
        "classmap": ["php"]
    }
}
                                                                                                                                                                                                                includes/File_manager/lib/js/elfinder.min.js                                                        0000644                 00002054371 15266052744 0015044 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder - file manager for web
 * Version 2.1.66 (2025-08-28)
 * http://elfinder.org
 * 
 * Copyright 2009-2025, Studio 42
 * Licensed under a 3-clauses BSD license
 */
!function(e,t){if("function"==typeof define&&define.amd)define(["jquery","jquery-ui"],t);else if("undefined"!=typeof exports){var n,i;try{n=require("jquery"),i=require("jquery-ui")}catch(a){}module.exports=t(n,i)}else t(e.jQuery,e.jQuery.ui,!0)}(this,function(e,t,n){n=n||!1;var i=function(t,n,a){var o,r,s,l,c,d,p,u=this,h=[],f=["button","tooltip"],m=e(t),g=e.extend(!0,{},e._data(m.get(0),"events")),v=e("<div></div>").append(m.contents()).attr("class",m.attr("class")||"").attr("style",m.attr("style")||""),b=m.attr("id")||m.attr("id","elfauto"+e(".elfinder").length).attr("id"),y="elfinder-"+b,w="mousedown."+y,x="keydown."+y,k="keypress."+y,C="keyup."+y,z=!1,T=!1,A=["enable","disable","load","open","reload","select","add","remove","change","dblclick","getfile","lockfiles","unlockfiles","selectfiles","unselectfiles","dragstart","dragstop","search","searchend","viewchange"],j="",O={path:"",url:"",tmbUrl:"",disabled:[],separator:"/",archives:[],extract:[],copyOverwrite:!0,uploadOverwrite:!0,uploadMaxSize:0,jpgQuality:100,tmbCrop:!1,tmbReqCustomData:!1,tmb:!1},S={},I={},M={},F={},E=[],D={},U={},P=[],R={},q=[],H=[],_=new u.command(u),N="auto",L=400,W=null,B="sounds/",$="",V=!1,K=e(document.createElement("audio")).hide().appendTo("body")[0],X=0,J="",G=null,Y=function(t){var n,i,a,o,r,s,l,c,d={},p={};u.api>=2.1?(u.commandMap=t.options.uiCmdMap&&Object.keys(t.options.uiCmdMap).length?t.options.uiCmdMap:{},J!==JSON.stringify(u.commandMap)&&(J=JSON.stringify(u.commandMap))):u.options.sync=0,t.init?(I={},F={}):(s=j,n="elfinder-subtree-loaded "+u.res("class","navexpand"),r=u.res("class","navcollapse"),i=Object.keys(I),a=function(e){if(!I[e])return!0;var t="directory"===I[e].mime,i=I[e].phash;!(!t||d[i]||!p[i]&&u.navHash2Elm(I[e].hash).is(":hidden")&&u.navHash2Elm(i).next(".elfinder-navbar-subtree").children().length>100)||!t&&i===j||R[e]?t&&(p[i]=!0):(t&&!d[i]&&(d[i]=!0,u.navHash2Elm(i).removeClass(n).next(".elfinder-navbar-subtree").empty()),ee(I[e]))},o=function(){i.length&&(G&&G._abort(),G=u.asyncJob(a,i,{interval:20,numPerOnce:100}).done(function(){var t=u.storage("hide")||{items:{}};Object.keys(M).length&&e.each(M,function(e){t.items[e]||delete M[e]})}))},u.trigger("filesgc").one("filesgc",function(){i=[]}),u.one("opendone",function(){s!==j&&(m.data("lazycnt")?u.one("lazydone",o):o())})),u.sorters={},j=t.cwd.hash,Q(t.files),I[j]?(c=u.diff([t.cwd],!0),c.changed.length&&(Q(c.changed,"change"),u.change({changed:c.changed}))):Q([t.cwd]),t.changed&&t.changed.length&&Q(t.changed,"change"),l=JSON.stringify(u.sorters),$!==l&&(u.trigger("sorterupdate"),$=l),u.lastDir(j),u.autoSync()},Q=function(t,n){var i,a,o,r,s,n=n||"files",l=["sizeInfo","encoding"],c={name:!0,perm:!0,date:!0,size:!0,kind:!0},d=!u.sorters._checked&&"files"===n,p=t.length,h=function(t){var n=t||{},i=[];e.each(u.sortRules,function(e){(c[e]||"undefined"!=typeof n[e]||"mode"===e&&"undefined"!=typeof n.perm)&&i.push(e)}),u.sorters=u.arrayFlip(i,!0),u.sorters._checked=!0},f={},m=u.storage("hide")||{},g=m.items||{};for(a=0;a<p;a++)if(i=Object.assign({},t[a]),s=!(m.show||!g[i.hash]),i.name&&i.hash&&i.mime){if(s||(d&&i.phash===j&&(h(i),d=!1),!i.phash||"add"!==n&&("change"!==n||I[i.hash]&&i.size===I[i.hash])||(r=u.parents(i.phash))&&e.each(r,function(){f[this]=!0})),I[i.hash]){for(o=0;o<l.length;o++)I[i.hash][l[o]]&&!i[l[o]]&&(i[l[o]]=I[i.hash][l[o]]);i.sizeInfo&&!i.size&&(i.size=i.sizeInfo.size),ee(I[i.hash],!0)}g[i.hash]&&(M[i.hash]=i),s?(p--,t.splice(a--,1)):(I[i.hash]=i,"directory"!==i.mime||F[i.hash]||(F[i.hash]={}),i.phash&&(F[i.phash]||(F[i.phash]={}),F[i.phash][i.hash]=!0))}e.each(Object.keys(f),function(){var e=I[this];e&&e.sizeInfo&&delete e.sizeInfo}),d&&h()},Z=function(t){var n,i=t.length,a={},o=function(t){var i=I[t];i&&("directory"===i.mime&&(a[t]&&delete u.roots[a[t]],e.each(u.leafRoots,function(n,i){var a,o;(a=e.inArray(t,i))!==-1&&(1===i.length?((o=Object.assign({},I[n]))&&o._realStats&&(e.each(o._realStats,function(e,t){o[e]=t}),Z(I[n]._realStats),u.change({changed:[o]})),delete u.leafRoots[n]):u.leafRoots[n].splice(a,1))}),u.searchStatus.state<2&&e.each(I,function(e,n){n.phash==t&&o(e)})),i.phash&&(n=u.parents(i.phash))&&e.each(n,function(){r[this]=!0}),ee(I[t]))},r={};for(e.each(u.roots,function(e,t){a[t]=e});i--;)o(t[i]);e.each(Object.keys(r),function(){var e=I[this];e&&e.sizeInfo&&delete e.sizeInfo})},ee=function(e,t){var n=e.hash,i=e.phash;i&&F[i]&&delete F[i][n],t||(F[n]&&delete F[n],u.optionsByHashes[n]&&delete u.optionsByHashes[n]),delete I[n]},te=0,ne=[],ie=null,ae=function(t){var n,i=t.keyCode,a=!(!t.ctrlKey&&!t.metaKey),o="mousedown"===t.type;if(!o&&(u.keyState.keyCode=i),u.keyState.ctrlKey=a,u.keyState.shiftKey=t.shiftKey,u.keyState.metaKey=t.metaKey,u.keyState.altKey=t.altKey,!o)return"keyup"===t.type?void(u.keyState.keyCode=null):void(z&&(e.each(U,function(e,n){n.type==t.type&&n.keyCode==i&&n.shiftKey==t.shiftKey&&n.ctrlKey==a&&n.altKey==t.altKey&&(t.preventDefault(),t.stopPropagation(),n.callback(t,u),u.debug("shortcut-exec",e+" : "+n.description))}),i!=e.ui.keyCode.TAB||e(t.target).is(":input")||t.preventDefault(),"keydown"===t.type&&i==e.ui.keyCode.ESCAPE&&(m.find(".ui-widget:visible").length||u.clipboard().length&&u.clipboard([]),e.ui.ddmanager&&(n=e.ui.ddmanager.current,n&&n.helper&&n.cancel()),u.toHide(m.find(".ui-widget.elfinder-button-menu.elfinder-frontmost:visible")),u.trigger("keydownEsc",t))))},oe=new Date,re=window.parent!==window,se=function(){var t,n;if(re)try{n=e("iframe",window.parent.document),n.length&&e.each(n,function(n,i){if(i.contentWindow===window)return t=e(i),!1})}catch(i){}return t}();n||(n={}),u.UA.Mobile&&e(window).on("orientationchange."+y,function(){var e=(screen&&screen.orientation&&screen.orientation.angle||window.orientation||0)+0;e===-90&&(e=270),u.UA.Angle=e,u.UA.Rotated=e%180!==0}).trigger("orientationchange."+y),n.bootCallback&&"function"==typeof n.bootCallback&&!function(){var e=a,t=n.bootCallback;a=function(n,i){e&&"function"==typeof e&&e.call(this,n,i),t.call(this,n,i)}}(),delete n.bootCallback,this.api=null,this.newAPI=!1,this.oldAPI=!1,this.netDrivers=[],this.baseUrl="",this.i18nBaseUrl="",this.workerBaseUrl="",this.cssloaded=!1,this.theme=null,this.mimesCanMakeEmpty={},this.bootCallback,this.reloadCallback,this.id=b,this.storage=function(){try{return"localStorage"in window&&null!==window.localStorage?(u.UA.Safari&&(window.localStorage.setItem("elfstoragecheck",1),window.localStorage.removeItem("elfstoragecheck")),u.localStorage):u.cookie}catch(e){return u.cookie}}(),this.pauseUnloadCheck=function(e,t){return"undefined"==typeof e?V:(V=!!e,void(e&&!t&&requestAnimationFrame(function(){V=!1})))},this.options=Object.assign({},this._options),n.uiOptions&&n.uiOptions.toolbar&&Array.isArray(n.uiOptions.toolbar)&&e.isPlainObject(n.uiOptions.toolbar[n.uiOptions.toolbar.length-1])&&(u.options.uiOptions.toolbarExtra=Object.assign(u.options.uiOptions.toolbarExtra||{},n.uiOptions.toolbar.pop())),function(){var t=function(n,i){e.isPlainObject(n)&&e.each(n,function(n,a){e.isPlainObject(a)?(i[n]||(i[n]={}),t(a,i[n])):i[n]=a})};t(n,u.options)}(),this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra),delete this.options.uiOptions.toolbarExtra,this.toUnbindEvents={},this.bind=function(e,t,n){var i,a;if(t&&("function"==typeof t||"function"==typeof t.done))for(e=(""+e).toLowerCase().replace(/^\s+|\s+$/g,"").split(/\s+/),a=e.length,i=0;i<a;i++)void 0===D[e[i]]&&(D[e[i]]=[]),D[e[i]][n?"unshift":"push"](t);return this},this.unbind=function(t,n){var i,a,o,r;for(t=(""+t).toLowerCase().split(/\s+/),a=t.length,i=0;i<a;i++)(o=D[t[i]])&&(r=e.inArray(n,o),r>-1&&o.splice(r,1));return n=null,this},this.trigger=function(t,n,i){var a,o,r,s,l=t.toLowerCase(),c="object"==typeof n,d=D[l]||[],p=[];if(this.debug("event-"+l,n),c&&"undefined"!=typeof i||(i=!0),o=d.length){for(s=e.Event(l),n&&(n._getEvent=function(){return s}),i&&(s.data=n),a=0;a<o;a++)if(d[a])if(d[a].done)p.push(d[a].done);else{if(d[a].length&&!i){if("undefined"==typeof r)try{r=JSON.stringify(n)}catch(h){r=!1}s.data=r?JSON.parse(r):n}try{if(d[a].call(s,s,this)===!1||s.isDefaultPrevented()){this.debug("event-stoped",s.type);break}}catch(f){window.console&&window.console.log&&window.console.log(f)}}if(o=p.length)for(a=0;a<o;a++)try{if(p[a].call(s,s,this)===!1||s.isDefaultPrevented()){this.debug("event-stoped",s.type+"(done)");break}}catch(f){window.console&&window.console.log&&window.console.log(f)}this.toUnbindEvents[l]&&this.toUnbindEvents[l].length&&(e.each(this.toUnbindEvents[l],function(e,t){u.unbind(t.type,t.callback)}),delete this.toUnbindEvents[l])}return this},this.getListeners=function(e){return e?D[e.toLowerCase()]:D},this.baseUrl=function(){var t,n,i;return u.options.baseUrl?u.options.baseUrl:(i="",t=null,e("head > script").each(function(){if(this.src&&this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js(?:$|\?)/i))return t=e(this),!1}),t&&(i=t.attr("src").replace(/js\/[^\/]+$/,""),i.match(/^(https?\/\/|\/)/)||(n=e("head > base[href]").attr("href"))&&(i=n.replace(/\/$/,"")+"/"+i)),""!==i?u.options.baseUrl=i:(u.options.baseUrl||(u.options.baseUrl="./"),i=u.options.baseUrl),i)}(),this.i18nBaseUrl=(this.options.i18nBaseUrl||this.baseUrl+"js/i18n").replace(/\/$/,"")+"/",this.workerBaseUrl=(this.options.workerBaseUrl||this.baseUrl+"js/worker").replace(/\/$/,"")+"/",this.options.maxErrorDialogs=Math.max(1,parseInt(this.options.maxErrorDialogs||5)),O.dispInlineRegex=this.options.dispInlineRegex,this.options.cssAutoLoad&&!function(){var t=u.baseUrl,n=e('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length,i=function(){m.data("cssautoloadHide")&&(m.data("cssautoloadHide").remove(),m.removeData("cssautoloadHide"))},a=function(){u.cssloaded||(i(),u.cssloaded=!0,u.trigger("cssloaded"))};n||(u.cssloaded=null),Array.isArray(u.options.cssAutoLoad)&&(u.options.themes["default"]?u.cssloaded===!0?u.loadCss(u.options.cssAutoLoad):u.bind("cssloaded",function(){u.loadCss(u.options.cssAutoLoad)}):(u.options.themes=Object.assign({"default":{name:"default",cssurls:u.options.cssAutoLoad}},u.options.themes),u.options.theme||(u.options.theme="default"))),null===u.cssloaded&&(m.addClass("elfinder").data("cssautoloadHide",e("<style>.elfinder{visibility:hidden;overflow:hidden}</style>")),e("head").append(m.data("cssautoloadHide")),u.options.themes["default"]||(u.options.themes=Object.assign({"default":{name:"default",cssurls:"css/theme.css",author:"elFinder Project",license:"3-clauses BSD"}},u.options.themes),u.options.theme||(u.options.theme="default")),requestAnimationFrame(function(){"hidden"===m.css("visibility")?u.loadCss([t+"css/elfinder.min.css"],{dfd:e.Deferred().done(function(){a()}).fail(function(){i(),u.cssloaded||(u.cssloaded=!1,u.bind("init",function(){u.cssloaded||u.error(["errRead","CSS (elfinder.min)"])}))})}):a()}))}(),function(){var e,t=u.options.themes,n=Object.keys(t||{});n.length&&(e=u.storage("theme")||u.options.theme,t[e]||(e=n[0]),u.cssloaded?u.changeTheme(e):u.bind("cssloaded",function(){u.changeTheme(e)}))}(),this.optionProperties={icon:void 0,csscls:void 0,tmbUrl:void 0,uiCmdMap:{},netkey:void 0,disabled:[]},re||this.options.enableAlways||2!==e("body").children().length||(this.options.enableAlways=!0),this.options.debug===!0?this.options.debug="all":Array.isArray(this.options.debug)?!function(){var t={};e.each(u.options.debug,function(){t[this]=!0}),u.options.debug=t}():this.options.debug=!1,this.noConflicts={},this.noConflict=function(){e.each(f,function(t,n){e.fn[n]&&"function"==typeof e.fn[n].noConflict&&(u.noConflicts[n]=e.fn[n].noConflict())})},this.noConflict(),this.isCORS=!1,function(){if("undefined"!=typeof u.options.cors&&null!==u.options.cors)u.isCORS=!!u.options.cors;else{var t,i=document.createElement("a"),a=window.location.protocol,o=function(e){return e=e&&":"!==e?e:a,"https:"===e?/\:443$/:/\:80$/},r=window.location.host.replace(o(a),"");i.href=n.url,n.urlUpload&&n.urlUpload!==n.url&&(t=document.createElement("a"),t.href=n.urlUpload),(r!==i.host.replace(o(i.protocol),"")||":"!==i.protocol&&""!==i.protocol&&a!==i.protocol||t&&(r!==t.host.replace(o(t.protocol),"")||":"!==t.protocol&&""!==t.protocol&&a!==t.protocol))&&(u.isCORS=!0)}u.isCORS&&(e.isPlainObject(u.options.customHeaders)||(u.options.customHeaders={}),e.isPlainObject(u.options.xhrFields)||(u.options.xhrFields={}),u.options.requestType="post",u.options.customHeaders["X-Requested-With"]="XMLHttpRequest",u.options.xhrFields.withCredentials=!0)}(),this.requestType=/^(get|post)$/i.test(this.options.requestType)?this.options.requestType.toLowerCase():"get",s=Math.max(parseInt(this.options.requestMaxConn),1),this.optsCustomData=e.isPlainObject(this.options.customData)?this.options.customData:{},this.customData=Object.assign({},this.optsCustomData),this.prevCustomData=null,this.customHeaders=e.isPlainObject(this.options.customHeaders)?this.options.customHeaders:{},this.xhrFields=e.isPlainObject(this.options.xhrFields)?this.options.xhrFields:{},this.replaceXhrSend=function(){p||(p=XMLHttpRequest.prototype.send),XMLHttpRequest.prototype.send=function(){var t=this;return u.customHeaders&&e.each(u.customHeaders,function(e){t.setRequestHeader(e,this)}),u.xhrFields&&e.each(u.xhrFields,function(e){e in t&&(t[e]=this)}),p.apply(this,arguments)}},this.restoreXhrSend=function(){p&&(XMLHttpRequest.prototype.send=p)},this.abortCmdsOnOpen=this.options.abortCmdsOnOpen||["tmb","parents"],this.navPrefix="nav"+(i.prototype.uniqueid?i.prototype.uniqueid:"")+"-",this.cwdPrefix=i.prototype.uniqueid?"cwd"+i.prototype.uniqueid+"-":"",++i.prototype.uniqueid,this.uploadURL=n.urlUpload||n.url,this.namespace=y,this.today=new Date(oe.getFullYear(),oe.getMonth(),oe.getDate()).getTime()/1e3,this.yesterday=this.today-86400,l=this.options.UTCDate?"UTC":"",this.getHours="get"+l+"Hours",this.getMinutes="get"+l+"Minutes",this.getSeconds="get"+l+"Seconds",this.getDate="get"+l+"Date",this.getDay="get"+l+"Day",this.getMonth="get"+l+"Month",this.getFullYear="get"+l+"FullYear",this.zIndex,this.searchStatus={state:0,query:"",target:"",mime:"",mixed:!1,ininc:!1},this.lang=this.storage("lang")||this.options.lang,"jp"===this.lang&&(this.lang=this.options.lang="ja"),this.viewType=this.storage("view")||this.options.defaultView||"icons",this.sortType=this.storage("sortType")||this.options.sortType||"name",this.sortOrder=this.storage("sortOrder")||this.options.sortOrder||"asc",this.sortStickFolders=this.storage("sortStickFolders"),null===this.sortStickFolders?this.sortStickFolders=!!this.options.sortStickFolders:this.sortStickFolders=!!this.sortStickFolders,this.sortAlsoTreeview=this.storage("sortAlsoTreeview"),null===this.sortAlsoTreeview||null===this.options.sortAlsoTreeview?this.sortAlsoTreeview=!!this.options.sortAlsoTreeview:this.sortAlsoTreeview=!!this.sortAlsoTreeview,this.sortRules=e.extend(!0,{},this._sortRules,this.options.sortRules),e.each(this.sortRules,function(e,t){"function"!=typeof t&&delete u.sortRules[e]}),this.compare=e.proxy(this.compare,this),this.notifyDelay=this.options.notifyDelay>0?parseInt(this.options.notifyDelay):500,this.draggingUiHelper=null,this.droppable={greedy:!0,tolerance:"pointer",accept:".elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename",hoverClass:this.res("class","adroppable"),classes:{"ui-droppable-hover":this.res("class","adroppable")},autoDisable:!0,drop:function(t,n){var i,a,o,r=e(this),s=e.grep(n.helper.data("files")||[],function(e){return!!e}),l=[],c=[],d=[],p=n.helper.hasClass("elfinder-drag-helper-plus"),h="class";if("undefined"==typeof t.button||n.helper.data("namespace")!==y||!u.insideWorkzone(t.pageX,t.pageY))return!1;for(a=r.hasClass(u.res(h,"cwdfile"))?u.cwdId2Hash(r.attr("id")):r.hasClass(u.res(h,"navdir"))?u.navId2Hash(r.attr("id")):j,i=s.length;i--;)o=s[i],o!=a&&I[o].phash!=a?l.push(o):(p&&o!==a&&I[a].write?c:d).push(o);return!d.length&&(n.helper.data("droped",!0),c.length&&(n.helper.hide(),u.exec("duplicate",c,{_userAction:!0})),void(l.length&&(n.helper.hide(),u.clipboard(l,!p),u.exec("paste",a,{_userAction:!0},a).always(function(){u.clipboard([]),u.trigger("unlockfiles",{files:s})}),u.trigger("drop",{files:s}))))}},this.enabled=function(){return z&&this.visible()},this.visible=function(){return m[0].elfinder&&m.is(":visible")},this.isRoot=function(e){return!(!e.isroot&&e.phash)},this.root=function(t,n){t=t||j;var i,a;if(!n&&(e.each(u.roots,function(e,n){if(0===t.indexOf(e))return i=n,!1}),i))return i;for(i=I[t];i&&i.phash&&(n||!i.isroot);)i=I[i.phash];if(i)return i.hash;for(;a in I&&I.hasOwnProperty(a);)if(i=I[a],"directory"===i.mime&&!i.phash&&i.read)return i.hash;return""},this.cwd=function(){return I[j]||{}},this.option=function(t,n){var i,a;return n=n||j,u.optionsByHashes[n]&&"undefined"!=typeof u.optionsByHashes[n][t]?u.optionsByHashes[n][t]:!u.hasVolOptions||j===n||(a=u.file(n))&&a.phash===j?S[t]||"":(i="",e.each(u.volOptions,function(e,a){if(0===n.indexOf(e))return i=a[t]||"",!1}),i)},this.getDisabledCmds=function(t,n){var i={hidden:!0};return Array.isArray(t)||(t=[t]),e.each(t,function(e,t){var n=u.option("disabledFlip",t);n&&Object.assign(i,n)}),n?i:Object.keys(i)},this.file=function(e,t){return e?I[e]||(t?M[e]:void 0):void 0},this.files=function(t){var n={};return t?F[t]?(e.each(F[t],function(e){I[e]?n[e]=I[e]:delete F[t][e]}),Object.assign({},n)):{}:Object.assign({},I)},this.parents=function(e){for(var t,n=[];e&&(t=this.file(e));)n.unshift(t.hash),e=t.phash;return n},this.path2array=function(e,t){for(var n,i=[];e;){if(!(n=I[e])||!n.hash){i=[];break}i.unshift(t&&n.i18?n.i18:n.name),e=n.isroot?null:n.phash}return i},this.path=function(t,n,i){var a=I[t]&&I[t].path?I[t].path:this.path2array(t,n).join(S.separator);if(i&&I[t]){i=Object.assign({notify:{type:"parents",cnt:1,hideCnt:!0}},i);var o,r=e.Deferred(),s=i.notify,l=!1,c=function(){u.request({data:{cmd:"parents",target:I[t].phash},notify:s,preventFail:!0}).done(d).fail(function(){r.reject()})},d=function(){u.one("parentsdone",function(){a=u.path(t,n),""===a&&l?(l=!1,c()):(s&&(clearTimeout(o),s.cnt=-parseInt(s.cnt||0),u.notify(s)),r.resolve(a))})};return a?r.resolve(a):(u.ui.tree?(s&&(o=setTimeout(function(){u.notify(s)},u.notifyDelay)),l=!0,d(!0)):c(),r)}return a},this.url=function(t,n){var i,a=I[t],o=n||{},r=o.async||!1,s=o.temporary||!1,l=o.onetime&&u.option("onetimeUrl",t)||!1,c=o.absurl||!1,d=r||l?e.Deferred():null,p=function(e){return e&&c&&(e=u.convAbsUrl(e)),e},h=function(n){if(n)return p(n);if(a.url)return p(a.url);if("undefined"==typeof i&&(i=f()),i)return p(i+e.map(u.path2array(t),function(e){return encodeURIComponent(e)}).slice(1).join("/"));var o=Object.assign({},u.customData,{cmd:"file",target:a.hash});return u.oldAPI&&(o.cmd="open",o.current=a.phash),p(u.options.url+(u.options.url.indexOf("?")===-1?"?":"&")+e.param(o,!0))},f=function(){return u.option("url",!u.isRoot(a)&&a.phash||a.hash)};if(!a||!a.read)return r?d.resolve(""):"";if(!l||a.url&&"1"!=a.url||(i=f()))if("1"==a.url||s&&!a.url&&!(i=f()))this.request({data:{cmd:"url",target:t,options:{temporary:s?1:0}},preventDefault:!0,options:{async:r},notify:r?{type:s?"file":"url",cnt:1,hideCnt:!0}:{},progressBar:o.progressBar}).done(function(e){a.url=e.url||""}).fail(function(){a.url=""}).always(function(){var e;return a.url&&s&&(e=a.url,a.url="1"),r?void d.resolve(h(e)):h(e)});else{if(!r)return h();d.resolve(h())}else r=!0,this.request({data:{cmd:"url",target:t,options:{onetime:1}},preventDefault:!0,options:{async:r},notify:{type:"file",cnt:1,hideCnt:!0},progressBar:o.progressBar}).done(function(e){d.resolve(p(e.url||""))}).fail(function(){d.resolve("")});return r?d:void 0},this.forExternalUrl=function(e,t){var n=u.option("onetimeUrl",e),i={async:!0,absurl:!0};return i[n?"onetime":"temporary"]=!0,u.url(e,Object.assign({},t,i))},this.openUrl=function(t,n,i,a){var o=I[t],r="",s=(a||{}).onetimeSize||5242880;return o&&o.read?n&&"sameorigin"!==n||(o.url?1!=o.url&&(r=o.url):S.url&&0===o.hash.indexOf(u.cwd().volumeid)&&(r=S.url+e.map(this.path2array(t),function(e){return encodeURIComponent(e)}).slice(1).join("/")),n&&!this.isSameOrigin(r)||!r)?i&&this.hasParrotHeaders()?(a?delete a.onetimeSize:a={},!a.onetime&&!a.temporary&&o.size>s&&(o.mime.match(/^video|audio/)?a.temporary=!0:a.onetime=!0),a.onetime||a.temporary?this.url(o.hash,Object.assign({async:!0},a)).done(function(e){i(e)}).fail(function(){i("")}):this.getContents(t,"blob",a).done(function(e){r=(window.URL||window.webkitURL).createObjectURL(e),i(r)}).fail(function(){i("")})):(r=this.options.url,r=r+(r.indexOf("?")===-1?"?":"&")+(this.oldAPI?"cmd=open&current="+o.phash:"cmd=file")+"&target="+o.hash+"&_t="+(o.ts||parseInt(+new Date/1e3)),n===!0&&(r+="&download=1"),e.each(this.customData,function(e,t){r+="&"+encodeURIComponent(e)+"="+encodeURIComponent(t)}),i?void i(r):r):(r+=(r.match(/\?/)?"&":"?")+"_".repeat((r.match(/[\?&](_+)t=/g)||["&t="]).sort().shift().match(/[\?&](_*)t=/)[1].length+1)+"t="+(o.ts||parseInt(+new Date/1e3)),i?void i(r):r):""},this.tmb=function(t){var n,i,a="elfinder-cwd-bgurl",o="",r={},s=0;return!(!e.isPlainObject(t)||(u.searchStatus.state&&0!==t.hash.indexOf(u.cwd().volumeid)?(n=u.option("tmbUrl",t.hash),i=u.option("tmbCrop",t.hash)):(n=S.tmbUrl,i=S.tmbCrop),i&&(a+=" elfinder-cwd-bgurl-crop"),"self"===n&&0===t.mime.indexOf("image/")?(o=u.openUrl(t.hash),a+=" elfinder-cwd-bgself"):(u.oldAPI||n)&&t&&t.tmb&&1!=t.tmb?o=n+t.tmb:u.newAPI&&t&&t.tmb&&1!=t.tmb&&(o=t.tmb),!o))&&("self"!==n&&(t.ts&&(r._t=t.ts),S.tmbReqCustomData&&Object.keys(this.customData).length&&(r=Object.assign(r,this.customData)),Object.keys(r).length&&(o+=o.match(/\?/)?"&":"?",e.each(r,function(e,t){o+=(0===s++?"":"&")+encodeURIComponent(e)+"="+encodeURIComponent(t)}))),{url:o,className:a})},this.selected=function(){return E.slice(0)},this.selectedFiles=function(){return e.map(E,function(e){return I[e]?Object.assign({},I[e]):null})},this.fileByName=function(e,t){var n;for(n in I)if(I.hasOwnProperty(n)&&I[n].phash==t&&I[n].name==e)return I[n]},this.validResponse=function(e,t){return t.error||this.rules[this.rules[e]?e:"defaults"](t)},this.returnBytes=function(e){var t;return isNaN(e)?(e||(e=""),e=e.replace(/b$/i,""),t=e.charAt(e.length-1).toLowerCase(),e=e.replace(/[tgmk]$/i,""),"t"==t?e=1024*e*1024*1024*1024:"g"==t?e=1024*e*1024*1024:"m"==t?e=1024*e*1024:"k"==t&&(e=1024*e),e=isNaN(e)?0:parseInt(e)):(e=parseInt(e),e<1&&(e=0)),e},this.request=function(t){var n,i,a,o,r=this,l=this.options,c=e.Deferred(),d=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),p=Object.assign({},r.customData,{mimes:l.onlyMimes},t.data||t),u=p.cmd,h="binary"===(t.options||{}).dataType,f=!t.asNotOpen&&"open"===u,m=1===p.tree,g=!(h||t.preventDefault||t.preventFail),v=!(h||t.preventDefault||t.preventDone),b=t.progressVal||20,y=null,w=!1,x=t.progressBar?{}:t.notify?Object.assign({progress:b*t.notify.cnt},t.notify):{},k=!!t.cancel,C=h||!!t.raw,z=t.syncOnFail,T=!!t.lazy,A=t.prepare,I=t.navigate,M=(t.options||{}).cache,F=Object.assign({url:l.url,async:!0,type:this.requestType,dataType:"json",cache:r.api>=2.1029,data:p,headers:this.customHeaders,xhrFields:this.xhrFields,progress:function(e){var n=e.loaded/e.total*100;if(y&&clearTimeout(y),t.progressBar)try{t.progressBar.width(n+"%")}catch(e){}else w&&x.type&&(n*=x.cnt,b<n&&(r.notify({type:x.type,progress:n-b,cnt:0,hideCnt:x.hideCnt}),b=n));if(t.progress)try{t.progress(e)}catch(e){}}},t.options||{}),E=function(t){t.warning&&r.error(t.warning),f?Y(t):r.updateCache(t),r.lazy(function(){t.removed&&t.removed.length&&r.remove(t),t.added&&t.added.length&&r.add(t),t.changed&&t.changed.length&&r.change(t)}).then(function(){return r.lazy(function(){r.trigger(u,t,!1)})}).then(function(){return r.lazy(function(){r.trigger(u+"done")})}).then(function(){t.toasts&&Array.isArray(t.toasts)&&e.each(t.toasts,function(){this.msg&&r.toast(this)}),t.sync&&r.sync()})},D=function(e,t){var n,i,a=r.options.debug;switch(t){case"abort":n=e.quiet?"":["errConnect","errAbort"];break;case"timeout":n=["errConnect","errTimeout"];break;case"parsererror":n=["errResponse","errDataNotJSON"],e.responseText&&(!j||a&&("all"===a||a["backend-error"]))&&n.push(e.responseText);break;default:if(e.responseText)try{i=JSON.parse(e.responseText),i&&i.error&&(n=i.error)}catch(o){}if(!n)if(403==e.status)n=["errConnect","errAccess","HTTP error "+e.status];else if(404==e.status)n=["errConnect","errNotFound","HTTP error "+e.status];else if(e.status>=500)n=["errResponse","errServerError","HTTP error "+e.status];else{if(414==e.status&&"get"===F.type)return F.type="post",r.abortXHR(e),void(c.xhr=e=r.transport.send(F).fail(n).done(U));n=e.quiet?"":["errConnect","HTTP error "+e.status]}}r.trigger(u+"done"),c.reject({error:n},e,t)},U=function(t){if(r.currentReqCmd=u,t.debug&&r.responseDebug(t),r.setCustomHeaderByXhr(i),C)return r.abortXHR(i),t&&t.debug&&r.debug("backend-debug",t),c.resolve(t);if(!t)return c.reject({error:["errResponse","errDataEmpty"]},i,t);if(!e.isPlainObject(t))return c.reject({error:["errResponse","errDataNotJSON"]},i,t);if(t.error)return f&&e.each(r.leafRoots,function(t,n){r.leafRoots[t]=e.grep(n,function(e){return e!==p.target})}),c.reject({error:t.error},i,t);var n=function(){var n,a=function(n){r.leafRoots[p.target]&&t[n]&&e.each(r.leafRoots[p.target],function(e,i){var a;(a=r.file(i))&&t[n].push(a)})},o=function(){r.textMimes={},e.each(r.res("mimes","text"),function(){r.textMimes[this.toLowerCase()]=!0})};return f&&!m?a("files"):"tree"===u&&a("tree"),t=r.normalize(t),r.validResponse(u,t)?(f&&(r.api||(r.api=t.api||1,"2.0"==r.api&&"undefined"!=typeof t.options.uploadMaxSize&&(r.api="2.1"),r.newAPI=r.api>=2,r.oldAPI=!r.newAPI),t.textMimes&&Array.isArray(t.textMimes)&&(r.resources.mimes.text=t.textMimes,o()),!r.textMimes&&o(),t.options&&(S=Object.assign({},O,t.options)),t.netDrivers&&(r.netDrivers=t.netDrivers),t.maxTargets&&(r.maxTargets=t.maxTargets),p.init&&(r.uplMaxSize=r.returnBytes(t.uplMaxSize),r.uplMaxFile=t.uplMaxFile?Math.min(parseInt(t.uplMaxFile),50):20)),"function"==typeof A&&A(t),I&&(n=I.target||"added",t[n]&&t[n].length&&r.one(u+"done",function(){var i=t[n],a=r.findCwdNodes(i),o=function(){var t=r.cwd().hash;return e.map(i,function(e){return e.phash&&t===e.phash?e.hash:null})},s=o(),l=function(t){var n,i,a,l=void 0,c=t.action?t.action.data:void 0;return(c||s.length)&&t.action&&(i=t.action.msg)&&(n=t.action.cmd)&&(!t.action.cwdNot||t.action.cwdNot!==r.cwd().hash)&&(a=t.action.done,c=t.action.data,l=e("<div></div>").append(e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+r.i18n(i)+"</span></button>").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",function(){r.exec(n,c||s,{_userAction:!0,_currentType:"toast",_currentNode:e(this)}),a&&r.one(n+"done",function(){"function"==typeof a?a():"select"===a&&r.trigger("selectfiles",{files:o()})})}))),delete t.action,t.extNode=l,t};I.toast||(I.toast={}),!I.noselect&&r.trigger("selectfiles",{files:r.searchStatus.state>1?e.map(i,function(e){return e.hash}):s}),a.length?(I.noscroll||(a.first().trigger("scrolltoview",{blink:!1}),r.resources.blink(a,"lookme")),e.isPlainObject(I.toast.incwd)&&r.toast(l(I.toast.incwd))):e.isPlainObject(I.toast.inbuffer)&&r.toast(l(I.toast.inbuffer))})),c.resolve(t),void(t.debug&&r.debug("backend-debug",t))):c.reject({error:t.norError||"errResponse"},i,t)};r.abortXHR(i),T?r.lazy(n):n()},P=function(e){i&&"pending"===i.state()&&(r.abortXHR(i,{quiet:!0,abort:!0}),(!e||"unload"!==e.type&&"destroy"!==e.type)&&r.autoSync())},R=function(e){if(r.trigger(u+"done"),"autosync"==e.type){if("stop"!=e.data.action)return}else if(!("unload"==e.type||"destroy"==e.type||"openxhrabort"==e.type||e.data.added&&e.data.added.length))return;P(e)},_=function(t){var n=function(){z=!1,c.reject()};if(t&&"cmd"===t)return u;if(f){if(ie&&"pending"===ie.state()){if(ie._target===p.target)return c.reject("openabort");ie.xhr?ie.xhr.queueAbort():ie.reject("openabort")}ie=c,ie._target=p.target}if(c.always(function(){delete F.headers["X-elFinderReqid"],f&&(ie=null)}).fail(function(t,n,i){var a,s;f&&"openabort"===t&&(t="",z=!1),a={cmd:u,err:t,xhr:n,rc:i},0===t&&ne.length&&(ne=e.grep(ne,function(e){return e("cmd")!==u})),r.trigger("requestError",a),a._getEvent&&a._getEvent().isDefaultPrevented()&&(g=!1,z=!1,t&&(t.error="")),P(),f&&(o=r.file(p.target),o&&o.volumeid&&r.isRoot(o)&&delete r.volumeExpires[o.volumeid]),r.trigger(u+"fail",i),s="object"==typeof t?t.error:t,s&&(g?r.error(s):r.debug("error",r.i18n(s))),z&&r.sync()}),!u)return z=!1,c.reject({error:"errCmdReq"});if(r.maxTargets&&p.targets&&p.targets.length>r.maxTargets)return z=!1,c.reject({error:["errMaxTargets",r.maxTargets]});if(v&&c.done(E),f){for(;a=q.pop();)a.queueAbort();if(j!==p.target)for(;a=H.pop();)a.queueAbort()}return e.inArray(u,(r.cmdsToAdd+" autosync").split(" "))!==-1&&("autosync"!==u&&(r.autoSync("stop"),c.always(function(){r.autoSync()})),r.trigger("openxhrabort")),delete F.preventFail,r.api>=2.1029&&(M?F.headers["X-elFinderReqid"]=d:Object.assign(F.data,{reqid:d})),c.syncOnFail=function(e){z=!!e},te++,c.xhr=i=r.transport.send(F).always(function(){F._xhr&&"undefined"!=typeof F._xhr.responseURL&&(i.responseURL=F._xhr.responseURL||""),--te,ne.length&&ne.shift()()}).fail(D).done(U),r.api>=2.1029&&(i._requestId=d),f||p.compare&&"info"===u?(i.queueAbort=n,q.unshift(i),p.compare&&r.bind(r.cmdsToAdd+" autosync openxhrabort",R),c.always(function(){var t=e.inArray(i,q);p.compare&&r.unbind(r.cmdsToAdd+" autosync openxhrabort",R),t!==-1&&q.splice(t,1)})):e.inArray(u,r.abortCmdsOnOpen)!==-1&&(i.queueAbort=n,H.unshift(i),c.always(function(){var t=e.inArray(i,H);t!==-1&&H.splice(t,1)})),r.bind("unload destroy",R),c.always(function(){r.unbind("unload destroy",R)}),c},N=function(){return x.type&&x.cnt&&(k&&(x.cancel=c,t.eachCancel&&(x.id=+new Date)),n=setTimeout(function(){y=setTimeout(L,1e3),r.notify(x),w=!0,c.always(function(){x.cnt=-(parseInt(x.cnt)||0),r.notify(x),w=!1})},r.notifyDelay),c.always(function(){clearTimeout(n)})),te<s?_():(f?ne.unshift(_):ne.push(_),c)},L=function(){var e;w&&y&&(e=1*x.cnt,y=null,r.notify({type:x.type,progress:e,cnt:0,hideCnt:x.hideCnt}),b+=e,b/x.cnt<80&&(y=setTimeout(L,500)))},W={opts:t,result:!0};return r.api||p.init?(r.trigger("request."+u,W,!0),W.result?"object"==typeof W.result&&W.result.promise?(W.result.done(N).fail(function(){r.trigger(u+"done"),c.reject()}),c):N():(r.trigger(u+"done"),c.reject())):(z=!1,c.reject())},this.cache=function(e,t){Array.isArray(e)||(e=[e]),Q(e,t)},this.updateCache=function(t){e.isPlainObject(t)&&(t.files&&t.files.length&&Q(t.files,"files"),t.tree&&t.tree.length&&Q(t.tree,"tree"),t.removed&&t.removed.length&&Z(t.removed),t.added&&t.added.length&&Q(t.added,"add"),t.changed&&t.changed.length&&Q(t.changed,"change"))},this.diff=function(t,n,i){var a={},o=[],r=[],s=[],l=null,c=function(e){for(var t=s.length;t--;)if(s[t].hash==e)return!0};return e.each(t,function(e,t){a[t.hash]=t}),i&&i.length&&(l={},e.each(i,function(){l[this]=!0})),e.each(I,function(e,t){a[e]||n&&t.phash!==n||r.push(e)}),e.each(a,function(t,n){var i,a=I[t],r={};a?(e.each(Object.keys(a),function(){r[this]=!0}),e.each(n,function(e){if(delete r[e],!(l&&l[e]||n[e]===a[e]))return s.push(n),r={},!1}),i=Object.keys(r).length,0!==i&&(l&&e.each(r,function(e){l[e]&&--i}),0!==i&&s.push(n))):o.push(n)}),e.each(r,function(t,n){var i=I[n],o=i.phash;o&&"directory"==i.mime&&e.inArray(o,r)===-1&&a[o]&&!c(o)&&s.push(a[o])}),{added:o,removed:r,changed:s}},this.syncStopper=!1,this.sync=function(t,n){if(this.syncStopper)return e.Deferred().reject();this.syncStopper=!0,this.autoSync("stop");var i,a,o=this,r=function(){var i="",a=0,o=0;return t&&n&&e.each(I,function(e,n){n.phash&&n.phash===t&&(++a,o=Math.max(o,n.ts)),i=a+":"+o}),i},s=r(),l=e.Deferred().always(function(){!a&&o.trigger("sync")}),c=!t&&this.ui.tree?1:0,d=[this.request({data:{cmd:"open",reload:1,target:j,tree:c,compare:s},preventDefault:!0})],p=function(){for(var e,t=[],n=o.file(o.root(j)),i=n?n.volumeid:null,a=o.cwd().phash;a;)(e=o.file(a))?(0!==a.indexOf(i)&&(t.push({
target:a,cmd:"tree"}),o.isRoot(e)||t.push({target:a,cmd:"parents"}),n=o.file(o.root(a)),i=n?n.volumeid:null),a=e.phash):a=null;return t};return!t&&o.api>=2&&(j!==this.root()&&d.push(this.request({data:{cmd:"parents",target:j},preventDefault:!0})),e.each(p(),function(e,t){d.push(o.request({data:{cmd:t.cmd,target:t.target},preventDefault:!0}))})),e.when.apply(e,d).fail(function(t,i){a=i&&200!=i.status,n&&e.inArray("errOpen",t)===-1?l.reject(t&&0!=i.status?t:void 0):(l.reject(t),o.parseError(t)&&o.request({data:{cmd:"open",target:o.lastDir("")||o.root(),tree:1,init:1},notify:{type:"open",cnt:1,hideCnt:!0}}))}).done(function(n){var a,r,d;if(n.cwd.compare&&s===n.cwd.compare)return l.reject();if(a={tree:[]},r=arguments.length,r>1)for(d=1;d<r;d++)arguments[d].tree&&arguments[d].tree.length&&a.tree.push.apply(a.tree,arguments[d].tree);if(o.api<2.1&&(a.tree||(a.tree=[]),a.tree.push(n.cwd)),n=o.normalize(n),!o.validResponse("open",n))return l.reject(n.norError||"errResponse");if(a=o.normalize(a),!o.validResponse("tree",a))return l.reject(a.norError||"errResponse");c&&a&&a.tree&&(i=e.map(e.grep(n.files,function(e){return e.isroot}),function(e){return e.hash}),a.tree=e.grep(a.tree,function(e){return!e.isroot||i.indexOf(e.hash)>=0}));var p=o.diff(n.files.concat(a&&a.tree?a.tree:[]),t);return p.added.push(n.cwd),o.updateCache(p),p.removed.length&&o.remove(p),p.added.length&&o.add(p),p.changed.length&&o.change(p),l.resolve(p)}).always(function(){o.syncStopper=!1,o.autoSync()}),l},this.upload=function(e){return this.transport.upload(e,this)},this.shortcut=function(t){var n,i,a,o,r;if(this.options.allowShortcuts&&t.pattern&&"function"==typeof t.callback)for(n=t.pattern.toUpperCase().split(/\s+/),o=0;o<n.length;o++)i=n[o],r=i.split("+"),a=1==(a=r.pop()).length?a>0?a:a.charCodeAt(0):a>0?a:e.ui.keyCode[a],a&&!U[i]&&(U[i]={keyCode:a,altKey:e.inArray("ALT",r)!=-1,ctrlKey:e.inArray("CTRL",r)!=-1,shiftKey:e.inArray("SHIFT",r)!=-1,type:t.type||"keydown",callback:t.callback,description:t.description,pattern:i});return this},this.shortcuts=function(){var t=[];return e.each(U,function(e,n){t.push([n.pattern,u.i18n(n.description)])}),t},this.clipboard=function(t,n){var i=function(){return e.map(P,function(e){return e.hash})};return void 0!==t&&(P.length&&this.trigger("unlockfiles",{files:i()}),R={},P=e.map(t||[],function(e){var t=I[e];return t?(R[e]=!0,{hash:e,phash:t.phash,name:t.name,mime:t.mime,read:t.read,locked:t.locked,cut:!!n}):null}),this.trigger("changeclipboard",{clipboard:P.slice(0,P.length)}),n&&this.trigger("lockfiles",{files:i()})),P.slice(0,P.length)},this.isCommandEnabled=function(e,t){var n,i,a=u.cwd().volumeid||"";return!t&&u.searchStatus.state>1&&u.selected().length&&(t=u.selected()[0]),n=!t||a&&0===t.indexOf(a)?S.disabledFlip:u.option("disabledFlip",t),i=this._commands[e],!!i&&(i.alwaysEnabled||!n[e])},this.exec=function(t,n,i,a){var o,r;return!a&&this.commandMap[t]&&"hidden"!==this.commandMap[t]&&(t=this.commandMap[t]),"open"===t&&((this.searchStatus.state||this.searchStatus.ininc)&&this.trigger("searchend",{noupdate:!0}),this.autoSync("stop")),!a&&n&&(e.isArray(n)?n.length&&(a=n[0]):a=n),o=this._commands[t]&&this.isCommandEnabled(t,a)?this._commands[t].exec(n,i):e.Deferred().reject("errUnknownCmd"),r=typeof o,"object"===r&&o.promise||(u.debug("warning",'"cmd.exec()" should be returned "$.Deferred" but cmd "'+t+'" returned "'+r+'"'),o=e.Deferred().resolve()),this.trigger("exec",{dfrd:o,cmd:t,files:n,opts:i,dstHash:a}),o},this.dialog=function(t,n){var i=e("<div></div>").append(t).appendTo(m).elfinderdialog(n,u),a=i.closest(".ui-dialog"),o=function(){!i.data("draged")&&i.is(":visible")&&i.elfinderdialog("posInit")};return a.length&&(u.bind("resize",o),a.on("remove",function(){u.unbind("resize",o)})),i},this.toast=function(t){return e('<div class="ui-front"></div>').appendTo(this.ui.toast).elfindertoast(t||{},this)},this.getUI=function(t){return t?this.ui[t]||e():m},this.getCommand=function(e){return void 0===e?this._commands:this._commands[e]},this.resize=function(t,n){var i,a=function(){for(var e=m.outerHeight(!0)-m.innerHeight(),t=m;t.get(0)!==W.get(0)&&(t=t.parent(),e+=t.outerHeight(!0)-t.innerHeight(),t.parent().length););return e},o=!m.hasClass("ui-resizable"),r=m.data("resizeSize")||{w:0,h:0},s={};W&&W.data("resizeTm")&&clearTimeout(W.data("resizeTm")),u.options.noResizeBySelf||("string"==typeof n&&(i=n.match(/^([0-9.]+)%$/))&&(W&&W.length||(W=e(window)),W.data("marginToMyNode")||W.data("marginToMyNode",a()),W.data("fitToBaseFunc")||W.data("fitToBaseFunc",function(e){var t=W.data("resizeTm");e.preventDefault(),e.stopPropagation(),t&&cancelAnimationFrame(t),m.hasClass("elfinder-fullscreen")||u.UA.Mobile&&W.data("rotated")===u.UA.Rotated||(W.data("rotated",u.UA.Rotated),W.data("resizeTm",requestAnimationFrame(function(){u.restoreSize()})))}),"undefined"==typeof W.data("rotated")&&W.data("rotated",u.UA.Rotated),n=W.height()*(i[1]/100)-W.data("marginToMyNode"),W.off("resize."+u.namespace,W.data("fitToBaseFunc")),o&&W.on("resize."+u.namespace,W.data("fitToBaseFunc"))),m.css({width:t,height:parseInt(n)})),s.w=Math.round(m.width()),s.h=Math.round(m.height()),m.data("resizeSize",s),s.w===r.w&&s.h===r.h||(m.trigger("resize"),this.trigger("resize",{width:s.w,height:s.h}))},this.restoreSize=function(){this.resize(N,L)},this.show=function(){m.show(),this.enable().trigger("show")},this.hide=function(){this.options.enableAlways&&(T=z,z=!1),this.disable(),this.trigger("hide"),m.hide()},this.lazy=function(t,n,i){var a=function(e){var t,n=m.data("lazycnt");e?(t=!m.data("lazyrepaint")&&i.repaint,n?m.data("lazycnt",++n):m.data("lazycnt",1).addClass("elfinder-processing"),t&&m.data("lazyrepaint",!0).css("display")):n&&n>1?m.data("lazycnt",--n):(t=m.data("lazyrepaint"),m.data("lazycnt",0).removeData("lazyrepaint").removeClass("elfinder-processing"),t&&m.css("display"),u.trigger("lazydone"))},o=e.Deferred(),r=function(){o.resolve(t.call(o)),a(!1)};return n=n||0,i=i||{},a(!0),n?setTimeout(r,n):requestAnimationFrame(r),o},this.destroy=function(){m&&m[0].elfinder&&(m.hasClass("elfinder-fullscreen")&&u.toggleFullscreen(m),this.options.syncStart=!1,this.autoSync("forcestop"),this.trigger("destroy").disable(),P=[],E=[],D={},U={},e(window).off("."+y),e(document).off("."+y),u.trigger=function(){},e(K).remove(),m.off().removeData().empty().append(v.contents()).attr("class",v.attr("class")).attr("style",v.attr("style")),delete m[0].elfinder,e.each(g,function(t,n){e.each(n,function(e,t){m.on(t.type+(t.namespace?"."+t.namespace:""),t.selector,t.handler)})}))},this.autoSync=function(t){var n;if(u.options.sync>=1e3){if(r&&(clearTimeout(r),r=null,u.trigger("autosync",{action:"stop"})),"stop"===t?++X:X=Math.max(0,--X),X||"forcestop"===t||!u.options.syncStart)return;n=function(t){var i;S.syncMinMs&&(t||r)&&(t&&u.trigger("autosync",{action:"start"}),i=Math.max(u.options.sync,S.syncMinMs),r&&clearTimeout(r),r=setTimeout(function(){var t,a=!0,o=j;S.syncChkAsTs&&I[o]&&(t=I[o].ts)?u.request({data:{cmd:"info",targets:[o],compare:t,reload:1},preventDefault:!0}).done(function(e){var i;a=!0,e.compare&&(i=e.compare,i==t&&(a=!1)),a?u.sync(o).always(function(){i&&(I[o].ts=i),n()}):n()}).fail(function(t,a){var o=u.parseError(t);o&&0!=a.status?(u.error(o),Array.isArray(o)&&e.inArray("errOpen",o)!==-1&&u.request({data:{cmd:"open",target:u.lastDir("")||u.root(),tree:1,init:1},notify:{type:"open",cnt:1,hideCnt:!0}})):r=setTimeout(function(){n()},i)}):u.sync(j,!0).always(function(){n()})},i))},n(!0)}},this.insideWorkzone=function(e,t,n){var i=this.getUI("workzone").data("rectangle");return n=n||1,!(e<i.left+n||e>i.left+i.width+n||t<i.top+n||t>i.top+i.height+n)},this.toFront=function(t){var n=m.children(".ui-front").removeClass("elfinder-frontmost"),i=n.last();n.css("z-index",""),e(t).addClass("ui-front elfinder-frontmost").css("z-index",i.css("z-index")+1)},this.toHide=function(t,n){var i,a=e(t);!n&&a.hide(),a.hasClass("elfinder-frontmost")&&(a.removeClass("elfinder-frontmost"),i=m.children(".ui-front:visible:not(.elfinder-frontmost)").last(),i.length&&requestAnimationFrame(function(){m.children(".elfinder-frontmost:visible").length||(u.toFront(i),i.trigger("frontmost"))}))},this.getMaximizeCss=function(){return{width:"100%",height:"100%",margin:0,top:0,left:0,display:"block",position:"fixed",zIndex:Math.max(u.zIndex?u.zIndex+1:0,1e3),maxWidth:"",maxHeight:""}},function(){re&&u.UA.Fullscreen&&(u.UA.Fullscreen=!1,se&&"undefined"!=typeof se.attr("allowfullscreen")&&(u.UA.Fullscreen=!0));var t,n,i,a,o="elfinder-fullscreen",r="elfinder-fullscreen-native",s=function(){var t=0,n=0;e.each(m.children(".ui-dialog,.ui-draggable"),function(i,a){var o=e(a),r=o.position();r.top<0&&(o.css("top",t),t+=20),r.left<0&&(o.css("left",n),n+=20)})},l=function(){var i=u.storage("useFullscreen");a=u.UA.Fullscreen&&(i?i>0:"screen"===u.options.commandsOptions.fullscreen.mode)?{fullElm:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||null},exitFull:function(){return document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():void 0},toFull:function(e){return e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():!!e.msRequestFullscreen&&e.msRequestFullscreen()}}:{fullElm:function(){var e;return m.hasClass(o)?m.get(0):(e=m.find("."+o),e.length?e.get(0):null)},exitFull:function(){var i;e(window).off("resize."+y,d),void 0!==n&&e("body").css("overflow",n),n=void 0,t&&(i=t.elm,c(i),e(i).trigger("resize",{fullscreen:"off"})),e(window).trigger("resize")},toFull:function(t){return n=e("body").css("overflow")||"",e("body").css("overflow","hidden"),e(t).css(u.getMaximizeCss()).addClass(o).trigger("resize",{fullscreen:"on"}),s(),e(window).on("resize."+y,d).trigger("resize"),!0}}},c=function(n){t&&t.elm==n&&(e(n).removeClass(o+" "+r).attr("style",t.style),t=null)},d=function(t){var n;t.target===window&&(i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){(n=a.fullElm())&&e(n).trigger("resize",{fullscreen:"on"})}))};l(),e(document).on("fullscreenchange."+y+" webkitfullscreenchange."+y+" mozfullscreenchange."+y+" MSFullscreenChange."+y,function(n){if(u.UA.Fullscreen){var l=a.fullElm(),p=e(window);i&&cancelAnimationFrame(i),null===l?(p.off("resize."+y,d),t&&(l=t.elm,c(l),e(l).trigger("resize",{fullscreen:"off"}))):(e(l).addClass(o+" "+r).attr("style","width:100%; height:100%; margin:0; padding:0;").trigger("resize",{fullscreen:"on"}),p.on("resize."+y,d),s()),p.trigger("resize")}}),u.toggleFullscreen=function(n,i){var o=e(n).get(0),r=null;if(r=a.fullElm()){if(r==o){if(i===!0)return r}else if(i===!1)return r;return a.exitFull(),null}return i===!1?null:(l(),t={elm:o,style:e(o).attr("style")},a.toFull(o)!==!1?o:(t=null,null))}}(),function(){var t,n="elfinder-maximized",i=function(e){if(e.target===window&&e.data&&e.data.elm){var n=e.data.elm;t&&cancelAnimationFrame(t),t=requestAnimationFrame(function(){n.trigger("resize",{maximize:"on"})})}},a=function(t){e(window).off("resize."+y,i),e("body").css("overflow",t.data("bodyOvf")),t.removeClass(n).attr("style",t.data("orgStyle")).removeData("bodyOvf").removeData("orgStyle"),t.trigger("resize",{maximize:"off"})},o=function(t){t.data("bodyOvf",e("body").css("overflow")||"").data("orgStyle",t.attr("style")).addClass(n).css(u.getMaximizeCss()),e("body").css("overflow","hidden"),e(window).on("resize."+y,{elm:t},i),t.trigger("resize",{maximize:"on"})};u.toggleMaximize=function(t,i){var r=e(t),s=r.hasClass(n);if(s){if(i===!0)return;a(r)}else{if(i===!1)return;o(r)}}}(),Object.assign(e.ui.keyCode,{F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,DIG0:48,DIG1:49,DIG2:50,DIG3:51,DIG4:52,DIG5:53,DIG6:54,DIG7:55,DIG8:56,DIG9:57,NUM0:96,NUM1:97,NUM2:98,NUM3:99,NUM4:100,NUM5:101,NUM6:102,NUM7:103,NUM8:104,NUM9:105,CONTEXTMENU:93,DOT:190}),this.dragUpload=!1,this.xhrUpload=("undefined"!=typeof XMLHttpRequestUpload||"undefined"!=typeof XMLHttpRequestEventTarget)&&"undefined"!=typeof File&&"undefined"!=typeof FormData,this.transport={},"object"==typeof this.options.transport&&(this.transport=this.options.transport,"function"==typeof this.transport.init&&this.transport.init(this)),"function"!=typeof this.transport.send&&(this.transport.send=function(t){return u.UA.IE||(t._xhr=new XMLHttpRequest,t.xhr=function(){return t.progress&&t._xhr.addEventListener("progress",t.progress),t._xhr}),e.ajax(t)}),"iframe"==this.transport.upload?this.transport.upload=e.proxy(this.uploads.iframe,this):"function"==typeof this.transport.upload?this.dragUpload=!!this.options.dragUploadAllow:this.xhrUpload&&this.options.dragUploadAllow?(this.transport.upload=e.proxy(this.uploads.xhr,this),this.dragUpload=!0):this.transport.upload=e.proxy(this.uploads.iframe,this),this.decodeRawString=function(e){var t=function(e){var t,n,i;for(t=0,n=e.length,i=[];t<n;t++)i.push(e.charCodeAt(t));return i},n=function(e){var n,i,a,o=[];for("string"==typeof e&&(e=t(e)),n=0,i=e.length;a=e[n],n<i;n++)a>=55296&&a<=56319?o.push((1023&a)+64<<10|1023&e[++n]):o.push(a);return o},i=function(e){var t,n,i,a,o=String.fromCharCode;for(t=0,n=e.length,a="";i=e[t],t<n;t++)a+=i<=127?o(i):i<=223&&i>=194?o((31&i)<<6|63&e[++t]):i<=239&&i>=224?o((15&i)<<12|(63&e[++t])<<6|63&e[++t]):i<=247&&i>=240?o(55296|((7&i)<<8|(63&e[++t])<<2|e[++t]>>>4&3)-64,56320|(15&e[t++])<<6|63&e[t]):o(65533);return a};return i(n(e))},this.getContents=function(t,n,i){var a,o,r=this,s=e.Deferred(),l=n||"arraybuffer";return s.fail(function(){o&&"pending"===o.state()&&o.reject()}),a=r.openUrl(t),r.isSameOrigin(a)||(a=r.openUrl(t,!0)),o=r.request(Object.assign({data:{cmd:"get"},options:{url:a,type:"get",cache:!0,dataType:"binary",responseType:l,processData:!1},notify:{type:"file",cnt:1,hideCnt:!0},cancel:!0},i||{})).fail(function(){s.reject()}).done(function(e){s.resolve(e)}),s},this.getBinaryByUrl=function(t,n,i){var a,o=this,r=e.Deferred();return r.fail(function(){a&&"pending"===a.state()&&a.reject()}),a=o.request(Object.assign({data:{cmd:"get"},options:Object.assign({type:"get",cache:!0,dataType:"binary",responseType:"blob",processData:!1},t)},i||{})).fail(function(){r.reject()}).done(function(e){n&&n(e),r.resolve(e)}),r},this.getMimetype=function(e,t){var n,i,a=t;return i=(e+"").match(/\.([^.]+)$/),i&&(n=i[1])&&(o||(o=u.arrayFlip(u.mimeTypes)),(a=o[n.toLowerCase()])||(a=t)),a},u.hashCheckers=[],function(t){var n={};window.Worker&&window.ArrayBuffer&&(t.options.cdns.sparkmd5&&(n.SparkMD5=!0,t.hashCheckers.push("md5")),t.options.cdns.jssha&&(n.jsSHA=!0,t.hashCheckers=t.hashCheckers.concat(["sha1","sha224","sha256","sha384","sha512","sha3-224","sha3-256","sha3-384","sha3-512","shake128","shake256"]))),t.getContentsHashes=function(i,a,o,r){var s,l=e.Deferred(),c=t.arrayFlip(a||["md5"],!0),d=[],p={},u=o?o:{shake128len:256,shake256len:512};return l.fail(function(){s&&s.reject()}),Object.keys(n).length?s=t.getContents(i,"arraybuffer",r).done(function(a){c.md5&&n.SparkMD5&&d.push(function(){var o=e.Deferred();try{var r=t.getWorker();o.fail(function(){r&&r.terminate()}),r.onmessage=function(e){if(r&&r.terminate(),e.data.hash){var n;p.md5=e.data.hash,(n=t.file(i))&&(n.md5=p.md5)}else e.data.error&&(p.md5=e.data.error);l.notify(p),o.resolve()},r.onerror=function(e){o.reject()},r.postMessage({scripts:[t.options.cdns.sparkmd5,t.getWorkerUrl("calcfilehash.js")],data:{type:"md5",bin:a}}),l.fail(function(){o.reject()})}catch(s){o.reject(),delete n.SparkMD5}return o}()),n.jsSHA&&e.each(["1","224","256","384","512","3-224","3-256","3-384","3-512","ke128","ke256"],function(o,r){c["sha"+r]&&d.push(function(){var o=e.Deferred();try{var s=t.getWorker();o.fail(function(){s&&s.terminate()}),s.onmessage=function(e){if(s&&s.terminate(),e.data.hash){var n;p["sha"+r]=e.data.hash,(n=t.file(i))&&(n["sha"+r]=p["sha"+r])}else e.data.error&&(p["sha"+r]=e.data.error);l.notify(p),o.resolve()},s.onerror=function(e){o.reject()},s.postMessage({scripts:[t.options.cdns.jssha,t.getWorkerUrl("calcfilehash.js")],data:{type:r,bin:a,hashOpts:u}}),l.fail(function(){o.reject()})}catch(c){o.reject(),delete n.jsSHA}return o}())}),d.length?e.when.apply(null,d).always(function(){l.resolve(p)}):l.reject()}).fail(function(){l.reject()}):l.reject(),l}}(this),this.parseError=function(t){var n=t;return e.isPlainObject(n)&&(n=n.error),n},this.error=function(){var e,t=arguments[0],n=arguments[1]||null;return 1==arguments.length&&"function"==typeof t?u.bind("error",t):(e=this.parseError(t),e!==!0&&e?u.trigger("error",{error:e,opts:n}):this)},e.each(A,function(t,n){u[n]=function(){var t=arguments[0];return 1==arguments.length&&"function"==typeof t?u.bind(n,t):u.trigger(n,e.isPlainObject(t)?t:{})}}),this.enable(function(){!z&&u.api&&u.visible()&&u.ui.overlay.is(":hidden")&&!m.children(".elfinder-dialog."+u.res("class","editing")+":visible").length&&(z=!0,document.activeElement&&document.activeElement.blur(),m.removeClass("elfinder-disabled"))}).disable(function(){T=z,z=!1,m.addClass("elfinder-disabled")}).open(function(){E=[]}).select(function(t){var n=0,i=[];E=e.grep(t.data.selected||t.data.value||[],function(e){return i.length||u.maxTargets&&++n>u.maxTargets?(i.push(e),!1):!!I[e]}),i.length&&(u.trigger("unselectfiles",{files:i,inselect:!0}),u.toast({mode:"warning",msg:u.i18n(["errMaxTargets",u.maxTargets])}))}).error(function(t){var n,i,a={cssClass:"elfinder-dialog-error",title:u.i18n("error"),resizable:!1,destroyOnClose:!0,buttons:{}},o=u.getUI(),r=o.children(".elfinder-dialog-error").length;r<u.options.maxErrorDialogs?(a.buttons[u.i18n(u.i18n("btnClose"))]=function(){e(this).elfinderdialog("close")},t.data.opts&&e.isPlainObject(t.data.opts)&&Object.assign(a,t.data.opts),u.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-error"></span>'+u.i18n(t.data.error),a)):(n=o.children(".elfinder-dialog-error:last").children(".ui-dialog-content:first"),i=n.children(".elfinder-error-counter"),i.length?i.data("cnt",parseInt(i.data("cnt"))+1).html(u.i18n(["moreErrors",i.data("cnt")])):(i=e('<span class="elfinder-error-counter">'+u.i18n(["moreErrors",1])+"</span>").data("cnt",1),n.append("<br/>",i)))}).bind("tmb",function(t){e.each(t.data.images||[],function(e,t){I[e]&&(I[e].tmb=t)})}).bind("searchstart",function(e){Object.assign(u.searchStatus,e.data),u.searchStatus.state=1}).bind("search",function(e){u.searchStatus.state=2}).bind("searchend",function(){u.searchStatus.state=0,u.searchStatus.ininc=!1,u.searchStatus.mixed=!1}).bind("canMakeEmptyFile",function(t){var n=t.data,i={};n&&Array.isArray(n.mimes)&&(n.unshift||(i=u.mimesCanMakeEmpty),e.each(n.mimes,function(){i[this]||(i[this]=u.mimeTypes[this])}),n.unshift&&(u.mimesCanMakeEmpty=Object.assign(i,u.mimesCanMakeEmpty)))}).bind("themechange",function(){requestAnimationFrame(function(){u.trigger("uiresize")})}),!0===this.options.sound&&this.bind("playsound",function(t){var n=K.canPlayType&&K.canPlayType('audio/wav; codecs="1"'),i=t.data&&t.data.soundFile;n&&i&&""!=n&&"no"!=n&&e(K).html('<source src="'+B+i+'" type="audio/wav">')[0].play()}),e.each(this.options.handlers,function(e,t){u.bind(e,t)}),this.history=new this.history(this),this.roots={},this.leafRoots={},this.volumeExpires={},this._commands={},Array.isArray(this.options.commands)||(this.options.commands=[]),e.inArray("*",this.options.commands)!==-1&&(this.options.commands=Object.keys(this.commands)),this.commandMap={},this.volOptions={},this.hasVolOptions=!1,this.trashes={},this.optionsByHashes={},this.uiAutoHide=[],this.one("open",function(){u.uiAutoHide.length&&setTimeout(function(){u.trigger("uiautohide")},500)}),this.bind("uiautohide",function(){u.uiAutoHide.length&&u.uiAutoHide.shift()()}),this.options.width&&(N=this.options.width),this.options.height&&(L=this.options.height),this.options.heightBase&&(W=e(this.options.heightBase)),B=this.options.soundPath?this.options.soundPath.replace(/\/+$/,"")+"/":this.baseUrl+B,this.options.parrotHeaders&&Array.isArray(this.options.parrotHeaders)&&this.options.parrotHeaders.length?(this.parrotHeaders=this.options.parrotHeaders,e.each(this.parrotHeaders,function(e,t){var n=u.sessionStorage("core-ph:"+t);n&&(u.customHeaders[t]=n)})):this.parrotHeaders=[],u.one("opendone",function(){var t;e(document).on("click."+y,function(t){z&&!u.options.enableAlways&&!e(t.target).closest(m).length&&u.disable()}).on(x+" "+k+" "+C+" "+w,ae),u.options.useBrowserHistory&&e(window).on("popstate."+y,function(t){var n,i,a=t.originalEvent.state||{},o=!!a.thash,r=m.find(".elfinder-frontmost:visible"),s=m.find(".elfinder-navbar-dir,.elfinder-cwd-filename").find("input,textarea");o||(a={thash:u.cwd().hash},e("html,body").animate({scrollTop:m.offset().top})),r.length||s.length?(history.pushState(a,null,location.pathname+location.search+"#elf_"+a.thash),r.length?r.hasClass(u.res("class","preventback"))||(r.hasClass("elfinder-contextmenu")?e(document).trigger(e.Event("keydown",{keyCode:e.ui.keyCode.ESCAPE,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1})):r.hasClass("elfinder-dialog")?r.elfinderdialog("close"):r.trigger("close")):s.trigger(e.Event("keydown",{keyCode:e.ui.keyCode.ESCAPE,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))):o?!e.isEmptyObject(u.files())&&u.request({data:{cmd:"open",target:a.thash,onhistory:1},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!0}):(n=function(){i.trigger("click")},u.one("open",n,!0),i=u.toast({msg:u.i18n("pressAgainToExit"),onHidden:function(){u.unbind("open",n),history.pushState(a,null,location.pathname+location.search+"#elf_"+a.thash)}}))}),e(window).on("resize."+y,function(e){e.target===this&&(t&&cancelAnimationFrame(t),t=requestAnimationFrame(function(){var e=m.data("resizeSize")||{w:0,h:0},t={w:Math.round(m.width()),h:Math.round(m.height())};m.data("resizeSize",t),t.w===e.w&&t.h===e.h||(m.trigger("resize"),u.trigger("resize",{width:t.w,height:t.h}))}))}).on("beforeunload."+y,function(t){var n,i;if(!u.pauseUnloadCheck()){if(m.is(":visible")&&(u.ui.notify.children().length&&e.inArray("hasNotifyDialog",u.options.windowCloseConfirm)!==-1?n=u.i18n("ntfsmth"):m.find("."+u.res("class","editing")).length&&e.inArray("editingFile",u.options.windowCloseConfirm)!==-1?n=u.i18n("editingFile"):(i=Object.keys(u.selected()).length)&&e.inArray("hasSelectedItem",u.options.windowCloseConfirm)!==-1?n=u.i18n("hasSelected",""+i):(i=Object.keys(u.clipboard()).length)&&e.inArray("hasClipboardData",u.options.windowCloseConfirm)!==-1&&(n=u.i18n("hasClipboard",""+i)),n))return t.returnValue=n,n;u.trigger("unload")}}),e(window).on("message."+y,function(e){var t,n,i=e.originalEvent||null;if(i&&(0===u.convAbsUrl(u.options.url).indexOf(i.origin)||0===u.convAbsUrl(u.uploadURL).indexOf(i.origin)))try{try{if("string"!=typeof i.data)return;if(t=JSON.parse(i.data),"io.studio-42.github"!==t.type)return;n=t.data||null}catch(a){return}n&&(n.error?(t.bind&&u.trigger(t.bind+"fail",n),u.error(n.error)):(n.warning&&u.error(n.warning),u.updateCache(n),n.removed&&n.removed.length&&u.remove(n),n.added&&n.added.length&&u.add(n),n.changed&&n.changed.length&&u.change(n),t.bind&&(u.trigger(t.bind,n),u.trigger(t.bind+"done")),n.sync&&u.sync()))}catch(e){u.sync()}}),u.options.enableAlways?(e(window).on("focus."+y,function(e){e.target===this&&u.enable()}),re&&e(window.top).on("focus."+y,function(){!u.enable()||se&&!se.is(":visible")||requestAnimationFrame(function(){e(window).trigger("focus")})})):re&&e(window).on("blur."+y,function(e){z&&e.target===this&&u.disable()}),re&&m.on("click",function(t){e(window).trigger("focus")}),u.options.enableByMouseOver&&m.on("mouseenter touchstart",function(t){re&&e(window).trigger("focus"),!u.enabled()&&u.enable()}),e(window).on("visibilitychange."+y,function(e){var t=document.hidden||document.webkitHidden||document.msHidden;u.options.syncStart&&u.autoSync(t?"stop":void 0)})}),m[0].elfinder=this,h.push(function(){var t=u.lang,n=u.i18nBaseUrl+"elfinder."+t+".js",i=e.Deferred().done(function(){u.i18[t]&&(u.lang=t),u.trigger("i18load"),c="en"===u.lang?u.i18.en:e.extend(!0,{},u.i18.en,u.i18[u.lang])});return u.i18[t]?i.resolve():(u.lang="en",u.hasRequire?require([n],function(){i.resolve()},function(){i.resolve()}):u.loadScript([n],function(){i.resolve()},{loadType:"tag",error:function(){i.resolve()}})),i}()),d=function(){var t;return u.messages=c.messages,e.fn.selectable&&e.fn.draggable&&e.fn.droppable&&e.fn.resizable&&e.fn.button&&e.fn.slider?m.length?u.options.url?(t=Object.assign({name:u.i18n("name"),perm:u.i18n("perms"),date:u.i18n("modify"),size:u.i18n("size"),kind:u.i18n("kind"),modestr:u.i18n("mode"),modeoct:u.i18n("mode"),modeboth:u.i18n("mode")},u.options.uiOptions.cwd.listView.columnsCustomName),u.getColumnName=function(e){var n=t[e]||u.i18n(e);return"function"==typeof n?n():n},u.direction=c.direction,u.dateFormat=u.options.dateFormat||c.dateFormat,u.fancyFormat=u.options.fancyDateFormat||c.fancyDateFormat,u.nonameDateFormat=(u.options.nonameDateFormat||c.nonameDateFormat).replace(/[\/\\]/g,"_"),u.cssClass="ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-"+("rtl"==u.direction?"rtl":"ltr")+(u.UA.Touch?" elfinder-touch"+(u.options.resizable?" touch-punch":""):"")+(u.UA.Mobile?" elfinder-mobile":"")+(u.UA.iOS?" elfinder-ios":"")+" "+u.options.cssClass,m.addClass(u.cssClass).on(w,function(){!z&&u.enable()}),function(){var t,n,i,a,o,r=x+"draggable keyup."+y+"draggable";u.draggable={appendTo:m,addClasses:!1,distance:4,revert:!0,refreshPositions:!1,cursor:"crosshair",cursorAt:{left:50,top:47},scroll:!1,start:function(r,s){var l,c,d=s.helper,p=e.grep(d.data("files")||[],function(e){return!!e&&(R[e]=!0,!0)}),h=!1;for(o=m.attr("style"),m.width(m.width()).height(m.height()),t="ltr"===u.direction,n=u.getUI("workzone").data("rectangle"),i=n.top+n.height,a=i-u.getUI("navdock").outerHeight(!0),u.draggingUiHelper=d,l=p.length;l--;)if(c=p[l],I[c].locked){h=!0,d.data("locked",!0);break}!h&&u.trigger("lockfiles",{files:p}),d.data("autoScrTm",setInterval(function(){d.data("autoScr")&&u.autoScroll[d.data("autoScr")](d.data("autoScrVal"))},50))},drag:function(o,r){var s,l,c,d=r.helper;((l=n.top>o.pageY)||a<o.pageY)&&(s=n.cwdEdge>o.pageX?(t?"navbar":"cwd")+(l?"Up":"Down"):(t?"cwd":"navbar")+(l?"Up":"Down"),l||("cwd"===s.substr(0,3)?i<o.pageY?c=i:s=null:c=a),s&&(d.data("autoScr",s),d.data("autoScrVal",Math.pow(l?n.top-o.pageY:o.pageY-c,1.3)))),s||d.data("autoScr")&&d.data("refreshPositions",1).data("autoScr",null),d.data("refreshPositions")&&e(this).elfUiWidgetInstance("draggable")&&(d.data("refreshPositions")>0?(e(this).draggable("option",{refreshPositions:!0,elfRefresh:!0}),d.data("refreshPositions",-1)):(e(this).draggable("option",{refreshPositions:!1,elfRefresh:!1}),d.data("refreshPositions",null)))},stop:function(t,n){var i,a=n.helper;e(document).off(r),e(this).elfUiWidgetInstance("draggable")&&e(this).draggable("option",{refreshPositions:!1}),u.draggingUiHelper=null,u.trigger("focus").trigger("dragstop"),a.data("droped")||(i=e.grep(a.data("files")||[],function(e){return!!e}),u.trigger("unlockfiles",{files:i}),u.trigger("selectfiles",{files:u.selected()})),u.enable(),m.attr("style",o),a.data("autoScrTm")&&clearInterval(a.data("autoScrTm"))},helper:function(t,n){var i,a,o,s=this.id?e(this):e(this).parents("[id]:first"),l=e('<div class="elfinder-drag-helper"><span class="elfinder-drag-helper-icon-status"></span></div>'),c=function(t){var n,i=t.mime,a=u.tmb(t);return n='<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+u.mime2class(i)+' ui-corner-all"></div>',a?n=e(n).addClass(a.className).css("background-image","url('"+a.url+"')").get(0).outerHTML:t.icon&&(n=e(n).css(u.getIconStyle(t,!0)).get(0).outerHTML),t.csscls&&(n='<div class="'+t.csscls+'">'+n+"</div>"),n};return u.draggingUiHelper&&u.draggingUiHelper.stop(!0,!0),u.trigger("dragstart",{target:s[0],originalEvent:t},!0),i=s.hasClass(u.res("class","cwdfile"))?u.selected():[u.navId2Hash(s.attr("id"))],l.append(c(I[i[0]])).data("files",i).data("locked",!1).data("droped",!1).data("namespace",y).data("dropover",0),(a=i.length)>1&&l.append(c(I[i[a-1]])+'<span class="elfinder-drag-num">'+a+"</span>"),e(document).on(r,function(e){if(u._commands.copy){var t=e.shiftKey||e.ctrlKey||e.metaKey;o!==t&&(o=t,l.is(":visible")&&l.data("dropover")&&!l.data("droped")&&(l.toggleClass("elfinder-drag-helper-plus",!!l.data("locked")||o),u.trigger(o?"unlockfiles":"lockfiles",{files:i,helper:l})))}}),l}}}(),u.commands.getfile&&("function"==typeof u.options.getFileCallback?(u.bind("dblclick",function(e){e.preventDefault(),u.exec("getfile").fail(function(){u.exec("open",e.data&&e.data.file?[e.data.file]:void 0)})}),u.shortcut({pattern:"enter",description:u.i18n("cmdgetfile"),callback:function(){u.exec("getfile").fail(function(){u.exec("mac"==u.OS?"rename":"open")})}}).shortcut({pattern:"ctrl+enter",description:u.i18n("mac"==u.OS?"cmdrename":"cmdopen"),callback:function(){u.exec("mac"==u.OS?"rename":"open")}})):u.options.getFileCallback=null),e.each(u.commands,function(t,n){var i,a,o=Object.assign({},n.prototype);if("function"==typeof n&&!u._commands[t]&&(n.prototype.forceLoad||e.inArray(t,u.options.commands)!==-1)){if(i=n.prototype.extendsCmd||""){if("function"!=typeof u.commands[i])return!0;n.prototype=Object.assign({},_,new u.commands[i],n.prototype)}else n.prototype=Object.assign({},_,n.prototype);u._commands[t]=new n,n.prototype=o,a=u.options.commandsOptions[t]||{},i&&u.options.commandsOptions[i]&&(a=e.extend(!0,{},u.options.commandsOptions[i],a)),u._commands[t].setup(t,a),u._commands[t].linkedCmds.length&&e.each(u._commands[t].linkedCmds,function(e,t){var n=u.commands[t];"function"!=typeof n||u._commands[t]||(n.prototype=_,u._commands[t]=new n,u._commands[t].setup(t,u.options.commandsOptions[t]||{}))})}}),u.ui={workzone:e("<div></div>").appendTo(m).elfinderworkzone(u),navbar:e("<div></div>").appendTo(m).elfindernavbar(u,u.options.uiOptions.navbar||{}),navdock:e("<div></div>").appendTo(m).elfindernavdock(u,u.options.uiOptions.navdock||{}),contextmenu:e("<div></div>").appendTo(m).elfindercontextmenu(u),overlay:e("<div></div>").appendTo(m).elfinderoverlay({show:function(){u.disable()},hide:function(){T&&u.enable()}}),cwd:e("<div></div>").appendTo(m).elfindercwd(u,u.options.uiOptions.cwd||{}),notify:u.dialog("",{cssClass:"elfinder-dialog-notify"+(u.options.notifyDialog.canClose?"":" elfinder-titlebar-button-hide"),position:u.options.notifyDialog.position,absolute:!0,resizable:!1,autoOpen:!1,allowMinimize:!0,closeOnEscape:!!u.options.notifyDialog.canClose,title:"&nbsp;",width:u.options.notifyDialog.width?parseInt(u.options.notifyDialog.width):null,minHeight:null,minimize:function(){u.ui.notify.trigger("minimize")}}),statusbar:e('<div class="ui-widget-header ui-helper-clearfix ui-corner-bottom elfinder-statusbar"></div>').hide().appendTo(m),toast:e('<div class="elfinder-toast"></div>').appendTo(m),bottomtray:e('<div class="elfinder-bottomtray">').appendTo(m),progressbar:e('<div class="elfinder-ui-progressbar">').appendTo(m)},u.trigger("uiready"),e.each(u.options.ui||[],function(t,n){var i="elfinder"+n,a=u.options.uiOptions[n]||{};!u.ui[n]&&e.fn[i]&&(u.ui[n]=e("<"+(a.tag||"div")+"/>").appendTo(m),u.ui[n][i](u,a))}),u.ui.progressbar.appendTo(u.ui.workzone),u.ui.notify.prev(".ui-dialog-titlebar").append('<div class="elfinder-ui-progressbar"></div>'),u.resize(N,L),u.options.resizable&&(m.resizable({resize:function(e,t){u.resize(t.size.width,t.size.height)},handles:"se",minWidth:300,minHeight:200}),u.UA.Touch&&m.addClass("touch-punch")),function(){var e=u.getUI("navbar"),t=u.getUI("cwd").parent();u.autoScroll={navbarUp:function(t){e.scrollTop(Math.max(0,e.scrollTop()-t))},navbarDown:function(t){e.scrollTop(e.scrollTop()+t)},cwdUp:function(e){t.scrollTop(Math.max(0,t.scrollTop()-e))},cwdDown:function(e){t.scrollTop(t.scrollTop()+e)}}}(),u.UA.Touch&&!function(){var e,t,n,i,a,o,r,s,l,c=u.getUI("navbar"),d=u.getUI("toolbar"),p="touchmove.stopscroll",h=function(e){
var n=e.originalEvent.touches||[{}],i=n[0].pageY||null;(!t||i<t)&&(e.preventDefault(),s&&clearTimeout(s))},f=function(e){e.preventDefault(),s&&clearTimeout(s)},g=function(){s=setTimeout(function(){m.off(p)},100)},v=50;c=c.children().length?c:null,d=d.length?d:null,m.on("touchstart touchmove touchend",function(s){if("touchend"===s.type)return e=!1,t=!1,void g();var b,y,w,x,k,C=s.originalEvent.touches||[{}],z=C[0].pageX||null,T=C[0].pageY||null,A="ltr"===u.direction;null===z||null===T||"touchstart"===s.type&&C.length>1||("touchstart"===s.type?(n=m.offset(),i=m.width(),c&&(e=!1,c.is(":hidden")?(l||(l=Math.max(50,i/10)),(A?z-n.left:i+n.left-z)<l&&(e=z)):s.originalEvent._preventSwipeX||(o=c.width(),y=A?z<n.left+o:z>n.left+i-o,y?(l=Math.max(50,i/10),e=z):e=!1)),d&&(t=!1,s.originalEvent._preventSwipeY||(r=d.height(),a=n.top,T-a<(d.is(":hidden")?v:r+30)&&(t=T,m.on(p,d.is(":hidden")?f:h))))):(c&&e!==!1&&(b=(A?e>z:e<z)?"navhide":"navshow",w=Math.abs(e-z),("navhide"===b&&w>.6*o||w>("navhide"===b?o/3:45)&&("navshow"===b||(A?z<n.left+20:z>n.left+i-20)))&&(u.getUI("navbar").trigger(b,{handleW:l}),e=!1)),d&&t!==!1&&(x=d.offset().top,Math.abs(t-T)>Math.min(45,r/3)&&(k=t>T?"slideUp":"slideDown",("slideDown"===k||x+20>T)&&(d.is("slideDown"===k?":hidden":":visible")&&d.stop(!0,!0).trigger("toggle",{duration:100,handleH:v}),t=!1)))))})}(),u.dragUpload&&!function(){var t,n,i=function(t){return"TEXTAREA"!==t.target.nodeName&&"INPUT"!==t.target.nodeName&&0===e(t.target).closest("div.ui-dialog-content").length},a="native-drag-enter",o="native-drag-disable",r="class",s=u.res(r,"navdir"),l=(u.res(r,"droppable"),u.res(r,"adroppable"),u.res(r,"navarrow"),u.res(r,"adroppable")),c=u.getUI("workzone"),d="ltr"===u.direction,p=function(){n&&cancelAnimationFrame(n),n=null};m.on("dragenter",function(e){p(),i(e)&&(e.preventDefault(),e.stopPropagation(),t=c.data("rectangle"))}).on("dragleave",function(e){p(),i(e)&&(e.preventDefault(),e.stopPropagation())}).on("dragover",function(e){var a;i(e)?(e.preventDefault(),e.stopPropagation(),e.originalEvent.dataTransfer.dropEffect="none",n||(n=requestAnimationFrame(function(){var i,o=t.top+t.height,r=o-u.getUI("navdock").outerHeight(!0);((a=e.pageY<t.top)||e.pageY>r)&&(i=t.cwdEdge>e.pageX?(d?"navbar":"cwd")+(a?"Up":"Down"):(d?"cwd":"navbar")+(a?"Up":"Down"),a||"cwd"===i.substr(0,3)&&(o<e.pageY?r=o:i=""),i&&u.autoScroll[i](Math.pow(a?t.top-e.pageY:e.pageY-r,1.3))),n=null}))):p()}).on("drop",function(e){p(),i(e)&&(e.stopPropagation(),e.preventDefault())}),m.on("dragenter",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n,i=e(t.currentTarget),r=t.currentTarget.id||null,s=null;if(!r){s=u.cwd(),i.data(o,!1);try{e.each(t.originalEvent.dataTransfer.types,function(e,t){"elfinderfrom:"===t.substr(0,13)&&(n=t.substr(13).toLowerCase())})}catch(t){}}s&&(!s.write||n&&n===(window.location.href+s.hash).toLowerCase())?i.data(o,!0):(t.preventDefault(),t.stopPropagation(),i.data(a,!0),i.addClass(l))}}).on("dragleave",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),n.data(a)?n.data(a,!1):n.removeClass(l)}}).on("dragover",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),t.originalEvent.dataTransfer.dropEffect=n.data(o)?"none":"copy",n.data(a,!1)}}).on("drop",".native-droppable",function(t){if(t.originalEvent&&t.originalEvent.dataTransfer){var n,i=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),i.removeClass(l),n=t.currentTarget.id?i.hasClass(s)?u.navId2Hash(t.currentTarget.id):u.cwdId2Hash(t.currentTarget.id):u.cwd().hash,t.originalEvent._target=n,u.exec("upload",{dropEvt:t.originalEvent,target:n},void 0,n)}})}(),u.cssloaded===!1&&(u.cssloaded=!0,u.trigger("cssloaded")),u.zIndexCalc(),void u.trigger("init").request({data:{cmd:"open",target:u.startDir(),init:1,tree:1},preventDone:!0,notify:{type:"open",cnt:1,hideCnt:!0},freeze:!0}).fail(function(){u.trigger("fail").disable().lastDir(""),D={},U={},e(document).add(m).off("."+y),u.trigger=function(){}}).done(function(t){var n=function(e){var t=u.file(u.trashes[e]);u.options.debug;t&&t.volumeid&&delete u.volOptions[t.volumeid].trashHash,u.trashes[e]=!1,u.debug("backend-error",'Trash hash "'+e+'" was not found or not writable.')},i={};u.options.rawStringDecoder&&u.registRawStringDecoder(u.options.rawStringDecoder),u.zIndexCalc(),u.load().debug("api",u.api),m.trigger("resize"),Y(t),u.trigger("open",t,!1),u.trigger("opendone"),re&&u.options.enableAlways&&e(window).trigger("focus"),e.each(u.trashes,function(e){var t=u.file(e);t?"directory"===t.mime&&t.write||n(e):i[e]=!0}),Object.keys(i).length&&u.request({data:{cmd:"info",targets:Object.keys(i)},preventDefault:!0}).done(function(t){t&&t.files&&e.each(t.files,function(e,t){"directory"===t.mime&&t.write&&delete i[t.hash]})}).always(function(){e.each(i,n)}),u[u.options.enableAlways?"enable":"disable"]()})):alert(u.i18n("errURL")):alert(u.i18n("errNode")):alert(u.i18n("errJqui"))},a&&"function"==typeof a&&(u.bootCallback=a,a.call(m.get(0),u,{dfrdsBeforeBootup:h})),e.when.apply(null,h).done(function(){d()}).fail(function(e){u.error(e)})};return("undefined"==typeof n||n)&&(window.elFinder=i),i.prototype={uniqueid:0,res:function(e,t){return this.resources[e]&&this.resources[e][t]},OS:navigator.userAgent.indexOf("Mac")!==-1?"mac":navigator.userAgent.indexOf("Win")!==-1?"win":"other",UA:function(){var e=!document.unqueID&&!window.opera&&!window.sidebar&&"localStorage"in window&&"WebkitAppearance"in document.documentElement.style,t=e&&window.chrome,n={ltIE6:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.documentElement.style.maxHeight,ltIE7:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.querySelectorAll,ltIE8:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.getElementsByClassName,ltIE9:document.uniqueID&&document.documentMode<=9,ltIE10:document.uniqueID&&document.documentMode<=10,gtIE11:document.uniqueID&&document.documentMode>=11,IE:document.uniqueID,Firefox:window.sidebar,Opera:window.opera,Webkit:e,Chrome:t,Edge:!(!t||!window.msCredentials),Safari:e&&!window.chrome,Mobile:"undefined"!=typeof window.orientation,Touch:"undefined"!=typeof window.ontouchstart,iOS:navigator.platform.match(/^iP(?:[ao]d|hone)/),Mac:navigator.platform.match(/^Mac/),Fullscreen:"undefined"!=typeof(document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen||document.msExitFullscreen),Angle:0,Rotated:!1,CSS:function(){var e,t=document.createElement("a").style,n=document.createElement("p").style;return e="position:sticky;position:-webkit-sticky;",e+="width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;",t.cssText=e,{positionSticky:t.position.indexOf("sticky")!==-1,widthMaxContent:t.width.indexOf("max-content")!==-1,flex:"undefined"!=typeof n.flex}}()};return n}(),cookieEnabled:window.navigator.cookieEnabled,hasRequire:"function"==typeof define&&define.amd,currentReqCmd:"",keyState:{},i18:{en:{translator:"",language:"English",direction:"ltr",dateFormat:"d.m.Y H:i",fancyDateFormat:"$1 H:i",nonameDateFormat:"ymd-His",messages:{}},months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["msJan","msFeb","msMar","msApr","msMay","msJun","msJul","msAug","msSep","msOct","msNov","msDec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},kinds:{unknown:"Unknown",directory:"Folder",group:"Selects",symlink:"Alias","symlink-broken":"AliasBroken","application/x-empty":"TextPlain","application/postscript":"Postscript","application/vnd.ms-office":"MsOffice","application/msword":"MsWord","application/vnd.ms-word":"MsWord","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"MsWord","application/vnd.ms-word.document.macroEnabled.12":"MsWord","application/vnd.openxmlformats-officedocument.wordprocessingml.template":"MsWord","application/vnd.ms-word.template.macroEnabled.12":"MsWord","application/vnd.ms-excel":"MsExcel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"MsExcel","application/vnd.ms-excel.sheet.macroEnabled.12":"MsExcel","application/vnd.openxmlformats-officedocument.spreadsheetml.template":"MsExcel","application/vnd.ms-excel.template.macroEnabled.12":"MsExcel","application/vnd.ms-excel.sheet.binary.macroEnabled.12":"MsExcel","application/vnd.ms-excel.addin.macroEnabled.12":"MsExcel","application/vnd.ms-powerpoint":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.presentation":"MsPP","application/vnd.ms-powerpoint.presentation.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.slideshow":"MsPP","application/vnd.ms-powerpoint.slideshow.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.template":"MsPP","application/vnd.ms-powerpoint.template.macroEnabled.12":"MsPP","application/vnd.ms-powerpoint.addin.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.slide":"MsPP","application/vnd.ms-powerpoint.slide.macroEnabled.12":"MsPP","application/pdf":"PDF","application/xml":"XML","application/vnd.oasis.opendocument.text":"OO","application/vnd.oasis.opendocument.text-template":"OO","application/vnd.oasis.opendocument.text-web":"OO","application/vnd.oasis.opendocument.text-master":"OO","application/vnd.oasis.opendocument.graphics":"OO","application/vnd.oasis.opendocument.graphics-template":"OO","application/vnd.oasis.opendocument.presentation":"OO","application/vnd.oasis.opendocument.presentation-template":"OO","application/vnd.oasis.opendocument.spreadsheet":"OO","application/vnd.oasis.opendocument.spreadsheet-template":"OO","application/vnd.oasis.opendocument.chart":"OO","application/vnd.oasis.opendocument.formula":"OO","application/vnd.oasis.opendocument.database":"OO","application/vnd.oasis.opendocument.image":"OO","application/vnd.openofficeorg.extension":"OO","application/x-shockwave-flash":"AppFlash","application/flash-video":"Flash video","application/x-bittorrent":"Torrent","application/javascript":"JS","application/rtf":"RTF","application/rtfd":"RTF","application/x-font-ttf":"TTF","application/x-font-otf":"OTF","application/x-rpm":"RPM","application/x-web-config":"TextPlain","application/xhtml+xml":"HTML","application/docbook+xml":"DOCBOOK","application/x-awk":"AWK","application/x-gzip":"GZIP","application/x-bzip2":"BZIP","application/x-xz":"XZ","application/zip":"ZIP","application/x-zip":"ZIP","application/x-rar":"RAR","application/x-tar":"TAR","application/x-7z-compressed":"7z","application/x-jar":"JAR","text/plain":"TextPlain","text/x-php":"PHP","text/html":"HTML","text/javascript":"JS","text/css":"CSS","text/rtf":"RTF","text/rtfd":"RTF","text/x-c":"C","text/x-csrc":"C","text/x-chdr":"CHeader","text/x-c++":"CPP","text/x-c++src":"CPP","text/x-c++hdr":"CPPHeader","text/x-shellscript":"Shell","application/x-csh":"Shell","text/x-python":"Python","text/x-java":"Java","text/x-java-source":"Java","text/x-ruby":"Ruby","text/x-perl":"Perl","text/x-sql":"SQL","text/xml":"XML","text/x-comma-separated-values":"CSV","text/x-markdown":"Markdown","image/x-ms-bmp":"BMP","image/jpeg":"JPEG","image/gif":"GIF","image/png":"PNG","image/tiff":"TIFF","image/x-targa":"TGA","image/vnd.adobe.photoshop":"PSD","image/xbm":"XBITMAP","image/pxm":"PXM","image/webp":"WEBP","application/vnd.ms-fontobject":"EOT","font/sfnt":"SFNT","application/font-sfnt":"SFNT","font/ttf":"TTF","font/opentype":"OTF","font/otf":"OTF","application/x-font-opentype":"OTF","font/woff":"WOFF","application/font-woff":"WOFF","font/woff2":"WOFF2","application/font-woff2":"WOFF2","audio/mpeg":"AudioMPEG","audio/midi":"AudioMIDI","audio/ogg":"AudioOGG","audio/mp4":"AudioMPEG4","audio/x-m4a":"AudioMPEG4","audio/wav":"AudioWAV","audio/x-mp3-playlist":"AudioPlaylist","video/x-dv":"VideoDV","video/mp4":"VideoMPEG4","video/mpeg":"VideoMPEG","video/x-msvideo":"VideoAVI","video/quicktime":"VideoMOV","video/x-ms-wmv":"VideoWM","video/x-flv":"VideoFlash","video/x-matroska":"VideoMKV","video/ogg":"VideoOGG"},mimeTypes:{},rules:{defaults:function(e){return!(!e||e.added&&!Array.isArray(e.added)||e.removed&&!Array.isArray(e.removed)||e.changed&&!Array.isArray(e.changed))},open:function(t){return t&&t.cwd&&t.files&&e.isPlainObject(t.cwd)&&Array.isArray(t.files)},tree:function(e){return e&&e.tree&&Array.isArray(e.tree)},parents:function(e){return e&&e.tree&&Array.isArray(e.tree)},tmb:function(t){return t&&t.images&&(e.isPlainObject(t.images)||Array.isArray(t.images))},upload:function(t){return t&&(e.isPlainObject(t.added)||Array.isArray(t.added))},search:function(e){return e&&e.files&&Array.isArray(e.files)}},commands:{},cmdsToAdd:"archive duplicate extract mkdir mkfile paste rm upload",parseUploadData:function(t){var n,i=this;if(!e.trim(t))return{error:["errResponse","errDataEmpty"]};try{n=JSON.parse(t)}catch(a){return{error:["errResponse","errDataNotJSON"]}}return n=i.normalize(n),i.validResponse("upload",n)?(n.removed=e.merge(n.removed||[],e.map(n.added||[],function(e){return i.file(e.hash)?e.hash:null})),n):{error:n.norError||["errResponse"]}},iframeCnt:0,uploads:{xhrUploading:!1,failSyncTm:null,chunkfailReq:{},checkExists:function(t,n,i,a){var o,r=e.Deferred(),s=[],l={},c=function(){for(var e=t.length;--e>-1;)t[e]._remove=!0},d=function(){r.resolve(s,l)},p=function(){var r=[],p=[],u=n!==i.cwd().hash?i.path(n,!0)+i.option("separator",n):"",h=function(e){var n=e==p.length-1,o={cssClass:"elfinder-confirm-upload",title:i.i18n("cmdupload"),text:["errExists",u+p[e].name,"confirmRepl"],all:!n,accept:{label:"btnYes",callback:function(t){n||t?d():h(++e)}},reject:{label:"btnNo",callback:function(i){var a;if(i)for(a=p.length;e<a--;)t[p[a].i]._remove=!0;else t[p[e].i]._remove=!0;n||i?d():h(++e)}},cancel:{label:"btnCancel",callback:function(){c(),d()}},buttons:[{label:"btnBackup",cssClass:"elfinder-confirm-btn-backup",callback:function(t){var i;if(t)for(i=p.length;e<i--;)s.push(p[i].name);else s.push(p[e].name);n||t?d():h(++e)}}]};a||o.buttons.push({label:"btnRename"+(n?"":"All"),cssClass:"elfinder-confirm-btn-rename",callback:function(){s=null,d()}}),i.iframeCnt>0&&delete o.reject,i.confirm(o)};return i.file(n).read?(o=e.map(t,function(e,t){return!e.name||i.UA.iOS&&"image.jpg"===e.name?null:{i:t,name:e.name}}),void i.request({data:{cmd:"ls",target:n,intersect:e.map(o,function(e){return e.name})},notify:{type:"preupload",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(t){var a,s;t&&(t.error?c():i.options.overwriteUploadConfirm&&i.option("uploadOverwrite",n)&&t.list&&(Array.isArray(t.list)?r=t.list||[]:(a=[],r=e.map(t.list,function(e){return"string"==typeof e?e:(a=a.concat(e),!1)}),a.length&&(r=r.concat(a)),l=t.list),p=e.grep(o,function(t){return e.inArray(t.name,r)!==-1}),p.length&&r.length&&n==i.cwd().hash&&(s=e.map(i.files(n),function(e){return e.name}),e.grep(r,function(t){return e.inArray(t,s)===-1}).length&&i.sync()))),p.length>0?h(0):d()}).fail(function(e){c(),d(),e&&i.error(e)})):void d()};return i.api>=2.1&&"object"==typeof t[0]?p():d(),r},checkFile:function(t,n,i){if(t.checked||"files"==t.type)return t.files;if("data"==t.type){var a,o,r=e.Deferred(),s=e.Deferred(),l=[],c=[],d=0,p=[],u=!1,h=function(e){return Array.prototype.slice.call(e||[],0)},f=function(e){var t,i,a=n.options.folderUploadExclude[n.OS]||null,o=e.length,r=function(){--d<1&&"pending"===s.state()&&s.resolve()},m=function(e){a&&e.name.match(a)||(c.push(t.fullPath||""),l.push(e)),r()},i=function(e){var t=[],n=function(){e.readEntries(function(e){if(u||!e.length){for(var i=0;i<t.length;i++){if(u){s.reject();break}f([t[i]])}r()}else t=t.concat(h(e)),n()},r)};n()};d++;for(var g=0;g<o;g++){if(u){s.reject();break}t=e[g],t&&(t instanceof File?m(t):t.isFile?(d++,t.file(m,r)):t.isDirectory&&n.api>=2.1&&(d++,p.push(t.fullPath),i(t.createReader())))}return r(),s};return a=e.map(t.files.items,function(e){return"file"===e.kind?(e.getAsEntry?e.getAsEntry():e.webkitGetAsEntry())||e.getAsFile():null}),e.each(a,function(e,t){if(t.isDirectory)return o=!0,!1}),a.length>0?(n.uploads.checkExists(a,i,n,o).done(function(o,s){var d=[];n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",i)&&(null===o&&(t.overwrite=0,o=[]),a=e.grep(a,function(t){var a,r,l,c;return t.isDirectory&&o.length&&(a=e.inArray(t.name,o),a!==-1&&(o.splice(a,1),r=n.uniqueName(t.name+n.options.backupSuffix,null,""),e.each(s,function(e,n){if(t.name==n)return l=e,!1}),l||(l=n.fileByName(t.name,i).hash),n.lockfiles({files:[l]}),c=n.request({data:{cmd:"rename",target:l,name:r},notify:{type:"rename",cnt:1}}).fail(function(){t._remove=!0,n.sync()}).always(function(){n.unlockfiles({files:[l]})}),d.push(c))),!t._remove})),e.when.apply(e,d).done(function(){var e,t,i=+new Date;a.length>0?(t=n.escape(a[0].name),a.length>1&&(t+=" ... "+a.length+n.i18n("items")),e=setTimeout(function(){n.notify({type:"readdir",id:i,cnt:1,hideCnt:!0,msg:n.i18n("ntfreaddir")+" ("+t+")",cancel:function(){u=!0}})},n.options.notifyDelay),f(a).done(function(){e&&clearTimeout(e),n.notify({type:"readdir",id:i,cnt:-1}),u?r.reject():r.resolve([l,c,o,s,p])}).fail(function(){r.reject()})):r.reject()})}),r.promise()):r.reject()}var m=[],g=[],v=t.files[0];if("html"==t.type){var b,y=e("<html></html>").append(e.parseHTML(v.replace(/ src=/gi," _elfsrc=")));e("img[_elfsrc]",y).each(function(){var n,i,a=e(this),o=a.closest("a");o&&o.attr("href")&&o.attr("href").match(/\.(?:jpe?g|gif|bmp|png)/i)&&(i=o.attr("href")),n=a.attr("_elfsrc"),n&&(i?(e.inArray(i,m)==-1&&m.push(i),e.inArray(n,g)==-1&&g.push(n)):e.inArray(n,m)==-1&&m.push(n)),1===m.length&&m[0].match(/^data:image\/png/)&&(t.clipdata=!0)}),b=e("a[href]",y),b.each(function(){var t,n,i=function(e){var t=document.createElement("a");return t.href=e,t};(t=e(this).text())&&(n=i(e(this).attr("href")),n.href&&n.href.match(/^(?:ht|f)tp/i)&&(1===b.length||!n.pathname.match(/(?:\.html?|\/[^\/.]*)$/i)||e.trim(t).match(/\.[a-z0-9-]{1,10}$/i))&&e.inArray(n.href,m)==-1&&e.inArray(n.href,g)==-1&&m.push(n.href))})}else{var w,x,k;for(w=/((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;\/?:\@&=+\$,%#\*\[\]]+)/gi;x=w.exec(v);)k=x[1].replace(/&amp;/g,"&"),e.inArray(k,m)==-1&&m.push(k)}return m},xhr:function(t,n){var i=n?n:this,a=i.getUI(),o=new XMLHttpRequest,r=null,s=null,l=null,c=t.checked,d=t.isDataType||"data"==t.type,p=t.target||i.cwd().hash,u=t.dropEvt||null,h=t.extraData||null,f=i.option("uploadMaxConn",p)!=-1,m=Math.min(5,Math.max(1,i.option("uploadMaxConn",p))),g=1e4,v=30,b=0,y=function(t){var n=e.Deferred();return t.promise?t.always(function(e){n.resolve(Array.isArray(e)&&e.length?d?e[0][0]:e[0]:{})}):n.resolve(t.length?d?t[0][0]:t[0]:{}),n},w=e.Deferred().fail(function(e){var t,a=i.parseError(e);"userabort"===a&&(t=!0,a=void 0),k&&(i.uploads.xhrUploading||t)?y(k).done(function(e){t||H(a,e),e._cid?i.uploads.chunkfailReq[e._cid]||(i.uploads.chunkfailReq[e._cid]=!0,setTimeout(function(){n.request({data:{cmd:"upload",target:p,chunk:e._chunk,cid:e._cid,upload:["chunkfail"],mimes:"chunkfail"},options:{type:"post",url:i.uploadURL},preventDefault:!0}).always(function(){delete i.uploads.chunkfailReq[e._chunk]})},1e3)):(i.uploads.failSyncTm&&clearTimeout(i.uploads.failSyncTm),i.uploads.failSyncTm=setTimeout(function(){i.sync(p)},1e3))}):H(a),!t&&i.sync(),i.uploads.xhrUploading=!1,k=null}).done(function(t){i.uploads.xhrUploading=!1,k=null,t&&(i.currentReqCmd="upload",t.warning&&H(t.warning),i.updateCache(t),t.removed&&t.removed.length&&i.remove(t),t.added&&t.added.length&&i.add(t),t.changed&&t.changed.length&&i.change(t),i.trigger("upload",t,!1),i.trigger("uploaddone"),t.toasts&&Array.isArray(t.toasts)&&e.each(t.toasts,function(){this.msg&&i.toast(this)}),t.sync&&i.sync(),t.debug&&(i.responseDebug(t),n.debug("backend-debug",t)))}).always(function(){i.abortXHR(o),a.off("uploadabort",D),e(window).off("unload",D),r&&clearTimeout(r),s&&clearTimeout(s),l&&clearTimeout(l),c&&!t.multiupload&&E()&&i.notify({type:"upload",cnt:-C,progress:0,size:0}),s&&M&&i.notify({type:"chunkmerge",cnt:-C}),B&&S.children(".elfinder-notify-chunkmerge").length&&i.notify({type:"chunkmerge",cnt:-1})}),x=new FormData,k=t.input?t.input.files:i.uploads.checkFile(t,i,p),C=t.checked&&d?k[0].length:k.length,z=!1,T=0,A=0,j=0,O=!1,S=i.ui.notify,I=!0,M=!1,F=!1,E=function(){return!O&&($=S.children(".elfinder-notify-upload")).length&&(O=!0),O},D=function(e,t){F=!0,i.abortXHR(o,{quiet:!0,abort:!0}),w.reject(t),E()&&i.notify({type:"upload",cnt:$.data("cnt")*-1,progress:0,size:0})},U=function(e,t){$.children(".elfinder-notify-cancel")[e?"show":"hide"](),I=e},P=function(e){return e||(e=j),setTimeout(function(){O=!0,i.notify({type:"upload",cnt:C,progress:T-A,size:e,cancel:function(){a.trigger("uploadabort","userabort")}}),$=S.children(".elfinder-notify-upload"),A=T,t.multiupload?I&&U(!0):U(I&&T<e)},i.options.notifyDelay)},R=function(){b++<=v?(E()&&A&&i.notify({type:"upload",cnt:0,progress:0,size:A}),i.abortXHR(o,{quiet:!0}),A=T=0,setTimeout(function(){var e;F||(o.open("POST",i.uploadURL,!0),i.api>=2.1029&&(e=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),"function"==typeof x["delete"]&&x["delete"]("reqid"),x.append("reqid",e),o._requestId=e),o.send(x))},g)):a.trigger("uploadabort",["errAbort","errTimeout"])},q=function(){O&&w.notifyWith($,[{cnt:$.data("cnt"),progress:$.data("progress"),total:$.data("total")}])},H=function(e,t,n){e&&i.trigger("xhruploadfail",{error:e,file:t}),n?e&&(N<i.options.maxErrorDialogs&&(Array.isArray(e)?_=_.concat(e):_.push(e)),N++):e?i.error(e):(_.length&&(N>=i.options.maxErrorDialogs&&(_=_.concat("moreErrors",N-i.options.maxErrorDialogs)),i.error(_)),_=[],N=0)},_=[],N=0,L=t.renames||null,W=t.hashes||null,B=!1,$=e();if(a.one("uploadabort",D),e(window).one("unload."+n.namespace,D),!B&&(A=T),!d&&!C)return w.reject(["errUploadNoFiles"]);o.addEventListener("error",function(){0==o.status?F?w.reject():!d&&t.files&&e.grep(t.files,function(e){return!e.type&&e.size===(i.UA.Safari?1802:0)}).length?w.reject(["errAbort","errFolderUpload"]):t.input&&e.grep(t.input.files,function(e){return!e.type&&e.size===(i.UA.Safari?1802:0)}).length?w.reject(["errUploadNoFiles"]):R():a.trigger("uploadabort","errConnect")},!1),o.addEventListener("load",function(e){var n,s,c=o.status,p=0,u="";if(i.setCustomHeaderByXhr(o),c>=400?u=c>500?"errResponse":["errResponse","errServerError"]:o.responseText||(u=["errResponse","errDataEmpty"]),u&&(a.trigger("uploadabort"),y(k||{}).done(function(e){return w.reject(e._cid?null:u)})),T=j,E()&&(p=T-A)&&(i.notify({type:"upload",cnt:0,progress:p,size:0}),q()),n=i.parseUploadData(o.responseText),n._chunkmerged){x=new FormData;var h=[{_chunkmerged:n._chunkmerged,_name:n._name,_mtime:n._mtime}];return B=!0,a.off("uploadabort",D),l=setTimeout(function(){i.notify({type:"chunkmerge",cnt:1})},i.options.notifyDelay),void(d?V(h,k[1]):V(h))}n._multiupload=!!t.multiupload,n.error?(s={cmd:"upload",err:n,xhr:o,rc:o.status},i.trigger("uploadfail",n),i.trigger("requestError",s),s._getEvent&&s._getEvent().isDefaultPrevented()&&(n.error=""),n._chunkfailure||n._multiupload?(F=!0,i.uploads.xhrUploading=!1,r&&clearTimeout(r),$.length?(i.notify({type:"upload",cnt:-C,progress:0,size:0}),w.reject(n)):w.reject()):w.reject(n)):w.resolve(n)},!1),o.upload.addEventListener("loadstart",function(e){!B&&e.lengthComputable&&(T=e.loaded,b&&(T=0),j=e.total,T||(T=parseInt(.05*j)),E()&&(i.notify({type:"upload",cnt:0,progress:T-A,size:t.multiupload?0:j}),A=T,q()))},!1),o.upload.addEventListener("progress",function(e){var n;e.lengthComputable&&!B&&o.readyState<2&&(T=e.loaded,!t.checked&&T>0&&!r&&(r=P(o._totalSize-T)),j||(j=e.total,T||(T=parseInt(.05*j))),n=T-A,E()&&n/e.total>=.05&&(i.notify({type:"upload",cnt:0,progress:n,size:0}),A=T,q()),!M&&T>=j&&!z&&(M=!0,s=setTimeout(function(){i.notify({type:"chunkmerge",cnt:C})},i.options.notifyDelay)),I&&!t.multiupload&&T>=j&&E()&&U(!1))},!1);var V=function(a,s){var l,g,v,b,y,k,T,A,j,O,S,M,D,R,q,N=0,B=1,$=[],V=0,K=C,X=0,J=[],G=(new Date).getTime().toString().substr(-9),Y=Math.min((n.uplMaxSize?n.uplMaxSize:2097152)-8190,n.options.uploadMaxChunkSize),Q=!f&&"",Z=function(a,o){var s,l,c,h=[],f=0;if(!F){for(;a.length&&h.length<o;)h.push(a.shift());if(f=h.length){l=f;for(var m=0;m<f&&!F;m++)s=d?h[m][0][0]._cid||null:h[m][0]._cid||null,c=!(!c&&!s),R[s]?D--:n.exec("upload",{type:t.type,isDataType:d,files:h[m],checked:!0,target:p,dropEvt:u,renames:L,hashes:W,multiupload:!0,overwrite:0===t.overwrite?0:void 0,clipdata:t.clipdata},void 0,p).fail(function(e){e&&"No such command"===e&&(F=!0,n.error(["errUpload","errPerm"])),s&&(R[s]=!0)}).always(function(t){t&&t.added&&(S=e.merge(S,t.added)),D<=++M&&(n.trigger("multiupload",{added:S}),r&&clearTimeout(r),E()&&i.notify({type:"upload",cnt:-C,progress:0,size:0})),a.length?Z(a,1):(--l<=1&&I&&U(!1,c),w.resolve())})}}(h.length<1||F)&&(F?(r&&clearTimeout(r),s&&(R[s]=!0),w.reject()):(w.resolve(),i.uploads.xhrUploading=!1))},ee=function(){i.uploads.xhrUploading?setTimeout(ee,100):(i.uploads.xhrUploading=!0,Z($,m))};if(!c&&(d||"files"==t.type)){for((l=n.option("uploadMaxSize",p))||(l=0),y=0;y<a.length;y++){try{j=a[y],g=j.size,Q===!1&&(Q="",i.api>=2.1&&("slice"in j?Q="slice":"mozSlice"in j?Q="mozSlice":"webkitSlice"in j&&(Q="webkitSlice")))}catch(te){C--,K--;continue}if(l&&g>l||!Q&&n.uplMaxSize&&g>n.uplMaxSize)H(["errUploadFile",j.name,"errUploadFileSize"],j,!0),C--,K--;else if(!j.type||i.uploadMimeCheck(j.type,p))if(Q&&g>Y){for(k=0,T=Y,A=-1,K=Math.floor((g-1)/Y),v=j.lastModified?Math.round(j.lastModified/1e3):0,b=t.clipdata?n.date(n.nonameDateFormat)+".png":j.name,X+=g,J[G]=0;k<g;)O=j[Q](k,T),O._chunk=b+"."+ ++A+"_"+K+".part",O._cid=G,O._range=k+","+O.size+","+g,O._mtime=v,J[G]++,N&&V++,"undefined"==typeof $[V]&&($[V]=[],d&&($[V][0]=[],$[V][1]=[])),N=Y,B=1,d?($[V][0].push(O),$[V][1].push(s[y])):$[V].push(O),k=T,T=k+Y;null==O?(H(["errUploadFile",j.name,"errUploadFileSize"],j,!0),C--,K--):(K+=A,N=0,B=1,V++)}else(n.uplMaxSize&&N+g>n.uplMaxSize||B>n.uplMaxFile)&&(N=0,B=1,V++),"undefined"==typeof $[V]&&($[V]=[],d&&($[V][0]=[],$[V][1]=[])),d?($[V][0].push(j),$[V][1].push(s[y])):$[V].push(j),N+=g,X+=g,B++;else H(["errUploadFile",j.name,"errUploadMime","("+j.type+")"],j,!0),C--,K--}if(_.length&&H(),0==$.length)return t.checked=!0,!1;if($.length>1)return r=P(X),S=[],M=0,D=$.length,R=[],ee(),!0;d?(a=$[0][0],s=$[0][1]):a=$[0]}return c||(n.UA.Safari&&t.files?o._totalSize=X:r=P(X)),c=!0,a.length||w.reject(["errUploadNoFiles"]),o.open("POST",i.uploadURL,!0),n.customHeaders&&e.each(n.customHeaders,function(e){o.setRequestHeader(e,this)}),n.xhrFields&&e.each(n.xhrFields,function(e){e in o&&(o[e]=this)}),i.api>=2.1029&&(q=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),x.append("reqid",q),o._requestId=q),x.append("cmd","upload"),x.append(i.newAPI?"target":"current",p),L&&L.length&&(e.each(L,function(e,t){x.append("renames[]",t)}),x.append("suffix",n.options.backupSuffix)),W&&e.each(W,function(e,t){x.append("hashes["+e+"]",t)}),e.each(i.customData,function(e,t){x.append(e,t)}),e.each(i.options.onlyMimes,function(e,t){x.append("mimes[]",t)}),e.each(a,function(e,i){var a,o;i._chunkmerged?(x.append("chunk",i._chunkmerged),x.append("upload[]",i._name),x.append("mtime[]",i._mtime),t.clipdata&&x.append("overwrite",0),z=!0):(i._chunkfail?(x.append("upload[]","chunkfail"),x.append("mimes","chunkfail")):(t.clipdata?i._chunk||(t.overwrite=0,a=n.date(n.nonameDateFormat)+".png"):i.name&&(a=i.name,n.UA.iOS&&(a.match(/^image\.jpe?g$/i)?(t.overwrite=0,a=n.date(n.nonameDateFormat)+".jpg"):a.match(/^capturedvideo\.mov$/i)&&(t.overwrite=0,a=n.date(n.nonameDateFormat)+".mov")),o=(i.webkitRelativePath||i.relativePath||i._relativePath||"").replace(/[^\/]+$/,""),a=o+a),a?x.append("upload[]",i,a):x.append("upload[]",i)),i._chunk?(x.append("chunk",i._chunk),x.append("cid",i._cid),x.append("range",i._range),x.append("mtime[]",i._mtime),z=!0):x.append("mtime[]",i.lastModified?Math.round(i.lastModified/1e3):0))}),d&&e.each(s,function(e,t){x.append("upload_path[]",t)}),0===t.overwrite&&x.append("overwrite",0),u&&x.append("dropWith",parseInt((u.altKey?"1":"0")+(u.ctrlKey?"1":"0")+(u.metaKey?"1":"0")+(u.shiftKey?"1":"0"),2)),h&&e.each(h,function(e,t){x.append(e,t)}),o.send(x),!0};if(d)c?V(k[0],k[1]):k.done(function(t){if(L=[],C=t[0].length){if(t[4]&&t[4].length)return void n.request({data:{cmd:"mkdir",target:p,dirs:t[4]},notify:{type:"mkdir",cnt:t[4].length},preventFail:!0}).fail(function(e){e=e||["errUnknown"],"errCmdParams"===e[0]?m=1:(m=0,w.reject(e))}).done(function(n){var i=!1;n.hashes||(n.hashes={}),t[1]=e.map(t[1],function(e,a){return t[0][a]._relativePath=e.replace(/^\//,""),e=e.replace(/\/[^\/]*$/,""),""===e?p:n.hashes[e]?n.hashes[e]:(i=!0,t[0][a]._remove=!0,null)}),i&&(t[0]=e.grep(t[0],function(e){return!e._remove}))}).always(function(e){m&&(L=t[2],W=t[3],V(t[0],t[1]))});t[1]=e.map(t[1],function(){return p}),L=t[2],W=t[3],V(t[0],t[1])}else w.reject(["errUploadNoFiles"])}).fail(function(){w.reject()});else if(k.length>0)if(t.clipdata||null!=L)V(k)||w.reject();else{var K=[],X=[],J=n.options.folderUploadExclude[n.OS]||null;e.each(k,function(t,n){var i,a,o=n.webkitRelativePath||n.relativePath||"";return!!o&&(J&&n.name.match(J)?(n._remove=!0,o=void 0):(o="/"+o.replace(/\/[^\/]*$/,"").replace(/^\//,""),o&&e.inArray(o,K)===-1&&(K.push(o),i=o.substr(1).indexOf("/"),i!==-1&&(a=o.substr(0,i+1))&&e.inArray(a,K)===-1&&K.unshift(a))),void X.push(o))}),L=[],W={},K.length?!function(){var t=e.map(K,function(e){return e.substr(1).indexOf("/")===-1?{name:e.substr(1)}:null}),i=[];n.uploads.checkExists(t,p,n,!0).done(function(a,o){var r,s,l,c=[];n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",p)&&(i=e.map(t,function(e){return e._remove?e.name:null}),t=e.grep(t,function(e){return!e._remove})),i.length&&e.each(X.concat(),function(t,n){0===e.inArray(n,i)&&(k[t]._remove=!0,X[t]=void 0)}),k=e.grep(k,function(e){return!e._remove}),X=e.grep(X,function(e){return void 0!==e}),t.length?(r=e.Deferred(),a.length?e.each(a,function(t,i){s=n.uniqueName(i+n.options.backupSuffix,null,""),e.each(o,function(e,t){if(a[0]==t)return l=e,!1}),l||(l=n.fileByName(a[0],p).hash),n.lockfiles({files:[l]}),c.push(n.request({data:{cmd:"rename",target:l,name:s},notify:{type:"rename",cnt:1}}).fail(function(e){w.reject(e),n.sync()}).always(function(){n.unlockfiles({files:[l]})}))}):c.push(null),e.when.apply(e,c).done(function(){n.request({data:{cmd:"mkdir",target:p,dirs:K},notify:{type:"mkdir",cnt:K.length},preventFail:!0}).fail(function(e){e=e||["errUnknown"],"errCmdParams"===e[0]?m=1:(m=0,w.reject(e))}).done(function(t){var n=!1;t.hashes||(t.hashes={}),X=e.map(X.concat(),function(e,i){return"/"===e?p:t.hashes[e]?t.hashes[e]:(n=!0,k[i]._remove=!0,null)}),n&&(k=e.grep(k,function(e){return!e._remove}))}).always(function(e){m&&(d=!0,V(k,X)||w.reject())})})):w.reject()})}():n.uploads.checkExists(k,p,n).done(function(i,a){n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",p)&&(W=a,null===i?t.overwrite=0:L=i,k=e.grep(k,function(e){return!e._remove})),C=k.length,C>0?V(k)||w.reject():w.reject()})}else w.reject();return w},iframe:function(t,n){var i,a,o,r,s=n?n:this,l=!!t.input&&t.input,c=!l&&s.uploads.checkFile(t,s),d=e.Deferred().fail(function(e){e&&s.error(e)}),p="iframe-"+n.namespace+ ++s.iframeCnt,u=e('<form action="'+s.uploadURL+'" method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="'+p+'" style="display:none"><input type="hidden" name="cmd" value="upload" /></form>'),h=this.UA.IE,f=function(){r&&clearTimeout(r),o&&clearTimeout(o),a&&s.notify({type:"upload",cnt:-i}),setTimeout(function(){h&&e('<iframe src="javascript:false;"></iframe>').appendTo(u),u.remove(),m.remove()},100)},m=e('<iframe src="'+(h?"javascript:false;":"about:blank")+'" name="'+p+'" style="position:absolute;left:-1000px;top:-1000px" ></iframe>').on("load",function(){m.off("load").on("load",function(){
f(),d.resolve()}),o=setTimeout(function(){a=!0,s.notify({type:"upload",cnt:i})},s.options.notifyDelay),s.options.iframeTimeout>0&&(r=setTimeout(function(){f(),d.reject(["errConnect","errTimeout"])},s.options.iframeTimeout)),u.submit()}),g=t.target||s.cwd().hash,v=[],b=[],y=[],w={};if(c&&c.length)e.each(c,function(e,t){u.append('<input type="hidden" name="upload[]" value="'+t+'"/>')}),i=1;else{if(!(l&&e(l).is(":file")&&e(l).val()))return d.reject();n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",g)&&(v=l.files?l.files:[{name:e(l).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/,"$1")}],b.push(s.uploads.checkExists(v,g,s).done(function(n,a){w=a,null===n?t.overwrite=0:(y=n,i=e.grep(v,function(e){return!e._remove}).length,i!=v.length&&(i=0))}))),i=l.files?l.files.length:1,u.append(l)}return e.when.apply(e,b).done(function(){return i<1?d.reject():(u.append('<input type="hidden" name="'+(s.newAPI?"target":"current")+'" value="'+g+'"/>').append('<input type="hidden" name="html" value="1"/>').append('<input type="hidden" name="node" value="'+s.id+'"/>').append(e(l).attr("name","upload[]")),y.length>0&&(e.each(y,function(e,t){u.append('<input type="hidden" name="renames[]" value="'+s.escape(t)+'"/>')}),u.append('<input type="hidden" name="suffix" value="'+n.options.backupSuffix+'"/>')),w&&e.each(y,function(e,t){u.append('<input type="hidden" name="['+e+']" value="'+s.escape(t)+'"/>')}),0===t.overwrite&&u.append('<input type="hidden" name="overwrite" value="0"/>'),e.each(s.options.onlyMimes||[],function(e,t){u.append('<input type="hidden" name="mimes[]" value="'+s.escape(t)+'"/>')}),e.each(s.customData,function(e,t){u.append('<input type="hidden" name="'+e+'" value="'+s.escape(t)+'"/>')}),u.appendTo("body"),void m.appendTo("body"))}),d}},one:function(e,t,n){var i=this,a=e.toLowerCase(),o=function(e,n){return i.toUnbindEvents[a]||(i.toUnbindEvents[a]=[]),i.toUnbindEvents[a].push({type:a,callback:o}),(t.done?t.done:t).apply(this,arguments)};return t.done&&(o={done:o}),this.bind(a,o,n)},localStorage:function(t,n){var i,a,o,r,s,l=this,c=window.localStorage,d="elfinder-"+(t||"")+this.id,p=window.location.pathname+"-elfinder-",u=this.id,h=[];if("undefined"==typeof t)return r=p.length,s=u.length*-1,e.each(c,function(e){e.substr(0,r)===p&&e.substr(s)===u&&h.push(e)}),e.each(h,function(e,t){c.removeItem(t)}),!0;if(t=p+t+u,null===n)return c.removeItem(t);if(void 0===n&&!(i=c.getItem(t))&&(a=c.getItem(d))&&(n=a,c.removeItem(d)),void 0!==n){o=typeof n,"string"!==o&&"number"!==o&&(n=JSON.stringify(n));try{c.setItem(t,n)}catch(f){try{c.clear(),c.setItem(t,n)}catch(f){l.debug("error",f.toString())}}i=c.getItem(t)}if(i&&("{"===i.substr(0,1)||"["===i.substr(0,1)))try{return JSON.parse(i)}catch(f){}return i},sessionStorage:function(e,t){var n,i,a,o=this;try{n=window.sessionStorage}catch(r){}if(n){if(null===t)return n.removeItem(e);if(void 0!==t){a=typeof t,"string"!==a&&"number"!==a&&(t=JSON.stringify(t));try{n.setItem(e,t)}catch(r){try{n.clear(),n.setItem(e,t)}catch(r){o.debug("error",r.toString())}}}if(i=n.getItem(e),i&&("{"===i.substr(0,1)||"["===i.substr(0,1)))try{return JSON.parse(i)}catch(r){}return i}},cookie:function(t,n){var i,a,o,r,s,l;if(t="elfinder-"+t+this.id,void 0===n){if(this.cookieEnabled&&document.cookie&&""!=document.cookie)for(o=document.cookie.split(";"),t+="=",r=0;r<o.length;r++)if(o[r]=e.trim(o[r]),o[r].substring(0,t.length)==t){if(s=decodeURIComponent(o[r].substring(t.length)),"{"===s.substr(0,1)||"["===s.substr(0,1))try{return JSON.parse(s)}catch(c){}return s}return null}if(!this.cookieEnabled)return"";if(a=Object.assign({},this.options.cookie),null===n?(n="",a.expires=-1):(l=typeof n,"string"!==l&&"number"!==l&&(n=JSON.stringify(n))),"number"==typeof a.expires&&(i=new Date,i.setTime(i.getTime()+864e5*a.expires),a.expires=i),document.cookie=t+"="+encodeURIComponent(n)+"; expires="+a.expires.toUTCString()+(a.path?"; path="+a.path:"")+(a.domain?"; domain="+a.domain:"")+(a.secure?"; secure":"")+(a.samesite?"; samesite="+a.samesite:""),n&&("{"===n.substr(0,1)||"["===n.substr(0,1)))try{return JSON.parse(n)}catch(c){}return n},startDir:function(){var e=window.location.hash;return e&&e.match(/^#elf_/)?e.replace(/^#elf_/,""):this.options.startPathHash?this.options.startPathHash:this.lastDir()},lastDir:function(e){return this.options.rememberLastDir?this.storage("lastdir",e):""},_node:e("<span></c.length;>"),escape:function(e){return this._node.text(e).html().replace(/"/g,"&quot;").replace(/'/g,"&#039;")},normalize:function(t){var n,i,a,o,r,s=this,l=function(){var e,t;return(t=s.options.fileFilter)&&("function"==typeof t?e=function(e){return t.call(s,e)}:t instanceof RegExp&&(e=function(e){return t.test(e.name)})),e?e:null}(),c=function(t){var n;t.uiCmdMap&&(e.isPlainObject(t.uiCmdMap)&&Object.keys(t.uiCmdMap).length?(t.disabledFlip||(t.disabledFlip={}),n=t.disabledFlip,e.each(t.uiCmdMap,function(e,i){"hidden"!==i||n[e]||(t.disabled.push(e),t.disabledFlip[e]=!0)})):delete t.uiCmdMap)},d=function(t){var n=function(e){var t=typeof e;return"object"===t&&Array.isArray(e)&&(t="array"),t};return e.each(s.optionProperties,function(e,i){void 0!==i&&t[e]&&n(t[e])!==n(i)&&(t[e]=i)}),t.disabled?(t.disabledFlip=s.arrayFlip(t.disabled,!0),e.each(s.options.disabledCmdsRels,function(n,i){var a,o;t.disabledFlip[n]?o=!0:(a=n.match(/^([^&]+)&([^=]+)=(.*)$/))&&t.disabledFlip[a[1]]&&t[a[2]]==a[3]&&(o=!0),o&&e.each(i,function(e,n){t.disabledFlip[n]||(t.disabledFlip[n]=!0,t.disabled.push(n))})})):t.disabledFlip={},t},p=function(t,r,p){var u,h,m,g,v=!r||t,b=!!r&&null;if(t&&t.hash&&t.name&&t.mime){if("application/x-empty"===t.mime&&(t.mime="text/plain"),m=s.isRoot(t),m&&!t.volumeid&&s.debug("warning","The volume root statuses requires `volumeid` property."),m||"directory"===t.mime){if(t.phash){if(t.phash===t.hash)return f=f.concat(['Parent folder of "$1" is itself.',t.name]),b;if(m&&t.volumeid&&0===t.phash.indexOf(t.volumeid))return f=f.concat(['Parent folder of "$1" is inner itself.',t.name]),b}t.volumeid&&(u=t.volumeid,m&&(t.phash&&(s.leafRoots[t.phash]?e.inArray(t.hash,s.leafRoots[t.phash])===-1&&s.leafRoots[t.phash].push(t.hash):s.leafRoots[t.phash]=[t.hash]),s.hasVolOptions=!0,s.volOptions[u]||(s.volOptions[u]={dispInlineRegex:s.options.dispInlineRegex}),h=s.volOptions[u],t.options&&Object.assign(h,t.options),t.disabled&&(h.disabled=t.disabled,h.disabledFlip=s.arrayFlip(t.disabled,!0)),t.tmbUrl&&(h.tmbUrl=t.tmbUrl),h.url&&"/"!==h.url.substr(-1)&&(h.url+="/"),c(h),h.trashHash&&(s.trashes[h.trashHash]===!1?delete h.trashHash:s.trashes[h.trashHash]=t.hash),e.each(s.optionProperties,function(e){h[e]&&(t[e]=h[e])}),"cwd"!==p&&(s.roots[u]=t.hash),t.expires&&(s.volumeExpires[u]=t.expires)),o!==u&&(o=u,a=s.option("i18nFolderName",u))),m&&!t.i18&&(n="volume_"+t.name,i=s.i18n(!1,n),n!==i&&(t.i18=i)),a&&!t.i18&&(n="folder_"+t.name,i=s.i18n(!1,n),n!==i&&(t.i18=i)),m&&s.options.enableRootRename!==!1&&(g=s.storage("rootNames"))&&(g[t.hash]&&(t._name=t.name,t._i18=t.i18,t.name=g[t.hash]=g[t.hash],delete t.i18),s.storage("rootNames",g)),s.trashes[t.hash]&&(t.locked=!0)}else{if(l)try{if(!l(t))return b}catch(y){s.debug(y)}0==t.size&&(t.mime=s.getMimetype(t.name,t.mime))}return t.options&&(s.optionsByHashes[t.hash]=d(t.options)),delete t.options,v}return b},u=function(t){var n=[];return e.each(s.files(),function(i,a){e.each(s.parents(i),function(a,o){if(e.inArray(o,t)!==-1&&e.inArray(i,t)===-1)return n.push(i),!1})}),n},h=function(n,i){e.each(n,function(n,a){var o,r;s.leafRoots[a.hash]&&s.applyLeafRootStats(a),"change"!==i&&a.phash&&s.isRoot(a)&&(o=s.file(a.phash))&&(s.applyLeafRootStats(o),t.changed?(e.each(t.changed,function(e,n){if(n.hash===o.hash)return t.changed[e]=o,r=!0,!1}),r||t.changed.push(o)):t.changed=[o])})},f=[];if(t.customData&&(!s.prevCustomData||JSON.stringify(t.customData)!==JSON.stringify(s.prevCustomData))){s.prevCustomData=t.customData;try{r=JSON.parse(t.customData),e.isPlainObject(r)&&(s.prevCustomData=r,e.each(Object.keys(r),function(e,t){null===r[t]&&(delete r[t],delete s.optsCustomData[t])}),s.customData=Object.assign({},s.optsCustomData,r))}catch(m){}}return t.options&&d(t.options),t.cwd&&(t.cwd.volumeid&&t.options&&Object.keys(t.options).length&&s.isRoot(t.cwd)&&(s.hasVolOptions=!0,s.volOptions[t.cwd.volumeid]=t.options),t.cwd=p(t.cwd,!0,"cwd")),t.files&&(t.files=e.grep(t.files,p)),t.tree&&(t.tree=e.grep(t.tree,p)),t.added&&(t.added=e.grep(t.added,p)),t.changed&&(t.changed=e.grep(t.changed,p)),t.removed&&t.removed.length&&2===s.searchStatus.state&&(t.removed=t.removed.concat(u(t.removed))),t.api&&(t.init=!0),Object.keys(s.leafRoots).length&&(t.files&&h(t.files),t.tree&&h(t.tree),t.added&&h(t.added),t.changed&&h(t.changed,"change")),t.cwd&&t.cwd.options&&t.options&&Object.assign(t.options,d(t.cwd.options)),t.options&&t.options.url&&"/"!==t.options.url.substr(-1)&&(t.options.url+="/"),f.length&&(t.norError=["errResponse"].concat(f)),t},setSort:function(e,t,n,i){this.storage("sortType",this.sortType=this.sortRules[e]?e:"name"),this.storage("sortOrder",this.sortOrder=/asc|desc/.test(t)?t:"asc"),this.storage("sortStickFolders",(this.sortStickFolders=!!n)?1:""),this.storage("sortAlsoTreeview",(this.sortAlsoTreeview=!!i)?1:""),this.trigger("sortchange")},_sortRules:{name:function(e,t){return i.prototype.naturalCompare(e.i18||e.name,t.i18||t.name)},size:function(e,t){var n=parseInt(e.size)||0,i=parseInt(t.size)||0;return n===i?0:n>i?1:-1},kind:function(e,t){return i.prototype.naturalCompare(e.mime,t.mime)},date:function(e,t){var n=e.ts||e.date||0,i=t.ts||t.date||0;return n===i?0:n>i?1:-1},perm:function(e,t){var n=function(e){return(e.write?2:0)+(e.read?1:0)},i=n(e),a=n(t);return i===a?0:i>a?1:-1},mode:function(e,t){var n=e.mode||e.perm||"",a=t.mode||t.perm||"";return i.prototype.naturalCompare(n,a)},owner:function(e,t){var n=e.owner||"",a=t.owner||"";return i.prototype.naturalCompare(n,a)},group:function(e,t){var n=e.group||"",a=t.group||"";return i.prototype.naturalCompare(n,a)}},sorters:{},naturalCompare:function(e,t){var n=i.prototype.naturalCompare;return"undefined"==typeof n.loc&&(n.loc=navigator.userLanguage||navigator.browserLanguage||navigator.language||"en-US"),"undefined"==typeof n.sort&&("11".localeCompare("2",n.loc,{numeric:!0})>0?window.Intl&&window.Intl.Collator?n.sort=new Intl.Collator(n.loc,{numeric:!0}).compare:n.sort=function(e,t){return e.localeCompare(t,n.loc,{numeric:!0})}:(n.sort=function(e,t){var i,a,o=/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,r=/(^[ ]*|[ ]*$)/g,s=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,c=/^0/,d=/^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/,p=function(e){return n.sort.insensitive&&(""+e).toLowerCase()||""+e},u=p(e).replace(r,"").replace(/^_/,"")||"",h=p(t).replace(r,"").replace(/^_/,"")||"",f=u.replace(o,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),m=h.replace(o,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),g=parseInt(u.match(l))||1!=f.length&&u.match(s)&&Date.parse(u),v=parseInt(h.match(l))||g&&h.match(s)&&Date.parse(h)||null,b=0;if(v){if(g<v)return-1;if(g>v)return 1}for(var y=0,w=Math.max(f.length,m.length);y<w;y++){if(i=!(f[y]||"").match(c)&&parseFloat(f[y])||f[y]||0,a=!(m[y]||"").match(c)&&parseFloat(m[y])||m[y]||0,isNaN(i)!==isNaN(a)){if(isNaN(i)&&("string"!=typeof i||!i.match(d)))return 1;if("string"!=typeof a||!a.match(d))return-1}if(0===parseInt(i,10)&&(i=0),0===parseInt(a,10)&&(a=0),typeof i!=typeof a&&(i+="",a+=""),n.sort.insensitive&&"string"==typeof i&&"string"==typeof a&&(b=i.localeCompare(a,n.loc),0!==b))return b;if(i<a)return-1;if(i>a)return 1}return 0},n.sort.insensitive=!0)),n.sort(e,t)},compare:function(e,t){var n,i=this,a=i.sortType,o="asc"==i.sortOrder,r=i.sortStickFolders,s=i.sortRules,l=s[a],c="directory"==e.mime,d="directory"==t.mime;if(r){if(c&&!d)return-1;if(!c&&d)return 1}return n=o?l(e,t):l(t,e),"name"!==a&&0===n?n=o?s.name(e,t):s.name(t,e):n},sortFiles:function(e){return e.sort(this.compare)},notify:function(t){var n,i,a,o=this,r=t.type,s=t.id?"elfinder-notify-"+t.id:"",l=this.i18n("undefined"!=typeof t.msg?t.msg:this.messages["ntf"+r]?"ntf"+r:"ntfsmth"),c=this.arrayFlip(this.options.notifyDialog.hiddens||[]),d=this.ui.notify,p=d.closest(".ui-dialog"),u=d.children(".elfinder-notify-"+r+(s?"."+s:"")),h=u.children("div.elfinder-notify-cancel").children("button"),f='<div class="elfinder-notify elfinder-notify-{type}'+(s?" "+s:"")+'"><span class="elfinder-dialog-icon elfinder-dialog-icon-{type}"></span><span class="elfinder-notify-msg">{msg}</span> <span class="elfinder-notify-cnt"></span><div class="elfinder-notify-progressbar"><div class="elfinder-notify-progress"></div></div><div class="elfinder-notify-cancel"></div></div>',m=t.cnt+0,g="undefined"!=typeof t.size?parseInt(t.size):null,v="undefined"!=typeof t.progress&&t.progress>=0?t.progress:null,b=t.fakeinterval||200,y=t.cancel,w="ui-state-hover",x=function(){var t=u.find(".elfinder-notify-progress"),n=function(){u.remove(),d.children(p.data("minimized")?void 0:":visible").length||(p.data("minimized")?p.data("minimized").hide():d.elfinderdialog("close")),C()};u._esc&&e(document).off("keydown",u._esc),u.data("cur")<100?t.animate({width:"100%"},50,function(){requestAnimationFrame(function(){n()})}):n()},k=function(e){var t;u.length&&(t=u.data("cur")+1,t<=98&&(u.find(".elfinder-notify-progress").width(t+"%"),u.data("cur",t),C(),setTimeout(function(){e*=1.05,k(e)},e)))},C=function(){var t,n=0,i=0,a=d.children(".elfinder-notify");a.length?(a.each(function(){n++,i+=Math.min(e(this).data("cur"),100)}),t=n?Math.floor(i/(100*n)*100)+"%":0,o.ui.progressbar.width(t),p.data("minimized")&&(p.data("minimized").title(t),p.data("minimized").dialog().children(".ui-dialog-titlebar").children(".elfinder-ui-progressbar").width(t))):(o.ui.progressbar.width(0),p.data("minimized")&&p.data("minimized").hide())};return r?(u.length?"undefined"!=typeof t.msg&&u.children("span.elfinder-notify-msg").html(l):(u=e(f.replace(/\{type\}/g,r).replace(/\{msg\}/g,l)),c[r]?u.hide():d.on("minimize",function(e){p.data("minimized")&&C()}),u.appendTo(d).data("cnt",0),null!=v?u.data({progress:0,total:0,cur:0}):(u.data({cur:0}),k(b)),y&&(h=e('<span class="elfinder-notify-button ui-icon ui-icon-close" title="'+this.i18n("btnCancel")+'"></span>').on("mouseenter mouseleave",function(t){e(this).toggleClass(w,"mouseenter"===t.type)}),u.children("div.elfinder-notify-cancel").append(h)),d.trigger("resize")),n=m+parseInt(u.data("cnt")),n>0?(y&&h.length&&("function"==typeof y||"object"==typeof y&&y.promise)&&(u._esc=function(t){"keydown"==t.type&&t.keyCode!=e.ui.keyCode.ESCAPE||(t.preventDefault(),t.stopPropagation(),x(),y.promise?y.reject(0):y(t))},h.on("click",function(e){u._esc(e)}),e(document).on("keydown."+this.namespace,u._esc)),!t.hideCnt&&u.children(".elfinder-notify-cnt").text("("+n+")"),m>0&&d.is(":hidden")&&!c[r]&&(p.data("minimized")?p.data("minimized").show():d.elfinderdialog("open",this).height("auto")),u.data("cnt",n),null!=v&&(i=u.data("total"))>=0&&(a=u.data("progress"))>=0&&(i+=null!=g?g:m,a+=v,null==g&&m<0&&(a+=100*m),u.data({progress:a,total:i}),null!=g&&(a*=100,i=Math.max(1,i)),v=Math.min(parseInt(a/i),100),u.find(".elfinder-notify-progress").animate({width:(v<100?v:100)+"%"},20,function(){u.data("cur",v),C()}))):x(),this):this},confirm:function(t){var n,i,a=this,o=!1,r={cssClass:"elfinder-dialog-confirm",modal:!0,resizable:!1,title:this.i18n(t.title||"confirmReq"),buttons:{},close:function(){!o&&t.cancel.callback(),e(this).elfinderdialog("destroy")}},s=this.i18n("apllyAll");return t.cssClass&&(r.cssClass+=" "+t.cssClass),r.buttons[this.i18n(t.accept.label)]=function(){t.accept.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[this.i18n(t.accept.label)]._cssClass="elfinder-confirm-accept",t.reject&&(r.buttons[this.i18n(t.reject.label)]=function(){t.reject.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[this.i18n(t.reject.label)]._cssClass="elfinder-confirm-reject"),t.buttons&&t.buttons.length>0&&(i=1,e.each(t.buttons,function(t,s){r.buttons[a.i18n(s.label)]=function(){s.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[a.i18n(s.label)]._cssClass="elfinder-confirm-extbtn"+i++,s.cssClass&&(r.buttons[a.i18n(s.label)]._cssClass+=" "+s.cssClass)})),r.buttons[this.i18n(t.cancel.label)]=function(){e(this).elfinderdialog("close")},r.buttons[this.i18n(t.cancel.label)]._cssClass="elfinder-confirm-cancel",t.all&&(r.create=function(){var t=e('<div class="elfinder-dialog-confirm-applyall"></div>');n=e('<input type="checkbox" />'),e(this).next().find(".ui-dialog-buttonset").prepend(t.append(e("<label>"+s+"</label>").prepend(n)))}),t.optionsCallback&&"function"==typeof t.optionsCallback&&t.optionsCallback(r),this.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-confirm"></span>'+this.i18n(t.text),r)},uniqueName:function(e,t,n){var i,a,o=0,r="";if(e=this.i18n(!1,e),t=t||this.cwd().hash,n="undefined"==typeof n?" ":n,(i=e.match(/^(.+)(\.[^.]+)$/))&&(r=i[2],e=i[1]),a=e+r,!this.fileByName(a,t))return a;for(;o<1e4;)if(a=e+n+ ++o+r,!this.fileByName(a,t))return a;return e+Math.random()+r},i18n:function(){var t,n,i,a,o,r=this,s=this.messages,l=[],c=[],d=function(e){var t;return 0===e.indexOf("#")&&(t=r.file(e.substr(1)))?t.name:e},p=0;for(arguments.length&&arguments[0]===!1&&(a=function(e){return e},p=1),t=p;t<arguments.length;t++)if(i=arguments[t],Array.isArray(i))for(n=0;n<i.length;n++)i[n]instanceof jQuery?l.push(i[n]):"undefined"!=typeof i[n]&&l.push(d(""+i[n]));else i instanceof jQuery?l.push(i[n]):"undefined"!=typeof i&&l.push(d(""+i));for(t=0;t<l.length;t++)e.inArray(t,c)===-1&&(i=l[t],"string"==typeof i?(o=!(!s[i]||!i.match(/^err/)),i=s[i]||(a?a(i):r.escape(i)),i=i.replace(/\$(\d+)/g,function(e,n){var i;return n=t+parseInt(n),n>0&&l[n]&&c.push(n),i=a?a(l[n]):r.escape(l[n]),o&&(i='<span class="elfinder-err-var elfinder-err-var'+n+'">'+i+"</span>"),i})):i=i.get(0).outerHTML,l[t]=i);return e.grep(l,function(t,n){return e.inArray(n,c)===-1}).join("<br>")},getIconStyle:function(t,n){var i=this,a={background:"url('{url}') 0 0 no-repeat","background-size":"contain"},o="",r={},s=0;return t.icon&&(o='style="',e.each(a,function(e,a){0===s++&&(a=a.replace("{url}",i.escape(t.icon))),n?r[e]=a:o+=e+":"+a+";"}),o+='"'),n?r:o},mime2class:function(e){var t="elfinder-cwd-icon-",n=e.toLowerCase(),i=this.textMimes[n];return n=n.split("/"),i?n[0]+=" "+t+"text":n[1]&&n[1].match(/\+xml$/)&&(n[0]+=" "+t+"xml"),t+n[0]+(n[1]?" "+t+n[1].replace(/(\.|\+)/g,"-"):"")},mime2kind:function(e){var t,n="object"==typeof e,i=n?e.mime:e;return n&&e.alias&&"symlink-broken"!=i?t="Alias":this.kinds[i]?t=!n||"directory"!==i||e.phash&&!e.isroot?this.kinds[i]:"Root":this.mimeTypes[i]&&(t=this.mimeTypes[i].toUpperCase(),this.messages["kind"+t]||(t=null)),t||(t=0===i.indexOf("text")?"Text":0===i.indexOf("image")?"Image":0===i.indexOf("audio")?"Audio":0===i.indexOf("video")?"Video":0===i.indexOf("application")?"App":0===i.indexOf("font")?"Font":i),this.messages["kind"+t]?this.i18n("kind"+t):i},mimeIsText:function(e){return!!(this.textMimes[e.toLowerCase()]||0===e.indexOf("text/")&&"rtf"!==e.substr(5,3)||e.match(/^application\/.+\+xml$/))},date:function(e,t){var n,i,a,o,r,s,l,c,d,p=this;return t||(t=new Date),s=t[p.getHours](),l=s>12?s-12:s,c=t[p.getMinutes](),d=t[p.getSeconds](),i=t[p.getDate](),a=t[p.getDay](),o=t[p.getMonth]()+1,r=t[p.getFullYear](),n=e.replace(/[a-z]/gi,function(e){switch(e){case"d":return i>9?i:"0"+i;case"j":return i;case"D":return p.i18n(p.i18.daysShort[a]);case"l":return p.i18n(p.i18.days[a]);case"m":return o>9?o:"0"+o;case"n":return o;case"M":return p.i18n(p.i18.monthsShort[o-1]);case"F":return p.i18n(p.i18.months[o-1]);case"Y":return r;case"y":return(""+r).substr(2);case"H":return s>9?s:"0"+s;case"G":return s;case"g":return l;case"h":return l>9?l:"0"+l;case"a":return s>=12?"pm":"am";case"A":return s>=12?"PM":"AM";case"i":return c>9?c:"0"+c;case"s":return d>9?d:"0"+d}return e})},formatDate:function(e,t){var n,i,a,o=this,r=t||e.ts;o.i18;return o.options.clientFormatDate&&r>0?(n=new Date(1e3*r),i=r>=this.yesterday?this.fancyFormat:this.dateFormat,a=o.date(i,n),r>=this.yesterday?a.replace("$1",this.i18n(r>=this.today?"Today":"Yesterday")):a):e.date?e.date.replace(/([a-z]+)\s/i,function(e,t){return o.i18n(t)+" "}):o.i18n("dateUnknown")},toLocaleString:function(e){var t=new Number(e);return t?t.toLocaleString?t.toLocaleString():String(e).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"):e},perms2class:function(e){var t="";return e.read||e.write?e.read?e.write||(t="elfinder-ro"):t="elfinder-wo":t="elfinder-na",e.type&&(t+=" elfinder-"+this.escape(e.type)),t},formatPermissions:function(e){var t=[];return e.read&&t.push(this.i18n("read")),e.write&&t.push(this.i18n("write")),t.length?t.join(" "+this.i18n("and")+" "):this.i18n("noaccess")},formatSize:function(e){var t=1,n="b";return"unknown"==e?this.i18n("unknown"):(e>1073741824?(t=1073741824,n="GB"):e>1048576?(t=1048576,n="MB"):e>1024&&(t=1024,n="KB"),e/=t,(e>0?t>=1048576?e.toFixed(2):Math.round(e):0)+" "+n)},formatFileMode:function(t,n){var i,a,o,r,s,l,c,d,p;if(n||(n=this.options.fileModeStyle.toLowerCase()),t=e.trim(t),t.match(/[rwxs-]{9}$/i)){if(d=t=t.substr(-9),"string"==n)return d;for(p="",o=0,i=0;i<7;i+=3)a=t.substr(i,3),r=0,a.match(/[r]/i)&&(r+=4),a.match(/[w]/i)&&(r+=2),a.match(/[xs]/i)&&(a.match(/[xs]/)&&(r+=1),a.match(/[s]/i)&&(0==i?o+=4:3==i&&(o+=2))),p+=r.toString(8);o&&(p=o.toString(8)+p)}else{if(t=parseInt(t,8),p=t?t.toString(8):"",!t||"octal"==n)return p;for(a=t.toString(8),o=0,a.length>3&&(a=a.substr(-4),o=parseInt(a.substr(0,1),8),a=a.substr(1)),s=1==(1&o),c=2==(2&o),l=4==(4&o),d="",i=0;i<3;i++)d+=4==(4&parseInt(a.substr(i,1),8))?"r":"-",d+=2==(2&parseInt(a.substr(i,1),8))?"w":"-",d+=1==(1&parseInt(a.substr(i,1),8))?0==i&&l||1==i&&c?"s":"x":"-"}return"both"==n?d+" ("+p+")":"string"==n?d:p},registRawStringDecoder:function(e){"function"==typeof e&&(this.decodeRawString=this.options.rawStringDecoder=e)},uploadMimeCheck:function(t,n){n=n||this.cwd().hash;var i,a,o=!0,r=this.option("uploadMime",n),s=function(n){var i=!1;return"string"==typeof n&&"all"===n.toLowerCase()?i=!0:Array.isArray(n)&&n.length&&e.each(n,function(e,n){if(n=n.toLowerCase(),"all"===n||0===t.indexOf(n))return i=!0,!1}),i};return t&&e.isPlainObject(r)&&(t=t.toLowerCase(),i=s(r.allow),a=s(r.deny),"allow"===r.firstOrder?(o=!1,a||i!==!0||(o=!0)):(o=!0,a!==!0||i||(o=!1))),o},sequence:function(e){var t=e.length,n=function(t,i){return++i,e[i]?n(t.then(e[i]),i):t};return t>1?n(e[0](),0):e[0]()},reloadContents:function(t){var n,i=e.Deferred();try{n=e('<iframe width="1" height="1" scrolling="no" frameborder="no" style="position:absolute; top:-1px; left:-1px" crossorigin="use-credentials">').attr("src",t).one("load",function(){var n=e(this);try{this.contentDocument.location.reload(!0),n.one("load",function(){n.remove(),i.resolve()})}catch(a){n.attr("src","").attr("src",t).one("load",function(){n.remove(),i.resolve()})}}).appendTo("body")}catch(a){n&&n.remove(),i.reject()}return i},makeNetmountOptionOauth:function(t,n,i,a){var o,r="boolean"==typeof a?a:null,s=Object.assign({noOffline:!1,root:"root",pathI18n:"folderId",folders:!0},null===r?a||{}:{noOffline:r}),l=function(n,a,r){var d,p=this,u=Object.keys(e.isPlainObject(r)?r:{}).length;a.next().remove(),u&&(d=e('<select class="ui-corner-all elfinder-tabstop" style="max-width:200px;">').append(e(e.map(r,function(e,t){return'<option value="'+n.escape((t+"").trim())+'">'+n.escape(e)+"</option>"}).join(""))).on("change click",function(a){var r,d=e(this),u=d.val();p.inputs.path.val(u),!s.folders||"change"!==a.type&&d.data("current")===u||(d.next().remove(),d.data("current",u),u!=s.root&&(r=c(),o&&"pending"===o.state()&&n.abortXHR(o,{quiet:!0,abort:!0}),d.after(r),o=n.request({data:{cmd:"netmount",protocol:t,host:i,user:"init",path:u,pass:"folders"},preventDefault:!0}).done(function(e){l.call(p,n,d,e.folders)}).always(function(){n.abortXHR(o,{quiet:!0}),r.remove()}).xhr))}),a.after(e("<div></div>").append(d)).closest(".ui-dialog").trigger("tabstopsInit"),d.trigger("focus"))},c=function(){return e('<div class="elfinder-netmount-spinner"></div>').append('<span class="elfinder-spinner"></span>')};return{vars:{},name:n,inputs:{offline:e('<input type="checkbox"/>').on("change",function(){e(this).parents("table.elfinder-netmount-tb").find("select:first").trigger("change","reset")}),host:e('<span><span class="elfinder-spinner"></span></span><input type="hidden"/>'),path:e('<input type="text" value="'+s.root+'"/>'),user:e('<input type="hidden"/>'),pass:e('<input type="hidden"/>'),mnt2res:e('<input type="hidden"/>')},select:function(n,a,o){var r=this.inputs,l=r.offline,c=e(r.host[0]),d=o||null;this.vars.mbtn=r.host.closest(".ui-dialog").children(".ui-dialog-buttonpane:first").find("button.elfinder-btncnt-0"),c.data("inrequest")||!c.find("span.elfinder-spinner").length&&"reset"!==d&&("winfocus"!==d||c.siblings("span.elfinder-button-icon-reload").length)?(l.closest("tr")[s.noOffline||r.user.val()?"hide":"show"](),c.data("funcexpup")&&c.data("funcexpup")()):(1===l.parent().children().length&&(r.path.parent().prev().html(n.i18n(s.pathI18n)),l.attr("title",n.i18n("offlineAccess")),l.uniqueId().after(e("<label></label>").attr("for",l.attr("id")).html(" "+n.i18n("offlineAccess")))),c.data("inrequest",!0).empty().addClass("elfinder-spinner").parent().find("span.elfinder-button-icon").remove(),n.request({data:{cmd:"netmount",protocol:t,host:i,user:"init",options:{id:n.id,offline:l.prop("checked")?1:0,pass:r.host[1].value}},preventDefault:!0}).done(function(e){c.removeClass("elfinder-spinner").html(e.body.replace(/\{msg:([^}]+)\}/g,function(e,t){return n.i18n(t,i)}))}),s.noOffline&&l.closest("tr").hide()),this.vars.mbtn[e(r.host[1]).val()?"show":"hide"]()},done:function(n,a){var o,r=this.inputs,c=this.protocol,d=e(r.host[0]),p=e(r.host[1]),u="&nbsp;",h=this.vars,f=function(){h.oauthW&&!document.hasFocus()&&--h.chkCnt&&(c.trigger("change","winfocus"),h.tm=setTimeout(f,3e3))};if(s.noOffline&&r.offline.closest("tr").hide(),"makebtn"==a.mode)d.removeClass("elfinder-spinner").removeData("expires").removeData("funcexpup"),o=r.host.find("input").on("mouseenter mouseleave",function(){e(this).toggleClass("ui-state-hover")}),a.url&&o.on("click",function(){h.tm&&clearTimeout(h.tm),h.oauthW=window.open(a.url),(n.UA.iOS||n.UA.Mac)&&n.isCORS&&!h.chkdone&&(h.chkCnt=60,h.tm=setTimeout(f,5e3))}),p.val(""),r.path.val(s.root).next().remove(),r.user.val(""),r.pass.val(""),!s.noOffline&&r.offline.closest("tr").show(),h.mbtn.hide();else if("folders"==a.mode)a.folders&&l.call(this,n,r.path.nextAll(":last"),a.folders);else{if(h.oauthW&&(h.tm&&clearTimeout(h.tm),h.oauthW.close(),delete h.oauthW,h.chkdone=!0),a.expires&&(u="()",d.data("expires",a.expires)),d.html(i+u).removeClass("elfinder-spinner"),a.expires&&(d.data("funcexpup",function(){var e=Math.floor((d.data("expires")-+new Date/1e3)/60);e<3?d.parent().children(".elfinder-button-icon-reload").click():(d.text(d.text().replace(/\(.*\)/,"("+n.i18n(["minsLeft",e])+")")),setTimeout(function(){d.is(":visible")&&d.data("funcexpup")()},6e4))}),d.data("funcexpup")()),a.reset)return void c.trigger("change","reset");d.parent().append(e('<span class="elfinder-button-icon elfinder-button-icon-reload" title="'+n.i18n("reAuth")+'">').on("click",function(){p.val("reauth"),c.trigger("change","reset")})),p.val(t),h.mbtn.show(),a.folders&&l.call(this,n,r.path,a.folders),a.mnt2res&&r.mnt2res.val("1"),r.user.val("done"),r.pass.val("done"),r.offline.closest("tr").hide()}d.removeData("inrequest")},fail:function(t,n){e(this.inputs.host[0]).removeData("inrequest"),this.protocol.trigger("change","reset")},integrateInfo:s.integrate}},findCwdNodes:function(t,n){var i=this,a=(this.getUI("cwd"),this.cwd().hash),o=e();return n=n||{},e.each(t,function(e,t){if((t.phash===a||i.searchStatus.state>1)&&(o=o.add(i.cwdHash2Elm(t.hash)),n.firstOnly))return!1}),o},convAbsUrl:function(e){if(e.match(/^http/i))return e;if("//"===e.substr(0,2))return window.location.protocol+e;var t,n=window.location.protocol+"//"+window.location.host,i=/[^\/]+\/\.\.\//;for(t="/"===e.substr(0,1)?n+e:n+window.location.pathname.replace(/\/[^\/]+$/,"/")+e,t=t.replace("/./","/");i.test(t);)t=t.replace(i,"");return t},isSameOrigin:function(e){var t;if(e=this.convAbsUrl(e),location.origin&&window.URL)try{return t=new URL(e),location.origin===t.origin}catch(n){}return t=document.createElement("a"),t.href=e,location.protocol===t.protocol&&location.host===t.host&&location.port&&t.port},navHash2Id:function(e){return this.navPrefix+e},navId2Hash:function(e){return"string"==typeof e&&e.substr(this.navPrefix.length)},cwdHash2Id:function(e){return this.cwdPrefix+e},cwdId2Hash:function(e){return"string"==typeof e&&e.substr(this.cwdPrefix.length)},navHash2Elm:function(t){return e(document.getElementById(this.navHash2Id(t)))},cwdHash2Elm:function(t){return e(document.getElementById(this.cwdHash2Id(t)))},isInWindow:function(e,t){var n,i;return!!(n=e.get(0))&&(!(!t&&null===n.offsetParent)&&(i=n.getBoundingClientRect(),!!document.elementFromPoint(i.left,i.top)))},zIndexCalc:function(){var t=this,n=this.getUI(),i=n.css("z-index");i&&"auto"!==i&&"inherit"!==i?t.zIndex=i:n.parents().each(function(n,i){var a=e(i).css("z-index");if("auto"!==a&&"inherit"!==a&&(a=parseInt(a)))return t.zIndex=a,!1})},loadScript:function(t,n,i,a){var o,r,s={dataType:"script",cache:!0},l={},c={};return i=i||{},i.tryRequire&&this.hasRequire?require(t,n,i.error):(o=function(){var t,o,r;e.each(c,function(e,t){if("success"!==t&&"notmodified"!==t)return r=!0,!1}),r?i.error&&"function"==typeof i.error&&i.error({loadResults:c}):"function"==typeof n&&(a&&"undefined"==typeof a.obj[a.name]?(t=a.timeout?a.timeout/10:1,o=setInterval(function(){(--t<0||"undefined"!=typeof a.obj[a.name])&&(clearInterval(o),n())},10)):n())},"tag"===i.loadType?(e("head > script").each(function(){l[this.src]=this}),r=t.length,e.each(t,function(t,n){var a,s=!1;l[n]?(c[t]=l[n]._error||"success",--r<1&&o()):(a=document.createElement("script"),a.charset=i.charset||"UTF-8",e("head").append(a),a.onload=a.onreadystatechange=function(){s||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(s=!0,c[t]="success",--r<1&&o())},a.onerror=function(e){c[t]=a._error=e&&e.type?e.type:"error",--r<1&&o()},a.src=n)})):(i=e.isPlainObject(i)?Object.assign(s,i):s,r=0,function d(n,a){void 0!==n&&(c[r++]=a),t.length?e.ajax(Object.assign({},i,{url:t.shift(),success:d,error:d})):o()}())),this},loadCss:function(t,n){var i,a,o=this;return"string"==typeof t&&(t=[t]),n&&(n.className&&(i=n.className),n.dfd&&n.dfd.promise&&(a=[])),e.each(t,function(t,n){var r;n=o.convAbsUrl(n).replace(/^https?:/i,""),a&&(a[t]=e.Deferred()),e('head > link[href="'+o.escape(n)+'"]').length?a&&a[t].resolve():(r=document.createElement("link"),r.type="text/css",r.rel="stylesheet",r.href=n,i&&(r.className=i),a&&(r.onload=function(){a[t].resolve()},r.onerror=function(){a[t].reject()}),e("head").append(r))}),a&&e.when.apply(null,a).done(function(){n.dfd.resolve()}).fail(function(){n.dfd.reject()}),this},asyncJob:function(t,n,i){var a,o,r=e.Deferred(),s=!1,l=Object.assign({interval:0,numPerOnce:1},i||{}),c=[],d=[],p=[];return r._abort=function(e){o&&clearTimeout(o),d=[],s=!0,"pending"===r.state()&&r[e?"resolve":"reject"](c)},r.fail(function(){r._abort()}).always(function(){r._abort=function(){}}),"function"==typeof t&&Array.isArray(n)?(d=n.concat(),a=function(){var e,n,i;if(!s){for(p=d.splice(0,l.numPerOnce),n=p.length,e=0;e<n&&!s;e++)i=t(p[e]),null!==i&&c.push(i);s||(d.length?o=setTimeout(a,l.interval):r.resolve(c))}},d.length?o=setTimeout(a,0):r.resolve(c)):r.reject(),r},getSize:function(t){var n=this,i=[],a=t.length,o=e.Deferred().fail(function(){e.each(i,function(e,t){t&&(t.syncOnFail&&t.syncOnFail(!1),t.reject())})}),r=function(t){var i=[];return"directory"===t.mime&&e.each(n.leafRoots,function(e,a){var o;if(e===t.hash)i.push.apply(i,a);else for(o=(n.file(e)||{}).phash;o;)o===t.hash&&i.push.apply(i,a),
o=(n.file(o)||{}).phash}),i},s=function(t){var i=e.Deferred(),a=n.file(t),o=a?a.phash:t;return o&&!n.file(o)?n.request({data:{cmd:"parents",target:o},preventFail:!0}).done(function(){n.one("parentsdone",function(){i.resolve()})}).fail(function(){i.resolve()}):i.resolve(),i},l=function(){var t=e.Deferred(),i=Object.keys(n.leafRoots).length;return i>0?e.each(n.leafRoots,function(e){s(e).done(function(){--i,i<1&&t.resolve()})}):t.resolve(),t};return n.autoSync("stop"),l().done(function(){var s=[],l={},c=[],d=[],p={};e.each(t,function(){s.push.apply(s,r(n.file(this)))}),t.push.apply(t,s),e.each(t,function(){var t=n.root(this),i=n.file(this);i&&(i.sizeInfo||"directory"!==i.mime)?d.push(e.Deferred().resolve(i.sizeInfo?i.sizeInfo:{size:i.size,dirCnt:0,fileCnt:1})):l[t]?l[t].push(this.toString()):l[t]=[this.toString()]}),e.each(l,function(){var e=c.length;1===this.length&&(p[e]=this[0]),c.push(n.request({data:{cmd:"size",targets:this},preventDefault:!0}))}),i.push.apply(i,c),c.push.apply(c,d),e.when.apply(e,c).fail(function(){o.reject()}).done(function(){var t,i,r,s=function(t,i){var a;(a=n.file(t))&&(a.sizeInfo={isCache:!0},e.each(["size","dirCnt","fileCnt"],function(){a.sizeInfo[this]=i[this]||0}),a.size=parseInt(a.sizeInfo.size),m.push(a))},l=0,c=0,d=0,u=arguments.length,h=[],f="",m=[];for(t=0;t<u;t++)r=arguments[t],i=null,r.isCache||(p[t]&&(i=n.file(p[t]))?s(p[t],r):r.sizes&&e.isPlainObject(r.sizes)&&e.each(r.sizes,function(e,t){s(e,t)})),l+=parseInt(r.size),c!==!1&&("undefined"==typeof r.fileCnt?c=!1:c+=parseInt(r.fileCnt||0)),d!==!1&&("undefined"==typeof r.dirCnt?d=!1:d+=parseInt(r.dirCnt||0));m.length&&n.change({changed:m}),d!==!1&&h.push(n.i18n("folders")+": "+(d-(a>1?0:1))),c!==!1&&h.push(n.i18n("files")+": "+c),h.length&&(f="<br>"+h.join(", ")),o.resolve({size:l,fileCnt:c,dirCnt:d,formated:(l>=0?n.formatSize(l):n.i18n("unknown"))+f})}),n.autoSync()}),o},wkObjUrl:null,getWorker:function(e){function t(){self.onmessage=function(e){var t=e.data;try{if(self.data=t.data,t.scripts)for(var n=0;n<t.scripts.length;n++)importScripts(t.scripts[n]);self.postMessage(self.res)}catch(e){self.postMessage({error:e.toString()})}}}var n;try{this.wkObjUrl||(this.wkObjUrl=(window.URL||window.webkitURL).createObjectURL(new Blob([t.toString().replace(/\s+/g," ").replace(/ *([^\w]) */g,"$1").replace(/^function\b.+?\{|\}$/g,"")],{type:"text/javascript"}))),n=new Worker(this.wkObjUrl,e)}catch(i){this.debug("error",i.toString())}return n},getWorkerUrl:function(e){return this.convAbsUrl(this.workerBaseUrl+e)},getTheme:function(t){var n,i,a=this,o=e.Deferred(),r=function(t,n){return n||(n=a.convAbsUrl(a.baseUrl)),Array.isArray(t)?e.map(t,function(e){return r(e,n)}):t.match(/^(?:http|\/\/)/i)?t:n+t.replace(/^(?:\.\/|\/)/,"")};return t&&(n=a.options.themes[t])?"string"==typeof n?(url=r(n),(i=url.match(/^(.+\/)[^\/]+\.json$/i))?e.getJSON(url).done(function(e){n=e,n.id=t,n.cssurls&&(n.cssurls=r(n.cssurls,i[1])),n.image&&(n.image=r(n.image,i[1])),o.resolve(n)}).fail(function(){o.reject()}):o.resolve({id:t,name:t,cssurls:[url]})):e.isPlainObject(n)&&n.cssurls?(n.id=t,n.cssurls=r(n.cssurls),Array.isArray(n.cssurls)||(n.cssurls=[n.cssurls]),n.name||(n.name=t),o.resolve(n)):o.reject():o.reject(),o},changeTheme:function(t){var n=this;return t&&(!n.options.themes[t]||n.theme&&n.theme.id===t?"default"===t&&n.theme&&"default"!==n.theme.id&&(e("head>link.elfinder-theme-ext").remove(),n.theme=null,n.trigger&&n.trigger("themechange")):n.getTheme(t).done(function(t){t.cssurls&&(e("head>link.elfinder-theme-ext").remove(),n.loadCss(t.cssurls,{className:"elfinder-theme-ext",dfd:e.Deferred().done(function(){n.theme=t,n.trigger&&n.trigger("themechange")})}))})),this},applyLeafRootStats:function(t,n){var i=this,a=n?t:i.file(t.hash)||t,o=a.ts,r=!1;return!n&&t._realStats||(t._realStats={locked:t.locked||0,dirs:t.dirs||0,ts:t.ts}),t.locked=1,a.locked||(r=!0),t.dirs=1,a.dirs||(r=!0),e.each(i.leafRoots[t.hash],function(){var e=i.file(this);e&&e.ts&&(t.ts||0)<e.ts&&(t.ts=e.ts)}),o!==t.ts&&(r=!0),r},abortXHR:function(e,t){var n=t||{};e&&(n.quiet&&(e.quiet=!0),n.abort&&e._requestId&&this.request({data:{cmd:"abort",id:e._requestId},preventDefault:!0}),e.abort(),e=void 0)},setCustomHeaderByXhr:function(t){var n=this;t.getResponseHeader&&n.parrotHeaders&&n.parrotHeaders.length&&e.each(n.parrotHeaders,function(e,i){var a=t.getResponseHeader(i);a?(n.customHeaders[i]=a,n.sessionStorage("core-ph:"+i,a)):"string"==typeof a&&(delete n.customHeaders[i],n.sessionStorage("core-ph:"+i,null))})},hasParrotHeaders:function(){var e=!1,t=this.parrotHeaders;if(Object.keys(this.customHeaders).length)for(var n=0;n<t.length;n++)if(this.customHeaders[t[n]]){e=!0;break}return e},getRequestId:function(){return(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16)},arrayFlip:function(t,n){var i,a={},o=e.isArray(t);for(i in t)(o||t.hasOwnProperty(i))&&(a[t[i]]=n||i);return a},splitFileExtention:function(e){var t;return(t=e.match(/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i))?("undefined"==typeof t[1]&&(t[1]=""),[t[1],t[2]]):[e,""]},sliceArrayBuffer:function(e,t){for(var n=[],i=0;i*t<e.byteLength;)n.push(e.slice(i*t,(i+1)*t)),i++;return n},arrayBufferToBase64:function(e){if(!window.btoa)return"";var t=new Uint8Array(e),n=Array.prototype.slice.call(t),i=n.map(function(e){return String.fromCharCode(e)});return window.btoa(i.join(""))},log:function(e){return window.console&&window.console.log&&window.console.log(e),this},debug:function(t,n){var i,a,o=this,r=this.options.debug,s=this.options.toastBackendWarn;return"backend-error"===t?(!this.cwd().hash||r&&("all"===r||r["backend-error"]))&&(n=Array.isArray(n)?n:[n],this.error(n)):"backend-warning"===t?(a=!0,s&&(i=e.isPlainObject(s)?s:{},e.each(Array.isArray(n)?n:[n],function(e,t){o.toast(Object.assign({mode:"warning",msg:t},i))}))):"backend-debug"===t&&this.trigger("backenddebug",n),(a||r&&("all"===r||r[t]))&&window.console&&window.console.log&&window.console.log("elfinder debug: ["+t+"] ["+this.id+"]",n),this},responseDebug:function(e){var t,n=e.debug;n&&(t=this.options.debug,t&&"all"===t||(t||(t=this.options.debug={}),t["backend-error"]=!0,t.warning=!0),n.mountErrors&&("string"==typeof n.mountErrors||Array.isArray(n.mountErrors)&&n.mountErrors.length)&&this.debug("backend-error",n.mountErrors),n.backendErrors&&("string"==typeof n.backendErrors||Array.isArray(n.backendErrors)&&n.backendErrors.length)&&this.debug("backend-warning",n.backendErrors))},time:function(e){window.console&&window.console.time&&window.console.time(e)},timeEnd:function(e){window.console&&window.console.timeEnd&&window.console.timeEnd(e)}},Object.keys||(Object.keys=function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),n=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=n.length;return function(a){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError("Object.keys called on non-object");var o=[];for(var r in a)e.call(a,r)&&o.push(r);if(t)for(var s=0;s<i;s++)e.call(a,n[s])&&o.push(n[s]);return o}}()),Array.isArray||(Array.isArray=function(e){return jQuery.isArray(e)}),Object.assign||(Object.assign=function(){return jQuery.extend.apply(null,arguments)}),String.prototype.repeat||(String.prototype.repeat=function(e){"use strict";if(null==this)throw new TypeError("can't convert "+this+" to object");var t=""+this;if(e=+e,e!=e&&(e=0),e<0)throw new RangeError("repeat count must be non-negative");if(e==1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0==t.length||0==e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var n="",i=0;i<e;i++)n+=t;return n}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),function(){try{return void Array.apply(null,{})}catch(e){}var t=Object.prototype.toString,n="[object Array]",i=Function.prototype.apply,a=Array.prototype.slice;Function.prototype.apply=function(e,o){return i.call(this,e,t.call(o)===n?o:a.call(o))}}(),Array.from||(Array.from=function(e){return 1===e.length?[e[0]]:Array.apply(null,e)}),window.cancelAnimationFrame||!function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,n){var i=(new Date).getTime(),a=Math.max(0,16-(i-e)),o=window.setTimeout(function(){t(i+a)},a);return e=i+a,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),i.prototype.version="2.1.66",function(){if(e.ui&&e.ui.ddmanager){var t=e.ui.ddmanager.prepareOffsets;e.ui.ddmanager.prepareOffsets=function(n,i){var a=function(e){if(e.is(":hidden"))return!0;var t=e[0].getBoundingClientRect();return!document.elementFromPoint(t.left,t.top)&&!document.elementFromPoint(t.left+t.width,t.top+t.height)};if("mousedown"===i.type||n.options.elfRefresh){var o,r,s=e.ui.ddmanager.droppables[n.options.scope]||[],l=s.length;for(o=0;o<l;o++)r=s[o],r.options.autoDisable&&(!r.options.disabled||r.options.autoDisable>1)&&(r.options.disabled=a(r.element),r.options.autoDisable=r.options.disabled?2:1)}return t(n,i)}}}(),function(e,t){e.ajaxTransport("+binary",function(e,t,n){if(window.FormData&&(e.dataType&&"binary"==e.dataType||e.data&&(window.ArrayBuffer&&e.data instanceof ArrayBuffer||window.Blob&&e.data instanceof Blob))){var i;return{send:function(t,n){var a,o=e.responseType||"blob",r=e.xhr();if(r.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)r[a]=e.xhrFields[a];e.mimeType&&r.overrideMimeType&&r.overrideMimeType(e.mimeType),e.crossDomain||t["X-Requested-With"]||(t["X-Requested-With"]="XMLHttpRequest");for(a in t)r.setRequestHeader(a,t[a]);i=function(t){return function(){if(i)if(i=r.onload=r.onerror=r.onabort=r.ontimeout=null,"abort"===t)r.abort();else if("error"===t)n(r.status,r.statusText);else{var a={};a[e.dataType]=r.response,n(r.status,r.statusText,a,r.getAllResponseHeaders())}}},r.onload=i(),r.onabort=r.onerror=r.ontimeout=i("error"),i=i("abort");try{r.responseType=o,r.send(e.data||null)}catch(s){if(i)throw s}},abort:function(){i&&i()}}}})}(window.jQuery),function(e){function t(t,n){if(!(t.originalEvent.touches.length>1)){e(t.currentTarget).hasClass("touch-punch-keep-default")||t.preventDefault();var i=t.originalEvent.changedTouches[0],a=document.createEvent("MouseEvents");a.initMouseEvent(n,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),t.target.dispatchEvent(a)}}if(e.support.touch="ontouchend"in document,e.support.touch){var n,i,a,o=e.ui.mouse.prototype,r=o._mouseInit,s=o._mouseDestroy;o._touchStart=function(e){var o=this;!n&&o._mouseCapture(e.originalEvent.changedTouches[0])&&(i=e.originalEvent.changedTouches[0].screenX.toFixed(0),a=e.originalEvent.changedTouches[0].screenY.toFixed(0),n=!0,o._touchMoved=!1,t(e,"mouseover"),t(e,"mousemove"),t(e,"mousedown"))},o._touchMove=function(e){if(n){var o=e.originalEvent.changedTouches[0].screenX.toFixed(0),r=e.originalEvent.changedTouches[0].screenY.toFixed(0);Math.abs(i-o)<=4&&Math.abs(a-r)<=4||(this._touchMoved=!0,t(e,"mousemove"))}},o._touchEnd=function(e){n&&(t(e,"mouseup"),t(e,"mouseout"),this._touchMoved||t(e,"click"),n=!1,this._touchMoved=!1)},o._mouseInit=function(){var t=this;t.element.hasClass("touch-punch")&&t.element.on({touchstart:e.proxy(t,"_touchStart"),touchmove:e.proxy(t,"_touchMove"),touchend:e.proxy(t,"_touchEnd")}),r.call(t)},o._mouseDestroy=function(){var t=this;t.element.hasClass("touch-punch")&&t.element.off({touchstart:e.proxy(t,"_touchStart"),touchmove:e.proxy(t,"_touchMove"),touchend:e.proxy(t,"_touchEnd")}),s.call(t)}}}(jQuery),e.fn.elfinder=function(t,n){return"instance"===t?this.getElFinder():this.each(function(){var a,o="string"==typeof t?t:"",r="function"==typeof n?n:void 0,s=this.elfinder;if(s)switch(o){case"close":case"hide":s.hide();break;case"open":case"show":s.show();break;case"destroy":s.destroy();break;case"reload":case"restart":s&&(a=e.extend(!0,s.options,e.isPlainObject(n)?n:{}),r=s.bootCallback,s.reloadCallback&&"function"==typeof s.reloadCallback?s.reloadCallback(a,r):(s.destroy(),new i(this,a,r)))}else e.isPlainObject(t)&&new i(this,t,r)})},e.fn.getElFinder=function(){var e;return this.each(function(){if(this.elfinder)return e=this.elfinder,!1}),e},e.fn.elfUiWidgetInstance=function(e){try{return this[e]("instance")}catch(t){var n=this.data("ui-"+e);return n&&"object"==typeof n&&n.widgetFullName==="ui-"+e?n:null}},e.fn.scrollRight||e.fn.extend({scrollRight:function(e){var t=this.get(0);return void 0===e?Math.max(0,t.scrollWidth-(t.scrollLeft+t.clientWidth)):this.scrollLeft(t.scrollWidth-t.clientWidth-e)}}),e.fn.scrollBottom||e.fn.extend({scrollBottom:function(e){var t=this.get(0);return void 0===e?Math.max(0,t.scrollHeight-(t.scrollTop+t.clientHeight)):this.scrollTop(t.scrollHeight-t.clientHeight-e)}}),i.prototype.mimeTypes={"application/x-executable":"exe","application/x-jar":"jar","application/x-gzip":"gz","application/x-bzip2":"tbz","application/x-rar":"rar","text/x-php":"php","text/javascript":"js","application/rtfd":"rtfd","text/x-python":"py","text/x-ruby":"rb","text/x-shellscript":"sh","text/x-perl":"pl","text/xml":"xml","text/x-csrc":"c","text/x-chdr":"h","text/x-c++src":"cpp","text/x-c++hdr":"hh","text/x-markdown":"md","text/x-yaml":"yml","image/x-ms-bmp":"bmp","image/x-targa":"tga","image/xbm":"xbm","image/pxm":"pxm","audio/wav":"wav","video/x-dv":"dv","video/x-ms-wmv":"wm","video/ogg":"ogm","video/MP2T":"m2ts","application/x-mpegURL":"m3u8","application/dash+xml":"mpd","application/andrew-inset":"ez","application/applixware":"aw","application/atom+xml":"atom","application/atomcat+xml":"atomcat","application/atomsvc+xml":"atomsvc","application/ccxml+xml":"ccxml","application/cdmi-capability":"cdmia","application/cdmi-container":"cdmic","application/cdmi-domain":"cdmid","application/cdmi-object":"cdmio","application/cdmi-queue":"cdmiq","application/cu-seeme":"cu","application/davmount+xml":"davmount","application/docbook+xml":"dbk","application/dssc+der":"dssc","application/dssc+xml":"xdssc","application/ecmascript":"ecma","application/emma+xml":"emma","application/epub+zip":"epub","application/exi":"exi","application/font-tdpfr":"pfr","application/gml+xml":"gml","application/gpx+xml":"gpx","application/gxf":"gxf","application/hyperstudio":"stk","application/inkml+xml":"ink","application/ipfix":"ipfix","application/java-serialized-object":"ser","application/java-vm":"class","application/json":"json","application/jsonml+json":"jsonml","application/lost+xml":"lostxml","application/mac-binhex40":"hqx","application/mac-compactpro":"cpt","application/mads+xml":"mads","application/marc":"mrc","application/marcxml+xml":"mrcx","application/mathematica":"ma","application/mathml+xml":"mathml","application/mbox":"mbox","application/mediaservercontrol+xml":"mscml","application/metalink+xml":"metalink","application/metalink4+xml":"meta4","application/mets+xml":"mets","application/mods+xml":"mods","application/mp21":"m21","application/mp4":"mp4s","application/msword":"doc","application/mxf":"mxf","application/octet-stream":"bin","application/oda":"oda","application/oebps-package+xml":"opf","application/ogg":"ogx","application/omdoc+xml":"omdoc","application/onenote":"onetoc","application/oxps":"oxps","application/patch-ops-error+xml":"xer","application/pdf":"pdf","application/pgp-encrypted":"pgp","application/pgp-signature":"asc","application/pics-rules":"prf","application/pkcs10":"p10","application/pkcs7-mime":"p7m","application/pkcs7-signature":"p7s","application/pkcs8":"p8","application/pkix-attr-cert":"ac","application/pkix-cert":"cer","application/pkix-crl":"crl","application/pkix-pkipath":"pkipath","application/pkixcmp":"pki","application/pls+xml":"pls","application/postscript":"ai","application/prs.cww":"cww","application/pskc+xml":"pskcxml","application/rdf+xml":"rdf","application/reginfo+xml":"rif","application/relax-ng-compact-syntax":"rnc","application/resource-lists+xml":"rl","application/resource-lists-diff+xml":"rld","application/rls-services+xml":"rs","application/rpki-ghostbusters":"gbr","application/rpki-manifest":"mft","application/rpki-roa":"roa","application/rsd+xml":"rsd","application/rss+xml":"rss","application/rtf":"rtf","application/sbml+xml":"sbml","application/scvp-cv-request":"scq","application/scvp-cv-response":"scs","application/scvp-vp-request":"spq","application/scvp-vp-response":"spp","application/sdp":"sdp","application/set-payment-initiation":"setpay","application/set-registration-initiation":"setreg","application/shf+xml":"shf","application/smil+xml":"smi","application/sparql-query":"rq","application/sparql-results+xml":"srx","application/srgs":"gram","application/srgs+xml":"grxml","application/sru+xml":"sru","application/ssdl+xml":"ssdl","application/ssml+xml":"ssml","application/tei+xml":"tei","application/thraud+xml":"tfi","application/timestamped-data":"tsd","application/vnd.3gpp.pic-bw-large":"plb","application/vnd.3gpp.pic-bw-small":"psb","application/vnd.3gpp.pic-bw-var":"pvb","application/vnd.3gpp2.tcap":"tcap","application/vnd.3m.post-it-notes":"pwn","application/vnd.accpac.simply.aso":"aso","application/vnd.accpac.simply.imp":"imp","application/vnd.acucobol":"acu","application/vnd.acucorp":"atc","application/vnd.adobe.air-application-installer-package+zip":"air","application/vnd.adobe.formscentral.fcdt":"fcdt","application/vnd.adobe.fxp":"fxp","application/vnd.adobe.xdp+xml":"xdp","application/vnd.adobe.xfdf":"xfdf","application/vnd.ahead.space":"ahead","application/vnd.airzip.filesecure.azf":"azf","application/vnd.airzip.filesecure.azs":"azs","application/vnd.amazon.ebook":"azw","application/vnd.americandynamics.acc":"acc","application/vnd.amiga.ami":"ami","application/vnd.android.package-archive":"apk","application/vnd.anser-web-certificate-issue-initiation":"cii","application/vnd.anser-web-funds-transfer-initiation":"fti","application/vnd.antix.game-component":"atx","application/vnd.apple.installer+xml":"mpkg","application/vnd.aristanetworks.swi":"swi","application/vnd.astraea-software.iota":"iota","application/vnd.audiograph":"aep","application/vnd.blueice.multipass":"mpm","application/vnd.bmi":"bmi","application/vnd.businessobjects":"rep","application/vnd.chemdraw+xml":"cdxml","application/vnd.chipnuts.karaoke-mmd":"mmd","application/vnd.cinderella":"cdy","application/vnd.claymore":"cla","application/vnd.cloanto.rp9":"rp9","application/vnd.clonk.c4group":"c4g","application/vnd.cluetrust.cartomobile-config":"c11amc","application/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application/vnd.commonspace":"csp","application/vnd.contact.cmsg":"cdbcmsg","application/vnd.cosmocaller":"cmc","application/vnd.crick.clicker":"clkx","application/vnd.crick.clicker.keyboard":"clkk","application/vnd.crick.clicker.palette":"clkp","application/vnd.crick.clicker.template":"clkt","application/vnd.crick.clicker.wordbank":"clkw","application/vnd.criticaltools.wbs+xml":"wbs","application/vnd.ctc-posml":"pml","application/vnd.cups-ppd":"ppd","application/vnd.curl.car":"car","application/vnd.curl.pcurl":"pcurl","application/vnd.dart":"dart","application/vnd.data-vision.rdz":"rdz","application/vnd.dece.data":"uvf","application/vnd.dece.ttml+xml":"uvt","application/vnd.dece.unspecified":"uvx","application/vnd.dece.zip":"uvz","application/vnd.denovo.fcselayout-link":"fe_launch","application/vnd.dna":"dna","application/vnd.dolby.mlp":"mlp","application/vnd.dpgraph":"dpg","application/vnd.dreamfactory":"dfac","application/vnd.ds-keypoint":"kpxx","application/vnd.dvb.ait":"ait","application/vnd.dvb.service":"svc","application/vnd.dynageo":"geo","application/vnd.ecowin.chart":"mag","application/vnd.enliven":"nml","application/vnd.epson.esf":"esf","application/vnd.epson.msf":"msf","application/vnd.epson.quickanime":"qam","application/vnd.epson.salt":"slt","application/vnd.epson.ssf":"ssf","application/vnd.eszigno3+xml":"es3","application/vnd.ezpix-album":"ez2","application/vnd.ezpix-package":"ez3","application/vnd.fdf":"fdf","application/vnd.fdsn.mseed":"mseed","application/vnd.fdsn.seed":"seed","application/vnd.flographit":"gph","application/vnd.fluxtime.clip":"ftc","application/vnd.framemaker":"fm","application/vnd.frogans.fnc":"fnc","application/vnd.frogans.ltf":"ltf","application/vnd.fsc.weblaunch":"fsc","application/vnd.fujitsu.oasys":"oas","application/vnd.fujitsu.oasys2":"oa2","application/vnd.fujitsu.oasys3":"oa3","application/vnd.fujitsu.oasysgp":"fg5","application/vnd.fujitsu.oasysprs":"bh2","application/vnd.fujixerox.ddd":"ddd","application/vnd.fujixerox.docuworks":"xdw","application/vnd.fujixerox.docuworks.binder":"xbd","application/vnd.fuzzysheet":"fzs","application/vnd.genomatix.tuxedo":"txd","application/vnd.geogebra.file":"ggb","application/vnd.geogebra.tool":"ggt","application/vnd.geometry-explorer":"gex","application/vnd.geonext":"gxt","application/vnd.geoplan":"g2w","application/vnd.geospace":"g3w","application/vnd.gmx":"gmx","application/vnd.google-earth.kml+xml":"kml","application/vnd.google-earth.kmz":"kmz","application/vnd.grafeq":"gqf","application/vnd.groove-account":"gac","application/vnd.groove-help":"ghf","application/vnd.groove-identity-message":"gim","application/vnd.groove-injector":"grv","application/vnd.groove-tool-message":"gtm","application/vnd.groove-tool-template":"tpl","application/vnd.groove-vcard":"vcg","application/vnd.hal+xml":"hal","application/vnd.handheld-entertainment+xml":"zmm","application/vnd.hbci":"hbci","application/vnd.hhe.lesson-player":"les","application/vnd.hp-hpgl":"hpgl","application/vnd.hp-hpid":"hpid","application/vnd.hp-hps":"hps","application/vnd.hp-jlyt":"jlt","application/vnd.hp-pcl":"pcl","application/vnd.hp-pclxl":"pclxl","application/vnd.hydrostatix.sof-data":"sfd-hdstx","application/vnd.ibm.minipay":"mpy","application/vnd.ibm.modcap":"afp","application/vnd.ibm.rights-management":"irm","application/vnd.ibm.secure-container":"sc","application/vnd.iccprofile":"icc","application/vnd.igloader":"igl","application/vnd.immervision-ivp":"ivp","application/vnd.immervision-ivu":"ivu","application/vnd.insors.igm":"igm","application/vnd.intercon.formnet":"xpw","application/vnd.intergeo":"i2g","application/vnd.intu.qbo":"qbo","application/vnd.intu.qfx":"qfx","application/vnd.ipunplugged.rcprofile":"rcprofile","application/vnd.irepository.package+xml":"irp","application/vnd.is-xpr":"xpr","application/vnd.isac.fcs":"fcs","application/vnd.jam":"jam","application/vnd.jcp.javame.midlet-rms":"rms","application/vnd.jisp":"jisp","application/vnd.joost.joda-archive":"joda","application/vnd.kahootz":"ktz","application/vnd.kde.karbon":"karbon","application/vnd.kde.kchart":"chrt","application/vnd.kde.kformula":"kfo","application/vnd.kde.kivio":"flw","application/vnd.kde.kontour":"kon","application/vnd.kde.kpresenter":"kpr","application/vnd.kde.kspread":"ksp","application/vnd.kde.kword":"kwd","application/vnd.kenameaapp":"htke","application/vnd.kidspiration":"kia","application/vnd.kinar":"kne","application/vnd.koan":"skp","application/vnd.kodak-descriptor":"sse","application/vnd.las.las+xml":"lasxml","application/vnd.llamagraphics.life-balance.desktop":"lbd","application/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application/vnd.lotus-1-2-3":123,"application/vnd.lotus-approach":"apr","application/vnd.lotus-freelance":"pre","application/vnd.lotus-notes":"nsf","application/vnd.lotus-organizer":"org","application/vnd.lotus-screencam":"scm","application/vnd.lotus-wordpro":"lwp","application/vnd.macports.portpkg":"portpkg","application/vnd.mcd":"mcd","application/vnd.medcalcdata":"mc1","application/vnd.mediastation.cdkey":"cdkey","application/vnd.mfer":"mwf","application/vnd.mfmp":"mfm","application/vnd.micrografx.flo":"flo","application/vnd.micrografx.igx":"igx","application/vnd.mif":"mif","application/vnd.mobius.daf":"daf","application/vnd.mobius.dis":"dis","application/vnd.mobius.mbk":"mbk","application/vnd.mobius.mqy":"mqy","application/vnd.mobius.msl":"msl","application/vnd.mobius.plc":"plc","application/vnd.mobius.txf":"txf","application/vnd.mophun.application":"mpn","application/vnd.mophun.certificate":"mpc","application/vnd.mozilla.xul+xml":"xul","application/vnd.ms-artgalry":"cil","application/vnd.ms-cab-compressed":"cab","application/vnd.ms-excel":"xls","application/vnd.ms-excel.addin.macroenabled.12":"xlam","application/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application/vnd.ms-excel.template.macroenabled.12":"xltm","application/vnd.ms-fontobject":"eot","application/vnd.ms-htmlhelp":"chm","application/vnd.ms-ims":"ims","application/vnd.ms-lrm":"lrm","application/vnd.ms-officetheme":"thmx","application/vnd.ms-outlook":"msg","application/vnd.ms-pki.seccat":"cat","application/vnd.ms-pki.stl":"stl","application/vnd.ms-powerpoint":"ppt","application/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application/vnd.ms-powerpoint.template.macroenabled.12":"potm","application/vnd.ms-project":"mpp","application/vnd.ms-word.document.macroenabled.12":"docm","application/vnd.ms-word.template.macroenabled.12":"dotm","application/vnd.ms-works":"wps","application/vnd.ms-wpl":"wpl","application/vnd.ms-xpsdocument":"xps","application/vnd.mseq":"mseq","application/vnd.musician":"mus","application/vnd.muvee.style":"msty","application/vnd.mynfc":"taglet","application/vnd.neurolanguage.nlu":"nlu","application/vnd.nitf":"ntf","application/vnd.noblenet-directory":"nnd","application/vnd.noblenet-sealer":"nns","application/vnd.noblenet-web":"nnw","application/vnd.nokia.n-gage.data":"ngdat","application/vnd.nokia.n-gage.symbian.install":"n-gage","application/vnd.nokia.radio-preset":"rpst","application/vnd.nokia.radio-presets":"rpss","application/vnd.novadigm.edm":"edm","application/vnd.novadigm.edx":"edx","application/vnd.novadigm.ext":"ext","application/vnd.oasis.opendocument.chart":"odc","application/vnd.oasis.opendocument.chart-template":"otc","application/vnd.oasis.opendocument.database":"odb","application/vnd.oasis.opendocument.formula":"odf","application/vnd.oasis.opendocument.formula-template":"odft","application/vnd.oasis.opendocument.graphics":"odg","application/vnd.oasis.opendocument.graphics-template":"otg","application/vnd.oasis.opendocument.image":"odi","application/vnd.oasis.opendocument.image-template":"oti","application/vnd.oasis.opendocument.presentation":"odp","application/vnd.oasis.opendocument.presentation-template":"otp","application/vnd.oasis.opendocument.spreadsheet":"ods","application/vnd.oasis.opendocument.spreadsheet-template":"ots","application/vnd.oasis.opendocument.text":"odt","application/vnd.oasis.opendocument.text-master":"odm","application/vnd.oasis.opendocument.text-template":"ott","application/vnd.oasis.opendocument.text-web":"oth","application/vnd.olpc-sugar":"xo","application/vnd.oma.dd2+xml":"dd2","application/vnd.openofficeorg.extension":"oxt","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application/vnd.openxmlformats-officedocument.presentationml.template":"potx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application/vnd.osgeo.mapguide.package":"mgp","application/vnd.osgi.dp":"dp","application/vnd.osgi.subsystem":"esa","application/vnd.palm":"pdb","application/vnd.pawaafile":"paw","application/vnd.pg.format":"str","application/vnd.pg.osasli":"ei6","application/vnd.picsel":"efif","application/vnd.pmi.widget":"wg","application/vnd.pocketlearn":"plf","application/vnd.powerbuilder6":"pbd","application/vnd.previewsystems.box":"box","application/vnd.proteus.magazine":"mgz","application/vnd.publishare-delta-tree":"qps","application/vnd.pvi.ptid1":"ptid","application/vnd.quark.quarkxpress":"qxd","application/vnd.realvnc.bed":"bed","application/vnd.recordare.musicxml":"mxl","application/vnd.recordare.musicxml+xml":"musicxml","application/vnd.rig.cryptonote":"cryptonote","application/vnd.rim.cod":"cod","application/vnd.rn-realmedia":"rm","application/vnd.rn-realmedia-vbr":"rmvb","application/vnd.route66.link66+xml":"link66","application/vnd.sailingtracker.track":"st","application/vnd.seemail":"see","application/vnd.sema":"sema","application/vnd.semd":"semd","application/vnd.semf":"semf","application/vnd.shana.informed.formdata":"ifm","application/vnd.shana.informed.formtemplate":"itp","application/vnd.shana.informed.interchange":"iif","application/vnd.shana.informed.package":"ipk","application/vnd.simtech-mindmapper":"twd","application/vnd.smaf":"mmf","application/vnd.smart.teacher":"teacher","application/vnd.solent.sdkm+xml":"sdkm","application/vnd.spotfire.dxp":"dxp","application/vnd.spotfire.sfs":"sfs","application/vnd.stardivision.calc":"sdc","application/vnd.stardivision.draw":"sda","application/vnd.stardivision.impress":"sdd","application/vnd.stardivision.math":"smf","application/vnd.stardivision.writer":"sdw","application/vnd.stardivision.writer-global":"sgl","application/vnd.stepmania.package":"smzip","application/vnd.stepmania.stepchart":"sm","application/vnd.sun.xml.calc":"sxc","application/vnd.sun.xml.calc.template":"stc","application/vnd.sun.xml.draw":"sxd","application/vnd.sun.xml.draw.template":"std","application/vnd.sun.xml.impress":"sxi","application/vnd.sun.xml.impress.template":"sti","application/vnd.sun.xml.math":"sxm","application/vnd.sun.xml.writer":"sxw","application/vnd.sun.xml.writer.global":"sxg","application/vnd.sun.xml.writer.template":"stw","application/vnd.sus-calendar":"sus","application/vnd.svd":"svd","application/vnd.symbian.install":"sis","application/vnd.syncml+xml":"xsm","application/vnd.syncml.dm+wbxml":"bdm","application/vnd.syncml.dm+xml":"xdm","application/vnd.tao.intent-module-archive":"tao","application/vnd.tcpdump.pcap":"pcap","application/vnd.tmobile-livetv":"tmo","application/vnd.trid.tpt":"tpt","application/vnd.triscape.mxs":"mxs","application/vnd.trueapp":"tra","application/vnd.ufdl":"ufd","application/vnd.uiq.theme":"utz","application/vnd.umajin":"umj","application/vnd.unity":"unityweb","application/vnd.uoml+xml":"uoml","application/vnd.vcx":"vcx","application/vnd.visio":"vsd","application/vnd.visionary":"vis","application/vnd.vsf":"vsf","application/vnd.wap.wbxml":"wbxml","application/vnd.wap.wmlc":"wmlc","application/vnd.wap.wmlscriptc":"wmlsc","application/vnd.webturbo":"wtb","application/vnd.wolfram.player":"nbp","application/vnd.wordperfect":"wpd","application/vnd.wqd":"wqd","application/vnd.wt.stf":"stf","application/vnd.xara":"xar","application/vnd.xfdl":"xfdl","application/vnd.yamaha.hv-dic":"hvd","application/vnd.yamaha.hv-script":"hvs","application/vnd.yamaha.hv-voice":"hvp","application/vnd.yamaha.openscoreformat":"osf","application/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application/vnd.yamaha.smaf-audio":"saf","application/vnd.yamaha.smaf-phrase":"spf","application/vnd.yellowriver-custom-menu":"cmp","application/vnd.zul":"zir","application/vnd.zzazz.deck+xml":"zaz","application/voicexml+xml":"vxml","application/widget":"wgt","application/winhlp":"hlp","application/wsdl+xml":"wsdl","application/wspolicy+xml":"wspolicy",
"application/x-7z-compressed":"7z","application/x-abiword":"abw","application/x-ace-compressed":"ace","application/x-apple-diskimage":"dmg","application/x-authorware-bin":"aab","application/x-authorware-map":"aam","application/x-authorware-seg":"aas","application/x-bcpio":"bcpio","application/x-bittorrent":"torrent","application/x-blorb":"blb","application/x-bzip":"bz","application/x-cbr":"cbr","application/x-cdlink":"vcd","application/x-cfs-compressed":"cfs","application/x-chat":"chat","application/x-chess-pgn":"pgn","application/x-conference":"nsc","application/x-cpio":"cpio","application/x-csh":"csh","application/x-debian-package":"deb","application/x-dgc-compressed":"dgc","application/x-director":"dir","application/x-doom":"wad","application/x-dtbncx+xml":"ncx","application/x-dtbook+xml":"dtb","application/x-dtbresource+xml":"res","application/x-dvi":"dvi","application/x-envoy":"evy","application/x-eva":"eva","application/x-font-bdf":"bdf","application/x-font-ghostscript":"gsf","application/x-font-linux-psf":"psf","application/x-font-pcf":"pcf","application/x-font-snf":"snf","application/x-font-type1":"pfa","application/x-freearc":"arc","application/x-futuresplash":"spl","application/x-gca-compressed":"gca","application/x-glulx":"ulx","application/x-gnumeric":"gnumeric","application/x-gramps-xml":"gramps","application/x-gtar":"gtar","application/x-hdf":"hdf","application/x-install-instructions":"install","application/x-iso9660-image":"iso","application/x-java-jnlp-file":"jnlp","application/x-latex":"latex","application/x-lzh-compressed":"lzh","application/x-mie":"mie","application/x-mobipocket-ebook":"prc","application/x-ms-application":"application","application/x-ms-shortcut":"lnk","application/x-ms-wmd":"wmd","application/x-ms-wmz":"wmz","application/x-ms-xbap":"xbap","application/x-msaccess":"mdb","application/x-msbinder":"obd","application/x-mscardfile":"crd","application/x-msclip":"clp","application/x-msdownload":"dll","application/x-msmediaview":"mvb","application/x-msmetafile":"wmf","application/x-msmoney":"mny","application/x-mspublisher":"pub","application/x-msschedule":"scd","application/x-msterminal":"trm","application/x-mswrite":"wri","application/x-netcdf":"nc","application/x-nzb":"nzb","application/x-pkcs12":"p12","application/x-pkcs7-certificates":"p7b","application/x-pkcs7-certreqresp":"p7r","application/x-research-info-systems":"ris","application/x-shar":"shar","application/x-shockwave-flash":"swf","application/x-silverlight-app":"xap","application/x-sql":"sql","application/x-stuffit":"sit","application/x-stuffitx":"sitx","application/x-subrip":"srt","application/x-sv4cpio":"sv4cpio","application/x-sv4crc":"sv4crc","application/x-t3vm-image":"t3","application/x-tads":"gam","application/x-tar":"tar","application/x-tcl":"tcl","application/x-tex":"tex","application/x-tex-tfm":"tfm","application/x-texinfo":"texinfo","application/x-tgif":"obj","application/x-ustar":"ustar","application/x-wais-source":"src","application/x-x509-ca-cert":"der","application/x-xfig":"fig","application/x-xliff+xml":"xlf","application/x-xpinstall":"xpi","application/x-xz":"xz","application/x-zmachine":"z1","application/xaml+xml":"xaml","application/xcap-diff+xml":"xdf","application/xenc+xml":"xenc","application/xhtml+xml":"xhtml","application/xml":"xsl","application/xml-dtd":"dtd","application/xop+xml":"xop","application/xproc+xml":"xpl","application/xslt+xml":"xslt","application/xspf+xml":"xspf","application/xv+xml":"mxml","application/yang":"yang","application/yin+xml":"yin","application/zip":"zip","audio/adpcm":"adp","audio/basic":"au","audio/midi":"mid","audio/mp4":"m4a","audio/mpeg":"mpga","audio/ogg":"oga","audio/s3m":"s3m","audio/silk":"sil","audio/vnd.dece.audio":"uva","audio/vnd.digital-winds":"eol","audio/vnd.dra":"dra","audio/vnd.dts":"dts","audio/vnd.dts.hd":"dtshd","audio/vnd.lucent.voice":"lvp","audio/vnd.ms-playready.media.pya":"pya","audio/vnd.nuera.ecelp4800":"ecelp4800","audio/vnd.nuera.ecelp7470":"ecelp7470","audio/vnd.nuera.ecelp9600":"ecelp9600","audio/vnd.rip":"rip","audio/webm":"weba","audio/x-aac":"aac","audio/x-aiff":"aif","audio/x-caf":"caf","audio/x-flac":"flac","audio/x-matroska":"mka","audio/x-mpegurl":"m3u","audio/x-ms-wax":"wax","audio/x-ms-wma":"wma","audio/x-pn-realaudio":"ram","audio/x-pn-realaudio-plugin":"rmp","audio/xm":"xm","chemical/x-cdx":"cdx","chemical/x-cif":"cif","chemical/x-cmdf":"cmdf","chemical/x-cml":"cml","chemical/x-csml":"csml","chemical/x-xyz":"xyz","font/collection":"ttc","font/otf":"otf","font/ttf":"ttf","font/woff":"woff","font/woff2":"woff2","image/cgm":"cgm","image/g3fax":"g3","image/gif":"gif","image/ief":"ief","image/jpeg":"jpeg","image/ktx":"ktx","image/png":"png","image/prs.btif":"btif","image/sgi":"sgi","image/svg+xml":"svg","image/tiff":"tiff","image/vnd.adobe.photoshop":"psd","image/vnd.dece.graphic":"uvi","image/vnd.djvu":"djvu","image/vnd.dvb.subtitle":"sub","image/vnd.dwg":"dwg","image/vnd.dxf":"dxf","image/vnd.fastbidsheet":"fbs","image/vnd.fpx":"fpx","image/vnd.fst":"fst","image/vnd.fujixerox.edmics-mmr":"mmr","image/vnd.fujixerox.edmics-rlc":"rlc","image/vnd.ms-modi":"mdi","image/vnd.ms-photo":"wdp","image/vnd.net-fpx":"npx","image/vnd.wap.wbmp":"wbmp","image/vnd.xiff":"xif","image/webp":"webp","image/x-3ds":"3ds","image/x-cmu-raster":"ras","image/x-cmx":"cmx","image/x-freehand":"fh","image/x-icon":"ico","image/x-mrsid-image":"sid","image/x-pcx":"pcx","image/x-pict":"pic","image/x-portable-anymap":"pnm","image/x-portable-bitmap":"pbm","image/x-portable-graymap":"pgm","image/x-portable-pixmap":"ppm","image/x-rgb":"rgb","image/x-xpixmap":"xpm","image/x-xwindowdump":"xwd","message/rfc822":"eml","model/iges":"igs","model/mesh":"msh","model/vnd.collada+xml":"dae","model/vnd.dwf":"dwf","model/vnd.gdl":"gdl","model/vnd.gtw":"gtw","model/vnd.vtu":"vtu","model/vrml":"wrl","model/x3d+binary":"x3db","model/x3d+vrml":"x3dv","model/x3d+xml":"x3d","text/cache-manifest":"appcache","text/calendar":"ics","text/css":"css","text/csv":"csv","text/html":"html","text/n3":"n3","text/plain":"txt","text/prs.lines.tag":"dsc","text/richtext":"rtx","text/sgml":"sgml","text/tab-separated-values":"tsv","text/troff":"t","text/turtle":"ttl","text/uri-list":"uri","text/vcard":"vcard","text/vnd.curl":"curl","text/vnd.curl.dcurl":"dcurl","text/vnd.curl.mcurl":"mcurl","text/vnd.curl.scurl":"scurl","text/vnd.fly":"fly","text/vnd.fmi.flexstor":"flx","text/vnd.graphviz":"gv","text/vnd.in3d.3dml":"3dml","text/vnd.in3d.spot":"spot","text/vnd.sun.j2me.app-descriptor":"jad","text/vnd.wap.wml":"wml","text/vnd.wap.wmlscript":"wmls","text/x-asm":"s","text/x-c":"cc","text/x-fortran":"f","text/x-java-source":"java","text/x-nfo":"nfo","text/x-opml":"opml","text/x-pascal":"p","text/x-setext":"etx","text/x-sfv":"sfv","text/x-uuencode":"uu","text/x-vcalendar":"vcs","text/x-vcard":"vcf","video/3gpp":"3gp","video/3gpp2":"3g2","video/h261":"h261","video/h263":"h263","video/h264":"h264","video/jpeg":"jpgv","video/jpm":"jpm","video/mj2":"mj2","video/mp4":"mp4","video/mpeg":"mpeg","video/quicktime":"qt","video/vnd.dece.hd":"uvh","video/vnd.dece.mobile":"uvm","video/vnd.dece.pd":"uvp","video/vnd.dece.sd":"uvs","video/vnd.dece.video":"uvv","video/vnd.dvb.file":"dvb","video/vnd.fvt":"fvt","video/vnd.mpegurl":"mxu","video/vnd.ms-playready.media.pyv":"pyv","video/vnd.uvvu.mp4":"uvu","video/vnd.vivo":"viv","video/webm":"webm","video/x-f4v":"f4v","video/x-fli":"fli","video/x-flv":"flv","video/x-m4v":"m4v","video/x-matroska":"mkv","video/x-mng":"mng","video/x-ms-asf":"asf","video/x-ms-vob":"vob","video/x-ms-wmx":"wmx","video/x-ms-wvx":"wvx","video/x-msvideo":"avi","video/x-sgi-movie":"movie","video/x-smv":"smv","x-conference/x-cooltalk":"ice","text/x-sql":"sql","image/x-pixlr-data":"pxd","image/x-adobe-dng":"dng","image/x-sketch":"sketch","image/x-xcf":"xcf","audio/amr":"amr","image/vnd-ms.dds":"dds","application/plt":"plt","application/sat":"sat","application/step":"step","text/x-httpd-cgi":"cgi","text/x-asap":"asp","text/x-jsp":"jsp"},i.prototype._options={cdns:{ace:"https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.2",codemirror:"https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7",ckeditor:"https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.22.1",ckeditor5:"https://cdn.ckeditor.com/ckeditor5/40.2.0",tinymce:"https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.2",simplemde:"https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2",fabric:"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1",fabric16:"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7",tui:"https://uicdn.toast.com",hls:"https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.14/hls.min.js",dash:"https://cdnjs.cloudflare.com/ajax/libs/dashjs/4.7.3/dash.all.min.js",flv:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.6.2/flv.min.js",videojs:"https://cdnjs.cloudflare.com/ajax/libs/video.js/8.8.0",prettify:"https://cdn.jsdelivr.net/gh/google/code-prettify@e006587b4a893f0281e9dc9a53001c7ed584d4e7/loader/run_prettify.js",psd:"https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.4.0/psd.min.js",rar:"https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js",zlibUnzip:"https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js",zlibGunzip:"https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js",bzip2:"https://cdn.jsdelivr.net/gh/nao-pon/bzip2.js@0.8.0/bzip2.js",marked:"https://cdnjs.cloudflare.com/ajax/libs/marked/11.1.0/marked.min.js",sparkmd5:"https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.2/spark-md5.min.js",jssha:"https://cdnjs.cloudflare.com/ajax/libs/jsSHA/3.3.1/sha.min.js",amr:"https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js",tiff:"https://cdn.jsdelivr.net/gh/seikichi/tiff.js@545ede3ee46b5a5bc5f06d65954e775aa2a64017/tiff.min.js"},url:"",requestType:"get",cors:null,parrotHeaders:[],requestMaxConn:3,transport:{},urlUpload:"",dragUploadAllow:"auto",overwriteUploadConfirm:!0,uploadMaxChunkSize:10485760,folderUploadExclude:{win:/^(?:desktop\.ini|thumbs\.db)$/i,mac:/^\.ds_store$/i},iframeTimeout:0,customData:{},handlers:{},customHeaders:{},xhrFields:{},lang:"en",baseUrl:"",i18nBaseUrl:"",workerBaseUrl:"",cssAutoLoad:!0,themes:{},theme:null,maxErrorDialogs:5,cssClass:"",commands:["*"],commandsOptions:{getfile:{onlyURL:!1,multiple:!1,folders:!1,oncomplete:"",onerror:"",getPath:!0,getImgSize:!1},open:{method:"post",into:"window",selectAction:"open"},opennew:{url:"",useOriginQuery:!0},upload:{ui:"button"},download:{maxRequests:10,minFilesZipdl:2},quicklook:{autoplay:!0,width:450,height:300,mediaControlsList:"",pdfToolbar:!0,textInitialLines:100,prettifyMaxLines:300,contain:!1,docked:0,dockHeight:"auto",dockAutoplay:!1,googleMapsApiKey:"",googleMapsOpts:{maps:{},kml:{suppressInfoWindows:!1,preserveViewport:!1}},viewerjs:{url:"",mimes:["application/pdf","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"],pdfNative:!0},sharecadMimes:[],googleDocsMimes:[],officeOnlineMimes:[],getDimThreshold:"200K",unzipMaxSize:"50M",mimeRegexNotEmptyCheck:/^application\/vnd\.google-apps\./},edit:{dialogWidth:void 0,dialogHeight:void 0,mimes:[],mkfileHideMimes:[],makeTextMimes:["text/plain","text/css","text/html"],useStoredEditor:!1,editorMaximized:!1,editors:[],encodings:["Big5","Big5-HKSCS","Cp437","Cp737","Cp775","Cp850","Cp852","Cp855","Cp857","Cp858","Cp862","Cp866","Cp874","EUC-CN","EUC-JP","EUC-KR","GB18030","ISO-2022-CN","ISO-2022-JP","ISO-2022-KR","ISO-8859-1","ISO-8859-2","ISO-8859-3","ISO-8859-4","ISO-8859-5","ISO-8859-6","ISO-8859-7","ISO-8859-8","ISO-8859-9","ISO-8859-13","ISO-8859-15","KOI8-R","KOI8-U","Shift-JIS","Windows-1250","Windows-1251","Windows-1252","Windows-1253","Windows-1254","Windows-1257"],extraOptions:{uploadOpts:{},tuiImgEditOpts:{iconsPath:void 0,theme:{}},pixo:{apikey:""},managerUrl:null,ckeditor:{},ckeditor5:{mode:"decoupled-document"},tinymce:{},onlineConvert:{maxSize:100,showLink:!0}}},fullscreen:{mode:"screen"},search:{incsearch:{enable:!0,minlen:1,wait:500},searchTypes:{SearchMime:{name:"btnMime",title:"searchMime",incsearch:"mime"}}},info:{nullUrlDirLinkSelf:!0,hideItems:[],showHashMaxsize:104857600,showHashAlgorisms:["md5","sha256"],showHashOpts:{shake128len:256,shake256len:512},custom:{}},mkdir:{intoNewFolderToolbtn:!1},resize:{grid8px:"disable",presetSize:[[320,240],[400,400],[640,480],[800,600]],getDimThreshold:204800,dimSubImgSize:307200},rm:{quickTrash:!0,infoCheckWait:10,toTrashMaxItems:1e3},paste:{moveConfirm:!1},help:{view:["about","shortcuts","help","integrations","debug"],helpSource:""},preference:{width:600,height:400,categories:null,prefs:null,langs:null,selectActions:["open","edit/download","resize/edit/download","download","quicklook"]}},disabledCmdsRels:{get:["edit"],rm:["cut","empty"],"file&url=":["download","zipdl"]},bootCallback:null,getFileCallback:null,defaultView:"icons",startPathHash:"",sound:!0,ui:["toolbar","places","tree","path","stat"],uiOptions:{toolbar:[["home","back","forward","up","reload"],["netmount"],["mkdir","mkfile","upload"],["open","download","getfile"],["undo","redo"],["copy","cut","paste","rm","empty","hide"],["duplicate","rename","edit","resize","chmod"],["selectall","selectnone","selectinvert"],["quicklook","info"],["extract","archive"],["search"],["view","sort"],["preference","help"],["fullscreen"]],toolbarExtra:{displayTextLabel:!1,labelExcludeUA:["Mobile"],autoHideUA:["Mobile"],defaultHides:["home","reload"],showPreferenceButton:"none",preferenceInContextmenu:!0},tree:{attrTitle:!0,openRootOnLoad:!0,openCwdOnOpen:!0,syncTree:!0,subTreeMax:100,subdirsMaxConn:2,subdirsAtOnce:5,durations:{slideUpDown:"fast",autoScroll:"fast"}},navbar:{minWidth:150,maxWidth:500,autoHideUA:[]},navdock:{disabled:!1,initMaxHeight:"50%",maxHeight:"90%"},cwd:{oldSchool:!1,showSelectCheckboxUA:["Touch"],metakeyDragout:!0,listView:{columns:["perm","date","size","kind"],columnsCustomName:{},fixedHeader:!0},iconsView:{size:0,sizeMax:3,sizeNames:{0:"viewSmall",1:"viewMedium",2:"viewLarge",3:"viewExtraLarge"}}},path:{toWorkzoneWithoutNavbar:!0},dialog:{focusOnMouseOver:!0},toast:{animate:{showMethod:"fadeIn",showDuration:300,showEasing:"swing",timeOut:3e3,hideMethod:"fadeOut",hideDuration:1500,hideEasing:"swing"}}},dispInlineRegex:"^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash+xml)|(?:text/plain|application/pdf)$)",onlyMimes:[],sortRules:{},sortType:"name",sortOrder:"asc",sortStickFolders:!0,sortAlsoTreeview:!1,clientFormatDate:!0,UTCDate:!1,dateFormat:"",fancyDateFormat:"",fileModeStyle:"both",width:"auto",height:400,noResizeBySelf:!1,heightBase:null,resizable:!0,notifyDelay:500,notifyDialog:{position:{},width:null,canClose:!1,hiddens:["open"]},dialogContained:!1,allowShortcuts:!0,rememberLastDir:!0,reloadClearHistory:!1,useBrowserHistory:!0,showFiles:50,showThreshold:50,validName:!1,fileFilter:!1,backupSuffix:"~",sync:0,syncStart:!0,loadTmbs:5,cookie:{expires:30,domain:"",path:"/",secure:!1,samesite:"lax"},contextmenu:{navbar:["open","opennew","download","|","upload","mkdir","|","copy","cut","paste","duplicate","|","rm","empty","hide","|","rename","|","archive","|","places","info","chmod","netunmount"],cwd:["undo","redo","|","back","up","reload","|","upload","mkdir","mkfile","paste","|","empty","hide","|","view","sort","selectall","colwidth","|","places","info","chmod","netunmount","|","fullscreen","|","preference"],files:["getfile","|","open","opennew","download","opendir","quicklook","|","upload","mkdir","|","copy","cut","paste","duplicate","|","rm","empty","hide","|","rename","edit","resize","|","archive","extract","|","selectall","selectinvert","|","places","info","chmod","netunmount"]},enableAlways:!1,enableByMouseOver:!0,windowCloseConfirm:["hasNotifyDialog","editingFile"],rawStringDecoder:"object"==typeof Encoding&&"function"==typeof Encoding.convert?function(e){return Encoding.convert(e,{to:"UNICODE",type:"string"})}:null,debug:["error","warning","event-destroy"],toastBackendWarn:!0,enableRootRename:!0},i.prototype._options.commandsOptions.netmount={ftp:{name:"FTP",inputs:{host:e('<input type="text"/>'),port:e('<input type="number" placeholder="21" class="elfinder-input-optional"/>'),path:e('<input type="text" value="/"/>'),user:e('<input type="text"/>'),pass:e('<input type="password" autocomplete="new-password"/>'),FTPS:e('<input type="checkbox" value="1" title="File Transfer Protocol over SSL/TLS"/>'),encoding:e('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>'),locale:e('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>')}},dropbox2:i.prototype.makeNetmountOptionOauth("dropbox2","Dropbox","Dropbox",{noOffline:!0,root:"/",pathI18n:"path",integrate:{title:"Dropbox.com",link:"https://www.dropbox.com"}}),googledrive:i.prototype.makeNetmountOptionOauth("googledrive","Google Drive","Google",{integrate:{title:"Google Drive",link:"https://www.google.com/drive/"}}),onedrive:i.prototype.makeNetmountOptionOauth("onedrive","One Drive","OneDrive",{integrate:{title:"Microsoft OneDrive",link:"https://onedrive.live.com"}}),box:i.prototype.makeNetmountOptionOauth("box","Box","Box",{noOffline:!0,integrate:{title:"Box.com",link:"https://www.box.com"}})},i.prototype.history=function(t){var n,i=this,a=!0,o=[],r=function(){o=[t.cwd().hash],n=0,a=!0},s=t.options.useBrowserHistory&&window.history&&window.history.pushState?window.history:null,l=function(s){return s&&i.canForward()||!s&&i.canBack()?(a=!1,t.exec("open",o[s?++n:--n]).fail(r)):e.Deferred().reject()},c=function(e){!s||s.state&&s.state.thash===e||s.pushState({thash:e},null,location.pathname+location.search+(e?"#elf_"+e:""))};this.canBack=function(){return n>0},this.canForward=function(){return n<o.length-1},this.back=l,this.forward=function(){return l(!0)},t.bind("init",function(){s&&!s.state&&c(t.startDir())}).open(function(){var e=o.length,i=t.cwd().hash;a&&(n>=0&&e>n+1&&o.splice(n+1),o[o.length-1]!=i&&o.push(i),n=o.length-1),a=!0,c(i)}).reload(t.options.reloadClearHistory&&r)},i.prototype.command=function(t){this.fm=t,this.name="",this.dialogClass="",this.className="",this.title="",this.linkedCmds=[],this.state=-1,this.alwaysEnabled=!1,this.noChangeDirOnRemovedCwd=!1,this._disabled=!1,this.disableOnSearch=!1,this.updateOnSelect=!0,this.syncTitleOnChange=!1,this.keepContextmenu=!1,this._handlers={enable:function(){this.update(void 0,this.value)},disable:function(){this.update(-1,this.value)},"open reload load sync":function(){this._disabled=!(this.alwaysEnabled||this.fm.isCommandEnabled(this.name)),this.update(void 0,this.value),this.change()}},this.handlers={},this.shortcuts=[],this.options={ui:"button"},this.listeners=[],this.setup=function(t,n){var i,a,o,r=this,s=this.fm,l=function(t){var n=t.callback||function(e){s.exec(r.name,void 0,{_userAction:!0,_currentType:"shortcut"})};t.callback=function(t){var i,a={};r.enabled()&&(s.searchStatus.state<2?i=s.isCommandEnabled(r.name):(e.each(s.selected(),function(t,n){s.optionsByHashes[n]?a[n]=!0:e.each(s.volOptions,function(e){if(!a[e]&&0===n.indexOf(e))return a[e]=!0,!1})}),e.each(a,function(e){if(i=s.isCommandEnabled(r.name,e),!i)return!1})),i&&(r.event=t,n.call(r),delete r.event))}};for(this.name=t,this.title=s.messages["cmd"+t]?s.i18n("cmd"+t):this.extendsCmd&&s.messages["cmd"+this.extendsCmd]?s.i18n("cmd"+this.extendsCmd):t,this.options=Object.assign({},this.options,n),this.listeners=[],this.dialogClass="elfinder-dialog-"+t,n.shortcuts&&("function"==typeof n.shortcuts?o=n.shortcuts(this.fm,this.shortcuts):Array.isArray(n.shortcuts)&&(o=n.shortcuts),this.shortcuts=o||[]),this.updateOnSelect&&(this._handlers.select=function(){this.update(void 0,this.value)}),e.each(Object.assign({},r._handlers,r.handlers),function(t,n){s.bind(t,e.proxy(n,r))}),i=0;i<this.shortcuts.length;i++)a=this.shortcuts[i],l(a),!a.description&&(a.description=this.title),s.shortcut(a);this.disableOnSearch&&s.bind("search searchend",function(){r._disabled="search"===this.type||!(this.alwaysEnabled||s.isCommandEnabled(t)),r.update(void 0,r.value)}),this.init()},this.init=function(){},this.exec=function(t,n){return e.Deferred().reject()},this.getUndo=function(e,t){return!1},this.disabled=function(){return this.state<0},this.enabled=function(){return this.state>-1},this.active=function(){return this.state>0},this.getstate=function(){return-1},this.update=function(e,t){var n=this.state,i=this.value;this._disabled&&0===this.fm.searchStatus?this.state=-1:this.state=void 0!==e?e:this.getstate(),this.value=t,n==this.state&&i==this.value||this.change()},this.change=function(e){var t,n;if("function"==typeof e)this.listeners.push(e);else for(n=0;n<this.listeners.length;n++){t=this.listeners[n];try{t(this.state,this.value)}catch(i){this.fm.debug("error",i)}}return this},this.hashes=function(n){return n?e.grep(Array.isArray(n)?n:[n],function(e){return!!t.file(e)}):t.selected()},this.files=function(t){var n=this.fm;return t?e.map(Array.isArray(t)?t:[t],function(e){return n.file(e)||null}):n.selectedFiles()},this.fmDialog=function(e,t){return t.cssClass?t.cssClass+=" "+this.dialogClass:t.cssClass=this.dialogClass,this.fm.dialog(e,t)}},i.prototype.resources={"class":{hover:"ui-state-hover",active:"ui-state-active",disabled:"ui-state-disabled",draggable:"ui-draggable",droppable:"ui-droppable",adroppable:"elfinder-droppable-active",cwdfile:"elfinder-cwd-file",cwd:"elfinder-cwd",tree:"elfinder-tree",treeroot:"elfinder-navbar-root",navdir:"elfinder-navbar-dir",navdirwrap:"elfinder-navbar-dir-wrapper",navarrow:"elfinder-navbar-arrow",navsubtree:"elfinder-navbar-subtree",navcollapse:"elfinder-navbar-collapsed",navexpand:"elfinder-navbar-expanded",treedir:"elfinder-tree-dir",placedir:"elfinder-place-dir",searchbtn:"elfinder-button-search",editing:"elfinder-to-editing",preventback:"elfinder-prevent-back",tabstab:"ui-state-default ui-tabs-tab ui-corner-top ui-tab",tabsactive:"ui-tabs-active ui-state-active"},tpl:{perms:'<span class="elfinder-perms"></span>',lock:'<span class="elfinder-lock"></span>',symlink:'<span class="elfinder-symlink"></span>',navicon:'<span class="elfinder-nav-icon"></span>',navspinner:'<span class="elfinder-spinner elfinder-navbar-spinner"></span>',navdir:'<div class="elfinder-navbar-wrapper{root}"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>',placedir:'<div class="elfinder-navbar-wrapper"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>'},mimes:{text:["application/dash+xml","application/docbook+xml","application/javascript","application/json","application/plt","application/sat","application/sql","application/step","application/vnd.hp-hpgl","application/x-awk","application/x-config","application/x-csh","application/x-empty","application/x-mpegurl","application/x-perl","application/x-php","application/x-web-config","application/xhtml+xml","application/xml","audio/x-mp3-playlist","image/cgm","image/svg+xml","image/vnd.dxf","model/iges"]},mixin:{make:function(){var t,n,i,a,o,r,s,l,c,d,p=this,u=this.fm,h=this.name,f=this.requestCmd||h,m=u.getUI("workzone"),g=this.origin&&"navbar"===this.origin?"tree":"cwd",v="tree"===g,b=v?"navHash2Elm":"cwdHash2Elm",y=!v&&"list"!=u.storage("view"),w=u.selected(),x=this.move||!1,k=m.hasClass("elfinder-cwd-wrapper-empty"),C=function(){requestAnimationFrame(function(){U&&U.trigger("blur")})},z=function(){F.is(":hidden")||F.elfinderoverlay("hide").off("click close",D),n&&(i.removeClass("ui-front").css("position","").off("unselect."+u.namespace,C),y?n&&n.css("max-height",""):v||i.css("width","").parent("td").css("overflow",""))},T=e.Deferred().fail(function(e){r&&o.attr("class",r),k&&m.addClass("elfinder-cwd-wrapper-empty"),w&&(x&&u.trigger("unlockfiles",{files:w}),u.clipboard([]),u.trigger("selectfiles",{files:w})),e&&u.error(e)}).always(function(){z(),E(),u.enable().unbind("open",q).trigger("resMixinMake")}),A="tmp_"+parseInt(1e5*Math.random()),j=this.data&&this.data.target?this.data.target:v?u.file(w[0]).hash:u.cwd().hash,O=new Date,S={hash:A,phash:j,name:u.uniqueName(this.prefix,j),mime:this.mime,read:!0,write:!0,date:"Today "+O.getHours()+":"+O.getMinutes(),move:x},I=(u.getUI(g).trigger("create."+u.namespace,S),this.data||{}),M=u[b](A),F=u.getUI("overlay"),E=function(){M&&M.length&&(U.off(),M.hide(),u.unselectfiles({files:[A]}).unbind("resize",R),requestAnimationFrame(function(){v?M.closest(".elfinder-navbar-wrapper").remove():M.remove()}))},D=function(e){F.is(":hidden")||i.css("z-index",""),H||(E(),T.reject(),e&&(e.stopPropagation(),e.preventDefault()))},U=e(y?"<textarea></textarea>":'<input type="text"/>').on("keyup text",function(){y?(this.style.height="1px",this.style.height=this.scrollHeight+"px"):t&&(this.style.width=t+"px",this.scrollWidth>t&&(this.style.width=this.scrollWidth+10+"px"))}).on("keydown",function(t){t.stopImmediatePropagation(),t.keyCode==e.ui.keyCode.ESCAPE?T.reject():t.keyCode==e.ui.keyCode.ENTER&&(t.preventDefault(),U.trigger("blur"))}).on("mousedown click dblclick",function(e){e.stopPropagation(),"dblclick"===e.type&&e.preventDefault()}).on("blur",function(){var t,n=e.trim(U.val()),o=U.parent(),r=!0;if(F.is(":hidden")||i.css("z-index",""),""===n)return D();if(!H&&o.length){if(u.options.validName&&u.options.validName.test)try{r=u.options.validName.test(n)}catch(s){r=!1}if(!n||"."===n||".."===n||!r)return H=!0,u.error("directory"===S.mime?"errInvDirname":"errInvName",{modal:!0,close:function(){setTimeout(P,120)}}),!1;if(u.fileByName(n,j))return H=!0,u.error(["errExists",n],{modal:!0,close:function(){setTimeout(P,120)}}),!1;t=w&&x?u.exec("cut",w):null,e.when(t).done(function(){var t={},i={};z(),U.hide().before(e("<span>").text(n)),u.lockfiles({files:[A]}),u.request({data:Object.assign({cmd:f,name:n,target:j},I||{}),notify:{type:f,cnt:1},preventFail:!0,syncOnFail:!0,navigate:{toast:t}}).fail(function(t){u.unlockfiles({files:[A]}),H=!0,U.show().prev().remove(),u.error(t,{modal:!0,close:function(){Array.isArray(t)&&e.inArray("errUploadMime",t)!==-1?T.notify("errUploadMime").reject():setTimeout(P,120)}})}).done(function(n){if(n&&n.added&&n.added[0]){var o,r=n.added[0],s=r.hash,l=(u[b](s),{directory:{cmd:"open",msg:"cmdopendir"},text:{cmd:"edit",msg:"cmdedit"},"default":{cmd:"open",msg:"cmdopen"}});w&&x&&u.one(f+"done",function(){u.exec("paste",s)}),x||(u.mimeIsText(r.mime)&&!u.mimesCanMakeEmpty[r.mime]&&u.mimeTypes[r.mime]&&(u.trigger("canMakeEmptyFile",{mimes:[r.mime],unshift:!0}),o={},o[r.mime]=u.mimeTypes[r.mime],u.storage("mkfileTextMimes",Object.assign(o,u.storage("mkfileTextMimes")||{}))),Object.assign(i,a||l[r.mime]||l[r.mime.split("/")[0]]||l[u.mimesCanMakeEmpty[r.mime]||e.inArray(r.mime,u.resources.mimes.text)!==-1?"text":"none"]||l["default"]),Object.assign(t,i.cmd?{incwd:{msg:u.i18n(["complete",u.i18n("cmd"+h)]),action:i},inbuffer:{msg:u.i18n(["complete",u.i18n("cmd"+h)]),action:i}}:{inbuffer:{msg:u.i18n(["complete",u.i18n("cmd"+h)])}}))}T.resolve(n)})}).fail(function(){T.reject()})}}).on("dragenter dragleave dragover drop",function(e){e.stopPropagation()}),P=function(){var e=u.splitFileExtention(U.val())[0];H||!u.UA.Mobile||u.UA.iOS||(F.on("click close",D).elfinderoverlay("show"),i.css("z-index",F.css("z-index")+1)),H=!1,!u.enabled()&&u.enable(),U.trigger("focus").trigger("select"),U[0].setSelectionRange&&U[0].setSelectionRange(0,e.length)},R=function(){M.trigger("scrolltoview",{blink:!1})},q=function(){T&&"pending"===T.state()&&T.reject()},H=!1;return u.isCommandEnabled(f,j)&&M.length?(e.isPlainObject(p.nextAction)&&(a=Object.assign({},p.nextAction)),v?(o=u[b](j),s=u.res("class","navcollapse"),l=u.res("class","navexpand"),c=u.res("class","navarrow"),d=u.res("class","navsubtree"),M.closest("."+d).show(),o.hasClass(s)||(r=o.attr("class"),o.addClass(s+" "+l+" elfinder-subtree-loaded")),o.is("."+s+":not(."+l+")")&&o.children("."+c).trigger("click").data("dfrd").done(function(){U.val()===S.name&&U.val(u.uniqueName(p.prefix,j)).trigger("select").trigger("focus")}),n=M.contents().filter(function(){return 3==this.nodeType&&e(this).parent().attr("id")===u.navHash2Id(S.hash)}),i=n.parent(),n.replaceWith(U.val(S.name))):(k&&m.removeClass("elfinder-cwd-wrapper-empty"),n=M.find(".elfinder-cwd-filename"),i=n.parent(),y?n.css("max-height","none"):(t=i.width(),i.width(t-15).parent("td").css("overflow","visible")),n.empty().append(U.val(S.name))),i.addClass("ui-front").css("position","relative").on("unselect."+u.namespace,C),u.bind("resize",R).one("open",q),U.trigger("keyup"),P(),T):T.reject()}},blink:function(e,t){var n,i={slowonce:function(){e.hide().delay(250).fadeIn(750).delay(500).fadeOut(3500)},lookme:function(){e.show().fadeOut(500).fadeIn(750)}};t=t||"slowonce",n=i[t]||i.lookme,e.stop(!0,!0),n()}},e.fn.dialogelfinder=function(t,n){var i,a,o="elfinderPosition",r="elfinderDestroyOnClose";if(e.isPlainObject(t))this.not(".elfinder").each(function(){t.handlers=t.handlers||{};var i,a=e(this),s=(e(document),e('<div class="ui-widget-header dialogelfinder-drag ui-corner-top">'+(t.title||"Files")+"</div>")),l=(e('<a href="#" class="dialogelfinder-drag-close ui-corner-all"><span class="ui-icon ui-icon-closethick"> </span></a>').appendTo(s).on("click",function(e){e.preventDefault(),a.dialogelfinder("close")}),t.handlers.init);t.handlers.init=function(e,t){a.prepend(s),l&&l(e,t)},i=a.addClass("elfinder dialogelfinder touch-punch").css("position","absolute").hide().appendTo("body").draggable({handle:".dialogelfinder-drag",containment:"window",stop:function(){a.trigger("resize"),i.trigger("resize")}}).elfinder(t,n).elfinder("instance"),i.reloadCallback=function(e,t){i.destroy(),e.handlers.init=l,a.dialogelfinder(e,t).dialogelfinder("open")},a.width(parseInt(a.width())||840).data(r,!!t.destroyOnClose).find(".elfinder-toolbar").removeClass("ui-corner-top"),t.position&&a.data(o,t.position),t.autoOpen!==!1&&e(this).dialogelfinder("open")});else if("open"===t)i=e(this),a=i.data(o)||{top:parseInt(e(document).scrollTop()+(e(window).height()<i.height()?2:(e(window).height()-i.height())/2)),left:parseInt(e(document).scrollLeft()+(e(window).width()<i.width()?2:(e(window).width()-i.width())/2))},i.is(":hidden")&&(i.addClass("ui-front").css(a).show().trigger("resize"),setTimeout(function(){i.trigger("resize").trigger("mousedown")},200));else if("close"===t)i=e(this).removeClass("ui-front"),i.is(":visible")&&(i.data(r)?i.elfinder("destroy").remove():i.elfinder("close"));else if("instance"===t)return e(this).getElFinder();return this},"function"==typeof i&&i.prototype.i18&&(i.prototype.i18.en={translator:"Troex Nevelin &lt;troex@fury.scancode.ru&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;",language:"English",direction:"ltr",dateFormat:"M d, Y h:i A",fancyDateFormat:"$1 h:i A",nonameDateFormat:"ymd-His",messages:{error:"Error",errUnknown:"Unknown error.",errUnknownCmd:"Unknown command.",errJqui:"Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.",errNode:"elFinder requires DOM Element to be created.",errURL:"Invalid elFinder configuration! URL option is not set.",errAccess:"Access denied.",errConnect:"Unable to connect to backend.",errAbort:"Connection aborted.",errTimeout:"Connection timeout.",errNotFound:"Backend not found.",errResponse:"Invalid backend response.",errConf:"Invalid backend configuration.",errJSON:"PHP JSON module not installed.",errNoVolumes:"Readable volumes not available.",errCmdParams:'Invalid parameters for command "$1".',errDataNotJSON:"Data is not JSON.",errDataEmpty:"Data is empty.",errCmdReq:"Backend request requires command name.",errOpen:'Unable to open "$1".',errNotFolder:"Object is not a folder.",errNotFile:"Object is not a file.",
errRead:'Unable to read "$1".',errWrite:'Unable to write into "$1".',errPerm:"Permission denied.",errLocked:'"$1" is locked and can not be renamed, moved or removed.',errExists:'Item named "$1" already exists.',errInvName:"Invalid file name.",errInvDirname:"Invalid folder name.",errFolderNotFound:"Folder not found.",errFileNotFound:"File not found.",errTrgFolderNotFound:'Target folder "$1" not found.',errPopup:"Browser prevented opening popup window. To open file enable it in browser options.",errMkdir:'Unable to create folder "$1".',errMkfile:'Unable to create file "$1".',errRename:'Unable to rename "$1".',errCopyFrom:'Copying files from volume "$1" not allowed.',errCopyTo:'Copying files to volume "$1" not allowed.',errMkOutLink:"Unable to create a link to outside the volume root.",errUpload:"Upload error.",errUploadFile:'Unable to upload "$1".',errUploadNoFiles:"No files found for upload.",errUploadTotalSize:"Data exceeds the maximum allowed size.",errUploadFileSize:"File exceeds maximum allowed size.",errUploadMime:"File type not allowed.",errUploadTransfer:'"$1" transfer error.',errUploadTemp:"Unable to make temporary file for upload.",errNotReplace:'Object "$1" already exists at this location and can not be replaced by object with another type.',errReplace:'Unable to replace "$1".',errSave:'Unable to save "$1".',errCopy:'Unable to copy "$1".',errMove:'Unable to move "$1".',errCopyInItself:'Unable to copy "$1" into itself.',errRm:'Unable to remove "$1".',errTrash:"Unable into trash.",errRmSrc:"Unable remove source file(s).",errExtract:'Unable to extract files from "$1".',errArchive:"Unable to create archive.",errArcType:"Unsupported archive type.",errNoArchive:"File is not archive or has unsupported archive type.",errCmdNoSupport:"Backend does not support this command.",errReplByChild:'The folder "$1" can\'t be replaced by an item it contains.',errArcSymlinks:"For security reason denied to unpack archives contains symlinks or files with not allowed names.",errArcMaxSize:"Archive files exceeds maximum allowed size.",errResize:'Unable to resize "$1".',errResizeDegree:"Invalid rotate degree.",errResizeRotate:"Unable to rotate image.",errResizeSize:"Invalid image size.",errResizeNoChange:"Image size not changed.",errUsupportType:"Unsupported file type.",errNotUTF8Content:'File "$1" is not in UTF-8 and cannot be edited.',errNetMount:'Unable to mount "$1".',errNetMountNoDriver:"Unsupported protocol.",errNetMountFailed:"Mount failed.",errNetMountHostReq:"Host required.",errSessionExpires:"Your session has expired due to inactivity.",errCreatingTempDir:'Unable to create temporary directory: "$1"',errFtpDownloadFile:'Unable to download file from FTP: "$1"',errFtpUploadFile:'Unable to upload file to FTP: "$1"',errFtpMkdir:'Unable to create remote directory on FTP: "$1"',errArchiveExec:'Error while archiving files: "$1"',errExtractExec:'Error while extracting files: "$1"',errNetUnMount:"Unable to unmount.",errConvUTF8:"Not convertible to UTF-8",errFolderUpload:"Try the modern browser, If you'd like to upload the folder.",errSearchTimeout:'Timed out while searching "$1". Search result is partial.',errReauthRequire:"Re-authorization is required.",errMaxTargets:"Max number of selectable items is $1.",errRestore:"Unable to restore from the trash. Can't identify the restore destination.",errEditorNotFound:"Editor not found to this file type.",errServerError:"Error occurred on the server side.",errEmpty:'Unable to empty folder "$1".',moreErrors:"There are $1 more errors.",errMaxMkdirs:"You can create up to $1 folders at one time.",cmdarchive:"Create archive",cmdback:"Back",cmdcopy:"Copy",cmdcut:"Cut",cmddownload:"Download",cmdduplicate:"Duplicate",cmdedit:"Edit file",cmdextract:"Extract files from archive",cmdforward:"Forward",cmdgetfile:"Select files",cmdhelp:"About this software",cmdhome:"Root",cmdinfo:"Get info",cmdmkdir:"New folder",cmdmkdirin:"Into New Folder",cmdmkfile:"New file",cmdopen:"Open",cmdpaste:"Paste",cmdquicklook:"Preview",cmdreload:"Reload",cmdrename:"Rename",cmdrm:"Delete",cmdtrash:"Into trash",cmdrestore:"Restore",cmdsearch:"Find files",cmdup:"Go to parent folder",cmdupload:"Upload files",cmdview:"View",cmdresize:"Resize & Rotate",cmdsort:"Sort",cmdnetmount:"Mount network volume",cmdnetunmount:"Unmount",cmdplaces:"To Places",cmdchmod:"Change mode",cmdopendir:"Open a folder",cmdcolwidth:"Reset column width",cmdfullscreen:"Full Screen",cmdmove:"Move",cmdempty:"Empty the folder",cmdundo:"Undo",cmdredo:"Redo",cmdpreference:"Preferences",cmdselectall:"Select all",cmdselectnone:"Select none",cmdselectinvert:"Invert selection",cmdopennew:"Open in new window",cmdhide:"Hide (Preference)",btnClose:"Close",btnSave:"Save",btnRm:"Remove",btnApply:"Apply",btnCancel:"Cancel",btnNo:"No",btnYes:"Yes",btnDiscard:"Discard changes",btnMount:"Mount",btnApprove:"Goto $1 & approve",btnUnmount:"Unmount",btnConv:"Convert",btnCwd:"Here",btnVolume:"Volume",btnAll:"All",btnMime:"MIME Type",btnFileName:"Filename",btnSaveClose:"Save & Close",btnBackup:"Backup",btnRename:"Rename",btnRenameAll:"Rename(All)",btnPrevious:"Prev ($1/$2)",btnNext:"Next ($1/$2)",btnSaveAs:"Save As",ntfopen:"Open folder",ntffile:"Open file",ntfreload:"Reload folder content",ntfmkdir:"Creating folder",ntfmkfile:"Creating files",ntfrm:"Delete items",ntfcopy:"Copy items",ntfmove:"Move items",ntfprepare:"Checking existing items",ntfrename:"Rename files",ntfupload:"Uploading files",ntfdownload:"Downloading files",ntfsave:"Save files",ntfarchive:"Creating archive",ntfextract:"Extracting files from archive",ntfsearch:"Searching files",ntfresize:"Resizing images",ntfsmth:"Doing something",ntfloadimg:"Loading image",ntfnetmount:"Mounting network volume",ntfnetunmount:"Unmounting network volume",ntfdim:"Acquiring image dimension",ntfreaddir:"Reading folder infomation",ntfurl:"Getting URL of link",ntfchmod:"Changing file mode",ntfpreupload:"Verifying upload file name",ntfzipdl:"Creating a file for download",ntfparents:"Getting path infomation",ntfchunkmerge:"Processing the uploaded file",ntftrash:"Doing throw in the trash",ntfrestore:"Doing restore from the trash",ntfchkdir:"Checking destination folder",ntfundo:"Undoing previous operation",ntfredo:"Redoing previous undone",ntfchkcontent:"Checking contents",volume_Trash:"Trash",dateUnknown:"unknown",Today:"Today",Yesterday:"Yesterday",msJan:"Jan",msFeb:"Feb",msMar:"Mar",msApr:"Apr",msMay:"May",msJun:"Jun",msJul:"Jul",msAug:"Aug",msSep:"Sep",msOct:"Oct",msNov:"Nov",msDec:"Dec",January:"January",February:"February",March:"March",April:"April",May:"May",June:"June",July:"July",August:"August",September:"September",October:"October",November:"November",December:"December",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday",Sun:"Sun",Mon:"Mon",Tue:"Tue",Wed:"Wed",Thu:"Thu",Fri:"Fri",Sat:"Sat",sortname:"by name",sortkind:"by kind",sortsize:"by size",sortdate:"by date",sortFoldersFirst:"Folders first",sortperm:"by permission",sortmode:"by mode",sortowner:"by owner",sortgroup:"by group",sortAlsoTreeview:"Also Treeview","untitled file.txt":"NewFile.txt","untitled folder":"NewFolder",Archive:"NewArchive","untitled file":"NewFile.$1",extentionfile:"$1: File",extentiontype:"$1: $2",confirmReq:"Confirmation required",confirmRm:"Are you sure you want to permanently remove items?<br/>This cannot be undone!",confirmRepl:"Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)",confirmRest:"Replace existing item with the item in trash?",confirmConvUTF8:"Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.",confirmNonUTF8:"Character encoding of this file couldn't be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.",confirmNotSave:"It has been modified.<br/>Losing work if you do not save changes.",confirmTrash:"Are you sure you want to move items to trash bin?",confirmMove:'Are you sure you want to move items to "$1"?',apllyAll:"Apply to all",name:"Name",size:"Size",perms:"Permissions",modify:"Modified",kind:"Kind",read:"read",write:"write",noaccess:"no access",and:"and",unknown:"unknown",selectall:"Select all items",selectfiles:"Select item(s)",selectffile:"Select first item",selectlfile:"Select last item",viewlist:"List view",viewicons:"Icons view",viewSmall:"Small icons",viewMedium:"Medium icons",viewLarge:"Large icons",viewExtraLarge:"Extra large icons",places:"Places",calc:"Calculate",path:"Path",aliasfor:"Alias for",locked:"Locked",dim:"Dimensions",files:"Files",folders:"Folders",items:"Items",yes:"yes",no:"no",link:"Link",searcresult:"Search results",selected:"selected items",about:"About",shortcuts:"Shortcuts",help:"Help",webfm:"Web file manager",ver:"Version",protocolver:"protocol version",homepage:"Project home",docs:"Documentation",github:"Fork us on GitHub",twitter:"Follow us on Twitter",facebook:"Join us on Facebook",team:"Team",chiefdev:"chief developer",developer:"developer",contributor:"contributor",maintainer:"maintainer",translator:"translator",icons:"Icons",dontforget:"and don't forget to take your towel",shortcutsof:"Shortcuts disabled",dropFiles:"Drop files here",or:"or",selectForUpload:"Select files",moveFiles:"Move items",copyFiles:"Copy items",restoreFiles:"Restore items",rmFromPlaces:"Remove from places",aspectRatio:"Aspect ratio",scale:"Scale",width:"Width",height:"Height",resize:"Resize",crop:"Crop",rotate:"Rotate","rotate-cw":"Rotate 90 degrees CW","rotate-ccw":"Rotate 90 degrees CCW",degree:"Â°",netMountDialogTitle:"Mount network volume",protocol:"Protocol",host:"Host",port:"Port",user:"User",pass:"Password",confirmUnmount:"Are you sure to unmount $1?",dropFilesBrowser:"Drop or Paste files from browser",dropPasteFiles:"Drop files, Paste URLs or images(clipboard) here",encoding:"Encoding",locale:"Locale",searchTarget:"Target: $1",searchMime:"Search by input MIME Type",owner:"Owner",group:"Group",other:"Other",execute:"Execute",perm:"Permission",mode:"Mode",emptyFolder:"Folder is empty",emptyFolderDrop:"Folder is empty\\A Drop to add items",emptyFolderLTap:"Folder is empty\\A Long tap to add items",quality:"Quality",autoSync:"Auto sync",moveUp:"Move up",getLink:"Get URL link",selectedItems:"Selected items ($1)",folderId:"Folder ID",offlineAccess:"Allow offline access",reAuth:"To re-authenticate",nowLoading:"Now loading...",openMulti:"Open multiple files",openMultiConfirm:"You are trying to open the $1 files. Are you sure you want to open in browser?",emptySearch:"Search results is empty in search target.",editingFile:"It is editing a file.",hasSelected:"You have selected $1 items.",hasClipboard:"You have $1 items in the clipboard.",incSearchOnly:"Incremental search is only from the current view.",reinstate:"Reinstate",complete:"$1 complete",contextmenu:"Context menu",pageTurning:"Page turning",volumeRoots:"Volume roots",reset:"Reset",bgcolor:"Background color",colorPicker:"Color picker","8pxgrid":"8px Grid",enabled:"Enabled",disabled:"Disabled",emptyIncSearch:"Search results is empty in current view.\\A Press [Enter] to expand search target.",emptyLetSearch:"First letter search results is empty in current view.",textLabel:"Text label",minsLeft:"$1 mins left",openAsEncoding:"Reopen with selected encoding",saveAsEncoding:"Save with the selected encoding",selectFolder:"Select folder",firstLetterSearch:"First letter search",presets:"Presets",tooManyToTrash:"It's too many items so it can't into trash.",TextArea:"TextArea",folderToEmpty:'Empty the folder "$1".',filderIsEmpty:'There are no items in a folder "$1".',preference:"Preference",language:"Language",clearBrowserData:"Initialize the settings saved in this browser",toolbarPref:"Toolbar settings",charsLeft:"... $1 chars left.",linesLeft:"... $1 lines left.",sum:"Sum",roughFileSize:"Rough file size",autoFocusDialog:"Focus on the element of dialog with mouseover",select:"Select",selectAction:"Action when select file",useStoredEditor:"Open with the editor used last time",selectinvert:"Invert selection",renameMultiple:"Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!",batchRename:"Batch rename",plusNumber:"+ Number",asPrefix:"Add prefix",asSuffix:"Add suffix",changeExtention:"Change extention",columnPref:"Columns settings (List view)",reflectOnImmediate:"All changes will reflect immediately to the archive.",reflectOnUnmount:"Any changes will not reflect until un-mount this volume.",unmountChildren:"The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?",selectionInfo:"Selection Info",hashChecker:"Algorithms to show the file hash",infoItems:"Info Items (Selection Info Panel)",pressAgainToExit:"Press again to exit.",toolbar:"Toolbar",workspace:"Work Space",dialog:"Dialog",all:"All",iconSize:"Icon Size (Icons view)",editorMaximized:"Open the maximized editor window",editorConvNoApi:"Because conversion by API is not currently available, please convert on the website.",editorConvNeedUpload:"After conversion, you must be upload with the item URL or a downloaded file to save the converted file.",convertOn:"Convert on the site of $1",integrations:"Integrations",integrationWith:"This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.",showHidden:"Show hidden items",hideHidden:"Hide hidden items",toggleHidden:"Show/Hide hidden items",makefileTypes:'File types to enable with "New file"',typeOfTextfile:"Type of the Text file",add:"Add",theme:"Theme","default":"Default",description:"Description",website:"Website",author:"Author",email:"Email",license:"License",exportToSave:"This item can't be saved. To avoid losing the edits you need to export to your PC.",dblclickToSelect:"Double click on the file to select it.",useFullscreen:"Use fullscreen mode",kindUnknown:"Unknown",kindRoot:"Volume Root",kindFolder:"Folder",kindSelects:"Selections",kindAlias:"Alias",kindAliasBroken:"Broken alias",kindApp:"Application",kindPostscript:"Postscript document",kindMsOffice:"Microsoft Office document",kindMsWord:"Microsoft Word document",kindMsExcel:"Microsoft Excel document",kindMsPP:"Microsoft Powerpoint presentation",kindOO:"Open Office document",kindAppFlash:"Flash application",kindPDF:"Portable Document Format (PDF)",kindTorrent:"Bittorrent file",kind7z:"7z archive",kindTAR:"TAR archive",kindGZIP:"GZIP archive",kindBZIP:"BZIP archive",kindXZ:"XZ archive",kindZIP:"ZIP archive",kindRAR:"RAR archive",kindJAR:"Java JAR file",kindTTF:"True Type font",kindOTF:"Open Type font",kindRPM:"RPM package",kindFont:"Font",kindSFNT:"SFNT font",kindEOT:"Embedded Open Type font",kindWOFF:"Web Open Font Format",kindWOFF2:"Web Open Font Format 2",kindText:"Text document",kindTextPlain:"Plain text",kindPHP:"PHP source",kindCSS:"Cascading style sheet",kindHTML:"HTML document",kindJS:"Javascript source",kindRTF:"Rich Text Format",kindC:"C source",kindCHeader:"C header source",kindCPP:"C++ source",kindCPPHeader:"C++ header source",kindShell:"Unix shell script",kindPython:"Python source",kindJava:"Java source",kindRuby:"Ruby source",kindPerl:"Perl script",kindSQL:"SQL source",kindXML:"XML document",kindAWK:"AWK source",kindCSV:"Comma separated values",kindDOCBOOK:"Docbook XML document",kindMarkdown:"Markdown text",kindImage:"Image",kindBMP:"BMP image",kindJPEG:"JPEG image",kindGIF:"GIF Image",kindPNG:"PNG Image",kindTIFF:"TIFF image",kindTGA:"TGA image",kindPSD:"Adobe Photoshop image",kindXBITMAP:"X bitmap image",kindPXM:"Pixelmator image",kindAudio:"Audio media",kindAudioMPEG:"MPEG audio",kindAudioMPEG4:"MPEG-4 audio",kindAudioMIDI:"MIDI audio",kindAudioOGG:"Ogg Vorbis audio",kindAudioWAV:"WAV audio",AudioPlaylist:"MP3 playlist",kindVideo:"Video media",kindVideoDV:"DV movie",kindVideoMPEG:"MPEG movie",kindVideoMPEG4:"MPEG-4 movie",kindVideoAVI:"AVI movie",kindVideoMOV:"Quick Time movie",kindVideoWM:"Windows Media movie",kindVideoFlash:"Flash movie",kindVideoMKV:"Matroska movie",kindVideoOGG:"Ogg movie"}}),e.fn.elfinderbutton=function(t){return this.each(function(){var n,i,a="class",o=t.fm,r=o.res(a,"disabled"),s=o.res(a,"active"),l=o.res(a,"hover"),c="elfinder-button-menu-item",d="elfinder-button-menu-item-selected",p=e('<span class="elfinder-button-text">'+t.title+"</span>"),u=t.className?t.className:t.name,h=e(this).addClass("ui-state-default elfinder-button").attr("title",t.title).append('<span class="elfinder-button-icon elfinder-button-icon-'+u+'"></span>',p).on("mouseenter mouseleave",function(e){!h.hasClass(r)&&h["mouseleave"==e.type?"removeClass":"addClass"](l)}).on("click",function(e){h.hasClass(r)||(n&&t.variants.length>=1?(n.is(":hidden")&&o.getUI().click(),e.stopPropagation(),n.css(m()).slideToggle({duration:100,done:function(e){o[n.is(":visible")?"toFront":"toHide"](n)}})):o.exec(t.name,g(),{_userAction:!0,_currentType:"toolbar",_currentNode:h}))}),f=function(){o.toHide(n)},m=function(){var e=o.getUI(),t=e.offset(),n=h.offset();return{top:n.top-t.top,left:n.left-t.left,maxHeight:e.height()-40}},g=function(){var e,t=o.selected();return t.length||(t=(e=o.cwd())?[o.cwd().hash]:void 0),t};p.hide(),t.button=h,Array.isArray(t.variants)&&(h.addClass("elfinder-menubutton"),n=e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-'+u+'-menu ui-corner-all"></div>').hide().appendTo(o.getUI()).on("mouseenter mouseleave","."+c,function(){e(this).toggleClass(l)}).on("click","."+c,function(i){var a=e(this).data("value");i.preventDefault(),i.stopPropagation(),h.removeClass(l),o.toHide(n),"undefined"==typeof a&&(a={}),"object"==typeof a&&(a._userAction=!0),o.exec(t.name,g(),a)}).on("close",f),o.bind("disable select",f).getUI().on("click",f),t.change(function(){n.html(""),e.each(t.variants,function(i,a){n.append(e('<div class="'+c+'">'+a[1]+"</div>").data("value",a[0]).addClass(a[0]==t.value?d:""))})})),t.change(function(){var e;i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){t.disabled()?h.removeClass(s+" "+l).addClass(r):(h.removeClass(r),h[t.active()?"addClass":"removeClass"](s)),t.syncTitleOnChange&&(e=t.className?t.className:t.name,u!==e&&(h.children(".elfinder-button-icon").removeClass("elfinder-button-icon-"+u).addClass("elfinder-button-icon-"+e),n&&n.removeClass("elfinder-button-"+u+"-menu").addClass("elfinder-button-"+e+"-menu"),u=e),p.html(t.title),h.attr("title",t.title))})}).change()})},e.fn.elfindercontextmenu=function(t){return this.each(function(){var n,i,a,o,r,s,l,c=(e(this),"elfinder-contextmenu-item"),d="elfinder-contextsubmenu-item",p="elfinder-contextmenu-extra-icon",u=t.res("class","hover"),h={distance:8,start:function(){f.data("drag",!0).data("touching")&&f.find("."+u).removeClass(u)},stop:function(){f.data("draged",!0).removeData("drag")}},f=e(this).addClass("touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-"+t.direction).hide().on("touchstart",function(e){f.data("touching",!0).children().removeClass(u)}).on("touchend",function(e){f.removeData("touching")}).on("mouseenter mouseleave","."+c,function(t){e(this).toggleClass(u,!("mouseenter"!==t.type&&(f.data("draged")||!f.data("submenuKeep")))),f.data("draged")&&f.data("submenuKeep")&&f.find(".elfinder-contextmenu-sub:visible").parent().addClass(u)}).on("mouseenter mouseleave","."+p,function(t){e(this).parent().toggleClass(u,"mouseleave"===t.type)}).on("mouseenter mouseleave","."+c+",."+d,function(t){var n=function(t,n){e.each(n?r:a,function(e,i){if(t[0]===i)return(n?r:a)._cur=e,n?s=t:o=t,!1})};if(t.originalEvent){var i=e(this),l=function(){o&&!o.children("div.elfinder-contextmenu-sub:visible").length&&o.removeClass(u)};"mouseenter"===t.type?i.hasClass(d)?(s&&s.removeClass(u),o&&(r=o.find("div."+d)),n(i,!0)):(l(),n(i)):i.hasClass(d)?(s=null,r=null):(l(),function(e){setTimeout(function(){e===o&&(o=null)},250)}(o))}}).on("contextmenu",function(){return!1}).on("mouseup",function(){setTimeout(function(){f.removeData("draged")},100)}).draggable(h),m="ltr"===t.direction,g=m?"left":"right",v=Object.assign({},t.options.contextmenu),b='<div class="'+c+'{className}"><span class="elfinder-button-icon {icon} elfinder-contextmenu-icon"{style}></span><span>{label}</span></div>',y=function(n,i,a,o){var r,s,l="",c="",d="";return o&&(o.className&&(l=" "+o.className),o.iconClass&&(d=o.iconClass,i=""),o.iconImg&&(r=o.iconImg.split(/ +/),s=r[1]&&r[2]?t.escape(r[1]+"px "+r[2]+"px"):"",c=" style=\"background:url('"+t.escape(r[0])+"') "+(s?s:"0 0")+" no-repeat;"+(s?"":"posbackground-size:contain;")+'"')),e(b.replace("{icon}",i?"elfinder-button-icon-"+i:d?d:"").replace("{label}",n).replace("{style}",c).replace("{className}",l)).on("click",function(e){e.stopPropagation(),e.preventDefault(),a()})},w=function(e){var t=e.split(/ +/),n=t[1]&&t[2]?t[1]+"px "+t[2]+"px":"";return{backgroundImage:'url("'+t[0]+'")',backgroundRepeat:"no-repeat",backgroundPosition:n?n:"",backgroundSize:n?"":"contain"}},x=function(){var n="touchstart.contextmenuAutoToggle";f.data("hideTm")&&clearTimeout(f.data("hideTm")),f.is(":visible")&&f.on("touchstart",function(e){e.originalEvent.touches.length>1||(f.stop(),t.toFront(f),f.data("hideTm")&&clearTimeout(f.data("hideTm")))}).data("hideTm",setTimeout(function(){f.is(":visible")&&(i.find(".elfinder-cwd-file").off(n),i.find(".elfinder-cwd-file.ui-selected").one(n,function(t){if(!(t.originalEvent.touches.length>1)){var a=e(t.target);return!f.first().length||a.is("input:checkbox")||a.hasClass("elfinder-cwd-select")?void i.find(".elfinder-cwd-file").off(n):(t.stopPropagation(),C(t.originalEvent.touches[0].pageX,t.originalEvent.touches[0].pageY),i.data("longtap",!0),void a.one("touchend",function(){setTimeout(function(){i.removeData("longtap")},80)}))}}).one("unselect."+t.namespace,function(){i.find(".elfinder-cwd-file").off(n)}),f.fadeOut({duration:300,fail:function(){f.css("opacity","1").show()},done:function(){t.toHide(f)}}))},4500))},k=function(n){var i=n.keyCode,l=e.ui.keyCode.ESCAPE,c=e.ui.keyCode.ENTER,p=e.ui.keyCode.LEFT,h=e.ui.keyCode.RIGHT,f=e.ui.keyCode.UP,m=e.ui.keyCode.DOWN,g="ltr"===t.direction?h:p,v=g===h?p:h;e.inArray(i,[l,c,p,h,f,m])!==-1&&(n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),i==l||i===v?o&&r&&s?(s.trigger("mouseleave").trigger("submenuclose"),o.addClass(u),r=null,s=null):i==l&&z():i==f||i==m?r?(s&&s.trigger("mouseleave"),i==m&&(!s||r.length<=++r._cur)?r._cur=0:i==f&&(!s||--r._cur<0)&&(r._cur=r.length-1),s=r.eq(r._cur).trigger("mouseenter")):(r=null,o&&o.trigger("mouseleave"),i==m&&(!o||a.length<=++a._cur)?a._cur=0:i==f&&(!o||--a._cur<0)&&(a._cur=a.length-1),o=a.eq(a._cur).addClass(u)):!o||i!=c&&i!==g||(o.hasClass("elfinder-contextmenu-group")?s?i==c&&s.click():(o.trigger("mouseenter"),r=o.find("div."+d),r._cur=0,s=r.first().addClass(u)):i==c&&o.click()))},C=function(i,a,c){var d,p=f.outerWidth(),u=f.outerHeight(),h=n.attr("style"),m=n.offset(),v=n.width(),b=n.height(),y=t.UA.Mobile?40:2,w=t.UA.Mobile?20:2,i=i-(m?m.left:0),a=a-(m?m.top:0),c=Object.assign(c||{},{top:Math.max(0,a+w+u<b?a+w:a-(a+u-b)),left:Math.max(0,i<p+y||i+y+p<v?i+y:i-y-p),opacity:"1"});l=!0,t.autoSync("stop"),n.width(v),f.stop().removeAttr("style").css(c),t.toFront(f),f.show(),n.attr("style",h),c[g]=parseInt(f.width()),f.find(".elfinder-contextmenu-sub").css(c),t.UA.iOS&&e("div.elfinder div.overflow-scrolling-touch").css("-webkit-overflow-scrolling","auto"),o=null,r=null,s=null,e(document).on("keydown."+t.namespace,k),d=e._data(document).events,d&&d.keydown&&d.keydown.unshift(d.keydown.pop()),t.UA.Mobile&&x(),requestAnimationFrame(function(){t.getUI().one("click."+t.namespace,z)})},z=function(){if(t.getUI().off("click."+t.namespace,z),e(document).off("keydown."+t.namespace,k),j=O=null,f.is(":visible")||f.children().length){t.toHide(f.removeAttr("style").empty().removeData("submenuKeep"));try{f.draggable("instance")||f.draggable(h)}catch(n){f.hasClass("ui-draggable")||f.draggable(h)}f.data("prevNode")&&(f.data("prevNode").after(f),f.removeData("prevNode")),t.trigger("closecontextmenu"),t.UA.iOS&&e("div.elfinder div.overflow-scrolling-touch").css("-webkit-overflow-scrolling","touch")}l&&t.searchStatus.state<1&&!t.searchStatus.ininc&&t.autoSync(),l=!1},T=function(i,o){var r,s=!1,l=!1,h=[],g="cwd"===i,b=0;j=i,O=o,(r=t.option("uiCmdMap",g?void 0:o[0]))||(r={}),g||(h=t.getDisabledCmds(o)),b=t.selected().length,b>1&&f.append('<div class="ui-corner-top ui-widget-header elfinder-contextmenu-header"><span>'+t.i18n("selectedItems",""+b)+"</span></div>"),a=e(),e.each(v[i]||[],function(v,b){var x,k,C,T,A,j;if("|"===b)return void(s&&(l=!0));if(r[b]?(k=r[b],C=!0):k=b,x=t.getCommand(k),!x||g||t.searchStatus.state&&x.disableOnSearch||(x.__disabled=x._disabled,x._disabled=!(x.alwaysEnabled||!!t._commands[k]&&!(e.inArray(b,h)!==-1||C&&h[k])),e.each(x.linkedCmds,function(e,n){var i;(i=t.getCommand(n))&&(i.__disabled=i._disabled,i._disabled=!(i.alwaysEnabled||!!t._commands[n]&&!h[n]))})),x&&!x._disabled&&x.getstate(o)!=-1){if(x.variants){if(!x.variants.length)return;T=y(x.title,x.className?x.className:x.name,function(){},x.contextmenuOpts),A=e('<div class="ui-front ui-corner-all elfinder-contextmenu-sub"></div>').hide().css("max-height",t.getUI().height()-30).appendTo(T.append('<span class="elfinder-contextmenu-arrow"></span>')),j=function(e){if(e){var i=n.attr("style");n.width(n.width()),A.css({top:"-1000px",left:"auto",right:"auto"});var a,o,r=T.offset(),s=r.left,l=r.top,c=T.outerWidth(),d=A.outerWidth(!0),p=A.outerHeight(!0),u=n.offset(),h=u.left+n.width(),g=u.top+n.height(),v=m,b=c;m?(o=s+c+d-h,o>10&&(s>d-5?(b-=5,v=!1):t.UA.Mobile||(b=c-o))):(o=d-s,o>0&&(s+c+d-15<h?(b-=5,v=!0):t.UA.Mobile||(b=c-o))),o=l+5+p-g,a=o>0&&l<g?5-o:o>0?30-p:5,f.find(".elfinder-contextmenu-sub:visible").hide(),A.css({top:a,left:v?b:"auto",right:v?"auto":b,overflowY:"auto"}).show(),n.attr("style",i)}else A.hide()},T.addClass("elfinder-contextmenu-group").on("mouseleave",".elfinder-contextmenu-sub",function(e){f.data("draged")||f.removeData("submenuKeep")}).on("submenuclose",".elfinder-contextmenu-sub",function(e){j(!1)}).on("click","."+d,function(n){var a,r;n.stopPropagation(),f.data("draged")||(r=e(this),x.keepContextmenu?(r.removeClass(u),T.addClass(u)):f.hide(),a=r.data("exec"),"undefined"==typeof a&&(a={}),"object"==typeof a&&(a._userAction=!0,a._currentType=i,a._currentNode=r),!x.keepContextmenu&&z(),t.exec(x.name,o,a))}).on("touchend",function(e){f.data("drag")||(j(!0),f.data("submenuKeep",!0))}).on("mouseenter mouseleave",function(t){f.data("touching")||(T.data("timer")&&(clearTimeout(T.data("timer")),T.removeData("timer")),e(t.target).closest(".elfinder-contextmenu-sub",f).length||("mouseleave"===t.type?f.data("submenuKeep")||T.data("timer",setTimeout(function(){T.removeData("timer"),j(!1)},250)):T.data("timer",setTimeout(function(){T.removeData("timer"),j(!0)},a.find("div.elfinder-contextmenu-sub:visible").length?250:0))))}),e.each(x.variants,function(t,n){var i,a="|"===n?'<div class="elfinder-contextmenu-separator"></div>':e('<div class="'+c+" "+d+'"><span>'+n[1]+"</span></div>").data("exec",n[0]);"undefined"!=typeof n[2]&&(i=e("<span></span>").addClass("elfinder-button-icon elfinder-contextmenu-icon"),/\//.test(n[2])?i.css(w(n[2])):i.addClass("elfinder-button-icon-"+n[2]),a.prepend(i).addClass(d+"-icon")),A.append(a)})}else T=y(x.title,x.className?x.className:x.name,function(){f.data("draged")||(!x.keepContextmenu&&z(),t.exec(x.name,o,{_userAction:!0,_currentType:i,_currentNode:T}))},x.contextmenuOpts),x.extra&&x.extra.node?(e('<span class="elfinder-button-icon elfinder-button-icon-'+(x.extra.icon||"")+" "+p+'"></span>').append(x.extra.node).appendTo(T),e(x.extra.node).trigger("ready",{targets:o})):T.remove("."+p);x.extendsCmd&&T.children("span.elfinder-button-icon").addClass("elfinder-button-icon-"+x.extendsCmd),l&&f.append('<div class="elfinder-contextmenu-separator"></div>'),f.append(T),s=!0,l=!1}x&&"undefined"!=typeof x.__disabled&&(x._disabled=x.__disabled,delete x.__disabled,e.each(x.linkedCmds,function(e,n){var i;(i=t.getCommand(n))&&(i._disabled=i.__disabled,delete i.__disabled)}))}),a=f.children("div."+c)},A=function(t){j="raw",e.each(t,function(e,t){var n;"|"===t?f.append('<div class="elfinder-contextmenu-separator"></div>'):t.label&&"function"==typeof t.callback&&(n=y(t.label,t.icon,function(){f.data("draged")||(!t.remain&&z(),t.callback())},t.options||null),f.append(n))}),a=f.children("div."+c)},j=null,O=null;t.one("load",function(){n=t.getUI(),i=t.getUI("cwd"),t.bind("contextmenu",function(n){var a,o=n.data,r={};o.type&&"files"!==o.type&&i.trigger("unselectall"),z(),o.type&&o.targets?(t.trigger("contextmenucreate",o),T(o.type,o.targets),t.trigger("contextmenucreatedone",o)):o.raw&&A(o.raw),f.children().length&&(a=o.prevNode||null,a&&(f.data("prevNode",f.prev()),a.after(f)),o.fitHeight&&(r={maxHeight:Math.min(t.getUI().height(),e(window).height()),overflowY:"auto"},f.draggable("destroy").removeClass("ui-draggable")),C(o.x,o.y,r),o.opened&&"function"==typeof o.opened&&o.opened.call(f))}).one("destroy",function(){f.remove()}).bind("disable",z).bind("select",function(e){"files"===j&&(!e.data||e.data.selected.toString()!==O.toString())&&z()})}).shortcut({pattern:"mac"===t.OS?"ctrl+m":"contextmenu shift+f10",description:"contextmenu",callback:function(n){n.stopPropagation(),n.preventDefault(),e(document).one("contextmenu."+t.namespace,function(e){e.preventDefault(),e.stopPropagation()});var i,a,o,r,s=t.selected();s.length?(i="files",a=s,r=t.cwdHash2Elm(s[0])):(i="cwd",a=[t.cwd().hash],o=t.getUI("workzone").offset()),r&&r.length||(r=t.getUI("workzone")),o=r.offset(),o.top+=r.height()/2,o.left+=r.width()/2,t.trigger("contextmenu",{type:i,targets:a,x:o.left,y:o.top})}})})},e.fn.elfindercwd=function(t,n){return this.not(".elfinder-cwd").each(function(){var i,a,o,r,s,l,c,d=t.UA.Mobile,p="list"==t.viewType,u="select."+t.namespace,h="unselect."+t.namespace,f="disable."+t.namespace,m="enable."+t.namespace,g="class",v=t.res(g,"cwdfile"),b="."+v,y="ui-selected",w=t.res(g,"disabled"),x=t.res(g,"draggable"),k=t.res(g,"droppable"),C=t.res(g,"hover"),z=t.res(g,"active"),T=t.res(g,"adroppable"),A=v+"-tmp",j="elfinder-cwd-selectchk",O=t.options.loadTmbs>0?t.options.loadTmbs:5,S="",I={},M=[],F=[],E=void 0,D=[],U="",P=function(){for(var e="",t=0;t<D.length;t++)e+='<td class="elfinder-col-'+D[t]+'">{'+D[t]+"}</td>";return e},R=function(){return'<tr id="{id}" class="'+v+' {permsclass} {dirclass}" title="{tooltip}"{css}><td class="elfinder-col-name"><div class="elfinder-cwd-file-wrapper"><span class="elfinder-cwd-icon {mime}"{style}></span>{marker}<span class="elfinder-cwd-filename">{name}</span></div>'+q+"</td>"+P()+"</tr>"},q=e.map(n.showSelectCheckboxUA,function(e){return!(!t.UA[e]&&!e.match(/^all$/i))||null}).length?'<div class="elfinder-cwd-select"><input type="checkbox" class="'+j+'"></div>':"",H=!1,_=null,N={icon:'<div id="{id}" class="'+v+' {permsclass} {dirclass} ui-corner-all" title="{tooltip}"><div class="elfinder-cwd-file-wrapper ui-corner-all"><div class="elfinder-cwd-icon {mime} ui-corner-all" unselectable="on"{style}></div>{marker}</div><div class="elfinder-cwd-filename" title="{nametitle}">{name}</div>'+q+"</div>",row:""},L=t.res("tpl","perms"),W=t.res("tpl","lock"),B=t.res("tpl","symlink"),$={id:function(e){return t.cwdHash2Id(e.hash)},name:function(e){var n=t.escape(e.i18||e.name);return!p&&(n=n.replace(/([_.])/g,"&#8203;$1")),n},nametitle:function(e){return t.escape(e.i18||e.name)},permsclass:function(e){return t.perms2class(e)},perm:function(e){return t.formatPermissions(e)},dirclass:function(e){var i="directory"==e.mime?"directory":"";return e.isroot&&(i+=" isroot"),e.csscls&&(i+=" "+t.escape(e.csscls)),n.getClass&&(i+=" "+n.getClass(e)),i},style:function(e){return e.icon?t.getIconStyle(e):""},mime:function(e){var n=t.mime2class(e.mime);return e.icon&&(n+=" elfinder-cwd-bgurl"),n},size:function(e){return"directory"!==e.mime||e.size?t.formatSize(e.size):"-";
},date:function(e){return t.formatDate(e)},kind:function(e){return t.mime2kind(e)},mode:function(e){return e.perm?t.formatFileMode(e.perm):""},modestr:function(e){return e.perm?t.formatFileMode(e.perm,"string"):""},modeoct:function(e){return e.perm?t.formatFileMode(e.perm,"octal"):""},modeboth:function(e){return e.perm?t.formatFileMode(e.perm,"both"):""},marker:function(e){return(e.alias||"symlink-broken"==e.mime?B:"")+(e.read&&e.write?"":L)+(e.locked?W:"")},tooltip:function(e){var n=t.formatDate(e)+(e.size>0?" ("+t.formatSize(e.size)+")":""),i="";return i=S&&e.path?t.escape(e.path.replace(/\/[^\/]*$/,"")):e.tooltip?t.escape(e.tooltip).replace(/\r/g,"&#13;"):"",p&&(i+=(i?"&#13;":"")+t.escape(e.i18||e.name)),i?i+"&#13;"+n:n}},V={},K=function(n,i){var o,r,s;if(n&&!V[n]&&("undefined"==typeof a&&(e("#elfinderAddBadgeStyle"+t.namespace).length&&e("#elfinderAddBadgeStyle"+t.namespace).remove(),a=e('<style id="addBadgeStyle'+t.namespace+'"></style>').insertBefore(e("head").children(":first")).get(0).sheet||null),a)){if(n=n.toLowerCase(),s=n.split("/"),r=t.escape(t.mimeTypes[n]||(i.replace(/.bac?k$/i,"").match(/\.([^.]+)$/)||["",""])[1])){o=".elfinder-cwd-icon-"+s[0].replace(/(\.|\+)/g,"-"),"undefined"!=typeof s[1]&&(o+=".elfinder-cwd-icon-"+s[1].replace(/(\.|\+)/g,"-"));try{a.insertRule(o+':before{content:"'+r.toLowerCase()+'"}',0)}catch(l){}}V[n]=!0}},X=function(e){return e.mime&&"directory"!==e.mime&&!V[e.mime]&&K(e.mime,e.name),N[p?"row":"icon"].replace(/\{([a-z0-9_]+)\}/g,function(n,i){return $[i]?$[i](e,t):e[i]?e[i]:""})},J=e(),G=!1,Y=function(t,n){function i(e,t){return e[t+"All"]("[id]:not(."+w+"):not(.elfinder-cwd-parent):first")}var a,o,r,s,l,c=e.ui.keyCode,d=t==c.LEFT||t==c.UP,f=Ue.find("[id]."+y);if(f.length)if(a=f.filter(d?":first":":last"),r=i(a,d?"prev":"next"),r.length)if(p||t==c.LEFT||t==c.RIGHT)o=r;else if(s=a.position().top,l=a.position().left,o=a,d){do o=o.prev("[id]");while(o.length&&!(o.position().top<s&&o.position().left<=l));o.hasClass(w)&&(o=i(o,"next"))}else{do o=o.next("[id]");while(o.length&&!(o.position().top>s&&o.position().left>=l));o.hasClass(w)&&(o=i(o,"prev")),o.length||(r=Ue.find("[id]:not(."+w+"):last"),r.position().top>s&&(o=r))}else o=a;else o=J.length?d?J.prev():J:Ue.find("[id]:not(."+w+"):not(.elfinder-cwd-parent):"+(d?"last":"first"));o&&o.length&&!o.hasClass("elfinder-cwd-parent")&&(a&&n?o=a.add(a[d?"prevUntil":"nextUntil"]("#"+o.attr("id"))).add(o):f.trigger(h),o.trigger(u),re(o.filter(d?":first":":last")),oe())},Q={},Z=function(e){t.cwdHash2Elm(e).trigger(u)},ee=!1,te=function(){t.cwd().hash;q&&qe.find("input").prop("checked",!0),t.lazy(function(){var n;t.maxTargets&&(E||F).length>t.maxTargets?(ne({notrigger:!0}),n=e.map(E||F,function(e){return t.file(e)||null}),n=n.slice(0,t.maxTargets),Q={},e.each(n,function(e,n){Q[n.hash]=!0,t.cwdHash2Elm(n.hash).trigger(u)}),t.toast({mode:"warning",msg:t.i18n(["errMaxTargets",t.maxTargets])})):(Ue.find("[id]:not(."+y+"):not(.elfinder-cwd-parent)").trigger(u),Q=t.arrayFlip(E||F,!0)),oe(),q&&qe.data("pending",!1)},0,{repaint:!0})},ne=function(e){var t=e||{};q&&qe.find("input").prop("checked",!1),Object.keys(Q).length&&(G=!1,Q={},Ue.find("[id]."+y).trigger(h),q&&Ue.find("input:checkbox."+j).prop("checked",!1)),!t.notrigger&&oe(),q&&qe.data("pending",!1),Ue.removeClass("elfinder-cwd-allselected")},ie=function(){var n={};ee?ne():Object.keys(Q).length?(e.each(E||F,function(e,i){var a=t.cwdHash2Elm(i);Q[i]?a.length&&a.trigger(h):(n[i]=!0,a.length&&a.trigger(u))}),Q=n,oe()):te()},ae=void 0,oe=function(){var e=Object.keys(Q),n={selected:e,origin:"cwd"};ge&&(e.length>1||e[0]!==t.cwdId2Hash(ge.attr("id")))&&ge.hasClass(y)&&ge.trigger(h),ee=e.length&&e.length===(E||F).length&&(!t.maxTargets||e.length<=t.maxTargets),q&&(qe.find("input").prop("checked",ee),Ue[ee?"addClass":"removeClass"]("elfinder-cwd-allselected")),ee?n.selectall=!0:e.length||(n.unselectall=!0),t.trigger("select",n)},re=function(e,n){if(e.length){var i=e.position().top,a=e.outerHeight(!0),o=Pe.scrollTop(),r=Pe.get(0).clientHeight,s=we?we.outerHeight(!0):0;i+s+a>o+r?Pe.scrollTop(parseInt(i+s+a-r)):i<o&&Pe.scrollTop(i),p&&Pe.scrollLeft(0),!!n&&t.resources.blink(e,"lookme")}},se=[],le={},ce=function(e){for(var t=se.length;t--;)if(se[t].hash==e)return t;return-1},de="elfscrstart",pe="elfscrstop",ue=!1,he={disabled:!0,filter:"[id]:first",stop:oe,delay:250,appendTo:"body",autoRefresh:!1,selected:function(t,n){e(n.selected).trigger(u)},unselected:function(t,n){e(n.unselected).trigger(h)}},fe={},me=function(a,o){if(le.renderd){var r=(p?Ue.find("tbody:first"):Ue).children("[id]"+(n.oldSchool?":not(.elfinder-cwd-parent)":"")+":first");if(r.length){var s,l,c=Ue.data("selectable"),d=function(){var n=Pe.offset(),a=Pe.width(),o=e(window),s=r.width()/2,l=Math.min(n.left-o.scrollLeft()+("ltr"===t.direction?s:a-s),n.left+a-10),c=n.top-o.scrollTop()+10+(p?i:0);return{left:Math.max(0,Math.round(l)),top:Math.max(0,Math.round(c))}}(),u=a?r:e(document.elementFromPoint(d.left,d.top)),h={},f={},m=5,g=Math.ceil((le.hpi?Math.ceil(Le.data("rectangle").height/le.hpi*1.5):be)/m),y=function(){var e,n,i;for(i=0;i<m&&(e=u.attr("id"),e&&(le.getTmbs=[],n=t.cwdId2Hash(e),fe[n]=e,le.attachTmbs[n]&&(f[n]=le.attachTmbs[n]),c&&(h[e]=!0)),u=u.next(),u.length);i++);},w=function(){var e;Ue.data("selectable")&&(Object.assign(h,Q),e=Object.keys(h),e.length&&(he.filter="#"+e.join(", #"),Ue.selectable("enable").selectable("option",{filter:he.filter}).selectable("refresh"))),Object.keys(f).length&&(le.getTmbs=[],Ae(f))},x=function(){u.hasClass(v)||(u=u.closest(b))};if(fe={},c&&Ue.selectable("option","disabled"),u.length&&(u.hasClass(v)||u.closest(b).length||(l=t.getUI().find(".ui-dialog:visible,.ui-widget:visible"),l.length?(l.hide(),u=e(document.elementFromPoint(d.left,d.top)),l.show()):l=null),x(),u.length||(l&&l.hide(),u=e(document.elementFromPoint(d.left,d.top+5)),l&&l.show(),x())),u.length){if(u.attr("id"))if(a){for(var k=0;k<g&&(y(),u.length);k++);w()}else le.repaintJob&&"pending"===le.repaintJob.state()&&le.repaintJob.reject(),s=new Array(g),le.repaintJob=t.asyncJob(function(){y(),u.length||(w(),le.repaintJob&&"pending"===le.repaintJob.state()&&le.repaintJob.reject())},s).done(w)}else a&&le.renderd&&(o=o||0,o<10&&requestAnimationFrame(function(){me(a,++o)}))}}},ge=null,ve=function(n){var i=t.cwd().phash,a=t.file(i)||null,o=function(n){n&&(ge=e(X(e.extend(!0,{},n,{name:"..",i18:"..",mime:"directory"}))).addClass("elfinder-cwd-parent").on("dblclick",function(){t.trigger("select",{selected:[i]}).exec("open",i)}),(p?ge.children("td:first"):ge).children(".elfinder-cwd-select").remove(),t.cwdHash2Elm(i).length?t.cwdHash2Elm(i).replaceWith(ge):(p?Ue.find("tbody"):Ue).prepend(ge),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1))};a?o(a):(o({hash:i,read:!0,write:!0}),t.getUI("tree").length?t.one("parents",function(){o(t.file(i)||null),Pe.trigger(pe)}):t.request({data:{cmd:"parents",target:t.cwd().hash},preventFail:!0}).done(function(e){o(t.file(i)||null),Pe.trigger(pe)}))},be=t.options.showFiles,ye=function(){if(!(le.rendering||le.renderd&&!se.length)){var i,a,o=p?Ue.children("table").children("tbody"):Ue,r=!!e.htmlPrefilter,s=e(r?document.createDocumentFragment():"<div></div>"),l=function(n){var i,a,l,c=n||null,h=[],f=!1,m={},g="self"===t.option("tmbUrl"),v=!le.renderd;i=se.splice(0,be+(c||0)/(le.hpi||1)),le.renderd+=i.length,se.length||(Re.hide(),Pe.off(pe,ye)),a=[],h=e.map(i,function(e){return e.hash&&e.name?("directory"==e.mime&&(f=!0),(e.tmb&&(1!=e.tmb||e.size>0)||g&&0===e.mime.indexOf("image/"))&&(m[e.hash]=e.tmb||"self"),I[e.hash]&&a.push(e.hash),X(e)):null}),s.empty().append(h.join("")),f&&!d&&Te(s),l=[],Object.keys(Q).length&&s.find("[id]:not(."+y+"):not(.elfinder-cwd-parent)").each(function(){Q[t.cwdId2Hash(this.id)]&&l.push(e(this))}),o.append(r?s:s.children()),l.length&&(e.each(l,function(e,t){t.trigger(u)}),oe()),a.length&&t.trigger("lockfiles",{files:a}),!le.hpi&&Fe(o,i.length),p&&(Ue.find("thead").show(),ke({fitWidth:!_})),Object.keys(m).length&&Object.assign(le.attachTmbs,m),v&&(d||Ue.data("selectable")||Ue.selectable(he).data("selectable",!0)),!ue&&Pe.trigger(pe)};le.renderd||(le.rendering=!0,Pe.scrollTop(0),i=t.cwd().phash,l(),n.oldSchool&&(i&&!S?ve(i):ge=e()),p&&(_&&Ce(),ke({fitWidth:!0})),le.itemH=(p?o.find("tr:first"):o.find("[id]:first")).outerHeight(!0),t.trigger("cwdrender"),le.rendering=!1,me(!0)),!le.rendering&&se.length?(a=Pe.height()+Pe.scrollTop()+t.options.showThreshold+le.row-le.renderd*le.hpi)>0?(le.rendering=!0,t.lazy(function(){l(a),le.rendering=!1})):!t.enabled()&&_e():_e()}},we=null,xe=t.UA.CSS.positionSticky&&t.UA.CSS.widthMaxContent,ke=function(a){if(i=0,n.listView.fixedHeader){var o,r,s,l,c,d,p,u,h,f,m,g,v,b=function(){var e,n;n="ltr"===t.direction?"left":"right",e=("ltr"===t.direction?Pe.scrollLeft():s.outerWidth(!0)-Pe.width()-Pe.scrollLeft())*-1,r.css(n)!==e&&r.css(n,e)},y=a||{};if(c=Ue.find("tbody"),u=c.children("tr:first"),u.length&&u.is(":visible")){if(s=c.parent(),we?(l=e("#"+t.namespace+"-cwd-thead"),p=l.children("tr:first")):(v=!0,c.addClass("elfinder-cwd-fixheader"),l=Ue.find("thead").attr("id",t.namespace+"-cwd-thead"),p=l.children("tr:first"),d=p.outerHeight(!0),Ue.css("margin-top",d-parseInt(s.css("padding-top"))),xe?(we=e('<div class="elfinder-table-header-sticky"></div>').addClass(Ue.attr("class")).append(e("<table></table>").append(l)),Ue.after(we),Pe.on("resize.fixheader",function(e){e.stopPropagation(),ke({fitWidth:!0})})):(r=e("<div></div>").addClass(Ue.attr("class")).append(e("<table></table>").append(l)),we=e("<div></div>").addClass(Pe.attr("class")+" elfinder-cwd-fixheader").removeClass("ui-droppable native-droppable").css(Pe.position()).css({height:d,width:Ue.outerWidth()}).append(r),"rtl"===t.direction&&we.css("left",Pe.data("width")-Pe.width()+"px"),b(),Pe.after(we).on("scroll.fixheader resize.fixheader",function(e){b(),"resize"===e.type&&(e.stopPropagation(),we.css(Pe.position()),Pe.data("width",Pe.css("overflow","hidden").width()),Pe.css("overflow","auto"),ke())}))),v||y.fitWidth||Math.abs(u.outerWidth()-p.outerWidth())>2){o=D.length+1;for(var w=0;w<o&&(h=p.children("td:eq("+w+")"),f=u.children("td:eq("+w+")"),m=h.width(),g=f.width(),"undefined"==typeof h.data("delta")&&h.data("delta",h.outerWidth()-m-(f.outerWidth()-g)),g-=h.data("delta"),v||y.fitWidth||m!==g);w++)h.css("width",g+"px")}xe||(we.data("widthTimer")&&cancelAnimationFrame(we.data("widthTimer")),we.data("widthTimer",requestAnimationFrame(function(){we&&(we.css("width",We.width()+"px"),"rtl"===t.direction&&we.css("left",Pe.data("width")-Pe.width()+"px"))}))),i=l.height()}}},Ce=function(){if(p&&_){var t,n="elfinder-cwd-colwidth",i=Ue.find("tr[id]:first");i.hasClass(n)||(t=Ue.find("tr."+n),t.removeClass(n).find("td").css("width",""),i.addClass(n),Ue.find("table:first").css("table-layout","fixed"),e.each(e.merge(["name"],D),function(e,t){var n=_[t]||i.find("td.elfinder-col-"+t).width();i.find("td.elfinder-col-"+t).width(n)}))}},ze=Object.assign({},t.droppable,{over:function(n,i){var a,o,r,s=e(this),l=i.helper,c=t._commands.copy&&(n.shiftKey||n.ctrlKey||n.metaKey);return n.stopPropagation(),l.data("dropover",l.data("dropover")+1),s.data("dropover",!0),l.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),l.data("namespace")===t.namespace&&t.insideWorkzone(n.pageX,n.pageY)?(s.hasClass(t.res(g,"cwdfile"))?(a=t.cwdId2Hash(s.attr("id")),s.data("dropover",a)):(a=t.cwd().hash,t.cwd().write&&s.data("dropover",a)),r=t.file(l.data("files")[0]).phash===a,s.data("dropover")===a?e.each(l.data("files"),function(e,t){if(t===a||r&&!c&&!l.hasClass("elfinder-drag-helper-plus"))return s.removeClass(T),!1}):s.removeClass(T),l.data("locked")||r?o="elfinder-drag-helper-plus":(o="elfinder-drag-helper-move",c&&(o+=" elfinder-drag-helper-plus")),s.hasClass(T)&&l.addClass(o),void requestAnimationFrame(function(){s.hasClass(T)&&l.addClass(o)})):void s.removeClass(T)},out:function(t,n){var i=n.helper;t.stopPropagation(),i.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus").data("dropover",Math.max(i.data("dropover")-1,0)),e(this).removeData("dropover").removeClass(T)},deactivate:function(){e(this).removeData("dropover").removeClass(T)},drop:function(e,n){ne({notrigger:!0}),t.droppable.drop.call(this,e,n)}}),Te=function(n){n=n?n:p?Ue.find("tbody"):Ue;var i=n.children(".directory:not(."+k+",.elfinder-na,.elfinder-ro)");t.isCommandEnabled("paste")&&i.droppable(ze),t.isCommandEnabled("upload")&&i.addClass("native-droppable"),n.children(".isroot").each(function(n,i){var a=e(i),o=t.cwdId2Hash(i.id);t.isCommandEnabled("paste",o)?a.hasClass(k+",elfinder-na,elfinder-ro")||a.droppable(ze):a.hasClass(k)&&a.droppable("destroy"),t.isCommandEnabled("upload",o)?a.hasClass("native-droppable,elfinder-na,elfinder-ro")||a.addClass("native-droppable"):a.hasClass("native-droppable")&&a.removeClass("native-droppable")})},Ae=function(n,i){var a=function(t,n){e("<img/>").on("load",function(){t.find(".elfinder-cwd-icon").addClass(n.className).css("background-image","url('"+n.url+"')")}).attr("src",n.url)},o=function(e,n){var o,r,s=t.cwdHash2Elm(e);s.length&&("1"!=n?(o=t.file(e),o.tmb!==n&&(o.tmb=n),r=t.tmb(o),i?s.find(".elfinder-cwd-icon").addClass(r.className).css("background-image","url('"+r.url+"')"):a(s,r),delete le.attachTmbs[e]):i?je([e]):le.tmbLoading[e]||le.getTmbs.push(e))};e.isPlainObject(n)&&Object.keys(n).length&&(Object.assign(le.attachTmbs,n),e.each(n,o),i||!le.getTmbs.length||Object.keys(le.tmbLoading).length||je())},je=function(n){var i=[],a=!1;return t.oldAPI?void t.request({data:{cmd:"tmb",current:t.cwd().hash},preventFail:!0}).done(function(e){e.images&&Object.keys(e.images).length&&Ae(e.images),e.tmb&&je()}):(n?(a=!0,i=n.splice(0,O)):i=le.getTmbs.splice(0,O),void(i.length&&(a||fe[i[0]]||fe[i[i.length-1]])&&(e.each(i,function(e,t){le.tmbLoading[t]=!0}),t.request({data:{cmd:"tmb",targets:i},preventFail:!0}).done(function(t){var o,r=[];t.images&&((o=Object.keys(t.images).length)?(o<i.length&&e.each(i,function(e,n){t.images[n]||r.push(n)}),Ae(t.images,a)):r=i,r.length&&e.each(r,function(e,t){delete le.attachTmbs[t]})),a&&n.length&&je(n)}).always(function(){le.tmbLoading={},!a&&le.getTmbs.length&&je()}))))},Oe=function(n,i){var a,o,r,s,l,c,u=p?Ue.find("tbody"):Ue,h=n.length,f={},m=function(e){for(var n,i=Ue.find("[id]:first");i.length;){if(n=t.file(t.cwdId2Hash(i.attr("id"))),!i.hasClass("elfinder-cwd-parent")&&n&&t.compare(e,n)<0)return i;i=i.next("[id]")}},g=function(e){var n,i=se.length;for(n=0;n<i;n++)if(t.compare(e,se[n])<0)return n;return i||-1},v=!!e.htmlPrefilter,b=e(v?document.createDocumentFragment():"<div></div>");if(h>be)De(),Q=t.arrayFlip(e.map(n,function(e){return e.hash}),!0),oe();else{for(h&&Le.removeClass("elfinder-cwd-wrapper-empty"),c="self"===t.option("tmbUrl");h--;)a=n[h],o=a.hash,t.cwdHash2Elm(o).length||((r=m(a))&&!r.length&&(r=null),!r&&(l=g(a))>=0?se.splice(l,0,a):(b.empty().append(X(a)),"directory"===a.mime&&!d&&Te(b),s=v?b:b.children(),r?r.before(s):u.append(s),++le.renderd),t.cwdHash2Elm(o).length&&(a.tmb&&(1!=a.tmb||a.size>0)||c&&0===a.mime.indexOf("image/"))&&(f[o]=a.tmb||"self"));p&&(Ce(),ke({fitWidth:!_})),Fe(u),Object.keys(f).length&&(Object.assign(le.attachTmbs,f),se.length<1&&je())}},Se=function(n){var i,a,o,r,s=n.length,l=t.searchStatus.state>1,c=t.getCommand(t.currentReqCmd)||{};if(!t.cwd().hash&&!c.noChangeDirOnRemovedCwd)return e.each(M.reverse(),function(e,n){if(t.file(n))return r=!0,t.one(t.currentReqCmd+"done",function(){!t.cwd().hash&&t.exec("open",n)}),!1}),void(!r&&!t.cwd().hash&&t.exec("open",t.roots[Object.keys(t.roots)[0]]));for(;s--;){if(i=n[s],(a=t.cwdHash2Elm(i)).length)try{a.remove(),--le.renderd}catch(d){t.debug("error",d)}else(o=ce(i))!==-1&&se.splice(o,1);Q[i]&&delete Q[i],l&&(o=e.inArray(i,F))!==-1&&F.splice(o,1)}l&&t.trigger("cwdhasheschange",F),p&&(Ce(),ke({fitWidth:!_}))},Ie=function(){for(var e="",n="",i=0;i<D.length;i++)e=t.getColumnName(D[i]),n+='<td class="elfinder-cwd-view-th-'+D[i]+' sortable-item">'+e+"</td>";return n},Me=function(e){var t,n;e.height||(t=p?Ue.find("tbody"):Ue,n=t.find(p?"tr:first":"[id]:first"),e.height=n.outerHeight(!0),p||(e.width=n.outerWidth(!0)))},Fe=function(e,n){var i,a=e||(p?Ue.find("tbody"):Ue),o=Ve[t.viewType],r=1;se.length>0&&(le.hpi?p||(r=Math.floor(a.width()/o.width)):(Me(o),p?le.row=le.hpi=o.height:(r=Math.floor(a.width()/o.width),le.row=o.height,le.hpi=le.row/r)),i=Math.ceil((se.length+(n||0))/r),p&&we&&++i,Re.css({top:le.row*i+"px"}).show())},Ee={contextmenu:function(e){return e.preventDefault(),void 0!==Ue.data("longtap")?void e.stopPropagation():void t.trigger("contextmenu",{type:"cwd",targets:[t.cwd().hash],x:e.pageX,y:e.pageY})},touchstart:function(e){e.originalEvent.touches.length>1||(Ue.data("longtap")!==!1&&(Pe.data("touching",{x:e.originalEvent.touches[0].pageX,y:e.originalEvent.touches[0].pageY}),Ue.data("tmlongtap",setTimeout(function(){Ue.data("longtap",!0),t.trigger("contextmenu",{type:"cwd",targets:[t.cwd().hash],x:Pe.data("touching").x,y:Pe.data("touching").y})},500))),Ue.data("longtap",null))},touchend:function(e){"touchmove"===e.type?(!Pe.data("touching")||Math.abs(Pe.data("touching").x-e.originalEvent.touches[0].pageX)+Math.abs(Pe.data("touching").y-e.originalEvent.touches[0].pageY)>4)&&Pe.data("touching",null):setTimeout(function(){Ue.removeData("longtap")},80),clearTimeout(Ue.data("tmlongtap"))},click:function(e){Ue.data("longtap")&&(e.preventDefault(),e.stopPropagation())}},De=function(){t.lazy(function(){var n;Le.append(qe).removeClass("elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result"),(t.searchStatus.state>1||t.searchStatus.ininc)&&Le.addClass("elfinder-search-result"+(t.searchStatus.ininc?" elfinder-"+("/"===S.substr(0,1)?"let":"inc")+"search-result":"")),le.attachThumbJob&&le.attachThumbJob._abort(),Ue.data("selectable")&&Ue.selectable("disable").selectable("destroy").removeData("selectable"),t.trigger("cwdinit"),J=e();try{Ue.empty()}catch(i){Ue.html("")}we&&(Pe.off("scroll.fixheader resize.fixheader"),we.remove(),we=null),Ue.removeClass("elfinder-cwd-view-icons elfinder-cwd-view-list").addClass("elfinder-cwd-view-"+(p?"list":"icons")).attr("style","").css("height","auto"),Re.hide(),Pe[p?"addClass":"removeClass"]("elfinder-cwd-wrapper-list")._padding=parseInt(Pe.css("padding-top"))+parseInt(Pe.css("padding-bottom")),t.UA.iOS&&Pe.removeClass("overflow-scrolling-touch").addClass("overflow-scrolling-touch"),p&&(Ue.html("<table><thead></thead><tbody></tbody></table>"),n=e('<tr class="ui-state-default"><td class="elfinder-cwd-view-th-name">'+t.getColumnName("name")+"</td>"+Ie()+"</tr>"),Ue.find("thead").hide().append(n).find("td:first").append(qe),e.fn.sortable&&n.addClass("touch-punch touch-punch-keep-default").sortable({axis:"x",distance:8,items:"> .sortable-item",start:function(t,n){e(n.item[0]).data("dragging",!0),n.placeholder.width(n.helper.removeClass("ui-state-hover").width()).removeClass("ui-state-active").addClass("ui-state-hover").css("visibility","visible")},update:function(n,i){var a,o,r=e(i.item[0]).attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","");D=e.map(e(this).children(),function(t){var n=e(t).attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","");return o||(r===n?o=!0:a=n),"name"===n?null:n}),N.row=R(),t.storage("cwdCols",D),a=".elfinder-col-"+a+":first",r=".elfinder-col-"+r+":first",t.lazy(function(){Ue.find("tbody tr").each(function(){var t=e(this);t.children(a).after(t.children(r))})})},stop:function(t,n){setTimeout(function(){e(n.item[0]).removeData("dragging")},100)}}),n.find("td").addClass("touch-punch").resizable({handles:"ltr"===t.direction?"e":"w",start:function(t,n){var i=Ue.find("td.elfinder-col-"+n.element.attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","")+":first");n.element.data("dragging",!0).data("resizeTarget",i).data("targetWidth",i.width()),H=!0,"fixed"!==Ue.find("table").css("table-layout")&&(Ue.find("tbody tr:first td").each(function(){e(this).width(e(this).width())}),Ue.find("table").css("table-layout","fixed"))},resize:function(e,t){t.element.data("resizeTarget").width(t.element.data("targetWidth")-(t.originalSize.width-t.size.width))},stop:function(n,i){H=!1,ke({fitWidth:!0}),_={},Ue.find("tbody tr:first td").each(function(){var t=e(this).attr("class").split(" ")[0].replace("elfinder-col-","");_[t]=e(this).width()}),t.storage("cwdColWidth",_),setTimeout(function(){i.element.removeData("dragging")},100)}}).find(".ui-resizable-handle").addClass("ui-icon ui-icon-grip-dotted-vertical")),se=e.map(E||F,function(e){return t.file(e)||null}),se=t.sortFiles(se),E?E=e.map(se,function(e){return e.hash}):F=e.map(se,function(e){return e.hash}),le={renderd:0,attachTmbs:{},getTmbs:[],tmbLoading:{},lazyOpts:{tm:0}},Le[se.length<1?"addClass":"removeClass"]("elfinder-cwd-wrapper-empty"),Pe.off(pe,ye).on(pe,ye).trigger(pe),t.cwd().write?(Pe[t.isCommandEnabled("upload")?"addClass":"removeClass"]("native-droppable"),Pe.droppable(t.isCommandEnabled("paste")?"enable":"disable")):Pe.removeClass("native-droppable").droppable("disable").removeClass("ui-state-disabled")})},Ue=e(this).addClass("ui-helper-clearfix elfinder-cwd").attr("unselectable","on").on("click."+t.namespace,b,function(n){var i,a,o,r,s,l=this.id?e(this):e(this).parents("[id]:first"),c=e(n.target);if(q&&(c.is("input:checkbox."+j)||c.hasClass("elfinder-cwd-select")))return n.stopPropagation(),n.preventDefault(),l.trigger(l.hasClass(y)?h:u),oe(),void requestAnimationFrame(function(){c.prop("checked",l.hasClass(y))});if(Ue.data("longtap")||c.hasClass("elfinder-cwd-nonselect"))return void n.stopPropagation();if(U||(U=l.attr("id"),setTimeout(function(){U=""},500)),n.shiftKey&&(i=l.prevAll(ae||"."+y+":first"),a=l.nextAll(ae||"."+y+":first"),o=i.length,r=a.length),n.shiftKey&&(o||r))s=o?l.prevUntil("#"+i.attr("id")):l.nextUntil("#"+a.attr("id")),s=s.add(l),o||(s=e(s.get().reverse())),s.trigger(u);else if(n.ctrlKey||n.metaKey)l.trigger(l.hasClass(y)?h:u);else{if(Pe.data("touching")&&l.hasClass(y))return Pe.data("touching",null),void t.dblclick({file:t.cwdId2Hash(this.id)});ne({notrigger:!0}),l.trigger(u)}oe()}).on("dblclick."+t.namespace,b,function(n){if(U){var i=t.cwdId2Hash(U);n.stopPropagation(),this.id!==U&&(e(this).trigger(h),e("#"+U).trigger(u),oe()),t.dblclick({file:i})}}).on("touchstart."+t.namespace,b,function(n){if(!(n.originalEvent.touches.length>1)){var i,a=this.id?e(this):e(this).parents("[id]:first"),o=e(n.target),r=n.target.nodeName;if("INPUT"===r&&"text"===n.target.type||"TEXTAREA"===r||o.hasClass("elfinder-cwd-nonselect"))return void n.stopPropagation();if(a.find("input:text,textarea").length)return n.stopPropagation(),void n.preventDefault();Pe.data("touching",{x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY}),q&&(o.is("input:checkbox."+j)||o.hasClass("elfinder-cwd-select"))||(i=a.prevAll("."+y+":first").length+a.nextAll("."+y+":first").length,Ue.data("longtap",null),(Object.keys(Q).length||p&&"TD"!==n.target.nodeName||!p&&this!==n.target)&&(Ue.data("longtap",!1),a.addClass(C),a.data("tmlongtap",setTimeout(function(){Ue.data("longtap",!0),a.trigger(u),oe(),t.trigger("contextmenu",{type:"files",targets:t.selected(),x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY})},500))))}}).on("touchmove."+t.namespace+" touchend."+t.namespace,b,function(n){var i,a=e(n.target);if(!q||!a.is("input:checkbox."+j)&&!a.hasClass("elfinder-cwd-select")){if("INPUT"==n.target.nodeName||"TEXTAREA"==n.target.nodeName)return void n.stopPropagation();i=this.id?e(this):e(this).parents("[id]:first"),clearTimeout(i.data("tmlongtap")),"touchmove"===n.type?(Pe.data("touching",null),i.removeClass(C)):(Pe.data("touching")&&!Ue.data("longtap")&&i.hasClass(y)&&(n.preventDefault(),Pe.data("touching",null),t.dblclick({file:t.cwdId2Hash(this.id)})),setTimeout(function(){Ue.removeData("longtap")},80))}}).on("mouseenter."+t.namespace,b,function(i){if(!ue){var a=e(this),o=null;if(!(d||a.data("dragRegisted")||a.hasClass(A)||a.hasClass(x)||a.hasClass(w))){if(a.data("dragRegisted",!0),!t.isCommandEnabled("copy",t.searchStatus.state>1||a.hasClass("isroot")?t.cwdId2Hash(a.attr("id")):void 0)&&!t.isCommandEnabled("cut",t.searchStatus.state>1||a.hasClass("isroot")?t.cwdId2Hash(a.attr("id")):void 0))return;a.on("mousedown",function(i){var o=n.metakeyDragout&&!t.UA.IE&&(i.shiftKey||i.altKey),r=!1;o&&Ue.data("selectable")&&(Ue.selectable("disable").selectable("destroy").removeData("selectable"),requestAnimationFrame(function(){Ue.selectable(he).selectable("option",{disabled:!1}).selectable("refresh").data("selectable",!0)})),a.removeClass("ui-state-disabled"),o?a.draggable("option","disabled",!0).attr("draggable","true"):(a.hasClass(y)||(r=p?e(i.target).closest("span,tr").is("tr"):e(i.target).hasClass("elfinder-cwd-file")),r?a.draggable("option","disabled",!0).removeClass("ui-state-disabled"):a.draggable("option","disabled",!1).removeAttr("draggable").draggable("option","cursorAt",{left:50-parseInt(e(i.currentTarget).css("margin-left")),top:47}))}).on("dragstart",function(n){var i=n.dataTransfer||n.originalEvent.dataTransfer||null;if(o=null,i&&!t.UA.IE){var a,r=this.id?e(this):e(this).parents("[id]:first"),s=e("<span>"),l="",c=null,d=null,p=[],h=function(n){var i,a=n.mime,o=t.tmb(n);return i='<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+t.mime2class(a)+' ui-corner-all"></div>',o&&(i=e(i).addClass(o.className).css("background-image","url('"+o.url+"')").get(0).outerHTML),i},f=[];if(r.trigger(u),oe(),e.each(Q,function(n){var i=t.file(n),a=i.url;if(i&&"directory"!==i.mime){if(a){if("1"==a)return f.push(n),!0}else a=t.url(i.hash);a&&(a=t.convAbsUrl(a),p.push(n),e("<a>").attr("href",a).text(a).appendTo(s),l+=a+"\n",c||(c=i.mime+":"+i.name+":"+a),d||(d=a+"\n"+i.name))}}),f.length)return e.each(f,function(e,n){var i=t.file(n);i.url="",t.request({data:{cmd:"url",target:n},notify:{type:"url",cnt:1},preventDefault:!0}).always(function(e){i.url=e.url?e.url:"1"})}),!1;if(!l)return!1;i.setDragImage&&(o=e('<div class="elfinder-drag-helper html5-native"></div>').append(h(t.file(p[0]))).appendTo(e(document.body)),(a=p.length)>1&&o.append(h(t.file(p[a-1]))+'<span class="elfinder-drag-num">'+a+"</span>"),i.setDragImage(o.get(0),50,47)),i.effectAllowed="copyLink",i.setData("DownloadURL",c),i.setData("text/x-moz-url",d),i.setData("text/uri-list",l),i.setData("text/plain",l),i.setData("text/html",s.html()),i.setData("elfinderfrom",window.location.href+t.cwd().hash),i.setData("elfinderfrom:"+i.getData("elfinderfrom"),"")}}).on("dragend",function(e){ne({notrigger:!0}),o&&o.remove()}).draggable(t.draggable)}}}).on(u,b,function(n){var i=e(this),a=t.cwdId2Hash(i.attr("id"));G||i.hasClass(w)||(ae="#"+this.id,i.addClass(y).children().addClass(C).find("input:checkbox."+j).prop("checked",!0),Q[a]||(Q[a]=!0),J=Ue.find("[id]."+y+":last").next())}).on(h,b,function(n){var i=e(this),a=t.cwdId2Hash(i.attr("id"));G||(i.removeClass(y).children().removeClass(C).find("input:checkbox."+j).prop("checked",!1),Ue.hasClass("elfinder-cwd-allselected")&&(q&&qe.children("input").prop("checked",!1),Ue.removeClass("elfinder-cwd-allselected")),Q[a]&&delete Q[a])}).on(f,b,function(){var t=e(this).removeClass(C+" "+y).addClass(w),n=t.children(),i=p?t:n.find("div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename");n.removeClass(C+" "+y),t.hasClass(k)&&t.droppable("disable"),i.hasClass(x)&&i.draggable("disable")}).on(m,b,function(){var t=e(this).removeClass(w),n=p?t:t.children("div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename");t.hasClass(k)&&t.droppable("enable"),n.hasClass(x)&&n.draggable("enable")}).on("scrolltoview",b,function(t,n){re(e(this),!n||"undefined"==typeof n.blink||n.blink)}).on("mouseenter."+t.namespace+" mouseleave."+t.namespace,b,function(n){var i="mouseenter"===n.type;i&&(ue||t.UA.Mobile)||(t.trigger("hover",{hash:t.cwdId2Hash(e(this).attr("id")),type:n.type}),e(this).toggleClass(C,"mouseenter"==n.type))}).on("mouseenter."+t.namespace+" mouseleave."+t.namespace,".elfinder-cwd-file-wrapper,.elfinder-cwd-filename",function(t){var n="mouseenter"===t.type;n&&ue||e(this).closest(b).children(".elfinder-cwd-file-wrapper,.elfinder-cwd-filename").toggleClass(z,"mouseenter"==t.type)}).on("contextmenu."+t.namespace,function(n){var i=e(n.target).closest(b);if(i.get(0)!==n.target||Q[t.cwdId2Hash(i.get(0).id)])return i.find("input:text,textarea").length?void n.stopPropagation():void(i.length&&("TD"!=n.target.nodeName||Q[t.cwdId2Hash(i.get(0).id)])&&(n.stopPropagation(),n.preventDefault(),i.hasClass(w)||Pe.data("touching")||(i.hasClass(y)||(ne({notrigger:!0}),i.trigger(u),oe()),t.trigger("contextmenu",{type:"files",targets:t.selected(),x:n.pageX,y:n.pageY}))))}).on("click."+t.namespace,function(e){e.target!==this||Ue.data("longtap")||!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&ne()}).on("create."+t.namespace,function(n,i){var a=p?Ue.find("tbody"):Ue,o=a.find(".elfinder-cwd-parent"),r=i.move||!1,s=e(X(i)).addClass(A),l=t.selected();l.length?r&&t.trigger("lockfiles",{files:l}):ne(),o.length?o.after(s):a.prepend(s),Ce(),Pe.scrollTop(0).scrollLeft(0)}).on("unselectall",ne).on("selectfile",function(e,n){t.cwdHash2Elm(n).trigger(u),oe()}).on("colwidth",function(){p&&(Ue.find("table").css("table-layout","").find("td").css("width",""),ke({fitWidth:!0}),t.storage("cwdColWidth",_=null))}).on("iconpref",function(e,t){Ue.removeClass(function(e,t){return(t.match(/\belfinder-cwd-size\S+/g)||[]).join(" ")}),s=t?parseInt(t.size)||0:0,p||(s>0&&Ue.addClass("elfinder-cwd-size"+s),le.renderd&&requestAnimationFrame(function(){Ve.icons={},le.hpi=null,Fe(Ue,le.renderd),me()}))}).on("onwheel"in document?"wheel":"mousewheel",function(e){var i,a,o;!p&&(e.ctrlKey&&!e.metaKey||!e.ctrlKey&&e.metaKey)&&(e.stopPropagation(),e.preventDefault(),i=Ue.data("wheelTm"),"undefined"!=typeof i?(clearTimeout(i),Ue.data("wheelTm",setTimeout(function(){Ue.removeData("wheelTm")},200))):(Ue.data("wheelTm",!1),a=s||0,o=e.originalEvent.deltaY?e.originalEvent.deltaY:-e.originalEvent.wheelDelta,o>0?s>0&&(a=s-1):s<n.iconsView.sizeMax&&(a=s+1),a!==s&&(t.storage("iconsize",a),Ue.trigger("iconpref",{size:a}))))}),Pe=e('<div class="elfinder-cwd-wrapper"></div>').droppable(Object.assign({},ze,{autoDisable:!1})).on("contextmenu."+t.namespace,Ee.contextmenu).on("touchstart."+t.namespace,Ee.touchstart).on("touchmove."+t.namespace+" touchend."+t.namespace,Ee.touchend).on("click."+t.namespace,Ee.click).on("scroll."+t.namespace,function(){ue||(Ue.data("selectable")&&Ue.selectable("disable"),Pe.trigger(de)),ue=!0,le.scrtm&&cancelAnimationFrame(le.scrtm),le.scrtm&&Math.abs((le.scrolltop||0)-(le.scrolltop=this.scrollTop||e(this).scrollTop()))<5&&(le.scrtm=0,Pe.trigger(pe)),le.scrtm=requestAnimationFrame(function(){le.scrtm=0,Pe.trigger(pe)})}).on(pe,function(){ue=!1,me()}),Re=e("<div>&nbsp;</div>").css({position:"absolute",width:"1px",height:"1px"}).hide(),qe=q?e('<div class="elfinder-cwd-selectall"><input type="checkbox"/></div>').attr("title",t.i18n("selectall")).on("click",function(t){return t.stopPropagation(),t.preventDefault(),!e(this).data("pending")&&(qe.data("pending",!0),void(Ue.hasClass("elfinder-cwd-allselected")?(qe.find("input").prop("checked",!1),requestAnimationFrame(function(){ne()})):te()))}):e(),He=null,_e=function(t){var n=function(){if("undefined"!=typeof le.renderd){var t=0;Pe.siblings("div.elfinder-panel:visible").each(function(){t+=e(this).outerHeight(!0)}),Pe.height(Le.height()-t-Pe._padding)}};t&&n(),He&&cancelAnimationFrame(He),He=requestAnimationFrame(function(){!t&&n();var e,i;Ue.css("height","auto"),e=Pe[0].clientHeight-parseInt(Pe.css("padding-top"))-parseInt(Pe.css("padding-bottom"))-parseInt(Ue.css("margin-top")),i=Ue.outerHeight(!0),i<e&&Ue.height(e)}),p&&!H&&(t?Pe.trigger("resize.fixheader"):ke()),me()},Ne=e(this).parent().on("resize",_e),Le=Ne.children(".elfinder-workzone").append(Pe.append(this).append(Re)),We=e('<div class="elfinder-cwd-message-board"></div>').insertAfter(Ue),Be=e('<div class="elfinder-cwd-expires" ></div>'),$e=function(){var e,n,i;o&&clearTimeout(o),
l&&t.volumeExpires[l]&&(n=t.volumeExpires[l]-+new Date/1e3,i=n%60+.1,e=Math.floor(n/60),Be.html(t.i18n(["minsLeft",e])).show(),e&&(o=setTimeout($e,1e3*i)))},Ve={icons:{},list:{}};t.UA.ltIE10||We.append(e('<div class="elfinder-cwd-trash" ></div>').html(t.i18n("volume_Trash"))).append(Be),$=Object.assign($,n.replacement||{});try{_=t.storage("cwdColWidth")?t.storage("cwdColWidth"):null}catch(Ke){_=null}t.bind("columnpref",function(i){var a=i.data||{};(D=t.storage("cwdCols"))?(D=e.grep(D,function(e){return n.listView.columns.indexOf(e)!==-1}),n.listView.columns.length>D.length&&e.each(n.listView.columns,function(e,t){D.indexOf(t)===-1&&D.push(t)})):D=n.listView.columns;var o=t.storage("columnhides")||null;o&&Object.keys(o).length&&(D=e.grep(D,function(e){return!o[e]})),N.row=R(),p&&a.repaint&&De()}).trigger("columnpref"),d&&e("body").on("touchstart touchmove touchend",function(e){}),q&&Ue.addClass("elfinder-has-checkbox"),e(window).on("scroll."+t.namespace,function(){c&&cancelAnimationFrame(c),c=requestAnimationFrame(function(){Pe.trigger(pe)})}),e(document).on("keydown."+t.namespace,function(n){n.keyCode==e.ui.keyCode.ESCAPE&&(t.getUI().find(".ui-widget:visible").length||ne())}),t.one("init",function(){var i,a,o,s,l=document.createElement("style"),c=0;document.head&&(document.head.appendChild(l),i=l.sheet,i.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder")+'" }',c++),i.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder"+(d?"LTap":"Drop"))+'" }',c++),i.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder")+'" }',c++),i.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptySearch")+'" }',c++),i.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyIncSearch")+'" }',c++),i.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyLetSearch")+'" }',c++)),(s=t.storage("iconsize")||n.iconsView.size||0)&&(s=Math.min(s,n.iconsView.sizeMax),Ue.trigger("iconpref",{size:s})),d||(t.one("open",function(){i&&t.zIndex&&i.insertRule(".ui-selectable-helper{z-index:"+t.zIndex+";}",c++)}),o=e('<div style="position:absolute"></div>'),a=t.getUI(),a.on("resize",function(e,t){var n;e.preventDefault(),e.stopPropagation(),t&&t.fullscreen&&(n=a.offset(),"on"===t.fullscreen?(o.css({top:n.top*-1,left:n.left*-1}).appendTo(a),he.appendTo=o):(o.detach(),he.appendTo="body"),Ue.data("selectable")&&Ue.selectable("option",{appendTo:he.appendTo}))})),r=t.getUI("tree").length}).bind("enable",function(){_e()}).bind("request.open",function(){le.getTmbs=[]}).one("open",function(){t.maxTargets&&(O=Math.min(t.maxTargets,O))}).bind("open add remove searchend",function(){var n=t.cwd().hash,i=this.type;if(("open"===i||"searchend"===i||t.searchStatus.state<2)&&(F=e.map(t.files(n),function(e){return e.hash}),t.trigger("cwdhasheschange",F)),"open"===i){var a=function(){var n=!1;return e.each(M,function(e,i){if(t.trashes[i])return n=!0,!1}),n},o=n&&(!t.file(n)||r)?r?function(){var n=e.Deferred();return t.one("treesync",function(e){e.data.always(function(){n.resolve()})}),n}():t.request({data:{cmd:"parents",target:t.cwd().hash},preventFail:!0}):null,s=t.cwd();s.volumeid!==l&&(Be.empty().hide(),l&&Pe.removeClass("elfinder-cwd-wrapper-"+l),l=s.volumeid,$e(),Pe.addClass("elfinder-cwd-wrapper-"+l)),e.when(o).done(function(){M=t.parents(s.hash),Pe[a()?"addClass":"removeClass"]("elfinder-cwd-wrapper-trash")}),E=void 0,ne({notrigger:!0}),De()}}).bind("search",function(n){F=e.map(n.data.files,function(e){return e.hash}),t.trigger("cwdhasheschange",F),E=void 0,t.searchStatus.ininc=!1,De(),t.autoSync("stop")}).bind("searchend",function(e){(S||E)&&(S="",E?t.trigger("incsearchend",e.data):e.data&&e.data.noupdate||De()),t.autoSync()}).bind("searchstart",function(e){ne(),S=e.data.query}).bind("incsearchstart",function(n){var i=n.data.query||"",a=n.data.type||"SearchName",o=t.options.commandsOptions.search.searchTypes||{};(o[a]&&o[a].incsearch||"SearchName"===a)&&(Q={},t.lazy(function(){var n,r,s="";if(S=i,i){if("/"===i.substr(0,1)&&(i=i.substr(1),s="^"),n=new RegExp(s+i.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g,"\\$1"),"i"),"SearchName"===a)E=e.grep(F,function(e){var i=t.file(e);return!(!i||!(i.name.match(n)||i.i18&&i.i18.match(n)))});else if(r=o[a].incsearch,"string"==typeof r)E=e.grep(F,function(e){var i=t.file(e);return!!(i&&i[r]&&(i[r]+"").match(n))});else if("function"==typeof r)try{E=e.grep(r({val:i,regex:n},F,t),function(e){return!!t.file(e)})}catch(l){E=[]}t.trigger("incsearch",{hashes:E,query:i}).searchStatus.ininc=!0,De(),t.autoSync("stop")}else t.trigger("incsearchend")}))}).bind("incsearchend",function(e){S="",t.searchStatus.ininc=!1,E=void 0,e.data&&e.data.noupdate||De(),t.autoSync()}).bind("sortchange",function(){var e=Pe.scrollLeft(),n=Ue.hasClass("elfinder-cwd-allselected");De(),t.one("cwdrender",function(){Pe.scrollLeft(e),n&&(Q=t.arrayFlip(E||F,!0)),(n||Object.keys(Q).length)&&oe()})}).bind("viewchange",function(){var e="list"!=t.viewType,n=Ue.hasClass("elfinder-cwd-allselected");e!=p&&(p=e,t.viewType=p?"list":"icons",s&&t.one("cwdinit",function(){Ue.trigger("iconpref",{size:s})}),De(),_e(),n&&(Ue.addClass("elfinder-cwd-allselected"),qe.find("input").prop("checked",!0)),Object.keys(Q).length&&oe())}).bind("wzresize",function(){var e,n=p?Ue.find("tbody"):Ue;_e(!0),le.hpi&&Fe(n,n.find("[id]").length),e=Ue.offset(),Le.data("rectangle",Object.assign({width:Le.width(),height:Le.height(),cwdEdge:"ltr"===t.direction?e.left:e.left+Ue.width()},Le.offset())),le.itemH=(p?n.find("tr:first"):n.find("[id]:first")).outerHeight(!0)}).bind("changeclipboard",function(t){I={},t.data&&t.data.clipboard&&t.data.clipboard.length&&e.each(t.data.clipboard,function(e,t){t.cut&&(I[t.hash]=!0)})}).bind("resMixinMake",function(){Ce()}).bind("tmbreload",function(t){var n={},i=t.data&&t.data.files?t.data.files:null;e.each(i,function(e,t){t.tmb&&"1"!=t.tmb&&(n[t.hash]=t.tmb)}),Object.keys(n).length&&Ae(n,!0)}).add(function(n){var i=S?new RegExp(S.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g,"\\$1"),"i"):null,a=t.searchStatus.mime,o=t.searchStatus.state>1,r=o&&t.searchStatus.target?t.searchStatus.target:t.cwd().hash,s=t.path(r),l=function(n){var l,c;return l=n.phash===r,!l&&o&&(c=n.path||t.path(n.hash),l=s&&0===c.indexOf(s),!l&&t.searchStatus.mixed&&(l=!!e.grep(t.searchStatus.mixed,function(e){return 0===n.hash.indexOf(e)}).length)),l&&o&&(l=a?0===n.mime.indexOf(a):!!(n.name.match(i)||n.i18&&n.i18.match(i))),l},c=e.grep(n.data.added||[],function(e){return!!l(e)});Oe(c),2===t.searchStatus.state&&(e.each(c,function(t,n){e.inArray(n.hash,F)===-1&&F.push(n.hash)}),t.trigger("cwdhasheschange",F)),p&&_e(),Pe.trigger(pe)}).change(function(n){var i,a=t.cwd().hash,o=t.selected();S?e.each(n.data.changed||[],function(n,a){t.cwdHash2Elm(a.hash).length&&(Se([a.hash]),Oe([a],"change"),e.inArray(a.hash,o)!==-1&&Z(a.hash),i=!0)}):e.each(e.grep(n.data.changed||[],function(e){return e.phash==a}),function(n,a){t.cwdHash2Elm(a.hash).length&&(Se([a.hash]),Oe([a],"change"),e.inArray(a.hash,o)!==-1&&Z(a.hash),i=!0)}),i&&(t.trigger("cwdhasheschange",F),p&&_e(),Pe.trigger(pe)),oe()}).remove(function(e){var t=p?Ue.find("tbody"):Ue;Se(e.data.removed||[]),oe(),se.length<1&&t.children(b+(n.oldSchool?":not(.elfinder-cwd-parent)":"")).length<1?(Le.addClass("elfinder-cwd-wrapper-empty"),q&&qe.find("input").prop("checked",!1),Re.hide(),Pe.off(pe,ye),_e()):(Fe(t),Pe.trigger(pe))}).dragstart(function(t){var n=e(t.data.target),i=t.data.originalEvent;n.hasClass(v)&&(n.hasClass(y)||(!(i.ctrlKey||i.metaKey||i.shiftKey)&&ne({notrigger:!0}),n.trigger(u),oe())),Ue.removeClass(w).data("selectable")&&Ue.selectable("disable"),G=!0}).dragstop(function(){Ue.data("selectable")&&Ue.selectable("enable"),G=!1}).bind("lockfiles unlockfiles selectfiles unselectfiles",function(n){var i,a,o,r={lockfiles:f,unlockfiles:m,selectfiles:u,unselectfiles:h},s=r[n.type],l=n.data.files||[],c=l.length,d=n.data.helper||e();if(c>0&&(i=t.parents(l[0])),s!==u&&s!==h||(o=s===u,e.each(l,function(e,t){var n=Ue.hasClass("elfinder-cwd-allselected");Q[t]?(n&&(q&&qe.children("input").prop("checked",!1),Ue.removeClass("elfinder-cwd-allselected"),n=!1),!o&&delete Q[t]):o&&(Q[t]=!0)})),!d.data("locked")){for(;c--;)try{t.cwdHash2Elm(l[c]).trigger(s)}catch(n){}!n.data.inselect&&oe()}Pe.data("dropover")&&i.indexOf(Pe.data("dropover"))!==-1&&(a="lockfiles"!==n.type,d.toggleClass("elfinder-drag-helper-plus",a),Pe.toggleClass(T,a))}).bind("mkdir mkfile duplicate upload rename archive extract paste multiupload",function(n){if("upload"!=n.type||!n.data._multiupload){var i=t.cwd().hash;ne({notrigger:!0}),e.each((n.data.added||[]).concat(n.data.changed||[]),function(e,t){t&&t.phash==i&&Z(t.hash)}),oe()}}).shortcut({pattern:"ctrl+a",description:"selectall",callback:te}).shortcut({pattern:"ctrl+shift+i",description:"selectinvert",callback:ie}).shortcut({pattern:"left right up down shift+left shift+right shift+up shift+down",description:"selectfiles",type:"keydown",callback:function(e){Y(e.keyCode,e.shiftKey)}}).shortcut({pattern:"home",description:"selectffile",callback:function(e){ne({notrigger:!0}),re(Ue.find("[id]:first").trigger(u)),oe()}}).shortcut({pattern:"end",description:"selectlfile",callback:function(e){ne({notrigger:!0}),re(Ue.find("[id]:last").trigger(u)),oe()}}).shortcut({pattern:"page_up",description:"pageTurning",callback:function(e){le.itemH&&Pe.scrollTop(Math.round(Pe.scrollTop()-Math.floor((Pe.height()+(p?le.itemH*-1:16))/le.itemH)*le.itemH))}}).shortcut({pattern:"page_down",description:"pageTurning",callback:function(e){le.itemH&&Pe.scrollTop(Math.round(Pe.scrollTop()+Math.floor((Pe.height()+(p?le.itemH*-1:16))/le.itemH)*le.itemH))}})}),this},e.fn.elfinderdialog=function(t,n){var i,a,o,r,s=window.navigator.platform.indexOf("Win")!=-1,l={},c={enabled:!1,width:!1,height:!1,defaultSize:null},d=function(t){var i,a;c.enabled&&(a=n.options.dialogContained?o:e(window),i={maxWidth:c.width?a.width()-l.width:null,maxHeight:c.height?a.height()-l.height:null},Object.assign(r,i),t.css(i).trigger("resize"),t.data("hasResizable")&&(t.resizable("option","maxWidth")<i.maxWidth||t.resizable("option","maxHeight")<i.maxHeight)&&t.resizable("option",i))},p=function(e){var t=e.data;i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){c.enabled&&d(t)})},u=function(){var e="elfinder-dialog",t=o.children("."+e+"."+n.res("class","editing")+":visible");n[t.length?"disable":"enable"]()},h={};return n&&n.ui?o=n.getUI():(o=this.closest(".elfinder"),n||(n=o.elfinder("instance"))),"string"==typeof t?((a=this.closest(".ui-dialog")).length&&("open"===t?"none"===a.css("display")&&(a.trigger("posinit").show().trigger("open").hide(),a.fadeIn(120,function(){n.trigger("dialogopened",{dialog:a})})):"close"===t||"destroy"===t?(a.stop(!0),(a.is(":visible")||o.is(":hidden"))&&(a.trigger("close"),n.trigger("dialogclosed",{dialog:a})),"destroy"===t?(a.remove(),n.trigger("dialogremoved",{dialog:a})):a.data("minimized")&&a.data("minimized").close()):"toTop"===t?(a.trigger("totop"),n.trigger("dialogtotoped",{dialog:a})):"posInit"===t?(a.trigger("posinit"),n.trigger("dialogposinited",{dialog:a})):"tabstopsInit"===t?(a.trigger("tabstopsInit"),n.trigger("dialogtabstopsinited",{dialog:a})):"checkEditing"===t&&u()),this):(t=Object.assign({},e.fn.elfinderdialog.defaults,t),t.allowMinimize&&"auto"===t.allowMinimize&&(t.allowMinimize=!!this.find("textarea,input").length),t.openMaximized=t.allowMinimize&&t.openMaximized,t.headerBtnPos&&"auto"===t.headerBtnPos&&(t.headerBtnPos=s?"right":"left"),t.headerBtnOrder&&"auto"===t.headerBtnOrder&&(t.headerBtnOrder=s?"close:maximize:minimize":"close:minimize:maximize"),t.modal&&t.allowMinimize&&(t.allowMinimize=!1),n.options.dialogContained?c.width=c.height=c.enabled=!0:(c.width="window"===t.maxWidth,c.height="window"===t.maxHeight,(c.width||c.height)&&(c.enabled=!0)),h=n.arrayFlip(t.propagationEvents,!0),this.filter(":not(.ui-dialog-content)").each(function(){var i,a,f=e(this).addClass("ui-dialog-content ui-widget-content"),m="elfinder-dialog-active",g="elfinder-dialog",v="elfinder-dialog-notify",b="ui-state-hover",y="elfinder-tabstop",w="elfinder-focus",x="elfinder-dialog-modal",k=parseInt(1e6*Math.random()),C=e('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"><span class="elfinder-dialog-title">'+t.title+"</span></div>"),z=e('<div class="ui-dialog-buttonset"></div>'),T=e('<div class=" ui-helper-clearfix ui-dialog-buttonpane ui-widget-content"></div>').append(z),A=0,j=0,O=e(),S=e('<div style="width:100%;height:100%;position:absolute;top:0px;left:0px;"></div>').hide(),I=function(){t.optimizeNumber&&P.find("input[type=number]").each(function(){e(this).attr("inputmode","numeric"),e(this).attr("pattern","[0-9]*")})},M=function(){O=P.find("."+y),O.length&&(O.attr("tabindex","-1"),O.filter("."+w).length||z.children("."+y+":"+(s?"first":"last")).addClass(w))},F=function(t){var n=O.filter(":visible:enabled"),i=t?null:n.filter("."+w+":first");return i&&i.length||(i=n.first()),t&&e.each(n,function(e,a){if(a===t&&n[e+1])return i=n.eq(e+1),!1}),i},E=function(t){var n=O.filter(":visible:enabled"),i=n.last();return e.each(n,function(e,a){if(a===t&&n[e-1])return i=n.eq(e-1),!1}),i},D=function(){e.each(t.headerBtnOrder.split(":").reverse(),function(e,t){U[t]&&U[t]()}),s&&C.children(".elfinder-titlebar-button").addClass("elfinder-titlebar-button-right")},U={close:function(){C.prepend(e('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button"><span class="ui-icon ui-icon-closethick"></span></span>').on("mousedown touchstart",function(e){return e.preventDefault(),e.stopPropagation(),"function"==typeof t.headerBtnCloseAction?void t.headerBtnCloseAction(e):void f.elfinderdialog("close")}))},maximize:function(){t.allowMaximize&&(P.on("resize",function(e,t){var n,i;if(e.preventDefault(),e.stopPropagation(),t&&t.maximize){if(i=C.find(".elfinder-titlebar-full"),n="on"===t.maximize,i.children("span.ui-icon").toggleClass("ui-icon-plusthick",!n).toggleClass("ui-icon-arrowreturnthick-1-s",n),n){try{P.hasClass("ui-draggable")&&P.draggable("disable"),P.hasClass("ui-resizable")&&P.resizable("disable")}catch(e){}f.css("width","100%").css("height",P.height()-P.children(".ui-dialog-titlebar").outerHeight(!0)-T.outerHeight(!0))}else{f.attr("style",i.data("style")),i.removeData("style"),R();try{P.hasClass("ui-draggable")&&P.draggable("enable"),P.hasClass("ui-resizable")&&P.resizable("enable")}catch(e){}}P.trigger("resize",{init:!0})}}),C.prepend(e('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-full"><span class="ui-icon ui-icon-plusthick"></span></span>').on("mousedown touchstart",function(i){var a=e(this);i.preventDefault(),i.stopPropagation(),P.hasClass("elfinder-maximized")||"undefined"!=typeof a.data("style")||(f.height(f.height()),a.data("style",f.attr("style")||"")),n.toggleMaximize(P),"function"==typeof t.maximize&&t.maximize.call(f[0])})))},minimize:function(){var i,a,o;t.allowMinimize&&(i=e('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-minimize"><span class="ui-icon ui-icon-minusthick"></span></span>').on("mousedown touchstart",function(i){var r=e(this),s=n.getUI("bottomtray"),l={width:70,height:24},c=e("<div></div>").css(l).addClass(P.get(0).className+" elfinder-dialog-minimized"),d=function(){a.remove(),P.removeData("minimized").show(),f.elfinderdialog("close")},p={};i.preventDefault(),i.stopPropagation(),P.data("minimized")?(P.removeData("minimized").before(a.css(Object.assign({position:"absolute"},a.offset()))),n.toFront(a),a.animate(Object.assign({width:P.width(),height:P.height()},o),function(){P.show(),n.toFront(P),a.remove(),R(),u(),P.trigger("resize",{init:!0}),"function"==typeof t.minimize&&t.minimize.call(f[0])})):(o=P.data("minimized",{dialog:function(){return a},show:function(){a.show()},hide:function(){a.hide()},close:d,title:function(e){a.children(".ui-dialog-titlebar").children(".elfinder-dialog-title").text(e)}}).position(),a=P.clone().on("mousedown",function(){r.trigger("mousedown")}).removeClass("ui-draggable ui-resizable elfinder-frontmost"),s.append(c),Object.assign(p,c.offset(),l),c.remove(),a.height(P.height()).children(".ui-dialog-content:first").empty(),n.toHide(P.before(a)),a.children(".ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle").remove(),a.find(".elfinder-titlebar-minimize,.elfinder-titlebar-full").remove(),a.find(".ui-dialog-titlebar-close").on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),d()}),a.animate(p,function(){a.attr("style","").css({maxWidth:P.width()}).addClass("elfinder-dialog-minimized").appendTo(s),u(),"function"==typeof t.minimize&&t.minimize.call(f[0])}))}),C.on("dblclick",function(t){e(this).children(".elfinder-titlebar-minimize").trigger("mousedown")}).prepend(i),P.on("togleminimize",function(){i.trigger("mousedown")}))}},P=e('<div class="ui-front ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable std42-dialog touch-punch '+g+" "+t.cssClass+'"></div>').hide().append(f).appendTo(o).draggable({containment:n.options.dialogContained?o:null,handle:".ui-dialog-titlebar",start:function(){S.show()},drag:function(e,t){var i=t.offset.top,a=t.offset.left;i<0&&(t.position.top=t.position.top-i),a<0&&(t.position.left=t.position.left-a),n.options.dialogContained&&(t.position.top<0&&(t.position.top=0),t.position.left<0&&(t.position.left=0))},stop:function(e,n){S.hide(),P.css({height:t.height}),f.data("draged",!0)}}).css({width:t.width,height:t.height,minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight}).on("touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove",function(e){!h[e.type]&&e.stopPropagation()}).on("mousedown",function(t){!h[t.type]&&t.stopPropagation(),requestAnimationFrame(function(){P.is(":visible")&&!P.hasClass("elfinder-frontmost")&&(a=e(":focus"),a.length||(a=void 0),P.trigger("totop"))})}).on("open",function(){P.data("margin-y",f.outerHeight(!0)-f.height()),c.enabled&&(t.height&&"auto"!==t.height&&P.trigger("resize",{init:!0}),c.defaultSize||(c.defaultSize={width:f.width(),height:f.height()}),d(P),P.trigger("resize").trigger("posinit"),o.on("resize."+n.namespace,P,p)),P.hasClass(v)||o.children("."+g+":visible:not(."+v+")").each(function(){var t=e(this),n=parseInt(t.css("top")),i=parseInt(t.css("left")),a=parseInt(P.css("top")),o=parseInt(P.css("left")),r=Math.abs(n-a)<10,s=Math.abs(i-o)<10;t[0]!=P[0]&&(r||s)&&P.css({top:r?n+10:a,left:s?i+10:o})}),P.data("modal")&&(P.addClass(x),n.getUI("overlay").elfinderoverlay("show")),P.trigger("totop"),t.openMaximized&&n.toggleMaximize(P),n.trigger("dialogopen",{dialog:P}),"function"==typeof t.open&&e.proxy(t.open,f[0])(),t.closeOnEscape&&e(document).on("keydown."+k,function(t){t.keyCode==e.ui.keyCode.ESCAPE&&P.hasClass("elfinder-frontmost")&&f.elfinderdialog("close")}),P.hasClass(n.res("class","editing"))&&u()}).on("close",function(i){var a,r;t.beforeclose&&"function"==typeof t.beforeclose?(r=t.beforeclose(),r&&r.promise||(r=r?e.Deferred().resolve():e.Deferred().reject())):r=e.Deferred().resolve(),r.done(function(){c.enabled&&o.off("resize."+n.namespace,p),t.closeOnEscape&&e(document).off("keyup."+k),t.allowMaximize&&n.toggleMaximize(P,!1),n.toHide(P),P.data("modal")&&n.getUI("overlay").elfinderoverlay("hide"),"function"==typeof t.close&&e.proxy(t.close,f[0])(),t.destroyOnClose&&P.parent().length&&P.hide().remove(),a=o.children("."+g+":visible"),P.hasClass(n.res("class","editing"))&&u()})}).on("totop frontmost",function(){var e=n.storage("autoFocusDialog");P.data("focusOnMouseOver",e?e>0:n.options.uiOptions.dialog.focusOnMouseOver),P.data("minimized")&&C.children(".elfinder-titlebar-minimize").trigger("mousedown"),!P.data("modal")&&n.getUI("overlay").is(":visible")?n.getUI("overlay").before(P):n.toFront(P),o.children("."+g+":not(."+x+")").removeClass(m),P.addClass(m),!n.UA.Mobile&&(a||F()).trigger("focus"),a=void 0}).on("posinit",function(){var i,a,s,l,c,d,p,u=t.position;if(!P.hasClass("elfinder-maximized")){if(!u&&!P.data("resizing")){if(p=o.hasClass("elfinder-fullscreen")||n.options.enableAlways,P.css(p?{maxWidth:"100%",maxHeight:"100%",overflow:"auto"}:r),n.UA.Mobile&&!p&&P.data("rotated")===n.UA.Rotated)return;P.data("rotated",n.UA.Rotated),c=e(window),i=o.offset(),l={width:P.outerWidth(!0),height:P.outerHeight(!0)},l.right=i.left+l.width,l.bottom=i.top+l.height,d={scrLeft:c.scrollLeft(),scrTop:c.scrollTop(),width:c.width(),height:c.height()},d.right=d.scrLeft+d.width,d.bottom=d.scrTop+d.height,n.options.dialogContained||p?(a=0,s=0):(a=i.top*-1+d.scrTop,s=i.left*-1+d.scrLeft),u={top:l.height>=d.height?a:Math.max(a,parseInt((o.height()-l.height)/2-42)),left:l.width>=d.width?s:Math.max(s,parseInt((o.width()-l.width)/2))},l.right+u.left>d.right&&(u.left=Math.max(s,d.right-l.right)),l.bottom+u.top>d.bottom&&(u.top=Math.max(a,d.bottom-l.bottom))}t.absolute&&(u.position="absolute"),u&&P.css(u)}}).on("resize",function(n,i){var a,o,r,s,l=0,d=i&&i.init;i&&(i.minimize||i.maxmize)||P.data("minimized")||(n.stopPropagation(),n.preventDefault(),P.children(".ui-widget-header,.ui-dialog-buttonpane").each(function(){l+=e(this).outerHeight(!0)}),s="auto"===t.height,s&&f.css({"max-height":"",height:"auto"}),d||!c.enabled||n.originalEvent||P.hasClass("elfinder-maximized")?a=P.height()-l-P.data("margin-y"):(a=P.height(),o=P.css("min-height")||a,r=P.css("max-height")||a,o=o.match(/%/)?Math.floor(parseInt(o)/100*P.parent().height()):parseInt(o),r=r.match(/%/)?Math.floor(parseInt(r)/100*P.parent().height()):parseInt(r),a=Math.min(s?P.height():c.defaultSize.height,Math.max(r,o)-l-P.data("margin-y"))),f.css(s?"max-height":"height",a),d||(R(),o=f.height(),o=a<o?o+l+P.data("margin-y"):t.minHeight,P.css("min-height",o),P.data("hasResizable")&&P.resizable("option",{minHeight:o}),"function"==typeof t.resize&&e.proxy(t.resize,f[0])(n,i)))}).on("tabstopsInit",M).on("focus","."+y,function(){e(this).addClass(b).parent("label").addClass(b),this.id&&e(this).parent().find("label[for="+this.id+"]").addClass(b)}).on("click","select."+y,function(){var t=e(this);t.data("keepFocus")?t.removeData("keepFocus"):t.data("keepFocus",!0)}).on("blur","."+y,function(){e(this).removeClass(b).removeData("keepFocus").parent("label").removeClass(b),this.id&&e(this).parent().find("label[for="+this.id+"]").removeClass(b)}).on("mouseenter mouseleave","."+y+",label",function(n){var i,a=e(this);("LABEL"!==this.nodeName||a.children("."+y).length||(i=a.attr("for"))&&e("#"+i).hasClass(y))&&(t.btnHoverFocus&&P.data("focusOnMouseOver")?"mouseenter"!==n.type||e(":focus").data("keepFocus")||a.trigger("focus"):a.toggleClass(b,"mouseenter"==n.type))}).on("keydown","."+y,function(t){var n,i,a=e(this);if(a.is(":focus")){if(n=t.keyCode===e.ui.keyCode.ESCAPE,t.keyCode===e.ui.keyCode.ENTER?(t.preventDefault(),a.trigger("click")):t.keyCode===e.ui.keyCode.TAB&&t.shiftKey||t.keyCode===e.ui.keyCode.LEFT||t.keyCode==e.ui.keyCode.UP?i="prev":t.keyCode!==e.ui.keyCode.TAB&&t.keyCode!=e.ui.keyCode.RIGHT&&t.keyCode!=e.ui.keyCode.DOWN||(i="next"),i&&(a.is("textarea")&&!t.ctrlKey&&!t.metaKey||a.is("select,span.ui-slider-handle")&&t.keyCode!==e.ui.keyCode.TAB||a.is("input:not(:checkbox,:radio)")&&!t.ctrlKey&&!t.metaKey&&t.keyCode===e.ui.keyCode["prev"===i?"LEFT":"RIGHT"]))return void t.stopPropagation();n?a.is("input:not(:checkbox,:radio),textarea")&&""!==a.val()&&(a.val(""),t.stopPropagation()):t.stopPropagation(),i&&(t.preventDefault(),("prev"===i?E:F)(this).trigger("focus"))}}).data({modal:t.modal}),R=function(){var e,t=n.getUI();t.hasClass("elfinder-fullscreen")&&(e=P.position(),P.css("top",Math.max(Math.min(Math.max(e.top,0),t.height()-100),0)),P.css("left",Math.max(Math.min(Math.max(e.left,0),t.width()-200),0)))};P.prepend(C),D(),e.each(t.buttons,function(t,n){var i=e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-btncnt-'+j++ +" "+y+'"><span class="ui-button-text">'+t+"</span></button>").on("click",e.proxy(n,f[0]));n._cssClass&&i.addClass(n._cssClass),s?z.append(i):z.prepend(i)}),z.children().length&&(P.append(T),P.show(),T.find("button").each(function(t,n){A+=e(n).outerWidth(!0)}),P.hide(),A+=20,P.width()<A&&P.width(A)),P.append(S),c.enabled&&(l.width=P.outerWidth(!0)-P.width()+(P.outerWidth()-P.width())/2,l.height=P.outerHeight(!0)-P.height()+(P.outerHeight()-P.height())/2),n.options.dialogContained&&(i={maxWidth:o.width()-l.width,maxHeight:o.height()-l.height},t.maxWidth=t.maxWidth?Math.min(i.maxWidth,t.maxWidth):i.maxWidth,t.maxHeight=t.maxHeight?Math.min(i.maxHeight,t.maxHeight):i.maxHeight,P.css(i)),r={maxWidth:P.css("max-width"),maxHeight:P.css("max-height"),overflow:P.css("overflow")},t.resizable&&P.resizable({minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight,start:function(){S.show(),P.data("resizing")!==!0&&P.data("resizing")&&clearTimeout(P.data("resizing")),P.data("resizing",!0)},stop:function(e,t){S.hide(),P.data("resizing",setTimeout(function(){P.data("resizing",!1)},200)),c.enabled&&(c.defaultSize={width:f.width(),height:f.height()})}}).data("hasResizable",!0),I(),M(),"function"==typeof t.create&&e.proxy(t.create,this)(),t.autoOpen&&(t.open?requestAnimationFrame(function(){f.elfinderdialog("open")}):f.elfinderdialog("open")),t.resize&&n.bind("themechange",function(){setTimeout(function(){P.data("margin-y",f.outerHeight(!0)-f.height()),P.trigger("resize",{init:!0})},300)})}),this)},e.fn.elfinderdialog.defaults={cssClass:"",title:"",modal:!1,resizable:!0,autoOpen:!0,closeOnEscape:!0,destroyOnClose:!1,buttons:{},btnHoverFocus:!0,position:null,absolute:!1,width:320,height:"auto",minWidth:200,minHeight:70,maxWidth:null,maxHeight:null,allowMinimize:"auto",allowMaximize:!1,openMaximized:!1,headerBtnPos:"auto",headerBtnOrder:"auto",headerBtnCloseAction:null,optimizeNumber:!0,propagationEvents:["mousemove","mouseup"]},e.fn.elfinderfullscreenbutton=function(t){return this.each(function(){var n,i=e(this).elfinderbutton(t),a=i.children(".elfinder-button-icon");t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e=t.value;a.addClass("elfinder-button-icon-fullscreen").toggleClass("elfinder-button-icon-unfullscreen",e),t.className=e?"unfullscreen":""})})})},e.fn.elfindernavbar=function(t,n){return this.not(".elfinder-navbar").each(function(){var i,a,o,r,s,l,c,d=e(this).hide().addClass("ui-state-default elfinder-navbar"),p=d.css("overflow","hidden").parent(),u=p.children(".elfinder-workzone").append(d),h="ltr"==t.direction,f=function(){var e=t.getUI("cwd"),n=t.getUI("workzone"),i=n.data("rectangle"),a=e.offset();n.data("rectangle",Object.assign(i,{cwdEdge:"ltr"===t.direction?a.left:a.left+e.width()}))},m=function(){d.css("overflow","hidden"),i=Math.round(d.outerHeight()-d.height()),a=Math.round(c.outerWidth()-c.innerWidth()),d.css("overflow","auto")};t.one("init",function(){c=t.getUI("navdock");var e=function(){m(),t.bind("wzresize",function(){var e=0;c.width(d.outerWidth()-a),c.children().length>1&&(e=c.outerHeight(!0)),d.height(u.height()-e-i)}).trigger("wzresize")};t.cssloaded?e():t.one("cssloaded",e)}).one("opendone",function(){o&&o.trigger("resize"),d.css("overflow","auto")}).bind("themechange",m),t.UA.Touch&&(s=t.storage("autoHide")||{},"undefined"==typeof s.navbar&&(s.navbar=n.autoHideUA&&n.autoHideUA.length>0&&e.grep(n.autoHideUA,function(e){return!!t.UA[e]}).length,t.storage("autoHide",s)),s.navbar&&t.one("init",function(){d.children().length&&t.uiAutoHide.push(function(){d.stop(!0,!0).trigger("navhide",{duration:"slow",init:!0})})}),t.bind("load",function(){d.children().length&&(r=e('<div class="elfinder-navbar-swipe-handle"></div>').hide().appendTo(u),"none"!==r.css("pointer-events")&&(r.remove(),r=null))}),d.on("navshow navhide",function(e,n){var i="navshow"===e.type?"show":"hide",a=n&&n.duration?n.duration:"fast",o=n&&n.handleW?n.handleW:Math.max(50,t.getUI().width()/10);d.stop(!0,!0)[i]({duration:a,step:function(){t.trigger("wzresize")},complete:function(){r&&("show"===i?r.stop(!0,!0).hide():(r.width(o?o:""),t.resources.blink(r,"slowonce"))),t.trigger("navbar"+i),n.init&&t.trigger("uiautohide"),f()}}),s.navbar="show"!==i,t.storage("autoHide",Object.assign(t.storage("autoHide"),{navbar:s.navbar}))}).on("touchstart",function(n){e(this)["scroll"+("ltr"===t.direction?"Right":"Left")]()>5&&(n.originalEvent._preventSwipeX=!0)})),t.UA.Mobile||(o=d.resizable({handles:h?"e":"w",minWidth:n.minWidth||150,maxWidth:n.maxWidth||500,resize:function(){t.trigger("wzresize")},stop:function(e,n){t.storage("navbarWidth",n.size.width),f()}}).on("resize scroll",function(n){var i=e(this),a=i.data("posinit");n.preventDefault(),n.stopPropagation(),h||"resize"!==n.type||d.css("left",0),a&&cancelAnimationFrame(a),i.data("posinit",requestAnimationFrame(function(){var e=t.UA.Opera&&d.scrollLeft()?20:2;o.css("top",0).css({top:parseInt(d.scrollTop())+"px",left:h?"auto":parseInt(d.scrollRight()-e)*-1,right:h?parseInt(d.scrollLeft()-e)*-1:"auto"}),"resize"===n.type&&t.getUI("cwd").trigger("resize")}))}).children(".ui-resizable-handle").addClass("ui-front")),(l=t.storage("navbarWidth"))?d.width(l):t.UA.Mobile&&t.one(t.cssloaded?"init":"cssloaded",function(){var n=function(){l=d.parent().width()/2,d.data("defWidth")>l?d.width(l):d.width(d.data("defWidth")),d.data("width",d.width()),t.trigger("wzresize")};d.data("defWidth",d.width()),e(window).on("resize."+t.namespace,n),n()})}),this},e.fn.elfindernavdock=function(t,n){return this.not(".elfinder-navdock").each(function(){var i,a,o=e(this).hide().addClass("ui-state-default elfinder-navdock touch-punch"),r=o.parent(),s=(r.children(".elfinder-workzone").append(o),function(n,i){var a,r=i||o.height(),s=n-r,l=Object.keys(c).length,d=l?s/l:0;s&&(a=o.css("overflow"),o.css("overflow","hidden"),o.height(n),e.each(c,function(e,n){n.height(n.height()+d).trigger("resize."+t.namespace)}),t.trigger("wzresize"),o.css("overflow",a))}),l=e('<div class="ui-front ui-resizable-handle ui-resizable-n"></div>').appendTo(o),c={},d=(parseInt(n.initMaxHeight)||50)/100,p=(parseInt(n.maxHeight)||90)/100;o.data("addNode",function(e,n){var r,u,h,f=t.getUI("workzone").height(),m=f*d;return n=Object.assign({first:!1,sizeSync:!0,init:!1},n),e.attr("id")||e.attr("id",t.namespace+"-navdock-"+ +new Date),n.sizeSync&&(c[e.attr("id")]=e),r=o.height(),u=r+e.outerHeight(!0),n.first?l.after(e):o.append(e),a=!0,o.resizable("enable").height(u).show(),t.trigger("wzresize"),n.init&&(h=t.storage("navdockHeight"),u=h?h:u>m?m:u,i=u),s(Math.min(u,f*p)),o}).data("removeNode",function(n,i){var r=e("#"+n);return delete c[n],o.height(o.height()-e("#"+n).outerHeight(!0)),i?"detach"===i?r=r.detach():i.append(r):r.remove(),o.children().length<=1&&(a=!1,o.resizable("disable").height(0).hide()),t.trigger("wzresize"),r}),n.disabled||t.one("init",function(){var e;t.getUI("navbar").children().not(".ui-resizable-handle").length&&(o.data("dockEnabled",!0),o.resizable({maxHeight:t.getUI("workzone").height()*p,handles:{n:l},start:function(n,i){e=o.css("overflow"),o.css("overflow","hidden"),t.trigger("navdockresizestart",{event:n,ui:i},!0)},resize:function(e,n){o.css("top",""),t.trigger("wzresize",{inNavdockResize:!0})},stop:function(n,a){t.trigger("navdockresizestop",{event:n,ui:a},!0),o.css("top",""),i=a.size.height,t.storage("navdockHeight",i),s(i,a.originalSize.height),o.css("overflow",e)}}),t.bind("wzresize",function(e){var n,a;o.is(":visible")&&(n=t.getUI("workzone").height()*p,e.data&&e.data.inNavdockResize||(a=o.height(),
n<i?Math.abs(a-n)>1&&s(n):Math.abs(a-i)>1&&s(i)),o.resizable("option","maxHeight",n))}).bind("themechange",function(){var e=Math.round(o.height());requestAnimationFrame(function(){var t=Math.round(o.height()),n=e-t;0!==n&&s(o.height(),t-n)})})),t.bind("navbarshow navbarhide",function(e){o[a&&"navbarshow"===e.type?"show":"hide"]()})})}),this},e.fn.elfinderoverlay=function(t){var n,i,a,o,r=this.parent().elfinder("instance");return this.filter(":not(.elfinder-overlay)").each(function(){t=Object.assign({},t),e(this).addClass("ui-front ui-widget-overlay elfinder-overlay").hide().on("mousedown",function(e){e.preventDefault(),e.stopPropagation()}).data({cnt:0,show:"function"==typeof t.show?t.show:function(){},hide:"function"==typeof t.hide?t.hide:function(){}})}),"show"==t&&(n=this.eq(0),i=n.data("cnt")+1,a=n.data("show"),r.toFront(n),n.data("cnt",i),n.is(":hidden")&&(n.show(),a())),"hide"==t&&(n=this.eq(0),i=n.data("cnt")-1,o=n.data("hide"),n.data("cnt",i),i<=0&&(n.hide(),o())),this},e.fn.elfinderpanel=function(t){return this.each(function(){var n=e(this).addClass("elfinder-panel ui-state-default ui-corner-all"),i="margin-"+("ltr"==t.direction?"left":"right");t.one("load",function(e){var a=t.getUI("navbar");n.css(i,parseInt(a.outerWidth(!0))),a.on("resize",function(e){e.preventDefault(),e.stopPropagation(),n.is(":visible")&&n.css(i,parseInt(a.outerWidth(!0)))})})})},e.fn.elfinderpath=function(t,n){return this.each(function(){var a,o,r="",s="",l=[],c="statusbar",d=t.res("class","hover"),p="path"+(i.prototype.uniqueid?i.prototype.uniqueid:"")+"-",u=e('<div class="ui-widget-header ui-helper-clearfix elfinder-workzone-path"></div>'),h=e(this).addClass("elfinder-path").html("&nbsp;").on("mousedown","span.elfinder-path-dir",function(n){var i=e(this).attr("id").substr(p.length);n.preventDefault(),i!=t.cwd().hash&&(e(this).addClass(d),r?t.exec("search",r,{target:i,mime:l.join(" ")}):t.trigger("select",{selected:[i]}).exec("open",i))}).prependTo(t.getUI("statusbar").show()),f=e('<div class="elfinder-path-roots"></div>').on("click",function(n){n.stopPropagation(),n.preventDefault();var i=e.map(t.roots,function(e){return t.file(e)}),a=[];e.each(i,function(e,n){n.phash||t.root(t.cwd().hash,!0)===n.hash||a.push({label:t.escape(n.i18||n.name),icon:"home",callback:function(){t.exec("open",n.hash)},options:{iconClass:n.csscls||"",iconImg:n.icon||""}})}),t.trigger("contextmenu",{raw:a,x:n.pageX,y:n.pageY})}).append('<span class="elfinder-button-icon elfinder-button-icon-menu" ></span>').appendTo(u),m=function(n){var i=[],a=[];return e.each(t.parents(n),function(e,o){var r=n===o?"elfinder-path-dir elfinder-path-cwd":"elfinder-path-dir",s=t.file(o),l=t.escape(s.i18||s.name);a.push(l),i.push('<span id="'+p+o+'" class="'+r+'" title="'+a.join(t.option("separator"))+'">'+l+"</span>")}),i.join('<span class="elfinder-path-other">'+t.option("separator")+"</span>")},g=function(){var n;h.children("span.elfinder-path-dir").attr("style",""),n="ltr"===t.direction?e("#"+p+t.cwd().hash).prevAll("span.elfinder-path-dir:first"):e(),h.scrollLeft(n.length?n.position().left:0)},v=function(){if(!t.UA.CSS.flex){var n,i,a=h.children("span.elfinder-path-dir"),o=a.length;if("workzone"===c||o<2)return void a.attr("style","");h.width(h.css("max-width")),a.css({maxWidth:100/o+"%",display:"inline-block"}),n=h.width()-9,h.children("span.elfinder-path-other").each(function(){n-=e(this).width()}),i=[],a.each(function(t){var a=e(this),o=a.width();n-=o,o<this.scrollWidth&&i.push(t)}),h.width(""),i.length?(n>0&&(n/=i.length,e.each(i,function(t,i){var o=e(a[i]);o.css("max-width",o.width()+n)})),a.last().attr("style","")):a.attr("style","")}};t.one("init",function(){a=t.getUI("tree").length,o=t.getUI("stat").length,!a&&n.toWorkzoneWithoutNavbar&&(u.append(h).insertBefore(t.getUI("workzone")),c="workzone",t.bind("open",g).one("opendone",function(){t.getUI().trigger("resize")}))}).bind("open searchend parents",function(){r="",s="",l=[],h.html(m(t.cwd().hash)),Object.keys(t.roots).length>1?(h.css("margin",""),f.show()):(h.css("margin",0),f.hide()),!o&&v()}).bind("searchstart",function(e){e.data&&(r=e.data.query||"",s=e.data.target||"",l=e.data.mimes||[])}).bind("search",function(e){var n="";n=s?m(s):t.i18n("btnAll"),h.html('<span class="elfinder-path-other">'+t.i18n("searcresult")+": </span>"+n),v()}).bind("navbarshow navbarhide",function(){var e=t.getUI("workzone");"navbarshow"===this.type?(t.unbind("open",g),h.prependTo(t.getUI("statusbar")),u.detach(),c="statusbar"):(u.append(h).insertBefore(e),c="workzone",g(),t.bind("open",g)),t.trigger("uiresize")}).bind("resize uistatchange",v)})},e.fn.elfinderplaces=function(t,n){return this.each(function(){var i={},a="class",o=t.res(a,"navdir"),r=t.res(a,"navcollapse"),s=t.res(a,"navexpand"),l=t.res(a,"hover"),c=t.res(a,"treeroot"),d=t.res(a,"adroppable"),p=t.res("tpl","placedir"),u=t.res("tpl","perms"),h=e(t.res("tpl","navspinner")),f=n.suffix?n.suffix:"",m="places"+f,g=null,v=function(e){return e.substr(6)},b=function(e){return"place-"+e},y=function(t){return e(document.getElementById(b(t)))},w=function(){var n=[],a={};n=e.map(F.children().find("[id]"),function(e){return v(e.id)}),n.length?e.each(n.reverse(),function(e,t){a[t]=i[t]}):a=null,t.storage(m,a)},x=function(){var a,o;m="places"+(n.suffix?n.suffix:""),i={},a=t.storage(m),"string"==typeof a?(a=e.grep(a.split(","),function(e){return!!e}),e.each(a,function(e,t){var n=t.split("#");i[n[0]]=n[1]?n[1]:n[0]})):e.isPlainObject(a)&&(i=a),t.trigger("placesload",{dirs:i,storageKey:m},!0),o=Object.keys(i),o.length&&(M.prepend(h),t.request({data:{cmd:"info",targets:o},preventDefault:!0}).done(function(n){var a={};n.files&&n.files.length&&t.cache(n.files),e.each(n.files,function(e,t){var n=t.hash;a[n]=t}),e.each(i,function(e,t){C(a[e]||Object.assign({notfound:!0},t))}),t.storage("placesState")>0&&M.trigger("click")}).always(function(){h.remove()}))},k=function(n,i){return e(p.replace(/\{id\}/,b(n?n.hash:i)).replace(/\{name\}/,t.escape(n?n.i18||n.name:i)).replace(/\{cssclass\}/,n?t.perms2class(n)+(n.notfound?" elfinder-na":"")+(n.csscls?" "+n.csscls:""):"").replace(/\{permissions\}/,!n||n.read&&n.write&&!n.notfound?"":u).replace(/\{title\}/,n?' title="'+t.escape(t.path(n.hash,!0)||n.i18||n.name)+'"':"").replace(/\{symlink\}/,"").replace(/\{style\}/,n&&n.icon?t.getIconStyle(n):""))},C=function(e){var n,a;return"directory"===e.mime&&(a=e.hash,t.files().hasOwnProperty(a)||t.trigger("tree",{tree:[e]}),n=k(e,a),i[a]=e,F.prepend(n),M.addClass(r),S.toggle(F.children().length>1),!0)},z=function(e){var t,n,a=null;return i[e]&&(delete i[e],t=y(e),t.length&&(a=t.text(),t.parent().remove(),n=F.children().length,S.toggle(n>1),n||(M.removeClass(r),E.removeClass(s),F.slideToggle(!1)))),a},T=function(e){var n=y(e),i=n.parent(),a=i.prev("div"),o="ui-state-hover",r=t.getUI("contextmenu");g&&clearTimeout(g),a.length&&(r.find(":first").data("placesHash",e),n.addClass(o),i.insertBefore(a),a=i.prev("div"),g=setTimeout(function(){n.removeClass(o),r.find(":first").data("placesHash")===e&&r.hide().empty()},1500)),a.length||(n.removeClass(o),r.hide().empty())},A=function(e,t){var n=e.hash,a=y(t||n),o=k(e,n);return a.length>0&&(a.parent().replaceWith(o),i[n]=e,!0)},j=function(){F.empty(),M.removeClass(r),E.removeClass(s),F.slideToggle(!1)},O=function(){e.each(i,function(n,i){var a=t.file(n)||i,r=k(a,n),s=null;return a||r.hide(),!(!F.children().length||(e.each(F.children(),function(){var t=e(this);if((a.i18||a.name).localeCompare(t.children("."+o).text())<0)return s=!r.insertBefore(t)}),null===s))||void(!y(n).length&&F.append(r))}),w()},S=e('<span class="elfinder-button-icon elfinder-button-icon-sort elfinder-places-root-icon" title="'+t.i18n("cmdsort")+'"></span>').hide().on("click",function(e){e.stopPropagation(),F.empty(),O()}),I=k({hash:"root-"+t.namespace,name:t.i18n(n.name,"places"),read:!0,write:!0}),M=I.children("."+o).addClass(c).on("click",function(e){e.stopPropagation(),M.hasClass(r)&&(E.toggleClass(s),F.slideToggle(),t.storage("placesState",E.hasClass(s)?1:0))}).append(S),F=I.children("."+t.res(a,"navsubtree")),E=e(this).addClass(t.res(a,"tree")+" elfinder-places ui-corner-all").hide().append(I).appendTo(t.getUI("navbar")).on("mouseenter mouseleave","."+o,function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click","."+o,function(n){var i=e(this);return i.data("longtap")?void n.stopPropagation():void(!i.hasClass("elfinder-na")&&t.exec("open",i.attr("id").substr(6)))}).on("contextmenu","."+o+":not(."+c+")",function(n){var i=e(this),a=i.attr("id").substr(6);n.preventDefault(),t.trigger("contextmenu",{raw:[{label:t.i18n("moveUp"),icon:"up",remain:!0,callback:function(){T(a),w()}},"|",{label:t.i18n("rmFromPlaces"),icon:"rm",callback:function(){z(a),w()}}],x:n.pageX,y:n.pageY}),i.addClass("ui-state-hover"),t.getUI("contextmenu").children().on("mouseenter",function(){i.addClass("ui-state-hover")}),t.bind("closecontextmenu",function(){i.removeClass("ui-state-hover")})}).droppable({tolerance:"pointer",accept:".elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file",hoverClass:t.res("class","adroppable"),classes:{"ui-droppable-hover":t.res("class","adroppable")},over:function(n,a){var o=a.helper,r=e.grep(o.data("files"),function(e){return"directory"===t.file(e).mime&&!i[e]});n.stopPropagation(),o.data("dropover",o.data("dropover")+1),t.insideWorkzone(n.pageX,n.pageY)&&(r.length>0?(o.addClass("elfinder-drag-helper-plus"),t.trigger("unlockfiles",{files:o.data("files"),helper:o})):e(this).removeClass(d))},out:function(t,n){var i=n.helper;t.stopPropagation(),i.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus").data("dropover",Math.max(i.data("dropover")-1,0)),e(this).removeData("dropover").removeClass(d)},drop:function(n,a){var o=a.helper,r=!0;e.each(o.data("files"),function(e,n){var a=t.file(n);a&&"directory"==a.mime&&!i[a.hash]?C(a):r=!1}),w(),r&&o.hide()}}).on("touchstart","."+o+":not(."+c+")",function(n){if(!(n.originalEvent.touches.length>1))var i=e(this).attr("id").substr(6),a=e(this).addClass(l).data("longtap",null).data("tmlongtap",setTimeout(function(){a.data("longtap",!0),t.trigger("contextmenu",{raw:[{label:t.i18n("rmFromPlaces"),icon:"rm",callback:function(){z(i),w()}}],x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY})},500))}).on("touchmove touchend","."+o+":not(."+c+")",function(t){clearTimeout(e(this).data("tmlongtap")),"touchmove"==t.type&&e(this).removeClass(l)});e.fn.sortable&&F.addClass("touch-punch").sortable({appendTo:t.getUI(),revert:!1,helper:function(n){var i=e(n.target).parent();return i.children().removeClass("ui-state-hover"),e('<div class="ui-widget elfinder-place-drag elfinder-'+t.direction+'"></div>').append(e('<div class="elfinder-navbar"></div>').show().append(i.clone()))},stop:function(t,n){var i=e(n.item[0]),a=E.offset().top,o=E.offset().left,r=E.width(),s=E.height(),l=t.pageX,c=t.pageY;l>o&&l<o+r&&c>a&&c<c+s||(z(v(i.children(":first").attr("id"))),w())},update:function(e,t){w()}}),e(this).on("regist",function(t,n){var a=!1;e.each(n,function(e,t){t&&"directory"==t.mime&&!i[t.hash]&&C(t)&&(a=!0)}),a&&w()}),t.one("load",function(){t.oldAPI||(E.show().parent().show(),x(),t.change(function(t){var n=!1;e.each(t.data.changed,function(e,t){i[t.hash]&&("directory"!==t.mime?z(t.hash)&&(n=!0):A(t)&&(n=!0))}),n&&w()}).bind("rename",function(t){var n=!1;t.data.removed&&e.each(t.data.removed,function(e,i){t.data.added[e]&&A(t.data.added[e],i)&&(n=!0)}),n&&w()}).bind("rm paste",function(t){var n=[],i=!1;t.data.removed&&e.each(t.data.removed,function(e,t){var i=z(t);i&&n.push(i)}),n.length&&(i=!0),t.data.added&&n.length&&e.each(t.data.added,function(t,i){1!==e.inArray(i.name,n)&&"directory"==i.mime&&C(i)}),i&&w()}).bind("sync netmount",function(){var a,o=this,r=n.suffix?n.suffix:"";return"sync"===o.type&&f!==r?(f=r,j(),void x()):(a=Object.keys(i),void(a.length&&(M.prepend(h),t.request({data:{cmd:"info",targets:a},preventDefault:!0}).done(function(n){var a={},r=!1,s=t.cwd().hash;e.each(n.files||[],function(e,n){var i=n.hash;a[i]=n,t.files().hasOwnProperty(n.hash)||t.updateCache({tree:[n]})}),e.each(i,function(e,t){Boolean(t.notfound)===Boolean(a[e])?t.phash===s&&"netmount"!==o.type||a[e]&&"directory"!==a[e].mime?z(e)&&(r=!0):A(a[e]||Object.assign({notfound:!0},t))&&(r=!0):a[e]&&a[e].phash!=s&&A(a[e])}),r&&w()}).always(function(){h.remove()}))))}))})})},e.fn.elfindersearchbutton=function(t){return this.each(function(){var n,i,a,o,r=!1,s=t.fm,l=(s.res("class","disabled"),t.options.incsearch||{enable:!1}),c=t.options.searchTypes,d=function(e){return s.namespace+s.escape(e)},p=s.getUI("toolbar"),u=s.res("class","searchbtn"),h=e(this).hide().addClass("ui-widget-content elfinder-button "+u).on("click",function(e){e.stopPropagation()}),f=function(){var e=s.getUI(),t=e.offset(),n=h.offset();return{top:n.top-t.top,maxHeight:e.height()-40}},m=function(){b.data("inctm")&&clearTimeout(b.data("inctm"));var n=e.trim(b.val()),a=!e("#"+d("SearchFromAll")).prop("checked"),o=e("#"+d("SearchMime")).prop("checked"),l="";a&&(a=e("#"+d("SearchFromVol")).prop("checked")?s.root(s.cwd().hash):s.cwd().hash),o&&(o=n,n="."),i&&(l=i.children("input:checked").val()),n?(b.trigger("focus"),t.exec(n,a,o,l).done(function(){r=!0}).fail(function(){g()})):s.trigger("searchend")},g=function(){b.data("inctm")&&clearTimeout(b.data("inctm")),b.val("").trigger("blur"),(r||v)&&(r=!1,v="",s.lazy(function(){s.trigger("searchend")}))},v="",b=e('<input type="text" size="42"/>').on("focus",function(){!h.hasClass("ui-state-active")&&s.getUI().click(),o=!0,v="",h.addClass("ui-state-active"),s.trigger("uiresize"),n&&n.css(f()).slideDown(function(){h.addClass("ui-state-active"),s.toFront(n)})}).on("blur",function(){o=!1,n?n.data("infocus")?n.data("infocus",!1):n.slideUp(function(){h.removeClass("ui-state-active"),s.trigger("uiresize"),s.toHide(n)}):h.removeClass("ui-state-active")}).appendTo(h).on("keypress",function(e){e.stopPropagation()}).on("keydown",function(t){t.stopPropagation(),t.keyCode===e.ui.keyCode.ENTER?m():t.keyCode===e.ui.keyCode.ESCAPE&&(t.preventDefault(),g())});l.enable&&(l.minlen=l.minlen||2,l.wait=l.wait||500,b.attr("title",s.i18n("incSearchOnly")).on("compositionstart",function(){b.data("composing",!0)}).on("compositionend",function(){b.removeData("composing"),b.trigger("input")}).on("input",function(){b.data("composing")||(b.data("inctm")&&clearTimeout(b.data("inctm")),b.data("inctm",setTimeout(function(){var e=b.val();(0===e.length||e.length>=l.minlen)&&(v!==e&&s.trigger("incsearchstart",{query:e,type:i?i.children("input:checked").val():"searchName"}),v=e,""===e&&s.searchStatus.state>1&&s.searchStatus.query&&b.val(s.searchStatus.query).trigger("select"))},l.wait)))}),s.UA.ltIE8&&b.on("keydown",function(e){229===e.keyCode&&(b.data("imetm")&&clearTimeout(b.data("imetm")),b.data("composing",!0),b.data("imetm",setTimeout(function(){b.removeData("composing")},100)))}).on("keyup",function(t){b.data("imetm")&&clearTimeout(b.data("imetm")),b.data("composing")?t.keyCode===e.ui.keyCode.ENTER&&b.trigger("compositionend"):b.trigger("input")})),e('<span class="ui-icon ui-icon-search" title="'+t.title+'"></span>').appendTo(h).on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),h.hasClass("ui-state-active")?m():b.trigger("focus")}),e('<span class="ui-icon ui-icon-close"></span>').appendTo(h).on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),""!==b.val()||h.hasClass("ui-state-active")?g():b.trigger("focus")}),s.bind("toolbarload",function(){var e=h.parent();if(e.length&&(p.prepend(h.show()),e.remove(),s.UA.ltIE7)){var t=h.children("ltr"==s.direction?".ui-icon-close":".ui-icon-search");t.css({right:"",left:parseInt(h.width())-t.outerWidth(!0)})}}),s.one("init",function(){s.getUI("cwd").on("touchstart click",function(){o&&b.trigger("blur")})}).one("open",function(){n=s.api<2.1?null:e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-search-menu ui-corner-all"></div>').append(e('<div class="buttonset"></div>').append(e('<input id="'+d("SearchFromCwd")+'" name="serchfrom" type="radio" checked="checked"/><label for="'+d("SearchFromCwd")+'">'+s.i18n("btnCwd")+"</label>"),e('<input id="'+d("SearchFromVol")+'" name="serchfrom" type="radio"/><label for="'+d("SearchFromVol")+'">'+s.i18n("btnVolume")+"</label>"),e('<input id="'+d("SearchFromAll")+'" name="serchfrom" type="radio"/><label for="'+d("SearchFromAll")+'">'+s.i18n("btnAll")+"</label>")),e('<div class="buttonset elfinder-search-type"></div>').append(e('<input id="'+d("SearchName")+'" name="serchcol" type="radio" checked="checked" value="SearchName"/><label for="'+d("SearchName")+'">'+s.i18n("btnFileName")+"</label>"))).hide().appendTo(s.getUI()),n&&(c&&(i=n.find(".elfinder-search-type"),e.each(t.options.searchTypes,function(t,n){i.append(e('<input id="'+d(t)+'" name="serchcol" type="radio" value="'+s.escape(t)+'"/><label for="'+d(t)+'">'+s.i18n(n.name)+"</label>"))})),n.find("div.buttonset").buttonset(),e("#"+d("SearchFromAll")).next("label").attr("title",s.i18n("searchTarget",s.i18n("btnAll"))),c&&e.each(c,function(t,n){n.title&&e("#"+d(t)).next("label").attr("title",s.i18n(n.title))}),n.on("mousedown","div.buttonset",function(e){e.stopPropagation(),n.data("infocus",!0)}).on("click","input",function(t){t.stopPropagation(),e.trim(b.val())?m():b.trigger("focus")}).on("close",function(){b.trigger("blur")}))}).bind("searchend",function(){b.val("")}).bind("open parents",function(){var t=[],n=s.file(s.root(s.cwd().hash));n&&(e.each(s.parents(s.cwd().hash),function(e,n){t.push(s.file(n).name)}),e("#"+d("SearchFromCwd")).next("label").attr("title",s.i18n("searchTarget",t.join(s.option("separator")))),e("#"+d("SearchFromVol")).next("label").attr("title",s.i18n("searchTarget",n.name)))}).bind("open",function(){v&&g()}).bind("cwdinit",function(){a=!1}).bind("cwdrender",function(){a=!0}).bind("keydownEsc",function(){v&&"/"===v.substr(0,1)&&(v="",b.val(""),s.trigger("searchend"))}).shortcut({pattern:"ctrl+f f3",description:t.title,callback:function(){b.trigger("select").trigger("focus")}}).shortcut({pattern:"a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9",description:s.i18n("firstLetterSearch"),callback:function(t){if(a){var n,i=t.originalEvent.keyCode,o=function(){var t=s.selected(),n=e.ui.keyCode[!t.length||s.cwdHash2Elm(t[0]).next("[id]").length?"RIGHT":"HOME"];e(document).trigger(e.Event("keydown",{keyCode:n,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))};i>=96&&i<=105&&(i-=48),n="/"+String.fromCharCode(i),v!==n?(b.val(n),v=n,s.trigger("incsearchstart",{query:n}).one("cwdrender",o)):o()}}})})},e.fn.elfindersortbutton=function(t){return this.each(function(){var n,i=t.fm,a=t.name,o="class",r=i.res(o,"disabled"),s=i.res(o,"hover"),l="elfinder-button-menu-item",c=l+"-selected",d=c+"-asc",p=c+"-desc",u=e('<span class="elfinder-button-text">'+t.title+"</span>"),h=e(this).addClass("ui-state-default elfinder-button elfinder-menubutton elfiner-button-"+a).attr("title",t.title).append('<span class="elfinder-button-icon elfinder-button-icon-'+a+'"></span>',u).on("mouseenter mouseleave",function(e){!h.hasClass(r)&&h.toggleClass(s,"mouseenter"===e.type)}).on("click",function(e){h.hasClass(r)||(e.stopPropagation(),m.is(":hidden")&&i.getUI().click(),m.css(v()).slideToggle({duration:100,done:function(e){i[m.is(":visible")?"toFront":"toHide"](m)}}))}),f=function(){i.toHide(m)},m=e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-sort-menu ui-corner-all"></div>').hide().appendTo(i.getUI()).on("mouseenter mouseleave","."+l,function(t){e(this).toggleClass(s,"mouseenter"===t.type)}).on("click",function(e){e.preventDefault(),e.stopPropagation()}).on("close",f),g=function(){m.children("[rel]").removeClass(c+" "+d+" "+p).filter('[rel="'+i.sortType+'"]').addClass(c+" "+("asc"==i.sortOrder?d:p)),m.children(".elfinder-sort-stick").toggleClass(c,i.sortStickFolders),m.children(".elfinder-sort-tree").toggleClass(c,i.sortAlsoTreeview)},v=function(){var e=i.getUI().offset(),t=h.offset();return{top:t.top-e.top,left:t.left-e.left}};u.hide(),e.each(i.sortRules,function(t,n){m.append(e('<div class="'+l+'" rel="'+t+'"><span class="ui-icon ui-icon-arrowthick-1-n"></span><span class="ui-icon ui-icon-arrowthick-1-s"></span>'+i.i18n("sort"+t)+"</div>").data("type",t))}),m.children().on("click",function(n){t.exec([],e(this).removeClass(s).attr("rel"))}),e('<div class="'+l+" "+l+'-separated elfinder-sort-ext elfinder-sort-stick"><span class="ui-icon ui-icon-check"></span>'+i.i18n("sortFoldersFirst")+"</div>").appendTo(m).on("click",function(){t.exec([],"stick")}),i.one("init",function(){i.ui.tree&&null!==i.options.sortAlsoTreeview&&e('<div class="'+l+" "+l+'-separated elfinder-sort-ext elfinder-sort-tree"><span class="ui-icon ui-icon-check"></span>'+i.i18n("sortAlsoTreeview")+"</div>").appendTo(m).on("click",function(){t.exec([],"tree")})}).bind("disable select",f).bind("sortchange",g).getUI().on("click",f),m.children().length>1?t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){h.toggleClass(r,t.disabled()),g()})}).change():h.addClass(r)})},e.fn.elfinderstat=function(t){return this.each(function(){var n=e(this).addClass("elfinder-stat-size"),i=e('<div class="elfinder-stat-selected"></div>').on("click","a",function(n){var i=e(this).data("hash");n.preventDefault(),t.exec("opendir",[i])}),a=t.i18n("items"),o=t.i18n("selected"),r=t.i18n("size"),s=function(i){var o=0,r=0,s=t.cwd(),l=!0,c=!0;(s.sizeInfo||s.size)&&(r=s.size,l=!1),e.each(i,function(e,t){o++,l&&(r+=parseInt(t.size)||0,c!==!0||"directory"!==t.mime||t.sizeInfo||(c=!1))}),n.html(a+': <span class="elfinder-stat-incsearch"></span>'+o+',&nbsp;<span class="elfinder-stat-size'+(c?" elfinder-stat-size-recursive":"")+'">'+t.i18n(c?"sum":"size")+": "+t.formatSize(r)+"</span>").attr("title",n.text()),t.trigger("uistatchange")},l=function(e){n.find("span.elfinder-stat-incsearch").html(e?e.hashes.length+" / ":""),n.attr("title",n.text()),t.trigger("uistatchange")},c=function(n){var a,s,l=0,c=0,d=[];1===n.length?(s=n[0],l=s.size,2===t.searchStatus.state&&(a=t.escape(s.path?s.path.replace(/\/[^\/]*$/,""):".."),d.push('<a href="#elf_'+s.phash+'" data-hash="'+s.hash+'" title="'+a+'">'+a+"</a>")),d.push(t.escape(s.i18||s.name)),i.html(d.join("/")+(l>0?", "+t.formatSize(l):""))):n.length?(e.each(n,function(e,t){c++,l+=parseInt(t.size)||0}),i.html(c?o+": "+c+", "+r+": "+t.formatSize(l):"&nbsp;")):i.html(""),i.attr("title",i.text()),t.trigger("uistatchange")};t.getUI("statusbar").prepend(n).append(i).show(),t.UA.Mobile&&e.fn.tooltip&&t.getUI("statusbar").tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}),t.bind("cwdhasheschange",function(n){s(e.map(n.data,function(e){return t.file(e)}))}).change(function(i){var a=i.data.changed||[],o=t.cwd().hash;e.each(a,function(){if(this.hash===o)return this.size&&(n.children(".elfinder-stat-size").addClass("elfinder-stat-size-recursive").html(t.i18n("sum")+": "+t.formatSize(this.size)),n.attr("title",n.text())),!1})}).select(function(){c(t.selectedFiles())}).bind("open",function(){c([])}).bind("incsearch",function(e){l(e.data)}).bind("incsearchend",function(){l()})})},e.fn.elfindertoast=function(t,n){var i=Object.assign({mode:"success",msg:"",showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1500,hideEasing:"swing",onHidden:void 0,timeOut:3e3,extNode:void 0,button:void 0,width:void 0},e.isPlainObject(n.options.uiOptions.toast.defaults)?n.options.uiOptions.toast.defaults:{});return this.each(function(){t=Object.assign({},i,t||{});var a,o=e(this),r=function(e){o.stop(),n.toFront(o),o[t.showMethod]({duration:t.showDuration,easing:t.showEasing,complete:function(){t.onShown&&t.onShown(),!e&&t.timeOut&&(a=setTimeout(s,t.timeOut))}})},s=function(){o[t.hideMethod]({duration:t.hideDuration,easing:t.hideEasing,complete:function(){t.onHidden&&t.onHidden(),o.remove()}})};o.on("click",function(e){e.stopPropagation(),e.preventDefault(),a&&clearTimeout(a),t.onHidden&&t.onHidden(),o.stop().remove()}).on("mouseenter mouseleave",function(e){t.timeOut&&(a&&clearTimeout(a),a=null,"mouseenter"===e.type?r(!0):a=setTimeout(s,t.timeOut))}).hide().addClass("toast-"+t.mode).append(e('<div class="elfinder-toast-msg"></div>').html(t.msg.replace(/%([a-zA-Z0-9]+)%/g,function(e,t){return n.i18n(t)}))),t.extNode&&o.append(t.extNode),t.button&&o.append(e('<button class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"></button>').append(e('<span class="ui-button-text"></span>').text(n.i18n(t.button.text))).on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",t.button.click||function(){})),t.width&&o.css("max-width",t.width),r()})},e.fn.elfindertoolbar=function(t,n){return this.not(".elfinder-toolbar").each(function(){var i,a,o,r,s,l,c,d,p,u=t._commands,h=e(this).addClass("ui-helper-clearfix ui-widget-header elfinder-toolbar"),f={displayTextLabel:!1,labelExcludeUA:["Mobile"],autoHideUA:["Mobile"],showPreferenceButton:"none"},m=function(t){return e.grep(t,function(t){return!e.isPlainObject(t)||(f=Object.assign(f,t),!1)})},g=function(n){var l,c;for(e.each(v,function(e,t){t.detach()}),h.empty(),i=b.length;i--;)if(b[i]){for(r=e('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>'),a=b[i].length;a--;)l=b[i][a],n&&n[l]||!(o=u[l])||(s="elfinder"+o.options.ui,!v[l]&&e.fn[s]&&(v[l]=e("<div></div>")[s](o)),v[l]&&(v[l].children(".elfinder-button-text")[d?"show":"hide"](),r.prepend(v[l])));r.children().length&&h.prepend(r),r.children(":gt(0)").before('<span class="ui-widget-content elfinder-toolbar-button-separator"></span>')}(c=u.preference)&&("always"===f.showPreferenceButton||!h.children().length&&"auto"===f.showPreferenceButton)&&(r=e('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>'),l="preference",s="elfinder"+o.options.ui,v[l]=e("<div></div>")[s](c),v[l].children(".elfinder-button-text")[d?"show":"hide"](),r.prepend(v[l]),h.append(r)),!h.data("swipeClose")&&h.children().length?h.show():h.hide(),x=h[0].clientHeight,t.trigger("toolbarload").trigger("uiresize")},v={},b=m(n||[]),y=null,w="",x=0,k=[];f.showPreferenceButton=f.showPreferenceButton.toLowerCase(),"none"!==f.displayTextLabel&&(d=t.storage("toolbarTextLabel"),d=null===d?f.displayTextLabel&&(!f.labelExcludeUA||!f.labelExcludeUA.length||!e.grep(f.labelExcludeUA,function(e){return!!t.UA[e]}).length):1==d,k.push({label:t.i18n("textLabel"),icon:"text",callback:function(){d=!d,h.css("height","").find(".elfinder-button-text")[d?"show":"hide"](),t.trigger("uiresize").storage("toolbarTextLabel",d?"1":"0")}})),f.preferenceInContextmenu&&u.preference&&k.push({label:t.i18n("toolbarPref"),icon:"preference",callback:function(){t.exec("preference",void 0,{tab:"toolbar"})}}),k.length&&h.on("contextmenu",function(e){e.stopPropagation(),e.preventDefault(),t.trigger("contextmenu",{raw:k,x:e.pageX,y:e.pageY})}).on("touchstart",function(e){e.originalEvent.touches.length>1||(h.data("tmlongtap")&&clearTimeout(h.data("tmlongtap")),h.removeData("longtap").data("longtap",{x:e.originalEvent.touches[0].pageX,y:e.originalEvent.touches[0].pageY}).data("tmlongtap",setTimeout(function(){h.removeData("longtapTm").trigger({type:"contextmenu",pageX:h.data("longtap").x,pageY:h.data("longtap").y}).data("longtap",{longtap:!0})},500)))}).on("touchmove touchend",function(e){h.data("tmlongtap")&&(("touchend"===e.type||Math.abs(h.data("longtap").x-e.originalEvent.touches[0].pageX)+Math.abs(h.data("longtap").y-e.originalEvent.touches[0].pageY)>4)&&clearTimeout(h.data("tmlongtap")),h.removeData("longtapTm"))}).on("click",function(e){h.data("longtap")&&h.data("longtap").longtap&&(e.stopImmediatePropagation(),e.preventDefault())}).on("touchend click",".elfinder-button",function(e){h.data("longtap")&&h.data("longtap").longtap&&(e.stopImmediatePropagation(),e.preventDefault())}),h.prev().length&&h.parent().prepend(this),g(),t.bind("open sync select toolbarpref",function(){var n,i,a,o=Object.assign({},t.option("disabledFlip")),r=t.storage("toolbarhides");if(!r&&Array.isArray(f.defaultHides)&&(r={},e.each(f.defaultHides,function(){r[this]=!0}),t.storage("toolbarhides",r)),"select"===this.type){if(t.searchStatus.state<2)return;i=t.selected(),i.length&&(o=t.getDisabledCmds(i,!0))}e.each(r,function(e){o[e]||(o[e]=!0)}),Object.keys(t.commandMap).length&&e.each(t.commandMap,function(e,t){"hidden"===t&&(o[e]=!0)}),a=Object.keys(o),y&&y.toString()===a.sort().toString()||(g(a.length?o:null),n=!0),y=a.sort(),(n||w!==JSON.stringify(t.commandMap))&&(w=JSON.stringify(t.commandMap),n||e.each(e("div.elfinder-button"),function(){var t=e(this).data("origin");t&&e(this).after(t).detach()}),Object.keys(t.commandMap).length&&e.each(t.commandMap,function(n,i){var a,o=t._commands[i],r=o?"elfinder"+o.options.ui:null;r&&e.fn[r]&&(a=v[n],a&&(!v[i]&&e.fn[r]&&(v[i]=e("<div></div>")[r](o),v[i]&&(v[i].children(".elfinder-button-text")[d?"show":"hide"](),o.extendsCmd&&v[i].children("span.elfinder-button-icon").addClass("elfinder-button-icon-"+o.extendsCmd))),v[i]&&(a.after(v[i]),v[i].data("origin",a.detach()))))}))}).bind("resize",function(e){p&&cancelAnimationFrame(p),p=requestAnimationFrame(function(){var e=h[0].clientHeight;x!==e&&(x=e,t.trigger("uiresize"))})}),t.UA.Touch&&(c=t.storage("autoHide")||{},"undefined"==typeof c.toolbar&&(c.toolbar=f.autoHideUA&&f.autoHideUA.length>0&&e.grep(f.autoHideUA,function(e){return!!t.UA[e]}).length,t.storage("autoHide",c)),c.toolbar&&t.one("init",function(){t.uiAutoHide.push(function(){h.stop(!0,!0).trigger("toggle",{duration:500,init:!0})})}),t.bind("load",function(){l=e('<div class="elfinder-toolbar-swipe-handle"></div>').hide().appendTo(t.getUI()),"none"!==l.css("pointer-events")&&(l.remove(),l=null)}),h.on("toggle",function(e,n){var i=t.getUI("workzone"),a=h.is(":hidden"),o=i.height(),r=h.height(),s=h.outerHeight(!0),d=s-r,p=Object.assign({step:function(e){i.height(o+(a?(e+d)*-1:r-e)),t.trigger("resize")},always:function(){requestAnimationFrame(function(){h.css("height",""),t.trigger("uiresize"),l&&(a?l.stop(!0,!0).hide():(l.height(n.handleH?n.handleH:""),t.resources.blink(l,"slowonce"))),a&&h.scrollTop("0px"),n.init&&t.trigger("uiautohide")})}},n);h.data("swipeClose",!a).stop(!0,!0).animate({height:"toggle"},p),c.toolbar=!a,t.storage("autoHide",Object.assign(t.storage("autoHide"),{toolbar:c.toolbar}))}).on("touchstart",function(e){h.scrollBottom()>5&&(e.originalEvent._preventSwipeY=!0)}))}),this},e.fn.elfindertree=function(t,n){var i=t.res("class","tree");return this.not("."+i).each(function(){var a,o,r,s,l="class",c=t.UA.Mobile,d=t.res(l,"treeroot"),p=n.openRootOnLoad,u=n.openCwdOnOpen,h=u||n.syncTree,f=t.res(l,"navsubtree"),m=t.res(l,"treedir"),g="span."+m,v=t.res(l,"navcollapse"),b=t.res(l,"navexpand"),y="elfinder-subtree-loaded",w="elfinder-subtree-chksubdir",x=t.res(l,"navarrow"),k=t.res(l,"active"),C=t.res(l,"adroppable"),z=t.res(l,"hover"),T=t.res(l,"disabled"),A=t.res(l,"draggable"),j=t.res(l,"droppable"),O="elfinder-navbar-wrapper-root",S="elfinder-navbar-wrapper-pastable",I="elfinder-navbar-wrapper-uploadable",M=function(e){var t=se.offset().left;return t<=e&&e<=t+se.width()},F={},E=[],D=function(n){var i=[];if(e.each(n,function(e,n){F[n]&&i.push(t.navId2Hash(n)),delete F[n]}),i.length)return t.request({data:{cmd:"subdirs",targets:i,preventDefault:!0}}).done(function(n){n&&n.subdirs&&e.each(n.subdirs,function(e,n){var i=t.navHash2Elm(e);i.removeClass(w),i[n?"addClass":"removeClass"](v)})})},U=null,P=function(){var n=Object.keys(F);n.length&&(U&&U._abort(),a&&clearTimeout(a),E=[],U=t.asyncJob(function(n){return t.isInWindow(e("#"+n))?n:null},n,{numPerOnce:200}).done(function(e){e.length&&(E=e,q())}))},R=0,q=function(){var e,i=n.subdirsMaxConn-R,o=t.maxTargets?Math.min(t.maxTargets,n.subdirsAtOnce):n.subdirsAtOnce;
if(a&&cancelAnimationFrame(a),E.length)if(i>0)for(e=0;e<i;e++)E.length&&(R++,D(E.splice(0,o)).always(function(){R--,q()}));else a=requestAnimationFrame(function(){E.length&&q()})},H=t.droppable.drop,_=e.extend(!0,{},t.droppable,{over:function(n,i){var a,o,r=e(this),s=i.helper,l=z+" "+C;return n.stopPropagation(),s.data("dropover",s.data("dropover")+1),r.data("dropover",!0),i.helper.data("namespace")===t.namespace&&t.insideWorkzone(n.pageX,n.pageY)?M(n.clientX)?(s.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),r.addClass(z),r.is("."+v+":not(."+b+")")&&r.data("expandTimer",setTimeout(function(){r.is("."+v+"."+z)&&r.children("."+x).trigger("click")},500)),r.is(".elfinder-ro,.elfinder-na")?void r.removeClass(C):(a=t.navId2Hash(r.attr("id")),r.data("dropover",a),e.each(i.helper.data("files"),function(e,n){if(n===a||t.file(n).phash===a&&!i.helper.hasClass("elfinder-drag-helper-plus"))return r.removeClass(l),!1}),s.data("locked")?o="elfinder-drag-helper-plus":(o="elfinder-drag-helper-move",t._commands.copy&&(n.shiftKey||n.ctrlKey||n.metaKey)&&(o+=" elfinder-drag-helper-plus")),r.hasClass(C)&&s.addClass(o),void requestAnimationFrame(function(){r.hasClass(C)&&s.addClass(o)}))):void r.removeClass(l):(r.removeClass(l),void s.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"))},out:function(t,n){var i=e(this),a=n.helper;t.stopPropagation(),M(t.clientX)&&a.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),a.data("dropover",Math.max(a.data("dropover")-1,0)),i.data("expandTimer")&&clearTimeout(i.data("expandTimer")),i.removeData("dropover").removeClass(z+" "+C)},deactivate:function(){e(this).removeData("dropover").removeClass(z+" "+C)},drop:function(e,t){M(e.clientX)&&H.call(this,e,t)}}),N=e(t.res("tpl","navspinner")),L=t.res("tpl","navdir"),W=t.res("tpl","perms"),B=(t.res("tpl","lock"),t.res("tpl","symlink")),$={},V={id:function(e){return t.navHash2Id(e.hash)},name:function(e){return t.escape(e.i18||e.name)},cssclass:function(e){var i=(e.phash&&!e.isroot?"":d)+" "+m+" "+t.perms2class(e);return e.dirs&&!e.link&&(i+=" "+v)&&e.dirs==-1&&(i+=" "+w),n.getClass&&(i+=" "+n.getClass(e)),e.csscls&&(i+=" "+t.escape(e.csscls)),i},title:function(e){return n.attrTitle?' title="'+t.escape(t.path(e.hash,!0)||e.i18||e.name)+'"':""},root:function(t){var n="";return!t.phash||t.isroot?(n+=" "+O,!t.disabled||t.disabled.length<1?n+=" "+S+" "+I:(e.inArray("paste",t.disabled)===-1&&(n+=" "+S),e.inArray("upload",t.disabled)===-1&&(n+=" "+I)),n):""},permissions:function(e){return e.read&&e.write?"":W},symlink:function(e){return e.alias?B:""},style:function(e){return e.icon?t.getIconStyle(e):""}},K=function(e){return L.replace(/(?:\{([a-z]+)\})/gi,function(t,n){var i=V[n]?V[n](e):e[n]||"";return"id"===n&&e.dirs==-1&&(F[i]=i),i})},X=function(n,i){return e.map(n||[],function(e){return"directory"!==e.mime||i&&!t.navHash2Elm(e.hash).length?null:e})},J=function(e){return e?t.navHash2Elm(e).next("."+f):oe},G=function(e,n){for(var i,a=e.children(":first");a.length;){if(i=t.file(t.navId2Hash(a.children("[id]").attr("id"))),(i=t.file(t.navId2Hash(a.children("[id]").attr("id"))))&&Q(n,i)<0)return a;a=a.next()}return e.children("button.elfinder-navbar-pager-next")},Y=function(i){for(var a,o,r,s,l,d,p,u=i.length,h=[],f=u,m=e(),g={},v=t.cwd(),b=function(i,a,o,r){var s={},l=0,d=t.newAPI?Math.min(1e4,Math.max(10,n.subTreeMax)):1e4,p=function(){s={},e.each(a,function(e,t){s[t.hash]=e})},u=function(t){"prepare"===t?e.each(a,function(e,t){t.node&&i.append(t.node.hide())}):"done"===t&&e.each(a,function(e,t){t.node&&t.node.detach().show()})},h=function(t,n){var i;return t.stopPropagation(),n.select?void g(f(n.select)):n.change?void u(n.change):(n.removed&&n.removed.length&&(a=e.grep(a,function(e){return n.removed.indexOf(e.hash)===-1||(!i&&(i=!0),!1)})),n.added&&n.added.length&&(a=a.concat(e.grep(n.added,function(e){return void 0===s[e.hash]&&(!i&&(i=!0),!0)}))),void(i&&(a.sort(Q),p(),g(l))))},f=function(e){if(void 0!==s[e])return Math.floor(s[e]/d)*d},m=t.navId2Hash(i.prev("[id]").attr("id")),g=function(n,o){var r,s,u,y,w,x,k,C,z=[],T={};delete $[m],l=n,i.off("update."+t.namespace,h),a.length>d&&(i.on("update."+t.namespace,h),void 0===n&&(u=0,p(),n=f(v.hash),void 0===n&&(n=0)),y=a.slice(n,n+d),$[m]=i,w=n?Math.max(-1,n-d):-1,x=n+d>=a.length?0:n+d,r=Math.ceil(a.length/d),s=Math.ceil(n/d)),e.each(y||a,function(e,t){z.push(K(t)),t.node&&(T[t.hash]=t.node)}),k=w>-1?e('<button class="elfinder-navbar-pager elfinder-navbar-pager-prev"></button>').text(t.i18n("btnPrevious",s,r)).button({icons:{primary:"ui-icon-caret-1-n"}}).on("click",function(e){e.preventDefault(),e.stopPropagation(),g(w,"up")}):e(),C=x?e('<button class="elfinder-navbar-pager elfinder-navbar-pager-next"></button>').text(t.i18n("btnNext",s+2,r)).button({icons:{primary:"ui-icon-caret-1-s"}}).on("click",function(e){e.preventDefault(),e.stopPropagation(),g(x,"down")}):e(),b(),i.empty()[y?"addClass":"removeClass"]("elfinder-navbar-hasmore").append(k,z.join(""),C),e.each(T,function(e,n){t.navHash2Elm(e).parent().replaceWith(n)}),o&&Z(t.navHash2Id(y["up"===o?y.length-1:0].hash)),!c&&t.lazy(function(){ie(null,i)})},b=function(){e.each(i.children(".elfinder-navbar-wrapper"),function(n,i){var o,r,l=e(i),c=l.children("[id]:first");c.hasClass(y)&&(o=t.navId2Hash(c.attr("id")),o&&void 0!==(r=s[o])&&(a[r].node=l.detach()))})};g()},w={},x=[],k={};f--;)a=i[f],g[a.hash]||t.navHash2Elm(a.hash).length||(g[a.hash]=!0,(o=J(a.phash)).length?(p=a.phash||"treeroot","undefined"==typeof k[p]&&(k[p]=o.children(":last")),s=!k[p].length,a.phash&&(s||o.hasClass("elfinder-navbar-hasmore")||(r=G(o,a)).length)?s?(w[a.phash]||(w[a.phash]=[]),w[a.phash].push(a)):r?(d=K(a),r.before(d),!c&&(m=m.add(d))):x.push(a):(d=K(a),s?o.prepend(d):k[p].after(d),a.phash&&!a.isroot||(l=t.navHash2Elm(a.hash).parent()),!c&&ie(null,l))):h.push(a));return Object.keys(w).length&&e.each(w,function(e,t){var n=J(e);t.sort(Q),b(n,t)}),x.length&&o.trigger("update."+t.namespace,{added:x}),h.length&&h.length<u?void Y(h):void(!c&&m.length&&t.lazy(function(){ie(m)}))},Q=function(e,n){if(t.sortAlsoTreeview){var i,a="asc"==t.sortOrder,o=t.sortType,r=t.sortRules;return i=a?r[t.sortType](e,n):r[t.sortType](n,e),"name"!==o&&0===i?i=a?r.name(e,n):r.name(n,e):i}return t.sortRules.name(e,n)},Z=function(i){var a,r,s,l,c,d,p=e.Deferred();return o&&clearTimeout(o),o=setTimeout(function(){a=e(document.getElementById(i||t.navHash2Id(t.cwd().hash))),a.length?((u?a:a.parent()).parents(".elfinder-navbar-wrapper").children("."+y).addClass(b).next("."+f).show(),r=oe.parent().stop(!1,!0),s=r.offset().top,l=r.height(),c=s+l-a.outerHeight(),d=a.offset().top,d<s||d>c?r.animate({scrollTop:r.scrollTop()+d-s-l/3},{duration:n.durations.autoScroll,complete:function(){p.resolve()}}):p.resolve()):p.reject()},100),p},ee=function(e){var n,i,a,o=e||t.cwd(),r=o.hash?[o.hash]:[];for(i=t.root(o.hash),a=t.file(i);a&&(n=a.phash)&&(r.unshift(n),i=t.root(n),a=t.file(i),!t.navHash2Elm(a.hash).hasClass(y)););return r},te=function(e){var n=e||t.cwd(),i=n.hash,a=t.navHash2Elm(i);if(!a.length){for(;n&&n.phash;)$[n.phash]&&!t.navHash2Elm(n.hash).length&&$[n.phash].trigger("update."+t.namespace,{select:n.hash}),n=t.file(n.phash);a=t.navHash2Elm(i)}return a},ne=function(n,i){var a,o,s=t.cwd(),l=s.hash,c=void 0===i?h:i,d=function(n){var i,r,s=e.Deferred(),l=[],d=ee(n),p=function(e,n,i){var a={cmd:e,target:n};return i&&(a.until=i),t.request({data:a,preventFail:!0})};return l=e.map(d,function(e){var n,a,o=t.file(e),r=!!o&&t.isRoot(o),s=t.navHash2Elm(e),l=function(e,n){var i,a,o=n||1;return a=!!(i=t.file(e))&&i.phash,a&&o>1?l(a,--o):a},c=function(){var i=l(e);for(n=i;i&&!t.navHash2Elm(i).hasClass(y);)n=i,i=l(i);return i||(n=void 0,i=t.root(e)),i}();return s.hasClass(y)||!r&&o&&t.navHash2Elm(o.phash).hasClass(y)?null:(r||c===l(e)||c===l(e,2)?(n=void 0,a="tree",r||(e=l(e))):a="parents",i||(i="tree"===a?e:c),p(a,e,n))}),l.length?(te(t.file(i)),r=t.navHash2Id(i),c&&Z(r),a=e("#"+r),o=e(t.res("tpl","navspinner")).insertBefore(a.children("."+x)),a.removeClass(v),e.when.apply(e,l).done(function(){var e,t,n,i={};if(t=arguments.length,t>0)for(n=0;n<t;n++)e=arguments[n].tree||[],i[d[n]]=Object.assign([],X(e));s.resolve(i)}).fail(function(){s.reject()}),s):s.resolve()},u=function(i,o){var r,l=function(){p&&a&&(J(a.hash).show().prev(g).addClass(b),p=!1),c?Z().done(P):P()};i&&e.each(i,function(e,n){n&&Y(n),te(t.file(e)),n&&ae(n,y)}),n&&(t.api<2.1&&n.push(s),Y(n)),r=te(),r.hasClass(k)||(oe.find(g+"."+k).removeClass(k),r.addClass(k)),r.parents(".elfinder-navbar-wrapper").children("."+m).addClass(y),i?t.lazy(l).done(function(){o.resolve()}):(l(),o.resolve())},f=function(e){a&&(o.remove(),a.addClass(v+(e?"":" "+y)))},w=e.Deferred();return t.navHash2Elm(l).length?u(void 0,w):(r=!0,d().done(function(e){u(e,w),f()}).fail(function(){f(!0),w.reject()}).always(function(){r=!1})),t.trigger("treesync",w),w},ie=function(n,i){n||(i&&!i.closest("div."+O).hasClass(I)||(i||oe.find("div."+I)).find(g+":not(.elfinder-ro,.elfinder-na)").addClass("native-droppable"),n=!i||i.closest("div."+O).hasClass(S)?(i||oe.find("div."+S)).find(g+":not(."+j+")"):e(),i&&i.children("div."+O).each(function(){ie(null,e(this))})),n.length&&t.asyncJob(function(t){e(t).droppable(_)},e.makeArray(n),{interval:20,numPerOnce:100})},ae=function(n,i){var a=i==y?"."+v+":not(."+y+")":":not(."+v+")";e.each(n,function(n,o){t.navHash2Elm(o.phash).filter(a).filter(function(){return e.grep(e(this).next("."+f).children(),function(t){return!e(t).children().hasClass(d)}).length>0}).addClass(i)})},oe=e(this).addClass(i).on("mouseenter mouseleave",g,function(i){var a="mouseenter"===i.type;if(!a||!re){var o,r,s=e(this);s.hasClass(C+" "+T)||(c||!a||s.data("dragRegisted")||s.hasClass(d+" "+A+" elfinder-na elfinder-wo")||(s.data("dragRegisted",!0),t.isCommandEnabled("copy",o=t.navId2Hash(s.attr("id")))&&s.draggable(t.draggable)),s.toggleClass(z,a)),a&&n.attrTitle&&(r=t.file(o||t.navId2Hash(s.attr("id"))),r.isroot||s.attr("title")!==(r.i18||r.name)||s.attr("title",t.path(o,!0)))}}).on("dragenter",g,function(t){if(t.originalEvent.dataTransfer){var n=e(this);n.addClass(z),n.is("."+v+":not(."+b+")")&&n.data("expandTimer",setTimeout(function(){n.is("."+v+"."+z)&&n.children("."+x).trigger("click")},500))}}).on("dragleave",g,function(t){if(t.originalEvent.dataTransfer){var n=e(this);n.data("expandTimer")&&clearTimeout(n.data("expandTimer")),n.removeClass(z)}}).on("click",g,function(n){var i=e(this),a=t.navId2Hash(i.attr("id"));t.file(a);return i.data("longtap")?(i.removeData("longtap"),void n.stopPropagation()):(i.hasClass(k)||(oe.find(g+"."+k).removeClass(k),i.addClass(k)),void(a==t.cwd().hash||i.hasClass(T)?(i.hasClass(v)&&i.children("."+x).trigger("click"),t.select({selected:[a],origin:"navbar"})):t.exec("open",a).done(function(){t.one("opendone",function(){t.select({selected:[a],origin:"navbar"})})})))}).on("touchstart",g,function(n){if(!(n.originalEvent.touches.length>1)){var i,a=n.originalEvent;return"INPUT"===n.target.nodeName?void n.stopPropagation():void(i=e(this).addClass(z).removeData("longtap").data("tmlongtap",setTimeout(function(e){i.data("longtap",!0),t.trigger("contextmenu",{type:"navbar",targets:[t.navId2Hash(i.attr("id"))],x:a.touches[0].pageX,y:a.touches[0].pageY})},500)))}}).on("touchmove touchend",g,function(t){return"INPUT"===t.target.nodeName?void t.stopPropagation():(clearTimeout(e(this).data("tmlongtap")),e(this).removeData("tmlongtap"),void("touchmove"==t.type&&e(this).removeClass(z)))}).on("click",g+"."+v+" ."+x,function(i){var a,o=e(this),r=o.parent(g),s=r.next("."+f),l=e.Deferred(),c=30;i.stopPropagation(),r.hasClass(y)?(r.toggleClass(b),t.lazy(function(){a=r.hasClass(b)?s.children().length+s.find("div.elfinder-navbar-subtree[style*=block]").children().length:s.find("div:visible").length,a>c?(s.toggle(),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()):s.stop(!0,!0)[r.hasClass(b)?"slideDown":"slideUp"](n.durations.slideUpDown,function(){t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()})}).always(function(){l.resolve()})):(N.insertBefore(o),r.removeClass(v),t.request({cmd:"tree",target:t.navId2Hash(r.attr("id"))}).done(function(e){Y(Object.assign([],X(e.tree))),s.children().length&&(r.addClass(v+" "+b),s.children().length>c?(s.show(),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()):s.stop(!0,!0).slideDown(n.durations.slideUpDown,function(){t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()}))}).always(function(e){N.remove(),r.addClass(y),t.one("treedone",function(){l.resolve()})})),o.data("dfrd",l)}).on("contextmenu",g,function(n){n.stopPropagation();var i=e(this);i.find("input:text").length||(n.preventDefault(),i.data("tmlongtap")||t.trigger("contextmenu",{type:"navbar",targets:[t.navId2Hash(e(this).attr("id"))],x:n.pageX,y:n.pageY}),i.addClass("ui-state-hover"),t.getUI("contextmenu").children().on("mouseenter",function(){i.addClass("ui-state-hover")}),t.bind("closecontextmenu",function(){i.removeClass("ui-state-hover")}))}).on("scrolltoview",g,function(n,i){var a=e(this);Z(a.attr("id")).done(function(){i&&"undefined"!==i.blink&&!i.blink||t.resources.blink(a,"lookme")})}).on("create."+t.namespace,function(n,i){var a=J(i.phash),o=i.move||!1,r=e(K(i)).addClass("elfinder-navbar-wrapper-tmp"),s=t.selected();o&&s.length&&t.trigger("lockfiles",{files:s}),a.prepend(r)}),re=!1,se=t.getUI("navbar").append(oe).show().on("scroll",function(){re=!0,s&&cancelAnimationFrame(s),s=requestAnimationFrame(function(){re=!1,P()})}),le=t.sortAlsoTreeview;t.open(function(e){var n=e.data,i=X(n.files),a=t.getUI("contextmenu");n.init&&oe.empty(),t.UA.iOS&&se.removeClass("overflow-scrolling-touch").addClass("overflow-scrolling-touch"),i.length?t.lazy(function(){a.data("cmdMaps")||a.data("cmdMaps",{}),Y(i),ae(i,y),ne(i)}):ne()}).add(function(e){var t=X(e.data.added);t.length&&(Y(t),ae(t,v))}).change(function(n){if(!r){var i,a,o,s,l,d,p,u,h,m,v,w,x=X(n.data.changed,!0),k=x.length,C=k;e();for(e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"prepare"})});C--;)if(i=x[C],a=i.phash,(o=t.navHash2Elm(i.hash)).length){if(v=o.parent(),a){if(l=o.closest("."+f),d=J(a),p=o.parent().next(),u=G(d,i),!d.length)continue;d[0]===l[0]&&p.get(0)===u.get(0)||(u.length?u.before(v):d.append(v))}h=o.hasClass(b),m=o.hasClass(y),s=e(K(i)),o.replaceWith(s.children(g)),!c&&ie(null,v),i.dirs&&(h||m)&&(o=t.navHash2Elm(i.hash))&&o.next("."+f).children().length&&(h&&o.addClass(b),m&&o.addClass(y)),w|=i.dirs==-1}w&&P(),e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"done"})}),k&&ne(void 0,!1)}}).remove(function(n){var i,a,o,r=n.data.removed,s=r.length;for(e.each($,function(e,n){n.trigger("update."+t.namespace,{removed:r}),n.trigger("update."+t.namespace,{change:"prepare"})});s--;)(i=t.navHash2Elm(r[s])).length&&(o=!0,a=i.closest("."+f),i.parent().detach(),a.children().length||a.hide().prev(g).removeClass(v+" "+b+" "+y));o&&t.getUI("navbar").children(".ui-resizable-handle").trigger("resize"),e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"done"})})}).bind("lockfiles unlockfiles",function(n){var i="lockfiles"==n.type,a=!!n.data.helper&&n.data.helper.data("locked"),o=i&&!a?"disable":"enable",r=e.grep(n.data.files||[],function(e){var n=t.file(e);return!(!n||"directory"!=n.mime)});e.each(r,function(e,n){var r=t.navHash2Elm(n);r.length&&!a&&(r.hasClass(A)&&r.draggable(o),r.hasClass(j)&&r.droppable(o),r[i?"addClass":"removeClass"](T))})}).bind("sortchange",function(){if(t.sortAlsoTreeview||le!==t.sortAlsoTreeview){var n,i,a=[],o={},r={},s="",l=!1;t.lazy(function(){n=X(t.files()),le=t.sortAlsoTreeview,oe.empty(),Y(e.map(t.roots,function(e){var n=t.file(e);return n&&!n.phash?n:null})),Object.keys($).length?(a=ee(),a.length>1?(e.each(a,function(e,n){var i=t.file(t.root(n)).volumeid;0===e&&(s=i),r[i]=n,o[n]=[]}),e.each(n,function(e,t){return t.volumeid?void o[r[t.volumeid]||r[s]].push(t):(l=!0,!1)})):l=!0,l?e.each(a,function(e,a){Y(n),i=te(t.file(a)),ae(n,y)}):e.each(o,function(e,n){Y(n),i=te(t.file(e)),ae(n,y)})):(Y(n),i=te(),ae(n,y)),ne()},100)}})}),this},e.fn.elfinderuploadbutton=function(t){return this.each(function(){var n,i=t.fm,a=e(this).elfinderbutton(t).off("click"),o=e("<form></form>").appendTo(a),r=e('<input type="file" multiple="true" title="'+t.fm.i18n("selectForUpload")+'"/>').on("change",function(){var t=e(this);t.val()&&(i.exec("upload",{input:t.remove()[0]},void 0,i.cwd().hash),r.clone(!0).appendTo(o))}).on("dragover",function(e){e.originalEvent.dataTransfer.dropEffect="copy"});o.append(r.clone(!0)),t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e=t.disabled();o.is("visible")?!e&&o.hide():e&&o.show()})}).change()})},e.fn.elfinderviewbutton=function(t){return this.each(function(){var n,i=e(this).elfinderbutton(t),a=i.children(".elfinder-button-icon"),o=i.children(".elfinder-button-text");t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e="icons"==t.value;a.toggleClass("elfinder-button-icon-view-list",e),t.className=e?"view-list":"",t.title=t.fm.i18n(e?"viewlist":"viewicons"),i.attr("title",t.title),o.html(t.title)})})})},e.fn.elfinderworkzone=function(t){var n="elfinder-workzone";return this.not("."+n).each(function(){var i,a=e(this).addClass(n),o=Math.round(a.height()),r=a.parent(),s=function(){i=a.outerHeight(!0)-a.height()},l=function(s){var l=r.height()-i,c=r.attr("style"),d=Math.round(a.height());s&&(s.preventDefault(),s.stopPropagation()),r.css("overflow","hidden").children(":visible:not(."+n+")").each(function(){var t=e(this);"absolute"!=t.css("position")&&"fixed"!=t.css("position")&&(l-=t.outerHeight(!0))}),r.attr("style",c||""),l=Math.max(0,Math.round(l)),o===l&&d===l||(o=Math.round(a.height()),a.height(l),t.trigger("wzresize"))},c=function(){i=a.outerHeight(!0)-a.height(),l()};s(),r.on("resize."+t.namespace,l),t.one("cssloaded",c).bind("uiresize",l).bind("themechange",s)}),this},i.prototype.commands.archive=function(){var t,n=this,i=n.fm,a=[];this.variants=[],this.disableOnSearch=!1,this.nextAction={},i.bind("open reload",function(){n.variants=[],e.each(a=i.option("archivers").create||[],function(e,t){n.variants.push([t,i.mime2kind(t)])}),n.change()}),this.getstate=function(n){var o,r=this.files(n),s=r.length,l=s&&!i.isRoot(r[0])&&(i.file(r[0].phash)||{}).write,c=function(t){var n=!0;return e.grep(t,function(e){return n=!(!n||!e.read||0!==e.hash.indexOf(o))})};return l&&i.searchStatus.state>1&&(l=s===c(r).length)&&(o=i.cwd().volumeid),l&&!this._disabled&&a.length&&(s||t&&"pending"==t.state())?0:-1},this.exec=function(o,r){var s,l,c=this.files(o),d=c.length,p=r||a[0],u=i.file(c[0].phash)||null,h=["errArchive","errPerm","errCreatingTempDir","errFtpDownloadFile","errFtpUploadFile","errFtpMkdir","errArchiveExec","errExtractExec","errRm"];if(t=e.Deferred().fail(function(e){e&&i.error(e)}),!d||!a.length||e.inArray(p,a)===-1)return t.reject();if(!u.write)return t.reject(h);for(s=0;s<d;s++)if(!c[s].read)return t.reject(h);return n.mime=p,n.prefix=(d>1?"Archive":c[0].name)+(i.option("archivers").createext?"."+i.option("archivers").createext[p]:""),n.data={targets:n.hashes(o),type:p},i.cwd().hash!==u.hash?l=i.exec("open",u.hash).done(function(){i.one("cwdrender",function(){i.selectfiles({files:o}),t=e.proxy(i.res("mixin","make"),n)()})}):(i.selectfiles({files:o}),t=e.proxy(i.res("mixin","make"),n)()),t}},(i.prototype.commands.back=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+left backspace"}],this.getstate=function(){return this.fm.history.canBack()?0:-1},this.exec=function(){return this.fm.history.back()}}).prototype={forceLoad:!0},i.prototype.commands.chmod=function(){this.updateOnSelect=!1;var t=this.fm,n={0:"owner",1:"group",2:"other"},i={read:t.i18n("read"),write:t.i18n("write"),execute:t.i18n("execute"),perm:t.i18n("perm"),kind:t.i18n("kind"),files:t.i18n("files")},a=function(e){return!isNaN(parseInt(e,8))&&parseInt(e,8)<=511||e.match(/^([r-][w-][x-]){3}$/i)};this.tpl={main:'<div class="ui-helper-clearfix elfinder-info-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}</div>{dataTable}',itemTitle:'<strong>{name}</strong><span id="elfinder-info-kind">{kind}</span>',groupTitle:"<strong>{items}: {num}</strong>",dataTable:'<table id="{id}-table-perm"><tr><td>{0}</td><td>{1}</td><td>{2}</td></tr></table><div class="">'+i.perm+': <input class="elfinder-tabstop elfinder-focus" id="{id}-perm" type="text" size="4" maxlength="3" value="{value}"></div>',fieldset:'<fieldset id="{id}-fieldset-{level}"><legend>{f_title}{name}</legend><input type="checkbox" value="4" class="elfinder-tabstop" id="{id}-read-{level}-perm"{checked-r}> <label for="{id}-read-{level}-perm">'+i.read+'</label><br><input type="checkbox" value="6" class="elfinder-tabstop" id="{id}-write-{level}-perm"{checked-w}> <label for="{id}-write-{level}-perm">'+i.write+'</label><br><input type="checkbox" value="5" class="elfinder-tabstop" id="{id}-execute-{level}-perm"{checked-x}> <label for="{id}-execute-{level}-perm">'+i.execute+"</label><br>"},this.shortcuts=[{}],this.getstate=function(e){var t=this.fm;return e=e||t.selected(),0==e.length&&(e=[t.cwd().hash]),this.checkstate(this.files(e))?0:-1},this.checkstate=function(t){var n=t.length,i=function(i){var o=!0;return e.grep(t,function(e){return o=!(!(o&&e.isowner&&e.perm&&a(e.perm))||1!=n&&"directory"==e.mime)})};return!(!n||n!==i(t).length)},this.exec=function(t){var o=this.hashes(t),r=this.files(o);r.length||(o=[this.fm.cwd().hash],r=this.files(o));var s,l,c=this.fm,d=e.Deferred().always(function(){c.enable()}),p=this.tpl,u=r.length,h=r[0],f=c.namespace+"-perm-"+h.hash,m=p.main,g=' checked="checked"',v=function(){var e={};return e[c.i18n("btnApply")]=b,e[c.i18n("btnCancel")]=function(){A.elfinderdialog("close")},e},b=function(){var t,n=e.trim(e("#"+f+"-perm").val());return!!a(n)&&(A.elfinderdialog("close"),t={cmd:"chmod",targets:o,mode:n},void c.request({data:t,notify:{type:"chmod",cnt:u}}).fail(function(e){d.reject(e)}).done(function(n){n.changed&&n.changed.length&&(n.undo={cmd:"chmod",callback:function(){var t=[];return e.each(j,function(e,n){t.push(c.request({data:{cmd:"chmod",targets:n,mode:e},notify:{type:"undo",cnt:n.length}}))}),e.when.apply(null,t)}},n.redo={cmd:"chmod",callback:function(){return c.request({data:t,notify:{type:"redo",cnt:o.length}})}}),d.resolve(n)}))},y=function(){for(var t,i="",a=0;a<3;a++)t=0,e("#"+f+"-read-"+n[a]+"-perm").is(":checked")&&(t=4|t),e("#"+f+"-write-"+n[a]+"-perm").is(":checked")&&(t=2|t),e("#"+f+"-execute-"+n[a]+"-perm").is(":checked")&&(t=1|t),i+=t.toString(8);e("#"+f+"-perm").val(i)},w=function(t){for(var i,a=0;a<3;a++)i=parseInt(t.slice(a,a+1),8),e("#"+f+"-read-"+n[a]+"-perm").prop("checked",!1),e("#"+f+"-write-"+n[a]+"-perm").prop("checked",!1),e("#"+f+"-execute-"+n[a]+"-perm").prop("checked",!1),4==(4&i)&&e("#"+f+"-read-"+n[a]+"-perm").prop("checked",!0),2==(2&i)&&e("#"+f+"-write-"+n[a]+"-perm").prop("checked",!0),1==(1&i)&&e("#"+f+"-execute-"+n[a]+"-perm").prop("checked",!0);y()},x=function(e){for(var t,n,i,a="777",o="",r=e.length,s=0;s<r;s++){t=z(e[s].perm),j[t]||(j[t]=[]),j[t].push(e[s].hash),o="";for(var l=0;l<3;l++)n=parseInt(t.slice(l,l+1),8),i=parseInt(a.slice(l,l+1),8),4!=(4&n)&&4==(4&i)&&(i-=4),2!=(2&n)&&2==(2&i)&&(i-=2),1!=(1&n)&&1==(1&i)&&(i-=1),o+=i.toString(8);a=o}return a},k=function(e){return e?":"+e:""},C=function(e,t){for(var a,o,r="",s=p.dataTable,l=0;l<3;l++)a=parseInt(e.slice(l,l+1),8),r+=a.toString(8),o=p.fieldset.replace("{f_title}",c.i18n(n[l])).replace("{name}",k(t[n[l]])).replace(/\{level\}/g,n[l]),s=s.replace("{"+l+"}",o).replace("{checked-r}",4==(4&a)?g:"").replace("{checked-w}",2==(2&a)?g:"").replace("{checked-x}",1==(1&a)?g:"");return s=s.replace("{value}",r).replace("{valueCaption}",i.perm)},z=function(e){if(isNaN(parseInt(e,8))){for(var t=e.split(""),n=[],i=0,a=t.length;i<a;i++)0===i||3===i||6===i?t[i].match(/[r]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0):1===i||4===i||7===i?t[i].match(/[w]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0):t[i].match(/[x]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0);n.splice(3,0,","),n.splice(7,0,",");for(var o=n.join(""),r=o.split(","),s=[],l=0,c=r.length;l<c;l++){var d=parseInt(r[l],2).toString(8);s.push(d)}e=s.join("")}else e=parseInt(e,8).toString(8);return e},T={title:this.title,width:"auto",buttons:v(),close:function(){e(this).elfinderdialog("destroy")}},A=c.getUI().find("#"+f),j={},O="";return A.length?(A.elfinderdialog("toTop"),e.Deferred().resolve()):(m=m.replace("{class}",u>1?"elfinder-cwd-icon-group":c.mime2class(h.mime)),u>1?s=p.groupTitle.replace("{items}",c.i18n("items")).replace("{num}",u):(s=p.itemTitle.replace("{name}",h.name).replace("{kind}",c.mime2kind(h)),O=c.tmb(h)),l=C(x(r),1==r.length?r[0]:{}),m=m.replace("{title}",s).replace("{dataTable}",l).replace(/{id}/g,f),A=this.fmDialog(m,T),A.attr("id",f),O&&e("<img/>").on("load",function(){A.find(".elfinder-cwd-icon").addClass(O.className).css("background-image","url('"+O.url+"')")}).attr("src",O.url),e("#"+f+"-table-perm :checkbox").on("click",function(){y("perm")}),e("#"+f+"-perm").on("keydown",function(t){var n=t.keyCode;if(n==e.ui.keyCode.ENTER)return t.stopPropagation(),void b()}).on("focus",function(t){e(this).trigger("select")}).on("keyup",function(t){3==e(this).val().length&&(e(this).trigger("select"),w(e(this).val()))}),d)}},i.prototype.commands.colwidth=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.getstate=function(){return"fixed"===this.fm.getUI("cwd").find("table").css("table-layout")?0:-1},this.exec=function(){return this.fm.getUI("cwd").trigger("colwidth"),e.Deferred().resolve()}},i.prototype.commands.copy=function(){this.shortcuts=[{pattern:"ctrl+c ctrl+insert"}],this.getstate=function(t){var n=this.files(t),i=n.length,a=function(t){var n=!0;return e.grep(t,function(e){return n=!(!n||!e.read)})};return i&&a(n).length==i?0:-1},this.exec=function(t){var n=this.fm,i=e.Deferred().fail(function(e){n.error(e)});return e.each(this.files(t),function(e,t){if(!t.read)return!i.reject(["errCopy",t.name,"errPerm"])}),"rejected"==i.state()?i:i.resolve(n.clipboard(this.hashes(t)))}},i.prototype.commands.cut=function(){var t=this.fm;this.shortcuts=[{pattern:"ctrl+x shift+insert"}],this.getstate=function(n){var i=this.files(n),a=i.length,o=function(n){var i=!0;return e.grep(n,function(e){return i=!(!i||!e.read||e.locked||t.isRoot(e))})};return a&&o(i).length==a?0:-1},this.exec=function(n){var i=e.Deferred().fail(function(e){t.error(e)});return e.each(this.files(n),function(e,n){return!n.read||n.locked||t.isRoot(n)?!i.reject(["errCopy",n.name,"errPerm"]):n.locked?!i.reject(["errLocked",n.name]):void 0}),"rejected"==i.state()?i:i.resolve(t.clipboard(this.hashes(n),!0))}},i.prototype.commands.zipdl=function(){},i.prototype.commands.download=function(){var t=this,n=this.fm,i=null,a=!1,o=!1,r=!1,s=window.location.pathname||"/",l=function(r,s){var l,c;if(null!==i&&(n.searchStatus.state>1?o=n.searchStatus.mixed:n.leafRoots[n.cwd().hash]&&(l=n.cwd().volumeid,e.each(r,function(e,t){if(0!==t.indexOf(l))return o=!0,!1})),a=n.isCommandEnabled("zipdl",r[0])),o){if(c=i?"zipdl":"download",r=e.grep(r,function(e){var t=n.file(e),a=!(!t||!i&&"directory"===t.mime||!n.isCommandEnabled(c,e));return t&&s&&!a&&n.cwdHash2Elm(t.hash).trigger("unselect"),a}),!r.length)return[]}else if(!n.isCommandEnabled("download",r[0]))return[];return e.grep(t.files(r),function(e){var t=!(!e.read||!a&&"directory"==e.mime);return s&&!t&&n.cwdHash2Elm(e.hash).trigger("unselect"),t})};this.linkedCmds=["zipdl"],this.shortcuts=[{pattern:"shift+enter"}],this.getstate=function(e){var t=this.hashes(e),i=t.length,o=this.options.maxRequests||10;return i<1?-1:(i=l(t).length,i&&(a||i<=o&&(!n.UA.IE&&!n.UA.Mobile||1==i))?0:-1)},n.bind("contextmenu",function(n){var i,a,o=t.fm,r=null,s=function(t){var n=t.url||o.url(t.hash);return{icon:"link",node:e("<a></a>").attr({href:n,target:"_blank",title:o.i18n("link")}).text(t.name).on("mousedown click touchstart touchmove touchend contextmenu",function(e){e.stopPropagation()}).on("dragstart",function(n){var i=n.dataTransfer||n.originalEvent.dataTransfer||null;if(r=null,i){var a=function(t){var n,i=t.mime,a=o.tmb(t);return n='<div class="elfinder-cwd-icon '+o.mime2class(i)+' ui-corner-all"></div>',a&&(n=e(n).addClass(a.className).css("background-image","url('"+a.url+"')").get(0).outerHTML),n};i.effectAllowed="copyLink",i.setDragImage&&(r=e('<div class="elfinder-drag-helper html5-native">').append(a(t)).appendTo(e(document.body)),i.setDragImage(r.get(0),50,47)),o.UA.IE||(i.setData("elfinderfrom",window.location.href+t.phash),i.setData("elfinderfrom:"+i.getData("elfinderfrom"),""))}}).on("dragend",function(e){r&&r.remove()})}};if(t.extra=null,n.data&&(i=n.data.targets||[],1===i.length&&(a=o.file(i[0]))&&"directory"!==a.mime))if("1"!=a.url)t.extra=s(a);else{var l;t.extra={icon:"link",node:e("<a></a>").attr({href:"#",title:o.i18n("getLink"),draggable:"false"}).text(a.name).on("click touchstart",function(e){if(!("touchstart"===e.type&&e.originalEvent.touches.length>1)){var t=l.parent();e.stopPropagation(),e.preventDefault(),t.removeClass("ui-state-disabled").addClass("elfinder-button-icon-spinner"),o.request({data:{cmd:"url",target:a.hash},preventDefault:!0}).always(function(e){if(t.removeClass("elfinder-button-icon-spinner"),e.url){var n=o.file(a.hash);n.url=e.url,l.replaceWith(s(a).node)}else t.addClass("ui-state-disabled")})}})},l=t.extra.node,l.ready(function(){requestAnimationFrame(function(){l.parent().addClass("ui-state-disabled").css("pointer-events","auto")})})}}).one("open",function(){n.api>=2.1012&&(i=n.getCommand("zipdl")),r=n.cookieEnabled&&n.api>2.1038&&!n.isCORS}),this.exec=function(n){var i,c,d,p,u,h,f,m,g,v=this.hashes(n),b=this.fm,y=(b.options.url,l(v,!0)),w=e.Deferred(),x="",k={},C=!1,z=function(n){return function(){var i,a,o,r=e.Deferred(),s=b.file(b.root(n[0])),l=1===n.length,d=s?s.i18||s.name:null;return l?(i=b.file(n[0]))&&(a=i.i18||i.name):(e.each(n,function(){var e=b.file(this);return!e||o&&o!==e.phash?(o=null,!1):void(o=e.phash)}),o&&(i=b.file(o))&&(a=(i.i18||i.name)+"-"+n.length)),a&&(d=a),d&&(d=" ("+d+")"),b.request({data:{cmd:"zipdl",targets:n},notify:{type:"zipdl",cnt:1,hideCnt:!0,msg:b.i18n("ntfzipdl")+d},cancel:!0,eachCancel:!0,preventDefault:!0}).done(function(i){var o,s,l,d,u,h,f={},m="dlw"+ +new Date,g=function(n){l=e("<a></a>").attr("href",n).attr("download",b.escape(a)).on("click",function(){r.resolve(),s&&s.elfinderdialog("destroy")}),C?(l.attr("target","_blank").append('<span class="elfinder-button-icon elfinder-button-icon-download"></span>'+b.escape(a)),f[b.i18n("btnCancel")]=function(){s.elfinderdialog("destroy")},s=t.fmDialog(l,{title:b.i18n("link"),buttons:f,width:"200px",destroyOnClose:!0,close:function(){"resolved"!==r.state()&&r.resolve()}})):(T(l.hide().appendTo("body").get(0)),l.remove())};i.error?(b.error(i.error),r.resolve()):i.zipdl&&(o=i.zipdl,a?(h=b.splitFileExtention(o.name||""),a+=h[1]?"."+h[1]:".zip"):a=o.name,p||C?(c=b.options.url+(b.options.url.indexOf("?")===-1?"?":"&")+"cmd=zipdl&download=1",e.each([n[0],o.file,a,o.mime],function(e,t){c+="&targets%5B%5D="+encodeURIComponent(t)}),e.each(b.customData,function(e,t){c+="&"+encodeURIComponent(e)+"="+encodeURIComponent(t)}),c+="&"+encodeURIComponent(a),b.hasParrotHeaders()?b.getBinaryByUrl({url:c},function(e){e instanceof Blob?(c=(window.URL||window.webkitURL).createObjectURL(e),g(c)):b.error(["errUploadTransfer",b.i18n("kindZIP")])}):g(c)):(d=e('<form action="'+b.options.url+'" method="post" target="'+m+'" style="display:none"></form>').append('<input type="hidden" name="cmd" value="zipdl"/>').append('<input type="hidden" name="download" value="1"/>'),e.each([n[0],o.file,a,o.mime],function(e,t){d.append('<input type="hidden" name="targets[]" value="'+b.escape(t)+'"/>')}),e.each(b.customData,function(e,t){d.append('<input type="hidden" name="'+e+'" value="'+b.escape(t)+'"/>')}),d.attr("target",m).appendTo("body"),u=e('<iframe style="display:none" name="'+m+'">').appendTo("body").ready(function(){
d.submit().remove(),r.resolve(),setTimeout(function(){u.remove()},2e4)})))}).fail(function(e){e&&b.error(e),r.resolve()}),r.promise()}},T=function(e){var t;"function"==typeof MouseEvent?t=new MouseEvent("click"):(t=document.createEvent("MouseEvents"),t.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null)),b.pauseUnloadCheck(!0),e.dispatchEvent(t)},A=function(e){var t,n="elfdl"+e;t=document.cookie.split(n+"="),2===t.length?(h&&clearTimeout(h),document.cookie=n+"=; path="+s+"; max-age=0",j()):setTimeout(function(){A(e)},200)},j=function(){b.ui.notify.children(".elfinder-notify-download").length&&b.notify({type:"download",cnt:-1})},O=[];if(!y.length)return w.reject();if(u=e.grep(y,function(e){return"directory"!==e.mime}).length,d=e("<a>").hide().appendTo("body"),p="string"==typeof d.get(0).download,a&&(u!==y.length||u>=(this.options.minFilesZipdl||1)))return d.remove(),C=!p&&b.UA.Mobile,o?(k={},e.each(y,function(e,t){var n=t.hash.split("_",2);k[n[0]]?k[n[0]].push(t.hash):k[n[0]]=[t.hash]}),!C&&b.UA.Mobile&&Object.keys(k).length>1&&(C=!0)):k=[e.map(y,function(e){return e.hash})],w=b.sequence(e.map(k,function(e){return z(e)})).always(function(){b.trigger("download",{files:y})});for(O=[],m=e.Deferred().done(function(t){for(i=0;i<t.length;i++)c=t[i],r&&c.substr(0,b.options.url.length)===b.options.url&&(f=b.getRequestId(),O.push(f),c+="&cpath="+s+"&reqid="+f,h=setTimeout(function(){b.notify({type:"download",cnt:1,cancel:b.UA.IE||b.UA.Edge?void 0:function(){O.length&&e.each(O,function(){b.request({data:{cmd:"abort",id:this},preventDefault:!0})}),O=[]}})},b.notifyDelay),A(f)),p?T(d.attr("href",c).attr("download",b.escape(y[i].name)).get(0)):b.UA.Mobile?setTimeout(function(){window.open(c)||(b.error("errPopup"),h&&cleaerTimeout(h),j())},100):x+='<iframe class="downloader" id="downloader-'+y[i].hash+'" style="display:none" src="'+c+'"></iframe>';d.remove(),e(x).appendTo("body").ready(function(){setTimeout(function(){e(x).each(function(){e("#"+e(this).attr("id")).remove()})},2e4+1e4*i)}),b.trigger("download",{files:y}),w.resolve()}),u=y.length,g=[],i=0;i<y.length;i++)b.openUrl(y[i].hash,!0,function(e){e&&g.push(e),--u<1&&m.resolve(g)});return w}},i.prototype.commands.duplicate=function(){var t=this.fm;this.getstate=function(n){var i=this.files(n),a=i.length,o=function(n){var i=!0;return e.grep(n,function(e){return i=!(!i||!e.read||e.phash!==t.cwd().hash||t.isRoot(e))})};return a&&t.cwd().write&&o(i).length==a?0:-1},this.exec=function(t){var n=this.fm,i=this.files(t),a=i.length,o=e.Deferred().fail(function(e){e&&n.error(e)});return a?(e.each(i,function(e,t){if(!t.read||!n.file(t.phash).write)return!o.reject(["errCopy",t.name,"errPerm"])}),"rejected"==o.state()?o:n.request({data:{cmd:"duplicate",targets:this.hashes(t)},notify:{type:"copy",cnt:a},navigate:{toast:{inbuffer:{msg:n.i18n(["complete",n.i18n("cmdduplicate")])}}}})):o.reject()}},i.prototype.commands.edit=function(){var t,n=this,i=this.fm,a=i.res("class","editing"),o=[],r=[],s=!1,l=function(e){return e.replace(/\s+$/,"")},c=function(t){var a,o=e('<select class="ui-corner-all"></select>');return t&&e.each(t,function(e,t){a=i.escape(t.value),o.append('<option value="'+a+'">'+(t.caption?i.escape(t.caption):a)+"</option>")}),e.each(n.options.encodings,function(e,t){o.append('<option value="'+t+'">'+t+"</option>")}),o},d=function(){var t,a,o=i.options.dialogContained?i.getUI():e(window);return a="string"==typeof n.options.dialogWidth&&(t=n.options.dialogWidth.match(/(\d+)%/))?parseInt(o.width()*(t[1]/100)):parseInt(n.options.dialogWidth||650),Math.min(a,o.width())},p=function(){if(n.options.dialogHeight){var t,a,o=i.options.dialogContained?i.getUI():e(window);return a="string"==typeof n.options.dialogHeight&&(t=n.options.dialogHeight.match(/(\d+)%/))?parseInt(o.height()*(t[1]/100)):parseInt(n.options.dialogHeight||o.height()),Math.min(a,o.height())}},u=function(t){var a,l,c,d=t.length;return d>1&&(a=t[0].mime,l=t[0].name.replace(/^.*(\.[^.]+)$/,"$1")),e.grep(t,function(t){var p;return!c&&"directory"!==t.mime&&(p=t.read&&(s||i.mimeIsText(t.mime)||e.inArray(t.mime,1===d?o:r)!==-1)&&(!n.onlyMimes.length||e.inArray(t.mime,n.onlyMimes)!==-1)&&(1===d||t.mime===a&&t.name.substr(l.length*-1)===l)&&!!i.uploadMimeCheck(t.mime,t.phash)&&b(t,d)&&Object.keys(g).length,p||(c=!0),p)})},h=function(e){var t,n=i.file(e);i.request({cmd:"info",targets:[e],preventDefault:!0}).done(function(e){var a;e&&e.files&&e.files.length&&(t=e.files[0],n.ts==t.ts&&n.size==t.size||(a={changed:[t]},i.updateCache(a),i.change(a)))})},f=function(t,o,r,s,u,f){var g,v,b,y,w,k,C=e.Deferred(),z=!1,T=function(){return!!z||(i.toast({mode:"warning",msg:i.i18n("nowLoading")}),!1)},A=function(){f&&Array.isArray(f)&&e.each(f,function(){this.msg&&i.toast(this)})},j=function(){var t,n,a,o=y?y.val():void 0,r=e.Deferred().fail(function(e){b.show().find("button.elfinder-btncnt-0,button.elfinder-btncnt-1").hide()});return T()?(g.editor&&(g.editor.save(g[0],g.editor.instance),t=g.editor.confObj,t.info&&(t.info.schemeContent||t.info.arrayBufferContent)&&(o="scheme")),n=D(),U(n),n.promise?(a=setTimeout(function(){i.notify({type:"chkcontent",cnt:1,hideCnt:!0,cancel:function(){n.reject()}})},100),n.always(function(){a&&clearTimeout(a),i.notify({type:"chkcontent",cnt:-1})}).done(function(e){C.notifyWith(g,[o,g.data("hash"),v,r])}).fail(function(e){r.reject(e)})):C.notifyWith(g,[o,g.data("hash"),v,r]),r):r.resolve()},O=function(){T()&&j().fail(function(e){e&&i.error(e)})},S=function(){if(n.options.confirmUnsavedBeforeClose){var t=function(){var e;C.resolve(),g.editor&&(g.editor.close(g[0],g.editor.instance),e=g.editor.confObj,e.info&&e.info.syncInterval&&h(o.hash)),g.elfinderdialog("destroy")},a="undefined"!=typeof q.name,r=a?{label:"btnSaveAs",callback:function(){requestAnimationFrame(M)}}:{label:"btnSaveClose",callback:function(){j().done(function(){t()})}};F().done(function(o){var s=["confirmNotSave"],l={label:"btnDiscard",callback:function(){t()}};o?("string"==typeof o&&s.unshift(o),i.confirm({title:n.title,text:s,accept:r,cancel:{label:"btnCancel",callback:e.noop},buttons:a?[l]:[{label:"btnSaveAs",callback:function(){g.elfinderdialog("destroy"),requestAnimationFrame(M)}},l]})):t()})}else g.elfinderdialog("close")},I=function(){T()&&(b.hide(),j().done(function(){z=!1,b.show(),S()}).fail(function(e){b.show(),e&&i.error(e)}))},M=function(){if(T()){var t=v,r=o.phash,s=function(e){p.addClass(a).fadeIn(function(){e&&i.error(e)}),v=t,i.disable()},l=function(){n.mime=q.mime||o.mime,n.prefix=(q.name||o.name).replace(/ \d+(\.[^.]+)?$/,"$1"),n.requestCmd="mkfile",n.nextAction={},n.data={target:r},e.proxy(i.res("mixin","make"),n)().done(function(e){var t;e.added&&e.added.length?(t=g.data("hash"),g.data("hash",e.added[0].hash),j().done(function(){z=!1,b.show(),S(),p.fadeIn()}).fail(function(){i.exec("rm",[e.added[0].hash],{forceRm:!0,quiet:!0}),g.data("hash",t),b.find("button.elfinder-btncnt-2").hide(),s()})):s()}).progress(function(e){e&&"errUploadMime"===e&&g.trigger("saveAsFail")}).fail(s).always(function(){delete n.mime,delete n.prefix,delete n.nextAction,delete n.data}),i.trigger("unselectfiles",{files:[o.hash]})},c=null,d=null,p=i.getUI().children("."+n.dialogClass+":visible");b.is(":hidden")&&(p=p.add(b)),p.removeClass(a).fadeOut(),i.enable(),i.searchStatus.state<2&&r!==i.cwd().hash?c=i.exec("open",[r],{thash:r}):i.file(r)||(d=i.request({cmd:"info",targets:[r]})),e.when([c,d]).done(function(){d?i.one("infodone",function(){i.file(r)?l():s("errFolderNotFound")}):c?i.one("cwdrender",l):l()}).fail(s)}},F=function(){var t,n,a=e.Deferred();return z?(g.editor&&g.editor.save(g[0],g.editor.instance),t=D(),t&&t.promise?(n=setTimeout(function(){i.notify({type:"chkcontent",cnt:1,hideCnt:!0,cancel:function(){t.reject()}})},100),t.always(function(){n&&clearTimeout(n),i.notify({type:"chkcontent",cnt:-1})}).done(function(e){a.resolve(v!==e)}).fail(function(e){a.resolve(e||void 0!==v)})):a.resolve(v!==t),a):a.resolve(!1)},E={title:i.escape(o.name),width:d(),height:p(),buttons:{},cssClass:a,maxWidth:"window",maxHeight:"window",allowMinimize:!0,allowMaximize:!0,openMaximized:x()||u&&u.info&&u.info.openMaximized,btnHoverFocus:!1,closeOnEscape:!1,propagationEvents:["mousemove","mouseup","click"],minimize:function(){var e;g.editor&&b.closest(".ui-dialog").is(":hidden")&&(e=g.editor.confObj,e.info&&e.info.syncInterval&&h(o.hash))},headerBtnCloseAction:n.options.confirmUnsavedBeforeClose?function(){S()}:void 0,close:function(){if(!n.options.confirmUnsavedBeforeClose){var e=function(){var e;C.resolve(),g.editor&&(g.editor.close(g[0],g.editor.instance),e=g.editor.confObj,e.info&&e.info.syncInterval&&h(o.hash)),g.elfinderdialog("destroy")},t="undefined"!=typeof q.name,a=t?{label:"btnSaveAs",callback:function(){requestAnimationFrame(M)}}:{label:"btnSaveClose",callback:function(){j().done(function(){e()})}};F().done(function(o){var r=["confirmNotSave"];o?("string"==typeof o&&r.unshift(o),i.confirm({title:n.title,text:r,accept:a,cancel:{label:"btnClose",callback:e},buttons:t?null:[{label:"btnSaveAs",callback:function(){requestAnimationFrame(M)}}]})):e()})}},open:function(){var e,n,a;if(g.initEditArea.call(g,t,o,r,i),g.editor){if(e=g.editor.load(g[0])||null,e&&e.done)e.always(function(){z=!0}).done(function(e){g.editor.instance=e,g.editor.focus(g[0],g.editor.instance),U(D()),requestAnimationFrame(function(){b.trigger("resize")})}).fail(function(e){e&&i.error(e),g.elfinderdialog("destroy")}).always(A);else{if(z=!0,e&&("string"==typeof e||Array.isArray(e)))return i.error(e),void g.elfinderdialog("destroy");g.editor.instance=e,g.editor.focus(g[0],g.editor.instance),U(D()),requestAnimationFrame(function(){b.trigger("resize")}),A()}n=g.editor.confObj,n.info&&n.info.syncInterval&&(a=parseInt(n.info.syncInterval))&&setTimeout(function(){P(a)},a)}else z=!0,U(D())},resize:function(e,t){g.editor&&g.editor.resize(g[0],g.editor.instance,e,t||{})}},D=function(){var t=g.getContent.call(g,g[0]);return void 0!==t&&t!==!1&&null!==t||(t=e.Deferred().reject()),t},U=function(e){e&&e.promise?e.done(function(e){v=e}):v=e},P=function(e){b.is(":visible")&&(h(o.hash),setTimeout(function(){P(e)},e))},R=function(){y&&F().done(function(e){e?y.attr("title",i.i18n("saveAsEncoding")).addClass("elfinder-edit-changed"):y.attr("title",i.i18n("openAsEncoding")).removeClass("elfinder-edit-changed")})},q={};if(u&&(u.html&&(g=e(u.html)),w={init:u.init||null,load:u.load,getContent:u.getContent||null,save:u.save,beforeclose:"function"==typeof u.beforeclose?u.beforeclose:void 0,close:"function"==typeof u.close?u.close:function(){},focus:"function"==typeof u.focus?u.focus:function(){},resize:"function"==typeof u.resize?u.resize:function(){},instance:null,doSave:O,doCancel:S,doClose:I,file:o,fm:i,confObj:u,trigger:function(e,t){i.trigger("editEditor"+e,Object.assign({},u.info||{},t))}}),!g){if(!i.mimeIsText(o.mime))return C.reject("errEditorNotFound");!function(){g=e('<textarea class="elfinder-file-edit" rows="20" id="'+t+'-ta"></textarea>').on("input propertychange",R),u&&u.info&&!u.info.useTextAreaEvent||g.on("keydown",function(t){var n,i,a=t.keyCode;t.stopPropagation(),a==e.ui.keyCode.TAB&&(t.preventDefault(),this.setSelectionRange&&(n=this.value,i=this.selectionStart,this.value=n.substr(0,i)+"\t"+n.substr(this.selectionEnd),i+=1,this.setSelectionRange(i,i))),(t.ctrlKey||t.metaKey)&&(a!="Q".charCodeAt(0)&&a!="W".charCodeAt(0)||(t.preventDefault(),S()),a=="S".charCodeAt(0)&&(t.preventDefault(),O()))}).on("mouseenter",function(){this.focus()}),g.initEditArea=function(e,t,n){g.hide().val(n),this._setupSelEncoding(n)}}()}return g._setupSelEncoding=function(t){var n=s&&"unknown"!==s?[{value:s}]:[],a=e("<select></select>").hide(),r=function(t){t&&a.appendTo(y.parent()),a.empty().append(e("<option></option>").text(y.val())),y.width(a.width())};""!==t&&s&&"UTF-8"===s||n.push({value:"UTF-8"}),y=c(n).on("touchstart",function(e){e.stopPropagation()}).on("change",function(){F().done(function(e){e||""===D()||(S(),m(o,y.val(),u).fail(function(e){e&&i.error(e)}))}),r()}).on("mouseover",R),g.parent().next().prepend(e('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>').append(y)),r(!0)},g.data("hash",o.hash),w&&(g.editor=w,"function"==typeof w.beforeclose&&(E.beforeclose=function(){return w.beforeclose(g[0],w.instance)}),"function"==typeof w.init&&(g.initEditArea=w.init),"function"==typeof w.getContent&&(g.getContent=w.getContent)),g.initEditArea||(g.initEditArea=function(){}),g.getContent||(g.getContent=function(){return l(g.val())}),u&&u.info&&u.info.preventGet||(E.buttons[i.i18n("btnSave")]=O,E.buttons[i.i18n("btnSaveClose")]=I,E.buttons[i.i18n("btnSaveAs")]=M,E.buttons[i.i18n("btnCancel")]=S),u&&"function"==typeof u.prepare&&u.prepare(g,E,o),b=n.fmDialog(g,E).attr("id",t).on("keydown keyup keypress",function(e){e.stopPropagation()}).css({overflow:"hidden",minHeight:"7em"}).addClass("elfinder-edit-editor").closest(".ui-dialog").on("changeType",function(t,n){if(n.extention&&n.mime){var a=(n.extention,n.mime,e(this).children(".ui-dialog-buttonpane").children(".ui-dialog-buttonset"));a.children(".elfinder-btncnt-0,.elfinder-btncnt-1").hide(),q.name=i.splitFileExtention(o.name)[0]+"."+n.extention,q.mime=n.mime,n.keepEditor||a.children(".elfinder-btncnt-2").trigger("click")}}),k=(i.options.dialogContained?i.getUI():e(window)).width(),b.width()>k&&b.width(k),C.promise()},m=function(t,a,o){var r,s,l,d=t.hash,p=(i.options,e.Deferred()),u="edit-"+i.namespace+"-"+t.hash,h=i.getUI().find("#"+u),g=a?a:0,v=!1;if(h.length)return h.elfinderdialog("toTop"),p.resolve();if(!(t.read&&(t.write||o.info&&o.info.converter)))return s=["errOpen",t.name,"errPerm"],p.reject(s);if(o&&o.info){if("function"==typeof o.info.edit)return l=o.info.edit.call(i,t,o),l.promise?l.done(function(){p.resolve()}).fail(function(e){p.reject(e)}):l?p.resolve():p.reject(),p;v=o.info.preventGet||o.info.noContent,o.info.urlAsContent||v?(r=e.Deferred(),o.info.urlAsContent?i.url(d,{async:!0,onetime:!0,temporary:!0}).done(function(e){r.resolve({content:e})}):r.resolve({})):(g&&(t.encoding=g,i.cache(t,"change")),r=i.request({data:{cmd:"get",target:d,conv:g,_t:t.ts},options:{type:"get",cache:!0},notify:{type:"file",cnt:1},preventDefault:!0})),r.done(function(a){var r,s,l;a.doconv?i.confirm({title:n.title,text:"unknown"===a.doconv?"confirmNonUTF8":"confirmConvUTF8",accept:{label:"btnConv",callback:function(){p=m(t,r.val(),o)}},cancel:{label:"btnCancel",callback:function(){p.reject()}},optionsCallback:function(t){t.create=function(){var t=e('<div class="elfinder-dialog-confirm-encoding"></div>'),n={value:a.doconv};"unknown"===a.doconv&&(n.caption="-"),r=c([n]),e(this).next().find(".ui-dialog-buttonset").prepend(t.append(e("<label>"+i.i18n("encoding")+" </label>").append(r)))}}}):(!v&&i.mimeIsText(t.mime)&&(s=new RegExp("^(data:"+t.mime.replace(/([.+])/g,"\\$1")+";base64,)","i"),o.info.dataScheme?window.btoa&&!a.content.match(s)&&(a.content="data:"+t.mime+";base64,"+btoa(a.content)):window.atob&&(l=a.content.match(s))&&(a.content=atob(a.content.substr(l[1].length)))),f(u,t,a.content,a.encoding,o,a.toasts).done(function(e){p.resolve(e)}).progress(function(e,t,n,a){var o=this;t&&(d=t),i.request({options:{type:"post"},data:{cmd:"put",target:d,encoding:e||n.encoding,content:n},notify:{type:"save",cnt:1},syncOnFail:!0,preventFail:!0,navigate:{target:"changed",toast:{inbuffer:{msg:i.i18n(["complete",i.i18n("btnSave")])}}}}).fail(function(e){p.reject(e),a.reject()}).done(function(e){requestAnimationFrame(function(){o.trigger("focus"),o.editor&&o.editor.focus(o[0],o.editor.instance)}),a.resolve()})}).fail(function(e){p.reject(e)}))}).fail(function(e){var n=i.parseError(e);n=Array.isArray(n)?n[0]:n,t.encoding&&(t.encoding="",i.cache(t,"change")),"errConvUTF8"!==n&&i.sync(),p.reject(e)})}return p.promise()},g={},v={info:{id:"textarea",name:"TextArea",useTextAreaEvent:!0},load:function(t){this.trigger("Prepare",{node:t,editorObj:void 0,instance:void 0,opts:{}}),t.setSelectionRange&&t.setSelectionRange(0,0),e(t).trigger("focus").show()},save:function(){}},b=function(a,o){var r=function(t,n){if(n){if("*"===n[0]||e.inArray(t,n)!==-1)return!0;var a,o;for(o=n.length,a=0;a<o;a++)if(0===t.indexOf(n[a]))return!0;return!1}return i.mimeIsText(t)},s=function(e,t){if(!t||!t.length)return!0;var n,i,a=e.replace(/^.+\.([^.]+)|(.+)$/,"$1$2").toLowerCase();for(i=t.length,n=0;n<i;n++)if(a===t[n].toLowerCase())return!0;return!1},l=n.options.editors||[],c=i.cwd().write;return t=i.storage("storedEditors")||{},g={},l.length||(l=[v]),e.each(l,function(e,t){var n;(1===o||!t.info.single)&&(t.info&&t.info.converter?c:a.write)&&(a.size>0||!t.info.converter&&t.info.canMakeEmpty!==!1&&i.mimesCanMakeEmpty[a.mime])&&(!t.info.maxSize||a.size<=t.info.maxSize)&&r(a.mime,t.mimes||null)&&s(a.name,t.exts||null)&&"function"==typeof t.load&&"function"==typeof t.save&&(n=t.info.name?t.info.name:"Editor "+e,t.id=t.info.id?t.info.id:"editor"+e,t.name=n,t.i18n=i.i18n(n),g[t.id]=t)}),!!Object.keys(g).length},y=function(n,a){n&&a&&(e.isPlainObject(t)||(t={}),t[n]=a.id,i.storage("storedEditors",t),i.trigger("selectfiles",{files:i.selected()}))},w=function(){var e=i.storage("useStoredEditor");return e?e>0:n.options.useStoredEditor},x=function(){var e=i.storage("editorMaximized");return e?e>0:n.options.editorMaximized},k=function(t,n){var a=[];return e.each(g,function(e,o){a.push({label:i.escape(o.i18n),icon:o.info&&o.info.icon?o.info.icon:"edit",options:{iconImg:o.info&&o.info.iconImg?i.baseUrl+o.info.iconImg:void 0},callback:function(){y(t[0].mime,o),n&&n.call(o)}})}),a},C=function(e){return e.toLowerCase().replace(/ +/g,"")},z=function(e){var n=t[e];return n&&Object.keys(g).length?g[C(n)]:void 0};this.getEncSelect=c,this.shortcuts=[{pattern:"ctrl+e"}],this.init=function(){var t,n,i=this,a=this.fm,l=this.options,c=[];this.onlyMimes=this.options.mimes||[],a.one("open",function(){l.editors&&Array.isArray(l.editors)&&(a.trigger("canMakeEmptyFile",{mimes:Object.keys(a.storage("mkfileTextMimes")||{}).concat(l.makeTextMimes||["text/plain"])}),e.each(l.editors,function(e,t){t.info&&t.info.cmdCheck&&c.push(t.info.cmdCheck)}),c.length?a.api>=2.103?n=a.request({data:{cmd:"editor",name:c,method:"enabled"},preventDefault:!0}).done(function(e){t=e}).fail(function(){t={}}):(t={},n=e.Deferred().resolve()):n=e.Deferred().resolve(),n.always(function(){t&&(l.editors=e.grep(l.editors,function(e){return!e.info||!e.info.cmdCheck||!!t[e.info.cmdCheck]})),e.each(l.editors,function(e,t){t.setup&&"function"==typeof t.setup&&t.setup.call(t,l,a),t.disabled||(t.mimes&&Array.isArray(t.mimes)&&(o=o.concat(t.mimes),t.info&&t.info.single||(r=r.concat(t.mimes))),!s&&t.mimes&&"*"===t.mimes[0]&&(s=!0),t.info||(t.info={}),t.info.integrate&&a.trigger("helpIntegration",Object.assign({cmd:"edit"},t.info.integrate)),t.info.canMakeEmpty&&a.trigger("canMakeEmptyFile",{mimes:Array.isArray(t.info.canMakeEmpty)?t.info.canMakeEmpty:t.mimes}))}),o=(e.uniqueSort||e.unique)(o),r=(e.uniqueSort||e.unique)(r),l.editors=e.grep(l.editors,function(e){return!e.disabled})}))}).bind("select",function(){g=null}).bind("contextmenucreate",function(t){var n,o,r=function(e){var t=i.title;a.one("contextmenucreatedone",function(){i.title=t}),i.title=a.escape(e.i18n),e.info&&e.info.iconImg&&(i.contextmenuOpts={iconImg:a.baseUrl+e.info.iconImg}),delete i.variants};i.contextmenuOpts=void 0,"files"===t.data.type&&i.enabled()&&(n=a.file(t.data.targets[0]),b(n,t.data.targets.length)&&(Object.keys(g).length>1?w()&&(o=z(n.mime))?(r(o),i.extra={icon:"menu",node:e("<span></span>").attr({title:a.i18n("select")}).on("click touchstart",function(t){if(!("touchstart"===t.type&&t.originalEvent.touches.length>1)){var n=e(this);t.stopPropagation(),t.preventDefault(),a.trigger("contextmenu",{raw:k(a.selectedFiles(),function(){var e=a.selected();a.exec("edit",e,{editor:this}),a.trigger("selectfiles",{files:e})}),x:n.offset().left,y:n.offset().top})}})}):(delete i.extra,i.variants=[],e.each(g,function(e,t){i.variants.push([{editor:t},t.i18n,t.info&&t.info.iconImg?a.baseUrl+t.info.iconImg:"edit"])})):(r(g[Object.keys(g)[0]]),delete i.extra)))}).bind("canMakeEmptyFile",function(t){if(t.data&&t.data.resetTexts){var n=a.arrayFlip(i.options.makeTextMimes||["text/plain"]),o=i.getMkfileHides();e.each(a.storage("mkfileTextMimes")||{},function(e,t){n[e]||(delete a.mimesCanMakeEmpty[e],delete o[e])}),a.storage("mkfileTextMimes",null),Object.keys(o).length?a.storage("mkfileHides",o):a.storage("mkfileHides",null)}})},this.getstate=function(e){var t=this.files(e),n=t.length;return n&&u(t).length==n?0:-1},this.exec=function(t,n){var i,a=this.fm,o=u(this.files(t)),r=e.map(o,function(e){return e.hash}),s=[],l=n&&n.editor?n.editor:null,c=e(n&&n._currentNode?n._currentNode:a.cwdHash2Elm(r[0])),d=function(){var t=e.Deferred();return!l&&Object.keys(g).length>1?w()&&(l=z(o[0].mime))?t.resolve(l):(a.trigger("contextmenu",{raw:k(o,function(){t.resolve(this)}),x:c.offset().left,y:c.offset().top+22,opened:function(){a.one("closecontextmenu",function(){requestAnimationFrame(function(){"pending"===t.state()&&t.reject()})})}}),a.trigger("selectfiles",{files:r}),t):(Object.keys(g).length>1&&l&&y(o[0].mime,l),t.resolve(l?l:Object.keys(g).length?g[Object.keys(g)[0]]:null))},p=e.Deferred();return null===g&&b(o[0],r.length),c.length||(c=a.getUI("cwd")),d().done(function(t){for(;i=o.shift();)s.push(m(i,i.encoding||void 0,t).fail(function(e){e&&a.error(e)}));s.length?e.when.apply(null,s).done(function(){p.resolve()}).fail(function(){p.reject()}):p.reject()}).fail(function(){p.reject()}),p},this.getMkfileHides=function(){return i.storage("mkfileHides")||i.arrayFlip(n.options.mkfileHideMimes||[])}},i.prototype.commands.empty=function(){var t,n,i=function(e){var i=t.files(e);return i.length||(i=[n.cwd()]),i};this.linkedCmds=["rm"],this.init=function(){t=this,n=this.fm},this.getstate=function(t){var n,a=i(t),o=function(t){var n=!0;return e.grep(t,function(e){return n=!!(n&&e.read&&e.write&&"directory"===e.mime)})};return n=a.length,o(a).length==n?0:-1},this.exec=function(t){var a=i(t),o=a.length,r=e.Deferred().done(function(){var t={changed:{}};n.toast({msg:n.i18n(['"'+s.join('", ')+'"',"complete",n.i18n("cmdempty")])}),e.each(a,function(e,n){t.changed[n.hash]=n}),n.change(t)}).always(function(){var t=n.cwd().hash;n.trigger("selectfiles",{files:e.map(a,function(e){return t===e.phash?e.hash:null})})}),s=[],l=function(e){"number"==typeof e?(s.push(a[e].name),delete a[e].dirs):e&&n.error(e),--o<1&&r[s.length?"resolve":"reject"]()};return e.each(a,function(t,i){var a;return i.write&&"directory"===i.mime?n.isCommandEnabled("rm",i.hash)?(a=setTimeout(function(){n.notify({type:"search",cnt:1,hideCnt:!(o>1)})},n.notifyDelay),void n.request({data:{cmd:"open",target:i.hash},preventDefault:!0,asNotOpen:!0}).done(function(r){var s=[];a&&clearTimeout(a),n.ui.notify.children(".elfinder-notify-search").length&&n.notify({type:"search",cnt:-1,hideCnt:!(o>1)}),r&&r.files&&r.files.length?r.files.length>n.maxTargets?l(["errEmpty",i.name,"errMaxTargets",n.maxTargets]):(n.updateCache(r),e.each(r.files,function(e,t){return!t.write||t.locked?(l(["errEmpty",i.name,"errRm",t.name,"errPerm"]),s=[],!1):void s.push(t.hash)}),s.length&&n.exec("rm",s,{_userAction:!0,addTexts:[n.i18n("folderToEmpty",i.name)]}).fail(function(e){n.trigger("unselectfiles",{files:n.selected()}),l(n.parseError(e)||"")}).done(function(){l(t)})):(n.toast({mode:"warning",msg:n.i18n("filderIsEmpty",i.name)}),l(""))}).fail(function(e){l(n.parseError(e)||"")})):(l(["errCmdNoSupport",'"rm"']),null):(l(["errEmpty",i.name,"errPerm"]),null)}),r}},i.prototype.commands.extract=function(){var t=this,n=t.fm,i=[],a=function(t){var n=!0;return e.grep(t,function(t){return n=!(!n||!t.read||e.inArray(t.mime,i)===-1)})};this.variants=[],this.disableOnSearch=!0,n.bind("open reload",function(){i=n.option("archivers").extract||[],n.api>2?t.variants=[[{makedir:!0},n.i18n("cmdmkdir")],[{},n.i18n("btnCwd")]]:t.variants=[[{},n.i18n("btnCwd")]],t.change()}),this.getstate=function(t){var i,o,r=this.files(t),s=r.length;return s&&a(r).length==s?n.searchStatus.state>0?(i=this.fm.cwd().hash,e.each(r,function(e,t){return o=t.phash===i}),o?0:-1):this.fm.cwd().write?0:-1:-1},this.exec=function(t,a){var o,r,s,l=this.files(t),c=e.Deferred(),d=l.length,p=a&&a.makedir?1:0,u=!1,h=!1,f=0,m=n.files(l[0].phash),g=[],v={};e.each(m,function(e,t){v[t.name]=t,g.push(t.name)});var b=function(e){switch(e){case"overwrite_all":u=!0;break;case"omit_all":h=!0}},y=function(t){t.read&&n.file(t.phash).write?e.inArray(t.mime,i)===-1?(r=["errExtract",t.name,"errNoArchive"],n.error(r),c.reject(r)):n.request({data:{cmd:"extract",target:t.hash,makedir:p},notify:{type:"extract",cnt:1},syncOnFail:!0,navigate:{toast:p?{incwd:{msg:n.i18n(["complete",n.i18n("cmdextract")]),action:{cmd:"open",msg:"cmdopen"}},inbuffer:{msg:n.i18n(["complete",n.i18n("cmdextract")]),action:{cmd:"open",msg:"cmdopen"}}}:{inbuffer:{msg:n.i18n(["complete",n.i18n("cmdextract")])}}}}).fail(function(e){"rejected"!=c.state()&&c.reject(e)}).done(function(){}):(r=["errExtract",t.name,"errPerm"],n.error(r),c.reject(r))},w=function(t,i){var a=t[i],r=n.splitFileExtention(a.name)[0],l=e.inArray(r,g)>=0,m=function(){i+1<d?w(t,i+1):c.resolve()};!p&&l&&"directory"!=v[r].mime?n.confirm({title:n.i18n("ntfextract"),text:["errExists",r,"confirmRepl"],accept:{label:"btnYes",callback:function(e){if(s=e?"overwrite_all":"overwrite",b(s),u||h){if(u){for(o=i;o<d;o++)y(t[o]);c.resolve()}}else"overwrite"==s&&y(a),i+1<d?w(t,i+1):c.resolve()}},reject:{label:"btnNo",callback:function(e){s=e?"omit_all":"omit",b(s),!u&&!h&&i+1<d?w(t,i+1):h&&c.resolve()}},cancel:{label:"btnCancel",callback:function(){c.resolve()}},all:i+1<d}):p?(y(a),m()):0==f?n.confirm({title:n.i18n("cmdextract"),text:[n.i18n("cmdextract")+' "'+a.name+'"',"confirmRepl"],accept:{label:"btnYes",callback:function(e){e&&(f=1),y(a),m()}},reject:{label:"btnNo",callback:function(e){e&&(f=-1),m()}},cancel:{label:"btnCancel",callback:function(){c.resolve()}},all:i+1<d}):(f>0&&y(a),m())};return this.enabled()&&d&&i.length?(d>0&&w(l,0),c):c.reject()}},(i.prototype.commands.forward=function(){this.alwaysEnabled=!0,this.updateOnSelect=!0,this.shortcuts=[{pattern:"ctrl+right"}],this.getstate=function(){return this.fm.history.canForward()?0:-1},this.exec=function(){return this.fm.history.forward()}}).prototype={forceLoad:!0},i.prototype.commands.fullscreen=function(){var t=this,n=this.fm,i=function(e,i){var a;e.preventDefault(),e.stopPropagation(),i&&i.fullscreen&&(a="on"===i.fullscreen,t.update(void 0,a),t.title=n.i18n(a?"reinstate":"cmdfullscreen"))};this.alwaysEnabled=!0,this.updateOnSelect=!1,this.syncTitleOnChange=!0,this.value=!1,this.options={ui:"fullscreenbutton"},this.getstate=function(){return 0},this.exec=function(){var i=n.getUI().get(0),a=i===n.toggleFullscreen(i);return t.title=n.i18n(a?"reinstate":"cmdfullscreen"),t.update(void 0,a),e.Deferred().resolve()},n.bind("init",function(){n.getUI().off("resize."+n.namespace,i).on("resize."+n.namespace,i)})},(i.prototype.commands.getfile=function(){var t=this,n=this.fm,i=function(n){var i=t.options,a=!0;return n=e.grep(n,function(e){return a=!(!a||"directory"==e.mime&&!i.folders||!e.read)}),i.multiple||1==n.length?n:[]};this.alwaysEnabled=!0,this.callback=n.options.getFileCallback,this._disabled="function"==typeof this.callback,this.getstate=function(e){var t=this.files(e),n=t.length;return this.callback&&n&&i(t).length==n?0:-1},this.exec=function(n){var i,a,o,r=this.fm,s=this.options,l=this.files(n),c=l.length,d=r.option("url"),p=r.option("tmbUrl"),u=e.Deferred().done(function(e){var n,i=function(){"close"==s.oncomplete?r.hide():"destroy"==s.oncomplete&&r.destroy()},a=function(e){"close"==s.onerror?r.hide():"destroy"==s.onerror?r.destroy():e&&r.error(e)};r.trigger("getfile",{files:e});try{n=t.callback(e,r)}catch(o){return void a(["Error in `getFileCallback`.",o.message])}"object"==typeof n&&"function"==typeof n.done?n.done(i).fail(a):i()}),h=function(t){return s.onlyURL?s.multiple?e.map(l,function(e){return e.url}):l[0].url:s.multiple?l:l[0]},f=[];for(i=0;i<c;i++){if(a=l[i],"directory"==a.mime&&!s.folders)return u.reject();a.baseUrl=d,"1"==a.url?f.push(r.request({data:{cmd:"url",target:a.hash},notify:{type:"url",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){if(e.url){var t=r.file(this.hash);t.url=this.url=e.url}}.bind(a))):a.url=r.url(a.hash),s.onlyURL||(s.getPath&&(a.path=r.path(a.hash),""===a.path&&a.phash&&!function(){var t=e.Deferred();f.push(t),r.path(a.hash,!1,{}).done(function(e){a.path=e}).fail(function(){a.path=""}).always(function(){t.resolve()})}()),a.tmb&&1!=a.tmb&&(a.tmb=p+a.tmb),a.width||a.height||(a.dim?(o=a.dim.split("x"),a.width=o[0],a.height=o[1]):s.getImgSize&&a.mime.indexOf("image")!==-1&&f.push(r.request({data:{cmd:"dim",target:a.hash},notify:{type:"dim",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){if(e.dim){var t=e.dim.split("x"),n=r.file(this.hash);n.width=this.width=t[0],n.height=this.height=t[1]}}.bind(a)))))}return f.length?(e.when.apply(null,f).always(function(){u.resolve(h(l))}),u):u.resolve(h(l))}}).prototype={forceLoad:!0},(i.prototype.commands.help=function(){var t,n,i,a,o,r,s=this.fm,l=this,c='<div class="elfinder-help-link"> <a href="{url}" target="_blank">{link}</a></div>',d='<div class="elfinder-help-team"><div>{author}</div>{work}</div>',p=/\{url\}/,u=/\{link\}/,h=/\{author\}/,f=/\{work\}/,m="replace",g="ui-priority-primary",v="ui-priority-secondary",b="elfinder-help-license",y='<li class="'+s.res("class","tabstab")+' elfinder-help-tab-{id}"><a href="#'+s.namespace+'-help-{id}" class="ui-tabs-anchor">{title}</a></li>',w=['<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-help">','<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'],x='<div class="elfinder-help-shortcut"><div class="elfinder-help-shortcut-pattern">{pattern}</div> {descrip}</div>',k='<div class="elfinder-help-separator"></div>',C=e("base").length?s.escape(document.location.href.replace(/#.*$/,"")):"",z=s.res("class","tabsactive"),T=function(){var e;return e=s.theme&&s.theme.author?d[m]("elfinder-help-team","elfinder-help-team elfinder-help-term-theme")[m](h,s.i18n(s.theme.author)+(s.theme.email?" &lt;"+s.theme.email+"&gt;":""))[m](f,s.i18n("theme")+" ("+s.i18n(s.theme.name)+")"):'<div class="elfinder-help-team elfinder-help-term-theme" style="display:none"></div>'},A=function(){w.push('<div id="'+s.namespace+'-help-about" class="ui-tabs-panel ui-widget-content ui-corner-bottom"><div class="elfinder-help-logo"></div>'),w.push("<h3>elFinder</h3>"),w.push('<div class="'+g+'">'+s.i18n("webfm")+"</div>"),w.push('<div class="'+v+'">'+s.i18n("ver")+": "+s.version+"</div>"),w.push('<div class="'+v+'">'+s.i18n("protocolver")+': <span class="apiver"></span></div>'),w.push('<div class="'+v+'">jQuery/jQuery UI: '+e().jquery+"/"+e.ui.version+"</div>"),w.push(k),w.push(c[m](p,"https://studio-42.github.io/elFinder/")[m](u,s.i18n("homepage"))),w.push(c[m](p,"https://github.com/Studio-42/elFinder/wiki")[m](u,s.i18n("docs"))),w.push(c[m](p,"https://github.com/Studio-42/elFinder")[m](u,s.i18n("github"))),w.push(k),w.push('<div class="'+g+'">'+s.i18n("team")+"</div>"),w.push(d[m](h,'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;')[m](f,s.i18n("chiefdev"))),w.push(d[m](h,"Naoki Sawada (nao-pon)&lt;hypweb+elfinder@gmail.com&gt;")[m](f,s.i18n("developer"))),w.push(d[m](h,"Troex Nevelin &lt;troex@fury.scancode.ru&gt;")[m](f,s.i18n("maintainer"))),w.push(d[m](h,"Alexey Sukhotin &lt;strogg@yandex.ru&gt;")[m](f,s.i18n("contributor"))),s.i18[s.lang].translator&&e.each(s.i18[s.lang].translator.split(", "),function(){w.push(d[m](h,e.trim(this))[m](f,s.i18n("translator")+" ("+s.i18[s.lang].language+")"))}),w.push(T()),w.push(k),w.push('<div class="'+b+'">'+s.i18n("icons")+': Pixelmixer, <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue</a>, <a href="https://icons8.com" target="_blank">Icons8</a></div>'),w.push(k),w.push('<div class="'+b+'">Licence: 3-clauses BSD Licence</div>'),w.push('<div class="'+b+'">Copyright Â© 2009-2024, Studio 42 / nao-pon</div>'),
w.push('<div class="'+b+'">â€ž â€¦'+s.i18n("dontforget")+" â€�</div>"),w.push("</div>")},j=function(){var t=s.shortcuts();w.push('<div id="'+s.namespace+'-help-shortcuts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),t.length?(w.push('<div class="ui-widget-content elfinder-help-shortcuts">'),e.each(t,function(e,t){w.push(x.replace(/\{pattern\}/,t[0]).replace(/\{descrip\}/,t[1]))}),w.push("</div>")):w.push('<div class="elfinder-help-disabled">'+s.i18n("shortcutsof")+"</div>"),w.push("</div>")},O=function(){w.push('<div id="'+s.namespace+'-help-help" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),w.push('<a href="https://github.com/Studio-42/elFinder/wiki" target="_blank" class="elfinder-dont-panic"><span>DON\'T PANIC</span></a>'),w.push("</div>")},S=!1,I=function(){S=!0,w.push('<div id="'+s.namespace+'-help-integrations" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>')},M=!1,F=function(){M=!0,w.push('<div id="'+s.namespace+'-help-debug" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),w.push('<div class="ui-widget-content elfinder-help-debug"><ul></ul></div>'),w.push("</div>")},E=function(){var n,i,a,c,d,p,u=function(t,n){return e.each(n,function(n,i){t.append(e("<dt></dt>").text(n)),"undefined"==typeof i?t.append(e("<dd></dd>").append(e("<span></span>").text("undfined"))):"object"!=typeof i||i?"object"==typeof i&&(e.isPlainObject(i)||i.length)?t.append(e("<dd></dd>").append(u(e("<dl></dl>"),i))):t.append(e("<dd></dd>").append(e("<span></span>").text(i&&"object"==typeof i?"[]":i?i:'""'))):t.append(e("<dd></dd>").append(e("<span></span>").text("null")))}),t},h=r.children("li").length;(l.debug.options||l.debug.debug)&&(h>=5&&(d=r.children("li:last"),p=o.children("div:last"),p.is(":hidden")?(d.remove(),p.remove()):(d.prev().remove(),p.prev().remove())),a=s.namespace+"-help-debug-"+ +new Date,n=e("<li></li>").html('<a href="'+C+"#"+a+'">'+l.debug.debug.cmd+"</a>").prependTo(r),i=e('<div id="'+a+'"></div>').data("debug",l.debug),n.on("click.debugrender",function(){var t=i.data("debug");i.removeData("debug"),t&&(i.hide(),t.debug&&(c=e("<fieldset>").append(e("<legend></legend>").text("debug"),u(e("<dl></dl>"),t.debug)),i.append(c)),t.options&&(c=e("<fieldset>").append(e("<legend></legend>").text("options"),u(e("<dl></dl>"),t.options)),i.append(c)),i.show()),n.off("click.debugrender")}),r.after(i),t&&o.tabs("refresh"))},D="";this.alwaysEnabled=!0,this.updateOnSelect=!1,this.state=-1,this.shortcuts=[{pattern:"f1",description:this.title}],s.bind("load",function(){var c,d,p,u,h,f,g=l.options.view||["about","shortcuts","help","integrations","debug"];(c=e.inArray("preference",g))!==-1&&g.splice(c,1),e.fn.tabs||(c=e.inArray(g,"debug"))!==-1&&g.splice(c,1),e.each(g,function(e,t){w.push(y[m](/\{id\}/g,t)[m](/\{title\}/,s.i18n(t)))}),w.push("</ul>"),e.inArray("about",g)!==-1&&A(),e.inArray("shortcuts",g)!==-1&&j(),e.inArray("help",g)!==-1&&(d=s.i18nBaseUrl+"help/%s.html.js",O()),e.inArray("integrations",g)!==-1&&I(),e.inArray("debug",g)!==-1&&F(),w.push("</div>"),D=e(w.join("")),D.find(".ui-tabs-nav li").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)}).on("focus blur","a",function(t){e(t.delegateTarget).toggleClass("ui-state-focus","focusin"===t.type)}).children().on("click",function(t){var n=e(this);t.preventDefault(),t.stopPropagation(),n.parent().addClass(z).siblings().removeClass(z),D.children(".ui-tabs-panel").hide().filter(n.attr("href")).show()}).filter(":first").trigger("click"),S&&(n=D.find(".elfinder-help-tab-integrations").hide(),i=D.find("#"+s.namespace+"-help-integrations").hide().append(e('<div class="elfinder-help-integrations-desc"></div>').html(s.i18n("integrationWith"))),s.bind("helpIntegration",function(t){var a,o,r,l,c=i.children("ul:first");t.data&&(e.isPlainObject(t.data)?(a=Object.assign({link:"",title:"",banner:""},t.data),(a.title||a.link)&&(a.title||(a.title=a.link),o=a.link?e("<a></a>").attr("href",a.link).attr("target","_blank").text(a.title):e("<span></span>").text(a.title),a.banner&&(o=e("<span></span>").append(e("<img/>").attr(a.banner),o)))):(o=e(t.data),o.filter("a").each(function(){var t=e(this);t.attr("target")||t.attr("target","_blank")})),o&&(n.show(),c.length||(c=e('<ul class="elfinder-help-integrations"></ul>').appendTo(i)),a&&a.cmd?(l="elfinder-help-integration-"+a.cmd,r=c.find("ul."+l),r.length||(r=e('<ul class="'+l+'"></ul>'),c.append(e("<li></li>").append(e("<span></span>").html(s.i18n("cmd"+a.cmd))).append(r))),o=r.append(e("<li></li>").append(o))):c.append(e("<li></li>").append(o))))}).bind("themechange",function(){D.find("div.elfinder-help-term-theme").replaceWith(T())})),M&&(a=D.find(".elfinder-help-tab-debug").hide(),o=D.find("#"+s.namespace+"-help-debug").children("div:first"),r=o.children("ul:first").on("click",function(e){e.preventDefault(),e.stopPropagation()}),l.debug={},s.bind("backenddebug",function(e){M&&e.data&&e.data.debug&&(l.debug={options:e.data.options,debug:Object.assign({cmd:s.currentReqCmd},e.data.debug)},l.dialog&&E())})),D.find("#"+s.namespace+"-help-about").find(".apiver").text(s.api),l.dialog=l.fmDialog(D,{title:l.title,width:530,maxWidth:"window",maxHeight:"window",autoOpen:!1,destroyOnClose:!1,close:function(){M&&(a.hide(),o.tabs("destroy")),t=!1}}).on("click",function(e){e.stopPropagation()}).css({overflow:"hidden"}),p=l.dialog.children(".ui-tabs"),u=p.children(".ui-tabs-nav:first"),h=p.children(".ui-tabs-panel"),f=l.dialog.outerHeight(!0)-l.dialog.height(),l.dialog.closest(".ui-dialog").on("resize",function(){h.height(l.dialog.height()-f-u.outerHeight(!0)-20)}),d&&l.dialog.one("initContents",function(){e.ajax({url:l.options.helpSource?l.options.helpSource:d.replace("%s",s.lang),dataType:"html"}).done(function(t){e("#"+s.namespace+"-help-help").html(t)}).fail(function(){e.ajax({url:d.replace("%s","en"),dataType:"html"}).done(function(t){e("#"+s.namespace+"-help-help").html(t)})})}),l.state=0,s.trigger("helpBuilded",l.dialog)}).one("open",function(){var e=!1;s.one("backenddebug",function(){e=!0}).one("opendone",function(){requestAnimationFrame(function(){!e&&M&&(M=!1,a.hide(),o.hide(),r.hide())})})}),this.getstate=function(){return 0},this.exec=function(n,i){var s=i?i.tab:void 0,l=function(){M&&(o.tabs(),r.find("a:first").trigger("click"),a.show(),t=!0)};return l(),this.dialog.trigger("initContents").elfinderdialog("open").find((s?".elfinder-help-tab-"+s:".ui-tabs-nav li")+" a:first").trigger("click"),e.Deferred().resolve()}}).prototype={forceLoad:!0},i.prototype.commands.hidden=function(){this.hidden=!0,this.updateOnSelect=!1,this.getstate=function(){return-1}},i.prototype.commands.hide=function(){var t,n,i,a,o=this,r={};this.syncTitleOnChange=!0,this.shortcuts=[{pattern:"ctrl+shift+dot",description:this.fm.i18n("toggleHidden")}],this.init=function(){var e=this.fm;t=e.storage("hide")||{items:{}},n=Object.keys(t.items).length,this.title=e.i18n(t.show?"hideHidden":"showHidden"),o.update(void 0,o.title)},this.fm.bind("select contextmenucreate closecontextmenu",function(e,r){var s=(e.data?e.data.selected||e.data.targets:null)||r.selected();"select"===e.type&&e.data?a=e.data.origin:"contextmenucreate"===e.type&&(i=e.data.type),!s.length||("contextmenucreate"!==e.type&&"navbar"!==a||"cwd"===i)&&s[0]===r.cwd().hash?o.title=r.i18n(t.show?"hideHidden":"showHidden"):o.title=r.i18n("cmdhide"),"closecontextmenu"!==e.type?o.update("cwd"===i?n?0:-1:void 0,o.title):(i="",requestAnimationFrame(function(){o.update(void 0,o.title)}))}),this.getstate=function(e){return this.fm.cookieEnabled&&"cwd"!==i&&(e||this.fm.selected()).length||n?0:-1},this.exec=function(i,s){var l,c,d=this.fm,p=e.Deferred().done(function(){d.trigger("hide",{items:h,opts:s})}).fail(function(e){d.error(e)}),u=s||{},h=u.targets?u.targets:i||d.selected(),f=[];if(t=d.storage("hide")||{},e.isPlainObject(t)||(t={}),e.isPlainObject(t.items)||(t.items={}),("shortcut"===s._currentType||!h.length||"navbar"!==s._currentType&&"navbar"!==a&&h[0]===d.cwd().hash)&&(t.show?u.hide=!0:Object.keys(t.items).length&&(u.show=!0)),u.reset&&(u.show=!0,n=0),u.show||u.hide){if(u.show?t.show=!0:delete t.show,u.show)return d.storage("hide",u.reset?null:t),o.title=d.i18n("hideHidden"),o.update(u.reset?-1:void 0,o.title),e.each(t.items,function(e){var t=d.file(e,!0);t&&(d.searchStatus.state||!t.phash||d.file(t.phash))&&f.push(t)}),f.length&&(d.updateCache({added:f}),d.add({added:f})),u.reset&&(t={items:{}}),p.resolve();h=Object.keys(t.items)}return h.length&&(e.each(h,function(e,n){var i;t.items[n]||(i=d.file(n),i&&(r[n]=i.i18||i.name),t.items[n]=r[n]?r[n]:n)}),n=Object.keys(t.items).length,l=this.files(h),d.storage("hide",t),d.remove({removed:h}),t.show&&this.exec(void 0,{hide:!0}),u.hide||(c={},c.undo={cmd:"hide",callback:function(){var t=d.storage("hide");t&&(e.each(h,function(e,n){delete t.items[n]}),n=Object.keys(t.items).length,d.storage("hide",t),d.trigger("hide",{items:h,opts:{}}),o.update(n?0:-1)),d.updateCache({added:l}),d.add({added:l})}},c.redo={cmd:"hide",callback:function(){return d.exec("hide",void 0,{targets:h})}})),"rejected"==p.state()?p:p.resolve(c)}},(i.prototype.commands.home=function(){this.title="Home",this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+home ctrl+shift+up",description:"Home"}],this.getstate=function(){var e=this.fm.root(),t=this.fm.cwd().hash;return e&&t&&e!=t?0:-1},this.exec=function(){return this.fm.exec("open",this.fm.root())}}).prototype={forceLoad:!0},(i.prototype.commands.info=function(){var t=this.fm,n="elfinder-spinner",i="elfinder-info-button",a={calc:t.i18n("calc"),size:t.i18n("size"),unknown:t.i18n("unknown"),path:t.i18n("path"),aliasfor:t.i18n("aliasfor"),modify:t.i18n("modify"),perms:t.i18n("perms"),locked:t.i18n("locked"),dim:t.i18n("dim"),kind:t.i18n("kind"),files:t.i18n("files"),folders:t.i18n("folders"),roots:t.i18n("volumeRoots"),items:t.i18n("items"),yes:t.i18n("yes"),no:t.i18n("no"),link:t.i18n("link"),owner:t.i18n("owner"),group:t.i18n("group"),perm:t.i18n("perm"),getlink:t.i18n("getLink")},o=function(e,t){return t?e.replace(/\u200B/g,""):e.replace(/(\/|\\)/g,"$1â€‹")};this.items=["size","aliasfor","path","link","dim","modify","perms","locked","owner","group","perm"],this.options.custom&&Object.keys(this.options.custom).length&&e.each(this.options.custom,function(e,t){t.label&&this.items.push(t.label)}),this.tpl={main:'<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}></span>{title}</div><table class="elfinder-info-tb">{content}</table>',itemTitle:'<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>',groupTitle:"<strong>{items}: {num}</strong>",row:'<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>',spinner:'<span>{text}</span> <span class="'+n+" "+n+'-{name}"></span>'},this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+i"}],this.init=function(){e.each(a,function(e,n){a[e]=t.i18n(n)})},this.getstate=function(){return 0},this.exec=function(t){var r=this.files(t);r.length||(r=this.files([this.fm.cwd().hash]));var s,l,c,d,p,u,h,f,m,g=this,v=this.fm,b=this.options,y=this.tpl,w=y.row,x=r.length,k=[],C=y.main,z="{label}",T="{value}",A=[],j=null,O={title:v.i18n("selectionInfo"),width:"auto",close:function(){e(this).elfinderdialog("destroy"),j&&"pending"===j.state()&&j.reject(),e.grep(A,function(e){e&&"pending"===e.state()&&e.reject()})}},S=[],I=function(e,t,i){F.find("."+n+"-"+t).parent().html(e).addClass(i||"")},M=v.namespace+"-info-"+e.map(r,function(e){return e.hash}).join("-"),F=v.getUI().find("#"+M),E=[],D="",U="elfinder-font-mono elfinder-info-hash",P=[],R=v.ui.notify;if(R.is(":hidden")&&R.children(".elfinder-notify").length&&R.elfinderdialog("open").height("auto"),!x)return e.Deferred().reject();if(F.length)return F.elfinderdialog("toTop"),e.Deferred().resolve();if(f=v.storage("infohides")||v.arrayFlip(b.hideItems,!0),1===x){if(c=r[0],c.icon&&(D=" "+v.getIconStyle(c)),C=C.replace("{dirclass}",c.csscls?v.escape(c.csscls):"").replace("{class}",v.mime2class(c.mime)).replace("{style}",D),d=y.itemTitle.replace("{name}",v.escape(c.i18||c.name)).replace("{kind}",'<span title="'+v.escape(c.mime)+'">'+v.mime2kind(c)+"</span>"),l=v.tmb(c),c.read?"directory"!=c.mime||c.alias?s=v.formatSize(c.size):(s=y.spinner.replace("{text}",a.calc).replace("{name}","size"),S.push(c.hash)):s=a.unknown,!f.size&&k.push(w.replace(z,a.size).replace(T,s)),!f.aleasfor&&c.alias&&k.push(w.replace(z,a.aliasfor).replace(T,c.alias)),f.path||((h=v.path(c.hash,!0))?k.push(w.replace(z,a.path).replace(T,o(v.escape(h))).replace("{class}","elfinder-info-path")):(k.push(w.replace(z,a.path).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","path")).replace("{class}","elfinder-info-path")),A.push(v.path(c.hash,!0,{notify:null}).fail(function(){I(a.unknown,"path")}).done(function(e){I(o(e),"path")})))),!f.link&&c.read){var q,H=v.escape(c.name);if("1"==c.url)k.push(w.replace(z,a.link).replace(T,'<button class="'+i+" "+n+'-url">'+a.getlink+"</button>"));else{if(c.url)q=c.url;else if("directory"===c.mime)if(b.nullUrlDirLinkSelf&&null===c.url){var _=window.location;q=_.pathname+_.search+"#elf_"+c.hash}else""!==c.url&&v.option("url",!v.isRoot(c)&&c.phash||c.hash)&&(q=v.url(c.hash));else q=v.url(c.hash);q&&k.push(w.replace(z,a.link).replace(T,'<a href="'+q+'" target="_blank">'+H+"</a>"))}}f.dim||(c.dim?k.push(w.replace(z,a.dim).replace(T,c.dim)):c.mime.indexOf("image")!==-1&&(c.width&&c.height?k.push(w.replace(z,a.dim).replace(T,c.width+"x"+c.height)):c.size&&"0"!==c.size&&(k.push(w.replace(z,a.dim).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","dim"))),A.push(v.request({data:{cmd:"dim",target:c.hash},preventDefault:!0}).fail(function(){I(a.unknown,"dim")}).done(function(e){if(I(e.dim||a.unknown,"dim"),e.dim){var t=e.dim.split("x"),n=v.file(c.hash);n.width=t[0],n.height=t[1]}}))))),!f.modify&&k.push(w.replace(z,a.modify).replace(T,v.formatDate(c))),!f.perms&&k.push(w.replace(z,a.perms).replace(T,v.formatPermissions(c))),!f.locked&&k.push(w.replace(z,a.locked).replace(T,c.locked?a.yes:a.no)),!f.owner&&c.owner&&k.push(w.replace(z,a.owner).replace(T,c.owner)),!f.group&&c.group&&k.push(w.replace(z,a.group).replace(T,c.group)),!f.perm&&c.perm&&k.push(w.replace(z,a.perm).replace(T,v.formatFileMode(c.perm))),window.ArrayBuffer&&(v.options.cdns.sparkmd5||v.options.cdns.jssha)&&"directory"!==c.mime&&c.size>0&&(!b.showHashMaxsize||c.size<=b.showHashMaxsize)&&(P=[],e.each(v.storage("hashchekcer")||b.showHashAlgorisms,function(e,t){c[t]?k.push(w.replace(z,v.i18n(t)).replace(T,c[t]).replace("{class}",U)):(k.push(w.replace(z,v.i18n(t)).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}",t))),P.push(t))}),P.length&&(m=e('<div class="elfinder-quicklook-info-progress"></div>'),A.push(v.getContentsHashes(c.hash,P,b.showHashOpts,{progressBar:m}).progress(function(t){e.each(P,function(e,n){t[n]&&I(t[n],n,U)})}).always(function(){e.each(P,function(e,t){I(a.unknown,t)})})))),b.custom&&e.each(b.custom,function(t,n){f[n.label]||n.mimes&&!e.grep(n.mimes,function(e){return c.mime===e||0===c.mime.indexOf(e+"/")}).length||n.hashRegex&&!c.hash.match(n.hashRegex)||(k.push(w.replace(z,v.i18n(n.label)).replace(T,n.tpl.replace("{id}",M))),n.action&&"function"==typeof n.action&&E.push(n.action))})}else C=C.replace("{class}","elfinder-cwd-icon-group"),d=y.groupTitle.replace("{items}",a.items).replace("{num}",x),p=e.grep(r,function(e){return"directory"==e.mime}).length,p?(u=e.grep(r,function(e){return!("directory"!==e.mime||e.phash&&!e.isroot)}).length,p-=u,k.push(w.replace(z,a.kind).replace(T,u===x||p===x?a[u?"roots":"folders"]:e.map({roots:u,folders:p,files:x-u-p},function(e,t){return e?a[t]+" "+e:null}).join(", "))),!f.size&&k.push(w.replace(z,a.size).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","size"))),S=e.map(r,function(e){return e.hash})):(s=0,e.each(r,function(e,t){var n=parseInt(t.size);n>=0&&s>=0?s+=n:s="unknown"}),k.push(w.replace(z,a.kind).replace(T,a.files)),!f.size&&k.push(w.replace(z,a.size).replace(T,v.formatSize(s))));return C=C.replace("{title}",d).replace("{content}",k.join("").replace(/{class}/g,"")),F=g.fmDialog(C,O),F.attr("id",M).one("mousedown",".elfinder-info-path",function(){e(this).html(o(e(this).html(),!0))}),P.length&&m.appendTo(F.find("."+n+"-"+P[0]).parent()),v.UA.Mobile&&e.fn.tooltip&&F.children(".ui-dialog-content .elfinder-info-title").tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}),c&&"1"==c.url&&F.on("click","."+n+"-url",function(){e(this).parent().html(y.spinner.replace("{text}",v.i18n("ntfurl")).replace("{name}","url")),v.request({data:{cmd:"url",target:c.hash},preventDefault:!0}).fail(function(){I(H,"url")}).done(function(e){if(e.url){I('<a href="'+e.url+'" target="_blank">'+H+"</a>"||H,"url");var t=v.file(c.hash);t.url=e.url}else I(H,"url")})}),l&&e("<img/>").on("load",function(){F.find(".elfinder-cwd-icon").addClass(l.className).css("background-image","url('"+l.url+"')")}).attr("src",l.url),S.length&&(j=v.getSize(S).done(function(e){I(e.formated,"size")}).fail(function(){I(a.unknown,"size")})),E.length&&e.each(E,function(e,t){try{t(c,v,F)}catch(n){v.debug("error",n)}}),e.Deferred().resolve()}}).prototype={forceLoad:!0},i.prototype.commands.mkdir=function(){var t,n=this.fm,i=this;this.value="",this.disableOnSearch=!0,this.updateOnSelect=!1,this.syncTitleOnChange=!0,this.mime="directory",this.prefix="untitled folder",this.exec=function(a,o){var r;return a&&a.length&&o&&o._currentType&&"navbar"===o._currentType?(this.origin=o._currentType,this.data={target:a[0]}):(r=n.cwd().hash===a[0],this.origin=t&&!r?t:"cwd",delete this.data),a||this.options.intoNewFolderToolbtn||n.getUI("cwd").trigger("unselectall"),this.move=this.value===n.i18n("cmdmkdirin"),e.proxy(n.res("mixin","make"),i)()},this.shortcuts=[{pattern:"ctrl+shift+n"}],this.init=function(){this.options.intoNewFolderToolbtn&&(this.syncTitleOnChange=!0)},n.bind("select contextmenucreate closecontextmenu",function(e){var a=(e.data?e.data.selected||e.data.targets:null)||n.selected();i.className="mkdir",t=e.data&&a.length?e.data.origin||e.data.type||"":"",i.options.intoNewFolderToolbtn||""!==t||(t="cwd"),a.length&&"navbar"!==t&&"cwd"!==t&&n.cwd().hash!==a[0]?(i.title=n.i18n("cmdmkdirin"),i.className+=" elfinder-button-icon-mkdirin"):i.title=n.i18n("cmdmkdir"),"closecontextmenu"!==e.type?i.update(void 0,i.title):requestAnimationFrame(function(){i.update(void 0,i.title)})}),this.getstate=function(i){var a=n.cwd(),o="navbar"===t||i&&i[0]!==a.hash?this.files(i||n.selected()):[],r=o.length,s=function(t){var n=!0;return e.grep(t,function(e){return n=!(!n||!e.read||e.locked)})};return"navbar"===t?r&&o[0].write&&o[0].read?0:-1:!a.write||r&&s(o).length!=r?-1:0}},i.prototype.commands.mkfile=function(){var t=this;this.disableOnSearch=!0,this.updateOnSelect=!1,this.mime="text/plain",this.prefix="untitled file.txt",this.variants=[],this.getTypeName=function(e,n){var i,a=t.fm;return i=(i=a.messages["kind"+a.kinds[e]])?a.i18n(["extentiontype",n.toUpperCase(),i]):a.i18n(["extentionfile",n.toUpperCase()])},this.fm.bind("open reload canMakeEmptyFile",function(){var n=t.fm,i=n.getCommand("edit").getMkfileHides();t.variants=[],n.mimesCanMakeEmpty&&e.each(n.mimesCanMakeEmpty,function(e,a){a&&!i[e]&&n.uploadMimeCheck(e)&&t.variants.push([e,t.getTypeName(e,a)])}),t.change()}),this.getstate=function(){return this.fm.cwd().write?0:-1},this.exec=function(n,i){var a,o,r=t.fm;if(a=r.mimesCanMakeEmpty[i]){if(r.uploadMimeCheck(i))return this.mime=i,this.prefix=r.i18n(["untitled file",a]),e.proxy(r.res("mixin","make"),t)();o=["errMkfile",t.getTypeName(i,a)]}return e.Deferred().reject(o)}},i.prototype.commands.netmount=function(){var t,n=this,i=!1;this.alwaysEnabled=!0,this.updateOnSelect=!1,this.drivers=[],this.handlers={load:function(){var t=n.fm;t.cookieEnabled&&t.one("open",function(){n.drivers=t.netDrivers,n.drivers.length&&e.each(n.drivers,function(){var e=n.options[this];e&&(i=!0,e.integrateInfo&&t.trigger("helpIntegration",Object.assign({cmd:"netmount"},e.integrateInfo)))})})}},this.getstate=function(){return i?0:-1},this.exec=function(){var i,a=n.fm,o=e.Deferred(),r=n.options,s=function(){var s,l=function(){c.protocol.trigger("change","winfocus")},c={protocol:e("<select></select>").on("change",function(e,n){var o=this.value;t.find(".elfinder-netmount-tr").hide(),t.find(".elfinder-netmount-tr-"+o).show(),i&&i.children(".ui-dialog-buttonpane:first").find("button").show(),"function"==typeof r[o].select&&r[o].select(a,e,n)}).addClass("ui-corner-all")},d={title:a.i18n("netMountDialogTitle"),resizable:!0,modal:!0,destroyOnClose:!1,open:function(){e(window).on("focus."+a.namespace,l),c.protocol.trigger("change")},close:function(){"pending"==o.state()&&o.reject(),e(window).off("focus."+a.namespace,l)},buttons:{}},p=function(){var i,s=c.protocol.val(),l={cmd:"netmount",protocol:s},d=r[s];return e.each(t.find("input.elfinder-netmount-inputs-"+s),function(t,n){var i,a;a=e(n),a.is(":radio,:checkbox")?a.is(":checked")&&(i=e.trim(a.val())):i=e.trim(a.val()),i&&(l[n.name]=i)}),l.host?(l.mnt2res&&(i=!0),a.request({data:l,notify:{type:"netmount",cnt:1,hideCnt:!0}}).done(function(e){var t;e.added&&e.added.length&&(i&&c.protocol.trigger("change","reset"),e.added[0].phash&&(t=a.file(e.added[0].phash))&&(t.dirs||(t.dirs=1,a.change({changed:[t]}))),a.one("netmountdone",function(){a.exec("open",e.added[0].hash)})),o.resolve()}).fail(function(e){d.fail&&"function"==typeof d.fail&&d.fail(a,a.parseError(e)),o.reject(e)}),void n.dialog.elfinderdialog("close")):a.trigger("error",{error:"errNetMountHostReq",opts:{modal:!0}})},u=e('<form autocomplete="off"></form>').on("keydown","input",function(t){var n,i=!0;t.keyCode===e.ui.keyCode.ENTER&&(e.each(u.find("input:visible:not(.elfinder-input-optional)"),function(){if(""===e(this).val())return i=!1,n=e(this),!1}),i?p():n.trigger("focus"))}),h=e("<div></div>");return t=e('<table class="elfinder-info-tb elfinder-netmount-tb"></table>').append(e("<tr></tr>").append(e("<td>"+a.i18n("protocol")+"</td>")).append(e("<td></td>").append(c.protocol))),e.each(n.drivers,function(n,i){r[i]&&(c.protocol.append('<option value="'+i+'">'+a.i18n(r[i].name||i)+"</option>"),e.each(r[i].inputs,function(n,o){o.attr("name",n),"hidden"!=o.attr("type")?(o.addClass("ui-corner-all elfinder-netmount-inputs-"+i),t.append(e("<tr></tr>").addClass("elfinder-netmount-tr elfinder-netmount-tr-"+i).append(e("<td>"+a.i18n(n)+"</td>")).append(e("<td></td>").append(o)))):(o.addClass("elfinder-netmount-inputs-"+i),h.append(o))}),r[i].protocol=c.protocol)}),t.append(h),t.find(".elfinder-netmount-tr").hide(),t.find(".elfinder-netmount-tr-"+n.drivers[0]).show(),d.buttons[a.i18n("btnMount")]=p,d.buttons[a.i18n("btnCancel")]=function(){n.dialog.elfinderdialog("close")},t.find("select,input").addClass("elfinder-tabstop"),s=n.fmDialog(u.append(t),d).ready(function(){c.protocol.trigger("change"),s.elfinderdialog("posInit")}),i=s.closest(".ui-dialog"),s};return n.dialog?n.dialog.elfinderdialog("open"):n.dialog=s(),o.promise()},n.fm.bind("netmount",function(e){var i=e.data||null,a=n.options,o=function(){a[i.protocol]&&"function"==typeof a[i.protocol].done&&(a[i.protocol].done(n.fm,i),t.find("select,input").addClass("elfinder-tabstop"),n.dialog.elfinderdialog("tabstopsInit"))};i&&i.protocol&&(i.mode&&"redirect"===i.mode?n.fm.request({data:{cmd:"netmount",protocol:i.protocol,host:i.host,user:"init",pass:"return",options:i.options},preventDefault:!0}).done(function(e){i=JSON.parse(e.body),o()}):o())})},i.prototype.commands.netunmount=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.drivers=[],this.handlers={load:function(){this.drivers=this.fm.netDrivers}},this.getstate=function(e){var t,n=this.fm;return e&&this.drivers.length&&!this._disabled&&(t=n.file(e[0]))&&t.netkey?0:-1},this.exec=function(t){var n=this,i=this.fm,a=e.Deferred().fail(function(e){e&&i.error(e)}),o=i.file(t[0]),r=function(t){var n,a=[];return i.leafRoots&&(n=[],e.each(i.leafRoots,function(a,o){var r,s=i.parents(a);(r=e.inArray(t,s))!==-1&&(r=s.length-r,e.each(o,function(e,t){n.push({i:r,hash:t})}))}),n.length&&(n.sort(function(e,t){return e.i<t.i}),e.each(n,function(e,t){a.push(t.hash)}))),a};return this._disabled?a.reject():("pending"==a.state()&&i.confirm({title:n.title,text:i.i18n("confirmUnmount",o.name),accept:{label:"btnUnmount",callback:function(){var t=o.hash,s=r(t),l=[],c=[],d=function(){e.when(l).done(function(){i.request({data:{cmd:"netmount",protocol:"netunmount",host:o.netkey,user:t,pass:"dum"},notify:{type:"netunmount",cnt:1,hideCnt:!0},preventFail:!0}).fail(function(e){a.reject(e)}).done(function(e){o.volumeid&&delete i.volumeExpires[o.volumeid],a.resolve()})}).fail(function(e){c.length&&i.remove({removed:c}),a.reject(e)})};s.length?i.confirm({title:n.title,text:function(){var t=["unmountChildren"];return e.each(s,function(e,n){t.push([i.file(n).name])}),t}(),accept:{label:"btnUnmount",callback:function(){e.each(s,function(e,t){var n=i.file(t);n.netkey&&l.push(i.request({data:{cmd:"netmount",protocol:"netunmount",host:n.netkey,user:n.hash,pass:"dum"},notify:{type:"netunmount",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){e.removed&&(n.volumeid&&delete i.volumeExpires[n.volumeid],c=c.concat(e.removed))}))}),d()}},cancel:{label:"btnCancel",callback:function(){a.reject()}}}):(l=null,d())}},cancel:{label:"btnCancel",callback:function(){a.reject()}}}),a)}},(i.prototype.commands.open=function(){var t=this.fm,n=this;this.alwaysEnabled=!0,this.noChangeDirOnRemovedCwd=!0,this._handlers={dblclick:function(e){var i=e.data&&e.data.file?[e.data.file]:void 0;0===n.getstate(i)&&(e.preventDefault(),t.exec("open",i))},"select enable disable reload":function(e){this.update("disable"==e.type?-1:void 0)}},this.shortcuts=[{pattern:"ctrl+down numpad_enter"+("mac"!=t.OS&&" enter")}],this.getstate=function(n){var i=this.files(n),a=i.length;return 1==a?i[0].read?0:-1:a&&!t.UA.Mobile&&e.grep(i,function(e){return!("directory"==e.mime||!e.read)}).length==a?0:-1},this.exec=function(n,i){var a,o,r,s,l,c,d,p,u,h,f,m,g=e.Deferred().fail(function(e){e&&t.error(e)}),v=this.files(n),b=v.length,y="object"==typeof i&&i.thash,w=this.options,x=w.into||"window";if(!b&&!y)return g.reject();if(y||1==b&&(a=v[0])&&"directory"==a.mime)return y||!a||a.read?t.keyState.ctrlKey&&(t.keyState.shiftKey||"function"!=typeof t.options.getFileCallback)&&t.getCommand("opennew")?t.exec("opennew",[y?y:a.hash]):t.request({data:{cmd:"open",target:y||a.hash},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!0,lazy:!1}):g.reject(["errOpen",a.name,"errPerm"]);if(v=e.grep(v,function(e){return"directory"!=e.mime}),b!=v.length)return g.reject();var k=function(){var i,f,m,y=function(n){var p=e('<a rel="noopener">').hide().appendTo(e("body"));if(t.UA.Mobile||!h){if(u)h?p.attr("target","_blank"):p.attr("download",a.name),p.attr("href",n).get(0).click();else if(i=window.open(n),!i)return g.reject("errPopup")}else{if(m="string"==typeof w.method&&"get"===w.method.toLowerCase(),!m&&0===n.indexOf(t.options.url)&&t.customData&&Object.keys(t.customData).length&&!a.mime.match(/^(?:video|audio)/)&&(n=""),"window"===x?(s=c=Math.round(2*screen.availWidth/3),l=d=Math.round(2*screen.availHeight/3),parseInt(a.width)&&parseInt(a.height)?(s=parseInt(a.width),l=parseInt(a.height)):a.dim&&(o=a.dim.split("x"),s=parseInt(o[0]),l=parseInt(o[1])),c>=s&&d>=l?(c=s,d=l):s-c>l-d?d=Math.round(l*(c/s)):c=Math.round(s*(d/l)),r="width="+c+",height="+d,i=window.open(n,f,r+",top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no")):("tabs"===x&&(f=a.hash),i=window.open("about:blank",f)),!i)return g.reject("errPopup");if(""===n){var v=document.createElement("form");v.action=t.options.url,v.method="POST",v.target=f,v.style.display="none";var b=Object.assign({},t.customData,{cmd:"file",target:a.hash,_t:a.ts||parseInt(+new Date/1e3)});e.each(b,function(e,t){var n=document.createElement("input");n.name=e,n.value=t,v.appendChild(n)}),document.body.appendChild(v),v.submit()}else"window"!==x&&(i.location=n);e(i).trigger("focus")}p.remove()};try{p=new RegExp(t.option("dispInlineRegex"),"i")}catch(k){p=!1}for(u="string"==typeof e("<a>").get(0).download,b=v.length;b--;){if(f="elf_open_window",a=v[b],!a.read)return g.reject(["errOpen",a.name,"errPerm"]);h=p&&a.mime.match(p),t.openUrl(a.hash,!h,y)}return g.resolve(n)};if(b>1)t.confirm({title:"openMulti",text:["openMultiConfirm",b+""],accept:{label:"cmdopen",callback:function(){k()}},cancel:{label:"btnCancel",callback:function(){g.reject()}},buttons:t.getCommand("zipdl")&&t.isCommandEnabled("zipdl",t.cwd().hash)?[{label:"cmddownload",callback:function(){t.exec("download",n),g.reject()}}]:[]});else{if(f=t.storage("selectAction")||w.selectAction,f&&(e.each(f.split("/"),function(){var e=this.valueOf();return("open"===e||!(m=t.getCommand(e))||!m.enabled())&&void(m=null)}),m))return t.exec(m.name);k()}return g}}).prototype={forceLoad:!0},i.prototype.commands.opendir=function(){this.alwaysEnabled=!0,this.getstate=function(){var e,t=this.fm.selected(),n=t.length;return 1!==n?-1:(e=this.fm.getUI("workzone"),e.hasClass("elfinder-search-result")?0:-1)},this.exec=function(t){var n,i=this.fm,a=e.Deferred(),o=this.files(t),r=o.length;return r&&o[0].phash?(n=o[0].phash,i.trigger("searchend",{noupdate:!0}),i.request({data:{cmd:"open",target:n},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!1}),a):a.reject()}},i.prototype.commands.opennew=function(){var t=this.fm;this.shortcuts=[{pattern:("function"==typeof t.options.getFileCallback?"shift+":"")+"ctrl+enter"}],this.getstate=function(e){var t=this.files(e),n=t.length;return 1===n&&"directory"===t[0].mime&&t[0].read?0:-1},this.exec=function(t){var n,i,a,o,r=e.Deferred(),s=this.files(t),l=s.length,c=this.options;return 1===l&&(n=s[0])&&"directory"===n.mime?(i=window.location,a=c.url?c.url:i.pathname,c.useOriginQuery&&(a.match(/\?/)?i.search&&(a+="&"+i.search.substr(1)):a+=i.search),a+="#elf_"+n.hash,o=window.open(a,"_blank"),setTimeout(function(){o.focus()},1e3),r.resolve()):r.reject()}},i.prototype.commands.paste=function(){this.updateOnSelect=!1,this.handlers={changeclipboard:function(){this.update()}},this.shortcuts=[{pattern:"ctrl+v shift+insert"}],this.getstate=function(e){if(this._disabled)return-1;if(e){if(Array.isArray(e)){if(1!=e.length)return-1;e=this.fm.file(e[0])}}else e=this.fm.cwd();return this.fm.clipboard().length&&"directory"==e.mime&&e.write?0:-1},this.exec=function(t,n){var i,a,o,r=this,s=r.fm,l=n||{},c=t?this.files(t)[0]:s.cwd(),d=s.clipboard(),p=d.length,u=!!p&&d[0].cut,h=l._cmd?l._cmd:u?"move":"copy",f="err"+h.charAt(0).toUpperCase()+h.substr(1),m=[],g=[],v=e.Deferred().fail(function(e){e&&s.error(e)}).always(function(){s.unlockfiles({files:e.map(d,function(e){return e.hash})})}),b=function(t){return t.length&&s._commands.duplicate?s.exec("duplicate",t):e.Deferred().resolve()},y=function(t){var n,i=e.Deferred(),a=[],o={},d=function(t,n){for(var i=[],a=t.length;a--;)e.inArray(t[a].name,n)!==-1&&i.unshift(a);return i},p=function(e){var n=a[e],o=t[n],r=e==a.length-1;o&&s.confirm({title:s.i18n(h+"Files"),text:["errExists",o.name,"restore"===h?"confirmRest":"confirmRepl"],all:!r,accept:{label:"btnYes",callback:function(n){r||n?m(t):p(++e)}},reject:{label:"btnNo",callback:function(n){var i;if(n)for(i=a.length;e<i--;)t[a[i]].remove=!0;else t[a[e]].remove=!0;r||n?m(t):p(++e)}},cancel:{label:"btnCancel",callback:function(){i.resolve()}},buttons:[{label:"btnBackup",callback:function(n){var i;if(n)for(i=a.length;e<i--;)t[a[i]].rename=!0;else t[a[e]].rename=!0;r||n?m(t):p(++e)}}]})},f=function(n){var i,r={};n&&(Array.isArray(n)?n.length&&("string"==typeof n[0]?a=d(t,n):(e.each(n,function(e,t){r[t.name]=t.hash}),a=d(t,e.map(r,function(e,t){return t})),e.each(t,function(e,t){r[t.name]&&(o[r[t.name]]=t.name)}))):(i=[],a=e.map(n,function(e){return"string"==typeof e?e:(i=i.concat(e),!1)}),i.length&&(a=a.concat(i)),
a=d(t,a),o=n)),a.length?p(0):m(t)},m=function(t){var n,a,r=[],d=e.grep(t,function(e){return e.rename&&r.push(e.name),!e.remove}),p=d.length;return p?(n=e.map(d,function(e){return e.hash}),a={cmd:"paste",dst:c.hash,targets:n,cut:u?1:0,renames:r,hashes:o,suffix:s.options.backupSuffix},s.api<2.1&&(a.src=d[0].phash),void s.request({data:a,notify:{type:h,cnt:p},cancel:!0,navigate:{toast:l.noToast?{}:{inbuffer:{msg:s.i18n(["complete",s.i18n("cmd"+h)]),action:{cmd:"open",msg:"cmdopendir",data:[c.hash],done:"select",cwdNot:c.hash}}}}}).done(function(t){var n={},o=t.added&&t.added.length?t.added:null;u&&o&&(e.each(d,function(t,i){var a=i.phash,r=function(t){var n;return e.each(o,function(e,i){if(i.name===t)return n=i.hash,!1}),n},s=r(i.name);s&&(n[a]?n[a].push(s):n[a]=[s])}),Object.keys(n).length&&(t.undo={cmd:"move",callback:function(){var t=[];return e.each(n,function(e,n){t.push(s.request({data:{cmd:"paste",dst:e,targets:n,cut:1},notify:{type:"undo",cnt:n.length}}))}),e.when.apply(null,t)}},t.redo={cmd:"move",callback:function(){return s.request({data:a,notify:{type:"redo",cnt:p}})}})),i.resolve(t)}).fail(function(e){i.reject(),0===e&&s.sync()}).always(function(){s.unlockfiles({files:d})})):i.resolve()};return s.isCommandEnabled(r.name,c.hash)&&t.length?(s.oldAPI?m(t):s.option("copyOverwrite",c.hash)?(n=e.map(t,function(e){return e.name}),c.hash==s.cwd().hash?f(e.map(s.files(),function(e){return e.phash==c.hash?{hash:e.hash,name:e.name}:null})):s.request({data:{cmd:"ls",target:c.hash,intersect:n},notify:{type:"prepare",cnt:1,hideCnt:!0},preventFail:!0}).always(function(e){f(e.list)})):m(t),i):i.resolve()};return p&&c&&"directory"==c.mime?c.write?(i=s.parents(c.hash),e.each(d,function(t,n){return n.read?u&&n.locked?!v.reject(["errLocked",n.name]):e.inArray(n.hash,i)!==-1?!v.reject(["errCopyInItself",n.name]):n.mime&&"directory"!==n.mime&&!s.uploadMimeCheck(n.mime,c.hash)?!v.reject([f,n.name,"errUploadMime"]):(a=s.parents(n.hash),a.pop(),e.inArray(c.hash,a)!==-1&&e.grep(a,function(e){var t=s.file(e);return t.phash==c.hash&&t.name==n.name}).length?!v.reject(["errReplByChild",n.name]):void(n.phash==c.hash?g.push(n.hash):m.push({hash:n.hash,phash:n.phash,name:n.name}))):!v.reject([f,n.name,"errPerm"])}),"rejected"===v.state()?v:(o=e.Deferred(),u&&r.options.moveConfirm?s.confirm({title:"moveFiles",text:s.i18n("confirmMove",c.i18||c.name),accept:{label:"btnYes",callback:function(){o.resolve()}},cancel:{label:"btnCancel",callback:function(){o.reject()}}}):o.resolve(),o.done(function(){e.when(b(g),y(m)).done(function(e,t){v.resolve(t&&t.undo?t:void 0)}).fail(function(){v.reject()}).always(function(){u&&s.clipboard([])})}).fail(function(){v.reject()}),v)):v.reject([f,d[0].name,"errPerm"]):v.reject()}},i.prototype.commands.places=function(){var t=this,n=this.fm,i=function(n){var i=!0;return e.grep(t.files(n),function(e){return i=!(!i||"directory"!=e.mime)})},a=null;this.getstate=function(e){var t=this.hashes(e),n=t.length;return a&&n&&n==i(t).length?0:-1},this.exec=function(t){var n=this.files(t);return a.trigger("regist",[n]),e.Deferred().resolve()},n.one("load",function(){a=n.ui.places})},i.prototype.commands.preference=function(){var t,n,i=this,a=this.fm,o="replace",r='<li class="'+a.res("class","tabstab")+' elfinder-preference-tab-{id}"><a href="#'+a.namespace+'-preference-{id}" id="'+a.namespace+'-preference-tab-{id}" class="ui-tabs-anchor {class}">{title}</a></li>',s=e('<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-preference">'),l=e('<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'),c=e('<div class="elfinder-preference-tabs ui-tabs-panel ui-widget-content ui-corner-bottom"></div>'),d=(e("base").length?document.location.href.replace(/#.*$/,""):"",function(t){e("#"+a.namespace+"-preference-tab-"+t).trigger("mouseover").trigger("click"),n=t}),p=a.res("class","tabsactive"),u=function(){var u=i.options.categories||{language:["language"],theme:["theme"],toolbar:["toolbarPref"],workspace:["iconSize","columnPref","selectAction","makefileTypes","useStoredEditor","editorMaximized","useFullscreen","showHidden"],dialog:["autoFocusDialog"],selectionInfo:["infoItems","hashChecker"],reset:["clearBrowserData"],all:!0},h=i.options.prefs||["language","theme","toolbarPref","iconSize","columnPref","selectAction","makefileTypes","useStoredEditor","editorMaximized","useFullscreen","showHidden","infoItems","hashChecker","autoFocusDialog","clearBrowserData"];a.cookieEnabled||delete u.language,h=a.arrayFlip(h,!0),a.options.getFileCallback&&delete h.selectAction,a.UA.Fullscreen||delete h.useFullscreen,h.language&&(h.language=function(){var t=e("<select></select>").on("change",function(){var t=e(this).val();a.storage("lang",t),e("#"+a.id).elfinder("reload")}),n=[],o=i.options.langs||{ar:"Ø§Ù„Ø¹Ø±Ø¨ÙŠØ©",bg:"Ð‘ÑŠÐ»Ð³Ð°Ñ€Ñ�ÐºÐ¸",ca:"CatalÃ ",cs:"ÄŒeÅ¡tina",da:"Dansk",de:"Deutsch",el:"Î•Î»Î»Î·Î½Î¹ÎºÎ¬",en:"English",es:"EspaÃ±ol",fa:"Ù�Ø§Ø±Ø³ÛŒ",fo:"FÃ¸royskt",fr:"FranÃ§ais",fr_CA:"FranÃ§ais (Canada)",he:"×¢×‘×¨×™×ª",hr:"Hrvatski",hu:"Magyar",id:"Bahasa Indonesia",it:"Italiano",ja:"æ—¥æœ¬èªž",ko:"í•œêµ­ì–´",nl:"Nederlands",no:"Norsk",pl:"Polski",pt_BR:"PortuguÃªs",ro:"RomÃ¢nÄƒ",ru:"PÑƒÑ�Ñ�ÐºÐ¸Ð¹",si:"à·ƒà·’à¶‚à·„à¶½",sk:"SlovenÄ�ina",sl:"SlovenÅ¡Ä�ina",sr:"Srpski",sv:"Svenska",tr:"TÃ¼rkÃ§e",ug_CN:"Ø¦Û‡ÙŠØºÛ‡Ø±Ú†Û•",uk:"Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ¸Ð¹",vi:"Tiáº¿ng Viá»‡t",zh_CN:"ç®€ä½“ä¸­æ–‡",zh_TW:"æ­£é«”ä¸­æ–‡"};return a.cookieEnabled?(e.each(o,function(e,t){n.push('<option value="'+e+'">'+t+"</option>")}),t.append(n.join("")).val(a.lang)):e()}()),h.theme&&(h.theme=function(){var t=a.options.themes?Object.keys(a.options.themes).length:0;if(0===t||1===t&&a.options.themes["default"])return null;var n=e("<select></select>").on("change",function(){var t=e(this).val();a.changeTheme(t).storage("theme",t)}),i={image:'<img class="elfinder-preference-theme elfinder-preference-theme-image" src="$2" />',link:'<a href="$1" target="_blank" title="$3">$2</a>',data:'<dt>$1</dt><dd><span class="elfinder-preference-theme elfinder-preference-theme-$0">$2</span></dd>'},o=["image","description","author","email","license"],r=e('<button class="ui-button ui-corner-all ui-widget elfinder-preference-theme-default"></button>').text(a.i18n("default")).on("click",function(e){n.val("default").trigger("change")}),s=e('<div class="elfinder-reference-hide-taball"></div>').on("click","button",function(){var t=e(this).data("themeid");n.val(t).trigger("change")});return a.options.themes["default"]||n.append('<option value="default">'+a.i18n("default")+"</option>"),e.each(a.options.themes,function(t,r){var l,c=e('<option class="elfinder-theme-option-'+t+'" value="'+t+'">'+a.i18n(t)+"</option>"),d=e('<fieldset class="ui-widget ui-widget-content ui-corner-all elfinder-theme-list-'+t+'"><legend>'+a.i18n(t)+'</legend><div><span class="elfinder-spinner"></span></div></fieldset>');n.append(c),s.append(d),l=setTimeout(function(){d.find("span.elfinder-spinner").replaceWith(a.i18n(["errRead",t]))},1e4),a.getTheme(t).always(function(){l&&clearTimeout(l)}).done(function(r){var s,l=e(),p=e("<dl></dl>");s=r.link?i.link.replace(/\$1/g,r.link).replace(/\$3/g,a.i18n("website")):"$2",r.name&&c.html(a.i18n(r.name)),d.children("legend").html(s.replace(/\$2/g,a.i18n(r.name)||t)),e.each(o,function(o,s){var l,c=i[s]||i.data;r[s]&&(l=c.replace(/\$0/g,a.escape(s)).replace(/\$1/g,a.i18n(s)).replace(/\$2/g,a.i18n(r[s])),"image"===s&&r.link&&(l=e(l).on("click",function(){n.val(t).trigger("change")}).attr("title",a.i18n("select"))),p.append(l))}),l=l.add(p),l=l.add(e('<div class="elfinder-preference-theme-btn"></div>').append(e('<button class="ui-button ui-corner-all ui-widget"></button>').data("themeid",t).html(a.i18n("select")))),d.find("span.elfinder-spinner").replaceWith(l)}).fail(function(){d.find("span.elfinder-spinner").replaceWith(a.i18n(["errRead",t]))})}),e("<div></div>").append(n.val(a.theme&&a.theme.id?a.theme.id:"default"),r,s)}()),h.toolbarPref&&(h.toolbarPref=function(){var t=e.map(a.options.uiOptions.toolbar,function(t){return e.isArray(t)?t:null}),n=[],i=a.storage("toolbarhides")||{};return e.each(t,function(){var e=this,t=a.i18n("cmd"+e);t==="cmd"+e&&(t=a.i18n(e)),n.push('<span class="elfinder-preference-toolbar-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("toolbarhides",i),a.trigger("toolbarpref")})}()),h.iconSize&&(h.iconSize=function(){var t=a.options.uiOptions.cwd.iconsView.sizeMax||3,n=a.storage("iconsize")||a.options.uiOptions.cwd.iconsView.size||0,i=e('<div class="touch-punch"></div>').slider({classes:{"ui-slider-handle":"elfinder-tabstop"},value:n,max:t,slide:function(e,t){a.getUI("cwd").trigger("iconpref",{size:t.value})},change:function(e,t){a.storage("iconsize",t.value)}});return a.getUI("cwd").on("iconpref",function(e,t){i.slider("option","value",t.size)}),i}()),h.columnPref&&(h.columnPref=function(){var t=a.options.uiOptions.cwd.listView.columns,n=[],i=a.storage("columnhides")||{};return e.each(t,function(){var e=this,t=a.getColumnName(e);n.push('<span class="elfinder-preference-column-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("columnhides",i),a.trigger("columnpref",{repaint:!0})})}()),h.selectAction&&(h.selectAction=function(){var t=e("<select></select>").on("change",function(){var t=e(this).val();a.storage("selectAction","default"===t?null:t)}),n=[],o=i.options.selectActions,r=a.getCommand("open").options.selectAction||"open";return e.inArray(r,o)===-1&&o.unshift(r),e.each(o,function(t,i){var o=e.map(i.split("/"),function(e){var t=a.i18n("cmd"+e);return t==="cmd"+e&&(t=a.i18n(e)),t});n.push('<option value="'+i+'">'+o.join("/")+"</option>")}),t.append(n.join("")).val(a.storage("selectAction")||r)}()),h.makefileTypes&&(h.makefileTypes=function(){var t=a.getCommand("edit").getMkfileHides(),n=function(){var n=[];return t=a.getCommand("edit").getMkfileHides(),e.each(a.mimesCanMakeEmpty,function(e,i){var o=a.getCommand("mkfile").getTypeName(e,i);n.push('<span class="elfinder-preference-column-item" title="'+a.escape(o)+'"><label><input type="checkbox" value="'+e+'" '+(t[e]?"":"checked")+"/>"+i+"</label></span>")}),n.join(" ")},i=e("<div></div>").on("change","input",function(){var n=e(this).val(),i=e(this).is(":checked");i||t[n]?i&&t[n]&&delete t[n]:t[n]=!0,a.storage("mkfileHides",t),a.trigger("canMakeEmptyFile")}).append(n()),o=e("<div></div>").append(e('<input type="text" placeholder="'+a.i18n("typeOfTextfile")+'"/>').on("keydown",function(t){t.keyCode===e.ui.keyCode.ENTER&&e(this).next().trigger("click")}),e('<button class="ui-button"></button>').html(a.i18n("add")).on("click",function(){var t,n=e(this).prev(),i=n.val(),o=a.getUI("toast"),r=function(){return o.appendTo(n.closest(".ui-dialog")),a.toast({msg:a.i18n("errUsupportType"),mode:"warning",onHidden:function(){1===o.children().length&&o.appendTo(a.getUI())}}),n.trigger("focus"),!1};if(!i.match(/\//)){if(i=a.arrayFlip(a.mimeTypes)[i],!i)return r();n.val(i)}return a.mimeIsText(i)&&a.mimeTypes[i]?(a.trigger("canMakeEmptyFile",{mimes:[i],unshift:!0}),t={},t[i]=a.mimeTypes[i],a.storage("mkfileTextMimes",Object.assign(t,a.storage("mkfileTextMimes")||{})),n.val(""),o.appendTo(n.closest(".ui-dialog")),void a.toast({msg:a.i18n(["complete",i+" ("+t[i]+")"]),onHidden:function(){1===o.children().length&&o.appendTo(a.getUI())}})):r()}),e('<button class="ui-button"></button>').html(a.i18n("reset")).on("click",function(){a.one("canMakeEmptyFile",{done:function(){i.empty().append(n())}}),a.trigger("canMakeEmptyFile",{resetTexts:!0})}));return a.bind("canMakeEmptyFile",{done:function(e){e.data&&e.data.mimes&&e.data.mimes.length&&i.empty().append(n())}}),e("<div></div>").append(i,o)}()),h.useStoredEditor&&(h.useStoredEditor=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("useStoredEditor");return e?e>0:a.options.commandsOptions.edit.useStoredEditor}()).on("change",function(t){a.storage("useStoredEditor",e(this).is(":checked")?1:-1)})),h.editorMaximized&&(h.editorMaximized=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("editorMaximized");return e?e>0:a.options.commandsOptions.edit.editorMaximized}()).on("change",function(t){a.storage("editorMaximized",e(this).is(":checked")?1:-1)})),h.useFullscreen&&(h.useFullscreen=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("useFullscreen");return e?e>0:"screen"===a.options.commandsOptions.fullscreen.mode}()).on("change",function(t){a.storage("useFullscreen",e(this).is(":checked")?1:-1)})),h.showHidden&&!function(){var t,n=function(){var n,i=a.storage("hide"),o=[];i&&i.items&&e.each(i.items,function(e,t){o.push(a.escape(t))}),r.prop("disabled",!o.length)[o.length?"removeClass":"addClass"]("ui-state-disabled"),n=o.length?o.join("\n"):"",h.showHidden.attr("title",n),t&&h.showHidden.tooltip("option","content",n.replace(/\n/g,"<br>")).tooltip("close")},i=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("hide");return e&&e.show}()).on("change",function(t){var n={};n[e(this).is(":checked")?"show":"hide"]=!0,a.exec("hide",void 0,n)}),o=e('<button class="ui-button ui-corner-all ui-widget"></button>').append(a.i18n("reset")).on("click",function(){a.exec("hide",void 0,{reset:!0}),e(this).parent().find("input:first").prop("checked",!1),n()}),r=e().add(i).add(o);h.showHidden=e("<div></div>").append(i,o),a.bind("hide",function(e){var t=e.data;t.opts&&(t.opts.show||t.opts.hide)||n()}),a.UA.Mobile&&e.fn.tooltip&&(t=!0,h.showHidden.tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}).css("user-select","none"),o.css("user-select","none")),n()}(),h.infoItems&&(h.infoItems=function(){var t=a.getCommand("info").items,n=[],i=a.storage("infohides")||a.arrayFlip(a.options.commandsOptions.info.hideItems,!0);return e.each(t,function(){var e=this,t=a.i18n(e);n.push('<span class="elfinder-preference-info-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("infohides",i),a.trigger("infopref",{repaint:!0})})}()),h.hashChecker&&a.hashCheckers.length&&(h.hashChecker=function(){var t=[],n=a.arrayFlip(a.storage("hashchekcer")||a.options.commandsOptions.info.showHashAlgorisms,!0);return e.each(a.hashCheckers,function(){var e=this,i=a.i18n(e);t.push('<span class="elfinder-preference-hashchecker-item"><label><input type="checkbox" value="'+e+'" '+(n[e]?"checked":"")+"/>"+i+"</label></span>")}),e(t.join(" ")).on("change","input",function(){var t=e(this).val(),i=e(this).is(":checked");i?n[t]=!0:n[t]&&delete n[t],a.storage("hashchekcer",e.grep(a.hashCheckers,function(e){return n[e]}))})}()),h.autoFocusDialog&&(h.autoFocusDialog=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("autoFocusDialog");return e?e>0:a.options.uiOptions.dialog.focusOnMouseOver}()).on("change",function(t){a.storage("autoFocusDialog",e(this).is(":checked")?1:-1)})),h.clearBrowserData&&(h.clearBrowserData=e("<button></button>").text(a.i18n("reset")).button().on("click",function(t){t.preventDefault(),a.storage(),e("#"+a.id).elfinder("reload")})),e.each(u,function(t,i){var s,d;i===!0?d=1:i&&(s=e(),e.each(i,function(t,n){var i,o,r,l="";(i=h[n])&&(d=2,o=a.i18n(n),r=e(i).filter('input[type="checkbox"]'),r.length||(r=e(i).find('input[type="checkbox"]')),1===r.length?(r.attr("id")||r.attr("id","elfinder-preference-"+n+"-checkbox"),o='<label for="'+r.attr("id")+'">'+o+"</label>"):r.length>1&&(l=" elfinder-preference-checkboxes"),s=s.add(e('<dt class="elfinder-preference-'+n+l+'">'+o+"</dt>")).add(e('<dd class="elfinder-preference-'+n+l+'"></dd>').append(i)))})),d&&(l.append(r[o](/\{id\}/g,t)[o](/\{title\}/,a.i18n(t))[o](/\{class\}/,n===t?"elfinder-focus":"")),2===d&&c.append(e('<div id="'+a.namespace+"-preference-"+t+'" class="elfinder-preference-content"></div>').hide().append(e("<dl></dl>").append(s))))}),l.on("click","a",function(t){var n=e(t.target),i=n.attr("href");t.preventDefault(),t.stopPropagation(),l.children().removeClass(p),n.removeClass("ui-state-hover").parent().addClass(p),i.match(/all$/)?c.addClass("elfinder-preference-taball").children().show():(c.removeClass("elfinder-preference-taball").children().hide(),e(i).show())}).on("focus blur","a",function(t){e(this).parent().toggleClass("ui-state-focus","focusin"===t.type)}).on("mouseenter mouseleave","li",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)}),c.find("a,input,select,button").addClass("elfinder-tabstop"),s.append(l,c),t=i.fmDialog(s,{title:i.title,width:i.options.width||600,height:i.options.height||400,maxWidth:"window",maxHeight:"window",autoOpen:!1,destroyOnClose:!1,allowMinimize:!1,open:function(){n&&d(n),n=null},resize:function(){c.height(t.height()-l.outerHeight(!0)-(c.outerHeight(!0)-c.height())-5)}}).on("click",function(e){e.stopPropagation()}).css({overflow:"hidden"}),t.closest(".ui-dialog").css({overflow:"hidden"}).addClass("elfinder-bg-translucent"),n="all"};this.shortcuts=[{pattern:"ctrl+comma",description:this.title}],this.alwaysEnabled=!0,this.getstate=function(){return 0},this.exec=function(n,i){return!t&&u(),i&&(i.tab?d(i.tab):"cwd"===i._currentType&&d("workspace")),t.elfinderdialog("open"),e.Deferred().resolve()}},(i.prototype.commands.quicklook=function(){var t,n,i,a,o,r,s,l,c,d,p=this,u=p.fm,h=0,f=1,m=2,g=3,v=4,b=h,y=Element.update?"quicklookupdate":"update",w="elfinder-quicklook-navbar-icon",x="elfinder-quicklook-fullscreen",k="elfinder-quicklook-info-wrapper",C=function(t){e(document).trigger(e.Event("keydown",{keyCode:t,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))},z=function(e){var t=u.getUI().offset(),n=function(){var t=e.find(".elfinder-cwd-file-wrapper");return t.length?t:e}(),i=n.offset()||{top:0,left:0};return{opacity:0,width:n.width(),height:n.height()-30,top:i.top-t.top,left:i.left-t.left}},T=function(){var i=p.options.contain||u.options.dialogContained,a=i?u.getUI():e(window),o=u.getUI().offset(),r=Math.min(t,a.width()-10),s=Math.min(n,a.height()-80);return{opacity:1,width:r,height:s,top:parseInt((a.height()-s-60)/2+(i?0:a.scrollTop()-o.top)),left:parseInt((a.width()-r)/2+(i?0:a.scrollLeft()-o.left))}},A={},j=function(e,t){var n=t||e.substr(0,e.indexOf("/")),i=A[n]?A[n]:A[n]=document.createElement(n),a=!1;try{a=i.canPlayType&&i.canPlayType(e)}catch(o){}return!(!a||""===a||"no"==a)},O=window.navigator.platform.indexOf("Win")!=-1,S=!1,I=!1,M=!1,F=null,E=e.ui.keyCode.LEFT,D=e.ui.keyCode.RIGHT,U="mousemove touchstart "+("onwheel"in document?"wheel":"onmousewheel"in document?"mousewheel":"DOMMouseScroll"),P=e('<span class="elfinder-dialog-title elfinder-quicklook-title"></span>'),R=e("<div></div>"),q=e('<div class="elfinder-quicklook-info"></div>'),H=e('<div class="ui-front elfinder-quicklook-cover"></div>'),_=e('<div class="'+w+" "+w+'-fullscreen"></div>').on("click touchstart",function(t){if(!M){var n=p.window,i=n.hasClass(x),o=e(window),r=function(){p.preview.trigger("changesize")};t.stopPropagation(),t.preventDefault(),i?(G="",L(),n.toggleClass(x).css(n.data("position")),o.trigger(p.resize).off(p.resize,r),V.off("mouseenter mouseleave"),H.off(U)):(n.toggleClass(x).data("position",{left:n.css("left"),top:n.css("top"),width:n.width(),height:n.height(),display:"block"}).removeAttr("style"),e(window).on(p.resize,r).trigger(p.resize),H.on(U,function(e){I||("mousemove"!==e.type&&"touchstart"!==e.type||(L(),F=setTimeout(function(){(u.UA.Mobile||V.parent().find(".elfinder-quicklook-navbar:hover").length<1)&&V.fadeOut("slow",function(){H.show()})},3e3)),H.is(":visible")&&(W(),H.data("tm",setTimeout(function(){H.show()},3e3))))}).show().trigger("mousemove"),V.on("mouseenter mouseleave",function(e){I||("mouseenter"===e.type?L():H.trigger("mousemove"))})),u.zIndex&&n.css("z-index",u.zIndex+1),u.UA.Mobile?V.attr("style",G):V.attr("style",G).draggable(i?"destroy":{start:function(){I=!0,M=!0,H.show(),L()},stop:function(){I=!1,G=p.navbar.attr("style"),requestAnimationFrame(function(){M=!1})}}),e(this).toggleClass(w+"-fullscreen-off");var s=n;a.is(".ui-resizable")&&(s=s.add(a)),s.resizable(i?"enable":"disable").removeClass("ui-state-disabled"),n.trigger("viewchange")}}),N=function(){p.update(void 0,function(){var t=p.fm,n=t.selectedFiles(),i=n.length,a=(p.docked(),function(){var a=0;return e.each(n,function(e,t){var n=parseInt(t.ts);a>=0?n>a&&(a=n):a="unknown"}),{hash:n[0].hash+"/"+ +new Date,name:t.i18n("items")+": "+i,mime:"group",size:J,ts:a,files:e.map(n,function(e){return e.hash}),getSize:!0}});return i||(i=1,n=[t.cwd()]),1===i?n[0]:a()}())},L=function(){p.window.hasClass(x)&&(F&&clearTimeout(F),F=null,V.stop(!0,!0).css("display","block"),W())},W=function(){H.data("tm")&&clearTimeout(H.data("tm")),H.removeData("tm"),H.hide()},B=e('<div class="'+w+" "+w+'-prev"></div>').on("click touchstart",function(e){return!M&&C(E),!1}),$=e('<div class="'+w+" "+w+'-next"></div>').on("click touchstart",function(e){return!M&&C(D),!1}),V=e('<div class="elfinder-quicklook-navbar"></div>').append(B).append(_).append($).append('<div class="elfinder-quicklook-navbar-separator"></div>').append(e('<div class="'+w+" "+w+'-close"></div>').on("click touchstart",function(e){return!M&&p.window.trigger("close"),!1})),K=e('<span class="ui-front ui-icon elfinder-icon-close ui-icon-closethick"></span>').on("mousedown",function(e){e.stopPropagation(),p.window.trigger("close")}),X=e('<span class="ui-front ui-icon elfinder-icon-minimize ui-icon-minusthick"></span>').on("mousedown",function(e){e.stopPropagation(),p.docked()?p.window.trigger("navdockout"):p.window.trigger("navdockin")}),J='<span class="elfinder-spinner-text">'+u.i18n("calc")+'</span><span class="elfinder-spinner"></span>',G="",Y=!0;this.flags={},this.cover=H,this.evUpdate=y,(this.navbar=V)._show=L,this.resize="resize."+u.namespace,this.info=e("<div></div>").addClass(k).append(R).append(q),this.autoPlay=function(){return!!p.opened()&&!!p.options[p.docked()?"dockAutoplay":"autoplay"]},this.preview=e('<div class="elfinder-quicklook-preview ui-helper-clearfix"></div>').on("change",function(){L(),V.attr("style",G),p.docked()&&V.hide(),p.preview.attr("style","").removeClass("elfinder-overflow-auto"),p.info.attr("style","").hide(),p.cover.removeClass("elfinder-quicklook-coverbg"),R.removeAttr("class").attr("style",""),q.html("")}).on(y,function(t){var n,i,a=(p.preview,t.file),r='<div class="elfinder-quicklook-info-data">{value}</div>',s=function(){var s=p.window.css("overflow","hidden");i=u.escape(a.i18||a.name),!a.read&&t.stopImmediatePropagation(),p.window.data("hash",a.hash),p.preview.off("changesize").trigger("change").children().remove(),P.html(i),B.css("visibility",""),$.css("visibility",""),a.hash===u.cwdId2Hash(o.find("[id]:not(.elfinder-cwd-parent):first").attr("id"))&&B.css("visibility","hidden"),a.hash===u.cwdId2Hash(o.find("[id]:last").attr("id"))&&$.css("visibility","hidden"),"directory"===a.mime?c=[a.hash]:"group"===a.mime&&a.getSize&&(c=a.files),q.html(r.replace(/\{value\}/,i)+r.replace(/\{value\}/,u.mime2kind(a))+r.replace(/\{value\}/,c.length?J:u.formatSize(a.size))+r.replace(/\{value\}/,u.i18n("modify")+": "+u.formatDate(a))),c.length&&(l=u.getSize(c).done(function(e){q.find("span.elfinder-spinner").parent().html(e.formated)}).fail(function(){q.find("span.elfinder-spinner").parent().html(u.i18n("unknown"))}).always(function(){l=null}),l._hash=a.hash),R.addClass("elfinder-cwd-icon ui-corner-all "+u.mime2class(a.mime)),a.icon&&R.css(u.getIconStyle(a,!0)),p.info.attr("class",k),a.csscls&&p.info.addClass(a.csscls),a.read&&(n=u.tmb(a))&&e("<img/>").hide().appendTo(p.preview).on("load",function(){R.addClass(n.className).css("background-image","url('"+n.url+"')"),e(this).remove()}).attr("src",n.url),p.info.delay(100).fadeIn(10),p.window.hasClass(x)&&H.trigger("mousemove"),s.css("overflow","")},c=[];a&&!Object.keys(a).length&&(a=u.cwd()),a&&l&&"pending"===l.state()&&l._hash!==a.hash&&l.reject(),a&&(t.forceUpdate||p.window.data("hash")!==a.hash)?s():t.stopImmediatePropagation()}),this.window=e('<div class="ui-front ui-helper-reset ui-widget elfinder-quicklook touch-punch" style="position:absolute"></div>').hide().addClass(u.UA.Touch?"elfinder-touch":"").on("click",function(e){var t=this;e.stopPropagation(),b===m&&requestAnimationFrame(function(){b===m&&u.toFront(t)})}).append(e('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix elfinder-quicklook-titlebar"></div>').append(e('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button elfinder-quicklook-titlebar-icon'+(O?" elfinder-titlebar-button-right":"")+'"></span>').append(K,X),P),this.preview,p.info.hide(),H.hide(),V).draggable({handle:"div.elfinder-quicklook-titlebar"}).on("open",function(e,t){var n=p.window,i=p.value,a=u.getUI("cwd"),o=function(e){b=e,p.update(1,p.value),p.change(),n.trigger("resize."+u.namespace)};Y||b!==h?b===v&&(u.getUI("navdock").data("addNode")(c),o(g),p.preview.trigger("changesize"),u.storage("previewDocked","1"),0===u.getUI("navdock").width()&&n.trigger("navdockout")):(i&&i.hash!==r&&(a=u.cwdHash2Elm(i.hash.split("/",2)[0])),G="",V.attr("style",""),b=f,a.trigger("scrolltoview"),W(),n.css(t||z(a)).show().animate(T(),550,function(){o(m),L()}),u.toFront(n))}).on("close",function(e,t){var n,i=p.window,a=p.preview.trigger("change"),r=(p.value,(i.data("hash")||"").split("/",2)[0]),s=function(e,n){b=e,n&&u.toHide(i),a.children().remove(),p.update(0,p.value),i.data("hash",""),t&&t.resolve()};p.opened()&&(l&&"pending"===l.state()&&l.reject(),p.docked()?(c=u.getUI("navdock").data("removeNode")(p.window.attr("id"),"detach"),s(v),u.storage("previewDocked","2")):(b=f,i.hasClass(x)&&_.click(),r&&(n=o.find("#"+r)).length?i.animate(z(n),500,function(){a.off("changesize"),s(h,!0)}):s(h,!0)))}).on("navdockin",function(e,t){var n=p.window,a=u.getUI("navdock"),o=s||a.width(),r=t||{};Y&&(r.init=!0),b=g,i=n.attr("style"),n.toggleClass("ui-front").removeClass("ui-widget").draggable("disable").resizable("disable").removeAttr("style").css({width:"100%",height:o,boxSizing:"border-box",paddingBottom:0,zIndex:"unset"}),V.hide(),X.toggleClass("ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize"),u.toHide(n,!0),a.data("addNode")(n,r),p.preview.trigger("changesize"),u.storage("previewDocked","1")}).on("navdockout",function(t){var n=p.window,a=u.getUI("navdock"),o=(e.Deferred(),z(p.preview));s=n.outerHeight(),a.data("removeNode")(n.attr("id"),u.getUI()),n.toggleClass("ui-front").addClass("ui-widget").draggable("enable").resizable("enable").attr("style",i),X.toggleClass("ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize"),b=h,n.trigger("open",o),u.storage("previewDocked","0")}).on("resize."+u.namespace,function(){p.preview.trigger("changesize")}),this.alwaysEnabled=!0,this.value=null,this.handlers={select:function(e,t){d&&cancelAnimationFrame(d),e.data&&e.data.selected&&e.data.selected.length?p.opened()&&N():d=requestAnimationFrame(function(){p.opened()&&N()})},error:function(){p.window.is(":visible")&&p.window.trigger("close")},"searchshow searchhide":function(){this.opened()&&this.window.trigger("close")},navbarshow:function(){requestAnimationFrame(function(){p.docked()&&p.preview.trigger("changesize")})},destroy:function(){p.window.remove()}},this.shortcuts=[{pattern:"space"}],this.support={audio:{ogg:j("audio/ogg;"),webm:j("audio/webm;"),mp3:j("audio/mpeg;"),wav:j("audio/wav;"),m4a:j("audio/mp4;")||j("audio/x-m4a;")||j("audio/aac;"),flac:j("audio/flac;"),amr:j("audio/amr;")},video:{ogg:j("video/ogg;"),webm:j("video/webm;"),mp4:j("video/mp4;"),mkv:j("video/x-matroska;")||j("video/webm;"),"3gp":j("video/3gpp;")||j("video/mp4;"),m3u8:j("application/x-mpegURL","video")||j("application/vnd.apple.mpegURL","video"),mpd:j("application/dash+xml","video")}},A={},this.closed=function(){return b==h||b==v},this.opened=function(){return b==m||b==g},this.docked=function(){return b==g},this.addIntegration=function(e){requestAnimationFrame(function(){u.trigger("helpIntegration",Object.assign({cmd:"quicklook"},e))})},this.init=function(){var i,l=this.options,c=this.window,d=this.preview;t=l.width>0?parseInt(l.width):450,n=l.height>0?parseInt(l.height):300,"auto"!==l.dockHeight&&(s=parseInt(l.dockHeight),s||(s=void 0)),u.one("load",function(){S=u.getUI("navdock").data("dockEnabled"),!S&&X.hide(),a=u.getUI(),o=u.getUI("cwd"),u.zIndex&&c.css("z-index",u.zIndex+1),c.appendTo(a),e(document).on("keydown."+u.namespace,function(t){t.keyCode==e.ui.keyCode.ESCAPE&&p.opened()&&!p.docked()&&c.hasClass("elfinder-frontmost")&&c.trigger("close")}),c.resizable({handles:"se",minWidth:350,minHeight:120,resize:function(){d.trigger("changesize")}}),p.change(function(){p.opened()&&p.value&&(p.value.tmb&&1==p.value.tmb&&(p.value=Object.assign({},u.file(p.value.hash))),d.trigger(e.Event(y,{file:p.value})))}),d.on(y,function(e){var t,n,a;if(t=e.file){if(n=t.hash,a=u.searchStatus.mixed&&u.searchStatus.state>1,"directory"!==t.mime)if(parseInt(t.size)||t.mime.match(l.mimeRegexNotEmptyCheck)){if(p.dispInlineRegex=i,a||u.optionsByHashes[n])try{p.dispInlineRegex=new RegExp(u.option("dispInlineRegex",n),"i")}catch(e){try{p.dispInlineRegex=new RegExp(u.isRoot(t)?u.options.dispInlineRegex:u.option("dispInlineRegex",t.phash),"i")}catch(e){p.dispInlineRegex=/^$/}}}else e.stopImmediatePropagation();else p.dispInlineRegex=/^$/;p.info.show()}else e.stopImmediatePropagation()}),e.each(u.commands.quicklook.plugins||[],function(e,t){"function"==typeof t&&new t(p)})}).one("open",function(){var e,t=Number(u.storage("previewDocked")||l.docked);S&&t>=1&&(e=p.window,p.exec(),e.trigger("navdockin",{init:!0}),2===t?e.trigger("close"):(p.update(void 0,u.cwd()),p.change())),Y=!1}).bind("open",function(){r=u.cwd().hash,p.value=u.cwd();try{i=new RegExp(u.option("dispInlineRegex"),"i")}catch(e){i=/^$/}}).bind("change",function(t){t.data&&t.data.changed&&p.opened()&&e.each(t.data.changed,function(){if(p.window.data("hash")===this.hash)return p.window.data("hash",null),p.preview.trigger(y),!1})}).bind("navdockresizestart navdockresizestop",function(e){H["navdockresizestart"===e.type?"show":"hide"]()})},this.getstate=function(){return p.opened()?1:0},this.exec=function(){return p.closed()&&N(),p.enabled()&&p.window.trigger(p.opened()?"close":"open"),e.Deferred().resolve()},this.hideinfo=function(){this.info.stop(!0,!0).hide()}}).prototype={forceLoad:!0},i.prototype.commands.quicklook.plugins=[function(t){var n,i,a=["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],o=t.fm.returnBytes(t.options.getDimThreshold||0),r=t.preview;n=new Image,n.onload=n.onerror=function(){2==n.height&&a.push("image/webp")},n.src="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA",e.each(navigator.mimeTypes,function(t,n){var i=n.type;0===i.indexOf("image/")&&e.inArray(i,a)&&a.push(i)}),r.on(t.evUpdate,function(n){var s,l,c,d,p=t.fm,u=n.file,h=!1,f=null,m=function(e){var t=p.file(u.hash);t.width=e[0],t.height=e[1]},g=function(){var e,t,n,i,a;f&&f.state&&"pending"===f.state()&&f.reject(),h||(h=!0,e=s.get(0),t=u.width&&u.height?{w:u.width,h:u.height}:e.naturalWidth?null:{w:s.width(),h:s.height()},t&&s.removeAttr("width").removeAttr("height"),n=u.width||e.naturalWidth||e.width||s.width(),i=u.height||e.naturalHeight||e.height||s.height(),u.width&&u.height||m([n,i]),t&&s.width(t.w).height(t.h),a=(n/i).toFixed(2),r.on("changesize",function(){var e,t,n=parseInt(r.width()),i=parseInt(r.height());a<(n/i).toFixed(2)?(t=i,e=Math.floor(t*a)):(e=n,t=Math.floor(e/a)),s.width(e).height(t).css("margin-top",t<i?Math.floor((i-t)/2):0)}).trigger("changesize"),s.fadeIn(100));
},v=function(){l.remove(),t.hideinfo()};i||(i=p.arrayFlip(a)),i[u.mime]&&t.dispInlineRegex.test(u.mime)&&(n.stopImmediatePropagation(),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+p.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),c=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(l),s=e("<img/>").hide().appendTo(r).on("load",function(){v(),g()}).on("error",function(){l.remove()}),d=p.openUrl(u.hash,!1,function(e){s.attr("src",e)},{progressBar:c}),r.one("change",function(){d&&d.state&&"pending"===d.state()&&d.reject()}),u.width&&u.height?g():u.size>o&&(f=p.request({data:{cmd:"dim",target:u.hash},preventDefault:!0}).done(function(e){if(e.dim){var t=e.dim.split("x");u.width=t[0],u.height=t[1],m(t),g()}})))})},function(t){var n=t.fm,i="image/tiff",a=t.preview;window.Worker&&window.Uint8Array&&a.on(t.evUpdate,function(o){var r,s,l,c,d,p=o.file,u=function(e){c&&c.terminate(),r.remove(),n.debug("error",e)},h=function(e){var t=n.file(p.hash);t.width=e[0],t.height=e[1]};p.mime===i&&(o.stopImmediatePropagation(),r=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),s=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(r),a.one("change",function(){c&&c.terminate(),r.remove()}),d=n.getContents(p.hash,"arraybuffer",{progressBar:s}).done(function(i){if(i){l=e("<div></div>").css({width:"100%",height:"100%"}).hide().appendTo(a);try{c=n.getWorker(),c.onmessage=function(n){var i,o,s,d,u=n.data;c&&c.terminate(),i=document.createElement("canvas"),o=i.getContext("2d"),i.width=u.width,i.height=u.height,s=o.createImageData(u.width,u.height),s.data.set(new Uint8Array(u.image)),o.putImageData(s,0,0),l.append(i).show(),r.remove(),d=(u.width/u.height).toFixed(2),a.on("changesize",function(){var t,n,o=parseInt(a.width()),r=parseInt(a.height());d<(o/r).toFixed(2)?(n=r,t=Math.floor(n*d)):(t=o,n=Math.floor(t/d)),e(i).width(t).height(n).css("margin-top",n<r?Math.floor((r-n)/2):0)}).trigger("changesize"),p.width&&p.height||h([u.width,u.height]),t.hideinfo()},c.onerror=u,c.postMessage({scripts:[n.options.cdns.tiff,n.getWorkerUrl("quicklook.tiff.js")],data:{data:i}})}catch(o){u(o)}}else u()}),a.one("change",function(){d&&d.state&&"pending"===d.state()&&d.reject()}))})},function(t){var n,i=t.fm,a=i.arrayFlip(["image/vnd.adobe.photoshop","image/x-photoshop"]),o=t.preview,r=function(e,a,r){try{i.replaceXhrSend(),n.fromURL(e).then(function(e){var n;a.attr("src",e.image.toBase64()),requestAnimationFrame(function(){n=(a.width()/a.height()).toFixed(2),o.on("changesize",function(){var e,t,i=parseInt(o.width()),r=parseInt(o.height());n<(i/r).toFixed(2)?(t=r,e=Math.floor(t*n)):(e=i,t=Math.floor(e/n)),a.width(e).height(t).css("margin-top",t<r?Math.floor((r-t)/2):0)}).trigger("changesize"),r.remove(),t.hideinfo(),a.fadeIn(100)})},function(){r.remove(),a.remove()}),i.restoreXhrSend()}catch(s){i.restoreXhrSend(),r.remove(),a.remove()}};o.on(t.evUpdate,function(s){var l,c,d,p,u,h,f=s.file;a[f.mime]&&i.options.cdns.psd&&!i.UA.ltIE10&&t.dispInlineRegex.test(f.mime)&&(s.stopImmediatePropagation(),c=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),d=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(c),h=i.openUrl(f.hash,"sameorigin",function(t){t&&(l=e("<img/>").hide().appendTo(o),n?r(t,l,c):(p=window.define,u=window.require,window.require=null,window.define=null,i.loadScript([i.options.cdns.psd],function(){n=require("psd"),p?window.define=p:delete window.define,u?window.require=u:delete window.require,r(t,l,c)})))},{progressBar:d}),o.one("change",function(){h&&h.state&&"pending"===h.state()&&h.reject()}))})},function(t){var n=t.fm,i=n.arrayFlip(["text/html","application/xhtml+xml"]),a=t.preview;a.on(t.evUpdate,function(o){var r,s,l,c=o.file;i[c.mime]&&t.dispInlineRegex.test(c.mime)&&(!t.options.getSizeMax||c.size<=t.options.getSizeMax)&&(o.stopImmediatePropagation(),s=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),l=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(s),a.one("change",function(){"pending"==r.state()&&r.reject()}).addClass("elfinder-overflow-auto"),r=n.request({data:{cmd:"get",target:c.hash,conv:1,_t:c.ts},options:{type:"get",cache:!0},preventDefault:!0,progressBar:l}).done(function(n){t.hideinfo();var i=e('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(a)[0].contentWindow.document;i.open(),i.write(n.content),i.close()}).always(function(){s.remove()}))})},function(t){var n=t.fm,i=n.arrayFlip(["text/x-markdown"]),a=t.preview,o=null,r=function(n,i){t.hideinfo();var r=e('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(a)[0].contentWindow.document;r.open(),r.write((o.parse||o)(n.content)),r.close(),i.remove()},s=function(e){o=!1,e.remove()};a.on(t.evUpdate,function(l){var c,d,p,u=l.file;i[u.mime]&&n.options.cdns.marked&&o!==!1&&t.dispInlineRegex.test(u.mime)&&(!t.options.getSizeMax||u.size<=t.options.getSizeMax)&&(l.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),p=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(d),a.one("change",function(){"pending"==c.state()&&c.reject()}).addClass("elfinder-overflow-auto"),c=n.request({data:{cmd:"get",target:u.hash,conv:1,_t:u.ts},options:{type:"get",cache:!0},preventDefault:!0,progressBar:p}).done(function(e){o||window.marked?(o||(o=window.marked),r(e,d)):n.loadScript([n.options.cdns.marked],function(t){o=t||window.marked||!1,delete window.marked,o?r(e,d):s(d)},{tryRequire:!0,error:function(){s(d)}})}).fail(function(){s(d)}))})},function(t){if(t.options.viewerjs){var n=t.fm,i=t.preview,a=t.options.viewerjs,o=a.url?n.arrayFlip(a.mimes||[]):[],r=t.window,s=t.navbar,l=function(){s.css("bottom",r.hasClass("elfinder-quicklook-fullscreen")?"30px":"")};a.url&&i.on("update",function(s){var c,d,p,u,h=s.file;!o[h.mime]||"application/pdf"===h.mime&&a.pdfNative&&t.flags.pdfNative||(s.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),p=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(d),u=n.openUrl(h.hash,"sameorigin",function(n){n&&(c=e('<iframe class="elfinder-quicklook-preview-iframe"></iframe>').css("background-color","transparent").on("load",function(){t.hideinfo(),d.remove(),c.css("background-color","#fff")}).on("error",function(){d.remove(),c.remove()}).appendTo(i).attr("src",a.url+"#"+n),r.on("viewchange.viewerjs",l),l(),i.one("change",function(){r.off("viewchange.viewerjs"),d.remove(),c.off("load").remove()}))},{progressBar:p}),i.one("change",function(){u&&u.state&&"pending"===u.state()&&u.reject()}))})}},function(t){var n=t.fm,i="application/pdf",a=t.preview,o=!1,r="";n.UA.Safari&&"mac"===n.OS&&!n.UA.iOS||n.UA.IE||n.UA.Firefox?o=!0:e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){if(t.type===i)return!(o=!0)})}),t.flags.pdfNative=o,o&&("undefined"==typeof t.options.pdfToolbar||t.options.pdfToolbar||(r="#toolbar=0"),a.on(t.evUpdate,function(s){var l,c=s.file;o&&c.mime===i&&t.dispInlineRegex.test(c.mime)&&(s.stopImmediatePropagation(),l=n.openUrl(c.hash,!1,function(i){i&&(t.hideinfo(),t.cover.addClass("elfinder-quicklook-coverbg"),e('<object class="elfinder-quicklook-preview-pdf" data="'+i+r+'" type="application/pdf" ></object>').on("error",function(e){o=!1,t.update(void 0,n.cwd()),t.update(void 0,c)}).appendTo(a))}),a.one("change",function(){l&&l.state&&"pending"===l.state()&&l.reject()}))}))},function(t){var n=t.fm,i="application/x-shockwave-flash",a=t.preview,o=!1;e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){if(t.type===i)return!(o=!0)})}),o&&a.on(t.evUpdate,function(o){var r,s,l=o.file;l.mime===i&&t.dispInlineRegex.test(l.mime)&&(o.stopImmediatePropagation(),s=n.openUrl(l.hash,!1,function(n){n&&(t.hideinfo(),r=e('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+n+'" quality="high" type="application/x-shockwave-flash" wmode="transparent" />').appendTo(a))}),a.one("change",function(){s&&s.state&&"pending"===s.state()&&s.reject()}))})},function(t){var n,i,a,o,r,s,l=t.fm,c=t.preview,d={"audio/mpeg":"mp3","audio/mpeg3":"mp3","audio/mp3":"mp3","audio/x-mpeg3":"mp3","audio/x-mp3":"mp3","audio/x-wav":"wav","audio/wav":"wav","audio/x-m4a":"m4a","audio/aac":"m4a","audio/mp4":"m4a","audio/x-mp4":"m4a","audio/ogg":"ogg","audio/webm":"webm","audio/flac":"flac","audio/x-flac":"flac","audio/amr":"amr"},p=t.window,u=t.navbar,h="string"==typeof t.options.mediaControlsList&&t.options.mediaControlsList?' controlsList="'+l.escape(t.options.mediaControlsList)+'"':"",f=function(){u.css("bottom",p.hasClass("elfinder-quicklook-fullscreen")?"50px":"")},m=function(t,i){return e('<audio class="elfinder-quicklook-preview-audio ui-front" controls'+h+' preload="auto" autobuffer><source src="'+t+'" ></source></audio>').on("change",function(e){e.stopPropagation()}).on("error",function(e){n&&n.data("hash")===i&&b()}).data("hash",i).appendTo(c)},g=function(t){var n,i=e.Deferred(),o=e.Deferred().done(function(){var e;e=l.getContents(t,"arraybuffer",{progressBar:s}).done(function(e){try{var t=a.toWAV(new Uint8Array(e));t?i.resolve(URL.createObjectURL(new Blob([t],{type:"audio/x-wav"}))):i.reject()}catch(n){i.reject()}}).fail(function(){i.reject()}),c.one("change",function(){e&&e.state&&"pending"===e.state()&&e.reject()})}).fail(function(){a=!1,i.reject()});return window.TextEncoder&&window.URL&&URL.createObjectURL&&"undefined"==typeof a?(n=window.AMR,delete window.AMR,l.loadScript([l.options.cdns.amr],function(){a=!!window.AMR&&window.AMR,window.AMR=n,o[a?"resolve":"reject"]()},{error:function(){o.reject()}})):o[a?"resolve":"reject"](),i},v=function(e){var t,i=n.data("hash");o&&(t=e.play()),t&&t["catch"]&&t["catch"](function(t){e.paused||n&&n.data("hash")===i&&b()})},b=function(){if(n&&n.parent().length){var e=n[0],t=n.children("source").attr("src");p.off("viewchange.audio");try{e.pause(),n.empty(),t.match(/^blob:/)&&URL.revokeObjectURL(t),e.src="",e.load()}catch(i){}n.remove(),n=null}};c.on(t.evUpdate,function(u){var h,b,y=u.file,w=d[y.mime];d[y.mime]&&t.dispInlineRegex.test(y.mime)&&((h=t.support.audio[w])||"amr"===w)&&(o=t.autoPlay(),i=y.hash,h?(u.stopImmediatePropagation(),r=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+l.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),s=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(r),b=l.openUrl(i,!1,function(e){r.remove(),e?(n=m(e,i),v(n[0]),p.on("viewchange.audio",f),f()):n.remove()},{progressBar:s}),c.one("change",function(){b&&b.state&&"pending"===b.state()&&b.reject()})):l.options.cdns.amr&&"amr"===w&&a!==!1&&(u.stopImmediatePropagation(),r=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+l.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),s=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(r),n=m("",i),g(y.hash).done(function(e){if(r.remove(),i===y.hash){var t=n[0];try{n.children("source").attr("src",e),t.pause(),t.load(),v(t),p.on("viewchange.audio",f),f()}catch(a){URL.revokeObjectURL(e),n.remove()}}else URL.revokeObjectURL(e)}).fail(function(){n.remove()})))}).one("change",b)},function(t){var n,i,a,o,r,s,l,c,d,p,u=t.fm,h=t.preview,f={"video/mp4":"mp4","video/x-m4v":"mp4","video/quicktime":"mp4","video/mpeg":"mpeg","video/ogg":"ogg","application/ogg":"ogg","video/webm":"webm","video/x-matroska":"mkv","video/3gpp":"3gp","application/vnd.apple.mpegurl":"m3u8","application/x-mpegurl":"m3u8","application/dash+xml":"mpd","video/x-flv":"flv","video/x-msvideo":"avi"},m=t.window,g=t.navbar,v="string"==typeof t.options.mediaControlsList&&t.options.mediaControlsList?' controlsList="'+u.escape(t.options.mediaControlsList)+'"':"",b=function(){u.UA.iOS?m.hasClass("elfinder-quicklook-fullscreen")?(h.css("height","-webkit-calc(100% - 50px)"),g._show()):h.css("height",""):g.css("bottom",m.hasClass("elfinder-quicklook-fullscreen")?"50px":"")},y=function(i,a){var r,s=function(e){l>1&&(c&&clearTimeout(c),c=setTimeout(function(){!r&&T(!0)},800))},l=0,d="";o=null,a=a||{},a.cssClass&&(d=" "+a.cssClass),t.hideinfo(),n=e('<video class="elfinder-quicklook-preview-video'+d+'" controls'+v+' preload="auto" autobuffer playsinline></video>').on("change",function(e){e.stopPropagation()}).on("timeupdate progress",s).on("canplay",function(){r=!0}).data("hash",i.hash),n[0].addEventListener("error",function(e){a.src&&u.convAbsUrl(a.src)===u.convAbsUrl(e.target.src)&&(++l,s())},!0),a.src&&n.append('<source src="'+a.src+'" type="'+i.mime+'"></source><source src="'+a.src+'"></source>'),n.appendTo(h),m.on("viewchange.video",b),b()},w=function(e){var t,a;a=u.openUrl(e.hash,!1,function(a){d.remove(),a&&(y(e),t=new i,t.loadSource(a),t.attachMedia(n[0]),l&&t.on(i.Events.MANIFEST_PARSED,function(){z(n[0])}))},{progressBar:p}),h.one("change",function(){a&&a.state&&"pending"===a.state()&&a.reject()})},x=function(e){var t;t=u.openUrl(e.hash,!1,function(t){var i;d.remove(),t&&(y(e),o=window.dashjs.MediaPlayer().create(),i=o.getDebug(),i.setLogLevel?i.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL):i.setLogToBrowserConsole&&i.setLogToBrowserConsole(!1),o.initialize(n[0],t,l),o.on("error",function(e){T(!0)}))},{progressBar:p}),h.one("change",function(){t&&t.state&&"pending"===t.state()&&t.reject()})},k=function(e){var t;return r.isSupported()?(t=u.openUrl(e.hash,!1,function(t){if(d.remove(),t){var i=r.createPlayer({type:"flv",url:t});y(e),i.on(r.Events.ERROR,function(){i.destroy(),T(!0)}),i.attachMediaElement(n[0]),i.load(),z(i)}},{progressBar:p}),void h.one("change",function(){t&&t.state&&"pending"===t.state()&&t.reject()})):void(r=!1)},C=function(e){var t;t=u.openUrl(e.hash,!1,function(t){d.remove(),t&&(y(e,{src:t,cssClass:"video-js"}),n[0].src=t,s(n[0],{autoplay:!0}))},{progressBar:p}),h.one("change",function(){t&&t.state&&"pending"===t.state()&&t.reject()})},z=function(e){var t,i=n.data("hash");l&&(t=e.play()),t&&t["catch"]&&t["catch"](function(t){e.paused||n&&n.data("hash")===i&&T(!0)})},T=function(e){if(c&&clearTimeout(c),n&&n.parent().length){var i=n[0];m.off("viewchange.video"),o&&o.reset();try{i.pause(),n.empty(),i.src="",i.load()}catch(a){}n.remove(),n=null}e&&t.info.show()};h.on(t.evUpdate,function(o){var c,m,g=o.file,v=g.mime.toLowerCase(),b=f[v];f[v]&&t.dispInlineRegex.test(g.mime)&&(l=t.autoPlay(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+u.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>'),p=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(d),t.support.video[b]&&("m3u8"!==b||u.UA.Safari)?(o.stopImmediatePropagation(),d.appendTo(t.info.find(".elfinder-quicklook-info")),m=u.openUrl(g.hash,!1,function(e){d.remove(),e&&(y(g,{src:e}),z(n[0]))},{progressBar:p}),h.one("change",function(){m&&m.state&&"pending"===m.state()&&m.reject()})):i!==!1&&u.options.cdns.hls&&"m3u8"===b?(o.stopImmediatePropagation(),d.appendTo(t.info.find(".elfinder-quicklook-info")),i?w(g):(c=window.Hls,delete window.Hls,u.loadScript([u.options.cdns.hls],function(e){i=e||window.Hls||!1,window.Hls=c,i&&w(g)},{tryRequire:!0,error:function(){i=!1}}))):a!==!1&&u.options.cdns.dash&&"mpd"===b?(o.stopImmediatePropagation(),d.appendTo(t.info.find(".elfinder-quicklook-info")),a?x(g):u.loadScript([u.options.cdns.dash],function(){a=!!window.dashjs,a&&x(g)},{tryRequire:!0,error:function(){a=!1}})):r!==!1&&u.options.cdns.flv&&"flv"===b?(o.stopImmediatePropagation(),d.appendTo(t.info.find(".elfinder-quicklook-info")),r?k(g):(c=window.flvjs,delete window.flvjs,u.loadScript([u.options.cdns.flv],function(e){r=e||window.flvjs||!1,window.flvjs=c,r&&k(g)},{tryRequire:!0,error:function(){r=!1}}))):u.options.cdns.videojs&&(o.stopImmediatePropagation(),d.appendTo(t.info.find(".elfinder-quicklook-info")),s?C(g):u.loadScript([u.options.cdns.videojs+"/video.min.js"],function(e){s=e||window.videojs||!1,s&&C(g)},{tryRequire:!0,error:function(){s=!1}}).loadCss([u.options.cdns.videojs+"/video-js.min.css"])))}).one("change",T)},function(t){var n,i=t.preview,a=[],o=t.window,r=t.navbar;e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){(0===t.type.indexOf("audio/")||0===t.type.indexOf("video/"))&&a.push(t.type)})}),a=t.fm.arrayFlip(a),i.on(t.evUpdate,function(s){var l,c,d,p,u=s.file,h=u.mime,f=function(){r.css("bottom",o.hasClass("elfinder-quicklook-fullscreen")?"50px":"")};a[u.mime]&&t.dispInlineRegex.test(u.mime)&&(s.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),p=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(d),c=t.fm.openUrl(u.hash,!1,function(a){d.remove(),a&&((l=0===h.indexOf("video/"))&&t.hideinfo(),n=e('<embed src="'+a+'" type="'+h+'" class="elfinder-quicklook-preview-'+(l?"video":"audio")+'"/>').appendTo(i),o.on("viewchange.embed",f),f())},{progressBar:p}),i.one("change",function(){c&&c.state&&"pending"===c.state()&&c.reject()}))}).one("change",function(){n&&n.parent().length&&(o.off("viewchange.embed"),n.remove(),n=null)})},function(t){var n=t.fm,i=n.arrayFlip(["application/zip","application/x-gzip","application/x-tar","application/x-bzip2"]),a=t.preview,o=n.returnBytes(t.options.unzipMaxSize||0),r=!(!n.options.cdns.zlibUnzip||!n.options.cdns.zlibGunzip),s=!!n.options.cdns.bzip2;window.Worker&&window.Uint8Array&&window.DataView&&a.on(t.evUpdate,function(l){var c=l.file,d="application/x-tar"===c.mime,p="application/x-bzip2"===c.mime,u="application/zip"===c.mime||"application/x-gzip"===c.mime;if(i[c.mime]&&(!o||c.size<=o)&&(d||p&&s||u&&r)){var h,f,m,g,v=function(){h=n.getContents(c.hash,"arraybuffer",{progressBar:g}).fail(function(){m.remove()}).done(function(e){var t=function(e){f&&f.terminate(),m.remove(),u?r=!1:p&&(s=!1),n.debug("error",e)};try{f=n.getWorker(),f.onmessage=function(e){f&&f.terminate(),m.remove(),!e.data||e.data.error?new Error(e.data&&e.data.error?e.data.error:""):b(e.data.files)},f.onerror=t,"application/x-tar"===c.mime?f.postMessage({scripts:[n.getWorkerUrl("quicklook.unzip.js")],data:{type:"tar",bin:e}}):"application/zip"===c.mime?f.postMessage({scripts:[n.options.cdns.zlibUnzip,n.getWorkerUrl("quicklook.unzip.js")],data:{type:"zip",bin:e}}):"application/x-gzip"===c.mime?f.postMessage({scripts:[n.options.cdns.zlibGunzip,n.getWorkerUrl("quicklook.unzip.js")],data:{type:"gzip",bin:e}}):"application/x-bzip2"===c.mime&&f.postMessage({scripts:[n.options.cdns.bzip2,n.getWorkerUrl("quicklook.unzip.js")],data:{type:"bzip2",bin:e}})}catch(i){t(i)}})},b=function(i){var o,r,s,l=0;i&&i.length&&(i=e.map(i,function(e){return n.decodeRawString(e)}),i.sort(),r=n.escape(i.join("\n").replace(/\{formatSize\((\d+)\)\}/g,function(e,t){return l+=parseInt(t),n.formatSize(t)})),o="<strong>"+n.escape(c.mime)+"</strong> ("+n.formatSize(c.size)+" / "+n.formatSize(l)+")<hr/>",s=e('<div class="elfinder-quicklook-preview-archive-wrapper">'+o+'<pre class="elfinder-quicklook-preview-text">'+r+"</pre></div>").on("touchstart",function(t){e(this)["scroll"+("ltr"===n.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(a),t.hideinfo()),m.remove()};l.stopImmediatePropagation(),m=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),g=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(m),a.one("change",function(){"pending"===h.state()&&h.reject(),f&&f.terminate(),m.remove()}),v()}})},function(t){var n,i=t.fm,a=i.arrayFlip(["application/x-rar"]),o=t.preview;window.DataView&&o.on(t.evUpdate,function(r){var s=r.file;if(a[s.mime]&&i.options.cdns.rar&&n!==!1){var l,c,d,p,u,h,f=function(a){if(p)return void l.remove();try{d=n({file:a,type:2,xhrHeaders:i.customHeaders,xhrFields:i.xhrFields},function(n){l.remove();var a,r,c=[];return p||n?void(n&&i.debug("error",n)):(e.each(d.entries,function(){c.push(this.path+(this.size?" ("+i.formatSize(this.size)+")":""))}),void(c.length&&(c=e.map(c,function(e){return i.decodeRawString(e)}),c.sort(),a="<strong>"+i.escape(s.mime)+"</strong> ("+i.formatSize(s.size)+")<hr/>",r=e('<div class="elfinder-quicklook-preview-archive-wrapper">'+a+'<pre class="elfinder-quicklook-preview-text">'+i.escape(c.join("\n"))+"</pre></div>").on("touchstart",function(t){e(this)["scroll"+("ltr"===i.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(o),t.hideinfo())))})}catch(r){l.remove()}},m=function(){n=!1,l.remove()};r.stopImmediatePropagation(),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),c=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(l),o.one("change",function(){d&&(d.abort=!0),l.remove(),p=!0}),h=i.openUrl(s.hash,"sameorigin",function(e){e&&(n?f(e):(window.RarArchive&&(u=window.RarArchive,delete window.RarArchive),i.loadScript([i.options.cdns.rar],function(){i.hasRequire?require(["rar"],function(t){n=t,f(e)},m):(n=window.RarArchive)?(u?window.RarArchive=u:delete window.RarArchive,f(e)):m()},{tryRequire:!0,error:m})))},{progressBar:c,temporary:!0}),o.one("change",function(){h&&h.state&&"pending"===h.state()&&h.reject()})}})},function(t){var n,i=t.fm,a=i.arrayFlip(t.options.sharecadMimes||[]),o=t.preview;t.window;t.options.sharecadMimes.length&&t.addIntegration({title:"ShareCAD.org CAD and 3D-Models viewer",link:"https://sharecad.org/DWGOnlinePlugin"}),o.on(t.evUpdate,function(r){var s=r.file;if(a[s.mime.toLowerCase()]&&i.option("onetimeUrl",s.hash)){var l,c,d;t.window;r.stopImmediatePropagation(),"1"==s.url&&(o.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+i.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),i.request({data:{cmd:"url",target:s.hash},preventDefault:!0,progressBar:c}).always(function(){n.html("")}).done(function(e){var n=i.file(s.hash);s.url=n.url=e.url||"",s.url&&o.trigger({type:t.evUpdate,file:s,forceUpdate:!0})})})),""!==s.url&&"1"!=s.url&&(o.one("change",function(){l.remove(),n.off("load").remove(),n=null}).addClass("elfinder-overflow-auto"),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),c=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(l),d=i.convAbsUrl(i.url(s.hash)),n=e('<iframe class="elfinder-quicklook-preview-iframe" scrolling="no"></iframe>').css("background-color","transparent").appendTo(o).on("load",function(){t.hideinfo(),l.remove(),t.preview.after(t.info),e(this).css("background-color","#fff").show()}).on("error",function(){l.remove(),t.preview.after(t.info)}).attr("src","//sharecad.org/cadframe/load?url="+encodeURIComponent(d)),t.info.after(t.preview))}})},function(t){var n,i,a,o,r,s=t.fm,l={"application/vnd.google-earth.kml+xml":!0,"application/vnd.google-earth.kmz":!0},c=t.preview;t.options.googleMapsApiKey&&(t.addIntegration({title:"Google Maps",link:"https://www.google.com/intl/"+s.lang.replace("_","-")+"/help/terms_maps.html"}),n=window.google&&google.maps,i=function(e,i,a){var r=t.options.googleMapsOpts.maps;s.forExternalUrl(e.hash,{progressBar:a}).done(function(e){if(e)try{new n.KmlLayer(e,Object.assign({map:new n.Map(i.get(0),r)},t.options.googleMapsOpts.kml)),t.hideinfo()}catch(a){o()}else o()})},a=window.gm_authFailure,o=function(){r=null},r="https://maps.googleapis.com/maps/api/js?key="+t.options.googleMapsApiKey,window.gm_authFailure=function(){o(),a&&a()},c.on(t.evUpdate,function(a){var o=a.file;if(r&&l[o.mime.toLowerCase()]){var d,p,u,h=(t.window,"1"==o.url&&!s.option("onetimeUrl",o.hash));a.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+s.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),p=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(d),h&&(c.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+s.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),s.request({data:{cmd:"url",target:o.hash},preventDefault:!0,progressBar:p}).always(function(){d.remove(),n.html("")}).done(function(e){var n=s.file(o.hash);o.url=n.url=e.url||"",o.url&&c.trigger({type:t.evUpdate,file:o,forceUpdate:!0})})})),""===o.url||h||(u=e('<div style="width:100%;height:100%;"></div>').appendTo(c),c.one("change",function(){u.remove(),u=null}),n?i(o,u,p):s.loadScript([r],function(){n=window.google&&google.maps,n&&i(o,u,p)}))}}))},function(t){var n,i,a=t.fm,o=Object.assign(a.arrayFlip(t.options.googleDocsMimes||[],"g"),a.arrayFlip(t.options.officeOnlineMimes||[],"m")),r=t.preview,s=(t.window,t.navbar),l={g:"docs.google.com/gview?embedded=true&url=",m:"view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src="},c={g:"56px",m:"24px"},d={xls:5242880,xlsb:5242880,xlsx:5242880,xlsm:5242880,other:10485760};t.options.googleDocsMimes.length&&(i=!0,t.addIntegration({title:"Google Docs Viewer",link:"https://docs.google.com/"})),t.options.officeOnlineMimes.length&&(i=!0,t.addIntegration({title:"MS Online Doc Viewer",link:"https://products.office.com/office-online/view-office-documents-online"})),i&&r.on(t.evUpdate,function(i){var p,u,h=i.file;if(h.size<=26214400&&(p=o[h.mime])){var f,m,g,v=t.window,b=function(){s.css("bottom",v.hasClass("elfinder-quicklook-fullscreen")?c[p]:"")},y=a.mimeTypes[h.mime],w="1"==h.url&&!a.option("onetimeUrl",h.hash);"m"===p&&(d[y]&&h.size>d[y]||h.size>d.other)&&(p="g"),w&&(r.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+a.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),a.request({data:{cmd:"url",target:h.hash},preventDefault:!0}).always(function(){n.html("")}).done(function(e){var n=a.file(h.hash);h.url=n.url=e.url||"",h.url&&r.trigger({type:t.evUpdate,file:h,forceUpdate:!0})})})),""===h.url||w||(i.stopImmediatePropagation(),r.one("change",function(){u&&u.status&&"pending"===u.status()&&u.reject(),v.off("viewchange.googledocs"),f.remove(),n.off("load").remove(),n=null}).addClass("elfinder-overflow-auto"),f=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+a.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),m=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(f),n=e('<iframe class="elfinder-quicklook-preview-iframe"></iframe>').css("background-color","transparent").appendTo(r),u=a.forExternalUrl(h.hash,{progressBar:m}).done(function(i){var a=function(){try{!n||n.attr("src")&&!n.get(0).contentWindow.document||(n.attr("src","https://"+l[p]+encodeURIComponent(i)),g=setTimeout(a,2e3))}catch(e){}};i?(h.ts&&(i+=(i.match(/\?/)?"&":"?")+"_t="+h.ts),n.on("load",function(){g&&clearTimeout(g),t.hideinfo(),f.remove(),t.preview.after(t.info),e(this).css("background-color","#fff").show()}).on("error",function(){g&&clearTimeout(g),f.remove(),t.preview.after(t.info)}),a()):(f.remove(),n.remove())}),v.on("viewchange.googledocs",b),b(),t.info.after(t.preview))}})},function(t){"use strict";var n,i,a=t.fm,o=t.preview,r=parseInt(t.options.textInitialLines)||150,s=parseInt(t.options.prettifyMaxLines)||500,l=function(){c=function(){return!1},i&&(window.PR=i),n=!1},c=function(e){a.options.cdns.prettify?(c=function(e){return setTimeout(function(){p(e)},100),"pending"},window.PR&&(i=window.PR),a.loadScript([a.options.cdns.prettify+(a.options.cdns.prettify.match(/\?/)?"&":"?")+"autorun=false"],function(t){n=t||window.PR,"object"==typeof n?(c=function(){return!0},i?window.PR=i:delete window.PR,d(e)):l()},{tryRequire:!0,error:l})):l()},d=function(e){e&&!e.hasClass("prettyprinted")&&(e.css("cursor","wait"),requestAnimationFrame(function(){n.prettyPrint&&n.prettyPrint(null,e.get(0)),e.css("cursor","")}))},p=function(e){var t=c(e);t===!0&&d(e)};o.on(t.evUpdate,function(i){var l,c,d,u,h=i.file;h.mime;a.mimeIsText(h.mime)&&(!t.options.getSizeMax||h.size<=t.options.getSizeMax)&&n!==!1&&(i.stopImmediatePropagation(),c=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+a.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(t.info.find(".elfinder-quicklook-info")),d=e('<div class="elfinder-quicklook-info-progress"></div>').appendTo(c),o.one("change",function(){"pending"==l.state()&&l.reject(),u&&u.remove()}),l=a.request({data:{cmd:"get",target:h.hash,conv:h.encoding||1,_t:h.ts},options:{type:"get",cache:!0},preventDefault:!0,progressBar:d}).done(function(n){var i,l,c,d,u,f=new RegExp("^(data:"+h.mime.replace(/([.+])/g,"\\$1")+";base64,)","i"),m=n.content;"string"==typeof m&&(t.hideinfo(),window.atob&&(u=m.match(f))&&(m=atob(m.substr(u[1].length))),d=m.match(/([^\r\n]{1,100}[\r\n]*)/g),l=d.length-r,l>10?i=d.splice(0,r).join(""):l=0,c=e('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text prettyprint"></pre></div>'),l&&c.append(e('<div class="elfinder-quicklook-preview-charsleft"><hr/><span>'+a.i18n("linesLeft",a.toLocaleString(l))+"</span></div>").on("click",function(){var t=c.scrollTop();e(this).remove(),c.children("pre").removeClass("prettyprinted").text(m).scrollTop(t),d.length<=s&&p(c)})),c.children("pre").text(i||m),c.on("touchstart",function(t){e(this)["scroll"+("ltr"===a.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(o),n.toasts&&Array.isArray(n.toasts)&&e.each(n.toasts,function(){this.msg&&a.toast(this)}),p(c))}).always(function(n){var i,r,s;(i=a.getCommand("edit"))&&(s=[],n&&n.encoding&&s.push({value:n.encoding}),s.push({value:"UTF-8"}),r=i.getEncSelect(s),r.on("change",function(){h.encoding=r.val(),a.cache(h,"change"),o.trigger({type:t.evUpdate,file:h,forceUpdate:!0})}),u=e('<div class="elfinder-quicklook-encoding"></div>').append(r),t.window.append(u)),c.remove()}))})}],(i.prototype.commands.reload=function(){"use strict";var t=this,n=!1;this.alwaysEnabled=!0,this.updateOnSelect=!0,this.shortcuts=[{pattern:"ctrl+shift+r f5"}],this.getstate=function(){return 0},this.init=function(){this.fm.bind("search searchend",function(){n="search"==this.type})},this.fm.bind("contextmenu",function(){var n=t.fm;n.options.sync>=1e3&&(t.extra={icon:"accept",node:e("<span></span>").attr({title:n.i18n("autoSync")}).on("click touchstart",function(t){"touchstart"===t.type&&t.originalEvent.touches.length>1||(t.stopPropagation(),
t.preventDefault(),e(this).parent().toggleClass("ui-state-disabled",n.options.syncStart).parent().removeClass("ui-state-hover"),n.options.syncStart=!n.options.syncStart,n.autoSync(n.options.syncStart?null:"stop"))}).on("ready",function(){e(this).parent().toggleClass("ui-state-disabled",!n.options.syncStart).css("pointer-events","auto")})})}),this.exec=function(){var t=this.fm;if(!n){var i=t.sync(),a=setTimeout(function(){t.notify({type:"reload",cnt:1,hideCnt:!0}),i.always(function(){t.notify({type:"reload",cnt:-1})})},t.notifyDelay);return i.always(function(){clearTimeout(a),t.trigger("reload")})}e("div.elfinder-toolbar > div."+t.res("class","searchbtn")+" > span.ui-icon-search").click()}}).prototype={forceLoad:!0},i.prototype.commands.rename=function(){"use strict";this.fm.options.enableRootRename!==!1&&(this.alwaysEnabled=!0),this.syncTitleOnChange=!0;var t=this,n=t.fm,i=n.options.enableRootRename!==!1,a=function(t,a,o,r){var s,l=a?[o.hash].concat(a):[o.hash],c=l.length,d={};if(n.lockfiles({files:l}),n.isRoot(o)&&!o.netkey&&i){if((s=n.storage("rootNames"))||(s={}),""===r){if(!s[o.hash])return t&&t.reject(),void n.unlockfiles({files:l}).trigger("selectfiles",{files:l});o.name=o._name,o.i18=o._i18,delete s[o.hash],delete o._name,delete o._i18}else"undefined"==typeof o._name&&(o._name=o.name,o._i18=o.i18),o.name=s[o.hash]=r,delete o.i18;return n.storage("rootNames",s),d={changed:[o]},n.updateCache(d),n.change(d),t&&t.resolve(d),void n.unlockfiles({files:l}).trigger("selectfiles",{files:l})}d={cmd:"rename",name:r,target:o.hash},c>1&&(d.targets=a,r.match(/\*/)&&(d.q=r)),n.request({data:d,notify:{type:"rename",cnt:c},navigate:{}}).fail(function(e){var i=n.parseError(e);t&&t.reject(),i&&Array.isArray(i)&&"errRename"===i[0]||n.sync()}).done(function(i){var a;i.added&&i.added.length&&1===c&&(i.undo={cmd:"rename",callback:function(){return n.request({data:{cmd:"rename",target:i.added[0].hash,name:o.name},notify:{type:"undo",cnt:1}})}},i.redo={cmd:"rename",callback:function(){return n.request({data:{cmd:"rename",target:o.hash,name:r},notify:{type:"rename",cnt:1}})}}),t&&t.resolve(i),(a=n.cwd().hash)&&a!==o.hash||n.exec("open",e.map(i.added,function(e){return"directory"===e.mime?e.hash:null})[0])}).always(function(){n.unlockfiles({files:l}).trigger("selectfiles",{files:l})})},o=function(e,t){var i,a,o,r=t||n.selected(),s=n.splitFileExtention(e),l=n.file(r[0]),c=n.file(r[1]);return i=s[1]?"."+s[1]:"",s[1]&&"*"===s[0]?(a='"'+n.splitFileExtention(l.name)[0]+i+'", ',a+='"'+n.splitFileExtention(c.name)[0]+i+'"'):s[0].length>1&&("*"===s[0].substr(-1)?(o=s[0].substr(0,s[0].length-1),a='"'+o+l.name+'", ',a+='"'+o+c.name+'"'):"*"===s[0].substr(0,1)&&(o=s[0].substr(1),a='"'+n.splitFileExtention(l.name)[0]+o+i+'", ',a+='"'+n.splitFileExtention(c.name)[0]+o+i+'"')),a||(a='"'+s[0]+"1"+i+'", "'+s[0]+"2"+i+'"'),r.length>2&&(a+=" ..."),a},r=function(){var i,r=n.selected(),s='<input name="type" type="radio" class="elfinder-tabstop">',l=function(t,i){return e('<label class="elfinder-rename-batch-checks">'+n.i18n(i)+"</label>").prepend(t)},c=e('<input type="text" class="ui-corner-all elfinder-tabstop">'),d=e(s),p=e(s),u=e(s),h=e(s),f=e("<div></div>").append(l(d,"plusNumber"),l(p,"asPrefix"),l(u,"asSuffix"),l(h,"changeExtention")),m=e('<div class="elfinder-rename-batch-preview"></div>'),g=e('<div class="elfinder-rename-batch"></div>').append(e('<div class="elfinder-rename-batch-name"></div>').append(c),e('<div class="elfinder-rename-batch-type"></div>').append(f),m),v={title:n.i18n("batchRename"),modal:!0,destroyOnClose:!0,width:Math.min(380,n.getUI().width()-20),buttons:{},open:function(){c.on("input",y).trigger("focus")}},b=function(){var e=c.val(),t=n.splitFileExtention(n.file(r[0]).name)[1];return(""!==e||d.is(":checked"))&&(p.is(":checked")?e+="*":u.is(":checked")?e="*"+e+"."+t:h.is(":checked")?e="*."+e:t&&(e+="."+t)),e},y=function(){var e=b();""!==e?m.html(n.i18n(["renameMultiple",r.length,o(e)])):m.empty()},w=f.find("input:radio").on("change",y);v.buttons[n.i18n("btnApply")]=function(){var e,t,o=b();""!==o&&(i.elfinderdialog("close"),t=r,e=n.file(t.shift()),a(void 0,t,e,o))},v.buttons[n.i18n("btnCancel")]=function(){i.elfinderdialog("close")},e.fn.checkboxradio?w.checkboxradio({create:function(e,t){this===d.get(0)&&d.prop("checked",!0).change()}}):f.buttonset({create:function(e,t){d.prop("checked",!0).change()}}),i=t.fmDialog(g,v)};this.noChangeDirOnRemovedCwd=!0,this.shortcuts=[{pattern:"f2"+("mac"==n.OS?" enter":"")},{pattern:"shift+f2",description:"batchRename",callback:function(){n.selected().length>1&&r()}}],this.getstate=function(a){var o,s,l,c,d,p,u=this.files(a),h=u.length;return h?(h>1&&u[0].phash&&(o=u[0].phash,s=n.splitFileExtention(u[0].name)[1].toLowerCase(),l=u[0].mime),1===h&&(p=n.isRoot(u[0])),d=1===h&&(i&&n.cookieEnabled&&p||!u[0].locked)||n.api>2.103&&h===e.grep(u,function(e){return!(c||e.locked||e.phash!==o||n.isRoot(e)||l!==e.mime&&s!==n.splitFileExtention(e.name)[1].toLowerCase())||(c&&(c=!0),!1)}).length?0:-1,!p&&0===d&&n.option("disabledFlip",u[0].hash).rename&&(d=-1),d!==-1&&h>1?t.extra={icon:"preference",node:e("<span></span>").attr({title:n.i18n("batchRename")}).on("click touchstart",function(e){"touchstart"===e.type&&e.originalEvent.touches.length>1||(e.stopPropagation(),e.preventDefault(),n.getUI().trigger("click"),r())})}:delete t.extra,d):-1},this.exec=function(t,r){var s,l=(n.getUI("cwd"),t||!!n.selected().length&&n.selected()||[n.cwd().hash]),c=l.length,d=n.file(l.shift()),p=".elfinder-cwd-filename",u=r||{},h=n.cwd().hash==d.hash,f="navbar"===u._currentType||"files"===u._currentType?u._currentType:h?"navbar":"files",m="files"!==f,g=n[m?"navHash2Elm":"cwdHash2Elm"](d.hash),v=!m&&"list"!=n.storage("view"),b=function(){requestAnimationFrame(function(){k&&k.trigger("blur")})},y=function(){A.is(":hidden")||A.elfinderoverlay("hide").off("click close",j),T.removeClass("ui-front").css("position","").off("unselect."+n.namespace,b),v?z&&z.css("max-height",""):m||T.css("width","").parent("td").css("overflow","")},w=e.Deferred().fail(function(e){var t=k.parent(),i=n.escape(d.i18||d.name);k.off(),v&&(i=i.replace(/([_.])/g,"&#8203;$1")),requestAnimationFrame(function(){m?k.replaceWith(i):t.length?(k.remove(),t.html(i)):g.find(p).html(i)}),e&&n.error(e)}).always(function(){y(),n.unbind("resize",O),n.enable()}),x=function(t){var i=e.trim(k.val()),r=(n.splitFileExtention(i),!0),s=function(){k.off(),y(),m?k.replaceWith(n.escape(i)):z.html(n.escape(i)),a(w,l,d,i)};if(A.is(":hidden")||T.css("z-index",""),""===i){if(!n.isRoot(d))return j();m?k.replaceWith(n.escape(d.name)):z.html(n.escape(d.name))}if(!S&&T.length){if(k.off("blur"),1===c&&i===d.name)return w.reject();if(n.options.validName&&n.options.validName.test)try{r=n.options.validName.test(i)}catch(t){r=!1}if("."===i||".."===i||!r)return S=!0,n.error("directory"===d.mime?"errInvDirname":"errInvName",{modal:!0,close:function(){setTimeout(C,120)}}),!1;if(1===c&&n.fileByName(i,d.phash))return S=!0,n.error(["errExists",i],{modal:!0,close:function(){setTimeout(C,120)}}),!1;1===c?s():(n.confirm({title:"cmdrename",text:["renameMultiple",c,o(i,[d.hash].concat(l))],accept:{label:"btnYes",callback:s},cancel:{label:"btnCancel",callback:function(){setTimeout(function(){S=!0,C()},120)}}}),setTimeout(function(){n.trigger("unselectfiles",{files:n.selected()}).trigger("selectfiles",{files:[d.hash].concat(l)})},120))}},k=e(v?"<textarea></textarea>":'<input type="text"/>').on("keyup text",function(){v?(this.style.height="1px",this.style.height=this.scrollHeight+"px"):s&&(this.style.width=s+"px",this.scrollWidth>s&&(this.style.width=this.scrollWidth+10+"px"))}).on("keydown",function(t){t.stopImmediatePropagation(),t.keyCode==e.ui.keyCode.ESCAPE?w.reject():t.keyCode==e.ui.keyCode.ENTER&&(t.preventDefault(),k.trigger("blur"))}).on("mousedown click dblclick",function(e){e.stopPropagation(),"dblclick"===e.type&&e.preventDefault()}).on("blur",x).on("dragenter dragleave dragover drop",function(e){e.stopPropagation()}),C=function(){var e=n.splitFileExtention(k.val())[0];S||!n.UA.Mobile||n.UA.iOS||(A.on("click close",j).elfinderoverlay("show"),T.css("z-index",A.css("z-index")+1)),!n.enabled()&&n.enable(),S&&(S=!1,k.on("blur",x)),k.trigger("focus").trigger("select"),k[0].setSelectionRange&&k[0].setSelectionRange(0,e.length)},z=m?g.contents().filter(function(){return 3==this.nodeType&&e(this).parent().attr("id")===n.navHash2Id(d.hash)}):g.find(p),T=z.parent(),A=n.getUI("overlay"),j=function(e){A.is(":hidden")||T.css("z-index",""),S||(w.reject(),e&&(e.stopPropagation(),e.preventDefault()))},O=function(){g.trigger("scrolltoview",{blink:!1})},S=!1;return T.addClass("ui-front").css("position","relative").on("unselect."+n.namespace,b),n.bind("resize",O),m?z.replaceWith(k.val(d.name)):(v?z.css("max-height","none"):m||(s=T.width(),T.width(s-15).parent("td").css("overflow","visible")),z.empty().append(k.val(d.name))),c>1&&n.api<=2.103?w.reject():d&&z.length?!d.locked||n.isRoot(d)&&i?(n.one("select",function(){k.parent().length&&d&&e.inArray(d.hash,n.selected())===-1&&k.trigger("blur")}),k.trigger("keyup"),C(),w):w.reject(["errLocked",d.name]):w.reject("errCmdParams",this.title)},n.bind("select contextmenucreate closecontextmenu",function(e){var i,a=(e.data?e.data.selected||e.data.targets:null)||n.selected();a&&1===a.length&&(i=n.file(a[0]))&&n.isRoot(i)?t.title=n.i18n("kindAlias")+" ("+n.i18n("preference")+")":t.title=n.i18n("cmdrename"),"closecontextmenu"!==e.type?t.update(void 0,t.title):requestAnimationFrame(function(){t.update(void 0,t.title)})}).remove(function(t){var i;t.data&&t.data.removed&&(i=n.storage("rootNames"))&&(e.each(t.data.removed,function(e,t){i[t]&&delete i[t]}),n.storage("rootNames",i))})},i.prototype.commands.resize=function(){"use strict";var t=this.fm,n=0,i=function(t,n,i){var a=[{x:t/2,y:n/2},{x:-t/2,y:n/2},{x:-t/2,y:-n/2},{x:t/2,y:-n/2}],o=[],r={x:Number.MAX_VALUE,y:Number.MAX_VALUE},s={x:Number.MIN_VALUE,y:Number.MIN_VALUE};return e.each(a,function(e,t){o.push({x:t.x*Math.cos(i)-t.y*Math.sin(i),y:t.x*Math.sin(i)+t.y*Math.cos(i)})}),e.each(o,function(e,t){r.x=Math.min(r.x,t.x),r.y=Math.min(r.y,t.y),s.x=Math.max(s.x,t.x),s.y=Math.max(s.y,t.y)}),{width:s.x-r.x,height:s.y-r.y}};this.updateOnSelect=!1,this.getstate=function(){var e=t.selectedFiles();return 1==e.length&&e[0].read&&e[0].write&&e[0].mime.indexOf("image/")!==-1?0:-1},this.resizeRequest=function(n,i,a){var o=i||t.file(n.target),r=(o?o.tmb:null,t.isCommandEnabled("resize",n.target));if(r&&(!o||o&&o.read&&o.write&&o.mime.indexOf("image/")!==-1))return t.request({data:Object.assign(n,{cmd:"resize"}),notify:{type:"resize",cnt:1}}).fail(function(e){a&&a.reject(e)}).done(function(){n.quality&&t.storage("jpgQuality",n.quality===t.option("jpgQuality")?null:n.quality),a&&a.resolve()});var s;return s=o?o.mime.indexOf("image/")===-1?["errResize",o.name,"errUsupportType"]:["errResize",o.name,"errPerm"]:["errResize",n.target,"errPerm"],a?a.reject(s):t.error(s),e.Deferred().reject(s)},this.exec=function(a){var o,r,s,l,c=this,d=this.files(a),p=e.Deferred(),u=t.api>1,h=this.options,f=650,m=t.getUI(),g=e().controlgroup?"controlgroup":"buttonset",v="undefined"==typeof h.grid8px||"disable"!==h.grid8px,b=Array.isArray(h.presetSize)?h.presetSize:[],y="elfinder-dialog-active",w=t.res("class","editing"),x=function(a,o,r){var d,x,k,C,z,T="image/jpeg"===a.mime,A=e('<div class="elfinder-resize-container"></div>'),j='<input type="number" class="ui-corner-all"/>',O='<div class="elfinder-resize-row"></div>',S='<div class="elfinder-resize-label"></div>',I=null,M=!1,F=function(){M=!0},E=function(){M&&(M=!1,D.trigger("change"))},D=e('<div class="elfinder-resize-control"></div>').on("focus","input[type=text],input[type=number]",function(){e(this).trigger("select")}).on("change",function(){I&&cancelAnimationFrame(I),I=requestAnimationFrame(function(){var e,n,a,o,r,s,c,d,p,u,h,f;at&&!M&&(a=at.data("canvas"))&&(e=D.children("div.elfinder-resize-control-panel:visible"),n=e.find("input.elfinder-resize-quality"),n.is(":visible")&&(o=at.data("ctx"),r=at.get(0),e.hasClass("elfinder-resize-uiresize")?(d=a.width=X.val(),p=a.height=J.val(),o.drawImage(r,0,0,d,p)):e.hasClass("elfinder-resize-uicrop")?(s=G.val(),c=Y.val(),d=Q.val(),p=Z.val(),a.width=d,a.height=p,o.drawImage(r,s,c,d,p,0,0,d,p)):(u=te.val(),h=te.val()*Math.PI/180,f=i(fe,me,h),d=a.width=f.width,p=a.height=f.height,o.save(),u%90!==0&&(o.fillStyle=de.val()||"#FFF",o.fillRect(0,0,d,p)),o.translate(d/2,p/2),o.rotate(h),o.drawImage(r,-r.width/2,-r.height/2,fe,me),o.restore()),a.toBlob(function(e){e&&(l=e.size,n.next("span").text(" ("+t.formatSize(e.size)+")"))},"image/jpeg",Math.max(Math.min(n.val(),100),1)/100)))})}).on("mouseup","input",function(t){e(t.target).trigger("change")}),U=e('<div class="elfinder-resize-preview"></div>').on("touchmove",function(t){e(t.target).hasClass("touch-punch")&&(t.stopPropagation(),t.preventDefault())}),P=e('<div class="elfinder-resize-loading">'+t.i18n("ntfloadimg")+"</div>"),R=e('<div class="elfinder-resize-handle touch-punch"></div>'),q=e('<div class="elfinder-resize-handle touch-punch"></div>'),H=e('<div class="elfinder-resize-uiresize elfinder-resize-control-panel"></div>'),_=e('<div class="elfinder-resize-uicrop elfinder-resize-control-panel"></div>'),N=e('<div class="elfinder-resize-rotate elfinder-resize-control-panel"></div>'),L=e("<button></button>").attr("title",t.i18n("rotate-cw")).append(e('<span class="elfinder-button-icon elfinder-button-icon-rotate-l"></span>')),W=e("<button></button>").attr("title",t.i18n("rotate-ccw")).append(e('<span class="elfinder-button-icon elfinder-button-icon-rotate-r"></span>')),B=e("<span ></span>"),$=e('<button class="elfinder-resize-reset">').text(t.i18n("reset")).on("click",function(){We()}).button({icons:{primary:"ui-icon-arrowrefresh-1-n"},text:!1}),V=e('<div class="elfinder-resize-type"></div>').append('<input type="radio" name="type" id="'+o+'-resize" value="resize" checked="checked" /><label for="'+o+'-resize">'+t.i18n("resize")+"</label>",'<input class="api2" type="radio" name="type" id="'+o+'-crop" value="crop" /><label class="api2" for="'+o+'-crop">'+t.i18n("crop")+"</label>",'<input class="api2" type="radio" name="type" id="'+o+'-rotate" value="rotate" /><label class="api2" for="'+o+'-rotate">'+t.i18n("rotate")+"</label>"),K="resize",X=e(j).on("change",function(){var e=Le(parseInt(X.val())),t=Le(ge?e/ue:parseInt(J.val()));e>0&&t>0&&(Be.updateView(e,t),X.val(e),J.val(t))}).addClass("elfinder-focus"),J=e(j).on("change",function(){var e=Le(parseInt(J.val())),t=Le(ge?e*ue:parseInt(X.val()));t>0&&e>0&&(Be.updateView(t,e),X.val(t),J.val(e))}),G=e(j).on("change",function(){$e.updateView()}),Y=e(j).on("change",function(){$e.updateView()}),Q=e(j).on("change",function(){$e.updateView("w")}),Z=e(j).on("change",function(){$e.updateView("h")}),ee=T&&u?e(j).val(t.storage("jpgQuality")>0?t.storage("jpgQuality"):t.option("jpgQuality")).addClass("elfinder-resize-quality").attr("min","1").attr("max","100").attr("title","1 - 100").on("blur",function(){var e=Math.min(100,Math.max(1,parseInt(this.value)));D.find("input.elfinder-resize-quality").val(e)}):null,te=e('<input type="number" class="ui-corner-all" maxlength="3" value="0" />').on("change",function(){Ve.update()}),ne=e('<div class="elfinder-resize-rotate-slider touch-punch"></div>').slider({min:0,max:360,value:te.val(),animate:!0,start:F,stop:E,change:function(e,t){t.value!=ne.slider("value")&&Ve.update(t.value)},slide:function(e,t){Ve.update(t.value,!1)}}).find(".ui-slider-handle").addClass("elfinder-tabstop").off("keydown").on("keydown",function(t){t.keyCode!=e.ui.keyCode.LEFT&&t.keyCode!=e.ui.keyCode.RIGHT||(t.stopPropagation(),t.preventDefault(),Ve.update(Number(te.val())+(t.keyCode==e.ui.keyCode.RIGHT?1:-1),!1))}).end(),ie={},ae=function(e){var t,n,i,a,o,r,s;try{t=ie[Math.round(e.offsetX)][Math.round(e.offsetY)]}catch(e){}t&&(n=t[0],i=t[1],a=t[2],o=t[3],r=t[4],s=t[5],re(n,i,a,"click"===e.type))},oe=function(t){re(e(this).css("backgroundColor"),"","","click"===t.type)},re=function(t,n,i,a){var o,r,s;"string"==typeof t&&(n="",t&&(o=e("<span>").css("backgroundColor",t).css("backgroundColor"))&&(r=o.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i))&&(t=Number(r[1]),n=Number(r[2]),i=Number(r[3]))),s=""===n?t:"#"+se(t,n,i),de.val(s).css({backgroundColor:s,backgroundImage:"none",color:t+n+i<384?"#fff":"#000"}),U.css("backgroundColor",s),a&&(Ne.off(".picker").removeClass("elfinder-resize-picking"),pe.off(".picker").removeClass("elfinder-resize-picking"))},se=function(t,n,i){return e.map([t,n,i],function(e){return("0"+parseInt(e).toString(16)).slice(-2)}).join("")},le=e("<button>").text(t.i18n("colorPicker")).on("click",function(){Ne.on("mousemove.picker click.picker",ae).addClass("elfinder-resize-picking"),pe.on("mousemove.picker click.picker","span",oe).addClass("elfinder-resize-picking")}).button({icons:{primary:"ui-icon-pin-s"},text:!1}),ce=e("<button>").text(t.i18n("reset")).on("click",function(){re("","","",!0)}).button({icons:{primary:"ui-icon-arrowrefresh-1-n"},text:!1}),de=e('<input class="ui-corner-all elfinder-resize-bg" type="text">').on("focus",function(){e(this).attr("style","")}).on("blur",function(){re(e(this).val())}),pe=e('<div class="elfinder-resize-pallet">').on("click","span",function(){re(e(this).css("backgroundColor"))}),ue=1,he=1,fe=0,me=0,ge=!0,ve=!1,be=0,ye=0,we=0,xe=0,ke=0,Ce=!!T&&v,ze=e("<button>").html(t.i18n("aspectRatio")).on("click",function(){ge=!ge,ze.button("option",{icons:{primary:ge?"ui-icon-locked":"ui-icon-unlocked"}}),Be.fixHeight(),R.resizable("option","aspectRatio",ge).data("uiResizable")._aspectRatio=ge}).button({icons:{primary:ge?"ui-icon-locked":"ui-icon-unlocked"},text:!1}),Te=e("<button>").html(t.i18n("aspectRatio")).on("click",function(){ve=!ve,Te.button("option",{icons:{primary:ve?"ui-icon-locked":"ui-icon-unlocked"}}),q.resizable("option","aspectRatio",ve).data("uiResizable")._aspectRatio=ve}).button({icons:{primary:ve?"ui-icon-locked":"ui-icon-unlocked"},text:!1}),Ae=e("<button>").html(t.i18n(Ce?"enabled":"disabled")).toggleClass("ui-state-active",Ce).on("click",function(){Ce=!Ce,Ae.html(t.i18n(Ce?"enabled":"disabled")).toggleClass("ui-state-active",Ce),je()}).button(),je=function(){var t=Ce?8:1;e.each([X,J,Q,Z,G,Y],function(){this.attr("step",t)}),Ce&&(X.val(Le(X.val())),J.val(Le(J.val())),Q.val(Le(Q.val())),Z.val(Le(Z.val())),G.val(Le(G.val())),Y.val(Le(Y.val())),H.is(":visible")?Be.updateView(X.val(),J.val()):_.is(":visible")&&$e.updateView())},Oe=function(){var n,i=function(){de.parent().hide(),pe.hide()};n=Math.min(be,ye)/Math.sqrt(Math.pow(fe,2)+Math.pow(me,2)),we=Math.ceil(fe*n),xe=Math.ceil(me*n),Ne.width(we).height(xe).css("margin-top",(ye-xe)/2+"px").css("margin-left",(be-we)/2+"px"),Ne.is(":visible")&&de.is(":visible")&&("image/png"!==a.mime?(U.css("backgroundColor",de.val()),d=e("<img>"),t.isCORS&&d.attr("crossorigin","use-credentials"),d.on("load",function(){x&&x.width!==we&&Ie()}).on("error",i).attr("src",it)):i())},Se=function(){Be.updateView(fe,me),Oe(),qe.width(Re.width()).height(Re.height()),He.width(Re.width()).height(Re.height()),$e.updateView(),ot()},Ie=function(){if(k){var t,n,i,a,o,r,s,l,c,p,u,h,f,m,g,v,b,y,w,C={},z=[],T=function(e,t,n){var i,a,o,r=Math.max(Math.max(e,t),n),s=Math.min(Math.min(e,t),n);return r===s?i=0:e===r?i=((t-n)/(r-s)*60+360)%360:t===r?i=(n-e)/(r-s)*60+120:n===r&&(i=(e-t)/(r-s)*60+240),a=(r-s)/r,o=(.3*e+.59*t+.11*n)/255,[i,a,o,"hsl"]},A=function(e){return 8*Math.round(e/8)};e:try{n=x.width=Ne.width(),i=x.height=Ne.height(),f=n/fe,k.scale(f,f),k.drawImage(d.get(0),0,0),h=k.getImageData(0,0,n,i).data,m=.1*n,g=.9*n,v=.1*i,b=.9*i;for(var j=0;j<i-1;j++)for(var O=0;O<n-1;O++){if(t=4*O+j*n*4,a=h[t],o=h[t+1],r=h[t+2],s=h[t+3],255!==s){de.parent().hide(),pe.hide();break e}p=T(a,o,r),u=Math.round(p[0]),l=Math.round(100*p[1]),c=Math.round(100*p[2]),ie[O]||(ie[O]={}),ie[O][j]=[a,o,r,u,l,c],(O<m||O>g)&&(j<v||j>b)&&(y=A(a)+","+A(o)+","+A(r),C[y]?++C[y]:C[y]=1)}pe.children(":first").length||(w=1,e.each(C,function(e,t){z.push({c:e,v:t})}),e.each(z.sort(function(e,t){return e.v>t.v?-1:1}),function(){return!(this.v<2||w>10)&&(pe.append(e('<span style="width:20px;height:20px;display:inline-block;background-color:rgb('+this.c+');">')),void++w)}))}catch(S){le.hide(),pe.hide()}}},Me=function(){try{x=document.createElement("canvas"),k=x.getContext("2d")}catch(e){le.hide(),pe.hide()}},Fe=function(){st.on("click","span.elfinder-resize-preset",function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1],a=fe/me;t.data("s",[i,n]).text(i+"x"+n),fe>n||me>i?fe<=n?n=Le(i*a):me<=i?i=Le(n/a):fe-n>me-i?i=Le(n/a):n=Le(i*a):(n=fe,i=me),X.val(n),J.val(i),Be.updateView(n,i),ot()}),lt.on("click","span.elfinder-resize-preset",function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1],a=G.val(),o=Y.val();t.data("s",[i,n]).text(i+"x"+n),fe>=n&&me>=i&&(fe-n-a<0&&(a=fe-n),me-i-o<0&&(o=me-i),G.val(a),Y.val(o),Q.val(n),Z.val(i),$e.updateView(),ot())}),lt.children("span.elfinder-resize-preset").each(function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1];t[fe>=n&&me>=i?"show":"hide"]()})},Ee=null,De=!1,Ue=function(e){var n=t.file(a.hash);n.width=e[0],n.height=e[1]},Pe=function(){var i,o,r;De||(De=!0,Ee&&Ee.state&&"pending"===Ee.state()&&Ee.reject(),t.api>=2.103?0===n&&t.request({data:{cmd:"resize",target:a.hash,degree:0,mode:"rotate"},preventDefault:!0}).done(function(e){n=e.losslessRotate?1:-1,1===n&&te.val()%90===0&&N.children("div.elfinder-resize-quality").hide()}).fail(function(){n=-1}):n=-1,i=Re.get(0),o=a.width&&a.height?{w:a.width,h:a.height}:i.naturalWidth?null:{w:Re.width(),h:Re.height()},o&&Re.removeAttr("width").removeAttr("height"),fe=a.width||i.naturalWidth||i.width||Re.width(),me=a.height||i.naturalHeight||i.height||Re.height(),a.width&&a.height||Ue([fe,me]),o&&Re.width(o.w).height(o.h),C.show(),r=me/fe,r<1&&U.height()>U.width()*r&&U.height(U.width()*r),U.height()>Re.height()+20&&U.height(Re.height()+20),ye=U.height()-(R.outerHeight()-R.height()),P.remove(),ue=fe/me,R.append(Re.show()).show(),X.val(fe),J.val(me),Me(),Fe(),Se(),V[g]("enable"),D.find("input,select").prop("disabled",!1).filter(":text").on("keydown",function(n){var i;if(n.keyCode==e.ui.keyCode.ENTER)return n.stopPropagation(),n.preventDefault(),i={title:e("input:checked",V).val(),text:"confirmReq",accept:{label:"btnApply",callback:function(){Ye()}},cancel:{label:"btnCancel",callback:function(){e(this).trigger("focus")}}},ct&&(i.buttons=[{label:"btnSaveAs",callback:function(){requestAnimationFrame(Qe)}}]),void t.confirm(i)}).on("keyup",function(){var t=e(this);t.hasClass("elfinder-resize-bg")||requestAnimationFrame(function(){t.val(t.val().replace(/[^0-9]/g,""))})}).filter(":first"),je(),!t.UA.Mobile&&X.trigger("focus"),Ke())},Re=e("<img/>").on("load",Pe).on("error",function(){P.html(t.i18n("ntfsmth")).css("background","transparent")}),qe=e("<div></div>"),He=e("<img/>"),_e=e("<div></div>"),Ne=e('<img class="elfinder-resize-imgrotate" />'),Le=function(e,t){return e=Ce?8*Math.round(e/8):Math.round(e),e=Math.max(0,e),t&&e>t&&(e=Ce?8*Math.floor(t/8):t),e},We=function(){X.val(fe),J.val(me),Be.updateView(fe,me),G.val(0),Y.val(0),Q.val(fe),Z.val(me),$e.updateView(),ot()},Be={update:function(){X.val(Le(Re.width()/he)),J.val(Le(Re.height()/he)),ot()},updateView:function(e,t){e>be||t>ye?e/be>t/ye?(he=be/e,Re.width(be).height(Le(t*he))):(he=ye/t,Re.height(ye).width(Le(e*he))):Re.width(Le(e)).height(Le(t)),he=Re.width()/e,B.text("1 : "+(1/he).toFixed(2)),Be.updateHandle()},updateHandle:function(){R.width(Re.width()).height(Re.height())},fixHeight:function(){var e,t;ge&&(e=X.val(),t=Le(e/ue),Be.updateView(e,t),J.val(t))}},$e={update:function(e){G.val(Le((q.data("x")||q.position().left)/he,fe)),Y.val(Le((q.data("y")||q.position().top)/he,me)),"xy"!==e&&(Q.val(Le((q.data("w")||q.width())/he,fe-G.val())),Z.val(Le((q.data("h")||q.height())/he,me-Y.val()))),ot()},updateView:function(e){var t,n,i,a,o;G.val(Le(G.val(),fe-(Ce?8:1))),Y.val(Le(Y.val(),me-(Ce?8:1))),Q.val(Le(Q.val(),fe-G.val())),Z.val(Le(Z.val(),me-Y.val())),ve&&(t=_e.width()/_e.height(),"w"===e?Z.val(Le(parseInt(Q.val())/t)):"h"===e&&Q.val(Le(parseInt(Z.val())*t))),n=Math.round(parseInt(G.val())*he),i=Math.round(parseInt(Y.val())*he),"xy"!==e?(a=Math.round(parseInt(Q.val())*he),o=Math.round(parseInt(Z.val())*he)):(a=q.data("w"),o=q.data("h")),q.data({x:n,y:i,w:a,h:o}).width(a).height(o).css({left:n,top:i}),_e.width(a).height(o)},resize_update:function(e,t){q.data({x:t.position.left,y:t.position.top,w:t.size.width,h:t.size.height}),$e.update(),$e.updateView()},drag_update:function(e,t){q.data({x:t.position.left,y:t.position.top}),$e.update("xy")}},Ve={mouseStartAngle:0,imageStartAngle:0,imageBeingRotated:!1,setQuality:function(){N.children("div.elfinder-resize-quality")[n>0&&te.val()%90===0?"hide":"show"]()},update:function(e,n){"undefined"==typeof e&&(ke=e=parseInt(te.val())),"undefined"==typeof n&&(n=!0),!n||t.UA.Opera||t.UA.ltIE8?Ne.rotate(e):Ne.animate({rotate:e+(t.UA.Chrome?"":"deg")}),e%=360,e<0&&(e+=360),te.val(parseInt(e)),ne.slider("value",te.val()),Ve.setQuality()},execute:function(e){if(Ve.imageBeingRotated){var t=Ve.getCenter(Ne),n=e.originalEvent.touches?e.originalEvent.touches[0]:e,i=n.pageX-t[0],a=n.pageY-t[1],o=Math.atan2(a,i),r=o-Ve.mouseStartAngle+Ve.imageStartAngle;return r=Math.round(180*parseFloat(r)/Math.PI),e.shiftKey&&(r=15*Math.round((r+6)/15)),Ne.rotate(r),r%=360,r<0&&(r+=360),te.val(r),ne.slider("value",te.val()),Ve.setQuality(),!1}},start:function(t){if(!Ne.hasClass("elfinder-resize-picking")){F(),Ve.imageBeingRotated=!0;var n=Ve.getCenter(Ne),i=t.originalEvent.touches?t.originalEvent.touches[0]:t,a=i.pageX-n[0],o=i.pageY-n[1];return Ve.mouseStartAngle=Math.atan2(o,a),Ve.imageStartAngle=parseFloat(Ne.rotate())*Math.PI/180,e(document).on("mousemove",Ve.execute),Ne.on("touchmove",Ve.execute),!1}},stop:function(t){if(Ve.imageBeingRotated)return e(document).off("mousemove",Ve.execute),Ne.off("touchmove",Ve.execute),requestAnimationFrame(function(){Ve.imageBeingRotated=!1}),E(),!1},getCenter:function(e){var t=Ne.rotate();Ne.rotate(0);var n=Ne.offset(),i=n.left+Ne.width()/2,a=n.top+Ne.height()/2;return Ne.rotate(t),Array(i,a)}},Ke=function(e){e?(R.filter(":ui-resizable").resizable("destroy"),R.hide()):(R.show(),R.resizable({alsoResize:Re,aspectRatio:ge,resize:Be.update,start:F,stop:function(e){Be.fixHeight,Be.updateView(X.val(),J.val()),E()}}),rt())},Xe=function(e){e?(q.filter(":ui-resizable").resizable("destroy").filter(":ui-draggable").draggable("destroy"),qe.hide()):(qe.show(),q.resizable({containment:qe,aspectRatio:ve,resize:$e.resize_update,start:F,stop:E,handles:"all"}).draggable({handle:_e,containment:He,drag:$e.drag_update,start:F,stop:function(){$e.updateView("xy"),E()}}),rt(),$e.update())},Je=function(e){e?Ne.hide():(Ne.show(),rt())},Ge=function(){var e,n,i,a,o,r,c="";if("resize"==K)e=parseInt(X.val())||0,n=parseInt(J.val())||0;else if("crop"==K)e=parseInt(Q.val())||0,n=parseInt(Z.val())||0,i=parseInt(G.val())||0,a=parseInt(Y.val())||0;else if("rotate"==K){if(e=fe,n=me,o=parseInt(te.val())||0,o<0||o>360)return t.error("Invalid rotate degree"),!1;if(0==o||360==o)return t.error("errResizeNoChange"),!1;c=de.val()}if(r=ee?parseInt(ee.val()):0,"rotate"!=K){if(e<=0||n<=0)return t.error("Invalid image size"),!1;if(e==fe&&n==me&&parseInt(s/1e3)===parseInt(l/1e3))return t.error("errResizeNoChange"),!1}return{w:e,h:n,x:i,y:a,d:o,q:r,b:c}},Ye=function(){var e;(e=Ge())&&(A.elfinderdialog("close"),c.resizeRequest({target:a.hash,width:e.w,height:e.h,x:e.x,y:e.y,degree:e.d,quality:e.q,bg:e.b,mode:K},a,p))},Qe=function(){var n,i=function(){n.addClass(w).fadeIn(function(){z.addClass(y)}),t.disable()},o=function(){c.mime=a.mime,c.prefix=a.name.replace(/ \d+(\.[^.]+)?$/,"$1"),c.requestCmd="mkfile",c.nextAction={},c.data={target:a.phash},e.proxy(t.res("mixin","make"),c)().done(function(o){var r,s;o.added&&o.added.length?(r=o.added[0].hash,s=t.api<2.1032?t.url(a.hash,{async:!0,temporary:!0}):null,e.when(s).done(function(e){t.request({options:{type:"post"},data:{cmd:"put",target:r,encoding:s?"scheme":"hash",content:s?t.convAbsUrl(e):a.hash},notify:{type:"copy",cnt:1},syncOnFail:!0}).fail(i).done(function(e){e=t.normalize(e),t.updateCache(e),a=t.file(r),e.changed&&e.changed.length&&t.change(e),z.show().find(".elfinder-dialog-title").html(t.escape(a.name)),Ye(),n.fadeIn()})}).fail(i)):i()}).fail(i).always(function(){delete c.mime,delete c.prefix,delete c.nextAction,delete c.data}),t.trigger("unselectfiles",{files:[a.hash]})},r=null;Ge()&&(n=m.children("."+c.dialogClass+":visible").removeClass(w).fadeOut(),z.removeClass(y),t.enable(),t.searchStatus.state<2&&a.phash!==t.cwd().hash&&(r=t.exec("open",[a.phash],{thash:a.phash})),e.when([r]).done(function(){r?t.one("cwdrender",o):o()}).fail(i))},Ze={},et="elfinder-resize-handle-hline",tt="elfinder-resize-handle-vline",nt="elfinder-resize-handle-point",it=r,at=ee?e("<img>").attr("crossorigin",t.isCORS?"use-credentials":"").attr("src",it).on("load",function(){try{var e=document.createElement("canvas");at.data("canvas",e).data("ctx",e.getContext("2d")),ot()}catch(t){at.removeData("canvas").removeData("ctx")}}):null,ot=function(){D.find("input.elfinder-resize-quality:visible").trigger("change")},rt=function(n){if(!z.hasClass("elfinder-dialog-minimized")&&!z.is(":hidden")){st.hide(),lt.hide();var i,a,o,r=t.options.dialogContained?m:e(window),s=r.height(),l=r.width(),c="auto",d=!0;z.width(Math.min(f,l-30)),U.attr("style",""),fe&&me&&(be=U.width()-(R.outerWidth()-R.width()),ye=U.height()-(R.outerHeight()-R.height()),Be.updateView(fe,me)),a=A.find("div.elfinder-resize-control").width(),o=U.width(),i=A.width()-20,o>i?(U.width(i),d=!1):i-o<a&&(l>s?U.width(i-a-20):(U.css({"float":"none",marginLeft:"auto",marginRight:"auto"}),d=!1)),d&&(c=a),be=U.width()-(R.outerWidth()-R.width()),m.hasClass("elfinder-fullscreen")?z.height()>s&&(s-=2,U.height(s-z.height()+U.height()),z.css("top",0-m.offset().top)):(s-=30,U.height()>s&&U.height(s)),ye=U.height()-(R.outerHeight()-R.height()),fe&&me&&Se(),Re.height()&&U.height()>Re.height()+20&&(U.height(Re.height()+20),ye=U.height()-(R.outerHeight()-R.height()),Oe()),st.css("width",c).show(),lt.css("width",c).show(),lt.children("span.elfinder-resize-preset:visible").length||lt.hide(),A.elfinderdialog("posInit")}},st=function(){var n,i=e('<fieldset class="elfinder-resize-preset-container">').append(e("<legend>").html(t.i18n("presets"))).css("box-sizing","border-box").hide();return e.each(b,function(t,a){2===a.length&&(n=!0,i.append(e('<span class="elfinder-resize-preset"></span>').data("s",a).text(a[0]+"x"+a[1]).button()))}),n?i:e()}(),lt=st.clone(!0),ct=t.uploadMimeCheck(a.mime,a.phash);s=l=a.size,H.append(e(O).append(e(S).text(t.i18n("width")),X),e(O).append(e(S).text(t.i18n("height")),J,e('<div class="elfinder-resize-whctrls">').append(ze,$)),ee?e(O).append(e(S).text(t.i18n("quality")),ee,e("<span></span>")):e(),T?e(O).append(e(S).text(t.i18n("8pxgrid")).addClass("elfinder-resize-grid8"),Ae):e(),e(O).append(e(S).text(t.i18n("scale")),B),e(O).append(st)),u&&(_.append(e(O).append(e(S).text("X"),G),e(O).append(e(S).text("Y")).append(Y),e(O).append(e(S).text(t.i18n("width")),Q),e(O).append(e(S).text(t.i18n("height")),Z,e('<div class="elfinder-resize-whctrls">').append(Te,$.clone(!0))),ee?e(O).append(e(S).text(t.i18n("quality")),ee.clone(!0),e("<span></span>")):e(),T?e(O).append(e(S).text(t.i18n("8pxgrid")).addClass("elfinder-resize-grid8")):e(),e(O).append(lt)),N.append(e(O).addClass("elfinder-resize-degree").append(e(S).text(t.i18n("rotate")),te,e("<span></span>").text(t.i18n("degree")),e("<div></div>").append(L,W)[g]()),e(O).css("height","20px").append(ne),ee?e(O)[n<1?"show":"hide"]().addClass("elfinder-resize-quality").append(e(S).text(t.i18n("quality")),ee.clone(!0),e("<span></span>")):e(),e(O).append(e(S).text(t.i18n("bgcolor")),de,le,ce),e(O).css("height","20px").append(pe)),L.on("click",function(){ke-=90,Ve.update(ke)}),W.on("click",function(){ke+=90,Ve.update(ke)})),A.append(V).on("resize",function(e){e.stopPropagation();
}),u?D.append(H,_.hide(),N.hide()):D.append(H),R.append('<div class="'+et+" "+et+'-top"></div>','<div class="'+et+" "+et+'-bottom"></div>','<div class="'+tt+" "+tt+'-left"></div>','<div class="'+tt+" "+tt+'-right"></div>','<div class="'+nt+" "+nt+'-e"></div>','<div class="'+nt+" "+nt+'-se"></div>','<div class="'+nt+" "+nt+'-s"></div>'),U.append(P).append(R.hide()).append(Re.hide()),u&&(q.css("position","absolute").append('<div class="'+et+" "+et+'-top"></div>','<div class="'+et+" "+et+'-bottom"></div>','<div class="'+tt+" "+tt+'-left"></div>','<div class="'+tt+" "+tt+'-right"></div>','<div class="'+nt+" "+nt+'-n"></div>','<div class="'+nt+" "+nt+'-e"></div>','<div class="'+nt+" "+nt+'-s"></div>','<div class="'+nt+" "+nt+'-w"></div>','<div class="'+nt+" "+nt+'-ne"></div>','<div class="'+nt+" "+nt+'-se"></div>','<div class="'+nt+" "+nt+'-sw"></div>','<div class="'+nt+" "+nt+'-nw"></div>'),U.append(qe.css("position","absolute").hide().append(He,q.append(_e))),U.append(Ne.hide())),U.css("overflow","hidden"),A.append(U,D),Ze[t.i18n("btnApply")]=Ye,ct&&(Ze[t.i18n("btnSaveAs")]=function(){requestAnimationFrame(Qe)}),Ze[t.i18n("btnCancel")]=function(){A.elfinderdialog("close")},A.find("input,button").addClass("elfinder-tabstop"),z=c.fmDialog(A,{title:t.escape(a.name),width:f,resizable:!1,buttons:Ze,open:function(){var e=function(e){Ee=t.request({data:{cmd:"dim",target:a.hash,substitute:i?400:""},preventDefault:!0}).done(function(e){if(!e.url&&n)A.elfinderdialog("close"),t.error(["errOpen",a.name]);else if(e.dim){var i=e.dim.split("x");return a.width=i[0],a.height=i[1],Ue(i),e.url&&(Re.attr("src",e.url),He.attr("src",e.url),Ne.attr("src",e.url)),Pe()}})},n=!{"image/jpeg":!0,"image/png":!0,"image/gif":!0}[a.mime],i=!(!t.option("substituteImg",a.hash)||!(n||a.size>h.dimSubImgSize)),o=!(!a.width||!a.height);if(C=z.find(".ui-dialog-titlebar .elfinder-titlebar-minimize").hide(),t.bind("resize",rt),Re.attr("src",r).one("error.dimreq",function(){e(!0)}),He.attr("src",r),Ne.attr("src",r),u&&(Ne.on("mousedown touchstart",Ve.start).on("touchend",Ve.stop),z.on("mouseup",Ve.stop)),o&&!i)return Pe();if(a.size>(h.getDimThreshold||0))Re.off("error.dimreq"),e();else if(o)return Pe()},close:function(){u&&(Ne.off("mousedown touchstart",Ve.start).off("touchend",Ve.stop),e(document).off("mouseup",Ve.stop)),t.unbind("resize",rt),e(this).elfinderdialog("destroy")},resize:function(e,t){t&&"off"===t.minimize&&rt()}}).attr("id",o).closest(".ui-dialog").addClass(w),V[g]()[g]("disable").find("input").on("change",function(){K=e(this).val(),We(),Ke(!0),Xe(!0),Je(!0),"resize"==K?(H.show(),N.hide(),_.hide(),Ke(),T&&Ae.insertAfter(H.find(".elfinder-resize-grid8"))):"crop"==K?(N.hide(),H.hide(),_.show(),Xe(),T&&Ae.insertAfter(_.find(".elfinder-resize-grid8"))):"rotate"==K&&(H.hide(),_.hide(),N.show(),Je())}),t.UA.ltIE8&&e(".elfinder-dialog").css("filter",""),_e.css({opacity:.2,"background-color":"#fff",position:"absolute"}),q.css("cursor","move"),q.find(".elfinder-resize-handle-point").css({"background-color":"#fff",opacity:.5,"border-color":"#000"}),u||V.find(".api2").remove(),D.find("input,select").prop("disabled",!0),D.find("input.elfinder-resize-quality").next("span").addClass("elfinder-resize-jpgsize").attr("title",t.i18n("roughFileSize"))};return d.length&&d[0].mime.indexOf("image/")!==-1?(o="resize-"+t.namespace+"-"+d[0].hash,r=m.find("#"+o),r.length?(r.elfinderdialog("toTop"),p.resolve()):(t.openUrl(d[0].hash,"sameorigin",function(e){x(d[0],o,e)}),p)):p.reject()}},function(e){var t=function(e,t){var n=0;for(n in t)if("undefined"!=typeof e[t[n]])return t[n];return e[t[n]]="",t[n]};if(e.cssHooks.rotate={get:function(t,n,i){return e(t).rotate()},set:function(t,n){return e(t).rotate(n),n}},e.cssHooks.transform={get:function(e,n,i){var a=t(e.style,["WebkitTransform","MozTransform","OTransform","msTransform","transform"]);return e.style[a]},set:function(e,n){var i=t(e.style,["WebkitTransform","MozTransform","OTransform","msTransform","transform"]);return e.style[i]=n,n}},e.fn.rotate=function(e){var t;return"undefined"==typeof e?window.opera?(t=this.css("transform").match(/rotate\((.*?)\)/),t&&t[1]?Math.round(180*parseFloat(t[1])/Math.PI):0):(t=this.css("transform").match(/rotate\((.*?)\)/),t&&t[1]?parseInt(t[1]):0):(this.css("transform",this.css("transform").replace(/none|rotate\(.*?\)/,"")+"rotate("+parseInt(e)+"deg)"),this)},e.fx.step.rotate=function(t){0==t.state&&(t.start=e(t.elem).rotate(),t.now=t.start),e(t.elem).rotate(t.now)},"undefined"==typeof window.addEventListener&&"undefined"==typeof document.getElementsByClassName){var n=function(e){for(var t=e,n=t.offsetLeft,i=t.offsetTop;t.offsetParent&&(t=t.offsetParent,t==document.body||"static"==t.currentStyle.position);)t!=document.body&&t!=document.documentElement&&(n-=t.scrollLeft,i-=t.scrollTop),n+=t.offsetLeft,i+=t.offsetTop;return{x:n,y:i}},i=function(e){if("static"==e.currentStyle.position){var t=n(e);e.style.position="absolute",e.style.left=t.x+"px",e.style.top=t.y+"px"}},a=function(e,t){var n,a=1,o=1,r=1,s=1;if("undefined"!=typeof e.style.msTransform)return!0;i(e),n=t.match(/rotate\((.*?)\)/);var l=n&&n[1]?parseInt(n[1]):0;l%=360,l<0&&(l=360+l);var c=l*Math.PI/180,d=Math.cos(c),p=Math.sin(c);a*=d,o*=-p,r*=p,s*=d,e.style.filter=(e.style.filter||"").replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/,"")+("progid:DXImageTransform.Microsoft.Matrix(M11="+a+",M12="+o+",M21="+r+",M22="+s+",FilterType='bilinear',sizingMethod='auto expand')");var u=parseInt(e.style.width||e.width||0),h=parseInt(e.style.height||e.height||0);c=l*Math.PI/180;var f=Math.abs(Math.cos(c)),m=Math.abs(Math.sin(c)),g=(u-(u*f+h*m))/2,v=(h-(u*m+h*f))/2;return e.style.marginLeft=Math.floor(g)+"px",e.style.marginTop=Math.floor(v)+"px",!0},o=e.cssHooks.transform.set;e.cssHooks.transform.set=function(e,t){return o.apply(this,[e,t]),a(e,t),t}}}(jQuery),(i.prototype.commands.restore=function(){"use strict";var t=this,n=this.fm,i=0,a=function(t){var o,r=e.Deferred(),s=[],l=[],c=[],d=[];return r._xhrReject=function(){e.each(c,function(){this&&this.reject&&this.reject()}),o&&o._xhrReject()},e.each(t,function(e,t){"directory"===t.mime?s.push(t):l.push(t)}),s.length?(e.each(s,function(e,t){c.push(n.request({data:{cmd:"open",target:t.hash},preventDefault:!0,asNotOpen:!0})),d[e]=t.hash}),e.when.apply(e,c).fail(function(){r.reject()}).done(function(){var t=[];e.each(arguments,function(e,n){n.files&&(n.files.length?t=t.concat(n.files):t.push({hash:"fakefile_"+i++,phash:d[e],mime:"fakefile",name:"fakefile",ts:0}))}),n.cache(t),o=a(t).done(function(e){l=l.concat(e),r.resolve(l)})})):r.resolve(l),r},o=function(t,o,r,s){var l,c,d={},p=[],u=!1,h=[],f=s||{},m=+new Date;n.lockfiles({files:r}),h=e.map(o,function(e){return"directory"===e.mime?e.hash:null}),t.done(function(){h&&n.exec("rm",h,{forceRm:!0,quiet:!0})}).always(function(){n.unlockfiles({files:r})}),l=setTimeout(function(){n.notify({type:"search",id:m,cnt:1,hideCnt:!0,cancel:function(){c&&c._xhrReject(),t.reject()}})},n.notifyDelay),i=0,c=a(o).always(function(){l&&clearTimeout(l),n.notify({type:"search",id:m,cnt:-1,hideCnt:!0})}).fail(function(){t.reject("errRestore","errFileNotFound")}).done(function(i){var a=["errRestore","errFolderNotFound"],o="";i.length?(e.each(i,function(t,i){for(var a,r,s,l=i.phash;l;){if(r=n.trashes[l]){if(!d[r]){if(u)return p.push(i.hash),null;d[r]={},u=!0}s=n.path(i.hash).substr(n.path(l).length).replace(/\\/g,"/"),s=s.replace(/\/[^\/]+?$/,""),""===s&&(s="/"),d[r][s]||(d[r][s]=[]),"fakefile"===i.mime?n.updateCache({removed:[i.hash]}):d[r][s].push(i.hash),(!o||o.length>s.length)&&(o=s);break}a=n.file(l),a?l=a.phash:(l=!1,e.each(n.trashes,function(e){var t=n.file(e),a=n.path(e);if((!t.volumeid||0===i.hash.indexOf(t.volumeid))&&0===n.path(i.hash).indexOf(a))return l=e,!1}))}}),u?e.each(d,function(i,s){var l=Object.keys(s),c=l.length;n.request({data:{cmd:"mkdir",target:i,dirs:l},notify:{type:"chkdir",cnt:c},preventFail:!0}).fail(function(e){t.reject(e),n.unlockfiles({files:r})}).done(function(i){var r,l;(l=i.hashes)?(r=n.getCommand("paste"),r?n.one("mkdirdone",function(){var i=!1;e.each(s,function(e,r){l[e]&&(r.length?n.file(l[e])?(n.clipboard(r,!0),n.exec("paste",[l[e]],{_cmd:"restore",noToast:f.noToast||e!==o}).done(function(e){e&&(e.error||e.warning)&&(i=!0)}).fail(function(){i=!0}).always(function(){--c<1&&(t[i?"reject":"resolve"](),p.length&&n.exec("restore",p))})):t.reject(a):--c<1&&(t.resolve(),p.length&&n.exec("restore",p)))})}):t.reject(["errRestore","errCmdNoSupport","(paste)"])):t.reject(a)})}):t.reject(a)):(t.reject("errFileNotFound"),h&&n.exec("rm",h,{forceRm:!0,quiet:!0}))})};this.restore=o,this.linkedCmds=["copy","paste","mkdir","rm"],this.updateOnSelect=!1,this.init=function(){t=this,n=this.fm},this.getstate=function(t,i){return t=t||n.selected(),t.length&&e.grep(t,function(e){var t=n.file(e);return!(!t||t.locked||n.isRoot(t))}).length==t.length?0:-1},this.exec=function(i,a){var o=e.Deferred().fail(function(e){e&&n.error(e)}),r=t.files(i);return r.length?(e.each(r,function(e,t){return n.isRoot(t)?!o.reject(["errRestore",t.name]):t.locked?!o.reject(["errLocked",t.name]):void 0}),"pending"===o.state()&&this.restore(o,r,i,a),o):o.reject()}}).prototype={forceLoad:!0},i.prototype.commands.rm=function(){"use strict";var t=this,n=this.fm,i='<div class="ui-helper-clearfix elfinder-rm-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}<div class="elfinder-rm-desc">{desc}</div></div>',a=function(a,o,s,c,d){var p,u,h,f,m,g,v=o.length,b=n.cwd().hash,y=[],w=n.i18n("calc")+'<span class="elfinder-spinner"></span>';v>1?(f=0,e.each(s,function(e,t){if(!t.size||"unknown"==t.size||"directory"===t.mime)return f="unknown",!1;var n=parseInt(t.size);n>=0&&f>=0&&(f+=n)}),l="unknown"===f,y.push(n.i18n("size")+": "+(l?w:n.formatSize(f))),u=[e(i.replace("{class}","elfinder-cwd-icon-group").replace("{title}","<strong>"+n.i18n("items")+": "+v+"</strong>").replace("{desc}",y.join("<br>")))]):(m=s[0],h=n.tmb(m),l="directory"===m.mime,y.push(n.i18n("size")+": "+(l?w:n.formatSize(m.size))),y.push(n.i18n("modify")+": "+n.formatDate(m)),g=n.escape(m.i18||m.name).replace(/([_.])/g,"&#8203;$1"),u=[e(i.replace("{class}",n.mime2class(m.mime)).replace("{title}","<strong>"+g+"</strong>").replace("{desc}",y.join("<br>")))]),d&&(u=u.concat(d)),u.push(c?"confirmTrash":"confirmRm"),p=n.confirm({title:t.title,text:u,accept:{label:"btnRm",callback:function(){c?t.toTrash(a,o,c):r(a,o)}},cancel:{label:"btnCancel",callback:function(){n.unlockfiles({files:o}),1===o.length&&n.file(o[0]).phash!==b?n.select({selected:o}):n.selectfiles({files:o}),a.reject()}}}),h&&e("<img/>").on("load",function(){p.find(".elfinder-cwd-icon").addClass(h.className).css("background-image","url('"+h.url+"')")}).attr("src",h.url),l&&(l=n.getSize(e.map(s,function(e){return"directory"===e.mime?e.hash:null})).done(function(e){p.find("span.elfinder-spinner").parent().html(n.i18n("size")+": "+e.formated)}).fail(function(){p.find("span.elfinder-spinner").parent().html(n.i18n("size")+": "+n.i18n("unknown"))}).always(function(){l=!1}))},o=function(i,a,o){var r,s,l,c={},d=a.length,p=t.options.toTrashMaxItems,u=[],h=e.Deferred();return d>p?void t.confirm(i,a,t.files(a),null,[n.i18n("tooManyToTrash")]):(e.each(a,function(e,t){var i=n.file(t),a=n.path(t).replace(/\\/g,"/"),o=a.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/);i&&(o&&(o[1]=o[1].replace(/(^\/.*?)\/?$/,"$1"),c[o[1]]||(c[o[1]]=[]),c[o[1]].push(t)),"directory"===i.mime&&u.push(t))}),u.length?(r=n.request({data:{cmd:"size",targets:u},notify:{type:"readdir",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){var t=0;e.fileCnt&&(t+=parseInt(e.fileCnt)),e.dirCnt&&(t+=parseInt(e.dirCnt)),h[t>p?"reject":"resolve"]()}).fail(function(){h.reject()}),setTimeout(function(){var e=r&&r.xhr?r.xhr:null;e&&"pending"==e.state()&&(r.syncOnFail(!1),r.reject(),h.reject())},1e3*t.options.infoCheckWait)):h.resolve(),void h.done(function(){s=Object.keys(c),l=s.length,l?n.request({data:{cmd:"mkdir",target:o,dirs:s},notify:{type:"chkdir",cnt:l},preventFail:!0}).fail(function(e){i.reject(e),n.unlockfiles({files:a})}).done(function(t){var o,r,s,d,p=function(t,i,o){var r,s,l,c;e.each(t,function(e,t){Array.isArray(t)&&(h[e]?h[e]=h[e].concat(t):h[e]=t)}),t.sync&&(h.sync=1),t.added&&t.added.length&&(r=function(){var i=[],a=e.map(t.added,function(e){return"directory"===e.mime?e.hash:null});return e.each(t.added,function(t,n){e.inArray(n.phash,a)===-1&&i.push(n.hash)}),n.exec("restore",i,{noToast:!0})},l=function(){return n.request({data:o,notify:{type:"redo",cnt:a.length}})},h.undo?(s=h.undo,h.undo=function(){r(),s()}):h.undo=r,h.redo?(c=h.redo,h.redo=function(){l(),c()}):h.redo=l)},u=["errTrash"],h={},f=function(){return n.ui.notify.children(".elfinder-notify-trash").length};(o=t.hashes)?(s=1/l*100,d=1===l?100:5,r=setTimeout(function(){n.notify({type:"trash",cnt:1,hideCnt:!0,progress:d})},n.notifyDelay),e.each(c,function(t,c){var m,g=n.file(c[0]).phash;o[t]&&(m={cmd:"paste",dst:o[t],targets:c,cut:1},n.request({data:m,preventDefault:!0}).fail(function(e){e&&(u=u.concat(e))}).done(function(e){e=n.normalize(e),n.updateCache(e),p(e,g,m),e.warning&&(u=u.concat(e.warning),delete e.warning),e.removed&&e.removed.length&&n.remove(e),e.added&&e.added.length&&n.add(e),e.changed&&e.changed.length&&n.change(e),n.trigger("paste",e),n.trigger("pastedone"),e.sync&&n.sync()}).always(function(){var t=[],o=2;f()?n.notify({type:"trash",cnt:0,hideCnt:!0,progress:s}):d+=s,--l<1&&(r&&clearTimeout(r),f()&&n.notify({type:"trash",cnt:-1}),n.unlockfiles({files:a}),Object.keys(h).length?(u.length>1&&((h.removed||h.removed.length)&&(t=e.grep(a,function(t){return e.inArray(t,h.removed)===-1})),t.length?(u.length>o&&(o=(n.messages[u[o-1]]||"").indexOf("$")===-1?o:o+1),i.reject(),n.exec("rm",t,{addTexts:u.slice(0,o),forceRm:!0})):n.error(u)),h._noSound=!0,h.undo&&h.redo&&(h.undo={cmd:"trash",callback:h.undo},h.redo={cmd:"trash",callback:h.redo}),i.resolve(h)):i.reject(u))}))})):(i.reject("errFolderNotFound"),n.unlockfiles({files:a}))}):(i.reject(["error","The folder hierarchy to be deleting can not be determined."]),n.unlockfiles({files:a}))}).fail(function(){t.confirm(i,a,t.files(a),null,[n.i18n("tooManyToTrash")])}))},r=function(e,t,i){var a=i?{}:{type:"rm",cnt:t.length};n.request({data:{cmd:"rm",targets:t},notify:a,preventFail:!0}).fail(function(t){e.reject(t)}).done(function(t){(t.error||t.warning)&&(t.sync=!0),e.resolve(t)}).always(function(){n.unlockfiles({files:t})})},s=function(t){var i,a=null;return t&&t.length&&(t.length>1&&2===n.searchStatus.state?(i=n.file(n.root(t[0])).volumeid,e.grep(t,function(e){return 0!==e.indexOf(i)}).length||(a=n.option("trashHash",t[0]))):a=n.option("trashHash",t[0])),a},l=!1;this.confirm=a,this.toTrash=o,this.remove=r,this.syncTitleOnChange=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"delete ctrl+backspace shift+delete"}],this.value="rm",this.init=function(){var i=function(i){var a;delete t.extra,t.title=n.i18n("cmd"+t.value),t.className=t.value,t.button&&t.button.children("span.elfinder-button-icon")["trash"===t.value?"addClass":"removeClass"]("elfinder-button-icon-trash"),i&&"cwd"!==i&&(t.state>-1||"navbar"===i)&&"trash"===t.value&&(t.extra={icon:"rm",node:e("<span></span>").attr({title:n.i18n("cmdrm")}).on("ready",function(e,t){a=t.targets}).on("click touchstart",function(e){"touchstart"===e.type&&e.originalEvent.touches.length>1||(e.stopPropagation(),e.preventDefault(),n.getUI().trigger("click"),n.exec("rm",a,{_userAction:!0,forceRm:!0}))})})};t=this,n=this.fm,t.change(function(){i()}),n.bind("contextmenucreate",function(e){i(e.data.type)})},this.getstate=function(t){var i=this.hashes(t),a=function(t){var i=!0;return e.grep(t,function(e){var t;return i=!(!i||!(t=n.file(e))||t.locked||n.isRoot(t))})};return i.length&&a(i).length==i.length?0:-1},this.exec=function(i,a){var o,c=a||{},d=e.Deferred().always(function(){l&&l.state&&"pending"===l.state()&&l.reject()}).fail(function(e){e&&n.error(e)}).done(function(e){!c.quiet&&!e._noSound&&e.removed&&e.removed.length&&n.trigger("playsound",{soundFile:"rm.wav"})}),p=t.files(i),u=p.length,h=null,f=c.addTexts?c.addTexts:null,m=c.forceRm,g=c.quiet;return u?(e.each(p,function(e,t){return n.isRoot(t)?!d.reject(["errRm",t.name,"errPerm"]):t.locked?!d.reject(["errLocked",t.name]):void 0}),"pending"===d.state()&&(o=t.hashes(i),u=p.length,(m||t.event&&t.event.originalEvent&&t.event.originalEvent.shiftKey)&&(h="",t.title=n.i18n("cmdrm")),null===h&&(h=s(o)),n.lockfiles({files:o}),h&&t.options.quickTrash?t.toTrash(d,o,h):g?r(d,o,g):t.confirm(d,o,p,h,f)),d):d.reject()},n.bind("select contextmenucreate closecontextmenu",function(e){var i=(e.data?e.data.selected||e.data.targets:null)||n.selected();i&&i.length&&t.update(void 0,(i?s(i):n.option("trashHash"))?"trash":"rm")})},i.prototype.commands.search=function(){"use strict";this.title="Find files",this.options={ui:"searchbutton"},this.alwaysEnabled=!0,this.updateOnSelect=!1,this.getstate=function(){return 0},this.exec=function(t,n,i,a){var o,r,s=this.fm,l=[],c=a||"",d=s.options.onlyMimes,p=[],u=function(e){return c&&"SearchName"!==c&&"SearchMime"!==c&&(e.type=c),e};return"string"==typeof t&&t?("object"==typeof n&&(i=n.mime||"",n=n.target||""),n=n?n:"",i?(i=e.trim(i).replace(","," ").split(" "),d.length&&(i=e.map(i,function(t){return t=e.trim(t),t&&(e.inArray(t,d)!==-1||e.grep(d,function(e){return 0===t.indexOf(e)}).length)?t:null}))):i=[].concat(d),s.trigger("searchstart",u({query:t,target:n,mimes:i})),!d.length||i.length?""===n&&s.api>=2.1?(r=Object.keys(s.roots).length,e.each(s.roots,function(e,n){l.push(s.request({data:u({cmd:"search",q:t,target:n,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!(r>1)},cancel:!0,preventDone:!0}))})):(l.push(s.request({data:u({cmd:"search",q:t,target:n,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!0},cancel:!0,preventDone:!0})),""!==n&&s.api>=2.1&&Object.keys(s.leafRoots).length&&e.each(s.leafRoots,function(a,r){for(o=a;o;)n===o&&e.each(r,function(){var e=s.file(this);e&&e.volumeid&&p.push(e.volumeid),l.push(s.request({data:u({cmd:"search",q:t,target:this,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!1},cancel:!0,preventDone:!0}))}),o=(s.file(o)||{}).phash})):l=[e.Deferred().resolve({files:[]})],s.searchStatus.mixed=l.length>1&&p,e.when.apply(e,l).done(function(e){var t,n=arguments.length;if(e.warning&&s.error(e.warning),n>1)for(e.files=e.files||[],t=1;t<n;t++)arguments[t].warning&&s.error(arguments[t].warning),arguments[t].files&&e.files.push.apply(e.files,arguments[t].files);e.files&&e.files.length&&s.cache(e.files),s.lazy(function(){s.trigger("search",e)}).then(function(){return s.lazy(function(){s.trigger("searchdone")})}).then(function(){e.sync&&s.sync()})})):(s.getUI("toolbar").find("."+s.res("class","searchbtn")+" :text").trigger("focus"),e.Deferred().reject())}},i.prototype.commands.selectall=function(){"use strict";var t=0;this.fm.bind("select",function(e){t=e.data&&e.data.selectall?-1:0}),this.state=0,this.updateOnSelect=!1,this.getstate=function(){return t},this.exec=function(){return e(document).trigger(e.Event("keydown",{keyCode:65,ctrlKey:!0,shiftKey:!1,altKey:!1,metaKey:!1})),e.Deferred().resolve()}},i.prototype.commands.selectinvert=function(){"use strict";this.updateOnSelect=!1,this.getstate=function(){return 0},this.exec=function(){return e(document).trigger(e.Event("keydown",{keyCode:73,ctrlKey:!0,shiftKey:!0,altKey:!1,metaKey:!1})),e.Deferred().resolve()}},i.prototype.commands.selectnone=function(){"use strict";var t=this.fm,n=-1;t.bind("select",function(e){n=e.data&&e.data.unselectall?-1:0}),this.state=-1,this.updateOnSelect=!1,this.getstate=function(){return n},this.exec=function(){return t.getUI("cwd").trigger("unselectall"),e.Deferred().resolve()}},i.prototype.commands.sort=function(){"use strict";var t=this,n=t.fm,i=function(){t.variants=[],e.each(n.sortRules,function(e,i){if(n.sorters[e]){var a=e===n.sortType?"asc"===n.sortOrder?"n":"s":"";t.variants.push([e,(a?'<span class="ui-icon ui-icon-arrowthick-1-'+a+'"></span>':"")+"&nbsp;"+n.i18n("sort"+e)])}}),t.variants.push("|"),t.variants.push(["stick",(n.sortStickFolders?'<span class="ui-icon ui-icon-check"></span>':"")+"&nbsp;"+n.i18n("sortFoldersFirst")]),n.ui.tree&&null!==n.options.sortAlsoTreeview&&(t.variants.push("|"),t.variants.push(["tree",(n.sortAlsoTreeview?'<span class="ui-icon ui-icon-check"></span>':"")+"&nbsp;"+n.i18n("sortAlsoTreeview")])),a()},a=function(){var t,i,a=n.getUI("contextmenu");a.is(":visible")&&(t=a.find("span.elfinder-button-icon-sort"),i=t.siblings("div.elfinder-contextmenu-sub"),i.find("span.ui-icon").remove(),i.children("div.elfinder-contextsubmenu-item").each(function(){var t,i=e(this).children("span"),a=i.text().trim();a===(o.stick||(o.stick=n.i18n("sortFoldersFirst")))?n.sortStickFolders&&i.prepend('<span class="ui-icon ui-icon-check"></span>'):a===(o.tree||(o.tree=n.i18n("sortAlsoTreeview")))?n.sortAlsoTreeview&&i.prepend('<span class="ui-icon ui-icon-check"></span>'):a===(o[n.sortType]||(o[n.sortType]=n.i18n("sort"+n.sortType)))&&(t="asc"===n.sortOrder?"n":"s",i.prepend('<span class="ui-icon ui-icon-arrowthick-1-'+t+'"></span>'))}))},o={};this.options={ui:"sortbutton"},this.keepContextmenu=!0,n.bind("sortchange",i).bind("sorterupdate",function(){i(),n.getUI().children(".elfinder-button-sort-menu").children(".elfinder-button-menu-item").each(function(){var t=e(this),i=t.attr("rel");t.toggle(!(i&&!n.sorters[i]))})}).bind("cwdrender",function(){var t=e(n.cwd).find("div.elfinder-cwd-wrapper-list table");t.length&&e.each(n.sortRules,function(i,a){var o=t.find("thead tr td.elfinder-cwd-view-th-"+i);if(o.length){var r,s=i==n.sortType,l={type:i,order:s?"asc"==n.sortOrder?"desc":"asc":n.sortOrder};s&&(o.addClass("ui-state-active"),r="asc"==n.sortOrder?"n":"s",e('<span class="ui-icon ui-icon-triangle-1-'+r+'"></span>').appendTo(o)),e(o).on("click",function(t){e(this).data("dragging")||(t.stopPropagation(),n.getUI("cwd").data("longtap")||n.exec("sort",[],l))}).on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)})}})}),this.getstate=function(){return 0},this.exec=function(t,n){var i=this.fm,a=e.isPlainObject(n)?n:function(){n+="";var e={};return"stick"===n?e.stick=!i.sortStickFolders:"tree"===n?e.tree=!i.sortAlsoTreeview:i.sorters[n]&&(i.sortType===n?e.order="asc"===i.sortOrder?"desc":"asc":e.type=n),e}(),o=Object.assign({type:i.sortType,order:i.sortOrder,stick:i.sortStickFolders,tree:i.sortAlsoTreeview},a);return i.lazy(function(){i.setSort(o.type,o.order,o.stick,o.tree),this.resolve()})}},i.prototype.commands.undo=function(){"use strict";var t=this,n=this.fm,i=function(e){e?(t.title=n.i18n("cmdundo")+" "+n.i18n("cmd"+e.cmd),t.state=0):(t.title=n.i18n("cmdundo"),t.state=-1),t.change()},a=[];this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+z"}],this.syncTitleOnChange=!0,this.getstate=function(){return a.length?0:-1},this.setUndo=function(t,o){var r={};t&&e.isPlainObject(t)&&t.cmd&&t.callback&&(Object.assign(r,t),o?(delete o.undo,r.redo=o):n.getCommand("redo").setRedo(null),a.push(r),i(r))},this.exec=function(){var t,o,r=n.getCommand("redo"),s=e.Deferred(),l={};return a.length?(t=a.pop(),t.redo?(Object.assign(l,t.redo),delete t.redo):l=null,s.done(function(){l&&r.setRedo(l,t)}),i(a.length?a[a.length-1]:void 0),o=t.callback(),o&&o.done?o.done(function(){s.resolve()}).fail(function(){s.reject()}):s.resolve(),a.length?this.update(0,a[a.length-1].name):this.update(-1,"")):s.reject(),s},n.bind("exec",function(e){var n=e.data||{};n.opts&&n.opts._userAction&&n.dfrd&&n.dfrd.done&&n.dfrd.done(function(e){e&&e.undo&&e.redo&&(e.undo.redo=e.redo,t.setUndo(e.undo))})})},i.prototype.commands.redo=function(){"use strict";var t=this,n=this.fm,i=function(e){e&&e.callback?(t.title=n.i18n("cmdredo")+" "+n.i18n("cmd"+e.cmd),t.state=0):(t.title=n.i18n("cmdredo"),t.state=-1),t.change()},a=[];this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"shift+ctrl+z ctrl+y"}],this.syncTitleOnChange=!0,this.getstate=function(){return a.length?0:-1},this.setRedo=function(e,t){null===e?(a=[],i()):e&&e.cmd&&e.callback&&(t&&(e.undo=t),a.push(e),i(e))},this.exec=function(){var t,o,r=n.getCommand("undo"),s=e.Deferred(),l={},c={};return a.length?(t=a.pop(),t.undo&&(Object.assign(l,t.undo),Object.assign(c,t),delete c.undo,s.done(function(){r.setUndo(l,c)})),i(a.length?a[a.length-1]:void 0),o=t.callback(),o&&o.done?o.done(function(){s.resolve()}).fail(function(){s.reject()}):s.resolve(),s):s.reject()}},(i.prototype.commands.up=function(){"use strict";this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+up"}],this.getstate=function(){return this.fm.cwd().phash?0:-1},this.exec=function(){var t=this.fm,n=t.cwd().hash;return this.fm.cwd().phash?this.fm.exec("open",this.fm.cwd().phash).done(function(){t.one("opendone",function(){t.selectfiles({files:[n]})})}):e.Deferred().reject()}}).prototype={forceLoad:!0},i.prototype.commands.upload=function(){"use strict";var t=this.fm.res("class","hover");this.disableOnSearch=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+u"}],this.getstate=function(e){var t,n=this.fm,i=e||[n.cwd().hash];return this._disabled||1!=i.length||(t=n.file(i[0])),t&&"directory"==t.mime&&t.write?0:-1},this.exec=function(n){var i,a,o,r,s,l,c,d=this.fm,p=d.cwd().hash,u=function(){var e,t=n&&n instanceof Array?n:null;return(!n||n instanceof Array)&&(t||1!==(e=d.selected()).length||"directory"!==d.file(e[0]).mime?t&&1===t.length&&"directory"===d.file(t[0]).mime||(t=[p]):t=e),t},h=u(),f=h?h[0]:n&&n.target?n.target:null,m=f?d.file(f):d.cwd(),g=function(t){d.upload(t).fail(function(e){w.reject(e)}).done(function(t){var n;d.getUI("cwd");if(w.resolve(t),t&&t.added&&t.added[0]&&!d.ui.notify.children(".elfinder-notify-upload").length){var i=d.findCwdNodes(t.added);i.length?i.trigger("scrolltoview"):(m.hash!==p?n=e("<div></div>").append(e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+d.i18n("cmdopendir")+"</span></button>").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",function(){d.exec("open",f).done(function(){d.one("opendone",function(){d.trigger("selectfiles",{files:e.map(t.added,function(e){return e.hash})})})})})):d.trigger("selectfiles",{files:e.map(t.added,function(e){return e.hash})}),d.toast({msg:d.i18n(["complete",d.i18n("cmdupload")]),extNode:n}))}}).progress(function(){w.notifyWith(this,Array.from(arguments))})},v=function(e){i.elfinderdialog("close"),h&&(e.target=h[0]),g(e)},b=function(){var t=m.hash,n=e.map(d.files(t),function(e){return"directory"===e.mime&&e.write?e:null});return n.length?e('<div class="elfinder-upload-dirselect elfinder-tabstop" title="'+d.i18n("folders")+'"></div>').on("click",function(t){t.stopPropagation(),t.preventDefault(),n=d.sortFiles(n);var a=e(this),o=(d.cwd(),i.closest("div.ui-dialog")),r=function(e,t){return{label:d.escape(e.i18||e.name),icon:t,remain:!1,callback:function(){var t=o.children(".ui-dialog-titlebar:first").find("span.elfinder-upload-target");h=[e.hash],t.html(" - "+d.escape(e.i18||e.name)),a.trigger("focus")},options:{className:h&&h.length&&e.hash===h[0]?"ui-state-active":"",iconClass:e.csscls||"",iconImg:e.icon||""}}},s=[r(m,"opendir"),"|"];e.each(n,function(e,t){s.push(r(t,"dir"))}),a.trigger("blur"),d.trigger("contextmenu",{raw:s,x:t.pageX||e(this).offset().left,y:t.pageY||e(this).offset().top,prevNode:o,fitHeight:!0})}).append('<span class="elfinder-button-icon elfinder-button-icon-dir" ></span>'):e()},y=function(n,i){var a=e('<input type="file" '+n+"/>").on("click",function(){d.UA.IE&&setTimeout(function(){o.css("display","none").css("position","relative"),requestAnimationFrame(function(){o.css("display","").css("position","")})},100)}).on("change",function(){v({input:a.get(0),type:"files"})}).on("dragover",function(e){e.originalEvent.dataTransfer.dropEffect="copy"}),o=e("<form></form>").append(a).on("click",function(e){e.stopPropagation()});return e('<div class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-tabstop elfinder-focus"><span class="ui-button-text">'+d.i18n(i)+"</span></div>").append(o).on("click",function(e){e.stopPropagation(),e.preventDefault(),a.trigger("click")}).on("mouseenter mouseleave",function(n){e(this).toggleClass(t,"mouseenter"===n.type)})},w=e.Deferred();return r=function(t){t.stopPropagation(),t.preventDefault();var n,i,a=!1,o="",r=null,s="",l=null,c=t._target||null,p=t.dataTransfer||null,u="";if(p){p.types&&p.types.length?(n=e.inArray("application/x-moz-file",p.types))!==-1?u="file":(n=e.inArray("Files",p.types))!==-1&&(u="file"):p.items&&p.items.length&&p.items[0].kind&&(u=p.items[0].kind);try{if(r=p.getData("elfinderfrom"),r&&(s=window.location.href+d.cwd().hash,!c&&r===s||c===s))return void w.reject()}catch(t){}if("file"===u&&(p.items[n].getAsEntry||p.items[n].webkitGetAsEntry||p.items[n].getAsFile))a=p,o="data";else if("string"!==u&&p.files&&p.files.length&&e.inArray("Text",p.types)===-1)a=p.files,o="files";else{try{(l=p.getData("text/html"))&&l.match(/<(?:img|a)/i)&&(a=[l],o="html")}catch(t){}a||((l=p.getData("text"))?(a=[l],o="text"):p&&p.files&&(u="file"))}}a?g({files:a,type:o,target:c,dropEvt:t}):(i=["errUploadNoFiles"],"file"===u&&i.push("errFolderUpload"),d.error(i),w.reject())},!h&&n?(n.input||n.files?(n.type="files",g(n)):n.dropEvt&&r(n.dropEvt),w):(s=function(t){var n,i=t.originalEvent||t,a=[],o=[];if(i.clipboardData){if(i.clipboardData.items&&i.clipboardData.items.length){o=i.clipboardData.items;for(var r=0;r<o.length;r++)"file"==i.clipboardData.items[r].kind&&(n=i.clipboardData.items[r].getAsFile(),a.push(n))}else i.clipboardData.files&&i.clipboardData.files.length&&(a=i.clipboardData.files);if(a.length)return void v({files:a,type:"files",clipdata:!0})}var s=i.target||i.srcElement;requestAnimationFrame(function(){var t,n="text";s.innerHTML&&(e(s).find("img").each(function(t,n){n.src.match(/^webkit-fake-url:\/\//)&&e(n).remove()}),e(s).find("a,img").length&&(n="html"),t=s.innerHTML,s.innerHTML="",v({files:[t],type:n}))})},i=e('<div class="elfinder-upload-dialog-wrapper"></div>').append(y("multiple","selectForUpload")),!d.UA.Mobile&&function(e){return"undefined"!=typeof e.webkitdirectory||"undefined"!=typeof e.directory}(document.createElement("input"))&&i.append(y("multiple webkitdirectory directory","selectFolder")),m.dirs&&(m.hash===p||d.navHash2Elm(m.hash).hasClass("elfinder-subtree-loaded")?b().appendTo(i):(l=e('<div class="elfinder-upload-dirselect" title="'+d.i18n("nowLoading")+'"></div>').append('<span class="elfinder-button-icon elfinder-button-icon-spinner" ></span>').appendTo(i),d.request({cmd:"tree",target:m.hash}).done(function(){d.one("treedone",function(){l.replaceWith(b()),c.elfinderdialog("tabstopsInit")})}).fail(function(){l.remove()}))),d.dragUpload?a=e('<div class="ui-corner-all elfinder-upload-dropbox elfinder-tabstop" contenteditable="true" data-ph="'+d.i18n("dropPasteFiles")+'"></div>').on("paste",function(e){s(e)}).on("mousedown click",function(){e(this).trigger("focus")}).on("focus",function(){this.innerHTML=""}).on("mouseover",function(){e(this).addClass(t)}).on("mouseout",function(){e(this).removeClass(t)}).on("dragenter",function(n){n.stopPropagation(),n.preventDefault(),e(this).addClass(t)}).on("dragleave",function(n){n.stopPropagation(),n.preventDefault(),e(this).removeClass(t)}).on("dragover",function(n){n.stopPropagation(),n.preventDefault(),n.originalEvent.dataTransfer.dropEffect="copy",e(this).addClass(t)}).on("drop",function(e){i.elfinderdialog("close"),h&&(e.originalEvent._target=h[0]),r(e.originalEvent)}).prependTo(i).after('<div class="elfinder-upload-dialog-or">'+d.i18n("or")+"</div>")[0]:o=e('<div class="ui-corner-all elfinder-upload-dropbox" contenteditable="true">'+d.i18n("dropFilesBrowser")+"</div>").on("paste drop",function(e){s(e)}).on("mousedown click",function(){e(this).trigger("focus")}).on("focus",function(){this.innerHTML="";
}).on("dragenter mouseover",function(){e(this).addClass(t)}).on("dragleave mouseout",function(){e(this).removeClass(t)}).prependTo(i).after('<div class="elfinder-upload-dialog-or">'+d.i18n("or")+"</div>")[0],c=this.fmDialog(i,{title:this.title+'<span class="elfinder-upload-target">'+(m?" - "+d.escape(m.i18||m.name):"")+"</span>",modal:!0,resizable:!1,destroyOnClose:!0,propagationEvents:["mousemove","mouseup","click"],close:function(){var e=d.getUI("contextmenu");e.is(":visible")&&e.click()}}),w)}},i.prototype.commands.view=function(){"use strict";var t,n=this,i=this.fm;this.value=i.viewType,this.alwaysEnabled=!0,this.updateOnSelect=!1,this.options={ui:"viewbutton"},this.getstate=function(){return 0},this.extra={icon:"menu",node:e("<span></span>").attr({title:i.i18n("viewtype")}).on("click touchstart",function(t){if(!("touchstart"===t.type&&t.originalEvent.touches.length>1)){var n=e(this);t.stopPropagation(),t.preventDefault(),i.trigger("contextmenu",{raw:getSubMenuRaw(),x:n.offset().left,y:n.offset().top})}})},this.exec=function(){var e=this,t="list"==this.value?"icons":"list";return i.storage("view",t),i.lazy(function(){i.viewchange(),e.update(void 0,t),this.resolve()})},i.bind("init",function(){t=function(){var e,t=i.getUI("cwd"),a=[],o=i.options.uiOptions.cwd.iconsView.sizeNames,r=i.options.uiOptions.cwd.iconsView.sizeMax;for(e=0;e<=r;e++)a.push({label:i.i18n(o[e]||"Size-"+e+" icons"),icon:"view",callback:function(e){return function(){t.trigger("iconpref",{size:e}),i.storage("iconsize",e),"list"===n.value&&n.exec()}}(e)});return a.push("|"),a.push({label:i.i18n("viewlist"),icon:"view-list",callback:function(){"list"!==n.value&&n.exec()}}),a}()}).bind("contextmenucreate",function(){n.extra={icon:"menu",node:e("<span></span>").attr({title:i.i18n("cmdview")}).on("click touchstart",function(a){if(!("touchstart"===a.type&&a.originalEvent.touches.length>1)){var o,r,s=e(this);t.concat();for(o="list"===n.value?t.length-1:parseInt(i.storage("iconsize")||0),r=0;r<t.length;r++)"|"!==t[r]&&(t[r].options=r===o?{className:"ui-state-active"}:void 0);a.stopPropagation(),a.preventDefault(),i.trigger("contextmenu",{raw:t,x:s.offset().left,y:s.offset().top})}})}})},i});                                                                                                                                                                                                                                                                       includes/File_manager/lib/js/proxy/elFinderSupportVer1.js                                           0000644                 00000023554 15266052745 0017534 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * elFinder transport to support old protocol.
 *
 * @example
 * $('selector').elfinder({
 *   .... 
 *   transport : new elFinderSupportVer1()
 * })
 *
 * @author Dmitry (dio) Levashov
 **/
window.elFinderSupportVer1 = function(upload) {
	"use strict";
	var self = this,
		dateObj, today, yesterday,
		getDateString = function(date) {
			return date.replace('Today', today).replace('Yesterday', yesterday);
		};
	
	dateObj = new Date();
	today = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
	dateObj = new Date(Date.now() - 86400000);
	yesterday = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
	
	this.upload = upload || 'auto';
	
	this.init = function(fm) {
		this.fm = fm;
		this.fm.parseUploadData = function(text) {
			var data;

			if (!$.trim(text)) {
				return {error : ['errResponse', 'errDataEmpty']};
			}

			try {
				data = JSON.parse(text);
			} catch (e) {
				return {error : ['errResponse', 'errDataNotJSON']};
			}
			
			return self.normalize('upload', data);
		};
	};
	
	
	this.send = function(opts) {
		var self = this,
			fm = this.fm,
			dfrd = $.Deferred(),
			cmd = opts.data.cmd,
			args = [],
			_opts = {},
			data,
			xhr;
			
		dfrd.abort = function() {
			if (xhr.state() == 'pending') {
				xhr.quiet = true;
				xhr.abort();
			}
		};
		
		switch (cmd) {
			case 'open':
				opts.data.tree = 1;
				break;
			case 'parents':
			case 'tree':
				return dfrd.resolve({tree : []});
			case 'get':
				opts.data.cmd = 'read';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'put':
				opts.data.cmd = 'edit';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'archive':
			case 'rm':
				opts.data.current = fm.file(opts.data.targets[0]).phash;
				break;
			case 'extract':
			case 'rename':
			case 'resize':
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'duplicate':
				_opts = $.extend(true, {}, opts);

				$.each(opts.data.targets, function(i, hash) {
					$.ajax(Object.assign(_opts, {data : {cmd : 'duplicate', target : hash, current : fm.file(hash).phash}}))
						.fail(function(error) {
							fm.error(fm.res('error', 'connect'));
						})
						.done(function(data) {
							data = self.normalize('duplicate', data);
							if (data.error) {
								fm.error(data.error);
							} else if (data.added) {
								fm.trigger('add', {added : data.added});
							}
						});
				});
				return dfrd.resolve({});
				
			case 'mkdir':
			case 'mkfile':
				opts.data.current = opts.data.target;
				break;
			case 'paste':
				opts.data.current = opts.data.dst;
				if (! opts.data.tree) {
					$.each(opts.data.targets, function(i, h) {
						if (fm.file(h) && fm.file(h).mime === 'directory') {
							opts.data.tree = '1';
							return false;
						}
					});
				}
				break;
				
			case 'size':
				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
			case 'search':
				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
				
			case 'file':
				opts.data.cmd = 'open';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
		}
		// cmd = opts.data.cmd
		
		xhr = $.ajax(opts)
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(raw) {
				data = self.normalize(cmd, raw);
				dfrd.resolve(data);
			});
			
		return dfrd;
	};
	
	// fix old connectors errors messages as possible
	// this.errors = {
	// 	'Unknown command'                                  : 'Unknown command.',
	// 	'Invalid backend configuration'                    : 'Invalid backend configuration.',
	// 	'Access denied'                                    : 'Access denied.',
	// 	'PHP JSON module not installed'                    : 'PHP JSON module not installed.',
	// 	'File not found'                                   : 'File not found.',
	// 	'Invalid name'                                     : 'Invalid file name.',
	// 	'File or folder with the same name already exists' : 'File named "$1" already exists in this location.',
	// 	'Not allowed file type'                            : 'Not allowed file type.',
	// 	'File exceeds the maximum allowed filesize'        : 'File exceeds maximum allowed size.',
	// 	'Unable to copy into itself'                       : 'Unable to copy "$1" into itself.',
	// 	'Unable to create archive'                         : 'Unable to create archive.',
	// 	'Unable to extract files from archive'             : 'Unable to extract files from "$1".'
	// }
	
	this.normalize = function(cmd, data) {
		var self = this,
			fm   = this.fm,
			files = {}, 
			filter = function(file) { return file && file.hash && file.name && file.mime ? file : null; },
			getDirs = function(items) {
				return $.grep(items, function(i) {
					return i && i.mime && i.mime === 'directory'? true : false;
				});
			},
			getTreeDiff = function(files) {
				var dirs = getDirs(files);
				treeDiff = fm.diff(dirs, null, ['date', 'ts']);
				if (treeDiff.added.length) {
					treeDiff.added = getDirs(treeDiff.added);
				}
				if (treeDiff.changed.length) {
					treeDiff.changed = getDirs(treeDiff.changed);
				}
				if (treeDiff.removed.length) {
					var removed = [];
					$.each(treeDiff.removed, function(i, h) {
						var item;
						if ((item = fm.file(h)) && item.mime === 'directory') {
							removed.push(h);
						}
					});
					treeDiff.removed = removed;
				}
				return treeDiff;
			},
			phash, diff, isCwd, treeDiff;

		if ((cmd == 'tmb' || cmd == 'get')) {
			return data;
		}
		
		// if (data.error) {
		// 	$.each(data.error, function(i, msg) {
		// 		if (self.errors[msg]) {
		// 			data.error[i] = self.errors[msg];
		// 		}
		// 	});
		// }
		
		if (cmd == 'upload' && data.error && data.cwd) {
			data.warning = Object.assign({}, data.error);
			data.error = false;
		}
		
		
		if (data.error) {
			return data;
		}
		
		if (cmd == 'put') {

			phash = fm.file(data.target.hash).phash;
			return {changed : [this.normalizeFile(data.target, phash)]};
		}
		
		phash = data.cwd.hash;

		isCwd = (phash == fm.cwd().hash);
		
		if (data.tree) {
			$.each(this.normalizeTree(data.tree), function(i, file) {
				files[file.hash] = file;
			});
		}
		
		$.each(data.cdc||[], function(i, file) {
			var hash = file.hash,
				mcts;

			if (files[hash]) {
				if (file.date) {
					mcts = Date.parse(getDateString(file.date));
					if (mcts && !isNaN(mcts)) {
						files[hash].ts = Math.floor(mcts / 1000);
					} else {
						files[hash].date = file.date || fm.formatDate(file);
					}
				}
				files[hash].locked = file.hash == phash ? true : file.rm === void(0) ? false : !file.rm;
			} else {
				files[hash] = self.normalizeFile(file, phash, data.tmb);
			}
		});
		
		if (!data.tree) {
			$.each(fm.files(), function(hash, file) {
				if (!files[hash] && file.phash != phash && file.mime == 'directory') {
					files[hash] = file;
				}
			});
		}
		
		if (cmd == 'open') {
			return {
					cwd     : files[phash] || this.normalizeFile(data.cwd),
					files   : $.map(files, function(f) { return f; }),
					options : self.normalizeOptions(data),
					init    : !!data.params,
					debug   : data.debug
				};
		}
		
		if (isCwd) {
			diff = fm.diff($.map(files, filter));
		} else {
			if (data.tree && cmd !== 'paste') {
				diff = getTreeDiff(files);
			} else {
				diff = {
					added   : [],
					removed : [],
					changed : []
				};
				if (cmd === 'paste') {
					diff.sync = true;
				}
			}
		}
		
		return Object.assign({
			current : data.cwd.hash,
			error   : data.error,
			warning : data.warning,
			options : {tmb : !!data.tmb}
		}, diff);
		
	};
	
	/**
	 * Convert old api tree into plain array of dirs
	 *
	 * @param  Object  root dir
	 * @return Array
	 */
	this.normalizeTree = function(root) {
		var self     = this,
			result   = [],
			traverse = function(dirs, phash) {
				var i, dir;
				
				for (i = 0; i < dirs.length; i++) {
					dir = dirs[i];
					result.push(self.normalizeFile(dir, phash));
					dir.dirs.length && traverse(dir.dirs, dir.hash);
				}
			};

		traverse([root]);

		return result;
	};
	
	/**
	 * Convert file info from old api format into new one
	 *
	 * @param  Object  file
	 * @param  String  parent dir hash
	 * @return Object
	 */
	this.normalizeFile = function(file, phash, tmb) {
		var mime = file.mime || 'directory',
			size = mime == 'directory' && !file.linkTo ? 0 : file.size,
			mcts = file.date? Date.parse(getDateString(file.date)) : void 0,
			info = {
				url    : file.url,
				hash   : file.hash,
				phash  : phash,
				name   : file.name,
				mime   : mime,
				ts     : file.ts,
				size   : size,
				read   : file.read,
				write  : file.write,
				locked : !phash ? true : file.rm === void(0) ? false : !file.rm
			};
		
		if (! info.ts) {
			if (mcts && !isNaN(mcts)) {
				info.ts = Math.floor(mcts / 1000);
			} else {
				info.date = file.date || this.fm.formatDate(file);
			}
		}
		
		if (file.mime == 'application/x-empty' || file.mime == 'inode/x-empty') {
			info.mime = 'text/plain';
		}
		
		if (file.linkTo) {
			info.alias = file.linkTo;
		}

		if (file.linkTo) {
			info.linkTo = file.linkTo;
		}
		
		if (file.tmb) {
			info.tmb = file.tmb;
		} else if (info.mime.indexOf('image/') === 0 && tmb) {
			info.tmb = 1;
			
		}

		if (file.dirs && file.dirs.length) {
			info.dirs = true;
		}
		if (file.dim) {
			info.dim = file.dim;
		}
		if (file.resize) {
			info.resize = file.resize;
		}
		return info;
	};
	
	this.normalizeOptions = function(data) {
		var opts = {
				path          : data.cwd.rel,
				disabled      : $.merge((data.disabled || []), [ 'search', 'netmount', 'zipdl' ]),
				tmb           : !!data.tmb,
				copyOverwrite : true
			};
		
		if (data.params) {
			opts.api      = 1;
			opts.url      = data.params.url;
			opts.archivers = {
				create  : data.params.archives || [],
				extract : data.params.extract || []
			};
		}
		
		if (opts.path.indexOf('/') !== -1) {
			opts.separator = '/';
		} else if (opts.path.indexOf('\\') !== -1) {
			opts.separator = '\\';
		}
		return opts;
	};
};
                                                                                                                                                    includes/File_manager/lib/js/worker/quicklook.unzip.js                                              0000644                 00000003462 15266052745 0017142 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var type = self.data.type,
	bin = new Uint8Array(self.data.bin),
	unzipFiles = function() {
		/** @type {Array.<string>} */
		var filenameList = [];
		/** @type {number} */
		var i;
		/** @type {number} */
		var il;
		/** @type {Array.<Zlib.Unzip.FileHeader>} */
		var fileHeaderList;
		// need check this.Y when update cdns.zlibUnzip
		this.Y();
		fileHeaderList = this.i;
		for (i = 0, il = fileHeaderList.length; i < il; ++i) {
			// need check fileHeaderList[i].J when update cdns.zlibUnzip
			filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' ({formatSize(' + fileHeaderList[i].J + ')})' : '');
		}
		return filenameList;
	},
	tarFiles = function(tar) {
		var filenames = [],
			tarlen = tar.length,
			offset = 0,
			toStr = function(arr) {
				return String.fromCharCode.apply(null, arr).replace(/\0+$/, '');
			},
			h, name, prefix, size, dbs;
		while (offset < tarlen && tar[offset] !== 0) {
			h = tar.subarray(offset, offset + 512);
			name = toStr(h.subarray(0, 100));
			if (prefix = toStr(h.subarray(345, 500))) {
				name = prefix + name;
			}
			size = parseInt(toStr(h.subarray(124, 136)), 8);
			dbs = Math.ceil(size / 512) * 512;
			if (name === '././@LongLink') {
				name = toStr(tar.subarray(offset + 512, offset + 512 + dbs));
			}
			(name !== 'pax_global_header') && filenames.push(name + (size? ' ({formatSize(' + size + ')})': ''));
			offset = offset + 512 + dbs;
		}
		return filenames;
	};

self.res = {};

switch (type) {
  case 'tar':
    self.res.files = tarFiles(bin);
    break;
  case 'zip':
    self.res.files = unzipFiles.call(new Zlib.Unzip(bin));
    break;
  case 'gzip':
    self.res.files = tarFiles(new Zlib.Gunzip(bin).decompress());
    break;
  case 'bzip2':
    self.res.files = tarFiles(self.bzip2.simple(self.bzip2.array(bin)));
    break;
  default:
    
    break;
}

                                                                                                                                                                                                              includes/File_manager/lib/js/worker/calcfilehash.js                                                 0000644                 00000001024 15266052746 0016374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var type = self.data.type,
	bin = self.data.bin,
	hashOpts = self.data.hashOpts;

self.res = {};
if (type === 'md5') {
	let sp = new self.SparkMD5.ArrayBuffer();
	sp.append(bin);
	self.res.hash = sp.end();
} else {
	let sha = new jsSHA('SHA' + (type.length === 5? type : ('-' + type)).toUpperCase(), 'ARRAYBUFFER'),
		opts = {};
	if (type === 'ke128') {
		opts.shakeLen = hashOpts.shake128len;
	} else if (type === 'ke256') {
		opts.shakeLen = hashOpts.shake256len;
	}
	sha.update(bin);
	self.res.hash = sha.getHash('HEX', opts);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/js/worker/quicklook.tiff.js                                               0000644                 00000000341 15266052746 0016717 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       if (self.data.memory) {
  Tiff.initialize({ TOTAL_MEMORY: self.data.memory });
}

var tiff = new Tiff({ buffer: self.data.data });
self.res = {
  image: tiff.readRGBAImage(),
  width: tiff.width(),
  height: tiff.height()
};
                                                                                                                                                                                                                                                                                               includes/File_manager/lib/js/elfinder.full.js                                                       0000644                 00004026724 15266052746 0015230 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder - file manager for web
 * Version 2.1.66 (2025-08-28)
 * http://elfinder.org
 * 
 * Copyright 2009-2025, Studio 42
 * Licensed under a 3-clauses BSD license
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery','jquery-ui'], factory);
	} else if (typeof exports !== 'undefined') {
		// CommonJS
		var $, ui;
		try {
			$ = require('jquery');
			ui = require('jquery-ui');
		} catch (e) {}
		module.exports = factory($, ui);
	} else {
		// Browser globals (Note: root is window)
		factory(root.jQuery, root.jQuery.ui, true);
	}
}(this, function($, _ui, toGlobal) {
toGlobal = toGlobal || false;


/*
 * File: /js/elFinder.js
 */

/**
 * @class elFinder - file manager for web
 *
 * @author Dmitry (dio) Levashov
 **/
var elFinder = function(elm, opts, bootCallback) {
		//this.time('load');
	var self = this,
		
		/**
		 * Objects array of jQuery.Deferred that calls before elFinder boot up
		 * 
		 * @type Array
		 */
		dfrdsBeforeBootup = [],
		
		/**
		 * Plugin name to check for conflicts with bootstrap etc
		 *
		 * @type Array
		 **/
		conflictChecks = ['button', 'tooltip'],
		
		/**
		 * Node on which elfinder creating
		 *
		 * @type jQuery
		 **/
		node = $(elm),
		
		/**
		 * Object of events originally registered in this node
		 * 
		 * @type Object
		 */
		prevEvents = $.extend(true, {}, $._data(node.get(0), 'events')),
		
		/**
		 * Store node contents.
		 *
		 * @see this.destroy
		 * @type jQuery
		 **/
		prevContent = $('<div></div>').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''),
		
		/**
		 * Instance ID. Required to get/set cookie
		 *
		 * @type String
		 **/
		id = node.attr('id') || node.attr('id', 'elfauto' + $('.elfinder').length).attr('id'),
		
		/**
		 * Events namespace
		 *
		 * @type String
		 **/
		namespace = 'elfinder-' + id,
		
		/**
		 * Mousedown event
		 *
		 * @type String
		 **/
		mousedown = 'mousedown.'+namespace,
		
		/**
		 * Keydown event
		 *
		 * @type String
		 **/
		keydown = 'keydown.'+namespace,
		
		/**
		 * Keypress event
		 *
		 * @type String
		 **/
		keypress = 'keypress.'+namespace,
		
		/**
		 * Keypup event
		 *
		 * @type String
		 **/
		keyup    = 'keyup.'+namespace,

		/**
		 * Is shortcuts/commands enabled
		 *
		 * @type Boolean
		 **/
		enabled = false,
		
		/**
		 * Store enabled value before ajax request
		 *
		 * @type Boolean
		 **/
		prevEnabled = false,
		
		/**
		 * List of build-in events which mapped into methods with same names
		 *
		 * @type Array
		 **/
		events = ['enable', 'disable', 'load', 'open', 'reload', 'select',  'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'],
		
		/**
		 * Rules to validate data from backend
		 *
		 * @type Object
		 **/
		rules = {},
		
		/**
		 * Current working directory hash
		 *
		 * @type String
		 **/
		cwd = '',
		
		/**
		 * Current working directory options default
		 *
		 * @type Object
		 **/
		cwdOptionsDefault = {
			path          : '',
			url           : '',
			tmbUrl        : '',
			disabled      : [],
			separator     : '/',
			archives      : [],
			extract       : [],
			copyOverwrite : true,
			uploadOverwrite : true,
			uploadMaxSize : 0,
			jpgQuality    : 100,
			tmbCrop       : false,
			tmbReqCustomData : false,
			tmb           : false // old API
		},
		
		/**
		 * Current working directory options
		 *
		 * @type Object
		 **/
		cwdOptions = {},
		
		/**
		 * Files/dirs cache
		 *
		 * @type Object
		 **/
		files = {},
		
		/**
		 * Hidden Files/dirs cache
		 *
		 * @type Object
		 **/
		hiddenFiles = {},

		/**
		 * Files/dirs hash cache of each dirs
		 *
		 * @type Object
		 **/
		ownFiles = {},
		
		/**
		 * Selected files hashes
		 *
		 * @type Array
		 **/
		selected = [],
		
		/**
		 * Events listeners
		 *
		 * @type Object
		 **/
		listeners = {},
		
		/**
		 * Shortcuts
		 *
		 * @type Object
		 **/
		shortcuts = {},
		
		/**
		 * Buffer for copied files
		 *
		 * @type Array
		 **/
		clipboard = [],
		
		/**
		 * Copied/cuted files hashes
		 * Prevent from remove its from cache.
		 * Required for dispaly correct files names in error messages
		 *
		 * @type Object
		 **/
		remember = {},
		
		/**
		 * Queue for 'open' requests
		 *
		 * @type Array
		 **/
		queue = [],
		
		/**
		 * Queue for only cwd requests e.g. `tmb`
		 *
		 * @type Array
		 **/
		cwdQueue = [],
		
		/**
		 * Commands prototype
		 *
		 * @type Object
		 **/
		base = new self.command(self),
		
		/**
		 * elFinder node width
		 *
		 * @type String
		 * @default "auto"
		 **/
		width  = 'auto',
		
		/**
		 * elFinder node height
		 * Number: pixcel or String: Number + "%"
		 *
		 * @type Number | String
		 * @default 400
		 **/
		height = 400,
		
		/**
		 * Base node object or selector
		 * Element which is the reference of the height percentage
		 *
		 * @type Object|String
		 * @default null | $(window) (if height is percentage)
		 **/
		heightBase = null,
		
		/**
		 * MIME type list(Associative array) handled as a text file
		 * 
		 * @type Object|null
		 */
		textMimes = null,
		
		/**
		 * elfinder path for sound played on remove
		 * @type String
		 * @default ./sounds/
		 **/
		soundPath = 'sounds/',
		
		/**
		 * JSON.stringify of previous fm.sorters
		 * @type String
		 */
		prevSorterStr = '',

		/**
		 * Map table of file extention to MIME-Type
		 * @type Object
		 */
		extToMimeTable,

		/**
		 * Disabled page unload function
		 * @type Boolean
		 */
		diableUnloadCheck = false,

		beeper = $(document.createElement('audio')).hide().appendTo('body')[0],
			
		syncInterval,
		autoSyncStop = 0,
		
		uiCmdMapPrev = '',
		
		gcJobRes = null,
		
		open = function(data) {
			// NOTES: Do not touch data object
		
			var volumeid, contextmenu, emptyDirs = {}, stayDirs = {},
				rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr, diff;
			
			if (self.api >= 2.1) {
				// support volume driver option `uiCmdMap`
				self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {};
				if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) {
					uiCmdMapPrev = JSON.stringify(self.commandMap);
				}
			} else {
				self.options.sync = 0;
			}
			
			if (data.init) {
				// init - reset cache
				files = {};
				ownFiles = {};
			} else {
				// remove only files from prev cwd
				// and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD
				prevcwd = cwd;
				rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand');
				collapsed = self.res('class', 'navcollapse');
				hashes = Object.keys(files);
				calc = function(i) {
					if (!files[i]) {
						return true;
					}
					
					var isDir = (files[i].mime === 'directory'),
						phash = files[i].phash,
						pnav;
						
					if (
						(!isDir
							|| emptyDirs[phash]
							|| (!stayDirs[phash]
								&& self.navHash2Elm(files[i].hash).is(':hidden')
								&& self.navHash2Elm(phash).next('.elfinder-navbar-subtree').children().length > 100
							)
						)
						&& (isDir || phash !== cwd)
						&& ! remember[i]
					) {
						if (isDir && !emptyDirs[phash]) {
							emptyDirs[phash] = true;
							self.navHash2Elm(phash)
							 .removeClass(rmClass)
							 .next('.elfinder-navbar-subtree').empty();
						}
						deleteCache(files[i]);
					} else if (isDir) {
						stayDirs[phash] = true;
					}
				};
				gc = function() {
					if (hashes.length) {
						gcJobRes && gcJobRes._abort();
						gcJobRes = self.asyncJob(calc, hashes, {
							interval : 20,
							numPerOnce : 100
						}).done(function() {
							var hd = self.storage('hide') || {items: {}};
							if (Object.keys(hiddenFiles).length) {
								$.each(hiddenFiles, function(h) {
									if (!hd.items[h]) {
										delete hiddenFiles[h];
									}
								});
							}
						});
					}
				};
				
				self.trigger('filesgc').one('filesgc', function() {
					hashes = [];
				});
				
				self.one('opendone', function() {
					if (prevcwd !== cwd) {
						if (! node.data('lazycnt')) {
							gc();
						} else {
							self.one('lazydone', gc);
						}
					}
				});
			}

			self.sorters = {};
			cwd = data.cwd.hash;
			cache(data.files);
			if (!files[cwd]) {
				cache([data.cwd]);
			} else {
				diff = self.diff([data.cwd], true);
				if (diff.changed.length) {
					cache(diff.changed, 'change');
					self.change({changed: diff.changed});
				}
			}
			data.changed && data.changed.length && cache(data.changed, 'change');

			// trigger event 'sorterupdate'
			sorterStr = JSON.stringify(self.sorters);
			if (prevSorterStr !== sorterStr) {
				self.trigger('sorterupdate');
				prevSorterStr = sorterStr;
			}

			self.lastDir(cwd);
			
			self.autoSync();
		},
		
		/**
		 * Store info about files/dirs in "files" object.
		 *
		 * @param  Array  files
		 * @param  String data type
		 * @return void
		 **/
		cache = function(data, type) {
			var type      = type || 'files',
				keeps = ['sizeInfo', 'encoding'],
				defsorter = { name: true, perm: true, date: true,  size: true, kind: true },
				sorterChk = !self.sorters._checked && (type === 'files'),
				l         = data.length,
				setSorter = function(file) {
					var f = file || {},
						sorters = [];
					$.each(self.sortRules, function(key) {
						if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) {
							sorters.push(key);
						}
					});
					self.sorters = self.arrayFlip(sorters, true);
					self.sorters._checked = true;
				},
				changedParents = {},
				hideData = self.storage('hide') || {},
				hides = hideData.items || {},
				f, i, i1, keepProp, parents, hidden;

			for (i = 0; i < l; i++) {
				f = Object.assign({}, data[i]);
				hidden = (!hideData.show && hides[f.hash])? true : false;
				if (f.name && f.hash && f.mime) {
					if (!hidden) {
						if (sorterChk && f.phash === cwd) {
							setSorter(f);
							sorterChk = false;
						}
						
						if (f.phash && (type === 'add' || (type === 'change' && (!files[f.hash] || f.size !== files[f.hash])))) {
							if (parents = self.parents(f.phash)) {
								$.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
					}

					if (files[f.hash]) {
						for (i1 =0; i1 < keeps.length; i1++) {
							if(files[f.hash][keeps[i1]] && ! f[keeps[i1]]) {
								f[keeps[i1]] = files[f.hash][keeps[i1]];
							}
						}
						if (f.sizeInfo && !f.size) {
							f.size = f.sizeInfo.size;
						}
						deleteCache(files[f.hash], true);
					}
					if (hides[f.hash]) {
						hiddenFiles[f.hash] = f;
					}
					if (hidden) {
						l--;
						data.splice(i--, 1);
					} else {
						files[f.hash] = f;
						if (f.mime === 'directory' && !ownFiles[f.hash]) {
							ownFiles[f.hash] = {};
						}
						if (f.phash) {
							if (!ownFiles[f.phash]) {
								ownFiles[f.phash] = {};
							}
							ownFiles[f.phash][f.hash] = true;
						}
					}
				}
			}
			// delete sizeInfo cache
			$.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
			
			// for empty folder
			sorterChk && setSorter();
		},
		
		/**
		 * Delete file object from files caches
		 * 
		 * @param  Array  removed hashes
		 * @return void
		 */
		remove = function(removed) {
			var l       = removed.length,
				roots   = {},
				rm      = function(hash) {
					var file = files[hash], i;
					if (file) {
						if (file.mime === 'directory') {
							if (roots[hash]) {
								delete self.roots[roots[hash]];
							}
							// restore stats of deleted root parent directory
							$.each(self.leafRoots, function(phash, roots) {
								var idx, pdir;
								if ((idx = $.inArray(hash, roots))!== -1) {
									if (roots.length === 1) {
										if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) {
											$.each(pdir._realStats, function(k, v) {
												pdir[k] = v;
											});
											remove(files[phash]._realStats);
											self.change({ changed: [pdir] });
										}
										delete self.leafRoots[phash];
									} else {
										self.leafRoots[phash].splice(idx, 1);
									}
								}
							});
							if (self.searchStatus.state < 2) {
								$.each(files, function(h, f) {
									f.phash == hash && rm(h);
								});
							}
						}
						if (file.phash) {
							if (parents = self.parents(file.phash)) {
								$.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
						deleteCache(files[hash]);
					}
				},
				changedParents = {},
				parents;
		
			$.each(self.roots, function(k, v) {
				roots[v] = k;
			});
			while (l--) {
				rm(removed[l]);
			}
			// delete sizeInfo cache
			$.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
		},
		
		/**
		 * Update file object in files caches
		 * 
		 * @param  Array  changed file objects
		 * @return void
		 * @deprecated should be use `cache(updatesArrayData, 'change');`
		 */
		change = function(changed) {
			$.each(changed, function(i, file) {
				var hash = file.hash;
				if (files[hash]) {
					$.each(Object.keys(files[hash]), function(i, v){
						if (typeof file[v] === 'undefined') {
							delete files[hash][v];
						}
					});
				}
				files[hash] = files[hash] ? Object.assign(files[hash], file) : file;
			});
		},
		
		/**
		 * Delete cache data of files, ownFiles and self.optionsByHashes
		 * 
		 * @param  Object  file
		 * @param  Boolean update
		 * @return void
		 */
		deleteCache = function(file, update) {
			var hash = file.hash,
				phash = file.phash;
			
			if (phash && ownFiles[phash]) {
				 delete ownFiles[phash][hash];
			}
			if (!update) {
				ownFiles[hash] && delete ownFiles[hash];
				self.optionsByHashes[hash] && delete self.optionsByHashes[hash];
			}
			delete files[hash];
		},
		
		/**
		 * Maximum number of concurrent connections on request
		 * 
		 * @type Number
		 */
		requestMaxConn,
		
		/**
		 * Current number of connections
		 * 
		 * @type Number
		 */
		requestCnt = 0,
		
		/**
		 * Queue waiting for connection
		 * 
		 * @type Array
		 */
		requestQueue = [],
		
		/**
		 * Current open command instance
		 * 
		 * @type Object
		 */
		currentOpenCmd = null,

		/**
		 * Exec shortcut
		 *
		 * @param  jQuery.Event  keydown/keypress event
		 * @return void
		 */
		execShortcut = function(e) {
			var code    = e.keyCode,
				ctrlKey = !!(e.ctrlKey || e.metaKey),
				isMousedown = e.type === 'mousedown',
				ddm;

			!isMousedown && (self.keyState.keyCode = code);
			self.keyState.ctrlKey  = ctrlKey;
			self.keyState.shiftKey = e.shiftKey;
			self.keyState.metaKey  = e.metaKey;
			self.keyState.altKey   = e.altKey;
			if (isMousedown) {
				return;
			} else if (e.type === 'keyup') {
				self.keyState.keyCode = null;
				return;
			}

			if (enabled) {

				$.each(shortcuts, function(i, shortcut) {
					if (shortcut.type    == e.type 
					&& shortcut.keyCode  == code 
					&& shortcut.shiftKey == e.shiftKey 
					&& shortcut.ctrlKey  == ctrlKey 
					&& shortcut.altKey   == e.altKey) {
						e.preventDefault();
						e.stopPropagation();
						shortcut.callback(e, self);
						self.debug('shortcut-exec', i+' : '+shortcut.description);
					}
				});
				
				// prevent tab out of elfinder
				if (code == $.ui.keyCode.TAB && !$(e.target).is(':input')) {
					e.preventDefault();
				}
				
				// cancel any actions by [Esc] key
				if (e.type === 'keydown' && code == $.ui.keyCode.ESCAPE) {
					// copy or cut 
					if (! node.find('.ui-widget:visible').length) {
						self.clipboard().length && self.clipboard([]);
					}
					// dragging
					if ($.ui.ddmanager) {
						ddm = $.ui.ddmanager.current;
						ddm && ddm.helper && ddm.cancel();
					}
					// button menus
					self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible'));
					// trigger keydownEsc
					self.trigger('keydownEsc', e);
				}

			}
		},
		date = new Date(),
		utc,
		i18n,
		inFrame = (window.parent !== window),
		parentIframe = (function() {
			var pifm, ifms;
			if (inFrame) {
				try {
					ifms = $('iframe', window.parent.document);
					if (ifms.length) {
						$.each(ifms, function(i, ifm) {
							if (ifm.contentWindow === window) {
								pifm = $(ifm);
								return false;
							}
						});
					}
				} catch(e) {}
			}
			return pifm;
		})(),
		/**
		 * elFinder boot up function
		 * 
		 * @type Function
		 */
		bootUp,
		/**
		 * Original function of XMLHttpRequest.prototype.send
		 * 
		 * @type Function
		 */
		savedXhrSend;
	
	// opts must be an object
	if (!opts) {
		opts = {};
	}
	
	// set UA.Angle, UA.Rotated for mobile devices
	if (self.UA.Mobile) {
		$(window).on('orientationchange.'+namespace, function() {
			var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
			if (a === -90) {
				a = 270;
			}
			self.UA.Angle = a;
			self.UA.Rotated = a % 180 === 0? false : true;
		}).trigger('orientationchange.'+namespace);
	}
	
	// check opt.bootCallback
	if (opts.bootCallback && typeof opts.bootCallback === 'function') {
		(function() {
			var func = bootCallback,
				opFunc = opts.bootCallback;
			bootCallback = function(fm, extraObj) {
				func && typeof func === 'function' && func.call(this, fm, extraObj);
				opFunc.call(this, fm, extraObj);
			};
		})();
	}
	delete opts.bootCallback;

	/**
	 * Protocol version
	 *
	 * @type String
	 **/
	this.api = null;
	
	/**
	 * elFinder use new api
	 *
	 * @type Boolean
	 **/
	this.newAPI = false;
	
	/**
	 * elFinder use old api
	 *
	 * @type Boolean
	 **/
	this.oldAPI = false;
	
	/**
	 * Net drivers names
	 *
	 * @type Array
	 **/
	this.netDrivers = [];
	
	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * 
	 * @type String
	 */
	this.baseUrl = '';
	
	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 */
	this.i18nBaseUrl = '';

	/**
	 * Base URL of worker js files
	 * baseUrl + "js/worker/" when empty value
	 * 
	 * @type String
	 */
	this.workerBaseUrl = '';

	/**
	 * Is elFinder CSS loaded
	 * 
	 * @type Boolean
	 */
	this.cssloaded = false;
	
	/**
	 * Current theme object
	 * 
	 * @type Object|Null
	 */
	this.theme = null;

	this.mimesCanMakeEmpty = {};

	/**
	 * Callback function at boot up that option specified at elFinder starting
	 * 
	 * @type Function
	 */
	this.bootCallback;

	/**
	 * Callback function at reload(restart) elFinder 
	 * 
	 * @type Function
	 */
	this.reloadCallback;

	/**
	 * ID. Required to create unique cookie name
	 *
	 * @type String
	 **/
	this.id = id;

	/**
	 * Method to store/fetch data
	 *
	 * @type Function
	 **/
	this.storage = (function() {
		try {
			if ('localStorage' in window && window.localStorage !== null) {
				if (self.UA.Safari) {
					// check for Mac/iOS safari private browsing mode
					window.localStorage.setItem('elfstoragecheck', 1);
					window.localStorage.removeItem('elfstoragecheck');
				}
				return self.localStorage;
			} else {
				return self.cookie;
			}
		} catch (e) {
			return self.cookie;
		}
	})();

	/**
	 * Set pause page unload check function or Get state
	 *
	 * @param      Boolean   state   To set state
	 * @param      Boolean   keep    Keep disabled
	 * @return     Boolean|void
	 */
	this.pauseUnloadCheck = function(state, keep) {
		if (typeof state === 'undefined') {
			return diableUnloadCheck;
		} else {
			diableUnloadCheck = !!state;
			if (state && !keep) {
				requestAnimationFrame(function() {
					diableUnloadCheck = false;
				});
			}
		}
	};

	/**
	 * Configuration options
	 *
	 * @type Object
	 **/
	//this.options = $.extend(true, {}, this._options, opts);
	this.options = Object.assign({}, this._options);
	
	// for old type configuration
	if (opts.uiOptions) {
		if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) {
			if ($.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) {
				self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop());
			}
		}
	}
	
	// Overwrite if opts value is an array
	(function() {
		var arrOv = function(obj, base) {
			if ($.isPlainObject(obj)) {
				$.each(obj, function(k, v) {
					if ($.isPlainObject(v)) {
						if (!base[k]) {
							base[k] = {};
						}
						arrOv(v, base[k]);
					} else {
						base[k] = v;
					}
				});
			}
		};
		arrOv(opts, self.options);
	})();
	
	// join toolbarExtra to toolbar
	this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra);
	delete this.options.uiOptions.toolbarExtra;

	/**
	 * Arrays that has to unbind events
	 * 
	 * @type Object
	 */
	this.toUnbindEvents = {};
	
	/**
	 * Attach listener to events
	 * To bind to multiply events at once, separate events names by space
	 * 
	 * @param  String  event(s) name(s)
	 * @param  Object  event handler or {done: handler}
	 * @param  Boolean priority first
	 * @return elFinder
	 */
	this.bind = function(event, callback, priorityFirst) {
		var i, len;
		
		if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) {
			event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/);
			
			len = event.length;
			for (i = 0; i < len; i++) {
				if (listeners[event[i]] === void(0)) {
					listeners[event[i]] = [];
				}
				listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback);
			}
		}
		return this;
	};
	
	/**
	 * Remove event listener if exists
	 * To un-bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event(s) name(s)
	 * @param  Function  callback
	 * @return elFinder
	 */
	this.unbind = function(event, callback) {
		var i, len, l, ci;
		
		event = ('' + event).toLowerCase().split(/\s+/);
		
		len = event.length;
		for (i = 0; i < len; i++) {
			if (l = listeners[event[i]]) {
				ci = $.inArray(callback, l);
				ci > -1 && l.splice(ci, 1);
			}
		}
		
		callback = null;
		return this;
	};
	
	/**
	 * Fire event - send notification to all event listeners
	 * In the callback `this` becames an event object
	 *
	 * @param  String   event type
	 * @param  Object   data to send across event
	 * @param  Boolean  allow modify data (call by reference of data) default: true
	 * @return elFinder
	 */
	this.trigger = function(evType, data, allowModify) {
		var type      = evType.toLowerCase(),
			isopen    = (type === 'open'),
			dataIsObj = (typeof data === 'object'),
			handlers  = listeners[type] || [],
			dones     = [],
			i, l, jst, event;
		
		this.debug('event-'+type, data);
		
		if (! dataIsObj || typeof allowModify === 'undefined') {
			allowModify = true;
		}
		if (l = handlers.length) {
			event = $.Event(type);
			if (data) {
				data._getEvent = function() {
					return event;
				};
			}
			if (allowModify) {
				event.data = data;
			}

			for (i = 0; i < l; i++) {
				if (! handlers[i]) {
					// probably un-binded this handler
					continue;
				}

				// handler is $.Deferred(), call all functions upon completion
				if (handlers[i].done) {
					dones.push(handlers[i].done);
					continue;
				}
				
				// set `event.data` only callback has argument
				if (handlers[i].length) {
					if (!allowModify) {
						// to avoid data modifications. remember about "sharing" passing arguments in js :) 
						if (typeof jst === 'undefined') {
							try {
								jst = JSON.stringify(data);
							} catch(e) {
								jst = false;
							}
						}
						event.data = jst? JSON.parse(jst) : data;
					}
				}

				try {
					if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) {
						this.debug('event-stoped', event.type);
						break;
					}
				} catch (ex) {
					window.console && window.console.log && window.console.log(ex);
				}
				
			}
			
			// call done functions
			if (l = dones.length) {
				for (i = 0; i < l; i++) {
					try {
						if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) {
							this.debug('event-stoped', event.type + '(done)');
							break;
						}
					} catch (ex) {
						window.console && window.console.log && window.console.log(ex);
					}
				}
			}

			if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) {
				$.each(this.toUnbindEvents[type], function(i, v) {
					self.unbind(v.type, v.callback);
				});
				delete this.toUnbindEvents[type];
			}
		}
		return this;
	};
	
	/**
	 * Get event listeners
	 *
	 * @param  String   event type
	 * @return Array    listed event functions
	 */
	this.getListeners = function(event) {
		return event? listeners[event.toLowerCase()] : listeners;
	};

	// set fm.baseUrl
	this.baseUrl = (function() {
		var myTag, base, baseUrl;
		
		if (self.options.baseUrl) {
			return self.options.baseUrl;
		} else {
			baseUrl = '';
			myTag = null;
			$('head > script').each(function() {
				if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js(?:$|\?)/i)) {
					myTag = $(this);
					return false;
				}
			});
			if (myTag) {
				baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, '');
				if (! baseUrl.match(/^(https?\/\/|\/)/)) {
					// check <base> tag
					if (base = $('head > base[href]').attr('href')) {
						baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; 
					}
				}
			}
			if (baseUrl !== '') {
				self.options.baseUrl = baseUrl;
			} else {
				if (! self.options.baseUrl) {
					self.options.baseUrl = './';
				}
				baseUrl = self.options.baseUrl;
			}
			return baseUrl;
		}
	})();
	
	this.i18nBaseUrl = (this.options.i18nBaseUrl || this.baseUrl + 'js/i18n').replace(/\/$/, '') + '/';
	this.workerBaseUrl = (this.options.workerBaseUrl || this.baseUrl + 'js/worker').replace(/\/$/, '') + '/';

	this.options.maxErrorDialogs = Math.max(1, parseInt(this.options.maxErrorDialogs || 5));

	// set dispInlineRegex
	cwdOptionsDefault.dispInlineRegex = this.options.dispInlineRegex;

	// auto load required CSS
	if (this.options.cssAutoLoad) {
		(function() {
			var baseUrl = self.baseUrl,
				myCss = $('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length,
				rmTag = function() {
					if (node.data('cssautoloadHide')) {
						node.data('cssautoloadHide').remove();
						node.removeData('cssautoloadHide');
					}
				},
				loaded = function() {
					if (!self.cssloaded) {
						rmTag();
						self.cssloaded = true;
						self.trigger('cssloaded');
					}
				};
			
			if (! myCss) {
				// to request CSS auto loading
				self.cssloaded = null;
			}

			// additional CSS files
			if (Array.isArray(self.options.cssAutoLoad)) {
				if (!self.options.themes.default) {
					// set as default theme
					self.options.themes = Object.assign({
						'default' : {
							'name': 'default',
							'cssurls': self.options.cssAutoLoad
						}
					}, self.options.themes);
					if (!self.options.theme) {
						self.options.theme = 'default';
					}
				} else {
					if (self.cssloaded === true) {
						self.loadCss(self.options.cssAutoLoad);
					} else {
						self.bind('cssloaded', function() {
							self.loadCss(self.options.cssAutoLoad);
						});
					}
				}
			}

			// try to load main css
			if (self.cssloaded === null) {
				// hide elFinder node while css loading
				node.addClass('elfinder')
					.data('cssautoloadHide', $('<style>.elfinder{visibility:hidden;overflow:hidden}</style>'));
				$('head').append(node.data('cssautoloadHide'));

				// set default theme
				if (!self.options.themes.default) {
					self.options.themes = Object.assign({
						'default' : {
							'name': 'default',
							'cssurls': 'css/theme.css',
							'author': 'elFinder Project',
							'license': '3-clauses BSD'
						}
					}, self.options.themes);
					if (!self.options.theme) {
						self.options.theme = 'default';
					}
				}

				// Delay 'visibility' check it required for browsers such as Safari
				requestAnimationFrame(function() {
					if (node.css('visibility') === 'hidden') {
						// load CSS
						self.loadCss([baseUrl+'css/elfinder.min.css'], {
							dfd: $.Deferred().done(function() {
								loaded();
							}).fail(function() {
								rmTag();
								if (!self.cssloaded) {
									self.cssloaded = false;
									self.bind('init', function() {
										if (!self.cssloaded) {
											self.error(['errRead', 'CSS (elfinder.min)']);
										}
									});
								}
							})
						});
					} else {
						loaded();
					}
				});
			}
		})();
	}

	// load theme if exists
	(function() {
		var theme,
			themes = self.options.themes,
			ids = Object.keys(themes || {});
		if (ids.length) {
			theme = self.storage('theme') || self.options.theme;
			if (!themes[theme]) {
				theme = ids[0];
			}
			if (self.cssloaded) {
				self.changeTheme(theme);
			} else {
				self.bind('cssloaded', function() {
					self.changeTheme(theme);
				});
			}
		}
	})();
	
	/**
	 * Volume option to set the properties of the root Stat
	 * 
	 * @type Object
	 */
	this.optionProperties = {
		icon: void(0),
		csscls: void(0),
		tmbUrl: void(0),
		uiCmdMap: {},
		netkey: void(0),
		disabled: []
	};
	
	if (! inFrame && ! this.options.enableAlways && $('body').children().length === 2) { // only node and beeper
		this.options.enableAlways = true;
	}
	
	// make options.debug
	if (this.options.debug === true) {
		this.options.debug = 'all';
	} else if (Array.isArray(this.options.debug)) {
		(function() {
			var d = {};
			$.each(self.options.debug, function() {
				d[this] = true;
			});
			self.options.debug = d;
		})();
	} else {
		this.options.debug = false;
	}
	
	/**
	 * Original functions evacuated by conflict check
	 * 
	 * @type Object
	 */
	this.noConflicts = {};
	
	/**
	 * Check and save conflicts with bootstrap etc
	 * 
	 * @type Function
	 */
	this.noConflict = function() {
		$.each(conflictChecks, function(i, p) {
			if ($.fn[p] && typeof $.fn[p].noConflict === 'function') {
				self.noConflicts[p] = $.fn[p].noConflict();
			}
		});
	};
	// do check conflict
	this.noConflict();
	
	/**
	 * Is elFinder over CORS
	 *
	 * @type Boolean
	 **/
	this.isCORS = false;
	
	// configure for CORS
	(function(){
		if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) {
			self.isCORS = self.options.cors? true : false;
		} else {
			var parseUrl = document.createElement('a'),
				parseUploadUrl,
				selfProtocol = window.location.protocol,
				portReg = function(protocol) {
					protocol = (!protocol || protocol === ':')? selfProtocol : protocol;
					return protocol === 'https:'? /\:443$/ : /\:80$/;
				},
				selfHost = window.location.host.replace(portReg(selfProtocol), '');
			parseUrl.href = opts.url;
			if (opts.urlUpload && (opts.urlUpload !== opts.url)) {
				parseUploadUrl = document.createElement('a');
				parseUploadUrl.href = opts.urlUpload;
			}
			if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '')
				|| (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol))
				|| (parseUploadUrl && 
					(selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '')
					|| (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol))
					)
				)
			) {
				self.isCORS = true;
			}
		}
		if (self.isCORS) {
			if (!$.isPlainObject(self.options.customHeaders)) {
				self.options.customHeaders = {};
			}
			if (!$.isPlainObject(self.options.xhrFields)) {
				self.options.xhrFields = {};
			}
			self.options.requestType = 'post';
			self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest';
			self.options.xhrFields['withCredentials'] = true;
		}
	})();

	/**
	 * Ajax request type
	 *
	 * @type String
	 * @default "get"
	 **/
	this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get';
	
	// set `requestMaxConn` by option
	requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1);
	
	/**
	 * Custom data that given as options
	 * 
	 * @type Object
	 * @default {}
	 */
	this.optsCustomData = $.isPlainObject(this.options.customData) ? this.options.customData : {};

	/**
	 * Any data to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 **/
	this.customData = Object.assign({}, this.optsCustomData);

	/**
	 * Previous custom data from connector
	 * 
	 * @type Object|null
	 */
	this.prevCustomData = null;

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	*/
	this.customHeaders = $.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {};

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	this.xhrFields = $.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {};

	/**
	 * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc.
	 * 
	 * @type Function
	 */
	this.replaceXhrSend = function() {
		if (! savedXhrSend) {
			savedXhrSend = XMLHttpRequest.prototype.send;
		}
		XMLHttpRequest.prototype.send = function() {
			var xhr = this;
			// set request headers
			if (self.customHeaders) {
				$.each(self.customHeaders, function(key) {
					xhr.setRequestHeader(key, this);
				});
			}
			// set xhrFields
			if (self.xhrFields) {
				$.each(self.xhrFields, function(key) {
					if (key in xhr) {
						xhr[key] = this;
					}
				});
			}
			return savedXhrSend.apply(this, arguments);
		};
	};
	
	/**
	 * Restore saved original XMLHttpRequest.prototype.send
	 * 
	 * @type Function
	 */
	this.restoreXhrSend = function() {
		savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend);
	};

	/**
	 * command names for into queue for only cwd requests
	 * these commands aborts before `open` request
	 *
	 * @type Array
	 * @default ['tmb', 'parents']
	 */
	this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents'];

	/**
	 * ui.nav id prefix
	 * 
	 * @type String
	 */
	this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-';
	
	/**
	 * ui.cwd id prefix
	 * 
	 * @type String
	 */
	this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : '';
	
	// Increment elFinder.prototype.uniqueid
	++elFinder.prototype.uniqueid;
	
	/**
	 * URL to upload files
	 *
	 * @type String
	 **/
	this.uploadURL = opts.urlUpload || opts.url;
	
	/**
	 * Events namespace
	 *
	 * @type String
	 **/
	this.namespace = namespace;

	/**
	 * Today timestamp
	 *
	 * @type Number
	 **/
	this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000;
	
	/**
	 * Yesterday timestamp
	 *
	 * @type Number
	 **/
	this.yesterday = this.today - 86400;
	
	utc = this.options.UTCDate ? 'UTC' : '';
	
	this.getHours    = 'get'+utc+'Hours';
	this.getMinutes  = 'get'+utc+'Minutes';
	this.getSeconds  = 'get'+utc+'Seconds';
	this.getDate     = 'get'+utc+'Date';
	this.getDay      = 'get'+utc+'Day';
	this.getMonth    = 'get'+utc+'Month';
	this.getFullYear = 'get'+utc+'FullYear';
	
	/**
	 * elFinder node z-index (auto detect on elFinder load)
	 *
	 * @type null | Number
	 **/
	this.zIndex;

	/**
	 * Current search status
	 * 
	 * @type Object
	 */
	this.searchStatus = {
		state  : 0, // 0: search ended, 1: search started, 2: in search result
		query  : '',
		target : '',
		mime   : '',
		mixed  : false, // in multi volumes search: false or Array that target volume ids
		ininc  : false // in incremental search
	};

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 **/
	this.lang = this.storage('lang') || this.options.lang;
	if (this.lang === 'jp') {
		this.lang = this.options.lang = 'ja';
	}

	this.viewType = this.storage('view') || this.options.defaultView || 'icons';

	this.sortType = this.storage('sortType') || this.options.sortType || 'name';
	
	this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc';

	this.sortStickFolders = this.storage('sortStickFolders');
	if (this.sortStickFolders === null) {
		this.sortStickFolders = !!this.options.sortStickFolders;
	} else {
		this.sortStickFolders = !!this.sortStickFolders;
	}

	this.sortAlsoTreeview = this.storage('sortAlsoTreeview');
	if (this.sortAlsoTreeview === null || this.options.sortAlsoTreeview === null) {
		this.sortAlsoTreeview = !!this.options.sortAlsoTreeview;
	} else {
		this.sortAlsoTreeview = !!this.sortAlsoTreeview;
	}

	this.sortRules = $.extend(true, {}, this._sortRules, this.options.sortRules);
	
	$.each(this.sortRules, function(name, method) {
		if (typeof method != 'function') {
			delete self.sortRules[name];
		} 
	});
	
	this.compare = $.proxy(this.compare, this);
	
	/**
	 * Delay in ms before open notification dialog
	 *
	 * @type Number
	 * @default 500
	 **/
	this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500;
	
	/**
	 * Dragging UI Helper object
	 *
	 * @type jQuery | null
	 **/
	this.draggingUiHelper = null;
	
	/**
	 * Base droppable options
	 *
	 * @type Object
	 **/
	this.droppable = {
		greedy     : true,
		tolerance  : 'pointer',
		accept     : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename',
		hoverClass : this.res('class', 'adroppable'),
		classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
			'ui-droppable-hover': this.res('class', 'adroppable')
		},
		autoDisable: true, // elFinder original, see jquery.elfinder.js
		drop : function(e, ui) {
			var dst     = $(this),
				targets = $.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }),
				result  = [],
				dups    = [],
				faults  = [],
				isCopy  = ui.helper.hasClass('elfinder-drag-helper-plus'),
				c       = 'class',
				cnt, hash, i, h;
			
			if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) {
				return false;
			}
			if (dst.hasClass(self.res(c, 'cwdfile'))) {
				hash = self.cwdId2Hash(dst.attr('id'));
			} else if (dst.hasClass(self.res(c, 'navdir'))) {
				hash = self.navId2Hash(dst.attr('id'));
			} else {
				hash = cwd;
			}

			cnt = targets.length;
			
			while (cnt--) {
				h = targets[cnt];
				// ignore drop into itself or in own location
				if (h != hash && files[h].phash != hash) {
					result.push(h);
				} else {
					((isCopy && h !== hash && files[hash].write)? dups : faults).push(h);
				}
			}
			
			if (faults.length) {
				return false;
			}
			
			ui.helper.data('droped', true);
			
			if (dups.length) {
				ui.helper.hide();
				self.exec('duplicate', dups, {_userAction: true});
			}
			
			if (result.length) {
				ui.helper.hide();
				self.clipboard(result, !isCopy);
				self.exec('paste', hash, {_userAction: true}, hash).always(function(){
					self.clipboard([]);
					self.trigger('unlockfiles', {files : targets});
				});
				self.trigger('drop', {files : targets});
			}
		}
	};
	
	/**
	 * Return true if filemanager is active
	 *
	 * @return Boolean
	 **/
	this.enabled = function() {
		return enabled && this.visible();
	};
	
	/**
	 * Return true if filemanager is visible
	 *
	 * @return Boolean
	 **/
	this.visible = function() {
		return node[0].elfinder && node.is(':visible');
	};
	
	/**
	 * Return file is root?
	 * 
	 * @param  Object  target file object
	 * @return Boolean
	 */
	this.isRoot = function(file) {
		return (file.isroot || ! file.phash)? true : false;
	};
	
	/**
	 * Return root dir hash for current working directory
	 * 
	 * @param  String   target hash
	 * @param  Boolean  include fake parent (optional)
	 * @return String
	 */
	this.root = function(hash, fake) {
		hash = hash || cwd;
		var dir, i;
		
		if (! fake) {
			$.each(self.roots, function(id, rhash) {
				if (hash.indexOf(id) === 0) {
					dir = rhash;
					return false;
				}
			});
			if (dir) {
				return dir;
			}
		}
		
		dir = files[hash];
		while (dir && dir.phash && (fake || ! dir.isroot)) {
			dir = files[dir.phash];
		}
		if (dir) {
			return dir.hash;
		}
		
		while (i in files && files.hasOwnProperty(i)) {
			dir = files[i];
			if (dir.mime === 'directory' && !dir.phash && dir.read) {
				return dir.hash;
			}
		}
		
		return '';
	};
	
	/**
	 * Return current working directory info
	 * 
	 * @return Object
	 */
	this.cwd = function() {
		return files[cwd] || {};
	};
	
	/**
	 * Return required cwd option
	 * 
	 * @param  String  option name
	 * @param  String  target hash (optional)
	 * @return mixed
	 */
	this.option = function(name, target) {
		var res, item;
		target = target || cwd;
		if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') {
			return self.optionsByHashes[target][name];
		}
		if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) {
			res = '';
			$.each(self.volOptions, function(id, opt) {
				if (target.indexOf(id) === 0) {
					res = opt[name] || '';
					return false;
				}
			});
			return res;
		} else {
			return cwdOptions[name] || '';
		}
	};
	
	/**
	 * Return disabled commands by each folder
	 * 
	 * @param  Array  target hashes
	 * @return Array
	 */
	this.getDisabledCmds = function(targets, flip) {
		var disabled = {'hidden': true};
		if (! Array.isArray(targets)) {
			targets = [ targets ];
		}
		$.each(targets, function(i, h) {
			var disCmds = self.option('disabledFlip', h);
			if (disCmds) {
				Object.assign(disabled, disCmds);
			}
		});
		return flip? disabled : Object.keys(disabled);
	};
	
	/**
	 * Return file data from current dir or tree by it's hash
	 * 
	 * @param  String  file hash
	 * @return Object
	 */
	this.file = function(hash, alsoHidden) { 
		return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); 
	};
	
	/**
	 * Return all cached files
	 * 
	 * @param  String  parent hash
	 * @return Object
	 */
	this.files = function(phash) {
		var items = {};
		if (phash) {
			if (!ownFiles[phash]) {
				return {};
			}
			$.each(ownFiles[phash], function(h) {
				if (files[h]) {
					items[h] = files[h];
				} else {
					delete ownFiles[phash][h];
				}
			});
			return Object.assign({}, items);
		}
		return Object.assign({}, files);
	};
	
	/**
	 * Return list of file parents hashes include file hash
	 * 
	 * @param  String  file hash
	 * @return Array
	 */
	this.parents = function(hash) {
		var parents = [],
			dir;
		
		while (hash && (dir = this.file(hash))) {
			parents.unshift(dir.hash);
			hash = dir.phash;
		}
		return parents;
	};
	
	this.path2array = function(hash, i18) {
		var file, 
			path = [];
			
		while (hash) {
			if ((file = files[hash]) && file.hash) {
				path.unshift(i18 && file.i18 ? file.i18 : file.name);
				hash = file.isroot? null : file.phash;
			} else {
				path = [];
				break;
			}
		}
			
		return path;
	};
	
	/**
	 * Return file path or Get path async with jQuery.Deferred
	 * 
	 * @param  Object  file
	 * @param  Boolean i18
	 * @param  Object  asyncOpt
	 * @return String|jQuery.Deferred
	 */
	this.path = function(hash, i18, asyncOpt) { 
		var path = files[hash] && files[hash].path
			? files[hash].path
			: this.path2array(hash, i18).join(cwdOptions.separator);
		if (! asyncOpt || ! files[hash]) {
			return path;
		} else {
			asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt);
			
			var dfd    = $.Deferred(),
				notify = asyncOpt.notify,
				noreq  = false,
				req    = function() {
					self.request({
						data : {cmd : 'parents', target : files[hash].phash},
						notify : notify,
						preventFail : true
					})
					.done(done)
					.fail(function() {
						dfd.reject();
					});
				},
				done   = function() {
					self.one('parentsdone', function() {
						path = self.path(hash, i18);
						if (path === '' && noreq) {
							//retry with request
							noreq = false;
							req();
						} else {
							if (notify) {
								clearTimeout(ntftm);
								notify.cnt = -(parseInt(notify.cnt || 0));
								self.notify(notify);
							}
							dfd.resolve(path);
						}
					});
				},
				ntftm;
		
			if (path) {
				return dfd.resolve(path);
			} else {
				if (self.ui['tree']) {
					// try as no request
					if (notify) {
						ntftm = setTimeout(function() {
							self.notify(notify);
						}, self.notifyDelay);
					}
					noreq = true;
					done(true);
				} else {
					req();
				}
				return dfd;
			}
		}
	};
	
	/**
	 * Return file url if set
	 * 
	 * @param  String  file hash
	 * @param  Object  Options
	 * @return String|Object of jQuery Deferred
	 */
	this.url = function(hash, o) {
		var file   = files[hash],
			opts   = o || {},
			async  = opts.async || false,
			temp   = opts.temporary || false,
			onetm  = (opts.onetime && self.option('onetimeUrl', hash)) || false,
			absurl = opts.absurl || false,
			dfrd   = (async || onetm)? $.Deferred() : null,
			filter = function(url) {
				if (url && absurl) {
					url = self.convAbsUrl(url);
				}
				return url;
			},
			getUrl = function(url) {
				if (url) {
					return filter(url);
				}
				if (file.url) {
					return filter(file.url);
				}
				
				if (typeof baseUrl === 'undefined') {
					baseUrl = getBaseUrl();
				}
				
				if (baseUrl) {
					return filter(baseUrl + $.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'));
				}

				var params = Object.assign({}, self.customData, {
					cmd: 'file',
					target: file.hash
				});
				if (self.oldAPI) {
					params.cmd = 'open';
					params.current = file.phash;
				}
				return filter(self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + $.param(params, true));
			},
			getBaseUrl = function() {
				return self.option('url', (!self.isRoot(file) && file.phash) || file.hash);
			},
			baseUrl, res;
		
		if (!file || !file.read) {
			return async? dfrd.resolve('') : '';
		}
		
		if (onetm && (!file.url || file.url == '1') && !(baseUrl = getBaseUrl())) {
			async = true;
			this.request({
				data : { cmd : 'url', target : hash, options : { onetime: 1 } },
				preventDefault : true,
				options: {async: async},
				notify: {type : 'file', cnt : 1, hideCnt : true},
				progressBar: opts.progressBar
			}).done(function(data) {
				dfrd.resolve(filter(data.url || ''));
			}).fail(function() {
				dfrd.resolve('');
			});
		} else {
			if (file.url == '1' || (temp && !file.url && !(baseUrl = getBaseUrl()))) {
				this.request({
					data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } },
					preventDefault : true,
					options: {async: async},
					notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {},
					progressBar: opts.progressBar
				})
				.done(function(data) {
					file.url = data.url || '';
				})
				.fail(function() {
					file.url = '';
				})
				.always(function() {
					var url;
					if (file.url && temp) {
						url = file.url;
						file.url = '1'; // restore
					}
					if (async) {
						dfrd.resolve(getUrl(url));
					} else {
						return getUrl(url);
					}
				});
			} else {
				if (async) {
					dfrd.resolve(getUrl());
				} else {
					return getUrl();
				}
			}
		}
		if (async) {
			return dfrd;
		}
	};
	
	/**
	 * Return file url for the extarnal service
	 *
	 * @param      String  hash     The hash
	 * @param      Object  options  The options
	 * @return     Object  jQuery Deferred
	 */
	this.forExternalUrl = function(hash, options) {
		var onetime = self.option('onetimeUrl', hash),
			opts = {
				async: true,
				absurl: true
			};

		opts[onetime? 'onetime' : 'temporary'] = true;
		return self.url(hash, Object.assign({}, options, opts));
	};

	/**
	 * Return file url for open in elFinder
	 * 
	 * @param  String  file hash
	 * @param  Boolean for download link
	 * @param      Object  requestOpts   The request options
	 * @return String
	 */
	this.openUrl = function(hash, download, callback, requestOpts) {
		var file = files[hash],
			url  = '',
			onetimeSize = (requestOpts || {}).onetimeSize || (5 * 1024 * 1024);
		
		if (!file || !file.read) {
			return '';
		}
		
		if (!download || download === 'sameorigin') {
			if (file.url) {
				if (file.url != 1) {
					url = file.url;
				}
			} else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) {
				url = cwdOptions.url + $.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/');
			}
			if (!download || this.isSameOrigin(url)) {
				if (url) {
					url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000));
					if (callback) {
						callback(url);
						return;
					} else {
						return url;
					}
				}
			}
		}
		
		if (callback && this.hasParrotHeaders()) {
			if (!requestOpts) {
				requestOpts = {};
			} else {
				delete requestOpts.onetimeSize;
			}
			if (!requestOpts.onetime && !requestOpts.temporary && file.size > onetimeSize) {
				if (file.mime.match(/^video|audio/)) {
					requestOpts.temporary = true;
				} else {
					requestOpts.onetime = true;
				}
			}
			if (requestOpts.onetime || requestOpts.temporary) {
				return this.url(file.hash, Object.assign({
					async: true
				}, requestOpts)).done(function(url) {
					callback(url);
				}).fail(function() {
					callback('');
				});
			} else {
				return this.getContents(hash, 'blob', requestOpts).done(function(blob){
					url = (window.URL || window.webkitURL).createObjectURL(blob);
					callback(url);
				}).fail(function() {
					callback('');
				});
			}
		} else {
			url = this.options.url;
			url = url + (url.indexOf('?') === -1 ? '?' : '&')
				+ (this.oldAPI ? 'cmd=open&current='+file.phash : 'cmd=file')
				+ '&target=' + file.hash
				+ '&_t=' + (file.ts || parseInt(+new Date()/1000));
			
			if (download === true) {
				url += '&download=1';
			}
			
			$.each(this.customData, function(key, val) {
				url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val);
			});
			if (callback) {
				callback(url);
				return;
			} else {
				return url;
			}
		}
	};
	
	/**
	 * Return thumbnail url
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	this.tmb = function(file) {
		var tmbUrl, tmbCrop,
			cls    = 'elfinder-cwd-bgurl',
			url    = '',
			cData  = {},
			n      = 0;

		if ($.isPlainObject(file)) {
			if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) {
				tmbUrl = self.option('tmbUrl', file.hash);
				tmbCrop = self.option('tmbCrop', file.hash);
			} else {
				tmbUrl = cwdOptions.tmbUrl;
				tmbCrop = cwdOptions.tmbCrop;
			}
			if (tmbCrop) {
				cls += ' elfinder-cwd-bgurl-crop';
			}
			if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) {
				url = self.openUrl(file.hash);
				cls += ' elfinder-cwd-bgself';
			} else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) {
				url = tmbUrl + file.tmb;
			} else if (self.newAPI && file && file.tmb && file.tmb != 1) {
				url = file.tmb;
			}
			if (url) {
				if (tmbUrl !== 'self') {
					if (file.ts) {
						cData._t = file.ts;
					}
					if (cwdOptions.tmbReqCustomData && Object.keys(this.customData).length) {
						cData = Object.assign(cData, this.customData);
					}
					if (Object.keys(cData).length) {
						url += (url.match(/\?/) ? '&' : '?');
						$.each(cData, function (key, val) {
							url += ((n++ === 0)? '' : '&') + encodeURIComponent(key) + '=' + encodeURIComponent(val);
						});
					}
				}
				return { url: url, className: cls };
			}
		}
		
		return false;
	};
	
	/**
	 * Return selected files hashes
	 *
	 * @return Array
	 **/
	this.selected = function() {
		return selected.slice(0);
	};
	
	/**
	 * Return selected files info
	 * 
	 * @return Array
	 */
	this.selectedFiles = function() {
		return $.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; });
	};
	
	/**
	 * Return true if file with required name existsin required folder
	 * 
	 * @param  String  file name
	 * @param  String  parent folder hash
	 * @return Boolean
	 */
	this.fileByName = function(name, phash) {
		var hash;
	
		for (hash in files) {
			if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) {
				return files[hash];
			}
		}
	};
	
	/**
	 * Valid data for required command based on rules
	 * 
	 * @param  String  command name
	 * @param  Object  cammand's data
	 * @return Boolean
	 */
	this.validResponse = function(cmd, data) {
		return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data);
	};
	
	/**
	 * Return bytes from ini formated size
	 * 
	 * @param  String  ini formated size
	 * @return Integer
	 */
	this.returnBytes = function(val) {
		var last;
		if (isNaN(val)) {
			if (! val) {
				val = '';
			}
			// for ex. 1mb, 1KB
			val = val.replace(/b$/i, '');
			last = val.charAt(val.length - 1).toLowerCase();
			val = val.replace(/[tgmk]$/i, '');
			if (last == 't') {
				val = val * 1024 * 1024 * 1024 * 1024;
			} else if (last == 'g') {
				val = val * 1024 * 1024 * 1024;
			} else if (last == 'm') {
				val = val * 1024 * 1024;
			} else if (last == 'k') {
				val = val * 1024;
			}
			val = isNaN(val)? 0 : parseInt(val);
		} else {
			val = parseInt(val);
			if (val < 1) val = 0;
		}
		return val;
	};
	
	/**
	 * Process ajax request.
	 * Fired events :
	 * @todo
	 * @example
	 * @todo
	 * @return $.Deferred
	 */
	this.request = function(opts) { 
		var self     = this,
			o        = this.options,
			dfrd     = $.Deferred(),
			// request ID
			reqId    = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), 
			// request data
			data     = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts),
			// command name
			cmd      = data.cmd,
			// request type is binary
			isBinary = (opts.options || {}).dataType === 'binary',
			// current cmd is "open"
			isOpen   = (!opts.asNotOpen && cmd === 'open'),
			// the tree option is enabled (for "open" command) 
			isTree   = (data.tree === 1),
			// call default fail callback (display error dialog) ?
			deffail  = !(isBinary || opts.preventDefault || opts.preventFail),
			// call default success callback ?
			defdone  = !(isBinary || opts.preventDefault || opts.preventDone),
			// current progress of receive data
			prog     = opts.progressVal || 20,
			// timer of fake progress
			progTm   = null,
			// whether the notification dialog is currently displayed
			hasNotify= false,
			// options for notify dialog
			notify   = !opts.progressBar? (opts.notify? Object.assign({progress: prog * opts.notify.cnt}, opts.notify) : {}) : {},
			// make cancel button
			cancel   = !!opts.cancel,
			// do not normalize data - return as is
			raw      = isBinary || !!opts.raw,
			// sync files on request fail
			syncOnFail = opts.syncOnFail,
			// use lazy()
			lazy     = !!opts.lazy,
			// prepare function before done()
			prepare  = opts.prepare,
			// navigate option object when cmd done
			navigate = opts.navigate,
			// open notify dialog timeout
			timeout,
			// use browser cache
			useCache = (opts.options || {}).cache,
			// request options
			options = Object.assign({
				url      : o.url,
				async    : true,
				type     : this.requestType,
				dataType : 'json',
				cache    : (self.api >= 2.1029), // api >= 2.1029 has unique request ID
				data     : data,
				headers  : this.customHeaders,
				xhrFields: this.xhrFields,
				progress : function(e) {
					var p = e.loaded / e.total * 100;
					progTm && clearTimeout(progTm);
					if (opts.progressBar) {
						try {
							opts.progressBar.width(p + '%');
						} catch(e) {}
					} else {
						if (hasNotify && notify.type) {
							p = p * notify.cnt;
							if (prog < p) {
								self.notify({
									type: notify.type,
									progress: p - prog,
									cnt: 0,
									hideCnt: notify.hideCnt
								});
								prog = p;
							}
						}
					}
					if (opts.progress) {
						try {
							opts.progress(e);
						} catch(e) {}
					}
				}
			}, opts.options || {}),
			/**
			 * Default success handler. 
			 * Call default data handlers and fire event with command name.
			 *
			 * @param Object  normalized response data
			 * @return void
			 **/
			done = function(data) {
				data.warning && self.error(data.warning);
				
				if (isOpen) {
					open(data);
				} else {
					self.updateCache(data);
				}
				
				self.lazy(function() {
					// fire some event to update cache/ui
					data.removed && data.removed.length && self.remove(data);
					data.added   && data.added.length   && self.add(data);
					data.changed && data.changed.length && self.change(data);
				}).then(function() {
					// fire event with command name
					return self.lazy(function() {
						self.trigger(cmd, data, false);
					});
				}).then(function() {
					// fire event with command name + 'done'
					return self.lazy(function() {
						self.trigger(cmd + 'done');
					});
				}).then(function() {
					// make toast message
					if (data.toasts && Array.isArray(data.toasts)) {
						$.each(data.toasts, function() {
							this.msg && self.toast(this);
						});
					}
					// force update content
					data.sync && self.sync();
				});
			},
			/**
			 * Request error handler. Reject dfrd with correct error message.
			 *
			 * @param jqxhr  request object
			 * @param String request status
			 * @return void
			 **/
			error = function(xhr, status) {
				var error, data, 
					d = self.options.debug;
				
				switch (status) {
					case 'abort':
						error = xhr.quiet ? '' : ['errConnect', 'errAbort'];
						break;
					case 'timeout':	    
						error = ['errConnect', 'errTimeout'];
						break;
					case 'parsererror': 
						error = ['errResponse', 'errDataNotJSON'];
						if (xhr.responseText) {
							if (! cwd || (d && (d === 'all' || d['backend-error']))) {
								error.push(xhr.responseText);
							}
						}
						break;
					default:
						if (xhr.responseText) {
							// check responseText, Is that JSON?
							try {
								data = JSON.parse(xhr.responseText);
								if (data && data.error) {
									error = data.error;
								}
							} catch(e) {}
						}
						if (! error) {
							if (xhr.status == 403) {
								error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status];
							} else if (xhr.status == 404) {
								error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status];
							} else if (xhr.status >= 500) {
								error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status];
							} else {
								if (xhr.status == 414 && options.type === 'get') {
									// retry by POST method
									options.type = 'post';
									self.abortXHR(xhr);
									dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success);
									return;
								}
								error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status];
							} 
						}
				}
				
				self.trigger(cmd + 'done');
				dfrd.reject({error: error}, xhr, status);
			},
			/**
			 * Request success handler. Valid response data and reject/resolve dfrd.
			 *
			 * @param Object  response data
			 * @param String request status
			 * @return void
			 **/
			success = function(response) {
				// Set currrent request command name
				self.currentReqCmd = cmd;
				
				response.debug && self.responseDebug(response);
				
				self.setCustomHeaderByXhr(xhr);

				if (raw) {
					self.abortXHR(xhr);
					response && response.debug && self.debug('backend-debug', response);
					return dfrd.resolve(response);
				}
				
				if (!response) {
					return dfrd.reject({error :['errResponse', 'errDataEmpty']}, xhr, response);
				} else if (!$.isPlainObject(response)) {
					return dfrd.reject({error :['errResponse', 'errDataNotJSON']}, xhr, response);
				} else if (response.error) {
					if (isOpen) {
						// check leafRoots
						$.each(self.leafRoots, function(phash, roots) {
							self.leafRoots[phash] = $.grep(roots, function(h) { return h !== data.target; });
						});
					}
					return dfrd.reject({error :response.error}, xhr, response);
				}
				
				var resolve = function() {
					var pushLeafRoots = function(name) {
						if (self.leafRoots[data.target] && response[name]) {
							$.each(self.leafRoots[data.target], function(i, h) {
								var root;
								if (root = self.file(h)) {
									response[name].push(root);
								}
							});
						}
					},
					setTextMimes = function() {
						self.textMimes = {};
						$.each(self.res('mimes', 'text'), function() {
							self.textMimes[this.toLowerCase()] = true;
						});
					},
					actionTarget;
					
					if (isOpen && !isTree) {
						pushLeafRoots('files');
					} else if (cmd === 'tree') {
						pushLeafRoots('tree');
					}
					
					response = self.normalize(response);
					
					if (!self.validResponse(cmd, response)) {
						return dfrd.reject({error :(response.norError || 'errResponse')}, xhr, response);
					}
					
					if (isOpen) {
						if (!self.api) {
							self.api    = response.api || 1;
							if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') {
								self.api = '2.1';
							}
							self.newAPI = self.api >= 2;
							self.oldAPI = !self.newAPI;
						}
						
						if (response.textMimes && Array.isArray(response.textMimes)) {
							self.resources.mimes.text = response.textMimes;
							setTextMimes();
						}
						!self.textMimes && setTextMimes();
						
						if (response.options) {
							cwdOptions = Object.assign({}, cwdOptionsDefault, response.options);
						}

						if (response.netDrivers) {
							self.netDrivers = response.netDrivers;
						}

						if (response.maxTargets) {
							self.maxTargets = response.maxTargets;
						}

						if (!!data.init) {
							self.uplMaxSize = self.returnBytes(response.uplMaxSize);
							self.uplMaxFile = !!response.uplMaxFile? Math.min(parseInt(response.uplMaxFile), 50) : 20;
						}
					}

					if (typeof prepare === 'function') {
						prepare(response);
					}
					
					if (navigate) {
						actionTarget = navigate.target || 'added';
						if (response[actionTarget] && response[actionTarget].length) {
							self.one(cmd + 'done', function() {
								var targets  = response[actionTarget],
									newItems = self.findCwdNodes(targets),
									inCwdHashes = function() {
										var cwdHash = self.cwd().hash;
										return $.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; });
									},
									hashes   = inCwdHashes(),
									makeToast  = function(t) {
										var node = void(0),
											data = t.action? t.action.data : void(0),
											cmd, msg, done;
										if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) {
											done = t.action.done;
											data = t.action.data;
											node = $('<div></div>')
												.append(
													$('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'
														+self.i18n(msg)
														+'</span></button>')
													.on('mouseenter mouseleave', function(e) { 
														$(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
													})
													.on('click', function() {
														self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: $(this) });
														if (done) {
															self.one(cmd+'done', function() {
																if (typeof done === 'function') {
																	done();
																} else if (done === 'select') {
																	self.trigger('selectfiles', {files : inCwdHashes()});
																}
															});
														}
													})
												);
										}
										delete t.action;
										t.extNode = node;
										return t;
									};
								
								if (! navigate.toast) {
									navigate.toast = {};
								}
								
								!navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? $.map(targets, function(f) { return f.hash; }) : hashes});
								
								if (newItems.length) {
									if (!navigate.noscroll) {
										newItems.first().trigger('scrolltoview', {blink : false});
										self.resources.blink(newItems, 'lookme');
									}
									if ($.isPlainObject(navigate.toast.incwd)) {
										self.toast(makeToast(navigate.toast.incwd));
									}
								} else {
									if ($.isPlainObject(navigate.toast.inbuffer)) {
										self.toast(makeToast(navigate.toast.inbuffer));
									}
								}
							});
						}
					}
					
					dfrd.resolve(response);
					
					response.debug && self.debug('backend-debug', response);
				};
				self.abortXHR(xhr);
				lazy? self.lazy(resolve) : resolve();
			},
			xhr, _xhr,
			xhrAbort = function(e) {
				if (xhr && xhr.state() === 'pending') {
					self.abortXHR(xhr, { quiet: true , abort: true });
					if (!e || (e.type !== 'unload' && e.type !== 'destroy')) {
						self.autoSync();
					}
				}
			},
			abort = function(e){
				self.trigger(cmd + 'done');
				if (e.type == 'autosync') {
					if (e.data.action != 'stop') return;
				} else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') {
					if (!e.data.added || !e.data.added.length) {
						return;
					}
				}
				xhrAbort(e);
			},
			request = function(mode) {
				var queueAbort = function() {
					syncOnFail = false;
					dfrd.reject();
				};
				
				if (mode) {
					if (mode === 'cmd') {
						return cmd;
					}
				}
				
				if (isOpen) {
					if (currentOpenCmd && currentOpenCmd.state() === 'pending') {
						if (currentOpenCmd._target === data.target) {
							return dfrd.reject('openabort');
						} else {
							if (currentOpenCmd.xhr) {
								currentOpenCmd.xhr.queueAbort();
							} else {
								currentOpenCmd.reject('openabort');
							}
						}
					}
					currentOpenCmd = dfrd;
					currentOpenCmd._target = data.target;
				}
				
				dfrd.always(function() {
					delete options.headers['X-elFinderReqid'];
					if (isOpen) {
						currentOpenCmd = null;
					}
				}).fail(function(error, xhr, response) {
					var errData, errMsg;

					if (isOpen && error === 'openabort') {
						error = '';
						syncOnFail = false;
					}

					errData = {
						cmd: cmd,
						err: error,
						xhr: xhr,
						rc: response
					};

					// unset this cmd queue when user canceling
					// see notify : function - `cancel.reject(0);`
					if (error === 0) {
						if (requestQueue.length) {
							requestQueue = $.grep(requestQueue, function(req) {
								return (req('cmd') === cmd) ? false : true;
							});
						}
					}
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._getEvent && errData._getEvent().isDefaultPrevented()) {
						deffail = false;
						syncOnFail = false;
						if (error) {
							error.error = '';
						}
					}
					// abort xhr
					xhrAbort();
					if (isOpen) {
						openDir = self.file(data.target);
						openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid];
					}
					self.trigger(cmd + 'fail', response);
					errMsg = (typeof error === 'object')? error.error : error;
					if (errMsg) {
						deffail ? self.error(errMsg) : self.debug('error', self.i18n(errMsg));
					}
					syncOnFail && self.sync();
				});

				if (!cmd) {
					syncOnFail = false;
					return dfrd.reject({error :'errCmdReq'});
				}
				
				if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) {
					syncOnFail = false;
					return dfrd.reject({error :['errMaxTargets', self.maxTargets]});
				}

				defdone && dfrd.done(done);
				
				// quiet abort not completed "open" requests
				if (isOpen) {
					while ((_xhr = queue.pop())) {
						_xhr.queueAbort();
					}
					if (cwd !== data.target) {
						while ((_xhr = cwdQueue.pop())) {
							_xhr.queueAbort();
						}
					}
				}

				// trigger abort autoSync for commands to add the item
				if ($.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) {
					if (cmd !== 'autosync') {
						self.autoSync('stop');
						dfrd.always(function() {
							self.autoSync();
						});
					}
					self.trigger('openxhrabort');
				}

				delete options.preventFail;

				if (self.api >= 2.1029) {
					if (useCache) {
						options.headers['X-elFinderReqid'] = reqId;
					} else {
						Object.assign(options.data, { reqid : reqId });
					}
				}
				
				// function for set value of this syncOnFail
				dfrd.syncOnFail = function(state) {
					syncOnFail = !!state;
				};

				requestCnt++;

				dfrd.xhr = xhr = self.transport.send(options).always(function() {
					// set responseURL from native xhr object
					if (options._xhr && typeof options._xhr.responseURL !== 'undefined') {
						xhr.responseURL = options._xhr.responseURL || '';
					}
					--requestCnt;
					if (requestQueue.length) {
						requestQueue.shift()();
					}
				}).fail(error).done(success);
				
				if (self.api >= 2.1029) {
					xhr._requestId = reqId;
				}
				
				if (isOpen || (data.compare && cmd === 'info')) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add autoSync xhr into queue
					queue.unshift(xhr);
					// bind abort()
					data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort);
					dfrd.always(function() {
						var ndx = $.inArray(xhr, queue);
						data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort);
						ndx !== -1 && queue.splice(ndx, 1);
					});
				} else if ($.inArray(cmd, self.abortCmdsOnOpen) !== -1) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add "open" xhr, only cwd xhr into queue
					cwdQueue.unshift(xhr);
					dfrd.always(function() {
						var ndx = $.inArray(xhr, cwdQueue);
						ndx !== -1 && cwdQueue.splice(ndx, 1);
					});
				}
				
				// abort pending xhr on window unload or elFinder destroy
				self.bind('unload destroy', abort);
				dfrd.always(function() {
					self.unbind('unload destroy', abort);
				});
				
				return dfrd;
			},
			queueingRequest = function() {
				// show notify
				if (notify.type && notify.cnt) {
					if (cancel) {
						notify.cancel = dfrd;
						opts.eachCancel && (notify.id = +new Date());
					}
					timeout = setTimeout(function() {
						// start fake count up
						progTm = setTimeout(progFakeUp, 1000);
						self.notify(notify);
						hasNotify = true;
						dfrd.always(function() {
							notify.cnt = -(parseInt(notify.cnt)||0);
							self.notify(notify);
							hasNotify = false;
						});
					}, self.notifyDelay);
					
					dfrd.always(function() {
						clearTimeout(timeout);
					});
				}
				// queueing
				if (requestCnt < requestMaxConn) {
					// do request
					return request();
				} else {
					if (isOpen) {
						requestQueue.unshift(request);
					} else {
						requestQueue.push(request);
					}
					return dfrd;
				}
			},
			progFakeUp = function() {
				var add;
				if (hasNotify && progTm) {
					add = 1 * notify.cnt;
					progTm = null;
					self.notify({
						type: notify.type,
						progress: add,
						cnt: 0,
						hideCnt: notify.hideCnt
					});
					prog += add;
					if ((prog / notify.cnt) < 80) {
						progTm = setTimeout(progFakeUp, 500);
					}
				}
			},
			bindData = {opts: opts, result: true},
			openDir;
		
		// prevent request initial request is completed
		if (!self.api && !data.init) {
			syncOnFail = false;
			return dfrd.reject();
		}

		// trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result"
		self.trigger('request.' + cmd, bindData, true);
		
		if (! bindData.result) {
			self.trigger(cmd + 'done');
			return dfrd.reject();
		} else if (typeof bindData.result === 'object' && bindData.result.promise) {
			bindData.result
				.done(queueingRequest)
				.fail(function() {
					self.trigger(cmd + 'done');
					dfrd.reject();
				});
			return dfrd;
		}
		
		return queueingRequest();
	};
	
	/**
	 * Call cache()
	 * Store info about files/dirs in "files" object.
	 *
	 * @param  Array  files
	 * @param  String type
	 * @return void
	 */
	this.cache = function(dataArray, type) {
		if (! Array.isArray(dataArray)) {
			dataArray = [ dataArray ];
		}
		cache(dataArray, type);
	};
	
	/**
	 * Update file object caches by respose data object
	 * 
	 * @param  Object  respose data object
	 * @return void
	 */
	this.updateCache = function(data) {
		if ($.isPlainObject(data)) {
			data.files && data.files.length && cache(data.files, 'files');
			data.tree && data.tree.length && cache(data.tree, 'tree');
			data.removed && data.removed.length && remove(data.removed);
			data.added && data.added.length && cache(data.added, 'add');
			data.changed && data.changed.length && cache(data.changed, 'change');
		}
	};
	
	/**
	 * Compare current files cache with new files and return diff
	 * 
	 * @param  Array   new files
	 * @param  String  target folder hash
	 * @param  Array   exclude properties to compare
	 * @return Object
	 */
	this.diff = function(incoming, onlydir, excludeProps) {
		var raw       = {},
			added     = [],
			removed   = [],
			changed   = [],
			excludes  = null,
			isChanged = function(hash) {
				var l = changed.length;

				while (l--) {
					if (changed[l].hash == hash) {
						return true;
					}
				}
			};
		
		$.each(incoming, function(i, f) {
			raw[f.hash] = f;
		});
		
		// make excludes object
		if (excludeProps && excludeProps.length) {
			excludes = {};
			$.each(excludeProps, function() {
				excludes[this] = true;
			});
		}
		
		// find removed
		$.each(files, function(hash, f) {
			if (! raw[hash] && (! onlydir || f.phash === onlydir)) {
				removed.push(hash);
			}
		});
		
		// compare files
		$.each(raw, function(hash, file) {
			var origin  = files[hash],
				orgKeys = {},
				chkKeyLen;

			if (!origin) {
				added.push(file);
			} else {
				// make orgKeys object
				$.each(Object.keys(origin), function() {
					orgKeys[this] = true;
				});
				$.each(file, function(prop) {
					delete orgKeys[prop];
					if (! excludes || ! excludes[prop]) {
						if (file[prop] !== origin[prop]) {
							changed.push(file);
							orgKeys = {};
							return false;
						}
					}
				});
				chkKeyLen = Object.keys(orgKeys).length;
				if (chkKeyLen !== 0) {
					if (excludes) {
						$.each(orgKeys, function(prop) {
							if (excludes[prop]) {
								--chkKeyLen;
							}
						});
					}
					(chkKeyLen !== 0) && changed.push(file);
				}
			}
		});
		
		// parents of removed dirs mark as changed (required for tree correct work)
		$.each(removed, function(i, hash) {
			var file  = files[hash], 
				phash = file.phash;

			if (phash 
			&& file.mime == 'directory' 
			&& $.inArray(phash, removed) === -1 
			&& raw[phash] 
			&& !isChanged(phash)) {
				changed.push(raw[phash]);
			}
		});
		
		return {
			added   : added,
			removed : removed,
			changed : changed
		};
	};
	
	/**
	 * Sync Stopper
	 * 
	 * @type Boolean
	 */
	this.syncStopper = false;

	/**
	 * Sync content
	 * 
	 * @return jQuery.Deferred
	 */
	this.sync = function(onlydir, polling) {
		if (this.syncStopper) {
			return $.Deferred().reject();
		}
		this.syncStopper = true;
		this.autoSync('stop');
		var self  = this,
			compare = function(){
				var c = '', cnt = 0, mtime = 0;
				if (onlydir && polling) {
					$.each(files, function(h, f) {
						if (f.phash && f.phash === onlydir) {
							++cnt;
							mtime = Math.max(mtime, f.ts);
						}
						c = cnt+':'+mtime;
					});
				}
				return c;
			},
			comp  = compare(),
			odataRoots,
			dfrd  = $.Deferred().always(function() { !reqFail && self.trigger('sync'); }),
			tree = (! onlydir && this.ui.tree) ? 1 : 0,
			opts = [this.request({
				data           : {cmd : 'open', reload : 1, target : cwd, tree : tree, compare : comp},
				preventDefault : true
			})],
			exParents = function() {
				var parents = [],
					curRoot = self.file(self.root(cwd)),
					curId = curRoot? curRoot.volumeid : null,
					phash = self.cwd().phash,
					isroot,pdir;
				
				while(phash) {
					if (pdir = self.file(phash)) {
						if (phash.indexOf(curId) !== 0) {
							parents.push( {target: phash, cmd: 'tree'} );
							if (! self.isRoot(pdir)) {
								parents.push( {target: phash, cmd: 'parents'} );
							}
							curRoot = self.file(self.root(phash));
							curId = curRoot? curRoot.volumeid : null;
						}
						phash = pdir.phash;
					} else {
						phash = null;
					}
				}
				return parents;
			},
			reqFail;
		
		if (! onlydir && self.api >= 2) {
			(cwd !== this.root()) && opts.push(this.request({
				data           : {cmd : 'parents', target : cwd},
				preventDefault : true
			}));
			$.each(exParents(), function(i, data) {
				opts.push(self.request({
					data           : {cmd : data.cmd, target : data.target},
					preventDefault : true
				}));
			});
		}
		$.when.apply($, opts)
		.fail(function(error, xhr) {
			reqFail = (xhr && xhr.status != 200);
			if (! polling || $.inArray('errOpen', error) !== -1) {
				dfrd.reject(error);
				self.parseError(error) && self.request({
					data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
					notify : {type : 'open', cnt : 1, hideCnt : true}
				});
			} else {
				dfrd.reject((error && xhr.status != 0)? error : void 0);
			}
		})
		.done(function(odata) {
			var pdata, argLen, i;
			
			if (odata.cwd.compare) {
				if (comp === odata.cwd.compare) {
					return dfrd.reject();
				}
			}
			
			// for 2nd and more requests
			pdata = {tree : []};
			
			// results marge of 2nd and more requests
			argLen = arguments.length;
			if (argLen > 1) {
				for(i = 1; i < argLen; i++) {
					if (arguments[i].tree && arguments[i].tree.length) {
						pdata.tree.push.apply(pdata.tree, arguments[i].tree);
					}
				}
			}
			
			if (self.api < 2.1) {
				if (! pdata.tree) {
					pdata.tree = [];
				}
				pdata.tree.push(odata.cwd);
			}
			
			// data normalize
			odata = self.normalize(odata);
			if (!self.validResponse('open', odata)) {
				return dfrd.reject((odata.norError || 'errResponse'));
			}
			pdata = self.normalize(pdata);
			if (!self.validResponse('tree', pdata)) {
				return dfrd.reject((pdata.norError || 'errResponse'));
			}

			// When tree = 1, the server will return all volumes in response to the open command.
			// Remove volumes from the tree command that do not exist anymore.
			if (tree && pdata && pdata.tree) {
				odataRoots = $.map($.grep(odata.files, function(f) {return f.isroot;}), function(f) {return f.hash;});
				pdata.tree = $.grep(pdata.tree, function(f) {return !f.isroot || odataRoots.indexOf(f.hash) >= 0;});
			}

			var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir);

			diff.added.push(odata.cwd);
			
			self.updateCache(diff);
			
			// trigger events
			diff.removed.length && self.remove(diff);
			diff.added.length   && self.add(diff);
			diff.changed.length && self.change(diff);
			return dfrd.resolve(diff);
		})
		.always(function() {
			self.syncStopper = false;
			self.autoSync();
		});
		
		return dfrd;
	};
	
	this.upload = function(files) {
		return this.transport.upload(files, this);
	};
	
	/**
	 * Bind keybord shortcut to keydown event
	 *
	 * @example
	 *    elfinder.shortcut({ 
	 *       pattern : 'ctrl+a', 
	 *       description : 'Select all files', 
	 *       callback : function(e) { ... }, 
	 *       keypress : true|false (bind to keypress instead of keydown) 
	 *    })
	 *
	 * @param  Object  shortcut config
	 * @return elFinder
	 */
	this.shortcut = function(s) {
		var patterns, pattern, code, i, parts;
		
		if (this.options.allowShortcuts && s.pattern && typeof s.callback === 'function') {
			patterns = s.pattern.toUpperCase().split(/\s+/);
			
			for (i= 0; i < patterns.length; i++) {
				pattern = patterns[i];
				parts   = pattern.split('+');
				code    = (code = parts.pop()).length == 1 
					? (code > 0 ? code : code.charCodeAt(0))
					: (code > 0 ? code : $.ui.keyCode[code]);

				if (code && !shortcuts[pattern]) {
					shortcuts[pattern] = {
						keyCode     : code,
						altKey      : $.inArray('ALT', parts)   != -1,
						ctrlKey     : $.inArray('CTRL', parts)  != -1,
						shiftKey    : $.inArray('SHIFT', parts) != -1,
						type        : s.type || 'keydown',
						callback    : s.callback,
						description : s.description,
						pattern     : pattern
					};
				}
			}
		}
		return this;
	};
	
	/**
	 * Registered shortcuts
	 *
	 * @type Object
	 **/
	this.shortcuts = function() {
		var ret = [];
		
		$.each(shortcuts, function(i, s) {
			ret.push([s.pattern, self.i18n(s.description)]);
		});
		return ret;
	};
	
	/**
	 * Get/set clipboard content.
	 * Return new clipboard content.
	 *
	 * @example
	 *   this.clipboard([]) - clean clipboard
	 *   this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted
	 * 
	 * @param  Array    new files hashes
	 * @param  Boolean  cut files?
	 * @return Array
	 */
	this.clipboard = function(hashes, cut) {
		var map = function() { return $.map(clipboard, function(f) { return f.hash; }); };

		if (hashes !== void(0)) {
			clipboard.length && this.trigger('unlockfiles', {files : map()});
			remember = {};
			
			clipboard = $.map(hashes||[], function(hash) {
				var file = files[hash];
				if (file) {
					
					remember[hash] = true;
					
					return {
						hash   : hash,
						phash  : file.phash,
						name   : file.name,
						mime   : file.mime,
						read   : file.read,
						locked : file.locked,
						cut    : !!cut
					};
				}
				return null;
			});
			this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)});
			cut && this.trigger('lockfiles', {files : map()});
		}

		// return copy of clipboard instead of refrence
		return clipboard.slice(0, clipboard.length);
	};
	
	/**
	 * Return true if command enabled
	 * 
	 * @param  String       command name
	 * @param  String|void  hash for check of own volume's disabled cmds
	 * @return Boolean
	 */
	this.isCommandEnabled = function(name, dstHash) {
		var disabled, cmd,
			cvid = self.cwd().volumeid || '';
		
		// In serach results use selected item hash to check
		if (!dstHash && self.searchStatus.state > 1 && self.selected().length) {
			dstHash = self.selected()[0];
		}
		if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) {
			disabled = self.option('disabledFlip', dstHash);
			//if (! disabled) {
			//	disabled = {};
			//}
		} else {
			disabled = cwdOptions.disabledFlip/* || {}*/;
		}
		cmd = this._commands[name];
		return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false;
	};
	
	/**
	 * Exec command and return result;
	 *
	 * @param  String         command name
	 * @param  String|Array   usualy files hashes
	 * @param  String|Array   command options
	 * @param  String|void    hash for enabled check of own volume's disabled cmds
	 * @return $.Deferred
	 */		
	this.exec = function(cmd, files, opts, dstHash) {
		var dfrd, resType;
		
		// apply commandMap for keyboard shortcut
		if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') {
			cmd = this.commandMap[cmd];
		}

		if (cmd === 'open') {
			if (this.searchStatus.state || this.searchStatus.ininc) {
				this.trigger('searchend', { noupdate: true });
			}
			this.autoSync('stop');
		}
		if (!dstHash && files) {
			if ($.isArray(files)) {
				if (files.length) {
					dstHash = files[0];
				}
			} else {
				dstHash = files;
			}
		}
		dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) 
			? this._commands[cmd].exec(files, opts) 
			: $.Deferred().reject('errUnknownCmd');
		
		resType = typeof dfrd;
		if (!(resType === 'object' && dfrd.promise)) {
			self.debug('warning', '"cmd.exec()" should be returned "$.Deferred" but cmd "' + cmd + '" returned "' + resType + '"');
			dfrd = $.Deferred().resolve();
		}
		
		this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash });
		return dfrd;
	};
	
	/**
	 * Create and return dialog.
	 *
	 * @param  String|DOMElement  dialog content
	 * @param  Object             dialog options
	 * @return jQuery
	 */
	this.dialog = function(content, options) {
		var dialog = $('<div></div>').append(content).appendTo(node).elfinderdialog(options, self),
			dnode  = dialog.closest('.ui-dialog'),
			resize = function(){
				! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit');
			};
		if (dnode.length) {
			self.bind('resize', resize);
			dnode.on('remove', function() {
				self.unbind('resize', resize);
			});
		}
		return dialog;
	};
	
	/**
	 * Create and return toast.
	 *
	 * @param  Object  toast options - see ui/toast.js
	 * @return jQuery
	 */
	this.toast = function(options) {
		return $('<div class="ui-front"></div>').appendTo(this.ui.toast).elfindertoast(options || {}, this);
	};
	
	/**
	 * Return UI widget or node
	 *
	 * @param  String  ui name
	 * @return jQuery
	 */
	this.getUI = function(ui) {
		return ui? (this.ui[ui] || $()) : node;
	};
	
	/**
	 * Return elFinder.command instance or instances array
	 *
	 * @param  String  command name
	 * @return Object | Array
	 */
	this.getCommand = function(name) {
		return name === void(0) ? this._commands : this._commands[name];
	};
	
	/**
	 * Resize elfinder node
	 * 
	 * @param  String|Number  width
	 * @param  String|Number  height
	 * @return void
	 */
	this.resize = function(w, h) {
		var getMargin = function() {
				var m = node.outerHeight(true) - node.innerHeight(),
					p = node;
				
				while(p.get(0) !== heightBase.get(0)) {
					p = p.parent();
					m += p.outerHeight(true) - p.innerHeight();
					if (! p.parent().length) {
						// reached the document
						break;
					}
				}
				return m;
			},
			fit = ! node.hasClass('ui-resizable'),
			prv = node.data('resizeSize') || {w: 0, h: 0},
			mt, size = {};

		if (heightBase && heightBase.data('resizeTm')) {
			clearTimeout(heightBase.data('resizeTm'));
		}
		
		if (! self.options.noResizeBySelf) {
			if (typeof h === 'string') {
				if (mt = h.match(/^([0-9.]+)%$/)) {
					// setup heightBase
					if (! heightBase || ! heightBase.length) {
						heightBase = $(window);
					}
					if (! heightBase.data('marginToMyNode')) {
						heightBase.data('marginToMyNode', getMargin());
					}
					if (! heightBase.data('fitToBaseFunc')) {
						heightBase.data('fitToBaseFunc', function(e) {
							var tm = heightBase.data('resizeTm');
							e.preventDefault();
							e.stopPropagation();
							tm && cancelAnimationFrame(tm);
							if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) {
								heightBase.data('rotated', self.UA.Rotated);
								heightBase.data('resizeTm', requestAnimationFrame(function() {
									self.restoreSize();
								}));
							}
						});
					}
					if (typeof heightBase.data('rotated') === 'undefined') {
						heightBase.data('rotated', self.UA.Rotated);
					}
					h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode');
					
					heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
					fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
				}
			}
			
			node.css({ width : w, height : parseInt(h) });
		}

		size.w = Math.round(node.width());
		size.h = Math.round(node.height());
		node.data('resizeSize', size);
		if (size.w !== prv.w || size.h !== prv.h) {
			node.trigger('resize');
			this.trigger('resize', {width : size.w, height : size.h});
		}
	};
	
	/**
	 * Restore elfinder node size
	 * 
	 * @return elFinder
	 */
	this.restoreSize = function() {
		this.resize(width, height);
	};
	
	this.show = function() {
		node.show();
		this.enable().trigger('show');
	};
	
	this.hide = function() {
		if (this.options.enableAlways) {
			prevEnabled = enabled;
			enabled = false;
		}
		this.disable();
		this.trigger('hide');
		node.hide();
	};
	
	/**
	 * Lazy execution function
	 * 
	 * @param  Object  function
	 * @param  Number  delay
	 * @param  Object  options
	 * @return Object  jQuery.Deferred
	 */
	this.lazy = function(func, delay, opts) {
		var busy = function(state) {
				var cnt = node.data('lazycnt'),
					repaint;
				
				if (state) {
					repaint = node.data('lazyrepaint')? false : opts.repaint;
					if (! cnt) {
						node.data('lazycnt', 1)
							.addClass('elfinder-processing');
					} else {
						node.data('lazycnt', ++cnt);
					}
					if (repaint) {
						node.data('lazyrepaint', true).css('display'); // force repaint
					}
				} else {
					if (cnt && cnt > 1) {
						node.data('lazycnt', --cnt);
					} else {
						repaint = node.data('lazyrepaint');
						node.data('lazycnt', 0)
							.removeData('lazyrepaint')
							.removeClass('elfinder-processing');
						repaint && node.css('display'); // force repaint;
						self.trigger('lazydone');
					}
				}
			},
			dfd  = $.Deferred(),
			callFunc = function() {
				dfd.resolve(func.call(dfd));
				busy(false);
			};
		
		delay = delay || 0;
		opts = opts || {};
		busy(true);
		
		if (delay) {
			setTimeout(callFunc, delay);
		} else {
			requestAnimationFrame(callFunc);
		}
		
		return dfd;
	};
	
	/**
	 * Destroy this elFinder instance
	 *
	 * @return void
	 **/
	this.destroy = function() {
		if (node && node[0].elfinder) {
			node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node);
			this.options.syncStart = false;
			this.autoSync('forcestop');
			this.trigger('destroy').disable();
			clipboard = [];
			selected = [];
			listeners = {};
			shortcuts = {};
			$(window).off('.' + namespace);
			$(document).off('.' + namespace);
			self.trigger = function(){};
			$(beeper).remove();
			node.off()
				.removeData()
				.empty()
				.append(prevContent.contents())
				.attr('class', prevContent.attr('class'))
				.attr('style', prevContent.attr('style'));
			delete node[0].elfinder;
			// restore kept events
			$.each(prevEvents, function(n, arr) {
				$.each(arr, function(i, o) {
					node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler);
				});
			});
		}
	};
	
	/**
	 * Start or stop auto sync
	 * 
	 * @param  String|Bool  stop
	 * @return void
	 */
	this.autoSync = function(mode) {
		var sync;
		if (self.options.sync >= 1000) {
			if (syncInterval) {
				clearTimeout(syncInterval);
				syncInterval = null;
				self.trigger('autosync', {action : 'stop'});
			}
			
			if (mode === 'stop') {
				++autoSyncStop;
			} else {
				autoSyncStop = Math.max(0, --autoSyncStop);
			}
			
			if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) {
				return;
			} 
			
			// run interval sync
			sync = function(start){
				var timeout;
				if (cwdOptions.syncMinMs && (start || syncInterval)) {
					start && self.trigger('autosync', {action : 'start'});
					timeout = Math.max(self.options.sync, cwdOptions.syncMinMs);
					syncInterval && clearTimeout(syncInterval);
					syncInterval = setTimeout(function() {
						var dosync = true, hash = cwd, cts;
						if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) {
							self.request({
								data : {cmd : 'info', targets : [hash], compare : cts, reload : 1},
								preventDefault : true
							})
							.done(function(data){
								var ts;
								dosync = true;
								if (data.compare) {
									ts = data.compare;
									if (ts == cts) {
										dosync = false;
									}
								}
								if (dosync) {
									self.sync(hash).always(function(){
										if (ts) {
											// update ts for cache clear etc.
											files[hash].ts = ts;
										}
										sync();
									});
								} else {
									sync();
								}
							})
							.fail(function(error, xhr){
								var err = self.parseError(error);
								if (err && xhr.status != 0) {
									self.error(err);
									if (Array.isArray(err) && $.inArray('errOpen', err) !== -1) {
										self.request({
											data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
											notify : {type : 'open', cnt : 1, hideCnt : true}
										});
									}
								} else {
									syncInterval = setTimeout(function() {
										sync();
									}, timeout);
								}
							});
						} else {
							self.sync(cwd, true).always(function(){
								sync();
							});
						}
					}, timeout);
				}
			};
			sync(true);
		}
	};
	
	/**
	 * Return bool is inside work zone of specific point
	 * 
	 * @param  Number event.pageX
	 * @param  Number event.pageY
	 * @return Bool
	 */
	this.insideWorkzone = function(x, y, margin) {
		var rectangle = this.getUI('workzone').data('rectangle');
		
		margin = margin || 1;
		if (x < rectangle.left + margin
		|| x > rectangle.left + rectangle.width + margin
		|| y < rectangle.top + margin
		|| y > rectangle.top + rectangle.height + margin) {
			return false;
		}
		return true;
	};
	
	/**
	 * Target ui node move to last of children of elFinder node fot to show front
	 * 
	 * @param  Object  target    Target jQuery node object
	 */
	this.toFront = function(target) {
		var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'),
			lastnode = nodes.last();
		nodes.css('z-index', '');
		$(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1);
	};
	
	/**
	 * Remove class 'elfinder-frontmost' and hide() to target ui node
	 *
	 * @param      Object   target  Target jQuery node object
	 * @param      Boolean  nohide  Do not hide
	 */
	this.toHide =function(target, nohide) {
		var tgt = $(target),
			last;

		!nohide && tgt.hide();
		if (tgt.hasClass('elfinder-frontmost')) {
			tgt.removeClass('elfinder-frontmost');
			last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last();
			if (last.length) {
				requestAnimationFrame(function() {
					if (!node.children('.elfinder-frontmost:visible').length) {
						self.toFront(last);
						last.trigger('frontmost');
					}
				});
			}
		}
	};

	/**
	 * Return css object for maximize
	 * 
	 * @return Object
	 */
	this.getMaximizeCss = function() {
		return {
			width   : '100%',
			height  : '100%',
			margin  : 0,
			top     : 0,
			left    : 0,
			display : 'block',
			position: 'fixed',
			zIndex  : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000),
			maxWidth : '',
			maxHeight: ''
		};
	};
	
	// Closure for togglefullscreen
	(function() {
		// check is in iframe
		if (inFrame && self.UA.Fullscreen) {
			self.UA.Fullscreen = false;
			if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') {
				self.UA.Fullscreen = true;
			}
		}

		var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull, funcObj,
			cls = 'elfinder-fullscreen',
			clsN = 'elfinder-fullscreen-native',
			checkDialog = function() {
				var t = 0,
					l = 0;
				$.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) {
					var $d = $(d),
						pos = $d.position();
					
					if (pos.top < 0) {
						$d.css('top', t);
						t += 20;
					}
					if (pos.left < 0) {
						$d.css('left', l);
						l += 20;
					}
				});
			},
			setFuncObj = function() {
				var useFullscreen = self.storage('useFullscreen');
				funcObj = self.UA.Fullscreen && (useFullscreen? useFullscreen > 0 : self.options.commandsOptions.fullscreen.mode === 'screen') ? {
					// native full screen mode
					
					fullElm: function() {
						return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null;
					},
					
					exitFull: function() {
						if (document.exitFullscreen) {
							return document.exitFullscreen();
						} else if (document.webkitExitFullscreen) {
							return document.webkitExitFullscreen();
						} else if (document.mozCancelFullScreen) {
							return document.mozCancelFullScreen();
						} else if (document.msExitFullscreen) {
							return document.msExitFullscreen();
						}
					},
					
					toFull: function(elem) {
						if (elem.requestFullscreen) {
							return elem.requestFullscreen();
						} else if (elem.webkitRequestFullscreen) {
							return elem.webkitRequestFullscreen();
						} else if (elem.mozRequestFullScreen) {
							return elem.mozRequestFullScreen();
						} else if (elem.msRequestFullscreen) {
							return elem.msRequestFullscreen();
						}
						return false;
					}
				} : {
					// node element maximize mode
					
					fullElm: function() {
						var full;
						if (node.hasClass(cls)) {
							return node.get(0);
						} else {
							full = node.find('.' + cls);
							if (full.length) {
								return full.get(0);
							}
						}
						return null;
					},
					
					exitFull: function() {
						var elm;
						
						$(window).off('resize.' + namespace, resize);
						if (bodyOvf !== void(0)) {
							$('body').css('overflow', bodyOvf);
						}
						bodyOvf = void(0);
						
						if (orgStyle) {
							elm = orgStyle.elm;
							restoreStyle(elm);
							$(elm).trigger('resize', {fullscreen: 'off'});
						}
						
						$(window).trigger('resize');
					},
					
					toFull: function(elem) {
						bodyOvf = $('body').css('overflow') || '';
						$('body').css('overflow', 'hidden');
						
						$(elem).css(self.getMaximizeCss())
							.addClass(cls)
							.trigger('resize', {fullscreen: 'on'});
						
						checkDialog();
						
						$(window).on('resize.' + namespace, resize).trigger('resize');
						
						return true;
					}
				};
			},
			restoreStyle = function(elem) {
				if (orgStyle && orgStyle.elm == elem) {
					$(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style);
					orgStyle = null;
				}
			},
			resize = function(e) {
				var elm;
				if (e.target === window) {
					resizeTm && cancelAnimationFrame(resizeTm);
					resizeTm = requestAnimationFrame(function() {
						if (elm = funcObj.fullElm()) {
							$(elm).trigger('resize', {fullscreen: 'on'});
						}
					});
				}
			};
		
		setFuncObj();

		$(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){
			if (self.UA.Fullscreen) {
				var elm = funcObj.fullElm(),
					win = $(window);
				
				resizeTm && cancelAnimationFrame(resizeTm);
				if (elm === null) {
					win.off('resize.' + namespace, resize);
					if (orgStyle) {
						elm = orgStyle.elm;
						restoreStyle(elm);
						$(elm).trigger('resize', {fullscreen: 'off'});
					}
				} else {
					$(elm).addClass(cls + ' ' + clsN)
						.attr('style', 'width:100%; height:100%; margin:0; padding:0;')
						.trigger('resize', {fullscreen: 'on'});
					win.on('resize.' + namespace, resize);
					checkDialog();
				}
				win.trigger('resize');
			}
		});
		
		/**
		 * Toggle Full Scrren Mode
		 * 
		 * @param  Object target
		 * @param  Bool   full
		 * @return Object | Null  DOM node object of current full scrren
		 */
		self.toggleFullscreen = function(target, full) {
			var elm = $(target).get(0),
				curElm = null;
			
			curElm = funcObj.fullElm();
			if (curElm) {
				if (curElm == elm) {
					if (full === true) {
						return curElm;
					}
				} else {
					if (full === false) {
						return curElm;
					}
				}
				funcObj.exitFull();
				return null;
			} else {
				if (full === false) {
					return null;
				}
			}
			
			setFuncObj();
			orgStyle = {elm: elm, style: $(elm).attr('style')};
			if (funcObj.toFull(elm) !== false) {
				return elm;
			} else {
				orgStyle = null;
				return null;
			}
		};
	})();
	
	// Closure for toggleMaximize
	(function(){
		var cls = 'elfinder-maximized',
		resizeTm,
		resize = function(e) {
			if (e.target === window && e.data && e.data.elm) {
				var elm = e.data.elm;
				resizeTm && cancelAnimationFrame(resizeTm);
				resizeTm = requestAnimationFrame(function() {
					elm.trigger('resize', {maximize: 'on'});
				});
			}
		},
		exitMax = function(elm) {
			$(window).off('resize.' + namespace, resize);
			$('body').css('overflow', elm.data('bodyOvf'));
			elm.removeClass(cls)
				.attr('style', elm.data('orgStyle'))
				.removeData('bodyOvf')
				.removeData('orgStyle');
			elm.trigger('resize', {maximize: 'off'});
		},
		toMax = function(elm) {
			elm.data('bodyOvf', $('body').css('overflow') || '')
				.data('orgStyle', elm.attr('style'))
				.addClass(cls)
				.css(self.getMaximizeCss());
			$('body').css('overflow', 'hidden');
			$(window).on('resize.' + namespace, {elm: elm}, resize);
			elm.trigger('resize', {maximize: 'on'});
		};
		
		/**
		 * Toggle Maximize target node
		 * 
		 * @param  Object target
		 * @param  Bool   max
		 * @return void
		 */
		self.toggleMaximize = function(target, max) {
			var elm = $(target),
				maximized = elm.hasClass(cls);
			
			if (maximized) {
				if (max === true) {
					return;
				}
				exitMax(elm);
			} else {
				if (max === false) {
					return;
				}
				toMax(elm);
			}
		};
	})();
	
	/*************  init stuffs  ****************/
	Object.assign($.ui.keyCode, {
		'F1' : 112,
		'F2' : 113,
		'F3' : 114,
		'F4' : 115,
		'F5' : 116,
		'F6' : 117,
		'F7' : 118,
		'F8' : 119,
		'F9' : 120,
		'F10' : 121,
		'F11' : 122,
		'F12' : 123,
		'DIG0' : 48,
		'DIG1' : 49,
		'DIG2' : 50,
		'DIG3' : 51,
		'DIG4' : 52,
		'DIG5' : 53,
		'DIG6' : 54,
		'DIG7' : 55,
		'DIG8' : 56,
		'DIG9' : 57,
		'NUM0' : 96,
		'NUM1' : 97,
		'NUM2' : 98,
		'NUM3' : 99,
		'NUM4' : 100,
		'NUM5' : 101,
		'NUM6' : 102,
		'NUM7' : 103,
		'NUM8' : 104,
		'NUM9' : 105,
		'CONTEXTMENU' : 93,
		'DOT'  : 190
	});
	
	this.dragUpload = false;
	this.xhrUpload  = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined';
	
	// configure transport object
	this.transport = {};

	if (typeof(this.options.transport) == 'object') {
		this.transport = this.options.transport;
		if (typeof(this.transport.init) == 'function') {
			this.transport.init(this);
		}
	}
	
	if (typeof(this.transport.send) != 'function') {
		this.transport.send = function(opts) {
			if (!self.UA.IE) {
				// keep native xhr object for handling property responseURL
				opts._xhr = new XMLHttpRequest();
				opts.xhr = function() { 
					if (opts.progress) {
						opts._xhr.addEventListener('progress', opts.progress); 
					}
					return opts._xhr;
				};
			}
			return $.ajax(opts);
		};
	}
	
	if (this.transport.upload == 'iframe') {
		this.transport.upload = $.proxy(this.uploads.iframe, this);
	} else if (typeof(this.transport.upload) == 'function') {
		this.dragUpload = !!this.options.dragUploadAllow;
	} else if (this.xhrUpload && !!this.options.dragUploadAllow) {
		this.transport.upload = $.proxy(this.uploads.xhr, this);
		this.dragUpload = true;
	} else {
		this.transport.upload = $.proxy(this.uploads.iframe, this);
	}

	/**
	 * Decoding 'raw' string converted to unicode
	 * 
	 * @param  String str
	 * @return String
	 */
	this.decodeRawString = function(str) {
		var charCodes = function(str) {
			var i, len, arr;
			for (i=0,len=str.length,arr=[]; i<len; i++) {
				arr.push(str.charCodeAt(i));
			}
			return arr;
		},
		scalarValues = function(arr) {
			var scalars = [], i, len, c;
			if (typeof arr === 'string') {arr = charCodes(arr);}
			for (i=0,len=arr.length; c=arr[i],i<len; i++) {
				if (c >= 0xd800 && c <= 0xdbff) {
					scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023);
				} else {
					scalars.push(c);
				}
			}
			return scalars;
		},
		decodeUTF8 = function(arr) {
			var i, len, c, str, char = String.fromCharCode;
			for (i=0,len=arr.length,str=""; c=arr[i],i<len; i++) {
				if (c <= 0x7f) {
					str += char(c);
				} else if (c <= 0xdf && c >= 0xc2) {
					str += char((c&31)<<6 | arr[++i]&63);
				} else if (c <= 0xef && c >= 0xe0) {
					str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63);
				} else if (c <= 0xf7 && c >= 0xf0) {
					str += char(
						0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64,
						0xdc00 | (arr[i++]&15)<<6 | arr[i]&63
					);
				} else {
					str += char(0xfffd);
				}
			}
			return str;
		};
		
		return decodeUTF8(scalarValues(str));
	};

	/**
	 * Gets target file contents by file.hash
	 *
	 * @param      String  hash          The hash
	 * @param      String  responseType  'blob' or 'arraybuffer' (default)
	 * @param      Object  requestOpts   The request options
	 * @return     arraybuffer|blob  The contents.
	 */
	this.getContents = function(hash, responseType, requestOpts) {
		var self = this,
			dfd = $.Deferred(),
			type = responseType || 'arraybuffer',
			url, req;

		dfd.fail(function() {
			req && req.state() === 'pending' && req.reject();
		});

		url = self.openUrl(hash);
		if (!self.isSameOrigin(url)) {
			url = self.openUrl(hash, true);
		}
		req = self.request(Object.assign({
			data    : {cmd : 'get'},
			options : {
				url: url,
				type: 'get',
				cache : true,
				dataType : 'binary',
				responseType : type,
				processData: false
			},
			notify : {
				type: 'file',
				cnt: 1,
				hideCnt: true
			},
			cancel : true
		}, requestOpts || {}))
		.fail(function() {
			dfd.reject();
		})
		.done(function(data) {
			dfd.resolve(data);
		});

		return dfd;
	};

	/**
	 * Gets the binary by url.
	 *
	 * @param      {Object}    opts      The options
	 * @param      {Function}  callback  The callback
	 * @param      {Object}    requestOpts The request options
	 * @return     arraybuffer|blob  The contents.
	 */
	this.getBinaryByUrl = function(opts, callback, requestOpts) {
		var self = this,
			dfd = $.Deferred(),
			url, req;

		dfd.fail(function() {
			req && req.state() === 'pending' && req.reject();
		});

		req = self.request(Object.assign({
			data    : {cmd : 'get'},
			options : Object.assign({
				type: 'get',
				cache : true,
				dataType : 'binary',
				responseType : 'blob',
				processData: false
			}, opts)
		}, requestOpts || {}))
		.fail(function() {
			dfd.reject();
		})
		.done(function(data) {
			callback && callback(data);
			dfd.resolve(data);
		});

		return dfd;
	};

	/**
	 * Gets the mimetype.
	 *
	 * @param      {string}  name     The name
	 * @param      {string}  orgMime  The organization mime
	 * @return     {string}  The mimetype.
	 */
	this.getMimetype = function(name, orgMime) {
		var mime = orgMime,
			ext, m;
		m = (name + '').match(/\.([^.]+)$/);
		if (m && (ext = m[1])) {
			if (!extToMimeTable) {
				extToMimeTable = self.arrayFlip(self.mimeTypes);
			}
			if (!(mime = extToMimeTable[ext.toLowerCase()])) {
				mime = orgMime;
			}
		}
		return mime;
	};

	/**
	 * Supported check hash algorisms
	 * 
	 * @type Array
	 */
	self.hashCheckers = [];

	/**
	 * Closure of getContentsHashes()
	 */
	(function(self) {
		var hashLibs = {};

		if (window.Worker && window.ArrayBuffer) {
			// make fm.hashCheckers
			if (self.options.cdns.sparkmd5) {
				hashLibs.SparkMD5 = true;
				self.hashCheckers.push('md5');
			}
			if (self.options.cdns.jssha) {
				hashLibs.jsSHA = true;
				self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']);
			}
		}

		/**
		 * Gets the contents hashes.
		 *
		 * @param      String  target      target file.hash
		 * @param      Object  needHashes  need hash lib names
		 * @param      Object  requestOpts The request options
		 * @return     Object  hashes with lib name as key
		 */
		self.getContentsHashes = function(target, needHashes, hashOpts, requestOpts) {
			var dfd = $.Deferred(),
				needs = self.arrayFlip(needHashes || ['md5'], true),
				libs = [],
				jobs = [],
				res = {},
				opts = hashOpts? hashOpts : {
					shake128len : 256,
					shake256len : 512
				},
				req;

			dfd.fail(function() {
				req && req.reject();
			});

			if (Object.keys(hashLibs).length) {
				req = self.getContents(target, 'arraybuffer', requestOpts).done(function(arrayBuffer) {
					if (needs.md5 && hashLibs.SparkMD5) {
						jobs.push((function() {
							var job = $.Deferred();
							try {
								var wk = self.getWorker();
								job.fail(function() {
									wk && wk.terminate();
								});
								wk.onmessage = function(ans) {
									wk && wk.terminate();
									if (ans.data.hash) {
										var f;
										res.md5 = ans.data.hash;
										if (f = self.file(target)) {
											f.md5 = res.md5;
										}
									} else if (ans.data.error) {
										res.md5 = ans.data.error;
									}
									dfd.notify(res);
									job.resolve();
								};
								wk.onerror = function(e) {
									job.reject();
								};
								wk.postMessage({
									scripts: [self.options.cdns.sparkmd5, self.getWorkerUrl('calcfilehash.js')],
									data: { type: 'md5', bin: arrayBuffer }
								});
								dfd.fail(function() {
									job.reject();
								});
							} catch(e) {
								job.reject();
								delete hashLibs.SparkMD5;
							}
							return job;
						})());
					}
					if (hashLibs.jsSHA) {
						$.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) {
							if (needs['sha' + v]) {
								jobs.push((function() {
									var job = $.Deferred();
									try {
										var wk = self.getWorker();
										job.fail(function() {
											wk && wk.terminate();
										});
										wk.onmessage = function(ans) {
											wk && wk.terminate();
											if (ans.data.hash) {
												var f;
												res['sha' + v] = ans.data.hash;
												if (f = self.file(target)) {
													f['sha' + v] = res['sha' + v];
												}
											} else if (ans.data.error) {
												res['sha' + v] = ans.data.error;
											}
											dfd.notify(res);
											job.resolve();
										};
										wk.onerror = function(e) {
											job.reject();
										};
										wk.postMessage({
											scripts: [self.options.cdns.jssha, self.getWorkerUrl('calcfilehash.js')],
											data: { type: v, bin: arrayBuffer, hashOpts: opts }
										});
										dfd.fail(function() {
											job.reject();
										});
									} catch(e) {
										job.reject();
										delete hashLibs.jsSHA;
									}
									return job;
								})());
							}
						});
					}
					if (jobs.length) {
						$.when.apply(null, jobs).always(function() {
							dfd.resolve(res);
						});
					} else {
						dfd.reject();
					}
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.reject();
			}

			return dfd;
		};
	})(this);

	/**
	 * Parse error value to display
	 *
	 * @param  Mixed  error
	 * @return Mixed  parsed error
	 */
	this.parseError = function(error) {
		var arg = error;
		if ($.isPlainObject(arg)) {
			arg = arg.error;
		}
		return arg;
	};

	/**
	 * Alias for this.trigger('error', {error : 'message'})
	 *
	 * @param  String  error message
	 * @return elFinder
	 **/
	this.error = function() {
		var arg = arguments[0],
			opts = arguments[1] || null,
			err;
		if (arguments.length == 1 && typeof(arg) === 'function') {
			return self.bind('error', arg);
		} else {
			err = this.parseError(arg);
			return (err === true || !err)? this : self.trigger('error', {error: err, opts : opts});
		}
	};
	
	// create bind/trigger aliases for build-in events
	$.each(events, function(i, name) {
		self[name] = function() {
			var arg = arguments[0];
			return arguments.length == 1 && typeof(arg) == 'function'
				? self.bind(name, arg)
				: self.trigger(name, $.isPlainObject(arg) ? arg : {});
		};
	});

	// bind core event handlers
	this
		.enable(function() {
			if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) {
				enabled = true;
				document.activeElement && document.activeElement.blur();
				node.removeClass('elfinder-disabled');
			}
		})
		.disable(function() {
			prevEnabled = enabled;
			enabled = false;
			node.addClass('elfinder-disabled');
		})
		.open(function() {
			selected = [];
		})
		.select(function(e) {
			var cnt = 0,
				unselects = [];
			selected = $.grep(e.data.selected || e.data.value|| [], function(hash) {
				if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) {
					unselects.push(hash);
					return false;
				} else {
					return files[hash] ? true : false;
				}
			});
			if (unselects.length) {
				self.trigger('unselectfiles', {files: unselects, inselect: true});
				self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])});
			}
		})
		.error(function(e) { 
			var opts  = {
					cssClass  : 'elfinder-dialog-error',
					title     : self.i18n('error'),
					resizable : false,
					destroyOnClose : true,
					buttons   : {}
				},
				node = self.getUI(),
				cnt = node.children('.elfinder-dialog-error').length,
				last, counter;
			
			if (cnt < self.options.maxErrorDialogs) {
				opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { $(this).elfinderdialog('close'); };

				if (e.data.opts && $.isPlainObject(e.data.opts)) {
					Object.assign(opts, e.data.opts);
				}

				self.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-error"></span>'+self.i18n(e.data.error), opts);
			} else {
				last = node.children('.elfinder-dialog-error:last').children('.ui-dialog-content:first');
				counter = last.children('.elfinder-error-counter');
				if (counter.length) {
					counter.data('cnt', parseInt(counter.data('cnt')) + 1).html(self.i18n(['moreErrors', counter.data('cnt')]));
				} else {
					counter = $('<span class="elfinder-error-counter">'+ self.i18n(['moreErrors', 1]) +'</span>').data('cnt', 1);
					last.append('<br/>', counter);
				}
			}
		})
		.bind('tmb', function(e) {
			$.each(e.data.images||[], function(hash, tmb) {
				if (files[hash]) {
					files[hash].tmb = tmb;
				}
			});
		})
		.bind('searchstart', function(e) {
			Object.assign(self.searchStatus, e.data);
			self.searchStatus.state = 1;
		})
		.bind('search', function(e) {
			self.searchStatus.state = 2;
		})
		.bind('searchend', function() {
			self.searchStatus.state = 0;
			self.searchStatus.ininc = false;
			self.searchStatus.mixed = false;
		})
		.bind('canMakeEmptyFile', function(e) {
			var data = e.data,
				obj = {};
			if (data && Array.isArray(data.mimes)) {
				if (!data.unshift) {
					obj = self.mimesCanMakeEmpty;
				}
				$.each(data.mimes, function() {
					if (!obj[this]) {
						obj[this] = self.mimeTypes[this];
					}
				});
				if (data.unshift) {
					self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty);
				}
			}
		})
		.bind('themechange', function() {
			requestAnimationFrame(function() {
				self.trigger('uiresize');
			});
		})
		;

	// We listen and emit a sound on delete according to option
	if (true === this.options.sound) {
		this.bind('playsound', function(e) {
			var play  = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'),
				file = e.data && e.data.soundFile;

			play && file && play != '' && play != 'no' && $(beeper).html('<source src="' + soundPath + file + '" type="audio/wav">')[0].play();
		});
	}

	// bind external event handlers
	$.each(this.options.handlers, function(event, callback) {
		self.bind(event, callback);
	});

	/**
	 * History object. Store visited folders
	 *
	 * @type Object
	 **/
	this.history = new this.history(this);
	
	/**
	 * Root hashed
	 * 
	 * @type Object
	 */
	this.roots = {};
	
	/**
	 * leaf roots
	 * 
	 * @type Object
	 */
	this.leafRoots = {};
	
	this.volumeExpires = {};

	/**
	 * Loaded commands
	 *
	 * @type Object
	 **/
	this._commands = {};
	
	if (!Array.isArray(this.options.commands)) {
		this.options.commands = [];
	}
	
	if ($.inArray('*', this.options.commands) !== -1) {
		this.options.commands = Object.keys(this.commands);
	}
	
	/**
	 * UI command map of cwd volume ( That volume driver option `uiCmdMap` )
	 *
	 * @type Object
	 **/
	this.commandMap = {};
	
	/**
	 * cwd options of each volume
	 * key: volumeid
	 * val: options object
	 * 
	 * @type Object
	 */
	this.volOptions = {};

	/**
	 * Has volOptions data
	 * 
	 * @type Boolean
	 */
	this.hasVolOptions = false;

	/**
	 * Hash of trash holders
	 * key: trash folder hash
	 * val: source volume hash
	 * 
	 * @type Object
	 */
	this.trashes = {};

	/**
	 * cwd options of each folder/file
	 * key: hash
	 * val: options object
	 *
	 * @type Object
	 */
	this.optionsByHashes = {};
	
	/**
	 * UI Auto Hide Functions
	 * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process
	 *
	 * @type Array
	 **/
	this.uiAutoHide = [];
	
	// trigger `uiautohide`
	this.one('open', function() {
		if (self.uiAutoHide.length) {
			setTimeout(function() {
				self.trigger('uiautohide');
			}, 500);
		}
	});
	
	// Auto Hide Functions sequential processing start
	this.bind('uiautohide', function() {
		if (self.uiAutoHide.length) {
			self.uiAutoHide.shift()();
		}
	});

	if (this.options.width) {
		width = this.options.width;
	}
	
	if (this.options.height) {
		height = this.options.height;
	}
	
	if (this.options.heightBase) {
		heightBase = $(this.options.heightBase);
	}
	
	if (this.options.soundPath) {
		soundPath = this.options.soundPath.replace(/\/+$/, '') + '/';
	} else {
		soundPath = this.baseUrl + soundPath;
	}
	
	if (this.options.parrotHeaders && Array.isArray(this.options.parrotHeaders) && this.options.parrotHeaders.length) {
		this.parrotHeaders = this.options.parrotHeaders;
		// check sessionStorage
		$.each(this.parrotHeaders, function(i, h) {
			var v = self.sessionStorage('core-ph:' + h);
			if (v) {
				self.customHeaders[h] = v;
			}
		});
	} else {
		this.parrotHeaders = [];
	}

	self.one('opendone', function() {
		var tm;
		// attach events to document
		$(document)
			// disable elfinder on click outside elfinder
			.on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !$(e.target).closest(node).length && self.disable(); })
			// exec shortcuts
			.on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut);
		
		// attach events to window
		self.options.useBrowserHistory && $(window)
			.on('popstate.' + namespace, function(ev) {
				var state = ev.originalEvent.state || {},
					hasThash = state.thash? true : false,
					dialog = node.find('.elfinder-frontmost:visible'),
					input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'),
					onOpen, toast;
				if (!hasThash) {
					state = { thash: self.cwd().hash };
					// scroll to elFinder node
					$('html,body').animate({ scrollTop: node.offset().top });
				}
				if (dialog.length || input.length) {
					history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
					if (dialog.length) {
						if (!dialog.hasClass(self.res('class', 'preventback'))) {
							if (dialog.hasClass('elfinder-contextmenu')) {
								$(document).trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
							} else if (dialog.hasClass('elfinder-dialog')) {
								dialog.elfinderdialog('close');
							} else {
								dialog.trigger('close');
							}
						}
					} else {
						input.trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
					}
				} else {
					if (hasThash) {
						!$.isEmptyObject(self.files()) && self.request({
							data   : {cmd  : 'open', target : state.thash, onhistory : 1},
							notify : {type : 'open', cnt : 1, hideCnt : true},
							syncOnFail : true
						});
					} else {
						onOpen = function() {
							toast.trigger('click');
						};
						self.one('open', onOpen, true);
						toast = self.toast({
							msg: self.i18n('pressAgainToExit'),
							onHidden: function() {
								self.unbind('open', onOpen);
								history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
							}
						});
					}
				}
			});
		
		$(window).on('resize.' + namespace, function(e){
			if (e.target === this) {
				tm && cancelAnimationFrame(tm);
				tm = requestAnimationFrame(function() {
					var prv = node.data('resizeSize') || {w: 0, h: 0},
						size = {w: Math.round(node.width()), h: Math.round(node.height())};
					node.data('resizeSize', size);
					if (size.w !== prv.w || size.h !== prv.h) {
						node.trigger('resize');
						self.trigger('resize', {width : size.w, height : size.h});
					}
				});
			}
		})
		.on('beforeunload.' + namespace,function(e){
			var msg, cnt;
			if (!self.pauseUnloadCheck()) {
				if (node.is(':visible')) {
					if (self.ui.notify.children().length && $.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('ntfsmth');
					} else if (node.find('.'+self.res('class', 'editing')).length && $.inArray('editingFile', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('editingFile');
					} else if ((cnt = Object.keys(self.selected()).length) && $.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('hasSelected', ''+cnt);
					} else if ((cnt = Object.keys(self.clipboard()).length) && $.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('hasClipboard', ''+cnt);
					}
					if (msg) {
						e.returnValue = msg;
						return msg;
					}
				}
				self.trigger('unload');
			}
		});

		// bind window onmessage for CORS
		$(window).on('message.' + namespace, function(e){
			var res = e.originalEvent || null,
				obj, data;
			if (res && (self.convAbsUrl(self.options.url).indexOf(res.origin) === 0 || self.convAbsUrl(self.uploadURL).indexOf(res.origin) === 0)) {
				try {
					try {
						if (typeof res.data !== 'string') {
							return;
						}
						obj = JSON.parse(res.data);
						if (obj.type !== "io.studio-42.github") {
							return;
						}
						data = obj.data || null;
					} catch (e2) {
						return;
					} 
					if (data) {
						if (data.error) {
							if (obj.bind) {
								self.trigger(obj.bind+'fail', data);
							}
							self.error(data.error);
						} else {
							data.warning && self.error(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							if (obj.bind) {
								self.trigger(obj.bind, data);
								self.trigger(obj.bind+'done');
							}
							data.sync && self.sync();
						}
					}
				} catch (e) {
					self.sync();
				}
			}
		});

		// elFinder enable always
		if (self.options.enableAlways) {
			$(window).on('focus.' + namespace, function(e){
				(e.target === this) && self.enable();
			});
			if (inFrame) {
				$(window.top).on('focus.' + namespace, function() {
					if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) {
						requestAnimationFrame(function() {
							$(window).trigger('focus');
						});
					}
				});
			}
		} else if (inFrame) {
			$(window).on('blur.' + namespace, function(e){
				enabled && e.target === this && self.disable();
			});
		}

		// return focus to the window on click (elFInder in the frame)
		if (inFrame) {
			node.on('click', function(e) {
				$(window).trigger('focus');
			});
		}
		
		// elFinder to enable by mouse over
		if (self.options.enableByMouseOver) {
			node.on('mouseenter touchstart', function(e) {
				(inFrame) && $(window).trigger('focus');
				! self.enabled() && self.enable();
			});
		}

		// When the browser tab turn to foreground/background
		$(window).on('visibilitychange.' + namespace, function(e) {
			var background = document.hidden || document.webkitHidden || document.msHidden;
			// AutoSync turn On/Off
			if (self.options.syncStart) {
				self.autoSync(background? 'stop' : void(0));
			}
		});
	});

	// store instance in node
	node[0].elfinder = this;

	// auto load language file
	dfrdsBeforeBootup.push((function() {
		var lang   = self.lang,
			langJs = self.i18nBaseUrl + 'elfinder.' + lang + '.js',
			dfd    = $.Deferred().done(function() {
				if (self.i18[lang]) {
					self.lang = lang;
				}
				self.trigger('i18load');
				i18n = self.lang === 'en' 
					? self.i18['en'] 
					: $.extend(true, {}, self.i18['en'], self.i18[self.lang]);
			});
		
		if (!self.i18[lang]) {
			self.lang = 'en';
			if (self.hasRequire) {
				require([langJs], function() {
					dfd.resolve();
				}, function() {
					dfd.resolve();
				});
			} else {
				self.loadScript([langJs], function() {
					dfd.resolve();
				}, {
					loadType: 'tag',
					error : function() {
						dfd.resolve();
					}
				});
			}
		} else {
			dfd.resolve();
		}
		return dfd;
	})());
	
	// elFinder boot up function
	bootUp = function() {
		var columnNames;

		/**
		 * i18 messages
		 *
		 * @type Object
		 **/
		self.messages = i18n.messages;
		
		// check jquery ui
		if (!($.fn.selectable && $.fn.draggable && $.fn.droppable && $.fn.resizable && $.fn.button && $.fn.slider)) {
			return alert(self.i18n('errJqui'));
		}
		
		// check node
		if (!node.length) {
			return alert(self.i18n('errNode'));
		}
		// check connector url
		if (!self.options.url) {
			return alert(self.i18n('errURL'));
		}
		
		// column key/name map for fm.getColumnName()
		columnNames = Object.assign({
			name : self.i18n('name'),
			perm : self.i18n('perms'),
			date : self.i18n('modify'),
			size : self.i18n('size'),
			kind : self.i18n('kind'),
			modestr : self.i18n('mode'),
			modeoct : self.i18n('mode'),
			modeboth : self.i18n('mode')
		}, self.options.uiOptions.cwd.listView.columnsCustomName);

		/**
		 * Gets the column name of cwd list view
		 *
		 * @param      String  key     The key
		 * @return     String  The column name.
		 */
		self.getColumnName = function(key) {
			var res = columnNames[key] || self.i18n(key);
			return typeof res === 'function'? res() : res;
		};

		/**
		 * Interface direction
		 *
		 * @type String
		 * @default "ltr"
		 **/
		self.direction = i18n.direction;
		
		/**
		 * Date/time format
		 *
		 * @type String
		 * @default "m.d.Y"
		 **/
		self.dateFormat = self.options.dateFormat || i18n.dateFormat;
		
		/**
		 * Date format like "Yesterday 10:20:12"
		 *
		 * @type String
		 * @default "{day} {time}"
		 **/
		self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat;
		
		/**
		 * Date format for if upload file has not original unique name
		 * e.g. Clipboard image data, Image data taken with iOS
		 *
		 * @type String
		 * @default "ymd-His"
		 **/
		self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_');

		/**
		 * Css classes 
		 *
		 * @type String
		 **/
		self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-'
				+(self.direction == 'rtl' ? 'rtl' : 'ltr')
				+(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '')
				+(self.UA.Mobile? ' elfinder-mobile' : '')
				+(self.UA.iOS? ' elfinder-ios' : '')
				+' '+self.options.cssClass;

		// prepare node
		node.addClass(self.cssClass)
			.on(mousedown, function() {
				!enabled && self.enable();
			});

		// draggable closure
		(function() {
			var ltr, wzRect, wzBottom, wzBottom2, nodeStyle,
				keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable';
			
			/**
			 * Base draggable options
			 *
			 * @type Object
			 **/
			self.draggable = {
				appendTo   : node,
				addClasses : false,
				distance   : 4,
				revert     : true,
				refreshPositions : false,
				cursor     : 'crosshair',
				cursorAt   : {left : 50, top : 47},
				scroll     : false,
				start      : function(e, ui) {
					var helper   = ui.helper,
						targets  = $.grep(helper.data('files')||[], function(h) {
							if (h) {
								remember[h] = true;
								return true;
							}
							return false;
						}),
						locked   = false,
						cnt, h;
					
					// fix node size
					nodeStyle = node.attr('style');
					node.width(node.width()).height(node.height());
					
					// set var for drag()
					ltr = (self.direction === 'ltr');
					wzRect = self.getUI('workzone').data('rectangle');
					wzBottom = wzRect.top + wzRect.height;
					wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true);
					
					self.draggingUiHelper = helper;
					cnt = targets.length;
					while (cnt--) {
						h = targets[cnt];
						if (files[h].locked) {
							locked = true;
							helper.data('locked', true);
							break;
						}
					}
					!locked && self.trigger('lockfiles', {files : targets});
		
					helper.data('autoScrTm', setInterval(function() {
						if (helper.data('autoScr')) {
							self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal'));
						}
					}, 50));
				},
				drag       : function(e, ui) {
					var helper = ui.helper,
						autoScr, autoUp, bottom;
					
					if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) {
						if (wzRect.cwdEdge > e.pageX) {
							autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
						} else {
							autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
						}
						if (!autoUp) {
							if (autoScr.substr(0, 3) === 'cwd') {
								if (wzBottom < e.pageY) {
									bottom = wzBottom;
								} else {
									autoScr = null;
								}
							} else {
								bottom = wzBottom2;
							}
						}
						if (autoScr) {
							helper.data('autoScr', autoScr);
							helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3));
						}
					}
					if (! autoScr) {
						if (helper.data('autoScr')) {
							helper.data('refreshPositions', 1).data('autoScr', null);
						}
					}
					if (helper.data('refreshPositions') && $(this).elfUiWidgetInstance('draggable')) {
						if (helper.data('refreshPositions') > 0) {
							$(this).draggable('option', { refreshPositions : true, elfRefresh : true });
							helper.data('refreshPositions', -1);
						} else {
							$(this).draggable('option', { refreshPositions : false, elfRefresh : false });
							helper.data('refreshPositions', null);
						}
					}
				},
				stop       : function(e, ui) {
					var helper = ui.helper,
						files;
					
					$(document).off(keyEvt);
					$(this).elfUiWidgetInstance('draggable') && $(this).draggable('option', { refreshPositions : false });
					self.draggingUiHelper = null;
					self.trigger('focus').trigger('dragstop');
					if (! helper.data('droped')) {
						files = $.grep(helper.data('files')||[], function(h) { return h? true : false ;});
						self.trigger('unlockfiles', {files : files});
						self.trigger('selectfiles', {files : self.selected()});
					}
					self.enable();
					
					// restore node style
					node.attr('style', nodeStyle);
					
					helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm'));
				},
				helper     : function(e, ui) {
					var element = this.id ? $(this) : $(this).parents('[id]:first'),
						helper  = $('<div class="elfinder-drag-helper"><span class="elfinder-drag-helper-icon-status"></span></div>'),
						icon    = function(f) {
							var mime = f.mime, i, tmb = self.tmb(f);
							i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+self.mime2class(mime)+' ui-corner-all"></div>';
							if (tmb) {
								i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
							} else if (f.icon) {
								i = $(i).css(self.getIconStyle(f, true)).get(0).outerHTML;
							}
							if (f.csscls) {
								i = '<div class="'+f.csscls+'">' + i + '</div>';
							}
							return i;
						},
						hashes, l, ctr;
					
					self.draggingUiHelper && self.draggingUiHelper.stop(true, true);
					
					self.trigger('dragstart', {target : element[0], originalEvent : e}, true);
					
					hashes = element.hasClass(self.res('class', 'cwdfile')) 
						? self.selected() 
						: [self.navId2Hash(element.attr('id'))];
					
					helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0);
		
					if ((l = hashes.length) > 1) {
						helper.append(icon(files[hashes[l-1]]) + '<span class="elfinder-drag-num">'+l+'</span>');
					}
					
					$(document).on(keyEvt, function(e){
						if (self._commands.copy) {
							var chk = (e.shiftKey||e.ctrlKey||e.metaKey);
							if (ctr !== chk) {
								ctr = chk;
								if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) {
									helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr);
									self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper});
								}
							}
						}
					});
					
					return helper;
				}
			};
		})();

		// in getFileCallback set - change default actions on double click/enter/ctrl+enter
		if (self.commands.getfile) {
			if (typeof(self.options.getFileCallback) == 'function') {
				self.bind('dblclick', function(e) {
					e.preventDefault();
					self.exec('getfile').fail(function() {
						self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0));
					});
				});
				self.shortcut({
					pattern     : 'enter',
					description : self.i18n('cmdgetfile'),
					callback    : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); }
				})
				.shortcut({
					pattern     : 'ctrl+enter',
					description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'),
					callback    : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }
				});
			} else {
				self.options.getFileCallback = null;
			}
		}

		// load commands
		$.each(self.commands, function(name, cmd) {
			var proto = Object.assign({}, cmd.prototype),
				extendsCmd, opts;
			if (typeof cmd === 'function' && !self._commands[name] && (cmd.prototype.forceLoad || $.inArray(name, self.options.commands) !== -1)) {
				extendsCmd = cmd.prototype.extendsCmd || '';
				if (extendsCmd) {
					if (typeof self.commands[extendsCmd] === 'function') {
						cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype);
					} else {
						return true;
					}
				} else {
					cmd.prototype = Object.assign({}, base, cmd.prototype);
				}
				self._commands[name] = new cmd();
				cmd.prototype = proto;
				opts = self.options.commandsOptions[name] || {};
				if (extendsCmd && self.options.commandsOptions[extendsCmd]) {
					opts = $.extend(true, {}, self.options.commandsOptions[extendsCmd], opts);
				}
				self._commands[name].setup(name, opts);
				// setup linked commands
				if (self._commands[name].linkedCmds.length) {
					$.each(self._commands[name].linkedCmds, function(i, n) {
						var lcmd = self.commands[n];
						if (typeof lcmd === 'function' && !self._commands[n]) {
							lcmd.prototype = base;
							self._commands[n] = new lcmd();
							self._commands[n].setup(n, self.options.commandsOptions[n]||{});
						}
					});
				}
			}
		});

		/**
		 * UI nodes
		 *
		 * @type Object
		 **/
		self.ui = {
			// container for nav panel and current folder container
			workzone : $('<div></div>').appendTo(node).elfinderworkzone(self),
			// contaainer for folders tree / places
			navbar : $('<div></div>').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}),
			// container for for preview etc at below the navbar
			navdock : $('<div></div>').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}),
			// contextmenu
			contextmenu : $('<div></div>').appendTo(node).elfindercontextmenu(self),
			// overlay
			overlay : $('<div></div>').appendTo(node).elfinderoverlay({
				show : function() { self.disable(); },
				hide : function() { prevEnabled && self.enable(); }
			}),
			// current folder container
			cwd : $('<div></div>').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}),
			// notification dialog window
			notify : self.dialog('', {
				cssClass      : 'elfinder-dialog-notify' + (self.options.notifyDialog.canClose? '' : ' elfinder-titlebar-button-hide'),
				position      : self.options.notifyDialog.position,
				absolute      : true,
				resizable     : false,
				autoOpen      : false,
				allowMinimize : true,
				closeOnEscape : self.options.notifyDialog.canClose? true : false,
				title         : '&nbsp;',
				width         : self.options.notifyDialog.width? parseInt(self.options.notifyDialog.width) : null,
				minHeight     : null,
				minimize      : function() { self.ui.notify.trigger('minimize'); }
			}),
			statusbar : $('<div class="ui-widget-header ui-helper-clearfix ui-corner-bottom elfinder-statusbar"></div>').hide().appendTo(node),
			toast : $('<div class="elfinder-toast"></div>').appendTo(node),
			bottomtray : $('<div class="elfinder-bottomtray">').appendTo(node),
			progressbar : $('<div class="elfinder-ui-progressbar">').appendTo(node)
		};

		self.trigger('uiready');

		// load required ui
		$.each(self.options.ui || [], function(i, ui) {
			var name = 'elfinder'+ui,
				opts = self.options.uiOptions[ui] || {};
	
			if (!self.ui[ui] && $.fn[name]) {
				// regist to self.ui before make instance
				self.ui[ui] = $('<'+(opts.tag || 'div')+'/>').appendTo(node);
				self.ui[ui][name](self, opts);
			}
		});

		self.ui.progressbar.appendTo(self.ui.workzone);
		self.ui.notify.prev('.ui-dialog-titlebar').append('<div class="elfinder-ui-progressbar"></div>');

		// update size	
		self.resize(width, height);
		
		// make node resizable
		if (self.options.resizable) {
			node.resizable({
				resize    : function(e, ui) {
					self.resize(ui.size.width, ui.size.height);
				},
				handles   : 'se',
				minWidth  : 300,
				minHeight : 200
			});
			if (self.UA.Touch) {
				node.addClass('touch-punch');
			}
		}

		(function() {
			var navbar = self.getUI('navbar'),
				cwd    = self.getUI('cwd').parent();
			
			self.autoScroll = {
				navbarUp   : function(v) {
					navbar.scrollTop(Math.max(0, navbar.scrollTop() - v));
				},
				navbarDown : function(v) {
					navbar.scrollTop(navbar.scrollTop() + v);
				},
				cwdUp     : function(v) {
					cwd.scrollTop(Math.max(0, cwd.scrollTop() - v));
				},
				cwdDown   : function(v) {
					cwd.scrollTop(cwd.scrollTop() + v);
				}
			};
		})();

		// Swipe on the touch devices to show/hide of toolbar or navbar
		if (self.UA.Touch) {
			(function() {
				var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH,
					navbar = self.getUI('navbar'),
					toolbar = self.getUI('toolbar'),
					moveEv = 'touchmove.stopscroll',
					moveTm,
					moveUpOn = function(e) {
						var touches = e.originalEvent.touches || [{}],
							y = touches[0].pageY || null;
						if (!lastY || y < lastY) {
							e.preventDefault();
							moveTm && clearTimeout(moveTm);
						}
					},
					moveDownOn = function(e) {
						e.preventDefault();
						moveTm && clearTimeout(moveTm);
					},
					moveOff = function() {
						moveTm = setTimeout(function() {
							node.off(moveEv);
						}, 100);
					},
					handleW, handleH = 50;

				navbar = navbar.children().length? navbar : null;
				toolbar = toolbar.length? toolbar : null;
				node.on('touchstart touchmove touchend', function(e) {
					if (e.type === 'touchend') {
						lastX = false;
						lastY = false;
						moveOff();
						return;
					}
					
					var touches = e.originalEvent.touches || [{}],
						x = touches[0].pageX || null,
						y = touches[0].pageY || null,
						ltr = (self.direction === 'ltr'),
						navbarMode, treeWidth, swipeX, moveX, toolbarT, mode;
					
					if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) {
						return;
					}
					
					if (e.type === 'touchstart') {
						nodeOffset = node.offset();
						nodeWidth = node.width();
						if (navbar) {
							lastX = false;
							if (navbar.is(':hidden')) {
								if (! handleW) {
									handleW = Math.max(50, nodeWidth / 10);
								}
								if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) {
									lastX = x;
								}
							} else if (! e.originalEvent._preventSwipeX) {
								navbarW = navbar.width();
								if (ltr) {
									swipeX = (x < nodeOffset.left + navbarW);
								} else {
									swipeX = (x > nodeOffset.left + nodeWidth - navbarW);
								}
								if (swipeX) {
									handleW = Math.max(50, nodeWidth / 10);
									lastX = x;
								} else {
									lastX = false;
								}
							}
						}
						if (toolbar) {
							lastY = false;
							if (! e.originalEvent._preventSwipeY) {
								toolbarH = toolbar.height();
								nodeTop = nodeOffset.top;
								if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) {
									lastY = y;
									node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn);
								}
							}
						}
					} else {
						if (navbar && lastX !== false) {
							navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow';
							moveX = Math.abs(lastX - x);
							if (navbarMode === 'navhide' && moveX > navbarW * 0.6
								|| (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45)
									&& (navbarMode === 'navshow'
										|| (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20)
									))
							) {
								self.getUI('navbar').trigger(navbarMode, {handleW: handleW});
								lastX = false;
							}
						}
						if (toolbar && lastY !== false ) {
							toolbarT = toolbar.offset().top;
							if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) {
								mode = (lastY > y)? 'slideUp' : 'slideDown';
								if (mode === 'slideDown' || toolbarT + 20 > y) {
									if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) {
										toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH});
									}
									lastY = false;
								}
							}
						}
					}
				});
			})();
		}

		if (self.dragUpload) {
			// add event listener for HTML5 DnD upload
			(function() {
				var isin = function(e) {
					return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && $(e.target).closest('div.ui-dialog-content').length === 0);
				},
				ent       = 'native-drag-enter',
				disable   = 'native-drag-disable',
				c         = 'class',
				navdir    = self.res(c, 'navdir'),
				droppable = self.res(c, 'droppable'),
				dropover  = self.res(c, 'adroppable'),
				arrow     = self.res(c, 'navarrow'),
				clDropActive = self.res(c, 'adroppable'),
				wz        = self.getUI('workzone'),
				ltr       = (self.direction === 'ltr'),
				clearTm   = function() {
					autoScrTm && cancelAnimationFrame(autoScrTm);
					autoScrTm = null;
				},
				wzRect, autoScrFn, autoScrTm;
				
				node.on('dragenter', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						wzRect = wz.data('rectangle');
					}
				})
				.on('dragleave', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
					}
				})
				.on('dragover', function(e) {
					var autoUp;
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = 'none';
						if (! autoScrTm) {
							autoScrTm = requestAnimationFrame(function() {
								var wzBottom = wzRect.top + wzRect.height,
									wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true),
									fn;
								if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) {
									if (wzRect.cwdEdge > e.pageX) {
										fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
									} else {
										fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
									}
									if (!autoUp) {
										if (fn.substr(0, 3) === 'cwd') {
											if (wzBottom < e.pageY) {
												wzBottom2 = wzBottom;
											} else {
												fn = '';
											}
										}
									}
									fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3));
								}
								autoScrTm = null;
							});
						}
					} else {
						clearTm();
					}
				})
				.on('drop', function(e) {
					clearTm();
					if (isin(e)) {
						e.stopPropagation();
						e.preventDefault();
					}
				});
				
				node.on('dragenter', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = $(e.currentTarget),
							id   = e.currentTarget.id || null,
							cwd  = null,
							elfFrom;
						if (!id) { // target is cwd
							cwd = self.cwd();
							$elm.data(disable, false);
							try {
								$.each(e.originalEvent.dataTransfer.types, function(i, v){
									if (v.substr(0, 13) === 'elfinderfrom:') {
										elfFrom = v.substr(13).toLowerCase();
									}
								});
							} catch(e) {}
						}
						if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) {
							e.preventDefault();
							e.stopPropagation();
							$elm.data(ent, true);
							$elm.addClass(clDropActive);
						} else {
							$elm.data(disable, true);
						}
					}
				})
				.on('dragleave', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = $(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						if ($elm.data(ent)) {
							$elm.data(ent, false);
						} else {
							$elm.removeClass(clDropActive);
						}
					}
				})
				.on('dragover', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = $(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy';
						$elm.data(ent, false);
					}
				})
				.on('drop', '.native-droppable', function(e){
					if (e.originalEvent && e.originalEvent.dataTransfer) {
						var $elm = $(e.currentTarget),
							id;
						e.preventDefault();
						e.stopPropagation();
						$elm.removeClass(clDropActive);
						if (e.currentTarget.id) {
							id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id);
						} else {
							id = self.cwd().hash;
						}
						e.originalEvent._target = id;
						self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id);
					}
				});
			})();
		}

		// trigger event cssloaded if cssAutoLoad disabled
		if (self.cssloaded === false) {
			self.cssloaded = true;
			self.trigger('cssloaded');
		}

		// calculate elFinder node z-index
		self.zIndexCalc();

		// send initial request and start to pray >_<
		self.trigger('init')
			.request({
				data        : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, 
				preventDone : true,
				notify      : {type : 'open', cnt : 1, hideCnt : true},
				freeze      : true
			})
			.fail(function() {
				self.trigger('fail').disable().lastDir('');
				listeners = {};
				shortcuts = {};
				$(document).add(node).off('.'+namespace);
				self.trigger = function() { };
			})
			.done(function(data) {
				var trashDisable = function(th) {
						var src = self.file(self.trashes[th]),
							d = self.options.debug,
							error;
						
						if (src && src.volumeid) {
							delete self.volOptions[src.volumeid].trashHash;
						}
						self.trashes[th] = false;
						self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.');
					},
					toChkTh = {};
				
				// regist rawStringDecoder
				if (self.options.rawStringDecoder) {
					self.registRawStringDecoder(self.options.rawStringDecoder);
				}

				// re-calculate elFinder node z-index
				self.zIndexCalc();
				
				self.load().debug('api', self.api);
				// update ui's size after init
				node.trigger('resize');
				// initial open
				open(data);
				self.trigger('open', data, false);
				self.trigger('opendone');
				
				if (inFrame && self.options.enableAlways) {
					$(window).trigger('focus');
				}
				
				// check self.trashes
				$.each(self.trashes, function(th) {
					var dir = self.file(th),
						src;
					if (! dir) {
						toChkTh[th] = true;
					} else if (dir.mime !== 'directory' || ! dir.write) {
						trashDisable(th);
					}
				});
				if (Object.keys(toChkTh).length) {
					self.request({
						data : {cmd : 'info', targets : Object.keys(toChkTh)},
						preventDefault : true
					}).done(function(data) {
						if (data && data.files) {
							$.each(data.files, function(i, dir) {
								if (dir.mime === 'directory' && dir.write) {
									delete toChkTh[dir.hash];
								}
							});
						}
					}).always(function() {
						$.each(toChkTh, trashDisable);
					});
				}
				// to enable / disable
				self[self.options.enableAlways? 'enable' : 'disable']();
			});
		
		// self.timeEnd('load');
		// End of bootUp()
	};
	
	// call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup }
	if (bootCallback && typeof bootCallback === 'function') {
		self.bootCallback = bootCallback;
		bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup });
	}
	
	// call dfrdsBeforeBootup functions then boot up elFinder
	$.when.apply(null, dfrdsBeforeBootup).done(function() {
		bootUp();
	}).fail(function(error) {
		self.error(error);
	});
};

//register elFinder to global scope
if (typeof toGlobal === 'undefined' || toGlobal) {
	window.elFinder = elFinder;
}

/**
 * Prototype
 * 
 * @type  Object
 */
elFinder.prototype = {
	
	uniqueid : 0,
	
	res : function(type, id) {
		return this.resources[type] && this.resources[type][id];
	}, 

	/**
	 * User os. Required to bind native shortcuts for open/rename
	 *
	 * @type String
	 **/
	OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1  ? 'win' : 'other',
	
	/**
	 * User browser UA.
	 * jQuery.browser: version deprecated: 1.3, removed: 1.9
	 *
	 * @type Object
	 **/
	UA : (function(){
		var self = this,
			webkit = !document.unqueID && !window.opera && !window.sidebar && 'localStorage' in window && 'WebkitAppearance' in document.documentElement.style,
			chrome = webkit && window.chrome,
			/*setRotated = function() {
				var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
				if (a === -90) {
					a = 270;
				}
				UA.Angle = a;
				UA.Rotated = a % 180 === 0? false : true;
			},*/
			UA = {
				// Browser IE <= IE 6
				ltIE6   : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined",
				// Browser IE <= IE 7
				ltIE7   : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined",
				// Browser IE <= IE 8
				ltIE8   : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined",
				// Browser IE <= IE 9
				ltIE9  : document.uniqueID && document.documentMode <= 9,
				// Browser IE <= IE 10
				ltIE10  : document.uniqueID && document.documentMode <= 10,
				// Browser IE >= IE 11
				gtIE11  : document.uniqueID && document.documentMode >= 11,
				IE      : document.uniqueID,
				Firefox : window.sidebar,
				Opera   : window.opera,
				Webkit  : webkit,
				Chrome  : chrome,
				Edge    : (chrome && window.msCredentials)? true : false,
				Safari  : webkit && !window.chrome,
				Mobile  : typeof window.orientation != "undefined",
				Touch   : typeof window.ontouchstart != "undefined",
				iOS     : navigator.platform.match(/^iP(?:[ao]d|hone)/),
				Mac     : navigator.platform.match(/^Mac/),
				Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'),
				Angle   : 0,
				Rotated : false,
				CSS : (function() {
					var aStyle = document.createElement('a').style,
						pStyle = document.createElement('p').style,
						css;
					css = 'position:sticky;position:-webkit-sticky;';
					css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;';
					aStyle.cssText = css;
					return {
						positionSticky : aStyle.position.indexOf('sticky')!==-1,
						widthMaxContent : aStyle.width.indexOf('max-content')!==-1,
						flex : typeof pStyle.flex !== 'undefined'
					};
				})()
			};
			return UA;
	})(),
	
	/**
	 * Is cookie enabled
	 * 
	 * @type Boolean
	 */
	cookieEnabled : window.navigator.cookieEnabled,

	/**
	 * Has RequireJS?
	 * 
	 * @type Boolean
	 */
	hasRequire : (typeof define === 'function' && define.amd),
	
	/**
	 * Current request command
	 * 
	 * @type  String
	 */
	currentReqCmd : '',
	
	/**
	 * Current keyboard state
	 * 
	 * @type  Object
	 */
	keyState : {},
	
	/**
	 * Internationalization object
	 * 
	 * @type  Object
	 */
	i18 : {
		en : {
			translator      : '',
			language        : 'English',
			direction       : 'ltr',
			dateFormat      : 'd.m.Y H:i',
			fancyDateFormat : '$1 H:i',
			nonameDateFormat : 'ymd-His',
			messages        : {}
		},
		months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'],

		days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
	},
	
	/**
	 * File mimetype to kind mapping
	 * 
	 * @type  Object
	 */
	kinds : 	{
			'unknown'                       : 'Unknown',
			'directory'                     : 'Folder',
			'group'                         : 'Selects',
			'symlink'                       : 'Alias',
			'symlink-broken'                : 'AliasBroken',
			'application/x-empty'           : 'TextPlain',
			'application/postscript'        : 'Postscript',
			'application/vnd.ms-office'     : 'MsOffice',
			'application/msword'            : 'MsWord',
			'application/vnd.ms-word'       : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord',
			'application/vnd.ms-word.document.macroEnabled.12'                        : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord',
			'application/vnd.ms-word.template.macroEnabled.12'                        : 'MsWord',
			'application/vnd.ms-excel'      : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'       : 'MsExcel',
			'application/vnd.ms-excel.sheet.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.template'    : 'MsExcel',
			'application/vnd.ms-excel.template.macroEnabled.12'                       : 'MsExcel',
			'application/vnd.ms-excel.sheet.binary.macroEnabled.12'                   : 'MsExcel',
			'application/vnd.ms-excel.addin.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.ms-powerpoint' : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP',
			'application/vnd.ms-powerpoint.presentation.macroEnabled.12'              : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slideshow'  : 'MsPP',
			'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'                 : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.template'   : 'MsPP',
			'application/vnd.ms-powerpoint.template.macroEnabled.12'                  : 'MsPP',
			'application/vnd.ms-powerpoint.addin.macroEnabled.12'                     : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slide'      : 'MsPP',
			'application/vnd.ms-powerpoint.slide.macroEnabled.12'                     : 'MsPP',
			'application/pdf'               : 'PDF',
			'application/xml'               : 'XML',
			'application/vnd.oasis.opendocument.text' : 'OO',
			'application/vnd.oasis.opendocument.text-template'         : 'OO',
			'application/vnd.oasis.opendocument.text-web'              : 'OO',
			'application/vnd.oasis.opendocument.text-master'           : 'OO',
			'application/vnd.oasis.opendocument.graphics'              : 'OO',
			'application/vnd.oasis.opendocument.graphics-template'     : 'OO',
			'application/vnd.oasis.opendocument.presentation'          : 'OO',
			'application/vnd.oasis.opendocument.presentation-template' : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet'           : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet-template'  : 'OO',
			'application/vnd.oasis.opendocument.chart'                 : 'OO',
			'application/vnd.oasis.opendocument.formula'               : 'OO',
			'application/vnd.oasis.opendocument.database'              : 'OO',
			'application/vnd.oasis.opendocument.image'                 : 'OO',
			'application/vnd.openofficeorg.extension'                  : 'OO',
			'application/x-shockwave-flash' : 'AppFlash',
			'application/flash-video'       : 'Flash video',
			'application/x-bittorrent'      : 'Torrent',
			'application/javascript'        : 'JS',
			'application/rtf'               : 'RTF',
			'application/rtfd'              : 'RTF',
			'application/x-font-ttf'        : 'TTF',
			'application/x-font-otf'        : 'OTF',
			'application/x-rpm'             : 'RPM',
			'application/x-web-config'      : 'TextPlain',
			'application/xhtml+xml'         : 'HTML',
			'application/docbook+xml'       : 'DOCBOOK',
			'application/x-awk'             : 'AWK',
			'application/x-gzip'            : 'GZIP',
			'application/x-bzip2'           : 'BZIP',
			'application/x-xz'              : 'XZ',
			'application/zip'               : 'ZIP',
			'application/x-zip'               : 'ZIP',
			'application/x-rar'             : 'RAR',
			'application/x-tar'             : 'TAR',
			'application/x-7z-compressed'   : '7z',
			'application/x-jar'             : 'JAR',
			'text/plain'                    : 'TextPlain',
			'text/x-php'                    : 'PHP',
			'text/html'                     : 'HTML',
			'text/javascript'               : 'JS',
			'text/css'                      : 'CSS',
			'text/rtf'                      : 'RTF',
			'text/rtfd'                     : 'RTF',
			'text/x-c'                      : 'C',
			'text/x-csrc'                   : 'C',
			'text/x-chdr'                   : 'CHeader',
			'text/x-c++'                    : 'CPP',
			'text/x-c++src'                 : 'CPP',
			'text/x-c++hdr'                 : 'CPPHeader',
			'text/x-shellscript'            : 'Shell',
			'application/x-csh'             : 'Shell',
			'text/x-python'                 : 'Python',
			'text/x-java'                   : 'Java',
			'text/x-java-source'            : 'Java',
			'text/x-ruby'                   : 'Ruby',
			'text/x-perl'                   : 'Perl',
			'text/x-sql'                    : 'SQL',
			'text/xml'                      : 'XML',
			'text/x-comma-separated-values' : 'CSV',
			'text/x-markdown'               : 'Markdown',
			'image/x-ms-bmp'                : 'BMP',
			'image/jpeg'                    : 'JPEG',
			'image/gif'                     : 'GIF',
			'image/png'                     : 'PNG',
			'image/tiff'                    : 'TIFF',
			'image/x-targa'                 : 'TGA',
			'image/vnd.adobe.photoshop'     : 'PSD',
			'image/xbm'                     : 'XBITMAP',
			'image/pxm'                     : 'PXM',
			'image/webp'                    : 'WEBP',
			'application/vnd.ms-fontobject' : 'EOT',
			'font/sfnt'                     : 'SFNT',
			'application/font-sfnt'         : 'SFNT',
			'font/ttf'                      : 'TTF',
			'font/opentype'                 : 'OTF',
			'font/otf'                      : 'OTF',
			'application/x-font-opentype'   : 'OTF',
			'font/woff'                     : 'WOFF',
			'application/font-woff'         : 'WOFF',
			'font/woff2'                    : 'WOFF2',
			'application/font-woff2'        : 'WOFF2',
			'audio/mpeg'                    : 'AudioMPEG',
			'audio/midi'                    : 'AudioMIDI',
			'audio/ogg'                     : 'AudioOGG',
			'audio/mp4'                     : 'AudioMPEG4',
			'audio/x-m4a'                   : 'AudioMPEG4',
			'audio/wav'                     : 'AudioWAV',
			'audio/x-mp3-playlist'          : 'AudioPlaylist',
			'video/x-dv'                    : 'VideoDV',
			'video/mp4'                     : 'VideoMPEG4',
			'video/mpeg'                    : 'VideoMPEG',
			'video/x-msvideo'               : 'VideoAVI',
			'video/quicktime'               : 'VideoMOV',
			'video/x-ms-wmv'                : 'VideoWM',
			'video/x-flv'                   : 'VideoFlash',
			'video/x-matroska'              : 'VideoMKV',
			'video/ogg'                     : 'VideoOGG'
		},
	
	/**
	 * File mimetype to file extention mapping
	 * 
	 * @type  Object
	 * @see   elFinder.mimetypes.js
	 */
	mimeTypes : {},
	
	/**
	 * Ajax request data validation rules
	 * 
	 * @type  Object
	 */
	rules : {
		defaults : function(data) {
			if (!data
			|| (data.added && !Array.isArray(data.added))
			||  (data.removed && !Array.isArray(data.removed))
			||  (data.changed && !Array.isArray(data.changed))) {
				return false;
			}
			return true;
		},
		open    : function(data) { return data && data.cwd && data.files && $.isPlainObject(data.cwd) && Array.isArray(data.files); },
		tree    : function(data) { return data && data.tree && Array.isArray(data.tree); },
		parents : function(data) { return data && data.tree && Array.isArray(data.tree); },
		tmb     : function(data) { return data && data.images && ($.isPlainObject(data.images) || Array.isArray(data.images)); },
		upload  : function(data) { return data && ($.isPlainObject(data.added) || Array.isArray(data.added));},
		search  : function(data) { return data && data.files && Array.isArray(data.files); }
	},
	
	/**
	 * Commands costructors
	 *
	 * @type Object
	 */
	commands : {},
	
	/**
	 * Commands to add the item (space delimited)
	 * 
	 * @type String
	 */
	cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload',
	
	parseUploadData : function(text) {
		var self = this,
			data;
		
		if (!$.trim(text)) {
			return {error : ['errResponse', 'errDataEmpty']};
		}
		
		try {
			data = JSON.parse(text);
		} catch (e) {
			return {error : ['errResponse', 'errDataNotJSON']};
		}
		
		data = self.normalize(data);
		if (!self.validResponse('upload', data)) {
			return {error : (data.norError || ['errResponse'])};
		}
		data.removed = $.merge((data.removed || []), $.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; }));
		return data;
		
	},
	
	iframeCnt : 0,
	
	uploads : {
		// xhr muiti uploading flag
		xhrUploading: false,
		
		// Timer of request fail to sync
		failSyncTm: null,
		
		// current chunkfail requesting chunk
		chunkfailReq: {},
		
		// check file/dir exists
		checkExists: function(files, target, fm, isDir) {
			var dfrd = $.Deferred(),
				names, renames = [], hashes = {}, chkFiles = [],
				cancel = function() {
					var i = files.length;
					while (--i > -1) {
						files[i]._remove = true;
					}
				},
				resolve = function() {
					dfrd.resolve(renames, hashes);
				},
				check = function() {
					var existed = [], exists = [], i, c,
						pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '',
						confirm = function(ndx) {
							var last = ndx == exists.length-1,
								opts = {
									cssClass : 'elfinder-confirm-upload',
									title  : fm.i18n('cmdupload'),
									text   : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], 
									all    : !last,
									accept : {
										label    : 'btnYes',
										callback : function(all) {
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									reject : {
										label    : 'btnNo',
										callback : function(all) {
											var i;
			
											if (all) {
												i = exists.length;
												while (ndx < i--) {
													files[exists[i].i]._remove = true;
												}
											} else {
												files[exists[ndx].i]._remove = true;
											}
			
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									cancel : {
										label    : 'btnCancel',
										callback : function() {
											cancel();
											resolve();
										}
									},
									buttons : [
										{
											label : 'btnBackup',
											cssClass : 'elfinder-confirm-btn-backup',
											callback : function(all) {
												var i;
												if (all) {
													i = exists.length;
													while (ndx < i--) {
														renames.push(exists[i].name);
													}
												} else {
													renames.push(exists[ndx].name);
												}
												!last && !all
													? confirm(++ndx)
													: resolve();
											}
										}
									]
								};
							
							if (!isDir) {
								opts.buttons.push({
									label : 'btnRename' + (last? '' : 'All'),
									cssClass : 'elfinder-confirm-btn-rename',
									callback : function() {
										renames = null;
										resolve();
									}
								});
							}
							if (fm.iframeCnt > 0) {
								delete opts.reject;
							}
							fm.confirm(opts);
						};
					
					if (! fm.file(target).read) {
						// for dropbox type
						resolve();
						return;
					}
					
					names = $.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;});
					
					fm.request({
						data : {cmd : 'ls', target : target, intersect : $.map(names, function(item) { return item.name;})},
						notify : {type : 'preupload', cnt : 1, hideCnt : true},
						preventDefault : true
					})
					.done(function(data) {
						var existedArr, cwdItems;
						if (data) {
							if (data.error) {
								cancel();
							} else {
								if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
									if (data.list) {
										if (Array.isArray(data.list)) {
											existed = data.list || [];
										} else {
											existedArr = [];
											existed = $.map(data.list, function(n) {
												if (typeof n === 'string') {
													return n;
												} else {
													// support to >=2.1.11 plugin Normalizer, Sanitizer
													existedArr = existedArr.concat(n);
													return false;
												}
											});
											if (existedArr.length) {
												existed = existed.concat(existedArr);
											}
											hashes = data.list;
										}
										exists = $.grep(names, function(name){
											return $.inArray(name.name, existed) !== -1 ? true : false ;
										});
										if (exists.length && existed.length && target == fm.cwd().hash) {
											cwdItems = $.map(fm.files(target), function(file) { return file.name; } );
											if ($.grep(existed, function(n) { 
												return $.inArray(n, cwdItems) === -1? true : false;
											}).length){
												fm.sync();
											}
										}
									}
								}
							}
						}
						if (exists.length > 0) {
							confirm(0);
						} else {
							resolve();
						}
					})
					.fail(function(error) {
						cancel();
						resolve();
						error && fm.error(error);
					});
				};
			if (fm.api >= 2.1 && typeof files[0] == 'object') {
				check();
			} else {
				resolve();
			}
			return dfrd;
		},
		
		// check droped contents
		checkFile : function(data, fm, target) {
			if (!!data.checked || data.type == 'files') {
				return data.files;
			} else if (data.type == 'data') {
				var dfrd = $.Deferred(),
				scanDfd = $.Deferred(),
				files = [],
				paths = [],
				dirctorys = [],
				processing = 0,
				items,
				mkdirs = [],
				cancel = false,
				toArray = function(list) {
					return Array.prototype.slice.call(list || [], 0);
				},
				doScan = function(items) {
					var entry, readEntries,
						excludes = fm.options.folderUploadExclude[fm.OS] || null,
						length = items.length,
						check = function() {
							if (--processing < 1 && scanDfd.state() === 'pending') {
								scanDfd.resolve();
							}
						},
						pushItem = function(file) {
							if (! excludes || ! file.name.match(excludes)) {
								paths.push(entry.fullPath || '');
								files.push(file);
							}
							check();
						},
						readEntries = function(dirReader) {
							var entries = [],
								read = function() {
									dirReader.readEntries(function(results) {
										if (cancel || !results.length) {
											for (var i = 0; i < entries.length; i++) {
												if (cancel) {
													scanDfd.reject();
													break;
												}
												doScan([entries[i]]);
											}
											check();
										} else {
											entries = entries.concat(toArray(results));
											read();
										}
									}, check);
								};
							read();
						};
					
					processing++;
					for (var i = 0; i < length; i++) {
						if (cancel) {
							scanDfd.reject();
							break;
						}
						entry = items[i];
						if (entry) {
							if (entry instanceof File) {
								pushItem(entry);
							} else if (entry.isFile) {
								processing++;
								entry.file(pushItem, check);
							} else if (entry.isDirectory) {
								if (fm.api >= 2.1) {
									processing++;
									mkdirs.push(entry.fullPath);
									readEntries(entry.createReader()); // Start reading dirs.
								}
							}
						}
					}
					check();
					return scanDfd;
				}, hasDirs;
				
				items = $.map(data.files.items, function(item){
					if (item.kind === 'file') {
						return (item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry()) || item.getAsFile();
					} else {
						return null;
					}
				});
				$.each(items, function(i, item) {
					if (item.isDirectory) {
						hasDirs = true;
						return false;
					}
				});
				if (items.length > 0) {
					fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){
						var dfds = [];
						if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
							if (renames === null) {
								data.overwrite = 0;
								renames = [];
							}
							items = $.grep(items, function(item){
								var i, bak, hash, dfd, hi;
								if (item.isDirectory && renames.length) {
									i = $.inArray(item.name, renames);
									if (i !== -1) {
										renames.splice(i, 1);
										bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, '');
										$.each(hashes, function(h, name) {
											if (item.name == name) {
												hash = h;
												return false;
											}
										});
										if (! hash) {
											hash = fm.fileByName(item.name, target).hash;
										}
										fm.lockfiles({files : [hash]});
										dfd = fm.request({
											data   : {cmd : 'rename', target : hash, name : bak},
											notify : {type : 'rename', cnt : 1}
										})
										.fail(function() {
											item._remove = true;
											fm.sync();
										})
										.always(function() {
											fm.unlockfiles({files : [hash]});
										});
										dfds.push(dfd);
									}
								}
								return !item._remove? true : false;
							});
						}
						$.when.apply($, dfds).done(function(){
							var notifyto, msg,
								id = +new Date();
							
							if (items.length > 0) {
								msg = fm.escape(items[0].name);
								if (items.length > 1) {
									msg += ' ... ' + items.length + fm.i18n('items');
								}
								notifyto = setTimeout(function() {
									fm.notify({
										type : 'readdir',
										id : id,
										cnt : 1,
										hideCnt: true,
										msg : fm.i18n('ntfreaddir') + ' (' + msg + ')',
										cancel: function() {
											cancel = true;
										}
									});
								}, fm.options.notifyDelay);
								doScan(items).done(function() {
									notifyto && clearTimeout(notifyto);
									fm.notify({type : 'readdir', id: id, cnt : -1});
									if (cancel) {
										dfrd.reject();
									} else {
										dfrd.resolve([files, paths, renames, hashes, mkdirs]);
									}
								}).fail(function() {
									dfrd.reject();
								});
							} else {
								dfrd.reject();
							}
						});
					});
					return dfrd.promise();
				} else {
					return dfrd.reject();
				}
			} else {
				var ret = [];
				var check = [];
				var str = data.files[0];
				if (data.type == 'html') {
					var tmp = $("<html></html>").append($.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))),
						atag;
					$('img[_elfsrc]', tmp).each(function(){
						var url, purl,
						self = $(this),
						pa = self.closest('a');
						if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) {
							purl = pa.attr('href');
						}
						url = self.attr('_elfsrc');
						if (url) {
							if (purl) {
								$.inArray(purl, ret) == -1 && ret.push(purl);
								$.inArray(url, check) == -1 &&  check.push(url);
							} else {
								$.inArray(url, ret) == -1 && ret.push(url);
							}
						}
						// Probably it's clipboard data
						if (ret.length === 1 && ret[0].match(/^data:image\/png/)) {
							data.clipdata = true;
						}
					});
					atag = $('a[href]', tmp);
					atag.each(function(){
						var text, loc,
							parseUrl = function(url) {
								var a = document.createElement('a');
								a.href = url;
								return a;
							};
						if (text = $(this).text()) {
							loc = parseUrl($(this).attr('href'));
							if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || $.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) {
								if ($.inArray(loc.href, ret) == -1 && $.inArray(loc.href, check) == -1) ret.push(loc.href);
							}
						}
					});
				} else {
					var regex, m, url;
					regex = /((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/ig;
					while (m = regex.exec(str)) {
						url = m[1].replace(/&amp;/g, '&');
						if ($.inArray(url, ret) == -1) ret.push(url);
					}
				}
				return ret;
			}
		},

		// upload transport using XMLHttpRequest
		xhr : function(data, fm) { 
			var self   = fm ? fm : this,
				node        = self.getUI(),
				xhr         = new XMLHttpRequest(),
				notifyto    = null,
				notifyto1   = null,
				notifyto2   = null,
				dataChecked = data.checked,
				isDataType  = (data.isDataType || data.type == 'data'),
				target      = (data.target || self.cwd().hash),
				dropEvt     = (data.dropEvt || null),
				extraData   = data.extraData || null,
				chunkEnable = (self.option('uploadMaxConn', target) != -1),
				multiMax    = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))),
				retryWait   = 10000, // 10 sec
				retryMax    = 30, // 10 sec * 30 = 300 secs (Max 5 mins)
				retry       = 0,
				getFile     = function(files) {
					var dfd = $.Deferred(),
						file;
					if (files.promise) {
						files.always(function(f) {
							dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {});
						});
					} else {
						dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {});
					}
					return dfd;
				},
				dfrd   = $.Deferred()
					.fail(function(err) {
						var error = self.parseError(err),
							userAbort;
						if (error === 'userabort') {
							userAbort = true;
							error = void 0;
						}
						if (files && (self.uploads.xhrUploading || userAbort)) {
							// send request om fail
							getFile(files).done(function(file) {
								if (!userAbort) {
									triggerError(error, file);
								}
								if (! file._cid) {
									// send sync request
									self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm);
									self.uploads.failSyncTm = setTimeout(function() {
										self.sync(target);
									}, 1000);
								} else if (! self.uploads.chunkfailReq[file._cid]) {
									// send chunkfail request
									self.uploads.chunkfailReq[file._cid] = true;
									setTimeout(function() {
										fm.request({
											data : {
												cmd: 'upload',
												target: target,
												chunk: file._chunk,
												cid: file._cid,
												upload: ['chunkfail'],
												mimes: 'chunkfail'
											},
											options : {
												type: 'post',
												url: self.uploadURL
											},
											preventDefault: true
										}).always(function() {
											delete self.uploads.chunkfailReq[file._chunk];
										});
									}, 1000);
								}
							});
						} else {
							triggerError(error);
						}
						!userAbort && self.sync();
						self.uploads.xhrUploading = false;
						files = null;
					})
					.done(function(data) {
						self.uploads.xhrUploading = false;
						files = null;
						if (data) {
							self.currentReqCmd = 'upload';
							data.warning && triggerError(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							self.trigger('upload', data, false);
							self.trigger('uploaddone');
							if (data.toasts && Array.isArray(data.toasts)) {
								$.each(data.toasts, function() {
									this.msg && self.toast(this);
								});
							}
							data.sync && self.sync();
							if (data.debug) {
								self.responseDebug(data);
								fm.debug('backend-debug', data);
							}
						}
					})
					.always(function() {
						self.abortXHR(xhr);
						// unregist fnAbort function
						node.off('uploadabort', fnAbort);
						$(window).off('unload', fnAbort);
						notifyto && clearTimeout(notifyto);
						notifyto1 && clearTimeout(notifyto1);
						notifyto2 && clearTimeout(notifyto2);
						dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
						notifyto1 && uploadedNtf && self.notify({type : 'chunkmerge', cnt : -cnt});
						chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1});
					}),
				formData    = new FormData(),
				files       = data.input ? data.input.files : self.uploads.checkFile(data, self, target), 
				cnt         = data.checked? (isDataType? files[0].length : files.length) : files.length,
				isChunked   = false,
				loaded      = 0,
				prev        = 0,
				filesize    = 0,
				notify      = false,
				notifyElm   = self.ui.notify,
				cancelBtn   = true,
				uploadedNtf = false,
				abort       = false,
				checkNotify = function() {
					if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) {
						notify = true;
					}
					return notify;
				},
				fnAbort     = function(e, error) {
					abort = true;
					self.abortXHR(xhr, { quiet: true, abort: true });
					dfrd.reject(error);
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0});
					}
				},
				cancelToggle = function(show, hasChunk) {
					ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide']();
					cancelBtn = show;
				},
				startNotify = function(size) {
					if (!size) size = filesize;
					return setTimeout(function() {
						notify = true;
						self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size,
							cancel: function() {
								node.trigger('uploadabort', 'userabort');
							}
						});
						ntfUpload = notifyElm.children('.elfinder-notify-upload');
						prev = loaded;
						if (data.multiupload) {
							cancelBtn && cancelToggle(true);
						} else {
							cancelToggle(cancelBtn && loaded < size);
						}
					}, self.options.notifyDelay);
				},
				doRetry = function() {
					if (retry++ <= retryMax) {
						if (checkNotify() && prev) {
							self.notify({type : 'upload', cnt : 0, progress : 0, size : prev});
						}
						self.abortXHR(xhr, { quiet: true });
						prev = loaded = 0;
						setTimeout(function() {
							var reqId;
							if (! abort) {
								xhr.open('POST', self.uploadURL, true);
								if (self.api >= 2.1029) {
									reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
									(typeof formData['delete'] === 'function') && formData['delete']('reqid');
									formData.append('reqid', reqId);
									xhr._requestId = reqId;
								}
								xhr.send(formData);
							}
						}, retryWait);
					} else {
						node.trigger('uploadabort', ['errAbort', 'errTimeout']);
					}
				},
				progress = function() {
					var node;
					if (notify) {
						dfrd.notifyWith(ntfUpload, [{
							cnt: ntfUpload.data('cnt'),
							progress: ntfUpload.data('progress'),
							total: ntfUpload.data('total')
						}]);
					}
				},
				triggerError = function(err, file, unite) {
					err && self.trigger('xhruploadfail', { error: err, file: file });
					if (unite) {
						if (err) {
							if (errCnt < self.options.maxErrorDialogs) {
								if (Array.isArray(err)) {
									errors = errors.concat(err);
								} else {
									errors.push(err);
								}
							}
							errCnt++;
						}
					} else {
						if (err) {
							self.error(err);
						} else {
							if (errors.length) {
								if (errCnt >= self.options.maxErrorDialogs) {
									errors = errors.concat('moreErrors', errCnt - self.options.maxErrorDialogs);
								}
								self.error(errors);
							}
							errors = [];
							errCnt = 0;
						}
					}
				},
				errors = [],
				errCnt = 0,
				renames = (data.renames || null),
				hashes = (data.hashes || null),
				chunkMerge = false,
				ntfUpload = $();
			
			// regist fnAbort function
			node.one('uploadabort', fnAbort);
			$(window).one('unload.' + fm.namespace, fnAbort);
			
			!chunkMerge && (prev = loaded);
			
			if (!isDataType && !cnt) {
				return dfrd.reject(['errUploadNoFiles']);
			}
			
			xhr.addEventListener('error', function() {
				if (xhr.status == 0) {
					if (abort) {
						dfrd.reject();
					} else {
						// ff bug while send zero sized file
						// for safari - send directory
						if (!isDataType && data.files && $.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errAbort', 'errFolderUpload']);
						} else if (data.input && $.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errUploadNoFiles']);
						} else {
							doRetry();
						}
					}
				} else {
					node.trigger('uploadabort', 'errConnect');
				}
			}, false);
			
			xhr.addEventListener('load', function(e) {
				var status = xhr.status, res, curr = 0, error = '', errData, errObj;
				
				self.setCustomHeaderByXhr(xhr);

				if (status >= 400) {
					if (status > 500) {
						error = 'errResponse';
					} else {
						error = ['errResponse', 'errServerError'];
					}
				} else {
					if (!xhr.responseText) {
						error = ['errResponse', 'errDataEmpty'];
					}
				}
				
				if (error) {
					node.trigger('uploadabort');
					getFile(files || {}).done(function(file) {
						return dfrd.reject(file._cid? null : error);
					});
				}
				
				loaded = filesize;
				
				if (checkNotify() && (curr = loaded - prev)) {
					self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
					progress();
				}

				res = self.parseUploadData(xhr.responseText);
				
				// chunked upload commit
				if (res._chunkmerged) {
					formData = new FormData();
					var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}];
					chunkMerge = true;
					node.off('uploadabort', fnAbort);
					notifyto2 = setTimeout(function() {
						self.notify({type : 'chunkmerge', cnt : 1});
					}, self.options.notifyDelay);
					isDataType? send(_file, files[1]) : send(_file);
					return;
				}
				
				res._multiupload = data.multiupload? true : false;
				if (res.error) {
					errData = {
						cmd: 'upload',
						err: res,
						xhr: xhr,
						rc: xhr.status
					};
					self.trigger('uploadfail', res);
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._getEvent && errData._getEvent().isDefaultPrevented()) {
						res.error = '';
					}
					if (res._chunkfailure || res._multiupload) {
						abort = true;
						self.uploads.xhrUploading = false;
						notifyto && clearTimeout(notifyto);
						if (ntfUpload.length) {
							self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
							dfrd.reject(res);
						} else {
							// for multi connection
							dfrd.reject();
						}
					} else {
						dfrd.reject(res);
					}
				} else {
					dfrd.resolve(res);
				}
			}, false);
			
			xhr.upload.addEventListener('loadstart', function(e) {
				if (!chunkMerge && e.lengthComputable) {
					loaded = e.loaded;
					retry && (loaded = 0);
					filesize = e.total;
					if (!loaded) {
						loaded = parseInt(filesize * 0.05);
					}
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize});
						prev = loaded;
						progress();
					}
				}
			}, false);
			
			xhr.upload.addEventListener('progress', function(e) {
				var curr;

				if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) {
					
					loaded = e.loaded;

					// to avoid strange bug in safari (not in chrome) with drag&drop.
					// bug: macos finder opened in any folder,
					// reset safari cache (option+command+e), reload elfinder page,
					// drop file from finder
					// on first attempt request starts (progress callback called ones) but never ends.
					// any next drop - successfull.
					if (!data.checked && loaded > 0 && !notifyto) {
						notifyto = startNotify(xhr._totalSize - loaded);
					}
					
					if (!filesize) {
						filesize = e.total;
						if (!loaded) {
							loaded = parseInt(filesize * 0.05);
						}
					}
					
					curr = loaded - prev;
					if (checkNotify() && (curr/e.total) >= 0.05) {
						self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
						prev = loaded;
						progress();
					}
					
					if (!uploadedNtf && loaded >= filesize && !isChunked) {
						// Use "chunkmerge" for "server-in-process" notification
						uploadedNtf = true;
						notifyto1 = setTimeout(function() {
							self.notify({type : 'chunkmerge', cnt : cnt});
						}, self.options.notifyDelay);
					}

					if (cancelBtn && ! data.multiupload && loaded >= filesize) {
						checkNotify() && cancelToggle(false);
					}
				}
			}, false);
			
			var send = function(files, paths){
				var size = 0,
				fcnt = 1,
				sfiles = [],
				c = 0,
				total = cnt,
				maxFileSize,
				totalSize = 0,
				chunked = [],
				chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system
				BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize
				blobSlice = chunkEnable? false : '',
				blobSize, blobMtime, blobName, i, start, end, chunks, blob, chunk, added, done, last, failChunk,
				multi = function(files, num){
					var sfiles = [], cid, sfilesLen = 0, cancelChk, hasChunk;
					if (!abort) {
						while(files.length && sfiles.length < num) {
							sfiles.push(files.shift());
						}
						sfilesLen = sfiles.length;
						if (sfilesLen) {
							cancelChk = sfilesLen;
							for (var i=0; i < sfilesLen; i++) {
								if (abort) {
									break;
								}
								cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null);
								hasChunk = (hasChunk || cid)? true : false;
								if (!!failChunk[cid]) {
									last--;
									continue;
								}
								fm.exec('upload', {
									type: data.type,
									isDataType: isDataType,
									files: sfiles[i],
									checked: true,
									target: target,
									dropEvt: dropEvt,
									renames: renames,
									hashes: hashes,
									multiupload: true,
									overwrite: data.overwrite === 0? 0 : void 0,
									clipdata: data.clipdata
								}, void 0, target)
								.fail(function(error) {
									if (error && error === 'No such command') {
										abort = true;
										fm.error(['errUpload', 'errPerm']);
									}
									if (cid) {	
										failChunk[cid] = true;
									}
								})
								.always(function(e) {
									if (e && e.added) added = $.merge(added, e.added);
									if (last <= ++done) {
										fm.trigger('multiupload', {added: added});
										notifyto && clearTimeout(notifyto);
										if (checkNotify()) {
											self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
										}
									}
									if (files.length) {
										multi(files, 1); // Next one
									} else {
										if (--cancelChk <= 1) {
											if (cancelBtn) {
												cancelToggle(false, hasChunk);
											}
										}
										dfrd.resolve();
									}
								});
							}
						}
					}
					if (sfiles.length < 1 || abort) {
						if (abort) {
							notifyto && clearTimeout(notifyto);
							if (cid) {
								failChunk[cid] = true;
							}
							dfrd.reject();
						} else {
							dfrd.resolve();
							self.uploads.xhrUploading = false;
						}
					}
				},
				check = function(){
					if (!self.uploads.xhrUploading) {
						self.uploads.xhrUploading = true;
						multi(sfiles, multiMax); // Max connection: 3
					} else {
						setTimeout(check, 100);
					}
				},
				reqId, err;

				if (! dataChecked && (isDataType || data.type == 'files')) {
					if (! (maxFileSize = fm.option('uploadMaxSize', target))) {
						maxFileSize = 0;
					}
					for (i=0; i < files.length; i++) {
						try {
							blob = files[i];
							blobSize = blob.size;
							if (blobSlice === false) {
								blobSlice = '';
								if (self.api >= 2.1) {
									if ('slice' in blob) {
										blobSlice = 'slice';
									} else if ('mozSlice' in blob) {
										blobSlice = 'mozSlice';
									} else if ('webkitSlice' in blob) {
										blobSlice = 'webkitSlice';
									}
								}
							}
						} catch(e) {
							cnt--;
							total--;
							continue;
						}
						
						// file size check
						if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) {
							triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						// file mime check
						if (blob.type && ! self.uploadMimeCheck(blob.type, target)) {
							triggerError(['errUploadFile', blob.name, 'errUploadMime', '(' + blob.type + ')'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						if (blobSlice && blobSize > BYTES_PER_CHUNK) {
							start = 0;
							end = BYTES_PER_CHUNK;
							chunks = -1;
							total = Math.floor((blobSize - 1) / BYTES_PER_CHUNK);
							blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0;
							blobName = data.clipdata? fm.date(fm.nonameDateFormat) + '.png' : blob.name;

							totalSize += blobSize;
							chunked[chunkID] = 0;
							while(start < blobSize) {
								chunk = blob[blobSlice](start, end);
								chunk._chunk = blobName + '.' + (++chunks) + '_' + total + '.part';
								chunk._cid   = chunkID;
								chunk._range = start + ',' + chunk.size + ',' + blobSize;
								chunk._mtime = blobMtime;
								chunked[chunkID]++;
								
								if (size) {
									c++;
								}
								if (typeof sfiles[c] == 'undefined') {
									sfiles[c] = [];
									if (isDataType) {
										sfiles[c][0] = [];
										sfiles[c][1] = [];
									}
								}
								size = BYTES_PER_CHUNK;
								fcnt = 1;
								if (isDataType) {
									sfiles[c][0].push(chunk);
									sfiles[c][1].push(paths[i]);
								} else {
									sfiles[c].push(chunk);
								}

								start = end;
								end = start + BYTES_PER_CHUNK;
							}
							if (chunk == null) {
								triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
								cnt--;
								total--;
							} else {
								total += chunks;
								size = 0;
								fcnt = 1;
								c++;
							}
							continue;
						}
						if ((fm.uplMaxSize && size + blobSize > fm.uplMaxSize) || fcnt > fm.uplMaxFile) {
							size = 0;
							fcnt = 1;
							c++;
						}
						if (typeof sfiles[c] == 'undefined') {
							sfiles[c] = [];
							if (isDataType) {
								sfiles[c][0] = [];
								sfiles[c][1] = [];
							}
						}
						if (isDataType) {
							sfiles[c][0].push(blob);
							sfiles[c][1].push(paths[i]);
						} else {
							sfiles[c].push(blob);
						}
						size += blobSize;
						totalSize += blobSize;
						fcnt++;
					}
					
					if (errors.length) {
						triggerError();
					}

					if (sfiles.length == 0) {
						// no data
						data.checked = true;
						return false;
					}
					
					if (sfiles.length > 1) {
						// multi upload
						notifyto = startNotify(totalSize);
						added = [];
						done = 0;
						last = sfiles.length;
						failChunk = [];
						check();
						return true;
					}
					
					// single upload
					if (isDataType) {
						files = sfiles[0][0];
						paths = sfiles[0][1];
					} else {
						files = sfiles[0];
					}
				}
				
				if (!dataChecked) {
					if (!fm.UA.Safari || !data.files) {
						notifyto = startNotify(totalSize);
					} else {
						xhr._totalSize = totalSize;
					}
				}
				
				dataChecked = true;
				
				if (! files.length) {
					dfrd.reject(['errUploadNoFiles']);
				}
				
				xhr.open('POST', self.uploadURL, true);
				
				// set request headers
				if (fm.customHeaders) {
					$.each(fm.customHeaders, function(key) {
						xhr.setRequestHeader(key, this);
					});
				}
				
				// set xhrFields
				if (fm.xhrFields) {
					$.each(fm.xhrFields, function(key) {
						if (key in xhr) {
							xhr[key] = this;
						}
					});
				}

				if (self.api >= 2.1029) {
					// request ID
					reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
					formData.append('reqid', reqId);
					xhr._requestId = reqId;
				}
				formData.append('cmd', 'upload');
				formData.append(self.newAPI ? 'target' : 'current', target);
				if (renames && renames.length) {
					$.each(renames, function(i, v) {
						formData.append('renames[]', v);
					});
					formData.append('suffix', fm.options.backupSuffix);
				}
				if (hashes) {
					$.each(hashes, function(i, v) {
						formData.append('hashes['+ i +']', v);
					});
				}
				$.each(self.customData, function(key, val) {
					formData.append(key, val);
				});
				$.each(self.options.onlyMimes, function(i, mime) {
					formData.append('mimes[]', mime);
				});
				
				$.each(files, function(i, file) {
					var name, relpath;
					if (file._chunkmerged) {
						formData.append('chunk', file._chunkmerged);
						formData.append('upload[]', file._name);
						formData.append('mtime[]', file._mtime);
						data.clipdata && formData.append('overwrite', 0);
						isChunked = true;
					} else {
						if (file._chunkfail) {
							formData.append('upload[]', 'chunkfail');
							formData.append('mimes', 'chunkfail');
						} else {
							if (data.clipdata) {
								if (!file._chunk) {
									data.overwrite = 0;
									name = fm.date(fm.nonameDateFormat) + '.png';
								}
							} else {
								if (file.name) {
									name = file.name;
									if (fm.UA.iOS) {
										if (name.match(/^image\.jpe?g$/i)) {
											data.overwrite = 0;
											name = fm.date(fm.nonameDateFormat) + '.jpg';
										} else if (name.match(/^capturedvideo\.mov$/i)) {
											data.overwrite = 0;
											name = fm.date(fm.nonameDateFormat) + '.mov';
										}
									}
									relpath = (file.webkitRelativePath || file.relativePath || file._relativePath || '').replace(/[^\/]+$/, '');
									name = relpath + name;
								}
							}
							name? formData.append('upload[]', file, name) : formData.append('upload[]', file);
						}
						if (file._chunk) {
							formData.append('chunk', file._chunk);
							formData.append('cid'  , file._cid);
							formData.append('range', file._range);
							formData.append('mtime[]', file._mtime);
							isChunked = true;
						} else {
							formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0);
						}
					}
				});
				
				if (isDataType) {
					$.each(paths, function(i, path) {
						formData.append('upload_path[]', path);
					});
				}
				
				if (data.overwrite === 0) {
					formData.append('overwrite', 0);
				}
				
				// send int value that which meta key was pressed when dropped  as `dropWith`
				if (dropEvt) {
					formData.append('dropWith', parseInt(
						(dropEvt.altKey  ? '1' : '0')+
						(dropEvt.ctrlKey ? '1' : '0')+
						(dropEvt.metaKey ? '1' : '0')+
						(dropEvt.shiftKey? '1' : '0'), 2));
				}
				
				// set extraData on current request
				if (extraData) {
					$.each(extraData, function(key, val) {
						formData.append(key, val);
					});
				}

				xhr.send(formData);
				
				return true;
			};
			
			if (! isDataType) {
				if (files.length > 0) {
					if (! data.clipdata && renames == null) {
						var mkdirs = [],
							paths = [],
							excludes = fm.options.folderUploadExclude[fm.OS] || null;
						$.each(files, function(i, file) {
							var relPath = file.webkitRelativePath || file.relativePath || '',
								idx, rootDir;
							if (! relPath) {
								return false;
							}
							if (excludes && file.name.match(excludes)) {
								file._remove = true;
								relPath = void(0);
							} else {
								// add '/' as prefix to make same to folder uploading with DnD, see #2607
								relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, '');
								if (relPath && $.inArray(relPath, mkdirs) === -1) {
									mkdirs.push(relPath);
									// checking the root directory to supports <input type="file" webkitdirectory> see #2378
									idx = relPath.substr(1).indexOf('/');
									if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && $.inArray(rootDir, mkdirs) === -1) {
										mkdirs.unshift(rootDir);
									}
								}
							}
							paths.push(relPath);
						});
						renames = [];
						hashes = {};
						if (mkdirs.length) {
							(function() {
								var checkDirs = $.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}),
									cancelDirs = [];
								fm.uploads.checkExists(checkDirs, target, fm, true).done(
									function(res, res2) {
										var dfds = [], dfd, bak, hash;
										if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
											cancelDirs = $.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} );
											checkDirs = $.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} );
										}
										if (cancelDirs.length) {
											$.each(paths.concat(), function(i, path) {
												if ($.inArray(path, cancelDirs) === 0) {
													files[i]._remove = true;
													paths[i] = void(0);
												}
											});
										}
										files = $.grep(files, function(file) { return file._remove? false : true; });
										paths = $.grep(paths, function(path) { return path === void 0 ? false : true; });
										if (checkDirs.length) {
											dfd = $.Deferred();
											if (res.length) {
												$.each(res, function(i, existName) {
													// backup
													bak = fm.uniqueName(existName + fm.options.backupSuffix , null, '');
													$.each(res2, function(h, name) {
														if (res[0] == name) {
															hash = h;
															return false;
														}
													});
													if (! hash) {
														hash = fm.fileByName(res[0], target).hash;
													}
													fm.lockfiles({files : [hash]});
													dfds.push(
														fm.request({
															data   : {cmd : 'rename', target : hash, name : bak},
															notify : {type : 'rename', cnt : 1}
														})
														.fail(function(error) {
															dfrd.reject(error);
															fm.sync();
														})
														.always(function() {
															fm.unlockfiles({files : [hash]});
														})
													);
												});
											} else {
												dfds.push(null);
											}
											
											$.when.apply($, dfds).done(function() {
												// ensure directories
												fm.request({
													data   : {cmd : 'mkdir', target : target, dirs : mkdirs},
													notify : {type : 'mkdir', cnt : mkdirs.length},
													preventFail: true
												})
												.fail(function(error) {
													error = error || ['errUnknown'];
													if (error[0] === 'errCmdParams') {
														multiMax = 1;
													} else {
														multiMax = 0;
														dfrd.reject(error);
													}
												})
												.done(function(data) {
													var rm = false;
													if (!data.hashes) {
														data.hashes = {};
													}
													paths = $.map(paths.concat(), function(p, i) {
														if (p === '/') {
															return target;
														} else {
															if (data.hashes[p]) {
																return data.hashes[p];
															} else {
																rm = true;
																files[i]._remove = true;
																return null;
															}
														}
													});
													if (rm) {
														files = $.grep(files, function(file) { return file._remove? false : true; });
													}
												})
												.always(function(data) {
													if (multiMax) {
														isDataType = true;
														if (! send(files, paths)) {
															dfrd.reject();
														}
													}
												});
											});
										} else {
											dfrd.reject();
										}
									}
								);
							})();
						} else {
							fm.uploads.checkExists(files, target, fm).done(
								function(res, res2){
									if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
										hashes = res2;
										if (res === null) {
											data.overwrite = 0;
										} else {
											renames = res;
										}
										files = $.grep(files, function(file){return !file._remove? true : false ;});
									}
									cnt = files.length;
									if (cnt > 0) {
										if (! send(files)) {
											dfrd.reject();
										}
									} else {
										dfrd.reject();
									}
								}
							);
						}
					} else {
						if (! send(files)) {
							dfrd.reject();
						}
					}
				} else {
					dfrd.reject();
				}
			} else {
				if (dataChecked) {
					send(files[0], files[1]);
				} else {
					files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs]
						renames = [];
						cnt = result[0].length;
						if (cnt) {
							if (result[4] && result[4].length) {
								// ensure directories
								fm.request({
									data   : {cmd : 'mkdir', target : target, dirs : result[4]},
									notify : {type : 'mkdir', cnt : result[4].length},
									preventFail: true
								})
								.fail(function(error) {
									error = error || ['errUnknown'];
									if (error[0] === 'errCmdParams') {
										multiMax = 1;
									} else {
										multiMax = 0;
										dfrd.reject(error);
									}
								})
								.done(function(data) {
									var rm = false;
									if (!data.hashes) {
										data.hashes = {};
									}
									result[1] = $.map(result[1], function(p, i) {
										result[0][i]._relativePath = p.replace(/^\//, '');
										p = p.replace(/\/[^\/]*$/, '');
										if (p === '') {
											return target;
										} else {
											if (data.hashes[p]) {
												return data.hashes[p];
											} else {
												rm = true;
												result[0][i]._remove = true;
												return null;
											}
										}
									});
									if (rm) {
										result[0] = $.grep(result[0], function(file) { return file._remove? false : true; });
									}
								})
								.always(function(data) {
									if (multiMax) {
										renames = result[2];
										hashes = result[3];
										send(result[0], result[1]);
									}
								});
								return;
							} else {
								result[1] = $.map(result[1], function() { return target; });
							}
							renames = result[2];
							hashes = result[3];
							send(result[0], result[1]);
						} else {
							dfrd.reject(['errUploadNoFiles']);
						}
					}).fail(function(){
						dfrd.reject();
					});
				}
			}

			return dfrd;
		},
		
		// upload transport using iframe
		iframe : function(data, fm) { 
			var self   = fm ? fm : this,
				input  = data.input? data.input : false,
				files  = !input ? self.uploads.checkFile(data, self) : false,
				dfrd   = $.Deferred()
					.fail(function(error) {
						error && self.error(error);
					}),
				name = 'iframe-'+fm.namespace+(++self.iframeCnt),
				form = $('<form action="'+self.uploadURL+'" method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="'+name+'" style="display:none"><input type="hidden" name="cmd" value="upload" /></form>'),
				msie = this.UA.IE,
				// clear timeouts, close notification dialog, remove form/iframe
				onload = function() {
					abortto  && clearTimeout(abortto);
					notifyto && clearTimeout(notifyto);
					notify   && self.notify({type : 'upload', cnt : -cnt});
					
					setTimeout(function() {
						msie && $('<iframe src="javascript:false;"></iframe>').appendTo(form);
						form.remove();
						iframe.remove();
					}, 100);
				},
				iframe = $('<iframe src="'+(msie ? 'javascript:false;' : 'about:blank')+'" name="'+name+'" style="position:absolute;left:-1000px;top:-1000px" ></iframe>')
					.on('load', function() {
						iframe.off('load')
							.on('load', function() {
								onload();
								// data will be processed in callback response or window onmessage
								dfrd.resolve();
							});
							
							// notify dialog
							notifyto = setTimeout(function() {
								notify = true;
								self.notify({type : 'upload', cnt : cnt});
							}, self.options.notifyDelay);
							
							// emulate abort on timeout
							if (self.options.iframeTimeout > 0) {
								abortto = setTimeout(function() {
									onload();
									dfrd.reject(['errConnect', 'errTimeout']);
								}, self.options.iframeTimeout);
							}
							
							form.submit();
					}),
				target  = (data.target || self.cwd().hash),
				names   = [],
				dfds    = [],
				renames = [],
				hashes  = {},
				cnt, notify, notifyto, abortto;

			if (files && files.length) {
				$.each(files, function(i, val) {
					form.append('<input type="hidden" name="upload[]" value="'+val+'"/>');
				});
				cnt = 1;
			} else if (input && $(input).is(':file') && $(input).val()) {
				if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
					names = input.files? input.files : [{ name: $(input).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/, '$1') }];
					//names = $.map(names, function(file){return file.name? { name: file.name } : null ;});
					dfds.push(self.uploads.checkExists(names, target, self).done(
						function(res, res2){
							hashes = res2;
							if (res === null) {
								data.overwrite = 0;
							} else{
								renames = res;
								cnt = $.grep(names, function(file){return !file._remove? true : false ;}).length;
								if (cnt != names.length) {
									cnt = 0;
								}
							}
						}
					));
				}
				cnt = input.files ? input.files.length : 1;
				form.append(input);
			} else {
				return dfrd.reject();
			}
			
			$.when.apply($, dfds).done(function() {
				if (cnt < 1) {
					return dfrd.reject();
				}
				form.append('<input type="hidden" name="'+(self.newAPI ? 'target' : 'current')+'" value="'+target+'"/>')
					.append('<input type="hidden" name="html" value="1"/>')
					.append('<input type="hidden" name="node" value="'+self.id+'"/>')
					.append($(input).attr('name', 'upload[]'));
				
				if (renames.length > 0) {
					$.each(renames, function(i, rename) {
						form.append('<input type="hidden" name="renames[]" value="'+self.escape(rename)+'"/>');
					});
					form.append('<input type="hidden" name="suffix" value="'+fm.options.backupSuffix+'"/>');
				}
				if (hashes) {
					$.each(renames, function(i, v) {
						form.append('<input type="hidden" name="['+i+']" value="'+self.escape(v)+'"/>');
					});
				}
				
				if (data.overwrite === 0) {
					form.append('<input type="hidden" name="overwrite" value="0"/>');
				}
				
				$.each(self.options.onlyMimes||[], function(i, mime) {
					form.append('<input type="hidden" name="mimes[]" value="'+self.escape(mime)+'"/>');
				});
				
				$.each(self.customData, function(key, val) {
					form.append('<input type="hidden" name="'+key+'" value="'+self.escape(val)+'"/>');
				});
				
				form.appendTo('body');
				iframe.appendTo('body');
			});
			
			return dfrd;
		}
	},
	
	
	/**
	 * Bind callback to event(s) The callback is executed at most once per event.
	 * To bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event name
	 * @param  Function  callback
	 * @param  Boolan    priority first
	 * @return elFinder
	 */
	one : function(ev, callback, priorityFirst) {
		var self  = this,
			event = ev.toLowerCase(),
			h     = function(e, f) {
				if (!self.toUnbindEvents[event]) {
					self.toUnbindEvents[event] = [];
				}
				self.toUnbindEvents[event].push({
					type: event,
					callback: h
				});
				return (callback.done? callback.done : callback).apply(this, arguments);
			};
		if (callback.done) {
			h = {done: h};
		}
		return this.bind(event, h, priorityFirst);
	},
	
	/**
	 * Set/get data into/from localStorage
	 *
	 * @param  String       key
	 * @param  String|void  value
	 * @return String|null
	 */
	localStorage : function(key, val) {
		var self   = this,
			s      = window.localStorage,
			oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6
			prefix = window.location.pathname+'-elfinder-',
			suffix = this.id,
			clrs   = [],
			retval, oldval, t, precnt, sufcnt;

		// reset this node data
		if (typeof(key) === 'undefined') {
			precnt = prefix.length;
			sufcnt = suffix.length * -1;
			$.each(s, function(key) {
				if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) {
					clrs.push(key);
				}
			});
			$.each(clrs, function(i, key) {
				s.removeItem(key);
			});
			return true;
		}
		
		// new key of elFinder >= 2.1.6
		key = prefix+key+suffix;
		
		if (val === null) {
			return s.removeItem(key);
		}
		
		if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) {
			val = oldval;
			s.removeItem(oldkey);
		}
		
		if (val !== void(0)) {
			t = typeof val;
			if (t !== 'string' && t !== 'number') {
				val = JSON.stringify(val);
			}
			try {
				s.setItem(key, val);
			} catch (e) {
				try {
					s.clear();
					s.setItem(key, val);
				} catch (e) {
					self.debug('error', e.toString());
				}
			}
			retval = s.getItem(key);
		}

		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
			try {
				return JSON.parse(retval);
			} catch(e) {}
		}
		return retval;
	},

	/**
	 * Set/get data into/from sessionStorage
	 *
	 * @param  String       key
	 * @param  String|void  value
	 * @return String|null
	 */
	sessionStorage : function(key, val) {
		var self   = this,
			s, retval, t;

		try {
			s = window.sessionStorage;
		} catch(e) {}

		if (!s) {
			return;
		}

		if (val === null) {
			return s.removeItem(key);
		}

		if (val !== void(0)) {
			t = typeof val;
			if (t !== 'string' && t !== 'number') {
				val = JSON.stringify(val);
			}
			try {
				s.setItem(key, val);
			} catch (e) {
				try {
					s.clear();
					s.setItem(key, val);
				} catch (e) {
					self.debug('error', e.toString());
				}
			}
		}
		retval = s.getItem(key);

		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
			try {
				return JSON.parse(retval);
			} catch(e) {}
		}
		return retval;
	},

	/**
	 * Get/set cookie
	 *
	 * @param  String       cookie name
	 * @param  String|void  cookie value
	 * @return String|null
	 */
	cookie : function(name, value) {
		var d, o, c, i, retval, t;

		name = 'elfinder-'+name+this.id;

		if (value === void(0)) {
			if (this.cookieEnabled && document.cookie && document.cookie != '') {
				c = document.cookie.split(';');
				name += '=';
				for (i=0; i<c.length; i++) {
					c[i] = $.trim(c[i]);
					if (c[i].substring(0, name.length) == name) {
						retval = decodeURIComponent(c[i].substring(name.length));
						if (retval.substr(0,1) === '{' || retval.substr(0,1) === '[') {
							try {
								return JSON.parse(retval);
							} catch(e) {}
						}
						return retval;
					}
				}
			}
			return null;
		}

		if (!this.cookieEnabled) {
			return '';
		}

		o = Object.assign({}, this.options.cookie);
		if (value === null) {
			value = '';
			o.expires = -1;
		} else {
			t = typeof value;
			if (t !== 'string' && t !== 'number') {
				value = JSON.stringify(value);
			}
		}
		if (typeof(o.expires) == 'number') {
			d = new Date();
			d.setTime(d.getTime()+(o.expires * 86400000));
			o.expires = d;
		}
		document.cookie = name+'='+encodeURIComponent(value)+'; expires='+o.expires.toUTCString()+(o.path ? '; path='+o.path : '')+(o.domain ? '; domain='+o.domain : '')+(o.secure ? '; secure' : '')+(o.samesite ? '; samesite='+o.samesite : '');
		if (value && (value.substr(0,1) === '{' || value.substr(0,1) === '[')) {
			try {
				return JSON.parse(value);
			} catch(e) {}
		}
		return value;
	},
	
	/**
	 * Get start directory (by location.hash or last opened directory)
	 * 
	 * @return String
	 */
	startDir : function() {
		var locHash = window.location.hash;
		if (locHash && locHash.match(/^#elf_/)) {
			return locHash.replace(/^#elf_/, '');
		} else if (this.options.startPathHash) {
			return this.options.startPathHash;
		} else {
			return this.lastDir();
		}
	},
	
	/**
	 * Get/set last opened directory
	 * 
	 * @param  String|undefined  dir hash
	 * @return String
	 */
	lastDir : function(hash) { 
		return this.options.rememberLastDir ? this.storage('lastdir', hash) : '';
	},
	
	/**
	 * Node for escape html entities in texts
	 * 
	 * @type jQuery
	 */
	_node : $('<span></c.length;>'),
	
	/**
	 * Replace not html-safe symbols to html entities
	 * 
	 * @param  String  text to escape
	 * @return String
	 */
	escape : function(name) {
		return this._node.text(name).html().replace(/"/g, '&quot;').replace(/'/g, '&#039;');
	},
	
	/**
	 * Cleanup ajax data.
	 * For old api convert data into new api format
	 * 
	 * @param  String  command name
	 * @param  Object  data from backend
	 * @return Object
	 */
	normalize : function(data) {
		var self   = this,
			fileFilter = (function() {
				var func, filter;
				if (filter = self.options.fileFilter) {
					if (typeof filter === 'function') {
						func = function(file) {
							return filter.call(self, file);
						};
					} else if (filter instanceof RegExp) {
						func = function(file) {
							return filter.test(file.name);
						};
					}
				}
				return func? func : null;
			})(),
			chkCmdMap = function(opts) {
				// Disable command to replace with other command
				var disabled;
				if (opts.uiCmdMap) {
					if ($.isPlainObject(opts.uiCmdMap) && Object.keys(opts.uiCmdMap).length) {
						if (!opts.disabledFlip) {
							opts.disabledFlip = {};
						}
						disabled = opts.disabledFlip;
						$.each(opts.uiCmdMap, function(f, t) {
							if (t === 'hidden' && !disabled[f]) {
								opts.disabled.push(f);
								opts.disabledFlip[f] = true;
							}
						});
					} else {
						delete opts.uiCmdMap;
					}
				}
			},
			normalizeOptions = function(opts) {
				var getType = function(v) {
						var type = typeof v;
						if (type === 'object' && Array.isArray(v)) {
							type = 'array';
						}
						return type;
					};
				$.each(self.optionProperties, function(k, empty) {
					if (empty !== void(0)) {
						if (opts[k] && getType(opts[k]) !== getType(empty)) {
							opts[k] = empty;
						}
					}
				});
				if (opts.disabled) {
					opts.disabledFlip = self.arrayFlip(opts.disabled, true);
					$.each(self.options.disabledCmdsRels, function(com, rels) {
						var m, flg;
						if (opts.disabledFlip[com]) {
							flg = true;
						} else if (m = com.match(/^([^&]+)&([^=]+)=(.*)$/)) {
							if (opts.disabledFlip[m[1]] && opts[m[2]] == m[3]) {
								flg = true;
							}
						}
						if (flg) {
							$.each(rels, function(i, rel) {
								if (!opts.disabledFlip[rel]) {
									opts.disabledFlip[rel] = true;
									opts.disabled.push(rel);
								}
							});
						}
					});
				} else {
					opts.disabledFlip = {};
				}
				return opts;
			},
			filter = function(file, asMap, type) { 
				var res = asMap? file : true,
					ign = asMap? null : false,
					vid, targetOptions, isRoot, rootNames;
				
				if (file && file.hash && file.name && file.mime) {
					if (file.mime === 'application/x-empty') {
						file.mime = 'text/plain';
					}
					
					isRoot = self.isRoot(file);
					if (isRoot && ! file.volumeid) {
						self.debug('warning', 'The volume root statuses requires `volumeid` property.');
					}
					if (isRoot || file.mime === 'directory') {
						// Prevention of circular reference
						if (file.phash) {
							if (file.phash === file.hash) {
								error = error.concat(['Parent folder of "$1" is itself.', file.name]);
								return ign;
							}
							if (isRoot && file.volumeid && file.phash.indexOf(file.volumeid) === 0) {
								error = error.concat(['Parent folder of "$1" is inner itself.', file.name]);
								return ign;
							}
						}
						
						// set options, tmbUrls for each volume
						if (file.volumeid) {
							vid = file.volumeid;
							
							if (isRoot) {
								// make or update of leaf roots cache
								if (file.phash) {
									if (! self.leafRoots[file.phash]) {
										self.leafRoots[file.phash] = [ file.hash ];
									} else {
										if ($.inArray(file.hash, self.leafRoots[file.phash]) === -1) {
											self.leafRoots[file.phash].push(file.hash);
										}
									}
								}

								self.hasVolOptions = true;
								if (! self.volOptions[vid]) {
									self.volOptions[vid] = {
										// set dispInlineRegex
										dispInlineRegex: self.options.dispInlineRegex
									};
								}
								
								targetOptions = self.volOptions[vid];
								
								if (file.options) {
									// >= v.2.1.14 has file.options
									Object.assign(targetOptions, file.options);
								}
								
								// for compat <= v2.1.13
								if (file.disabled) {
									targetOptions.disabled = file.disabled;
									targetOptions.disabledFlip = self.arrayFlip(file.disabled, true);
								}
								if (file.tmbUrl) {
									targetOptions.tmbUrl = file.tmbUrl;
								}
								
								// '/' required at the end of url
								if (targetOptions.url && targetOptions.url.substr(-1) !== '/') {
									targetOptions.url += '/';
								}

								// check uiCmdMap
								chkCmdMap(targetOptions);
								
								// check trash bin hash
								if (targetOptions.trashHash) {
									if (self.trashes[targetOptions.trashHash] === false) {
										delete targetOptions.trashHash;
									} else {
										self.trashes[targetOptions.trashHash] = file.hash;
									}
								}
								
								// set immediate properties
								$.each(self.optionProperties, function(k) {
									if (targetOptions[k]) {
										file[k] = targetOptions[k];
									}
								});

								// regist fm.roots
								if (type !== 'cwd') {
									self.roots[vid] = file.hash;
								}

								// regist fm.volumeExpires
								if (file.expires) {
									self.volumeExpires[vid] = file.expires;
								}
							}
							
							if (prevId !== vid) {
								prevId = vid;
								i18nFolderName = self.option('i18nFolderName', vid);
							}
						}
						
						// volume root i18n name
						if (isRoot && ! file.i18) {
							name = 'volume_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						// i18nFolderName
						if (i18nFolderName && ! file.i18) {
							name = 'folder_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						if (isRoot && self.options.enableRootRename !== false) {
							if (rootNames = self.storage('rootNames')) {
								if (rootNames[file.hash]) {
									file._name = file.name;
									file._i18 = file.i18;
									file.name = rootNames[file.hash] = rootNames[file.hash];
									delete file.i18;
								}
								self.storage('rootNames', rootNames);
							}
						}

						// lock trash bins holder
						if (self.trashes[file.hash]) {
							file.locked = true;
						}
					} else {
						if (fileFilter) {
							try {
								if (! fileFilter(file)) {
									return ign;
								}
							} catch(e) {
								self.debug(e);
							}
						}
						if (file.size == 0) {
							file.mime = self.getMimetype(file.name, file.mime);
						}
					}
					
					if (file.options) {
						self.optionsByHashes[file.hash] = normalizeOptions(file.options);
					}
					
					delete file.options;
					
					return res;
				}
				return ign;
			},
			getDescendants = function(hashes) {
				var res = [];
				$.each(self.files(), function(h, f) {
					$.each(self.parents(h), function(i, ph) {
						if ($.inArray(ph, hashes) !== -1 && $.inArray(h, hashes) === -1) {
							res.push(h);
							return false;
						}
					});
				});
				return res;
			},
			applyLeafRootStats = function(dataArr, type) {
				$.each(dataArr, function(i, f) {
					var pfile, done;
					if (self.leafRoots[f.hash]) {
						self.applyLeafRootStats(f);
					}
					// update leaf root parent stat
					if (type !== 'change' && f.phash && self.isRoot(f) && (pfile = self.file(f.phash))) {
						self.applyLeafRootStats(pfile);
						// add to data.changed
						if (!data.changed) {
							data.changed = [pfile];
						} else {
							$.each(data.changed, function(i, f) {
								if (f.hash === pfile.hash) {
									data.changed[i] = pfile;
									done = true;
									return false;
								}
							});
							if (!done) {
								data.changed.push(pfile);
							}
						}
					}
				});
			},
			error = [],
			name, i18, i18nFolderName, prevId, cData;
		
		// set cunstom data
		if (data.customData && (!self.prevCustomData || (JSON.stringify(data.customData) !== JSON.stringify(self.prevCustomData)))) {
			self.prevCustomData = data.customData;
			try {
				cData = JSON.parse(data.customData);
				if ($.isPlainObject(cData)) {
					self.prevCustomData = cData;
					$.each(Object.keys(cData), function(i, key) {
						if (cData[key] === null) {
							delete cData[key];
							delete self.optsCustomData[key];
						}
					});
					self.customData = Object.assign({}, self.optsCustomData, cData);
				}
			} catch(e) {}
		}

		if (data.options) {
			normalizeOptions(data.options);
		}
		
		if (data.cwd) {
			if (data.cwd.volumeid && data.options && Object.keys(data.options).length && self.isRoot(data.cwd)) {
				self.hasVolOptions = true;
				self.volOptions[data.cwd.volumeid] = data.options;
			}
			data.cwd = filter(data.cwd, true, 'cwd');
		}
		if (data.files) {
			data.files = $.grep(data.files, filter);
		} 
		if (data.tree) {
			data.tree = $.grep(data.tree, filter);
		}
		if (data.added) {
			data.added = $.grep(data.added, filter);
		}
		if (data.changed) {
			data.changed = $.grep(data.changed, filter);
		}
		if (data.removed && data.removed.length && self.searchStatus.state === 2) {
			data.removed = data.removed.concat(getDescendants(data.removed));
		}
		if (data.api) {
			data.init = true;
		}

		if (Object.keys(self.leafRoots).length) {
			data.files && applyLeafRootStats(data.files);
			data.tree && applyLeafRootStats(data.tree);
			data.added && applyLeafRootStats(data.added);
			data.changed && applyLeafRootStats(data.changed, 'change');
		}

		// merge options that apply only to cwd
		if (data.cwd && data.cwd.options && data.options) {
			Object.assign(data.options, normalizeOptions(data.cwd.options));
		}

		// '/' required at the end of url
		if (data.options && data.options.url && data.options.url.substr(-1) !== '/') {
			data.options.url += '/';
		}
		
		// check error
		if (error.length) {
			data.norError = ['errResponse'].concat(error);
		}
		
		return data;
	},
	
	/**
	 * Update sort options
	 *
	 * @param {String} sort type
	 * @param {String} sort order
	 * @param {Boolean} show folder first
	 */
	setSort : function(type, order, stickFolders, alsoTreeview) {
		this.storage('sortType', (this.sortType = this.sortRules[type] ? type : 'name'));
		this.storage('sortOrder', (this.sortOrder = /asc|desc/.test(order) ? order : 'asc'));
		this.storage('sortStickFolders', (this.sortStickFolders = !!stickFolders) ? 1 : '');
		this.storage('sortAlsoTreeview', (this.sortAlsoTreeview = !!alsoTreeview) ? 1 : '');
		this.trigger('sortchange');
	},
	
	_sortRules : {
		name : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.i18 || file1.name, file2.i18 || file2.name);
		},
		size : function(file1, file2) { 
			var size1 = parseInt(file1.size) || 0,
				size2 = parseInt(file2.size) || 0;
				
			return size1 === size2 ? 0 : size1 > size2 ? 1 : -1;
		},
		kind : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.mime, file2.mime);
		},
		date : function(file1, file2) { 
			var date1 = file1.ts || file1.date || 0,
				date2 = file2.ts || file2.date || 0;

			return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
		},
		perm : function(file1, file2) { 
			var val = function(file) { return (file.write? 2 : 0) + (file.read? 1 : 0); },
				v1  = val(file1),
				v2  = val(file2);
			return v1 === v2 ? 0 : v1 > v2 ? 1 : -1;
		},
		mode : function(file1, file2) { 
			var v1 = file1.mode || (file1.perm || ''),
				v2 = file2.mode || (file2.perm || '');
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		owner : function(file1, file2) { 
			var v1 = file1.owner || '',
				v2 = file2.owner || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		group : function(file1, file2) { 
			var v1 = file1.group || '',
				v2 = file2.group || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		}
	},
	
	/**
	 * Valid sort rule names
	 * 
	 * @type Object
	 */
	sorters : {},
	
	/**
	 * Compare strings for natural sort
	 *
	 * @param  String
	 * @param  String
	 * @return Number
	 */
	naturalCompare : function(a, b) {
		var self = elFinder.prototype.naturalCompare;
		if (typeof self.loc == 'undefined') {
			self.loc = (navigator.userLanguage || navigator.browserLanguage || navigator.language || 'en-US');
		}
		if (typeof self.sort == 'undefined') {
			if ('11'.localeCompare('2', self.loc, {numeric: true}) > 0) {
				// Native support
				if (window.Intl && window.Intl.Collator) {
					self.sort = new Intl.Collator(self.loc, {numeric: true}).compare;
				} else {
					self.sort = function(a, b) {
						return a.localeCompare(b, self.loc, {numeric: true});
					};
				}
			} else {
				/*
				 * Edited for elFinder (emulates localeCompare() by numeric) by Naoki Sawada aka nao-pon
				 */
				/*
				 * Huddle/javascript-natural-sort (https://github.com/Huddle/javascript-natural-sort)
				 */
				/*
				 * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
				 * Author: Jim Palmer (based on chunking idea from Dave Koelle)
				 * http://opensource.org/licenses/mit-license.php
				 */
				self.sort = function(a, b) {
					var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
					sre = /(^[ ]*|[ ]*$)/g,
					dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
					hre = /^0x[0-9a-f]+$/i,
					ore = /^0/,
					syre = /^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/, // symbol first - (Naoki Sawada)
					i = function(s) { return self.sort.insensitive && (''+s).toLowerCase() || ''+s; },
					// convert all to strings strip whitespace
					// first character is "_", it's smallest - (Naoki Sawada)
					x = i(a).replace(sre, '').replace(/^_/, "\x01") || '',
					y = i(b).replace(sre, '').replace(/^_/, "\x01") || '',
					// chunk/tokenize
					xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					// numeric, hex or date detection
					xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
					yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null,
					oFxNcL, oFyNcL,
					locRes = 0;

					// first try and sort Hex codes or Dates
					if (yD) {
						if ( xD < yD ) return -1;
						else if ( xD > yD ) return 1;
					}
					// natural sorting through split numeric strings and default strings
					for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {

						// find floats not starting with '0', string or 0 if not defined (Clint Priest)
						oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
						oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;

						// handle numeric vs string comparison - number < string - (Kyle Adams)
						// but symbol first < number - (Naoki Sawada)
						if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
							if (isNaN(oFxNcL) && (typeof oFxNcL !== 'string' || ! oFxNcL.match(syre))) {
								return 1;
							} else if (typeof oFyNcL !== 'string' || ! oFyNcL.match(syre)) {
								return -1;
							}
						}

						// use decimal number comparison if either value is string zero
						if (parseInt(oFxNcL, 10) === 0) oFxNcL = 0;
						if (parseInt(oFyNcL, 10) === 0) oFyNcL = 0;

						// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
						if (typeof oFxNcL !== typeof oFyNcL) {
							oFxNcL += '';
							oFyNcL += '';
						}

						// use locale sensitive sort for strings when case insensitive
						// note: localeCompare interleaves uppercase with lowercase (e.g. A,a,B,b)
						if (self.sort.insensitive && typeof oFxNcL === 'string' && typeof oFyNcL === 'string') {
							locRes = oFxNcL.localeCompare(oFyNcL, self.loc);
							if (locRes !== 0) return locRes;
						}

						if (oFxNcL < oFyNcL) return -1;
						if (oFxNcL > oFyNcL) return 1;
					}
					return 0;
				};
				self.sort.insensitive = true;
			}
		}
		return self.sort(a, b);
	},
	
	/**
	 * Compare files based on elFinder.sort
	 *
	 * @param  Object  file
	 * @param  Object  file
	 * @return Number
	 */
	compare : function(file1, file2) {
		var self  = this,
			type  = self.sortType,
			asc   = self.sortOrder == 'asc',
			stick = self.sortStickFolders,
			rules = self.sortRules,
			sort  = rules[type],
			d1    = file1.mime == 'directory',
			d2    = file2.mime == 'directory',
			res;
			
		if (stick) {
			if (d1 && !d2) {
				return -1;
			} else if (!d1 && d2) {
				return 1;
			}
		}
		
		res = asc ? sort(file1, file2) : sort(file2, file1);
		
		return type !== 'name' && res === 0
			? res = asc ? rules.name(file1, file2) : rules.name(file2, file1)
			: res;
	},
	
	/**
	 * Sort files based on config
	 *
	 * @param  Array  files
	 * @return Array
	 */
	sortFiles : function(files) {
		return files.sort(this.compare);
	},
	
	/**
	 * Open notification dialog 
	 * and append/update message for required notification type.
	 *
	 * @param  Object  options
	 * @example  
	 * this.notify({
	 *    type : 'copy',
	 *    msg : 'Copy files', // not required for known types @see this.notifyType
	 *    cnt : 3,
	 *    hideCnt  : false,   // true for not show count
	 *    progress : 10,      // progress bar percents (use cnt : 0 to update progress bar)
	 *    cancel   : callback // callback function for cancel button
	 * })
	 * @return elFinder
	 */
	notify : function(opts) {
		var self     = this,
			type     = opts.type,
			id       = opts.id? 'elfinder-notify-'+opts.id : '',
			msg      = this.i18n((typeof opts.msg !== 'undefined')? opts.msg : (this.messages['ntf'+type] ? 'ntf'+type : 'ntfsmth')),
			hiddens  = this.arrayFlip(this.options.notifyDialog.hiddens || []),
			ndialog  = this.ui.notify,
			dialog   = ndialog.closest('.ui-dialog'),
			notify   = ndialog.children('.elfinder-notify-'+type+(id? ('.'+id) : '')),
			button   = notify.children('div.elfinder-notify-cancel').children('button'),
			ntpl     = '<div class="elfinder-notify elfinder-notify-{type}'+(id? (' '+id) : '')+'"><span class="elfinder-dialog-icon elfinder-dialog-icon-{type}"></span><span class="elfinder-notify-msg">{msg}</span> <span class="elfinder-notify-cnt"></span><div class="elfinder-notify-progressbar"><div class="elfinder-notify-progress"></div></div><div class="elfinder-notify-cancel"></div></div>',
			delta    = opts.cnt + 0,
			size     = (typeof opts.size != 'undefined')? parseInt(opts.size) : null,
			progress = (typeof opts.progress != 'undefined' && opts.progress >= 0) ? opts.progress : null,
			fakeint  = opts.fakeinterval || 200,
			cancel   = opts.cancel,
			clhover  = 'ui-state-hover',
			close    = function() {
				var prog = notify.find('.elfinder-notify-progress'),
					rm = function() {
						notify.remove();
						if (!ndialog.children(dialog.data('minimized')? void(0) : ':visible').length) {
							if (dialog.data('minimized')) {
								dialog.data('minimized').hide();
							} else {
								ndialog.elfinderdialog('close');
							}
						}
						setProgressbar();
					};
				notify._esc && $(document).off('keydown', notify._esc);
				if (notify.data('cur') < 100) {
					prog.animate({
						width : '100%'
					}, 50, function() { requestAnimationFrame(function() { rm(); }); });
				} else {
					rm();
				}
			},
			fakeUp = function(interval) {
				var cur;
				if (notify.length) {
					cur = notify.data('cur') + 1;
					if (cur <= 98) {
						notify.find('.elfinder-notify-progress').width(cur + '%');
						notify.data('cur', cur);
						setProgressbar();
						setTimeout(function() {
							interval *= 1.05; 
							fakeUp(interval);
						}, interval);
					}
				}
			},
			setProgressbar = function() {
				var cnt = 0,
					val = 0,
					ntfs = ndialog.children('.elfinder-notify'),
					w;
				if (ntfs.length) {
					ntfs.each(function() {
						cnt++;
						val += Math.min($(this).data('cur'), 100);
					});
					w = cnt? Math.floor(val / (cnt * 100) * 100) + '%' : 0;
					self.ui.progressbar.width(w);
					if (dialog.data('minimized')) {
						dialog.data('minimized').title(w);
						dialog.data('minimized').dialog().children('.ui-dialog-titlebar').children('.elfinder-ui-progressbar').width(w);
					}
				} else {
					self.ui.progressbar.width(0);
					dialog.data('minimized') && dialog.data('minimized').hide();
				}
			},
			cnt, total, prc;

		if (!type) {
			return this;
		}
		
		if (!notify.length) {
			notify = $(ntpl.replace(/\{type\}/g, type).replace(/\{msg\}/g, msg));
			if (hiddens[type]) {
				notify.hide();
			} else {
				ndialog.on('minimize', function(e) {
					dialog.data('minimized') && setProgressbar();
				});
			}
			notify.appendTo(ndialog).data('cnt', 0);

			if (progress != null) {
				notify.data({progress : 0, total : 0, cur : 0});
			} else {
				notify.data({cur : 0});
				fakeUp(fakeint);
			}

			if (cancel) {
				button = $('<span class="elfinder-notify-button ui-icon ui-icon-close" title="'+this.i18n('btnCancel')+'"></span>')
					.on('mouseenter mouseleave', function(e) { 
						$(this).toggleClass(clhover, e.type === 'mouseenter');
					});
				notify.children('div.elfinder-notify-cancel').append(button);
			}
			ndialog.trigger('resize');
		} else if (typeof opts.msg !== 'undefined') {
			notify.children('span.elfinder-notify-msg').html(msg);
		}

		cnt = delta + parseInt(notify.data('cnt'));
		
		if (cnt > 0) {
			if (cancel && button.length) {
				if (typeof cancel === 'function' || (typeof cancel === 'object' && cancel.promise)) {
					notify._esc = function(e) {
						if (e.type == 'keydown' && e.keyCode != $.ui.keyCode.ESCAPE) {
							return;
						}
						e.preventDefault();
						e.stopPropagation();
						close();
						if (cancel.promise) {
							cancel.reject(0); // 0 is canceling flag
						} else {
							cancel(e);
						}
					};
					button.on('click', function(e) {
						notify._esc(e);
					});
					$(document).on('keydown.' + this.namespace, notify._esc);
				}
			}
			
			!opts.hideCnt && notify.children('.elfinder-notify-cnt').text('('+cnt+')');
			if (delta > 0 && ndialog.is(':hidden') && !hiddens[type]) {
				if (dialog.data('minimized')) {
					dialog.data('minimized').show();
				} else {
					ndialog.elfinderdialog('open', this).height('auto');
				}
			}
			notify.data('cnt', cnt);
			
			if ((progress != null)
			&& (total = notify.data('total')) >= 0
			&& (prc = notify.data('progress')) >= 0) {

				total += size != null? size : delta;
				prc   += progress;
				(size == null && delta < 0) && (prc += delta * 100);
				notify.data({progress : prc, total : total});
				if (size != null) {
					prc *= 100;
					total = Math.max(1, total);
				}
				progress = Math.min(parseInt(prc/total), 100);
				
				notify.find('.elfinder-notify-progress')
					.animate({
						width : (progress < 100 ? progress : 100)+'%'
					}, 20, function() {
						notify.data('cur', progress);
						setProgressbar();
					});
			}
			
		} else {
			close();
		}
		
		return this;
	},
	
	/**
	 * Open confirmation dialog 
	 *
	 * @param  Object  options
	 * @example  
	 * this.confirm({
	 *    cssClass : 'elfinder-confirm-mydialog',
	 *    title : 'Remove files',
	 *    text  : 'Here is question text',
	 *    accept : {  // accept callback - required
	 *      label : 'Continue',
	 *      callback : function(applyToAll) { fm.log('Ok') }
	 *    },
	 *    cancel : { // cancel callback - required
	 *      label : 'Cancel',
	 *      callback : function() { fm.log('Cancel')}
	 *    },
	 *    reject : { // reject callback - optionally
	 *      label : 'No',
	 *      callback : function(applyToAll) { fm.log('No')}
	 *    },
	 *    buttons : [ // additional buttons callback - optionally
	 *      {
	 *        label : 'Btn1',
	 *        callback : function(applyToAll) { fm.log('Btn1')}
	 *      }
	 *    ],
	 *    all : true  // display checkbox "Apply to all"
	 * })
	 * @return elFinder
	 */
	confirm : function(opts) {
		var self     = this,
			complete = false,
			options = {
				cssClass  : 'elfinder-dialog-confirm',
				modal     : true,
				resizable : false,
				title     : this.i18n(opts.title || 'confirmReq'),
				buttons   : {},
				close     : function() { 
					!complete && opts.cancel.callback();
					$(this).elfinderdialog('destroy');
				}
			},
			apply = this.i18n('apllyAll'),
			label, checkbox, btnNum;

		if (opts.cssClass) {
			options.cssClass += ' ' + opts.cssClass;
		}
		options.buttons[this.i18n(opts.accept.label)] = function() {
			opts.accept.callback(!!(checkbox && checkbox.prop('checked')));
			complete = true;
			$(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.accept.label)]._cssClass = 'elfinder-confirm-accept';
		
		if (opts.reject) {
			options.buttons[this.i18n(opts.reject.label)] = function() {
				opts.reject.callback(!!(checkbox && checkbox.prop('checked')));
				complete = true;
				$(this).elfinderdialog('close');
			};
			options.buttons[this.i18n(opts.reject.label)]._cssClass = 'elfinder-confirm-reject';
		}
		
		if (opts.buttons && opts.buttons.length > 0) {
			btnNum = 1;
			$.each(opts.buttons, function(i, v){
				options.buttons[self.i18n(v.label)] = function() {
					v.callback(!!(checkbox && checkbox.prop('checked')));
					complete = true;
					$(this).elfinderdialog('close');
				};
				options.buttons[self.i18n(v.label)]._cssClass = 'elfinder-confirm-extbtn' + (btnNum++);
				if (v.cssClass) {
					options.buttons[self.i18n(v.label)]._cssClass += ' ' + v.cssClass;
				}
			});
		}
		
		options.buttons[this.i18n(opts.cancel.label)] = function() {
			$(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.cancel.label)]._cssClass = 'elfinder-confirm-cancel';
		
		if (opts.all) {
			options.create = function() {
				var base = $('<div class="elfinder-dialog-confirm-applyall"></div>');
				checkbox = $('<input type="checkbox" />');
				$(this).next().find('.ui-dialog-buttonset')
					.prepend(base.append($('<label>'+apply+'</label>').prepend(checkbox)));
			};
		}
		
		if (opts.optionsCallback && typeof opts.optionsCallback === 'function') {
			opts.optionsCallback(options);
		}
		
		return this.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-confirm"></span>' + this.i18n(opts.text), options);
	},
	
	/**
	 * Create unique file name in required dir
	 * 
	 * @param  String  file name
	 * @param  String  parent dir hash
	 * @param  String  glue
	 * @return String
	 */
	uniqueName : function(prefix, phash, glue) {
		var i = 0, ext = '', p, name;
		
		prefix = this.i18n(false, prefix);
		phash = phash || this.cwd().hash;
		glue = (typeof glue === 'undefined')? ' ' : glue;

		if (p = prefix.match(/^(.+)(\.[^.]+)$/)) {
			ext    = p[2];
			prefix = p[1];
		}
		
		name   = prefix+ext;
		
		if (!this.fileByName(name, phash)) {
			return name;
		}
		while (i < 10000) {
			name = prefix + glue + (++i) + ext;
			if (!this.fileByName(name, phash)) {
				return name;
			}
		}
		return prefix + Math.random() + ext;
	},
	
	/**
	 * Return message translated onto current language
	 * Allowed accept HTML element that was wrapped in jQuery object
	 * To be careful to XSS vulnerability of HTML element Ex. You should use `fm.escape(file.name)`
	 *
	 * @param  String|Array  message[s]|Object jQuery
	 * @return String
	 **/
	i18n : function() {
		var self = this,
			messages = this.messages, 
			input    = [],
			ignore   = [], 
			message = function(m) {
				var file;
				if (m.indexOf('#') === 0) {
					if ((file = self.file(m.substr(1)))) {
						return file.name;
					}
				}
				return m;
			},
			i, j, m, escFunc, start = 0, isErr;
		
		if (arguments.length && arguments[0] === false) {
			escFunc = function(m){ return m; };
			start = 1;
		}
		for (i = start; i< arguments.length; i++) {
			m = arguments[i];
			
			if (Array.isArray(m)) {
				for (j = 0; j < m.length; j++) {
					if (m[j] instanceof jQuery) {
						// jQuery object is HTML element
						input.push(m[j]);
					} else if (typeof m[j] !== 'undefined'){
						input.push(message('' + m[j]));
					}
				}
			} else if (m instanceof jQuery) {
				// jQuery object is HTML element
				input.push(m[j]);
			} else if (typeof m !== 'undefined'){
				input.push(message('' + m));
			}
		}
		
		for (i = 0; i < input.length; i++) {
			// dont translate placeholders
			if ($.inArray(i, ignore) !== -1) {
				continue;
			}
			m = input[i];
			if (typeof m == 'string') {
				isErr = !!(messages[m] && m.match(/^err/));
				// translate message
				m = messages[m] || (escFunc? escFunc(m) : self.escape(m));
				// replace placeholders in message
				m = m.replace(/\$(\d+)/g, function(match, placeholder) {
					var res;
					placeholder = i + parseInt(placeholder);
					if (placeholder > 0 && input[placeholder]) {
						ignore.push(placeholder);
					}
					res = escFunc? escFunc(input[placeholder]) : self.escape(input[placeholder]);
					if (isErr) {
						res = '<span class="elfinder-err-var elfinder-err-var' + placeholder + '">' + res + '</span>';
					}
					return res;
				});
			} else {
				// get HTML from jQuery object
				m = m.get(0).outerHTML;
			}

			input[i] = m;
		}

		return $.grep(input, function(m, i) { return $.inArray(i, ignore) === -1 ? true : false; }).join('<br>');
	},
	
	/**
	 * Get icon style from file.icon
	 * 
	 * @param  Object  elFinder file object
	 * @return String|Object
	 */
	getIconStyle : function(file, asObject) {
		var self = this,
			template = {
				'background' : 'url(\'{url}\') 0 0 no-repeat',
				'background-size' : 'contain'
			},
			style = '',
			cssObj = {},
			i = 0;
		if (file.icon) {
			style = 'style="';
			$.each(template, function(k, v) {
				if (i++ === 0) {
					v = v.replace('{url}', self.escape(file.icon));
				}
				if (asObject) {
					cssObj[k] = v;
				} else {
					style += k+':'+v+';';
				}
			});
			style += '"';
		}
		return asObject? cssObj : style;
	},
	
	/**
	 * Convert mimetype into css classes
	 * 
	 * @param  String  file mimetype
	 * @return String
	 */
	mime2class : function(mimeType) {
		var prefix = 'elfinder-cwd-icon-',
			mime   = mimeType.toLowerCase(),
			isText = this.textMimes[mime];
		
		mime = mime.split('/');
		if (isText) {
			mime[0] += ' ' + prefix + 'text';
		} else if (mime[1] && mime[1].match(/\+xml$/)) {
			mime[0] += ' ' + prefix + 'xml';
		}
		
		return prefix + mime[0] + (mime[1] ? ' ' + prefix + mime[1].replace(/(\.|\+)/g, '-') : '');
	},
	
	/**
	 * Return localized kind of file
	 * 
	 * @param  Object|String  file or file mimetype
	 * @return String
	 */
	mime2kind : function(f) {
		var isObj = typeof(f) == 'object' ? true : false,
			mime  = isObj ? f.mime : f,
			kind;
		

		if (isObj && f.alias && mime != 'symlink-broken') {
			kind = 'Alias';
		} else if (this.kinds[mime]) {
			if (isObj && mime === 'directory' && (! f.phash || f.isroot)) {
				kind = 'Root';
			} else {
				kind = this.kinds[mime];
			}
		} else if (this.mimeTypes[mime]) {
			kind = this.mimeTypes[mime].toUpperCase();
			if (!this.messages['kind'+kind]) {
				kind = null;
			}
		}
		if (! kind) {
			if (mime.indexOf('text') === 0) {
				kind = 'Text';
			} else if (mime.indexOf('image') === 0) {
				kind = 'Image';
			} else if (mime.indexOf('audio') === 0) {
				kind = 'Audio';
			} else if (mime.indexOf('video') === 0) {
				kind = 'Video';
			} else if (mime.indexOf('application') === 0) {
				kind = 'App';
			} else if (mime.indexOf('font') === 0) {
				kind = 'Font';
			} else {
				kind = mime;
			}
		}
		
		return this.messages['kind'+kind] ? this.i18n('kind'+kind) : mime;
	},
	
	/**
	 * Return boolean Is mime-type text file
	 * 
	 * @param  String  mime-type
	 * @return Boolean
	 */
	mimeIsText : function(mime) {
		return (this.textMimes[mime.toLowerCase()] || (mime.indexOf('text/') === 0 && mime.substr(5, 3) !== 'rtf') || mime.match(/^application\/.+\+xml$/))? true : false;
	},
	
	/**
	 * Returns a date string formatted according to the given format string
	 * 
	 * @param  String  format string
	 * @param  Object  Date object
	 * @return String
	 */
	date : function(format, date) {
		var self = this,
			output, d, dw, m, y, h, g, i, s;
		
		if (! date) {
			date = new Date();
		}
		
		h  = date[self.getHours]();
		g  = h > 12 ? h - 12 : h;
		i  = date[self.getMinutes]();
		s  = date[self.getSeconds]();
		d  = date[self.getDate]();
		dw = date[self.getDay]();
		m  = date[self.getMonth]() + 1;
		y  = date[self.getFullYear]();
		
		output = format.replace(/[a-z]/gi, function(val) {
			switch (val) {
				case 'd': return d > 9 ? d : '0'+d;
				case 'j': return d;
				case 'D': return self.i18n(self.i18.daysShort[dw]);
				case 'l': return self.i18n(self.i18.days[dw]);
				case 'm': return m > 9 ? m : '0'+m;
				case 'n': return m;
				case 'M': return self.i18n(self.i18.monthsShort[m-1]);
				case 'F': return self.i18n(self.i18.months[m-1]);
				case 'Y': return y;
				case 'y': return (''+y).substr(2);
				case 'H': return h > 9 ? h : '0'+h;
				case 'G': return h;
				case 'g': return g;
				case 'h': return g > 9 ? g : '0'+g;
				case 'a': return h >= 12 ? 'pm' : 'am';
				case 'A': return h >= 12 ? 'PM' : 'AM';
				case 'i': return i > 9 ? i : '0'+i;
				case 's': return s > 9 ? s : '0'+s;
			}
			return val;
		});
		
		return output;
	},
	
	/**
	 * Return localized date
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	formatDate : function(file, t) {
		var self = this, 
			ts   = t || file.ts, 
			i18  = self.i18,
			date, format, output, d, dw, m, y, h, g, i, s;

		if (self.options.clientFormatDate && ts > 0) {

			date = new Date(ts*1000);
			format = ts >= this.yesterday 
				? this.fancyFormat 
				: this.dateFormat;

			output = self.date(format, date);
			
			return ts >= this.yesterday
				? output.replace('$1', this.i18n(ts >= this.today ? 'Today' : 'Yesterday'))
				: output;
		} else if (file.date) {
			return file.date.replace(/([a-z]+)\s/i, function(a1, a2) { return self.i18n(a2)+' '; });
		}
		
		return self.i18n('dateUnknown');
	},
	
	/**
	 * Return localized number string
	 * 
	 * @param  Number
	 * @return String
	 */
	toLocaleString : function(num) {
		var v = new Number(num);
		if (v) {
			if (v.toLocaleString) {
				return v.toLocaleString();
			} else {
				return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
			}
		}
		return num;
	},
	
	/**
	 * Return css class marks file permissions
	 * 
	 * @param  Object  file 
	 * @return String
	 */
	perms2class : function(o) {
		var c = '';
		
		if (!o.read && !o.write) {
			c = 'elfinder-na';
		} else if (!o.read) {
			c = 'elfinder-wo';
		} else if (!o.write) {
			c = 'elfinder-ro';
		}
		
		if (o.type) {
			c += ' elfinder-' + this.escape(o.type);
		}
		
		return c;
	},
	
	/**
	 * Return localized string with file permissions
	 * 
	 * @param  Object  file
	 * @return String
	 */
	formatPermissions : function(f) {
		var p  = [];
			
		f.read && p.push(this.i18n('read'));
		f.write && p.push(this.i18n('write'));	

		return p.length ? p.join(' '+this.i18n('and')+' ') : this.i18n('noaccess');
	},
	
	/**
	 * Return formated file size
	 * 
	 * @param  Number  file size
	 * @return String
	 */
	formatSize : function(s) {
		var n = 1, u = 'b';
		
		if (s == 'unknown') {
			return this.i18n('unknown');
		}
		
		if (s > 1073741824) {
			n = 1073741824;
			u = 'GB';
		} else if (s > 1048576) {
			n = 1048576;
			u = 'MB';
		} else if (s > 1024) {
			n = 1024;
			u = 'KB';
		}
		s = s/n;
		return (s > 0 ? n >= 1048576 ? s.toFixed(2) : Math.round(s) : 0) +' '+u;
	},
	
	/**
	 * Return formated file mode by options.fileModeStyle
	 * 
	 * @param  String  file mode
	 * @param  String  format style
	 * @return String
	 */
	formatFileMode : function(p, style) {
		var i, o, s, b, sticy, suid, sgid, str, oct;
		
		if (!style) {
			style = this.options.fileModeStyle.toLowerCase();
		}
		p = $.trim(p);
		if (p.match(/[rwxs-]{9}$/i)) {
			str = p = p.substr(-9);
			if (style == 'string') {
				return str;
			}
			oct = '';
			s = 0;
			for (i=0; i<7; i=i+3) {
				o = p.substr(i, 3);
				b = 0;
				if (o.match(/[r]/i)) {
					b += 4;
				}
				if (o.match(/[w]/i)) {
					b += 2;
				}
				if (o.match(/[xs]/i)) {
					if (o.match(/[xs]/)) {
						b += 1;
					}
					if (o.match(/[s]/i)) {
						if (i == 0) {
							s += 4;
						} else if (i == 3) {
							s += 2;
						}
					}
				}
				oct += b.toString(8);
			}
			if (s) {
				oct = s.toString(8) + oct;
			}
		} else {
			p = parseInt(p, 8);
			oct = p? p.toString(8) : '';
			if (!p || style == 'octal') {
				return oct;
			}
			o = p.toString(8);
			s = 0;
			if (o.length > 3) {
				o = o.substr(-4);
				s = parseInt(o.substr(0, 1), 8);
				o = o.substr(1);
			}
			sticy = ((s & 1) == 1); // not support
			sgid = ((s & 2) == 2);
			suid = ((s & 4) == 4);
			str = '';
			for(i=0; i<3; i++) {
				if ((parseInt(o.substr(i, 1), 8) & 4) == 4) {
					str += 'r';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 2) == 2) {
					str += 'w';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 1) == 1) {
					str += ((i==0 && suid)||(i==1 && sgid))? 's' : 'x';
				} else {
					str += '-';
				}
			}
		}
		if (style == 'both') {
			return str + ' (' + oct + ')';
		} else if (style == 'string') {
			return str;
		} else {
			return oct;
		}
	},
	
	/**
	 * Regist this.decodeRawString function
	 * 
	 * @return void
	 */
	registRawStringDecoder : function(rawStringDecoder) {
		if (typeof rawStringDecoder === 'function') {
			this.decodeRawString = this.options.rawStringDecoder = rawStringDecoder;
		}
	},
	
	/**
	 * Return boolean that uploadable MIME type into target folder
	 * 
	 * @param  String  mime    MIME type
	 * @param  String  target  target folder hash
	 * @return Bool
	 */
	uploadMimeCheck : function(mime, target) {
		target = target || this.cwd().hash;
		var res   = true, // default is allow
			mimeChecker = this.option('uploadMime', target),
			allow,
			deny,
			check = function(checker) {
				var ret = false;
				if (typeof checker === 'string' && checker.toLowerCase() === 'all') {
					ret = true;
				} else if (Array.isArray(checker) && checker.length) {
					$.each(checker, function(i, v) {
						v = v.toLowerCase();
						if (v === 'all' || mime.indexOf(v) === 0) {
							ret = true;
							return false;
						}
					});
				}
				return ret;
			};
		if (mime && $.isPlainObject(mimeChecker)) {
			mime = mime.toLowerCase();
			allow = check(mimeChecker.allow);
			deny = check(mimeChecker.deny);
			if (mimeChecker.firstOrder === 'allow') {
				res = false; // default is deny
				if (! deny && allow === true) { // match only allow
					res = true;
				}
			} else {
				res = true; // default is allow
				if (deny === true && ! allow) { // match only deny
					res = false;
				}
			}
		}
		return res;
	},
	
	/**
	 * call chained sequence of async deferred functions
	 * 
	 * @param  Array   tasks async functions
	 * @return Object  jQuery.Deferred
	 */
	sequence : function(tasks) {
		var l = tasks.length,
			chain = function(task, idx) {
				++idx;
				if (tasks[idx]) {
					return chain(task.then(tasks[idx]), idx);
				} else {
					return task;
				}
			};
		if (l > 1) {
			return chain(tasks[0](), 0);
		} else {
			return tasks[0]();
		}
	},
	
	/**
	 * Reload contents of target URL for clear browser cache
	 * 
	 * @param  String  url target URL
	 * @return Object  jQuery.Deferred
	 */
	reloadContents : function(url) {
		var dfd = $.Deferred(),
			ifm;
		try {
			ifm = $('<iframe width="1" height="1" scrolling="no" frameborder="no" style="position:absolute; top:-1px; left:-1px" crossorigin="use-credentials">')
				.attr('src', url)
				.one('load', function() {
					var ifm = $(this);
					try {
						this.contentDocument.location.reload(true);
						ifm.one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					} catch(e) {
						ifm.attr('src', '').attr('src', url).one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					}
				})
				.appendTo('body');
		} catch(e) {
			ifm && ifm.remove();
			dfd.reject();
		}
		return dfd;
	},
	
	/**
	 * Make netmount option for OAuth2
	 * 
	 * @param  String   protocol
	 * @param  String   name
	 * @param  String   host
	 * @param  Object   opts  Default {noOffline: false, root: 'root', pathI18n: 'folderId', folders: true}
			}
	 * 
	 * @return Object
	 */
	makeNetmountOptionOauth : function(protocol, name, host, opt) {
		var noOffline = typeof opt === 'boolean'? opt : null, // for backward compat
			opts = Object.assign({
				noOffline : false,
				root      : 'root',
				pathI18n  : 'folderId',
				folders   : true
			}, (noOffline === null? (opt || {}) : {noOffline : noOffline})),
			addFolders = function(fm, bro, folders) {
				var self = this,
					cnt  = Object.keys($.isPlainObject(folders)? folders : {}).length,
					select;
				
				bro.next().remove();
				if (cnt) {
					select = $('<select class="ui-corner-all elfinder-tabstop" style="max-width:200px;">').append(
						$($.map(folders, function(n,i){return '<option value="'+fm.escape((i+'').trim())+'">'+fm.escape(n)+'</option>';}).join(''))
					).on('change click', function(e){
						var node = $(this),
							path = node.val(),
							spn;
						self.inputs.path.val(path);
						if (opts.folders && (e.type === 'change' || node.data('current') !== path)) {
							node.next().remove();
							node.data('current', path);
							if (path != opts.root) {
								spn = spinner();
								if (xhr && xhr.state() === 'pending') {
									fm.abortXHR(xhr, { quiet: true , abort: true });
								}
								node.after(spn);
								xhr = fm.request({
									data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', path: path, pass: 'folders'},
									preventDefault : true
								}).done(function(data){
									addFolders.call(self, fm, node, data.folders);
								}).always(function() {
									fm.abortXHR(xhr, { quiet: true });
									spn.remove();
								}).xhr;
							}
						}
					});
					bro.after($('<div></div>').append(select))
						.closest('.ui-dialog').trigger('tabstopsInit');
					select.trigger('focus');
				}
			},
			spinner = function() {
				return $('<div class="elfinder-netmount-spinner"></div>').append('<span class="elfinder-spinner"></span>');
			},
			xhr;
		return {
			vars : {},
			name : name,
			inputs: {
				offline  : $('<input type="checkbox"/>').on('change', function() {
					$(this).parents('table.elfinder-netmount-tb').find('select:first').trigger('change', 'reset');
				}),
				host     : $('<span><span class="elfinder-spinner"></span></span><input type="hidden"/>'),
				path     : $('<input type="text" value="'+opts.root+'"/>'),
				user     : $('<input type="hidden"/>'),
				pass     : $('<input type="hidden"/>'),
				mnt2res  : $('<input type="hidden"/>')
			},
			select: function(fm, ev, d){
				var f = this.inputs,
					oline = f.offline,
					f0 = $(f.host[0]),
					data = d || null;
				this.vars.mbtn = f.host.closest('.ui-dialog').children('.ui-dialog-buttonpane:first').find('button.elfinder-btncnt-0');
				if (! f0.data('inrequest')
						&& (f0.find('span.elfinder-spinner').length
							|| data === 'reset'
							|| (data === 'winfocus' && ! f0.siblings('span.elfinder-button-icon-reload').length))
							)
				{
					if (oline.parent().children().length === 1) {
						f.path.parent().prev().html(fm.i18n(opts.pathI18n));
						oline.attr('title', fm.i18n('offlineAccess'));
						oline.uniqueId().after($('<label></label>').attr('for', oline.attr('id')).html(' '+fm.i18n('offlineAccess')));
					}
					f0.data('inrequest', true).empty().addClass('elfinder-spinner')
						.parent().find('span.elfinder-button-icon').remove();
					fm.request({
						data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', options: {id: fm.id, offline: oline.prop('checked')? 1:0, pass: f.host[1].value}},
						preventDefault : true
					}).done(function(data){
						f0.removeClass("elfinder-spinner").html(data.body.replace(/\{msg:([^}]+)\}/g, function(whole,s1){return fm.i18n(s1, host);}));
					});
					opts.noOffline && oline.closest('tr').hide();
				} else {
					oline.closest('tr')[(opts.noOffline || f.user.val())? 'hide':'show']();
					f0.data('funcexpup') && f0.data('funcexpup')();
				}
				this.vars.mbtn[$(f.host[1]).val()? 'show':'hide']();
			},
			done: function(fm, data){
				var f = this.inputs,
					p = this.protocol,
					f0 = $(f.host[0]),
					f1 = $(f.host[1]),
					expires = '&nbsp;',
					vars = this.vars,
					chk = function() {
						if (vars.oauthW && !document.hasFocus() && --vars.chkCnt) {
							p.trigger('change', 'winfocus');
							vars.tm = setTimeout(chk, 3000);
						}
					},
					btn;
				
				opts.noOffline && f.offline.closest('tr').hide();
				if (data.mode == 'makebtn') {
					f0.removeClass('elfinder-spinner').removeData('expires').removeData('funcexpup');
					btn = f.host.find('input').on('mouseenter mouseleave', function(){$(this).toggleClass('ui-state-hover');});
					if (data.url) {
						btn.on('click', function() {
							vars.tm && clearTimeout(vars.tm);
							vars.oauthW = window.open(data.url);
							// To correspond to safari, authentication tab sometimes not closing in CORS environment.
							// This may be a safari bug and may improve in the future.
							if ((fm.UA.iOS || fm.UA.Mac) && fm.isCORS && !vars.chkdone) {
								vars.chkCnt = 60;
								vars.tm = setTimeout(chk, 5000);
							}
						});
					}
					f1.val('');
					f.path.val(opts.root).next().remove();
					f.user.val('');
					f.pass.val('');
					! opts.noOffline && f.offline.closest('tr').show();
					vars.mbtn.hide();
				} else if (data.mode == 'folders') {
					if (data.folders) {
						addFolders.call(this, fm, f.path.nextAll(':last'), data.folders);
					}
				} else {
					if (vars.oauthW) {
						vars.tm && clearTimeout(vars.tm);
						vars.oauthW.close();
						delete vars.oauthW;
						// The problem that Safari's authentication tab doesn't close only affects the first time.
						vars.chkdone = true;
					}
					if (data.expires) {
						expires = '()';
						f0.data('expires', data.expires);
					}
					f0.html(host + expires).removeClass('elfinder-spinner');
					if (data.expires) {
						f0.data('funcexpup', function() {
							var rem = Math.floor((f0.data('expires') - (+new Date()) / 1000) / 60);
							if (rem < 3) {
								f0.parent().children('.elfinder-button-icon-reload').click();
							} else {
								f0.text(f0.text().replace(/\(.*\)/, '('+fm.i18n(['minsLeft', rem])+')'));
								setTimeout(function() {
									if (f0.is(':visible')) {
										f0.data('funcexpup')();
									}
								}, 60000);
							}
						});
						f0.data('funcexpup')();
					}
					if (data.reset) {
						p.trigger('change', 'reset');
						return;
					}
					f0.parent().append($('<span class="elfinder-button-icon elfinder-button-icon-reload" title="'+fm.i18n('reAuth')+'">')
						.on('click', function() {
							f1.val('reauth');
							p.trigger('change', 'reset');
						}));
					f1.val(protocol);
					vars.mbtn.show();
					if (data.folders) {
						addFolders.call(this, fm, f.path, data.folders);
					}
					if (data.mnt2res) {
						f.mnt2res.val('1');
					}
					f.user.val('done');
					f.pass.val('done');
					f.offline.closest('tr').hide();
				}
				f0.removeData('inrequest');
			},
			fail: function(fm, err){
				$(this.inputs.host[0]).removeData('inrequest');
				this.protocol.trigger('change', 'reset');
			},
			integrateInfo: opts.integrate
		};
	},
	
	/**
	 * Find cwd's nodes from files
	 * 
	 * @param  Array    files
	 * @param  Object   opts   {firstOnly: true|false}
	 */
	findCwdNodes : function(files, opts) {
		var self    = this,
			cwd     = this.getUI('cwd'),
			cwdHash = this.cwd().hash,
			newItem = $();
		
		opts = opts || {};
		
		$.each(files, function(i, f) {
			if (f.phash === cwdHash || self.searchStatus.state > 1) {
				newItem = newItem.add(self.cwdHash2Elm(f.hash));
				if (opts.firstOnly) {
					return false;
				}
			}
		});
		
		return newItem;
	},
	
	/**
	 * Convert from relative URL to abstract URL based on current URL
	 * 
	 * @param  String  URL
	 * @return String
	 */
	convAbsUrl : function(url) {
		if (url.match(/^http/i)) {
			return url;
		}
		if (url.substr(0,2) === '//') {
			return window.location.protocol + url;
		}
		var root = window.location.protocol + '//' + window.location.host,
			reg  = /[^\/]+\/\.\.\//,
			ret;
		if (url.substr(0, 1) === '/') {
			ret = root + url;
		} else {
			ret = root + window.location.pathname.replace(/\/[^\/]+$/, '/') + url;
		}
		ret = ret.replace('/./', '/');
		while(reg.test(ret)) {
			ret = ret.replace(reg, '');
		}
		return ret;
	},
	
	/**
	 * Is same origin to current site
	 * 
	 * @param  String  check url
	 * @return Boolean
	 */
	isSameOrigin : function (checkUrl) {
		var url;
		checkUrl = this.convAbsUrl(checkUrl);
		if (location.origin && window.URL) {
			try {
				url = new URL(checkUrl);
				return location.origin === url.origin;
			} catch(e) {}
		}
		url = document.createElement('a');
		url.href = checkUrl;
		return location.protocol === url.protocol && location.host === url.host && location.port && url.port;
	},
	
	navHash2Id : function(hash) {
		return this.navPrefix + hash;
	},
	
	navId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.navPrefix.length) : false;
	},
	
	cwdHash2Id : function(hash) {
		return this.cwdPrefix + hash;
	},
	
	cwdId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.cwdPrefix.length) : false;
	},
	
	/**
	 * navHash to jQuery element object
	 *
	 * @param      String  hash    nav hash
	 * @return     Object  jQuery element object
	 */
	navHash2Elm : function(hash) {
		return $(document.getElementById(this.navHash2Id(hash)));
	},

	/**
	 * cwdHash to jQuery element object
	 *
	 * @param      String  hash    cwd hash
	 * @return     Object  jQuery element object
	 */
	cwdHash2Elm : function(hash) {
		return $(document.getElementById(this.cwdHash2Id(hash)));
	},

	isInWindow : function(elem, nochkHide) {
		var elm, rect;
		if (! (elm = elem.get(0))) {
			return false;
		}
		if (! nochkHide && elm.offsetParent === null) {
			return false;
		}
		rect = elm.getBoundingClientRect();
		return document.elementFromPoint(rect.left, rect.top)? true : false;
	},
	
	/**
	 * calculate elFinder node z-index
	 * 
	 * @return void
	 */
	zIndexCalc : function() {
		var self = this,
			node = this.getUI(),
			ni = node.css('z-index');
		if (ni && ni !== 'auto' && ni !== 'inherit') {
			self.zIndex = ni;
		} else {
			node.parents().each(function(i, n) {
				var z = $(n).css('z-index');
				if (z !== 'auto' && z !== 'inherit' && (z = parseInt(z))) {
					self.zIndex = z;
					return false;
				}
			});
		}
	},
	
	/**
	 * Load JavaScript files
	 * 
	 * @param  Array    urls      to load JavaScript file URLs
	 * @param  Function callback  call back function on script loaded
	 * @param  Object   opts      Additional options to $.ajax OR {loadType: 'tag'} to load by script tag
	 * @param  Object   check     { obj: (Object)ParentObject, name: (String)"Attribute name", timeout: (Integer)milliseconds }
	 * @return elFinder
	 */
	loadScript : function(urls, callback, opts, check) {
		var defOpts = {
				dataType : 'script',
				cache    : true
			},
			success, cnt, scripts = {}, results = {};
		
		opts = opts || {};
		if (opts.tryRequire && this.hasRequire) {
			require(urls, callback, opts.error);
		} else {
			success = function() {
				var cnt, fi, hasError;
				$.each(results, function(i, status) {
					if (status !== 'success' && status !== 'notmodified') {
						hasError = true;
						return false;
					}
				});
				if (!hasError) {
					if (typeof callback === 'function') {
						if (check) {
							if (typeof check.obj[check.name] === 'undefined') {
								cnt = check.timeout? (check.timeout / 10) : 1;
								fi = setInterval(function() {
									if (--cnt < 0 || typeof check.obj[check.name] !== 'undefined') {
										clearInterval(fi);
										callback();
									}
								}, 10);
							} else {
								callback();
							}
						} else {
							callback();
						}
					}
				} else {
					if (opts.error && typeof opts.error === 'function') {
						opts.error({ loadResults: results });
					}
				}
			};

			if (opts.loadType === 'tag') {
				$('head > script').each(function() {
					scripts[this.src] = this;
				});
				cnt = urls.length;
				$.each(urls, function(i, url) {
					var done = false,
						script;
					
					if (scripts[url]) {
						results[i] = scripts[url]._error || 'success';
						(--cnt < 1) && success();
					} else {
						script = document.createElement('script');
						script.charset = opts.charset || 'UTF-8';
						$('head').append(script);
						script.onload = script.onreadystatechange = function() {
							if ( !done && (!this.readyState ||
									this.readyState === 'loaded' || this.readyState === 'complete') ) {
								done = true;
								results[i] = 'success';
								(--cnt < 1) && success();
							}
						};
						script.onerror = function(err) {
							results[i] = script._error = (err && err.type)? err.type : 'error';
							(--cnt < 1) && success();
						};
						script.src = url;
					}
				});
			} else {
				opts = $.isPlainObject(opts)? Object.assign(defOpts, opts) : defOpts;
				cnt = 0;
				(function appendScript(d, status) {
					if (d !== void(0)) {
						results[cnt++] = status;
					}
					if (urls.length) {
						$.ajax(Object.assign({}, opts, {
							url: urls.shift(),
							success: appendScript,
							error: appendScript
						}));
					} else {
						success();
					}
				})();
			}
		}
		return this;
	},
	
	/**
	 * Load CSS files
	 * 
	 * @param  Array    to load CSS file URLs
	 * @param  Object   options
	 * @return elFinder
	 */
	loadCss : function(urls, opts) {
		var self = this,
			clName, dfds;
		if (typeof urls === 'string') {
			urls = [ urls ];
		}
		if (opts) {
			if (opts.className) {
				clName = opts.className;
			}
			if (opts.dfd && opts.dfd.promise) {
				dfds = [];
			}
		}
		$.each(urls, function(i, url) {
			var link, df;
			url = self.convAbsUrl(url).replace(/^https?:/i, '');
			if (dfds) {
				dfds[i] = $.Deferred();
			}
			if (! $('head > link[href="' + self.escape(url) + '"]').length) {
				link = document.createElement('link');
				link.type = 'text/css';
				link.rel = 'stylesheet';
				link.href = url;
				if (clName) {
					link.className = clName;
				}
				if (dfds) {
					link.onload = function() {
						dfds[i].resolve();
					};
					link.onerror = function() {
						dfds[i].reject();
					};
				}
				$('head').append(link);
			} else {
				dfds && dfds[i].resolve();
			}
		});
		if (dfds) {
			$.when.apply(null, dfds).done(function() {
				opts.dfd.resolve();
			}).fail(function() {
				opts.dfd.reject();
			});
		}
		return this;
	},
	
	/**
	 * Abortable async job performer
	 * 
	 * @param func Function
	 * @param arr  Array
	 * @param opts Object
	 * 
	 * @return Object $.Deferred that has an extended method _abort()
	 */
	asyncJob : function(func, arr, opts) {
		var dfrd = $.Deferred(),
			abortFlg = false,
			parms = Object.assign({
				interval : 0,
				numPerOnce : 1
			}, opts || {}),
			resArr = [],
			vars =[],
			curVars = [],
			exec,
			tm;
		
		dfrd._abort = function(resolve) {
			tm && clearTimeout(tm);
			vars = [];
			abortFlg = true;
			if (dfrd.state() === 'pending') {
				dfrd[resolve? 'resolve' : 'reject'](resArr);
			}
		};
		
		dfrd.fail(function() {
			dfrd._abort();
		}).always(function() {
			dfrd._abort = function() {};
		});

		if (typeof func === 'function' && Array.isArray(arr)) {
			vars = arr.concat();
			exec = function() {
				var i, len, res;
				if (abortFlg) {
					return;
				}
				curVars = vars.splice(0, parms.numPerOnce);
				len = curVars.length;
				for (i = 0; i < len; i++) {
					if (abortFlg) {
						break;
					}
					res = func(curVars[i]);
					(res !== null) && resArr.push(res);
				}
				if (abortFlg) {
					return;
				}
				if (vars.length) {
					tm = setTimeout(exec, parms.interval);
				} else {
					dfrd.resolve(resArr);
				}
			};
			if (vars.length) {
				tm = setTimeout(exec, 0);
			} else {
				dfrd.resolve(resArr);
			}
		} else {
			dfrd.reject();
		}
		return dfrd;
	},
	
	getSize : function(targets) {
		var self = this,
			reqs = [],
			tgtlen = targets.length,
			dfrd = $.Deferred().fail(function() {
				$.each(reqs, function(i, req) {
					if (req) {
						req.syncOnFail && req.syncOnFail(false);
						req.reject();
					}
				});
			}),
			getLeafRoots = function(file) {
				var targets = [];
				if (file.mime === 'directory') {
					$.each(self.leafRoots, function(hash, roots) {
						var phash;
						if (hash === file.hash) {
							targets.push.apply(targets, roots);
						} else {
							phash = (self.file(hash) || {}).phash;
							while(phash) {
								if (phash === file.hash) {
									targets.push.apply(targets, roots);
								}
								phash = (self.file(phash) || {}).phash;
							}
						}
					});
				}
				return targets;
			},
			checkPhash = function(hash) {
				var dfd = $.Deferred(),
					dir = self.file(hash),
					target = dir? dir.phash : hash;
				if (target && ! self.file(target)) {
					self.request({
						data : {
							cmd    : 'parents',
							target : target
						},
						preventFail : true
					}).done(function() {
						self.one('parentsdone', function() {
							dfd.resolve();
						});
					}).fail(function() {
						dfd.resolve();
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			},
			cache = function() {
				var dfd = $.Deferred(),
					cnt = Object.keys(self.leafRoots).length;
				
				if (cnt > 0) {
					$.each(self.leafRoots, function(hash) {
						checkPhash(hash).done(function() {
							--cnt;
							if (cnt < 1) {
								dfd.resolve();
							}
						});
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			};

		self.autoSync('stop');
		cache().done(function() {
			var files = [], grps = {}, dfds = [], cache = [], singles = {};
			
			$.each(targets, function() {
				files.push.apply(files, getLeafRoots(self.file(this)));
			});
			targets.push.apply(targets, files);
			
			$.each(targets, function() {
				var root = self.root(this),
					file = self.file(this);
				if (file && (file.sizeInfo || file.mime !== 'directory')) {
					cache.push($.Deferred().resolve(file.sizeInfo? file.sizeInfo : {size: file.size, dirCnt: 0, fileCnt : 1}));
				} else {
					if (! grps[root]) {
						grps[root] = [ this.toString() ];
					} else {
						grps[root].push(this.toString());
					}
				}
			});
			
			$.each(grps, function() {
				var idx = dfds.length;
				if (this.length === 1) {
					singles[idx] = this[0];
				}
				dfds.push(self.request({
					data : {cmd : 'size', targets : this},
					preventDefault : true
				}));
			});
			reqs.push.apply(reqs, dfds);
			dfds.push.apply(dfds, cache);
			
			$.when.apply($, dfds).fail(function() {
				dfrd.reject();
			}).done(function() {
				var cache = function(h, data) {
						var file;
						if (file = self.file(h)) {
							file.sizeInfo = { isCache: true };
							$.each(['size', 'dirCnt', 'fileCnt'], function() {
								file.sizeInfo[this] = data[this] || 0;
							});
							file.size = parseInt(file.sizeInfo.size);
							changed.push(file);
						}
					},
					size = 0,
					fileCnt = 0,
					dirCnt = 0,
					argLen = arguments.length,
					cnts = [],
					cntsTxt = '',
					changed = [],
					i, file, data;
				
				for (i = 0; i < argLen; i++) {
					data = arguments[i];
					file = null;
					if (!data.isCache) {
						if (singles[i] && (file = self.file(singles[i]))) {
							cache(singles[i], data);
						} else if (data.sizes && $.isPlainObject(data.sizes)) {
							$.each(data.sizes, function(h, sizeInfo) {
								cache(h, sizeInfo);
							});
						}
					}
					size += parseInt(data.size);
					if (fileCnt !== false) {
						if (typeof data.fileCnt === 'undefined') {
							fileCnt = false;
						} else {
							fileCnt += parseInt(data.fileCnt || 0);
						}
					}
					if (dirCnt !== false) {
						if (typeof data.dirCnt === 'undefined') {
							dirCnt = false;
						} else {
							dirCnt += parseInt(data.dirCnt || 0);
						}
					}
				}
				changed.length && self.change({changed: changed});
				
				if (dirCnt !== false){
					cnts.push(self.i18n('folders') + ': ' + (dirCnt - (tgtlen > 1? 0 : 1)));
				}
				if (fileCnt !== false){
					cnts.push(self.i18n('files') + ': ' + fileCnt);
				}
				if (cnts.length) {
					cntsTxt = '<br>' + cnts.join(', ');
				}
				dfrd.resolve({
					size: size,
					fileCnt: fileCnt,
					dirCnt: dirCnt,
					formated: (size >= 0 ? self.formatSize(size) : self.i18n('unknown')) + cntsTxt
				});
			});
			
			self.autoSync();
		});
		
		return dfrd;
	},

	/**
	 * Worker Object URL for Blob URL of getWorker()
	 */
	wkObjUrl : null,

	/**
	 * Gets the web worker.
	 *
	 * @param      {Object}  options  The options
	 * @return     {Worker}  The worker.
	 */
	getWorker : function(options){
		// for to make blob URL
		function woker() {
			self.onmessage = function(e) {
				var d = e.data;
				try {
					self.data = d.data;
					if (d.scripts) {
						for(var i = 0; i < d.scripts.length; i++) {
							importScripts(d.scripts[i]);
						}
					}
					self.postMessage(self.res);
				} catch (e) {
					self.postMessage({error: e.toString()});
				}
			};
		}
		// get woker
		var wk;
		try {
			if (!this.wkObjUrl) {
				this.wkObjUrl = (window.URL || window.webkitURL).createObjectURL(new Blob(
					[woker.toString().replace(/\s+/g, ' ').replace(/ *([^\w]) */g, '$1').replace(/^function\b.+?\{|\}$/g, '')],
					{ type:'text/javascript' }
				));
			}
			wk = new Worker(this.wkObjUrl, options);
		} catch(e) {
			this.debug('error', e.toString());
		}
		return wk;
	},

	/**
	 * Get worker absolute URL by filename
	 *
	 * @param      {string}  filename  The filename
	 * @return     {<type>}  The worker url.
	 */
	getWorkerUrl : function(filename) {
		return this.convAbsUrl(this.workerBaseUrl + filename);
	},

	/**
	 * Gets the theme object by settings of options.themes
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  jQuery.Deferred
	 */
	getTheme : function(themeid) {
		var self = this,
			dfd = $.Deferred(),
			absUrl = function(url, base) {
				if (!base) {
					base = self.convAbsUrl(self.baseUrl);
				}
				if (Array.isArray(url)) {
					return $.map(url, function(v) {
						return absUrl(v, base);
					});
				} else {
					return url.match(/^(?:http|\/\/)/i)? url : base + url.replace(/^(?:\.\/|\/)/, '');
				}
			},
			themeObj, m;
		if (themeid && (themeObj = self.options.themes[themeid])) {
			if (typeof themeObj === 'string') {
				url = absUrl(themeObj);
				if (m = url.match(/^(.+\/)[^/]+\.json$/i)) {
					$.getJSON(url).done(function(data) {
						themeObj = data;
						themeObj.id = themeid;
						if (themeObj.cssurls) {
							themeObj.cssurls = absUrl(themeObj.cssurls, m[1]);
						}
						if (themeObj.image) {
							themeObj.image = absUrl(themeObj.image, m[1]);
						}
						dfd.resolve(themeObj);
					}).fail(function() {
						dfd.reject();
					});
				} else {
					dfd.resolve({
						id: themeid,
						name: themeid,
						cssurls: [url]
					});
				}
			} else if ($.isPlainObject(themeObj) && themeObj.cssurls) {
				themeObj.id = themeid;
				themeObj.cssurls = absUrl(themeObj.cssurls);
				if (!Array.isArray(themeObj.cssurls)) {
					themeObj.cssurls = [themeObj.cssurls];
				}
				if (!themeObj.name) {
					themeObj.name = themeid;
				}
				dfd.resolve(themeObj);
			} else {
				dfd.reject();
			}
		} else {
			dfd.reject();
		}
		return dfd;
	},

	/**
	 * Change current theme
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  this elFinder instance
	 */
	changeTheme : function(themeid) {
		var self = this;
		if (themeid) {
			if (self.options.themes[themeid] && (!self.theme || self.theme.id !== themeid)) {
				self.getTheme(themeid).done(function(themeObj) {
					if (themeObj.cssurls) {
						$('head>link.elfinder-theme-ext').remove();
						self.loadCss(themeObj.cssurls, {
							className: 'elfinder-theme-ext',
							dfd: $.Deferred().done(function() {
								self.theme = themeObj;
								self.trigger && self.trigger('themechange');
							})
						});
					}
				});
			} else if (themeid === 'default' && self.theme && self.theme.id !== 'default') {
				$('head>link.elfinder-theme-ext').remove();
				self.theme = null;
				self.trigger && self.trigger('themechange');
			}
		}
		return this;
	},

	/**
	 * Apply leaf root stats to target directory
	 *
	 * @param      object     dir     object of target directory
	 * @param      boolean    update  is force update
	 * 
	 * @return     boolean    dir object was chenged 
	 */
	applyLeafRootStats : function(dir, update) {
		var self = this,
			prev = update? dir : (self.file(dir.hash) || dir),
			prevTs = prev.ts,
			change = false;
		// backup original stats
		if (update || !dir._realStats) {
			dir._realStats = {
				locked: dir.locked || 0,
				dirs: dir.dirs || 0,
				ts: dir.ts
			};
		}
		// set lock
		dir.locked = 1;
		if (!prev.locked) {
			change = true;
		}
		// has leaf root to `dirs: 1`
		dir.dirs = 1;
		if (!prev.dirs) {
			change = true;
		}
		// set ts
		$.each(self.leafRoots[dir.hash], function() {
			var f = self.file(this);
			if (f && f.ts && (dir.ts || 0) < f.ts) {
				dir.ts = f.ts;
			}
		});
		if (prevTs !== dir.ts) {
			change = true;
		}

		return change;
	},

	/**
	 * To aborted XHR object
	 * 
	 * @param Object xhr
	 * @param Object opts
	 * 
	 * @return void
	 */
	abortXHR : function(xhr, o) {
		var opts = o || {};
		
		if (xhr) {
			opts.quiet && (xhr.quiet = true);
			if (opts.abort && xhr._requestId) {
				this.request({
					data: {
						cmd: 'abort',
						id: xhr._requestId
					},
					preventDefault: true
				});
			}
			xhr.abort();
			xhr = void 0;
		}
	},

	/**
	 * Sets the custom header by xhr response header with options.parrotHeaders
	 *
	 * @param Object xhr
	 * 
	 * @return void
	 */
	setCustomHeaderByXhr : function(xhr) {
		var self = this;
		if (xhr.getResponseHeader && self.parrotHeaders && self.parrotHeaders.length) {
			$.each(self.parrotHeaders, function(i, h) {
				var val = xhr.getResponseHeader(h);
				if (val) {
					self.customHeaders[h] = val;
					self.sessionStorage('core-ph:'+h, val);
				} else if (typeof val === 'string') {
					delete self.customHeaders[h];
					self.sessionStorage('core-ph:'+h, null);
				}
			});
		}
	},

	/**
	 * Determines if parrot headers.
	 *
	 * @return     {boolean}  True if parrot headers, False otherwise.
	 */
	hasParrotHeaders : function() {
		var res = false,
			phs = this.parrotHeaders;
		if (Object.keys(this.customHeaders).length) {
			for (var i = 0; i < phs.length; i++) {
				if (this.customHeaders[phs[i]]) {
					res = true;
					break;
				}
			}
		}
		return res;
	},

	/**
	 * Gets the request identifier
	 *
	 * @return  String  The request identifier.
	 */
	getRequestId : function() {
		return (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
	},
	
	/**
	 * Flip key and value of array or object
	 * 
	 * @param  Array | Object  { a: 1, b: 1, c: 2 }
	 * @param  Mixed           Static value
	 * @return Object          { 1: "b", 2: "c" }
	 */
	arrayFlip : function (trans, val) {
		var key,
			tmpArr = {},
			isArr = $.isArray(trans);
		for (key in trans) {
			if (isArr || trans.hasOwnProperty(key)) {
				tmpArr[trans[key]] = val || key;
			}
		}
		return tmpArr;
	},
	
	/**
	 * Return array ["name without extention", "extention"]
	 * 
	 * @param String name
	 * 
	 * @return Array
	 * 
	 */
	splitFileExtention : function(name) {
		var m;
		if (m = name.match(/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i)) {
			if (typeof m[1] === 'undefined') {
				m[1] = '';
			}
			return [m[1], m[2]];
		} else {
			return [name, ''];
		}
	},
	
	/**
	 * Slice the ArrayBuffer by sliceSize
	 *
	 * @param      arraybuffer  arrayBuffer  The array buffer
	 * @param      Number       sliceSize    The slice size
	 * @return     Array   Array of sleced arraybuffer
	 */
	sliceArrayBuffer : function(arrayBuffer, sliceSize) {
		var segments= [],
			fi = 0;
		while(fi * sliceSize < arrayBuffer.byteLength){
			segments.push(arrayBuffer.slice(fi * sliceSize, (fi + 1) * sliceSize));
			fi++;
		}
		return segments;
	},

	arrayBufferToBase64 : function(ab) {
		if (!window.btoa) {
			return '';
		}
		var dView = new Uint8Array(ab), // Get a byte view
			arr = Array.prototype.slice.call(dView), // Create a normal array
			arr1 = arr.map(function(item) {
				return String.fromCharCode(item); // Convert
			});
	    return window.btoa(arr1.join('')); // Form a string
	},

	log : function(m) { window.console && window.console.log && window.console.log(m); return this; },
	
	debug : function(type, m) {
		var self = this,
			d = this.options.debug,
			tb = this.options.toastBackendWarn,
			tbOpts, showlog;

		if (type === 'backend-error') {
			if (! this.cwd().hash || (d && (d === 'all' || d['backend-error']))) {
				m = Array.isArray(m)? m : [ m ];
				this.error(m);
			}
		} else if (type === 'backend-warning') {
			showlog = true;
			if (tb) {
				tbOpts = $.isPlainObject(tb)? tb : {};
				$.each(Array.isArray(m)? m : [ m ], function(i, m) {
					self.toast(Object.assign({
						mode : 'warning',
						msg: m
					}, tbOpts));
				});
			}
		} else if (type === 'backend-debug') {
			this.trigger('backenddebug', m);
		}
		
		if (showlog || (d && (d === 'all' || d[type]))) {
			window.console && window.console.log && window.console.log('elfinder debug: ['+type+'] ['+this.id+']', m);
		}

		return this;
	},

	/**
	 * Parse response.debug and trigger debug
	 *
	 * @param      Object  response  The response
	 */
	responseDebug : function(response) {
		var rd = response.debug,
			d;
		if (rd) {
			// set options.debug
			d = this.options.debug;
			if (!d || d !== 'all') {
				if (!d) {
					d = this.options.debug = {};
				}
				d['backend-error'] = true;
				d['warning'] = true;
			}
			if (rd.mountErrors && (typeof rd.mountErrors === 'string' || (Array.isArray(rd.mountErrors) && rd.mountErrors.length))) {
				this.debug('backend-error', rd.mountErrors);
			}
			if (rd.backendErrors && (typeof rd.backendErrors === 'string' || (Array.isArray(rd.backendErrors) && rd.backendErrors.length))) {
				this.debug('backend-warning', rd.backendErrors);
			}
		}
	},

	time : function(l) { window.console && window.console.time && window.console.time(l); },
	timeEnd : function(l) { window.console && window.console.timeEnd && window.console.timeEnd(l); }
	

};

/**
 * for conpat ex. ie8...
 *
 * Object.keys() - JavaScript | MDN
 * https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
 */
if (!Object.keys) {
	Object.keys = (function () {
		var hasOwnProperty = Object.prototype.hasOwnProperty,
				hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
				dontEnums = [
					'toString',
					'toLocaleString',
					'valueOf',
					'hasOwnProperty',
					'isPrototypeOf',
					'propertyIsEnumerable',
					'constructor'
				],
				dontEnumsLength = dontEnums.length;

		return function (obj) {
			if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

			var result = [];

			for (var prop in obj) {
				if (hasOwnProperty.call(obj, prop)) result.push(prop);
			}

			if (hasDontEnumBug) {
				for (var i=0; i < dontEnumsLength; i++) {
					if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
				}
			}
			return result;
		};
	})();
}
// Array.isArray
if (!Array.isArray) {
	Array.isArray = function(arr) {
		return jQuery.isArray(arr);
	};
}
// Object.assign
if (!Object.assign) {
	Object.assign = function() {
		return jQuery.extend.apply(null, arguments);
	};
}
// String.repeat
if (!String.prototype.repeat) {
	String.prototype.repeat = function(count) {
		'use strict';
		if (this == null) {
			throw new TypeError('can\'t convert ' + this + ' to object');
		}
		var str = '' + this;
		count = +count;
		if (count != count) {
			count = 0;
		}
		if (count < 0) {
			throw new RangeError('repeat count must be non-negative');
		}
		if (count == Infinity) {
			throw new RangeError('repeat count must be less than infinity');
		}
		count = Math.floor(count);
		if (str.length == 0 || count == 0) {
			return '';
		}
		// Ensuring count is a 31-bit integer allows us to heavily optimize the
		// main part. But anyway, most current (August 2014) browsers can't handle
		// strings 1 << 28 chars or longer, so:
		if (str.length * count >= 1 << 28) {
			throw new RangeError('repeat count must not overflow maximum string size');
		}
		var rpt = '';
		for (var i = 0; i < count; i++) {
			rpt += str;
		}
		return rpt;
	};
}
// String.trim
if (!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, '');
	};
}
// Array.apply
(function () {
	try {
		Array.apply(null, {});
		return;
	} catch (e) { }

	var toString = Object.prototype.toString,
		arrayType = '[object Array]',
		_apply = Function.prototype.apply,
		slice = /*@cc_on @if (@_jscript_version <= 5.8)
			function () {
				var a = [], i = this.length;
				while (i-- > 0) a[i] = this[i];
				return a;
			}@else@*/Array.prototype.slice/*@end@*/;

	Function.prototype.apply = function apply(thisArg, argArray) {
		return _apply.call(this, thisArg,
			toString.call(argArray) === arrayType ? argArray : slice.call(argArray));
	};
})();
// Array.from
if (!Array.from) {
	Array.from = function(obj) {
		return obj.length === 1 ? [obj[0]] : Array.apply(null, obj);
	};
}
// window.requestAnimationFrame and window.cancelAnimationFrame
if (!window.cancelAnimationFrame) {
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik MÃ¶ller. fixes from Paul Irish and Tino Zijdel
// MIT license
(function() {
    var lastTime = 0;
    var vendors = ['ms', 'moz', 'webkit', 'o'];
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] 
                                   || window[vendors[x]+'CancelRequestAnimationFrame'];
    }
 
    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };
 
    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
}());
}


/*
 * File: /js/elFinder.version.js
 */

/**
 * Application version
 *
 * @type String
 **/
elFinder.prototype.version = '2.1.66';



/*
 * File: /js/jquery.elfinder.js
 */

/*** jQuery UI droppable performance tune for elFinder ***/
(function(){
if ($.ui) {
	if ($.ui.ddmanager) {
		var origin = $.ui.ddmanager.prepareOffsets;
		$.ui.ddmanager.prepareOffsets = function( t, event ) {
			var isOutView = function(elem) {
				if (elem.is(':hidden')) {
					return true;
				}
				var rect = elem[0].getBoundingClientRect();
				return document.elementFromPoint(rect.left, rect.top) || document.elementFromPoint(rect.left + rect.width, rect.top + rect.height)? false : true;
			};
			
			if (event.type === 'mousedown' || t.options.elfRefresh) {
				var i, d,
				m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
				l = m.length;
				for ( i = 0; i < l; i++ ) {
					d = m[ i ];
					if (d.options.autoDisable && (!d.options.disabled || d.options.autoDisable > 1)) {
						d.options.disabled = isOutView(d.element);
						d.options.autoDisable = d.options.disabled? 2 : 1;
					}
				}
			}
			
			// call origin function
			return origin( t, event );
		};
	}
}
})();

 /**
 *
 * jquery.binarytransport
 *
 * @description. jQuery ajax transport for making binary data type requests.
 *
 */

(function($, undefined) {
	
	// use this transport for "binary" data type
	$.ajaxTransport("+binary", function(options, originalOptions, jqXHR) {
		// check for conditions and support for blob / arraybuffer response type
		if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {
			var callback;

			// Cross domain only allowed if supported through XMLHttpRequest
			return {
				send: function( headers, complete ) {
					var i,
						dataType = options.responseType || "blob",
						xhr = options.xhr();

					xhr.open(
						options.type,
						options.url,
						options.async,
						options.username,
						options.password
					);

					// Apply custom fields if provided
					if ( options.xhrFields ) {
						for ( i in options.xhrFields ) {
							xhr[ i ] = options.xhrFields[ i ];
						}
					}

					// Override mime type if needed
					if ( options.mimeType && xhr.overrideMimeType ) {
						xhr.overrideMimeType( options.mimeType );
					}

					// X-Requested-With header
					// For cross-domain requests, seeing as conditions for a preflight are
					// akin to a jigsaw puzzle, we simply never set it to be sure.
					// (it can always be set on a per-request basis or even using ajaxSetup)
					// For same-domain requests, won't change header if already provided.
					if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
						headers[ "X-Requested-With" ] = "XMLHttpRequest";
					}

					// Set headers
					for ( i in headers ) {
						xhr.setRequestHeader( i, headers[ i ] );
					}

					// Callback
					callback = function( type ) {
						return function() {
							if ( callback ) {
								callback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = null;

								if ( type === "abort" ) {
									xhr.abort();
								} else if ( type === "error" ) {
									complete(
										xhr.status,
										xhr.statusText
									);
								} else {
									var data = {};
									data[options.dataType] = xhr.response;
									complete(
										xhr.status,
										xhr.statusText,
										data,
										xhr.getAllResponseHeaders()
									);
								}
							}
						};
					};

					// Listen to events
					xhr.onload = callback();
					xhr.onabort = xhr.onerror = xhr.ontimeout = callback( "error" );

					// Create the abort callback
					callback = callback( "abort" );

					try {
						xhr.responseType = dataType;
						// Do send the request (this may raise an exception)
						xhr.send( options.data || null );
					} catch ( e ) {
						if ( callback ) {
							throw e;
						}
					}
				},

				abort: function() {
					if ( callback ) {
						callback();
					}
				}
			};
		}
	});
})(window.jQuery);

/*!
 * jQuery UI Touch Punch 0.2.3
 *
 * Copyright 2011â€“2014, Dave Furfero
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * Depends:
 *	jquery.ui.widget.js
 *	jquery.ui.mouse.js
 */
(function ($) {

  // Detect touch support
  $.support.touch = 'ontouchend' in document;

  // Ignore browsers without touch support
  if (!$.support.touch) {
	return;
  }

  var mouseProto = $.ui.mouse.prototype,
	  _mouseInit = mouseProto._mouseInit,
	  _mouseDestroy = mouseProto._mouseDestroy,
	  touchHandled,
	  posX, posY;

  /**
   * Simulate a mouse event based on a corresponding touch event
   * @param {Object} event A touch event
   * @param {String} simulatedType The corresponding mouse event
   */
  function simulateMouseEvent (event, simulatedType) {

	// Ignore multi-touch events
	if (event.originalEvent.touches.length > 1) {
	  return;
	}

	if (! $(event.currentTarget).hasClass('touch-punch-keep-default')) {
		event.preventDefault();
	}

	var touch = event.originalEvent.changedTouches[0],
		simulatedEvent = document.createEvent('MouseEvents');
	
	// Initialize the simulated mouse event using the touch event's coordinates
	simulatedEvent.initMouseEvent(
	  simulatedType,	// type
	  true,				// bubbles					  
	  true,				// cancelable				  
	  window,			// view						  
	  1,				// detail					  
	  touch.screenX,	// screenX					  
	  touch.screenY,	// screenY					  
	  touch.clientX,	// clientX					  
	  touch.clientY,	// clientY					  
	  false,			// ctrlKey					  
	  false,			// altKey					  
	  false,			// shiftKey					  
	  false,			// metaKey					  
	  0,				// button					  
	  null				// relatedTarget			  
	);

	// Dispatch the simulated event to the target element
	event.target.dispatchEvent(simulatedEvent);
  }

  /**
   * Handle the jQuery UI widget's touchstart events
   * @param {Object} event The widget element's touchstart event
   */
  mouseProto._touchStart = function (event) {

	var self = this;

	// Ignore the event if another widget is already being handled
	if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
	  return;
	}

	// Track element position to avoid "false" move
	posX = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	posY = event.originalEvent.changedTouches[0].screenY.toFixed(0);

	// Set the flag to prevent other widgets from inheriting the touch event
	touchHandled = true;

	// Track movement to determine if interaction was a click
	self._touchMoved = false;

	// Simulate the mouseover event
	simulateMouseEvent(event, 'mouseover');

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');

	// Simulate the mousedown event
	simulateMouseEvent(event, 'mousedown');
  };

  /**
   * Handle the jQuery UI widget's touchmove events
   * @param {Object} event The document's touchmove event
   */
  mouseProto._touchMove = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Ignore if it's a "false" move (position not changed)
	var x = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	var y = event.originalEvent.changedTouches[0].screenY.toFixed(0);
	// Ignore if it's a "false" move (position not changed)
	if (Math.abs(posX - x) <= 4 && Math.abs(posY - y) <= 4) {
		return;
	}

	// Interaction was not a click
	this._touchMoved = true;

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');
  };

  /**
   * Handle the jQuery UI widget's touchend events
   * @param {Object} event The document's touchend event
   */
  mouseProto._touchEnd = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Simulate the mouseup event
	simulateMouseEvent(event, 'mouseup');

	// Simulate the mouseout event
	simulateMouseEvent(event, 'mouseout');

	// If the touch interaction did not move, it should trigger a click
	if (!this._touchMoved) {

	  // Simulate the click event
	  simulateMouseEvent(event, 'click');
	}

	// Unset the flag to allow other widgets to inherit the touch event
	touchHandled = false;
	this._touchMoved = false;
  };

  /**
   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.
   * This method extends the widget with bound touch event handlers that
   * translate touch events to mouse events and pass them to the widget's
   * original mouse event handling methods.
   */
  mouseProto._mouseInit = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.on({
		  touchstart: $.proxy(self, '_touchStart'),
		  touchmove: $.proxy(self, '_touchMove'),
		  touchend: $.proxy(self, '_touchEnd')
		});
	}

	// Call the original $.ui.mouse init method
	_mouseInit.call(self);
  };

  /**
   * Remove the touch event handlers
   */
  mouseProto._mouseDestroy = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.off({
		  touchstart: $.proxy(self, '_touchStart'),
		  touchmove: $.proxy(self, '_touchMove'),
		  touchend: $.proxy(self, '_touchEnd')
		});
	}

	// Call the original $.ui.mouse destroy method
	_mouseDestroy.call(self);
  };

})(jQuery);

$.fn.elfinder = function(o, o2) {
	
	if (o === 'instance') {
		return this.getElFinder();
	} else if (o === 'ondemand') {

	}
	
	return this.each(function() {
		
		var cmd          = typeof o  === 'string'  ? o  : '',
			bootCallback = typeof o2 === 'function'? o2 : void(0),
			elfinder     = this.elfinder,
			opts, reloadCallback;
		
		if (!elfinder) {
			if ($.isPlainObject(o)) {
				new elFinder(this, o, bootCallback);
			}
		} else {
			switch(cmd) {
				case 'close':
				case 'hide':
					elfinder.hide();
					break;
					
				case 'open':
				case 'show':
					elfinder.show();
					break;
					
				case 'destroy':
					elfinder.destroy();
					break;
				
				case 'reload':
				case 'restart':
					if (elfinder) {
						opts = $.extend(true, elfinder.options, $.isPlainObject(o2)? o2 : {});
						bootCallback = elfinder.bootCallback;
						if (elfinder.reloadCallback && typeof elfinder.reloadCallback === 'function') {
							elfinder.reloadCallback(opts, bootCallback);
						} else {
							elfinder.destroy();
							new elFinder(this, opts, bootCallback);
						}
					}
					break;
			}
		}
	});
};

$.fn.getElFinder = function() {
	var instance;
	
	this.each(function() {
		if (this.elfinder) {
			instance = this.elfinder;
			return false;
		}
	});
	
	return instance;
};

$.fn.elfUiWidgetInstance = function(name) {
	try {
		return this[name]('instance');
	} catch(e) {
		// fallback for jQuery UI < 1.11
		var data = this.data('ui-' + name);
		if (data && typeof data === 'object' && data.widgetFullName === 'ui-' + name) {
			return data;
		}
		return null;
	}
};

// function scrollRight
if (! $.fn.scrollRight) {
	$.fn.extend({
		scrollRight: function (val) {
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollWidth - (node.scrollLeft + node.clientWidth));
			}
			return this.scrollLeft(node.scrollWidth - node.clientWidth - val);
		}
	});
}

// function scrollBottom
if (! $.fn.scrollBottom) {
	$.fn.extend({
		scrollBottom: function(val) { 
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollHeight - (node.scrollTop + node.clientHeight));
			}
			return this.scrollTop(node.scrollHeight - node.clientHeight - val);
		}
	});
}


/*
 * File: /js/elFinder.mimetypes.js
 */

elFinder.prototype.mimeTypes = {"application\/x-executable":"exe","application\/x-jar":"jar","application\/x-gzip":"gz","application\/x-bzip2":"tbz","application\/x-rar":"rar","text\/x-php":"php","text\/javascript":"js","application\/rtfd":"rtfd","text\/x-python":"py","text\/x-ruby":"rb","text\/x-shellscript":"sh","text\/x-perl":"pl","text\/xml":"xml","text\/x-csrc":"c","text\/x-chdr":"h","text\/x-c++src":"cpp","text\/x-c++hdr":"hh","text\/x-markdown":"md","text\/x-yaml":"yml","image\/x-ms-bmp":"bmp","image\/x-targa":"tga","image\/xbm":"xbm","image\/pxm":"pxm","audio\/wav":"wav","video\/x-dv":"dv","video\/x-ms-wmv":"wm","video\/ogg":"ogm","video\/MP2T":"m2ts","application\/x-mpegURL":"m3u8","application\/dash+xml":"mpd","application\/andrew-inset":"ez","application\/applixware":"aw","application\/atom+xml":"atom","application\/atomcat+xml":"atomcat","application\/atomsvc+xml":"atomsvc","application\/ccxml+xml":"ccxml","application\/cdmi-capability":"cdmia","application\/cdmi-container":"cdmic","application\/cdmi-domain":"cdmid","application\/cdmi-object":"cdmio","application\/cdmi-queue":"cdmiq","application\/cu-seeme":"cu","application\/davmount+xml":"davmount","application\/docbook+xml":"dbk","application\/dssc+der":"dssc","application\/dssc+xml":"xdssc","application\/ecmascript":"ecma","application\/emma+xml":"emma","application\/epub+zip":"epub","application\/exi":"exi","application\/font-tdpfr":"pfr","application\/gml+xml":"gml","application\/gpx+xml":"gpx","application\/gxf":"gxf","application\/hyperstudio":"stk","application\/inkml+xml":"ink","application\/ipfix":"ipfix","application\/java-serialized-object":"ser","application\/java-vm":"class","application\/json":"json","application\/jsonml+json":"jsonml","application\/lost+xml":"lostxml","application\/mac-binhex40":"hqx","application\/mac-compactpro":"cpt","application\/mads+xml":"mads","application\/marc":"mrc","application\/marcxml+xml":"mrcx","application\/mathematica":"ma","application\/mathml+xml":"mathml","application\/mbox":"mbox","application\/mediaservercontrol+xml":"mscml","application\/metalink+xml":"metalink","application\/metalink4+xml":"meta4","application\/mets+xml":"mets","application\/mods+xml":"mods","application\/mp21":"m21","application\/mp4":"mp4s","application\/msword":"doc","application\/mxf":"mxf","application\/octet-stream":"bin","application\/oda":"oda","application\/oebps-package+xml":"opf","application\/ogg":"ogx","application\/omdoc+xml":"omdoc","application\/onenote":"onetoc","application\/oxps":"oxps","application\/patch-ops-error+xml":"xer","application\/pdf":"pdf","application\/pgp-encrypted":"pgp","application\/pgp-signature":"asc","application\/pics-rules":"prf","application\/pkcs10":"p10","application\/pkcs7-mime":"p7m","application\/pkcs7-signature":"p7s","application\/pkcs8":"p8","application\/pkix-attr-cert":"ac","application\/pkix-cert":"cer","application\/pkix-crl":"crl","application\/pkix-pkipath":"pkipath","application\/pkixcmp":"pki","application\/pls+xml":"pls","application\/postscript":"ai","application\/prs.cww":"cww","application\/pskc+xml":"pskcxml","application\/rdf+xml":"rdf","application\/reginfo+xml":"rif","application\/relax-ng-compact-syntax":"rnc","application\/resource-lists+xml":"rl","application\/resource-lists-diff+xml":"rld","application\/rls-services+xml":"rs","application\/rpki-ghostbusters":"gbr","application\/rpki-manifest":"mft","application\/rpki-roa":"roa","application\/rsd+xml":"rsd","application\/rss+xml":"rss","application\/rtf":"rtf","application\/sbml+xml":"sbml","application\/scvp-cv-request":"scq","application\/scvp-cv-response":"scs","application\/scvp-vp-request":"spq","application\/scvp-vp-response":"spp","application\/sdp":"sdp","application\/set-payment-initiation":"setpay","application\/set-registration-initiation":"setreg","application\/shf+xml":"shf","application\/smil+xml":"smi","application\/sparql-query":"rq","application\/sparql-results+xml":"srx","application\/srgs":"gram","application\/srgs+xml":"grxml","application\/sru+xml":"sru","application\/ssdl+xml":"ssdl","application\/ssml+xml":"ssml","application\/tei+xml":"tei","application\/thraud+xml":"tfi","application\/timestamped-data":"tsd","application\/vnd.3gpp.pic-bw-large":"plb","application\/vnd.3gpp.pic-bw-small":"psb","application\/vnd.3gpp.pic-bw-var":"pvb","application\/vnd.3gpp2.tcap":"tcap","application\/vnd.3m.post-it-notes":"pwn","application\/vnd.accpac.simply.aso":"aso","application\/vnd.accpac.simply.imp":"imp","application\/vnd.acucobol":"acu","application\/vnd.acucorp":"atc","application\/vnd.adobe.air-application-installer-package+zip":"air","application\/vnd.adobe.formscentral.fcdt":"fcdt","application\/vnd.adobe.fxp":"fxp","application\/vnd.adobe.xdp+xml":"xdp","application\/vnd.adobe.xfdf":"xfdf","application\/vnd.ahead.space":"ahead","application\/vnd.airzip.filesecure.azf":"azf","application\/vnd.airzip.filesecure.azs":"azs","application\/vnd.amazon.ebook":"azw","application\/vnd.americandynamics.acc":"acc","application\/vnd.amiga.ami":"ami","application\/vnd.android.package-archive":"apk","application\/vnd.anser-web-certificate-issue-initiation":"cii","application\/vnd.anser-web-funds-transfer-initiation":"fti","application\/vnd.antix.game-component":"atx","application\/vnd.apple.installer+xml":"mpkg","application\/vnd.aristanetworks.swi":"swi","application\/vnd.astraea-software.iota":"iota","application\/vnd.audiograph":"aep","application\/vnd.blueice.multipass":"mpm","application\/vnd.bmi":"bmi","application\/vnd.businessobjects":"rep","application\/vnd.chemdraw+xml":"cdxml","application\/vnd.chipnuts.karaoke-mmd":"mmd","application\/vnd.cinderella":"cdy","application\/vnd.claymore":"cla","application\/vnd.cloanto.rp9":"rp9","application\/vnd.clonk.c4group":"c4g","application\/vnd.cluetrust.cartomobile-config":"c11amc","application\/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application\/vnd.commonspace":"csp","application\/vnd.contact.cmsg":"cdbcmsg","application\/vnd.cosmocaller":"cmc","application\/vnd.crick.clicker":"clkx","application\/vnd.crick.clicker.keyboard":"clkk","application\/vnd.crick.clicker.palette":"clkp","application\/vnd.crick.clicker.template":"clkt","application\/vnd.crick.clicker.wordbank":"clkw","application\/vnd.criticaltools.wbs+xml":"wbs","application\/vnd.ctc-posml":"pml","application\/vnd.cups-ppd":"ppd","application\/vnd.curl.car":"car","application\/vnd.curl.pcurl":"pcurl","application\/vnd.dart":"dart","application\/vnd.data-vision.rdz":"rdz","application\/vnd.dece.data":"uvf","application\/vnd.dece.ttml+xml":"uvt","application\/vnd.dece.unspecified":"uvx","application\/vnd.dece.zip":"uvz","application\/vnd.denovo.fcselayout-link":"fe_launch","application\/vnd.dna":"dna","application\/vnd.dolby.mlp":"mlp","application\/vnd.dpgraph":"dpg","application\/vnd.dreamfactory":"dfac","application\/vnd.ds-keypoint":"kpxx","application\/vnd.dvb.ait":"ait","application\/vnd.dvb.service":"svc","application\/vnd.dynageo":"geo","application\/vnd.ecowin.chart":"mag","application\/vnd.enliven":"nml","application\/vnd.epson.esf":"esf","application\/vnd.epson.msf":"msf","application\/vnd.epson.quickanime":"qam","application\/vnd.epson.salt":"slt","application\/vnd.epson.ssf":"ssf","application\/vnd.eszigno3+xml":"es3","application\/vnd.ezpix-album":"ez2","application\/vnd.ezpix-package":"ez3","application\/vnd.fdf":"fdf","application\/vnd.fdsn.mseed":"mseed","application\/vnd.fdsn.seed":"seed","application\/vnd.flographit":"gph","application\/vnd.fluxtime.clip":"ftc","application\/vnd.framemaker":"fm","application\/vnd.frogans.fnc":"fnc","application\/vnd.frogans.ltf":"ltf","application\/vnd.fsc.weblaunch":"fsc","application\/vnd.fujitsu.oasys":"oas","application\/vnd.fujitsu.oasys2":"oa2","application\/vnd.fujitsu.oasys3":"oa3","application\/vnd.fujitsu.oasysgp":"fg5","application\/vnd.fujitsu.oasysprs":"bh2","application\/vnd.fujixerox.ddd":"ddd","application\/vnd.fujixerox.docuworks":"xdw","application\/vnd.fujixerox.docuworks.binder":"xbd","application\/vnd.fuzzysheet":"fzs","application\/vnd.genomatix.tuxedo":"txd","application\/vnd.geogebra.file":"ggb","application\/vnd.geogebra.tool":"ggt","application\/vnd.geometry-explorer":"gex","application\/vnd.geonext":"gxt","application\/vnd.geoplan":"g2w","application\/vnd.geospace":"g3w","application\/vnd.gmx":"gmx","application\/vnd.google-earth.kml+xml":"kml","application\/vnd.google-earth.kmz":"kmz","application\/vnd.grafeq":"gqf","application\/vnd.groove-account":"gac","application\/vnd.groove-help":"ghf","application\/vnd.groove-identity-message":"gim","application\/vnd.groove-injector":"grv","application\/vnd.groove-tool-message":"gtm","application\/vnd.groove-tool-template":"tpl","application\/vnd.groove-vcard":"vcg","application\/vnd.hal+xml":"hal","application\/vnd.handheld-entertainment+xml":"zmm","application\/vnd.hbci":"hbci","application\/vnd.hhe.lesson-player":"les","application\/vnd.hp-hpgl":"hpgl","application\/vnd.hp-hpid":"hpid","application\/vnd.hp-hps":"hps","application\/vnd.hp-jlyt":"jlt","application\/vnd.hp-pcl":"pcl","application\/vnd.hp-pclxl":"pclxl","application\/vnd.hydrostatix.sof-data":"sfd-hdstx","application\/vnd.ibm.minipay":"mpy","application\/vnd.ibm.modcap":"afp","application\/vnd.ibm.rights-management":"irm","application\/vnd.ibm.secure-container":"sc","application\/vnd.iccprofile":"icc","application\/vnd.igloader":"igl","application\/vnd.immervision-ivp":"ivp","application\/vnd.immervision-ivu":"ivu","application\/vnd.insors.igm":"igm","application\/vnd.intercon.formnet":"xpw","application\/vnd.intergeo":"i2g","application\/vnd.intu.qbo":"qbo","application\/vnd.intu.qfx":"qfx","application\/vnd.ipunplugged.rcprofile":"rcprofile","application\/vnd.irepository.package+xml":"irp","application\/vnd.is-xpr":"xpr","application\/vnd.isac.fcs":"fcs","application\/vnd.jam":"jam","application\/vnd.jcp.javame.midlet-rms":"rms","application\/vnd.jisp":"jisp","application\/vnd.joost.joda-archive":"joda","application\/vnd.kahootz":"ktz","application\/vnd.kde.karbon":"karbon","application\/vnd.kde.kchart":"chrt","application\/vnd.kde.kformula":"kfo","application\/vnd.kde.kivio":"flw","application\/vnd.kde.kontour":"kon","application\/vnd.kde.kpresenter":"kpr","application\/vnd.kde.kspread":"ksp","application\/vnd.kde.kword":"kwd","application\/vnd.kenameaapp":"htke","application\/vnd.kidspiration":"kia","application\/vnd.kinar":"kne","application\/vnd.koan":"skp","application\/vnd.kodak-descriptor":"sse","application\/vnd.las.las+xml":"lasxml","application\/vnd.llamagraphics.life-balance.desktop":"lbd","application\/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application\/vnd.lotus-1-2-3":123,"application\/vnd.lotus-approach":"apr","application\/vnd.lotus-freelance":"pre","application\/vnd.lotus-notes":"nsf","application\/vnd.lotus-organizer":"org","application\/vnd.lotus-screencam":"scm","application\/vnd.lotus-wordpro":"lwp","application\/vnd.macports.portpkg":"portpkg","application\/vnd.mcd":"mcd","application\/vnd.medcalcdata":"mc1","application\/vnd.mediastation.cdkey":"cdkey","application\/vnd.mfer":"mwf","application\/vnd.mfmp":"mfm","application\/vnd.micrografx.flo":"flo","application\/vnd.micrografx.igx":"igx","application\/vnd.mif":"mif","application\/vnd.mobius.daf":"daf","application\/vnd.mobius.dis":"dis","application\/vnd.mobius.mbk":"mbk","application\/vnd.mobius.mqy":"mqy","application\/vnd.mobius.msl":"msl","application\/vnd.mobius.plc":"plc","application\/vnd.mobius.txf":"txf","application\/vnd.mophun.application":"mpn","application\/vnd.mophun.certificate":"mpc","application\/vnd.mozilla.xul+xml":"xul","application\/vnd.ms-artgalry":"cil","application\/vnd.ms-cab-compressed":"cab","application\/vnd.ms-excel":"xls","application\/vnd.ms-excel.addin.macroenabled.12":"xlam","application\/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application\/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application\/vnd.ms-excel.template.macroenabled.12":"xltm","application\/vnd.ms-fontobject":"eot","application\/vnd.ms-htmlhelp":"chm","application\/vnd.ms-ims":"ims","application\/vnd.ms-lrm":"lrm","application\/vnd.ms-officetheme":"thmx","application\/vnd.ms-outlook":"msg","application\/vnd.ms-pki.seccat":"cat","application\/vnd.ms-pki.stl":"stl","application\/vnd.ms-powerpoint":"ppt","application\/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application\/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application\/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application\/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application\/vnd.ms-powerpoint.template.macroenabled.12":"potm","application\/vnd.ms-project":"mpp","application\/vnd.ms-word.document.macroenabled.12":"docm","application\/vnd.ms-word.template.macroenabled.12":"dotm","application\/vnd.ms-works":"wps","application\/vnd.ms-wpl":"wpl","application\/vnd.ms-xpsdocument":"xps","application\/vnd.mseq":"mseq","application\/vnd.musician":"mus","application\/vnd.muvee.style":"msty","application\/vnd.mynfc":"taglet","application\/vnd.neurolanguage.nlu":"nlu","application\/vnd.nitf":"ntf","application\/vnd.noblenet-directory":"nnd","application\/vnd.noblenet-sealer":"nns","application\/vnd.noblenet-web":"nnw","application\/vnd.nokia.n-gage.data":"ngdat","application\/vnd.nokia.n-gage.symbian.install":"n-gage","application\/vnd.nokia.radio-preset":"rpst","application\/vnd.nokia.radio-presets":"rpss","application\/vnd.novadigm.edm":"edm","application\/vnd.novadigm.edx":"edx","application\/vnd.novadigm.ext":"ext","application\/vnd.oasis.opendocument.chart":"odc","application\/vnd.oasis.opendocument.chart-template":"otc","application\/vnd.oasis.opendocument.database":"odb","application\/vnd.oasis.opendocument.formula":"odf","application\/vnd.oasis.opendocument.formula-template":"odft","application\/vnd.oasis.opendocument.graphics":"odg","application\/vnd.oasis.opendocument.graphics-template":"otg","application\/vnd.oasis.opendocument.image":"odi","application\/vnd.oasis.opendocument.image-template":"oti","application\/vnd.oasis.opendocument.presentation":"odp","application\/vnd.oasis.opendocument.presentation-template":"otp","application\/vnd.oasis.opendocument.spreadsheet":"ods","application\/vnd.oasis.opendocument.spreadsheet-template":"ots","application\/vnd.oasis.opendocument.text":"odt","application\/vnd.oasis.opendocument.text-master":"odm","application\/vnd.oasis.opendocument.text-template":"ott","application\/vnd.oasis.opendocument.text-web":"oth","application\/vnd.olpc-sugar":"xo","application\/vnd.oma.dd2+xml":"dd2","application\/vnd.openofficeorg.extension":"oxt","application\/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application\/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application\/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application\/vnd.openxmlformats-officedocument.presentationml.template":"potx","application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application\/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application\/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application\/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application\/vnd.osgeo.mapguide.package":"mgp","application\/vnd.osgi.dp":"dp","application\/vnd.osgi.subsystem":"esa","application\/vnd.palm":"pdb","application\/vnd.pawaafile":"paw","application\/vnd.pg.format":"str","application\/vnd.pg.osasli":"ei6","application\/vnd.picsel":"efif","application\/vnd.pmi.widget":"wg","application\/vnd.pocketlearn":"plf","application\/vnd.powerbuilder6":"pbd","application\/vnd.previewsystems.box":"box","application\/vnd.proteus.magazine":"mgz","application\/vnd.publishare-delta-tree":"qps","application\/vnd.pvi.ptid1":"ptid","application\/vnd.quark.quarkxpress":"qxd","application\/vnd.realvnc.bed":"bed","application\/vnd.recordare.musicxml":"mxl","application\/vnd.recordare.musicxml+xml":"musicxml","application\/vnd.rig.cryptonote":"cryptonote","application\/vnd.rim.cod":"cod","application\/vnd.rn-realmedia":"rm","application\/vnd.rn-realmedia-vbr":"rmvb","application\/vnd.route66.link66+xml":"link66","application\/vnd.sailingtracker.track":"st","application\/vnd.seemail":"see","application\/vnd.sema":"sema","application\/vnd.semd":"semd","application\/vnd.semf":"semf","application\/vnd.shana.informed.formdata":"ifm","application\/vnd.shana.informed.formtemplate":"itp","application\/vnd.shana.informed.interchange":"iif","application\/vnd.shana.informed.package":"ipk","application\/vnd.simtech-mindmapper":"twd","application\/vnd.smaf":"mmf","application\/vnd.smart.teacher":"teacher","application\/vnd.solent.sdkm+xml":"sdkm","application\/vnd.spotfire.dxp":"dxp","application\/vnd.spotfire.sfs":"sfs","application\/vnd.stardivision.calc":"sdc","application\/vnd.stardivision.draw":"sda","application\/vnd.stardivision.impress":"sdd","application\/vnd.stardivision.math":"smf","application\/vnd.stardivision.writer":"sdw","application\/vnd.stardivision.writer-global":"sgl","application\/vnd.stepmania.package":"smzip","application\/vnd.stepmania.stepchart":"sm","application\/vnd.sun.xml.calc":"sxc","application\/vnd.sun.xml.calc.template":"stc","application\/vnd.sun.xml.draw":"sxd","application\/vnd.sun.xml.draw.template":"std","application\/vnd.sun.xml.impress":"sxi","application\/vnd.sun.xml.impress.template":"sti","application\/vnd.sun.xml.math":"sxm","application\/vnd.sun.xml.writer":"sxw","application\/vnd.sun.xml.writer.global":"sxg","application\/vnd.sun.xml.writer.template":"stw","application\/vnd.sus-calendar":"sus","application\/vnd.svd":"svd","application\/vnd.symbian.install":"sis","application\/vnd.syncml+xml":"xsm","application\/vnd.syncml.dm+wbxml":"bdm","application\/vnd.syncml.dm+xml":"xdm","application\/vnd.tao.intent-module-archive":"tao","application\/vnd.tcpdump.pcap":"pcap","application\/vnd.tmobile-livetv":"tmo","application\/vnd.trid.tpt":"tpt","application\/vnd.triscape.mxs":"mxs","application\/vnd.trueapp":"tra","application\/vnd.ufdl":"ufd","application\/vnd.uiq.theme":"utz","application\/vnd.umajin":"umj","application\/vnd.unity":"unityweb","application\/vnd.uoml+xml":"uoml","application\/vnd.vcx":"vcx","application\/vnd.visio":"vsd","application\/vnd.visionary":"vis","application\/vnd.vsf":"vsf","application\/vnd.wap.wbxml":"wbxml","application\/vnd.wap.wmlc":"wmlc","application\/vnd.wap.wmlscriptc":"wmlsc","application\/vnd.webturbo":"wtb","application\/vnd.wolfram.player":"nbp","application\/vnd.wordperfect":"wpd","application\/vnd.wqd":"wqd","application\/vnd.wt.stf":"stf","application\/vnd.xara":"xar","application\/vnd.xfdl":"xfdl","application\/vnd.yamaha.hv-dic":"hvd","application\/vnd.yamaha.hv-script":"hvs","application\/vnd.yamaha.hv-voice":"hvp","application\/vnd.yamaha.openscoreformat":"osf","application\/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application\/vnd.yamaha.smaf-audio":"saf","application\/vnd.yamaha.smaf-phrase":"spf","application\/vnd.yellowriver-custom-menu":"cmp","application\/vnd.zul":"zir","application\/vnd.zzazz.deck+xml":"zaz","application\/voicexml+xml":"vxml","application\/widget":"wgt","application\/winhlp":"hlp","application\/wsdl+xml":"wsdl","application\/wspolicy+xml":"wspolicy","application\/x-7z-compressed":"7z","application\/x-abiword":"abw","application\/x-ace-compressed":"ace","application\/x-apple-diskimage":"dmg","application\/x-authorware-bin":"aab","application\/x-authorware-map":"aam","application\/x-authorware-seg":"aas","application\/x-bcpio":"bcpio","application\/x-bittorrent":"torrent","application\/x-blorb":"blb","application\/x-bzip":"bz","application\/x-cbr":"cbr","application\/x-cdlink":"vcd","application\/x-cfs-compressed":"cfs","application\/x-chat":"chat","application\/x-chess-pgn":"pgn","application\/x-conference":"nsc","application\/x-cpio":"cpio","application\/x-csh":"csh","application\/x-debian-package":"deb","application\/x-dgc-compressed":"dgc","application\/x-director":"dir","application\/x-doom":"wad","application\/x-dtbncx+xml":"ncx","application\/x-dtbook+xml":"dtb","application\/x-dtbresource+xml":"res","application\/x-dvi":"dvi","application\/x-envoy":"evy","application\/x-eva":"eva","application\/x-font-bdf":"bdf","application\/x-font-ghostscript":"gsf","application\/x-font-linux-psf":"psf","application\/x-font-pcf":"pcf","application\/x-font-snf":"snf","application\/x-font-type1":"pfa","application\/x-freearc":"arc","application\/x-futuresplash":"spl","application\/x-gca-compressed":"gca","application\/x-glulx":"ulx","application\/x-gnumeric":"gnumeric","application\/x-gramps-xml":"gramps","application\/x-gtar":"gtar","application\/x-hdf":"hdf","application\/x-install-instructions":"install","application\/x-iso9660-image":"iso","application\/x-java-jnlp-file":"jnlp","application\/x-latex":"latex","application\/x-lzh-compressed":"lzh","application\/x-mie":"mie","application\/x-mobipocket-ebook":"prc","application\/x-ms-application":"application","application\/x-ms-shortcut":"lnk","application\/x-ms-wmd":"wmd","application\/x-ms-wmz":"wmz","application\/x-ms-xbap":"xbap","application\/x-msaccess":"mdb","application\/x-msbinder":"obd","application\/x-mscardfile":"crd","application\/x-msclip":"clp","application\/x-msdownload":"dll","application\/x-msmediaview":"mvb","application\/x-msmetafile":"wmf","application\/x-msmoney":"mny","application\/x-mspublisher":"pub","application\/x-msschedule":"scd","application\/x-msterminal":"trm","application\/x-mswrite":"wri","application\/x-netcdf":"nc","application\/x-nzb":"nzb","application\/x-pkcs12":"p12","application\/x-pkcs7-certificates":"p7b","application\/x-pkcs7-certreqresp":"p7r","application\/x-research-info-systems":"ris","application\/x-shar":"shar","application\/x-shockwave-flash":"swf","application\/x-silverlight-app":"xap","application\/x-sql":"sql","application\/x-stuffit":"sit","application\/x-stuffitx":"sitx","application\/x-subrip":"srt","application\/x-sv4cpio":"sv4cpio","application\/x-sv4crc":"sv4crc","application\/x-t3vm-image":"t3","application\/x-tads":"gam","application\/x-tar":"tar","application\/x-tcl":"tcl","application\/x-tex":"tex","application\/x-tex-tfm":"tfm","application\/x-texinfo":"texinfo","application\/x-tgif":"obj","application\/x-ustar":"ustar","application\/x-wais-source":"src","application\/x-x509-ca-cert":"der","application\/x-xfig":"fig","application\/x-xliff+xml":"xlf","application\/x-xpinstall":"xpi","application\/x-xz":"xz","application\/x-zmachine":"z1","application\/xaml+xml":"xaml","application\/xcap-diff+xml":"xdf","application\/xenc+xml":"xenc","application\/xhtml+xml":"xhtml","application\/xml":"xsl","application\/xml-dtd":"dtd","application\/xop+xml":"xop","application\/xproc+xml":"xpl","application\/xslt+xml":"xslt","application\/xspf+xml":"xspf","application\/xv+xml":"mxml","application\/yang":"yang","application\/yin+xml":"yin","application\/zip":"zip","audio\/adpcm":"adp","audio\/basic":"au","audio\/midi":"mid","audio\/mp4":"m4a","audio\/mpeg":"mpga","audio\/ogg":"oga","audio\/s3m":"s3m","audio\/silk":"sil","audio\/vnd.dece.audio":"uva","audio\/vnd.digital-winds":"eol","audio\/vnd.dra":"dra","audio\/vnd.dts":"dts","audio\/vnd.dts.hd":"dtshd","audio\/vnd.lucent.voice":"lvp","audio\/vnd.ms-playready.media.pya":"pya","audio\/vnd.nuera.ecelp4800":"ecelp4800","audio\/vnd.nuera.ecelp7470":"ecelp7470","audio\/vnd.nuera.ecelp9600":"ecelp9600","audio\/vnd.rip":"rip","audio\/webm":"weba","audio\/x-aac":"aac","audio\/x-aiff":"aif","audio\/x-caf":"caf","audio\/x-flac":"flac","audio\/x-matroska":"mka","audio\/x-mpegurl":"m3u","audio\/x-ms-wax":"wax","audio\/x-ms-wma":"wma","audio\/x-pn-realaudio":"ram","audio\/x-pn-realaudio-plugin":"rmp","audio\/xm":"xm","chemical\/x-cdx":"cdx","chemical\/x-cif":"cif","chemical\/x-cmdf":"cmdf","chemical\/x-cml":"cml","chemical\/x-csml":"csml","chemical\/x-xyz":"xyz","font\/collection":"ttc","font\/otf":"otf","font\/ttf":"ttf","font\/woff":"woff","font\/woff2":"woff2","image\/cgm":"cgm","image\/g3fax":"g3","image\/gif":"gif","image\/ief":"ief","image\/jpeg":"jpeg","image\/ktx":"ktx","image\/png":"png","image\/prs.btif":"btif","image\/sgi":"sgi","image\/svg+xml":"svg","image\/tiff":"tiff","image\/vnd.adobe.photoshop":"psd","image\/vnd.dece.graphic":"uvi","image\/vnd.djvu":"djvu","image\/vnd.dvb.subtitle":"sub","image\/vnd.dwg":"dwg","image\/vnd.dxf":"dxf","image\/vnd.fastbidsheet":"fbs","image\/vnd.fpx":"fpx","image\/vnd.fst":"fst","image\/vnd.fujixerox.edmics-mmr":"mmr","image\/vnd.fujixerox.edmics-rlc":"rlc","image\/vnd.ms-modi":"mdi","image\/vnd.ms-photo":"wdp","image\/vnd.net-fpx":"npx","image\/vnd.wap.wbmp":"wbmp","image\/vnd.xiff":"xif","image\/webp":"webp","image\/x-3ds":"3ds","image\/x-cmu-raster":"ras","image\/x-cmx":"cmx","image\/x-freehand":"fh","image\/x-icon":"ico","image\/x-mrsid-image":"sid","image\/x-pcx":"pcx","image\/x-pict":"pic","image\/x-portable-anymap":"pnm","image\/x-portable-bitmap":"pbm","image\/x-portable-graymap":"pgm","image\/x-portable-pixmap":"ppm","image\/x-rgb":"rgb","image\/x-xpixmap":"xpm","image\/x-xwindowdump":"xwd","message\/rfc822":"eml","model\/iges":"igs","model\/mesh":"msh","model\/vnd.collada+xml":"dae","model\/vnd.dwf":"dwf","model\/vnd.gdl":"gdl","model\/vnd.gtw":"gtw","model\/vnd.vtu":"vtu","model\/vrml":"wrl","model\/x3d+binary":"x3db","model\/x3d+vrml":"x3dv","model\/x3d+xml":"x3d","text\/cache-manifest":"appcache","text\/calendar":"ics","text\/css":"css","text\/csv":"csv","text\/html":"html","text\/n3":"n3","text\/plain":"txt","text\/prs.lines.tag":"dsc","text\/richtext":"rtx","text\/sgml":"sgml","text\/tab-separated-values":"tsv","text\/troff":"t","text\/turtle":"ttl","text\/uri-list":"uri","text\/vcard":"vcard","text\/vnd.curl":"curl","text\/vnd.curl.dcurl":"dcurl","text\/vnd.curl.mcurl":"mcurl","text\/vnd.curl.scurl":"scurl","text\/vnd.fly":"fly","text\/vnd.fmi.flexstor":"flx","text\/vnd.graphviz":"gv","text\/vnd.in3d.3dml":"3dml","text\/vnd.in3d.spot":"spot","text\/vnd.sun.j2me.app-descriptor":"jad","text\/vnd.wap.wml":"wml","text\/vnd.wap.wmlscript":"wmls","text\/x-asm":"s","text\/x-c":"cc","text\/x-fortran":"f","text\/x-java-source":"java","text\/x-nfo":"nfo","text\/x-opml":"opml","text\/x-pascal":"p","text\/x-setext":"etx","text\/x-sfv":"sfv","text\/x-uuencode":"uu","text\/x-vcalendar":"vcs","text\/x-vcard":"vcf","video\/3gpp":"3gp","video\/3gpp2":"3g2","video\/h261":"h261","video\/h263":"h263","video\/h264":"h264","video\/jpeg":"jpgv","video\/jpm":"jpm","video\/mj2":"mj2","video\/mp4":"mp4","video\/mpeg":"mpeg","video\/quicktime":"qt","video\/vnd.dece.hd":"uvh","video\/vnd.dece.mobile":"uvm","video\/vnd.dece.pd":"uvp","video\/vnd.dece.sd":"uvs","video\/vnd.dece.video":"uvv","video\/vnd.dvb.file":"dvb","video\/vnd.fvt":"fvt","video\/vnd.mpegurl":"mxu","video\/vnd.ms-playready.media.pyv":"pyv","video\/vnd.uvvu.mp4":"uvu","video\/vnd.vivo":"viv","video\/webm":"webm","video\/x-f4v":"f4v","video\/x-fli":"fli","video\/x-flv":"flv","video\/x-m4v":"m4v","video\/x-matroska":"mkv","video\/x-mng":"mng","video\/x-ms-asf":"asf","video\/x-ms-vob":"vob","video\/x-ms-wmx":"wmx","video\/x-ms-wvx":"wvx","video\/x-msvideo":"avi","video\/x-sgi-movie":"movie","video\/x-smv":"smv","x-conference\/x-cooltalk":"ice","text\/x-sql":"sql","image\/x-pixlr-data":"pxd","image\/x-adobe-dng":"dng","image\/x-sketch":"sketch","image\/x-xcf":"xcf","audio\/amr":"amr","image\/vnd-ms.dds":"dds","application\/plt":"plt","application\/sat":"sat","application\/step":"step","text\/x-httpd-cgi":"cgi","text\/x-asap":"asp","text\/x-jsp":"jsp"};

/*
 * File: /js/elFinder.options.js
 */

/**
 * Default elFinder config
 *
 * @type  Object
 * @autor Dmitry (dio) Levashov
 */
elFinder.prototype._options = {
	/**
	 * URLs of 3rd party libraries CDN
	 * 
	 * @type Object
	 */
	cdns : {
		// for editor etc.
		ace        : 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.2',
		codemirror : 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7',
		ckeditor   : 'https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.22.1', // last version of Open Source Project
		ckeditor5  : 'https://cdn.ckeditor.com/ckeditor5/40.2.0',
		tinymce    : 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.2',
		simplemde  : 'https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2',
		fabric     : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1',
		fabric16   : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7',
		tui        : 'https://uicdn.toast.com',
		// for quicklook etc.
		hls        : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.14/hls.min.js',
		dash       : 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/4.7.3/dash.all.min.js',
		flv        : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.6.2/flv.min.js',
		videojs    : 'https://cdnjs.cloudflare.com/ajax/libs/video.js/8.8.0',
		prettify   : 'https://cdn.jsdelivr.net/gh/google/code-prettify@e006587b4a893f0281e9dc9a53001c7ed584d4e7/loader/run_prettify.js',
		psd        : 'https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.4.0/psd.min.js',
		rar        : 'https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js',
		zlibUnzip  : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js', // need check unzipFiles() in quicklook.plugins.js when update
		zlibGunzip : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js',
		bzip2      : 'https://cdn.jsdelivr.net/gh/nao-pon/bzip2.js@0.8.0/bzip2.js',
		marked     : 'https://cdnjs.cloudflare.com/ajax/libs/marked/11.1.0/marked.min.js',
		sparkmd5   : 'https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.2/spark-md5.min.js',
		jssha      : 'https://cdnjs.cloudflare.com/ajax/libs/jsSHA/3.3.1/sha.min.js',
		amr        : 'https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js',
		tiff       : 'https://cdn.jsdelivr.net/gh/seikichi/tiff.js@545ede3ee46b5a5bc5f06d65954e775aa2a64017/tiff.min.js'
	},
	
	/**
	 * Connector url. Required!
	 *
	 * @type String
	 */
	url : '',

	/**
	 * Ajax request type.
	 *
	 * @type String
	 * @default "get"
	 */
	requestType : 'get',
	
	/**
	 * Use CORS to connector url
	 * 
	 * @type Boolean|null  true|false|null(Auto detect)
	 */
	cors : null,

	/**
	 * Array of header names to return parrot out in HTTP headers received from the server
	 * 
	 * @type Array
	 */
	parrotHeaders : [],

	/**
	 * Maximum number of concurrent connections on request
	 * 
	 * @type Number
	 * @default 3
	 */
	requestMaxConn : 3,

	/**
	 * Transport to send request to backend.
	 * Required for future extensions using websockets/webdav etc.
	 * Must be an object with "send" method.
	 * transport.send must return $.Deferred() object
	 *
	 * @type Object
	 * @default null
	 * @example
	 *  transport : {
	 *    init : function(elfinderInstance) { },
	 *    send : function(options) {
	 *      var dfrd = $.Deferred();
	 *      // connect to backend ...
	 *      return dfrd;
	 *    },
	 *    upload : function(data) {
	 *      var dfrd = $.Deferred();
	 *      // upload ...
	 *      return dfrd;
	 *    }
	 *    
	 *  }
	 **/
	transport : {},

	/**
	 * URL to upload file to.
	 * If not set - connector URL will be used
	 *
	 * @type String
	 * @default  ''
	 */
	urlUpload : '',

	/**
	 * Allow to drag and drop to upload files
	 *
	 * @type Boolean|String
	 * @default  'auto'
	 */
	dragUploadAllow : 'auto',
	
	/**
	 * Confirmation dialog displayed at the time of overwriting upload
	 * 
	 * @type Boolean
	 * @default true
	 */
	overwriteUploadConfirm : true,
	
	/**
	 * Max size of chunked data of file upload
	 * 
	 * @type Number
	 * @default  10485760(10MB)
	 */
	uploadMaxChunkSize : 10485760,
	
	/**
	 * Regular expression of file name to exclude when uploading folder
	 * 
	 * @type Object
	 * @default { win: /^(?:desktop\.ini|thumbs\.db)$/i, mac: /^\.ds_store$/i }
	 */
	folderUploadExclude : {
		win: /^(?:desktop\.ini|thumbs\.db)$/i,
		mac: /^\.ds_store$/i
	},
	
	/**
	 * Timeout for upload using iframe
	 *
	 * @type Number
	 * @default  0 - no timeout
	 */
	iframeTimeout : 0,
	
	/**
	 * Data to append to all requests and to upload files
	 *
	 * @type Object
	 * @default  {}
	 */
	customData : {},
	
	/**
	 * Event listeners to bind on elFinder init
	 *
	 * @type Object
	 * @default  {}
	 */
	handlers : {},

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	customHeaders : {},

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	xhrFields : {},

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 */
	lang : 'en',

	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * Auto detect when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	baseUrl : '',

	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	i18nBaseUrl : '',

	/**
	 * Base URL of worker js files
	 * baseUrl + "js/worker/" when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	 workerBaseUrl : '',
	
	/**
	 * Auto load required CSS
	 * `false` to disable this function or
	 * CSS URL Array to load additional CSS files
	 * 
	 * @type Boolean|Array
	 * @default true
	 */
	cssAutoLoad : true,

	/**
	 * Theme to load
	 * {"themeid" : "Theme CSS URL"} or
	 * {"themeid" : "Theme manifesto.json URL"} or
	 * Theme manifesto.json Object
	 * {
	 *   "themeid" : {
	 *     "name":"Theme Name",
	 *     "cssurls":"Theme CSS URL",
	 *     "author":"Author Name",
	 *     "email":"Author Email",
	 *     "license":"License",
	 *     "link":"Web Site URL",
	 *     "image":"Screen Shot URL",
	 *     "description":"Description"
	 *   }
	 * }
	 * 
	 * @type Object
	 */
	themes : {},

	/**
	 * Theme id to initial theme
	 * 
	 * @type String|Null
	 */
	theme : null,

	/**
	 * Maximum value of error dialog open at the same time
	 * 
	 * @type Number
	 */
	maxErrorDialogs : 5,

	/**
	 * Additional css class for filemanager node.
	 *
	 * @type String
	 */
	cssClass : '',

	/**
	 * Active commands list. '*' means all of the commands that have been load.
	 * If some required commands will be missed here, elFinder will add its
	 *
	 * @type Array
	 */
	commands : ['*'],
	// Available commands list
	//commands : [
	//	'archive', 'back', 'chmod', 'colwidth', 'copy', 'cut', 'download', 'duplicate', 'edit', 'extract',
	//	'forward', 'fullscreen', 'getfile', 'help', 'home', 'info', 'mkdir', 'mkfile', 'netmount', 'netunmount',
	//	'open', 'opendir', 'paste', 'places', 'quicklook', 'reload', 'rename', 'resize', 'restore', 'rm',
	//	'search', 'sort', 'up', 'upload', 'view', 'zipdl'
	//],
	
	/**
	 * Commands options.
	 *
	 * @type Object
	 **/
	commandsOptions : {
		// // configure shortcuts of any command
		// // add `shortcuts` property into each command
		// any_command_name : {
		// 	shortcuts : [] // for disable this command's shortcuts
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for add `CTRL + E` for this command action
		// 		shortcuts[0]['pattern'] += ' ctrl+e';
		// 		return shortcuts;
		// 	}
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for full customize of this command's shortcuts
		// 		return [ { pattern: 'ctrl+e ctrl+down numpad_enter' + (fm.OS != 'mac' && ' enter') } ];
		// 	}
		// },
		// "getfile" command options.
		getfile : {
			onlyURL  : false,
			// allow to return multiple files info
			multiple : false,
			// allow to return filers info
			folders  : false,
			// action after callback (""/"close"/"destroy")
			oncomplete : '',
			// action when callback is fail (""/"close"/"destroy")
			onerror : '',
			// get path before callback call
			getPath    : true, 
			// get image sizes before callback call
			getImgSize : false
		},
		open : {
			// HTTP method that request to the connector when item URL is not valid URL.
			// If you set to "get" will be displayed request parameter in the browser's location field
			// so if you want to conceal its parameters should be given "post".
			// Nevertheless, please specify "get" if you want to enable the partial request by HTTP Range header.
			method : 'post',
			// Where to open into : 'window'(default), 'tab' or 'tabs'
			// 'tabs' opens in each tabs
			into   : 'window',
			// Default command list of action when select file
			// String value that is 'Command Name' or 'Command Name1/CommandName2...'
			selectAction : 'open'
		},
		opennew : {
			// URL of to open elFinder manager
			// Default '' : Origin URL
			url : '',
			// Use search query of origin URL
			useOriginQuery : true
		},
		// "upload" command options.
		upload : {
			// Open elFinder upload dialog: 'button' OR Open system OS upload dialog: 'uploadbutton'
			ui : 'button'
		},
		// "download" command options.
		download : {
			// max request to download files when zipdl disabled
			maxRequests : 10,
			// minimum count of files to use zipdl
			minFilesZipdl : 2
		},
		// "quicklook" command options.
		quicklook : {
			autoplay : true,
			width    : 450,
			height   : 300,
			// ControlsList of HTML5 audio/video preview
			// see https://googlechrome.github.io/samples/media/controlslist.html
			mediaControlsList : '', // e.g. 'nodownload nofullscreen noremoteplayback'
			// Show toolbar of PDF preview (with <embed> tag)
			pdfToolbar : true,
			// Maximum lines to preview at initial
			textInitialLines : 100,
			// Maximum lines to preview by prettify
			prettifyMaxLines : 300,
			// quicklook window must be contained in elFinder node on window open (true|false)
			contain : false,
			// preview window into NavDock (0 : undocked | 1 : docked(show) | 2 : docked(hide))
			docked   : 0,
			// Docked preview height ('auto' or Number of pixel) 'auto' is setted to the Navbar width
			dockHeight : 'auto',
			// media auto play when docked
			dockAutoplay : false,
			// Google Maps API key (Require Maps JavaScript API)
			googleMapsApiKey : '',
			// Google Maps API Options
			googleMapsOpts : {
				maps : {},
				kml : {
					suppressInfoWindows : false,
					preserveViewport : false
				}
			},
			// ViewerJS (https://viewerjs.org/) Options
			// To enable this you need to place ViewerJS on the same server as elFinder and specify that URL in `url`.
			viewerjs : {
				url: '', // Example '/ViewerJS/index.html'
				mimes: ['application/pdf', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation'],
				pdfNative: true // Use Native PDF Viewer first
			},
			// MIME types to CAD-Files and 3D-Models online viewer on sharecad.org
			// Example ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile']
			sharecadMimes : [],
			// MIME types to use Google Docs online viewer
			// Example ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf']
			googleDocsMimes : [],
			// MIME types to use Microsoft Office Online viewer
			// Example ['application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
			// These MIME types override "googleDocsMimes"
			officeOnlineMimes : [],
			// File size threshold when using the dim command for obtain the image size necessary to image preview
			getDimThreshold : '200K',
			// Max filesize to show filenames of the zip/tar/gzip/bzip file 
			unzipMaxSize : '50M',
			// MIME-Type regular expression that does not check empty files
			mimeRegexNotEmptyCheck : /^application\/vnd\.google-apps\./
		},
		// "edit" command options.
		edit : {
			// dialog width, integer(px) or integer+'%' (example: 650, '80%' ...)
			dialogWidth : void(0),
			// dialog height, integer(px) or integer+'%' (example: 650, '80%' ...)
			dialogHeight : void(0),
			// list of allowed mimetypes to edit of text files
			// if empty - any text files can be edited
			mimes : [],
			// MIME-types to unselected as default of "File types to enable with "New file"" in preferences
			mkfileHideMimes : [],
			// MIME-types of text file to make empty file
			makeTextMimes : ['text/plain', 'text/css', 'text/html'],
			// Use the editor stored in the browser
			// This value allowd overwrite with user preferences
			useStoredEditor : false,
			// Open the maximized editor window
			// This value allowd overwrite with user preferences
			editorMaximized : false,
			// edit files in wysisyg's
			editors : [
				// {
				// 	/**
				// 	 * editor info
				// 	 * @type  Object
				// 	 */
				// 	info : { name: 'Editor Name' },
				// 	/**
				// 	 * files mimetypes allowed to edit in current wysisyg
				// 	 * @type  Array
				// 	 */
				// 	mimes : ['text/html'], 
				// 	/**
				// 	 * HTML element for editing area (optional for text editor)
				// 	 * @type  String
				// 	 */
				// 	html : '<textarea></textarea>', 
				// 	/**
				// 	 * Initialize editing area node (optional for text editor)
				// 	 * 
				// 	 * @param  String  dialog DOM id
				// 	 * @param  Object  target file object
				// 	 * @param  String  target file content (text or Data URI Scheme(binary file))
				// 	 * @param  Object  elFinder instance
				// 	 * @type  Function
				// 	 */
				// 	init : function(id, file, content, fm) {
				// 		$(this).attr('id', id + '-text').val(content);
				// 	},
				// 	/**
				// 	 * Get edited contents (optional for text editor)
				// 	 * @type  Function
				// 	 */
				// 	getContent : function() {
				// 		return $(this).val();
				// 	},
				// 	/**
				// 	 * Called when "edit" dialog loaded.
				// 	 * Place to init wysisyg.
				// 	 * Can return wysisyg instance
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @return Object      editor instance|jQuery.Deferred(return instance on resolve())
				// 	 */
				// 	load : function(textarea) { },
				// 	/**
				// 	 * Called before "edit" dialog closed.
				// 	 * Place to destroy wysisyg instance.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	close : function(textarea, instance) { },
				// 	/**
				// 	 * Called before file content send to backend.
				// 	 * Place to update textarea content if needed.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	save : function(textarea, instance) {},
				// 	/**
				// 	 * Called after load() or save().
				// 	 * Set focus to wysisyg editor.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	focus : function(textarea, instance) {}
				// 	/**
				// 	 * Called after dialog resized..
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @param  Object      resize event object
				// 	 * @param  Object      data object
				// 	 * @return void
				// 	 */
				// 	resize : function(textarea, instance, event, data) {}
				// 
				// }
			],
			// Character encodings of select box
			encodings : ['Big5', 'Big5-HKSCS', 'Cp437', 'Cp737', 'Cp775', 'Cp850', 'Cp852', 'Cp855', 'Cp857', 'Cp858', 
				'Cp862', 'Cp866', 'Cp874', 'EUC-CN', 'EUC-JP', 'EUC-KR', 'GB18030', 'ISO-2022-CN', 'ISO-2022-JP', 'ISO-2022-KR', 
				'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 
				'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-13', 'ISO-8859-15', 'KOI8-R', 'KOI8-U', 'Shift-JIS', 
				'Windows-1250', 'Windows-1251', 'Windows-1252', 'Windows-1253', 'Windows-1254', 'Windows-1257'],
			// options for extra editors
			extraOptions : {
				// upload command options
				uploadOpts : {},
				// TUI Image Editor's options
				tuiImgEditOpts : {
					// Path prefix of icon-a.svg, icon-b.svg, icon-c.svg and icon-d.svg in the Theme. 
					// `iconsPath` MUST follow the same origin policy.
					iconsPath : void(0), // default is "./img/tui-"
					// Theme object
					theme : {}
				},
				// Pixo image editor constructor options - https://pixoeditor.com/
				// Require 'apikey' to enable it
				pixo: {
					apikey: ''
				},
				// Browsing manager URL for CKEditor, TinyMCE
				// Uses self location with the empty value or not defined.
				//managerUrl : 'elfinder.html'
				managerUrl : null,
				// CKEditor editor options
				ckeditor: {},
				// CKEditor 5 editor options
				ckeditor5: {
					// builds mode - 'classic', 'inline', 'balloon', 'balloon-block' or 'decoupled-document'
					mode: 'decoupled-document'
				},
				// TinyMCE editor options
				tinymce : {},
				// Setting for Online-Convert.com
				onlineConvert : {
					maxSize  : 100, // (MB) Max 100MB on free account
					showLink : true // It must be enabled with free account
				}
			}
		},
		fullscreen : {
			// fullscreen mode 'screen'(When the browser supports it) or 'window'
			mode: 'screen' // 'screen' or 'window'
		},
		search : {
			// Incremental search from the current view
			incsearch : {
				enable : true, // is enable true or false
				minlen : 1,    // minimum number of characters
				wait   : 500   // wait milliseconds
			},
			// Additional search types
			searchTypes : {
				// "SearchMime" is implemented in default
				SearchMime : {           // The key is search type that send to the connector
					name : 'btnMime',    // Button text to be processed in i18n()
					title : 'searchMime',// Button title to be processed in i18n()
					incsearch : 'mime'   // Incremental search target filed name of the file object
					// Or Callable function
					/* incsearch function example
					function(queryObject, cwdHashes, elFinderInstance) {
						var q = queryObject.val;
						var regex = queryObject.regex;
						var matchedHashes = $.grep(cwdHashes, function(hash) {
							var file = elFinderInstance.file(hash);
							return (file && file.mime && file.mime.match(regex))? true : false;
						});
						return matchedHashes;
					}
					*/
				}
			}
		},
		// "info" command options.
		info : {
			// If the URL of the Directory is null,
			// it is assumed that the link destination is a URL to open the folder in elFinder
			nullUrlDirLinkSelf : true,
			// Information items to be hidden by default
			// These name are 'size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm' and your custom info items label
			hideItems : [],
			// Maximum file size (byte) to get file contents hash (md5, sha256 ...)
			showHashMaxsize : 104857600, // 100 MB
			// Array of hash algorisms to show on info dialog
			// These name are 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128' and 'shake256'
			showHashAlgorisms : ['md5', 'sha256'],
			// Options for fm.getContentsHashes()
			showHashOpts : {
				shake128len : 256,
				shake256len : 512
			},
			custom : {
				// /**
				//  * Example of custom info `desc`
				//  */
				// desc : {
				// 	/**
				// 	 * Lable (require)
				// 	 * It is filtered by the `fm.i18n()`
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	label : 'Description',
				// 	
				// 	/**
				// 	 * Template (require)
				// 	 * `{id}` is replaced in dialog.id
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	tpl : '<div class="elfinder-info-desc"><span class="elfinder-spinner"></span></div>',
				// 	
				// 	/**
				// 	 * Restricts to mimetypes (optional)
				// 	 * Exact match or category match
				// 	 * 
				// 	 * @type Array
				// 	 */
				// 	mimes : ['text', 'image/jpeg', 'directory'],
				// 	
				// 	/**
				// 	 * Restricts to file.hash (optional)
				// 	 * 
				// 	 * @ type Regex
				// 	 */
				// 	hashRegex : /^l\d+_/,
				// 
				// 	/**
				// 	 * Request that asks for the description and sets the field (optional)
				// 	 * 
				// 	 * @type Function
				// 	 */
				// 	action : function(file, fm, dialog) {
				// 		fm.request({
				// 		data : { cmd : 'desc', target: file.hash },
				// 			preventDefault: true,
				// 		})
				// 		.fail(function() {
				// 			dialog.find('div.elfinder-info-desc').html(fm.i18n('unknown'));
				// 		})
				// 		.done(function(data) {
				// 			dialog.find('div.elfinder-info-desc').html(data.desc);
				// 		});
				// 	}
				// }
			}
		},
		mkdir: {
			// Enable automatic switching function ["New Folder" / "Into New Folder"] of toolbar buttton
			intoNewFolderToolbtn: false
		},
		resize: {
			// defalt status of snap to 8px grid of the jpeg image ("enable" or "disable")
			grid8px : 'disable',
			// Preset size array [width, height]
			presetSize : [[320, 240], [400, 400], [640, 480], [800,600]],
			// File size (bytes) threshold when using the `dim` command for obtain the image size necessary to start editing
			getDimThreshold : 204800,
			// File size (bytes) to request to get substitute image (400px) with the `dim` command
			dimSubImgSize : 307200
		},
		rm: {
			// If trash is valid, items moves immediately to the trash holder without confirm.
			quickTrash : true,
			// Maximum wait seconds when checking the number of items to into the trash
			infoCheckWait : 10,
			// Maximum number of items that can be placed into the Trash at one time
			toTrashMaxItems : 1000
		},
		paste : {
			moveConfirm : false // Display confirmation dialog when moving items
		},
		help : {
			// Tabs to show
			view : ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			// HTML source URL of the heip tab
			helpSource : ''
		},
		preference : {
			// dialog width
			width: 600,
			// dialog height
			height: 400,
			// tabs setting see preference.js : build()
			categories: null,
			// preference setting see preference.js : build()
			prefs: null,
			// language setting  see preference.js : build()
			langs: null,
			// Command list of action when select file
			// Array value are 'Command Name' or 'Command Name1/CommandName2...'
			selectActions : ['open', 'edit/download', 'resize/edit/download', 'download', 'quicklook']
		}
	},
	
	/**
	 * Disabled commands relationship
	 * 
	 * @type Object
	 */
	disabledCmdsRels : {
		'get'       : ['edit'],
		'rm'        : ['cut', 'empty'],
		'file&url=' : ['download', 'zipdl'] // file command and volume options url is empty
	},

	/**
	 * Callback for prepare boot up
	 * 
	 * - The this object in the function is an elFinder node
	 * - The first parameter is elFinder Instance
	 * - The second parameter is an object of other parameters
	 *   For now it can use `dfrdsBeforeBootup` Array
	 * 
	 * @type Function
	 * @default null
	 * @return void
	 */
	bootCallback : null,
	
	/**
	 * Callback for "getfile" commands.
	 * Required to use elFinder with WYSIWYG editors etc..
	 *
	 * @type Function
	 * @default null (command not active)
	 */
	getFileCallback : null,
	
	/**
	 * Default directory view. icons/list
	 *
	 * @type String
	 * @default "icons"
	 */
	defaultView : 'icons',
	
	/**
	 * Hash of default directory path to open
	 * 
	 * NOTE: This setting will be disabled if the target folder is specified in location.hash.
	 * 
	 * If you want to find the hash in Javascript
	 * can be obtained with the following code. (In the case of a standard hashing method)
	 * 
	 * var volumeId = 'l1_'; // volume id
	 * var path = 'path/to/target'; // without root path
	 * //var path = 'path\\to\\target'; // use \ on windows server
	 * var hash = volumeId + btoa(path).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '.').replace(/\.+$/, '');
	 * 
	 * @type String
	 * @default ""
	 */
	startPathHash : '',

	/**
	 * Emit a sound when a file is deleted
	 * Sounds are in sounds/ folder
	 * 
	 * @type Boolean
	 * @default true
	 */
	sound : true,
	
	/**
	 * UI plugins to load.
	 * Current dir ui and dialogs loads always.
	 * Here set not required plugins as folders tree/toolbar/statusbar etc.
	 *
	 * @type Array
	 * @default ['toolbar', 'places', 'tree', 'path', 'stat']
	 * @full ['toolbar', 'places', 'tree', 'path', 'stat']
	 */
	ui : ['toolbar', 'places', 'tree', 'path', 'stat'],
	
	/**
	 * Some UI plugins options.
	 * @type Object
	 */
	uiOptions : {
		// toolbar configuration
		toolbar : [
			['home', 'back', 'forward', 'up', 'reload'],
			['netmount'],
			['mkdir', 'mkfile', 'upload'],
			['open', 'download', 'getfile'],
			['undo', 'redo'],
			['copy', 'cut', 'paste', 'rm', 'empty', 'hide'],
			['duplicate', 'rename', 'edit', 'resize', 'chmod'],
			['selectall', 'selectnone', 'selectinvert'],
			['quicklook', 'info'],
			['extract', 'archive'],
			['search'],
			['view', 'sort'],
			['preference', 'help'],
			['fullscreen']
		],
		// toolbar extra options
		toolbarExtra : {
			// also displays the text label on the button (true / false / 'none')
			displayTextLabel: false,
			// Exclude `displayTextLabel` setting UA type
			labelExcludeUA: ['Mobile'],
			// auto hide on initial open
			autoHideUA: ['Mobile'],
			// Initial setting value of hide button in toolbar setting
			defaultHides: ['home', 'reload'],
			// show Preference button ('none', 'auto', 'always')
			// If you do not include 'preference' in the context menu you should specify 'auto' or 'always'
			showPreferenceButton: 'none',
			// show Preference button into contextmenu of the toolbar (true / false)
			preferenceInContextmenu: true
		},
		// directories tree options
		tree : {
			// set path info to attr title
			attrTitle : true,
			// expand current root on init
			openRootOnLoad : true,
			// expand current work directory on open
			openCwdOnOpen  : true,
			// auto loading current directory parents and do expand their node.
			syncTree : true,
			// Maximum number of display of each child trees
			// The tree of directories with children exceeding this number will be split
			subTreeMax : 100,
			// Numbar of max connctions of subdirs request
			subdirsMaxConn : 2,
			// Number of max simultaneous processing directory of subdirs
			subdirsAtOnce : 5,
			// Durations of each animations
			durations : {
				slideUpDown : 'fast',
				autoScroll : 'fast'
			}
			// ,
			// /**
			//  * Add CSS class name to navbar directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// getClass: function(dir) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-tree-' + dir.name.replace(/[ "]/g, '').toLowerCase();
			// }
		},
		// navbar options
		navbar : {
			minWidth : 150,
			maxWidth : 500,
			// auto hide on initial open
			autoHideUA: [] // e.g. ['Mobile']
		},
		navdock : {
			// disabled navdock ui
			disabled : false,
			// percentage of initial maximum height to work zone
			initMaxHeight : '50%',
			// percentage of maximum height to work zone by user resize action
			maxHeight : '90%'
		},
		cwd : {
			// display parent folder with ".." name :)
			oldSchool : false,
			
			// fm.UA types array to show item select checkboxes e.g. ['All'] or ['Mobile'] etc. default: ['Touch']
			showSelectCheckboxUA : ['Touch'],

			// Enable dragout by dragstart with Alt key or Shift key
			metakeyDragout : true,
			
			// file info columns displayed
			listView : {
				// name is always displayed, cols are ordered
				// e.g. ['perm', 'date', 'size', 'kind', 'owner', 'group', 'mode']
				// mode: 'mode'(by `fileModeStyle` setting), 'modestr'(rwxr-xr-x) , 'modeoct'(755), 'modeboth'(rwxr-xr-x (755))
				// 'owner', 'group' and 'mode', It's necessary set volume driver option "statOwner" to `true`
				// for custom, characters that can be used in the name is `a-z0-9_`
				columns : ['perm', 'date', 'size', 'kind'],
				// override this if you want custom columns name
				// example
				// columnsCustomName : {
				//		date : 'Last modification',
				// 		kind : 'Mime type'
				// }
				columnsCustomName : {},
				// fixed list header colmun
				fixedHeader : true
			},

			// icons view setting
			iconsView : {
				// default icon size (0-3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				size: 0,
				// number of maximum size (3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				// uses in preference.js
				sizeMax: 3,
				// Name of each size
				sizeNames: {
					0: 'viewSmall',
					1: 'viewMedium',
					2: 'viewLarge',
					3: 'viewExtraLarge' 
				}
			},

			// /**
			//  * Add CSS class name to cwd directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// ,
			// getClass: function(file) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-cwd-' + file.name.replace(/[ "]/g, '').toLowerCase();
			//}
			
			//,
			//// Template placeholders replacement rules for overwrite. see ui/cwd.js replacement
			//replacement : {
			//	tooltip : function(f, fm) {
			//		var list = fm.viewType == 'list', // current view type
			//			query = fm.searchStatus.state == 2, // is in search results
			//			title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
			//			info  = '';
			//		if (query && f.path) {
			//			info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
			//		} else {
			//			info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
			//		}
			//		if (list) {
			//			info += (info? '&#13;' : '') + fm.escape(f.name);
			//		}
			//		return info? info + '&#13;' + title : title;
			//	}
			//}
		},
		path : {
			// Move to head of work zone without UI navbar
			toWorkzoneWithoutNavbar : true
		},
		dialog : {
			// Enable to auto focusing on mouse over in the target form element
			focusOnMouseOver : true
		},
		toast : {
			animate : {
				// to show
				showMethod: 'fadeIn', // fadeIn, slideDown, and show are built into jQuery
				showDuration: 300,    // milliseconds
				showEasing: 'swing',  // swing and linear are built into jQuery
				// timeout to hide
				timeOut: 3000,
				// to hide
				hideMethod: 'fadeOut',
				hideDuration: 1500,
				hideEasing: 'swing'
			}
		}
	},

	/**
	 * MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook
	 * This option will overwrite by connector configuration
	 * 
	 * @type String
	 * @default '^(?:(?:image|video|audio)|text/plain|application/pdf$)'
	 * @example
	 *  dispInlineRegex : '.',  // is allow inline of all of MIME types
	 *  dispInlineRegex : '$^', // is not allow inline of all of MIME types
	 */
	dispInlineRegex : '^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)',

	/**
	 * Display only required files by types
	 *
	 * @type Array
	 * @default []
	 * @example
	 *  onlyMimes : ["image"] - display all images
	 *  onlyMimes : ["image/png", "application/x-shockwave-flash"] - display png and flash
	 */
	onlyMimes : [],

	/**
	 * Custom files sort rules.
	 * All default rules (name/size/kind/date/perm/mode/owner/group) set in elFinder._sortRules
	 *
	 * @type {Object}
	 * @example
	 * sortRules : {
	 *   name : function(file1, file2) { return file1.name.toLowerCase().localeCompare(file2.name.toLowerCase()); }
	 * }
	 */
	sortRules : {},

	/**
	 * Default sort type.
	 *
	 * @type {String}
	 */
	sortType : 'name',
	
	/**
	 * Default sort order.
	 *
	 * @type {String}
	 * @default "asc"
	 */
	sortOrder : 'asc',
	
	/**
	 * Display folders first?
	 *
	 * @type {Boolean}
	 * @default true
	 */
	sortStickFolders : true,
	
	/**
	 * Sort also applies to the treeview (null: disable this feature)
	 *
	 * @type Boolean|null
	 * @default false
	 */
	sortAlsoTreeview : false,
	
	/**
	 * If true - elFinder will formating dates itself, 
	 * otherwise - backend date will be used.
	 *
	 * @type Boolean
	 */
	clientFormatDate : true,
	
	/**
	 * Show UTC dates.
	 * Required set clientFormatDate to true
	 *
	 * @type Boolean
	 */
	UTCDate : false,
	
	/**
	 * File modification datetime format.
	 * Value from selected language data  is used by default.
	 * Set format here to overwrite it.
	 *
	 * @type String
	 * @default  ""
	 */
	dateFormat : '',
	
	/**
	 * File modification datetime format in form "Yesterday 12:23:01".
	 * Value from selected language data is used by default.
	 * Set format here to overwrite it.
	 * Use $1 for "Today"/"Yesterday" placeholder
	 *
	 * @type String
	 * @default  ""
	 * @example "$1 H:m:i"
	 */
	fancyDateFormat : '',
	
	/**
	 * Style of file mode at cwd-list, info dialog
	 * 'string' (ex. rwxr-xr-x) or 'octal' (ex. 755) or 'both' (ex. rwxr-xr-x (755))
	 * 
	 * @type {String}
	 * @default 'both'
	 */
	fileModeStyle : 'both',
	
	/**
	 * elFinder width
	 *
	 * @type String|Number
	 * @default  "auto"
	 */
	width : 'auto',
	
	/**
	 * elFinder node height
	 * Number: pixcel or String: Number + "%"
	 *
	 * @type Number | String
	 * @default  400
	 */
	height : 400,
	
	/**
	 * Do not resize the elFinder node itself on resize parent node
	 * Specify `true` when controlling with CSS such as Flexbox
	 *
	 * @type Boolean
	 * @default false
	 */
	noResizeBySelf : false,

	/**
	 * Base node object or selector
	 * Element which is the reference of the height percentage
	 *
	 * @type Object|String
	 * @default null | $(window) (if height is percentage)
	 **/
	heightBase : null,
	
	/**
	 * Make elFinder resizable if jquery ui resizable available
	 *
	 * @type Boolean
	 * @default  true
	 */
	resizable : true,
	
	/**
	 * Timeout before open notifications dialogs
	 *
	 * @type Number
	 * @default  500 (.5 sec)
	 */
	notifyDelay : 500,
	
	/**
	 * Position CSS, Width of notifications dialogs
	 *
	 * @type Object
	 * @default {position: {}, width : null} - Apply CSS definition
	 * position: CSS object | null (null: position center & middle)
	 */
	notifyDialog : {position : {}, width : null, canClose : false, hiddens : ['open']},
	
	/**
	 * Dialog contained in the elFinder node
	 * 
	 * @type Boolean
	 * @default false
	 */
	dialogContained : false,
	
	/**
	 * Allow shortcuts
	 *
	 * @type Boolean
	 * @default  true
	 */
	allowShortcuts : true,
	
	/**
	 * Remeber last opened dir to open it after reload or in next session
	 *
	 * @type Boolean
	 * @default  true
	 */
	rememberLastDir : true,
	
	/**
	 * Clear historys(elFinder) on reload(not browser) function
	 * Historys was cleared on Reload function on elFinder 2.0 (value is true)
	 * 
	 * @type Boolean
	 * @default  false
	 */
	reloadClearHistory : false,
	
	/**
	 * Use browser native history with supported browsers
	 *
	 * @type Boolean
	 * @default  true
	 */
	useBrowserHistory : true,
	
	/**
	 * Lazy load config.
	 * How many files display at once?
	 *
	 * @type Number
	 * @default  50
	 */
	showFiles : 50,
	
	/**
	 * Lazy load config.
	 * Distance in px to cwd bottom edge to start display files
	 *
	 * @type Number
	 * @default  50
	 */
	showThreshold : 50,
	
	/**
	 * Additional rule to valid new file name.
	 * By default not allowed empty names or '..'
	 * This setting does not have a sense of security.
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  disable names with spaces:
	 *  validName : /^[^\s]+$/,
	 */
	validName : false,
	
	/**
	 * Additional rule to filtering for browsing.
	 * This setting does not have a sense of security.
	 * 
	 * The object `this` is elFinder instance object in this function
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  show only png and jpg files:
	 *  fileFilter : /.*\.(png|jpg)$/i,
	 *  
	 *  show only image type files:
	 *  fileFilter : function(file) { return file.mime && file.mime.match(/^image\//i); },
	 */
	fileFilter : false,
	
	/**
	 * Backup name suffix.
	 *
	 * @type String
	 * @default  "~"
	 */
	backupSuffix : '~',
	
	/**
	 * Sync content interval
	 *
	 * @type Number
	 * @default  0 (do not sync)
	 */
	sync : 0,
	
	/**
	 * Sync start on load if sync value >= 1000
	 *
	 * @type     Bool
	 * @default  true
	 */
	syncStart : true,
	
	/**
	 * How many thumbnails create in one request
	 *
	 * @type Number
	 * @default  5
	 */
	loadTmbs : 5,
	
	/**
	 * Cookie option for browsersdoes not suppot localStorage
	 *
	 * @type Object
	 */
	cookie         : {
		expires  : 30,
		domain   : '',
		path     : '/',
		secure   : false,
		samesite : 'lax'
	},
	
	/**
	 * Contextmenu config
	 *
	 * @type Object
	 */
	contextmenu : {
		// navbarfolder menu
		navbar : ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', '|', 'archive', '|', 'places', 'info', 'chmod', 'netunmount'],
		// current directory menu
		cwd    : ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'mkfile', 'paste', '|', 'empty', 'hide', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod', 'netunmount', '|', 'fullscreen', '|', 'preference'],
		// current directory file menu
		files  : ['getfile', '|' ,'open', 'opennew', 'download', 'opendir', 'quicklook', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', 'edit', 'resize', '|', 'archive', 'extract', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod', 'netunmount']
	},

	/**
	 * elFinder node enable always
	 * This value will set to `true` if <body> has elFinder node only
	 * 
	 * @type     Bool
	 * @default  false
	 */
	enableAlways : false,
	
	/**
	 * elFinder node enable by mouse over
	 * 
	 * @type     Bool
	 * @default  true
	 */
	enableByMouseOver : true,

	/**
	 * Show window close confirm dialog
	 * Value is which state to show
	 * 'hasNotifyDialog', 'editingFile', 'hasSelectedItem' and 'hasClipboardData'
	 * 
	 * @type     Array
	 * @default  ['hasNotifyDialog', 'editingFile']
	 */
	windowCloseConfirm : ['hasNotifyDialog', 'editingFile'],

	/**
	 * Function decoding 'raw' string converted to unicode
	 * It is used instead of fm.decodeRawString(str)
	 * 
	 * @type Null|Function
	 */
	rawStringDecoder : typeof Encoding === 'object' && typeof Encoding.convert === 'function'? function(str) {
		return Encoding.convert(str, {
			to: 'UNICODE',
			type: 'string'
		});
	} : null,

	/**
	 * Debug config
	 *
	 * @type Array|String('auto')|Boolean(true|false)
	 */
	debug : ['error', 'warning', 'event-destroy'],

	/**
	 * Show toast messeges of backend warning (if found data `debug.backendErrors` in backend results)
	 *
	 * @type Boolean|Object (toast options)
	 */
	toastBackendWarn : true,

	/**
	 * Whether renaming root folders is enabled. If true, the alias for the root folder is stored as a preference for the user.
	 */
	enableRootRename : true,
};


/*
 * File: /js/elFinder.options.netmount.js
 */

/**
 * Default elFinder config of commandsOptions.netmount
 *
 * @type  Object
 */

elFinder.prototype._options.commandsOptions.netmount = {
	ftp: {
		name : 'FTP',
		inputs: {
			host     : $('<input type="text"/>'),
			port     : $('<input type="number" placeholder="21" class="elfinder-input-optional"/>'),
			path     : $('<input type="text" value="/"/>'),
			user     : $('<input type="text"/>'),
			pass     : $('<input type="password" autocomplete="new-password"/>'),
			FTPS     : $('<input type="checkbox" value="1" title="File Transfer Protocol over SSL/TLS"/>'),
			encoding : $('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>'),
			locale   : $('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>')
		}
	},
	dropbox2: elFinder.prototype.makeNetmountOptionOauth('dropbox2', 'Dropbox', 'Dropbox', {noOffline : true,
		root : '/',
		pathI18n : 'path',
		integrate : {
			title: 'Dropbox.com',
			link: 'https://www.dropbox.com'
		}
	}),
	googledrive: elFinder.prototype.makeNetmountOptionOauth('googledrive', 'Google Drive', 'Google', {
		integrate : {
			title: 'Google Drive',
			link: 'https://www.google.com/drive/'
		}
	}),
	onedrive: elFinder.prototype.makeNetmountOptionOauth('onedrive', 'One Drive', 'OneDrive', {
		integrate : {
			title: 'Microsoft OneDrive',
			link: 'https://onedrive.live.com'
		}
	}),
	box: elFinder.prototype.makeNetmountOptionOauth('box', 'Box', 'Box', {
		noOffline : true,
		integrate : {
			title: 'Box.com',
			link: 'https://www.box.com'
		}
	})
};


/*
 * File: /js/elFinder.history.js
 */

/**
 * @class elFinder.history
 * Store visited folders
 * and provide "back" and "forward" methods
 *
 * @author Dmitry (dio) Levashov
 */
elFinder.prototype.history = function(fm) {
		var self = this,
		/**
		 * Update history on "open" event?
		 *
		 * @type Boolean
		 */
		update = true,
		/**
		 * Directories hashes storage
		 *
		 * @type Array
		 */
		history = [],
		/**
		 * Current directory index in history
		 *
		 * @type Number
		 */
		current,
		/**
		 * Clear history
		 *
		 * @return void
		 */
		reset = function() {
			history = [fm.cwd().hash];
			current = 0;
			update  = true;
		},
		/**
		 * Browser native history object
		 */
		nativeHistory = (fm.options.useBrowserHistory && window.history && window.history.pushState)? window.history : null,
		/**
		 * Open prev/next folder
		 *
		 * @Boolen  open next folder?
		 * @return jQuery.Deferred
		 */
		go = function(fwd) {
			if ((fwd && self.canForward()) || (!fwd && self.canBack())) {
				update = false;
				return fm.exec('open', history[fwd ? ++current : --current]).fail(reset);
			}
			return $.Deferred().reject();
		},
		/**
		 * Sets the native history.
		 *
		 * @param String thash target hash
		 */
		setNativeHistory = function(thash) {
			if (nativeHistory && (! nativeHistory.state || nativeHistory.state.thash !== thash)) {
				nativeHistory.pushState({thash: thash}, null, location.pathname + location.search + (thash? '#elf_' + thash : ''));
			}
		};
	
	/**
	 * Return true if there is previous visited directories
	 *
	 * @return Boolen
	 */
	this.canBack = function() {
		return current > 0;
	};
	
	/**
	 * Return true if can go forward
	 *
	 * @return Boolen
	 */
	this.canForward = function() {
		return current < history.length - 1;
	};
	
	/**
	 * Go back
	 *
	 * @return void
	 */
	this.back = go;
	
	/**
	 * Go forward
	 *
	 * @return void
	 */
	this.forward = function() {
		return go(true);
	};
	
	// bind to elfinder events
	fm.bind('init', function() {
		if (nativeHistory && !nativeHistory.state) {
			setNativeHistory(fm.startDir());
		}
	})
	.open(function() {
		var l = history.length,
			cwd = fm.cwd().hash;

		if (update) {
			current >= 0 && l > current + 1 && history.splice(current+1);
			history[history.length-1] != cwd && history.push(cwd);
			current = history.length - 1;
		}
		update = true;

		setNativeHistory(cwd);
	})
	.reload(fm.options.reloadClearHistory && reset);
	
};


/*
 * File: /js/elFinder.command.js
 */

/**
 * elFinder command prototype
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.command = function(fm) {
		/**
	 * elFinder instance
	 *
	 * @type  elFinder
	 */
	this.fm = fm;
	
	/**
	 * Command name, same as class name
	 *
	 * @type  String
	 */
	this.name = '';
	
	/**
	 * Dialog class name
	 *
	 * @type  String
	 */
	this.dialogClass = '';

	/**
	 * Command icon class name with out 'elfinder-button-icon-'
	 * Use this.name if it is empty
	 *
	 * @type  String
	 */
	this.className = '';

	/**
	 * Short command description
	 *
	 * @type  String
	 */
	this.title = '';
	
	/**
	 * Linked(Child) commands name
	 * They are loaded together when tthis command is loaded.
	 * 
	 * @type  Array
	 */
	this.linkedCmds = [];
	
	/**
	 * Current command state
	 *
	 * @example
	 * this.state = -1; // command disabled
	 * this.state = 0;  // command enabled
	 * this.state = 1;  // command active (for example "fullscreen" command while elfinder in fullscreen mode)
	 * @default -1
	 * @type  Number
	 */
	this.state = -1;
	
	/**
	 * If true, command can not be disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this.alwaysEnabled = false;
	
	/**
	 * Do not change dirctory on removed current work directory
	 * 
	 * @type  Boolen
	 */
	this.noChangeDirOnRemovedCwd = false;
	
	/**
	 * If true, this means command was disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this._disabled = false;
	
	/**
	 * If true, this command is disabled on serach results
	 * 
	 * @type  Boolean
	 */
	this.disableOnSearch = false;
	
	/**
	 * Call update() when event select fired
	 * 
	 * @type  Boolean
	 */
	this.updateOnSelect = true;
	
	/**
	 * Sync toolbar button title on change
	 * 
	 * @type  Boolean
	 */
	this.syncTitleOnChange = false;

	/**
	 * Keep display of the context menu when command execution
	 * 
	 * @type  Boolean
	 */
	this.keepContextmenu = false;
	
	/**
	 * elFinder events defaults handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this._handlers = {
		enable  : function() { this.update(void(0), this.value); },
		disable : function() { this.update(-1, this.value); },
		'open reload load sync'    : function() { 
			this._disabled = !(this.alwaysEnabled || this.fm.isCommandEnabled(this.name));
			this.update(void(0), this.value);
			this.change(); 
		}
	};
	
	/**
	 * elFinder events handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this.handlers = {};
	
	/**
	 * Shortcuts
	 *
	 * @type  Array
	 */
	this.shortcuts = [];
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'button'};
	
	/**
	 * Callback functions on `change` event
	 * 
	 * @type  Array
	 */
	this.listeners = [];

	/**
	 * Prepare object -
	 * bind events and shortcuts
	 *
	 * @return void
	 */
	this.setup = function(name, opts) {
		var self = this,
			fm   = this.fm,
			setCallback = function(s) {
				var cb = s.callback || function(e) {
							fm.exec(self.name, void(0), {
							_userAction: true,
							_currentType: 'shortcut'
						});
					};
				s.callback = function(e) {
					var enabled, checks = {};
					if (self.enabled()) {
						if (fm.searchStatus.state < 2) {
							enabled = fm.isCommandEnabled(self.name);
						} else {
							$.each(fm.selected(), function(i, h) {
								if (fm.optionsByHashes[h]) {
									checks[h] = true;
								} else {
									$.each(fm.volOptions, function(id) {
										if (!checks[id] && h.indexOf(id) === 0) {
											checks[id] = true;
											return false;
										}
									});
								}
							});
							$.each(checks, function(h) {
								enabled = fm.isCommandEnabled(self.name, h);
								if (! enabled) {
									return false;
								}
							});
						}
						if (enabled) {
							self.event = e;
							cb.call(self);
							delete self.event;
						}
					}
				};
			},
			i, s, sc;

		this.name      = name;
		this.title     = fm.messages['cmd'+name] ? fm.i18n('cmd'+name)
		               : ((this.extendsCmd && fm.messages['cmd'+this.extendsCmd]) ? fm.i18n('cmd'+this.extendsCmd) : name);
		this.options   = Object.assign({}, this.options, opts);
		this.listeners = [];
		this.dialogClass = 'elfinder-dialog-' + name;

		if (opts.shortcuts) {
			if (typeof opts.shortcuts === 'function') {
				sc = opts.shortcuts(this.fm, this.shortcuts);
			} else if (Array.isArray(opts.shortcuts)) {
				sc = opts.shortcuts;
			}
			this.shortcuts = sc || [];
		}

		if (this.updateOnSelect) {
			this._handlers.select = function() { this.update(void(0), this.value); };
		}

		$.each(Object.assign({}, self._handlers, self.handlers), function(cmd, handler) {
			fm.bind(cmd, $.proxy(handler, self));
		});

		for (i = 0; i < this.shortcuts.length; i++) {
			s = this.shortcuts[i];
			setCallback(s);
			!s.description && (s.description = this.title);
			fm.shortcut(s);
		}

		if (this.disableOnSearch) {
			fm.bind('search searchend', function() {
				self._disabled = this.type === 'search'? true : ! (this.alwaysEnabled || fm.isCommandEnabled(name));
				self.update(void(0), self.value);
			});
		}

		this.init();
	};

	/**
	 * Command specific init stuffs
	 *
	 * @return void
	 */
	this.init = function() {};

	/**
	 * Exec command
	 *
	 * @param  Array         target files hashes
	 * @param  Array|Object  command value
	 * @return $.Deferred
	 */
	this.exec = function(files, opts) { 
		return $.Deferred().reject(); 
	};
	
	this.getUndo = function(opts, resData) {
		return false;
	};
	
	/**
	 * Return true if command disabled.
	 *
	 * @return Boolen
	 */
	this.disabled = function() {
		return this.state < 0;
	};
	
	/**
	 * Return true if command enabled.
	 *
	 * @return Boolen
	 */
	this.enabled = function() {
		return this.state > -1;
	};
	
	/**
	 * Return true if command active.
	 *
	 * @return Boolen
	 */
	this.active = function() {
		return this.state > 0;
	};
	
	/**
	 * Return current command state.
	 * Must be overloaded in most commands
	 *
	 * @return Number
	 */
	this.getstate = function() {
		return -1;
	};
	
	/**
	 * Update command state/value
	 * and rize 'change' event if smth changed
	 *
	 * @param  Number  new state or undefined to auto update state
	 * @param  mixed   new value
	 * @return void
	 */
	this.update = function(s, v) {
		var state = this.state,
			value = this.value;

		if (this._disabled && this.fm.searchStatus === 0) {
			this.state = -1;
		} else {
			this.state = s !== void(0) ? s : this.getstate();
		}

		this.value = v;
		
		if (state != this.state || value != this.value) {
			this.change();
		}
	};
	
	/**
	 * Bind handler / fire 'change' event.
	 *
	 * @param  Function|undefined  event callback
	 * @return void
	 */
	this.change = function(c) {
		var cmd, i;
		
		if (typeof(c) === 'function') {
			this.listeners.push(c);			
		} else {
			for (i = 0; i < this.listeners.length; i++) {
				cmd = this.listeners[i];
				try {
					cmd(this.state, this.value);
				} catch (e) {
					this.fm.debug('error', e);
				}
			}
		}
		return this;
	};
	

	/**
	 * With argument check given files hashes and return list of existed files hashes.
	 * Without argument return selected files hashes.
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.hashes = function(hashes) {
		return hashes
			? $.grep(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) ? true : false; })
			: fm.selected();
	};
	
	/**
	 * Return only existed files from given fils hashes | selected files
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.files = function(hashes) {
		var fm = this.fm;
		
		return hashes
			? $.map(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) || null; })
			: fm.selectedFiles();
	};

	/**
	 * Wrapper to fm.dialog()
	 *
	 * @param  String|DOMElement  content
	 * @param  Object             options
	 * @return Object             jQuery element object
	 */
	this.fmDialog = function(content, options) {
		if (options.cssClass) {
			options.cssClass += ' ' + this.dialogClass;
		} else {
			options.cssClass = this.dialogClass;
		}
		return this.fm.dialog(content, options);
	};
};


/*
 * File: /js/elFinder.resources.js
 */

/**
 * elFinder resources registry.
 * Store shared data
 *
 * @type Object
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.resources = {
	'class' : {
		hover       : 'ui-state-hover',
		active      : 'ui-state-active',
		disabled    : 'ui-state-disabled',
		draggable   : 'ui-draggable',
		droppable   : 'ui-droppable',
		adroppable  : 'elfinder-droppable-active',
		cwdfile     : 'elfinder-cwd-file',
		cwd         : 'elfinder-cwd',
		tree        : 'elfinder-tree',
		treeroot    : 'elfinder-navbar-root',
		navdir      : 'elfinder-navbar-dir',
		navdirwrap  : 'elfinder-navbar-dir-wrapper',
		navarrow    : 'elfinder-navbar-arrow',
		navsubtree  : 'elfinder-navbar-subtree',
		navcollapse : 'elfinder-navbar-collapsed',
		navexpand   : 'elfinder-navbar-expanded',
		treedir     : 'elfinder-tree-dir',
		placedir    : 'elfinder-place-dir',
		searchbtn   : 'elfinder-button-search',
		editing     : 'elfinder-to-editing',
		preventback : 'elfinder-prevent-back',
		tabstab     : 'ui-state-default ui-tabs-tab ui-corner-top ui-tab',
		tabsactive  : 'ui-tabs-active ui-state-active'
	},
	tpl : {
		perms      : '<span class="elfinder-perms"></span>',
		lock       : '<span class="elfinder-lock"></span>',
		symlink    : '<span class="elfinder-symlink"></span>',
		navicon    : '<span class="elfinder-nav-icon"></span>',
		navspinner : '<span class="elfinder-spinner elfinder-navbar-spinner"></span>',
		navdir     : '<div class="elfinder-navbar-wrapper{root}"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>',
		placedir   : '<div class="elfinder-navbar-wrapper"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>'
		
	},
	// mimes.text will be overwritten with connector config if `textMimes` is included in initial response
	// @see php/elFInder.class.php `public static $textMimes`
	mimes : {
		text : [
			'application/dash+xml',
			'application/docbook+xml',
			'application/javascript',
			'application/json',
			'application/plt',
			'application/sat',
			'application/sql',
			'application/step',
			'application/vnd.hp-hpgl',
			'application/x-awk',
			'application/x-config',
			'application/x-csh',
			'application/x-empty',
			'application/x-mpegurl',
			'application/x-perl',
			'application/x-php',
			'application/x-web-config',
			'application/xhtml+xml',
			'application/xml',
			'audio/x-mp3-playlist',
			'image/cgm',
			'image/svg+xml',
			'image/vnd.dxf',
			'model/iges'
		]
	},
	
	mixin : {
		make : function() {
						var self = this,
				fm   = this.fm,
				cmd  = this.name,
				req  = this.requestCmd || cmd,
				wz   = fm.getUI('workzone'),
				org  = (this.origin && this.origin === 'navbar')? 'tree' : 'cwd',
				tree = (org === 'tree'),
				find = tree? 'navHash2Elm' : 'cwdHash2Elm',
				tarea= (! tree && fm.storage('view') != 'list'),
				sel  = fm.selected(),
				move = this.move || false,
				empty= wz.hasClass('elfinder-cwd-wrapper-empty'),
				unselect = function() {
					requestAnimationFrame(function() {
						input && input.trigger('blur');
					});
				},
				rest = function(){
					if (!overlay.is(':hidden')) {
						overlay.elfinderoverlay('hide').off('click close', cancel);
					}
					if (nnode) {
						pnode.removeClass('ui-front')
							.css('position', '')
							.off('unselect.'+fm.namespace, unselect);
						if (tarea) {
							nnode && nnode.css('max-height', '');
						} else if (!tree) {
							pnode.css('width', '')
								.parent('td').css('overflow', '');
						}
					}
				}, colwidth,
				dfrd = $.Deferred()
					.fail(function(error) {
						dstCls && dst.attr('class', dstCls);
						empty && wz.addClass('elfinder-cwd-wrapper-empty');
						if (sel) {
							move && fm.trigger('unlockfiles', {files: sel});
							fm.clipboard([]);
							fm.trigger('selectfiles', { files: sel });
						}
						error && fm.error(error);
					})
					.always(function() {
						rest();
						cleanup();
						fm.enable().unbind('open', openCallback).trigger('resMixinMake');
					}),
				id    = 'tmp_'+parseInt(Math.random()*100000),
				phash = this.data && this.data.target? this.data.target : (tree? fm.file(sel[0]).hash : fm.cwd().hash),
				date = new Date(),
				file   = {
					hash  : id,
					phash : phash,
					name  : fm.uniqueName(this.prefix, phash),
					mime  : this.mime,
					read  : true,
					write : true,
					date  : 'Today '+date.getHours()+':'+date.getMinutes(),
					move  : move
				},
				dum = fm.getUI(org).trigger('create.'+fm.namespace, file),
				data = this.data || {},
				node = fm[find](id),
				nnode, pnode,
				overlay = fm.getUI('overlay'),
				cleanup = function() {
					if (node && node.length) {
						input.off();
						node.hide();
						fm.unselectfiles({files : [id]}).unbind('resize', resize);
						requestAnimationFrame(function() {
							if (tree) {
								node.closest('.elfinder-navbar-wrapper').remove();
							} else {
								node.remove();
							}
						});
					}
				},
				cancel = function(e) { 
					if (!overlay.is(':hidden')) {
						pnode.css('z-index', '');
					}
					if (! inError) {
						cleanup();
						dfrd.reject();
						if (e) {
							e.stopPropagation();
							e.preventDefault();
						}
					}
				},
				input = $(tarea? '<textarea></textarea>' : '<input type="text"/>')
					.on('keyup text', function(){
						if (tarea) {
							this.style.height = '1px';
							this.style.height = this.scrollHeight + 'px';
						} else if (colwidth) {
							this.style.width = colwidth + 'px';
							if (this.scrollWidth > colwidth) {
								this.style.width = this.scrollWidth + 10 + 'px';
							}
						}
					})
					.on('keydown', function(e) {
						e.stopImmediatePropagation();
						if (e.keyCode == $.ui.keyCode.ESCAPE) {
							dfrd.reject();
						} else if (e.keyCode == $.ui.keyCode.ENTER) {
							e.preventDefault();
							input.trigger('blur');
						}
					})
					.on('mousedown click dblclick', function(e) {
						e.stopPropagation();
						if (e.type === 'dblclick') {
							e.preventDefault();
						}
					})
					.on('blur', function() {
						var name   = $.trim(input.val()),
							parent = input.parent(),
							valid  = true,
							cut;

						if (!overlay.is(':hidden')) {
							pnode.css('z-index', '');
						}
						if (name === '') {
							return cancel();
						}
						if (!inError && parent.length) {

							if (fm.options.validName && fm.options.validName.test) {
								try {
									valid = fm.options.validName.test(name);
								} catch(e) {
									valid = false;
								}
							}
							if (!name || name === '.' || name === '..' || !valid) {
								inError = true;
								fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}
							if (fm.fileByName(name, phash)) {
								inError = true;
								fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}

							cut = (sel && move)? fm.exec('cut', sel) : null;

							$.when(cut)
							.done(function() {
								var toast   = {},
									nextAct = {};
								
								rest();
								input.hide().before($('<span>').text(name));

								fm.lockfiles({files : [id]});

								fm.request({
										data        : Object.assign({cmd : req, name : name, target : phash}, data || {}), 
										notify      : {type : req, cnt : 1},
										preventFail : true,
										syncOnFail  : true,
										navigate    : {toast : toast},
									})
									.fail(function(error) {
										fm.unlockfiles({files : [id]});
										inError = true;
										input.show().prev().remove();
										fm.error(error, {
											modal: true,
											close: function() {
												if (Array.isArray(error) && $.inArray('errUploadMime', error) !== -1) {
													dfrd.notify('errUploadMime').reject();
												} else {
													setTimeout(select, 120);
												}
											}
										});
									})
									.done(function(data) {
										if (data && data.added && data.added[0]) {
											var item    = data.added[0],
												dirhash = item.hash,
												newItem = fm[find](dirhash),
												acts    = {
													'directory' : { cmd: 'open', msg: 'cmdopendir' },
													'text'      : { cmd: 'edit', msg: 'cmdedit' },
													'default'   : { cmd: 'open', msg: 'cmdopen' }
												},
												tmpMimes;
											if (sel && move) {
												fm.one(req+'done', function() {
													fm.exec('paste', dirhash);
												});
											}
											if (!move) {
												if (fm.mimeIsText(item.mime) && !fm.mimesCanMakeEmpty[item.mime] && fm.mimeTypes[item.mime]) {
													fm.trigger('canMakeEmptyFile', {mimes: [item.mime], unshift: true});
													tmpMimes = {};
													tmpMimes[item.mime] = fm.mimeTypes[item.mime];
													fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
												}
												Object.assign(nextAct, nextAction || acts[item.mime] || acts[item.mime.split('/')[0]] || acts[(fm.mimesCanMakeEmpty[item.mime] || $.inArray(item.mime, fm.resources.mimes.text) !== -1) ? 'text' : 'none'] || acts['default']);
												Object.assign(toast, nextAct.cmd ? {
													incwd    : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct},
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct}
												} : {
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)])}
												});
											}
										}
										dfrd.resolve(data);
									});
							})
							.fail(function() {
								dfrd.reject();
							});
						}
					})
					.on('dragenter dragleave dragover drop', function(e) {
						// stop bubbling to prevent upload with native drop event
						e.stopPropagation();
					}),
				select = function() {
					var name = fm.splitFileExtention(input.val())[0];
					if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
						overlay.on('click close', cancel).elfinderoverlay('show');
						pnode.css('z-index', overlay.css('z-index') + 1);
					}
					inError = false;
					! fm.enabled() && fm.enable();
					input.trigger('focus').trigger('select');
					input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
				},
				resize = function() {
					node.trigger('scrolltoview', {blink : false});
				},
				openCallback = function() {
					dfrd && (dfrd.state() === 'pending') && dfrd.reject();
				},
				inError = false,
				nextAction,
				// for tree
				dst, dstCls, collapsed, expanded, arrow, subtree;

			if (!fm.isCommandEnabled(req, phash) || !node.length) {
				return dfrd.reject();
			}

			if ($.isPlainObject(self.nextAction)){
				nextAction = Object.assign({}, self.nextAction);
			}
			
			if (tree) {
				dst = fm[find](phash);
				collapsed = fm.res('class', 'navcollapse');
				expanded  = fm.res('class', 'navexpand');
				arrow = fm.res('class', 'navarrow');
				subtree = fm.res('class', 'navsubtree');
				
				node.closest('.'+subtree).show();
				if (! dst.hasClass(collapsed)) {
					dstCls = dst.attr('class');
					dst.addClass(collapsed+' '+expanded+' elfinder-subtree-loaded');
				}
				if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
					dst.children('.'+arrow).trigger('click').data('dfrd').done(function() {
						if (input.val() === file.name) {
							input.val(fm.uniqueName(self.prefix, phash)).trigger('select').trigger('focus');
						}
					});
				}
				nnode = node.contents().filter(function(){ return this.nodeType==3 && $(this).parent().attr('id') === fm.navHash2Id(file.hash); });
				pnode = nnode.parent();
				nnode.replaceWith(input.val(file.name));
			} else {
				empty && wz.removeClass('elfinder-cwd-wrapper-empty');
				nnode = node.find('.elfinder-cwd-filename');
				pnode = nnode.parent();
				if (tarea) {
					nnode.css('max-height', 'none');
				} else {
					colwidth = pnode.width();
					pnode.width(colwidth - 15)
						.parent('td').css('overflow', 'visible');
				}
				nnode.empty().append(input.val(file.name));
			}
			pnode.addClass('ui-front')
				.css('position', 'relative')
				.on('unselect.'+fm.namespace, unselect);
			
			fm.bind('resize', resize).one('open', openCallback);
			
			input.trigger('keyup');
			select();

			return dfrd;

		}
	},
	blink: function(elm, mode) {
				var acts = {
			slowonce : function(){elm.hide().delay(250).fadeIn(750).delay(500).fadeOut(3500);},
			lookme   : function(){elm.show().fadeOut(500).fadeIn(750);}
		}, func;
		mode = mode || 'slowonce';
		
		func = acts[mode] || acts['lookme'];
		
		elm.stop(true, true);
		func();
	}
};


/*
 * File: /js/jquery.dialogelfinder.js
 */

/**
 * @class dialogelfinder - open elFinder in dialog window
 *
 * @param  Object  elFinder options with dialog options
 * @example
 * $(selector).dialogelfinder({
 *     // some elfinder options
 *     title          : 'My files', // dialog title, default = "Files"
 *     width          : 850,        // dialog width, default 840
 *     autoOpen       : false,      // if false - dialog will not be opened after init, default = true
 *     destroyOnClose : true        // destroy elFinder on close dialog, default = false
 * })
 * @author Dmitry (dio) Levashov
 **/
$.fn.dialogelfinder = function(opts, opts2) {
		var position = 'elfinderPosition',
		destroy  = 'elfinderDestroyOnClose',
		node, pos;

	if ($.isPlainObject(opts)) {
		this.not('.elfinder').each(function() {

			opts.handlers = opts.handlers || {};

			var node    = $(this),
				doc     = $(document),
				toolbar = $('<div class="ui-widget-header dialogelfinder-drag ui-corner-top">'+(opts.title || 'Files')+'</div>'),
				button  = $('<a href="#" class="dialogelfinder-drag-close ui-corner-all"><span class="ui-icon ui-icon-closethick"> </span></a>')
					.appendTo(toolbar)
					.on('click', function(e) {
						e.preventDefault();
						node.dialogelfinder('close');
					}),
				init    = opts.handlers.init,
				elfinder;

			opts.handlers.init = function(e, fm) {
				node.prepend(toolbar);
				init && init(e, fm);
			};

			elfinder = node.addClass('elfinder dialogelfinder touch-punch')
				.css('position', 'absolute')
				.hide()
				.appendTo('body')
				.draggable({
					handle : '.dialogelfinder-drag',
					containment : 'window',
					stop : function() {
						node.trigger('resize');
						elfinder.trigger('resize');
					}
				})
				.elfinder(opts, opts2)
				.elfinder('instance');
			
			elfinder.reloadCallback = function(o, o2) {
				elfinder.destroy();
				o.handlers.init = init;
				node.dialogelfinder(o, o2).dialogelfinder('open');
			};
			
			node.width(parseInt(node.width()) || 840) // fix width if set to "auto"
				.data(destroy, !!opts.destroyOnClose)
				.find('.elfinder-toolbar').removeClass('ui-corner-top');
			
			opts.position && node.data(position, opts.position);
			
			opts.autoOpen !== false && $(this).dialogelfinder('open');

		});
	} else {
		if (opts === 'open') {
			node = $(this);
			pos = node.data(position) || {
				top  : parseInt($(document).scrollTop() + ($(window).height() < node.height() ? 2 : ($(window).height() - node.height())/2)),
				left : parseInt($(document).scrollLeft() + ($(window).width() < node.width()  ? 2 : ($(window).width()  - node.width())/2))
			};

			if (node.is(':hidden')) {
				node.addClass('ui-front').css(pos).show().trigger('resize');

				setTimeout(function() {
					// fix resize icon position and make elfinder active
					node.trigger('resize').trigger('mousedown');
				}, 200);
			}
		} else if (opts === 'close') {
			node = $(this).removeClass('ui-front');
				
			if (node.is(':visible')) {
				!!node.data(destroy)
					? node.elfinder('destroy').remove()
					: node.elfinder('close');
			}
		} else if (opts === 'instance') {
			return $(this).getElFinder();
		}
	}

	return this;
};


/*
 * File: /js/i18n/elfinder.en.js
 */

/**
 * English translation
 * @author Troex Nevelin <troex@fury.scancode.ru>
 * @author Naoki Sawada <hypweb+elfinder@gmail.com>
 * @version 2021-06-02
 */
// elfinder.en.js is integrated into elfinder.(full|min).js by jake build
if (typeof elFinder === 'function' && elFinder.prototype.i18) {
	elFinder.prototype.i18.en = {
		translator : 'Troex Nevelin &lt;troex@fury.scancode.ru&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;',
		language   : 'English',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM
		fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Unknown error.',
			'errUnknownCmd'        : 'Unknown command.',
			'errJqui'              : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
			'errNode'              : 'elFinder requires DOM Element to be created.',
			'errURL'               : 'Invalid elFinder configuration! URL option is not set.',
			'errAccess'            : 'Access denied.',
			'errConnect'           : 'Unable to connect to backend.',
			'errAbort'             : 'Connection aborted.',
			'errTimeout'           : 'Connection timeout.',
			'errNotFound'          : 'Backend not found.',
			'errResponse'          : 'Invalid backend response.',
			'errConf'              : 'Invalid backend configuration.',
			'errJSON'              : 'PHP JSON module not installed.',
			'errNoVolumes'         : 'Readable volumes not available.',
			'errCmdParams'         : 'Invalid parameters for command "$1".',
			'errDataNotJSON'       : 'Data is not JSON.',
			'errDataEmpty'         : 'Data is empty.',
			'errCmdReq'            : 'Backend request requires command name.',
			'errOpen'              : 'Unable to open "$1".',
			'errNotFolder'         : 'Object is not a folder.',
			'errNotFile'           : 'Object is not a file.',
			'errRead'              : 'Unable to read "$1".',
			'errWrite'             : 'Unable to write into "$1".',
			'errPerm'              : 'Permission denied.',
			'errLocked'            : '"$1" is locked and can not be renamed, moved or removed.',
			'errExists'            : 'Item named "$1" already exists.',
			'errInvName'           : 'Invalid file name.',
			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder not found.',
			'errFileNotFound'      : 'File not found.',
			'errTrgFolderNotFound' : 'Target folder "$1" not found.',
			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
			'errMkdir'             : 'Unable to create folder "$1".',
			'errMkfile'            : 'Unable to create file "$1".',
			'errRename'            : 'Unable to rename "$1".',
			'errCopyFrom'          : 'Copying files from volume "$1" not allowed.',
			'errCopyTo'            : 'Copying files to volume "$1" not allowed.',
			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload error.',  // old name - errUploadCommon
			'errUploadFile'        : 'Unable to upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No files found for upload.',
			'errUploadTotalSize'   : 'Data exceeds the maximum allowed size.', // old name - errMaxSize
			'errUploadFileSize'    : 'File exceeds maximum allowed size.', //  old name - errFileMaxSize
			'errUploadMime'        : 'File type not allowed.',
			'errUploadTransfer'    : '"$1" transfer error.',
			'errUploadTemp'        : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Unable to save "$1".',
			'errCopy'              : 'Unable to copy "$1".',
			'errMove'              : 'Unable to move "$1".',
			'errCopyInItself'      : 'Unable to copy "$1" into itself.',
			'errRm'                : 'Unable to remove "$1".',
			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Unable to extract files from "$1".',
			'errArchive'           : 'Unable to create archive.',
			'errArcType'           : 'Unsupported archive type.',
			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
			'errCmdNoSupport'      : 'Backend does not support this command.',
			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Create archive',
			'cmdback'      : 'Back',
			'cmdcopy'      : 'Copy',
			'cmdcut'       : 'Cut',
			'cmddownload'  : 'Download',
			'cmdduplicate' : 'Duplicate',
			'cmdedit'      : 'Edit file',
			'cmdextract'   : 'Extract files from archive',
			'cmdforward'   : 'Forward',
			'cmdgetfile'   : 'Select files',
			'cmdhelp'      : 'About this software',
			'cmdhome'      : 'Root',
			'cmdinfo'      : 'Get info',
			'cmdmkdir'     : 'New folder',
			'cmdmkdirin'   : 'Into New Folder', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'New file',
			'cmdopen'      : 'Open',
			'cmdpaste'     : 'Paste',
			'cmdquicklook' : 'Preview',
			'cmdreload'    : 'Reload',
			'cmdrename'    : 'Rename',
			'cmdrm'        : 'Delete',
			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find files',
			'cmdup'        : 'Go to parent folder',
			'cmdupload'    : 'Upload files',
			'cmdview'      : 'View',
			'cmdresize'    : 'Resize & Rotate',
			'cmdsort'      : 'Sort',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in new window', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Close',
			'btnSave'   : 'Save',
			'btnRm'     : 'Remove',
			'btnApply'  : 'Apply',
			'btnCancel' : 'Cancel',
			'btnNo'     : 'No',
			'btnYes'    : 'Yes',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Open folder',
			'ntffile'     : 'Open file',
			'ntfreload'   : 'Reload folder content',
			'ntfmkdir'    : 'Creating folder',
			'ntfmkfile'   : 'Creating files',
			'ntfrm'       : 'Delete items',
			'ntfcopy'     : 'Copy items',
			'ntfmove'     : 'Move items',
			'ntfprepare'  : 'Checking existing items',
			'ntfrename'   : 'Rename files',
			'ntfupload'   : 'Uploading files',
			'ntfdownload' : 'Downloading files',
			'ntfsave'     : 'Save files',
			'ntfarchive'  : 'Creating archive',
			'ntfextract'  : 'Extracting files from archive',
			'ntfsearch'   : 'Searching files',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something',
			'ntfloadimg'  : 'Loading image',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unknown',
			'Today'       : 'Today',
			'Yesterday'   : 'Yesterday',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'May',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun',
			'Mon'         : 'Mon',
			'Tue'         : 'Tue',
			'Wed'         : 'Wed',
			'Thu'         : 'Thu',
			'Fri'         : 'Fri',
			'Sat'         : 'Sat',

			/******************************** sort variants ********************************/
			'sortname'          : 'by name',
			'sortkind'          : 'by kind',
			'sortsize'          : 'by size',
			'sortdate'          : 'by date',
			'sortFoldersFirst'  : 'Folders first',
			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation required',
			'confirmRm'       : 'Are you sure you want to permanently remove items?<br/>This cannot be undone!',
			'confirmRepl'     : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)',
			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Apply to all',
			'name'            : 'Name',
			'size'            : 'Size',
			'perms'           : 'Permissions',
			'modify'          : 'Modified',
			'kind'            : 'Kind',
			'read'            : 'read',
			'write'           : 'write',
			'noaccess'        : 'no access',
			'and'             : 'and',
			'unknown'         : 'unknown',
			'selectall'       : 'Select all items',
			'selectfiles'     : 'Select item(s)',
			'selectffile'     : 'Select first item',
			'selectlfile'     : 'Select last item',
			'viewlist'        : 'List view',
			'viewicons'       : 'Icons view',
			'viewSmall'       : 'Small icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Places',
			'calc'            : 'Calculate',
			'path'            : 'Path',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Locked',
			'dim'             : 'Dimensions',
			'files'           : 'Files',
			'folders'         : 'Folders',
			'items'           : 'Items',
			'yes'             : 'yes',
			'no'              : 'no',
			'link'            : 'Link',
			'searcresult'     : 'Search results',
			'selected'        : 'selected items',
			'about'           : 'About',
			'shortcuts'       : 'Shortcuts',
			'help'            : 'Help',
			'webfm'           : 'Web file manager',
			'ver'             : 'Version',
			'protocolver'     : 'protocol version',
			'homepage'        : 'Project home',
			'docs'            : 'Documentation',
			'github'          : 'Fork us on GitHub',
			'twitter'         : 'Follow us on Twitter',
			'facebook'        : 'Join us on Facebook',
			'team'            : 'Team',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Icons',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'Drop files here',
			'or'              : 'or',
			'selectForUpload' : 'Select files',
			'moveFiles'       : 'Move items',
			'copyFiles'       : 'Copy items',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Scale',
			'width'           : 'Width',
			'height'          : 'Height',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you sure to unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Owner', // from v2.1 added 20.6.2015
			'group'           : 'Group', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Execute', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\A Press [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar settings', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 lines left.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office document',
			'kindMsWord'      : 'Microsoft Word document',
			'kindMsExcel'     : 'Microsoft Excel document',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office document',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text document',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML document',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML document',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'BMP image',
			'kindJPEG'        : 'JPEG image',
			'kindGIF'         : 'GIF Image',
			'kindPNG'         : 'PNG Image',
			'kindTIFF'        : 'TIFF image',
			'kindTGA'         : 'TGA image',
			'kindPSD'         : 'Adobe Photoshop image',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}



/*
 * File: /js/ui/button.js
 */

/**
 * @class  elFinder toolbar button widget.
 * If command has variants - create menu
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderbutton = function(cmd) {
		return this.each(function() {
		
		var c        = 'class',
			fm       = cmd.fm,
			disabled = fm.res(c, 'disabled'),
			active   = fm.res(c, 'active'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = 'elfinder-button-menu-item-selected',
			menu,
			text     = $('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			prvCname = cmd.className? cmd.className : cmd.name,
			button   = $(this).addClass('ui-state-default elfinder-button')
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon elfinder-button-icon-' + prvCname + '"></span>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover);})
				.on('click', function(e) { 
					if (!button.hasClass(disabled)) {
						if (menu && cmd.variants.length >= 1) {
							// close other menus
							menu.is(':hidden') && fm.getUI().click();
							e.stopPropagation();
							menu.css(getMenuOffset()).slideToggle({
								duration: 100,
								done: function(e) {
									fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
								}
							});
						} else {
							fm.exec(cmd.name, getSelected(), {_userAction: true, _currentType: 'toolbar', _currentNode: button });
						}
						
					}
				}),
			hideMenu = function() {
				fm.toHide(menu);
			},
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left,
					maxHeight : fmNode.height() - 40
				};
			},
			getSelected = function() {
				var sel = fm.selected(),
					cwd;
				if (!sel.length) {
					if (cwd = fm.cwd()) {
						sel = [ fm.cwd().hash ];
					} else {
						sel = void(0);
					}
				}
				return sel;
			},
			tm;
			
		text.hide();
		
		// set self button object to cmd object
		cmd.button = button;
		
		// if command has variants create menu
		if (Array.isArray(cmd.variants)) {
			button.addClass('elfinder-menubutton');
			
			menu = $('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-' + prvCname + '-menu ui-corner-all"></div>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function() { $(this).toggleClass(hover); })
				.on('click', '.'+item, function(e) {
					var opts = $(this).data('value');
					e.preventDefault();
					e.stopPropagation();
					button.removeClass(hover);
					fm.toHide(menu);
					if (typeof opts === 'undefined') {
						opts = {};
					}
					if (typeof opts === 'object') {
						opts._userAction = true;
					}
					fm.exec(cmd.name, getSelected(), opts);
				})
				.on('close', hideMenu);

			fm.bind('disable select', hideMenu).getUI().on('click', hideMenu);
			
			cmd.change(function() {
				menu.html('');
				$.each(cmd.variants, function(i, variant) {
					menu.append($('<div class="'+item+'">'+variant[1]+'</div>').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : ''));
				});
			});
		}	
			
		cmd.change(function() {
			var cName;
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				if (cmd.disabled()) {
					button.removeClass(active+' '+hover).addClass(disabled);
				} else {
					button.removeClass(disabled);
					button[cmd.active() ? 'addClass' : 'removeClass'](active);
				}
				if (cmd.syncTitleOnChange) {
					cName = cmd.className? cmd.className : cmd.name;
					if (prvCname !== cName) {
						button.children('.elfinder-button-icon').removeClass('elfinder-button-icon-' + prvCname).addClass('elfinder-button-icon-' + cName);
						if (menu) {
							menu.removeClass('elfinder-button-' + prvCname + '-menu').addClass('elfinder-button-' + cName + '-menu');
						}
						prvCname = cName;
					}
					text.html(cmd.title);
					button.attr('title', cmd.title);
				}
			});
		})
		.change();
	});
};


/*
 * File: /js/ui/contextmenu.js
 */

/**
 * @class  elFinder contextmenu
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindercontextmenu = function(fm) {
		return this.each(function() {
		var self   = $(this),
			cmItem = 'elfinder-contextmenu-item',
			smItem = 'elfinder-contextsubmenu-item',
			exIcon = 'elfinder-contextmenu-extra-icon',
			cHover = fm.res('class', 'hover'),
			dragOpt = {
				distance: 8,
				start: function() {
					menu.data('drag', true).data('touching') && menu.find('.'+cHover).removeClass(cHover);
				},
				stop: function() {
					menu.data('draged', true).removeData('drag');
				}
			},
			menu = $(this).addClass('touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-'+fm.direction)
				.hide()
				.on('touchstart', function(e) {
					menu.data('touching', true).children().removeClass(cHover);
				})
				.on('touchend', function(e) {
					menu.removeData('touching');
				})
				.on('mouseenter mouseleave', '.'+cmItem, function(e) {
					$(this).toggleClass(cHover, (e.type === 'mouseenter' || (! menu.data('draged') && menu.data('submenuKeep'))? true : false));
					if (menu.data('draged') && menu.data('submenuKeep')) {
						menu.find('.elfinder-contextmenu-sub:visible').parent().addClass(cHover);
					}
				})
				.on('mouseenter mouseleave', '.'+exIcon, function(e) {
					$(this).parent().toggleClass(cHover, e.type === 'mouseleave');
				})
				.on('mouseenter mouseleave', '.'+cmItem+',.'+smItem, function(e) {
					var setIndex = function(target, sub) {
						$.each(sub? subnodes : nodes, function(i, n) {
							if (target[0] === n) {
								(sub? subnodes : nodes)._cur = i;
								if (sub) {
									subselected = target;
								} else {
									selected = target;
								}
								return false;
							}
						});
					};
					if (e.originalEvent) {
						var target = $(this),
							unHover = function() {
								if (selected && !selected.children('div.elfinder-contextmenu-sub:visible').length) {
									selected.removeClass(cHover);
								}
							};
						if (e.type === 'mouseenter') {
							// mouseenter
							if (target.hasClass(smItem)) {
								// submenu
								if (subselected) {
									subselected.removeClass(cHover);
								}
								if (selected) {
									subnodes = selected.find('div.'+smItem);
								}
								setIndex(target, true);
							} else {
								// menu
								unHover();
								setIndex(target);
							}
						} else {
							// mouseleave
							if (target.hasClass(smItem)) {
								//submenu
								subselected = null;
								subnodes = null;
							} else {
								// menu
								unHover();
								(function(sel) {
									setTimeout(function() {
										if (sel === selected) {
											selected = null;
										}
									}, 250);
								})(selected);
							}
						}
					}
				})
				.on('contextmenu', function(){return false;})
				.on('mouseup', function() {
					setTimeout(function() {
						menu.removeData('draged');
					}, 100);
				})
				.draggable(dragOpt),
			ltr = fm.direction === 'ltr',
			subpos = ltr? 'left' : 'right',
			types = Object.assign({}, fm.options.contextmenu),
			tpl     = '<div class="'+cmItem+'{className}"><span class="elfinder-button-icon {icon} elfinder-contextmenu-icon"{style}></span><span>{label}</span></div>',
			item = function(label, icon, callback, opts) {
				var className = '',
					style = '',
					iconClass = '',
					v, pos;
				if (opts) {
					if (opts.className) {
						className = ' ' + opts.className;
					}
					if (opts.iconClass) {
						iconClass = opts.iconClass;
						icon = '';
					}
					if (opts.iconImg) {
						v = opts.iconImg.split(/ +/);
						pos = v[1] && v[2]? fm.escape(v[1] + 'px ' + v[2] + 'px') : '';
						style = ' style="background:url(\''+fm.escape(v[0])+'\') '+(pos? pos : '0 0')+' no-repeat;'+(pos? '' : 'posbackground-size:contain;')+'"';
					}
				}
				return $(tpl.replace('{icon}', icon ? 'elfinder-button-icon-'+icon : (iconClass? iconClass : ''))
						.replace('{label}', label)
						.replace('{style}', style)
						.replace('{className}', className))
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						callback();
					});
			},
			urlIcon = function(iconUrl) {
				var v = iconUrl.split(/ +/),
					pos = v[1] && v[2]? (v[1] + 'px ' + v[2] + 'px') : '';
				return {
					backgroundImage: 'url("'+v[0]+'")',
					backgroundRepeat: 'no-repeat',
					backgroundPosition: pos? pos : '',
					backgroundSize: pos? '' : 'contain'
				};
			},
			base, cwd,
			nodes, selected, subnodes, subselected, autoSyncStop, subHoverTm,

			autoToggle = function() {
				var evTouchStart = 'touchstart.contextmenuAutoToggle';
				menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
				if (menu.is(':visible')) {
					menu.on('touchstart', function(e) {
						if (e.originalEvent.touches.length > 1) {
							return;
						}
						menu.stop();
						fm.toFront(menu);
						menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
					})
					.data('hideTm', setTimeout(function() {
						if (menu.is(':visible')) {
							cwd.find('.elfinder-cwd-file').off(evTouchStart);
							cwd.find('.elfinder-cwd-file.ui-selected')
							.one(evTouchStart, function(e) {
								if (e.originalEvent.touches.length > 1) {
									return;
								}
								var tgt = $(e.target);
								if (menu.first().length && !tgt.is('input:checkbox') && !tgt.hasClass('elfinder-cwd-select')) {
									e.stopPropagation();
									//e.preventDefault();
									open(e.originalEvent.touches[0].pageX, e.originalEvent.touches[0].pageY);
									cwd.data('longtap', true)
									tgt.one('touchend', function() {
										setTimeout(function() {
											cwd.removeData('longtap');
										}, 80);
									});
									return;
								}
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							})
							.one('unselect.'+fm.namespace, function() {
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							});
							menu.fadeOut({
								duration: 300,
								fail: function() {
									menu.css('opacity', '1').show();
								},
								done: function() {
									fm.toHide(menu);
								}
							});
						}
					}, 4500));
				}
			},
			
			keyEvts = function(e) {
				var code = e.keyCode,
					ESC = $.ui.keyCode.ESCAPE,
					ENT = $.ui.keyCode.ENTER,
					LEFT = $.ui.keyCode.LEFT,
					RIGHT = $.ui.keyCode.RIGHT,
					UP = $.ui.keyCode.UP,
					DOWN = $.ui.keyCode.DOWN,
					subent = fm.direction === 'ltr'? RIGHT : LEFT,
					sublev = subent === RIGHT? LEFT : RIGHT;
				
				if ($.inArray(code, [ESC, ENT, LEFT, RIGHT, UP, DOWN]) !== -1) {
					e.preventDefault();
					e.stopPropagation();
					e.stopImmediatePropagation();
					if (code == ESC || code === sublev) {
						if (selected && subnodes && subselected) {
							subselected.trigger('mouseleave').trigger('submenuclose');
							selected.addClass(cHover);
							subnodes = null;
							subselected = null;
						} else {
							code == ESC && close();
						}
					} else if (code == UP || code == DOWN) {
						if (subnodes) {
							if (subselected) {
								subselected.trigger('mouseleave');
							}
							if (code == DOWN && (! subselected || subnodes.length <= ++subnodes._cur)) {
								subnodes._cur = 0;
							} else if (code == UP && (! subselected || --subnodes._cur < 0)) {
								subnodes._cur = subnodes.length - 1;
							}
							subselected = subnodes.eq(subnodes._cur).trigger('mouseenter');
						} else {
							subnodes = null;
							if (selected) {
								selected.trigger('mouseleave');
							}
							if (code == DOWN && (! selected || nodes.length <= ++nodes._cur)) {
								nodes._cur = 0;
							} else if (code == UP && (! selected || --nodes._cur < 0)) {
								nodes._cur = nodes.length - 1;
							}
							selected = nodes.eq(nodes._cur).addClass(cHover);
						}
					} else if (selected && (code == ENT || code === subent)) {
						if (selected.hasClass('elfinder-contextmenu-group')) {
							if (subselected) {
								code == ENT && subselected.click();
							} else {
								selected.trigger('mouseenter');
								subnodes = selected.find('div.'+smItem);
								subnodes._cur = 0;
								subselected = subnodes.first().addClass(cHover);
							}
						} else {
							code == ENT && selected.click();
						}
					}
				}
			},
			
			open = function(x, y, css) {
				var width      = menu.outerWidth(),
					height     = menu.outerHeight(),
					bstyle     = base.attr('style'),
					bpos       = base.offset(),
					bwidth     = base.width(),
					bheight    = base.height(),
					mw         = fm.UA.Mobile? 40 : 2,
					mh         = fm.UA.Mobile? 20 : 2,
					x          = x - (bpos? bpos.left : 0),
					y          = y - (bpos? bpos.top : 0),
					css        = Object.assign(css || {}, {
						top  : Math.max(0, y + mh + height < bheight ? y + mh : y - (y + height - bheight)),
						left : Math.max(0, (x < width + mw || x + mw + width < bwidth)? x + mw : x - mw - width),
						opacity : '1'
					}),
					evts;

				autoSyncStop = true;
				fm.autoSync('stop');
				base.width(bwidth);
				menu.stop().removeAttr('style').css(css);
				fm.toFront(menu);
				menu.show();
				base.attr('style', bstyle);
				
				css[subpos] = parseInt(menu.width());
				menu.find('.elfinder-contextmenu-sub').css(css);
				if (fm.UA.iOS) {
					$('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'auto');
				}
				
				selected = null;
				subnodes = null;
				subselected = null;
				$(document).on('keydown.' + fm.namespace, keyEvts);
				evts = $._data(document).events;
				if (evts && evts.keydown) {
					evts.keydown.unshift(evts.keydown.pop());
				}
				
				fm.UA.Mobile && autoToggle();
				
				requestAnimationFrame(function() {
					fm.getUI().one('click.' + fm.namespace, close);
				});
			},
			
			close = function() {
				fm.getUI().off('click.' + fm.namespace, close);
				$(document).off('keydown.' + fm.namespace, keyEvts);

				currentType = currentTargets = null;
				
				if (menu.is(':visible') || menu.children().length) {
					fm.toHide(menu.removeAttr('style').empty().removeData('submenuKeep'));
					try {
						if (! menu.draggable('instance')) {
							menu.draggable(dragOpt);
						}
					} catch(e) {
						if (! menu.hasClass('ui-draggable')) {
							menu.draggable(dragOpt);
						}
					}
					if (menu.data('prevNode')) {
						menu.data('prevNode').after(menu);
						menu.removeData('prevNode');
					}
					fm.trigger('closecontextmenu');
					if (fm.UA.iOS) {
						$('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'touch');
					}
				}
				
				autoSyncStop && fm.searchStatus.state < 1 && ! fm.searchStatus.ininc && fm.autoSync();
				autoSyncStop = false;
			},
			
			create = function(type, targets) {
				var sep    = false,
					insSep = false,
					disabled = [],
					isCwd = type === 'cwd',
					selcnt = 0,
					cmdMap;

				currentType = type;
				currentTargets = targets;
				
				// get current uiCmdMap option
				if (!(cmdMap = fm.option('uiCmdMap', isCwd? void(0) : targets[0]))) {
					cmdMap = {};
				}
				
				if (!isCwd) {
					disabled = fm.getDisabledCmds(targets);
				}
				
				selcnt = fm.selected().length;
				if (selcnt > 1) {
					menu.append('<div class="ui-corner-top ui-widget-header elfinder-contextmenu-header"><span>'
					 + fm.i18n('selectedItems', ''+selcnt)
					 + '</span></div>');
				}
				
				nodes = $();
				$.each(types[type]||[], function(i, name) {
					var cmd, cmdName, useMap, node, submenu, hover;
					
					if (name === '|') {
						if (sep) {
							insSep = true;
						}
						return;
					}
					
					if (cmdMap[name]) {
						cmdName = cmdMap[name];
						useMap = true;
					} else {
						cmdName = name;
					}
					cmd = fm.getCommand(cmdName);

					if (cmd && !isCwd && (!fm.searchStatus.state || !cmd.disableOnSearch)) {
						cmd.__disabled = cmd._disabled;
						cmd._disabled = !(cmd.alwaysEnabled || (fm._commands[cmdName] ? $.inArray(name, disabled) === -1 && (!useMap || !disabled[cmdName]) : false));
						$.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c.__disabled = c._disabled;
								c._disabled = !(c.alwaysEnabled || (fm._commands[n] ? !disabled[n] : false));
							}
						});
					}

					if (cmd && !cmd._disabled && cmd.getstate(targets) != -1) {
						if (cmd.variants) {
							if (!cmd.variants.length) {
								return;
							}
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function(){}, cmd.contextmenuOpts);
							
							submenu = $('<div class="ui-front ui-corner-all elfinder-contextmenu-sub"></div>')
								.hide()
								.css('max-height', fm.getUI().height() - 30)
								.appendTo(node.append('<span class="elfinder-contextmenu-arrow"></span>'));
							
							hover = function(show){
								if (! show) {
									submenu.hide();
								} else {
									var bstyle = base.attr('style');
									base.width(base.width());
									// top: '-1000px' to prevent visible scrollbar of window with the elFinder option `height: '100%'`
									submenu.css({ top: '-1000px', left: 'auto', right: 'auto' });
									var nodeOffset = node.offset(),
										nodeleft   = nodeOffset.left,
										nodetop    = nodeOffset.top,
										nodewidth  = node.outerWidth(),
										width      = submenu.outerWidth(true),
										height     = submenu.outerHeight(true),
										baseOffset = base.offset(),
										wwidth     = baseOffset.left + base.width(),
										wheight    = baseOffset.top + base.height(),
										cltr       = ltr, 
										x          = nodewidth,
										y, over;
	
									if (ltr) {
										over = (nodeleft + nodewidth + width) - wwidth;
										if (over > 10) {
											if (nodeleft > width - 5) {
												x = x - 5;
												cltr = false;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									} else {
										over = width - nodeleft;
										if (over > 0) {
											if ((nodeleft + nodewidth + width - 15) < wwidth) {
												x = x - 5;
												cltr = true;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									}
									over = (nodetop + 5 + height) - wheight;
									y = (over > 0 && nodetop < wheight)? 5 - over : (over > 0? 30 - height : 5);
	
									menu.find('.elfinder-contextmenu-sub:visible').hide();
									submenu.css({
										top : y,
										left : cltr? x : 'auto',
										right: cltr? 'auto' : x,
										overflowY: 'auto'
									}).show();
									base.attr('style', bstyle);
								}
							};
							
							node.addClass('elfinder-contextmenu-group')
								.on('mouseleave', '.elfinder-contextmenu-sub', function(e) {
									if (! menu.data('draged')) {
										menu.removeData('submenuKeep');
									}
								})
								.on('submenuclose', '.elfinder-contextmenu-sub', function(e) {
									hover(false);
								})
								.on('click', '.'+smItem, function(e){
									var opts, $this;
									e.stopPropagation();
									if (! menu.data('draged')) {
										$this = $(this);
										if (!cmd.keepContextmenu) {
											menu.hide();
										} else {
											$this.removeClass(cHover);
											node.addClass(cHover);
										}
										opts = $this.data('exec');
										if (typeof opts === 'undefined') {
											opts = {};
										}
										if (typeof opts === 'object') {
											opts._userAction = true;
											opts._currentType = type;
											opts._currentNode = $this;
										}
										!cmd.keepContextmenu && close();
										fm.exec(cmd.name, targets, opts);
									}
								})
								.on('touchend', function(e) {
									if (! menu.data('drag')) {
										hover(true);
										menu.data('submenuKeep', true);
									}
								})
								.on('mouseenter mouseleave', function(e){
									if (! menu.data('touching')) {
										if (node.data('timer')) {
											clearTimeout(node.data('timer'));
											node.removeData('timer');
										}
										if (!$(e.target).closest('.elfinder-contextmenu-sub', menu).length) {
											if (e.type === 'mouseleave') {
												if (! menu.data('submenuKeep')) {
													node.data('timer', setTimeout(function() {
														node.removeData('timer');
														hover(false);
													}, 250));
												}
											} else {
												node.data('timer', setTimeout(function() {
													node.removeData('timer');
													hover(true);
												}, nodes.find('div.elfinder-contextmenu-sub:visible').length? 250 : 0));
											}
										}
									}
								});
							
							$.each(cmd.variants, function(i, variant) {
								var item = variant === '|' ? '<div class="elfinder-contextmenu-separator"></div>' :
									$('<div class="'+cmItem+' '+smItem+'"><span>'+variant[1]+'</span></div>').data('exec', variant[0]),
									iconClass, icon;
								if (typeof variant[2] !== 'undefined') {
									icon = $('<span></span>').addClass('elfinder-button-icon elfinder-contextmenu-icon');
									if (! /\//.test(variant[2])) {
										icon.addClass('elfinder-button-icon-'+variant[2]);
									} else {
										icon.css(urlIcon(variant[2]));
									}
									item.prepend(icon).addClass(smItem+'-icon');
								}
								submenu.append(item);
							});
								
						} else {
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function() {
								if (! menu.data('draged')) {
									!cmd.keepContextmenu && close();
									fm.exec(cmd.name, targets, {_userAction: true, _currentType: type, _currentNode: node});
								}
							}, cmd.contextmenuOpts);
							if (cmd.extra && cmd.extra.node) {
								$('<span class="elfinder-button-icon elfinder-button-icon-'+(cmd.extra.icon || '')+' '+exIcon+'"></span>')
									.append(cmd.extra.node).appendTo(node);
								$(cmd.extra.node).trigger('ready', {targets: targets});
							} else {
								node.remove('.'+exIcon);
							}
						}
						
						if (cmd.extendsCmd) {
							node.children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
						}
						
						if (insSep) {
							menu.append('<div class="elfinder-contextmenu-separator"></div>');
						}
						menu.append(node);
						sep = true;
						insSep = false;
					}
					
					if (cmd && typeof cmd.__disabled !== 'undefined') {
						cmd._disabled = cmd.__disabled;
						delete cmd.__disabled;
						$.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c._disabled = c.__disabled;
								delete c.__disabled;
							}
						});
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			createFromRaw = function(raw) {
				currentType = 'raw';
				$.each(raw, function(i, data) {
					var node;
					
					if (data === '|') {
						menu.append('<div class="elfinder-contextmenu-separator"></div>');
					} else if (data.label && typeof data.callback == 'function') {
						node = item(data.label, data.icon, function() {
							if (! menu.data('draged')) {
								!data.remain && close();
								data.callback();
							}
						}, data.options || null);
						menu.append(node);
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			currentType = null,
			currentTargets = null;
		
		fm.one('load', function() {
			base = fm.getUI();
			cwd = fm.getUI('cwd');
			fm.bind('contextmenu', function(e) {
				var data = e.data,
					css = {},
					prevNode;

				if (data.type && data.type !== 'files') {
					cwd.trigger('unselectall');
				}
				close();

				if (data.type && data.targets) {
					fm.trigger('contextmenucreate', data);
					create(data.type, data.targets);
					fm.trigger('contextmenucreatedone', data);
				} else if (data.raw) {
					createFromRaw(data.raw);
				}

				if (menu.children().length) {
					prevNode = data.prevNode || null;
					if (prevNode) {
						menu.data('prevNode', menu.prev());
						prevNode.after(menu);
					}
					if (data.fitHeight) {
						css = {maxHeight: Math.min(fm.getUI().height(), $(window).height()), overflowY: 'auto'};
						menu.draggable('destroy').removeClass('ui-draggable');
					}
					open(data.x, data.y, css);
					// call opened callback function
					if (data.opened && typeof data.opened === 'function') {
						data.opened.call(menu);
					}
				}
			})
			.one('destroy', function() { menu.remove(); })
			.bind('disable', close)
			.bind('select', function(e){
				(currentType === 'files' && (!e.data || e.data.selected.toString() !== currentTargets.toString())) && close();
			});
		})
		.shortcut({
			pattern     : fm.OS === 'mac' ? 'ctrl+m' : 'contextmenu shift+f10',
			description : 'contextmenu',
			callback    : function(e) {
				e.stopPropagation();
				e.preventDefault();
				$(document).one('contextmenu.' + fm.namespace, function(e) {
					e.preventDefault();
					e.stopPropagation();
				});
				var sel = fm.selected(),
					type, targets, pos, elm;
				
				if (sel.length) {
					type = 'files';
					targets = sel;
					elm = fm.cwdHash2Elm(sel[0]);
				} else {
					type = 'cwd';
					targets = [ fm.cwd().hash ];
					pos = fm.getUI('workzone').offset();
				}
				if (! elm || ! elm.length) {
					elm = fm.getUI('workzone');
				}
				pos = elm.offset();
				pos.top += (elm.height() / 2);
				pos.left += (elm.width() / 2);
				fm.trigger('contextmenu', {
					'type'    : type,
					'targets' : targets,
					'x'       : pos.left,
					'y'       : pos.top
				});
			}
		});
		
	});
	
};


/*
 * File: /js/ui/cwd.js
 */

/**
 * elFinder current working directory ui.
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindercwd = function(fm, options) {
		this.not('.elfinder-cwd').each(function() {
		// fm.time('cwdLoad');
		
		var mobile = fm.UA.Mobile,
			list = fm.viewType == 'list',

			undef = 'undefined',
			/**
			 * Select event full name
			 *
			 * @type String
			 **/
			evtSelect = 'select.'+fm.namespace,
			
			/**
			 * Unselect event full name
			 *
			 * @type String
			 **/
			evtUnselect = 'unselect.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtDisable = 'disable.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtEnable = 'enable.'+fm.namespace,
			
			c = 'class',
			/**
			 * File css class
			 *
			 * @type String
			 **/
			clFile       = fm.res(c, 'cwdfile'),
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			fileSelector = '.'+clFile,
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			clSelected = 'ui-selected',
			
			/**
			 * Disabled css class
			 *
			 * @type String
			 **/
			clDisabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable css class
			 *
			 * @type String
			 **/
			clDraggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable css class
			 *
			 * @type String
			 **/
			clDroppable = fm.res(c, 'droppable'),
			
			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clHover     = fm.res(c, 'hover'),

			/**
			 * Active css class
			 *
			 * @type String
			 **/
			clActive     = fm.res(c, 'active'),

			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clDropActive = fm.res(c, 'adroppable'),

			/**
			 * Css class for temporary nodes (for mkdir/mkfile) commands
			 *
			 * @type String
			 **/
			clTmp = clFile+'-tmp',

			/**
			 * Select checkbox css class
			 * 
			 * @type String
			 */
			clSelChk = 'elfinder-cwd-selectchk',

			/**
			 * Number of thumbnails to load in one request (new api only)
			 *
			 * @type Number
			 **/
			tmbNum = fm.options.loadTmbs > 0 ? fm.options.loadTmbs : 5,
			
			/**
			 * Current search query.
			 *
			 * @type String
			 */
			query = '',

			/**
			 * Currect clipboard(cut) hashes as object key
			 * 
			 * @type Object
			 */
			clipCuts = {},

			/**
			 * Parents hashes of cwd
			 *
			 * @type Array
			 */
			cwdParents = [],
			
			/**
			 * cwd current hashes
			 * 
			 * @type Array
			 */
			cwdHashes = [],

			/**
			 * incsearch current hashes
			 * 
			 * @type Array
			 */
			incHashes = void 0,

			/**
			 * Custom columns name and order
			 *
			 * @type Array
			 */
			customCols = [],

			/**
			 * Current clicked element id of first time for dblclick
			 * 
			 * @type String
			 */
			curClickId = '',

			/**
			 * Custom columns builder
			 *
			 * @type Function
			 */
			customColsBuild = function() {
				var cols = '';
				for (var i = 0; i < customCols.length; i++) {
					cols += '<td class="elfinder-col-'+customCols[i]+'">{' + customCols[i] + '}</td>';
				}
				return cols;
			},

			/**
			 * Make template.row from customCols
			 *
			 * @type Function
			 */
			makeTemplateRow = function() {
				return '<tr id="{id}" class="'+clFile+' {permsclass} {dirclass}" title="{tooltip}"{css}><td class="elfinder-col-name"><div class="elfinder-cwd-file-wrapper"><span class="elfinder-cwd-icon {mime}"{style}></span>{marker}<span class="elfinder-cwd-filename">{name}</span></div>'+selectCheckbox+'</td>'+customColsBuild()+'</tr>';
			},
			
			selectCheckbox = ($.map(options.showSelectCheckboxUA, function(t) {return (fm.UA[t] || t.match(/^all$/i))? true : null;}).length)? '<div class="elfinder-cwd-select"><input type="checkbox" class="'+clSelChk+'"></div>' : '',

			colResizing = false,
			
			colWidth = null,

			/**
			 * Table header height
			 */
			thHeight,

			/**
			 * File templates
			 *
			 * @type Object
			 **/
			templates = {
				icon : '<div id="{id}" class="'+clFile+' {permsclass} {dirclass} ui-corner-all" title="{tooltip}"><div class="elfinder-cwd-file-wrapper ui-corner-all"><div class="elfinder-cwd-icon {mime} ui-corner-all" unselectable="on"{style}></div>{marker}</div><div class="elfinder-cwd-filename" title="{nametitle}">{name}</div>'+selectCheckbox+'</div>',
				row  : ''
			},
			
			permsTpl = fm.res('tpl', 'perms'),
			
			lockTpl = fm.res('tpl', 'lock'),
			
			symlinkTpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Template placeholders replacement rules
			 *
			 * @type Object
			 **/
			replacement = {
				id : function(f) {
					return fm.cwdHash2Id(f.hash);
				},
				name : function(f) {
					var name = fm.escape(f.i18 || f.name);
					!list && (name = name.replace(/([_.])/g, '&#8203;$1'));
					return name;
				},
				nametitle : function(f) {
					return fm.escape(f.i18 || f.name);
				},
				permsclass : function(f) {
					return fm.perms2class(f);
				},
				perm : function(f) {
					return fm.formatPermissions(f);
				},
				dirclass : function(f) {
					var cName = f.mime == 'directory' ? 'directory' : '';
					f.isroot && (cName += ' isroot');
					f.csscls && (cName += ' ' + fm.escape(f.csscls));
					options.getClass && (cName += ' ' + options.getClass(f));
					return cName;
				},
				style : function(f) {
					return f.icon? fm.getIconStyle(f) : '';
				},
				mime : function(f) {
					var cName = fm.mime2class(f.mime);
					f.icon && (cName += ' elfinder-cwd-bgurl');
					return cName;
				},
				size : function(f) {
					return (f.mime === 'directory' && !f.size)? '-' : fm.formatSize(f.size);
				},
				date : function(f) {
					return fm.formatDate(f);
				},
				kind : function(f) {
					return fm.mime2kind(f);
				},
				mode : function(f) {
					return f.perm? fm.formatFileMode(f.perm) : '';
				},
				modestr : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'string') : '';
				},
				modeoct : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'octal') : '';
				},
				modeboth : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'both') : '';
				},
				marker : function(f) {
					return (f.alias || f.mime == 'symlink-broken' ? symlinkTpl : '')+(!f.read || !f.write ? permsTpl : '')+(f.locked ? lockTpl : '');
				},
				tooltip : function(f) {
					var title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
						info  = '';
					if (query && f.path) {
						info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
					} else {
						info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
					}
					if (list) {
						info += (info? '&#13;' : '') + fm.escape(f.i18 || f.name);
					}
					return info? info + '&#13;' + title : title;
				}
			},
			
			/**
			 * Type badge CSS added flag
			 * 
			 * @type Object
			 */
			addedBadges = {},
			
			/**
			 * Type badge style sheet element
			 * 
			 * @type Object
			 */
			addBadgeStyleSheet,
			
			/**
			 * Add type badge CSS into 'head'
			 * 
			 * @type Fundtion
			 */
			addBadgeStyle = function(mime, name) {
				var sel, ext, type;
				if (mime && ! addedBadges[mime]) {
					if (typeof addBadgeStyleSheet === 'undefined') {
						if ($('#elfinderAddBadgeStyle'+fm.namespace).length) {
							$('#elfinderAddBadgeStyle'+fm.namespace).remove();
						}
						addBadgeStyleSheet = $('<style id="addBadgeStyle'+fm.namespace+'"></style>').insertBefore($('head').children(':first')).get(0).sheet || null;
					}
					if (addBadgeStyleSheet) {
						mime = mime.toLowerCase();
						type = mime.split('/');
						ext = fm.escape(fm.mimeTypes[mime] || (name.replace(/.bac?k$/i, '').match(/\.([^.]+)$/) || ['',''])[1]);
						if (ext) {
							sel = '.elfinder-cwd-icon-' + type[0].replace(/(\.|\+)/g, '-');
							if (typeof type[1] !== 'undefined') {
								sel += '.elfinder-cwd-icon-' + type[1].replace(/(\.|\+)/g, '-');
							}
							try {
								addBadgeStyleSheet.insertRule(sel + ':before{content:"' + ext.toLowerCase() + '"}', 0);
							} catch(e) {}
						}
						addedBadges[mime] = true;
					}
				}
			},
			
			/**
			 * Return file html
			 *
			 * @param  Object  file info
			 * @return String
			 **/
			itemhtml = function(f) {
				f.mime && f.mime !== 'directory' && !addedBadges[f.mime] && addBadgeStyle(f.mime, f.name);
				return templates[list ? 'row' : 'icon']
						.replace(/\{([a-z0-9_]+)\}/g, function(s, e) { 
							return replacement[e] ? replacement[e](f, fm) : (f[e] ? f[e] : ''); 
						});
			},
			
			/**
			 * jQueery node that will be selected next
			 * 
			 * @type Object jQuery node
			 */
			selectedNext = $(),
			
			/**
			 * Flag. Required for msie to avoid unselect files on dragstart
			 *
			 * @type Boolean
			 **/
			selectLock = false,
			
			/**
			 * Move selection to prev/next file
			 *
			 * @param String  move direction
			 * @param Boolean append to current selection
			 * @return void
			 * @rise select			
			 */
			select = function(keyCode, append) {
				var code     = $.ui.keyCode,
					prev     = keyCode == code.LEFT || keyCode == code.UP,
					sel      = cwd.find('[id].'+clSelected),
					selector = prev ? 'first:' : 'last',
					s, n, sib, top, left;

				function sibling(n, direction) {
					return n[direction+'All']('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):first');
				}
				
				if (sel.length) {
					s = sel.filter(prev ? ':first' : ':last');
					sib = sibling(s, prev ? 'prev' : 'next');
					
					if (!sib.length) {
						// there is no sibling on required side - do not move selection
						n = s;
					} else if (list || keyCode == code.LEFT || keyCode == code.RIGHT) {
						// find real prevoius file
						n = sib;
					} else {
						// find up/down side file in icons view
						top = s.position().top;
						left = s.position().left;

						n = s;
						if (prev) {
							do {
								n = n.prev('[id]');
							} while (n.length && !(n.position().top < top && n.position().left <= left));

							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'next');
							}
						} else {
							do {
								n = n.next('[id]');
							} while (n.length && !(n.position().top > top && n.position().left >= left));
							
							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'prev');
							}
							// there is row before last one - select last file
							if (!n.length) {
								sib = cwd.find('[id]:not(.'+clDisabled+'):last');
								if (sib.position().top > top) {
									n = sib;
								}
							}
						}
					}
					// !append && unselectAll();
				} else {
					if (selectedNext.length) {
						n = prev? selectedNext.prev() : selectedNext;
					} else {
						// there are no selected file - select first/last one
						n = cwd.find('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):'+(prev ? 'last' : 'first'));
					}
				}
				
				if (n && n.length && !n.hasClass('elfinder-cwd-parent')) {
					if (s && append) {
						// append new files to selected
						n = s.add(s[prev ? 'prevUntil' : 'nextUntil']('#'+n.attr('id'))).add(n);
					} else {
						// unselect selected files
						sel.trigger(evtUnselect);
					}
					// select file(s)
					n.trigger(evtSelect);
					// set its visible
					scrollToView(n.filter(prev ? ':first' : ':last'));
					// update cache/view
					trigger();
				}
			},
			
			selectedFiles = {},
			
			selectFile = function(hash) {
				fm.cwdHash2Elm(hash).trigger(evtSelect);
			},
			
			allSelected = false,
			
			selectAll = function() {
				var phash = fm.cwd().hash;

				selectCheckbox && selectAllCheckbox.find('input').prop('checked', true);
				fm.lazy(function() {
					var files;
					if (fm.maxTargets && (incHashes || cwdHashes).length > fm.maxTargets) {
						unselectAll({ notrigger: true });
						files = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
						files = files.slice(0, fm.maxTargets);
						selectedFiles = {};
						$.each(files, function(i, v) {
							selectedFiles[v.hash] = true;
							fm.cwdHash2Elm(v.hash).trigger(evtSelect);
						});
						fm.toast({mode: 'warning', msg: fm.i18n(['errMaxTargets', fm.maxTargets])});
					} else {
						cwd.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').trigger(evtSelect);
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					trigger();
					selectCheckbox && selectAllCheckbox.data('pending', false);
				}, 0, {repaint: true});
			},
			
			/**
			 * Unselect all files
			 *
			 * @param  Object  options
			 * @return void
			 */
			unselectAll = function(opts) {
				var o = opts || {};
				selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
				if (Object.keys(selectedFiles).length) {
					selectLock = false;
					selectedFiles = {};
					cwd.find('[id].'+clSelected).trigger(evtUnselect);
					selectCheckbox && cwd.find('input:checkbox.'+clSelChk).prop('checked', false);
				}
				!o.notrigger && trigger();
				selectCheckbox && selectAllCheckbox.data('pending', false);
				cwd.removeClass('elfinder-cwd-allselected');
			},
			
			selectInvert = function() {
				var invHashes = {};
				if (allSelected) {
					unselectAll();
				} else if (! Object.keys(selectedFiles).length) {
					selectAll();
				} else {
					$.each((incHashes || cwdHashes), function(i, h) {
						var itemNode = fm.cwdHash2Elm(h);
						if (! selectedFiles[h]) {
							invHashes[h] = true;
							itemNode.length && itemNode.trigger(evtSelect);
						} else {
							itemNode.length && itemNode.trigger(evtUnselect);
						}
					});
					selectedFiles = invHashes;
					trigger();
				}
			},
			
			/**
			 * Return selected files hashes list
			 *
			 * @return Array
			 */
			selected = function() {
				return Object.keys(selectedFiles);
			},
			
			/**
			 * Last selected node id
			 * 
			 * @type String|Void
			 */
			lastSelect = void 0,
			
			/**
			 * Fire elfinder "select" event and pass selected files to it
			 *
			 * @return void
			 */
			trigger = function() {
				var selected = Object.keys(selectedFiles),
					opts = {
						selected : selected,
						origin : 'cwd'
					};
				
				if (oldSchoolItem && (selected.length > 1 || selected[0] !== fm.cwdId2Hash(
					oldSchoolItem.attr('id'))) && oldSchoolItem.hasClass(clSelected)) {
					oldSchoolItem.trigger(evtUnselect);
				}
				allSelected = selected.length && (selected.length === (incHashes || cwdHashes).length) && (!fm.maxTargets || selected.length <= fm.maxTargets);
				if (selectCheckbox) {
					selectAllCheckbox.find('input').prop('checked', allSelected);
					cwd[allSelected? 'addClass' : 'removeClass']('elfinder-cwd-allselected');
				}
				if (allSelected) {
					opts.selectall = true;
				} else if (! selected.length) {
					opts.unselectall = true;
				}
				fm.trigger('select', opts);
			},
			
			/**
			 * Scroll file to set it visible
			 *
			 * @param DOMElement  file/dir node
			 * @return void
			 */
			scrollToView = function(o, blink) {
				if (! o.length) {
					return;
				}
				var ftop    = o.position().top,
					fheight = o.outerHeight(true),
					wtop    = wrapper.scrollTop(),
					wheight = wrapper.get(0).clientHeight,
					thheight = tableHeader? tableHeader.outerHeight(true) : 0;

				if (ftop + thheight + fheight > wtop + wheight) {
					wrapper.scrollTop(parseInt(ftop + thheight + fheight - wheight));
				} else if (ftop < wtop) {
					wrapper.scrollTop(ftop);
				}
				list && wrapper.scrollLeft(0);
				!!blink && fm.resources.blink(o, 'lookme');
			},
			
			/**
			 * Files we get from server but not show yet
			 *
			 * @type Array
			 **/
			buffer = [],
			
			/**
			 * Extra data of buffer
			 *
			 * @type Object
			 **/
			bufferExt = {},
			
			/**
			 * Return index of elements with required hash in buffer 
			 *
			 * @param String  file hash
			 * @return Number
			 */
			index = function(hash) {
				var l = buffer.length;
				
				while (l--) {
					if (buffer[l].hash == hash) {
						return l;
					}
				}
				return -1;
			},
			
			/**
			 * Scroll start event name
			 *
			 * @type String
			 **/
			scrollStartEvent = 'elfscrstart',
			
			/**
			 * Scroll stop event name
			 *
			 * @type String
			 **/
			scrollEvent = 'elfscrstop',
			
			scrolling = false,
			
			/**
			 * jQuery UI selectable option
			 * 
			 * @type Object
			 */
			selectableOption = {
				disabled   : true,
				filter     : '[id]:first',
				stop       : trigger,
				delay      : 250,
				appendTo   : 'body',
				autoRefresh: false,
				selected   : function(e, ui) { $(ui.selected).trigger(evtSelect); },
				unselected : function(e, ui) { $(ui.unselected).trigger(evtUnselect); }
			},
			
			/**
			 * hashes of items displayed in current view
			 * 
			 * @type Object  ItemHash => DomId
			 */
			inViewHashes = {},
			
			/**
			 * Processing when the current view is changed (On open, search, scroll, resize etc.)
			 * 
			 * @return void
			 */
			wrapperRepaint = function(init, recnt) {
				if (!bufferExt.renderd) {
					return;
				}
				var firstNode = (list? cwd.find('tbody:first') : cwd).children('[id]'+(options.oldSchool? ':not(.elfinder-cwd-parent)' : '')+':first');
				if (!firstNode.length) {
					return;
				}
				var selectable = cwd.data('selectable'),
					rec = (function() {
						var wos = wrapper.offset(),
							ww = wrapper.width(),
							w = $(window),
							x = firstNode.width() / 2,
							l = Math.min(wos.left - w.scrollLeft() + (fm.direction === 'ltr'? x : ww - x), wos.left + ww - 10),
							t = wos.top - w.scrollTop() + 10 + (list? thHeight : 0);
						return {left: Math.max(0, Math.round(l)), top: Math.max(0, Math.round(t))};
					})(),
					tgt = init? firstNode : $(document.elementFromPoint(rec.left , rec.top)),
					ids = {},
					tmbs = {},
					multi = 5,
					cnt = Math.ceil((bufferExt.hpi? Math.ceil((wz.data('rectangle').height / bufferExt.hpi) * 1.5) : showFiles) / multi),
					chk = function() {
						var id, hash, file, i;
						for (i = 0; i < multi; i++) {
							id = tgt.attr('id');
							if (id) {
								bufferExt.getTmbs = [];
								hash = fm.cwdId2Hash(id);
								inViewHashes[hash] = id;
								// for tmbs
								if (bufferExt.attachTmbs[hash]) {
									tmbs[hash] = bufferExt.attachTmbs[hash];
								}
								// for selectable
								selectable && (ids[id] = true);
							}
							// next node
							tgt = tgt.next();
							if (!tgt.length) {
								break;
							}
						}
					},
					done = function() {
						var idsArr;
						if (cwd.data('selectable')) {
							Object.assign(ids, selectedFiles);
							idsArr = Object.keys(ids);
							if (idsArr.length) {
								selectableOption.filter = '#'+idsArr.join(', #');
								cwd.selectable('enable').selectable('option', {filter : selectableOption.filter}).selectable('refresh');
							}
						}
						if (Object.keys(tmbs).length) {
							bufferExt.getTmbs = [];
							attachThumbnails(tmbs);
						}
					},
					setTarget = function() {
						if (!tgt.hasClass(clFile)) {
							tgt = tgt.closest(fileSelector);
						}
					},
					arr, widget;
				
				inViewHashes = {};
				selectable && cwd.selectable('option', 'disabled');
				
				if (tgt.length) {
					if (!tgt.hasClass(clFile) && !tgt.closest(fileSelector).length) {
						// dialog, serach button etc.
						widget = fm.getUI().find('.ui-dialog:visible,.ui-widget:visible');
						if (widget.length) {
							widget.hide();
							tgt = $(document.elementFromPoint(rec.left , rec.top));
							widget.show();
						} else {
							widget = null;
						}
					}
					setTarget();
					if (!tgt.length) {
						// try search 5px down
						widget && widget.hide();
						tgt = $(document.elementFromPoint(rec.left , rec.top + 5));
						widget && widget.show();
						setTarget();
					}
				}

				if (tgt.length) {
					if (tgt.attr('id')) {
						if (init) {
							for (var i = 0; i < cnt; i++) {
								chk();
								if (! tgt.length) {
									break;
								}
							}
							done();
						} else {
							bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
							arr = new Array(cnt);
							bufferExt.repaintJob = fm.asyncJob(function() {
								chk();
								if (! tgt.length) {
									done();
									bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
								}
							}, arr).done(done);
						}
					}
				} else if (init && bufferExt.renderd) {
					// In initial request, cwd DOM not renderd so doing lazy check
					recnt = recnt || 0;
					if (recnt < 10) { // Prevent infinite loop
						requestAnimationFrame(function() {
							wrapperRepaint(init, ++recnt);
						});
					}
				}
			},
			
			/**
			 * Item node of oldScholl ".."
			 */
			oldSchoolItem = null,

			/**
			 * display parent folder with ".." name
			 * 
			 * @param  String  phash
			 * @return void
			 */
			oldSchool = function(p) {
				var phash = fm.cwd().phash,
					pdir  = fm.file(phash) || null,
					set   = function(pdir) {
						if (pdir) {
							oldSchoolItem = $(itemhtml($.extend(true, {}, pdir, {name : '..', i18 : '..', mime : 'directory'})))
								.addClass('elfinder-cwd-parent')
								.on('dblclick', function() {
									fm.trigger('select', {selected : [phash]}).exec('open', phash);
								});
							(list ? oldSchoolItem.children('td:first') : oldSchoolItem).children('.elfinder-cwd-select').remove();
							if (fm.cwdHash2Elm(phash).length) {
								fm.cwdHash2Elm(phash).replaceWith(oldSchoolItem);
							} else {
								(list ? cwd.find('tbody') : cwd).prepend(oldSchoolItem);
							}
							fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
						}
					};
				if (pdir) {
					set(pdir);
				} else {
					set({hash: phash, read: true, write: true});
					if (fm.getUI('tree').length) {
						fm.one('parents', function() {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					} else {
						fm.request({
							data : {cmd : 'parents', target : fm.cwd().hash},
							preventFail : true
						})
						.done(function(data) {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					}
				}
			},
			
			showFiles = fm.options.showFiles,
			
			/**
			 * Cwd scroll event handler.
			 * Lazy load - append to cwd not shown files
			 *
			 * @return void
			 */
			render = function() {
				if (bufferExt.rendering || (bufferExt.renderd && ! buffer.length)) {
					return;
				}
				var place = (list ? cwd.children('table').children('tbody') : cwd),
					phash,
					chk,
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = $.htmlPrefilter? true : false,
					tempDom = docFlag? $(document.createDocumentFragment()) : $('<div></div>'),
					go      = function(o){
						var over  = o || null,
							html  = [],
							dirs  = false,
							atmb  = {},
							stmb  = (fm.option('tmbUrl') === 'self'),
							init  = bufferExt.renderd? false : true,
							files, locks, selected;
						
						files = buffer.splice(0, showFiles + (over || 0) / (bufferExt.hpi || 1));
						bufferExt.renderd += files.length;
						if (! buffer.length) {
							bottomMarker.hide();
							wrapper.off(scrollEvent, render);
						}
						
						locks = [];
						html = $.map(files, function(f) {
							if (f.hash && f.name) {
								if (f.mime == 'directory') {
									dirs = true;
								}
								if ((f.tmb && (f.tmb != 1 || f.size > 0)) || (stmb && f.mime.indexOf('image/') === 0)) {
									atmb[f.hash] = f.tmb || 'self';
								}
								clipCuts[f.hash] && locks.push(f.hash);
								return itemhtml(f);
							}
							return null;
						});

						// html into temp node
						tempDom.empty().append(html.join(''));
						
						// make directory droppable
						dirs && !mobile && makeDroppable(tempDom);
						
						// check selected items
						selected = [];
						if (Object.keys(selectedFiles).length) {
							tempDom.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').each(function() {
								selectedFiles[fm.cwdId2Hash(this.id)] && selected.push($(this));
							});
						}
						
						// append to cwd
						place.append(docFlag? tempDom : tempDom.children());
						
						// trigger select
						if (selected.length) {
							$.each(selected, function(i, n) { n.trigger(evtSelect); });
							trigger();
						}
						
						locks.length && fm.trigger('lockfiles', {files: locks});
						!bufferExt.hpi && bottomMarkerShow(place, files.length);
						
						if (list) {
							// show thead
							cwd.find('thead').show();
							// fixed table header
							fixTableHeader({fitWidth: ! colWidth});
						}
						
						if (Object.keys(atmb).length) {
							Object.assign(bufferExt.attachTmbs, atmb);
						}
						
						if (init) {
							if (! mobile && ! cwd.data('selectable')) {
								// make files selectable
								cwd.selectable(selectableOption).data('selectable', true);
							}
						}

						! scrolling && wrapper.trigger(scrollEvent);
					};
				
				if (! bufferExt.renderd) {
					// first time to go()
					bufferExt.rendering = true;
					// scroll top on dir load to avoid scroll after page reload
					wrapper.scrollTop(0);
					phash = fm.cwd().phash;
					go();
					if (options.oldSchool) {
						if (phash && !query) {
							oldSchool(phash);
						} else {
							oldSchoolItem = $();
						}
					}
					if (list) {
						colWidth && setColwidth();
						fixTableHeader({fitWidth: true});
					}
					bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
					fm.trigger('cwdrender');
					bufferExt.rendering = false;
					wrapperRepaint(true);
				}
				if (! bufferExt.rendering && buffer.length) {
					// next go()
					if ((chk = (wrapper.height() + wrapper.scrollTop() + fm.options.showThreshold + bufferExt.row) - (bufferExt.renderd * bufferExt.hpi)) > 0) {
						bufferExt.rendering = true;
						fm.lazy(function() {
							go(chk);
							bufferExt.rendering = false;
						});
					} else {
						!fm.enabled() && resize();
					}
				} else {
					resize();
				}
			},
			
			// fixed table header jQuery object
			tableHeader = null,

			// Is UA support CSS sticky
			cssSticky = fm.UA.CSS.positionSticky && fm.UA.CSS.widthMaxContent,
			
			// To fixed table header colmun
			fixTableHeader = function(optsArg) {
				thHeight = 0;
				if (! options.listView.fixedHeader) {
					return;
				}
				var setPos = function() {
					var val, pos;
					pos = (fm.direction === 'ltr')? 'left' : 'right';
					val = ((fm.direction === 'ltr')? wrapper.scrollLeft() : table.outerWidth(true) - wrapper.width() - wrapper.scrollLeft()) * -1;
					if (base.css(pos) !== val) {
						base.css(pos, val);
					}
				},
				opts = optsArg || {},
				cnt, base, table, htable, thead, tbody, hheight, htr, btr, htd, btd, htw, btw, init;
				
				tbody = cwd.find('tbody');
				btr = tbody.children('tr:first');
				if (btr.length && btr.is(':visible')) {
					table = tbody.parent();
					if (! tableHeader) {
						init = true;
						tbody.addClass('elfinder-cwd-fixheader');
						thead = cwd.find('thead').attr('id', fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
						hheight = htr.outerHeight(true);
						cwd.css('margin-top', hheight - parseInt(table.css('padding-top')));
						if (cssSticky) {
							tableHeader = $('<div class="elfinder-table-header-sticky"></div>').addClass(cwd.attr('class')).append($('<table></table>').append(thead));
							cwd.after(tableHeader);
							wrapper.on('resize.fixheader', function(e) {
								e.stopPropagation();
								fixTableHeader({fitWidth: true});
							});
						} else {
							base = $('<div></div>').addClass(cwd.attr('class')).append($('<table></table>').append(thead));
							tableHeader = $('<div></div>').addClass(wrapper.attr('class') + ' elfinder-cwd-fixheader')
								.removeClass('ui-droppable native-droppable')
								.css(wrapper.position())
								.css({ height: hheight, width: cwd.outerWidth() })
								.append(base);
							if (fm.direction === 'rtl') {
								tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
							}
							setPos();
							wrapper.after(tableHeader)
								.on('scroll.fixheader resize.fixheader', function(e) {
									setPos();
									if (e.type === 'resize') {
										e.stopPropagation();
										tableHeader.css(wrapper.position());
										wrapper.data('width', wrapper.css('overflow', 'hidden').width());
										wrapper.css('overflow', 'auto');
										fixTableHeader();
									}
								});
						}
					} else {
						thead = $('#'+fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
					}
					
					if (init || opts.fitWidth || Math.abs(btr.outerWidth() - htr.outerWidth()) > 2) {
						cnt = customCols.length + 1;
						for (var i = 0; i < cnt; i++) {
							htd = htr.children('td:eq('+i+')');
							btd = btr.children('td:eq('+i+')');
							htw = htd.width();
							btw = btd.width();
							if (typeof htd.data('delta') === 'undefined') {
								htd.data('delta', (htd.outerWidth() - htw) - (btd.outerWidth() - btw));
							}
							btw -= htd.data('delta');
							if (! init && ! opts.fitWidth && htw === btw) {
								break;
							}
							htd.css('width', btw + 'px');
						}
					}
					
					if (!cssSticky) {
						tableHeader.data('widthTimer') && cancelAnimationFrame(tableHeader.data('widthTimer'));
						tableHeader.data('widthTimer', requestAnimationFrame(function() {
							if (tableHeader) {
								tableHeader.css('width', mBoard.width() + 'px');
								if (fm.direction === 'rtl') {
									tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
								}
							}
						}));
					}
					thHeight = thead.height();
				}
			},
			
			// Set colmun width
			setColwidth = function() {
				if (list && colWidth) {
					var cl = 'elfinder-cwd-colwidth',
					first = cwd.find('tr[id]:first'),
					former;
					if (! first.hasClass(cl)) {
						former = cwd.find('tr.'+cl);
						former.removeClass(cl).find('td').css('width', '');
						first.addClass(cl);
						cwd.find('table:first').css('table-layout', 'fixed');
						$.each($.merge(['name'], customCols), function(i, k) {
							var w = colWidth[k] || first.find('td.elfinder-col-'+k).width();
							first.find('td.elfinder-col-'+k).width(w);
						});
					}
				}
			},
			
			/**
			 * Droppable options for cwd.
			 * Drop target is `wrapper`
			 * Do not add class on childs file over
			 *
			 * @type Object
			 */
			droppable = Object.assign({}, fm.droppable, {
				over : function(e, ui) {
					var dst    = $(this),
						helper = ui.helper,
						ctr    = fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey),
						hash, status, inParent;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					if (helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(clDropActive);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (dst.hasClass(fm.res(c, 'cwdfile'))) {
						hash = fm.cwdId2Hash(dst.attr('id'));
						dst.data('dropover', hash);
					} else {
						hash = fm.cwd().hash;
						fm.cwd().write && dst.data('dropover', hash);
					}
					inParent = (fm.file(helper.data('files')[0]).phash === hash);
					if (dst.data('dropover') === hash) {
						$.each(helper.data('files'), function(i, h) {
							if (h === hash || (inParent && !ctr && !helper.hasClass('elfinder-drag-helper-plus'))) {
								dst.removeClass(clDropActive);
								return false; // break $.each
							}
						});
					} else {
						dst.removeClass(clDropActive);
					}
					if (helper.data('locked') || inParent) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (ctr) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(clDropActive) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(clDropActive) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var helper = ui.helper;
					e.stopPropagation();
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
					$(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				deactivate : function() {
					$(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				drop : function(e, ui) {
					unselectAll({ notrigger: true });
					fm.droppable.drop.call(this, e, ui);
				}
			}),
			
			/**
			 * Make directory droppable
			 *
			 * @return void
			 */
			makeDroppable = function(place) {
				place = place? place : (list ? cwd.find('tbody') : cwd);
				var targets = place.children('.directory:not(.'+clDroppable+',.elfinder-na,.elfinder-ro)');

				if (fm.isCommandEnabled('paste')) {
					targets.droppable(droppable);
				}
				if (fm.isCommandEnabled('upload')) {
					targets.addClass('native-droppable');
				}
				
				place.children('.isroot').each(function(i, n) {
					var $n   = $(n),
						hash = fm.cwdId2Hash(n.id);
					
					if (fm.isCommandEnabled('paste', hash)) {
						if (! $n.hasClass(clDroppable+',elfinder-na,elfinder-ro')) {
							$n.droppable(droppable);
						}
					} else {
						if ($n.hasClass(clDroppable)) {
							$n.droppable('destroy');
						}
					}
					if (fm.isCommandEnabled('upload', hash)) {
						if (! $n.hasClass('native-droppable,elfinder-na,elfinder-ro')) {
							$n.addClass('native-droppable');
						}
					} else {
						if ($n.hasClass('native-droppable')) {
							$n.removeClass('native-droppable');
						}
					}
				});
			},
			
			/**
			 * Preload required thumbnails and on load add css to files.
			 * Return false if required file is not visible yet (in buffer) -
			 * required for old api to stop loading thumbnails.
			 *
			 * @param  Object  file hash -> thumbnail map
			 * @param  Bool    reload
			 * @return void
			 */
			attachThumbnails = function(tmbs, reload) {
				var attach = function(node, tmb) {
						$('<img/>')
							.on('load', function() {
								node.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
							})
							.attr('src', tmb.url);
					},
					chk  = function(hash, tmb) {
						var node = fm.cwdHash2Elm(hash),
							file, tmbObj, reloads = [];
	
						if (node.length) {
							if (tmb != '1') {
								file = fm.file(hash);
								if (file.tmb !== tmb) {
									file.tmb = tmb;
								}
								tmbObj = fm.tmb(file);
								if (reload) {
									node.find('.elfinder-cwd-icon').addClass(tmbObj.className).css('background-image', "url('"+tmbObj.url+"')");
								} else {
									attach(node, tmbObj);
								}
								delete bufferExt.attachTmbs[hash];
							} else {
								if (reload) {
									loadThumbnails([hash]);
								} else if (! bufferExt.tmbLoading[hash]) {
									bufferExt.getTmbs.push(hash);
								}
							}
						}
					};

				if ($.isPlainObject(tmbs) && Object.keys(tmbs).length) {
					Object.assign(bufferExt.attachTmbs, tmbs);
					$.each(tmbs, chk);
					if (! reload && bufferExt.getTmbs.length && ! Object.keys(bufferExt.tmbLoading).length) {
						loadThumbnails();
					}
				}
			},
			
			/**
			 * Load thumbnails from backend.
			 *
			 * @param  Array|void reloads  hashes list for reload thumbnail items
			 * @return void
			 */
			loadThumbnails = function(reloads) {
				var tmbs = [],
					reload = false;
				
				if (fm.oldAPI) {
					fm.request({
						data : {cmd : 'tmb', current : fm.cwd().hash},
						preventFail : true
					})
					.done(function(data) {
						if (data.images && Object.keys(data.images).length) {
							attachThumbnails(data.images);
						}
						if (data.tmb) {
							loadThumbnails();
						}
					});
					return;
				} 

				if (reloads) {
					reload = true;
					tmbs = reloads.splice(0, tmbNum);
				} else {
					tmbs = bufferExt.getTmbs.splice(0, tmbNum);
				}
				if (tmbs.length) {
					if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) {
						$.each(tmbs, function(i, h) {
							bufferExt.tmbLoading[h] = true;
						});
						fm.request({
							data : {cmd : 'tmb', targets : tmbs},
							preventFail : true
						})
						.done(function(data) {
							var errs = [],
								resLen;
							if (data.images) {
								if (resLen = Object.keys(data.images).length) {
									if (resLen < tmbs.length) {
										$.each(tmbs, function(i, h) {
											if (! data.images[h]) {
												errs.push(h);
											}
										});
									}
									attachThumbnails(data.images, reload);
								} else {
									errs = tmbs;
								}
								// unset error items from bufferExt.attachTmbs
								if (errs.length) {
									$.each(errs, function(i, h) {
										delete bufferExt.attachTmbs[h];
									});
								}
							}
							if (reload) {
								if (reloads.length) {
									loadThumbnails(reloads);
								}
							}
						})
						.always(function() {
							bufferExt.tmbLoading = {};
							if (! reload && bufferExt.getTmbs.length) {
								loadThumbnails();
							}
						});
					}
				}
			},
			
			/**
			 * Add new files to cwd/buffer
			 *
			 * @param  Array  new files
			 * @return void
			 */
			add = function(files, mode) {
				var place    = list ? cwd.find('tbody') : cwd,
					l        = files.length, 
					atmb     = {},
					findNode = function(file) {
						var pointer = cwd.find('[id]:first'), file2;

						while (pointer.length) {
							file2 = fm.file(fm.cwdId2Hash(pointer.attr('id')));
							if (!pointer.hasClass('elfinder-cwd-parent') && file2 && fm.compare(file, file2) < 0) {
								return pointer;
							}
							pointer = pointer.next('[id]');
						}
					},
					findIndex = function(file) {
						var l = buffer.length, i;
						
						for (i =0; i < l; i++) {
							if (fm.compare(file, buffer[i]) < 0) {
								return i;
							}
						}
						return l || -1;
					},
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = $.htmlPrefilter? true : false,
					tempDom = docFlag? $(document.createDocumentFragment()) : $('<div></div>'),
					file, hash, node, nodes, ndx, stmb;

				if (l > showFiles) {
					// re-render for performance tune
					content();
					selectedFiles = fm.arrayFlip($.map(files, function(f) { return f.hash; }), true);
					trigger();
				} else {
					// add the item immediately
					l && wz.removeClass('elfinder-cwd-wrapper-empty');
					
					// Self thumbnail
					stmb = (fm.option('tmbUrl') === 'self');
					
					while (l--) {
						file = files[l];
						hash = file.hash;
						
						if (fm.cwdHash2Elm(hash).length) {
							continue;
						}
						
						if ((node = findNode(file)) && ! node.length) {
							node = null;
						}
						if (! node && (ndx = findIndex(file)) >= 0) {
							buffer.splice(ndx, 0, file);
						} else {
							tempDom.empty().append(itemhtml(file));
							(file.mime === 'directory') && !mobile && makeDroppable(tempDom);
							nodes = docFlag? tempDom : tempDom.children();
							if (node) {
								node.before(nodes);
							} else {
								place.append(nodes);
							}
							++bufferExt.renderd;
						}
						
						if (fm.cwdHash2Elm(hash).length) {
							if ((file.tmb && (file.tmb != 1 || file.size > 0)) || (stmb && file.mime.indexOf('image/') === 0)) {
								atmb[hash] = file.tmb || 'self';
							}
						}
					}
	
					if (list) {
						setColwidth();
						fixTableHeader({fitWidth: ! colWidth});
					}
					bottomMarkerShow(place);
					if (Object.keys(atmb).length) {
						Object.assign(bufferExt.attachTmbs, atmb);
						if (buffer.length < 1) {
							loadThumbnails();
						}
					}
				}
			},
			
			/**
			 * Remove files from cwd/buffer
			 *
			 * @param  Array  files hashes
			 * @return void
			 */
			remove = function(files) {
				var l = files.length,
					inSearch = fm.searchStatus.state > 1,
					curCmd = fm.getCommand(fm.currentReqCmd) || {},
					hash, n, ndx, found;

				// removed cwd
				if (!fm.cwd().hash && !curCmd.noChangeDirOnRemovedCwd) {
					$.each(cwdParents.reverse(), function(i, h) {
						if (fm.file(h)) {
							found = true;
							fm.one(fm.currentReqCmd + 'done', function() {
								!fm.cwd().hash && fm.exec('open', h);
							});
							return false;
						}
					});
					// fallback to fm.roots[0]
					!found && !fm.cwd().hash && fm.exec('open', fm.roots[Object.keys(fm.roots)[0]]);
					return;
				}
				
				while (l--) {
					hash = files[l];
					if ((n = fm.cwdHash2Elm(hash)).length) {
						try {
							n.remove();
							--bufferExt.renderd;
						} catch(e) {
							fm.debug('error', e);
						}
					} else if ((ndx = index(hash)) !== -1) {
						buffer.splice(ndx, 1);
					}
					selectedFiles[hash] && delete selectedFiles[hash];
					if (inSearch) {
						if ((ndx = $.inArray(hash, cwdHashes)) !== -1) {
							cwdHashes.splice(ndx, 1);
						}
					}
				}
				
				inSearch && fm.trigger('cwdhasheschange', cwdHashes);
				
				if (list) {
					setColwidth();
					fixTableHeader({fitWidth: ! colWidth});
				}
			},
			
			customColsNameBuild = function() {
				var name = '',
				customColsName = '';
				for (var i = 0; i < customCols.length; i++) {
					name = fm.getColumnName(customCols[i]);
					customColsName +='<td class="elfinder-cwd-view-th-'+customCols[i]+' sortable-item">'+name+'</td>';
				}
				return customColsName;
			},
			
			setItemBoxSize = function(boxSize) {
				var place, elm;
				if (!boxSize.height) {
					place = (list ? cwd.find('tbody') : cwd);
					elm = place.find(list? 'tr:first' : '[id]:first');
					boxSize.height = elm.outerHeight(true);
					if (!list) {
						boxSize.width = elm.outerWidth(true);
					}
				}
			},

			bottomMarkerShow = function(cur, cnt) {
				var place = cur || (list ? cwd.find('tbody') : cwd),
					boxSize = itemBoxSize[fm.viewType],
					col = 1,
					row;

				if (buffer.length > 0) {
					if (!bufferExt.hpi) {
						setItemBoxSize(boxSize);
						if (! list) {
							col = Math.floor(place.width() / boxSize.width);
							bufferExt.row = boxSize.height;
							bufferExt.hpi = bufferExt.row / col;
						} else {
							bufferExt.row = bufferExt.hpi = boxSize.height;
						}
					} else if (!list) {
						col = Math.floor(place.width() / boxSize.width);
					}
					row = Math.ceil((buffer.length + (cnt || 0)) / col);
					if (list && tableHeader) {
						++row;
					}
					bottomMarker.css({top: (bufferExt.row * row) + 'px'}).show();
				}
			},
			
			wrapperContextMenu = {
				contextmenu : function(e) {
					e.preventDefault();
					if (cwd.data('longtap') !== void(0)) {
						e.stopPropagation();
						return;
					}
					fm.trigger('contextmenu', {
						'type'    : 'cwd',
						'targets' : [fm.cwd().hash],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
				},
				touchstart : function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					if (cwd.data('longtap') !== false) {
						wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
						cwd.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							fm.trigger('contextmenu', {
								'type'    : 'cwd',
								'targets' : [fm.cwd().hash],
								'x'       : wrapper.data('touching').x,
								'y'       : wrapper.data('touching').y
							});
						}, 500));
					}
					cwd.data('longtap', null);
				},
				touchend : function(e) {
					if (e.type === 'touchmove') {
						if (! wrapper.data('touching') ||
								( Math.abs(wrapper.data('touching').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(wrapper.data('touching').y - e.originalEvent.touches[0].pageY)) > 4) {
							wrapper.data('touching', null);
						}
					} else {
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
					clearTimeout(cwd.data('tmlongtap'));
				},
				click : function(e) {
					if (cwd.data('longtap')) {
						e.preventDefault();
						e.stopPropagation();
					}
				}
			},
			
			/**
			 * Update directory content
			 *
			 * @return void
			 */
			content = function() {
				fm.lazy(function() {
					var phash, emptyMethod, thtr;

					wz.append(selectAllCheckbox).removeClass('elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result');
					if (fm.searchStatus.state > 1 || fm.searchStatus.ininc) {
						wz.addClass('elfinder-search-result' + (fm.searchStatus.ininc? ' elfinder-'+(query.substr(0,1) === '/' ? 'let':'inc')+'search-result' : ''));
					}
					
					// abort attachThumbJob
					bufferExt.attachThumbJob && bufferExt.attachThumbJob._abort();
					
					// destroy selectable for GC
					cwd.data('selectable') && cwd.selectable('disable').selectable('destroy').removeData('selectable');
					
					// notify cwd init
					fm.trigger('cwdinit');
					
					selectedNext = $();
					try {
						// to avoid problem with draggable
						cwd.empty();
					} catch (e) {
						cwd.html('');
					}
					
					if (tableHeader) {
						wrapper.off('scroll.fixheader resize.fixheader');
						tableHeader.remove();
						tableHeader = null;
					}

					cwd.removeClass('elfinder-cwd-view-icons elfinder-cwd-view-list')
						.addClass('elfinder-cwd-view-'+(list ? 'list' :'icons'))
						.attr('style', '')
						.css('height', 'auto');
					bottomMarker.hide();

					wrapper[list ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-list')._padding = parseInt(wrapper.css('padding-top')) + parseInt(wrapper.css('padding-bottom'));
					if (fm.UA.iOS) {
						wrapper.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
					}

					if (list) {
						cwd.html('<table><thead></thead><tbody></tbody></table>');
						thtr = $('<tr class="ui-state-default"><td class="elfinder-cwd-view-th-name">'+fm.getColumnName('name')+'</td>'+customColsNameBuild()+'</tr>');
						cwd.find('thead').hide().append(thtr).find('td:first').append(selectAllCheckbox);
						if ($.fn.sortable) {
							thtr.addClass('touch-punch touch-punch-keep-default')
								.sortable({
								axis: 'x',
								distance: 8,
								items: '> .sortable-item',
								start: function(e, ui) {
									$(ui.item[0]).data('dragging', true);
									ui.placeholder
										.width(ui.helper.removeClass('ui-state-hover').width())
										.removeClass('ui-state-active')
										.addClass('ui-state-hover')
										.css('visibility', 'visible');
								},
								update: function(e, ui){
									var target = $(ui.item[0]).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''),
										prev, done;
									customCols = $.map($(this).children(), function(n) {
										var name = $(n).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '');
										if (! done) {
											if (target === name) {
												done = true;
											} else {
												prev = name;
											}
										}
										return (name === 'name')? null : name;
									});
									templates.row = makeTemplateRow();
									fm.storage('cwdCols', customCols);
									prev = '.elfinder-col-'+prev+':first';
									target = '.elfinder-col-'+target+':first';
									fm.lazy(function() {
										cwd.find('tbody tr').each(function() {
											var $this = $(this);
											$this.children(prev).after($this.children(target));
										});
									});
								},
								stop: function(e, ui) {
									setTimeout(function() {
										$(ui.item[0]).removeData('dragging');
									}, 100);
								}
							});
						}

						thtr.find('td').addClass('touch-punch').resizable({
							handles: fm.direction === 'ltr'? 'e' : 'w',
							start: function(e, ui) {
								var target = cwd.find('td.elfinder-col-'
									+ ui.element.attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '')
									+ ':first');
								
								ui.element
									.data('dragging', true)
									.data('resizeTarget', target)
									.data('targetWidth', target.width());
								colResizing = true;
								if (cwd.find('table').css('table-layout') !== 'fixed') {
									cwd.find('tbody tr:first td').each(function() {
										$(this).width($(this).width());
									});
									cwd.find('table').css('table-layout', 'fixed');
								}
							},
							resize: function(e, ui) {
								ui.element.data('resizeTarget').width(ui.element.data('targetWidth') - (ui.originalSize.width - ui.size.width));
							},
							stop : function(e, ui) {
								colResizing = false;
								fixTableHeader({fitWidth: true});
								colWidth = {};
								cwd.find('tbody tr:first td').each(function() {
									var name = $(this).attr('class').split(' ')[0].replace('elfinder-col-', '');
									colWidth[name] = $(this).width();
								});
								fm.storage('cwdColWidth', colWidth);
								setTimeout(function() {
									ui.element.removeData('dragging');
								}, 100);
							}
						})
						.find('.ui-resizable-handle').addClass('ui-icon ui-icon-grip-dotted-vertical');
					}

					buffer = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
					
					buffer = fm.sortFiles(buffer);
					
					if (incHashes) {
						incHashes = $.map(buffer, function(f) { return f.hash; });
					} else {
						cwdHashes = $.map(buffer, function(f) { return f.hash; });
					}
					
					bufferExt = {
						renderd: 0,
						attachTmbs: {},
						getTmbs: [],
						tmbLoading: {},
						lazyOpts: { tm : 0 }
					};
					
					wz[(buffer.length < 1) ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-empty');
					wrapper.off(scrollEvent, render).on(scrollEvent, render).trigger(scrollEvent);
					
					// set droppable
					if (!fm.cwd().write) {
						wrapper.removeClass('native-droppable')
						       .droppable('disable')
						       .removeClass('ui-state-disabled'); // for old jQueryUI see https://bugs.jqueryui.com/ticket/5974
					} else {
						wrapper[fm.isCommandEnabled('upload')? 'addClass' : 'removeClass']('native-droppable');
						wrapper.droppable(fm.isCommandEnabled('paste')? 'enable' : 'disable');
					}
				});
			},
			
			/**
			 * CWD node itself
			 *
			 * @type JQuery
			 **/
			cwd = $(this)
				.addClass('ui-helper-clearfix elfinder-cwd')
				.attr('unselectable', 'on')
				// fix ui.selectable bugs and add shift+click support 
				.on('click.'+fm.namespace, fileSelector, function(e) {
					var p    = this.id ? $(this) : $(this).parents('[id]:first'),
						tgt  = $(e.target),
						prev,
						next,
						pl,
						nl,
						sib;

					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						e.stopPropagation();
						e.preventDefault();
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
						trigger();
						requestAnimationFrame(function() {
							tgt.prop('checked', p.hasClass(clSelected));
						});
						return;
					}

					if (cwd.data('longtap') || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}

					if (!curClickId) {
						curClickId = p.attr('id');
						setTimeout(function() {
							curClickId = '';
						}, 500);
					}
					
					if (e.shiftKey) {
						prev = p.prevAll(lastSelect || '.'+clSelected+':first');
						next = p.nextAll(lastSelect || '.'+clSelected+':first');
						pl   = prev.length;
						nl   = next.length;
					}
					if (e.shiftKey && (pl || nl)) {
						sib = pl ? p.prevUntil('#'+prev.attr('id')) : p.nextUntil('#'+next.attr('id'));
						sib = sib.add(p);
						if (!pl) {
							sib  = $(sib.get().reverse());
						}
						sib.trigger(evtSelect);
					} else if (e.ctrlKey || e.metaKey) {
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
					} else {
						if (wrapper.data('touching') && p.hasClass(clSelected)) {
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
							return;
						} else {
							unselectAll({ notrigger: true });
							p.trigger(evtSelect);
						}
					}

					trigger();
				})
				// call fm.open()
				.on('dblclick.'+fm.namespace, fileSelector, function(e) {
					if (curClickId) {
						var hash = fm.cwdId2Hash(curClickId);
						e.stopPropagation();
						if (this.id !== curClickId) {
							$(this).trigger(evtUnselect);
							$('#'+curClickId).trigger(evtSelect);
							trigger();
						}
						fm.dblclick({file : hash});
					}
				})
				// for touch device
				.on('touchstart.'+fm.namespace, fileSelector, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var p   = this.id ? $(this) : $(this).parents('[id]:first'),
						tgt = $(e.target),
						nodeName = e.target.nodeName,
						sel;
					
					if ((nodeName === 'INPUT' && e.target.type === 'text') || nodeName === 'TEXTAREA' || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}
					
					// now name editing
					if (p.find('input:text,textarea').length) {
						e.stopPropagation();
						e.preventDefault();
						return;
					}
					
					wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					
					sel = p.prevAll('.'+clSelected+':first').length +
					      p.nextAll('.'+clSelected+':first').length;
					cwd.data('longtap', null);
					if (Object.keys(selectedFiles).length
						||
						(list && e.target.nodeName !== 'TD')
						||
						(!list && this !== e.target)
					) {
						cwd.data('longtap', false);
						p.addClass(clHover);
						p.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							p.trigger(evtSelect);
							trigger();
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.originalEvent.touches[0].pageX,
								'y'       : e.originalEvent.touches[0].pageY
							});
						}, 500));
					}
				})
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, fileSelector, function(e) {
					var tgt = $(e.target),
						p;
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') {
						e.stopPropagation();
						return;
					}
					p = this.id ? $(this) : $(this).parents('[id]:first');
					clearTimeout(p.data('tmlongtap'));
					if (e.type === 'touchmove') {
						wrapper.data('touching', null);
						p.removeClass(clHover);
					} else {
						if (wrapper.data('touching') && !cwd.data('longtap') && p.hasClass(clSelected)) {
							e.preventDefault();
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
						}
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
				})
				// attach draggable
				.on('mouseenter.'+fm.namespace, fileSelector, function(e) {
					if (scrolling) { return; }
					var $this = $(this), helper = null;

					if (!mobile && !$this.data('dragRegisted') && !$this.hasClass(clTmp) && !$this.hasClass(clDraggable) && !$this.hasClass(clDisabled)) {
						$this.data('dragRegisted', true);
						if (!fm.isCommandEnabled('copy', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0) &&
							!fm.isCommandEnabled('cut', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0)) {
							return;
						}
						$this.on('mousedown', function(e) {
							// shiftKey or altKey + drag start for HTML5 native drag function
							// Note: can no use shiftKey with the Google Chrome 
							var metaKey = options.metakeyDragout && !fm.UA.IE && (e.shiftKey || e.altKey),
								disable = false;
							if (metaKey && cwd.data('selectable')) {
								// destroy jQuery-ui selectable while trigger native drag
								cwd.selectable('disable').selectable('destroy').removeData('selectable');
								requestAnimationFrame(function(){
									cwd.selectable(selectableOption).selectable('option', {disabled: false}).selectable('refresh').data('selectable', true);
								});
							}
							$this.removeClass('ui-state-disabled');
							if (metaKey) {
								$this.draggable('option', 'disabled', true).attr('draggable', 'true');
							} else {
								if (!$this.hasClass(clSelected)) {
									if (list) {
										disable = $(e.target).closest('span,tr').is('tr');
									} else {
										disable = $(e.target).hasClass('elfinder-cwd-file');
									}
								}
								if (disable) {
									// removeClass('ui-state-disabled') for old version of jQueryUI
									$this.draggable('option', 'disabled', true).removeClass('ui-state-disabled');
								} else {
									$this.draggable('option', 'disabled', false)
										  .removeAttr('draggable')
									      .draggable('option', 'cursorAt', {left: 50 - parseInt($(e.currentTarget).css('margin-left')), top: 47});
								}
							}
						})
						.on('dragstart', function(e) {
							var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
							helper = null;
							if (dt && !fm.UA.IE) {
								var p = this.id ? $(this) : $(this).parents('[id]:first'),
									elm   = $('<span>'),
									url   = '',
									durl  = null,
									murl  = null,
									files = [],
									icon  = function(f) {
										var mime = f.mime, i, tmb = fm.tmb(f);
										i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+fm.mime2class(mime)+' ui-corner-all"></div>';
										if (tmb) {
											i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
										}
										return i;
									}, l, geturl = [];
								p.trigger(evtSelect);
								trigger();
								$.each(selectedFiles, function(v){
									var file = fm.file(v),
										furl = file.url;
									if (file && file.mime !== 'directory') {
										if (!furl) {
											furl = fm.url(file.hash);
										} else if (furl == '1') {
											geturl.push(v);
											return true;
										}
										if (furl) {
											furl = fm.convAbsUrl(furl);
											files.push(v);
											$('<a>').attr('href', furl).text(furl).appendTo(elm);
											url += furl + "\n";
											if (!durl) {
												durl = file.mime + ':' + file.name + ':' + furl;
											}
											if (!murl) {
												murl = furl + "\n" + file.name;
											}
										}
									}
								});
								if (geturl.length) {
									$.each(geturl, function(i, v){
										var rfile = fm.file(v);
										rfile.url = '';
										fm.request({
											data : {cmd : 'url', target : v},
											notify : {type : 'url', cnt : 1},
											preventDefault : true
										})
										.always(function(data) {
											rfile.url = data.url? data.url : '1';
										});
									});
									return false;
								} else if (url) {
									if (dt.setDragImage) {
										helper = $('<div class="elfinder-drag-helper html5-native"></div>').append(icon(fm.file(files[0]))).appendTo($(document.body));
										if ((l = files.length) > 1) {
											helper.append(icon(fm.file(files[l-1])) + '<span class="elfinder-drag-num">'+l+'</span>');
										}
										dt.setDragImage(helper.get(0), 50, 47);
									}
									dt.effectAllowed = 'copyLink';
									dt.setData('DownloadURL', durl);
									dt.setData('text/x-moz-url', murl);
									dt.setData('text/uri-list', url);
									dt.setData('text/plain', url);
									dt.setData('text/html', elm.html());
									dt.setData('elfinderfrom', window.location.href + fm.cwd().hash);
									dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
								} else {
									return false;
								}
							}
						})
						.on('dragend', function(e){
							unselectAll({ notrigger: true });
							helper && helper.remove();
						})
						.draggable(fm.draggable);
					}
				})
				// add hover class to selected file
				.on(evtSelect, fileSelector, function(e) {
					var $this = $(this),
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock && !$this.hasClass(clDisabled)) {
						lastSelect = '#'+ this.id;
						$this.addClass(clSelected).children().addClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', true);
						if (! selectedFiles[id]) {
							selectedFiles[id] = true;
						}
						// will be selected next
						selectedNext = cwd.find('[id].'+clSelected+':last').next();
					}
				})
				// remove hover class from unselected file
				.on(evtUnselect, fileSelector, function(e) {
					var $this = $(this), 
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock) {
						$this.removeClass(clSelected).children().removeClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', false);
						if (cwd.hasClass('elfinder-cwd-allselected')) {
							selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
							cwd.removeClass('elfinder-cwd-allselected');
						}
						selectedFiles[id] && delete selectedFiles[id];
					}
					
				})
				// disable files wich removing or moving
				.on(evtDisable, fileSelector, function() {
					var $this  = $(this).removeClass(clHover+' '+clSelected).addClass(clDisabled), 
						child  = $this.children(),
						target = (list ? $this : child.find('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename'));
					
					child.removeClass(clHover+' '+clSelected);
					
					$this.hasClass(clDroppable) && $this.droppable('disable');
					target.hasClass(clDraggable) && target.draggable('disable');
				})
				// if any files was not removed/moved - unlock its
				.on(evtEnable, fileSelector, function() {
					var $this  = $(this).removeClass(clDisabled), 
						target = list ? $this : $this.children('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename');
					
					$this.hasClass(clDroppable) && $this.droppable('enable');	
					target.hasClass(clDraggable) && target.draggable('enable');
				})
				.on('scrolltoview', fileSelector, function(e, data) {
					scrollToView($(this), (data && typeof data.blink !== 'undefined')? data.blink : true);
				})
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, fileSelector, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && (scrolling || fm.UA.Mobile)) { return; }
					fm.trigger('hover', {hash : fm.cwdId2Hash($(this).attr('id')), type : e.type});
					$(this).toggleClass(clHover, (e.type == 'mouseenter'));
				})
				// for file contextmenu
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, '.elfinder-cwd-file-wrapper,.elfinder-cwd-filename', function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					$(this).closest(fileSelector).children('.elfinder-cwd-file-wrapper,.elfinder-cwd-filename').toggleClass(clActive, (e.type == 'mouseenter'));
				})
				.on('contextmenu.'+fm.namespace, function(e) {
					var file = $(e.target).closest(fileSelector);
					
					if (file.get(0) === e.target && !selectedFiles[fm.cwdId2Hash(file.get(0).id)]) {
						return;
					}

					// now filename editing
					if (file.find('input:text,textarea').length) {
						e.stopPropagation();
						return;
					}
					
					if (file.length && (e.target.nodeName != 'TD' || selectedFiles[fm.cwdId2Hash(file.get(0).id)])) {
						e.stopPropagation();
						e.preventDefault();
						if (!file.hasClass(clDisabled) && !wrapper.data('touching')) {
							if (!file.hasClass(clSelected)) {
								unselectAll({ notrigger: true });
								file.trigger(evtSelect);
								trigger();
							}
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.pageX,
								'y'       : e.pageY
							});

						}
						
					}
				})
				// unselect all on cwd click
				.on('click.'+fm.namespace, function(e) {
					if (e.target === this && ! cwd.data('longtap')) {
						!e.shiftKey && !e.ctrlKey && !e.metaKey && unselectAll();
					}
				})
				// prepend fake file/dir
				.on('create.'+fm.namespace, function(e, f) {
					var parent = list ? cwd.find('tbody') : cwd,
						p = parent.find('.elfinder-cwd-parent'),
						lock = f.move || false,
						file = $(itemhtml(f)).addClass(clTmp),
						selected = fm.selected();
						
					if (selected.length) {
						lock && fm.trigger('lockfiles', {files: selected});
					} else {
						unselectAll();
					}

					if (p.length) {
						p.after(file);
					} else {
						parent.prepend(file);
					}
					
					setColwidth();
					wrapper.scrollTop(0).scrollLeft(0);
				})
				// unselect all selected files
				.on('unselectall', unselectAll)
				.on('selectfile', function(e, id) {
					fm.cwdHash2Elm(id).trigger(evtSelect);
					trigger();
				})
				.on('colwidth', function() {
					if (list) {
						cwd.find('table').css('table-layout', '')
							.find('td').css('width', '');
						fixTableHeader({fitWidth: true});
						fm.storage('cwdColWidth', colWidth = null);
					}
				})
				.on('iconpref', function(e, data) {
					cwd.removeClass(function(i, cName) {
						return (cName.match(/\belfinder-cwd-size\S+/g) || []).join(' ');
					});
					iconSize = data? (parseInt(data.size) || 0) : 0;
					if (!list) {
						if (iconSize > 0) {
							cwd.addClass('elfinder-cwd-size' + iconSize);
						}
						if (bufferExt.renderd) {
							requestAnimationFrame(function() {
								itemBoxSize.icons = {};
								bufferExt.hpi = null;
								bottomMarkerShow(cwd, bufferExt.renderd);
								wrapperRepaint();
							});
						}
					}
				})
				// Change icon size with mouse wheel event
				.on('onwheel' in document ? 'wheel' : 'mousewheel', function(e) {
					var tm, size, delta;
					if (!list && ((e.ctrlKey && !e.metaKey) || (!e.ctrlKey && e.metaKey))) {
						e.stopPropagation();
						e.preventDefault();
						tm = cwd.data('wheelTm');
						if (typeof tm !== 'undefined') {
							clearTimeout(tm);
							cwd.data('wheelTm', setTimeout(function() {
								cwd.removeData('wheelTm');
							}, 200));
						} else {
							cwd.data('wheelTm', false);
							size = iconSize || 0;
							delta = e.originalEvent.deltaY ? e.originalEvent.deltaY : -(e.originalEvent.wheelDelta);
							if (delta > 0) {
								if (iconSize > 0) {
									size = iconSize - 1;
								}
							} else {
								if (iconSize < options.iconsView.sizeMax) {
									size = iconSize + 1;
								}
							}
							if (size !== iconSize) {
								fm.storage('iconsize', size);
								cwd.trigger('iconpref', {size: size});
							}
						}
					}
				}),
			wrapper = $('<div class="elfinder-cwd-wrapper"></div>')
				// make cwd itself droppable for folders from nav panel
				.droppable(Object.assign({}, droppable, {autoDisable: false}))
				.on('contextmenu.'+fm.namespace, wrapperContextMenu.contextmenu)
				.on('touchstart.'+fm.namespace, wrapperContextMenu.touchstart)
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, wrapperContextMenu.touchend)
				.on('click.'+fm.namespace, wrapperContextMenu.click)
				.on('scroll.'+fm.namespace, function() {
					if (! scrolling) {
						cwd.data('selectable') && cwd.selectable('disable');
						wrapper.trigger(scrollStartEvent);
					}
					scrolling = true;
					bufferExt.scrtm && cancelAnimationFrame(bufferExt.scrtm);
					if (bufferExt.scrtm && Math.abs((bufferExt.scrolltop || 0) - (bufferExt.scrolltop = (this.scrollTop || $(this).scrollTop()))) < 5) {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					}
					bufferExt.scrtm = requestAnimationFrame(function() {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					});
				})
				.on(scrollEvent, function() {
					scrolling = false;
					wrapperRepaint();
				}),
			
			bottomMarker = $('<div>&nbsp;</div>')
				.css({position: 'absolute', width: '1px', height: '1px'})
				.hide(),
			
			selectAllCheckbox = selectCheckbox? $('<div class="elfinder-cwd-selectall"><input type="checkbox"/></div>')
				.attr('title', fm.i18n('selectall'))
				.on('click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					if ($(this).data('pending')) {
						return false;
					}
					selectAllCheckbox.data('pending', true);
					if (cwd.hasClass('elfinder-cwd-allselected')) {
						selectAllCheckbox.find('input').prop('checked', false);
						requestAnimationFrame(function() {
							unselectAll();
						});
					} else {
						selectAll();
					}
				}) : $(),
			
			restm = null,
			resize = function(init) {
				var initHeight = function() {
					if (typeof bufferExt.renderd !== 'undefined') {
						var h = 0;
						wrapper.siblings('div.elfinder-panel:visible').each(function() {
							h += $(this).outerHeight(true);
						});
						wrapper.height(wz.height() - h - wrapper._padding);
					}
				};
				
				init && initHeight();
				
				restm && cancelAnimationFrame(restm);
				restm = requestAnimationFrame(function(){
					!init && initHeight();
					var wph, cwdoh;
					// fix cwd height if it less then wrapper
					cwd.css('height', 'auto');
					wph = wrapper[0].clientHeight - parseInt(wrapper.css('padding-top')) - parseInt(wrapper.css('padding-bottom')) - parseInt(cwd.css('margin-top')),
					cwdoh = cwd.outerHeight(true);
					if (cwdoh < wph) {
						cwd.height(wph);
					}
				});
				
				list && ! colResizing && (init? wrapper.trigger('resize.fixheader') : fixTableHeader());
				
				wrapperRepaint();
			},
			
			// elfinder node
			parent = $(this).parent().on('resize', resize),
			
			// workzone node 
			wz = parent.children('.elfinder-workzone').append(wrapper.append(this).append(bottomMarker)),
			
			// message board
			mBoard = $('<div class="elfinder-cwd-message-board"></div>').insertAfter(cwd),

			// Volume expires
			vExpires = $('<div class="elfinder-cwd-expires" ></div>'),

			vExpiresTm,

			showVolumeExpires = function() {
				var remain, sec, int;
				vExpiresTm && clearTimeout(vExpiresTm);
				if (curVolId && fm.volumeExpires[curVolId]) {
					sec = fm.volumeExpires[curVolId] - ((+new Date()) / 1000);
					int = (sec % 60) + 0.1;
					remain = Math.floor(sec / 60);
					vExpires.html(fm.i18n(['minsLeft', remain])).show();
					if (remain) {
						vExpiresTm = setTimeout(showVolumeExpires, int * 1000);
					}
				}
			},

			// each item box size
			itemBoxSize = {
				icons : {},
				list : {}
			},

			// has UI tree
			hasUiTree,

			// Icon size of icons view
			iconSize,

			// Current volume id
			curVolId,
			
			winScrTm;

		// IE < 11 not support CSS `pointer-events: none`
		if (!fm.UA.ltIE10) {
			mBoard.append($('<div class="elfinder-cwd-trash" ></div>').html(fm.i18n('volume_Trash')))
			      .append(vExpires);
		}

		// setup by options
		replacement = Object.assign(replacement, options.replacement || {});
		
		try {
			colWidth = fm.storage('cwdColWidth')? fm.storage('cwdColWidth') : null;
		} catch(e) {
			colWidth = null;
		}
		
		// setup costomCols
		fm.bind('columnpref', function(e) {
			var opts = e.data || {};
			if (customCols = fm.storage('cwdCols')) {
				customCols = $.grep(customCols, function(n) {
					return (options.listView.columns.indexOf(n) !== -1)? true : false;
				});
				if (options.listView.columns.length > customCols.length) {
					$.each(options.listView.columns, function(i, n) {
						if (customCols.indexOf(n) === -1) {
							customCols.push(n);
						}
					});
				}
			} else {
				customCols = options.listView.columns;
			}
			// column names array that hidden
			var columnhides = fm.storage('columnhides') || null;
			if (columnhides && Object.keys(columnhides).length)
			customCols = $.grep(customCols, function(n) {
				return columnhides[n]? false : true;
			});
			// make template with customCols
			templates.row = makeTemplateRow();
			// repaint if need it
			list && opts.repaint && content();
		}).trigger('columnpref');

		if (mobile) {
			// for iOS5 bug
			$('body').on('touchstart touchmove touchend', function(e){});
		}
		
		selectCheckbox && cwd.addClass('elfinder-has-checkbox');
		
		$(window).on('scroll.'+fm.namespace, function() {
			winScrTm && cancelAnimationFrame(winScrTm);
			winScrTm = requestAnimationFrame(function() {
				wrapper.trigger(scrollEvent);
			});
		});
		
		$(document).on('keydown.'+fm.namespace, function(e) {
			if (e.keyCode == $.ui.keyCode.ESCAPE) {
				if (! fm.getUI().find('.ui-widget:visible').length) {
					unselectAll();
				}
			}
		});
		
		fm
			.one('init', function(){
				var style = document.createElement('style'),
				sheet, node, base, resizeTm, iconSize, i = 0;
				if (document.head) {
					document.head.appendChild(style);
					sheet = style.sheet;
					sheet.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder'+(mobile? 'LTap' : 'Drop'))+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptySearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyIncSearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyLetSearch')+'" }', i++);
				}
				if (iconSize = (fm.storage('iconsize') || options.iconsView.size || 0)) {
					iconSize = Math.min(iconSize, options.iconsView.sizeMax);
					cwd.trigger('iconpref', {size: iconSize});
				}
				if (! mobile) {
					fm.one('open', function() {
						sheet && fm.zIndex && sheet.insertRule('.ui-selectable-helper{z-index:'+fm.zIndex+';}', i++);
					});
					base = $('<div style="position:absolute"></div>');
					node = fm.getUI();
					node.on('resize', function(e, data) {
						var offset;
						e.preventDefault();
						e.stopPropagation();
						if (data && data.fullscreen) {
							offset = node.offset();
							if (data.fullscreen === 'on') {
								base.css({top:offset.top * -1 , left:offset.left * -1 }).appendTo(node);
								selectableOption.appendTo = base;
							} else {
								base.detach();
								selectableOption.appendTo = 'body';
							}
							cwd.data('selectable') && cwd.selectable('option', {appendTo : selectableOption.appendTo});
						}
					});
				}
				hasUiTree = fm.getUI('tree').length;
			})
			.bind('enable', function() {
				resize();
			})
			.bind('request.open', function() {
				bufferExt.getTmbs = [];
			})
			.one('open', function() {
				if (fm.maxTargets) {
					tmbNum = Math.min(fm.maxTargets, tmbNum);
				}
			})
			.bind('open add remove searchend', function() {
				var phash = fm.cwd().hash,
					type = this.type;
				if (type === 'open' || type === 'searchend' || fm.searchStatus.state < 2) {
					cwdHashes = $.map(fm.files(phash), function(f) { return f.hash; });
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				if (type === 'open') {
					var inTrash = function() {
							var isIn = false;
							$.each(cwdParents, function(i, h) {
								if (fm.trashes[h]) {
									isIn = true;
									return false;
								}
							});
							return isIn;
						},
						req = phash?
							(! fm.file(phash) || hasUiTree?
								(! hasUiTree?
									fm.request({
										data: {
											cmd    : 'parents',
											target : fm.cwd().hash
										},
										preventFail : true
									}) : (function() {
										var dfd = $.Deferred();
										fm.one('treesync', function(e) {
											e.data.always(function() {
												dfd.resolve();
											});
										});
										return dfd;
									})()
								) : null
							) : null,
						cwdObj = fm.cwd();
					// add/remove volume id class
					if (cwdObj.volumeid !== curVolId) {
						vExpires.empty().hide();
						if (curVolId) {
							wrapper.removeClass('elfinder-cwd-wrapper-' + curVolId);
						}
						curVolId = cwdObj.volumeid;
						showVolumeExpires();
						wrapper.addClass('elfinder-cwd-wrapper-' + curVolId);
					}
					// add/remove trash class
					$.when(req).done(function() {
						cwdParents = fm.parents(cwdObj.hash);
						wrapper[inTrash()? 'addClass':'removeClass']('elfinder-cwd-wrapper-trash');
					});
					incHashes = void 0;
					unselectAll({ notrigger: true });
					content();
				}
			})
			.bind('search', function(e) {
				cwdHashes = $.map(e.data.files, function(f) { return f.hash; });
				fm.trigger('cwdhasheschange', cwdHashes);
				incHashes = void 0;
				fm.searchStatus.ininc = false;
				content();
				fm.autoSync('stop');
			})
			.bind('searchend', function(e) {
				if (query || incHashes) {
					query = '';
					if (incHashes) {
						fm.trigger('incsearchend', e.data);
					} else {
						if (!e.data || !e.data.noupdate) {
							content();
						}
					}
				}
				fm.autoSync();
			})
			.bind('searchstart', function(e) {
				unselectAll();
				query = e.data.query;
			})
			.bind('incsearchstart', function(e) {
				var q = e.data.query || '',
					type =  e.data.type || 'SearchName',
					searchTypes = fm.options.commandsOptions.search.searchTypes || {};

				if ((searchTypes[type] && searchTypes[type].incsearch) || type === 'SearchName') {
					selectedFiles = {};
					fm.lazy(function() {
						// incremental search
						var regex, incSearch, fst = '';
						query = q;
						if (q) {
							if (q.substr(0,1) === '/') {
								q = q.substr(1);
								fst = '^';
							}
							regex = new RegExp(fst + q.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i');
							if (type === 'SearchName') {
								incHashes = $.grep(cwdHashes, function(hash) {
									var file = fm.file(hash);
									return (file && (file.name.match(regex) || (file.i18 && file.i18.match(regex))))? true : false;
								});
							} else {
								incSearch = searchTypes[type].incsearch;
								if (typeof incSearch === 'string') {
									incHashes = $.grep(cwdHashes, function(hash) {
										var file = fm.file(hash);
										return (file && file[incSearch] && (file[incSearch] + '').match(regex))? true : false;
									});
								} else if (typeof incSearch === 'function') {
									try {
										incHashes = $.grep(incSearch({val: q, regex: regex}, cwdHashes, fm), function(hash) {
											return fm.file(hash)? true : false;
										});
									} catch(e) {
										incHashes = [];
									}
								}
							}
							fm.trigger('incsearch', { hashes: incHashes, query: q })
								.searchStatus.ininc = true;
							content();
							fm.autoSync('stop');
						} else {
							fm.trigger('incsearchend');
						}
					});
				}
			})
			.bind('incsearchend', function(e) {
				query = '';
				fm.searchStatus.ininc = false;
				incHashes = void 0;
				if (!e.data || !e.data.noupdate) {
					content();
				}
				fm.autoSync();
			})
			.bind('sortchange', function() {
				var lastScrollLeft = wrapper.scrollLeft(),
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				content();
				fm.one('cwdrender', function() {
					wrapper.scrollLeft(lastScrollLeft);
					if (allsel) {
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					(allsel || Object.keys(selectedFiles).length) && trigger();
				});
			})
			.bind('viewchange', function() {
				var l      = fm.viewType != 'list',
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				if (l != list) {
					list = l;
					fm.viewType = list? 'list' : 'icons';
					if (iconSize) {
						fm.one('cwdinit', function() {
							cwd.trigger('iconpref', {size: iconSize});
						});
					}
					content();
					resize();

					if (allsel) {
						cwd.addClass('elfinder-cwd-allselected');
						selectAllCheckbox.find('input').prop('checked', true);
					}
					Object.keys(selectedFiles).length && trigger();
				}
			})
			.bind('wzresize', function() {
				var place = list ? cwd.find('tbody') : cwd,
					cwdOffset;
				resize(true);
				if (bufferExt.hpi) {
					bottomMarkerShow(place, place.find('[id]').length);
				}
				
				cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(
					{
						width: wz.width(),
						height: wz.height(),
						cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width()
					},
					wz.offset())
				);
				
				bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
			})
			.bind('changeclipboard', function(e) {
				clipCuts = {};
				if (e.data && e.data.clipboard && e.data.clipboard.length) {
					$.each(e.data.clipboard, function(i, f) {
						if (f.cut) {
							clipCuts[f.hash] = true;
						}
					});
				}
			})
			.bind('resMixinMake', function() {
				setColwidth();
			})
			.bind('tmbreload', function(e) {
				var imgs = {},
					files = (e.data && e.data.files)? e.data.files : null;
				
				$.each(files, function(i, f) {
					if (f.tmb && f.tmb != '1') {
						imgs[f.hash] = f.tmb;
					}
				});
				if (Object.keys(imgs).length) {
					attachThumbnails(imgs, true);
				}
			})
			.add(function(e) {
				var regex = query? new RegExp(query.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i') : null,
					mime  = fm.searchStatus.mime,
					inSearch = fm.searchStatus.state > 1,
					phash = inSearch && fm.searchStatus.target? fm.searchStatus.target : fm.cwd().hash,
					curPath = fm.path(phash),
					inTarget = function(f) {
						var res, parents, path;
						res = (f.phash === phash);
						if (!res && inSearch) {
							path = f.path || fm.path(f.hash);
							res = (curPath && path.indexOf(curPath) === 0);
							if (! res && fm.searchStatus.mixed) {
								res = $.grep(fm.searchStatus.mixed, function(vid) { return f.hash.indexOf(vid) === 0? true : false; }).length? true : false;
							}
						}
						if (res && inSearch) {
							if (mime) {
								res = (f.mime.indexOf(mime) === 0);
							} else {
								res = (f.name.match(regex) || (f.i18 && f.i18.match(regex)))? true : false;
							}
						}
						return res;
					},
					files = $.grep(e.data.added || [], function(f) { return inTarget(f)? true : false ;});
				add(files);
				if (fm.searchStatus.state === 2) {
					$.each(files, function(i, f) {
						if ($.inArray(f.hash, cwdHashes) === -1) {
							cwdHashes.push(f.hash);
						}
					});
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				list && resize();
				wrapper.trigger(scrollEvent);
			})
			.change(function(e) {
				var phash = fm.cwd().hash,
					sel   = fm.selected(),
					files, added;

				if (query) {
					$.each(e.data.changed || [], function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							$.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				} else {
					$.each($.grep(e.data.changed || [], function(f) { return f.phash == phash ? true : false; }), function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							$.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				}
				
				if (added) {
					fm.trigger('cwdhasheschange', cwdHashes);
					list && resize();
					wrapper.trigger(scrollEvent);
				}
				
				trigger();
			})
			.remove(function(e) {
				var place = list ? cwd.find('tbody') : cwd;
				remove(e.data.removed || []);
				trigger();
				if (buffer.length < 1 && place.children(fileSelector + (options.oldSchool? ':not(.elfinder-cwd-parent)' : '')).length < 1) {
					wz.addClass('elfinder-cwd-wrapper-empty');
					selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
					bottomMarker.hide();
					wrapper.off(scrollEvent, render);
					resize();
				} else {
					bottomMarkerShow(place);
					wrapper.trigger(scrollEvent);
				}
			})
			// select dragged file if no selected, disable selectable
			.dragstart(function(e) {
				var target = $(e.data.target),
					oe     = e.data.originalEvent;

				if (target.hasClass(clFile)) {
					
					if (!target.hasClass(clSelected)) {
						!(oe.ctrlKey || oe.metaKey || oe.shiftKey) && unselectAll({ notrigger: true });
						target.trigger(evtSelect);
						trigger();
					}
				}
				
				cwd.removeClass(clDisabled).data('selectable') && cwd.selectable('disable');
				selectLock = true;
			})
			// enable selectable
			.dragstop(function() {
				cwd.data('selectable') && cwd.selectable('enable');
				selectLock = false;
			})
			.bind('lockfiles unlockfiles selectfiles unselectfiles', function(e) {
				var events = {
						lockfiles     : evtDisable ,
						unlockfiles   : evtEnable ,
						selectfiles   : evtSelect,
						unselectfiles : evtUnselect },
					event  = events[e.type],
					files  = e.data.files || [],
					l      = files.length,
					helper = e.data.helper || $(),
					parents, ctr, add;

				if (l > 0) {
					parents = fm.parents(files[0]);
				}
				if (event === evtSelect || event === evtUnselect) {
					add  = (event === evtSelect),
					$.each(files, function(i, hash) {
						var all = cwd.hasClass('elfinder-cwd-allselected');
						if (! selectedFiles[hash]) {
							add && (selectedFiles[hash] = true);
						} else {
							if (all) {
								selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
								cwd.removeClass('elfinder-cwd-allselected');
								all = false;
							}
							! add && delete selectedFiles[hash];
						}
					});
				}
				if (!helper.data('locked')) {
					while (l--) {
						try {
							fm.cwdHash2Elm(files[l]).trigger(event);
						} catch(e) {}
					}
					! e.data.inselect && trigger();
				}
				if (wrapper.data('dropover') && parents.indexOf(wrapper.data('dropover')) !== -1) {
					ctr = e.type !== 'lockfiles';
					helper.toggleClass('elfinder-drag-helper-plus', ctr);
					wrapper.toggleClass(clDropActive, ctr);
				}
			})
			// select new files after some actions
			.bind('mkdir mkfile duplicate upload rename archive extract paste multiupload', function(e) {
				if (e.type == 'upload' && e.data._multiupload) return;
				var phash = fm.cwd().hash, files;
				
				unselectAll({ notrigger: true });

				$.each((e.data.added || []).concat(e.data.changed || []), function(i, file) { 
					file && file.phash == phash && selectFile(file.hash);
				});
				trigger();
			})
			.shortcut({
				pattern     :'ctrl+a', 
				description : 'selectall',
				callback    : selectAll
			})
			.shortcut({
				pattern     :'ctrl+shift+i', 
				description : 'selectinvert',
				callback    : selectInvert
			})
			.shortcut({
				pattern     : 'left right up down shift+left shift+right shift+up shift+down',
				description : 'selectfiles',
				type        : 'keydown' , //fm.UA.Firefox || fm.UA.Opera ? 'keypress' : 'keydown',
				callback    : function(e) { select(e.keyCode, e.shiftKey); }
			})
			.shortcut({
				pattern     : 'home',
				description : 'selectffile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:first').trigger(evtSelect));
					trigger();
				}
			})
			.shortcut({
				pattern     : 'end',
				description : 'selectlfile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:last').trigger(evtSelect)) ;
					trigger();
				}
			})
			.shortcut({
				pattern     : 'page_up',
				description : 'pageTurning',
				callback    : function(e) {
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								- (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			}).shortcut({
				pattern     : 'page_down',
				description : 'pageTurning',
				callback    : function(e) { 
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								+ (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			});
		
	});
	
	// fm.timeEnd('cwdLoad')
	
	return this;
};


/*
 * File: /js/ui/dialog.js
 */

/**
 * @class  elFinder dialog
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderdialog = function(opts, fm) {
		var platformWin = (window.navigator.platform.indexOf('Win') != -1),
		delta       = {},
		syncSize    = { enabled: false, width: false, height: false, defaultSize: null },
		fitSize     = function(dialog) {
			var opts, node;
			if (syncSize.enabled) {
				node = fm.options.dialogContained? elfNode : $(window);
				opts = {
					maxWidth : syncSize.width?  node.width() - delta.width  : null,
					maxHeight: syncSize.height? node.height() - delta.height : null
				};
				Object.assign(restoreStyle, opts);
				dialog.css(opts).trigger('resize');
				if (dialog.data('hasResizable') && (dialog.resizable('option', 'maxWidth') < opts.maxWidth || dialog.resizable('option', 'maxHeight') < opts.maxHeight)) {
					dialog.resizable('option', opts);
				}
			}
		},
		syncFunc    = function(e) {
			var dialog = e.data;
			syncTm && cancelAnimationFrame(syncTm);
			syncTm = requestAnimationFrame(function() {
				var opts, offset;
				if (syncSize.enabled) {
					fitSize(dialog);
				}
			});
		},
		checkEditing = function() {
			var cldialog = 'elfinder-dialog',
				dialogs = elfNode.children('.' + cldialog + '.' + fm.res('class', 'editing') + ':visible');
			fm[dialogs.length? 'disable' : 'enable']();
		},
		propagationEvents = {},
		syncTm, dialog, elfNode, restoreStyle;
	
	if (fm && fm.ui) {
		elfNode = fm.getUI();
	} else {
		elfNode = this.closest('.elfinder');
		if (! fm) {
			fm = elfNode.elfinder('instance');
		}
	}
	
	if (typeof opts  === 'string') {
		if ((dialog = this.closest('.ui-dialog')).length) {
			if (opts === 'open') {
				if (dialog.css('display') === 'none') {
					// Need dialog.show() and hide() to detect elements size in open() callbacks
					dialog.trigger('posinit').show().trigger('open').hide();
					dialog.fadeIn(120, function() {
						fm.trigger('dialogopened', {dialog: dialog});
					});
				}
			} else if (opts === 'close' || opts === 'destroy') {
				dialog.stop(true);
				if (dialog.is(':visible') || elfNode.is(':hidden')) {
					dialog.trigger('close');
					fm.trigger('dialogclosed', {dialog: dialog});
				}
				if (opts === 'destroy') {
					dialog.remove();
					fm.trigger('dialogremoved', {dialog: dialog});
				} else if (dialog.data('minimized')) {
					dialog.data('minimized').close();
				}
			} else if (opts === 'toTop') {
				dialog.trigger('totop');
				fm.trigger('dialogtotoped', {dialog: dialog});
			} else if (opts === 'posInit') {
				dialog.trigger('posinit');
				fm.trigger('dialogposinited', {dialog: dialog});
			} else if (opts === 'tabstopsInit') {
				dialog.trigger('tabstopsInit');
				fm.trigger('dialogtabstopsinited', {dialog: dialog});
			} else if (opts === 'checkEditing') {
				checkEditing();
			}
		}
		return this;
	}
	
	opts = Object.assign({}, $.fn.elfinderdialog.defaults, opts);
	
	if (opts.allowMinimize && opts.allowMinimize === 'auto') {
		opts.allowMinimize = this.find('textarea,input').length? true : false; 
	}
	opts.openMaximized = opts.allowMinimize && opts.openMaximized;
	if (opts.headerBtnPos && opts.headerBtnPos === 'auto') {
		opts.headerBtnPos = platformWin? 'right' : 'left';
	}
	if (opts.headerBtnOrder && opts.headerBtnOrder === 'auto') {
		opts.headerBtnOrder = platformWin? 'close:maximize:minimize' : 'close:minimize:maximize';
	}
	
	if (opts.modal && opts.allowMinimize) {
		opts.allowMinimize = false;
	}
	
	if (fm.options.dialogContained) {
		syncSize.width = syncSize.height = syncSize.enabled = true;
	} else {
		syncSize.width = (opts.maxWidth === 'window');
		syncSize.height = (opts.maxHeight === 'window');
		if (syncSize.width || syncSize.height) {
			syncSize.enabled = true;
		}
	}

	propagationEvents = fm.arrayFlip(opts.propagationEvents, true);
	
	this.filter(':not(.ui-dialog-content)').each(function() {
		var self       = $(this).addClass('ui-dialog-content ui-widget-content'),
			clactive   = 'elfinder-dialog-active',
			cldialog   = 'elfinder-dialog',
			clnotify   = 'elfinder-dialog-notify',
			clhover    = 'ui-state-hover',
			cltabstop  = 'elfinder-tabstop',
			cl1stfocus = 'elfinder-focus',
			clmodal    = 'elfinder-dialog-modal',
			id         = parseInt(Math.random()*1000000),
			titlebar   = $('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"><span class="elfinder-dialog-title">'+opts.title+'</span></div>'),
			buttonset  = $('<div class="ui-dialog-buttonset"></div>'),
			buttonpane = $('<div class=" ui-helper-clearfix ui-dialog-buttonpane ui-widget-content"></div>')
				.append(buttonset),
			btnWidth   = 0,
			btnCnt     = 0,
			tabstops   = $(),
			evCover    = $('<div style="width:100%;height:100%;position:absolute;top:0px;left:0px;"></div>').hide(),
			numberToTel = function() {
				if (opts.optimizeNumber) {
					dialog.find('input[type=number]').each(function() {
						$(this).attr('inputmode', 'numeric');
						$(this).attr('pattern', '[0-9]*');
					});
				}
			},
			tabstopsInit = function() {
				tabstops = dialog.find('.'+cltabstop);
				if (tabstops.length) {
					tabstops.attr('tabindex', '-1');
					if (! tabstops.filter('.'+cl1stfocus).length) {
						buttonset.children('.'+cltabstop+':'+(platformWin? 'first' : 'last')).addClass(cl1stfocus);
					}
				}
			},
			tabstopNext = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = cur? null : elms.filter('.'+cl1stfocus+':first');
					
				if (! node || ! node.length) {
					node = elms.first();
				}
				if (cur) {
					$.each(elms, function(i, elm) {
						if (elm === cur && elms[i+1]) {
							node = elms.eq(i+1);
							return false;
						}
					});
				}
				return node;
			},
			tabstopPrev = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = elms.last();
				$.each(elms, function(i, elm) {
					if (elm === cur && elms[i-1]) {
						node = elms.eq(i-1);
						return false;
					}
				});
				return node;
			},
			makeHeaderBtn = function() {
				$.each(opts.headerBtnOrder.split(':').reverse(), function(i, v) {
					headerBtns[v] && headerBtns[v]();
				});
				if (platformWin) {
					titlebar.children('.elfinder-titlebar-button').addClass('elfinder-titlebar-button-right');
				}
			},
			headerBtns = {
				close: function() {
					titlebar.prepend($('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button"><span class="ui-icon ui-icon-closethick"></span></span>')
						.on('mousedown touchstart', function(e) {
							e.preventDefault();
							e.stopPropagation();
							if (typeof opts.headerBtnCloseAction === 'function') {
								opts.headerBtnCloseAction(e);
								return;
							}
							self.elfinderdialog('close');
						})
					);
				},
				maximize: function() {
					if (opts.allowMaximize) {
						dialog.on('resize', function(e, data) {
							var full, elm;
							e.preventDefault();
							e.stopPropagation();
							if (data && data.maximize) {
								elm = titlebar.find('.elfinder-titlebar-full');
								full = (data.maximize === 'on');
								elm.children('span.ui-icon')
									.toggleClass('ui-icon-plusthick', ! full)
									.toggleClass('ui-icon-arrowreturnthick-1-s', full);
								if (full) {
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('disable');
										dialog.hasClass('ui-resizable') && dialog.resizable('disable');
									} catch(e) {}
									self.css('width', '100%').css('height', dialog.height() - dialog.children('.ui-dialog-titlebar').outerHeight(true) - buttonpane.outerHeight(true));
								} else {
									self.attr('style', elm.data('style'));
									elm.removeData('style');
									posCheck();
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('enable');
										dialog.hasClass('ui-resizable') && dialog.resizable('enable');
									} catch(e) {}
								}
								dialog.trigger('resize', {init: true});
							}
						});
						titlebar.prepend($('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-full"><span class="ui-icon ui-icon-plusthick"></span></span>')
							.on('mousedown touchstart', function(e) {
								var elm = $(this);
								e.preventDefault();
								e.stopPropagation();
								if (!dialog.hasClass('elfinder-maximized') && typeof elm.data('style') === 'undefined') {
									self.height(self.height());
									elm.data('style', self.attr('style') || '');
								}
								fm.toggleMaximize(dialog);
								typeof(opts.maximize) === 'function' && opts.maximize.call(self[0]);
							})
						);
					}
					
				},
				minimize: function() {
					var btn, mnode, doffset;
					if (opts.allowMinimize) {
						btn = $('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-minimize"><span class="ui-icon ui-icon-minusthick"></span></span>')
							.on('mousedown touchstart', function(e) {
								var $this = $(this),
									tray = fm.getUI('bottomtray'),
									dumStyle = { width: 70, height: 24 },
									dum = $('<div></div>').css(dumStyle).addClass(dialog.get(0).className + ' elfinder-dialog-minimized'),
									close = function() {
										mnode.remove();
										dialog.removeData('minimized').show();
										self.elfinderdialog('close');
									},
									pos = {};
								
								e.preventDefault();
								e.stopPropagation();
								if (!dialog.data('minimized')) {
									// minimize
									doffset = dialog.data('minimized', {
										dialog : function() { return mnode; },
										show : function() { mnode.show(); },
										hide : function() { mnode.hide(); },
										close : close,
										title : function(v) { mnode.children('.ui-dialog-titlebar').children('.elfinder-dialog-title').text(v); }
									}).position();
									mnode = dialog.clone().on('mousedown', function() {
										$this.trigger('mousedown');
									}).removeClass('ui-draggable ui-resizable elfinder-frontmost');
									tray.append(dum);
									Object.assign(pos, dum.offset(), dumStyle);
									dum.remove();
									mnode.height(dialog.height()).children('.ui-dialog-content:first').empty();
									fm.toHide(dialog.before(mnode));
									mnode.children('.ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle').remove();
									mnode.find('.elfinder-titlebar-minimize,.elfinder-titlebar-full').remove();
									mnode.find('.ui-dialog-titlebar-close').on('mousedown', function(e) {
										e.stopPropagation();
										e.preventDefault();
										close();
									});
									mnode.animate(pos, function() {
										mnode.attr('style', '')
										.css({ maxWidth: dialog.width() })
										.addClass('elfinder-dialog-minimized')
										.appendTo(tray);
										checkEditing();
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								} else {
									//restore
									dialog.removeData('minimized').before(mnode.css(Object.assign({'position': 'absolute'}, mnode.offset())));
									fm.toFront(mnode);
									mnode.animate(Object.assign({ width: dialog.width(), height: dialog.height() }, doffset), function() {
										dialog.show();
										fm.toFront(dialog);
										mnode.remove();
										posCheck();
										checkEditing();
										dialog.trigger('resize', {init: true});
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								}
							});
						titlebar.on('dblclick', function(e) {
							$(this).children('.elfinder-titlebar-minimize').trigger('mousedown');
						}).prepend(btn);
						dialog.on('togleminimize', function() {
							btn.trigger('mousedown');
						});
					}
				}
			},
			dialog = $('<div class="ui-front ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable std42-dialog touch-punch '+cldialog+' '+opts.cssClass+'"></div>')
				.hide()
				.append(self)
				.appendTo(elfNode)
				.draggable({
					containment : fm.options.dialogContained? elfNode : null,
					handle : '.ui-dialog-titlebar',
					start : function() {
						evCover.show();
					},
					drag : function(e, ui) {
						var top = ui.offset.top,
							left = ui.offset.left;
						if (top < 0) {
							ui.position.top = ui.position.top - top;
						}
						if (left < 0) {
							ui.position.left = ui.position.left - left;
						}
						if (fm.options.dialogContained) {
							ui.position.top < 0 && (ui.position.top = 0);
							ui.position.left < 0 && (ui.position.left = 0);
						}
					},
					stop : function(e, ui) {
						evCover.hide();
						dialog.css({height : opts.height});
						self.data('draged', true);
					}
				})
				.css({
					width     : opts.width,
					height    : opts.height,
					minWidth  : opts.minWidth,
					minHeight : opts.minHeight,
					maxWidth  : opts.maxWidth,
					maxHeight : opts.maxHeight
				})
				.on('touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove', function(e) {
					// stopPropagation of user action events
					!propagationEvents[e.type] && e.stopPropagation();
				})
				.on('mousedown', function(e) {
					!propagationEvents[e.type] && e.stopPropagation();
					requestAnimationFrame(function() {
						if (dialog.is(':visible') && !dialog.hasClass('elfinder-frontmost')) {
							toFocusNode = $(':focus');
							if (!toFocusNode.length) {
								toFocusNode = void(0);
							}
							dialog.trigger('totop');
						}
					});
				})
				.on('open', function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					if (syncSize.enabled) {
						if (opts.height && opts.height !== 'auto') {
							dialog.trigger('resize', {init: true});
						}
						if (!syncSize.defaultSize) {
							syncSize.defaultSize = { width: self.width(), height: self.height() };
						}
						fitSize(dialog);
						dialog.trigger('resize').trigger('posinit');
						elfNode.on('resize.'+fm.namespace, dialog, syncFunc);
					}
					
					if (!dialog.hasClass(clnotify)) {
						elfNode.children('.'+cldialog+':visible:not(.'+clnotify+')').each(function() {
							var d     = $(this),
								top   = parseInt(d.css('top')),
								left  = parseInt(d.css('left')),
								_top  = parseInt(dialog.css('top')),
								_left = parseInt(dialog.css('left')),
								ct    = Math.abs(top - _top) < 10,
								cl    = Math.abs(left - _left) < 10;

							if (d[0] != dialog[0] && (ct || cl)) {
								dialog.css({
									top  : ct ? (top + 10) : _top,
									left : cl ? (left + 10) : _left
								});
							}
						});
					} 
					
					if (dialog.data('modal')) {
						dialog.addClass(clmodal);
						fm.getUI('overlay').elfinderoverlay('show');
					}
					
					dialog.trigger('totop');
					
					opts.openMaximized && fm.toggleMaximize(dialog);

					fm.trigger('dialogopen', {dialog: dialog});

					typeof(opts.open) == 'function' && $.proxy(opts.open, self[0])();
					
					if (opts.closeOnEscape) {
						$(document).on('keydown.'+id, function(e) {
							if (e.keyCode == $.ui.keyCode.ESCAPE && dialog.hasClass('elfinder-frontmost')) {
								self.elfinderdialog('close');
							}
						});
					}
					dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
				})
				.on('close', function(e) {
					var dialogs, dfd;
					
					if (opts.beforeclose && typeof opts.beforeclose === 'function') {
						dfd = opts.beforeclose();
						if (!dfd || !dfd.promise) {
							dfd = !dfd? $.Deferred().reject() : $.Deferred().resolve();
						}
					} else {
						dfd = $.Deferred().resolve();
					}
					
					dfd.done(function() {
						syncSize.enabled && elfNode.off('resize.'+fm.namespace, syncFunc);
						
						if (opts.closeOnEscape) {
							$(document).off('keyup.'+id);
						}
						
						if (opts.allowMaximize) {
							fm.toggleMaximize(dialog, false);
						}
						
						fm.toHide(dialog);
						dialog.data('modal') && fm.getUI('overlay').elfinderoverlay('hide');
						
						if (typeof(opts.close) == 'function') {
							$.proxy(opts.close, self[0])();
						}
						if (opts.destroyOnClose && dialog.parent().length) {
							dialog.hide().remove();
						}
						
						// get focus to next dialog
						dialogs = elfNode.children('.'+cldialog+':visible');
						
						dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
					});
				})
				.on('totop frontmost', function() {
					var s = fm.storage('autoFocusDialog');
					
					dialog.data('focusOnMouseOver', s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver);
					
					if (dialog.data('minimized')) {
						titlebar.children('.elfinder-titlebar-minimize').trigger('mousedown');
					}
					
					if (!dialog.data('modal') && fm.getUI('overlay').is(':visible')) {
						fm.getUI('overlay').before(dialog);
					} else {
						fm.toFront(dialog);
					}
					elfNode.children('.'+cldialog+':not(.'+clmodal+')').removeClass(clactive);
					dialog.addClass(clactive);

					! fm.UA.Mobile && (toFocusNode || tabstopNext()).trigger('focus');

					toFocusNode = void(0);
				})
				.on('posinit', function() {
					var css = opts.position,
						nodeOffset, minTop, minLeft, outerSize, win, winSize, nodeFull;
					if (dialog.hasClass('elfinder-maximized')) {
						return;
					}
					if (! css && ! dialog.data('resizing')) {
						nodeFull = elfNode.hasClass('elfinder-fullscreen') || fm.options.enableAlways;
						dialog.css(nodeFull? {
							maxWidth  : '100%',
							maxHeight : '100%',
							overflow   : 'auto'
						} : restoreStyle);
						if (fm.UA.Mobile && !nodeFull && dialog.data('rotated') === fm.UA.Rotated) {
							return;
						}
						dialog.data('rotated', fm.UA.Rotated);
						win = $(window);
						nodeOffset = elfNode.offset();
						outerSize = {
							width : dialog.outerWidth(true),
							height: dialog.outerHeight(true)
						};
						outerSize.right = nodeOffset.left + outerSize.width;
						outerSize.bottom = nodeOffset.top + outerSize.height;
						winSize = {
							scrLeft: win.scrollLeft(),
							scrTop : win.scrollTop(),
							width  : win.width(),
							height : win.height()
						};
						winSize.right = winSize.scrLeft + winSize.width;
						winSize.bottom = winSize.scrTop + winSize.height;
						
						if (fm.options.dialogContained || nodeFull) {
							minTop = 0;
							minLeft = 0;
						} else {
							minTop = nodeOffset.top * -1 + winSize.scrTop;
							minLeft = nodeOffset.left * -1 + winSize.scrLeft;
						}
						css = {
							top  : outerSize.height >= winSize.height? minTop  : Math.max(minTop, parseInt((elfNode.height() - outerSize.height)/2 - 42)),
							left : outerSize.width  >= winSize.width ? minLeft : Math.max(minLeft, parseInt((elfNode.width() - outerSize.width)/2))
						};
						if (outerSize.right + css.left > winSize.right) {
							css.left = Math.max(minLeft, winSize.right - outerSize.right);
						}
						if (outerSize.bottom + css.top > winSize.bottom) {
							css.top = Math.max(minTop, winSize.bottom - outerSize.bottom);
						}
					}
					if (opts.absolute) {
						css.position = 'absolute';
					}
					css && dialog.css(css);
				})
				.on('resize', function(e, data) {
					var oh = 0, init = data && data.init, h, minH, maxH, autoH;
					if ((data && (data.minimize || data.maxmize)) || dialog.data('minimized')) {
						return;
					}
					e.stopPropagation();
					e.preventDefault();
					dialog.children('.ui-widget-header,.ui-dialog-buttonpane').each(function() {
						oh += $(this).outerHeight(true);
					});
					autoH = (opts.height === 'auto')? true : false;
					if (autoH) {
						self.css({'max-height': '', 'height': 'auto'});
					}
					if (!init && syncSize.enabled && !e.originalEvent && !dialog.hasClass('elfinder-maximized')) {
						h = dialog.height();
						minH = dialog.css('min-height') || h;
						maxH = dialog.css('max-height') || h;
						if (minH.match(/%/)) {
							minH = Math.floor((parseInt(minH) / 100) * dialog.parent().height());
						} else {
							minH = parseInt(minH);
						}
						if (maxH.match(/%/)) {
							maxH = Math.floor((parseInt(maxH) / 100) * dialog.parent().height());
						} else {
							maxH = parseInt(maxH);
						}
						h = Math.min((autoH? dialog.height() : syncSize.defaultSize.height), Math.max(maxH, minH) - oh - dialog.data('margin-y'));
					} else {
						h = dialog.height() - oh - dialog.data('margin-y');
					}
					self.css(autoH? 'max-height' : 'height', h);
					if (init) {
						return;
					}
					posCheck();
					minH = self.height();
					minH = (h < minH)? (minH + oh + dialog.data('margin-y')) : opts.minHeight;
					dialog.css('min-height', minH);
					dialog.data('hasResizable') && dialog.resizable('option', { minHeight: minH });
					if (typeof(opts.resize) === 'function') {
						$.proxy(opts.resize, self[0])(e, data);
					}
				})
				.on('tabstopsInit', tabstopsInit)
				.on('focus', '.'+cltabstop, function() {
					$(this).addClass(clhover).parent('label').addClass(clhover);
					this.id && $(this).parent().find('label[for='+this.id+']').addClass(clhover);
				})
				.on('click', 'select.'+cltabstop, function() {
					var node = $(this);
					node.data('keepFocus')? node.removeData('keepFocus') : node.data('keepFocus', true);
				})
				.on('blur', '.'+cltabstop, function() {
					$(this).removeClass(clhover).removeData('keepFocus').parent('label').removeClass(clhover);
					this.id && $(this).parent().find('label[for='+this.id+']').removeClass(clhover);
				})
				.on('mouseenter mouseleave', '.'+cltabstop+',label', function(e) {
					var $this = $(this), labelfor;
					if (this.nodeName === 'LABEL') {
						if (!$this.children('.'+cltabstop).length && (!(labelfor = $this.attr('for')) || !$('#'+labelfor).hasClass(cltabstop))) {
							return;
						}
					}
					if (opts.btnHoverFocus && dialog.data('focusOnMouseOver')) {
						if (e.type === 'mouseenter' && ! $(':focus').data('keepFocus')) {
							$this.trigger('focus');
						}
					} else {
						$this.toggleClass(clhover, e.type == 'mouseenter');
					}
				})
				.on('keydown', '.'+cltabstop, function(e) {
					var $this = $(this),
						esc, move, moveTo;
					if ($this.is(':focus')) {
						esc = e.keyCode === $.ui.keyCode.ESCAPE;
						if (e.keyCode === $.ui.keyCode.ENTER) {
							e.preventDefault();
							$this.trigger('click');
						}  else if (((e.keyCode === $.ui.keyCode.TAB) && e.shiftKey) || e.keyCode === $.ui.keyCode.LEFT || e.keyCode == $.ui.keyCode.UP) {
							move = 'prev';
						}  else if (e.keyCode === $.ui.keyCode.TAB || e.keyCode == $.ui.keyCode.RIGHT || e.keyCode == $.ui.keyCode.DOWN) {
							move = 'next';
						}
						if (move
								&&
							(
								($this.is('textarea') && !(e.ctrlKey || e.metaKey))
									||
								($this.is('select,span.ui-slider-handle') && e.keyCode !== $.ui.keyCode.TAB)
									||
								($this.is('input:not(:checkbox,:radio)') && (!(e.ctrlKey || e.metaKey) && e.keyCode === $.ui.keyCode[move === 'prev'? 'LEFT':'RIGHT']))
							)
						) {
							e.stopPropagation();
							return;
						}
						if (!esc) {
							e.stopPropagation();
						} else if ($this.is('input:not(:checkbox,:radio),textarea')) {
							if ($this.val() !== '') {
								$this.val('');
								e.stopPropagation();
							}
						}
						if (move) {
							e.preventDefault();
							(move === 'prev'? tabstopPrev : tabstopNext)(this).trigger('focus');
						}
					}
				})
				.data({modal: opts.modal}),
			posCheck = function() {
				var node = fm.getUI(),
					pos;
				if (node.hasClass('elfinder-fullscreen')) {
					pos = dialog.position();
					dialog.css('top', Math.max(Math.min(Math.max(pos.top, 0), node.height() - 100), 0));
					dialog.css('left', Math.max(Math.min(Math.max(pos.left, 0), node.width() - 200), 0));
				}
			},
			maxSize, toFocusNode;
		
		dialog.prepend(titlebar);

		makeHeaderBtn();

		$.each(opts.buttons, function(name, cb) {
			var button = $('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only '
					+'elfinder-btncnt-'+(btnCnt++)+' '
					+cltabstop
					+'"><span class="ui-button-text">'+name+'</span></button>')
				.on('click', $.proxy(cb, self[0]));
			if (cb._cssClass) {
				button.addClass(cb._cssClass);
			}
			if (platformWin) {
				buttonset.append(button);
			} else {
				buttonset.prepend(button);
			}
		});
		
		if (buttonset.children().length) {
			dialog.append(buttonpane);
			
			dialog.show();
			buttonpane.find('button').each(function(i, btn) {
				btnWidth += $(btn).outerWidth(true);
			});
			dialog.hide();
			btnWidth += 20;
			
			if (dialog.width() < btnWidth) {
				dialog.width(btnWidth);
			}
		}
		
		dialog.append(evCover);
		
		if (syncSize.enabled) {
			delta.width = dialog.outerWidth(true) - dialog.width() + ((dialog.outerWidth() - dialog.width()) / 2);
			delta.height = dialog.outerHeight(true) - dialog.height() + ((dialog.outerHeight() - dialog.height()) / 2);
		}
		
		if (fm.options.dialogContained) {
			maxSize = {
				maxWidth: elfNode.width() - delta.width,
				maxHeight: elfNode.height() - delta.height
			};
			opts.maxWidth = opts.maxWidth? Math.min(maxSize.maxWidth, opts.maxWidth) : maxSize.maxWidth;
			opts.maxHeight = opts.maxHeight? Math.min(maxSize.maxHeight, opts.maxHeight) : maxSize.maxHeight;
			dialog.css(maxSize);
		}
		
		restoreStyle = {
			maxWidth  : dialog.css('max-width'),
			maxHeight : dialog.css('max-height'),
			overflow   : dialog.css('overflow')
		};
		
		if (opts.resizable) {
			dialog.resizable({
				minWidth   : opts.minWidth,
				minHeight  : opts.minHeight,
				maxWidth   : opts.maxWidth,
				maxHeight  : opts.maxHeight,
				start      : function() {
					evCover.show();
					if (dialog.data('resizing') !== true && dialog.data('resizing')) {
						clearTimeout(dialog.data('resizing'));
					}
					dialog.data('resizing', true);
				},
				stop       : function(e, ui) {
					evCover.hide();
					dialog.data('resizing', setTimeout(function() {
						dialog.data('resizing', false);
					}, 200));
					if (syncSize.enabled) {
						syncSize.defaultSize = { width: self.width(), height: self.height() };
					}
				}
			}).data('hasResizable', true);
		} 
		
		numberToTel();
		
		tabstopsInit();
		
		typeof(opts.create) == 'function' && $.proxy(opts.create, this)();
		
		if (opts.autoOpen) {
			if (opts.open) {
				requestAnimationFrame(function() {
					self.elfinderdialog('open');
				});
			} else {
				self.elfinderdialog('open');
			}
		}

		if (opts.resize) {
			fm.bind('themechange', function() {
				setTimeout(function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					dialog.trigger('resize', {init: true});
				}, 300);
			});
		}
	});
	
	return this;
};

$.fn.elfinderdialog.defaults = {
	cssClass  : '',
	title     : '',
	modal     : false,
	resizable : true,
	autoOpen  : true,
	closeOnEscape : true,
	destroyOnClose : false,
	buttons   : {},
	btnHoverFocus : true,
	position  : null,
	absolute  : false,
	width     : 320,
	height    : 'auto',
	minWidth  : 200,
	minHeight : 70,
	maxWidth  : null,
	maxHeight : null,
	allowMinimize : 'auto',
	allowMaximize : false,
	openMaximized : false,
	headerBtnPos : 'auto',
	headerBtnOrder : 'auto',
	headerBtnCloseAction: null,
	optimizeNumber : true,
	propagationEvents : ['mousemove', 'mouseup']
};


/*
 * File: /js/ui/fullscreenbutton.js
 */

/**
 * @class  elFinder toolbar button to switch full scrren mode.
 *
 * @author Naoki Sawada
 **/

$.fn.elfinderfullscreenbutton = function(cmd) {
		return this.each(function() {
		var button = $(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			tm;
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var fullscreen = cmd.value;
				icon.addClass('elfinder-button-icon-fullscreen').toggleClass('elfinder-button-icon-unfullscreen', fullscreen);
				cmd.className = fullscreen? 'unfullscreen' : '';
			});
		});
	});
};


/*
 * File: /js/ui/navbar.js
 */

/**
 * @class elfindernav - elFinder container for diretories tree and places
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindernavbar = function(fm, opts) {
		this.not('.elfinder-navbar').each(function() {
		var nav    = $(this).hide().addClass('ui-state-default elfinder-navbar'),
			parent = nav.css('overflow', 'hidden').parent(),
			wz     = parent.children('.elfinder-workzone').append(nav),
			ltr    = fm.direction == 'ltr',
			delta, deltaW, handle, swipeHandle, autoHide, setWidth, navdock,
			setWzRect = function() {
				var cwd = fm.getUI('cwd'),
					wz  = fm.getUI('workzone'),
					wzRect = wz.data('rectangle'),
					cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(wzRect, { cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() }));
			},
			setDelta = function() {
				nav.css('overflow', 'hidden');
				delta  = Math.round(nav.outerHeight() - nav.height());
				deltaW = Math.round(navdock.outerWidth() - navdock.innerWidth());
				nav.css('overflow', 'auto');
			};

		fm.one('init', function() {
			navdock = fm.getUI('navdock');
			var set = function() {
					setDelta();
					fm.bind('wzresize', function() {
						var navdockH = 0;
						navdock.width(nav.outerWidth() - deltaW);
						if (navdock.children().length > 1) {
							navdockH = navdock.outerHeight(true);
						}
						nav.height(wz.height() - navdockH - delta);
					}).trigger('wzresize');
				};
			if (fm.cssloaded) {
				set();
			} else {
				fm.one('cssloaded', set);
			}
		})
		.one('opendone',function() {
			handle && handle.trigger('resize');
			nav.css('overflow', 'auto');
		}).bind('themechange', setDelta);
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.navbar === 'undefined') {
				autoHide.navbar = (opts.autoHideUA && opts.autoHideUA.length > 0 && $.grep(opts.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.navbar) {
				fm.one('init', function() {
					if (nav.children().length) {
						fm.uiAutoHide.push(function(){ nav.stop(true, true).trigger('navhide', { duration: 'slow', init: true }); });
					}
				});
			}
			
			fm.bind('load', function() {
				if (nav.children().length) {
					swipeHandle = $('<div class="elfinder-navbar-swipe-handle"></div>').hide().appendTo(wz);
					if (swipeHandle.css('pointer-events') !== 'none') {
						swipeHandle.remove();
						swipeHandle = null;
					}
				}
			});
			
			nav.on('navshow navhide', function(e, data) {
				var mode     = (e.type === 'navshow')? 'show' : 'hide',
					duration = (data && data.duration)? data.duration : 'fast',
					handleW = (data && data.handleW)? data.handleW : Math.max(50, fm.getUI().width() / 10);
				nav.stop(true, true)[mode]({
					duration: duration,
					step    : function() {
						fm.trigger('wzresize');
					},
					complete: function() {
						if (swipeHandle) {
							if (mode === 'show') {
								swipeHandle.stop(true, true).hide();
							} else {
								swipeHandle.width(handleW? handleW : '');
								fm.resources.blink(swipeHandle, 'slowonce');
							}
						}
						fm.trigger('navbar'+ mode);
						data.init && fm.trigger('uiautohide');
						setWzRect();
					}
				});
				autoHide.navbar = (mode !== 'show');
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {navbar: autoHide.navbar}));
			}).on('touchstart', function(e) {
				if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
					e.originalEvent._preventSwipeX = true;
				}
			});
		}
		
		if (! fm.UA.Mobile) {
			handle = nav.resizable({
					handles : ltr ? 'e' : 'w',
					minWidth : opts.minWidth || 150,
					maxWidth : opts.maxWidth || 500,
					resize : function() {
						fm.trigger('wzresize');
					},
					stop : function(e, ui) {
						fm.storage('navbarWidth', ui.size.width);
						setWzRect();
					}
				})
				.on('resize scroll', function(e) {
					var $this = $(this),
						tm = $this.data('posinit');
					e.preventDefault();
					e.stopPropagation();
					if (! ltr && e.type === 'resize') {
						nav.css('left', 0);
					}
					tm && cancelAnimationFrame(tm);
					$this.data('posinit', requestAnimationFrame(function() {
						var offset = (fm.UA.Opera && nav.scrollLeft())? 20 : 2;
						handle.css('top', 0).css({
							top  : parseInt(nav.scrollTop())+'px',
							left : ltr ? 'auto' : parseInt(nav.scrollRight() -  offset) * -1,
							right: ltr ? parseInt(nav.scrollLeft() - offset) * -1 : 'auto'
						});
						if (e.type === 'resize') {
							fm.getUI('cwd').trigger('resize');
						}
					}));
				})
				.children('.ui-resizable-handle').addClass('ui-front');
		}

		if (setWidth = fm.storage('navbarWidth')) {
			nav.width(setWidth);
		} else {
			if (fm.UA.Mobile) {
				fm.one(fm.cssloaded? 'init' : 'cssloaded', function() {
					var set = function() {
						setWidth = nav.parent().width() / 2;
						if (nav.data('defWidth') > setWidth) {
							nav.width(setWidth);
						} else {
							nav.width(nav.data('defWidth'));
						}
						nav.data('width', nav.width());
						fm.trigger('wzresize');
					};
					nav.data('defWidth', nav.width());
					$(window).on('resize.' + fm.namespace, set);
					set();
				});
			}
		}

	});
	
	return this;
};


/*
 * File: /js/ui/navdock.js
 */

/**
 * @class elfindernavdock - elFinder container for preview etc at below the navbar
 *
 * @author Naoki Sawada
 **/
$.fn.elfindernavdock = function(fm, opts) {
		this.not('.elfinder-navdock').each(function() {
		var self = $(this).hide().addClass('ui-state-default elfinder-navdock touch-punch'),
			node = self.parent(),
			wz   = node.children('.elfinder-workzone').append(self),
			resize = function(to, h) {
				var curH = h || self.height(),
					diff = to - curH,
					len  = Object.keys(sizeSyncs).length,
					calc = len? diff / len : 0,
					ovf;
				if (diff) {
					ovf = self.css('overflow');
					self.css('overflow', 'hidden');
					self.height(to);
					$.each(sizeSyncs, function(id, n) {
						n.height(n.height() + calc).trigger('resize.' + fm.namespace);
					});
					fm.trigger('wzresize');
					self.css('overflow', ovf);
				}
			},
			handle = $('<div class="ui-front ui-resizable-handle ui-resizable-n"></div>').appendTo(self),
			sizeSyncs = {},
			resizeFn = [],
			initMaxHeight = (parseInt(opts.initMaxHeight) || 50) / 100,
			maxHeight = (parseInt(opts.maxHeight) || 90) / 100,
			basicHeight, hasNode;
		
		
		self.data('addNode', function(cNode, opts) {
			var wzH = fm.getUI('workzone').height(),
				imaxH = wzH * initMaxHeight,
				curH, tH, mH;
			opts = Object.assign({
				first: false,
				sizeSync: true,
				init: false
			}, opts);
			if (!cNode.attr('id')) {
				cNode.attr('id', fm.namespace+'-navdock-' + (+new Date()));
			}
			opts.sizeSync && (sizeSyncs[cNode.attr('id')] = cNode);
			curH = self.height();
			tH = curH + cNode.outerHeight(true);
			
			if (opts.first) {
				handle.after(cNode);
			} else {
				self.append(cNode);
			}
			hasNode = true;
			self.resizable('enable').height(tH).show();
			
			fm.trigger('wzresize');
			
			if (opts.init) {
				mH = fm.storage('navdockHeight');
				if (mH) {
					tH = mH;
				} else {
					tH = tH > imaxH? imaxH : tH;
				}
				basicHeight = tH;
			}
			resize(Math.min(tH, wzH * maxHeight));
			
			return self;
		}).data('removeNode', function(nodeId, appendTo) {
			var cNode = $('#'+nodeId);
			delete sizeSyncs[nodeId];
			self.height(self.height() - $('#'+nodeId).outerHeight(true));
			if (appendTo) {
				if (appendTo === 'detach') {
					cNode = cNode.detach();
				} else {
					appendTo.append(cNode);
				}
			} else {
				cNode.remove();
			}
			if (self.children().length <= 1) {
				hasNode = false;
				self.resizable('disable').height(0).hide();
			}
			fm.trigger('wzresize');
			return cNode;
		});
		
		if (! opts.disabled) {
			fm.one('init', function() {
				var ovf;
				if (fm.getUI('navbar').children().not('.ui-resizable-handle').length) {
					self.data('dockEnabled', true);
					self.resizable({
						maxHeight: fm.getUI('workzone').height() * maxHeight,
						handles: { n: handle },
						start: function(e, ui) {
							ovf = self.css('overflow');
							self.css('overflow', 'hidden');
							fm.trigger('navdockresizestart', {event: e, ui: ui}, true);
						},
						resize: function(e, ui) {
							self.css('top', '');
							fm.trigger('wzresize', { inNavdockResize : true });
						},
						stop: function(e, ui) {
							fm.trigger('navdockresizestop', {event: e, ui: ui}, true);
							self.css('top', '');
							basicHeight = ui.size.height;
							fm.storage('navdockHeight', basicHeight);
							resize(basicHeight, ui.originalSize.height);
							self.css('overflow', ovf);
						}
					});
					fm.bind('wzresize', function(e) {
						var minH, maxH, h;
						if (self.is(':visible')) {
							maxH = fm.getUI('workzone').height() * maxHeight;
							if (! e.data || ! e.data.inNavdockResize) {
								h = self.height();
								if (maxH < basicHeight) {
									if (Math.abs(h - maxH) > 1) {
										resize(maxH);
									}
								} else {
									if (Math.abs(h - basicHeight) > 1) {
										resize(basicHeight);
									}
								}
							}
							self.resizable('option', 'maxHeight', maxH);
						}
					}).bind('themechange', function() {
						var oldH = Math.round(self.height());
						requestAnimationFrame(function() {
							var curH = Math.round(self.height()),
								diff = oldH - curH;
							if (diff !== 0) {
								resize(self.height(),  curH - diff);
							}
						});
					});
				}
				fm.bind('navbarshow navbarhide', function(e) {
					self[hasNode && e.type === 'navbarshow'? 'show' : 'hide']();
				});
			});
		}
	});
	return this;
};

/*
 * File: /js/ui/overlay.js
 */


$.fn.elfinderoverlay = function(opts) {
		var fm = this.parent().elfinder('instance'),
		o, cnt, show, hide;
	
	this.filter(':not(.elfinder-overlay)').each(function() {
		opts = Object.assign({}, opts);
		$(this).addClass('ui-front ui-widget-overlay elfinder-overlay')
			.hide()
			.on('mousedown', function(e) {
				e.preventDefault();
				e.stopPropagation();
			})
			.data({
				cnt  : 0,
				show : typeof(opts.show) == 'function' ? opts.show : function() { },
				hide : typeof(opts.hide) == 'function' ? opts.hide : function() { }
			});
	});
	
	if (opts == 'show') {
		o    = this.eq(0);
		cnt  = o.data('cnt') + 1;
		show = o.data('show');

		fm.toFront(o);
		o.data('cnt', cnt);

		if (o.is(':hidden')) {
			o.show();
			show();
		}
	} 
	
	if (opts == 'hide') {
		o    = this.eq(0);
		cnt  = o.data('cnt') - 1;
		hide = o.data('hide');
		
		o.data('cnt', cnt);
			
		if (cnt <= 0) {
			o.hide();
			hide();
		}
	}
	
	return this;
};


/*
 * File: /js/ui/panel.js
 */

$.fn.elfinderpanel = function(fm) {
		return this.each(function() {
		var panel = $(this).addClass('elfinder-panel ui-state-default ui-corner-all'),
			margin = 'margin-'+(fm.direction == 'ltr' ? 'left' : 'right');
		
		fm.one('load', function(e) {
			var navbar = fm.getUI('navbar');
			
			panel.css(margin, parseInt(navbar.outerWidth(true)));
			navbar.on('resize', function(e) {
				e.preventDefault();
				e.stopPropagation();
				panel.is(':visible') && panel.css(margin, parseInt(navbar.outerWidth(true)));
			});
		});
	});
};


/*
 * File: /js/ui/path.js
 */

/**
 * @class elFinder ui
 * Display current folder path in statusbar.
 * Click on folder name in path - open folder
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderpath = function(fm, options) {
		return this.each(function() {
		var query  = '',
			target = '',
			mimes  = [],
			place  = 'statusbar',
			clHover= fm.res('class', 'hover'),
			prefix = 'path' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-',
			wzbase = $('<div class="ui-widget-header ui-helper-clearfix elfinder-workzone-path"></div>'),
			path   = $(this).addClass('elfinder-path').html('&nbsp;')
				.on('mousedown', 'span.elfinder-path-dir', function(e) {
					var hash = $(this).attr('id').substr(prefix.length);
					e.preventDefault();
					if (hash != fm.cwd().hash) {
						$(this).addClass(clHover);
						if (query) {
							fm.exec('search', query, { target: hash, mime: mimes.join(' ') });
						} else {
							fm.trigger('select', {selected : [hash]}).exec('open', hash);
						}
					}
				})
				.prependTo(fm.getUI('statusbar').show()),
			roots = $('<div class="elfinder-path-roots"></div>').on('click', function(e) {
				e.stopPropagation();
				e.preventDefault();
				
				var roots = $.map(fm.roots, function(h) { return fm.file(h); }),
				raw = [];

				$.each(roots, function(i, f) {
					if (! f.phash && fm.root(fm.cwd().hash, true) !== f.hash) {
						raw.push({
							label    : fm.escape(f.i18 || f.name),
							icon     : 'home',
							callback : function() { fm.exec('open', f.hash); },
							options  : {
								iconClass : f.csscls || '',
								iconImg   : f.icon   || ''
							}
						});
					}
				});
				fm.trigger('contextmenu', {
					raw: raw,
					x: e.pageX,
					y: e.pageY
				});
			}).append('<span class="elfinder-button-icon elfinder-button-icon-menu" ></span>').appendTo(wzbase),
			render = function(cwd) {
				var dirs = [],
					names = [];
				$.each(fm.parents(cwd), function(i, hash) {
					var c = (cwd === hash)? 'elfinder-path-dir elfinder-path-cwd' : 'elfinder-path-dir',
						f = fm.file(hash),
						name = fm.escape(f.i18 || f.name);
					names.push(name);
					dirs.push('<span id="'+prefix+hash+'" class="'+c+'" title="'+names.join(fm.option('separator'))+'">'+name+'</span>');
				});
				return dirs.join('<span class="elfinder-path-other">'+fm.option('separator')+'</span>');
			},
			toWorkzone = function() {
				var prev;
				path.children('span.elfinder-path-dir').attr('style', '');
				prev = fm.direction === 'ltr'? $('#'+prefix + fm.cwd().hash).prevAll('span.elfinder-path-dir:first') : $();
				path.scrollLeft(prev.length? prev.position().left : 0);
			},
			fit = function() {
				if (fm.UA.CSS.flex) {
					return;
				}
				var dirs = path.children('span.elfinder-path-dir'),
					cnt  = dirs.length,
					m, bg = 0, ids;
				
				if (place === 'workzone' || cnt < 2) {
					dirs.attr('style', '');
					return;
				}
				path.width(path.css('max-width'));
				dirs.css({maxWidth: (100/cnt)+'%', display: 'inline-block'});
				m = path.width() - 9;
				path.children('span.elfinder-path-other').each(function() {
					m -= $(this).width();
				});
				ids = [];
				dirs.each(function(i) {
					var dir = $(this),
						w   = dir.width();
					m -= w;
					if (w < this.scrollWidth) {
						ids.push(i);
					}
				});
				path.width('');
				if (ids.length) {
					if (m > 0) {
						m = m / ids.length;
						$.each(ids, function(i, k) {
							var d = $(dirs[k]);
							d.css('max-width', d.width() + m);
						});
					}
					dirs.last().attr('style', '');
				} else {
					dirs.attr('style', '');
				}
			},
			hasUiTree, hasUiStat;

		fm.one('init', function() {
			hasUiTree = fm.getUI('tree').length;
			hasUiStat = fm.getUI('stat').length;
			if (! hasUiTree && options.toWorkzoneWithoutNavbar) {
				wzbase.append(path).insertBefore(fm.getUI('workzone'));
				place = 'workzone';
				fm.bind('open', toWorkzone)
				.one('opendone', function() {
					fm.getUI().trigger('resize');
				});
			}
		})
		.bind('open searchend parents', function() {
			var dirs = [];

			query  = '';
			target = '';
			mimes  = [];
			
			path.html(render(fm.cwd().hash));
			if (Object.keys(fm.roots).length > 1) {
				path.css('margin', '');
				roots.show();
			} else {
				path.css('margin', 0);
				roots.hide();
			}
			!hasUiStat && fit();
		})
		.bind('searchstart', function(e) {
			if (e.data) {
				query  = e.data.query || '';
				target = e.data.target || '';
				mimes  = e.data.mimes || [];
			}
		})
		.bind('search', function(e) {
			var dirs = [],
				html = '';
			if (target) {
				html = render(target);
			} else {
				html = fm.i18n('btnAll');
			}
			path.html('<span class="elfinder-path-other">'+fm.i18n('searcresult') + ': </span>' + html);
			fit();
		})
		// on swipe to navbar show/hide
		.bind('navbarshow navbarhide', function() {
			var wz = fm.getUI('workzone');
			if (this.type === 'navbarshow') {
				fm.unbind('open', toWorkzone);
				path.prependTo(fm.getUI('statusbar'));
				wzbase.detach();
				place = 'statusbar';
			} else {
				wzbase.append(path).insertBefore(wz);
				place = 'workzone';
				toWorkzone();
				fm.bind('open', toWorkzone);
			}
			fm.trigger('uiresize');
		})
		.bind('resize uistatchange', fit);
	});
};


/*
 * File: /js/ui/places.js
 */

/**
 * @class elFinder places/favorites ui
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
$.fn.elfinderplaces = function(fm, opts) {
		return this.each(function() {
		var dirs      = {},
			c         = 'class',
			navdir    = fm.res(c, 'navdir'),
			collapsed = fm.res(c, 'navcollapse'),
			expanded  = fm.res(c, 'navexpand'),
			hover     = fm.res(c, 'hover'),
			clroot    = fm.res(c, 'treeroot'),
			dropover  = fm.res(c, 'adroppable'),
			tpl       = fm.res('tpl', 'placedir'),
			ptpl      = fm.res('tpl', 'perms'),
			spinner   = $(fm.res('tpl', 'navspinner')),
			suffix    = opts.suffix? opts.suffix : '',
			key       = 'places' + suffix,
			menuTimer = null,
			/**
			 * Convert places dir node into dir hash
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			id2hash   = function(id) { return id.substr(6);	},
			/**
			 * Convert places dir hash into dir node id
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			hash2id   = function(hash) { return 'place-'+hash; },

			/**
			 * Convert places dir hash into dir node elment (jQuery object)
			 *
			 * @param  String  directory id
			 * @return Object
			 **/
			hash2elm  = function(hash) { return $(document.getElementById(hash2id(hash))); },
			
			/**
			 * Save current places state
			 *
			 * @return void
			 **/
			save      = function() {
				var hashes = [], data = {};
				
				hashes = $.map(subtree.children().find('[id]'), function(n) {
					return id2hash(n.id);
				});
				if (hashes.length) {
					$.each(hashes.reverse(), function(i, h) {
						data[h] = dirs[h];
					});
				} else {
					data = null;
				}
				
				fm.storage(key, data);
			},
			/**
			 * Init dir at places
			 *
			 * @return void
			 **/
			init = function() {
				var dat, hashes;
				key = 'places'+(opts.suffix? opts.suffix : ''),
				dirs = {};
				dat = fm.storage(key);
				if (typeof dat === 'string') {
					// old data type elFinder <= 2.1.12
					dat = $.grep(dat.split(','), function(hash) { return hash? true : false;});
					$.each(dat, function(i, d) {
						var dir = d.split('#');
						dirs[dir[0]] = dir[1]? dir[1] : dir[0];
					});
				} else if ($.isPlainObject(dat)) {
					dirs = dat;
				}
				// allow modify `dirs`
				/**
				 * example for preset places
				 * 
				 * elfinderInstance.bind('placesload', function(e, fm) {
				 * 	//if (fm.storage(e.data.storageKey) === null) { // for first time only
				 * 	if (!fm.storage(e.data.storageKey)) {           // for empty places
				 * 		e.data.dirs[targetHash] = fallbackName;     // preset folder
				 * 	}
				 * }
				 **/
				fm.trigger('placesload', {dirs: dirs, storageKey: key}, true);
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);
					
					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists = {};
						
						data.files && data.files.length && fm.cache(data.files);
						
						$.each(data.files, function(i, f) {
							var hash = f.hash;
							exists[hash] = f;
						});
						$.each(dirs, function(h, f) {
							add(exists[h] || Object.assign({notfound: true}, f));
						});
						if (fm.storage('placesState') > 0) {
							root.trigger('click');
						}
					})
					.always(function() {
						spinner.remove();
					});
				}
			},
			/**
			 * Return node for given dir object
			 *
			 * @param  Object  directory object
			 * @return jQuery
			 **/
			create    = function(dir, hash) {
				return $(tpl.replace(/\{id\}/, hash2id(dir? dir.hash : hash))
						.replace(/\{name\}/, fm.escape(dir? dir.i18 || dir.name : hash))
						.replace(/\{cssclass\}/, dir? (fm.perms2class(dir) + (dir.notfound? ' elfinder-na' : '') + (dir.csscls? ' '+dir.csscls : '')) : '')
						.replace(/\{permissions\}/, (dir && (!dir.read || !dir.write || dir.notfound))? ptpl : '')
						.replace(/\{title\}/, dir? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : '')
						.replace(/\{symlink\}/, '')
						.replace(/\{style\}/, (dir && dir.icon)? fm.getIconStyle(dir) : ''));
			},
			/**
			 * Add new node into places
			 *
			 * @param  Object  directory object
			 * @return void
			 **/
			add = function(dir) {
				var node, hash;

				if (dir.mime !== 'directory') {
					return false;
				}
				hash = dir.hash;
				if (!fm.files().hasOwnProperty(hash)) {
					// update cache
					fm.trigger('tree', {tree: [dir]});
				}
				
				node = create(dir, hash);
				
				dirs[hash] = dir;
				subtree.prepend(node);
				root.addClass(collapsed);
				sortBtn.toggle(subtree.children().length > 1);
				
				return true;
			},
			/**
			 * Remove dir from places
			 *
			 * @param  String  directory hash
			 * @return String  removed name
			 **/
			remove = function(hash) {
				var name = null, tgt, cnt;

				if (dirs[hash]) {
					delete dirs[hash];
					tgt = hash2elm(hash);
					if (tgt.length) {
						name = tgt.text();
						tgt.parent().remove();
						cnt = subtree.children().length;
						sortBtn.toggle(cnt > 1);
						if (! cnt) {
							root.removeClass(collapsed);
							places.removeClass(expanded);
							subtree.slideToggle(false);
						}
					}
				}
				
				return name;
			},
			/**
			 * Move up dir on places
			 *
			 * @param  String  directory hash
			 * @return void
			 **/
			moveup = function(hash) {
				var self = hash2elm(hash),
					tgt  = self.parent(),
					prev = tgt.prev('div'),
					cls  = 'ui-state-hover',
					ctm  = fm.getUI('contextmenu');
				
				menuTimer && clearTimeout(menuTimer);
				
				if (prev.length) {
					ctm.find(':first').data('placesHash', hash);
					self.addClass(cls);
					tgt.insertBefore(prev);
					prev = tgt.prev('div');
					menuTimer = setTimeout(function() {
						self.removeClass(cls);
						if (ctm.find(':first').data('placesHash') === hash) {
							ctm.hide().empty();
						}
					}, 1500);
				}
				
				if(!prev.length) {
					self.removeClass(cls);
					ctm.hide().empty();
				}
			},
			/**
			 * Update dir at places
			 *
			 * @param  Object   directory
			 * @param  String   previous hash
			 * @return Boolean
			 **/
			update = function(dir, preHash) {
				var hash = dir.hash,
					tgt  = hash2elm(preHash || hash),
					node = create(dir, hash);

				if (tgt.length > 0) {
					tgt.parent().replaceWith(node);
					dirs[hash] = dir;
					return true;
				} else {
					return false;
				}
			},
			/**
			 * Remove all dir from places
			 *
			 * @return void
			 **/
			clear = function() {
				subtree.empty();
				root.removeClass(collapsed);
				places.removeClass(expanded);
				subtree.slideToggle(false);
			},
			/**
			 * Sort places dirs A-Z
			 *
			 * @return void
			 **/
			sort = function() {
				$.each(dirs, function(h, f) {
					var dir = fm.file(h) || f,
						node = create(dir, h),
						ret = null;
					if (!dir) {
						node.hide();
					}
					if (subtree.children().length) {
						$.each(subtree.children(), function() {
							var current =  $(this);
							if ((dir.i18 || dir.name).localeCompare(current.children('.'+navdir).text()) < 0) {
								ret = !node.insertBefore(current);
								return ret;
							}
						});
						if (ret !== null) {
							return true;
						}
					}
					!hash2elm(h).length && subtree.append(node);
				});
				save();
			},
			// sort button
			sortBtn = $('<span class="elfinder-button-icon elfinder-button-icon-sort elfinder-places-root-icon" title="'+fm.i18n('cmdsort')+'"></span>')
				.hide()
				.on('click', function(e) {
					e.stopPropagation();
					subtree.empty();
					sort();
				}
			),
			/**
			 * Node - wrapper for places root
			 *
			 * @type jQuery
			 **/
			wrapper = create({
					hash  : 'root-'+fm.namespace, 
					name  : fm.i18n(opts.name, 'places'),
					read  : true,
					write : true
				}),
			/**
			 * Places root node
			 *
			 * @type jQuery
			 **/
			root = wrapper.children('.'+navdir)
				.addClass(clroot)
				.on('click', function(e) {
					e.stopPropagation();
					if (root.hasClass(collapsed)) {
						places.toggleClass(expanded);
						subtree.slideToggle();
						fm.storage('placesState', places.hasClass(expanded)? 1 : 0);
					}
				})
				.append(sortBtn),
			/**
			 * Container for dirs
			 *
			 * @type jQuery
			 **/
			subtree = wrapper.children('.'+fm.res(c, 'navsubtree')),
			
			/**
			 * Main places container
			 *
			 * @type jQuery
			 **/
			places = $(this).addClass(fm.res(c, 'tree')+' elfinder-places ui-corner-all')
				.hide()
				.append(wrapper)
				.appendTo(fm.getUI('navbar'))
				.on('mouseenter mouseleave', '.'+navdir, function(e) {
					$(this).toggleClass('ui-state-hover', (e.type == 'mouseenter'));
				})
				.on('click', '.'+navdir, function(e) {
					var p = $(this);
					if (p.data('longtap')) {
						e.stopPropagation();
						return;
					}
					! p.hasClass('elfinder-na') && fm.exec('open', p.attr('id').substr(6));
				})
				.on('contextmenu', '.'+navdir+':not(.'+clroot+')', function(e) {
					var self = $(this),
						hash = self.attr('id').substr(6);
					
					e.preventDefault();

					fm.trigger('contextmenu', {
						raw : [{
							label    : fm.i18n('moveUp'),
							icon     : 'up',
							remain   : true,
							callback : function() { moveup(hash); save(); }
						},'|',{
							label    : fm.i18n('rmFromPlaces'),
							icon     : 'rm',
							callback : function() { remove(hash); save(); }
						}],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
					
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.droppable({
					tolerance  : 'pointer',
					accept     : '.elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file',
					hoverClass : fm.res('class', 'adroppable'),
					classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
						'ui-droppable-hover': fm.res('class', 'adroppable')
					},
					over       : function(e, ui) {
						var helper = ui.helper,
							dir    = $.grep(helper.data('files'), function(h) { return (fm.file(h).mime === 'directory' && !dirs[h])? true : false; });
						e.stopPropagation();
						helper.data('dropover', helper.data('dropover') + 1);
						if (fm.insideWorkzone(e.pageX, e.pageY)) {
							if (dir.length > 0) {
								helper.addClass('elfinder-drag-helper-plus');
								fm.trigger('unlockfiles', {files : helper.data('files'), helper: helper});
							} else {
								$(this).removeClass(dropover);
							}
						}
					},
					out : function(e, ui) {
						var helper = ui.helper;
						e.stopPropagation();
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
						$(this).removeData('dropover')
						       .removeClass(dropover);
					},
					drop       : function(e, ui) {
						var helper  = ui.helper,
							resolve = true;
						
						$.each(helper.data('files'), function(i, hash) {
							var dir = fm.file(hash);
							
							if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
								add(dir);
							} else {
								resolve = false;
							}
						});
						save();
						resolve && helper.hide();
					}
				})
				// for touch device
				.on('touchstart', '.'+navdir+':not(.'+clroot+')', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var hash = $(this).attr('id').substr(6),
					p = $(this)
					.addClass(hover)
					.data('longtap', null)
					.data('tmlongtap', setTimeout(function(){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							raw : [{
								label    : fm.i18n('rmFromPlaces'),
								icon     : 'rm',
								callback : function() { remove(hash); save(); }
							}],
							'x'       : e.originalEvent.touches[0].pageX,
							'y'       : e.originalEvent.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', '.'+navdir+':not(.'+clroot+')', function(e) {
					clearTimeout($(this).data('tmlongtap'));
					if (e.type == 'touchmove') {
						$(this).removeClass(hover);
					}
				});

		if ($.fn.sortable) {
			subtree.addClass('touch-punch')
			.sortable({
				appendTo : fm.getUI(),
				revert   : false,
				helper   : function(e) {
					var dir = $(e.target).parent();
						
					dir.children().removeClass('ui-state-hover');
					
					return $('<div class="ui-widget elfinder-place-drag elfinder-'+fm.direction+'"></div>')
							.append($('<div class="elfinder-navbar"></div>').show().append(dir.clone()));

				},
				stop     : function(e, ui) {
					var target = $(ui.item[0]),
						top    = places.offset().top,
						left   = places.offset().left,
						width  = places.width(),
						height = places.height(),
						x      = e.pageX,
						y      = e.pageY;
					
					if (!(x > left && x < left+width && y > top && y < y+height)) {
						remove(id2hash(target.children(':first').attr('id')));
						save();
					}
				},
				update   : function(e, ui) {
					save();
				}
			});
		}

		// "on regist" for command exec
		$(this).on('regist', function(e, files){
			var added = false;
			$.each(files, function(i, dir) {
				if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
					if (add(dir)) {
						added = true;
					}
				}
			});
			added && save();
		});
	

		// on fm load - show places and load files from backend
		fm.one('load', function() {
			var dat, hashes;
			
			if (fm.oldAPI) {
				return;
			}
			
			places.show().parent().show();

			init();

			fm.change(function(e) {
				var changed = false;
				$.each(e.data.changed, function(i, file) {
					if (dirs[file.hash]) {
						if (file.mime !== 'directory') {
							if (remove(file.hash)) {
								changed = true;
							}
						} else {
							if (update(file)) {
								changed = true;
							}
						}
					}
				});
				changed && save();
			})
			.bind('rename', function(e) {
				var changed = false;
				if (e.data.removed) {
					$.each(e.data.removed, function(i, hash) {
						if (e.data.added[i]) {
							if (update(e.data.added[i], hash)) {
								changed = true;
							}
						}
					});
				}
				changed && save();
			})
			.bind('rm paste', function(e) {
				var names = [],
					changed = false;
				if (e.data.removed) {
					$.each(e.data.removed, function(i, hash) {
						var name = remove(hash);
						name && names.push(name);
					});
				}
				if (names.length) {
					changed = true;
				}
				if (e.data.added && names.length) {
					$.each(e.data.added, function(i, file) {
						if ($.inArray(file.name, names) !== 1) {
							file.mime == 'directory' && add(file);
						}
					});
				}
				changed && save();
			})
			.bind('sync netmount', function() {
				var ev = this,
					opSuffix = opts.suffix? opts.suffix : '',
					hashes;
				
				if (ev.type === 'sync') {
					// check is change of opts.suffix
					if (suffix !== opSuffix) {
						suffix = opSuffix;
						clear();
						init();
						return;
					}
				}
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);

					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists  = {},
							updated = false,
							cwd     = fm.cwd().hash;
						$.each(data.files || [], function(i, file) {
							var hash = file.hash;
							exists[hash] = file;
							if (!fm.files().hasOwnProperty(file.hash)) {
								// update cache
								fm.updateCache({tree: [file]});
							}
						});
						$.each(dirs, function(h, f) {
							if (Boolean(f.notfound) === Boolean(exists[h])) {
								if ((f.phash === cwd && ev.type !== 'netmount') || (exists[h] && exists[h].mime !== 'directory')) {
									if (remove(h)) {
										updated = true;
									}
								} else {
									if (update(exists[h] || Object.assign({notfound: true}, f))) {
										updated = true;
									}
								}
							} else if (exists[h] && exists[h].phash != cwd) {
								// update permission of except cwd
								update(exists[h]);
							}
						});
						updated && save();
					})
					.always(function() {
						spinner.remove();
					});
				}
			});
			
		});
		
	});
};


/*
 * File: /js/ui/searchbutton.js
 */

/**
 * @class  elFinder toolbar search button widget.
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindersearchbutton = function(cmd) {
		return this.each(function() {
		var result = false,
			fm     = cmd.fm,
			disabled = fm.res('class', 'disabled'),
			isopts = cmd.options.incsearch || { enable: false },
			sTypes = cmd.options.searchTypes,
			id     = function(name){return fm.namespace + fm.escape(name);},
			toolbar= fm.getUI('toolbar'),
			btnCls = fm.res('class', 'searchbtn'),
			button = $(this)
				.hide()
				.addClass('ui-widget-content elfinder-button '+btnCls)
				.on('click', function(e) {
					e.stopPropagation();
				}),
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					maxHeight : fmNode.height() - 40
				};
			},
			search = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				var val = $.trim(input.val()),
					from = !$('#' + id('SearchFromAll')).prop('checked'),
					mime = $('#' + id('SearchMime')).prop('checked'),
					type = '';
				if (from) {
					if ($('#' + id('SearchFromVol')).prop('checked')) {
						from = fm.root(fm.cwd().hash);
					} else {
						from = fm.cwd().hash;
					}
				}
				if (mime) {
					mime = val;
					val = '.';
				}
				if (typeSet) {
					type = typeSet.children('input:checked').val();
				}
				if (val) {
					input.trigger('focus');
					cmd.exec(val, from, mime, type).done(function() {
						result = true;
					}).fail(function() {
						abort();
					});
					
				} else {
					fm.trigger('searchend');
				}
			},
			abort = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				input.val('').trigger('blur');
				if (result || incVal) {
					result = false;
					incVal = '';
					fm.lazy(function() {
						fm.trigger('searchend');
					});
				}
			},
			incVal = '',
			input  = $('<input type="text" size="42"/>')
				.on('focus', function() {
					// close other menus
					!button.hasClass('ui-state-active') && fm.getUI().click();
					inFocus = true;
					incVal = '';
					button.addClass('ui-state-active');
					fm.trigger('uiresize');
					opts && opts.css(getMenuOffset()).slideDown(function() {
						// Care for on browser window re-active
						button.addClass('ui-state-active');
						fm.toFront(opts);
					});
				})
				.on('blur', function() {
					inFocus = false;
					if (opts) {
						if (!opts.data('infocus')) {
							opts.slideUp(function() {
								button.removeClass('ui-state-active');
								fm.trigger('uiresize');
								fm.toHide(opts);
							});
						} else {
							opts.data('infocus', false);
						}
					} else {
						button.removeClass('ui-state-active');
					}
				})
				.appendTo(button)
				// to avoid fm shortcuts on arrows
				.on('keypress', function(e) {
					e.stopPropagation();
				})
				.on('keydown', function(e) {
					e.stopPropagation();
					if (e.keyCode === $.ui.keyCode.ENTER) {
						search();
					} else if (e.keyCode === $.ui.keyCode.ESCAPE) {
						e.preventDefault();
						abort();
					}
				}),
			opts, typeSet, cwdReady, inFocus;
		
		if (isopts.enable) {
			isopts.minlen = isopts.minlen || 2;
			isopts.wait = isopts.wait || 500;
			input
				.attr('title', fm.i18n('incSearchOnly'))
				.on('compositionstart', function() {
					input.data('composing', true);
				})
				.on('compositionend', function() {
					input.removeData('composing');
					input.trigger('input'); // for IE, edge
				})
				.on('input', function() {
					if (! input.data('composing')) {
						input.data('inctm') && clearTimeout(input.data('inctm'));
						input.data('inctm', setTimeout(function() {
							var val = input.val();
							if (val.length === 0 || val.length >= isopts.minlen) {
								(incVal !== val) && fm.trigger('incsearchstart', {
									query: val,
									type: typeSet? typeSet.children('input:checked').val() : 'searchName'
								});
								incVal = val;
								if (val === '' && fm.searchStatus.state > 1 && fm.searchStatus.query) {
									input.val(fm.searchStatus.query).trigger('select');
								} 
							}
						}, isopts.wait));
					}
				});
			
			if (fm.UA.ltIE8) {
				input.on('keydown', function(e) {
						if (e.keyCode === 229) {
							input.data('imetm') && clearTimeout(input.data('imetm'));
							input.data('composing', true);
							input.data('imetm', setTimeout(function() {
								input.removeData('composing');
							}, 100));
						}
					})
					.on('keyup', function(e) {
						input.data('imetm') && clearTimeout(input.data('imetm'));
						if (input.data('composing')) {
							e.keyCode === $.ui.keyCode.ENTER && input.trigger('compositionend');
						} else {
							input.trigger('input');
						}
					});
			}
		}
		
		$('<span class="ui-icon ui-icon-search" title="'+cmd.title+'"></span>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (button.hasClass('ui-state-active')) {
					search();
				} else {
					input.trigger('focus');
				}
			});
		
		$('<span class="ui-icon ui-icon-close"></span>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (input.val() === '' && !button.hasClass('ui-state-active')) {
					input.trigger('focus');
				} else {
					abort();
				}
			});
		
		// wait when button will be added to DOM
		fm.bind('toolbarload', function(){
			var parent = button.parent();
			if (parent.length) {
				toolbar.prepend(button.show());
				parent.remove();
				// position icons for ie7
				if (fm.UA.ltIE7) {
					var icon = button.children(fm.direction == 'ltr' ? '.ui-icon-close' : '.ui-icon-search');
					icon.css({
						right : '',
						left  : parseInt(button.width())-icon.outerWidth(true)
					});
				}
			}
		});
		
		fm
			.one('init', function() {
				fm.getUI('cwd').on('touchstart click', function() {
					inFocus && input.trigger('blur');
				});
			})
			.one('open', function() {
				opts = (fm.api < 2.1)? null : $('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-search-menu ui-corner-all"></div>')
					.append(
						$('<div class="buttonset"></div>')
							.append(
								$('<input id="'+id('SearchFromCwd')+'" name="serchfrom" type="radio" checked="checked"/><label for="'+id('SearchFromCwd')+'">'+fm.i18n('btnCwd')+'</label>'),
								$('<input id="'+id('SearchFromVol')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromVol')+'">'+fm.i18n('btnVolume')+'</label>'),
								$('<input id="'+id('SearchFromAll')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromAll')+'">'+fm.i18n('btnAll')+'</label>')
							),
						$('<div class="buttonset elfinder-search-type"></div>')
							.append(
								$('<input id="'+id('SearchName')+'" name="serchcol" type="radio" checked="checked" value="SearchName"/><label for="'+id('SearchName')+'">'+fm.i18n('btnFileName')+'</label>')
							)
					)
					.hide()
					.appendTo(fm.getUI());
				if (opts) {
					if (sTypes) {
						typeSet = opts.find('.elfinder-search-type');
						$.each(cmd.options.searchTypes, function(i, v) {
							typeSet.append($('<input id="'+id(i)+'" name="serchcol" type="radio" value="'+fm.escape(i)+'"/><label for="'+id(i)+'">'+fm.i18n(v.name)+'</label>'));
						});
					}
					opts.find('div.buttonset').buttonset();
					$('#'+id('SearchFromAll')).next('label').attr('title', fm.i18n('searchTarget', fm.i18n('btnAll')));
					if (sTypes) {
						$.each(sTypes, function(i, v) {
							if (v.title) {
								$('#'+id(i)).next('label').attr('title', fm.i18n(v.title));
							}
						});
					}
					opts.on('mousedown', 'div.buttonset', function(e){
							e.stopPropagation();
							opts.data('infocus', true);
						})
						.on('click', 'input', function(e) {
							e.stopPropagation();
							$.trim(input.val())? search() : input.trigger('focus');
						})
						.on('close', function() {
							input.trigger('blur');
						});
				}
			})
			.bind('searchend', function() {
				input.val('');
			})
			.bind('open parents', function() {
				var dirs    = [],
					volroot = fm.file(fm.root(fm.cwd().hash));
				
				if (volroot) {
					$.each(fm.parents(fm.cwd().hash), function(i, hash) {
						dirs.push(fm.file(hash).name);
					});
		
					$('#'+id('SearchFromCwd')).next('label').attr('title', fm.i18n('searchTarget', dirs.join(fm.option('separator'))));
					$('#'+id('SearchFromVol')).next('label').attr('title', fm.i18n('searchTarget', volroot.name));
				}
			})
			.bind('open', function() {
				incVal && abort();
			})
			.bind('cwdinit', function() {
				cwdReady = false;
			})
			.bind('cwdrender',function() {
				cwdReady = true;
			})
			.bind('keydownEsc', function() {
				if (incVal && incVal.substr(0, 1) === '/') {
					incVal = '';
					input.val('');
					fm.trigger('searchend');
				}
			})
			.shortcut({
				pattern     : 'ctrl+f f3',
				description : cmd.title,
				callback    : function() { 
					input.trigger('select').trigger('focus');
				}
			})
			.shortcut({
				pattern     : 'a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9',
				description : fm.i18n('firstLetterSearch'),
				callback    : function(e) { 
					if (! cwdReady) { return; }
					
					var code = e.originalEvent.keyCode,
						next = function() {
							var sel = fm.selected(),
								key = $.ui.keyCode[(!sel.length || fm.cwdHash2Elm(sel[0]).next('[id]').length)? 'RIGHT' : 'HOME'];
							$(document).trigger($.Event('keydown', { keyCode: key, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
						},
						val;
					if (code >= 96 && code <= 105) {
						code -= 48;
					}
					val = '/' + String.fromCharCode(code);
					if (incVal !== val) {
						input.val(val);
						incVal = val;
						fm
							.trigger('incsearchstart', { query: val })
							.one('cwdrender', next);
					} else{
						next();
					}
				}
			});

	});
};


/*
 * File: /js/ui/sortbutton.js
 */

/**
 * @class  elFinder toolbar button menu with sort variants.
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindersortbutton = function(cmd) {
		return this.each(function() {
		var fm       = cmd.fm,
			name     = cmd.name,
			c        = 'class',
			disabled = fm.res(c, 'disabled'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = item+'-selected',
			asc      = selected+'-asc',
			desc     = selected+'-desc',
			text     = $('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			button   = $(this).addClass('ui-state-default elfinder-button elfinder-menubutton elfiner-button-'+name)
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon elfinder-button-icon-'+name+'"></span>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button.toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					if (!button.hasClass(disabled)) {
						e.stopPropagation();
						menu.is(':hidden') && fm.getUI().click();
						menu.css(getMenuOffset()).slideToggle({
							duration: 100,
							done: function(e) {
								fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
							}
						});
					}
				}),
			hide = function() { fm.toHide(menu); },
			menu = $('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-sort-menu ui-corner-all"></div>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function(e) { $(this).toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
				})
				.on('close', hide),
			update = function() {
				menu.children('[rel]').removeClass(selected+' '+asc+' '+desc)
					.filter('[rel="'+fm.sortType+'"]')
					.addClass(selected+' '+(fm.sortOrder == 'asc' ? asc : desc));

				menu.children('.elfinder-sort-stick').toggleClass(selected, fm.sortStickFolders);
				menu.children('.elfinder-sort-tree').toggleClass(selected, fm.sortAlsoTreeview);
			},
			getMenuOffset = function() {
				var baseOffset = fm.getUI().offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left
				};
			},
			tm;
			
		text.hide();
		
		$.each(fm.sortRules, function(name, value) {
			menu.append($('<div class="'+item+'" rel="'+name+'"><span class="ui-icon ui-icon-arrowthick-1-n"></span><span class="ui-icon ui-icon-arrowthick-1-s"></span>'+fm.i18n('sort'+name)+'</div>').data('type', name));
		});
		
		menu.children().on('click', function(e) {
			cmd.exec([], $(this).removeClass(hover).attr('rel'));
		});
		
		$('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-stick"><span class="ui-icon ui-icon-check"></span>'+fm.i18n('sortFoldersFirst')+'</div>')
			.appendTo(menu)
			.on('click', function() {
				cmd.exec([], 'stick');
			});

		fm.one('init', function() {
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				$('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-tree"><span class="ui-icon ui-icon-check"></span>'+fm.i18n('sortAlsoTreeview')+'</div>')
				.appendTo(menu)
				.on('click', function() {
					cmd.exec([], 'tree');
				});
			}
		})
		.bind('disable select', hide)
		.bind('sortchange', update).getUI().on('click', hide);
		
		if (menu.children().length > 1) {
			cmd.change(function() {
					tm && cancelAnimationFrame(tm);
					tm = requestAnimationFrame(function() {
						button.toggleClass(disabled, cmd.disabled());
						update();
					});
				})
				.change();
		} else {
			button.addClass(disabled);
		}

	});
	
};


/*
 * File: /js/ui/stat.js
 */

/**
 * @class elFinder ui
 * Display number of files/selected files and its size in statusbar
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderstat = function(fm) {
		return this.each(function() {
		var size       = $(this).addClass('elfinder-stat-size'),
			sel        = $('<div class="elfinder-stat-selected"></div>')
				.on('click', 'a', function(e) {
					var hash = $(this).data('hash');
					e.preventDefault();
					fm.exec('opendir', [ hash ]);
				}),
			titleitems = fm.i18n('items'),
			titlesel   = fm.i18n('selected'),
			titlesize  = fm.i18n('size'),
			setstat    = function(files) {
				var c = 0, 
					s = 0,
					cwd = fm.cwd(),
					calc = true,
					hasSize = true;

				if (cwd.sizeInfo || cwd.size) {
					s = cwd.size;
					calc = false;
				}
				$.each(files, function(i, file) {
					c++;
					if (calc) {
						s += parseInt(file.size) || 0;
						if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) {
							hasSize = false;
						}
					}
				});
				size.html(titleitems+': <span class="elfinder-stat-incsearch"></span>'+c+',&nbsp;<span class="elfinder-stat-size'+(hasSize? ' elfinder-stat-size-recursive' : '')+'">'+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'</span>')
					.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setIncsearchStat = function(data) {
				size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : '');
				size.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setSelect = function(files) {
				var s = 0,
					c = 0,
					dirs = [],
					path, file;

				if (files.length === 1) {
					file = files[0];
					s = file.size;
					if (fm.searchStatus.state === 2) {
						path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..');
						dirs.push('<a href="#elf_'+file.phash+'" data-hash="'+file.hash+'" title="'+path+'">'+path+'</a>');
					}
					dirs.push(fm.escape(file.i18 || file.name));
					sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : ''));
				} else if (files.length) {
					$.each(files, function(i, file) {
						c++;
						s += parseInt(file.size)||0;
					});
					sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : '&nbsp;');
				} else {
					sel.html('');
				}
				sel.attr('title', sel.text());
				fm.trigger('uistatchange');
			};

		fm.getUI('statusbar').prepend(size).append(sel).show();
		if (fm.UA.Mobile && $.fn.tooltip) {
			fm.getUI('statusbar').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}
		
		fm
		.bind('cwdhasheschange', function(e) {
			setstat($.map(e.data, function(h) { return fm.file(h); }));
		})
		.change(function(e) {
			var files = e.data.changed || [],
				cwdHash = fm.cwd().hash;
			$.each(files, function() {
				if (this.hash === cwdHash) {
					if (this.size) {
						size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size));
						size.attr('title', size.text());
					}
					return false;
				}
			});
		})
		.select(function() {
			setSelect(fm.selectedFiles());
		})
		.bind('open', function() {
			setSelect([]);
		})
		.bind('incsearch', function(e) {
			setIncsearchStat(e.data);
		})
		.bind('incsearchend', function() {
			setIncsearchStat();
		})
		;
	});
};


/*
 * File: /js/ui/toast.js
 */

/**
 * @class  elFinder toast
 * 
 * This was created inspired by the toastr. Thanks to developers of toastr.
 * CodeSeven/toastr: http://johnpapa.net <https://github.com/CodeSeven/toastr>
 *
 * @author Naoki Sawada
 **/
$.fn.elfindertoast = function(opts, fm) {
		var defOpts = Object.assign({
		mode: 'success', // or 'info', 'warning' and 'error'
		msg: '',
		showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
		showDuration: 300,
		showEasing: 'swing', //swing and linear are built into jQuery
		onShown: undefined,
		hideMethod: 'fadeOut',
		hideDuration: 1500,
		hideEasing: 'swing',
		onHidden: undefined,
		timeOut: 3000,
		extNode: undefined,
		button: undefined,
		width: undefined
	}, $.isPlainObject(fm.options.uiOptions.toast.defaults)? fm.options.uiOptions.toast.defaults : {});
	return this.each(function() {
		opts = Object.assign({}, defOpts, opts || {});
		
		var self = $(this),
			show = function(notm) {
				self.stop();
				fm.toFront(self);
				self[opts.showMethod]({
					duration: opts.showDuration,
					easing: opts.showEasing,
					complete: function() {
						opts.onShown && opts.onShown();
						if (!notm && opts.timeOut) {
							rmTm = setTimeout(rm, opts.timeOut);
						}
					}
				});
			},
			rm = function() {
				self[opts.hideMethod]({
					duration: opts.hideDuration,
					easing: opts.hideEasing,
					complete: function() {
						opts.onHidden && opts.onHidden();
						self.remove();
					}
				});
			},
			rmTm;
		
		self.on('click', function(e) {
			e.stopPropagation();
			e.preventDefault();
			rmTm && clearTimeout(rmTm);
			opts.onHidden && opts.onHidden();
			self.stop().remove();
		}).on('mouseenter mouseleave', function(e) {
			if (opts.timeOut) {
				rmTm && clearTimeout(rmTm);
				rmTm = null;
				if (e.type === 'mouseenter') {
					show(true);
				} else {
					rmTm = setTimeout(rm, opts.timeOut);
				}
			}
		}).hide().addClass('toast-' + opts.mode).append($('<div class="elfinder-toast-msg"></div>').html(opts.msg.replace(/%([a-zA-Z0-9]+)%/g, function(m, m1) {
			return fm.i18n(m1);
		})));
		
		if (opts.extNode) {
			self.append(opts.extNode);
		}

		if (opts.button) {
			self.append(
				$('<button class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"></button>')
				.append($('<span class="ui-button-text"></span>').text(fm.i18n(opts.button.text)))
				.on('mouseenter mouseleave', function(e) { 
					$(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
				})
				.on('click', opts.button.click || function(){})
			);
		}

		if (opts.width) {
			self.css('max-width', opts.width);
		}
		
		show();
	});
};

/*
 * File: /js/ui/toolbar.js
 */

/**
 * @class  elFinder toolbar
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindertoolbar = function(fm, opts) {
		this.not('.elfinder-toolbar').each(function() {
		var commands = fm._commands,
			self     = $(this).addClass('ui-helper-clearfix ui-widget-header elfinder-toolbar'),
			options  = {
				// default options
				displayTextLabel: false,
				labelExcludeUA: ['Mobile'],
				autoHideUA: ['Mobile'],
				showPreferenceButton: 'none'
			},
			filter   = function(opts) {
				return $.grep(opts, function(v) {
					if ($.isPlainObject(v)) {
						options = Object.assign(options, v);
						return false;
					}
					return true;
				});
			},
			render = function(disabled){
				var name,cmdPref;
				
				$.each(buttons, function(i, b) { b.detach(); });
				self.empty();
				l = panels.length;
				while (l--) {
					if (panels[l]) {
						panel = $('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>');
						i = panels[l].length;
						while (i--) {
							name = panels[l][i];
							if ((!disabled || !disabled[name]) && (cmd = commands[name])) {
								button = 'elfinder'+cmd.options.ui;
								if (! buttons[name] && $.fn[button]) {
									buttons[name] = $('<div></div>')[button](cmd);
								}
								if (buttons[name]) {
									buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
									panel.prepend(buttons[name]);
								}
							}
						}
						
						panel.children().length && self.prepend(panel);
						panel.children(':gt(0)').before('<span class="ui-widget-content elfinder-toolbar-button-separator"></span>');

					}
				}
				
				if (cmdPref = commands['preference']) {
					//cmdPref.state = !self.children().length? 0 : -1;
					if (options.showPreferenceButton === 'always' || (!self.children().length && options.showPreferenceButton === 'auto')) {
						//cmdPref.state = 0;
						panel = $('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>');
						name = 'preference';
						button = 'elfinder'+cmd.options.ui;
						buttons[name] = $('<div></div>')[button](cmdPref);
						buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
						panel.prepend(buttons[name]);
						self.append(panel);
					}
				}
				
				(! self.data('swipeClose') && self.children().length)? self.show() : self.hide();
				prevHeight = self[0].clientHeight;
				fm.trigger('toolbarload').trigger('uiresize');
			},
			buttons = {},
			panels   = filter(opts || []),
			dispre   = null,
			uiCmdMapPrev = '',
			prevHeight = 0,
			contextRaw = [],
			l, i, cmd, panel, button, swipeHandle, autoHide, textLabel, resizeTm;
		
		// normalize options
		options.showPreferenceButton = options.showPreferenceButton.toLowerCase();
		
		if (options.displayTextLabel !== 'none') {
			// correction of options.displayTextLabel
			textLabel = fm.storage('toolbarTextLabel');
			if (textLabel === null) {
				textLabel = (options.displayTextLabel && (! options.labelExcludeUA || ! options.labelExcludeUA.length || ! $.grep(options.labelExcludeUA, function(v){ return fm.UA[v]? true : false; }).length));
			} else {
				textLabel = (textLabel == 1);
			}
			contextRaw.push({
				label    : fm.i18n('textLabel'),
				icon     : 'text',
				callback : function() {
					textLabel = ! textLabel;
					self.css('height', '').find('.elfinder-button-text')[textLabel? 'show':'hide']();
					fm.trigger('uiresize').storage('toolbarTextLabel', textLabel? '1' : '0');
				},
			});
		}

		if (options.preferenceInContextmenu && commands['preference']) {
			contextRaw.push({
				label    : fm.i18n('toolbarPref'),
				icon     : 'preference',
				callback : function() {
					fm.exec('preference', void(0), {tab: 'toolbar'});
				}
			});
		}

		// add contextmenu
		if (contextRaw.length) {
			self.on('contextmenu', function(e) {
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: contextRaw,
						x: e.pageX,
						y: e.pageY
					});
				}).on('touchstart', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					self.data('tmlongtap') && clearTimeout(self.data('tmlongtap'));
					self.removeData('longtap')
						.data('longtap', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY})
						.data('tmlongtap', setTimeout(function() {
							self.removeData('longtapTm')
								.trigger({
									type: 'contextmenu',
									pageX: self.data('longtap').x,
									pageY: self.data('longtap').y
								})
								.data('longtap', {longtap: true});
						}, 500));
				}).on('touchmove touchend', function(e) {
					if (self.data('tmlongtap')) {
						if (e.type === 'touchend' ||
								( Math.abs(self.data('longtap').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(self.data('longtap').y - e.originalEvent.touches[0].pageY)) > 4)
						clearTimeout(self.data('tmlongtap'));
						self.removeData('longtapTm');
					}
				}).on('click', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}).on('touchend click', '.elfinder-button', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}
			);
		}

		self.prev().length && self.parent().prepend(this);
		
		render();
		
		fm.bind('open sync select toolbarpref', function() {
			var disabled = Object.assign({}, fm.option('disabledFlip')),
				userHides = fm.storage('toolbarhides'),
				doRender, sel, disabledKeys;
			
			if (! userHides && Array.isArray(options.defaultHides)) {
				userHides = {};
				$.each(options.defaultHides, function() {
					userHides[this] = true;
				});
				fm.storage('toolbarhides', userHides);
			}
			if (this.type === 'select') {
				if (fm.searchStatus.state < 2) {
					return;
				}
				sel = fm.selected();
				if (sel.length) {
					disabled = fm.getDisabledCmds(sel, true);
				}
			}
			
			$.each(userHides, function(n) {
				if (!disabled[n]) {
					disabled[n] = true;
				}
			});
			
			if (Object.keys(fm.commandMap).length) {
				$.each(fm.commandMap, function(from, to){
					if (to === 'hidden') {
						disabled[from] = true;
					}
				});
			}
			
			disabledKeys = Object.keys(disabled);
			if (!dispre || dispre.toString() !== disabledKeys.sort().toString()) {
				render(disabledKeys.length? disabled : null);
				doRender = true;
			}
			dispre = disabledKeys.sort();

			if (doRender || uiCmdMapPrev !== JSON.stringify(fm.commandMap)) {
				uiCmdMapPrev = JSON.stringify(fm.commandMap);
				if (! doRender) {
					// reset toolbar
					$.each($('div.elfinder-button'), function(){
						var origin = $(this).data('origin');
						if (origin) {
							$(this).after(origin).detach();
						}
					});
				}
				if (Object.keys(fm.commandMap).length) {
					$.each(fm.commandMap, function(from, to){
						var cmd = fm._commands[to],
							button = cmd? 'elfinder'+cmd.options.ui : null,
							btn;
						if (button && $.fn[button]) {
							btn = buttons[from];
							if (btn) {
								if (! buttons[to] && $.fn[button]) {
									buttons[to] = $('<div></div>')[button](cmd);
									if (buttons[to]) {
										buttons[to].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
										if (cmd.extendsCmd) {
											buttons[to].children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
										}
									}
								}
								if (buttons[to]) {
									btn.after(buttons[to]);
									buttons[to].data('origin', btn.detach());
								}
							}
						}
					});
				}
			}
		}).bind('resize', function(e) {
			resizeTm && cancelAnimationFrame(resizeTm);
			resizeTm = requestAnimationFrame(function() {
				var h = self[0].clientHeight;
				if (prevHeight !== h) {
					prevHeight = h;
					fm.trigger('uiresize');
				}
			});
		});
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.toolbar === 'undefined') {
				autoHide.toolbar = (options.autoHideUA && options.autoHideUA.length > 0 && $.grep(options.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.toolbar) {
				fm.one('init', function() {
					fm.uiAutoHide.push(function(){ self.stop(true, true).trigger('toggle', { duration: 500, init: true }); });
				});
			}
			
			fm.bind('load', function() {
				swipeHandle = $('<div class="elfinder-toolbar-swipe-handle"></div>').hide().appendTo(fm.getUI());
				if (swipeHandle.css('pointer-events') !== 'none') {
					swipeHandle.remove();
					swipeHandle = null;
				}
			});
			
			self.on('toggle', function(e, data) {
				var wz    = fm.getUI('workzone'),
					toshow= self.is(':hidden'),
					wzh   = wz.height(),
					h     = self.height(),
					tbh   = self.outerHeight(true),
					delta = tbh - h,
					opt   = Object.assign({
						step: function(now) {
							wz.height(wzh + (toshow? (now + delta) * -1 : h - now));
							fm.trigger('resize');
						},
						always: function() {
							requestAnimationFrame(function() {
								self.css('height', '');
								fm.trigger('uiresize');
								if (swipeHandle) {
									if (toshow) {
										swipeHandle.stop(true, true).hide();
									} else {
										swipeHandle.height(data.handleH? data.handleH : '');
										fm.resources.blink(swipeHandle, 'slowonce');
									}
								}
								toshow && self.scrollTop('0px');
								data.init && fm.trigger('uiautohide');
							});
						}
					}, data);
				self.data('swipeClose', ! toshow).stop(true, true).animate({height : 'toggle'}, opt);
				autoHide.toolbar = !toshow;
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {toolbar: autoHide.toolbar}));
			}).on('touchstart', function(e) {
				if (self.scrollBottom() > 5) {
					e.originalEvent._preventSwipeY = true;
				}
			});
		}
	});
	
	return this;
};


/*
 * File: /js/ui/tree.js
 */

/**
 * @class  elFinder folders tree
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfindertree = function(fm, opts) {
		var treeclass = fm.res('class', 'tree');
	
	this.not('.'+treeclass).each(function() {

		var c = 'class', mobile = fm.UA.Mobile,
			
			/**
			 * Root directory class name
			 *
			 * @type String
			 */
			root      = fm.res(c, 'treeroot'),

			/**
			 * Open root dir if not opened yet
			 *
			 * @type Boolean
			 */
			openRoot  = opts.openRootOnLoad,

			/**
			 * Open current work dir if not opened yet
			 *
			 * @type Boolean
			 */
			openCwd   = opts.openCwdOnOpen,

			
			/**
			 * Auto loading current directory parents and do expand their node
			 *
			 * @type Boolean
			 */
			syncTree  = openCwd || opts.syncTree,
			
			/**
			 * Subtree class name
			 *
			 * @type String
			 */
			subtree   = fm.res(c, 'navsubtree'),
			
			/**
			 * Directory class name
			 *
			 * @type String
			 */
			navdir    = fm.res(c, 'treedir'),
			
			/**
			 * Directory CSS selector
			 *
			 * @type String
			 */
			selNavdir = 'span.' + navdir,
			
			/**
			 * Collapsed arrow class name
			 *
			 * @type String
			 */
			collapsed = fm.res(c, 'navcollapse'),
			
			/**
			 * Expanded arrow class name
			 *
			 * @type String
			 */
			expanded  = fm.res(c, 'navexpand'),
			
			/**
			 * Class name to mark arrow for directory with already loaded children
			 *
			 * @type String
			 */
			loaded    = 'elfinder-subtree-loaded',
			
			/**
			 * Class name to mark need subdirs request
			 *
			 * @type String
			 */
			chksubdir = 'elfinder-subtree-chksubdir',
			
			/**
			 * Arraw class name
			 *
			 * @type String
			 */
			arrow = fm.res(c, 'navarrow'),
			
			/**
			 * Current directory class name
			 *
			 * @type String
			 */
			active    = fm.res(c, 'active'),
			
			/**
			 * Droppable dirs dropover class
			 *
			 * @type String
			 */
			dropover = fm.res(c, 'adroppable'),
			
			/**
			 * Hover class name
			 *
			 * @type String
			 */
			hover    = fm.res(c, 'hover'),
			
			/**
			 * Disabled dir class name
			 *
			 * @type String
			 */
			disabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable dir class name
			 *
			 * @type String
			 */
			draggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable dir  class name
			 *
			 * @type String
			 */
			droppable = fm.res(c, 'droppable'),
			
			/**
			 * root wrapper class
			 * 
			 * @type String
			 */
			wrapperRoot = 'elfinder-navbar-wrapper-root',

			/**
			 * Un-disabled cmd `paste` volume's root wrapper class
			 * 
			 * @type String
			 */
			pastable = 'elfinder-navbar-wrapper-pastable',
			
			/**
			 * Un-disabled cmd `upload` volume's root wrapper class
			 * 
			 * @type String
			 */
			uploadable = 'elfinder-navbar-wrapper-uploadable',
			
			/**
			 * Is position x inside Navbar
			 * 
			 * @param x Numbar
			 * 
			 * @return
			 */
			insideNavbar = function(x) {
				var left = navbar.offset().left;
					
				return left <= x && x <= left + navbar.width();
			},
			
			/**
			 * To call subdirs elements queue
			 * 
			 * @type Object
			 */
			subdirsQue = {},
			
			/**
			 * To exec subdirs elements ids
			 * 
			 */
			subdirsExecQue = [],
			
			/**
			 * Request subdirs to backend
			 * 
			 * @param id String
			 * 
			 * @return Deferred
			 */
			subdirs = function(ids) {
				var targets = [];
				$.each(ids, function(i, id) {
					subdirsQue[id] && targets.push(fm.navId2Hash(id));
					delete subdirsQue[id];
				});
				if (targets.length) {
					return fm.request({
						data: {
							cmd: 'subdirs',
							targets: targets,
							preventDefault : true
						}
					}).done(function(res) {
						if (res && res.subdirs) {
							$.each(res.subdirs, function(hash, subdirs) {
								var elm = fm.navHash2Elm(hash);
								elm.removeClass(chksubdir);
								elm[subdirs? 'addClass' : 'removeClass'](collapsed);
							});
						}
					});
				}
			},
			
			subdirsJobRes = null,
			
			/**
			 * To check target element is in window of subdirs
			 * 
			 * @return void
			 */
			checkSubdirs = function() {
				var ids = Object.keys(subdirsQue);
				if (ids.length) {
					subdirsJobRes && subdirsJobRes._abort();
					execSubdirsTm && clearTimeout(execSubdirsTm);
					subdirsExecQue = [];
					subdirsJobRes = fm.asyncJob(function(id) {
						return fm.isInWindow($('#'+id))? id : null;
					}, ids, { numPerOnce: 200 })
					.done(function(arr) {
						if (arr.length) {
							subdirsExecQue = arr;
							execSubdirs();
						}
					});
				}
			},
			
			subdirsPending = 0,
			execSubdirsTm,
			
			/**
			 * Exec subdirs as batch request
			 * 
			 * @return void
			 */
			execSubdirs = function() {
				var cnt = opts.subdirsMaxConn - subdirsPending,
					atOnce = fm.maxTargets? Math.min(fm.maxTargets, opts.subdirsAtOnce) : opts.subdirsAtOnce,
					i, ids;
				execSubdirsTm && cancelAnimationFrame(execSubdirsTm);
				if (subdirsExecQue.length) {
					if (cnt > 0) {
						for (i = 0; i < cnt; i++) {
							if (subdirsExecQue.length) {
								subdirsPending++;
								subdirs(subdirsExecQue.splice(0, atOnce)).always(function() {
									subdirsPending--;
									execSubdirs();
								});
							}
						}
					} else {
						execSubdirsTm = requestAnimationFrame(function() {
							subdirsExecQue.length && execSubdirs();
						});
					}
				}
			},
			
			drop = fm.droppable.drop,
			
			/**
			 * Droppable options
			 *
			 * @type Object
			 */
			droppableopts = $.extend(true, {}, fm.droppable, {
				// show subfolders on dropover
				over : function(e, ui) {
					var dst    = $(this),
						helper = ui.helper,
						cl     = hover+' '+dropover,
						hash, status;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					if (ui.helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(cl);
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (! insideNavbar(e.clientX)) {
						dst.removeClass(cl);
						return;
					}
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					dst.addClass(hover);
					if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
						dst.data('expandTimer', setTimeout(function() {
							dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
						}, 500));
					}
					if (dst.is('.elfinder-ro,.elfinder-na')) {
						dst.removeClass(dropover);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					hash = fm.navId2Hash(dst.attr('id'));
					dst.data('dropover', hash);
					$.each(ui.helper.data('files'), function(i, h) {
						if (h === hash || (fm.file(h).phash === hash && !ui.helper.hasClass('elfinder-drag-helper-plus'))) {
							dst.removeClass(cl);
							return false; // break $.each
						}
					});
					if (helper.data('locked')) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey)) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(dropover) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(dropover) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var dst    = $(this),
						helper = ui.helper;
					e.stopPropagation();
					if (insideNavbar(e.clientX)) {
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					}
					helper.data('dropover', Math.max(helper.data('dropover') - 1, 0));
					dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
					dst.removeData('dropover')
					   .removeClass(hover+' '+dropover);
				},
				deactivate : function() {
					$(this).removeData('dropover')
					       .removeClass(hover+' '+dropover);
				},
				drop : function(e, ui) {
					insideNavbar(e.clientX) && drop.call(this, e, ui);
				}
			}),
			
			spinner = $(fm.res('tpl', 'navspinner')),
			
			/**
			 * Directory html template
			 *
			 * @type String
			 */
			tpl = fm.res('tpl', 'navdir'),
			
			/**
			 * Permissions marker html template
			 *
			 * @type String
			 */
			ptpl = fm.res('tpl', 'perms'),
			
			/**
			 * Lock marker html template
			 *
			 * @type String
			 */
			ltpl = fm.res('tpl', 'lock'),
			
			/**
			 * Symlink marker html template
			 *
			 * @type String
			 */
			stpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Directory hashes that has more pages
			 * 
			 * @type Object
			 */
			hasMoreDirs = {},
			
			/**
			 * Html template replacement methods
			 *
			 * @type Object
			 */
			replace = {
				id          : function(dir) { return fm.navHash2Id(dir.hash); },
				name        : function(dir) { return fm.escape(dir.i18 || dir.name); },
				cssclass    : function(dir) {
					var cname = (dir.phash && ! dir.isroot ? '' : root)+' '+navdir+' '+fm.perms2class(dir);
					dir.dirs && !dir.link && (cname += ' ' + collapsed) && dir.dirs == -1 && (cname += ' ' + chksubdir);
					opts.getClass && (cname += ' ' + opts.getClass(dir));
					dir.csscls && (cname += ' ' + fm.escape(dir.csscls));
					return cname;
				},
				title       : function(dir) { return opts.attrTitle? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : ''; },
				root        : function(dir) {
					var cls = '';
					if (!dir.phash || dir.isroot) {
						cls += ' '+wrapperRoot;
						if (!dir.disabled || dir.disabled.length < 1) {
							cls += ' '+pastable+' '+uploadable;
						} else {
							if ($.inArray('paste', dir.disabled) === -1) {
								cls += ' '+pastable;
							}
							if ($.inArray('upload', dir.disabled) === -1) {
								cls += ' '+uploadable;
							}
						}
						return cls;
					} else {
						return '';
					}
				},
				permissions : function(dir) { return !dir.read || !dir.write ? ptpl : ''; },
				symlink     : function(dir) { return dir.alias ? stpl : ''; },
				style       : function(dir) { return dir.icon ? fm.getIconStyle(dir) : ''; }
			},
			
			/**
			 * Return html for given dir
			 *
			 * @param  Object  directory
			 * @return String
			 */
			itemhtml = function(dir) {
				return tpl.replace(/(?:\{([a-z]+)\})/ig, function(m, key) {
					var res = replace[key] ? replace[key](dir) : (dir[key] || '');
					if (key === 'id' && dir.dirs == -1) {
						subdirsQue[res] = res;
					}
					return res;
				});
			},
			
			/**
			 * Return only dirs from files list
			 *
			 * @param  Array   files list
			 * @param  Boolean do check exists
			 * @return Array
			 */
			filter = function(files, checkExists) {
				return $.map(files || [], function(f) {
					return (f.mime === 'directory' && (!checkExists || fm.navHash2Elm(f.hash).length)) ? f : null;
				});
			},
			
			/**
			 * Find parent subtree for required directory
			 *
			 * @param  String  dir hash
			 * @return jQuery
			 */
			findSubtree = function(hash) {
				return hash ? fm.navHash2Elm(hash).next('.'+subtree) : tree;
			},
			
			/**
			 * Find directory (wrapper) in required node
			 * before which we can insert new directory
			 *
			 * @param  jQuery  parent directory
			 * @param  Object  new directory
			 * @return jQuery
			 */
			findSibling = function(subtree, dir) {
				var node = subtree.children(':first'),
					info;

				while (node.length) {
					info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')));
					
					if ((info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')))) 
					&& compare(dir, info) < 0) {
						return node;
					}
					node = node.next();
				}
				return subtree.children('button.elfinder-navbar-pager-next');
			},
			
			/**
			 * Add new dirs in tree
			 *
			 * @param  Array  dirs list
			 * @return void
			 */
			updateTree = function(dirs) {
				var length  = dirs.length,
					orphans = [],
					i = length,
					tgts = $(),
					done = {},
					cwd = fm.cwd(),
					append = function(parent, dirs, start, direction) {
						var hashes = {},
							curStart = 0,
							max = fm.newAPI? Math.min(10000, Math.max(10, opts.subTreeMax)) : 10000,
							setHashes = function() {
								hashes = {};
								$.each(dirs, function(i, d) {
									hashes[d.hash] = i;
								});
							},
							change = function(mode) {
								if (mode === 'prepare') {
									$.each(dirs, function(i, d) {
										d.node && parent.append(d.node.hide());
									});
								} else if (mode === 'done') {
									$.each(dirs, function(i, d) {
										d.node && d.node.detach().show();
									});
								}
							},
							update = function(e, data) {
								var i, changed;
								e.stopPropagation();
								
								if (data.select) {
									render(getStart(data.select));
									return;
								}
								
								if (data.change) {
									change(data.change);
									return;
								}
								
								if (data.removed && data.removed.length) {
									dirs = $.grep(dirs, function(d) {
										if (data.removed.indexOf(d.hash) === -1) {
											return true;
										} else {
											!changed && (changed = true);
											return false;
										}
									});
								}
								
								if (data.added && data.added.length) {
									dirs = dirs.concat($.grep(data.added, function(d) {
										if (hashes[d.hash] === void(0)) {
											!changed && (changed = true);
											return true;
										} else {
											return false;
										}
									}));
								}
								if (changed) {
									dirs.sort(compare);
									setHashes();
									render(curStart);
								}
							},
							getStart = function(target) {
								if (hashes[target] !== void(0)) {
									return Math.floor(hashes[target] / max) * max;
								}
								return void(0);
							},
							target = fm.navId2Hash(parent.prev('[id]').attr('id')),
							render = function(start, direction) {
								var html = [],
									nodes = {},
									total, page, s, parts, prev, next, prevBtn, nextBtn;
								delete hasMoreDirs[target];
								curStart = start;
								parent.off('update.'+fm.namespace, update);
								if (dirs.length > max) {
									parent.on('update.'+fm.namespace, update);
									if (start === void(0)) {
										s = 0;
										setHashes();
										start = getStart(cwd.hash);
										if (start === void(0)) {
											start = 0;
										}
									}
									parts = dirs.slice(start, start + max);
									hasMoreDirs[target] = parent;
									prev = start? Math.max(-1, start - max) : -1;
									next = (start + max >= dirs.length)? 0 : start + max;
									total = Math.ceil(dirs.length/max);
									page = Math.ceil(start/max);
								}
								$.each(parts || dirs, function(i, d) {
									html.push(itemhtml(d));
									if (d.node) {
										nodes[d.hash] = d.node;
									}
								});
								if (prev > -1) {
									prevBtn = $('<button class="elfinder-navbar-pager elfinder-navbar-pager-prev"></button>')
										.text(fm.i18n('btnPrevious', page, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-n"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(prev, 'up');
										});
								} else {
									prevBtn = $();
								}
								if (next) {
									nextBtn = $('<button class="elfinder-navbar-pager elfinder-navbar-pager-next"></button>')
										.text(fm.i18n('btnNext', page + 2, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-s"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(next, 'down');
										});
								} else {
									nextBtn = $();
								}
								detach();
								parent.empty()[parts? 'addClass' : 'removeClass']('elfinder-navbar-hasmore').append(prevBtn, html.join(''), nextBtn);
								$.each(nodes, function(h, n) {
									fm.navHash2Elm(h).parent().replaceWith(n);
								});
								if (direction) {
									autoScroll(fm.navHash2Id(parts[direction === 'up'? parts.length - 1 : 0].hash));
								}
								! mobile && fm.lazy(function() { updateDroppable(null, parent); });
							},
							detach = function() {
								$.each(parent.children('.elfinder-navbar-wrapper'), function(i, elm) {
									var n = $(elm),
										ch = n.children('[id]:first'),
										h, c;
									if (ch.hasClass(loaded)) {
										h = fm.navId2Hash(ch.attr('id'));
										if (h && (c = hashes[h]) !== void(0)) {
											dirs[c].node = n.detach();
										}
									}
								});
							};
						
						render();
					},
					dir, html, parent, sibling, init, atonce = {}, updates = [], base, node,
					lastKey, lastNodes = {};
				
				while (i--) {
					dir = dirs[i];

					if (done[dir.hash] || fm.navHash2Elm(dir.hash).length) {
						continue;
					}
					done[dir.hash] = true;
					
					if ((parent = findSubtree(dir.phash)).length) {
						lastKey = dir.phash || 'treeroot';
						if (typeof lastNodes[lastKey] === 'undefined') {
							lastNodes[lastKey] = parent.children(':last');
						}
						init = !lastNodes[lastKey].length;
						if (dir.phash && (init || parent.hasClass('elfinder-navbar-hasmore') || (sibling = findSibling(parent, dir)).length)) {
							if (init) {
								if (!atonce[dir.phash]) {
									atonce[dir.phash] = [];
								}
								atonce[dir.phash].push(dir);
							} else {
								if (sibling) {
									node = itemhtml(dir);
									sibling.before(node);
									! mobile && (tgts = tgts.add(node));
								} else {
									updates.push(dir);
								}
							}
						} else {
							node = itemhtml(dir);
							if (init) {
								parent.prepend(node);
							} else {
								lastNodes[lastKey].after(node);
							}
							if (!dir.phash || dir.isroot) {
								base = fm.navHash2Elm(dir.hash).parent();
							}
							! mobile && updateDroppable(null, base);
						}
					} else {
						orphans.push(dir);
					}
				}

				// When init, html append at once
				if (Object.keys(atonce).length){
					$.each(atonce, function(p, dirs){
						var parent = findSubtree(p),
						    html   = [];
						dirs.sort(compare);
						append(parent, dirs);
					});
				}
				
				if (updates.length) {
					parent.trigger('update.' + fm.namespace, { added : updates });
				}
				
				if (orphans.length && orphans.length < length) {
					updateTree(orphans);
					return;
				} 
				
				! mobile && tgts.length && fm.lazy(function() { updateDroppable(tgts); });
				
			},
			
			/**
			 * sort function by dir.name
			 * 
			 */
			compare = function(dir1, dir2) {
				if (! fm.sortAlsoTreeview) {
					return fm.sortRules.name(dir1, dir2);
				} else {
					var asc   = fm.sortOrder == 'asc',
						type  = fm.sortType,
						rules = fm.sortRules,
						res;
					
					res = asc? rules[fm.sortType](dir1, dir2) : rules[fm.sortType](dir2, dir1);
					
					return type !== 'name' && res === 0
						? res = asc ? rules.name(dir1, dir2) : rules.name(dir2, dir1)
						: res;
				}
			},

			/**
			 * Timer ID of autoScroll
			 * 
			 * @type  Integer
			 */
			autoScrTm,

			/**
			 * Auto scroll to cwd
			 *
			 * @return Object  jQuery Deferred
			 */
			autoScroll = function(target) {
				var dfrd = $.Deferred(),
					current, parent, top, treeH, bottom, tgtTop;
				autoScrTm && clearTimeout(autoScrTm);
				autoScrTm = setTimeout(function() {
					current = $(document.getElementById((target || fm.navHash2Id(fm.cwd().hash))));
					if (current.length) {
						// expand parents directory
						(openCwd? current : current.parent()).parents('.elfinder-navbar-wrapper').children('.'+loaded).addClass(expanded).next('.'+subtree).show();
						
						parent = tree.parent().stop(false, true);
						top = parent.offset().top;
						treeH = parent.height();
						bottom = top + treeH - current.outerHeight();
						tgtTop = current.offset().top;
						
						if (tgtTop < top || tgtTop > bottom) {
							parent.animate({
								scrollTop : parent.scrollTop() + tgtTop - top - treeH / 3
							}, {
								duration : opts.durations.autoScroll,
								complete : function() {	dfrd.resolve(); }
							});
						} else {
							dfrd.resolve();
						}
					} else {
						dfrd.reject();
					}
				}, 100);
				return dfrd;
			},
			/**
			 * Get hashes array of items of the bottom of the leaf root back from the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Array hashes
			 */
			getEnds = function(d) {
				var cur = d || fm.cwd(),
					res = cur.hash? [ cur.hash ] : [],
					phash, root, dir;
				
				root = fm.root(cur.hash);
				dir = fm.file(root);
				while (dir && (phash = dir.phash)) {
					res.unshift(phash);
					root = fm.root(phash);
					dir = fm.file(root);
					if (fm.navHash2Elm(dir.hash).hasClass(loaded)) {
						break;
					}
				}
				
				return res;
			},
			
			/**
			 * Select pages back in order to display the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Object jQuery node object of target node
			 */
			selectPages = function(current) {
				var cur = current || fm.cwd(),
					curHash = cur.hash,
					node = fm.navHash2Elm(curHash);
			
				if (!node.length) {
					while(cur && cur.phash) {
						if (hasMoreDirs[cur.phash] && !fm.navHash2Elm(cur.hash).length) {
							hasMoreDirs[cur.phash].trigger('update.'+fm.namespace, { select : cur.hash });
						}
						cur = fm.file(cur.phash);
					}
					node = fm.navHash2Elm(curHash);
				}
				
				return node;
			},
			
			/**
			 * Flag indicating that synchronization is currently in progress
			 * 
			 * @type Boolean
			 */
			syncing,

			/**
			 * Mark current directory as active
			 * If current directory is not in tree - load it and its parents
			 *
			 * @param Array directory objects of cwd
			 * @param Boolean do auto scroll
			 * @return Object jQuery Deferred
			 */
			sync = function(cwdDirs, aScr) {
				var cwd     = fm.cwd(),
					cwdhash = cwd.hash,
					autoScr = aScr === void(0)? syncTree : aScr,
					loadParents = function(dir) {
						var dfd  = $.Deferred(),
							reqs = [],
							ends = getEnds(dir),
							makeReq = function(cmd, h, until) {
								var data = {
										cmd    : cmd,
										target : h
									};
								if (until) {
									data.until = until;
								}
								return fm.request({
									data : data,
									preventFail : true
								});
							},
							baseHash, baseId;
						
						reqs = $.map(ends, function(h) {
							var d = fm.file(h),
								isRoot = d? fm.isRoot(d) : false,
								node = fm.navHash2Elm(h),
								getPhash = function(h, dep) {
									var d, ph,
										depth = dep || 1;
									ph = (d = fm.file(h))? d.phash : false;
									if (ph && depth > 1) {
										return getPhash(ph, --depth);
									}
									return ph;
								},
								until,
								closest = (function() {
									var phash = getPhash(h);
									until = phash;
									while (phash) {
										if (fm.navHash2Elm(phash).hasClass(loaded)) {
											break;
										}
										until = phash;
										phash = getPhash(phash);
									}
									if (!phash) {
										until = void(0);
										phash = fm.root(h);
									}
									return phash;
								})(),
								cmd;
							
							if (!node.hasClass(loaded) && (isRoot || !d || !fm.navHash2Elm(d.phash).hasClass(loaded))) {
								if (isRoot || closest === getPhash(h) || closest === getPhash(h, 2)) {
									until = void(0);
									cmd = 'tree';
									if (!isRoot) {
										h = getPhash(h);
									}
								} else {
									cmd = 'parents';
								}
								if (!baseHash) {
									baseHash = (cmd === 'tree')? h : closest;
								}
								return makeReq(cmd, h, until);
							}
							return null;
						});
						
						if (reqs.length) {
							selectPages(fm.file(baseHash));
							baseId = fm.navHash2Id(baseHash);
							autoScr && autoScroll(baseId);
							baseNode = $('#'+baseId);
							spinner = $(fm.res('tpl', 'navspinner')).insertBefore(baseNode.children('.'+arrow));
							baseNode.removeClass(collapsed);
							
							$.when.apply($, reqs)
							.done(function() {
								var res = {},data, treeDirs, dirs, argLen, i;
								argLen = arguments.length;
								if (argLen > 0) {
									for (i = 0; i < argLen; i++) {
										data = arguments[i].tree || [];
										res[ends[i]] = Object.assign([], filter(data));
									}
								}
								dfd.resolve(res);
							})
							.fail(function() {
								dfd.reject();
							});
							
							return dfd;
						} else {
							return dfd.resolve();
						}
					},
					done= function(res, dfrd) {
						var open = function() {
								if (openRoot && baseNode) {
									findSubtree(baseNode.hash).show().prev(selNavdir).addClass(expanded);
									openRoot = false;
								}
								if (autoScr) {
									autoScroll().done(checkSubdirs);
								} else {
									checkSubdirs();
								}
							},
							current;
						
						if (res) {
							$.each(res, function(endHash, dirs) {
								dirs && updateTree(dirs);
								selectPages(fm.file(endHash));
								dirs && updateArrows(dirs, loaded);
							});
						}
						
						if (cwdDirs) {
							(fm.api < 2.1) && cwdDirs.push(cwd);
							updateTree(cwdDirs);
						}
						
						// set current node
						current = selectPages();
						
						if (!current.hasClass(active)) {
							tree.find(selNavdir+'.'+active).removeClass(active);
							current.addClass(active);
						}
						
						// mark as loaded to cwd parents
						current.parents('.elfinder-navbar-wrapper').children('.'+navdir).addClass(loaded);
						
						if (res) {
							fm.lazy(open).done(function() {
								dfrd.resolve();
							});
						} else {
							open();
							dfrd.resolve();
						}
					},
					rmSpinner = function(fail) {
						if (baseNode) {
							spinner.remove();
							baseNode.addClass(collapsed + (fail? '' : (' ' + loaded)));
						}
					},
					dfrd = $.Deferred(),
					baseNode, spinner;
				
				if (!fm.navHash2Elm(cwdhash).length) {
					syncing = true;
					loadParents()
					.done(function(res) {
						done(res, dfrd);
						rmSpinner();
					})
					.fail(function() { 
						rmSpinner(true);
						dfrd.reject();
					})
					.always(function() {
						syncing = false;
					});
				} else {
					done(void(0), dfrd);
				}
				
				// trigger 'treesync' with my $.Deferred
				fm.trigger('treesync', dfrd);

				return dfrd;
			},
			
			/**
			 * Make writable and not root dirs droppable
			 *
			 * @return void
			 */
			updateDroppable = function(target, node) {
				var limit = 100,
					next;
				
				if (!target) {
					if (!node || node.closest('div.'+wrapperRoot).hasClass(uploadable)) {
						(node || tree.find('div.'+uploadable)).find(selNavdir+':not(.elfinder-ro,.elfinder-na)').addClass('native-droppable');
					}
					if (!node || node.closest('div.'+wrapperRoot).hasClass(pastable)) {
						target = (node || tree.find('div.'+pastable)).find(selNavdir+':not(.'+droppable+')');
					} else {
						target = $();
					}
					if (node) {
						// check leaf roots
						node.children('div.'+wrapperRoot).each(function() {
							updateDroppable(null, $(this));
						});
					}
				}
				
				// make droppable on async
				if (target.length) {
					fm.asyncJob(function(elm) {
						$(elm).droppable(droppableopts);
					}, $.makeArray(target), {
						interval : 20,
						numPerOnce : 100
					});
				}
			},
			
			/**
			 * Check required folders for subfolders and update arrow classes
			 *
			 * @param  Array  folders to check
			 * @param  String css class 
			 * @return void
			 */
			updateArrows = function(dirs, cls) {
				var sel = cls == loaded
						? '.'+collapsed+':not(.'+loaded+')'
						: ':not(.'+collapsed+')';
				
				$.each(dirs, function(i, dir) {
					fm.navHash2Elm(dir.phash).filter(sel)
						.filter(function() { return $.grep($(this).next('.'+subtree).children(), function(n) {
							return ($(n).children().hasClass(root))? false : true;
						}).length > 0; })
						.addClass(cls);
				});
			},
			
			
			
			/**
			 * Navigation tree
			 *
			 * @type JQuery
			 */
			tree = $(this).addClass(treeclass)
				// make dirs draggable and toggle hover class
				.on('mouseenter mouseleave', selNavdir, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					var link  = $(this),
						hash, dir; 
					
					if (!link.hasClass(dropover+' '+disabled)) {
						if (!mobile && enter && !link.data('dragRegisted') && !link.hasClass(root+' '+draggable+' elfinder-na elfinder-wo')) {
							link.data('dragRegisted', true);
							if (fm.isCommandEnabled('copy', (hash = fm.navId2Hash(link.attr('id'))))) {
								link.draggable(fm.draggable);
							}
						}
						link.toggleClass(hover, enter);
					}
					// update title attr if necessary
					if (enter && opts.attrTitle) {
						dir = fm.file(hash || fm.navId2Hash(link.attr('id')));
						if (!dir.isroot && link.attr('title') === (dir.i18 || dir.name)) {
							link.attr('title', fm.path(hash, true));
						}
					}
				})
				// native drag enter
				.on('dragenter', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = $(this);
						dst.addClass(hover);
						if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
							dst.data('expandTimer', setTimeout(function() {
								dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
							}, 500));
						}
					}
				})
				// native drag leave
				.on('dragleave', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = $(this);
						dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
						dst.removeClass(hover);
					}
				})
				// open dir or open subfolders in tree
				.on('click', selNavdir, function(e) {
					var link = $(this),
						hash = fm.navId2Hash(link.attr('id')),
						file = fm.file(hash);
					
					if (link.data('longtap')) {
						link.removeData('longtap');
						e.stopPropagation();
						return;
					}
					
					if (!link.hasClass(active)) {
						tree.find(selNavdir+'.'+active).removeClass(active);
						link.addClass(active);
					}
					if (hash != fm.cwd().hash && !link.hasClass(disabled)) {
						fm.exec('open', hash).done(function() {
							fm.one('opendone', function() {
								fm.select({selected: [hash], origin: 'navbar'});
							});
						});
					} else {
						if (link.hasClass(collapsed)) {
							link.children('.'+arrow).trigger('click');
						}
						fm.select({selected: [hash], origin: 'navbar'});
					}
				})
				// for touch device
				.on('touchstart', selNavdir, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var evt = e.originalEvent,
						p;
					
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					
					p = $(this).addClass(hover)
					.removeData('longtap')
					.data('tmlongtap', setTimeout(function(e){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							'type'    : 'navbar',
							'targets' : [fm.navId2Hash(p.attr('id'))],
							'x'       : evt.touches[0].pageX,
							'y'       : evt.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', selNavdir, function(e) {
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					clearTimeout($(this).data('tmlongtap'));
					$(this).removeData('tmlongtap');
					if (e.type == 'touchmove') {
						$(this).removeClass(hover);
					}
				})
				// toggle subfolders in tree
				.on('click', selNavdir+'.'+collapsed+' .'+arrow, function(e) {
					var arrow = $(this),
						link  = arrow.parent(selNavdir),
						stree = link.next('.'+subtree),
						dfrd  = $.Deferred(),
						slideTH = 30, cnt;

					e.stopPropagation();

					if (link.hasClass(loaded)) {
						link.toggleClass(expanded);
						fm.lazy(function() {
							cnt = link.hasClass(expanded)? stree.children().length + stree.find('div.elfinder-navbar-subtree[style*=block]').children().length : stree.find('div:visible').length;
							if (cnt > slideTH) {
								stree.toggle();
								fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
								checkSubdirs();
							} else {
								stree.stop(true, true)[link.hasClass(expanded)? 'slideDown' : 'slideUp'](opts.durations.slideUpDown, function(){
									fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
									checkSubdirs();
								});
							}
						}).always(function() {
							dfrd.resolve();
						});
					} else {
						spinner.insertBefore(arrow);
						link.removeClass(collapsed);

						fm.request({cmd : 'tree', target : fm.navId2Hash(link.attr('id'))})
							.done(function(data) { 
								updateTree(Object.assign([], filter(data.tree))); 
								
								if (stree.children().length) {
									link.addClass(collapsed+' '+expanded);
									if (stree.children().length > slideTH) {
										stree.show();
										fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
										checkSubdirs();
									} else {
										stree.stop(true, true).slideDown(opts.durations.slideUpDown, function(){
											fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
											checkSubdirs();
										});
									}
								} 
							})
							.always(function(data) {
								spinner.remove();
								link.addClass(loaded);
								fm.one('treedone', function() {
									dfrd.resolve();
								});
							});
					}
					arrow.data('dfrd', dfrd);
				})
				.on('contextmenu', selNavdir, function(e) {
					e.stopPropagation();
					var self = $(this);
					
					// now dirname editing
					if (self.find('input:text').length) {
						return;
					}
					
					e.preventDefault();

					if (!self.data('tmlongtap')) {
						fm.trigger('contextmenu', {
							'type'    : 'navbar',
							'targets' : [fm.navId2Hash($(this).attr('id'))],
							'x'       : e.pageX,
							'y'       : e.pageY
						});
					}
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.on('scrolltoview', selNavdir, function(e, data) {
					var self = $(this);
					autoScroll(self.attr('id')).done(function() {
						if (!data || data.blink === 'undefined' || data.blink) {
							fm.resources.blink(self, 'lookme');
						}
					});
				})
				// prepend fake dir
				.on('create.'+fm.namespace, function(e, item) {
					var pdir = findSubtree(item.phash),
						lock = item.move || false,
						dir  = $(itemhtml(item)).addClass('elfinder-navbar-wrapper-tmp'),
						selected = fm.selected();
						
					lock && selected.length && fm.trigger('lockfiles', {files: selected});
					pdir.prepend(dir);
				}),
			scrolling = false,
			navbarScrTm,
			// move tree into navbar
			navbar = fm.getUI('navbar').append(tree).show().on('scroll', function() {
				scrolling = true;
				navbarScrTm && cancelAnimationFrame(navbarScrTm);
				navbarScrTm = requestAnimationFrame(function() {
					scrolling = false;
					checkSubdirs();
				});
			}),
			
			prevSortTreeview = fm.sortAlsoTreeview;
			
		fm.open(function(e) {
			var data = e.data,
				dirs = filter(data.files),
				contextmenu = fm.getUI('contextmenu');

			data.init && tree.empty();

			if (fm.UA.iOS) {
				navbar.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
			}

			if (dirs.length) {
				fm.lazy(function() {
					if (!contextmenu.data('cmdMaps')) {
						contextmenu.data('cmdMaps', {});
					}
					updateTree(dirs);
					updateArrows(dirs, loaded);
					sync(dirs);
				});
			} else {
				sync();
			}
		})
		// add new dirs
		.add(function(e) {
			var dirs = filter(e.data.added);

			if (dirs.length) {
				updateTree(dirs);
				updateArrows(dirs, collapsed);
			}
		})
		// update changed dirs
		.change(function(e) {
			// do ot perfome while syncing
			if (syncing) {
				return;
			}

			var dirs = filter(e.data.changed, true),
				length = dirs.length,
				l    = length,
				tgts = $(),
				changed = {},
				dir, phash, node, tmp, realParent, reqParent, realSibling, reqSibling, isExpanded, isLoaded, parent, subdirs;
			
			$.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});
			
			while (l--) {
				dir = dirs[l];
				phash = dir.phash;
				if ((node = fm.navHash2Elm(dir.hash)).length) {
					parent = node.parent();
					if (phash) {
						realParent  = node.closest('.'+subtree);
						reqParent   = findSubtree(phash);
						realSibling = node.parent().next();
						reqSibling  = findSibling(reqParent, dir);
						
						if (!reqParent.length) {
							continue;
						}
						
						if (reqParent[0] !== realParent[0] || realSibling.get(0) !== reqSibling.get(0)) {
							reqSibling.length ? reqSibling.before(parent) : reqParent.append(parent);
						}
					}
					isExpanded = node.hasClass(expanded);
					isLoaded   = node.hasClass(loaded);
					tmp        = $(itemhtml(dir));
					node.replaceWith(tmp.children(selNavdir));
					! mobile && updateDroppable(null, parent);
					
					if (dir.dirs
					&& (isExpanded || isLoaded) 
					&& (node = fm.navHash2Elm(dir.hash))
					&& node.next('.'+subtree).children().length) {
						isExpanded && node.addClass(expanded);
						isLoaded && node.addClass(loaded);
					}
					
					subdirs |= dir.dirs == -1;
				}
			}
			
			// to check subdirs
			if (subdirs) {
				checkSubdirs();
			}
			
			$.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
			
			length && sync(void(0), false);
		})
		// remove dirs
		.remove(function(e) {
			var dirs = e.data.removed,
				l    = dirs.length,
				node, stree, removed;
			
			$.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { removed : dirs });
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});

			while (l--) {
				if ((node = fm.navHash2Elm(dirs[l])).length) {
					removed = true;
					stree = node.closest('.'+subtree);
					node.parent().detach();
					if (!stree.children().length) {
						stree.hide().prev(selNavdir).removeClass(collapsed+' '+expanded+' '+loaded);
					}
				}
			}
			
			removed && fm.getUI('navbar').children('.ui-resizable-handle').trigger('resize');
			
			$.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
		})
		// lock/unlock dirs while moving
		.bind('lockfiles unlockfiles', function(e) {
			var lock = e.type == 'lockfiles',
				helperLocked = e.data.helper? e.data.helper.data('locked') : false,
				act  = (lock && !helperLocked) ? 'disable' : 'enable',
				dirs = $.grep(e.data.files||[], function(h) {  
					var dir = fm.file(h);
					return dir && dir.mime == 'directory' ? true : false;
				});
				
			$.each(dirs, function(i, hash) {
				var dir = fm.navHash2Elm(hash);
				
				if (dir.length && !helperLocked) {
					dir.hasClass(draggable) && dir.draggable(act);
					dir.hasClass(droppable) && dir.droppable(act);
					dir[lock ? 'addClass' : 'removeClass'](disabled);
				}
			});
		})
		.bind('sortchange', function() {
			if (fm.sortAlsoTreeview || prevSortTreeview !== fm.sortAlsoTreeview) {
				var dirs,
					ends = [],
					endsMap = {},
					endsVid = {},
					topVid = '',
					single = false,
					current;
				
				fm.lazy(function() {
					dirs = filter(fm.files());
					prevSortTreeview = fm.sortAlsoTreeview;
					
					tree.empty();
					
					// append volume roots at first
					updateTree($.map(fm.roots, function(h) {
						var dir = fm.file(h);
						return dir && !dir.phash? dir : null;
					}));
					
					if (!Object.keys(hasMoreDirs).length) {
						updateTree(dirs);
						current = selectPages();
						updateArrows(dirs, loaded);
					} else {
						ends = getEnds();
						if (ends.length > 1) {
							$.each(ends, function(i, end) {
								var vid = fm.file(fm.root(end)).volumeid; 
								if (i === 0) {
									topVid = vid;
								}
								endsVid[vid] = end;
								endsMap[end] = [];
							});
							$.each(dirs, function(i, d) {
								if (!d.volumeid) {
									single = true;
									return false;
								}
								endsMap[endsVid[d.volumeid] || endsVid[topVid]].push(d);
							});
						} else {
							single = true;
						}
						if (single) {
							$.each(ends, function(i, endHash) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						} else {
							$.each(endsMap, function(endHash, dirs) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						}
					}
					
					sync();
				}, 100);
			}
		});

	});
	
	return this;
};


/*
 * File: /js/ui/uploadButton.js
 */

/**
 * @class  elFinder toolbar's button tor upload file
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderuploadbutton = function(cmd) {
		return this.each(function() {
		var fm = cmd.fm,
			button = $(this).elfinderbutton(cmd)
				.off('click'), 
			form = $('<form></form>').appendTo(button),
			input = $('<input type="file" multiple="true" title="'+cmd.fm.i18n('selectForUpload')+'"/>')
				.on('change', function() {
					var _input = $(this);
					if (_input.val()) {
						fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash);
						input.clone(true).appendTo(form);
					} 
				})
				.on('dragover', function(e) {
					e.originalEvent.dataTransfer.dropEffect = 'copy';
				}),
			tm;

		form.append(input.clone(true));
				
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var toShow = cmd.disabled();
				if (form.is('visible')) {
					!toShow && form.hide();
				} else {
					toShow && form.show();
				}
			});
		})
		.change();
	});
};


/*
 * File: /js/ui/viewbutton.js
 */

/**
 * @class  elFinder toolbar button to switch current directory view.
 *
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderviewbutton = function(cmd) {
		return this.each(function() {
		var button = $(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			text   = button.children('.elfinder-button-text'),
			tm;

		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var icons = cmd.value == 'icons';

				icon.toggleClass('elfinder-button-icon-view-list', icons);
				cmd.className = icons? 'view-list' : '';
				cmd.title = cmd.fm.i18n(icons ? 'viewlist' : 'viewicons');
				button.attr('title', cmd.title);
				text.html(cmd.title);
			});
		});
	});
};


/*
 * File: /js/ui/workzone.js
 */

/**
 * @class elfinderworkzone - elFinder container for nav and current directory
 * @author Dmitry (dio) Levashov
 **/
$.fn.elfinderworkzone = function(fm) {
		var cl = 'elfinder-workzone';
	
	this.not('.'+cl).each(function() {
		var wz     = $(this).addClass(cl),
			prevH  = Math.round(wz.height()),
			parent = wz.parent(),
			setDelta = function() {
				wdelta = wz.outerHeight(true) - wz.height();
			},
			fitsize = function(e) {
				var height = parent.height() - wdelta,
					style  = parent.attr('style'),
					curH   = Math.round(wz.height());
	
				if (e) {
					e.preventDefault();
					e.stopPropagation();
				}
				
				parent.css('overflow', 'hidden')
					.children(':visible:not(.'+cl+')').each(function() {
						var ch = $(this);
		
						if (ch.css('position') != 'absolute' && ch.css('position') != 'fixed') {
							height -= ch.outerHeight(true);
						}
					});
				parent.attr('style', style || '');
				
				height = Math.max(0, Math.round(height));
				if (prevH !== height || curH !== height) {
					prevH  = Math.round(wz.height());
					wz.height(height);
					fm.trigger('wzresize');
				}
			},
			cssloaded = function() {
				wdelta = wz.outerHeight(true) - wz.height();
				fitsize();
			},
			wdelta;
		
		setDelta();
		parent.on('resize.' + fm.namespace, fitsize);
		fm.one('cssloaded', cssloaded)
		  .bind('uiresize', fitsize)
		  .bind('themechange', setDelta);
	});
	return this;
};


/*
 * File: /js/commands/archive.js
 */

/**
 * @class  elFinder command "archive"
 * Archive selected files
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.archive = function() {
		var self  = this,
		fm    = self.fm,
		mimes = [],
		dfrd;
		
	this.variants = [];
	
	this.disableOnSearch = false;
	
	this.nextAction = {};
	
	/**
	 * Update mimes on open/reload
	 *
	 * @return void
	 **/
	fm.bind('open reload', function() {
		self.variants = [];
		$.each((mimes = fm.option('archivers')['create'] || []), function(i, mime) {
			self.variants.push([mime, fm.mime2kind(mime)]);
		});
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			chk = (cnt && ! fm.isRoot(sel[0]) && (fm.file(sel[0].phash) || {}).write),
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read && f.hash.indexOf(cwdId) === 0 ? true : false;
					return fres;
				});
			},
			cwdId;
		
		if (chk && fm.searchStatus.state > 1) {
			if (chk = (cnt === filter(sel).length)) {
				cwdId = fm.cwd().volumeid;
			}
		}
		
		return chk && !this._disabled && mimes.length && (cnt || (dfrd && dfrd.state() == 'pending')) ? 0 : -1;
	};
	
	this.exec = function(hashes, type) {
		var files = this.files(hashes),
			cnt   = files.length,
			mime  = type || mimes[0],
			cwd   = fm.file(files[0].phash) || null,
			error = ['errArchive', 'errPerm', 'errCreatingTempDir', 'errFtpDownloadFile', 'errFtpUploadFile', 'errFtpMkdir', 'errArchiveExec', 'errExtractExec', 'errRm'],
			i, open;

		dfrd = $.Deferred().fail(function(error) {
			error && fm.error(error);
		});

		if (! (cnt && mimes.length && $.inArray(mime, mimes) !== -1)) {
			return dfrd.reject();
		}
		
		if (!cwd.write) {
			return dfrd.reject(error);
		}
		
		for (i = 0; i < cnt; i++) {
			if (!files[i].read) {
				return dfrd.reject(error);
			}
		}

		self.mime   = mime;
		self.prefix = ((cnt > 1)? 'Archive' : files[0].name) + (fm.option('archivers')['createext']? '.' + fm.option('archivers')['createext'][mime] : '');
		self.data   = {targets : self.hashes(hashes), type : mime};
		
		if (fm.cwd().hash !== cwd.hash) {
			open = fm.exec('open', cwd.hash).done(function() {
				fm.one('cwdrender', function() {
					fm.selectfiles({files : hashes});
					dfrd = $.proxy(fm.res('mixin', 'make'), self)();
				});
			});
		} else {
			fm.selectfiles({files : hashes});
			dfrd = $.proxy(fm.res('mixin', 'make'), self)();
		}
		
		return dfrd;
	};

};


/*
 * File: /js/commands/back.js
 */

/**
 * @class  elFinder command "back"
 * Open last visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.back = function() {
		this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+left backspace'
	}];
	
	this.getstate = function() {
		return this.fm.history.canBack() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.back();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/chmod.js
 */

/**
 * @class elFinder command "chmod".
 * Chmod files.
 *
 * @type  elFinder.command
 * @author Naoki Sawada
 */
elFinder.prototype.commands.chmod = function() {
		this.updateOnSelect = false;
	var fm  = this.fm,
		level = {
			0 : 'owner',
			1 : 'group',
			2 : 'other'
		},
		msg = {
			read     : fm.i18n('read'),
			write    : fm.i18n('write'),
			execute  : fm.i18n('execute'),
			perm     : fm.i18n('perm'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files')
		},
		isPerm = function(perm){
			return (!isNaN(parseInt(perm, 8)) && parseInt(perm, 8) <= 511) || perm.match(/^([r-][w-][x-]){3}$/i);
		};

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}</div>'
					+'{dataTable}',
		itemTitle  : '<strong>{name}</strong><span id="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		dataTable  : '<table id="{id}-table-perm"><tr><td>{0}</td><td>{1}</td><td>{2}</td></tr></table>'
					+'<div class="">'+msg.perm+': <input class="elfinder-tabstop elfinder-focus" id="{id}-perm" type="text" size="4" maxlength="3" value="{value}"></div>',
		fieldset   : '<fieldset id="{id}-fieldset-{level}"><legend>{f_title}{name}</legend>'
					+'<input type="checkbox" value="4" class="elfinder-tabstop" id="{id}-read-{level}-perm"{checked-r}> <label for="{id}-read-{level}-perm">'+msg.read+'</label><br>'
					+'<input type="checkbox" value="6" class="elfinder-tabstop" id="{id}-write-{level}-perm"{checked-w}> <label for="{id}-write-{level}-perm">'+msg.write+'</label><br>'
					+'<input type="checkbox" value="5" class="elfinder-tabstop" id="{id}-execute-{level}-perm"{checked-x}> <label for="{id}-execute-{level}-perm">'+msg.execute+'</label><br>'
	};

	this.shortcuts = [{
		//pattern     : 'ctrl+p'
	}];

	this.getstate = function(sel) {
		var fm = this.fm;
		sel = sel || fm.selected();
		if (sel.length == 0) {
			sel = [ fm.cwd().hash ];
		}
		return this.checkstate(this.files(sel)) ? 0 : -1;
	};
	
	this.checkstate = function(sel) {
		var cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(sel, function(f) {
					fres = fres && f.isowner && f.perm && isPerm(f.perm) && (cnt == 1 || f.mime != 'directory') ? true : false;
					return fres;
				});
			};
		return (cnt && cnt === filter(sel).length)? true : false;
	};

	this.exec = function(select) {
		var hashes  = this.hashes(select),
			files   = this.files(hashes);
		if (! files.length) {
			hashes = [ this.fm.cwd().hash ];
			files   = this.files(hashes);
		}
		var fm  = this.fm,
		dfrd    = $.Deferred().always(function() {
			fm.enable();
		}),
		tpl     = this.tpl,
		cnt     = files.length,
		file    = files[0],
		id = fm.namespace + '-perm-' + file.hash,
		view    = tpl.main,
		checked = ' checked="checked"',
		buttons = function() {
			var buttons = {};
			buttons[fm.i18n('btnApply')] = save;
			buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
			return buttons;
		},
		save = function() {
			var perm = $.trim($('#'+id+'-perm').val()),
				reqData;
			
			if (!isPerm(perm)) return false;
			
			dialog.elfinderdialog('close');
			
			reqData = {
				cmd     : 'chmod',
				targets : hashes,
				mode    : perm
			};
			fm.request({
				data : reqData,
				notify : {type : 'chmod', cnt : cnt}
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.changed && data.changed.length) {
					data.undo = {
						cmd : 'chmod',
						callback : function() {
							var reqs = [];
							$.each(prevVals, function(perm, hashes) {
								reqs.push(fm.request({
									data : {cmd : 'chmod', targets : hashes, mode : perm},
									notify : {type : 'undo', cnt : hashes.length}
								}));
							});
							return $.when.apply(null, reqs);
						}
					};
					data.redo = {
						cmd : 'chmod',
						callback : function() {
							return fm.request({
								data : reqData,
								notify : {type : 'redo', cnt : hashes.length}
							});
						}
					};
				}
				dfrd.resolve(data);
			});
		},
		setperm = function() {
			var perm = '';
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = 0;
				if ($("#"+id+"-read-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 4);
				}
				if ($("#"+id+"-write-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 2);
				}
				if ($("#"+id+"-execute-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 1);
				}
				perm += _perm.toString(8);
			}
			$('#'+id+'-perm').val(perm);
		},
		setcheck = function(perm) {
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				$("#"+id+"-read-"+level[i]+'-perm').prop("checked", false);
				$("#"+id+"-write-"+level[i]+'-perm').prop("checked", false);
				$("#"+id+"-execute-"+level[i]+'-perm').prop("checked", false);
				if ((_perm & 4) == 4) {
					$("#"+id+"-read-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 2) == 2) {
					$("#"+id+"-write-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 1) == 1) {
					$("#"+id+"-execute-"+level[i]+'-perm').prop("checked", true);
				}
			}
			setperm();
		},
		makeperm = function(files) {
			var perm = '777', ret = '', chk, _chk, _perm;
			var len = files.length;
			for (var i2 = 0; i2 < len; i2++) {
				chk = getPerm(files[i2].perm);
				if (! prevVals[chk]) {
					prevVals[chk] = [];
				}
				prevVals[chk].push(files[i2].hash);
				ret = '';
				for (var i = 0; i < 3; i++){
					_chk = parseInt(chk.slice(i, i+1), 8);
					_perm = parseInt(perm.slice(i, i+1), 8);
					if ((_chk & 4) != 4 && (_perm & 4) == 4) {
						_perm -= 4;
					}
					if ((_chk & 2) != 2 && (_perm & 2) == 2) {
						_perm -= 2;
					}
					if ((_chk & 1) != 1 && (_perm & 1) == 1) {
						_perm -= 1;
					}
					ret += _perm.toString(8);
				}
				perm = ret;
			}
			return perm;
		},
		makeName = function(name) {
			return name? ':'+name : '';
		},
		makeDataTable = function(perm, f) {
			var _perm, fieldset;
			var value = '';
			var dataTable = tpl.dataTable;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				value += _perm.toString(8);
				fieldset = tpl.fieldset.replace('{f_title}', fm.i18n(level[i])).replace('{name}', makeName(f[level[i]])).replace(/\{level\}/g, level[i]);
				dataTable = dataTable.replace('{'+i+'}', fieldset)
				                     .replace('{checked-r}', ((_perm & 4) == 4)? checked : '')
				                     .replace('{checked-w}', ((_perm & 2) == 2)? checked : '')
				                     .replace('{checked-x}', ((_perm & 1) == 1)? checked : '');
			}
			dataTable = dataTable.replace('{value}', value).replace('{valueCaption}', msg['perm']);
			return dataTable;
		},
		getPerm = function(perm){
			if (isNaN(parseInt(perm, 8))) {
				var mode_array = perm.split('');
				var a = [];

				for (var i = 0, l = mode_array.length; i < l; i++) {
					if (i === 0 || i === 3 || i === 6) {
						if (mode_array[i].match(/[r]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else if ( i === 1 || i === 4 || i === 7) {
						 if (mode_array[i].match(/[w]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else {
						if (mode_array[i].match(/[x]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					}
				}
			
				a.splice(3, 0, ",");
				a.splice(7, 0, ",");

				var b = a.join("");
				var b_array = b.split(",");
				var c = [];
			
				for (var j = 0, m = b_array.length; j < m; j++) {
					var p = parseInt(b_array[j], 2).toString(8);
					c.push(p);
				}

				perm = c.join('');
			} else {
				perm = parseInt(perm, 8).toString(8);
			}
			return perm;
		},
		opts    = {
			title : this.title,
			width : 'auto',
			buttons : buttons(),
			close : function() { $(this).elfinderdialog('destroy'); }
		},
		dialog = fm.getUI().find('#'+id),
		prevVals = {},
		tmb = '', title, dataTable;

		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return $.Deferred().resolve();
		}

		view  = view.replace('{class}', cnt > 1 ? 'elfinder-cwd-icon-group' : fm.mime2class(file.mime));
		if (cnt > 1) {
			title = tpl.groupTitle.replace('{items}', fm.i18n('items')).replace('{num}', cnt);
		} else {
			title = tpl.itemTitle.replace('{name}', file.name).replace('{kind}', fm.mime2kind(file));
			tmb = fm.tmb(file);
		}

		dataTable = makeDataTable(makeperm(files), files.length == 1? files[0] : {});

		view = view.replace('{title}', title).replace('{dataTable}', dataTable).replace(/{id}/g, id);

		dialog = this.fmDialog(view, opts);
		dialog.attr('id', id);

		// load thumbnail
		if (tmb) {
			$('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}

		$('#' + id + '-table-perm :checkbox').on('click', function(){setperm('perm');});
		$('#' + id + '-perm').on('keydown', function(e) {
			var c = e.keyCode;
			if (c == $.ui.keyCode.ENTER) {
				e.stopPropagation();
				save();
				return;
			}
		}).on('focus', function(e){
			$(this).trigger('select');
		}).on('keyup', function(e) {
			if ($(this).val().length == 3) {
				$(this).trigger('select');
				setcheck($(this).val());
			}
		});
		
		return dfrd;
	};
};


/*
 * File: /js/commands/colwidth.js
 */

/**
 * @class  elFinder command "colwidth"
 * CWD list table columns width to auto
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.colwidth = function() {
		this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return this.fm.getUI('cwd').find('table').css('table-layout') === 'fixed' ? 0 : -1;
	};
	
	this.exec = function() {
		this.fm.getUI('cwd').trigger('colwidth');
		return $.Deferred().resolve();
	};
	
};

/*
 * File: /js/commands/copy.js
 */

/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.copy = function() {
		this.shortcuts = [{
		pattern     : 'ctrl+c ctrl+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read ? true : false;
					return fres;
				});
			};

		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm   = this.fm,
			dfrd = $.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		$.each(this.files(hashes), function(i, file) {
			if (! file.read) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes)));
	};

};


/*
 * File: /js/commands/cut.js
 */

/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.cut = function() {
		var fm = this.fm;
	
	this.shortcuts = [{
		pattern     : 'ctrl+x shift+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read && ! f.locked && ! fm.isRoot(f) ? true : false;
					return fres;
				});
			};
		
		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dfrd = $.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		$.each(this.files(hashes), function(i, file) {
			if (!(file.read && ! file.locked && ! fm.isRoot(file)) ) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes), true));
	};

};


/*
 * File: /js/commands/download.js
 */

/**
 * @class elFinder command "download". 
 * Download selected files.
 * Only for new api
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
elFinder.prototype.commands.zipdl = function() {};
elFinder.prototype.commands.download = function() {
		var self   = this,
		fm     = this.fm,
		czipdl = null,
		zipOn  = false,
		mixed  = false,
		dlntf  = false,
		cpath  = window.location.pathname || '/',
		filter = function(hashes, inExec) {
			var volumeid, mixedCmd;
			
			if (czipdl !== null) {
				if (fm.searchStatus.state > 1) {
					mixed = fm.searchStatus.mixed;
				} else if (fm.leafRoots[fm.cwd().hash]) {
					volumeid = fm.cwd().volumeid;
					$.each(hashes, function(i, h) {
						if (h.indexOf(volumeid) !== 0) {
							mixed = true;
							return false;
						}
					});
				}
				zipOn = (fm.isCommandEnabled('zipdl', hashes[0]));
			}

			if (mixed) {
				mixedCmd = czipdl? 'zipdl' : 'download';
				hashes = $.grep(hashes, function(h) {
					var f = fm.file(h),
						res = (! f || (! czipdl && f.mime === 'directory') || ! fm.isCommandEnabled(mixedCmd, h))? false : true;
					if (f && inExec && ! res) {
						fm.cwdHash2Elm(f.hash).trigger('unselect');
					}
					return res;
				});
				if (! hashes.length) {
					return [];
				}
			} else {
				if (!fm.isCommandEnabled('download', hashes[0])) {
					return [];
				}
			}
			
			return $.grep(self.files(hashes), function(f) { 
				var res = (! f.read || (! zipOn && f.mime == 'directory')) ? false : true;
				if (inExec && ! res) {
					fm.cwdHash2Elm(f.hash).trigger('unselect');
				}
				return res;
			});
		};
	
	this.linkedCmds = ['zipdl'];
	
	this.shortcuts = [{
		pattern     : 'shift+enter'
	}];
	
	this.getstate = function(select) {
		var sel    = this.hashes(select),
			cnt    = sel.length,
			maxReq = this.options.maxRequests || 10,
			mixed  = false,
			croot  = '';
		
		if (cnt < 1) {
			return -1;
		}
		cnt = filter(sel).length;
		
		return  (cnt && (zipOn || (cnt <= maxReq && ((!fm.UA.IE && !fm.UA.Mobile) || cnt == 1))) ? 0 : -1);
	};
	
	fm.bind('contextmenu', function(e){
		var fm = self.fm,
			helper = null,
			targets, file, link,
			getExtra = function(file) {
				var link = file.url || fm.url(file.hash);
				return {
					icon: 'link',
					node: $('<a></a>')
						.attr({href: link, target: '_blank', title: fm.i18n('link')})
						.text(file.name)
						.on('mousedown click touchstart touchmove touchend contextmenu', function(e){
							e.stopPropagation();
						})
						.on('dragstart', function(e) {
							var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
							helper = null;
							if (dt) {
								var icon  = function(f) {
										var mime = f.mime, i, tmb = fm.tmb(f);
										i = '<div class="elfinder-cwd-icon '+fm.mime2class(mime)+' ui-corner-all"></div>';
										if (tmb) {
											i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
										}
										return i;
									};
								dt.effectAllowed = 'copyLink';
								if (dt.setDragImage) {
									helper = $('<div class="elfinder-drag-helper html5-native">').append(icon(file)).appendTo($(document.body));
									dt.setDragImage(helper.get(0), 50, 47);
								}
								if (!fm.UA.IE) {
									dt.setData('elfinderfrom', window.location.href + file.phash);
									dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
								}
							}
						})
						.on('dragend', function(e) {
							helper && helper.remove();
						})
				};
			};
		self.extra = null;
		if (e.data) {
			targets = e.data.targets || [];
			if (targets.length === 1 && (file = fm.file(targets[0])) && file.mime !== 'directory') {
				if (file.url != '1') {
					self.extra = getExtra(file);
				} else {
					// Get URL ondemand
					var node;
					self.extra = {
						icon: 'link',
						node: $('<a></a>')
							.attr({href: '#', title: fm.i18n('getLink'), draggable: 'false'})
							.text(file.name)
							.on('click touchstart', function(e){
								if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
									return;
								}
								var parent = node.parent();
								e.stopPropagation();
								e.preventDefault();
								parent.removeClass('ui-state-disabled').addClass('elfinder-button-icon-spinner');
								fm.request({
									data : {cmd : 'url', target : file.hash},
									preventDefault : true
								})
								.always(function(data) {
									parent.removeClass('elfinder-button-icon-spinner');
									if (data.url) {
										var rfile = fm.file(file.hash);
										rfile.url = data.url;
										node.replaceWith(getExtra(file).node);
									} else {
										parent.addClass('ui-state-disabled');
									}
								});

							})
					};
					node = self.extra.node;
					node.ready(function(){
						requestAnimationFrame(function(){
							node.parent().addClass('ui-state-disabled').css('pointer-events', 'auto');
						});
					});
				}
			}
		}
	}).one('open', function() {
		if (fm.api >= 2.1012) {
			czipdl = fm.getCommand('zipdl');
		}
		dlntf = fm.cookieEnabled && fm.api > 2.1038 && !fm.isCORS;
	});
	
	this.exec = function(select) {
		var hashes  = this.hashes(select),
			fm      = this.fm,
			base    = fm.options.url,
			files   = filter(hashes, true),
			dfrd    = $.Deferred(),
			iframes = '',
			cdata   = '',
			targets = {},
			i, url,
			linkdl  = false,
			getTask = function(hashes) {
				return function() {
					var dfd = $.Deferred(),
						root = fm.file(fm.root(hashes[0])),
						single = (hashes.length === 1),
						volName = root? (root.i18 || root.name) : null,
						dir, dlName, phash;
					if (single) {
						if (dir = fm.file(hashes[0])) {
							dlName = (dir.i18 || dir.name);
						}
					} else {
						$.each(hashes, function() {
							var d = fm.file(this);
							if (d && (!phash || phash === d.phash)) {
								phash = d.phash;
							} else {
								phash = null;
								return false;
							}
						});
						if (phash && (dir = fm.file(phash))) {
							dlName = (dir.i18 || dir.name) + '-' + hashes.length;
						}
					}
					if (dlName) {
						volName = dlName;
					}
					volName && (volName = ' (' + volName + ')');
					fm.request({
						data : {cmd : 'zipdl', targets : hashes},
						notify : {type : 'zipdl', cnt : 1, hideCnt : true, msg : fm.i18n('ntfzipdl') + volName},
						cancel : true,
						eachCancel : true,
						preventDefault : true
					}).done(function(e) {
						var zipdl, dialog, btn = {}, dllink, form, iframe, m,
							uniq = 'dlw' + (+new Date()),
							zipdlFn = function(url) {
								dllink = $('<a></a>')
									.attr('href', url)
									.attr('download', fm.escape(dlName))
									.on('click', function() {
										dfd.resolve();
										dialog && dialog.elfinderdialog('destroy');
									});
								if (linkdl) {
									dllink.attr('target', '_blank')
										.append('<span class="elfinder-button-icon elfinder-button-icon-download"></span>'+fm.escape(dlName));
									btn[fm.i18n('btnCancel')] = function() {
										dialog.elfinderdialog('destroy');
									};
									dialog = self.fmDialog(dllink, {
										title: fm.i18n('link'),
										buttons: btn,
										width: '200px',
										destroyOnClose: true,
										close: function() {
											(dfd.state() !== 'resolved') && dfd.resolve();
										}
									});
								} else {
									click(dllink.hide().appendTo('body').get(0));
									dllink.remove();
								}
							};
						if (e.error) {
							fm.error(e.error);
							dfd.resolve();
						} else if (e.zipdl) {
							zipdl = e.zipdl;
							if (dlName) {
								m = fm.splitFileExtention(zipdl.name || '');
								dlName += m[1]? ('.' + m[1]) : '.zip';
							} else {
								dlName = zipdl.name;
							}
							if (html5dl || linkdl) {
								url = fm.options.url + (fm.options.url.indexOf('?') === -1 ? '?' : '&')
								+ 'cmd=zipdl&download=1';
								$.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
									url += '&targets%5B%5D='+encodeURIComponent(val);
								});
								$.each(fm.customData, function(key, val) {
									url += '&'+encodeURIComponent(key)+'='+encodeURIComponent(val);
								});
								url += '&'+encodeURIComponent(dlName);
								if (fm.hasParrotHeaders()) {
									fm.getBinaryByUrl({url: url}, function(blob) {
										if (blob instanceof Blob) {
											url = (window.URL || window.webkitURL).createObjectURL(blob);
											zipdlFn(url);
										} else {
											fm.error(['errUploadTransfer', fm.i18n('kindZIP')]);
										}
									});
								} else {
									zipdlFn(url);
								}
							} else {
								form = $('<form action="'+fm.options.url+'" method="post" target="'+uniq+'" style="display:none"></form>')
								.append('<input type="hidden" name="cmd" value="zipdl"/>')
								.append('<input type="hidden" name="download" value="1"/>');
								$.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
									form.append('<input type="hidden" name="targets[]" value="'+fm.escape(val)+'"/>');
								});
								$.each(fm.customData, function(key, val) {
									form.append('<input type="hidden" name="'+key+'" value="'+fm.escape(val)+'"/>');
								});
								form.attr('target', uniq).appendTo('body');
								iframe = $('<iframe style="display:none" name="'+uniq+'">')
									.appendTo('body')
									.ready(function() {
										form.submit().remove();
										dfd.resolve();
										setTimeout(function() {
											iframe.remove();
										}, 20000); // give 20 sec file to be saved
									});
							}
						}
					}).fail(function(error) {
						error && fm.error(error);
						dfd.resolve();
					});
					return dfd.promise();
				};
			},
			// use MouseEvent to click element for Safari etc
			click = function(a) {
				var clickEv;
				if (typeof MouseEvent === 'function') {
					clickEv = new MouseEvent('click');
				} else {
					clickEv = document.createEvent('MouseEvents');
					clickEv.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
				}
				fm.pauseUnloadCheck(true);
				a.dispatchEvent(clickEv);
			},
			checkCookie = function(id) {
				var name = 'elfdl' + id,
					parts;
				parts = document.cookie.split(name + "=");
				if (parts.length === 2) {
					ntftm && clearTimeout(ntftm);
					document.cookie = name + '=; path=' + cpath + '; max-age=0';
					closeNotify();
				} else {
					setTimeout(function() { checkCookie(id); }, 200);
				}
			},
			closeNotify = function() {
				if (fm.ui.notify.children('.elfinder-notify-download').length) {
					fm.notify({
						type : 'download',
						cnt : -1
					});
				}
			},
			reqids = [],
			link, html5dl, fileCnt, clickEv, cid, ntftm, reqid, getUrlDfrd, urls;
			
		if (!files.length) {
			return dfrd.reject();
		}
		
		fileCnt = $.grep(files, function(f) { return f.mime === 'directory'? false : true; }).length;
		link = $('<a>').hide().appendTo('body');
		html5dl = (typeof link.get(0).download === 'string');
		
		if (zipOn && (fileCnt !== files.length || fileCnt >= (this.options.minFilesZipdl || 1))) {
			link.remove();
			linkdl = (!html5dl && fm.UA.Mobile);
			if (mixed) {
				targets = {};
				$.each(files, function(i, f) {
					var p = f.hash.split('_', 2);
					if (! targets[p[0]]) {
						targets[p[0]] = [ f.hash ];
					} else {
						targets[p[0]].push(f.hash);
					}
				});
				if (!linkdl && fm.UA.Mobile && Object.keys(targets).length > 1) {
					linkdl = true;
				}
			} else {
				targets = [ $.map(files, function(f) { return f.hash; }) ];
			}
			dfrd = fm.sequence($.map(targets, function(t) { return getTask(t); })).always(
				function() {
					fm.trigger('download', {files : files});
				}
			);
			return dfrd;
		} else {
			reqids = [];
			getUrlDfrd = $.Deferred().done(function(urls) {
				for (i = 0; i < urls.length; i++) {
					url = urls[i];
					if (dlntf && url.substr(0, fm.options.url.length) === fm.options.url) {
						reqid = fm.getRequestId();
						reqids.push(reqid);
						url += '&cpath=' + cpath + '&reqid=' + reqid;
						ntftm = setTimeout(function() {
							fm.notify({
								type : 'download',
								cnt : 1,
								cancel : (fm.UA.IE || fm.UA.Edge)? void(0) : function() {
									if (reqids.length) {
										$.each(reqids, function() {
											fm.request({
												data: {
													cmd: 'abort',
													id: this
												},
												preventDefault: true
											});
										});
									}
									reqids = [];
								}
							});
						}, fm.notifyDelay);
						checkCookie(reqid);
					}
					if (html5dl) {
						click(link.attr('href', url)
							.attr('download', fm.escape(files[i].name))
							.get(0)
						);
					} else {
						if (fm.UA.Mobile) {
							setTimeout(function(){
								if (! window.open(url)) {
									fm.error('errPopup');
									ntftm && cleaerTimeout(ntftm);
									closeNotify();
								}
							}, 100);
						} else {
							iframes += '<iframe class="downloader" id="downloader-' + files[i].hash+'" style="display:none" src="'+url+'"></iframe>';
						}
					}
				}
				link.remove();
				$(iframes)
					.appendTo('body')
					.ready(function() {
						setTimeout(function() {
							$(iframes).each(function() {
								$('#' + $(this).attr('id')).remove();
							});
						}, 20000 + (10000 * i)); // give 20 sec + 10 sec for each file to be saved
					});
				fm.trigger('download', {files : files});
				dfrd.resolve();
			});
			fileCnt = files.length;
			urls = [];
			for (i = 0; i < files.length; i++) {
				fm.openUrl(files[i].hash, true, function(v) {
					v && urls.push(v);
					if (--fileCnt < 1) {
						getUrlDfrd.resolve(urls);
					}
				});
			}
			return dfrd;
		}
	};

};


/*
 * File: /js/commands/duplicate.js
 */

/**
 * @class elFinder command "duplicate"
 * Create file/folder copy with suffix "copy Number"
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.duplicate = function() {
		var fm = this.fm;
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read && f.phash === fm.cwd().hash && ! fm.isRoot(f)? true : false;
					return fres;
				});
			};

		return cnt && fm.cwd().write && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm     = this.fm,
			files  = this.files(hashes),
			cnt    = files.length,
			dfrd   = $.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}), 
			args = [];
			
		if (! cnt) {
			return dfrd.reject();
		}
		
		$.each(files, function(i, file) {
			if (!file.read || !fm.file(file.phash).write) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		if (dfrd.state() == 'rejected') {
			return dfrd;
		}
		
		return fm.request({
			data   : {cmd : 'duplicate', targets : this.hashes(hashes)},
			notify : {type : 'copy', cnt : cnt},
			navigate : {
				toast : {
					inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdduplicate')])}
				}
			}
		});
		
	};

};


/*
 * File: /js/commands/edit.js
 */

/**
 * @class elFinder command "edit". 
 * Edit text file in dialog window
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
elFinder.prototype.commands.edit = function() {
		var self  = this,
		fm    = this.fm,
		clsEditing = fm.res('class', 'editing'),
		mimesSingle = [],
		mimes = [],
		allowAll = false,
		rtrim = function(str){
			return str.replace(/\s+$/, '');
		},
		getEncSelect = function(heads) {
			var sel = $('<select class="ui-corner-all"></select>'),
				hval;
			if (heads) {
				$.each(heads, function(i, head) {
					hval = fm.escape(head.value);
					sel.append('<option value="'+hval+'">'+(head.caption? fm.escape(head.caption) : hval)+'</option>');
				});
			}
			$.each(self.options.encodings, function(i, v) {
				sel.append('<option value="'+v+'">'+v+'</option>');
			});
			return sel;
		},
		getDlgWidth = function() {
			var win = fm.options.dialogContained? fm.getUI() : $(window),
				m, width;
			if (typeof self.options.dialogWidth === 'string' && (m = self.options.dialogWidth.match(/(\d+)%/))) {
				width = parseInt(win.width() * (m[1] / 100));
			} else {
				width = parseInt(self.options.dialogWidth || 650);
			}
			return Math.min(width, win.width());
		},
		getDlgHeight = function() {
			if (!self.options.dialogHeight) {
				return void(0);
			}
			var win = fm.options.dialogContained? fm.getUI() : $(window),
				m, height;
			if (typeof self.options.dialogHeight === 'string' && (m = self.options.dialogHeight.match(/(\d+)%/))) {
				height = parseInt(win.height() * (m[1] / 100));
			} else {
				height = parseInt(self.options.dialogHeight || win.height());
			}
			return Math.min(height, win.height());
		},

		/**
		 * Return files acceptable to edit
		 *
		 * @param  Array  files hashes
		 * @return Array
		 **/
		filter = function(files) {
			var cnt = files.length,
				mime, ext, skip;
			
			if (cnt > 1) {
				mime = files[0].mime;
				ext = files[0].name.replace(/^.*(\.[^.]+)$/, '$1');
			}
			return $.grep(files, function(file) {
				var res;
				if (skip || file.mime === 'directory') {
					return false;
				}
				res = file.read
					&& (allowAll || fm.mimeIsText(file.mime) || $.inArray(file.mime, cnt === 1? mimesSingle : mimes) !== -1) 
					&& (!self.onlyMimes.length || $.inArray(file.mime, self.onlyMimes) !== -1)
					&& (cnt === 1 || (file.mime === mime && file.name.substr(ext.length * -1) === ext))
					&& (fm.uploadMimeCheck(file.mime, file.phash)? true : false)
					&& setEditors(file, cnt)
					&& Object.keys(editors).length;
				if (!res) {
					skip = true;
				}
				return res;
			});
		},

		fileSync = function(hash) {
			var old = fm.file(hash),
				f;
			fm.request({
				cmd: 'info',
				targets: [hash],
				preventDefault: true
			}).done(function(data) {
				var changed;
				if (data && data.files && data.files.length) {
					f = data.files[0];
					if (old.ts != f.ts || old.size != f.size) {
						changed = { changed: [ f ] };
						fm.updateCache(changed);
						fm.change(changed);
					}
				}
			});
		},

		/**
		 * Open dialog with textarea to edit file
		 *
		 * @param  String  id       dialog id
		 * @param  Object  file     file object
		 * @param  String  content  file content
		 * @return $.Deferred
		 **/
		dialog = function(id, file, content, encoding, editor, toasts) {

			var dfrd = $.Deferred(),
				_loaded = false,
				loaded = function() {
					if (!_loaded) {
						fm.toast({
							mode: 'warning',
							msg: fm.i18n('nowLoading')
						});
						return false;
					}
					return true;
				},
				makeToasts = function() {
					// make toast message
					if (toasts && Array.isArray(toasts)) {
						$.each(toasts, function() {
							this.msg && fm.toast(this);
						});
					}
				},
				save = function() {
					var encord = selEncoding? selEncoding.val():void(0),
						saveDfd = $.Deferred().fail(function(err) {
							dialogNode.show().find('button.elfinder-btncnt-0,button.elfinder-btncnt-1').hide();
						}),
						conf, res, tm;
					if (!loaded()) {
						return saveDfd.resolve();
					}
					if (ta.editor) {
						ta.editor.save(ta[0], ta.editor.instance);
						conf = ta.editor.confObj;
						if (conf.info && (conf.info.schemeContent || conf.info.arrayBufferContent)) {
							encord = 'scheme';
						}
					}
					res = getContent();
					setOld(res);
					if (res.promise) {
						tm = setTimeout(function() {
							fm.notify({
								type : 'chkcontent',
								cnt : 1,
								hideCnt: true,
								cancel : function() {
									res.reject();
								}
							});
						}, 100);
						res.always(function() {
							tm && clearTimeout(tm);
							fm.notify({ type : 'chkcontent', cnt: -1 });
						}).done(function(data) {
							dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
						}).fail(function(err) {
							saveDfd.reject(err);
						});
					} else {
						dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
					}
					return saveDfd;
				},
				saveon = function() {
					if (!loaded()) { return; }
					save().fail(function(err) {
						err && fm.error(err);
					});
				},
				cancel = function() {
					if (!self.options.confirmUnsavedBeforeClose) {
						ta.elfinderdialog('close');
					} else {
						var close = function() {
								var conf;
								dfrd.resolve();
								if (ta.editor) {
									ta.editor.close(ta[0], ta.editor.instance);
									conf = ta.editor.confObj;
									if (conf.info && conf.info.syncInterval) {
										fileSync(file.hash);
									}
								}
								ta.elfinderdialog('destroy');
							},
							onlySaveAs = (typeof saveAsFile.name !== 'undefined'),
							accept = onlySaveAs? {
								label    : 'btnSaveAs',
								callback : function() {
									requestAnimationFrame(saveAs);
								}
							} : {
								label    : 'btnSaveClose',
								callback : function() {
									save().done(function() {
										close();
									});
								}
							};
						changed().done(function(change) {
							var msgs = ['confirmNotSave'];
							var btnDiscard = {
								label    : 'btnDiscard',
								callback : function() {
									close();
								}
							}
							if (change) {
								if (typeof change === 'string') {
									msgs.unshift(change);
								}
								fm.confirm({
									title  : self.title,
									text   : msgs,
									accept : accept,
									cancel : {
										label    : 'btnCancel',
										callback : $.noop
									},
									buttons : onlySaveAs? [btnDiscard] : [{
										label    : 'btnSaveAs',
										callback : function() {
											ta.elfinderdialog('destroy');
											requestAnimationFrame(saveAs);
										}
									}, btnDiscard]
								});
							} else {
								close();
							}
						});
					}
				},
				savecl = function() {
					if (!loaded()) { return; }
					dialogNode.hide();
					save().done(function() {
						_loaded = false;
						dialogNode.show();
						cancel();
					}).fail(function(err) {
						dialogNode.show();
						err && fm.error(err);
					});
				},
				saveAs = function() {
					if (!loaded()) { return; }
					var prevOld = old,
						phash = file.phash,
						fail = function(err) {
							dialogs.addClass(clsEditing).fadeIn(function() {
								err && fm.error(err);
							});
							old = prevOld;
							fm.disable();
						},
						make = function() {
							self.mime = saveAsFile.mime || file.mime;
							self.prefix = (saveAsFile.name || file.name).replace(/ \d+(\.[^.]+)?$/, '$1');
							self.requestCmd = 'mkfile';
							self.nextAction = {};
							self.data = {target : phash};
							$.proxy(fm.res('mixin', 'make'), self)()
								.done(function(data) {
									var oldHash;
									if (data.added && data.added.length) {
										oldHash = ta.data('hash');
										ta.data('hash', data.added[0].hash);
										save().done(function() {
											_loaded = false;
											dialogNode.show();
											cancel();
											dialogs.fadeIn();
										}).fail(function() {
											fm.exec('rm', [data.added[0].hash], { forceRm: true, quiet: true });
											ta.data('hash', oldHash);
											dialogNode.find('button.elfinder-btncnt-2').hide();
											fail();
										});
									} else {
										fail();
									}
								})
								.progress(function(err) {
									if (err && err === 'errUploadMime') {
										ta.trigger('saveAsFail');
									}
								})
								.fail(fail)
								.always(function() {
									delete self.mime;
									delete self.prefix;
									delete self.nextAction;
									delete self.data;
								});
							fm.trigger('unselectfiles', { files: [ file.hash ] });
						},
						reqOpen = null,
						reqInfo = null,
						dialogs = fm.getUI().children('.' + self.dialogClass + ':visible');
						if (dialogNode.is(':hidden')) {
							dialogs = dialogs.add(dialogNode);
						}
						dialogs.removeClass(clsEditing).fadeOut();
					
					fm.enable();
					
					if (fm.searchStatus.state < 2 && phash !== fm.cwd().hash) {
						reqOpen = fm.exec('open', [phash], {thash: phash});
					} else if (!fm.file(phash)) {
						reqInfo = fm.request({cmd: 'info', targets: [phash]}); 
					}
					
					$.when([reqOpen, reqInfo]).done(function() {
						if (reqInfo) {
							fm.one('infodone', function() {
								fm.file(phash)? make() : fail('errFolderNotFound');
							});
						} else {
							reqOpen? fm.one('cwdrender', make) : make();
						}
					}).fail(fail);
				},
				changed = function() {
					var dfd = $.Deferred(),
						res, tm;
					if (!_loaded) {
						return dfd.resolve(false);
					}
					ta.editor && ta.editor.save(ta[0], ta.editor.instance);
					res = getContent();
					if (res && res.promise) {
						tm = setTimeout(function() {
							fm.notify({
								type : 'chkcontent',
								cnt : 1,
								hideCnt: true,
								cancel : function() {
									res.reject();
								}
							});
						}, 100);
						res.always(function() {
							tm && clearTimeout(tm);
							fm.notify({ type : 'chkcontent', cnt: -1 });
						}).done(function(d) {
							dfd.resolve(old !== d);
						}).fail(function(err) {
							dfd.resolve(err || (old === undefined? false : true));
						});
					} else {
						dfd.resolve(old !== res);
					}
					return dfd;
				},
				opts = {
					title   : fm.escape(file.name),
					width   : getDlgWidth(),
					height  : getDlgHeight(),
					buttons : {},
					cssClass  : clsEditing,
					maxWidth  : 'window',
					maxHeight : 'window',
					allowMinimize : true,
					allowMaximize : true,
					openMaximized : editorMaximized() || (editor && editor.info && editor.info.openMaximized),
					btnHoverFocus : false,
					closeOnEscape : false,
					propagationEvents : ['mousemove', 'mouseup', 'click'],
					minimize : function() {
						var conf;
						if (ta.editor && dialogNode.closest('.ui-dialog').is(':hidden')) {
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								fileSync(file.hash);
							}
						}
					},
					headerBtnCloseAction : self.options.confirmUnsavedBeforeClose ? function() {
						cancel();
					} : undefined,
					close   : function() {
						if (self.options.confirmUnsavedBeforeClose) {
							return;
						}
						var close = function() {
								var conf;
								dfrd.resolve();
								if (ta.editor) {
									ta.editor.close(ta[0], ta.editor.instance);
									conf = ta.editor.confObj;
									if (conf.info && conf.info.syncInterval) {
										fileSync(file.hash);
									}
								}
								ta.elfinderdialog('destroy');
							},
							onlySaveAs = (typeof saveAsFile.name !== 'undefined'),
							accept = onlySaveAs? {
								label    : 'btnSaveAs',
								callback : function() {
									requestAnimationFrame(saveAs);
								}
							} : {
								label    : 'btnSaveClose',
								callback : function() {
									save().done(function() {
										close();
									});
								}
							};
						changed().done(function(change) {
							var msgs = ['confirmNotSave'];
							if (change) {
								if (typeof change === 'string') {
									msgs.unshift(change);
								}
								fm.confirm({
									title  : self.title,
									text   : msgs,
									accept : accept,
									cancel : {
										label    : 'btnClose',
										callback : close
									},
									buttons : onlySaveAs? null : [{
										label    : 'btnSaveAs',
										callback : function() {
											requestAnimationFrame(saveAs);
										}
									}]
								});
							} else {
								close();
							}
						});
					},
					open    : function() {
						var loadRes, conf, interval;
						ta.initEditArea.call(ta, id, file, content, fm);
						if (ta.editor) {
							loadRes = ta.editor.load(ta[0]) || null;
							if (loadRes && loadRes.done) {
								loadRes.always(function() {
									_loaded = true;
								}).done(function(instance) {
									ta.editor.instance = instance;
									ta.editor.focus(ta[0], ta.editor.instance);
									setOld(getContent());
									requestAnimationFrame(function() {
										dialogNode.trigger('resize');
									});
								}).fail(function(error) {
									error && fm.error(error);
									ta.elfinderdialog('destroy');
									return;
								}).always(makeToasts);
							} else {
								_loaded = true;
								if (loadRes && (typeof loadRes === 'string' || Array.isArray(loadRes))) {
									fm.error(loadRes);
									ta.elfinderdialog('destroy');
									return;
								}
								ta.editor.instance = loadRes;
								ta.editor.focus(ta[0], ta.editor.instance);
								setOld(getContent());
								requestAnimationFrame(function() {
									dialogNode.trigger('resize');
								});
								makeToasts();
							}
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								if (interval = parseInt(conf.info.syncInterval)) {
									setTimeout(function() {
										autoSync(interval);
									}, interval);
								}
							}
						} else {
							_loaded = true;
							setOld(getContent());
						}
					},
					resize : function(e, data) {
						ta.editor && ta.editor.resize(ta[0], ta.editor.instance, e, data || {});
					}
				},
				getContent = function() {
					var res = ta.getContent.call(ta, ta[0]);
					if (res === undefined || res === false || res === null) {
						res = $.Deferred().reject();
					}
					return res;
				},
				setOld = function(res) {
					if (res && res.promise) {
						res.done(function(d) {
							old = d;
						});
					} else {
						old = res;
					}
				},
				autoSync = function(interval) {
					if (dialogNode.is(':visible')) {
						fileSync(file.hash);
						setTimeout(function() {
							autoSync(interval);
						}, interval);
					}
				},
				stateChange = function() {
					if (selEncoding) {
						changed().done(function(change) {
							if (change) {
								selEncoding.attr('title', fm.i18n('saveAsEncoding')).addClass('elfinder-edit-changed');
							} else {
								selEncoding.attr('title', fm.i18n('openAsEncoding')).removeClass('elfinder-edit-changed');
							}
						});
					}
				},
				saveAsFile = {},
				ta, old, dialogNode, selEncoding, extEditor, maxW, syncInterval;
				
			if (editor) {
				if (editor.html) {
					ta = $(editor.html);
				}
				extEditor = {
					init     : editor.init || null,
					load     : editor.load,
					getContent : editor.getContent || null,
					save     : editor.save,
					beforeclose : typeof editor.beforeclose == 'function' ? editor.beforeclose : void 0,
					close    : typeof editor.close == 'function' ? editor.close : function() {},
					focus    : typeof editor.focus == 'function' ? editor.focus : function() {},
					resize   : typeof editor.resize == 'function' ? editor.resize : function() {},
					instance : null,
					doSave   : saveon,
					doCancel : cancel,
					doClose  : savecl,
					file     : file,
					fm       : fm,
					confObj  : editor,
					trigger  : function(evName, data) {
						fm.trigger('editEditor' + evName, Object.assign({}, editor.info || {}, data));
					}
				};
			}
			
			if (!ta) {
				if (!fm.mimeIsText(file.mime)) {
					return dfrd.reject('errEditorNotFound');
				}
				(function() {
					ta = $('<textarea class="elfinder-file-edit" rows="20" id="'+id+'-ta"></textarea>')
						.on('input propertychange', stateChange);
					
					if (!editor || !editor.info || editor.info.useTextAreaEvent) {
						ta.on('keydown', function(e) {
							var code = e.keyCode,
								value, start;
							
							e.stopPropagation();
							if (code == $.ui.keyCode.TAB) {
								e.preventDefault();
								// insert tab on tab press
								if (this.setSelectionRange) {
									value = this.value;
									start = this.selectionStart;
									this.value = value.substr(0, start) + "\t" + value.substr(this.selectionEnd);
									start += 1;
									this.setSelectionRange(start, start);
								}
							}
							
							if (e.ctrlKey || e.metaKey) {
								// close on ctrl+w/q
								if (code == 'Q'.charCodeAt(0) || code == 'W'.charCodeAt(0)) {
									e.preventDefault();
									cancel();
								}
								if (code == 'S'.charCodeAt(0)) {
									e.preventDefault();
									saveon();
								}
							}
							
						})
						.on('mouseenter', function(){this.focus();});
					}

					ta.initEditArea = function(id, file, content) {
						// ta.hide() for performance tune. Need ta.show() in `load()` if use textarea node.
						ta.hide().val(content);
						this._setupSelEncoding(content);
					};
				})();
			}

			// extended function to setup selector of encoding for text editor
			ta._setupSelEncoding = function(content) {
				var heads = (encoding && encoding !== 'unknown')? [{value: encoding}] : [],
					wfake = $('<select></select>').hide(),
					setSelW = function(init) {
						init && wfake.appendTo(selEncoding.parent());
						wfake.empty().append($('<option></option>').text(selEncoding.val()));
						selEncoding.width(wfake.width());
					};
				if (content === '' || ! encoding || encoding !== 'UTF-8') {
					heads.push({value: 'UTF-8'});
				}
				selEncoding = getEncSelect(heads).on('touchstart', function(e) {
					// for touch punch event handler
					e.stopPropagation();
				}).on('change', function() {
					// reload to change encoding if not edited
					changed().done(function(change) {
						if (! change && getContent() !== '') {
							cancel();
							edit(file, selEncoding.val(), editor).fail(function(err) { err && fm.error(err); });
						}
					});
					setSelW();
				}).on('mouseover', stateChange);
				ta.parent().next().prepend($('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>').append(selEncoding));
				setSelW(true);
			};

			ta.data('hash', file.hash);
			
			if (extEditor) {
				ta.editor = extEditor;
				
				if (typeof extEditor.beforeclose === 'function') {
					opts.beforeclose = function() {
						return extEditor.beforeclose(ta[0], extEditor.instance);
					};
				}
				
				if (typeof extEditor.init === 'function') {
					ta.initEditArea = extEditor.init;
				}
				
				if (typeof extEditor.getContent === 'function') {
					ta.getContent = extEditor.getContent;
				}
			}
			
			if (! ta.initEditArea) {
				ta.initEditArea = function() {};
			}
			
			if (! ta.getContent) {
				ta.getContent = function() {
					return rtrim(ta.val());
				};
			}
			
			if (!editor || !editor.info || !editor.info.preventGet) {
				opts.buttons[fm.i18n('btnSave')]      = saveon;
				opts.buttons[fm.i18n('btnSaveClose')] = savecl;
				opts.buttons[fm.i18n('btnSaveAs')]    = saveAs;
				opts.buttons[fm.i18n('btnCancel')]    = cancel;
			}
			
			if (editor && typeof editor.prepare === 'function') {
				editor.prepare(ta, opts, file);
			}
			
			dialogNode = self.fmDialog(ta, opts)
				.attr('id', id)
				.on('keydown keyup keypress', function(e) {
					e.stopPropagation();
				})
				.css({ overflow: 'hidden', minHeight: '7em' })
				.addClass('elfinder-edit-editor')
				.closest('.ui-dialog')
				.on('changeType', function(e, data) {
					if (data.extention && data.mime) {
						var ext = data.extention,
							mime = data.mime,
							btnSet = $(this).children('.ui-dialog-buttonpane').children('.ui-dialog-buttonset');
						btnSet.children('.elfinder-btncnt-0,.elfinder-btncnt-1').hide();
						saveAsFile.name = fm.splitFileExtention(file.name)[0] + '.' + data.extention;
						saveAsFile.mime = data.mime;
						if (!data.keepEditor) {
							btnSet.children('.elfinder-btncnt-2').trigger('click');
						}
					}
				});
			
			// care to viewport scale change with mobile devices
			maxW = (fm.options.dialogContained? fm.getUI() : $(window)).width();
			(dialogNode.width() > maxW) && dialogNode.width(maxW);
			
			return dfrd.promise();
		},
		
		/**
		 * Get file content and
		 * open dialog with textarea to edit file content
		 *
		 * @param  String  file hash
		 * @return jQuery.Deferred
		 **/
		edit = function(file, convert, editor) {
			var hash   = file.hash,
				opts   = fm.options,
				dfrd   = $.Deferred(), 
				id     = 'edit-'+fm.namespace+'-'+file.hash,
				d      = fm.getUI().find('#'+id),
				conv   = !convert? 0 : convert,
				noContent = false,
				req, error, res;
			
			
			if (d.length) {
				d.elfinderdialog('toTop');
				return dfrd.resolve();
			}
			
			if (!file.read || (!file.write && (!editor.info || !editor.info.converter))) {
				error = ['errOpen', file.name, 'errPerm'];
				return dfrd.reject(error);
			}
			
			if (editor && editor.info) {
				if (typeof editor.info.edit === 'function') {
					res = editor.info.edit.call(fm, file, editor);
					if (res.promise) {
						res.done(function() {
							dfrd.resolve();
						}).fail(function(error) {
							dfrd.reject(error);
						});
					} else {
						res? dfrd.resolve() : dfrd.reject();
					}
					return dfrd;
				}

				noContent = editor.info.preventGet || editor.info.noContent;
				if (editor.info.urlAsContent || noContent) {
					req = $.Deferred();
					if (editor.info.urlAsContent) {
						fm.url(hash, { async: true, onetime: true, temporary: true }).done(function(url) {
							req.resolve({content: url});
						});
					} else {
						req.resolve({});
					}
				} else {
					if (conv) {
						file.encoding = conv;
						fm.cache(file, 'change');
					}
					req = fm.request({
						data           : {cmd : 'get', target : hash, conv : conv, _t : file.ts},
						options        : {type: 'get', cache : true},
						notify         : {type : 'file', cnt : 1},
						preventDefault : true
					});
				}

				req.done(function(data) {
					var selEncoding, reg, m, res;
					if (data.doconv) {
						fm.confirm({
							title  : self.title,
							text   : data.doconv === 'unknown'? 'confirmNonUTF8' : 'confirmConvUTF8',
							accept : {
								label    : 'btnConv',
								callback : function() {  
									dfrd = edit(file, selEncoding.val(), editor);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() { dfrd.reject(); }
							},
							optionsCallback : function(options) {
								options.create = function() {
									var base = $('<div class="elfinder-dialog-confirm-encoding"></div>'),
										head = {value: data.doconv},
										detected;
									
									if (data.doconv === 'unknown') {
										head.caption = '-';
									}
									selEncoding = getEncSelect([head]);
									$(this).next().find('.ui-dialog-buttonset')
										.prepend(base.append($('<label>'+fm.i18n('encoding')+' </label>').append(selEncoding)));
								};
							}
						});
					} else {
						if (!noContent && fm.mimeIsText(file.mime)) {
							reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i');
							if (!editor.info.dataScheme) {
								if (window.atob && (m = data.content.match(reg))) {
									data.content = atob(data.content.substr(m[1].length));
								}
							} else {
								if (window.btoa && !data.content.match(reg)) {
									data.content = 'data:'+file.mime+';base64,'+btoa(data.content);
								}
							}
						}
						dialog(id, file, data.content, data.encoding, editor, data.toasts)
							.done(function(data) {
								dfrd.resolve(data);
							})
							.progress(function(encoding, newHash, data, saveDfd) {
								var ta = this;
								if (newHash) {
									hash = newHash;
								}
								fm.request({
									options : {type : 'post'},
									data : {
										cmd     : 'put',
										target  : hash,
										encoding : encoding || data.encoding,
										content : data
									},
									notify : {type : 'save', cnt : 1},
									syncOnFail : true,
									preventFail : true,
									navigate : {
										target : 'changed',
										toast : {
											inbuffer : {msg: fm.i18n(['complete', fm.i18n('btnSave')])}
										}
									}
								})
								.fail(function(error) {
									dfrd.reject(error);
									saveDfd.reject();
								})
								.done(function(data) {
									requestAnimationFrame(function(){
										ta.trigger('focus');
										ta.editor && ta.editor.focus(ta[0], ta.editor.instance);
									});
									saveDfd.resolve();
								});
							})
							.fail(function(error) {
								dfrd.reject(error);
							});
					}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					err = Array.isArray(err)? err[0] : err;
					if (file.encoding) {
						file.encoding = '';
						fm.cache(file, 'change');
					}
					(err !== 'errConvUTF8') && fm.sync();
					dfrd.reject(error);
				});
			}

			return dfrd.promise();
		},
		
		/**
		 * Current editors of selected files
		 * 
		 * @type Object
		 */
		editors = {},
		
		/**
		 * Fallback editor (Simple text editor)
		 * 
		 * @type Object
		 */
		fallbackEditor = {
			// Simple Text (basic textarea editor)
			info : {
				id : 'textarea',
				name : 'TextArea',
				useTextAreaEvent : true
			},
			load : function(textarea) {
				// trigger event 'editEditorPrepare'
				this.trigger('Prepare', {
					node: textarea,
					editorObj: void(0),
					instance: void(0),
					opts: {}
				});
				textarea.setSelectionRange && textarea.setSelectionRange(0, 0);
				$(textarea).trigger('focus').show();
			},
			save : function(){}
		},

		/**
		 * Set current editors
		 * 
		 * @param  Object  file object
		 * @param  Number  cnt  count of selected items
		 * @return Void
		 */
		setEditors = function(file, cnt) {
			var mimeMatch = function(fileMime, editorMimes){
					if (!editorMimes) {
						return fm.mimeIsText(fileMime);
					} else {
						if (editorMimes[0] === '*' || $.inArray(fileMime, editorMimes) !== -1) {
							return true;
						}
						var i, l;
						l = editorMimes.length;
						for (i = 0; i < l; i++) {
							if (fileMime.indexOf(editorMimes[i]) === 0) {
								return true;
							}
						}
						return false;
					}
				},
				extMatch = function(fileName, editorExts){
					if (!editorExts || !editorExts.length) {
						return true;
					}
					var ext = fileName.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
					i, l;
					l = editorExts.length;
					for (i = 0; i < l; i++) {
						if (ext === editorExts[i].toLowerCase()) {
							return true;
						}
					}
					return false;
				},
				optEditors = self.options.editors || [],
				cwdWrite = fm.cwd().write;
			
			stored = fm.storage('storedEditors') || {};
			editors = {};
			if (!optEditors.length) {
				optEditors = [fallbackEditor];
			}
			$.each(optEditors, function(i, editor) {
				var name;
				if ((cnt === 1 || !editor.info.single)
						&& ((!editor.info || !editor.info.converter)? file.write : cwdWrite)
						&& (file.size > 0 || (!editor.info.converter && editor.info.canMakeEmpty !== false && fm.mimesCanMakeEmpty[file.mime]))
						&& (!editor.info.maxSize || file.size <= editor.info.maxSize)
						&& mimeMatch(file.mime, editor.mimes || null)
						&& extMatch(file.name, editor.exts || null)
						&& typeof editor.load == 'function'
						&& typeof editor.save == 'function') {
					
					name = editor.info.name? editor.info.name : ('Editor ' + i);
					editor.id = editor.info.id? editor.info.id : ('editor' + i),
					editor.name = name;
					editor.i18n = fm.i18n(name);
					editors[editor.id] = editor;
				}
			});
			return Object.keys(editors).length? true : false;
		},
		store = function(mime, editor) {
			if (mime && editor) {
				if (!$.isPlainObject(stored)) {
					stored = {};
				}
				stored[mime] = editor.id;
				fm.storage('storedEditors', stored);
				fm.trigger('selectfiles', {files : fm.selected()});
			}
		},
		useStoredEditor = function() {
			var d = fm.storage('useStoredEditor');
			return d? (d > 0) : self.options.useStoredEditor;
		},
		editorMaximized = function() {
			var d = fm.storage('editorMaximized');
			return d? (d > 0) : self.options.editorMaximized;
		},
		getSubMenuRaw = function(files, callback) {
			var subMenuRaw = [];
			$.each(editors, function(id, ed) {
				subMenuRaw.push(
					{
						label    : fm.escape(ed.i18n),
						icon     : ed.info && ed.info.icon? ed.info.icon : 'edit',
						options  : { iconImg: ed.info && ed.info.iconImg? fm.baseUrl + ed.info.iconImg : void(0) },
						callback : function() {
							store(files[0].mime, ed);
							callback && callback.call(ed);
						}
					}		
				);
			});
			return subMenuRaw;
		},
		getStoreId = function(name) {
			// for compatibility to previous version
			return name.toLowerCase().replace(/ +/g, '');
		},
		getStoredEditor = function(mime) {
			var name = stored[mime];
			return name && Object.keys(editors).length? editors[getStoreId(name)] : void(0);
		},
		infoRequest = function() {

		},
		stored;
	
	// make public method
	this.getEncSelect = getEncSelect;

	this.shortcuts = [{
		pattern     : 'ctrl+e'
	}];
	
	this.init = function() {
		var self = this,
			fm   = this.fm,
			opts = this.options,
			cmdChecks = [],
			ccData, dfd;
		
		this.onlyMimes = this.options.mimes || [];
		
		fm.one('open', function() {
			// editors setup
			if (opts.editors && Array.isArray(opts.editors)) {
				fm.trigger('canMakeEmptyFile', {mimes: Object.keys(fm.storage('mkfileTextMimes') || {}).concat(opts.makeTextMimes || ['text/plain'])});
				$.each(opts.editors, function(i, editor) {
					if (editor.info && editor.info.cmdCheck) {
						cmdChecks.push(editor.info.cmdCheck);
					}
				});
				if (cmdChecks.length) {
					if (fm.api >= 2.1030) {
						dfd = fm.request({
							data : {
								cmd: 'editor',
								name: cmdChecks,
								method: 'enabled'
							},
							preventDefault : true
						}).done(function(d) {
							ccData = d;
						}).fail(function() {
							ccData = {};
						});
					} else {
						ccData = {};
						dfd = $.Deferred().resolve();
					}
				} else {
					dfd = $.Deferred().resolve();
				}
				
				dfd.always(function() {
					if (ccData) {
						opts.editors = $.grep(opts.editors, function(e) {
							if (e.info && e.info.cmdCheck) {
								return ccData[e.info.cmdCheck]? true : false;
							} else {
								return true;
							}
						});
					}
					$.each(opts.editors, function(i, editor) {
						if (editor.setup && typeof editor.setup === 'function') {
							editor.setup.call(editor, opts, fm);
						}
						if (!editor.disabled) {
							if (editor.mimes && Array.isArray(editor.mimes)) {
								mimesSingle = mimesSingle.concat(editor.mimes);
								if (!editor.info || !editor.info.single) {
									mimes = mimes.concat(editor.mimes);
								}
							}
							if (!allowAll && editor.mimes && editor.mimes[0] === '*') {
								allowAll = true;
							}
							if (!editor.info) {
								editor.info = {};
							}
							if (editor.info.integrate) {
								fm.trigger('helpIntegration', Object.assign({cmd: 'edit'}, editor.info.integrate));
							}
							if (editor.info.canMakeEmpty) {
								fm.trigger('canMakeEmptyFile', {mimes: Array.isArray(editor.info.canMakeEmpty)? editor.info.canMakeEmpty : editor.mimes});
							}
						}
					});
					
					mimesSingle = ($.uniqueSort || $.unique)(mimesSingle);
					mimes = ($.uniqueSort || $.unique)(mimes);
					
					opts.editors = $.grep(opts.editors, function(e) {
						return e.disabled? false : true;
					});
				});
			}
		})
		.bind('select', function() {
			editors = null;
		})
		.bind('contextmenucreate', function(e) {
			var file, editor,
				single = function(editor) {
					var title = self.title;
					fm.one('contextmenucreatedone', function() {
						self.title = title;
					});
					self.title = fm.escape(editor.i18n);
					if (editor.info && editor.info.iconImg) {
						self.contextmenuOpts = {
							iconImg: fm.baseUrl + editor.info.iconImg
						};
					}
					delete self.variants;
				};
			
			self.contextmenuOpts = void(0);
			if (e.data.type === 'files' && self.enabled()) {
				file = fm.file(e.data.targets[0]);
				if (setEditors(file, e.data.targets.length)) {
					if (Object.keys(editors).length > 1) {
						if (!useStoredEditor() || !(editor = getStoredEditor(file.mime))) {
							delete self.extra;
							self.variants = [];
							$.each(editors, function(id, editor) {
								self.variants.push([{ editor: editor }, editor.i18n, editor.info && editor.info.iconImg? fm.baseUrl + editor.info.iconImg : 'edit']);
							});
						} else {
							single(editor);
							self.extra = {
								icon: 'menu',
								node: $('<span></span>')
									.attr({title: fm.i18n('select')})
									.on('click touchstart', function(e){
										if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
											return;
										}
										var node = $(this);
										e.stopPropagation();
										e.preventDefault();
										fm.trigger('contextmenu', {
											raw: getSubMenuRaw(fm.selectedFiles(), function() {
												var hashes = fm.selected();
												fm.exec('edit', hashes, {editor: this});
												fm.trigger('selectfiles', {files : hashes});
											}),
											x: node.offset().left,
											y: node.offset().top
										});
									})
							};
						}
					} else {
						single(editors[Object.keys(editors)[0]]);
						delete self.extra;
					}
				}
			}
		})
		.bind('canMakeEmptyFile', function(e) {
			if (e.data && e.data.resetTexts) {
				var defs = fm.arrayFlip(self.options.makeTextMimes || ['text/plain']),
					hides = self.getMkfileHides();

				$.each((fm.storage('mkfileTextMimes') || {}), function(mime, type) {
					if (!defs[mime]) {
						delete fm.mimesCanMakeEmpty[mime];
						delete hides[mime];
					}
				});
				fm.storage('mkfileTextMimes', null);
				if (Object.keys(hides).length) {
					fm.storage('mkfileHides', hides);
				} else {
					fm.storage('mkfileHides', null);
				}
			}
		});
	};
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;

		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(select, opts) {
		var fm    = this.fm, 
			files = filter(this.files(select)),
			hashes = $.map(files, function(f) { return f.hash; }),
			list  = [],
			editor = opts && opts.editor? opts.editor : null,
			node = $(opts && opts._currentNode? opts._currentNode : fm.cwdHash2Elm(hashes[0])),
			getEditor = function() {
				var dfd = $.Deferred(),
					storedId;
				
				if (!editor && Object.keys(editors).length > 1) {
					if (useStoredEditor() && (editor = getStoredEditor(files[0].mime))) {
						return dfd.resolve(editor);
					}
					fm.trigger('contextmenu', {
						raw: getSubMenuRaw(files, function() {
							dfd.resolve(this);
						}),
						x: node.offset().left,
						y: node.offset().top + 22,
						opened: function() {
							fm.one('closecontextmenu',function() {
								requestAnimationFrame(function() {
									if (dfd.state() === 'pending') {
										dfd.reject();
									}
								});
							});
						}
					});
					
					fm.trigger('selectfiles', {files : hashes});
					
					return dfd;
				} else {
					Object.keys(editors).length > 1 && editor && store(files[0].mime, editor);
					return dfd.resolve(editor? editor : (Object.keys(editors).length? editors[Object.keys(editors)[0]] : null));
				}
			},
			dfrd = $.Deferred(),
			file;

		if (editors === null) {
			setEditors(files[0], hashes.length);
		}
		
		if (!node.length) {
			node = fm.getUI('cwd');
		}
		
		getEditor().done(function(editor) {
			while ((file = files.shift())) {
				list.push(edit(file, (file.encoding || void(0)), editor).fail(function(error) {
					error && fm.error(error);
				}));
			}
			
			if (list.length) { 
				$.when.apply(null, list).done(function() {
					dfrd.resolve();
				}).fail(function() {
					dfrd.reject();
				});
			} else {
				dfrd.reject();
			}
		}).fail(function() {
			dfrd.reject();
		});
		
		return dfrd;
	};

	this.getMkfileHides = function() {
		return fm.storage('mkfileHides') || fm.arrayFlip(self.options.mkfileHideMimes || []);
	};

};


/*
 * File: /js/commands/empty.js
 */

/**
 * @class elFinder command "empty".
 * Empty the folder
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
elFinder.prototype.commands.empty = function() {
		var self, fm,
		selFiles = function(select) {
			var sel = self.files(select);
			if (!sel.length) {
				sel = [ fm.cwd() ];
			}
			return sel;
		};
	
	this.linkedCmds = ['rm'];
	
	this.init = function() {
		// lazy assign to make possible to become superclass
		self = this;
		fm = this.fm;
	};

	this.getstate = function(select) {
		var sel = selFiles(select),
			cnt,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read && f.write && f.mime === 'directory' ? true : false;
					return fres;
				});
			};
		
		cnt = sel.length;
		return filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dirs = selFiles(hashes),
			cnt  = dirs.length,
			dfrd = $.Deferred()
				.done(function() {
					var data = {changed: {}};
					fm.toast({msg: fm.i18n(['"'+success.join('", ')+'"', 'complete', fm.i18n('cmdempty')])});
					$.each(dirs, function(i, dir) {
						data.changed[dir.hash] = dir;
					});
					fm.change(data);
				})
				.always(function() {
					var cwd = fm.cwd().hash;
					fm.trigger('selectfiles', {files: $.map(dirs, function(d) { return cwd === d.phash? d.hash : null; })});
				}),
			success = [],
			done = function(res) {
				if (typeof res === 'number') {
					success.push(dirs[res].name);
					delete dirs[res].dirs;
				} else {
					res && fm.error(res);
				}
				(--cnt < 1) && dfrd[success.length? 'resolve' : 'reject']();
			};

		$.each(dirs, function(i, dir) {
			var tm;
			if (!(dir.write && dir.mime === 'directory')) {
				done(['errEmpty', dir.name, 'errPerm']);
				return null;
			}
			if (!fm.isCommandEnabled('rm', dir.hash)) {
				done(['errCmdNoSupport', '"rm"']);
				return null;
			}
			tm = setTimeout(function() {
				fm.notify({type : 'search', cnt : 1, hideCnt : cnt > 1? false : true});
			}, fm.notifyDelay);
			fm.request({
				data : {cmd  : 'open', target : dir.hash},
				preventDefault : true,
				asNotOpen : true
			}).done(function(data) {
				var targets = [];
				tm && clearTimeout(tm);
				if (fm.ui.notify.children('.elfinder-notify-search').length) {
					fm.notify({type : 'search', cnt : -1, hideCnt : cnt > 1? false : true});
				}
				if (data && data.files && data.files.length) {
					if (data.files.length > fm.maxTargets) {
						done(['errEmpty', dir.name, 'errMaxTargets', fm.maxTargets]);
					} else {
						fm.updateCache(data);
						$.each(data.files, function(i, f) {
							if (!f.write || f.locked) {
								done(['errEmpty', dir.name, 'errRm', f.name, 'errPerm']);
								targets = [];
								return false;
							}
							targets.push(f.hash);
						});
						if (targets.length) {
							fm.exec('rm', targets, { _userAction : true, addTexts : [ fm.i18n('folderToEmpty', dir.name) ] })
							.fail(function(error) {
								fm.trigger('unselectfiles', {files: fm.selected()});
								done(fm.parseError(error) || '');
							})
							.done(function() { done(i); });
						}
					}
				} else {
					fm.toast({ mode: 'warning', msg: fm.i18n('filderIsEmpty', dir.name)});
					done('');
				}
			}).fail(function(error) {
				done(fm.parseError(error) || '');
			});
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/extract.js
 */

/**
 * @class  elFinder command "extract"
 * Extract files from archive
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.extract = function() {
		var self    = this,
		fm      = self.fm,
		mimes   = [],
		filter  = function(files) {
			var fres = true;
			return $.grep(files, function(file) { 
				fres = fres && file.read && $.inArray(file.mime, mimes) !== -1 ? true : false;
				return fres;
			});
		};
	
	this.variants = [];
	this.disableOnSearch = true;
	
	// Update mimes list on open/reload
	fm.bind('open reload', function() {
		mimes = fm.option('archivers')['extract'] || [];
		if (fm.api > 2) {
			self.variants = [[{makedir: true}, fm.i18n('cmdmkdir')], [{}, fm.i18n('btnCwd')]];
		} else {
			self.variants = [[{}, fm.i18n('btnCwd')]];
		}
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			cwdHash, cwdChk;
		if (!cnt || filter(sel).length != cnt) {
			return -1;
		} else if (fm.searchStatus.state > 0) {
			cwdHash = this.fm.cwd().hash;
			$.each(sel, function(i, file) {
				cwdChk = (file.phash === cwdHash);
				return cwdChk;
			});
			return cwdChk? 0 : -1;
		} else {
			return this.fm.cwd().write? 0 : -1;
		}
	};
	
	this.exec = function(hashes, opts) {
		var files    = this.files(hashes),
			dfrd     = $.Deferred(),
			cnt      = files.length,
			makedir  = opts && opts.makedir ? 1 : 0,
			i, error,
			decision,

			overwriteAll = false,
			omitAll = false,
			mkdirAll = 0,
			siblings = fm.files(files[0].phash),

			names = [],
			map = {};

		$.each(siblings, function(id, file) {
			map[file.name] = file;
			names.push(file.name);
		});
		
		var decide = function(decision) {
			switch (decision) {
				case 'overwrite_all' :
					overwriteAll = true;
					break;
				case 'omit_all':
					omitAll = true;
					break;
			}
		};

		var unpack = function(file) {
			if (!(file.read && fm.file(file.phash).write)) {
				error = ['errExtract', file.name, 'errPerm'];
				fm.error(error);
				dfrd.reject(error);
			} else if ($.inArray(file.mime, mimes) === -1) {
				error = ['errExtract', file.name, 'errNoArchive'];
				fm.error(error);
				dfrd.reject(error);
			} else {
				fm.request({
					data:{cmd:'extract', target:file.hash, makedir:makedir},
					notify:{type:'extract', cnt:1},
					syncOnFail:true,
					navigate:{
						toast : makedir? {
							incwd    : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}},
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}}
						} : {
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')])}
						}
					}
				})
				.fail(function (error) {
					if (dfrd.state() != 'rejected') {
						dfrd.reject(error);
					}
				})
				.done(function () {
				});
			}
		};
		
		var confirm = function(files, index) {
			var file = files[index],
			name = fm.splitFileExtention(file.name)[0],
			existed = ($.inArray(name, names) >= 0),
			next = function(){
				if((index+1) < cnt) {
					confirm(files, index+1);
				} else {
					dfrd.resolve();
				}
			};
			if (!makedir && existed && map[name].mime != 'directory') {
				fm.confirm(
					{
						title : fm.i18n('ntfextract'),
						text  : ['errExists', name, 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								decision = all ? 'overwrite_all' : 'overwrite';
								decide(decision);
								if(!overwriteAll && !omitAll) {
									if('overwrite' == decision) {
										unpack(file);
									}
									if((index+1) < cnt) {
										confirm(files, index+1);
									} else {
										dfrd.resolve();
									}
								} else if(overwriteAll) {
									for (i = index; i < cnt; i++) {
										unpack(files[i]);
									}
									dfrd.resolve();
								}
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								decision = all ? 'omit_all' : 'omit';
								decide(decision);
								if(!overwriteAll && !omitAll && (index+1) < cnt) {
									confirm(files, index+1);
								} else if (omitAll) {
									dfrd.resolve();
								}
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					}
				);
			} else if (!makedir) {
				if (mkdirAll == 0) {
					fm.confirm({
						title : fm.i18n('cmdextract'),
						text  : [fm.i18n('cmdextract')+' "'+file.name+'"', 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								all && (mkdirAll = 1);
								unpack(file);
								next();
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								all && (mkdirAll = -1);
								next();
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					});
				} else {
					(mkdirAll > 0) && unpack(file);
					next();
				}
			} else {
				unpack(file);
				next();
			}
		};
		
		if (!(this.enabled() && cnt && mimes.length)) {
			return dfrd.reject();
		}
		
		if(cnt > 0) {
			confirm(files, 0);
		}

		return dfrd;
	};

};


/*
 * File: /js/commands/forward.js
 */

/**
 * @class  elFinder command "forward"
 * Open next visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.forward = function() {
		this.alwaysEnabled = true;
	this.updateOnSelect = true;
	this.shortcuts = [{
		pattern     : 'ctrl+right'
	}];
	
	this.getstate = function() {
		return this.fm.history.canForward() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.forward();
	};
	
}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/fullscreen.js
 */

/**
 * @class  elFinder command "fullscreen"
 * elFinder node to full scrren mode
 *
 * @author Naoki Sawada
 **/

elFinder.prototype.commands.fullscreen = function() {
		var self   = this,
		fm     = this.fm,
		update = function(e, data) {
			var full;
			e.preventDefault();
			e.stopPropagation();
			if (data && data.fullscreen) {
				full = (data.fullscreen === 'on');
				self.update(void(0), full);
				self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
			}
		};

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.syncTitleOnChange = true;
	this.value = false;

	this.options = {
		ui : 'fullscreenbutton'
	};

	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		var node = fm.getUI().get(0),
			full = (node === fm.toggleFullscreen(node));
		self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
		self.update(void(0), full);
		return $.Deferred().resolve();
	};
	
	fm.bind('init', function() {
		fm.getUI().off('resize.' + fm.namespace, update).on('resize.' + fm.namespace, update);
	});
};


/*
 * File: /js/commands/getfile.js
 */

/**
 * @class elFinder command "getfile". 
 * Return selected files info into outer callback.
 * For use elFinder with wysiwyg editors etc.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
(elFinder.prototype.commands.getfile = function() {
		var self   = this,
		fm     = this.fm,
		filter = function(files) {
			var o = self.options,
				fres = true;

			files = $.grep(files, function(file) {
				fres = fres && (file.mime != 'directory' || o.folders) && file.read ? true : false;
				return fres;
			});

			return o.multiple || files.length == 1 ? files : [];
		};
	
	this.alwaysEnabled = true;
	this.callback      = fm.options.getFileCallback;
	this._disabled     = typeof(this.callback) == 'function';
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
			
		return this.callback && cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			opts  = this.options,
			files = this.files(hashes),
			cnt   = files.length,
			url   = fm.option('url'),
			tmb   = fm.option('tmbUrl'),
			dfrd  = $.Deferred()
				.done(function(data) {
					var res,
						done = function() {
							if (opts.oncomplete == 'close') {
								fm.hide();
							} else if (opts.oncomplete == 'destroy') {
								fm.destroy();
							}
						},
						fail = function(error) {
							if (opts.onerror == 'close') {
								fm.hide();
							} else if (opts.onerror == 'destroy') {
								fm.destroy();
							} else {
								error && fm.error(error);
							}
						};
					
					fm.trigger('getfile', {files : data});
					
					try {
						res = self.callback(data, fm);
					} catch(e) {
						fail(['Error in `getFileCallback`.', e.message]);
						return;
					}
					
					if (typeof res === 'object' && typeof res.done === 'function') {
						res.done(done).fail(fail);
					} else {
						done();
					}
				}),
			result = function(file) {
				return opts.onlyURL
					? opts.multiple ? $.map(files, function(f) { return f.url; }) : files[0].url
					: opts.multiple ? files : files[0];
			},
			req = [], 
			i, file, dim;

		for (i = 0; i < cnt; i++) {
			file = files[i];
			if (file.mime == 'directory' && !opts.folders) {
				return dfrd.reject();
			}
			file.baseUrl = url;
			if (file.url == '1') {
				req.push(fm.request({
					data : {cmd : 'url', target : file.hash},
					notify : {type : 'url', cnt : 1, hideCnt : true},
					preventDefault : true
				})
				.done(function(data) {
					if (data.url) {
						var rfile = fm.file(this.hash);
						rfile.url = this.url = data.url;
					}
				}.bind(file)));
			} else {
				file.url = fm.url(file.hash);
			}
			if (! opts.onlyURL) {
				if (opts.getPath) {
					file.path = fm.path(file.hash);
					if (file.path === '' && file.phash) {
						// get parents
						(function() {
							var dfd  = $.Deferred();
							req.push(dfd);
							fm.path(file.hash, false, {})
								.done(function(path) {
									file.path = path;
								})
								.fail(function() {
									file.path = '';
								})
								.always(function() {
									dfd.resolve();
								});
						})();
					}
				}
				if (file.tmb && file.tmb != 1) {
					file.tmb = tmb + file.tmb;
				}
				if (!file.width && !file.height) {
					if (file.dim) {
						dim = file.dim.split('x');
						file.width = dim[0];
						file.height = dim[1];
					} else if (opts.getImgSize && file.mime.indexOf('image') !== -1) {
						req.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							notify : {type : 'dim', cnt : 1, hideCnt : true},
							preventDefault : true
						})
						.done(function(data) {
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(this.hash);
								rfile.width = this.width = dim[0];
								rfile.height = this.height = dim[1];
							}
						}.bind(file)));
					}
				}
			}
		}
		
		if (req.length) {
			$.when.apply(null, req).always(function() {
				dfrd.resolve(result(files));
			});
			return dfrd;
		}
		
		return dfrd.resolve(result(files));
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/help.js
 */

/**
 * @class  elFinder command "help"
 * "About" dialog
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.help = function() {
		var fm   = this.fm,
		self = this,
		linktpl = '<div class="elfinder-help-link"> <a href="{url}">{link}</a></div>',
		linktpltgt = '<div class="elfinder-help-link"> <a href="{url}" target="_blank">{link}</a></div>',
		atpl    = '<div class="elfinder-help-team"><div>{author}</div>{work}</div>',
		url     = /\{url\}/,
		link    = /\{link\}/,
		author  = /\{author\}/,
		work    = /\{work\}/,
		r       = 'replace',
		prim    = 'ui-priority-primary',
		sec     = 'ui-priority-secondary',
		lic     = 'elfinder-help-license',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-help-tab-{id}"><a href="#'+fm.namespace+'-help-{id}" class="ui-tabs-anchor">{title}</a></li>',
		html    = ['<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-help">', 
				'<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'],
		stpl    = '<div class="elfinder-help-shortcut"><div class="elfinder-help-shortcut-pattern">{pattern}</div> {descrip}</div>',
		sep     = '<div class="elfinder-help-separator"></div>',
		selfUrl = $('base').length? fm.escape(document.location.href.replace(/#.*$/, '')) : '',
		clTabActive = fm.res('class', 'tabsactive'),
		
		getTheme = function() {
			var src;
			if (fm.theme && fm.theme.author) {
				src = atpl[r]('elfinder-help-team', 'elfinder-help-team elfinder-help-term-theme')[r](author, fm.i18n(fm.theme.author) + (fm.theme.email? ' &lt;'+fm.theme.email+'&gt;' : ''))[r](work, fm.i18n('theme') + ' ('+fm.i18n(fm.theme.name)+')');
			} else {
				src = '<div class="elfinder-help-team elfinder-help-term-theme" style="display:none"></div>';
			}
			return src;
		},

		about = function() {
			html.push('<div id="'+fm.namespace+'-help-about" class="ui-tabs-panel ui-widget-content ui-corner-bottom"><div class="elfinder-help-logo"></div>');
			html.push('<h3>elFinder</h3>');
			html.push('<div class="'+prim+'">'+fm.i18n('webfm')+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('ver')+': '+fm.version+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('protocolver')+': <span class="apiver"></span></div>');
			html.push('<div class="'+sec+'">jQuery/jQuery UI: '+$().jquery+'/'+$.ui.version+'</div>');

			html.push(sep);
			
			html.push(linktpltgt[r](url, 'https://studio-42.github.io/elFinder/')[r](link, fm.i18n('homepage')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder/wiki')[r](link, fm.i18n('docs')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder')[r](link, fm.i18n('github')));
			//html.push(linktpltgt[r](url, 'http://twitter.com/elrte_elfinder')[r](link, fm.i18n('twitter')));
			
			html.push(sep);
			
			html.push('<div class="'+prim+'">'+fm.i18n('team')+'</div>');
			
			html.push(atpl[r](author, 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;')[r](work, fm.i18n('chiefdev')));
			html.push(atpl[r](author, 'Naoki Sawada (nao-pon)&lt;hypweb+elfinder@gmail.com&gt;')[r](work, fm.i18n('developer')));
			html.push(atpl[r](author, 'Troex Nevelin &lt;troex@fury.scancode.ru&gt;')[r](work, fm.i18n('maintainer')));
			html.push(atpl[r](author, 'Alexey Sukhotin &lt;strogg@yandex.ru&gt;')[r](work, fm.i18n('contributor')));
			
			if (fm.i18[fm.lang].translator) {
				$.each(fm.i18[fm.lang].translator.split(', '), function() {
					html.push(atpl[r](author, $.trim(this))[r](work, fm.i18n('translator')+' ('+fm.i18[fm.lang].language+')'));
				});	
			}
			
			html.push(getTheme());

			html.push(sep);
			html.push('<div class="'+lic+'">'+fm.i18n('icons')+': Pixelmixer, <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue</a>, <a href="https://icons8.com" target="_blank">Icons8</a></div>');
			
			html.push(sep);
			html.push('<div class="'+lic+'">Licence: 3-clauses BSD Licence</div>');
			html.push('<div class="'+lic+'">Copyright Â© 2009-2024, Studio 42 / nao-pon</div>');
			html.push('<div class="'+lic+'">â€ž â€¦'+fm.i18n('dontforget')+' â€�</div>');
			html.push('</div>');
		},
		shortcuts = function() {
			var sh = fm.shortcuts();
			// shortcuts tab
			html.push('<div id="'+fm.namespace+'-help-shortcuts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			
			if (sh.length) {
				html.push('<div class="ui-widget-content elfinder-help-shortcuts">');
				$.each(sh, function(i, s) {
					html.push(stpl.replace(/\{pattern\}/, s[0]).replace(/\{descrip\}/, s[1]));
				});
			
				html.push('</div>');
			} else {
				html.push('<div class="elfinder-help-disabled">'+fm.i18n('shortcutsof')+'</div>');
			}
			
			
			html.push('</div>');
			
		},
		help = function() {
			// help tab
			html.push('<div id="'+fm.namespace+'-help-help" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<a href="https://github.com/Studio-42/elFinder/wiki" target="_blank" class="elfinder-dont-panic"><span>DON\'T PANIC</span></a>');
			html.push('</div>');
			// end help
		},
		useInteg = false,
		integrations = function() {
			useInteg = true;
			html.push('<div id="'+fm.namespace+'-help-integrations" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>');
		},
		useDebug = false,
		debug = function() {
			useDebug = true;
			// debug tab
			html.push('<div id="'+fm.namespace+'-help-debug" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<div class="ui-widget-content elfinder-help-debug"><ul></ul></div>');
			html.push('</div>');
			// end debug
		},
		debugRender = function() {
			var render = function(elm, obj) {
				$.each(obj, function(k, v) {
					elm.append($('<dt></dt>').text(k));
					if (typeof v === 'undefined') {
						elm.append($('<dd></dd>').append($('<span></span>').text('undfined')));
					} else if (typeof v === 'object' && !v) {
						elm.append($('<dd></dd>').append($('<span></span>').text('null')));
					} else if (typeof v === 'object' && ($.isPlainObject(v) || v.length)) {
						elm.append( $('<dd></dd>').append(render($('<dl></dl>'), v)));
					} else {
						elm.append($('<dd></dd>').append($('<span></span>').text((v && typeof v === 'object')? '[]' : (v? v : '""'))));
					}
				});
				return elm;
			},
			cnt = debugUL.children('li').length,
			targetL, target, tabId,
			info, lastUL, lastDIV;
			
			if (self.debug.options || self.debug.debug) {
				if (cnt >= 5) {
					lastUL = debugUL.children('li:last');
					lastDIV = debugDIV.children('div:last');
					if (lastDIV.is(':hidden')) {
						lastUL.remove();
						lastDIV.remove();
					} else {
						lastUL.prev().remove();
						lastDIV.prev().remove();
					}
				}
				
				tabId = fm.namespace + '-help-debug-' + (+new Date());
				targetL = $('<li></li>').html('<a href="'+selfUrl+'#'+tabId+'">'+self.debug.debug.cmd+'</a>').prependTo(debugUL);
				target = $('<div id="'+tabId+'"></div>').data('debug', self.debug);
				
				targetL.on('click.debugrender', function() {
					var debug = target.data('debug');
					target.removeData('debug');
					if (debug) {
						target.hide();
						if (debug.debug) {
							info = $('<fieldset>').append($('<legend></legend>').text('debug'), render($('<dl></dl>'), debug.debug));
							target.append(info);
						}
						if (debug.options) {
							info = $('<fieldset>').append($('<legend></legend>').text('options'), render($('<dl></dl>'), debug.options));
							target.append(info);
						}
						target.show();
					}
					targetL.off('click.debugrender');
				});
				
				debugUL.after(target);
				
				opened && debugDIV.tabs('refresh');
			}
		},
		content = '',
		opened, tabInteg, integDIV, tabDebug, debugDIV, debugUL;
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.state = -1;
	
	this.shortcuts = [{
		pattern     : 'f1',
		description : this.title
	}];
	
	fm.bind('load', function() {
		var parts = self.options.view || ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			i, helpSource, tabBase, tabNav, tabs, delta;
		
		// remove 'preference' tab, it moved to command 'preference'
		if ((i = $.inArray('preference', parts)) !== -1) {
			parts.splice(i, 1);
		}
		
		// debug tab require jQueryUI Tabs Widget
		if (! $.fn.tabs) {
			if ((i = $.inArray(parts, 'debug')) !== -1) {
				parts.splice(i, 1);
			}
		}
		
		$.each(parts, function(i, title) {
			html.push(tab[r](/\{id\}/g, title)[r](/\{title\}/, fm.i18n(title)));
		});
		
		html.push('</ul>');

		$.inArray('about', parts) !== -1 && about();
		$.inArray('shortcuts', parts) !== -1 && shortcuts();
		if ($.inArray('help', parts) !== -1) {
			helpSource = fm.i18nBaseUrl + 'help/%s.html.js';
			help();
		}
		$.inArray('integrations', parts) !== -1 && integrations();
		$.inArray('debug', parts) !== -1 && debug();
		
		html.push('</div>');
		content = $(html.join(''));
		
		content.find('.ui-tabs-nav li')
			.on('mouseenter mouseleave', function(e) {
				$(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			})
			.on('focus blur', 'a', function(e) {
				$(e.delegateTarget).toggleClass('ui-state-focus', e.type === 'focusin');
			})
			.children()
			.on('click', function(e) {
				var link = $(this);
				
				e.preventDefault();
				e.stopPropagation();
				
				link.parent().addClass(clTabActive).siblings().removeClass(clTabActive);
				content.children('.ui-tabs-panel').hide().filter(link.attr('href')).show();
			})
			.filter(':first').trigger('click');
		
		if (useInteg) {
			tabInteg = content.find('.elfinder-help-tab-integrations').hide();
			integDIV = content.find('#'+fm.namespace+'-help-integrations').hide().append($('<div class="elfinder-help-integrations-desc"></div>').html(fm.i18n('integrationWith')));
			fm.bind('helpIntegration', function(e) {
				var ul = integDIV.children('ul:first'),
					data, elm, cmdUL, cmdCls;
				if (e.data) {
					if ($.isPlainObject(e.data)) {
						data = Object.assign({
							link: '',
							title: '',
							banner: ''
						}, e.data);
						if (data.title || data.link) {
							if (!data.title) {
								data.title = data.link;
							}
							if (data.link) {
								elm = $('<a></a>').attr('href', data.link).attr('target', '_blank').text(data.title);
							} else {
								elm = $('<span></span>').text(data.title);
							}
							if (data.banner) {
								elm = $('<span></span>').append($('<img/>').attr(data.banner), elm);
							}
						}
					} else {
						elm = $(e.data);
						elm.filter('a').each(function() {
							var tgt = $(this);
							if (!tgt.attr('target')) {
								tgt.attr('target', '_blank');;
							}
						});
					}
					if (elm) {
						tabInteg.show();
						if (!ul.length) {
							ul = $('<ul class="elfinder-help-integrations"></ul>').appendTo(integDIV);
						}
						if (data && data.cmd) {
							cmdCls = 'elfinder-help-integration-' + data.cmd;
							cmdUL = ul.find('ul.' + cmdCls);
							if (!cmdUL.length) {
								cmdUL = $('<ul class="'+cmdCls+'"></ul>');
								ul.append($('<li></li>').append($('<span></span>').html(fm.i18n('cmd'+data.cmd))).append(cmdUL));
							}
							elm = cmdUL.append($('<li></li>').append(elm));
						} else {
							ul.append($('<li></li>').append(elm));
						}
					}
				}
			}).bind('themechange', function() {
				content.find('div.elfinder-help-term-theme').replaceWith(getTheme());
			});
		}

		// debug
		if (useDebug) {
			tabDebug = content.find('.elfinder-help-tab-debug').hide();
			debugDIV = content.find('#'+fm.namespace+'-help-debug').children('div:first');
			debugUL = debugDIV.children('ul:first').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
			});

			self.debug = {};
	
			fm.bind('backenddebug', function(e) {
				// CAUTION: DO NOT TOUCH `e.data`
				if (useDebug && e.data && e.data.debug) {
					self.debug = { options : e.data.options, debug : Object.assign({ cmd : fm.currentReqCmd }, e.data.debug) };
					if (self.dialog) {
						debugRender();
					}
				}
			});
		}

		content.find('#'+fm.namespace+'-help-about').find('.apiver').text(fm.api);
		self.dialog = self.fmDialog(content, {
				title : self.title,
				width : 530,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				close : function() {
					if (useDebug) {
						tabDebug.hide();
						debugDIV.tabs('destroy');
					}
					opened = false;
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});
		
		tabBase = self.dialog.children('.ui-tabs');
		tabNav = tabBase.children('.ui-tabs-nav:first');
		tabs = tabBase.children('.ui-tabs-panel');
		delta = self.dialog.outerHeight(true) - self.dialog.height();
		self.dialog.closest('.ui-dialog').on('resize', function() {
			tabs.height(self.dialog.height() - delta - tabNav.outerHeight(true) - 20);
		});
		
		if (helpSource) {
			self.dialog.one('initContents', function() {
				$.ajax({
					url: self.options.helpSource? self.options.helpSource : helpSource.replace('%s', fm.lang),
					dataType: 'html'
				}).done(function(source) {
					$('#'+fm.namespace+'-help-help').html(source);
				}).fail(function() {
					$.ajax({
						url: helpSource.replace('%s', 'en'),
						dataType: 'html'
					}).done(function(source) {
						$('#'+fm.namespace+'-help-help').html(source);
					});
				});
			});
		}
		
		self.state = 0;

		fm.trigger('helpBuilded', self.dialog);
	}).one('open', function() {
		var debug = false;
		fm.one('backenddebug', function() {
			debug =true;
		}).one('opendone', function() {
			requestAnimationFrame(function() {
				if (! debug && useDebug) {
					useDebug = false;
					tabDebug.hide();
					debugDIV.hide();
					debugUL.hide();
				}
			});
		});
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, opts) {
		var tab = opts? opts.tab : void(0),
			debugShow = function() {
				if (useDebug) {
					debugDIV.tabs();
					debugUL.find('a:first').trigger('click');
					tabDebug.show();
					opened = true;
				}
			};
		debugShow();
		this.dialog.trigger('initContents').elfinderdialog('open').find((tab? '.elfinder-help-tab-'+tab : '.ui-tabs-nav li') + ' a:first').trigger('click');
		return $.Deferred().resolve();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/hidden.js
 */

/**
 * @class  elFinder command "hidden"
 * Always hidden command for uiCmdMap
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.hidden = function() {
		this.hidden = true;
	this.updateOnSelect = false;
	this.getstate = function() {
		return -1;
	};
};

/*
 * File: /js/commands/hide.js
 */

/**
 * @class elFinder command "hide".
 * folders/files to hide as personal setting.
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
elFinder.prototype.commands.hide = function() {
	
	var self = this,
		nameCache = {},
		hideData, hideCnt, cMenuType, sOrigin;

	this.syncTitleOnChange = true;

	this.shortcuts = [{
		pattern : 'ctrl+shift+dot',
		description : this.fm.i18n('toggleHidden')
	}];

	this.init = function() {
		var fm = this.fm;
		
		hideData = fm.storage('hide') || {items: {}};
		hideCnt = Object.keys(hideData.items).length;

		this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		self.update(void(0), self.title);
	};

	this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (e.type === 'select' && e.data) {
			sOrigin = e.data.origin;
		} else if (e.type === 'contextmenucreate') {
			cMenuType = e.data.type;
		}
		if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) {
			self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		} else {
			self.title = fm.i18n('cmdhide');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title);
		} else {
			cMenuType = '';
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});

	this.getstate = function(sel) {
		return (this.fm.cookieEnabled && cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1;
	};

	this.exec = function(hashes, opts) {
		var fm = this.fm,
			dfrd = $.Deferred()
				.done(function() {
					fm.trigger('hide', {items: items, opts: opts});
				})
				.fail(function(error) {
					fm.error(error);
				}),
			o = opts || {},
			items = o.targets? o.targets : (hashes || fm.selected()),
			added = [],
			removed = [],
			notifyto, files, res;

		hideData = fm.storage('hide') || {};
		if (!$.isPlainObject(hideData)) {
			hideData = {};
		}
		if (!$.isPlainObject(hideData.items)) {
			hideData.items = {};
		}
		if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) {
			if (hideData.show) {
				o.hide = true;
			} else if (Object.keys(hideData.items).length) {
				o.show = true;
			}
		}
		if (o.reset) {
			o.show = true;
			hideCnt = 0;
		}
		if (o.show || o.hide) {
			if (o.show) {
				hideData.show = true;
			} else {
				delete hideData.show;
			}
			if (o.show) {
				fm.storage('hide', o.reset? null : hideData);
				self.title = fm.i18n('hideHidden');
				self.update(o.reset? -1 : void(0), self.title);
				$.each(hideData.items, function(h) {
					var f = fm.file(h, true);
					if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) {
						added.push(f);
					}
				});
				if (added.length) {
					fm.updateCache({added: added});
					fm.add({added: added});
				}
				if (o.reset) {
					hideData = {items: {}};
				}
				return dfrd.resolve();
			}
			items = Object.keys(hideData.items);
		}

		if (items.length) {
			$.each(items, function(i, h) {
				var f;
				if (!hideData.items[h]) {
					f = fm.file(h);
					if (f) {
						nameCache[h] = f.i18 || f.name;
					}
					hideData.items[h] = nameCache[h]? nameCache[h] : h;
				}
			});
			hideCnt = Object.keys(hideData.items).length;
			files = this.files(items);
			fm.storage('hide', hideData);
			fm.remove({removed: items});
			if (hideData.show) {
				this.exec(void(0), {hide: true});
			}
			if (!o.hide) {
				res = {};
				res.undo = {
					cmd : 'hide',
					callback : function() {
						var nData = fm.storage('hide');
						if (nData) {
							$.each(items, function(i, h) {
								delete nData.items[h];
							});
							hideCnt = Object.keys(nData.items).length;
							fm.storage('hide', nData);
							fm.trigger('hide', {items: items, opts: {}});
							self.update(hideCnt? 0 : -1);
						}
						fm.updateCache({added: files});
						fm.add({added: files});
					}
				};
				res.redo = {
					cmd : 'hide',
					callback : function() {
						return fm.exec('hide', void(0), {targets: items});
					}
				};
			}
		}

		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res);
	};
};


/*
 * File: /js/commands/home.js
 */

(elFinder.prototype.commands.home = function() {
		this.title = 'Home';
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+home ctrl+shift+up',
		description : 'Home'
	}];
	
	this.getstate = function() {
		var root = this.fm.root(),
			cwd  = this.fm.cwd().hash;
			
		return root && cwd && root != cwd ? 0: -1;
	};
	
	this.exec = function() {
		return this.fm.exec('open', this.fm.root());
	};
	

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/info.js
 */

/**
 * @class elFinder command "info". 
 * Display dialog with file properties.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
(elFinder.prototype.commands.info = function() {
		var m   = 'msg',
		fm  = this.fm,
		spclass = 'elfinder-spinner',
		btnclass = 'elfinder-info-button',
		msg = {
			calc     : fm.i18n('calc'),
			size     : fm.i18n('size'),
			unknown  : fm.i18n('unknown'),
			path     : fm.i18n('path'),
			aliasfor : fm.i18n('aliasfor'),
			modify   : fm.i18n('modify'),
			perms    : fm.i18n('perms'),
			locked   : fm.i18n('locked'),
			dim      : fm.i18n('dim'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files'),
			folders  : fm.i18n('folders'),
			roots    : fm.i18n('volumeRoots'),
			items    : fm.i18n('items'),
			yes      : fm.i18n('yes'),
			no       : fm.i18n('no'),
			link     : fm.i18n('link'),
			owner    : fm.i18n('owner'),
			group    : fm.i18n('group'),
			perm     : fm.i18n('perm'),
			getlink  : fm.i18n('getLink')
		},
		applyZWSP = function(str, remove) {
			if (remove) {
				return str.replace(/\u200B/g, '');
			} else {
				return str.replace(/(\/|\\)/g, "$1\u200B");
			}
		};
	
	this.items = ['size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm'];
	if (this.options.custom && Object.keys(this.options.custom).length) {
		$.each(this.options.custom, function(name, details) {
			details.label && this.items.push(details.label);
		});
	}

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}></span>{title}</div><table class="elfinder-info-tb">{content}</table>',
		itemTitle  : '<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		row        : '<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>',
		spinner    : '<span>{text}</span> <span class="'+spclass+' '+spclass+'-{name}"></span>'
	};
	
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+i'
	}];
	
	this.init = function() {
		$.each(msg, function(k, v) {
			msg[k] = fm.i18n(v);
		});
	};
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes) {
		var files   = this.files(hashes);
		if (! files.length) {
			files   = this.files([ this.fm.cwd().hash ]);
		}
		var self    = this,
			fm      = this.fm,
			o       = this.options,
			tpl     = this.tpl,
			row     = tpl.row,
			cnt     = files.length,
			content = [],
			view    = tpl.main,
			l       = '{label}',
			v       = '{value}',
			reqs    = [],
			reqDfrd = null,
			opts    = {
				title : fm.i18n('selectionInfo'),
				width : 'auto',
				close : function() {
					$(this).elfinderdialog('destroy');
					if (reqDfrd && reqDfrd.state() === 'pending') {
						reqDfrd.reject();
					}
					$.grep(reqs, function(r) {
						r && r.state() === 'pending' && r.reject();
					});
				}
			},
			count = [],
			replSpinner = function(msg, name, className) {
				dialog.find('.'+spclass+'-'+name).parent().html(msg).addClass(className || '');
			},
			id = fm.namespace+'-info-'+$.map(files, function(f) { return f.hash; }).join('-'),
			dialog = fm.getUI().find('#'+id),
			customActions = [],
			style = '',
			hashClass = 'elfinder-font-mono elfinder-info-hash',
			getHashAlgorisms = [],
			ndialog  = fm.ui.notify,
			size, tmb, file, title, dcnt, rdcnt, path, hideItems, hashProg;

		if (ndialog.is(':hidden') && ndialog.children('.elfinder-notify').length) {
			ndialog.elfinderdialog('open').height('auto');
		}

		if (!cnt) {
			return $.Deferred().reject();
		}
			
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return $.Deferred().resolve();
		}
		
		hideItems = fm.storage('infohides') || fm.arrayFlip(o.hideItems, true);

		if (cnt === 1) {
			file = files[0];
			
			if (file.icon) {
				style = ' '+fm.getIconStyle(file);
			}
			
			view  = view.replace('{dirclass}', file.csscls? fm.escape(file.csscls) : '').replace('{class}', fm.mime2class(file.mime)).replace('{style}', style);
			title = tpl.itemTitle.replace('{name}', fm.escape(file.i18 || file.name)).replace('{kind}', '<span title="'+fm.escape(file.mime)+'">'+fm.mime2kind(file)+'</span>');

			tmb = fm.tmb(file);
			
			if (!file.read) {
				size = msg.unknown;
			} else if (file.mime != 'directory' || file.alias) {
				size = fm.formatSize(file.size);
			} else {
				size = tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size');
				count.push(file.hash);
			}
			
			!hideItems.size && content.push(row.replace(l, msg.size).replace(v, size));
			!hideItems.aleasfor && file.alias && content.push(row.replace(l, msg.aliasfor).replace(v, file.alias));
			if (!hideItems.path) {
				if (path = fm.path(file.hash, true)) {
					content.push(row.replace(l, msg.path).replace(v, applyZWSP(fm.escape(path))).replace('{class}', 'elfinder-info-path'));
				} else {
					content.push(row.replace(l, msg.path).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'path')).replace('{class}', 'elfinder-info-path'));
					reqs.push(fm.path(file.hash, true, {notify: null})
					.fail(function() {
						replSpinner(msg.unknown, 'path');
					})
					.done(function(path) {
						replSpinner(applyZWSP(path), 'path');
					}));
				}
			}
			if (!hideItems.link && file.read) {
				var href,
				name_esc = fm.escape(file.name);
				if (file.url == '1') {
					content.push(row.replace(l, msg.link).replace(v, '<button class="'+btnclass+' '+spclass+'-url">'+msg.getlink+'</button>'));
				} else {
					if (file.url) {
						href = file.url;
					} else if (file.mime === 'directory') {
						if (o.nullUrlDirLinkSelf && file.url === null) {
							var loc = window.location;
							href = loc.pathname + loc.search + '#elf_' + file.hash;
						} else if (file.url !== '' && fm.option('url', (!fm.isRoot(file) && file.phash) || file.hash)) {
							href = fm.url(file.hash);
						}
					} else {
						href = fm.url(file.hash);
					}
					href && content.push(row.replace(l, msg.link).replace(v,  '<a href="'+href+'" target="_blank">'+name_esc+'</a>'));
				}
			}
			
			if (!hideItems.dim) {
				if (file.dim) { // old api
					content.push(row.replace(l, msg.dim).replace(v, file.dim));
				} else if (file.mime.indexOf('image') !== -1) {
					if (file.width && file.height) {
						content.push(row.replace(l, msg.dim).replace(v, file.width+'x'+file.height));
					} else if (file.size && file.size !== '0') {
						content.push(row.replace(l, msg.dim).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'dim')));
						reqs.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							preventDefault : true
						})
						.fail(function() {
							replSpinner(msg.unknown, 'dim');
						})
						.done(function(data) {
							replSpinner(data.dim || msg.unknown, 'dim');
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(file.hash);
								rfile.width = dim[0];
								rfile.height = dim[1];
							}
						}));
					}
				}
			}
			
			!hideItems.modify && content.push(row.replace(l, msg.modify).replace(v, fm.formatDate(file)));
			!hideItems.perms && content.push(row.replace(l, msg.perms).replace(v, fm.formatPermissions(file)));
			!hideItems.locked && content.push(row.replace(l, msg.locked).replace(v, file.locked ? msg.yes : msg.no));
			!hideItems.owner && file.owner && content.push(row.replace(l, msg.owner).replace(v, file.owner));
			!hideItems.group && file.group && content.push(row.replace(l, msg.group).replace(v, file.group));
			!hideItems.perm && file.perm && content.push(row.replace(l, msg.perm).replace(v, fm.formatFileMode(file.perm)));
			
			// Get MD5, SHA hashes
			if (window.ArrayBuffer && (fm.options.cdns.sparkmd5 || fm.options.cdns.jssha) && file.mime !== 'directory' && file.size > 0 && (!o.showHashMaxsize || file.size <= o.showHashMaxsize)) {
				getHashAlgorisms = [];
				$.each(fm.storage('hashchekcer') || o.showHashAlgorisms, function(i, n) {
					if (!file[n]) {
						content.push(row.replace(l, fm.i18n(n)).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', n)));
						getHashAlgorisms.push(n);
					} else {
						content.push(row.replace(l, fm.i18n(n)).replace(v, file[n]).replace('{class}', hashClass));
					}
				});

				if (getHashAlgorisms.length) {
					hashProg = $('<div class="elfinder-quicklook-info-progress"></div>');
					reqs.push(
						fm.getContentsHashes(file.hash, getHashAlgorisms, o.showHashOpts, { progressBar : hashProg }).progress(function(hashes) {
							$.each(getHashAlgorisms, function(i, n) {
								if (hashes[n]) {
									replSpinner(hashes[n], n, hashClass);
								}
							});
						}).always(function() {
							$.each(getHashAlgorisms, function(i, n) {
								replSpinner(msg.unknown, n);
							});
						})
					);
				}
			}
			
			// Add custom info fields
			if (o.custom) {
				$.each(o.custom, function(name, details) {
					if (
					  !hideItems[details.label]
					    &&
					  (!details.mimes || $.grep(details.mimes, function(m){return (file.mime === m || file.mime.indexOf(m+'/') === 0)? true : false;}).length)
					    &&
					  (!details.hashRegex || file.hash.match(details.hashRegex))
					) {
						// Add to the content
						content.push(row.replace(l, fm.i18n(details.label)).replace(v , details.tpl.replace('{id}', id)));
						// Register the action
						if (details.action && (typeof details.action == 'function')) {
							customActions.push(details.action);
						}
					}
				});
			}
		} else {
			view  = view.replace('{class}', 'elfinder-cwd-icon-group');
			title = tpl.groupTitle.replace('{items}', msg.items).replace('{num}', cnt);
			dcnt  = $.grep(files, function(f) { return f.mime == 'directory' ? true : false ; }).length;
			if (!dcnt) {
				size = 0;
				$.each(files, function(h, f) { 
					var s = parseInt(f.size);
					
					if (s >= 0 && size >= 0) {
						size += s;
					} else {
						size = 'unknown';
					}
				});
				content.push(row.replace(l, msg.kind).replace(v, msg.files));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, fm.formatSize(size)));
			} else {
				rdcnt = $.grep(files, function(f) { return f.mime === 'directory' && (! f.phash || f.isroot)? true : false ; }).length;
				dcnt -= rdcnt;
				content.push(row.replace(l, msg.kind).replace(v, (rdcnt === cnt || dcnt === cnt)? msg[rdcnt? 'roots' : 'folders'] : $.map({roots: rdcnt, folders: dcnt, files: cnt - rdcnt - dcnt}, function(c, t) { return c? msg[t]+' '+c : null; }).join(', ')));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size')));
				count = $.map(files, function(f) { return f.hash; });
				
			}
		}
		
		view = view.replace('{title}', title).replace('{content}', content.join('').replace(/{class}/g, ''));
		
		dialog = self.fmDialog(view, opts);
		dialog.attr('id', id).one('mousedown', '.elfinder-info-path', function() {
			$(this).html(applyZWSP($(this).html(), true));
		});

		if (getHashAlgorisms.length) {
			hashProg.appendTo(dialog.find('.'+spclass+'-'+getHashAlgorisms[0]).parent());
		}

		if (fm.UA.Mobile && $.fn.tooltip) {
			dialog.children('.ui-dialog-content .elfinder-info-title').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}

		if (file && file.url == '1') {
			dialog.on('click', '.'+spclass+'-url', function(){
				$(this).parent().html(tpl.spinner.replace('{text}', fm.i18n('ntfurl')).replace('{name}', 'url'));
				fm.request({
					data : {cmd : 'url', target : file.hash},
					preventDefault : true
				})
				.fail(function() {
					replSpinner(name_esc, 'url');
				})
				.done(function(data) {
					if (data.url) {
						replSpinner('<a href="'+data.url+'" target="_blank">'+name_esc+'</a>' || name_esc, 'url');
						var rfile = fm.file(file.hash);
						rfile.url = data.url;
					} else {
						replSpinner(name_esc, 'url');
					}
				});
			});
		}

		// load thumbnail
		if (tmb) {
			$('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}
		
		// send request to count total size
		if (count.length) {
			reqDfrd = fm.getSize(count).done(function(data) {
				replSpinner(data.formated, 'size');
			}).fail(function() {
				replSpinner(msg.unknown, 'size');
			});
		}
		
		// call custom actions
		if (customActions.length) {
			$.each(customActions, function(i, action) {
				try {
					action(file, fm, dialog);
				} catch(e) {
					fm.debug('error', e);
				}
			});
		}
		
		return $.Deferred().resolve();
	};
	
}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/mkdir.js
 */

/**
 * @class  elFinder command "mkdir"
 * Create new folder
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.mkdir = function() {
		var fm   = this.fm,
		self = this,
		curOrg;
	
	this.value           = '';
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.syncTitleOnChange = true;
	this.mime            = 'directory';
	this.prefix          = 'untitled folder';
	this.exec            = function(select, cOpts) {
		var onCwd;

		if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') {
			this.origin = cOpts._currentType;
			this.data = {
				target: select[0]
			};
		} else {
			onCwd = fm.cwd().hash === select[0];
			this.origin = curOrg && !onCwd? curOrg : 'cwd';
			delete this.data;
		}
		if (! select && ! this.options.intoNewFolderToolbtn) {
			fm.getUI('cwd').trigger('unselectall');
		}
		//this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false;
		this.move = this.value === fm.i18n('cmdmkdirin');
		return $.proxy(fm.res('mixin', 'make'), self)();
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+n'
	}];

	this.init = function() {
		if (this.options.intoNewFolderToolbtn) {
			this.syncTitleOnChange = true;
		}
	};
	
	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		
		self.className = 'mkdir';
		curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : '';
		if (!self.options.intoNewFolderToolbtn && curOrg === '') {
			curOrg = 'cwd';
		}
		if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) {
			self.title = fm.i18n('cmdmkdirin');
			self.className += ' elfinder-button-icon-mkdirin';
		} else {
			self.title = fm.i18n('cmdmkdir');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});
	
	this.getstate = function(select) {
		var cwd = fm.cwd(),
			sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [],
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(f) {
					fres = fres && f.read && ! f.locked? true : false;
					return fres;
				});
			};

		if (curOrg === 'navbar') {
			return cnt && sel[0].write && sel[0].read? 0 : -1;  
		} else {
			return cwd.write && (!cnt || filter(sel).length == cnt)? 0 : -1;
		}
	};

};


/*
 * File: /js/commands/mkfile.js
 */

/**
 * @class  elFinder command "mkfile"
 * Create new empty file
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.mkfile = function() {
		var self = this;

	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.mime            = 'text/plain';
	this.prefix          = 'untitled file.txt';
	this.variants        = [];

	this.getTypeName = function(mime, type) {
		var fm = self.fm,
			name;
		if (name = fm.messages['kind' + fm.kinds[mime]]) {
			name = fm.i18n(['extentiontype', type.toUpperCase(), name]);
		} else {
			name = fm.i18n(['extentionfile', type.toUpperCase()]);
		}
		return name;
	};

	this.fm.bind('open reload canMakeEmptyFile', function() {
		var fm = self.fm,
			hides = fm.getCommand('edit').getMkfileHides();
		self.variants = [];
		if (fm.mimesCanMakeEmpty) {
			$.each(fm.mimesCanMakeEmpty, function(mime, type) {
				type && !hides[mime] && fm.uploadMimeCheck(mime) && self.variants.push([mime, self.getTypeName(mime, type)]);
			});
		}
		self.change();
	});

	this.getstate = function() {
		return this.fm.cwd().write ? 0 : -1;
	};

	this.exec = function(_dum, mime) {
		var fm = self.fm,
			type, err;
		if (type = fm.mimesCanMakeEmpty[mime]) {
			if (fm.uploadMimeCheck(mime)) {
				this.mime = mime;
				this.prefix = fm.i18n(['untitled file', type]);
				return $.proxy(fm.res('mixin', 'make'), self)();
			}
			err = ['errMkfile', self.getTypeName(mime, type)];
		}
		return $.Deferred().reject(err);
	};
};


/*
 * File: /js/commands/netmount.js
 */

/**
 * @class  elFinder command "netmount"
 * Mount network volume with user credentials.
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.netmount = function() {
		var self = this,
		hasMenus = false,
		content;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			var fm = self.fm;
			if (fm.cookieEnabled) {
				fm.one('open', function() {
					self.drivers = fm.netDrivers;
					if (self.drivers.length) {
						$.each(self.drivers, function() {
							var d = self.options[this];
							if (d) {
								hasMenus = true;
								if (d.integrateInfo) {
									fm.trigger('helpIntegration', Object.assign({cmd: 'netmount'}, d.integrateInfo));
								}
							}
						});
					}
				});
			}
		}
	};

	this.getstate = function() {
		return hasMenus ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = self.fm,
			dfrd = $.Deferred(),
			o = self.options,
			create = function() {
				var winFocus = function() {
						inputs.protocol.trigger('change', 'winfocus');
					},
					inputs = {
						protocol : $('<select></select>')
						.on('change', function(e, data){
							var protocol = this.value;
							content.find('.elfinder-netmount-tr').hide();
							content.find('.elfinder-netmount-tr-'+protocol).show();
							dialogNode && dialogNode.children('.ui-dialog-buttonpane:first').find('button').show();
							if (typeof o[protocol].select == 'function') {
								o[protocol].select(fm, e, data);
							}
						})
						.addClass('ui-corner-all')
					},
					opts = {
						title          : fm.i18n('netMountDialogTitle'),
						resizable      : true,
						modal          : true,
						destroyOnClose : false,
						open           : function() {
							$(window).on('focus.'+fm.namespace, winFocus);
							inputs.protocol.trigger('change');
						},
						close          : function() { 
							dfrd.state() == 'pending' && dfrd.reject();
							$(window).off('focus.'+fm.namespace, winFocus);
						},
						buttons        : {}
					},
					doMount = function() {
						var protocol = inputs.protocol.val(),
							data = {cmd : 'netmount', protocol: protocol},
							cur = o[protocol],
							mnt2res;
						$.each(content.find('input.elfinder-netmount-inputs-'+protocol), function(name, input) {
							var val, elm;
							elm = $(input);
							if (elm.is(':radio,:checkbox')) {
								if (elm.is(':checked')) {
									val = $.trim(elm.val());
								}
							} else {
								val = $.trim(elm.val());
							}
							if (val) {
								data[input.name] = val;
							}
						});

						if (!data.host) {
							return fm.trigger('error', {error : 'errNetMountHostReq', opts : {modal: true}});
						}

						if (data.mnt2res) {
							mnt2res = true;
						}

						fm.request({data : data, notify : {type : 'netmount', cnt : 1, hideCnt : true}})
							.done(function(data) {
								var pdir;
								if (data.added && data.added.length) {
									mnt2res && inputs.protocol.trigger('change', 'reset');
									if (data.added[0].phash) {
										if (pdir = fm.file(data.added[0].phash)) {
											if (! pdir.dirs) {
												pdir.dirs = 1;
												fm.change({ changed: [ pdir ] });
											}
										}
									}
									fm.one('netmountdone', function() {
										fm.exec('open', data.added[0].hash);
									});
								}
								dfrd.resolve();
							})
							.fail(function(error) {
								if (cur.fail && typeof cur.fail == 'function') {
									cur.fail(fm, fm.parseError(error));
								}
								dfrd.reject(error);
							});
	
						self.dialog.elfinderdialog('close');
					},
					form = $('<form autocomplete="off"></form>').on('keydown', 'input', function(e) {
						var comp = true,
							next;
						if (e.keyCode === $.ui.keyCode.ENTER) {
							$.each(form.find('input:visible:not(.elfinder-input-optional)'), function() {
								if ($(this).val() === '') {
									comp = false;
									next = $(this);
									return false;
								}
							});
							if (comp) {
								doMount();
							} else {
								next.trigger('focus');
							}
						}
					}),
					hidden  = $('<div></div>'),
					dialog;

				content = $('<table class="elfinder-info-tb elfinder-netmount-tb"></table>')
					.append($('<tr></tr>').append($('<td>'+fm.i18n('protocol')+'</td>')).append($('<td></td>').append(inputs.protocol)));

				$.each(self.drivers, function(i, protocol) {
					if (o[protocol]) {
						inputs.protocol.append('<option value="'+protocol+'">'+fm.i18n(o[protocol].name || protocol)+'</option>');
						$.each(o[protocol].inputs, function(name, input) {
							input.attr('name', name);
							if (input.attr('type') != 'hidden') {
								input.addClass('ui-corner-all elfinder-netmount-inputs-'+protocol);
								content.append($('<tr></tr>').addClass('elfinder-netmount-tr elfinder-netmount-tr-'+protocol).append($('<td>'+fm.i18n(name)+'</td>')).append($('<td></td>').append(input)));
							} else {
								input.addClass('elfinder-netmount-inputs-'+protocol);
								hidden.append(input);
							}
						});
						o[protocol].protocol = inputs.protocol;
					}
				});
				
				content.append(hidden);
				
				content.find('.elfinder-netmount-tr').hide();
				content.find('.elfinder-netmount-tr-' + self.drivers[0]).show();

				opts.buttons[fm.i18n('btnMount')] = doMount;

				opts.buttons[fm.i18n('btnCancel')] = function() {
					self.dialog.elfinderdialog('close');
				};
				
				content.find('select,input').addClass('elfinder-tabstop');
				
				dialog = self.fmDialog(form.append(content), opts).ready(function() {
					inputs.protocol.trigger('change');
					dialog.elfinderdialog('posInit');
				});
				dialogNode = dialog.closest('.ui-dialog');
				return dialog;
			},
			dialogNode;
		
		if (!self.dialog) {
			self.dialog = create();
		} else {
			self.dialog.elfinderdialog('open');
		}

		return dfrd.promise();
	};

	self.fm.bind('netmount', function(e) {
		var d = e.data || null,
			o = self.options,
			done = function() {
				if (o[d.protocol] && typeof o[d.protocol].done == 'function') {
					o[d.protocol].done(self.fm, d);
					content.find('select,input').addClass('elfinder-tabstop');
					self.dialog.elfinderdialog('tabstopsInit');
				}
			};
		if (d && d.protocol) {
			if (d.mode && d.mode === 'redirect') {
				// To support of third-party cookie blocking (ITP) on CORS
				// On iOS and iPadOS 13.4 and Safari 13.1 on macOS, the session cannot be continued when redirecting OAuth in CORS mode
				self.fm.request({
					data : {cmd : 'netmount', protocol : d.protocol, host: d.host, user : 'init', pass : 'return', options: d.options}, 
					preventDefault : true
				}).done(function(data) {
					d = JSON.parse(data.body);
					done();
				});
			} else {
				done();
			}
		}
	});

};

elFinder.prototype.commands.netunmount = function() {
	var self = this;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			this.drivers = this.fm.netDrivers;
		}
	};

	this.getstate = function(sel) {
		var fm = this.fm,
			file;
		return !!sel && this.drivers.length && !this._disabled && (file = fm.file(sel[0])) && file.netkey ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var self   = this,
			fm     = this.fm,
			dfrd   = $.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			drive  = fm.file(hashes[0]),
			childrenRoots = function(hash) {
				var roots = [],
					work;
				if (fm.leafRoots) {
					work = [];
					$.each(fm.leafRoots, function(phash, hashes) {
						var parents = fm.parents(phash),
							idx, deep;
						if ((idx = $.inArray(hash, parents)) !== -1) {
							idx = parents.length - idx;
							$.each(hashes, function(i, h) {
								work.push({i: idx, hash: h});
							});
						}
					});
					if (work.length) {
						work.sort(function(a, b) { return a.i < b.i; });
						$.each(work, function(i, o) {
							roots.push(o.hash);
						});
					}
				}
				return roots;
			};

		if (this._disabled) {
			return dfrd.reject();
		}

		if (dfrd.state() == 'pending') {
			fm.confirm({
				title  : self.title,
				text   : fm.i18n('confirmUnmount', drive.name),
				accept : {
					label    : 'btnUnmount',
					callback : function() {  
						var target =  drive.hash,
							roots = childrenRoots(target),
							requests = [],
							removed = [],
							doUmount = function() {
								$.when(requests).done(function() {
									fm.request({
										data   : {cmd  : 'netmount', protocol : 'netunmount', host: drive.netkey, user : target, pass : 'dum'}, 
										notify : {type : 'netunmount', cnt : 1, hideCnt : true},
										preventFail : true
									})
									.fail(function(error) {
										dfrd.reject(error);
									})
									.done(function(data) {
										drive.volumeid && delete fm.volumeExpires[drive.volumeid];
										dfrd.resolve();
									});
								}).fail(function(error) {
									if (removed.length) {
										fm.remove({ removed: removed });
									}
									dfrd.reject(error);
								});
							};
						
						if (roots.length) {
							fm.confirm({
								title : self.title,
								text  : (function() {
									var msgs = ['unmountChildren'];
									$.each(roots, function(i, hash) {
										msgs.push([fm.file(hash).name]);
									});
									return msgs;
								})(),
								accept : {
									label : 'btnUnmount',
									callback : function() {
										$.each(roots, function(i, hash) {
											var d = fm.file(hash);
											if (d.netkey) {
												requests.push(fm.request({
													data   : {cmd  : 'netmount', protocol : 'netunmount', host: d.netkey, user : d.hash, pass : 'dum'}, 
													notify : {type : 'netunmount', cnt : 1, hideCnt : true},
													preventDefault : true
												}).done(function(data) {
													if (data.removed) {
														d.volumeid && delete fm.volumeExpires[d.volumeid];
														removed = removed.concat(data.removed);
													}
												}));
											}
										});
										doUmount();
									}
								},
								cancel : {
									label : 'btnCancel',
									callback : function() {
										dfrd.reject();
									}
								}
							});
						} else {
							requests = null;
							doUmount();
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() { dfrd.reject(); }
				}
			});
		}
			
		return dfrd;
	};

};


/*
 * File: /js/commands/open.js
 */

/**
 * @class  elFinder command "open"
 * Enter folder or open files in new windows
 *
 * @author Dmitry (dio) Levashov
 **/  
(elFinder.prototype.commands.open = function() {
		var fm = this.fm,
		self = this;
	this.alwaysEnabled = true;
	this.noChangeDirOnRemovedCwd = true;
	
	this._handlers = {
		dblclick : function(e) {
			var arg = e.data && e.data.file? [ e.data.file ]: void(0);
			if (self.getstate(arg) === 0) {
				e.preventDefault();
				fm.exec('open', arg);
			}
		},
		'select enable disable reload' : function(e) { this.update(e.type == 'disable' ? -1 : void(0));  }
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+down numpad_enter'+(fm.OS != 'mac' && ' enter')
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(file) {
					fres = fres && file.mime == 'directory' || ! file.read ? false : true;
					return fres;
				});
			};
		
		return cnt == 1 
			? (sel[0].read ? 0 : -1)
			: (cnt && !fm.UA.Mobile) ? ($.grep(sel, function(file) { return file.mime == 'directory' || ! file.read ? false : true;}).length == cnt ? 0 : -1) : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var dfrd  = $.Deferred().fail(function(error) { error && fm.error(error); }),
			files = this.files(hashes),
			cnt   = files.length,
			thash = (typeof cOpts == 'object')? cOpts.thash : false,
			opts  = this.options,
			into  = opts.into || 'window',
			file, url, s, w, imgW, imgH, winW, winH, reg, link, html5dl, inline,
			selAct, cmd;

		if (!cnt && !thash) {
			{
				return dfrd.reject();
			}
		}

		// open folder
		if (thash || (cnt == 1 && (file = files[0]) && file.mime == 'directory')) {
			if (!thash && file && !file.read) {
				return dfrd.reject(['errOpen', file.name, 'errPerm']);
			} else {
				if (fm.keyState.ctrlKey && (fm.keyState.shiftKey || typeof fm.options.getFileCallback !== 'function')) {
					if (fm.getCommand('opennew')) {
						return fm.exec('opennew', [thash? thash : file.hash]);
					}
				}

				return fm.request({
					data   : {cmd  : 'open', target : thash || file.hash},
					notify : {type : 'open', cnt : 1, hideCnt : true},
					syncOnFail : true,
					lazy : false
				});
			}
		}
		
		files = $.grep(files, function(file) { return file.mime != 'directory' ? true : false; });
		
		// nothing to open or files and folders selected - do nothing
		if (cnt != files.length) {
			return dfrd.reject();
		}
		
		var doOpen = function() {
			var openCB = function(url) {
					var link = $('<a rel="noopener">').hide().appendTo($('body'));
					if (fm.UA.Mobile || !inline) {
						if (html5dl) {
							if (!inline) {
								link.attr('download', file.name);
							} else {
								link.attr('target', '_blank');
							}
							link.attr('href', url).get(0).click();
						} else {
							wnd = window.open(url);
							if (!wnd) {
								return dfrd.reject('errPopup');
							}
						}
					} else {
						getOnly = (typeof opts.method === 'string' && opts.method.toLowerCase() === 'get');
						if (!getOnly
							&& url.indexOf(fm.options.url) === 0
							&& fm.customData
							&& Object.keys(fm.customData).length
							// Since playback by POST request can not be done in Chrome, media allows GET request
							&& !file.mime.match(/^(?:video|audio)/)
						) {
							// Send request as 'POST' method to hide custom data at location bar
							url = '';
						}
						if (into === 'window') {
							// set window size for image if set
							imgW = winW = Math.round(2 * screen.availWidth / 3);
							imgH = winH = Math.round(2 * screen.availHeight / 3);
							if (parseInt(file.width) && parseInt(file.height)) {
								imgW = parseInt(file.width);
								imgH = parseInt(file.height);
							} else if (file.dim) {
								s = file.dim.split('x');
								imgW = parseInt(s[0]);
								imgH = parseInt(s[1]);
							}
							if (winW >= imgW && winH >= imgH) {
								winW = imgW;
								winH = imgH;
							} else {
								if ((imgW - winW) > (imgH - winH)) {
									winH = Math.round(imgH * (winW / imgW));
								} else {
									winW = Math.round(imgW * (winH / imgH));
								}
							}
							w = 'width='+winW+',height='+winH;
							wnd = window.open(url, target, w + ',top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no');
						} else {
							if (into === 'tabs') {
								target = file.hash;
							}
							wnd = window.open('about:blank', target);
						}
						
						if (!wnd) {
							return dfrd.reject('errPopup');
						}
						
						if (url === '') {
							var form = document.createElement("form");
							form.action = fm.options.url;
							form.method = 'POST';
							form.target = target;
							form.style.display = 'none';
							var params = Object.assign({}, fm.customData, {
								cmd: 'file',
								target: file.hash,
								_t: file.ts || parseInt(+new Date()/1000)
							});
							$.each(params, function(key, val)
							{
								var input = document.createElement("input");
								input.name = key;
								input.value = val;
								form.appendChild(input);
							});
							
							document.body.appendChild(form);
							form.submit();
						} else if (into !== 'window') {
							wnd.location = url;
						}
						$(wnd).trigger('focus');
					}
					link.remove();
				},
				wnd, target, getOnly;
			
			try {
				reg = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				reg = false;
			}
	
			// open files
			html5dl  = (typeof $('<a>').get(0).download === 'string');
			cnt = files.length;
			while (cnt--) {
				target = 'elf_open_window';
				file = files[cnt];
				
				if (!file.read) {
					return dfrd.reject(['errOpen', file.name, 'errPerm']);
				}
				
				inline = (reg && file.mime.match(reg));
				fm.openUrl(file.hash, !inline, openCB);
			}
			return dfrd.resolve(hashes);
		};
		
		if (cnt > 1) {
			fm.confirm({
				title: 'openMulti',
				text : ['openMultiConfirm', cnt + ''],
				accept : {
					label : 'cmdopen',
					callback : function() { doOpen(); }
				},
				cancel : {
					label : 'btnCancel',
					callback : function() { 
						dfrd.reject();
					}
				},
				buttons : (fm.getCommand('zipdl') && fm.isCommandEnabled('zipdl', fm.cwd().hash))? [
					{
						label : 'cmddownload',
						callback : function() {
							fm.exec('download', hashes);
							dfrd.reject();
						}
					}
				] : []
			});
		} else {
			selAct = fm.storage('selectAction') || opts.selectAction;
			if (selAct) {
				$.each(selAct.split('/'), function() {
					var cmdName = this.valueOf();
					if (cmdName !== 'open' && (cmd = fm.getCommand(cmdName)) && cmd.enabled()) {
						return false;
					}
					cmd = null;
				});
				if (cmd) {
					return fm.exec(cmd.name);
				}
			}
			doOpen();
		}
		
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/opendir.js
 */

/**
 * @class  elFinder command "opendir"
 * Enter parent folder
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opendir = function() {
		this.alwaysEnabled = true;
	
	this.getstate = function() {
		var sel = this.fm.selected(),
			cnt = sel.length,
			wz;
		if (cnt !== 1) {
			return -1;
		}
		wz = this.fm.getUI('workzone');
		return wz.hasClass('elfinder-search-result')? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			dfrd  = $.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			hash, pcheck = null;

		if (!cnt || !files[0].phash) {
			return dfrd.reject();
		}

		hash = files[0].phash;
		fm.trigger('searchend', { noupdate: true });
		fm.request({
			data   : {cmd  : 'open', target : hash},
			notify : {type : 'open', cnt : 1, hideCnt : true},
			syncOnFail : false
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/opennew.js
 */

/**
 * @class  elFinder command "opennew"
 * Open folder in new window
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opennew = function() {
		var fm = this.fm;

	this.shortcuts = [{
		pattern  : (typeof(fm.options.getFileCallback) === 'function'? 'shift+' : '') + 'ctrl+enter'
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt === 1 
			? (sel[0].mime === 'directory' && sel[0].read? 0 : -1) 
			: -1;
	};
	
	this.exec = function(hashes) {
		var dfrd  = $.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			opts  = this.options,
			file, loc, url, win;

		// open folder to new tab (window)
		if (cnt === 1 && (file = files[0]) && file.mime === 'directory') {
			loc = window.location;
			if (opts.url) {
				url = opts.url;
			} else {
				url = loc.pathname;
			}
			if (opts.useOriginQuery) {
				if (!url.match(/\?/)) {
					url += loc.search;
				} else if (loc.search) {
					url += '&' + loc.search.substr(1);
				}
			}
			url += '#elf_' + file.hash;
			win = window.open(url, '_blank');
			setTimeout(function() {
				win.focus();
			}, 1000);
			return dfrd.resolve();
		} else {
			return dfrd.reject();
		}
	};
};


/*
 * File: /js/commands/paste.js
 */

/**
 * @class  elFinder command "paste"
 * Paste filesfrom clipboard into directory.
 * If files pasted in its parent directory - files duplicates will created
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.paste = function() {
		this.updateOnSelect  = false;
	
	this.handlers = {
		changeclipboard : function() { this.update(); }
	};

	this.shortcuts = [{
		pattern     : 'ctrl+v shift+insert'
	}];
	
	this.getstate = function(dst) {
		if (this._disabled) {
			return -1;
		}
		if (dst) {
			if (Array.isArray(dst)) {
				if (dst.length != 1) {
					return -1;
				}
				dst = this.fm.file(dst[0]);
			}
		} else {
			dst = this.fm.cwd();
		}

		return this.fm.clipboard().length && dst.mime == 'directory' && dst.write ? 0 : -1;
	};
	
	this.exec = function(select, cOpts) {
		var self   = this,
			fm     = self.fm,
			opts   = cOpts || {},
			dst    = select ? this.files(select)[0] : fm.cwd(),
			files  = fm.clipboard(),
			cnt    = files.length,
			cut    = cnt ? files[0].cut : false,
			cmd    = opts._cmd? opts._cmd : (cut? 'move' : 'copy'),
			error  = 'err' + cmd.charAt(0).toUpperCase() + cmd.substr(1),
			fpaste = [],
			fcopy  = [],
			dfrd   = $.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				})
				.always(function() {
					fm.unlockfiles({files : $.map(files, function(f) { return f.hash; })});
				}),
			copy  = function(files) {
				return files.length && fm._commands.duplicate
					? fm.exec('duplicate', files)
					: $.Deferred().resolve();
			},
			paste = function(files) {
				var dfrd      = $.Deferred(),
					existed   = [],
					hashes  = {},
					intersect = function(files, names) {
						var ret = [], 
							i   = files.length;

						while (i--) {
							$.inArray(files[i].name, names) !== -1 && ret.unshift(i);
						}
						return ret;
					},
					confirm   = function(ndx) {
						var i    = existed[ndx],
							file = files[i],
							last = ndx == existed.length-1;

						if (!file) {
							return;
						}

						fm.confirm({
							title  : fm.i18n(cmd + 'Files'),
							text   : ['errExists', file.name, cmd === 'restore'? 'confirmRest' : 'confirmRepl'], 
							all    : !last,
							accept : {
								label    : 'btnYes',
								callback : function(all) {
									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							reject : {
								label    : 'btnNo',
								callback : function(all) {
									var i;

									if (all) {
										i = existed.length;
										while (ndx < i--) {
											files[existed[i]].remove = true;
										}
									} else {
										files[existed[ndx]].remove = true;
									}

									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() {
									dfrd.resolve();
								}
							},
							buttons : [
								{
									label : 'btnBackup',
									callback : function(all) {
										var i;
										if (all) {
											i = existed.length;
											while (ndx < i--) {
												files[existed[i]].rename = true;
											}
										} else {
											files[existed[ndx]].rename = true;
										}
										!last && !all
											? confirm(++ndx)
											: paste(files);
									}
								}
							]
						});
					},
					valid     = function(names) {
						var exists = {}, existedArr;
						if (names) {
							if (Array.isArray(names)) {
								if (names.length) {
									if (typeof names[0] == 'string') {
										// elFinder <= 2.1.6 command `is` results
										existed = intersect(files, names);
									} else {
										$.each(names, function(i, v) {
											exists[v.name] = v.hash;
										});
										existed = intersect(files, $.map(exists, function(h, n) { return n; }));
										$.each(files, function(i, file) {
											if (exists[file.name]) {
												hashes[exists[file.name]] = file.name;
											}
										});
									}
								}
							} else {
								existedArr = [];
								existed = $.map(names, function(n) {
									if (typeof n === 'string') {
										return n;
									} else {
										// support to >=2.1.11 plugin Normalizer, Sanitizer
										existedArr = existedArr.concat(n);
										return false;
									}
								});
								if (existedArr.length) {
									existed = existed.concat(existedArr);
								}
								existed = intersect(files, existed);
								hashes = names;
							}
						}
						existed.length ? confirm(0) : paste(files);
					},
					paste     = function(selFiles) {
						var renames = [],
							files  = $.grep(selFiles, function(file) { 
								if (file.rename) {
									renames.push(file.name);
								}
								return !file.remove ? true : false;
							}),
							cnt    = files.length,
							groups = {},
							args   = [],
							targets, reqData;

						if (!cnt) {
							return dfrd.resolve();
						}

						targets = $.map(files, function(f) { return f.hash; });
						
						reqData = {cmd : 'paste', dst : dst.hash, targets : targets, cut : cut ? 1 : 0, renames : renames, hashes : hashes, suffix : fm.options.backupSuffix};
						if (fm.api < 2.1) {
							reqData.src = files[0].phash;
						}
						
						fm.request({
								data   : reqData,
								notify : {type : cmd, cnt : cnt},
								cancel : true,
								navigate : { 
									toast  : opts.noToast? {} : {
										inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd' + cmd)]), action: {
											cmd: 'open',
											msg: 'cmdopendir',
											data: [dst.hash],
											done: 'select',
											cwdNot: dst.hash
										}}
									}
								}
							})
							.done(function(data) {
								var dsts = {},
									added = data.added && data.added.length? data.added : null;
								if (cut && added) {
									// undo/redo
									$.each(files, function(i, f) {
										var phash = f.phash,
											srcHash = function(name) {
												var hash;
												$.each(added, function(i, f) {
													if (f.name === name) {
														hash = f.hash;
														return false;
													}
												});
												return hash;
											},
											shash = srcHash(f.name);
										if (shash) {
											if (dsts[phash]) {
												dsts[phash].push(shash);
											} else {
												dsts[phash] = [ shash ];
											}
										}
									});
									if (Object.keys(dsts).length) {
										data.undo = {
											cmd : 'move',
											callback : function() {
												var reqs = [];
												$.each(dsts, function(dst, targets) {
													reqs.push(fm.request({
														data : {cmd : 'paste', dst : dst, targets : targets, cut : 1},
														notify : {type : 'undo', cnt : targets.length}
													}));
												});
												return $.when.apply(null, reqs);
											}
										};
										data.redo = {
											cmd : 'move',
											callback : function() {
												return fm.request({
													data : reqData,
													notify : {type : 'redo', cnt : cnt}
												});
											}
										};
									}
								}
								dfrd.resolve(data);
							})
							.fail(function(flg) {
								dfrd.reject();
								if (flg === 0) {
									// canceling
									fm.sync();
								}
							})
							.always(function() {
								fm.unlockfiles({files : files});
							});
					},
					internames;

				if (!fm.isCommandEnabled(self.name, dst.hash) || !files.length) {
					return dfrd.resolve();
				}
				
				if (fm.oldAPI) {
					paste(files);
				} else {
					
					if (!fm.option('copyOverwrite', dst.hash)) {
						paste(files);
					} else {
						internames = $.map(files, function(f) { return f.name; });
						dst.hash == fm.cwd().hash
							? valid($.map(fm.files(), function(file) { return file.phash == dst.hash ? {hash: file.hash, name: file.name} : null; }))
							: fm.request({
								data : {cmd : 'ls', target : dst.hash, intersect : internames},
								notify : {type : 'prepare', cnt : 1, hideCnt : true},
								preventFail : true
							})
							.always(function(data) {
								valid(data.list);
							});
					}
				}
				
				return dfrd;
			},
			parents, fparents, cutDfrd;


		if (!cnt || !dst || dst.mime != 'directory') {
			return dfrd.reject();
		}
			
		if (!dst.write)	{
			return dfrd.reject([error, files[0].name, 'errPerm']);
		}
		
		parents = fm.parents(dst.hash);
		
		$.each(files, function(i, file) {
			if (!file.read) {
				return !dfrd.reject([error, file.name, 'errPerm']);
			}
			
			if (cut && file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
			
			if ($.inArray(file.hash, parents) !== -1) {
				return !dfrd.reject(['errCopyInItself', file.name]);
			}
			
			if (file.mime && file.mime !== 'directory' && ! fm.uploadMimeCheck(file.mime, dst.hash)) {
				return !dfrd.reject([error, file.name, 'errUploadMime']);
			}
			
			fparents = fm.parents(file.hash);
			fparents.pop();
			if ($.inArray(dst.hash, fparents) !== -1) {
				
				if ($.grep(fparents, function(h) { var d = fm.file(h); return d.phash == dst.hash && d.name == file.name ? true : false; }).length) {
					return !dfrd.reject(['errReplByChild', file.name]);
				}
			}
			
			if (file.phash == dst.hash) {
				fcopy.push(file.hash);
			} else {
				fpaste.push({
					hash  : file.hash,
					phash : file.phash,
					name  : file.name
				});
			}
		});

		if (dfrd.state() === 'rejected') {
			return dfrd;
		}

		cutDfrd = $.Deferred();
		if (cut && self.options.moveConfirm) {
			fm.confirm({
				title  : 'moveFiles',
				text   : fm.i18n('confirmMove', dst.i18 || dst.name),
				accept : {
					label    : 'btnYes',
					callback : function() {  
						cutDfrd.resolve();
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() {
						cutDfrd.reject();
					}
				}
			});
		} else {
			cutDfrd.resolve();
		}

		cutDfrd.done(function() {
			$.when(
				copy(fcopy),
				paste(fpaste)
			)
			.done(function(cr, pr) {
				dfrd.resolve(pr && pr.undo? pr : void(0));
			})
			.fail(function() {
				dfrd.reject();
			})
			.always(function() {
				cut && fm.clipboard([]);
			});
		}).fail(function() {
			dfrd.reject();
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/places.js
 */

/**
 * @class  elFinder command "places"
 * Regist to Places
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.places = function() {
		var self   = this,
	fm     = this.fm,
	filter = function(hashes) {
		var fres = true;
		return $.grep(self.files(hashes), function(f) {
			fres = fres && f.mime == 'directory' ? true : false;
			return fres;
		});
	},
	places = null;
	
	this.getstate = function(select) {
		var sel = this.hashes(select),
		cnt = sel.length;
		
		return  places && cnt && cnt == filter(sel).length ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var files = this.files(hashes);
		places.trigger('regist', [ files ]);
		return $.Deferred().resolve();
	};
	
	fm.one('load', function(){
		places = fm.ui.places;
	});

};


/*
 * File: /js/commands/preference.js
 */

/**
 * @class  elFinder command "preference"
 * "Preference" dialog
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.preference = function() {
	var self    = this,
		fm      = this.fm,
		r       = 'replace',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-preference-tab-{id}"><a href="#'+fm.namespace+'-preference-{id}" id="'+fm.namespace+'-preference-tab-{id}" class="ui-tabs-anchor {class}">{title}</a></li>',
		base    = $('<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-preference">'), 
		ul      = $('<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'),
		tabs    = $('<div class="elfinder-preference-tabs ui-tabs-panel ui-widget-content ui-corner-bottom"></div>'),
		sep     = '<div class="elfinder-preference-separator"></div>',
		selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '',
		selectTab = function(tab) {
			$('#'+fm.namespace+'-preference-tab-'+tab).trigger('mouseover').trigger('click');
			openTab = tab;
		},
		clTabActive = fm.res('class', 'tabsactive'),
		build   = function() {
			var cats = self.options.categories || {
					'language' : ['language'],
					'theme' : ['theme'],
					'toolbar' : ['toolbarPref'],
					'workspace' : ['iconSize','columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden'],
					'dialog' : ['autoFocusDialog'],
					'selectionInfo' : ['infoItems', 'hashChecker'],
					'reset' : ['clearBrowserData'],
					'all' : true
				},
				forms = self.options.prefs || ['language', 'theme', 'toolbarPref', 'iconSize', 'columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden', 'infoItems', 'hashChecker', 'autoFocusDialog', 'clearBrowserData'];
			
			if (!fm.cookieEnabled) {
				delete cats.language;
			}

			forms = fm.arrayFlip(forms, true);
			
			if (fm.options.getFileCallback) {
				delete forms.selectAction;
			}
			if (!fm.UA.Fullscreen) {
				delete forms.useFullscreen;
			}

			forms.language && (forms.language = (function() {
				var langSel = $('<select></select>').on('change', function() {
						var lang = $(this).val();
						fm.storage('lang', lang);
						$('#'+fm.id).elfinder('reload');
					}),
					optTags = [],
					langs = self.options.langs || {
						ar: 'Ø§Ù„Ø¹Ø±Ø¨ÙŠØ©',
						bg: 'Ð‘ÑŠÐ»Ð³Ð°Ñ€Ñ�ÐºÐ¸',
						ca: 'CatalÃ ',
						cs: 'ÄŒeÅ¡tina',
						da: 'Dansk',
						de: 'Deutsch',
						el: 'Î•Î»Î»Î·Î½Î¹ÎºÎ¬',
						en: 'English',
						es: 'EspaÃ±ol',
						fa: 'Ù�Ø§Ø±Ø³ÛŒ',
						fo: 'FÃ¸royskt',
						fr: 'FranÃ§ais',
						fr_CA: 'FranÃ§ais (Canada)',
						he: '×¢×‘×¨×™×ª',
						hr: 'Hrvatski',
						hu: 'Magyar',
						id: 'Bahasa Indonesia',
						it: 'Italiano',
						ja: 'æ—¥æœ¬èªž',
						ko: 'í•œêµ­ì–´',
						nl: 'Nederlands',
						no: 'Norsk',
						pl: 'Polski',
						pt_BR: 'PortuguÃªs',
						ro: 'RomÃ¢nÄƒ',
						ru: 'PÑƒÑ�Ñ�ÐºÐ¸Ð¹',
						si: 'à·ƒà·’à¶‚à·„à¶½',
						sk: 'SlovenÄ�ina',
						sl: 'SlovenÅ¡Ä�ina',
						sr: 'Srpski',
						sv: 'Svenska',
						tr: 'TÃ¼rkÃ§e',
						ug_CN: 'Ø¦Û‡ÙŠØºÛ‡Ø±Ú†Û•',
						uk: 'Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ¸Ð¹',
						vi: 'Tiáº¿ng Viá»‡t',
						zh_CN: 'ç®€ä½“ä¸­æ–‡',
						zh_TW: 'æ­£é«”ä¸­æ–‡'
					};
				if (!fm.cookieEnabled) {
					return $();
				}
				$.each(langs, function(lang, name) {
					optTags.push('<option value="'+lang+'">'+name+'</option>');
				});
				return langSel.append(optTags.join('')).val(fm.lang);
			})());
			
			forms.theme && (forms.theme = (function() {
				var cnt = fm.options.themes? Object.keys(fm.options.themes).length : 0;
				if (cnt === 0 || (cnt === 1 && fm.options.themes.default)) {
					return null;
				}
				var themeSel = $('<select></select>').on('change', function() {
						var theme = $(this).val();
						fm.changeTheme(theme).storage('theme', theme);
					}),
					optTags = [],
					tpl = {
						image: '<img class="elfinder-preference-theme elfinder-preference-theme-image" src="$2" />',
						link: '<a href="$1" target="_blank" title="$3">$2</a>',
						data: '<dt>$1</dt><dd><span class="elfinder-preference-theme elfinder-preference-theme-$0">$2</span></dd>'
					},
					items = ['image', 'description', 'author', 'email', 'license'],
					render = function(key, data) {
					},
					defBtn = $('<button class="ui-button ui-corner-all ui-widget elfinder-preference-theme-default"></button>').text(fm.i18n('default')).on('click', function(e) {
						themeSel.val('default').trigger('change');
					}),
					list = $('<div class="elfinder-reference-hide-taball"></div>').on('click', 'button', function() {
							var val = $(this).data('themeid');
							themeSel.val(val).trigger('change');
					});

				if (!fm.options.themes.default) {
					themeSel.append('<option value="default">'+fm.i18n('default')+'</option>');
				}
				$.each(fm.options.themes, function(id, val) {
					var opt = $('<option class="elfinder-theme-option-'+id+'" value="'+id+'">'+fm.i18n(id)+'</option>'),
						dsc = $('<fieldset class="ui-widget ui-widget-content ui-corner-all elfinder-theme-list-'+id+'"><legend>'+fm.i18n(id)+'</legend><div><span class="elfinder-spinner"></span></div></fieldset>'),
						tm;
					themeSel.append(opt);
					list.append(dsc);
					tm = setTimeout(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					}, 10000);
					fm.getTheme(id).always(function() {
						tm && clearTimeout(tm);
					}).done(function(data) {
						var link, val = $(), dl = $('<dl></dl>');
						link = data.link? tpl.link.replace(/\$1/g, data.link).replace(/\$3/g, fm.i18n('website')) : '$2';
						if (data.name) {
							opt.html(fm.i18n(data.name));
						}
						dsc.children('legend').html(link.replace(/\$2/g, fm.i18n(data.name) || id));
						$.each(items, function(i, key) {
							var t = tpl[key] || tpl.data,
								elm;
							if (data[key]) {
								elm = t.replace(/\$0/g, fm.escape(key)).replace(/\$1/g, fm.i18n(key)).replace(/\$2/g, fm.i18n(data[key]));
								if (key === 'image' && data.link) {
									elm = $(elm).on('click', function() {
										themeSel.val(id).trigger('change');
									}).attr('title', fm.i18n('select'));
								}
								dl.append(elm);
							}
						});
						val = val.add(dl);
						val = val.add($('<div class="elfinder-preference-theme-btn"></div>').append($('<button class="ui-button ui-corner-all ui-widget"></button>').data('themeid', id).html(fm.i18n('select'))));
						dsc.find('span.elfinder-spinner').replaceWith(val);
					}).fail(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					});
				});
				return $('<div></div>').append(themeSel.val(fm.theme && fm.theme.id? fm.theme.id : 'default'), defBtn, list);
			})());

			forms.toolbarPref && (forms.toolbarPref = (function() {
				var pnls = $.map(fm.options.uiOptions.toolbar, function(v) {
						return $.isArray(v)? v : null;
					}),
					tags = [],
					hides = fm.storage('toolbarhides') || {};
				$.each(pnls, function() {
					var cmd = this,
						name = fm.i18n('cmd'+cmd);
					if (name === 'cmd'+cmd) {
						name = fm.i18n(cmd);
					}
					tags.push('<span class="elfinder-preference-toolbar-item"><label><input type="checkbox" value="'+cmd+'" '+(hides[cmd]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return $(tags.join(' ')).on('change', 'input', function() {
					var v = $(this).val(),
						o = $(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('toolbarhides', hides);
					fm.trigger('toolbarpref');
				});
			})());
			
			forms.iconSize && (forms.iconSize = (function() {
				var max = fm.options.uiOptions.cwd.iconsView.sizeMax || 3,
					size = fm.storage('iconsize') || fm.options.uiOptions.cwd.iconsView.size || 0,
					sld = $('<div class="touch-punch"></div>').slider({
						classes: {
							'ui-slider-handle': 'elfinder-tabstop',
						},
						value: size,
						max: max,
						slide: function(e, ui) {
							fm.getUI('cwd').trigger('iconpref', {size: ui.value});
						},
						change: function(e, ui) {
							fm.storage('iconsize', ui.value);
						}
					});
				fm.getUI('cwd').on('iconpref', function(e, data) {
					sld.slider('option', 'value', data.size);
				});
				return sld;
			})());

			forms.columnPref && (forms.columnPref = (function() {
				var cols = fm.options.uiOptions.cwd.listView.columns,
					tags = [],
					hides = fm.storage('columnhides') || {};
				$.each(cols, function() {
					var key = this,
						name = fm.getColumnName(key);
					tags.push('<span class="elfinder-preference-column-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return $(tags.join(' ')).on('change', 'input', function() {
					var v = $(this).val(),
						o = $(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('columnhides', hides);
					fm.trigger('columnpref', { repaint: true });
				});
			})());
			
			forms.selectAction && (forms.selectAction = (function() {
				var actSel = $('<select></select>').on('change', function() {
						var act = $(this).val();
						fm.storage('selectAction', act === 'default'? null : act);
					}),
					optTags = [],
					acts = self.options.selectActions,
					defAct = fm.getCommand('open').options.selectAction || 'open';
				
				if ($.inArray(defAct, acts) === -1) {
					acts.unshift(defAct);
				}
				$.each(acts, function(i, act) {
					var names = $.map(act.split('/'), function(cmd) {
						var name = fm.i18n('cmd'+cmd);
						if (name === 'cmd'+cmd) {
							name = fm.i18n(cmd);
						}
						return name;
					});
					optTags.push('<option value="'+act+'">'+names.join('/')+'</option>');
				});
				return actSel.append(optTags.join('')).val(fm.storage('selectAction') || defAct);
			})());
			
			forms.makefileTypes && (forms.makefileTypes = (function() {
				var hides = fm.getCommand('edit').getMkfileHides(),
					getTag = function() {
						var tags = [];
						// re-assign hides
						hides = fm.getCommand('edit').getMkfileHides();
						$.each(fm.mimesCanMakeEmpty, function(mime, type) {
							var name = fm.getCommand('mkfile').getTypeName(mime, type);
							tags.push('<span class="elfinder-preference-column-item" title="'+fm.escape(name)+'"><label><input type="checkbox" value="'+mime+'" '+(hides[mime]? '' : 'checked')+'/>'+type+'</label></span>');
						});
						return tags.join(' ');
					},
					elm = $('<div></div>').on('change', 'input', function() {
						var v = $(this).val(),
							o = $(this).is(':checked');
						if (!o && !hides[v]) {
							hides[v] = true;
						} else if (o && hides[v]) {
							delete hides[v];
						}
						fm.storage('mkfileHides', hides);
						fm.trigger('canMakeEmptyFile');
					}).append(getTag()),
					add = $('<div></div>').append(
						$('<input type="text" placeholder="'+fm.i18n('typeOfTextfile')+'"/>').on('keydown', function(e) {
							(e.keyCode === $.ui.keyCode.ENTER) && $(this).next().trigger('click');
						}),
						$('<button class="ui-button"></button>').html(fm.i18n('add')).on('click', function() {
							var input = $(this).prev(),
								val = input.val(),
								uiToast = fm.getUI('toast'),
								err = function() {
									uiToast.appendTo(input.closest('.ui-dialog'));
									fm.toast({
										msg: fm.i18n('errUsupportType'),
										mode: 'warning',
										onHidden: function() {
											uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
										}
									});
									input.trigger('focus');
									return false;
								},
								tmpMimes;
							if (!val.match(/\//)) {
								val = fm.arrayFlip(fm.mimeTypes)[val];
								if (!val) {
									return err();
								}
								input.val(val);
							}
							if (!fm.mimeIsText(val) || !fm.mimeTypes[val]) {
								return err();
							}
							fm.trigger('canMakeEmptyFile', {mimes: [val], unshift: true});
							tmpMimes = {};
							tmpMimes[val] = fm.mimeTypes[val];
							fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
							input.val('');
							uiToast.appendTo(input.closest('.ui-dialog'));
							fm.toast({
								msg: fm.i18n(['complete', val + ' (' + tmpMimes[val] + ')']),
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								}
							});
						}),
						$('<button class="ui-button"></button>').html(fm.i18n('reset')).on('click', function() {
							fm.one('canMakeEmptyFile', {done: function() {
								elm.empty().append(getTag());
							}});
							fm.trigger('canMakeEmptyFile', {resetTexts: true});
						})
					),
					tm;
				fm.bind('canMakeEmptyFile', {done: function(e) {
					if (e.data && e.data.mimes && e.data.mimes.length) {
						elm.empty().append(getTag());
					}
				}});
				return $('<div></div>').append(elm, add);
			})());

			forms.useStoredEditor && (forms.useStoredEditor = $('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('useStoredEditor');
				return s? (s > 0) : fm.options.commandsOptions.edit.useStoredEditor;
			})()).on('change', function(e) {
				fm.storage('useStoredEditor', $(this).is(':checked')? 1 : -1);
			}));

			forms.editorMaximized && (forms.editorMaximized = $('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('editorMaximized');
				return s? (s > 0) : fm.options.commandsOptions.edit.editorMaximized;
			})()).on('change', function(e) {
				fm.storage('editorMaximized', $(this).is(':checked')? 1 : -1);
			}));

			forms.useFullscreen && (forms.useFullscreen = $('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('useFullscreen');
				return s? (s > 0) : fm.options.commandsOptions.fullscreen.mode === 'screen';
			})()).on('change', function(e) {
				fm.storage('useFullscreen', $(this).is(':checked')? 1 : -1);
			}));

			if (forms.showHidden) {
				(function() {
					var setTitle = function() {
							var s = fm.storage('hide'),
								t = [],
								v;
							if (s && s.items) {
								$.each(s.items, function(h, n) {
									t.push(fm.escape(n));
								});
							}
							elms.prop('disabled', !t.length)[t.length? 'removeClass' : 'addClass']('ui-state-disabled');
							v = t.length? t.join('\n') : '';
							forms.showHidden.attr('title',v);
							useTooltip && forms.showHidden.tooltip('option', 'content', v.replace(/\n/g, '<br>')).tooltip('close');
						},
						chk = $('<input type="checkbox"/>').prop('checked', (function() {
							var s = fm.storage('hide');
							return s && s.show;
						})()).on('change', function(e) {
							var o = {};
							o[$(this).is(':checked')? 'show' : 'hide'] = true;
							fm.exec('hide', void(0), o);
						}),
						btn = $('<button class="ui-button ui-corner-all ui-widget"></button>').append(fm.i18n('reset')).on('click', function() {
							fm.exec('hide', void(0), {reset: true});
							$(this).parent().find('input:first').prop('checked', false);
							setTitle();
						}),
						elms = $().add(chk).add(btn),
						useTooltip;
					
					forms.showHidden = $('<div></div>').append(chk, btn);
					fm.bind('hide', function(e) {
						var d = e.data;
						if (!d.opts || (!d.opts.show && !d.opts.hide)) {
							setTitle();
						}
					});
					if (fm.UA.Mobile && $.fn.tooltip) {
						useTooltip = true;
						forms.showHidden.tooltip({
							classes: {
								'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
							},
							tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
							track: true
						}).css('user-select', 'none');
						btn.css('user-select', 'none');
					}
					setTitle();
				})();
			}
			
			forms.infoItems && (forms.infoItems = (function() {
				var items = fm.getCommand('info').items,
					tags = [],
					hides = fm.storage('infohides') || fm.arrayFlip(fm.options.commandsOptions.info.hideItems, true);
				$.each(items, function() {
					var key = this,
						name = fm.i18n(key);
					tags.push('<span class="elfinder-preference-info-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return $(tags.join(' ')).on('change', 'input', function() {
					var v = $(this).val(),
						o = $(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('infohides', hides);
					fm.trigger('infopref', { repaint: true });
				});
			})());
			
			forms.hashChecker && fm.hashCheckers.length && (forms.hashChecker = (function() {
				var tags = [],
					enabled = fm.arrayFlip(fm.storage('hashchekcer') || fm.options.commandsOptions.info.showHashAlgorisms, true);
				$.each(fm.hashCheckers, function() {
					var cmd = this,
						name = fm.i18n(cmd);
					tags.push('<span class="elfinder-preference-hashchecker-item"><label><input type="checkbox" value="'+cmd+'" '+(enabled[cmd]? 'checked' : '')+'/>'+name+'</label></span>');
				});
				return $(tags.join(' ')).on('change', 'input', function() {
					var v = $(this).val(),
						o = $(this).is(':checked');
					if (o) {
						enabled[v] = true;
					} else if (enabled[v]) {
						delete enabled[v];
					}
					fm.storage('hashchekcer', $.grep(fm.hashCheckers, function(v) {
						return enabled[v];
					}));
				});
			})());

			forms.autoFocusDialog && (forms.autoFocusDialog = $('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('autoFocusDialog');
				return s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver;
			})()).on('change', function(e) {
				fm.storage('autoFocusDialog', $(this).is(':checked')? 1 : -1);
			}));
			
			forms.clearBrowserData && (forms.clearBrowserData = $('<button></button>').text(fm.i18n('reset')).button().on('click', function(e) {
				e.preventDefault();
				fm.storage();
				$('#'+fm.id).elfinder('reload');
			}));
			
			$.each(cats, function(id, prefs) {
				var dls, found;
				if (prefs === true) {
					found = 1;
				} else if (prefs) {
					dls = $();
					$.each(prefs, function(i, n) {
						var f, title, chks = '', cbox;
						if (f = forms[n]) {
							found = 2;
							title = fm.i18n(n);
							cbox = $(f).filter('input[type="checkbox"]');
							if (!cbox.length) {
								cbox = $(f).find('input[type="checkbox"]');
							}
							if (cbox.length === 1) {
								if (!cbox.attr('id')) {
									cbox.attr('id', 'elfinder-preference-'+n+'-checkbox');
								}
								title = '<label for="'+cbox.attr('id')+'">'+title+'</label>';
							} else if (cbox.length > 1) {
								chks = ' elfinder-preference-checkboxes';
							}
							dls = dls.add($('<dt class="elfinder-preference-'+n+chks+'">'+title+'</dt>')).add($('<dd class="elfinder-preference-'+n+chks+'"></dd>').append(f));
						}
					});
				}
				if (found) {
					ul.append(tab[r](/\{id\}/g, id)[r](/\{title\}/, fm.i18n(id))[r](/\{class\}/, openTab === id? 'elfinder-focus' : ''));
					if (found === 2) {
						tabs.append(
							$('<div id="'+fm.namespace+'-preference-'+id+'" class="elfinder-preference-content"></div>')
							.hide()
							.append($('<dl></dl>').append(dls))
						);
					}
				}
			});

			ul.on('click', 'a', function(e) {
				var t = $(e.target),
					h = t.attr('href');
				e.preventDefault();
				e.stopPropagation();

				ul.children().removeClass(clTabActive);
				t.removeClass('ui-state-hover').parent().addClass(clTabActive);

				if (h.match(/all$/)) {
					tabs.addClass('elfinder-preference-taball').children().show();
				} else {
					tabs.removeClass('elfinder-preference-taball').children().hide();
					$(h).show();
				}
			}).on('focus blur', 'a', function(e) {
				$(this).parent().toggleClass('ui-state-focus', e.type === 'focusin');
			}).on('mouseenter mouseleave', 'li', function(e) {
				$(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			});

			tabs.find('a,input,select,button').addClass('elfinder-tabstop');
			base.append(ul, tabs);

			dialog = self.fmDialog(base, {
				title : self.title,
				width : self.options.width || 600,
				height: self.options.height || 400,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				allowMinimize : false,
				open : function() {
					openTab && selectTab(openTab);
					openTab = null;
				},
				resize : function() {
					tabs.height(dialog.height() - ul.outerHeight(true) - (tabs.outerHeight(true) - tabs.height()) - 5);
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});

			dialog.closest('.ui-dialog')
			.css({
				overflow: 'hidden'
			})
			.addClass('elfinder-bg-translucent');
			
			openTab = 'all';
		},
		dialog, openTab;

	this.shortcuts = [{
		pattern     : 'ctrl+comma',
		description : this.title
	}];

	this.alwaysEnabled  = true;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, cOpts) {
		!dialog && build();
		if (cOpts) {
			if (cOpts.tab) {
				selectTab(cOpts.tab);
			} else if (cOpts._currentType === 'cwd') {
				selectTab('workspace');
			}
		}
		dialog.elfinderdialog('open');
		return $.Deferred().resolve();
	};

};

/*
 * File: /js/commands/quicklook.js
 */

/**
 * @class  elFinder command "quicklook"
 * Fast preview for some files types
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.quicklook = function() {
		var self       = this,
		fm         = self.fm,
		/**
		 * window closed state
		 *
		 * @type Number
		 **/
		closed     = 0,
		/**
		 * window animated state
		 *
		 * @type Number
		 **/
		animated   = 1,
		/**
		 * window opened state
		 *
		 * @type Number
		 **/
		opened     = 2,
		/**
		 * window docked state
		 *
		 * @type Number
		 **/
		docked     = 3,
		/**
		 * window docked and hidden state
		 *
		 * @type Number
		 **/
		dockedhidden = 4,
		/**
		 * window state
		 *
		 * @type Number
		 **/
		state      = closed,
		/**
		 * Event name of update
		 * for fix conflicts with Prototype.JS
		 * 
		 * `@see https://github.com/Studio-42/elFinder/pull/2346
		 * @type String
		 **/
		evUpdate = Element.update? 'quicklookupdate' : 'update',
		/**
		 * navbar icon class
		 *
		 * @type String
		 **/
		navicon    = 'elfinder-quicklook-navbar-icon',
		/**
		 * navbar "fullscreen" icon class
		 *
		 * @type String
		 **/
		fullscreen = 'elfinder-quicklook-fullscreen',
		/**
		 * info wrapper class
		 * 
		 * @type String
		 */
		infocls    = 'elfinder-quicklook-info-wrapper',
		/**
		 * Triger keydown/keypress event with left/right arrow key code
		 *
		 * @param  Number  left/right arrow key code
		 * @return void
		 **/
		navtrigger = function(code) {
			$(document).trigger($.Event('keydown', { keyCode: code, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
		},
		/**
		 * Return css for closed window
		 *
		 * @param  jQuery  file node in cwd
		 * @return void
		 **/
		closedCss = function(node) {
			var elf = fm.getUI().offset(),
				base = (function() {
					var target = node.find('.elfinder-cwd-file-wrapper');
					return target.length? target : node;
				})(),
				baseOffset = base.offset() || { top: 0, left: 0 };
			return {
				opacity : 0,
				width   : base.width(),
				height  : base.height() - 30,
				top     : baseOffset.top - elf.top,
				left    : baseOffset.left  - elf.left
			};
		},
		/**
		 * Return css for opened window
		 *
		 * @return void
		 **/
		openedCss = function() {
			var contain = self.options.contain || fm.options.dialogContained,
				win = contain? fm.getUI() : $(window),
				elf = fm.getUI().offset(),
				w = Math.min(width, win.width()-10),
				h = Math.min(height, win.height()-80);
			return {
				opacity : 1,
				width  : w,
				height : h,
				top    : parseInt((win.height() - h - 60) / 2 + (contain? 0 : win.scrollTop() - elf.top)),
				left   : parseInt((win.width() - w) / 2 + (contain? 0 : win.scrollLeft() - elf.left))
			};
		},
		
		mediaNode = {},
		support = function(codec, name) {
			var node  = name || codec.substr(0, codec.indexOf('/')),
				media = mediaNode[node]? mediaNode[node] : (mediaNode[node] = document.createElement(node)),
				value = false;
			
			try {
				value = media.canPlayType && media.canPlayType(codec);
			} catch(e) {}
			
			return (value && value !== '' && value != 'no')? true : false;
		},
		
		platformWin = (window.navigator.platform.indexOf('Win') != -1),
		
		/**
		 * Opened window width (from config)
		 *
		 * @type Number
		 **/
		width, 
		/**
		 * Opened window height (from config)
		 *
		 * @type Number
		 **/
		height, 
		/**
		 * Previous style before docked
		 *
		 * @type String
		 **/
		prevStyle,
		/**
		 * elFinder node
		 *
		 * @type jQuery
		 **/
		parent, 
		/**
		 * elFinder current directory node
		 *
		 * @type jQuery
		 **/
		cwd, 
		/**
		 * Current directory hash
		 *
		 * @type String
		 **/
		cwdHash,
		dockEnabled = false,
		navdrag = false,
		navmove = false,
		navtm   = null,
		leftKey = $.ui.keyCode.LEFT,
		rightKey = $.ui.keyCode.RIGHT,
		coverEv = 'mousemove touchstart ' + ('onwheel' in document? 'wheel' : 'onmousewheel' in document? 'mousewheel' : 'DOMMouseScroll'),
		title   = $('<span class="elfinder-dialog-title elfinder-quicklook-title"></span>'),
		icon    = $('<div></div>'),
		info    = $('<div class="elfinder-quicklook-info"></div>'),//.hide(),
		cover   = $('<div class="ui-front elfinder-quicklook-cover"></div>'),
		fsicon  = $('<div class="'+navicon+' '+navicon+'-fullscreen"></div>')
			.on('click touchstart', function(e) {
				if (navmove) {
					return;
				}
				
				var win     = self.window,
					full    = win.hasClass(fullscreen),
					$window = $(window),
					resize  = function() { self.preview.trigger('changesize'); };
					
				e.stopPropagation();
				e.preventDefault();
				
				if (full) {
					navStyle = '';
					navShow();
					win.toggleClass(fullscreen)
					.css(win.data('position'));
					$window.trigger(self.resize).off(self.resize, resize);
					navbar.off('mouseenter mouseleave');
					cover.off(coverEv);
				} else {
					win.toggleClass(fullscreen)
					.data('position', {
						left   : win.css('left'), 
						top    : win.css('top'), 
						width  : win.width(), 
						height : win.height(),
						display: 'block'
					})
					.removeAttr('style');

					$(window).on(self.resize, resize)
					.trigger(self.resize);

					cover.on(coverEv, function(e) {
						if (! navdrag) {
							if (e.type === 'mousemove' || e.type === 'touchstart') {
								navShow();
								navtm = setTimeout(function() {
									if (fm.UA.Mobile || navbar.parent().find('.elfinder-quicklook-navbar:hover').length < 1) {
										navbar.fadeOut('slow', function() {
											cover.show();
										});
									}
								}, 3000);
							}
							if (cover.is(':visible')) {
								coverHide();
								cover.data('tm', setTimeout(function() {
									cover.show();
								}, 3000));
							}
						}
					}).show().trigger('mousemove');
					
					navbar.on('mouseenter mouseleave', function(e) {
						if (! navdrag) {
							if (e.type === 'mouseenter') {
								navShow();
							} else {
								cover.trigger('mousemove');
							}
						}
					});
				}
				if (fm.zIndex) {
					win.css('z-index', fm.zIndex + 1);
				}
				if (fm.UA.Mobile) {
					navbar.attr('style', navStyle);
				} else {
					navbar.attr('style', navStyle).draggable(full ? 'destroy' : {
						start: function() {
							navdrag = true;
							navmove = true;
							cover.show();
							navShow();
						},
						stop: function() {
							navdrag = false;
							navStyle = self.navbar.attr('style');
							requestAnimationFrame(function() {
								navmove = false;
							});
						}
					});
				}
				$(this).toggleClass(navicon+'-fullscreen-off');
				var collection = win;
				if (parent.is('.ui-resizable')) {
					collection = collection.add(parent);
				}
				collection.resizable(full ? 'enable' : 'disable').removeClass('ui-state-disabled');

				win.trigger('viewchange');
			}
		),
		
		updateOnSel = function() {
			self.update(void(0), (function() {
				var fm = self.fm,
					files = fm.selectedFiles(),
					cnt = files.length,
					inDock = self.docked(),
					getInfo = function() {
						var ts = 0;
						$.each(files, function(i, f) {
							var t = parseInt(f.ts);
							if (ts >= 0) {
								if (t > ts) {
									ts = t;
								}
							} else {
								ts = 'unknown';
							}
						});
						return {
							hash : files[0].hash  + '/' + (+new Date()),
							name : fm.i18n('items') + ': ' + cnt,
							mime : 'group',
							size : spinner,
							ts   : ts,
							files : $.map(files, function(f) { return f.hash; }),
							getSize : true
						};
					};
				if (! cnt) {
					cnt = 1;
					files = [fm.cwd()];
				}
				return (cnt === 1)? files[0] : getInfo();
			})());
		},
		
		navShow = function() {
			if (self.window.hasClass(fullscreen)) {
				navtm && clearTimeout(navtm);
				navtm = null;
				// if use `show()` it make infinite loop with old jQuery (jQuery/jQuery UI: 1.8.0/1.9.0)
				// see #1478 https://github.com/Studio-42/elFinder/issues/1478
				navbar.stop(true, true).css('display', 'block');
				coverHide();
			}
		},
		
		coverHide = function() {
			cover.data('tm') && clearTimeout(cover.data('tm'));
			cover.removeData('tm');
			cover.hide();
		},
			
		prev = $('<div class="'+navicon+' '+navicon+'-prev"></div>').on('click touchstart', function(e) { ! navmove && navtrigger(leftKey); return false; }),
		next = $('<div class="'+navicon+' '+navicon+'-next"></div>').on('click touchstart', function(e) { ! navmove && navtrigger(rightKey); return false; }),
		navbar  = $('<div class="elfinder-quicklook-navbar"></div>')
			.append(prev)
			.append(fsicon)
			.append(next)
			.append('<div class="elfinder-quicklook-navbar-separator"></div>')
			.append($('<div class="'+navicon+' '+navicon+'-close"></div>').on('click touchstart', function(e) { ! navmove && self.window.trigger('close'); return false; }))
		,
		titleClose = $('<span class="ui-front ui-icon elfinder-icon-close ui-icon-closethick"></span>').on('mousedown', function(e) {
			e.stopPropagation();
			self.window.trigger('close');
		}),
		titleDock = $('<span class="ui-front ui-icon elfinder-icon-minimize ui-icon-minusthick"></span>').on('mousedown', function(e) {
			e.stopPropagation();
			if (! self.docked()) {
				self.window.trigger('navdockin');
			} else {
				self.window.trigger('navdockout');
			}
		}),
		spinner = '<span class="elfinder-spinner-text">' + fm.i18n('calc') + '</span>' + '<span class="elfinder-spinner"></span>',
		navStyle = '',
		init = true,
		dockHeight,	getSize, tm4cwd, dockedNode, selectTm;

	/**
	 * Any flags for each plugin
	 */
	this.flags = {};
	
	this.cover = cover;
	this.evUpdate = evUpdate;
	(this.navbar = navbar)._show = navShow;
	this.resize = 'resize.'+fm.namespace;
	this.info = $('<div></div>').addClass(infocls)
		.append(icon)
		.append(info);
	this.autoPlay = function() {
		if (self.opened()) {
			return !! self.options[self.docked()? 'dockAutoplay' : 'autoplay'];
		}
		return false;
	};
	this.preview = $('<div class="elfinder-quicklook-preview ui-helper-clearfix"></div>')
		// clean info/icon
		.on('change', function() {
			navShow();
			navbar.attr('style', navStyle);
			self.docked() && navbar.hide();
			self.preview.attr('style', '').removeClass('elfinder-overflow-auto');
			self.info.attr('style', '').hide();
			self.cover.removeClass('elfinder-quicklook-coverbg');
			icon.removeAttr('class').attr('style', '');
			info.html('');
		})
		// update info/icon
		.on(evUpdate, function(e) {
			var preview = self.preview,
				file    = e.file,
				tpl     = '<div class="elfinder-quicklook-info-data">{value}</div>',
				update  = function() {
					var win = self.window.css('overflow', 'hidden');
					name = fm.escape(file.i18 || file.name);
					!file.read && e.stopImmediatePropagation();
					self.window.data('hash', file.hash);
					self.preview.off('changesize').trigger('change').children().remove();
					title.html(name);
					
					prev.css('visibility', '');
					next.css('visibility', '');
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:not(.elfinder-cwd-parent):first').attr('id'))) {
						prev.css('visibility', 'hidden');
					}
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:last').attr('id'))) {
						next.css('visibility', 'hidden');
					}
					
					if (file.mime === 'directory') {
						getSizeHashes = [ file.hash ];
					} else if (file.mime === 'group' && file.getSize) {
						getSizeHashes = file.files;
					}
					
					info.html(
						tpl.replace(/\{value\}/, name)
						+ tpl.replace(/\{value\}/, fm.mime2kind(file))
						+ tpl.replace(/\{value\}/, getSizeHashes.length ? spinner : fm.formatSize(file.size))
						+ tpl.replace(/\{value\}/, fm.i18n('modify')+': '+ fm.formatDate(file))
					);
					
					if (getSizeHashes.length) {
						getSize = fm.getSize(getSizeHashes).done(function(data) {
							info.find('span.elfinder-spinner').parent().html(data.formated);
						}).fail(function() {
							info.find('span.elfinder-spinner').parent().html(fm.i18n('unknown'));
						}).always(function() {
							getSize = null;
						});
						getSize._hash = file.hash;
					}
					
					icon.addClass('elfinder-cwd-icon ui-corner-all '+fm.mime2class(file.mime));
					
					if (file.icon) {
						icon.css(fm.getIconStyle(file, true));
					}
					
					self.info.attr('class', infocls);
					if (file.csscls) {
						self.info.addClass(file.csscls);
					}
	
					if (file.read && (tmb = fm.tmb(file))) {
						$('<img/>')
							.hide()
							.appendTo(self.preview)
							.on('load', function() {
								icon.addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
								$(this).remove();
							})
							.attr('src', tmb.url);
					}
					self.info.delay(100).fadeIn(10);
					if (self.window.hasClass(fullscreen)) {
						cover.trigger('mousemove');
					}
					win.css('overflow', '');
				},
				tmb, name, getSizeHashes = [];

			if (file && ! Object.keys(file).length) {
				file = fm.cwd();
			}
			if (file && getSize && getSize.state() === 'pending' && getSize._hash !== file.hash) {
				getSize.reject();
			}
			if (file && (e.forceUpdate || self.window.data('hash') !== file.hash)) {
				update();
			} else { 
				e.stopImmediatePropagation();
			}
		});

	this.window = $('<div class="ui-front ui-helper-reset ui-widget elfinder-quicklook touch-punch" style="position:absolute"></div>')
		.hide()
		.addClass(fm.UA.Touch? 'elfinder-touch' : '')
		.on('click', function(e) {
			var win = this;
			e.stopPropagation();
			if (state === opened) {
				requestAnimationFrame(function() {
					state === opened && fm.toFront(win);
				});
			}
		})
		.append(
			$('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix elfinder-quicklook-titlebar"></div>')
			.append(
				$('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button elfinder-quicklook-titlebar-icon'+(platformWin? ' elfinder-titlebar-button-right' : '')+'"></span>').append(
					titleClose, titleDock
				),
				title
			),
			this.preview,
			self.info.hide(),
			cover.hide(),
			navbar
		)
		.draggable({handle : 'div.elfinder-quicklook-titlebar'})
		.on('open', function(e, clcss) {
			var win  = self.window, 
				file = self.value,
				node = fm.getUI('cwd'),
				open = function(status) {
					state = status;
					self.update(1, self.value);
					self.change();
					win.trigger('resize.' + fm.namespace);
				};

			if (!init && state === closed) {
				if (file && file.hash !== cwdHash) {
					node = fm.cwdHash2Elm(file.hash.split('/', 2)[0]);
				}
				navStyle = '';
				navbar.attr('style', '');
				state = animated;
				node.trigger('scrolltoview');
				coverHide();
				win.css(clcss || closedCss(node))
					.show()
					.animate(openedCss(), 550, function() {
						open(opened);
						navShow();
					});
				fm.toFront(win);
			} else if (state === dockedhidden) {
				fm.getUI('navdock').data('addNode')(dockedNode);
				open(docked);
				self.preview.trigger('changesize');
				fm.storage('previewDocked', '1');
				if (fm.getUI('navdock').width() === 0) {
					win.trigger('navdockout');
				}
			}
		})
		.on('close', function(e, dfd) {
			var win     = self.window,
				preview = self.preview.trigger('change'),
				file    = self.value,
				hash    = (win.data('hash') || '').split('/', 2)[0],
				close   = function(status, winhide) {
					state = status;
					winhide && fm.toHide(win);
					preview.children().remove();
					self.update(0, self.value);
					win.data('hash', '');
					dfd && dfd.resolve();
				},
				node;
				
			if (self.opened()) {
				getSize && getSize.state() === 'pending' && getSize.reject();
				if (! self.docked()) {
					state = animated;
					win.hasClass(fullscreen) && fsicon.click();
					(hash && (node = cwd.find('#'+hash)).length)
						? win.animate(closedCss(node), 500, function() {
							preview.off('changesize');
							close(closed, true);
						})
						: close(closed, true);
				} else {
					dockedNode = fm.getUI('navdock').data('removeNode')(self.window.attr('id'), 'detach');
					close(dockedhidden);
					fm.storage('previewDocked', '2');
				}
			}
		})
		.on('navdockin', function(e, data) {
			var w      = self.window,
				box    = fm.getUI('navdock'),
				height = dockHeight || box.width(),
				opts   = data || {};
			
			if (init) {
				opts.init = true;
			}
			state = docked;
			prevStyle = w.attr('style');
			w.toggleClass('ui-front').removeClass('ui-widget').draggable('disable').resizable('disable').removeAttr('style').css({
				width: '100%',
				height: height,
				boxSizing: 'border-box',
				paddingBottom: 0,
				zIndex: 'unset'
			});
			navbar.hide();
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			fm.toHide(w, true);
			box.data('addNode')(w, opts);
			
			self.preview.trigger('changesize');
			
			fm.storage('previewDocked', '1');
		})
		.on('navdockout', function(e) {
			var w   = self.window,
				box = fm.getUI('navdock'),
				dfd = $.Deferred(),
				clcss = closedCss(self.preview);
			
			dockHeight = w.outerHeight();
			box.data('removeNode')(w.attr('id'), fm.getUI());
			w.toggleClass('ui-front').addClass('ui-widget').draggable('enable').resizable('enable').attr('style', prevStyle);
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			state = closed;
			w.trigger('open', clcss);
			
			fm.storage('previewDocked', '0');
		})
		.on('resize.' + fm.namespace, function() {
			self.preview.trigger('changesize'); 
		});

	/**
	 * This command cannot be disable by backend
	 *
	 * @type Boolean
	 **/
	this.alwaysEnabled = true;
	
	/**
	 * Selected file
	 *
	 * @type Object
	 **/
	this.value = null;
	
	this.handlers = {
		// save selected file
		select : function(e, d) {
			selectTm && cancelAnimationFrame(selectTm);
			if (! e.data || ! e.data.selected || ! e.data.selected.length) {
				selectTm = requestAnimationFrame(function() {
					self.opened() && updateOnSel();
				});
			} else {
				self.opened() && updateOnSel();
			}
		},
		error  : function() { self.window.is(':visible') && self.window.trigger('close'); },
		'searchshow searchhide' : function() { this.opened() && this.window.trigger('close'); },
		navbarshow : function() {
			requestAnimationFrame(function() {
				self.docked() && self.preview.trigger('changesize');
			});
		},
		destroy : function() { self.window.remove(); }
	};
	
	this.shortcuts = [{
		pattern     : 'space'
	}];
	
	this.support = {
		audio : {
			ogg : support('audio/ogg;'),
			webm: support('audio/webm;'),
			mp3 : support('audio/mpeg;'),
			wav : support('audio/wav;'),
			m4a : support('audio/mp4;') || support('audio/x-m4a;') || support('audio/aac;'),
			flac: support('audio/flac;'),
			amr : support('audio/amr;')
		},
		video : {
			ogg  : support('video/ogg;'),
			webm : support('video/webm;'),
			mp4  : support('video/mp4;'),
			mkv  : support('video/x-matroska;') || support('video/webm;'),
			'3gp': support('video/3gpp;') || support('video/mp4;'), // try as mp4
			m3u8 : support('application/x-mpegURL', 'video') || support('application/vnd.apple.mpegURL', 'video'),
			mpd  : support('application/dash+xml', 'video')
		}
	};
	// for GC
	mediaNode = {};
	
	/**
	 * Return true if quickLoock window is hiddenReturn true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.closed = function() {
		return (state == closed || state == dockedhidden);
	};
	
	/**
	 * Return true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.opened = function() {
		return state == opened || state == docked;
	};
	
	/**
	 * Return true if quickLoock window is in NavDock
	 *
	 * @return Boolean
	 **/
	this.docked = function() {
		return state == docked;
	};
	
	/**
	 * Adds an integration into help dialog.
	 *
	 * @param Object opts  options
	 */
	this.addIntegration = function(opts) {
		requestAnimationFrame(function() {
			fm.trigger('helpIntegration', Object.assign({cmd: 'quicklook'}, opts));
		});
	};

	/**
	 * Init command.
	 * Add default plugins and init other plugins
	 *
	 * @return Object
	 **/
	this.init = function() {
		var o       = this.options, 
			win     = this.window,
			preview = this.preview,
			i, p, cwdDispInlineRegex;
		
		width  = o.width  > 0 ? parseInt(o.width)  : 450;	
		height = o.height > 0 ? parseInt(o.height) : 300;
		if (o.dockHeight !== 'auto') {
			dockHeight = parseInt(o.dockHeight);
			if (! dockHeight) {
				dockHeight = void(0);
			}
		}

		fm.one('load', function() {
			
			dockEnabled = fm.getUI('navdock').data('dockEnabled');
			
			! dockEnabled && titleDock.hide();
			
			parent = fm.getUI();
			cwd    = fm.getUI('cwd');

			if (fm.zIndex) {
				win.css('z-index', fm.zIndex + 1);
			}
			
			win.appendTo(parent);
			
			// close window on escape
			$(document).on('keydown.'+fm.namespace, function(e) {
				e.keyCode == $.ui.keyCode.ESCAPE && self.opened() && ! self.docked() && win.hasClass('elfinder-frontmost') && win.trigger('close');
			});
			
			win.resizable({ 
				handles   : 'se', 
				minWidth  : 350, 
				minHeight : 120, 
				resize    : function() { 
					// use another event to avoid recursion in fullscreen mode
					// may be there is clever solution, but i cant find it :(
					preview.trigger('changesize'); 
				}
			});
			
			self.change(function() {
				if (self.opened()) {
					if (self.value) {
						if (self.value.tmb && self.value.tmb == 1) {
							// try re-get file object
							self.value = Object.assign({}, fm.file(self.value.hash));
						}
						preview.trigger($.Event(evUpdate, {file : self.value}));
					}
				}
			});
			
			preview.on(evUpdate, function(e) {
				var file, hash, serach;
				
				if (file = e.file) {
					hash = file.hash;
					serach = (fm.searchStatus.mixed && fm.searchStatus.state > 1);
				
					if (file.mime !== 'directory') {
						if (parseInt(file.size) || file.mime.match(o.mimeRegexNotEmptyCheck)) {
							// set current dispInlineRegex
							self.dispInlineRegex = cwdDispInlineRegex;
							if (serach || fm.optionsByHashes[hash]) {
								try {
									self.dispInlineRegex = new RegExp(fm.option('dispInlineRegex', hash), 'i');
								} catch(e) {
									try {
										self.dispInlineRegex = new RegExp(!fm.isRoot(file)? fm.option('dispInlineRegex', file.phash) : fm.options.dispInlineRegex, 'i');
									} catch(e) {
										self.dispInlineRegex = /^$/;
									}
								}
							}
						} else {
							//  do not preview of file that size = 0
							e.stopImmediatePropagation();
						}
					} else {
						self.dispInlineRegex = /^$/;
					}
					
					self.info.show();
				} else {
					e.stopImmediatePropagation();
				}
			});

			$.each(fm.commands.quicklook.plugins || [], function(i, plugin) {
				if (typeof(plugin) == 'function') {
					new plugin(self);
				}
			});
		}).one('open', function() {
			var dock = Number(fm.storage('previewDocked') || o.docked),
				win;
			if (dockEnabled && dock >= 1) {
				win = self.window;
				self.exec();
				win.trigger('navdockin', { init : true });
				if (dock === 2) {
					win.trigger('close');
				} else {
					self.update(void(0), fm.cwd());
					self.change();
				}
			}
			init = false;
		}).bind('open', function() {
			cwdHash = fm.cwd().hash;
			self.value = fm.cwd();
			// set current volume dispInlineRegex
			try {
				cwdDispInlineRegex = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				cwdDispInlineRegex = /^$/;
			}
		}).bind('change', function(e) {
			if (e.data && e.data.changed && self.opened()) {
				$.each(e.data.changed, function() {
					if (self.window.data('hash') === this.hash) {
						self.window.data('hash', null);
						self.preview.trigger(evUpdate);
						return false;
					}
				});
			}
		}).bind('navdockresizestart navdockresizestop', function(e) {
			cover[e.type === 'navdockresizestart'? 'show' : 'hide']();
		});
	};
	
	this.getstate = function() {
		return self.opened()? 1 : 0;
	};
	
	this.exec = function() {
		self.closed() && updateOnSel();
		self.enabled() && self.window.trigger(self.opened() ? 'close' : 'open');
		return $.Deferred().resolve();
	};

	this.hideinfo = function() {
		this.info.stop(true, true).hide();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/quicklook.plugins.js
 */

elFinder.prototype.commands.quicklook.plugins = [
	
	/**
	 * Images preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var mimes   = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			getDimSize = ql.fm.returnBytes((ql.options.getDimThreshold || 0)),
			preview = ql.preview,
			WebP, flipMime;
		
		// webp support
		WebP = new Image();
		WebP.onload = WebP.onerror = function() {
			if (WebP.height == 2) {
				mimes.push('image/webp');
			}
		};
		WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
		
		// what kind of images we can display
		$.each(navigator.mimeTypes, function(i, o) {
			var mime = o.type;
			
			if (mime.indexOf('image/') === 0 && $.inArray(mime, mimes)) {
				mimes.push(mime);
			} 
		});
			
		preview.on(ql.evUpdate, function(e) {
			var fm   = ql.fm,
				file = e.file,
				showed = false,
				dimreq = null,
				setdim  = function(dim) {
					var rfile = fm.file(file.hash);
					rfile.width = dim[0];
					rfile.height = dim[1];
				},
				show = function() {
					var elm, varelm, memSize, width, height, prop;
					
					dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
					if (showed) {
						return;
					}
					showed = true;
					
					elm = img.get(0);
					memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
				
					memSize && img.removeAttr('width').removeAttr('height');
					
					width  = file.width || elm.naturalWidth || elm.width || img.width();
					height = file.height || elm.naturalHeight || elm.height || img.height();
					if (!file.width || !file.height) {
						setdim([width, height]);
					}
					
					memSize && img.width(memSize.w).height(memSize.h);

					prop = (width/height).toFixed(2);
					preview.on('changesize', function() {
						var pw = parseInt(preview.width()),
							ph = parseInt(preview.height()),
							w, h;
					
						if (prop < (pw/ph).toFixed(2)) {
							h = ph;
							w = Math.floor(h * prop);
						} else {
							w = pw;
							h = Math.floor(w/prop);
						}
						img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
					
					})
					.trigger('changesize');
					
					//show image
					img.fadeIn(100);
				},
				hideInfo = function() {
					loading.remove();
					// hide info/icon
					ql.hideinfo();
				},
				url, img, loading, prog, m, opDfd;

			if (!flipMime) {
				flipMime = fm.arrayFlip(mimes);
			}
			if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				img = $('<img/>')
					.hide()
					.appendTo(preview)
					.on('load', function() {
						hideInfo();
						show();
					})
					.on('error', function() {
						loading.remove();
					});
				opDfd = fm.openUrl(file.hash, false, function(url) {
					img.attr('src', url);
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});

				if (file.width && file.height) {
					show();
				} else if (file.size > getDimSize) {
					dimreq = fm.request({
						data : {cmd : 'dim', target : file.hash},
						preventDefault : true
					})
					.done(function(data) {
						if (data.dim) {
							var dim = data.dim.split('x');
							file.width = dim[0];
							file.height = dim[1];
							setdim(dim);
							show();
						}
					});
				}
			}
			
		});
	},
	
	/**
	 * TIFF image preview
	 *
	 * @param  object  ql  elFinder.commands.quicklook
	 */
	function(ql) {
				var fm   = ql.fm,
			mime = 'image/tiff',
			preview = ql.preview;
		if (window.Worker && window.Uint8Array) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					err = function(e) {
						wk && wk.terminate();
						loading.remove();
						fm.debug('error', e);
					},
					setdim = function(dim) {
						var rfile = fm.file(file.hash);
						rfile.width = dim[0];
						rfile.height = dim[1];
					},
					loading, prog, url, base, wk, opDfd;
				if (file.mime === mime) {
					e.stopImmediatePropagation();

					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						wk && wk.terminate();
						loading.remove();
					});

					opDfd = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
						if (data) {
							base = $('<div></div>').css({width:'100%',height:'100%'}).hide().appendTo(preview);
							try {
								wk = fm.getWorker();
								wk.onmessage = function(res) {
									var data = res.data,
										cv, co, id, prop;
									wk && wk.terminate();
									cv = document.createElement('canvas');
									co = cv.getContext('2d');
									cv.width = data.width;
									cv.height = data.height;
									id = co.createImageData(data.width, data.height);
									(id).data.set(new Uint8Array(data.image));
									co.putImageData(id, 0, 0);
									base.append(cv).show();
									loading.remove();
									prop = (data.width/data.height).toFixed(2);
									preview.on('changesize', function() {
										var pw = parseInt(preview.width()),
											ph = parseInt(preview.height()),
											w, h;
										if (prop < (pw/ph).toFixed(2)) {
											h = ph;
											w = Math.floor(h * prop);
										} else {
											w = pw;
											h = Math.floor(w/prop);
										}
										$(cv).width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
									}).trigger('changesize');
									if (!file.width || !file.height) {
										setdim([data.width, data.height]);
									}
									ql.hideinfo();
								};
								wk.onerror = err;
								wk.postMessage({
									scripts: [fm.options.cdns.tiff, fm.getWorkerUrl('quicklook.tiff.js')],
									data: { data: data }
								});
							} catch(e) {
								err(e);
							}
						} else {
							err();
						}
					});
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			});
		}
	},

	/**
	 * PSD(Adobe Photoshop data) preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']),
			preview = ql.preview,
			load    = function(url, img, loading) {
				try {
					fm.replaceXhrSend();
					PSD.fromURL(url).then(function(psd) {
						var prop;
						img.attr('src', psd.image.toBase64());
						requestAnimationFrame(function() {
							prop = (img.width()/img.height()).toFixed(2);
							preview.on('changesize', function() {
								var pw = parseInt(preview.width()),
									ph = parseInt(preview.height()),
									w, h;
							
								if (prop < (pw/ph).toFixed(2)) {
									h = ph;
									w = Math.floor(h * prop);
								} else {
									w = pw;
									h = Math.floor(w/prop);
								}
								img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
							}).trigger('changesize');
							
							loading.remove();
							// hide info/icon
							ql.hideinfo();
							//show image
							img.fadeIn(100);
						});
					}, function() {
						loading.remove();
						img.remove();
					});
					fm.restoreXhrSend();
				} catch(e) {
					fm.restoreXhrSend();
					loading.remove();
					img.remove();
				}
			},
			PSD;
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				url, img, loading, prog, m,
				_define, _require, opDfd;

			if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
					if (url) {
						img = $('<img/>').hide().appendTo(preview);
						if (PSD) {
							load(url, img, loading);
						} else {
							_define = window.define;
							_require = window.require;
							window.require = null;
							window.define = null;
							fm.loadScript(
								[ fm.options.cdns.psd ],
								function() {
									PSD = require('psd');
									_define? (window.define = _define) : (delete window.define);
									_require? (window.require = _require) : (delete window.require);
									load(url, img, loading);
								}
							);
						}
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		});
	},
	
	/**
	 * HTML preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/html', 'application/xhtml+xml']),
			preview = ql.preview;
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading, prog;
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					ql.hideinfo();
					var doc = $('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(preview)[0].contentWindow.document;
					doc.open();
					doc.write(data.content);
					doc.close();
				})
				.always(function() {
					loading.remove();
				});
			}
		});
	},
	
	/**
	 * MarkDown preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/x-markdown']),
			preview = ql.preview,
			marked  = null,
			show = function(data, loading) {
				ql.hideinfo();
				var doc = $('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(preview)[0].contentWindow.document;
				doc.open();
				doc.write((marked.parse || marked)(data.content));
				doc.close();
				loading.remove();
			},
			error = function(loading) {
				marked = false;
				loading.remove();
			};
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading, prog;
			
			if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					if (marked || window.marked) {
						if (!marked) {
							marked = window.marked;
						}
						show(data, loading);
					} else {
						fm.loadScript([fm.options.cdns.marked],
							function(res) { 
								marked = res || window.marked || false;
								delete window.marked;
								if (marked) {
									show(data, loading);
								} else {
									error(loading);
								}
							},
							{
								tryRequire: true,
								error: function() {
									error(loading);
								}
							}
						);
					}
				})
				.fail(function() {
					error(loading);
				});
			}
		});
	},

	/**
	 * PDF/ODT/ODS/ODP preview with ViewerJS
	 * 
	 * @param elFinder.commands.quicklook
	 */
	 function(ql) {
		if (ql.options.viewerjs) {
			var fm      = ql.fm,
				preview = ql.preview,
				opts    = ql.options.viewerjs,
				mimes   = opts.url? fm.arrayFlip(opts.mimes || []) : [],
				win     = ql.window,
				navi    = ql.navbar,
				setNavi = function() {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '30px' : '');
				};

			if (opts.url) {
				preview.on('update', function(e) {
					var file = e.file, node, loading, prog, opDfd;

					if (mimes[file.mime] && (file.mime !== 'application/pdf' || !opts.pdfNative || !ql.flags.pdfNative)) {
						e.stopImmediatePropagation();
						loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
						opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
							if (url) {
								node = $('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
									.css('background-color', 'transparent')
									.on('load', function() {
										ql.hideinfo();
										loading.remove();
										node.css('background-color', '#fff');
									})
									.on('error', function() {
										loading.remove();
										node.remove();
									})
									.appendTo(preview)
									.attr('src', opts.url + '#' + url);

								win.on('viewchange.viewerjs', setNavi);
								setNavi();

								preview.one('change', function() {
									win.off('viewchange.viewerjs');
									loading.remove();
									node.off('load').remove();
								});
							}
						}, { progressBar: prog });
						// stop loading on change file if not loaded yet
						preview.one('change', function() {
							opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
						});
					}
				});
			}
		}
	},

	/**
	 * PDF preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mime    = 'application/pdf',
			preview = ql.preview,
			active  = false,
			urlhash = '',
			firefox, toolbar;
			
		if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) {
			active = true;
		} else {
			$.each(navigator.plugins, function(i, plugins) {
				$.each(plugins, function(i, plugin) {
					if (plugin.type === mime) {
						return !(active = true);
					}
				});
			});
		}

		ql.flags.pdfNative = active;
		if (active) {
			if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) {
				urlhash = '#toolbar=0';
			}
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					opDfd;
				
				if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
					e.stopImmediatePropagation();
					opDfd = fm.openUrl(file.hash, false, function(url) {
						if (url) {
							ql.hideinfo();
							ql.cover.addClass('elfinder-quicklook-coverbg');
							$('<object class="elfinder-quicklook-preview-pdf" data="'+url+urlhash+'" type="application/pdf" ></object>')
								.on('error', function(e) {
									active = false;
									ql.update(void(0), fm.cwd());
									ql.update(void(0), file);
								})
								.appendTo(preview);
						}
					});
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
				
			});
		}
	},
	
	/**
	 * Flash preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mime    = 'application/x-shockwave-flash',
			preview = ql.preview,
			active  = false;

		$.each(navigator.plugins, function(i, plugins) {
			$.each(plugins, function(i, plugin) {
				if (plugin.type === mime) {
					return !(active = true);
				}
			});
		});
		
		active && preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				node, opDfd;
				
			if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				opDfd = fm.openUrl(file.hash, false, function(url) {
					if (url) {
						ql.hideinfo();
						node = $('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+url+'" quality="high" type="application/x-shockwave-flash" wmode="transparent" />')
							.appendTo(preview);
					}
				});
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		});
	},
	
	/**
	 * HTML5 audio preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'audio/mpeg'    : 'mp3',
				'audio/mpeg3'   : 'mp3',
				'audio/mp3'     : 'mp3',
				'audio/x-mpeg3' : 'mp3',
				'audio/x-mp3'   : 'mp3',
				'audio/x-wav'   : 'wav',
				'audio/wav'     : 'wav',
				'audio/x-m4a'   : 'm4a',
				'audio/aac'     : 'm4a',
				'audio/mp4'     : 'm4a',
				'audio/x-mp4'   : 'm4a',
				'audio/ogg'     : 'ogg',
				'audio/webm'    : 'webm',
				'audio/flac'    : 'flac',
				'audio/x-flac'  : 'flac',
				'audio/amr'     : 'amr'
			},
			node, curHash,
			win  = ql.window,
			navi = ql.navbar,
			AMR, autoplay,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
			},
			getNode = function(src, hash) {
				return $('<audio class="elfinder-quicklook-preview-audio ui-front" controls' + controlsList + ' preload="auto" autobuffer><source src="'+src+'" ></source></audio>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('error', function(e) {
						node && node.data('hash') === hash && reset();
					})
					.data('hash', hash)
					.appendTo(preview);
			},
			amrToWavUrl = function(hash) {
				var dfd = $.Deferred(),
					loader = $.Deferred().done(function() {
						var opDfd;
						opDfd = fm.getContents(hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
							try {
								var buffer = AMR.toWAV(new Uint8Array(data));
								if (buffer) {
									dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' })));
								} else {
									dfd.reject();
								}
							} catch(e) {
								dfd.reject();
							}
						}).fail(function() {
							dfd.reject();
						});
						// stop loading on change file if not loaded yet
						preview.one('change', function() {
							opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
						});
					}).fail(function() {
						AMR = false;
						dfd.reject();
					}),
					_AMR;
				if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') {
					// previous window.AMR
					_AMR = window.AMR;
					delete window.AMR;
					fm.loadScript(
						[ fm.options.cdns.amr ],
						function() { 
							AMR = window.AMR? window.AMR : false;
							// restore previous window.AMR
							window.AMR = _AMR;
							loader[AMR? 'resolve':'reject']();
						},
						{
							error: function() {
								loader.reject();
							}
						}
					);
				} else {
					loader[AMR? 'resolve':'reject']();
				}
				return dfd;
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset();
						}
					});
				}
			},
			reset = function() {
				if (node && node.parent().length) {
					var elm = node[0],
						url = node.children('source').attr('src');
					win.off('viewchange.audio');
					try {
						elm.pause();
						node.empty();
						if (url.match(/^blob:/)) {
							URL.revokeObjectURL(url);
						}
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
			},
			loading, prog;

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				type = mimes[file.mime],
				html5, opDfd;

			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) {
				autoplay = ql.autoPlay();
				curHash = file.hash;
				if (!html5) {
					if (fm.options.cdns.amr && type === 'amr' && AMR !== false) {
						e.stopImmediatePropagation();
						loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
						node = getNode('', curHash);
						amrToWavUrl(file.hash).done(function(url) {
							loading.remove();
							if (curHash === file.hash) {
								var elm = node[0];
								try {
									node.children('source').attr('src', url);
									elm.pause();
									elm.load();
									play(elm);
									win.on('viewchange.audio', setNavi);
									setNavi();
								} catch(e) {
									URL.revokeObjectURL(url);
									node.remove();
								}
							} else {
								URL.revokeObjectURL(url);
							}
						}).fail(function() {
							node.remove();
						});
					}
				} else {
					e.stopImmediatePropagation();
					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					opDfd = fm.openUrl(curHash, false, function(url) {
						loading.remove();
						if (url) {
							node = getNode(url, curHash);
							play(node[0]);
							win.on('viewchange.audio', setNavi);
							setNavi();
						} else {
							node.remove();
						}
					}, { progressBar: prog });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			}
		}).one('change', reset);
	},
	
	/**
	 * HTML5 video preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'video/mp4'       : 'mp4',
				'video/x-m4v'     : 'mp4',
				'video/quicktime' : 'mp4',
				'video/mpeg'      : 'mpeg',
				'video/ogg'       : 'ogg',
				'application/ogg' : 'ogg',
				'video/webm'      : 'webm',
				'video/x-matroska': 'mkv',
				'video/3gpp'      : '3gp',
				'application/vnd.apple.mpegurl' : 'm3u8',
				'application/x-mpegurl' : 'm3u8',
				'application/dash+xml'  : 'mpd',
				'video/x-flv'     : 'flv',
				'video/x-msvideo' : 'avi'
			},
			node,
			win  = ql.window,
			navi = ql.navbar,
			cHls, cDash, pDash, cFlv, cVideojs, autoplay, tm, loading, prog,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				if (fm.UA.iOS) {
					if (win.hasClass('elfinder-quicklook-fullscreen')) {
						preview.css('height', '-webkit-calc(100% - 50px)');
						navi._show();
					} else {
						preview.css('height', '');
					}
				} else {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				}
			},
			render = function(file, opts) {
				var errTm = function(e) {
						if (err > 1) {
							tm && clearTimeout(tm);
							tm = setTimeout(function() {
								!canPlay && reset(true);
							}, 800);
						}
					},
					err = 0, 
					cssClass = '',
					canPlay;
				//reset();
				pDash = null;
				opts = opts || {};
				if (opts.cssClass) {
					cssClass = ' ' + opts.cssClass;
				}
				ql.hideinfo();
				node = $('<video class="elfinder-quicklook-preview-video' + cssClass + '" controls' + controlsList + ' preload="auto" autobuffer playsinline>'
						+'</video>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('timeupdate progress', errTm)
					.on('canplay', function() {
						canPlay = true;
					})
					.data('hash', file.hash);
				// can not handling error event with jQuery `on` event handler
				node[0].addEventListener('error', function(e) {
					if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) {
						++err;
						errTm();
					}
				}, true);

				if (opts.src) {
					node.append('<source src="'+opts.src+'" type="'+file.mime+'"></source><source src="'+opts.src+'"></source>');
				}
				
				node.appendTo(preview);

				win.on('viewchange.video', setNavi);
				setNavi();
			},
			loadHls = function(file) {
				var hls, opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						render(file);
						hls = new cHls();
						hls.loadSource(url);
						hls.attachMedia(node[0]);
						if (autoplay) {
							hls.on(cHls.Events.MANIFEST_PARSED, function() {
								play(node[0]);
							});
						}
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadDash = function(file) {
				var opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					var debug;
					loading.remove();
					if (url) {
						render(file);
						pDash = window.dashjs.MediaPlayer().create();
						debug = pDash.getDebug();
						if (debug.setLogLevel) {
							debug.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL);
						} else if (debug.setLogToBrowserConsole) {
							debug.setLogToBrowserConsole(false);
						}
						pDash.initialize(node[0], url, autoplay);
						pDash.on('error', function(e) {
							reset(true);
						});
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadFlv = function(file) {
				var opDfd
				if (!cFlv.isSupported()) {
					cFlv = false;
					return;
				}
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						var player = cFlv.createPlayer({
							type: 'flv',
							url: url
						});
						render(file);
						player.on(cFlv.Events.ERROR, function() {
							player.destroy();
							reset(true);
						});
						player.attachMediaElement(node[0]);
						player.load();
						play(player);
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadVideojs = function(file) {
				var opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						render(file, {
							src: url,
							cssClass: 'video-js'
						});
						node[0].src = url;
						cVideojs(node[0], {
							autoplay: true
						});
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset(true);
						}
					});
				}
			},
			reset = function(showInfo) {
				tm && clearTimeout(tm);
				if (node && node.parent().length) {
					var elm = node[0];
					win.off('viewchange.video');
					pDash && pDash.reset();
					try {
						elm.pause();
						node.empty();
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
				showInfo && ql.info.show();
			};

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime.toLowerCase(),
				type = mimes[mime],
				stock, playPromise, opDfd;
			
			if (mimes[mime] && ql.dispInlineRegex.test(file.mime) /*&& (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])*/) {
				autoplay = ql.autoPlay();
				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>');
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) {
					e.stopImmediatePropagation();
					loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
					opDfd = fm.openUrl(file.hash, false, function(url) {
						loading.remove();
						if (url) {
							render(file, { src: url });
							play(node[0]);
						}
					}, { progressBar: prog });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				} else {
					if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cHls) {
							loadHls(file);
						} else {
							stock = window.Hls;
							delete window.Hls;
							fm.loadScript(
								[ fm.options.cdns.hls ],
								function(res) { 
									cHls = res || window.Hls || false;
									window.Hls = stock;
									cHls && loadHls(file);
								},
								{
									tryRequire: true,
									error : function() {
										cHls = false;
									}
								}
							);
						}
					} else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cDash) {
							loadDash(file);
						} else {
							fm.loadScript(
								[ fm.options.cdns.dash ],
								function() {
									// dashjs require window.dashjs in global scope
									cDash = window.dashjs? true : false;
									cDash && loadDash(file);
								},
								{
									tryRequire: true,
									error : function() {
										cDash = false;
									}
								}
							);
						}
					} else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cFlv) {
							loadFlv(file);
						} else {
							stock = window.flvjs;
							delete window.flvjs;
							fm.loadScript(
								[ fm.options.cdns.flv ],
								function(res) { 
									cFlv = res || window.flvjs || false;
									window.flvjs = stock;
									cFlv && loadFlv(file);
								},
								{
									tryRequire: true,
									error : function() {
										cFlv = false;
									}
								}
							);
						}
					} else if (fm.options.cdns.videojs) {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cVideojs) {
							loadVideojs(file);
						} else {
							fm.loadScript(
								[ fm.options.cdns.videojs + '/video.min.js' ],
								function(res) { 
									cVideojs = res || window.videojs || false;
									//window.flvjs = stock;
									cVideojs && loadVideojs(file);
								},
								{
									tryRequire: true,
									error : function() {
										cVideojs = false;
									}
								}
							).loadCss([fm.options.cdns.videojs + '/video-js.min.css']);
						}
					}
				}
			}
		}).one('change', reset);
	},
	
	/**
	 * Audio/video preview plugin using browser plugins
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var preview = ql.preview,
			mimes   = [],
			node,
			win  = ql.window,
			navi = ql.navbar;
			
		$.each(navigator.plugins, function(i, plugins) {
			$.each(plugins, function(i, plugin) {
				(plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type);
			});
		});
		mimes = ql.fm.arrayFlip(mimes);
		
		preview.on(ql.evUpdate, function(e) {
			var file  = e.file,
				mime  = file.mime,
				video, opDfd, loading, prog,
				setNavi = function() {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				};
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				opDfd = ql.fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						(video = mime.indexOf('video/') === 0) && ql.hideinfo();
						node = $('<embed src="'+url+'" type="'+mime+'" class="elfinder-quicklook-preview-'+(video ? 'video' : 'audio')+'"/>')
							.appendTo(preview);
						
						win.on('viewchange.embed', setNavi);
						setNavi();
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		}).one('change', function() {
			if (node && node.parent().length) {
				win.off('viewchange.embed');
				node.remove();
				node= null;
			}
		});
		
	},

	/**
	 * Archive(zip|gzip|tar|bz2) preview plugin using https://github.com/imaya/zlib.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar', 'application/x-bzip2']),
			preview = ql.preview,
			sizeMax = fm.returnBytes(ql.options.unzipMaxSize || 0),
			Zlib    = (fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip)? true : false,
			bzip2   = fm.options.cdns.bzip2? true : false;

		if (window.Worker && window.Uint8Array && window.DataView) {
			preview.on(ql.evUpdate, function(e) {
				var file  = e.file,
					isTar = (file.mime === 'application/x-tar'),
					isBzip2 = (file.mime === 'application/x-bzip2'),
					isZlib = (file.mime === 'application/zip' || file.mime === 'application/x-gzip');
				if (mimes[file.mime] && (!sizeMax || file.size <= sizeMax) && (
						isTar
						|| (isBzip2 && bzip2)
						|| (isZlib && Zlib)
					)) {
					var jqxhr, wk, loading, prog, url,
						req = function() {
							jqxhr = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog })
							.fail(function() {
								loading.remove();
							})
							.done(function(data) {
								var unzip, filenames,
									err = function(e) {
										wk && wk.terminate();
										loading.remove();
										if (isZlib) {
											Zlib = false;
										} else if (isBzip2) {
											bzip2 = false;
										}
										fm.debug('error', e);
									};
								try {
									wk = fm.getWorker();
									wk.onmessage = function(res) {
										wk && wk.terminate();
										loading.remove();
										if (!res.data || res.data.error) {
											new Error(res.data && res.data.error? res.data.error : '');
										} else {
											makeList(res.data.files);
										}
									};
									wk.onerror = err;
									if (file.mime === 'application/x-tar') {
										wk.postMessage({
											scripts: [fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'tar', bin: data }
										});
									} else if (file.mime === 'application/zip') {
										wk.postMessage({
											scripts: [fm.options.cdns.zlibUnzip, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'zip', bin: data }
										});
									} else if (file.mime === 'application/x-gzip') {
										wk.postMessage({
											scripts: [fm.options.cdns.zlibGunzip, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'gzip', bin: data }
										});

									} else if (file.mime === 'application/x-bzip2') {
										wk.postMessage({
											scripts: [fm.options.cdns.bzip2, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'bzip2', bin: data }
										});
									}
								} catch (e) {
									err(e);
								}
							});
						},
						makeList = function(filenames) {
							var header, list, doc, tsize = 0;
							if (filenames && filenames.length) {
								filenames = $.map(filenames, function(str) {
									return fm.decodeRawString(str);
								});
								filenames.sort();
								list = fm.escape(filenames.join("\n").replace(/\{formatSize\((\d+)\)\}/g, function(m, s) {
									tsize += parseInt(s);
									return fm.formatSize(s);
								}));
								header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+' / '+fm.formatSize(tsize)+')'+'<hr/>';
								doc = $('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+list+'</pre></div>')
									.on('touchstart', function(e) {
										if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
											e.originalEvent._preventSwipeX = true;
										}
									})
									.appendTo(preview);
								ql.hideinfo();
							}
							loading.remove();
						};

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						jqxhr.state() === 'pending' && jqxhr.reject();
						wk && wk.terminate();
						loading.remove();
					});
					
					req();
				}
			});
		}
	},

	/**
	 * RAR Archive preview plugin using https://github.com/43081j/rar.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/x-rar']),
			preview = ql.preview,
			RAR;

		if (window.DataView) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) {
					var loading, prog, url, archive, abort,
						getList = function(url) {
							if (abort) {
								loading.remove();
								return;
							}
							try {
								archive = RAR({
									file: url,
									type: 2,
									xhrHeaders: fm.customHeaders,
									xhrFields: fm.xhrFields
								}, function(err) {
									loading.remove();
									var filenames = [],
										header, doc;
									if (abort || err) {
										// An error occurred (not a rar, read error, etc)
										err && fm.debug('error', err);
										return;
									}
									$.each(archive.entries, function() {
										filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : ''));
									});
									if (filenames.length) {
										filenames = $.map(filenames, function(str) {
											return fm.decodeRawString(str);
										});
										filenames.sort();
										header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+')'+'<hr/>';
										doc = $('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+fm.escape(filenames.join("\n"))+'</pre></div>')
											.on('touchstart', function(e) {
												if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
													e.originalEvent._preventSwipeX = true;
												}
											})
											.appendTo(preview);
										ql.hideinfo();
									}
								});
							} catch(e) {
								loading.remove();
							}
						},
						error = function() {
							RAR = false;
							loading.remove();
						},
						_RAR, opDfd;

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						archive && (archive.abort = true);
						loading.remove();
						abort = true;
					});
					
					opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
						if (url) {
							if (RAR) {
								getList(url);
							} else {
								if (window.RarArchive) {
									_RAR = window.RarArchive;
									delete window.RarArchive;
								}
								fm.loadScript(
									[ fm.options.cdns.rar ],
									function() {
										if (fm.hasRequire) {
											require(['rar'], function(RarArchive) {
												RAR = RarArchive;
												getList(url);
											}, error);
										} else {
											if (RAR = window.RarArchive) {
												if (_RAR) {
													window.RarArchive = _RAR;
												} else {
													delete window.RarArchive;
												}
												getList(url);
											} else {
												error();
											}
										}
									},
									{
										tryRequire: true,
										error : error
									}
								);
							}
						}
					}, { progressBar: prog, temporary: true });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			});
		}
	},

	/**
	 * CAD-Files and 3D-Models online viewer on sharecad.org
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(ql.options.sharecadMimes || []),
			preview = ql.preview,
			win     = ql.window,
			node;
			
		if (ql.options.sharecadMimes.length) {
			ql.addIntegration({
				title: 'ShareCAD.org CAD and 3D-Models viewer',
				link: 'https://sharecad.org/DWGOnlinePlugin'
			});
		}

		preview.on(ql.evUpdate, function(e) {
			var file = e.file;
			if (mimes[file.mime.toLowerCase()] && fm.option('onetimeUrl', file.hash)) {
				var win     = ql.window,
					loading, prog, url;
				
				e.stopImmediatePropagation();
				if (file.url == '1') {
					preview.hide();
					$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
					.on('click', function() {
						var self = $(this);
						self.html('<span class="elfinder-spinner">');
						fm.request({
							data : {cmd : 'url', target : file.hash},
							preventDefault : true,
							progressBar : prog
						})
						.always(function() {
							self.html('');
						})
						.done(function(data) {
							var rfile = fm.file(file.hash);
							file.url = rfile.url = data.url || '';
							if (file.url) {
								preview.trigger({
									type: ql.evUpdate,
									file: file,
									forceUpdate: true
								});
							}
						});
					});
				}
				if (file.url !== '' && file.url != '1') {
					preview.one('change', function() {
						loading.remove();
						node.off('load').remove();
						node = null;
					}).addClass('elfinder-overflow-auto');
					
					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					url = fm.convAbsUrl(fm.url(file.hash));
					node = $('<iframe class="elfinder-quicklook-preview-iframe" scrolling="no"></iframe>')
						.css('background-color', 'transparent')
						.appendTo(preview)
						.on('load', function() {
							ql.hideinfo();
							loading.remove();
							ql.preview.after(ql.info);
							$(this).css('background-color', '#fff').show();
						})
						.on('error', function() {
							loading.remove();
							ql.preview.after(ql.info);
						})
						.attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url));
					
					ql.info.after(ql.preview);
				}
			}
			
		});
	},

	/**
	 * KML preview with GoogleMaps API
	 *
	 * @param elFinder.commands.quicklook
	 */
	function(ql) {
				var fm      = ql.fm,
			mimes   = {
				'application/vnd.google-earth.kml+xml' : true,
				'application/vnd.google-earth.kmz' : true
			},
			preview = ql.preview,
			gMaps, loadMap, wGmfail, fail, mapScr;

		if (ql.options.googleMapsApiKey) {
			ql.addIntegration({
				title: 'Google Maps',
				link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html'
			});
			gMaps = (window.google && google.maps);
			// start load maps
			loadMap = function(file, node, prog) {
				var mapsOpts = ql.options.googleMapsOpts.maps;
				fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
					if (url) {
						try {
							new gMaps.KmlLayer(url, Object.assign({
								map: new gMaps.Map(node.get(0), mapsOpts)
							}, ql.options.googleMapsOpts.kml));
							ql.hideinfo();
						} catch(e) {
							fail();
						}
					} else {
						fail();
					}
				});
			};
			// keep stored error handler if exists
			wGmfail = window.gm_authFailure;
			// on error function
			fail = function() {
				mapScr = null;
			};
			// API script url
			mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey;
			// error handler
			window.gm_authFailure = function() {
				fail();
				wGmfail && wGmfail();
			};

			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mapScr && mimes[file.mime.toLowerCase()]) {
					var win     = ql.window,
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, prog, url, node;
				
					e.stopImmediatePropagation();
					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					if (getLink) {
						preview.hide();
						$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = $(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true,
								progressBar : prog
							})
							.always(function() {
								loading.remove();
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						node = $('<div style="width:100%;height:100%;"></div>').appendTo(preview);
						preview.one('change', function() {
							node.remove();
							node = null;
						});
						if (!gMaps) {
							fm.loadScript([mapScr], function() {
								gMaps = window.google && google.maps;
								gMaps && loadMap(file, node, prog);
							});
						} else {
							loadMap(file, node, prog);
						}
					}
				}
			});
		}
	},

	/**
	 * Any supported files preview plugin using (Google docs | MS Office) online viewer
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')),
			preview = ql.preview,
			win     = ql.window,
			navi    = ql.navbar,
			urls    = {
				g: 'docs.google.com/gview?embedded=true&url=',
				m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src='
			},
			navBottom = {
				g: '56px',
				m: '24px'
			},
			mLimits = {
				xls  : 5242880, // 5MB
				xlsb : 5242880,
				xlsx : 5242880,
				xlsm : 5242880,
				other: 10485760 // 10MB
			},
			node, enable;
		
		if (ql.options.googleDocsMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'Google Docs Viewer',
				link: 'https://docs.google.com/'
			});
		}
		if (ql.options.officeOnlineMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'MS Online Doc Viewer',
				link: 'https://products.office.com/office-online/view-office-documents-online'
			});
		}

		if (enable) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					type, dfd;
				// 25MB is maximum filesize of Google Docs prevew
				if (file.size <= 26214400 && (type = mimes[file.mime])) {
					var win     = ql.window,
						setNavi = function() {
							navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : '');
						},
						ext     = fm.mimeTypes[file.mime],
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, prog, url, tm;
					
					if (type === 'm') {
						if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) {
							type = 'g';
						}
					}
					if (getLink) {
						preview.hide();
						$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = $(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true
							})
							.always(function() {
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						e.stopImmediatePropagation();
						preview.one('change', function() {
							dfd && dfd.status && dfd.status() === 'pending' && dfd.reject();
							win.off('viewchange.googledocs');
							loading.remove();
							node.off('load').remove();
							node = null;
						}).addClass('elfinder-overflow-auto');
						
						loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

						node = $('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
							.css('background-color', 'transparent')
							.appendTo(preview);

						dfd = fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
							var load = function() {
									try {
										if (node && (!node.attr('src') || node.get(0).contentWindow.document/*maybe HTTP 204*/)) {
											node.attr('src', 'https://' + urls[type] + encodeURIComponent(url));
											// Retry because Google Docs viewer sometimes returns HTTP 204
											tm = setTimeout(load, 2000);
										}
									} catch(e) {}
								};
							if (url) {
								if (file.ts) {
									url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts;
								}
								node.on('load', function() {
									tm && clearTimeout(tm);
									ql.hideinfo();
									loading.remove();
									ql.preview.after(ql.info);
									$(this).css('background-color', '#fff').show();
								})
								.on('error', function() {
									tm && clearTimeout(tm);
									loading.remove();
									ql.preview.after(ql.info);
								});
								load();
							} else {
								loading.remove();
								node.remove();
							}
						});

						win.on('viewchange.googledocs', setNavi);
						setNavi();
						ql.info.after(ql.preview);
					}
				}
				
			});
		}
	},

	/**
	 * Texts preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			preview = ql.preview,
			textLines = parseInt(ql.options.textInitialLines) || 150,
			prettifyLines = parseInt(ql.options.prettifyMaxLines) || 500,
			PR, _PR,
			error = function() {
				prettify = function() { return false; };
				_PR && (window.PR = _PR);
				PR = false;
			},
			prettify = function(node) {
				if (fm.options.cdns.prettify) {
					prettify = function(node) {
						setTimeout(function() {
							PRcheck(node);
						}, 100);
						return 'pending';
					};
					if (window.PR) {
						_PR = window.PR;
					}
					fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false'], function(wPR) {
						PR = wPR || window.PR;
						if (typeof PR === 'object') {
							prettify = function() { return true; };
							if (_PR) {
								window.PR = _PR;
							} else {
								delete window.PR;
							}
							exec(node);
						} else {
							error();
						}
					}, {
						tryRequire: true,
						error : error
					});
				} else {
					error();
				}
			},
			exec = function(node) {
				if (node && !node.hasClass('prettyprinted')) {
					node.css('cursor', 'wait');
					requestAnimationFrame(function() {
						PR.prettyPrint && PR.prettyPrint(null, node.get(0));
						node.css('cursor', '');
					});
				}
			},
			PRcheck = function(node) {
				var status = prettify(node);
				if (status === true) {
					exec(node);
				}
			};
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime,
				jqxhr, loading, prog, encSelect;
			
			if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax) && PR !== false) {
				e.stopImmediatePropagation();
				
				loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loadin yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
					encSelect && encSelect.remove();
				});
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : (file.encoding || 1), _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'),
						text = data.content,
						part, more, node, lines, m;
					if (typeof text !== 'string') {
						return;
					}
					ql.hideinfo();
					if (window.atob && (m = text.match(reg))) {
						text = atob(text.substr(m[1].length));
					}
					
					lines = text.match(/([^\r\n]{1,100}[\r\n]*)/g);
					more = lines.length - textLines;
					if (more > 10) {
						part = lines.splice(0, textLines).join('');
					} else {
						more = 0;
					}

					node = $('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text prettyprint"></pre></div>');
					
					if (more) {
						node.append($('<div class="elfinder-quicklook-preview-charsleft"><hr/><span>' + fm.i18n('linesLeft', fm.toLocaleString(more)) + '</span></div>')
							.on('click', function() {
								var top = node.scrollTop();
								$(this).remove();
								node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top);
								if (lines.length <= prettifyLines) {
									PRcheck(node);
								}
							})
						);
					}
					node.children('pre').text(part || text);
					
					node.on('touchstart', function(e) {
						if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
							e.originalEvent._preventSwipeX = true;
						}
					}).appendTo(preview);

					// make toast message
					if (data.toasts && Array.isArray(data.toasts)) {
						$.each(data.toasts, function() {
							this.msg && fm.toast(this);
						});
					}

					PRcheck(node);
				})
				.always(function(data) {
					var cmdEdit, sel, head;
					if (cmdEdit = fm.getCommand('edit')) {
						head = [];
						if (data && data.encoding) {
							head.push({value: data.encoding});
						}
						head.push({value: 'UTF-8'});
						sel = cmdEdit.getEncSelect(head);
						sel.on('change', function() {
							file.encoding = sel.val();
							fm.cache(file, 'change');
							preview.trigger({
								type: ql.evUpdate,
								file: file,
								forceUpdate: true
							});
						});
						encSelect = $('<div class="elfinder-quicklook-encoding"></div>').append(sel);
						ql.window.append(encSelect);
					}
					loading.remove();
				});
			}
		});
	}
];


/*
 * File: /js/commands/reload.js
 */

/**
 * @class  elFinder command "reload"
 * Sync files and folders
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.reload = function() {
	"use strict";
	var self   = this,
		search = false;
	
	this.alwaysEnabled = true;
	this.updateOnSelect = true;
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+r f5'
	}];
	
	this.getstate = function() {
		return 0;
	};
	
	this.init = function() {
		this.fm.bind('search searchend', function() {
			search = this.type == 'search';
		});
	};
	
	this.fm.bind('contextmenu', function(){
		var fm = self.fm;
		if (fm.options.sync >= 1000) {
			self.extra = {
				icon: 'accept',
				node: $('<span></span>')
					.attr({title: fm.i18n('autoSync')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						$(this).parent()
							.toggleClass('ui-state-disabled', fm.options.syncStart)
							.parent().removeClass('ui-state-hover');
						fm.options.syncStart = !fm.options.syncStart;
						fm.autoSync(fm.options.syncStart? null : 'stop');
					}).on('ready', function(){
						$(this).parent().toggleClass('ui-state-disabled', !fm.options.syncStart).css('pointer-events', 'auto');
					})
			};
		}
	});
	
	this.exec = function() {
		var fm = this.fm;
		if (!search) {
			var dfrd    = fm.sync(),
				timeout = setTimeout(function() {
					fm.notify({type : 'reload', cnt : 1, hideCnt : true});
					dfrd.always(function() { fm.notify({type : 'reload', cnt  : -1}); });
				}, fm.notifyDelay);
				
			return dfrd.always(function() { 
				clearTimeout(timeout); 
				fm.trigger('reload');
			});
		} else {
			$('div.elfinder-toolbar > div.'+fm.res('class', 'searchbtn') + ' > span.ui-icon-search').click();
		}
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/rename.js
 */

/**
 * @class elFinder command "rename". 
 * Rename selected file.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.rename = function() {
	"use strict";

	// set alwaysEnabled to allow root rename on client size
	if (this.fm.options.enableRootRename !== false) {
		this.alwaysEnabled = true;
	}

	this.syncTitleOnChange = true;

	var self = this,
		fm = self.fm,
		enableRootRename = fm.options.enableRootRename !== false,
		request = function(dfrd, targtes, file, name) {
			var sel = targtes? [file.hash].concat(targtes) : [file.hash],
				cnt = sel.length,
				data = {}, rootNames;
			
			fm.lockfiles({files : sel});
			
			if (fm.isRoot(file) && !file.netkey && enableRootRename) {
				if (!(rootNames = fm.storage('rootNames'))) {
					rootNames = {};
				}
				if (name === '') {
					if (rootNames[file.hash]) {
						file.name = file._name;
						file.i18 = file._i18;
						delete rootNames[file.hash];
						delete file._name;
						delete file._i18;
					} else {
						dfrd && dfrd.reject();
						fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
						return;
					}
				} else {
					if (typeof file._name === 'undefined') {
						file._name = file.name;
						file._i18 = file.i18;
					}
					file.name = rootNames[file.hash] = name;
					delete file.i18;
				}
				fm.storage('rootNames', rootNames);
				data = { changed: [file] };
				fm.updateCache(data);
				fm.change(data);
				dfrd && dfrd.resolve(data);
				fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				return;
			}

			data = {
				cmd : 'rename',
				name : name,
				target : file.hash
			};

			if (cnt > 1) {
				data['targets'] = targtes;
				if (name.match(/\*/)) {
					data['q'] = name;
				}
			}
			
			fm.request({
					data   : data,
					notify : {type : 'rename', cnt : cnt},
					navigate : {}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					dfrd && dfrd.reject();
					if (! err || ! Array.isArray(err) || err[0] !== 'errRename') {
						fm.sync();
					}
				})
				.done(function(data) {
					var cwdHash;
					if (data.added && data.added.length && cnt === 1) {
						data.undo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : data.added[0].hash, name : file.name},
									notify : {type : 'undo', cnt : 1}
								});
							}
						};
						data.redo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : file.hash, name : name},
									notify : {type : 'rename', cnt : 1}
								});
							}
						};
					}
					dfrd && dfrd.resolve(data);
					if (!(cwdHash = fm.cwd().hash) || cwdHash === file.hash) {
						fm.exec('open', $.map(data.added, function(f) {
							return (f.mime === 'directory')? f.hash : null;
						})[0]);
					}
				})
				.always(function() {
					fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				}
			);
		},
		getHint = function(name, target) {
			var sel = target || fm.selected(),
				splits = fm.splitFileExtention(name),
				f1 = fm.file(sel[0]),
				f2 = fm.file(sel[1]),
				ext, hint, add;
			
			ext = splits[1]? ('.' + splits[1]) : '';
			if (splits[1] && splits[0] === '*') {
				// change extention
				hint =  '"' + fm.splitFileExtention(f1.name)[0] + ext + '", ';
				hint += '"' + fm.splitFileExtention(f2.name)[0] + ext + '"';
			} else if (splits[0].length > 1) {
				if (splits[0].substr(-1) === '*') {
					// add prefix
					add = splits[0].substr(0, splits[0].length - 1);
					hint =  '"' + add + f1.name+'", ';
					hint += '"' + add + f2.name+'"';
				} else if (splits[0].substr(0, 1) === '*') {
					// add suffix
					add = splits[0].substr(1);
					hint =  '"'+fm.splitFileExtention(f1.name)[0] + add + ext + '", ';
					hint += '"'+fm.splitFileExtention(f2.name)[0] + add + ext + '"';
				}
			}
			if (!hint) {
				hint = '"'+splits[0] + '1' + ext + '", "' + splits[0] + '2' + ext + '"';
			}
			if (sel.length > 2) {
				hint += ' ...';
			}
			return hint;
		},
		batchRename = function() {
			var sel = fm.selected(),
				tplr = '<input name="type" type="radio" class="elfinder-tabstop">',
				mkChk = function(node, label) {
					return $('<label class="elfinder-rename-batch-checks">' + fm.i18n(label) + '</label>').prepend(node);
				},
				name = $('<input type="text" class="ui-corner-all elfinder-tabstop">'),
				num  = $(tplr),
				prefix  = $(tplr),
				suffix  = $(tplr),
				extention  = $(tplr),
				checks = $('<div></div>').append(
					mkChk(num, 'plusNumber'),
					mkChk(prefix, 'asPrefix'),
					mkChk(suffix, 'asSuffix'),
					mkChk(extention, 'changeExtention')
				),
				preview = $('<div class="elfinder-rename-batch-preview"></div>'),
				node = $('<div class="elfinder-rename-batch"></div>').append(
						$('<div class="elfinder-rename-batch-name"></div>').append(name),
						$('<div class="elfinder-rename-batch-type"></div>').append(checks),
						preview
					),
				opts = {
					title : fm.i18n('batchRename'),
					modal : true,
					destroyOnClose : true,
					width: Math.min(380, fm.getUI().width() - 20),
					buttons : {},
					open : function() {
						name.on('input', mkPrev).trigger('focus');
					}
				},
				getName = function() {
					var vName = name.val(),
						ext = fm.splitFileExtention(fm.file(sel[0]).name)[1];
					if (vName !== '' || num.is(':checked')) {
						if (prefix.is(':checked')) {
							vName += '*';
						} else if (suffix.is(':checked')) {
							vName = '*' + vName + '.' + ext;
						} else if (extention.is(':checked')) {
							vName = '*.' + vName;
						} else if (ext) {
							vName += '.' + ext;
						}
					}
					return vName;
				},
				mkPrev = function() {
					var vName = getName();
					if (vName !== '') {
						preview.html(fm.i18n(['renameMultiple', sel.length, getHint(vName)]));
					} else {
						preview.empty();
					}
				},
				radios = checks.find('input:radio').on('change', mkPrev),
				dialog;
			
			opts.buttons[fm.i18n('btnApply')] = function() {
				var vName = getName(),
					file, targets;
				if (vName !== '') {
					dialog.elfinderdialog('close');
					targets = sel;
					file = fm.file(targets.shift());
					request(void(0), targets, file, vName);
				}
			};
			opts.buttons[fm.i18n('btnCancel')] = function() {
				dialog.elfinderdialog('close');
			};
			if ($.fn.checkboxradio) {
				radios.checkboxradio({
					create: function(e, ui) {
						if (this === num.get(0)) {
							num.prop('checked', true).change();
						}
					}
				});
			} else {
				checks.buttonset({
					create: function(e, ui) {
						num.prop('checked', true).change();
					}
				});
			}
			dialog = self.fmDialog(node, opts);
		};
	
	this.noChangeDirOnRemovedCwd = true;
	
	this.shortcuts = [{
		pattern : 'f2' + (fm.OS == 'mac' ? ' enter' : '')
	}, {
		pattern : 'shift+f2',
		description : 'batchRename',
		callback : function() {
			fm.selected().length > 1 && batchRename();
		}
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			phash, ext, mime, brk, state, isRoot;
		
		if (!cnt) {
			return -1;
		}
		
		if (cnt > 1 && sel[0].phash) {
			phash = sel[0].phash;
			ext = fm.splitFileExtention(sel[0].name)[1].toLowerCase();
			mime = sel[0].mime;
		}
		if (cnt === 1) {
			isRoot = fm.isRoot(sel[0]);
		}

		state = (cnt === 1 && ((enableRootRename && fm.cookieEnabled && isRoot) || !sel[0].locked) || (fm.api > 2.1030 && cnt === $.grep(sel, function(f) {
			if (!brk && !f.locked && f.phash === phash && !fm.isRoot(f) && (mime === f.mime || ext === fm.splitFileExtention(f.name)[1].toLowerCase())) {
				return true;
			} else {
				brk && (brk = true);
				return false;
			}
		}).length)) ? 0 : -1;
		
		// because alwaysEnabled = true, it need check disabled on connector 
		if (!isRoot && state === 0 && fm.option('disabledFlip', sel[0].hash)['rename']) {
			state = -1;
		}

		if (state !== -1 && cnt > 1) {
			self.extra = {
				icon: 'preference',
				node: $('<span></span>')
					.attr({title: fm.i18n('batchRename')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						fm.getUI().trigger('click'); // to close the context menu immediately
						batchRename();
					})
			};
		} else {
			delete self.extra;
		}
			
		return state;
	};
	
	this.exec = function(hashes, cOpts) {
		var cwd      = fm.getUI('cwd'),
			sel      = hashes || (fm.selected().length? fm.selected() : false) || [fm.cwd().hash],
			cnt      = sel.length,
			file     = fm.file(sel.shift()),
			filename = '.elfinder-cwd-filename',
			opts     = cOpts || {},
			incwd    = (fm.cwd().hash == file.hash),
			type     = (opts._currentType === 'navbar' || opts._currentType === 'files')? opts._currentType : (incwd? 'navbar' : 'files'),
			navbar   = (type !== 'files'),
			target   = fm[navbar? 'navHash2Elm' : 'cwdHash2Elm'](file.hash),
			tarea    = (!navbar && fm.storage('view') != 'list'),
			split    = function(name) {
				var ext = fm.splitFileExtention(name)[1];
				return [name.substr(0, name.length - ext.length - 1), ext];
			},
			unselect = function() {
				requestAnimationFrame(function() {
					input && input.trigger('blur');
				});
			},
			rest     = function(){
				if (!overlay.is(':hidden')) {
					overlay.elfinderoverlay('hide').off('click close', cancel);
				}
				pnode.removeClass('ui-front')
					.css('position', '')
					.off('unselect.'+fm.namespace, unselect);
				if (tarea) {
					node && node.css('max-height', '');
				} else if (!navbar) {
					pnode.css('width', '')
						.parent('td').css('overflow', '');
				}
			}, colwidth,
			dfrd     = $.Deferred()
				.fail(function(error) {
					var parent = input.parent(),
						name   = fm.escape(file.i18 || file.name);

					input.off();
					if (tarea) {
						name = name.replace(/([_.])/g, '&#8203;$1');
					}
					requestAnimationFrame(function() {
						if (navbar) {
							input.replaceWith(name);
						} else {
							if (parent.length) {
								input.remove();
								parent.html(name);
							} else {
								target.find(filename).html(name);
							}
						}
					});
					error && fm.error(error);
				})
				.always(function() {
					rest();
					fm.unbind('resize', resize);
					fm.enable();
				}),
			blur = function(e) {
				var name   = $.trim(input.val()),
				splits = fm.splitFileExtention(name),
				valid  = true,
				req = function() {
					input.off();
					rest();
					if (navbar) {
						input.replaceWith(fm.escape(name));
					} else {
						node.html(fm.escape(name));
					}
					request(dfrd, sel, file, name);
				};

				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (name === '') {
					if (!fm.isRoot(file)) {
						return cancel();
					}
					if (navbar) {
						input.replaceWith(fm.escape(file.name));
					} else {
						node.html(fm.escape(file.name));
					}
				}
				if (!inError && pnode.length) {
					
					input.off('blur');
					
					if (cnt === 1 && name === file.name) {
						return dfrd.reject();
					}
					if (fm.options.validName && fm.options.validName.test) {
						try {
							valid = fm.options.validName.test(name);
						} catch(e) {
							valid = false;
						}
					}
					if (name === '.' || name === '..' || !valid) {
						inError = true;
						fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					if (cnt === 1 && fm.fileByName(name, file.phash)) {
						inError = true;
						fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					
					if (cnt === 1) {
						req();
					} else {
						fm.confirm({
							title : 'cmdrename',
							text  : ['renameMultiple', cnt, getHint(name, [file.hash].concat(sel))],
							accept : {
								label : 'btnYes',
								callback : req
							},
							cancel : {
								label : 'btnCancel',
								callback : function() {
									setTimeout(function() {
										inError = true;
										select();
									}, 120);
								}
							}
						});
						setTimeout(function() {
							fm.trigger('unselectfiles', {files: fm.selected()})
								.trigger('selectfiles', {files : [file.hash].concat(sel)});
						}, 120);
					}
				}
			},
			input = $(tarea? '<textarea></textarea>' : '<input type="text"/>')
				.on('keyup text', function(){
					if (tarea) {
						this.style.height = '1px';
						this.style.height = this.scrollHeight + 'px';
					} else if (colwidth) {
						this.style.width = colwidth + 'px';
						if (this.scrollWidth > colwidth) {
							this.style.width = this.scrollWidth + 10 + 'px';
						}
					}
				})
				.on('keydown', function(e) {
					e.stopImmediatePropagation();
					if (e.keyCode == $.ui.keyCode.ESCAPE) {
						dfrd.reject();
					} else if (e.keyCode == $.ui.keyCode.ENTER) {
						e.preventDefault();
						input.trigger('blur');
					}
				})
				.on('mousedown click dblclick', function(e) {
					e.stopPropagation();
					if (e.type === 'dblclick') {
						e.preventDefault();
					}
				})
				.on('blur', blur)
				.on('dragenter dragleave dragover drop', function(e) {
					// stop bubbling to prevent upload with native drop event
					e.stopPropagation();
				}),
			select = function() {
				var name = fm.splitFileExtention(input.val())[0];
				if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
					overlay.on('click close', cancel).elfinderoverlay('show');
					pnode.css('z-index', overlay.css('z-index') + 1);
				}
				! fm.enabled() && fm.enable();
				if (inError) {
					inError = false;
					input.on('blur', blur);
				}
				input.trigger('focus').trigger('select');
				input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
			},
			node = navbar? target.contents().filter(function(){ return this.nodeType==3 && $(this).parent().attr('id') === fm.navHash2Id(file.hash); })
					: target.find(filename),
			pnode = node.parent(),
			overlay = fm.getUI('overlay'),
			cancel = function(e) { 
				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (! inError) {
					dfrd.reject();
					if (e) {
						e.stopPropagation();
						e.preventDefault();
					}
				}
			},
			resize = function() {
				target.trigger('scrolltoview', {blink : false});
			},
			inError = false;
		
		pnode.addClass('ui-front')
			.css('position', 'relative')
			.on('unselect.'+fm.namespace, unselect);
		fm.bind('resize', resize);
		if (navbar) {
			node.replaceWith(input.val(file.name));
		} else {
			if (tarea) {
				node.css('max-height', 'none');
			} else if (!navbar) {
				colwidth = pnode.width();
				pnode.width(colwidth - 15)
					.parent('td').css('overflow', 'visible');
			}
			node.empty().append(input.val(file.name));
		}
		
		if (cnt > 1 && fm.api <= 2.1030) {
			return dfrd.reject();
		}
		
		if (!file || !node.length) {
			return dfrd.reject('errCmdParams', this.title);
		}
		
		if (file.locked && (!fm.isRoot(file) || !enableRootRename)) {
			return dfrd.reject(['errLocked', file.name]);
		}
		
		fm.one('select', function() {
			input.parent().length && file && $.inArray(file.hash, fm.selected()) === -1 && input.trigger('blur');
		});
		
		input.trigger('keyup');
		
		select();
		
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(),
			file;
		if (sel && sel.length === 1 && (file = fm.file(sel[0])) && fm.isRoot(file)) {
			self.title = fm.i18n('kindAlias') + ' (' + fm.i18n('preference') + ')';
		} else {
			self.title = fm.i18n('cmdrename');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	}).remove(function(e) {
		var rootNames;
		if (e.data && e.data.removed && (rootNames = fm.storage('rootNames'))) {
			$.each(e.data.removed, function(i, h) {
				if (rootNames[h]) {
					delete rootNames[h];
				}
			});
			fm.storage('rootNames', rootNames);
		}
	});
};


/*
 * File: /js/commands/resize.js
 */

/**
 * @class  elFinder command "resize"
 * Open dialog to resize image
 *
 * @author Dmitry (dio) Levashov
 * @author Alexey Sukhotin
 * @author Naoki Sawada
 * @author Sergio Jovani
 **/
elFinder.prototype.commands.resize = function() {
	"use strict";
	var fm = this.fm,
		losslessRotate = 0,
		getBounceBox = function(w, h, theta) {
			var srcPts = [
					{x: w/2, y: h/2},
					{x: -w/2, y: h/2},
					{x: -w/2, y: -h/2},
					{x: w/2, y: -h/2}
				],
				dstPts = [],
				min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE},
				max = {x: Number.MIN_VALUE, y: Number.MIN_VALUE};
			$.each(srcPts, function(i, srcPt){
				dstPts.push({
					x: srcPt.x * Math.cos(theta) - srcPt.y * Math.sin(theta),
					y: srcPt.x * Math.sin(theta) + srcPt.y * Math.cos(theta)
				});
			});
			$.each(dstPts, function(i, pt) {
				min.x = Math.min(min.x, pt.x);
				min.y = Math.min(min.y, pt.y);
				max.x = Math.max(max.x, pt.x);
				max.y = Math.max(max.y, pt.y);
			});
			return {
				width: max.x - min.x, height: max.y - min.y
			};
		};
	
	this.updateOnSelect = false;
	
	this.getstate = function() {
		var sel = fm.selectedFiles();
		return sel.length == 1 && sel[0].read && sel[0].write && sel[0].mime.indexOf('image/') !== -1 ? 0 : -1;
	};
	
	this.resizeRequest = function(data, f, dfrd) {
		var file = f || fm.file(data.target),
			tmb  = file? file.tmb : null,
			enabled = fm.isCommandEnabled('resize', data.target);
		
		if (enabled && (! file || (file && file.read && file.write && file.mime.indexOf('image/') !== -1 ))) {
			return fm.request({
				data : Object.assign(data, {
					cmd : 'resize'
				}),
				notify : {type : 'resize', cnt : 1}
			})
			.fail(function(error) {
				if (dfrd) {
					dfrd.reject(error);
				}
			})
			.done(function() {
				if (data.quality) {
					fm.storage('jpgQuality', data.quality === fm.option('jpgQuality')? null : data.quality);
				}
				dfrd && dfrd.resolve();
			});
		} else {
			var error;
			
			if (file) {
				if (file.mime.indexOf('image/') === -1) {
					error = ['errResize', file.name, 'errUsupportType'];
				} else {
					error = ['errResize', file.name, 'errPerm'];
				}
			} else {
				error = ['errResize', data.target, 'errPerm'];
			}
			
			if (dfrd) {
				dfrd.reject(error);
			} else {
				fm.error(error);
			}
			return $.Deferred().reject(error);
		}
	};
	
	this.exec = function(hashes) {
		var self  = this,
			files = this.files(hashes),
			dfrd  = $.Deferred(),
			api2  = (fm.api > 1),
			options = this.options,
			dialogWidth = 650,
			fmnode = fm.getUI(),
			ctrgrup = $().controlgroup? 'controlgroup' : 'buttonset',
			grid8Def = typeof options.grid8px === 'undefined' || options.grid8px !== 'disable'? true : false,
			presetSize = Array.isArray(options.presetSize)? options.presetSize : [],
			clactive = 'elfinder-dialog-active',
			clsediting = fm.res('class', 'editing'),
			open = function(file, id, src) {
				var isJpeg   = (file.mime === 'image/jpeg'),
					dialog   = $('<div class="elfinder-resize-container"></div>'),
					input    = '<input type="number" class="ui-corner-all"/>',
					row      = '<div class="elfinder-resize-row"></div>',
					label    = '<div class="elfinder-resize-label"></div>',
					changeTm = null,
					operate  = false,
					opStart  = function() { operate = true; },
					opStop   = function() {
						if (operate) {
							operate = false;
							control.trigger('change');
						}
					},
					control  = $('<div class="elfinder-resize-control"></div>')
						.on('focus', 'input[type=text],input[type=number]', function() {
							$(this).trigger('select');
						})
						.on('change', function() {
							changeTm && cancelAnimationFrame(changeTm);
							changeTm = requestAnimationFrame(function() {
								var panel, quty, canvas, ctx, img, sx, sy, sw, sh, deg, theta, bb;
								if (sizeImg && ! operate && (canvas = sizeImg.data('canvas'))) {
									panel = control.children('div.elfinder-resize-control-panel:visible');
									quty = panel.find('input.elfinder-resize-quality');
									if (quty.is(':visible')) {
										ctx = sizeImg.data('ctx');
										img = sizeImg.get(0);
										if (panel.hasClass('elfinder-resize-uiresize')) {
											// resize
											sw = canvas.width = width.val();
											sh = canvas.height = height.val();
											ctx.drawImage(img, 0, 0, sw, sh);
										} else if (panel.hasClass('elfinder-resize-uicrop')) {
											// crop
											sx = pointX.val();
											sy = pointY.val();
											sw = offsetX.val();
											sh = offsetY.val();
											canvas.width = sw;
											canvas.height = sh;
											ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh);
										} else {
											// rotate
											deg = degree.val();
											theta = (degree.val() * Math.PI) / 180;
											bb = getBounceBox(owidth, oheight, theta);
											sw = canvas.width = bb.width;
											sh = canvas.height = bb.height;
											ctx.save();
											if (deg % 90 !== 0) {
												ctx.fillStyle = bg.val() || '#FFF';
												ctx.fillRect(0, 0, sw, sh);
											}
											ctx.translate(sw / 2, sh / 2);
											ctx.rotate(theta);
											ctx.drawImage(img, -img.width/2, -img.height/2, owidth, oheight);
											ctx.restore();
										}
										canvas.toBlob(function(blob) {
											if (blob) {
												size1 = blob.size;
												quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
											}
										}, 'image/jpeg', Math.max(Math.min(quty.val(), 100), 1) / 100);
									}
								}
							});
						})
						.on('mouseup', 'input', function(e) {
							$(e.target).trigger('change');
						}),
					preview  = $('<div class="elfinder-resize-preview"></div>')
						.on('touchmove', function(e) {
							if ($(e.target).hasClass('touch-punch')) {
								e.stopPropagation();
								e.preventDefault();
							}
						}),
					spinner  = $('<div class="elfinder-resize-loading">'+fm.i18n('ntfloadimg')+'</div>'),
					rhandle  = $('<div class="elfinder-resize-handle touch-punch"></div>'),
					rhandlec = $('<div class="elfinder-resize-handle touch-punch"></div>'),
					uiresize = $('<div class="elfinder-resize-uiresize elfinder-resize-control-panel"></div>'),
					uicrop   = $('<div class="elfinder-resize-uicrop elfinder-resize-control-panel"></div>'),
					uirotate = $('<div class="elfinder-resize-rotate elfinder-resize-control-panel"></div>'),
					uideg270 = $('<button></button>').attr('title',fm.i18n('rotate-cw')).append($('<span class="elfinder-button-icon elfinder-button-icon-rotate-l"></span>')),
					uideg90  = $('<button></button>').attr('title',fm.i18n('rotate-ccw')).append($('<span class="elfinder-button-icon elfinder-button-icon-rotate-r"></span>')),
					uiprop   = $('<span ></span>'),
					reset    = $('<button class="elfinder-resize-reset">').text(fm.i18n('reset'))
						.on('click', function() {
							resetView();
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					uitype   = $('<div class="elfinder-resize-type"></div>')
						.append('<input type="radio" name="type" id="'+id+'-resize" value="resize" checked="checked" /><label for="'+id+'-resize">'+fm.i18n('resize')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-crop" value="crop" /><label class="api2" for="'+id+'-crop">'+fm.i18n('crop')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-rotate" value="rotate" /><label class="api2" for="'+id+'-rotate">'+fm.i18n('rotate')+'</label>'),
					mode     = 'resize',
					width   = $(input)
						.on('change', function() {
							var w = round(parseInt(width.val())),
								h = round(cratio ? w/ratio : parseInt(height.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}).addClass('elfinder-focus'),
					height  = $(input)
						.on('change', function() {
							var h = round(parseInt(height.val())),
								w = round(cratio ? h*ratio : parseInt(width.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}),
					pointX  = $(input).on('change', function(){crop.updateView();}),
					pointY  = $(input).on('change', function(){crop.updateView();}),
					offsetX = $(input).on('change', function(){crop.updateView('w');}),
					offsetY = $(input).on('change', function(){crop.updateView('h');}),
					quality = isJpeg && api2?
						$(input).val(fm.storage('jpgQuality') > 0? fm.storage('jpgQuality') : fm.option('jpgQuality'))
							.addClass('elfinder-resize-quality')
							.attr('min', '1').attr('max', '100').attr('title', '1 - 100')
							.on('blur', function(){
								var q = Math.min(100, Math.max(1, parseInt(this.value)));
								control.find('input.elfinder-resize-quality').val(q);
							})
						: null,
					degree = $('<input type="number" class="ui-corner-all" maxlength="3" value="0" />')
						.on('change', function() {
							rotate.update();
						}),
					uidegslider = $('<div class="elfinder-resize-rotate-slider touch-punch"></div>')
						.slider({
							min: 0,
							max: 360,
							value: degree.val(),
							animate: true,
							start: opStart,
							stop: opStop,
							change: function(event, ui) {
								if (ui.value != uidegslider.slider('value')) {
									rotate.update(ui.value);
								}
							},
							slide: function(event, ui) {
								rotate.update(ui.value, false);
							}
						}).find('.ui-slider-handle')
							.addClass('elfinder-tabstop')
							.off('keydown')
							.on('keydown', function(e) {
								if (e.keyCode == $.ui.keyCode.LEFT || e.keyCode == $.ui.keyCode.RIGHT) {
									e.stopPropagation();
									e.preventDefault();
									rotate.update(Number(degree.val()) + (e.keyCode == $.ui.keyCode.RIGHT? 1 : -1), false);
								}
							})
						.end(),
					pickimg,
					pickcanv,
					pickctx,
					pickc = {},
					pick = function(e) {
						var color, r, g, b, h, s, l;

						try {
							color = pickc[Math.round(e.offsetX)][Math.round(e.offsetY)];
						} catch(e) {}
						if (!color) return;

						r = color[0]; g = color[1]; b = color[2];
						h = color[3]; s = color[4]; l = color[5];

						setbg(r, g, b, (e.type === 'click'));
					},
					palpick = function(e) {
						setbg($(this).css('backgroundColor'), '', '', (e.type === 'click'));
					},
					setbg = function(r, g, b, off) {
						var s, m, cc;
						if (typeof r === 'string') {
							g = '';
							if (r && (s = $('<span>').css('backgroundColor', r).css('backgroundColor')) && (m = s.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i))) {
								r = Number(m[1]);
								g = Number(m[2]);
								b = Number(m[3]);
							}
						}
						cc = (g === '')? r : '#' + getColorCode(r, g, b);
						bg.val(cc).css({ backgroundColor: cc, backgroundImage: 'none', color: (r+g+b < 384? '#fff' : '#000') });
						preview.css('backgroundColor', cc);
						if (off) {
							imgr.off('.picker').removeClass('elfinder-resize-picking');
							pallet.off('.picker').removeClass('elfinder-resize-picking');
						}
					},
					getColorCode = function(r, g, b) {
						return $.map([r,g,b], function(c){return ('0'+parseInt(c).toString(16)).slice(-2);}).join('');
					},
					picker = $('<button>').text(fm.i18n('colorPicker'))
					.on('click', function() { 
						imgr.on('mousemove.picker click.picker', pick).addClass('elfinder-resize-picking');
						pallet.on('mousemove.picker click.picker', 'span', palpick).addClass('elfinder-resize-picking');
					})
					.button({
						icons: {
							primary: 'ui-icon-pin-s'
						},
						text: false
					}),
					reseter = $('<button>').text(fm.i18n('reset'))
						.on('click', function() { 
							setbg('', '', '', true);
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					bg = $('<input class="ui-corner-all elfinder-resize-bg" type="text">')
						.on('focus', function() {
							$(this).attr('style', '');
						})
						.on('blur', function() {
							setbg($(this).val());
						}),
					pallet  = $('<div class="elfinder-resize-pallet">').on('click', 'span', function() {
						setbg($(this).css('backgroundColor'));
					}),
					ratio   = 1,
					prop    = 1,
					owidth  = 0,
					oheight = 0,
					cratio  = true,
					cratioc = false,
					pwidth  = 0,
					pheight = 0,
					rwidth  = 0,
					rheight = 0,
					rdegree = 0,
					grid8   = isJpeg? grid8Def : false,
					constr  = $('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratio = ! cratio;
							constr.button('option', {
								icons : { primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							resize.fixHeight();
							rhandle.resizable('option', 'aspectRatio', cratio).data('uiResizable')._aspectRatio = cratio;
						})
						.button({
							icons : {
								primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					constrc = $('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratioc = ! cratioc;
							constrc.button('option', {
								icons : { primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							rhandlec.resizable('option', 'aspectRatio', cratioc).data('uiResizable')._aspectRatio = cratioc;
						})
						.button({
							icons : {
								primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					grid8px = $('<button>').html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8)
						.on('click', function() {
							grid8 = ! grid8;
							grid8px.html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8);
							setStep8();
						})
						.button(),
					setStep8 = function() {
						var step = grid8? 8 : 1;
						$.each([width, height, offsetX, offsetY, pointX, pointY], function() {
							this.attr('step', step);
						});
						if (grid8) {
							width.val(round(width.val()));
							height.val(round(height.val()));
							offsetX.val(round(offsetX.val()));
							offsetY.val(round(offsetY.val()));
							pointX.val(round(pointX.val()));
							pointY.val(round(pointY.val()));
							if (uiresize.is(':visible')) {
								resize.updateView(width.val(), height.val());
							} else if (uicrop.is(':visible')) {
								crop.updateView();
							}
						}
					},
					setuprimg = function() {
						var r_scale,
							fail = function() {
								bg.parent().hide();
								pallet.hide();
							};
						r_scale = Math.min(pwidth, pheight) / Math.sqrt(Math.pow(owidth, 2) + Math.pow(oheight, 2));
						rwidth = Math.ceil(owidth * r_scale);
						rheight = Math.ceil(oheight * r_scale);
						imgr.width(rwidth)
							.height(rheight)
							.css('margin-top', (pheight-rheight)/2 + 'px')
							.css('margin-left', (pwidth-rwidth)/2 + 'px');
						if (imgr.is(':visible') && bg.is(':visible')) {
							if (file.mime !== 'image/png') {
								preview.css('backgroundColor', bg.val());
								pickimg = $('<img>');
								if (fm.isCORS) {
									pickimg.attr('crossorigin', 'use-credentials');
								}
								pickimg.on('load', function() {
									if (pickcanv && pickcanv.width !== rwidth) {
										setColorData();
									}
								})
								.on('error', fail)
								.attr('src', canvSrc);
							} else {
								fail();
							}
						}
					},
					setupimg = function() {
						resize.updateView(owidth, oheight);
						setuprimg();
						basec
							.width(img.width())
							.height(img.height());
						imgc
							.width(img.width())
							.height(img.height());
						crop.updateView();
						jpgCalc();
					},
					setColorData = function() {
						if (pickctx) {
							var n, w, h, r, g, b, a, s, l, hsl, hue,
								data, scale, tx1, tx2, ty1, ty2, rgb,
								domi = {},
								domic = [],
								domiv, palc,
								rgbToHsl = function (r, g, b) {
									var h, s, l,
										max = Math.max(Math.max(r, g), b),
										min = Math.min(Math.min(r, g), b);
		
									// Hue, 0 ~ 359
									if (max === min) {
										h = 0;
									} else if (r === max) {
										h = ((g - b) / (max - min) * 60 + 360) % 360;
									} else if (g === max) {
										h = (b - r) / (max - min) * 60 + 120;
									} else if (b === max) {
										h = (r - g) / (max - min) * 60 + 240;
									}
									// Saturation, 0 ~ 1
									s = (max - min) / max;
									// Lightness, 0 ~ 1
									l = (r *  0.3 + g * 0.59 + b * 0.11) / 255;
		
									return [h, s, l, 'hsl'];
								},
								rgbRound = function(c) {
									return Math.round(c / 8) * 8;
								};
							
							calc:
							try {
								w = pickcanv.width = imgr.width();
								h = pickcanv.height = imgr.height();
								scale = w / owidth;
								pickctx.scale(scale, scale);
								pickctx.drawImage(pickimg.get(0), 0, 0);
			
								data = pickctx.getImageData(0, 0, w, h).data;
			
								// Range to detect the dominant color
								tx1 = w * 0.1;
								tx2 = w * 0.9;
								ty1 = h * 0.1;
								ty2 = h * 0.9;
			
								for (var y = 0; y < h - 1; y++) {
									for (var x = 0; x < w - 1; x++) {
										n = x * 4 + y * w * 4;
										// RGB
										r = data[n]; g = data[n + 1]; b = data[n + 2]; a = data[n + 3];
										// check alpha ch
										if (a !== 255) {
											bg.parent().hide();
											pallet.hide();
											break calc;
										}
										// HSL
										hsl = rgbToHsl(r, g, b);
										hue = Math.round(hsl[0]); s = Math.round(hsl[1] * 100); l = Math.round(hsl[2] * 100);
										if (! pickc[x]) {
											pickc[x] = {};
										}
										// set pickc
										pickc[x][y] = [r, g, b, hue, s, l];
										// detect the dominant color
										if ((x < tx1 || x > tx2) && (y < ty1 || y > ty2)) {
											rgb = rgbRound(r) + ',' + rgbRound(g) + ',' + rgbRound(b);
											if (! domi[rgb]) {
												domi[rgb] = 1;
											} else {
												++domi[rgb];
											}
										}
									}
								}
								
								if (! pallet.children(':first').length) {
									palc = 1;
									$.each(domi, function(c, v) {
										domic.push({c: c, v: v});
									});
									$.each(domic.sort(function(a, b) {
										return (a.v > b.v)? -1 : 1;
									}), function() {
										if (this.v < 2 || palc > 10) {
											return false;
										}
										pallet.append($('<span style="width:20px;height:20px;display:inline-block;background-color:rgb('+this.c+');">'));
										++palc;
									});
								}
							} catch(e) {
								picker.hide();
								pallet.hide();
							}
						}
					},
					setupPicker = function() {
						try {
							pickcanv = document.createElement('canvas');
							pickctx = pickcanv.getContext('2d');
						} catch(e) {
							picker.hide();
							pallet.hide();
						}
					},
					setupPreset = function() {
						preset.on('click', 'span.elfinder-resize-preset', function() {
							var btn = $(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								r = owidth / oheight;
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth > w || oheight > h) {
								if (owidth <= w) {
									w = round(h * r);
								} else if (oheight <= h) {
									h = round(w / r);
								} else {
									if (owidth - w > oheight - h) {
										h = round(w / r);
									} else {
										w = round(h * r);
									}
								}
							} else {
								w = owidth;
								h = oheight;
							}
							width.val(w);
							height.val(h);
							resize.updateView(w, h);
							jpgCalc();
						});
						presetc.on('click', 'span.elfinder-resize-preset', function() {
							var btn = $(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								x = pointX.val(),
								y = pointY.val();
							
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth >= w && oheight >= h) {
								if (owidth - w - x < 0) {
									x = owidth - w;
								}
								if (oheight - h - y < 0) {
									y = oheight - h;
								}
								pointX.val(x);
								pointY.val(y);
								offsetX.val(w);
								offsetY.val(h);
								crop.updateView();
								jpgCalc();
							}
						});
						presetc.children('span.elfinder-resize-preset').each(function() {
							var btn = $(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1];
							
							btn[(owidth >= w && oheight >= h)? 'show' : 'hide']();
						});
					},
					dimreq  = null,
					inited  = false,
					setdim  = function(dim) {
						var rfile = fm.file(file.hash);
						rfile.width = dim[0];
						rfile.height = dim[1];
					},
					init    = function() {
						var elm, memSize, r_scale, imgRatio;
						
						if (inited) {
							return;
						}
						inited = true;
						dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
						
						// check lossless rotete
						if (fm.api >= 2.1030) {
							if (losslessRotate === 0) {
								fm.request({
									data: {
										cmd    : 'resize',
										target : file.hash,
										degree : 0,
										mode   : 'rotate'
									},
									preventDefault : true
								}).done(function(data) {
									losslessRotate = data.losslessRotate? 1 : -1;
									if (losslessRotate === 1 && (degree.val() % 90 === 0)) {
										uirotate.children('div.elfinder-resize-quality').hide();
									}
								}).fail(function() {
									losslessRotate = -1;
								});
							}
						} else {
							losslessRotate = -1;
						}
						
						elm = img.get(0);
						memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
					
						memSize && img.removeAttr('width').removeAttr('height');
						
						owidth  = file.width || elm.naturalWidth || elm.width || img.width();
						oheight = file.height || elm.naturalHeight || elm.height || img.height();
						if (!file.width || !file.height) {
							setdim([owidth, oheight]);
						}
						
						memSize && img.width(memSize.w).height(memSize.h);
						
						dMinBtn.show();
	
						imgRatio = oheight / owidth;
						
						if (imgRatio < 1 && preview.height() > preview.width() * imgRatio) {
							preview.height(preview.width() * imgRatio);
						}
						
						if (preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
						}
						
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						
						spinner.remove();
						
						ratio = owidth/oheight;
	
						rhandle.append(img.show()).show();
						width.val(owidth);
						height.val(oheight);
	
						setupPicker();
						setupPreset();
						setupimg();
						
						uitype[ctrgrup]('enable');
						control.find('input,select').prop('disabled', false)
							.filter(':text').on('keydown', function(e) {
								var cOpts;
								if (e.keyCode == $.ui.keyCode.ENTER) {
									e.stopPropagation();
									e.preventDefault();
									cOpts = {
										title  : $('input:checked', uitype).val(),
										text   : 'confirmReq',
										accept : {
											label    : 'btnApply',
											callback : function() {  
												save();
											}
										},
										cancel : {
											label    : 'btnCancel',
											callback : function(){
												$(this).trigger('focus');
											}
										}
									};
										
									if (useSaveAs) {
										cOpts['buttons'] = [{
											label    : 'btnSaveAs',
											callback : function() {
												requestAnimationFrame(saveAs);
											}
										}];
									}
									fm.confirm(cOpts);
									return;
								}
							})
							.on('keyup', function() {
								var $this = $(this);
								if (! $this.hasClass('elfinder-resize-bg')) {
									requestAnimationFrame(function() {
										$this.val($this.val().replace(/[^0-9]/g, ''));
									});
								}
							})
							.filter(':first');
						
						setStep8();
						!fm.UA.Mobile && width.trigger('focus');
						resizable();
					},
					img     = $('<img/>')
						.on('load', init)
						.on('error', function() {
							spinner.html(fm.i18n('ntfsmth')).css('background', 'transparent');
						}),
					basec = $('<div></div>'),
					imgc = $('<img/>'),
					coverc = $('<div></div>'),
					imgr = $('<img class="elfinder-resize-imgrotate" />'),
					round = function(v, max) {
						v = grid8? Math.round(v/8)*8 : Math.round(v);
						v = Math.max(0, v);
						if (max && v > max) {
							v = grid8? Math.floor(max/8)*8 : max;
						}
						return v;
					},
					resetView = function() {
						width.val(owidth);
						height.val(oheight);
						resize.updateView(owidth, oheight);
						pointX.val(0);
						pointY.val(0);
						offsetX.val(owidth);
						offsetY.val(oheight);
						crop.updateView();
						jpgCalc();
					},
					resize = {
						update : function() {
							width.val(round(img.width()/prop));
							height.val(round(img.height()/prop));
							jpgCalc();
						},
						
						updateView : function(w, h) {
							if (w > pwidth || h > pheight) {
								if (w / pwidth > h / pheight) {
									prop = pwidth / w;
									img.width(pwidth).height(round(h*prop));
								} else {
									prop = pheight / h;
									img.height(pheight).width(round(w*prop));
								}
							} else {
								img.width(round(w)).height(round(h));
							}
							
							prop = img.width()/w;
							uiprop.text('1 : '+(1/prop).toFixed(2));
							resize.updateHandle();
						},
						
						updateHandle : function() {
							rhandle.width(img.width()).height(img.height());
						},
						fixHeight : function() {
							var w, h;
							if (cratio) {
								w = width.val();
								h = round(w/ratio);
								resize.updateView(w, h);
								height.val(h);
							}
						}
					},
					crop = {
						update : function(change) {
							pointX.val(round(((rhandlec.data('x')||rhandlec.position().left))/prop, owidth));
							pointY.val(round(((rhandlec.data('y')||rhandlec.position().top))/prop, oheight));
							if (change !== 'xy') {
								offsetX.val(round((rhandlec.data('w')||rhandlec.width())/prop, owidth - pointX.val()));
								offsetY.val(round((rhandlec.data('h')||rhandlec.height())/prop, oheight - pointY.val()));
							}
							jpgCalc();
						},
						updateView : function(change) {
							var r, x, y, w, h;
							
							pointX.val(round(pointX.val(), owidth - (grid8? 8 : 1)));
							pointY.val(round(pointY.val(), oheight - (grid8? 8 : 1)));
							offsetX.val(round(offsetX.val(), owidth - pointX.val()));
							offsetY.val(round(offsetY.val(), oheight - pointY.val()));
							
							if (cratioc) {
								r = coverc.width() / coverc.height();
								if (change === 'w') {
									offsetY.val(round(parseInt(offsetX.val()) / r));
								} else if (change === 'h') {
									offsetX.val(round(parseInt(offsetY.val()) * r));
								}
							}
							x = Math.round(parseInt(pointX.val()) * prop);
							y = Math.round(parseInt(pointY.val()) * prop);
							if (change !== 'xy') {
								w = Math.round(parseInt(offsetX.val()) * prop);
								h = Math.round(parseInt(offsetY.val()) * prop);
							} else {
								w = rhandlec.data('w');
								h = rhandlec.data('h');
							}
							rhandlec.data({x: x, y: y, w: w, h: h})
								.width(w)
								.height(h)
								.css({left: x, top: y});
							coverc.width(w)
								.height(h);
						},
						resize_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top, w: ui.size.width, h: ui.size.height});
							crop.update();
							crop.updateView();
						},
						drag_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top});
							crop.update('xy');
						}
					},
					rotate = {
						mouseStartAngle : 0,
						imageStartAngle : 0,
						imageBeingRotated : false,
						
						setQuality : function() {
							uirotate.children('div.elfinder-resize-quality')[(losslessRotate > 0 && (degree.val() % 90) === 0)? 'hide' : 'show']();
						},
						
						update : function(value, animate) {
							if (typeof value == 'undefined') {
								rdegree = value = parseInt(degree.val());
							}
							if (typeof animate == 'undefined') {
								animate = true;
							}
							if (! animate || fm.UA.Opera || fm.UA.ltIE8) {
								imgr.rotate(value);
							} else {
								imgr.animate({rotate: value + (fm.UA.Chrome? '' : 'deg')});
							}
							value = value % 360;
							if (value < 0) {
								value += 360;
							}
							degree.val(parseInt(value));

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
						},
						
						execute : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseXFromCentre = ev.pageX - imageCentre[0];
							var mouseYFromCentre = ev.pageY - imageCentre[1];
							var mouseAngle = Math.atan2( mouseYFromCentre, mouseXFromCentre );
							
							var rotateAngle = mouseAngle - rotate.mouseStartAngle + rotate.imageStartAngle;
							rotateAngle = Math.round(parseFloat(rotateAngle) * 180 / Math.PI);
							
							if ( e.shiftKey ) {
								rotateAngle = Math.round((rotateAngle + 6)/15) * 15;
							}
							
							imgr.rotate(rotateAngle);
							
							rotateAngle = rotateAngle % 360;
							if (rotateAngle < 0) {
								rotateAngle += 360;
							}
							degree.val(rotateAngle);

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
							
							return false;
						},
						
						start : function ( e ) {
							if (imgr.hasClass('elfinder-resize-picking')) {
								return;
							}
							
							opStart();
							rotate.imageBeingRotated = true;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseStartXFromCentre = ev.pageX - imageCentre[0];
							var mouseStartYFromCentre = ev.pageY - imageCentre[1];
							rotate.mouseStartAngle = Math.atan2( mouseStartYFromCentre, mouseStartXFromCentre );
							
							rotate.imageStartAngle = parseFloat(imgr.rotate()) * Math.PI / 180.0;
							
							$(document).on('mousemove', rotate.execute);
							imgr.on('touchmove', rotate.execute);
							
							return false;
						},
							
						stop : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							$(document).off('mousemove', rotate.execute);
							imgr.off('touchmove', rotate.execute);
							
							requestAnimationFrame(function() { rotate.imageBeingRotated = false; });
							opStop();
							
							return false;
						},
						
						getCenter : function ( image ) {
							
							var currentRotation = imgr.rotate();
							imgr.rotate(0);
							
							var imageOffset = imgr.offset();
							var imageCentreX = imageOffset.left + imgr.width() / 2;
							var imageCentreY = imageOffset.top + imgr.height() / 2;
							
							imgr.rotate(currentRotation);
							
							return Array( imageCentreX, imageCentreY );
						}
					},
					resizable = function(destroy) {
						if (destroy) {
							rhandle.filter(':ui-resizable').resizable('destroy');
							rhandle.hide();
						}
						else {
							rhandle.show();
							rhandle.resizable({
								alsoResize  : img,
								aspectRatio : cratio,
								resize      : resize.update,
								start       : opStart,
								stop        : function(e) {
									resize.fixHeight;
									resize.updateView(width.val(), height.val());
									opStop();
								}
							});
							dinit();
						}
					},
					croppable = function(destroy) {
						if (destroy) {
							rhandlec.filter(':ui-resizable').resizable('destroy')
								.filter(':ui-draggable').draggable('destroy');
							basec.hide();
						}
						else {
							basec.show();
							
							rhandlec
								.resizable({
									containment : basec,
									aspectRatio : cratioc,
									resize      : crop.resize_update,
									start       : opStart,
									stop        : opStop,
									handles     : 'all'
								})
								.draggable({
									handle      : coverc,
									containment : imgc,
									drag        : crop.drag_update,
									start       : opStart,
									stop        : function() {
										crop.updateView('xy');
										opStop();
									}
								});
							
							dinit();
							crop.update();
						}
					},
					rotateable = function(destroy) {
						if (destroy) {
							imgr.hide();
						}
						else {
							imgr.show();
							dinit();
						}
					},
					checkVals = function() {
						var w, h, x, y, d, q, b = '';
						
						if (mode == 'resize') {
							w = parseInt(width.val()) || 0;
							h = parseInt(height.val()) || 0;
						} else if (mode == 'crop') {
							w = parseInt(offsetX.val()) || 0;
							h = parseInt(offsetY.val()) || 0;
							x = parseInt(pointX.val()) || 0;
							y = parseInt(pointY.val()) || 0;
						} else if (mode == 'rotate') {
							w = owidth;
							h = oheight;
							d = parseInt(degree.val()) || 0;
							if (d < 0 || d > 360) {
								fm.error('Invalid rotate degree');
								return false;
							}
							if (d == 0 || d == 360) {
								fm.error('errResizeNoChange');
								return false;
							}
							b = bg.val();
						}
						q = quality? parseInt(quality.val()) : 0;
						
						if (mode != 'rotate') {
							if (w <= 0 || h <= 0) {
								fm.error('Invalid image size');
								return false;
							}
							if (w == owidth && h == oheight && parseInt(size0 / 1000) === parseInt(size1/1000)) {
								fm.error('errResizeNoChange');
								return false;
							}
						}
						
						return {w: w, h: h, x: x, y: y, d: d, q: q, b: b};
					},
					save = function() {
						var vals;
						
						if (vals = checkVals()) {
							dialog.elfinderdialog('close');
							self.resizeRequest({
								target : file.hash,
								width  : vals.w,
								height : vals.h,
								x      : vals.x,
								y      : vals.y,
								degree : vals.d,
								quality: vals.q,
								bg     : vals.b,
								mode   : mode
							}, file, dfrd);
						}
					},
					saveAs = function() {
						var fail = function() {
								dialogs.addClass(clsediting).fadeIn(function() {
									base.addClass(clactive);
								});
								fm.disable();
							},
							make = function() {
								self.mime = file.mime;
								self.prefix = file.name.replace(/ \d+(\.[^.]+)?$/, '$1');
								self.requestCmd = 'mkfile';
								self.nextAction = {};
								self.data = {target : file.phash};
								$.proxy(fm.res('mixin', 'make'), self)()
									.done(function(data) {
										var hash, dfd;
										if (data.added && data.added.length) {
											hash = data.added[0].hash;
											dfd = fm.api < 2.1032? fm.url(file.hash, { async: true, temporary: true }) : null;
											$.when(dfd).done(function(url) {
												fm.request({
													options : {type : 'post'},
													data : {
														cmd     : 'put',
														target  : hash,
														encoding: dfd? 'scheme' : 'hash', 
														content : dfd? fm.convAbsUrl(url) : file.hash
													},
													notify : {type : 'copy', cnt : 1},
													syncOnFail : true
												})
												.fail(fail)
												.done(function(data) {
													data = fm.normalize(data);
													fm.updateCache(data);
													file = fm.file(hash);
													data.changed && data.changed.length && fm.change(data);
													base.show().find('.elfinder-dialog-title').html(fm.escape(file.name));
													save();
													dialogs.fadeIn();
												});
											}).fail(fail);
										} else {
											fail();
										}
									})
									.fail(fail)
									.always(function() {
										delete self.mime;
										delete self.prefix;
										delete self.nextAction;
										delete self.data;
									});
								fm.trigger('unselectfiles', { files: [ file.hash ] });
							},
							reqOpen = null,
							dialogs;
						
						if (checkVals()) {
							dialogs = fmnode.children('.' + self.dialogClass + ':visible').removeClass(clsediting).fadeOut();
							base.removeClass(clactive);
							fm.enable();
							if (fm.searchStatus.state < 2 && file.phash !== fm.cwd().hash) {
								reqOpen = fm.exec('open', [file.phash], {thash: file.phash});
							}
							
							$.when([reqOpen]).done(function() {
								reqOpen? fm.one('cwdrender', make) : make();
							}).fail(fail);
						}
					},
					buttons = {},
					hline   = 'elfinder-resize-handle-hline',
					vline   = 'elfinder-resize-handle-vline',
					rpoint  = 'elfinder-resize-handle-point',
					canvSrc = src,
					sizeImg = quality? $('<img>').attr('crossorigin', fm.isCORS? 'use-credentials' : '').attr('src', canvSrc).on('load', function() {
						try {
							var canv = document.createElement('canvas');
							sizeImg.data('canvas', canv).data('ctx', canv.getContext('2d'));
							jpgCalc();
						} catch(e) {
							sizeImg.removeData('canvas').removeData('ctx');
						}
					}) : null,
					jpgCalc = function() {
						control.find('input.elfinder-resize-quality:visible').trigger('change');
					},
					dinit   = function(e) {
						if (base.hasClass('elfinder-dialog-minimized') || base.is(':hidden')) {
							return;
						}
						
						preset.hide();
						presetc.hide();
						
						var win   = fm.options.dialogContained? fmnode : $(window),
							winH  = win.height(),
							winW  = win.width(),
							presW = 'auto',
							presIn = true,
							dw, ctrW, prvW;
						
						base.width(Math.min(dialogWidth, winW - 30));
						preview.attr('style', '');
						if (owidth && oheight) {
							pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							resize.updateView(owidth, oheight);
						}
						ctrW  = dialog.find('div.elfinder-resize-control').width();
						prvW  = preview.width();
						
						dw = dialog.width() - 20;
						if (prvW > dw) {
							preview.width(dw);
							presIn = false;
						} else if ((dw - prvW) < ctrW) {
							if (winW > winH) {
								preview.width(dw - ctrW - 20);
							} else {
								preview.css({ float: 'none', marginLeft: 'auto', marginRight: 'auto'});
								presIn = false;
							}
						}
						if (presIn) {
							presW = ctrW;
						}
						pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
						if (fmnode.hasClass('elfinder-fullscreen')) {
							if (base.height() > winH) {
								winH -= 2;
								preview.height(winH - base.height() + preview.height());
								base.css('top', 0 - fmnode.offset().top);
							}
						} else {
							winH -= 30;
							(preview.height() > winH) && preview.height(winH);
						}
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						if (owidth && oheight) {
							setupimg();
						}
						if (img.height() && preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							setuprimg();
						}
						
						preset.css('width', presW).show();
						presetc.css('width', presW).show();
						if (!presetc.children('span.elfinder-resize-preset:visible').length) {
							presetc.hide();
						}
						dialog.elfinderdialog('posInit');
					},
					preset = (function() {
						var sets = $('<fieldset class="elfinder-resize-preset-container">').append($('<legend>').html(fm.i18n('presets'))).css('box-sizing', 'border-box').hide(),
							hasC;
						$.each(presetSize, function(i, s) {
							if (s.length === 2) {
								hasC = true;
								sets.append($('<span class="elfinder-resize-preset"></span>')
									.data('s', s)
									.text(s[0]+'x'+s[1])
									.button()
								);
							}
						});
						if (!hasC) {
							return $();
						} else {
							return sets;
						}
					})(),
					presetc = preset.clone(true),
					useSaveAs = fm.uploadMimeCheck(file.mime, file.phash),
					dMinBtn, base;
				
				size0 = size1 = file.size;
				uiresize.append(
					$(row).append($(label).text(fm.i18n('width')), width),
					$(row).append($(label).text(fm.i18n('height')), height, $('<div class="elfinder-resize-whctrls">').append(constr, reset)),
					(quality? $(row).append($(label).text(fm.i18n('quality')), quality, $('<span></span>')) : $()),
					(isJpeg? $(row).append($(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8'), grid8px) : $()),
					$(row).append($(label).text(fm.i18n('scale')), uiprop),
					$(row).append(preset)
				);

				if (api2) {
					uicrop.append(
						$(row).append($(label).text('X'), pointX),
						$(row).append($(label).text('Y')).append(pointY),
						$(row).append($(label).text(fm.i18n('width')), offsetX),
						$(row).append($(label).text(fm.i18n('height')), offsetY, $('<div class="elfinder-resize-whctrls">').append(constrc, reset.clone(true))),
						(quality? $(row).append($(label).text(fm.i18n('quality')), quality.clone(true), $('<span></span>')) : $()),
						(isJpeg? $(row).append($(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8')) : $()),
						$(row).append(presetc)
					);
					
					uirotate.append(
						$(row).addClass('elfinder-resize-degree').append(
							$(label).text(fm.i18n('rotate')),
							degree,
							$('<span></span>').text(fm.i18n('degree')),
							$('<div></div>').append(uideg270, uideg90)[ctrgrup]()
						),
						$(row).css('height', '20px').append(uidegslider),
						((quality)? $(row)[losslessRotate < 1? 'show' : 'hide']().addClass('elfinder-resize-quality').append(
							$(label).text(fm.i18n('quality')),
							quality.clone(true),
							$('<span></span>')) : $()
						),
						$(row).append($(label).text(fm.i18n('bgcolor')), bg, picker, reseter),
						$(row).css('height', '20px').append(pallet)
					);
					uideg270.on('click', function() {
						rdegree = rdegree - 90;
						rotate.update(rdegree);
					});
					uideg90.on('click', function(){
						rdegree = rdegree + 90;
						rotate.update(rdegree);
					});
				}
				
				dialog.append(uitype).on('resize', function(e){
					e.stopPropagation();
				});

				if (api2) {
					control.append(/*$(row), */uiresize, uicrop.hide(), uirotate.hide());
				} else {
					control.append(/*$(row), */uiresize);
				}
				
				rhandle.append('<div class="'+hline+' '+hline+'-top"></div>',
					'<div class="'+hline+' '+hline+'-bottom"></div>',
					'<div class="'+vline+' '+vline+'-left"></div>',
					'<div class="'+vline+' '+vline+'-right"></div>',
					'<div class="'+rpoint+' '+rpoint+'-e"></div>',
					'<div class="'+rpoint+' '+rpoint+'-se"></div>',
					'<div class="'+rpoint+' '+rpoint+'-s"></div>');
					
				preview.append(spinner).append(rhandle.hide()).append(img.hide());

				if (api2) {
					rhandlec.css('position', 'absolute')
						.append('<div class="'+hline+' '+hline+'-top"></div>',
						'<div class="'+hline+' '+hline+'-bottom"></div>',
						'<div class="'+vline+' '+vline+'-left"></div>',
						'<div class="'+vline+' '+vline+'-right"></div>',
						'<div class="'+rpoint+' '+rpoint+'-n"></div>',
						'<div class="'+rpoint+' '+rpoint+'-e"></div>',
						'<div class="'+rpoint+' '+rpoint+'-s"></div>',
						'<div class="'+rpoint+' '+rpoint+'-w"></div>',
						'<div class="'+rpoint+' '+rpoint+'-ne"></div>',
						'<div class="'+rpoint+' '+rpoint+'-se"></div>',
						'<div class="'+rpoint+' '+rpoint+'-sw"></div>',
						'<div class="'+rpoint+' '+rpoint+'-nw"></div>');

					preview.append(basec.css('position', 'absolute').hide().append(imgc, rhandlec.append(coverc)));
					
					preview.append(imgr.hide());
				}
				
				preview.css('overflow', 'hidden');
				
				dialog.append(preview, control);
				
				buttons[fm.i18n('btnApply')] = save;
				if (useSaveAs) {
					buttons[fm.i18n('btnSaveAs')] = function() { requestAnimationFrame(saveAs); };
				}
				buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
				
				dialog.find('input,button').addClass('elfinder-tabstop');
				
				base = self.fmDialog(dialog, {
					title          : fm.escape(file.name),
					width          : dialogWidth,
					resizable      : false,
					buttons        : buttons,
					open           : function() {
						var doDimReq = function(force) {
								dimreq = fm.request({
									data : {cmd : 'dim', target : file.hash, substitute : substituteImg? 400 : ''},
									preventDefault : true
								})
								.done(function(data) {
									if (!data.url && needPng) {
										dialog.elfinderdialog('close');
										fm.error(['errOpen', file.name]);
									} else {
										if (data.dim) {
											var dim = data.dim.split('x');
											file.width = dim[0];
											file.height = dim[1];
											setdim(dim);
											if (data.url) {
												img.attr('src', data.url);
												imgc.attr('src', data.url);
												imgr.attr('src', data.url);
											}
											return init();
										}
									}
								});
							},
							needPng = !{'image/jpeg':true,'image/png':true,'image/gif':true,}[file.mime],
							substituteImg = fm.option('substituteImg', file.hash) && (needPng || file.size > options.dimSubImgSize)? true : false,
							hasSize = (file.width && file.height)? true : false;
						dMinBtn = base.find('.ui-dialog-titlebar .elfinder-titlebar-minimize').hide();
						fm.bind('resize', dinit);
						img.attr('src', src).one('error.dimreq', function() {
							doDimReq(true);
						});
						imgc.attr('src', src);
						imgr.attr('src', src);
						if (api2) {
							imgr.on('mousedown touchstart', rotate.start)
								.on('touchend', rotate.stop);
							base.on('mouseup', rotate.stop);
						}
						if (hasSize && !substituteImg) {
							return init();
						}
						if (file.size > (options.getDimThreshold || 0)) {
							img.off('error.dimreq');
							doDimReq();
						} else if (hasSize) {
							return init();
						}
					},
					close          : function() {
						if (api2) {
							imgr.off('mousedown touchstart', rotate.start)
								.off('touchend', rotate.stop);
							$(document).off('mouseup', rotate.stop);
						}
						fm.unbind('resize', dinit);
						$(this).elfinderdialog('destroy');
					},
					resize         : function(e, data) {
						if (data && data.minimize === 'off') {
							dinit();
						}
					}
				}).attr('id', id).closest('.ui-dialog').addClass(clsediting);

				// Fix for https://github.com/Studio-42/elFinder/issues/3684
				uitype[ctrgrup]()[ctrgrup]('disable').find('input').on('change', function() {
					mode = $(this).val();

					resetView();
					resizable(true);
					croppable(true);
					rotateable(true);

					if (mode == 'resize') {
						uiresize.show();
						uirotate.hide();
						uicrop.hide();
						resizable();
						isJpeg && grid8px.insertAfter(uiresize.find('.elfinder-resize-grid8'));
					}
					else if (mode == 'crop') {
						uirotate.hide();
						uiresize.hide();
						uicrop.show();
						croppable();
						isJpeg && grid8px.insertAfter(uicrop.find('.elfinder-resize-grid8'));
					} else if (mode == 'rotate') {
						uiresize.hide();
						uicrop.hide();
						uirotate.show();
						rotateable();
					}
				});

				// for IE < 9 dialog mising at open second+ time.
				if (fm.UA.ltIE8) {
					$('.elfinder-dialog').css('filter', '');
				}
				
				coverc.css({ 'opacity': 0.2, 'background-color': '#fff', 'position': 'absolute'}),
				rhandlec.css('cursor', 'move');
				rhandlec.find('.elfinder-resize-handle-point').css({
					'background-color' : '#fff',
					'opacity': 0.5,
					'border-color':'#000'
				});

				if (! api2) {
					uitype.find('.api2').remove();
				}
				
				control.find('input,select').prop('disabled', true);
				control.find('input.elfinder-resize-quality')
					.next('span').addClass('elfinder-resize-jpgsize').attr('title', fm.i18n('roughFileSize'));

			},
			
			id, dialog, size0, size1
			;
			

		if (!files.length || files[0].mime.indexOf('image/') === -1) {
			return dfrd.reject();
		}
		
		id = 'resize-'+fm.namespace+'-'+files[0].hash;
		dialog = fmnode.find('#'+id);
		
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return dfrd.resolve();
		}
		
		
		fm.openUrl(files[0].hash, 'sameorigin', function(src) {
			open(files[0], id, src);
		});
			
		return dfrd;
	};

};

(function ($) {
	
	var findProperty = function (styleObject, styleArgs) {
		var i = 0 ;
		for( i in styleArgs) {
	        if (typeof styleObject[styleArgs[i]] != 'undefined') 
	        	return styleArgs[i];
		}
		styleObject[styleArgs[i]] = '';
	    return styleArgs[i];
	};
	
	$.cssHooks.rotate = {
		get: function(elem, computed, extra) {
			return $(elem).rotate();
		},
		set: function(elem, value) {
			$(elem).rotate(value);
			return value;
		}
	};
	$.cssHooks.transform = {
		get: function(elem, computed, extra) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			return elem.style[name];
		},
		set: function(elem, value) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			elem.style[name] = value;
			return value;
		}
	};
	
	$.fn.rotate = function(val) {
		var r;
		if (typeof val == 'undefined') {
			if (!!window.opera) {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])?
					Math.round(parseFloat(r[1]) * 180 / Math.PI) : 0;
			} else {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])? parseInt(r[1]) : 0;
			}
		}
		this.css('transform', 
			this.css('transform').replace(/none|rotate\(.*?\)/, '') + 'rotate(' + parseInt(val) + 'deg)');
		return this;
	};

	$.fx.step.rotate  = function(fx) {
		if ( fx.state == 0 ) {
			fx.start = $(fx.elem).rotate();
			fx.now = fx.start;
		}
		$(fx.elem).rotate(fx.now);
	};

	if (typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined") { // IE & IE<9
		var GetAbsoluteXY = function(element) {
			var pnode = element;
			var x = pnode.offsetLeft;
			var y = pnode.offsetTop;
			
			while ( pnode.offsetParent ) {
				pnode = pnode.offsetParent;
				if (pnode != document.body && pnode.currentStyle['position'] != 'static') {
					break;
				}
				if (pnode != document.body && pnode != document.documentElement) {
					x -= pnode.scrollLeft;
					y -= pnode.scrollTop;
				}
				x += pnode.offsetLeft;
				y += pnode.offsetTop;
			}
			
			return { x: x, y: y };
		};
		
		var StaticToAbsolute = function (element) {
			if ( element.currentStyle['position'] != 'static') {
				return ;
			}

			var xy = GetAbsoluteXY(element);
			element.style.position = 'absolute' ;
			element.style.left = xy.x + 'px';
			element.style.top = xy.y + 'px';
		};

		var IETransform = function(element,transform){

			var r;
			var m11 = 1;
			var m12 = 1;
			var m21 = 1;
			var m22 = 1;

			if (typeof element.style['msTransform'] != 'undefined'){
				return true;
			}

			StaticToAbsolute(element);

			r = transform.match(/rotate\((.*?)\)/);
			var rotate =  ( r && r[1])	?	parseInt(r[1])	:	0;

			rotate = rotate % 360;
			if (rotate < 0) rotate = 360 + rotate;

			var radian= rotate * Math.PI / 180;
			var cosX =Math.cos(radian);
			var sinY =Math.sin(radian);

			m11 *= cosX;
			m12 *= -sinY;
			m21 *= sinY;
			m22 *= cosX;

			element.style.filter =  (element.style.filter || '').replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/, "" ) +
				("progid:DXImageTransform.Microsoft.Matrix(" + 
					 "M11=" + m11 + 
					",M12=" + m12 + 
					",M21=" + m21 + 
					",M22=" + m22 + 
					",FilterType='bilinear',sizingMethod='auto expand')") 
				;

	  		var ow = parseInt(element.style.width || element.width || 0 );
	  		var oh = parseInt(element.style.height || element.height || 0 );

			radian = rotate * Math.PI / 180;
			var absCosX =Math.abs(Math.cos(radian));
			var absSinY =Math.abs(Math.sin(radian));

			var dx = (ow - (ow * absCosX + oh * absSinY)) / 2;
			var dy = (oh - (ow * absSinY + oh * absCosX)) / 2;

			element.style.marginLeft = Math.floor(dx) + "px";
			element.style.marginTop  = Math.floor(dy) + "px";

			return(true);
		};
		
		var transform_set = $.cssHooks.transform.set;
		$.cssHooks.transform.set = function(elem, value) {
			transform_set.apply(this, [elem, value] );
			IETransform(elem,value);
			return value;
		};
	}

})(jQuery);


/*
 * File: /js/commands/restore.js
 */

/**
 * @class  elFinder command "restore"
 * Restore items from the trash
 *
 * @author Naoki Sawada
 **/
(elFinder.prototype.commands.restore = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		fakeCnt = 0,
		getFilesRecursively = function(files) {
			var dfd = $.Deferred(),
				dirs = [],
				results = [],
				reqs = [],
				phashes = [],
				getFile;
			
			dfd._xhrReject = function() {
				$.each(reqs, function() {
					this && this.reject && this.reject();
				});
				getFile && getFile._xhrReject();
			};
			
			$.each(files, function(i, f) {
				f.mime === 'directory'? dirs.push(f) : results.push(f);
			});
			
			if (dirs.length) {
				$.each(dirs, function(i, d) {
					reqs.push(fm.request({
						data : {cmd  : 'open', target : d.hash},
						preventDefault : true,
						asNotOpen : true
					}));
					phashes[i] = d.hash;
				});
				$.when.apply($, reqs).fail(function() {
					dfd.reject();
				}).done(function() {
					var items = [];
					$.each(arguments, function(i, r) {
						var files;
						if (r.files) {
							if (r.files.length) {
								items = items.concat(r.files);
							} else {
								items.push({
									hash: 'fakefile_' + (fakeCnt++),
									phash: phashes[i],
									mime: 'fakefile',
									name: 'fakefile',
									ts: 0
								});
							}
						}
					});
					fm.cache(items);
					getFile = getFilesRecursively(items).done(function(res) {
						results = results.concat(res);
						dfd.resolve(results);
					});
				});
			} else {
				dfd.resolve(results);
			}
			
			return dfd;
		},
		restore = function(dfrd, files, targets, ops) {
			var rHashes = {},
				others = [],
				found = false,
				dirs = [],
				opts = ops || {},
				id = +new Date(),
				tm, getFile;
			
			fm.lockfiles({files : targets});
			
			dirs = $.map(files, function(f) {
				return f.mime === 'directory'? f.hash : null;
			});
			
			dfrd.done(function() {
				dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
			}).always(function() {
				fm.unlockfiles({files : targets});
			});
			
			tm = setTimeout(function() {
				fm.notify({type : 'search', id : id, cnt : 1, hideCnt : true, cancel : function() {
					getFile && getFile._xhrReject();
					dfrd.reject();
				}});
			}, fm.notifyDelay);

			fakeCnt = 0;
			getFile = getFilesRecursively(files).always(function() {
				tm && clearTimeout(tm);
				fm.notify({type : 'search', id: id, cnt : -1, hideCnt : true});
			}).fail(function() {
				dfrd.reject('errRestore', 'errFileNotFound');
			}).done(function(res) {
				var errFolderNotfound = ['errRestore', 'errFolderNotFound'],
					dirTop = '';
				
				if (res.length) {
					$.each(res, function(i, f) {
						var phash = f.phash,
							pfile,
							srcRoot, tPath;
						while(phash) {
							if (srcRoot = fm.trashes[phash]) {
								if (! rHashes[srcRoot]) {
									if (found) {
										// Keep items of other trash
										others.push(f.hash);
										return null; // continue $.each
									}
									rHashes[srcRoot] = {};
									found = true;
								}
		
								tPath = fm.path(f.hash).substr(fm.path(phash).length).replace(/\\/g, '/');
								tPath = tPath.replace(/\/[^\/]+?$/, '');
								if (tPath === '') {
									tPath = '/';
								}
								if (!rHashes[srcRoot][tPath]) {
									rHashes[srcRoot][tPath] = [];
								}
								if (f.mime === 'fakefile') {
									fm.updateCache({removed:[f.hash]});
								} else {
									rHashes[srcRoot][tPath].push(f.hash);
								}
								if (!dirTop || dirTop.length > tPath.length) {
									dirTop = tPath;
								}
								break;
							}
							
							// Go up one level for next check
							pfile = fm.file(phash);
							
							if (!pfile) {
								phash = false;
								// Detection method for search results
								$.each(fm.trashes, function(ph) {
									var file = fm.file(ph),
										filePath = fm.path(ph);
									if ((!file.volumeid || f.hash.indexOf(file.volumeid) === 0) && fm.path(f.hash).indexOf(filePath) === 0) {
										phash = ph;
										return false;
									}
								});
							} else {
								phash = pfile.phash;
							}
						}
					});
					if (found) {
						$.each(rHashes, function(src, dsts) {
							var dirs = Object.keys(dsts),
								cnt = dirs.length;
							fm.request({
								data   : {cmd  : 'mkdir', target : src, dirs : dirs}, 
								notify : {type : 'chkdir', cnt : cnt},
								preventFail : true
							}).fail(function(error) {
								dfrd.reject(error);
								fm.unlockfiles({files : targets});
							}).done(function(data) {
								var cmdPaste, hashes;
								
								if (hashes = data.hashes) {
									cmdPaste = fm.getCommand('paste');
									if (cmdPaste) {
										// wait until file cache made
										fm.one('mkdirdone', function() {
											var hasErr = false;
											$.each(dsts, function(dir, files) {
												if (hashes[dir]) {
													if (files.length) {
														if (fm.file(hashes[dir])) {
															fm.clipboard(files, true);
															fm.exec('paste', [ hashes[dir] ], {_cmd : 'restore', noToast : (opts.noToast || dir !== dirTop)})
															.done(function(data) {
																if (data && (data.error || data.warning)) {
																	hasErr = true;
																}
															})
															.fail(function() {
																hasErr = true;
															})
															.always(function() {
																if (--cnt < 1) {
																	dfrd[hasErr? 'reject' : 'resolve']();
																	if (others.length) {
																		// Restore items of other trash
																		fm.exec('restore', others);
																	}
																}
															});
														} else {
															dfrd.reject(errFolderNotfound);
														}
													} else {
														if (--cnt < 1) {
															dfrd.resolve();
															if (others.length) {
																// Restore items of other trash
																fm.exec('restore', others);
															}
														}
													}
												}
											});
										});
									} else {
										dfrd.reject(['errRestore', 'errCmdNoSupport', '(paste)']);
									}
								} else {
									dfrd.reject(errFolderNotfound);
								}
							});
						});
					} else {
						dfrd.reject(errFolderNotfound);
					}
				} else {
					dfrd.reject('errFileNotFound');
					dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
				}
			});
		};
	
	// for to be able to overwrite
	this.restore = restore;

	this.linkedCmds = ['copy', 'paste', 'mkdir', 'rm'];
	this.updateOnSelect = false;
	
	this.init = function() {
		// re-assign for extended command
		self = this;
		fm = this.fm;
	};

	this.getstate = function(sel, e) {
		sel = sel || fm.selected();
		return sel.length && $.grep(sel, function(h) {var f = fm.file(h); return f && ! f.locked && ! fm.isRoot(f)? true : false; }).length == sel.length
			? 0 : -1;
	};
	
	this.exec = function(hashes, opts) {
		var dfrd   = $.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			files  = self.files(hashes);

		if (! files.length) {
			return dfrd.reject();
		}
		
		$.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRestore', file.name]);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			this.restore(dfrd, files, hashes, opts);
		}
			
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/rm.js
 */

/**
 * @class  elFinder command "rm"
 * Delete files
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.rm = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		tpl = '<div class="ui-helper-clearfix elfinder-rm-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}<div class="elfinder-rm-desc">{desc}</div></div>',
		confirm = function(dfrd, targets, files, tHash, addTexts) {
			var cnt = targets.length,
				cwd = fm.cwd().hash,
				descs = [],
				spinner = fm.i18n('calc') + '<span class="elfinder-spinner"></span>',
				dialog, text, tmb, size, f, fname;
			
			if (cnt > 1) {
				size = 0;
				$.each(files, function(h, f) { 
					if (f.size && f.size != 'unknown' && f.mime !== 'directory') {
						var s = parseInt(f.size);
						if (s >= 0 && size >= 0) {
							size += s;
						}
					} else {
						size = 'unknown';
						return false;
					}
				});
				getSize = (size === 'unknown');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(size)));
				text = [$(tpl.replace('{class}', 'elfinder-cwd-icon-group').replace('{title}', '<strong>' + fm.i18n('items')+ ': ' + cnt + '</strong>').replace('{desc}', descs.join('<br>')))];
			} else {
				f = files[0];
				tmb = fm.tmb(f);
				getSize = (f.mime === 'directory');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(f.size)));
				descs.push(fm.i18n('modify')+': '+fm.formatDate(f));
				fname = fm.escape(f.i18 || f.name).replace(/([_.])/g, '&#8203;$1');
				text = [$(tpl.replace('{class}', fm.mime2class(f.mime)).replace('{title}', '<strong>' + fname + '</strong>').replace('{desc}', descs.join('<br>')))];
			}
			
			if (addTexts) {
				text = text.concat(addTexts);
			}
			
			text.push(tHash? 'confirmTrash' : 'confirmRm');
			
			dialog = fm.confirm({
				title  : self.title,
				text   : text,
				accept : {
					label    : 'btnRm',
					callback : function() {  
						if (tHash) {
							self.toTrash(dfrd, targets, tHash);
						} else {
							remove(dfrd, targets);
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() {
						fm.unlockfiles({files : targets});
						if (targets.length === 1 && fm.file(targets[0]).phash !== cwd) {
							fm.select({selected : targets});
						} else {
							fm.selectfiles({files : targets});
						}
						dfrd.reject();
					}
				}
			});
			// load thumbnail
			if (tmb) {
				$('<img/>')
					.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
					.attr('src', tmb.url);
			}
			
			if (getSize) {
				getSize = fm.getSize($.map(files, function(f) { return f.mime === 'directory'? f.hash : null; })).done(function(data) {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+data.formated);
				}).fail(function() {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+fm.i18n('unknown'));
				}).always(function() {
					getSize = false;
				});
			}
		},
		toTrash = function(dfrd, targets, tHash) {
			var dsts = {},
				itemCnt = targets.length,
				maxCnt = self.options.toTrashMaxItems,
				checkDirs = [],
				reqDfd = $.Deferred(),
				req, dirs, cnt;
			
			if (itemCnt > maxCnt) {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
				return;
			}
			
			// Directory preparation preparation and directory enumeration
			$.each(targets, function(i, h) {
				var file = fm.file(h),
					path = fm.path(h).replace(/\\/g, '/'),
					m = path.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/);
				
				if (file) {
					if (m) {
						m[1] = m[1].replace(/(^\/.*?)\/?$/, '$1');
						if (! dsts[m[1]]) {
							dsts[m[1]] = [];
						}
						dsts[m[1]].push(h);
					}
					if (file.mime === 'directory') {
						checkDirs.push(h);
					}
				}
			});
			
			// Check directory information
			if (checkDirs.length) {
				req = fm.request({
					data : {cmd : 'size', targets : checkDirs},
					notify : {type: 'readdir', cnt: 1, hideCnt: true},
					preventDefault : true
				}).done(function(data) {
					var cnt = 0;
					data.fileCnt && (cnt += parseInt(data.fileCnt));
					data.dirCnt && (cnt += parseInt(data.dirCnt));
					reqDfd[cnt > maxCnt ? 'reject' : 'resolve']();
				}).fail(function() {
					reqDfd.reject();
				});
				setTimeout(function() {
					var xhr = (req && req.xhr)? req.xhr : null;
					if (xhr && xhr.state() == 'pending') {
						req.syncOnFail(false);
						req.reject();
						reqDfd.reject();
					}
				}, self.options.infoCheckWait * 1000);
			} else {
				reqDfd.resolve();
			}
			
			// Directory creation and paste command execution
			reqDfd.done(function() {
				dirs = Object.keys(dsts);
				cnt = dirs.length;
				if (cnt) {
					fm.request({
						data   : {cmd  : 'mkdir', target : tHash, dirs : dirs}, 
						notify : {type : 'chkdir', cnt : cnt},
						preventFail : true
					})
					.fail(function(error) {
						dfrd.reject(error);
						fm.unlockfiles({files : targets});
					})
					.done(function(data) {
						var margeRes = function(data, phash, reqData) {
								var undo, prevUndo, redo, prevRedo;
								$.each(data, function(k, v) {
									if (Array.isArray(v)) {
										if (res[k]) {
											res[k] = res[k].concat(v);
										} else {
											res[k] = v;
										}
									}
								});
								if (data.sync) {
									res.sync = 1;
								}
								if (data.added && data.added.length) {
									undo = function() {
										var targets = [],
											dirs    = $.map(data.added, function(f) { return f.mime === 'directory'? f.hash : null; });
										$.each(data.added, function(i, f) {
											if ($.inArray(f.phash, dirs) === -1) {
												targets.push(f.hash);
											}
										});
										return fm.exec('restore', targets, {noToast: true});
									};
									redo = function() {
										return fm.request({
											data   : reqData,
											notify : {type : 'redo', cnt : targets.length}
										});
									};
									if (res.undo) {
										prevUndo = res.undo;
										res.undo = function() {
											undo();
											prevUndo();
										};
									} else {
										res.undo = undo;
									}
									if (res.redo) {
										prevRedo = res.redo;
										res.redo = function() {
											redo();
											prevRedo();
										};
									} else {
										res.redo = redo;
									}
								}
							},
							err = ['errTrash'],
							res = {},
							hasNtf = function() {
								return fm.ui.notify.children('.elfinder-notify-trash').length;
							},
							hashes, tm, prg, prgSt;
						
						if (hashes = data.hashes) {
							prg = 1 / cnt * 100;
							prgSt = cnt === 1? 100 : 5;
							tm = setTimeout(function() {
								fm.notify({type : 'trash', cnt : 1, hideCnt : true, progress : prgSt});
							}, fm.notifyDelay);
							$.each(dsts, function(dir, files) {
								var phash = fm.file(files[0]).phash,
									reqData;
								if (hashes[dir]) {
									reqData = {cmd : 'paste', dst : hashes[dir], targets : files, cut : 1};
									fm.request({
										data : reqData,
										preventDefault : true
									})
									.fail(function(error) {
										if (error) {
											err = err.concat(error);
										}
									})
									.done(function(data) {
										data = fm.normalize(data);
										fm.updateCache(data);
										margeRes(data, phash, reqData);
										if (data.warning) {
											err = err.concat(data.warning);
											delete data.warning;
										}
										// fire some event to update cache/ui
										data.removed && data.removed.length && fm.remove(data);
										data.added   && data.added.length   && fm.add(data);
										data.changed && data.changed.length && fm.change(data);
										// fire event with command name
										fm.trigger('paste', data);
										// fire event with command name + 'done'
										fm.trigger('pastedone');
										// force update content
										data.sync && fm.sync();
									})
									.always(function() {
										var hashes = [], addTexts, end = 2;
										if (hasNtf()) {
											fm.notify({type : 'trash', cnt : 0, hideCnt : true, progress : prg});
										} else {
											prgSt+= prg;
										}
										if (--cnt < 1) {
											tm && clearTimeout(tm);
											hasNtf() && fm.notify({type : 'trash', cnt  : -1});
											fm.unlockfiles({files : targets});
											if (Object.keys(res).length) {
												if (err.length > 1) {
													if (res.removed || res.removed.length) {
														hashes = $.grep(targets, function(h) {
															return $.inArray(h, res.removed) === -1? true : false;
														});
													}
													if (hashes.length) {
														if (err.length > end) {
															end = (fm.messages[err[end-1]] || '').indexOf('$') === -1? end : end + 1;
														}
														dfrd.reject();
														fm.exec('rm', hashes, { addTexts: err.slice(0, end), forceRm: true });
													} else {
														fm.error(err);
													}
												}
												res._noSound = true;
												if (res.undo && res.redo) {
													res.undo = {
														cmd : 'trash',
														callback : res.undo,
													};
													res.redo = {
														cmd : 'trash',
														callback : res.redo
													};
												}
												dfrd.resolve(res);
											} else {
												dfrd.reject(err);
											}
										}
									});
								}
							});
						} else {
							dfrd.reject('errFolderNotFound');
							fm.unlockfiles({files : targets});
						}
					});
				} else {
					dfrd.reject(['error', 'The folder hierarchy to be deleting can not be determined.']);
					fm.unlockfiles({files : targets});
				}
			}).fail(function() {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
			});
		},
		remove = function(dfrd, targets, quiet) {
			var notify = quiet? {} : {type : 'rm', cnt : targets.length};
			fm.request({
				data   : {cmd  : 'rm', targets : targets}, 
				notify : notify,
				preventFail : true
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.error || data.warning) {
					data.sync = true;
				}
				dfrd.resolve(data);
			})
			.always(function() {
				fm.unlockfiles({files : targets});
			});
		},
		getTHash = function(targets) {
			var thash = null,
				root1st;
			
			if (targets && targets.length) {
				if (targets.length > 1 && fm.searchStatus.state === 2) {
					root1st = fm.file(fm.root(targets[0])).volumeid;
					if (!$.grep(targets, function(h) { return h.indexOf(root1st) !== 0? true : false ; }).length) {
						thash = fm.option('trashHash', targets[0]);
					}
				} else {
					thash = fm.option('trashHash', targets[0]);
				}
			}
			return thash;
		},
		getSize = false;
	
	// for to be able to overwrite
	this.confirm = confirm;
	this.toTrash = toTrash;
	this.remove = remove;

	this.syncTitleOnChange = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'delete ctrl+backspace shift+delete'
	}];
	this.value = 'rm';
	
	this.init = function() {
		var update = function(origin) {
			var targets;
			delete self.extra;
			self.title = fm.i18n('cmd' + self.value);
			self.className = self.value;
			self.button && self.button.children('span.elfinder-button-icon')[self.value === 'trash'? 'addClass' : 'removeClass']('elfinder-button-icon-trash');
			if (origin && origin !== 'cwd' && (self.state > -1 || origin === 'navbar')) {
				if (self.value === 'trash') {
					self.extra = {
						icon: 'rm',
						node: $('<span></span>')
							.attr({title: fm.i18n('cmdrm')})
							.on('ready', function(e, data) {
								targets = data.targets;
							})
							.on('click touchstart', function(e){
								if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
									return;
								}
								e.stopPropagation();
								e.preventDefault();
								fm.getUI().trigger('click'); // to close the context menu immediately
								fm.exec('rm', targets, {_userAction: true, forceRm : true});
							})
					};
				}
			}
		};
		// re-assign for extended command
		self = this;
		fm = this.fm;
		// bind function of change
		self.change(function() {
			update();
		});
		fm.bind('contextmenucreate', function(e) {
			update(e.data.type);
		});
	};
	
	this.getstate = function(select) {
		var sel   = this.hashes(select),
			filter = function(files) {
				var fres = true;
				return $.grep(files, function(h) {
					var f;
					fres = fres && (f = fm.file(h)) && ! f.locked && ! fm.isRoot(f)? true : false;
					return fres;
				});
			};
		
		return sel.length && filter(sel).length == sel.length ? 0 : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var opts   = cOpts || {},
			dfrd   = $.Deferred()
				.always(function() {
					if (getSize && getSize.state && getSize.state() === 'pending') {
						getSize.reject();
					}
				})
				.fail(function(error) {
					error && fm.error(error);
				}).done(function(data) {
					!opts.quiet && !data._noSound && data.removed && data.removed.length && fm.trigger('playsound', {soundFile : 'rm.wav'});
				}),
			files  = self.files(hashes),
			cnt    = files.length,
			tHash  = null,
			addTexts = opts.addTexts? opts.addTexts : null,
			forceRm = opts.forceRm,
			quiet = opts.quiet,
			targets;

		if (! cnt) {
			return dfrd.reject();
		}
		
		$.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRm', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			targets = self.hashes(hashes);
			cnt     = files.length;
			
			if (forceRm || (self.event && self.event.originalEvent && self.event.originalEvent.shiftKey)) {
				tHash = '';
				self.title = fm.i18n('cmdrm');
			}
			
			if (tHash === null) {
				tHash = getTHash(targets);
			}
			
			fm.lockfiles({files : targets});
			
			if (tHash && self.options.quickTrash) {
				self.toTrash(dfrd, targets, tHash);
			} else {
				if (quiet) {
					remove(dfrd, targets, quiet);
				} else {
					self.confirm(dfrd, targets, files, tHash, addTexts);
				}
			}
		}
			
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var targets = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (targets && targets.length) {
			self.update(void(0), (targets? getTHash(targets) : fm.option('trashHash'))? 'trash' : 'rm');
		}
	});

};


/*
 * File: /js/commands/search.js
 */

/**
 * @class  elFinder command "search"
 * Find files
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.search = function() {
	"use strict";
	this.title          = 'Find files';
	this.options        = {ui : 'searchbutton'};
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	
	/**
	 * Return command status.
	 * Search does not support old api.
	 *
	 * @return Number
	 **/
	this.getstate = function() {
		return 0;
	};
	
	/**
	 * Send search request to backend.
	 *
	 * @param  String  search string
	 * @return $.Deferred
	 **/
	this.exec = function(q, target, mime, type) {
		var fm = this.fm,
			reqDef = [],
			sType = type || '',
			onlyMimes = fm.options.onlyMimes,
			phash, targetVolids = [],
			setType = function(data) {
				if (sType && sType !== 'SearchName' && sType !== 'SearchMime') {
					data.type = sType;
				}
				return data;
			},
			rootCnt;
		
		if (typeof q == 'string' && q) {
			if (typeof target == 'object') {
				mime = target.mime || '';
				target = target.target || '';
			}
			target = target? target : '';
			if (mime) {
				mime = $.trim(mime).replace(',', ' ').split(' ');
				if (onlyMimes.length) {
					mime = $.map(mime, function(m){ 
						m = $.trim(m);
						return m && ($.inArray(m, onlyMimes) !== -1
									|| $.grep(onlyMimes, function(om) { return m.indexOf(om) === 0? true : false; }).length
									)? m : null;
					});
				}
			} else {
				mime = [].concat(onlyMimes);
			}

			fm.trigger('searchstart', setType({query : q, target : target, mimes : mime}));
			
			if (! onlyMimes.length || mime.length) {
				if (target === '' && fm.api >= 2.1) {
					rootCnt = Object.keys(fm.roots).length;
					$.each(fm.roots, function(id, hash) {
						reqDef.push(fm.request({
							data   : setType({cmd : 'search', q : q, target : hash, mimes : mime}),
							notify : {type : 'search', cnt : 1, hideCnt : (rootCnt > 1? false : true)},
							cancel : true,
							preventDone : true
						}));
					});
				} else {
					reqDef.push(fm.request({
						data   : setType({cmd : 'search', q : q, target : target, mimes : mime}),
						notify : {type : 'search', cnt : 1, hideCnt : true},
						cancel : true,
						preventDone : true
					}));
					if (target !== '' && fm.api >= 2.1 && Object.keys(fm.leafRoots).length) {
						$.each(fm.leafRoots, function(hash, roots) {
							phash = hash;
							while(phash) {
								if (target === phash) {
									$.each(roots, function() {
										var f = fm.file(this);
										f && f.volumeid && targetVolids.push(f.volumeid);
										reqDef.push(fm.request({
											data   : setType({cmd : 'search', q : q, target : this, mimes : mime}),
											notify : {type : 'search', cnt : 1, hideCnt : false},
											cancel : true,
											preventDone : true
										}));
									});
								}
								phash = (fm.file(phash) || {}).phash;
							}
						});
					}
				}
			} else {
				reqDef = [$.Deferred().resolve({files: []})];
			}
			
			fm.searchStatus.mixed = (reqDef.length > 1)? targetVolids : false;
			
			return $.when.apply($, reqDef).done(function(data) {
				var argLen = arguments.length,
					i;
				
				data.warning && fm.error(data.warning);
				
				if (argLen > 1) {
					data.files = (data.files || []);
					for(i = 1; i < argLen; i++) {
						arguments[i].warning && fm.error(arguments[i].warning);
						
						if (arguments[i].files) {
							data.files.push.apply(data.files, arguments[i].files);
						}
					}
				}
				
				// because "preventDone : true" so update files cache
				data.files && data.files.length && fm.cache(data.files);
				
				fm.lazy(function() {
					fm.trigger('search', data);
				}).then(function() {
					// fire event with command name + 'done'
					return fm.lazy(function() {
						fm.trigger('searchdone');
					});
				}).then(function() {
					// force update content
					data.sync && fm.sync();
				});
			});
		}
		fm.getUI('toolbar').find('.'+fm.res('class', 'searchbtn')+' :text').trigger('focus');
		return $.Deferred().reject();
	};

};


/*
 * File: /js/commands/selectall.js
 */

/**
 * @class  elFinder command "selectall"
 * Select ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectall = function() {
	"use strict";
	var self = this,
		state = 0;
	
	this.fm.bind('select', function(e) {
		state = (e.data && e.data.selectall)? -1 : 0;
	});
	
	this.state = 0;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		$(document).trigger($.Event('keydown', { keyCode: 65, ctrlKey : true, shiftKey : false, altKey : false, metaKey : false }));
		return $.Deferred().resolve();
	};
};


/*
 * File: /js/commands/selectinvert.js
 */

/**
 * @class  elFinder command "selectinvert"
 * Invert Selection of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectinvert = function() {
	"use strict";
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		$(document).trigger($.Event('keydown', { keyCode: 73, ctrlKey : true, shiftKey : true, altKey : false, metaKey : false }));
		return $.Deferred().resolve();
	};

};


/*
 * File: /js/commands/selectnone.js
 */

/**
 * @class  elFinder command "selectnone"
 * Unselect ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectnone = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		state = -1;
	
	fm.bind('select', function(e) {
		state = (e.data && e.data.unselectall)? -1 : 0;
	});
	
	this.state = -1;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		fm.getUI('cwd').trigger('unselectall');
		return $.Deferred().resolve();
	};
};


/*
 * File: /js/commands/sort.js
 */

/**
 * @class  elFinder command "sort"
 * Change sort files rule
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.sort = function() {
	"use strict";
	var self  = this,
		fm    = self.fm,
		setVar = function() {
			self.variants = [];
			$.each(fm.sortRules, function(name, value) {
				if (fm.sorters[name]) {
					var arr = (name === fm.sortType)? (fm.sortOrder === 'asc'? 'n' : 's') : '';
					self.variants.push([name, (arr? '<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>' : '') + '&nbsp;' + fm.i18n('sort'+name)]);
				}
			});
			self.variants.push('|');
			self.variants.push([
				'stick',
				(fm.sortStickFolders? '<span class="ui-icon ui-icon-check"></span>' : '') + '&nbsp;' + fm.i18n('sortFoldersFirst')
			]);
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				self.variants.push('|');
				self.variants.push([
					'tree',
					(fm.sortAlsoTreeview? '<span class="ui-icon ui-icon-check"></span>' : '') + '&nbsp;' + fm.i18n('sortAlsoTreeview')
				]);
			}
			updateContextmenu();
		},
		updateContextmenu = function() {
			var cm = fm.getUI('contextmenu'),
				icon, sub;
			if (cm.is(':visible')) {
				icon = cm.find('span.elfinder-button-icon-sort');
				sub = icon.siblings('div.elfinder-contextmenu-sub');
				sub.find('span.ui-icon').remove();
				sub.children('div.elfinder-contextsubmenu-item').each(function() {
					var tgt = $(this).children('span'),
						name = tgt.text().trim(),
						arr;
					if (name === (i18Name.stick || (i18Name.stick = fm.i18n('sortFoldersFirst')))) {
						if (fm.sortStickFolders) {
							tgt.prepend('<span class="ui-icon ui-icon-check"></span>');
						}
					} else if (name === (i18Name.tree || (i18Name.tree = fm.i18n('sortAlsoTreeview')))) {
						if (fm.sortAlsoTreeview) {
							tgt.prepend('<span class="ui-icon ui-icon-check"></span>');
						}
					} else if (name === (i18Name[fm.sortType] || (i18Name[fm.sortType] = fm.i18n('sort' + fm.sortType)))) {
						arr = fm.sortOrder === 'asc'? 'n' : 's';
						tgt.prepend('<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>');
					}
				});
			}
		},
		i18Name = {};
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'sortbutton'};
	
	this.keepContextmenu = true;

	fm.bind('sortchange', setVar)
	.bind('sorterupdate', function() {
		setVar();
		fm.getUI().children('.elfinder-button-sort-menu').children('.elfinder-button-menu-item').each(function() {
			var tgt = $(this),
				rel = tgt.attr('rel');
			tgt.toggle(!!(! rel || fm.sorters[rel]));
		});
	})
	.bind('cwdrender', function() {
		var cols = $(fm.cwd).find('div.elfinder-cwd-wrapper-list table');
		if (cols.length) {
			$.each(fm.sortRules, function(name, value) {
				var td = cols.find('thead tr td.elfinder-cwd-view-th-'+name);
				if (td.length) {
					var current = ( name == fm.sortType),
					sort = {
						type  : name,
						order : current ? fm.sortOrder == 'asc' ? 'desc' : 'asc' : fm.sortOrder
					},arr;
					if (current) {
						td.addClass('ui-state-active');
						arr = fm.sortOrder == 'asc' ? 'n' : 's';
						$('<span class="ui-icon ui-icon-triangle-1-'+arr+'"></span>').appendTo(td);
					}
					$(td).on('click', function(e){
						if (! $(this).data('dragging')) {
							e.stopPropagation();
							if (! fm.getUI('cwd').data('longtap')) {
								fm.exec('sort', [], sort);
							}
						}
					})
					.on('mouseenter mouseleave', function(e) {
						$(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
					});
				}
				
			});
		}
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes, cOpt) {
		var fm = this.fm,
			sortopt = $.isPlainObject(cOpt)? cOpt : (function() {
				cOpt += '';
				var sOpts = {};
				if (cOpt === 'stick') {
					sOpts.stick = !fm.sortStickFolders;
				} else if (cOpt === 'tree') {
					sOpts.tree = !fm.sortAlsoTreeview;
				} else if (fm.sorters[cOpt]) {
					if (fm.sortType === cOpt) {
						sOpts.order = fm.sortOrder === 'asc'? 'desc' : 'asc';
					} else {
						sOpts.type = cOpt;
					}
				}
				return sOpts;
			})(),
			sort = Object.assign({
				type  : fm.sortType,
				order : fm.sortOrder,
				stick : fm.sortStickFolders,
				tree  : fm.sortAlsoTreeview
			}, sortopt);

		return fm.lazy(function() {
			fm.setSort(sort.type, sort.order, sort.stick, sort.tree);
			this.resolve();
		});
	};

};


/*
 * File: /js/commands/undo.js
 */

/**
 * @class  elFinder command "undo"
 * Undo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.undo = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		setTitle = function(undo) {
			if (undo) {
				self.title = fm.i18n('cmdundo') + ' ' + fm.i18n('cmd'+undo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdundo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+z'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setUndo = function(undo, redo) {
		var _undo = {};
		if (undo) {
			if ($.isPlainObject(undo) && undo.cmd && undo.callback) {
				Object.assign(_undo, undo);
				if (redo) {
					delete redo.undo;
					_undo.redo = redo;
				} else {
					fm.getCommand('redo').setRedo(null);
				}
				cmds.push(_undo);
				setTitle(_undo);
			}
		}
	};
	
	this.exec = function() {
		var redo = fm.getCommand('redo'),
			dfd = $.Deferred(),
			undo, res, _redo = {};
		if (cmds.length) {
			undo = cmds.pop();
			if (undo.redo) {
				Object.assign(_redo, undo.redo);
				delete undo.redo;
			} else {
				_redo = null;
			} 
			dfd.done(function() {
				if (_redo) {
					redo.setRedo(_redo, undo);
				}
			});
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = undo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			if (cmds.length) {
				this.update(0, cmds[cmds.length - 1].name);
			} else {
				this.update(-1, '');
			}
		} else {
			dfd.reject();
		}
		return dfd;
	};
	
	fm.bind('exec', function(e) {
		var data = e.data || {};
		if (data.opts && data.opts._userAction) {
			if (data.dfrd && data.dfrd.done) {
				data.dfrd.done(function(res) {
					if (res && res.undo && res.redo) {
						res.undo.redo = res.redo;
						self.setUndo(res.undo);
					}
				});
			}
		}
	});
};

/**
 * @class  elFinder command "redo"
 * Redo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.redo = function() {
	"use strict";
	var self = this,
		fm   = this.fm,
		setTitle = function(redo) {
			if (redo && redo.callback) {
				self.title = fm.i18n('cmdredo') + ' ' + fm.i18n('cmd'+redo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdredo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'shift+ctrl+z ctrl+y'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setRedo = function(redo, undo) {
		if (redo === null) {
			cmds = [];
			setTitle();
		} else {
			if (redo && redo.cmd && redo.callback) {
				if (undo) {
					redo.undo = undo;
				}
				cmds.push(redo);
				setTitle(redo);
			}
		}
	};
	
	this.exec = function() {
		var undo = fm.getCommand('undo'),
			dfd = $.Deferred(),
			redo, res, _undo = {}, _redo = {};
		if (cmds.length) {
			redo = cmds.pop();
			if (redo.undo) {
				Object.assign(_undo, redo.undo);
				Object.assign(_redo, redo);
				delete _redo.undo;
				dfd.done(function() {
					undo.setUndo(_undo, _redo);
				});
			}
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = redo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			return dfd;
		} else {
			return dfd.reject();
		}
	};
};


/*
 * File: /js/commands/up.js
 */

/**
 * @class  elFinder command "up"
 * Go into parent directory
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.up = function() {
	"use strict";
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.shortcuts = [{
		pattern     : 'ctrl+up'
	}];
	
	this.getstate = function() {
		return this.fm.cwd().phash ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = this.fm,
			cwdhash = fm.cwd().hash;
		return this.fm.cwd().phash ? this.fm.exec('open', this.fm.cwd().phash).done(function() {
			fm.one('opendone', function() {
				fm.selectfiles({files : [cwdhash]});
			});
		}) : $.Deferred().reject();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/upload.js
 */

/**
 * @class elFinder command "upload"
 * Upload files using iframe or XMLHttpRequest & FormData.
 * Dialog allow to send files using drag and drop
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.upload = function() {
	"use strict";
	var hover = this.fm.res('class', 'hover');
	
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	
	// Shortcut opens dialog
	this.shortcuts = [{
		pattern     : 'ctrl+u'
	}];
	
	/**
	 * Return command state
	 *
	 * @return Number
	 **/
	this.getstate = function(select) {
		var fm = this.fm, f,
		sel = (select || [fm.cwd().hash]);
		if (!this._disabled && sel.length == 1) {
			f = fm.file(sel[0]);
		}
		return (f && f.mime == 'directory' && f.write)? 0 : -1;
	};
	
	
	this.exec = function(data) {
		var fm = this.fm,
			cwdHash = fm.cwd().hash,
			getTargets = function() {
				var tgts = data && (data instanceof Array)? data : null,
					sel;
				if (! data || data instanceof Array) {
					if (! tgts && (sel = fm.selected()).length === 1 && fm.file(sel[0]).mime === 'directory') {
						tgts = sel;
					} else if (!tgts || tgts.length !== 1 || fm.file(tgts[0]).mime !== 'directory') {
						tgts = [ cwdHash ];
					}
				}
				return tgts;
			},
			targets = getTargets(),
			check = targets? targets[0] : (data && data.target? data.target : null),
			targetDir = check? fm.file(check) : fm.cwd(),
			fmUpload = function(data) {
				fm.upload(data)
					.fail(function(error) {
						dfrd.reject(error);
					})
					.done(function(data) {
						var cwd = fm.getUI('cwd'),
							node;
						dfrd.resolve(data);
						if (data && data.added && data.added[0] && ! fm.ui.notify.children('.elfinder-notify-upload').length) {
							var newItem = fm.findCwdNodes(data.added);
							if (newItem.length) {
								newItem.trigger('scrolltoview');
							} else {
								if (targetDir.hash !== cwdHash) {
									node = $('<div></div>').append(
										$('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+fm.i18n('cmdopendir')+'</span></button>')
										.on('mouseenter mouseleave', function(e) { 
											$(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
										}).on('click', function() {
											fm.exec('open', check).done(function() {
												fm.one('opendone', function() {
													fm.trigger('selectfiles', {files : $.map(data.added, function(f) {return f.hash;})});
												});
											});
										})
									);
								} else {
									fm.trigger('selectfiles', {files : $.map(data.added, function(f) {return f.hash;})});
								}
								fm.toast({msg: fm.i18n(['complete', fm.i18n('cmdupload')]), extNode: node});
							}
						}
					})
					.progress(function() {
						dfrd.notifyWith(this, Array.from(arguments));
					});
			},
			upload = function(data) {
				dialog.elfinderdialog('close');
				if (targets) {
					data.target = targets[0];
				}
				fmUpload(data);
			},
			getSelector = function() {
				var hash = targetDir.hash,
					dirs = $.map(fm.files(hash), function(f) {
						return (f.mime === 'directory' && f.write)? f : null; 
					});
				
				if (! dirs.length) {
					return $();
				}
				
				return $('<div class="elfinder-upload-dirselect elfinder-tabstop" title="' + fm.i18n('folders') + '"></div>')
				.on('click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					dirs = fm.sortFiles(dirs);
					var $this  = $(this),
						cwd    = fm.cwd(),
						base   = dialog.closest('div.ui-dialog'),
						getRaw = function(f, icon) {
							return {
								label    : fm.escape(f.i18 || f.name),
								icon     : icon,
								remain   : false,
								callback : function() {
									var title = base.children('.ui-dialog-titlebar:first').find('span.elfinder-upload-target');
									targets = [ f.hash ];
									title.html(' - ' + fm.escape(f.i18 || f.name));
									$this.trigger('focus');
								},
								options  : {
									className : (targets && targets.length && f.hash === targets[0])? 'ui-state-active' : '',
									iconClass : f.csscls || '',
									iconImg   : f.icon   || ''
								}
							};
						},
						raw = [ getRaw(targetDir, 'opendir'), '|' ];
					$.each(dirs, function(i, f) {
						raw.push(getRaw(f, 'dir'));
					});
					$this.trigger('blur');
					fm.trigger('contextmenu', {
						raw: raw,
						x: e.pageX || $(this).offset().left,
						y: e.pageY || $(this).offset().top,
						prevNode: base,
						fitHeight: true
					});
				}).append('<span class="elfinder-button-icon elfinder-button-icon-dir" ></span>');
			},
			inputButton = function(type, caption) {
				var button,
					input = $('<input type="file" ' + type + '/>')
					.on('click', function() {
						// for IE's bug
						if (fm.UA.IE) {
							setTimeout(function() {
								form.css('display', 'none').css('position', 'relative');
								requestAnimationFrame(function() {
									form.css('display', '').css('position', '');
								});
							}, 100);
						}
					})
					.on('change', function() {
						upload({input : input.get(0), type : 'files'});
					})
					.on('dragover', function(e) {
						e.originalEvent.dataTransfer.dropEffect = 'copy';
					}),
					form = $('<form></form>').append(input).on('click', function(e) {
						e.stopPropagation();
					});

				return $('<div class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-tabstop elfinder-focus"><span class="ui-button-text">'+fm.i18n(caption)+'</span></div>')
					.append(form)
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						input.trigger('click');
					})
					.on('mouseenter mouseleave', function(e) {
						$(this).toggleClass(hover, e.type === 'mouseenter');
					});
			},
			dfrd = $.Deferred(),
			dialog, dropbox, pastebox, dropUpload, paste, dirs, spinner, uidialog;
		
		dropUpload = function(e) {
			e.stopPropagation();
			e.preventDefault();
			var file = false,
				type = '',
				elfFrom = null,
				mycwd = '',
				data = null,
				target = e._target || null,
				trf = e.dataTransfer || null,
				kind = '',
				idx, errors;
			
			if (trf) {
				if (trf.types && trf.types.length) {
					if ((idx = $.inArray('application/x-moz-file', trf.types)) !== -1) {
						kind = 'file';
					} else if ((idx = $.inArray('Files', trf.types)) !== -1) {
						kind = 'file';
					}
				}
				else if (trf.items && trf.items.length && trf.items[0].kind) {
					kind = trf.items[0].kind;
				}

				try {
					elfFrom = trf.getData('elfinderfrom');
					if (elfFrom) {
						mycwd = window.location.href + fm.cwd().hash;
						if ((!target && elfFrom === mycwd) || target === mycwd) {
							dfrd.reject();
							return;
						}
					}
				} catch(e) {}
				
				if (kind === 'file' && (trf.items[idx].getAsEntry || trf.items[idx].webkitGetAsEntry || trf.items[idx].getAsFile)) {
					file = trf;
					type = 'data';
				} else if (kind !== 'string' && trf.files && trf.files.length && $.inArray('Text', trf.types) === -1) {
					file = trf.files;
					type = 'files';
				} else {
					try {
						if ((data = trf.getData('text/html')) && data.match(/<(?:img|a)/i)) {
							file = [ data ];
							type = 'html';
						}
					} catch(e) {}
					if (! file) {
						if (data = trf.getData('text')) {
							file = [ data ];
							type = 'text';
						} else if (trf && trf.files) {
							// maybe folder uploading but this UA dose not support it
							kind = 'file';
						}
					}
				}
			}
			if (file) {
				fmUpload({files : file, type : type, target : target, dropEvt : e});
			} else {
				errors = ['errUploadNoFiles'];
				if (kind === 'file') {
					errors.push('errFolderUpload');
				}
				fm.error(errors);
				dfrd.reject();
			}
		};
		
		if (!targets && data) {
			if (data.input || data.files) {
				data.type = 'files';
				fmUpload(data);
			} else if (data.dropEvt) {
				dropUpload(data.dropEvt);
			}
			return dfrd;
		}
		
		paste = function(ev) {
			var e = ev.originalEvent || ev;
			var files = [], items = [];
			var file;
			if (e.clipboardData) {
				if (e.clipboardData.items && e.clipboardData.items.length){
					items = e.clipboardData.items;
					for (var i=0; i < items.length; i++) {
						if (e.clipboardData.items[i].kind == 'file') {
							file = e.clipboardData.items[i].getAsFile();
							files.push(file);
						}
					}
				} else if (e.clipboardData.files && e.clipboardData.files.length) {
					files = e.clipboardData.files;
				}
				if (files.length) {
					upload({files : files, type : 'files', clipdata : true});
					return;
				}
			}
			var my = e.target || e.srcElement;
			requestAnimationFrame(function() {
				var type = 'text',
					src;
				if (my.innerHTML) {
					$(my).find('img').each(function(i, v){
						if (v.src.match(/^webkit-fake-url:\/\//)) {
							// For Safari's bug.
							// ref. https://bugs.webkit.org/show_bug.cgi?id=49141
							//      https://dev.ckeditor.com/ticket/13029
							$(v).remove();
						}
					});
					
					if ($(my).find('a,img').length) {
						type = 'html';
					}
					src = my.innerHTML;
					my.innerHTML = '';
					upload({files : [ src ], type : type});
				}
			});
		};
		
		dialog = $('<div class="elfinder-upload-dialog-wrapper"></div>')
			.append(inputButton('multiple', 'selectForUpload'));
		
		if (! fm.UA.Mobile && (function(input) {
			return (typeof input.webkitdirectory !== 'undefined' || typeof input.directory !== 'undefined');})(document.createElement('input'))) {
			dialog.append(inputButton('multiple webkitdirectory directory', 'selectFolder'));
		}
		
		if (targetDir.dirs) {
			
			if (targetDir.hash === cwdHash || fm.navHash2Elm(targetDir.hash).hasClass('elfinder-subtree-loaded')) {
				getSelector().appendTo(dialog);
			} else {
				spinner = $('<div class="elfinder-upload-dirselect" title="' + fm.i18n('nowLoading') + '"></div>')
					.append('<span class="elfinder-button-icon elfinder-button-icon-spinner" ></span>')
					.appendTo(dialog);
				fm.request({cmd : 'tree', target : targetDir.hash})
					.done(function() { 
						fm.one('treedone', function() {
							spinner.replaceWith(getSelector());
							uidialog.elfinderdialog('tabstopsInit');
						});
					})
					.fail(function() {
						spinner.remove();
					});
			}
		}
		
		if (fm.dragUpload) {
			dropbox = $('<div class="ui-corner-all elfinder-upload-dropbox elfinder-tabstop" contenteditable="true" data-ph="'+fm.i18n('dropPasteFiles')+'"></div>')
				.on('paste', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					$(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('mouseover', function(){
					$(this).addClass(hover);
				})
				.on('mouseout', function(){
					$(this).removeClass(hover);
				})
				.on('dragenter', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	$(this).addClass(hover);
				})
				.on('dragleave', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	$(this).removeClass(hover);
				})
				.on('dragover', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
					e.originalEvent.dataTransfer.dropEffect = 'copy';
					$(this).addClass(hover);
				})
				.on('drop', function(e) {
					dialog.elfinderdialog('close');
					targets && (e.originalEvent._target = targets[0]);
					dropUpload(e.originalEvent);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		} else {
			pastebox = $('<div class="ui-corner-all elfinder-upload-dropbox" contenteditable="true">'+fm.i18n('dropFilesBrowser')+'</div>')
				.on('paste drop', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					$(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('dragenter mouseover', function(){
					$(this).addClass(hover);
				})
				.on('dragleave mouseout', function(){
					$(this).removeClass(hover);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		}
		
		uidialog = this.fmDialog(dialog, {
			title          : this.title + '<span class="elfinder-upload-target">' + (targetDir? ' - ' + fm.escape(targetDir.i18 || targetDir.name) : '') + '</span>',
			modal          : true,
			resizable      : false,
			destroyOnClose : true,
			propagationEvents : ['mousemove', 'mouseup', 'click'],
			close          : function() {
				var cm = fm.getUI('contextmenu');
				if (cm.is(':visible')) {
					cm.click();
				}
			}
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/view.js
 */

/**
 * @class  elFinder command "view"
 * Change current directory view (icons/list)
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.view = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		subMenuRaw;
	this.value          = fm.viewType;
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.options = { ui : 'viewbutton'};
	
	this.getstate = function() {
		return 0;
	};
	
	this.extra = {
		icon: 'menu',
		node: $('<span></span>')
			.attr({title: fm.i18n('viewtype')})
			.on('click touchstart', function(e){
				if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
					return;
				}
				var node = $(this);
				e.stopPropagation();
				e.preventDefault();
				fm.trigger('contextmenu', {
					raw: getSubMenuRaw(),
					x: node.offset().left,
					y: node.offset().top
				});
			})
	};

	this.exec = function() {
		var self  = this,
			value = this.value == 'list' ? 'icons' : 'list';
			
		fm.storage('view', value);
		return fm.lazy(function() {
			fm.viewchange();
			self.update(void(0), value);
			this.resolve();
		});
	};

	fm.bind('init', function() {
		subMenuRaw = (function() {
			var cwd = fm.getUI('cwd'),
				raws = [],
				sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames,
				max = fm.options.uiOptions.cwd.iconsView.sizeMax,
				i, size;
			for (i = 0; i <= max; i++) {
				raws.push(
					{
						label    : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')),
						icon     : 'view',
						callback : (function(s) {
							return function() {
								cwd.trigger('iconpref', {size: s});
								fm.storage('iconsize', s);
								if (self.value === 'list') {
									self.exec();
								}
							};
						})(i)
					}
				);
			}
			raws.push('|');
			raws.push(
				{
					label    : fm.i18n('viewlist'),
					icon     : 'view-list',
					callback : function() {
						if (self.value !== 'list') {
							self.exec();
						}
					}
				}		
			);
			return raws;
		})();
	}).bind('contextmenucreate', function() {
		self.extra = {
			icon: 'menu',
			node: $('<span></span>')
				.attr({title: fm.i18n('cmdview')})
				.on('click touchstart', function(e){
					if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
						return;
					}
					var node = $(this),
						raw = subMenuRaw.concat(),
						idx, i;
					if (self.value === 'list') {
						idx = subMenuRaw.length - 1;
					} else {
						idx = parseInt(fm.storage('iconsize') || 0);
					}
					for (i = 0; i < subMenuRaw.length; i++) {
						if (subMenuRaw[i] !== '|') {
							subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0))
							;
						}
					}
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: subMenuRaw,
						x: node.offset().left,
						y: node.offset().top
					});
				})
		};
	});

};

return elFinder;
}));                                            includes/File_manager/lib/js/extras/quicklook.googledocs.js                                         0000644                 00000004401 15266052747 0020113 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
"use strict";
try {
	if (! elFinder.prototype.commands.quicklook.plugins) {
		elFinder.prototype.commands.quicklook.plugins = [];
	}
	elFinder.prototype.commands.quicklook.plugins.push(function(ql) {
		var fm      = ql.fm,
			preview = ql.preview;
			
		preview.on('update', function(e) {
			var win  = ql.window,
				file = e.file, node, loading;
			
			if (file.mime.indexOf('application/vnd.google-apps.') === 0) {
				if (file.url == '1') {
					preview.hide();
					$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
					.on('click', function() {
						$(this).html('<span class="elfinder-spinner">');
						fm.request({
							data : {cmd : 'url', target : file.hash},
							preventDefault : true
						})
						.always(function() {
							preview.show();
							$(this).html('');
						})
						.done(function(data) {
							var rfile = fm.file(file.hash);
							ql.value.url = rfile.url = data.url || '';
							if (ql.value.url) {
								preview.trigger($.Event('update', {file : ql.value}));
							}
						});
					});
				}
				if (file.url !== '' && file.url != '1') {
					e.stopImmediatePropagation();

					loading = $('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

					node = $('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
						.css('background-color', 'transparent')
						.on('load', function() {
							ql.hideinfo();
							loading.remove();
							node.css('background-color', '#fff');
						})
						.on('error', function() {
							loading.remove();
							node.remove();
						})
						.appendTo(preview)
						.attr('src', fm.url(file.hash));

					preview.one('change', function() {
						loading.remove();
						node.off('load').remove();
					});
				}
			}
			
		});
	});
} catch(e) {}
}));
                                                                                                                                                                                                                                                               includes/File_manager/lib/js/extras/quicklook.googledocs.min.js                                     0000644                 00000003047 15266052750 0020674 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       !function(e,n){"function"==typeof define&&define.amd?define(["elfinder"],n):"undefined"!=typeof exports?module.exports=n(require("elfinder")):n(e.elFinder)}(this,function(e){"use strict";try{e.prototype.commands.quicklook.plugins||(e.prototype.commands.quicklook.plugins=[]),e.prototype.commands.quicklook.plugins.push(function(e){var n=e.fm,o=e.preview;o.on("update",function(i){var r,a,t=(e.window,i.file);0===t.mime.indexOf("application/vnd.google-apps.")&&("1"==t.url&&(o.hide(),$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+n.i18n("getLink")+"</button></div>").appendTo(e.info.find(".elfinder-quicklook-info")).on("click",function(){$(this).html('<span class="elfinder-spinner">'),n.request({data:{cmd:"url",target:t.hash},preventDefault:!0}).always(function(){o.show(),$(this).html("")}).done(function(i){var r=n.file(t.hash);e.value.url=r.url=i.url||"",e.value.url&&o.trigger($.Event("update",{file:e.value}))})})),""!==t.url&&"1"!=t.url&&(i.stopImmediatePropagation(),a=$('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(e.info.find(".elfinder-quicklook-info")),r=$('<iframe class="elfinder-quicklook-preview-iframe"></iframe>').css("background-color","transparent").on("load",function(){e.hideinfo(),a.remove(),r.css("background-color","#fff")}).on("error",function(){a.remove(),r.remove()}).appendTo(o).attr("src",n.url(t.hash)),o.one("change",function(){a.remove(),r.off("load").remove()})))})})}catch(n){}});                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/js/extras/editors.default.js                                              0000644                 00000242315 15266052751 0017065 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function ($) {
(function(editors, elFinder) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], editors);
	} else if (elFinder) {
		var optEditors = elFinder.prototype._options.commandsOptions.edit.editors;
		elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder));
	}
}(function(elFinder) {
	"use strict";
	var apps = {},
		// get query of getfile
		getfile = window.location.search.match(/getfile=([a-z]+)/),
		useRequire = elFinder.prototype.hasRequire,
		ext2mime = {
			bmp: 'image/x-ms-bmp',
			dng: 'image/x-adobe-dng',
			gif: 'image/gif',
			jpeg: 'image/jpeg',
			jpg: 'image/jpeg',
			pdf: 'application/pdf',
			png: 'image/png',
			ppm: 'image/x-portable-pixmap',
			psd: 'image/vnd.adobe.photoshop',
			pxd: 'image/x-pixlr-data',
			svg: 'image/svg+xml',
			tiff: 'image/tiff',
			webp: 'image/webp',
			xcf: 'image/x-xcf',
			sketch: 'application/x-sketch',
			ico: 'image/x-icon',
			dds: 'image/vnd-ms.dds',
			emf: 'application/x-msmetafile'
		},
		mime2ext,
		getExtention = function(mime, fm, jpeg) {
			if (!mime2ext) {
				mime2ext = fm.arrayFlip(ext2mime);
			}
			var ext = mime2ext[mime] || fm.mimeTypes[mime];
			if (!jpeg) {
				if (ext === 'jpeg') {
					ext = 'jpg';
				}
			} else {
				if (ext === 'jpg') {
					ext = 'jpeg';
				}
			}
			return ext;
		},
		changeImageType = function(src, toMime) {
			var dfd = $.Deferred();
			try {
				var canvas = document.createElement('canvas'),
					ctx = canvas.getContext('2d'),
					img = new Image(),
					conv = function() {
						var url = canvas.toDataURL(toMime),
							mime, m;
						if (m = url.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i)) {
							mime = m[1];
						} else {
							mime = '';
						}
						if (mime.toLowerCase() === toMime.toLowerCase()) {
							dfd.resolve(canvas.toDataURL(toMime), canvas);
						} else {
							dfd.reject();
						}
					};

				img.src = src;
				$(img).on('load', function() {
					try {
						canvas.width = img.width;
						canvas.height = img.height;
						ctx.drawImage(img, 0, 0);
						conv();
					} catch(e) {
						dfd.reject();
					}
				}).on('error', function () {
					dfd.reject();
				});
				return dfd;
			} catch(e) {
				return dfd.reject();
			}
		},
		initImgTag = function(id, file, content, fm) {
			var node = $(this).children('img:first').data('ext', getExtention(file.mime, fm)),
				spnr = $('<div class="elfinder-edit-spinner elfinder-edit-image"></div>')
					.html('<span class="elfinder-spinner-text">' + fm.i18n('ntfloadimg') + '</span><span class="elfinder-spinner"></span>')
					.hide()
					.appendTo(this),
				setup = function() {
					node.attr('id', id+'-img')
						.attr('src', url || content)
						.css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'})
						.data('loading', function(done) {
							var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button');
							btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled');
							node.css('opacity', done? '' : '0.3');
							spnr[done? 'hide' : 'show']();
							return node;
						});
				},
				url;
			
			if (!content.match(/^data:/)) {
				fm.openUrl(file.hash, false, function(v) {
					url = v;
					node.attr('_src', content);
					setup();
				});
			} else {
				setup();
			}
		},
		imgBase64 = function(node, mime) {
			var style = node.attr('style'),
				img, canvas, ctx, data;
			try {
				// reset css for getting image size
				node.attr('style', '');
				// img node
				img = node.get(0);
				// New Canvas
				canvas = document.createElement('canvas');
				canvas.width  = img.width;
				canvas.height = img.height;
				// restore css
				node.attr('style', style);
				// Draw Image
				canvas.getContext('2d').drawImage(img, 0, 0);
				// To Base64
				data = canvas.toDataURL(mime);
			} catch(e) {
				data = node.attr('src');
			}
			return data;
		},
		iframeClose = function(ifm) {
			var $ifm = $(ifm),
				dfd = $.Deferred().always(function() {
					$ifm.off('load', load);
				}),
				ab = 'about:blank',
				chk = function() {
					tm = setTimeout(function() {
						var src;
						try {
							src = base.contentWindow.location.href;
						} catch(e) {
							src = null;
						}
						if (src === ab) {
							dfd.resolve();
						} else if (--cnt > 0){
							chk();
						} else {
							dfd.reject();
						}
					}, 500);
				},
				load = function() {
					tm && clearTimeout(tm);
					dfd.resolve();
				},
				cnt = 20, // 500ms * 20 = 10sec wait
				tm;
			$ifm.one('load', load);
			ifm.src = ab;
			chk();
			return dfd;
		};
	
	// check getfile callback function
	if (getfile) {
		getfile = getfile[1];
		if (getfile === 'ckeditor') {
			elFinder.prototype._options.getFileCallback = function(file, fm) {
				window.opener.CKEDITOR.tools.callFunction((function() {
					var reParam = new RegExp('(?:[?&]|&amp;)CKEditorFuncNum=([^&]+)', 'i'),
						match = window.location.search.match(reParam);
					return (match && match.length > 1) ? match[1] : '';
				})(), fm.convAbsUrl(file.url));
				fm.destroy();
				window.close();
			};
		}
	}
	
	// return editors Array
	return [
		{
			// tui.image-editor - https://github.com/nhnent/tui.image-editor
			info : {
				id: 'tuiimgedit',
				name: 'TUI Image Editor',
				iconImg: 'img/editor-icons.png 0 -48',
				dataScheme: true,
				schemeContent: true,
				openMaximized: true,
				canMakeEmpty: false,
				integrate: {
					title: 'TOAST UI Image Editor',
					link: 'http://ui.toast.com/tui-image-editor/'
				}
			},
			// MIME types to accept
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			// HTML of this editor
			html : '<div class="elfinder-edit-imageeditor"><canvas></canvas></div>',
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || fm.UA.Mobile) {
					this.disabled = true;
				} else {
					this.opts = Object.assign({
						version: 'v3.15.3'
					}, opts.extraOptions.tuiImgEditOpts || {}, {
						iconsPath : fm.baseUrl + 'img/tui-',
						theme : {}
					});
					if (!fm.isSameOrigin(this.opts.iconsPath)) {
						this.disabled = true;
						fm.debug('warning', 'Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.');
					}
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, content, fm) {
				this.data('url', content);
			},
			load : function(base) {
				var self = this,
					fm   = this.fm,
					dfrd = $.Deferred(),
					cdns = fm.options.cdns,
					ver  = self.confObj.opts.version,
					init = function(editor) {
						var $base = $(base),
							bParent = $base.parent(),
							opts = self.confObj.opts,
							iconsPath = opts.iconsPath,
							tmpContainer = $('<div class="tui-image-editor-container">').appendTo(bParent),
							tmpDiv = [
								$('<div class="tui-image-editor-submenu"></div>').appendTo(tmpContainer),
								$('<div class="tui-image-editor-controls"></div>').appendTo(tmpContainer)
							],
							iEditor = new editor(base, {
								includeUI: {
									loadImage: {
										path: $base.data('url'),
										name: self.file.name
									},
									theme: opts.theme,
									initMenu: 'filter',
									menuBarPosition: 'bottom'
								},
								cssMaxWidth: Math.max(300, bParent.width()),
								cssMaxHeight: Math.max(200, bParent.height() - (tmpDiv[0].height() + tmpDiv[1].height() + 3 /*margin*/)),
								usageStatistics: false
							}),
							canvas = $base.find('canvas:first').get(0),
							zoom = function(v) {
								if (typeof v !== 'undefined') {
									var c = $(canvas),
										w = parseInt(c.attr('width')),
										h = parseInt(c.attr('height')),
										a = w / h,
										z, mw, mh;
									if (v === 0) {
										mw = w;
										mh = h;
									} else {
										mw = parseInt(c.css('max-width')) + Number(v);
										mh = mw / a;
										if (mw > w && mh > h) {
											mw = w;
											mh = h;
										}
									}
									z = Math.round(mw / w * 100);
									// Control zoom button of TUI Image Editor
									if (z < 100) {
										iEditor.resetZoom();
										iEditor.stopDrawingMode();
										tuiZoomCtrls.hide();
									} else {
										tuiZoomCtrls.show();
									}
									per.text(z + '%');
									iEditor.resizeCanvasDimension({width: mw, height: mh});
									// continually change more
									if (zoomMore) {
										setTimeout(function() {
											zoomMore && zoom(v);
										}, 50);
									}
								}
							},
							zup = $('<span class="ui-icon ui-icon-plusthick"></span>').data('val', 10),
							zdown = $('<span class="ui-icon ui-icon-minusthick"></span>').data('val', -10),
							per = $('<button></button>').css('width', '4em').text('%').attr('title', '100%').data('val', 0),
							tuiZoomCtrls,
							quty, qutyTm, zoomTm, zoomMore;

						tmpContainer.remove();
						$base.removeData('url').data('mime', self.file.mime);
						// jpeg quality controls
						if (self.file.mime === 'image/jpeg') {
							$base.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality'));
							quty = $('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
								.attr('min', '1')
								.attr('max', '100')
								.attr('title', '1 - 100')
								.on('change', function() {
									var q = quty.val();
									$base.data('quality', q);
									qutyTm && cancelAnimationFrame(qutyTm);
									qutyTm = requestAnimationFrame(function() {
										canvas.toBlob(function(blob) {
											blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
										}, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100);
									});
								})
								.val($base.data('quality'));
							$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
								.append(
									$('<span>').html(fm.i18n('quality') + ' : '), quty, $('<span></span>')
								)
								.prependTo($base.parent().next());
						} else if (self.file.mime === 'image/svg+xml') {
							$base.closest('.ui-dialog').trigger('changeType', {
								extention: 'png',
								mime : 'image/png',
								keepEditor: true
							});
						}
						// zoom scale controls
						$('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>')
							.append(
								zdown, per, zup
							)
							.attr('title', fm.i18n('scale'))
							.on('click', 'span,button', function() {
								zoom($(this).data('val'));
							})
							.on('mousedown mouseup mouseleave', 'span', function(e) {
								zoomMore = false;
								zoomTm && clearTimeout(zoomTm);
								if (e.type === 'mousedown') {
									zoomTm = setTimeout(function() {
										zoomMore = true;
										zoom($(e.target).data('val'));
									}, 500);
								}
							})
							.prependTo($base.parent().next());

						// wait canvas ready
						setTimeout(function() {
							dfrd.resolve(iEditor);
							if (quty) {
								quty.trigger('change');
								iEditor.on('redoStackChanged undoStackChanged', function() {
									quty.trigger('change');
								});
							}
							// ZOOM controls of TUI Image Editor
							tuiZoomCtrls = $base.find('.tie-btn-zoomIn,.tie-btn-zoomOut,.tie-btn-hand');
							// show initial scale
							zoom(null);
						}, 100);

						// show color slider (maybe TUI-Image-Editor's bug)
						// see https://github.com/nhn/tui.image-editor/issues/153
						$base.find('.tui-colorpicker-palette-container').on('click', '.tui-colorpicker-palette-preview', function() {
							$(this).closest('.color-picker-control').height('auto').find('.tui-colorpicker-slider-container').toggle();
						});
						$base.on('click', function() {
							$base.find('.tui-colorpicker-slider-container').hide();
						});
					},
					loader;

				if (!self.confObj.editor) {
					loader = $.Deferred();
					fm.loadCss([
						cdns.tui + '/tui-color-picker/latest/tui-color-picker.css',
						cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.css'
					]);
					if (fm.hasRequire) {
						require.config({
							paths : {
								'fabric/dist/fabric.require' : cdns.fabric + '/fabric.require.min', // for fabric < 2.0.1
								'fabric' : cdns.fabric + '/fabric.min', // for fabric >= 2.0.1
								'tui-code-snippet' : cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min',
								'tui-color-picker' : cdns.tui + '/tui-color-picker/latest/tui-color-picker.min',
								'tui-image-editor' : cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min'
							}
						});
						require(['tui-image-editor'], function(ImageEditor) {
							loader.resolve(ImageEditor);
						});
					} else {
						fm.loadScript([
							cdns.fabric + '/fabric.min.js',
							cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min.js'
						], function() {
							fm.loadScript([
								cdns.tui + '/tui-color-picker/latest/tui-color-picker.min.js'
							], function() {
								fm.loadScript([
									cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min.js'
								], function() {
									loader.resolve(window.tui.ImageEditor);
								}, {
									loadType: 'tag'
								});
							}, {
								loadType: 'tag'
							});
						}, {
							loadType: 'tag'
						});
					}
					loader.done(function(editor) {
						self.confObj.editor = editor;
						init(editor);
					});
				} else {
					init(self.confObj.editor);
				}
				return dfrd;
			},
			getContent : function(base) {
				var editor = this.editor,
					fm = editor.fm,
					$base = $(base),
					quality = $base.data('quality');
				if (editor.instance) {
					if ($base.data('mime') === 'image/jpeg') {
						quality = quality || fm.storage('jpgQuality') || fm.option('jpgQuality');
						quality = Math.max(0.1, Math.min(1, quality / 100));
					}
					return editor.instance.toDataURL({
						format: getExtention($base.data('mime'), fm, true),
						quality: quality
					});
				}
			},
			save : function(base) {
				var $base = $(base),
					quality = $base.data('quality'),
					hash = $base.data('hash'),
					file;
				this.instance.deactivateAll();
				if (typeof quality !== 'undefined') {
					this.fm.storage('jpgQuality', quality);
				}
				if (hash) {
					file = this.fm.file(hash);
					$base.data('mime', file.mime);
				}
			}
		},
		{
			// Photopea advanced image editor
			info : {
				id : 'photopea',
				name : 'Photopea',
				iconImg : 'img/editor-icons.png 0 -160',
				single: true,
				noContent: true,
				arrayBufferContent: true,
				openMaximized: true,
				// Disable file types that cannot be saved on Photopea.
				canMakeEmpty: ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', /*'image/x-adobe-dng',*/ 'image/webp', /*'image/x-xcf',*/ 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', /*'application/x-msmetafile'*/],
				integrate: {
					title: 'Photopea',
					link: 'https://www.photopea.com/learn/'
				}
			},
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', 'image/x-adobe-dng', 'image/webp', 'image/x-xcf', 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', 'application/x-msmetafile'],
			html : '<iframe style="width:100%;height:100%;border:none;"></iframe>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				if (fm.UA.IE || fm.UA.Mobile) {
					this.disabled = true;
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var orig = 'https://www.photopea.com',
					ifm = $(this).hide()
						//.css('box-sizing', 'border-box')
						.on('load', function() {
							//spnr.remove();
							ifm.show();
						})
						.on('error', function() {
							spnr.remove();
							ifm.show();
						}),
					editor = this.editor,
					confObj = editor.confObj,
					spnr = $('<div class="elfinder-edit-spinner elfinder-edit-photopea"></div>')
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(ifm.parent()),
					saveMimes = fm.arrayFlip(confObj.info.canMakeEmpty),
					getType = function(mime) {
						var ext = getExtention(mime, fm),
							extmime = ext2mime[ext];

						if (!confObj.mimesFlip[extmime]) {
							ext = '';
						} else if (ext === 'jpeg') {
							ext = 'jpg';
						}
						if (!ext || !saveMimes[extmime]) {
							ext = 'psd';
							extmime = ext2mime[ext];
							ifm.closest('.ui-dialog').trigger('changeType', {
								extention: ext,
								mime : extmime,
								keepEditor: true
							});
						}
						return ext;
					},
					mime = file.mime,
					liveMsg, type, quty;
				
				if (!confObj.mimesFlip) {
					confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true);
				}
				if (!confObj.liveMsg) {
					confObj.liveMsg = function(ifm, spnr, file) {
						var wnd = ifm.get(0).contentWindow,
							phase = 0,
							data = null,
							dfdIni = $.Deferred().done(function() {
								spnr.remove();
								phase = 1;
								wnd.postMessage(data, orig);
							}),
							dfdGet;

						this.load = function() {
							return fm.getContents(file.hash, 'arraybuffer').done(function(d) {
								data = d;
							});
						};

						this.receive = function(e) {
							var ev = e.originalEvent,
								state;
							if (ev.origin === orig && ev.source === wnd) {
								if (ev.data === 'done') {
									if (phase === 0) {
										dfdIni.resolve();
									} else if (phase === 1) {
										phase = 2;
										ifm.trigger('contentsloaded');
									} else {
										if (dfdGet && dfdGet.state() === 'pending') {
											dfdGet.reject('errDataEmpty');
										}
									}
								} else if (ev.data === 'Save') {
									editor.doSave();
								} else {
									if (dfdGet && dfdGet.state() === 'pending') {
										if (typeof ev.data === 'object') {
											dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(ev.data));
										} else {
											dfdGet.reject('errDataEmpty');
										}
									}
								}
							}
						};

						this.getContent = function() {
							var type, q;
							if (phase > 1) {
								dfdGet && dfdGet.state() === 'pending' && dfdGet.reject();
								dfdGet = null;
								dfdGet = $.Deferred();
								if (phase === 2) {
									phase = 3;
									dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(data));
									data = null;
									return dfdGet;
								}
								if (ifm.data('mime')) {
									mime = ifm.data('mime');
									type = getType(mime);
								}
								if (q = ifm.data('quality')) {
									type += ':' + (q / 100);
								}
								wnd.postMessage('app.activeDocument.saveToOE("' + type + '")', orig);
								return dfdGet;
							}
						};
					};
				}

				ifm.parent().css('padding', 0);
				type = getType(file.mime);
				liveMsg = editor.liveMsg = new confObj.liveMsg(ifm, spnr, file);
				$(window).on('message.' + fm.namespace, liveMsg.receive);
				liveMsg.load().done(function() {
					var d = JSON.stringify({
						files : [],
						environment : {
							lang: fm.lang.replace(/_/g, '-'),
							customIO: {"save": "app.echoToOE(\"Save\");"}
						}
					});
					ifm.attr('src', orig + '/#' + encodeURI(d));
				}).fail(function(err) {
					err && fm.error(err);
					editor.initFail = true;
				});

				// jpeg quality controls
				if (file.mime === 'image/jpeg' || file.mime === 'image/webp') {
					ifm.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality'));
					quty = $('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
						.attr('min', '1')
						.attr('max', '100')
						.attr('title', '1 - 100')
						.on('change', function() {
							var q = quty.val();
							ifm.data('quality', q);
						})
						.val(ifm.data('quality'));
					$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
						.append(
							$('<span>').html(fm.i18n('quality') + ' : '), quty, $('<span></span>')
						)
						.prependTo(ifm.parent().next());
				}
			},
			load : function(base) {
				var dfd = $.Deferred(),
					self = this,
					fm = this.fm,
					$base = $(base);
				if (self.initFail) {
					dfd.reject();
				} else {
					$base.on('contentsloaded', function() {
						dfd.resolve(self.liveMsg);
					});
				}
				return dfd;
			},
			getContent : function() {
				return this.editor.liveMsg? this.editor.liveMsg.getContent() : void(0);
			},
			save : function(base, liveMsg) {
				var $base = $(base),
					quality = $base.data('quality'),
					hash = $base.data('hash'),
					file;
				if (typeof quality !== 'undefined') {
					this.fm.storage('jpgQuality', quality);
				}
				if (hash) {
					file = this.fm.file(hash);
					$base.data('mime', file.mime);
				} else {
					$base.removeData('mime');
				}
			},
			// On dialog closed
			close : function(base, liveMsg) {
				$(base).attr('src', '');
				liveMsg && $(window).off('message.' + this.fm.namespace, liveMsg.receive);
			}
		},
		{
			// Pixo is cross-platform image editor
			info : {
				id : 'pixo',
				name : 'Pixo Editor',
				iconImg : 'img/editor-icons.png 0 -208',
				dataScheme: true,
				schemeContent: true,
				single: true,
				canMakeEmpty: false,
				integrate: {
					title: 'Pixo Editor',
					link: 'https://pixoeditor.com/privacy-policy/'
				}
			},
			// MIME types to accept
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			// HTML of this editor
			html : '<div class="elfinder-edit-imageeditor"><img/></div>',
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.pixo || !opts.extraOptions.pixo.apikey) {
					this.disabled = true;
				} else {
					this.editorOpts = opts.extraOptions.pixo;
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, content, fm) {
				initImgTag.call(this, id, file, content, fm);
			},
			// Get data uri scheme (this: this editors HTML node)
			getContent : function() {
				return $(this).children('img:first').attr('src');
			},
			// Launch Pixo editor when dialog open
			load : function(base) {
				var self = this,
					fm = this.fm,
					$base = $(base),
					node = $base.children('img:first'),
					dialog = $base.closest('.ui-dialog'),
					elfNode = fm.getUI(),
					dfrd = $.Deferred(),
					container = $('#elfinder-pixo-container'),
					init = function(onload) {
						var opts;
							
						if (!container.length) {
							container = $('<div id="elfinder-pixo-container" class="ui-front"></div>').css({
								position: 'fixed',
								top: 0,
								right: 0,
								width: '100%',
								height: $(window).height(),
								overflow: 'hidden'
							}).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body');
							// bind switch fullscreen event
							elfNode.on('resize.'+fm.namespace, function(e, data) {
								e.preventDefault();
								e.stopPropagation();
								data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body');
							});
							fm.bind('destroy', function() {
								editor && editor.cancelEditing();
								container.remove();
							});
						} else {
							// always moves to last
							container.appendTo(container.parent());
						}
						node.on('click', launch);
						// Constructor options
						opts = Object.assign({
							type: 'child',
							parent: container.get(0),
							output: {format: 'png'},
							onSave: function(arg) {
								// Check current file.hash, all callbacks are called on multiple instances
								var mime = arg.toBlob().type,
									ext = getExtention(mime, fm),
									draw = function(url) {
										node.one('load error', function() {
												node.data('loading') && node.data('loading')(true);
											})
											.attr('crossorigin', 'anonymous')
											.attr('src', url);
									},
									url = arg.toDataURL();
								node.data('loading')();
								delete base._canvas;
								if (node.data('ext') !== ext) {
									changeImageType(url, self.file.mime).done(function(res, cv) {
										if (cv) {
											base._canvas = canvas = cv;
											quty.trigger('change');
											qBase && qBase.show();
										}
										draw(res);
									}).fail(function() {
										dialog.trigger('changeType', {
											extention: ext,
											mime : mime
										});
										draw(url);
									});
								} else {
									draw(url);
								}
							},
							onClose: function() {
								dialog.removeClass(fm.res('class', 'preventback'));
								fm.toggleMaximize(container, false);
								container.hide();
								fm.toFront(dialog);
							}
						}, self.confObj.editorOpts);
						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: base,
							editorObj: Pixo,
							instance: void(0),
							opts: opts
						});
						// make editor instance
						editor = new Pixo.Bridge(opts);
						dfrd.resolve(editor);
						$base.on('saveAsFail', launch);
						if (onload) {
							onload();
						}
					},
					launch = function() {
						dialog.addClass(fm.res('class', 'preventback'));
						fm.toggleMaximize(container, true);
						fm.toFront(container);
						container.show().data('curhash', self.file.hash);
						editor.edit(node.get(0));
						node.data('loading')(true);
					},
					qBase, quty, qutyTm, canvas, editor;

				node.data('loading')();

				// jpeg quality controls
				if (self.file.mime === 'image/jpeg') {
					quty = $('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
						.attr('min', '1')
						.attr('max', '100')
						.attr('title', '1 - 100')
						.on('change', function() {
							var q = quty.val();
							qutyTm && cancelAnimationFrame(qutyTm);
							qutyTm = requestAnimationFrame(function() {
								if (canvas) {
									canvas.toBlob(function(blob) {
										blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
									}, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100);
								}
							});
						})
						.val(fm.storage('jpgQuality') || fm.option('jpgQuality'));
					qBase = $('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
						.hide()
						.append(
							$('<span>').html(fm.i18n('quality') + ' : '), quty, $('<span></span>')
						)
						.prependTo($base.parent().next());
					$base.data('quty', quty);
				}

				// load script then init
				if (typeof Pixo === 'undefined') {
					fm.loadScript(['https://pixoeditor.com:8443/editor/scripts/bridge.m.js'], function() {
						init(launch);
					}, {loadType: 'tag'});
				} else {
					init();
					launch();
				}
				return dfrd;
			},
			// Convert content url to data uri scheme to save content
			save : function(base) {
				var self = this,
					$base = $(base),
					node = $base.children('img:first'),
					q;
				if (base._canvas) {
					if ($base.data('quty')) {
						q = $base.data('quty').val();
						q && this.fm.storage('jpgQuality', q);
					}
					node.attr('src', base._canvas.toDataURL(self.file.mime, q? Math.max(Math.min(q, 100), 1) / 100 : void(0)));
				} else if (node.attr('src').substr(0, 5) !== 'data:') {
					node.attr('src', imgBase64(node, this.file.mime));
				}
			},
			close : function(base, editor) {
				editor && editor.destroy();
			}
		},
		{
			// ACE Editor
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || !fm.options.cdns.ace) {
					this.disabled = true;
				}
			},
			// `mimes` is not set for support everything kind of text file
			info : {
				id : 'aceeditor',
				name : 'ACE Editor',
				iconImg : 'img/editor-icons.png 0 -96'
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = $.Deferred(),
					cdn  = fm.options.cdns.ace,
					start = function() {
						var editor, editorBase, mode,
						ta = $(textarea),
						taBase = ta.parent(),
						dialog = taBase.parent(),
						id = textarea.id + '_ace',
						ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
						// MIME/mode map
						mimeMode = {
							'text/x-php'			  : 'php',
							'application/x-php'		  : 'php',
							'text/html'				  : 'html',
							'application/xhtml+xml'	  : 'html',
							'text/javascript'		  : 'javascript',
							'application/javascript'  : 'javascript',
							'text/css'				  : 'css',
							'text/x-c'				  : 'c_cpp',
							'text/x-csrc'			  : 'c_cpp',
							'text/x-chdr'			  : 'c_cpp',
							'text/x-c++'			  : 'c_cpp',
							'text/x-c++src'			  : 'c_cpp',
							'text/x-c++hdr'			  : 'c_cpp',
							'text/x-shellscript'	  : 'sh',
							'application/x-csh'		  : 'sh',
							'text/x-python'			  : 'python',
							'text/x-java'			  : 'java',
							'text/x-java-source'	  : 'java',
							'text/x-ruby'			  : 'ruby',
							'text/x-perl'			  : 'perl',
							'application/x-perl'	  : 'perl',
							'text/x-sql'			  : 'sql',
							'text/xml'				  : 'xml',
							'application/docbook+xml' : 'xml',
							'application/xml'		  : 'xml'
						};

						// set base height
						taBase.height(taBase.height());

						// set basePath of ace
						ace.config.set('basePath', cdn);

						// Base node of Ace editor
						editorBase = $('<div id="'+id+'" style="width:100%; height:100%;"></div>').text(ta.val()).insertBefore(ta.hide());

						// Editor flag
						ta.data('ace', true);

						// Aceeditor instance
						editor = ace.edit(id);

						// Ace editor configure
						editor.$blockScrolling = Infinity;
						editor.setOptions({
							theme: 'ace/theme/monokai',
							fontSize: '14px',
							wrap: true,
						});
						ace.config.loadModule('ace/ext/modelist', function() {
							// detect mode
							mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name;
							if (mode === 'text') {
								if (mimeMode[self.file.mime]) {
									mode = mimeMode[self.file.mime];
								}
							}
							// show MIME:mode in title bar
							taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')');
							editor.setOptions({
								mode: 'ace/mode/' + mode
							});
							if (dfrd.state() === 'resolved') {
								dialog.trigger('resize');
							}
						});
						ace.config.loadModule('ace/ext/language_tools', function() {
							ace.require('ace/ext/language_tools');
							editor.setOptions({
								enableBasicAutocompletion: true,
								enableSnippets: true,
								enableLiveAutocompletion: false
							});
						});
						ace.config.loadModule('ace/ext/settings_menu', function() {
							ace.require('ace/ext/settings_menu').init(editor);
						});
						
						// Short cuts
						editor.commands.addCommand({
							name : "saveFile",
							bindKey: {
								win : 'Ctrl-s',
								mac : 'Command-s'
							},
							exec: function(editor) {
								self.doSave();
							}
						});
						editor.commands.addCommand({
							name : "closeEditor",
							bindKey: {
								win : 'Ctrl-w|Ctrl-q',
								mac : 'Command-w|Command-q'
							},
							exec: function(editor) {
								self.doCancel();
							}
						});

						editor.resize();

						// TextArea button and Setting button
						$('<div class="ui-dialog-buttonset"></div>').css('float', 'left')
						.append(
							$('<button></button>').html(self.fm.i18n('TextArea'))
							.button()
							.on('click', function(){
								if (ta.data('ace')) {
									ta.removeData('ace');
									editorBase.hide();
									ta.val(editor.session.getValue()).show().trigger('focus');
									$(this).text('AceEditor');
								} else {
									ta.data('ace', true);
									editorBase.show();
									editor.setValue(ta.hide().val(), -1);
									editor.focus();
									$(this).html(self.fm.i18n('TextArea'));
								}
							})
						)
						.append(
							$('<button>Ace editor setting</button>')
							.button({
								icons: {
									primary: 'ui-icon-gear',
									secondary: 'ui-icon-triangle-1-e'
								},
								text: false
							})
							.on('click', function(){
								editor.showSettingsMenu();
								$('#ace_settingsmenu')
									.css('font-size', '80%')
									.find('div[contains="setOptions"]').hide().end()
									.parent().appendTo($('#elfinder'));
							})
						)
						.prependTo(taBase.next());

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: ace,
							instance: editor,
							opts: {}
						});
						
						//dialog.trigger('resize');
						dfrd.resolve(editor);
					};

				// check ace & start
				if (!self.confObj.loader) {
					self.confObj.loader = $.Deferred();
					self.fm.loadScript([ cdn+'/ace.js' ], function() {
						self.confObj.loader.resolve();
					}, void 0, {obj: window, name: 'ace'});
				}
				self.confObj.loader.done(start);

				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.destroy();
			},
			save : function(textarea, instance) {
				instance && $(textarea).data('ace') && (textarea.value = instance.session.getValue());
			},
			focus : function(textarea, instance) {
				instance && $(textarea).data('ace') && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && instance.resize();
			}
		},
		{
			// CodeMirror
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE10 || !fm.options.cdns.codemirror) {
					this.disabled = true;
				}
			},
			// `mimes` is not set for support everything kind of text file
			info : {
				id : 'codemirror',
				name : 'CodeMirror',
				iconImg : 'img/editor-icons.png 0 -176'
			},
			load : function(textarea) {
				var fm = this.fm,
					cmUrl = fm.convAbsUrl(fm.options.cdns.codemirror),
					dfrd = $.Deferred(),
					self = this,
					start = function(CodeMirror) {
						var ta   = $(textarea),
							base = ta.parent(),
							editor, editorBase, opts;
						
						// set base height
						base.height(base.height());
						
						// CodeMirror configure options
						opts = {
							lineNumbers: true,
							lineWrapping: true,
							extraKeys : {
								'Ctrl-S': function() { self.doSave(); },
								'Ctrl-Q': function() { self.doCancel(); },
								'Ctrl-W': function() { self.doCancel(); }
							}
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: CodeMirror,
							instance: void(0),
							opts: opts
						});

						// CodeMirror configure
						editor = CodeMirror.fromTextArea(textarea, opts);
						
						// return editor instance
						dfrd.resolve(editor);
						
						// Auto mode set
						var info, m, mode, spec;
						if (! info) {
							info = CodeMirror.findModeByMIME(self.file.mime);
						}
						if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) {
							info = CodeMirror.findModeByExtension(m[1]);
						}
						if (info) {
							CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js';
							mode = info.mode;
							spec = info.mime;
							editor.setOption('mode', spec);
							CodeMirror.autoLoadMode(editor, mode);
							// show MIME:mode in title bar
							base.prev().children('.elfinder-dialog-title').append(' (' + spec + (mode != 'null'? ' : ' + mode : '') + ')');
						}
						
						// editor base node
						editorBase = $(editor.getWrapperElement()).css({
							// fix CSS conflict to SimpleMDE
							padding: 0,
							border: 'none'
						});
						ta.data('cm', true);
						
						// fit height to base
						editorBase.height('100%');
						
						// TextArea button and Setting button
						$('<div class="ui-dialog-buttonset"></div>').css('float', 'left')
						.append(
							$('<button></button>').html(self.fm.i18n('TextArea'))
							.button()
							.on('click', function(){
								if (ta.data('cm')) {
									ta.removeData('cm');
									editorBase.hide();
									ta.val(editor.getValue()).show().trigger('focus');
									$(this).text('CodeMirror');
								} else {
									ta.data('cm', true);
									editorBase.show();
									editor.setValue(ta.hide().val());
									editor.refresh();
									editor.focus();
									$(this).html(self.fm.i18n('TextArea'));
								}
							})
						)
						.prependTo(base.next());
					};
				// load script then start
				if (!self.confObj.loader) {
					self.confObj.loader = $.Deferred();
					if (useRequire) {
						require.config({
							packages: [{
								name: 'codemirror',
								location: cmUrl,
								main: 'codemirror.min'
							}],
							map: {
								'codemirror': {
									'codemirror/lib/codemirror': 'codemirror'
								}
							}
						});
						require([
							'codemirror',
							'codemirror/addon/mode/loadmode.min',
							'codemirror/mode/meta.min'
						], function(CodeMirror) {
							self.confObj.loader.resolve(CodeMirror);
						});
					} else {
						self.fm.loadScript([
							cmUrl + '/codemirror.min.js'
						], function() {
							self.fm.loadScript([
								cmUrl + '/addon/mode/loadmode.min.js',
								cmUrl + '/mode/meta.min.js'
							], function() {
								self.confObj.loader.resolve(CodeMirror);
							});
						}, {loadType: 'tag'});
					}
					self.fm.loadCss(cmUrl + '/codemirror.css');
				}
				self.confObj.loader.done(start);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.toTextArea();
			},
			save : function(textarea, instance) {
				instance && $(textarea).data('cm') && (textarea.value = instance.getValue());
			},
			focus : function(textarea, instance) {
				instance && $(textarea).data('cm') && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && instance.refresh();
			}
		},
		{
			// SimpleMDE
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE10 || !fm.options.cdns.simplemde) {
					this.disabled = true;
				}
			},
			info : {
				id : 'simplemde',
				name : 'SimpleMDE',
				iconImg : 'img/editor-icons.png 0 -80'
			},
			exts  : ['md'],
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					base = $(textarea).parent(),
					dfrd = $.Deferred(),
					cdn  = fm.options.cdns.simplemde,
					start = function(SimpleMDE) {
						var h	 = base.height(),
							delta = base.outerHeight(true) - h + 14,
							editor, editorBase, opts;
						
						// fit height function
						textarea._setHeight = function(height) {
							var h	= height || base.height(),
								ctrH = 0,
								areaH;
							base.children('.editor-toolbar,.editor-statusbar').each(function() {
								ctrH += $(this).outerHeight(true);
							});
							areaH = h - ctrH - delta;
							editorBase.height(areaH);
							editor.codemirror.refresh();
							return areaH;
						};
						
						// set base height
						base.height(h);
						
						opts = {
							element: textarea,
							autofocus: true
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: SimpleMDE,
							instance: void(0),
							opts: opts
						});

						// make editor
						editor = new SimpleMDE(opts);
						dfrd.resolve(editor);
						
						// editor base node
						editorBase = $(editor.codemirror.getWrapperElement());
						
						// fit height to base
						editorBase.css('min-height', '50px')
							.children('.CodeMirror-scroll').css('min-height', '50px');
						textarea._setHeight(h);
					};

				// check SimpleMDE & start
				if (!self.confObj.loader) {
					self.confObj.loader = $.Deferred();
					self.fm.loadCss(cdn+'/simplemde.min.css');
					if (useRequire) {
						require([
							cdn+'/simplemde.min.js'
						], function(SimpleMDE) {
							self.confObj.loader.resolve(SimpleMDE);
						});
					} else {
						self.fm.loadScript([cdn+'/simplemde.min.js'], function() {
							self.confObj.loader.resolve(SimpleMDE);
						}, {loadType: 'tag'});
					}
				}
				self.confObj.loader.done(start);

				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.toTextArea();
				instance = null;
			},
			save : function(textarea, instance) {
				instance && (textarea.value = instance.value());
			},
			focus : function(textarea, instance) {
				instance && instance.codemirror.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && textarea._setHeight();
			}
		},
		{
			// CKEditor for html file
			info : {
				id : 'ckeditor',
				name : 'CKEditor',
				iconImg : 'img/editor-icons.png 0 0'
			},
			exts  : ['htm', 'html', 'xhtml'],
			setup : function(opts, fm) {
				var confObj = this;
				if (!fm.options.cdns.ckeditor) {
					confObj.disabled = true;
				} else {
					confObj.ckeOpts = {};
					if (opts.extraOptions) {
						confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor || {});
						if (opts.extraOptions.managerUrl) {
							confObj.managerUrl = opts.extraOptions.managerUrl;
						}
					}
				}
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = $.Deferred(),
					init = function() {
						var base = $(textarea).parent(),
							dlg = base.closest('.elfinder-dialog'),
							h = base.height(),
							reg = /([&?]getfile=)[^&]+/,
							loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''),
							name = 'ckeditor',
							opts;
						
						// make manager location
						if (reg.test(loc)) {
							loc = loc.replace(reg, '$1' + name);
						} else {
							loc += '?getfile=' + name;
						}
						// set base height
						base.height(h);

						// CKEditor configure options
						opts = {
							startupFocus : true,
							fullPage: true,
							allowedContent: true,
							filebrowserBrowseUrl : loc,
							toolbarCanCollapse: true,
							toolbarStartupExpanded: !fm.UA.Mobile,
							removePlugins: 'resize',
							extraPlugins: 'colorbutton,justify,docprops',
							on: {
								'instanceReady' : function(e) {
									var editor = e.editor;
									editor.resize('100%', h);
									// re-build on dom move
									dlg.one('beforedommove.'+fm.namespace, function() {
										editor.destroy();
									}).one('dommove.'+fm.namespace, function() {
										self.load(textarea).done(function(editor) {
											self.instance = editor;
										});
									});
									// return editor instance
									dfrd.resolve(e.editor);
								}
							}
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: CKEDITOR,
							instance: void(0),
							opts: opts
						});

						// CKEditor configure
						CKEDITOR.replace(textarea.id, Object.assign(opts, self.confObj.ckeOpts));
						CKEDITOR.on('dialogDefinition', function(e) {
							var dlg = e.data.definition.dialog;
							dlg.on('show', function(e) {
								fm.getUI().append($('.cke_dialog_background_cover')).append(this.getElement().$);
							});
							dlg.on('hide', function(e) {
								$('body:first').append($('.cke_dialog_background_cover')).append(this.getElement().$);
							});
						});
					};

				if (!self.confObj.loader) {
					self.confObj.loader = $.Deferred();
					window.CKEDITOR_BASEPATH = fm.options.cdns.ckeditor + '/';
					$.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() {
						self.confObj.loader.resolve();
					});
				}
				self.confObj.loader.done(init);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.destroy();
			},
			save : function(textarea, instance) {
				instance && (textarea.value = instance.getData());
			},
			focus : function(textarea, instance) {
				instance && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				var self;
				if (instance) {
					if (instance.status === 'ready') {
						instance.resize('100%', $(textarea).parent().height());
					}
				}
			}
		},
		{
			// CKEditor5 balloon mode for html file
			info : {
				id : 'ckeditor5',
				name : 'CKEditor5',
				iconImg : 'img/editor-icons.png 0 -16'
			},
			exts : ['htm', 'html', 'xhtml'],
			html : '<div class="edit-editor-ckeditor5"></div>',
			setup : function(opts, fm) {
				var confObj = this;
				// check cdn and ES6 support
				if (!fm.options.cdns.ckeditor5 || typeof window.Symbol !== 'function' || typeof Symbol() !== 'symbol') {
					confObj.disabled = true;
				} else {
					confObj.ckeOpts = {};
					if (opts.extraOptions) {
						// @deprecated option extraOptions.ckeditor5Mode
						if (opts.extraOptions.ckeditor5Mode) {
							confObj.ckeditor5Mode = opts.extraOptions.ckeditor5Mode;
						}
						confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor5 || {});
						if (confObj.ckeOpts.mode) {
							confObj.ckeditor5Mode = confObj.ckeOpts.mode;
							delete confObj.ckeOpts.mode;
						}
						if (opts.extraOptions.managerUrl) {
							confObj.managerUrl = opts.extraOptions.managerUrl;
						}
					}
				}
				fm.bind('destroy', function() {
					confObj.editor = null;
				});
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				$(base).height(base.editor.fm.getUI().height() - 100);
			},
			init : function(id, file, data, fm) {
				var m = data.match(/^([\s\S]*<body[^>]*>)([\s\S]+)(<\/body>[\s\S]*)$/i),
					header = '',
					body = '',
					footer ='';
				this.css({
					width: '100%',
					height: '100%',
					'box-sizing': 'border-box'
				});
				if (m) {
					header = m[1];
					body = m[2];
					footer = m[3];
				} else {
					body = data;
				}
				this.data('data', {
					header: header,
					body: body,
					footer: footer
				});
				this._setupSelEncoding(data);
			},
			load : function(editnode) {
				var self = this,
					fm   = this.fm,
					dfrd = $.Deferred(),
					mode = self.confObj.ckeditor5Mode || 'decoupled-document',
					lang = (function() {
						var l = fm.lang.toLowerCase().replace('_', '-');
						if (l.substr(0, 2) === 'zh' && l !== 'zh-cn') {
							l = 'zh';
						}
						return l;
					})(),
					init = function(cEditor) {
						var base = $(editnode).parent(),
							opts;
						
						// set base height
						base.height(fm.getUI().height() - 100);

						// CKEditor5 configure options
						opts = Object.assign({
							toolbar: ["heading", "|", "fontSize", "fontFamily", "|", "bold", "italic", "underline", "strikethrough", "highlight", "|", "alignment", "|", "numberedList", "bulletedList", "blockQuote", "indent", "outdent", "|", "ckfinder", "link", "imageUpload", "insertTable", "mediaEmbed", "|", "undo", "redo"],
							language: lang
						}, self.confObj.ckeOpts);

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: editnode,
							editorObj: cEditor,
							instance: void(0),
							opts: opts
						});

						cEditor
							.create(editnode, opts)
							.then(function(editor) {
								var ckf = editor.commands.get('ckfinder'),
									fileRepo = editor.plugins.get('FileRepository'),
									prevVars = {}, isImage, insertImages;
								if (editor.ui.view.toolbar && (mode === 'classic' || mode === 'decoupled-document')) {
									$(editnode).closest('.elfinder-dialog').children('.ui-widget-header').append($(editor.ui.view.toolbar.element).css({marginRight:'-1em',marginLeft:'-1em'}));
								}
								if (mode === 'classic') {
									$(editnode).closest('.elfinder-edit-editor').css('overflow', 'auto');
								}
								// Set up this elFinder instead of CKFinder
								if (ckf) {
									isImage = function(f) {
										return f && f.mime.match(/^image\//i);
									};
									insertImages = function(urls) {
										var imgCmd = editor.commands.get('imageUpload');
										if (!imgCmd.isEnabled) {
											var ntf = editor.plugins.get('Notification'),
												i18 = editor.locale.t;
											ntf.showWarning(i18('Could not insert image at the current position.'), {
												title: i18('Inserting image failed'),
												namespace: 'ckfinder'
											});
											return;
										}
										editor.execute('imageInsert', { source: urls });
									};
									// Take over ckfinder execute()
									ckf.execute = function() {
										var dlg = base.closest('.elfinder-dialog'),
											gf = fm.getCommand('getfile'),
											rever = function() {
												if (prevVars.hasVar) {
													dlg.off('resize close', rever);
													gf.callback = prevVars.callback;
													gf.options.folders = prevVars.folders;
													gf.options.multiple = prevVars.multi;
													fm.commandMap.open = prevVars.open;
													prevVars.hasVar = false;
												}
											};
										dlg.trigger('togleminimize').one('resize close', rever);
										prevVars.callback = gf.callback;
										prevVars.folders = gf.options.folders;
										prevVars.multi = gf.options.multiple;
										prevVars.open = fm.commandMap.open;
										prevVars.hasVar = true;
										gf.callback = function(files) {
											var imgs = [];
											if (files.length === 1 && files[0].mime === 'directory') {
												fm.one('open', function() {
													fm.commandMap.open = 'getfile';
												}).getCommand('open').exec(files[0].hash);
												return;
											}
											fm.getUI('cwd').trigger('unselectall');
											$.each(files, function(i, f) {
												if (isImage(f)) {
													imgs.push(fm.convAbsUrl(f.url));
												} else {
													editor.execute('link', fm.convAbsUrl(f.url));
												}
											});
											if (imgs.length) {
												insertImages(imgs);
											}
											dlg.trigger('togleminimize');
										};
										gf.options.folders = true;
										gf.options.multiple = true;
										fm.commandMap.open = 'getfile';
										fm.toast({
											mode: 'info',
											msg: fm.i18n('dblclickToSelect')
										});
									};
								}
								// Set up image uploader
								fileRepo.createUploadAdapter = function(loader) {
									return new uploder(loader);
								};
								editor.setData($(editnode).data('data').body);
								// move .ck-body to elFinder node for fullscreen mode
								fm.getUI().append($('body > div.ck-body'));
								$('div.ck-balloon-panel').css({
									'z-index': fm.getMaximizeCss().zIndex + 1
								});
								dfrd.resolve(editor);
								/*fm.log({
									defaultConfig: cEditor.defaultConfig,
									plugins: cEditor.builtinPlugins.map(function(p) { return p.pluginName; }),
									toolbars: Array.from(editor.ui.componentFactory.names())
								});*/
							})
							['catch'](function(error) { // ['cache'] instead .cache for fix error on ie8 
								fm.error(error);
							});
					},
					uploder = function(loader) {
						var upload = function(file, resolve, reject) {
							fm.exec('upload', {files: [file]}, void(0), fm.cwd().hash)
								.done(function(data){
									if (data.added && data.added.length) {
										fm.url(data.added[0].hash, { async: true }).done(function(url) {
											resolve({
												'default': fm.convAbsUrl(url)
											});
										}).fail(function() {
											reject('errFileNotFound');
										});
									} else {
										reject(fm.i18n(data.error? data.error : 'errUpload'));
									}
								})
								.fail(function(err) {
									var error = fm.parseError(err);
									reject(fm.i18n(error? (error === 'userabort'? 'errAbort' : error) : 'errUploadNoFiles'));
								})
								.progress(function(data) {
									loader.uploadTotal = data.total;
									loader.uploaded = data.progress;
								});
						};
						this.upload = function() {
							return new Promise(function(resolve, reject) {
								if (loader.file instanceof Promise || (loader.file && typeof loader.file.then === 'function')) {
									loader.file.then(function(file) {
										upload(file, resolve, reject);
									});
								} else {
									upload(loader.file, resolve, reject);
								}
							});
						};
						this.abort = function() {
							fm.getUI().trigger('uploadabort');
						};
					}, loader;

				if (!self.confObj.editor) {
					loader = $.Deferred();
					self.fm.loadScript([
						fm.options.cdns.ckeditor5 + '/' + mode + '/ckeditor.js'
					], function(editor) {
						if (!editor) {
							editor = window.BalloonEditor || window.InlineEditor || window.ClassicEditor || window.DecoupledEditor;
						}
						if (fm.lang !== 'en') {
							self.fm.loadScript([
								fm.options.cdns.ckeditor5 + '/' + mode + '/translations/' + lang + '.js'
							], function(obj) {
								loader.resolve(editor);
							}, {
								tryRequire: true,
								loadType: 'tag',
								error: function(obj) {
									lang = 'en';
									loader.resolve(editor);
								}
							});
						} else {
							loader.resolve(editor);
						}
					}, {
						tryRequire: true,
						loadType: 'tag'
					});
					loader.done(function(editor) {
						self.confObj.editor = editor;
						init(editor);
					});
				} else {
					init(self.confObj.editor);
				}
				return dfrd;
			},
			getContent : function() {
				var data = $(this).data('data');
				return data.header + data.body + data.footer;
			},
			close : function(editnode, instance) {
				instance && instance.destroy();
			},
			save : function(editnode, instance) {
				var elm = $(editnode),
					data = elm.data('data');
				if (instance) {
					data.body = instance.getData();
					elm.data('data', data);
				}
			},
			focus : function(editnode, instance) {
				$(editnode).trigger('focus');
			}
		},
		{
			// TinyMCE for html file
			info : {
				id : 'tinymce',
				name : 'TinyMCE',
				iconImg : 'img/editor-icons.png 0 -64'
			},
			exts  : ['htm', 'html', 'xhtml'],
			setup : function(opts, fm) {
				var confObj = this;
				if (!fm.options.cdns.tinymce) {
					confObj.disabled = true;
				} else {
					confObj.mceOpts = {};
					if (opts.extraOptions) {
						confObj.uploadOpts = Object.assign({}, opts.extraOptions.uploadOpts || {});
						confObj.mceOpts = Object.assign({}, opts.extraOptions.tinymce || {});
					} else {
						confObj.uploadOpts = {};
					}
				}
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = $.Deferred(),
					init = function() {
						var base = $(textarea).show().parent(),
							dlg = base.closest('.elfinder-dialog'),
							h = base.height(),
							delta = base.outerHeight(true) - h,
							// hide MCE dialog and modal block
							hideMceDlg = function() {
								var mceW;
								if (tinymce.activeEditor.windowManager.windows) {
									mceW = tinymce.activeEditor.windowManager.windows[0];
									mceDlg = $(mceW? mceW.getEl() : void(0)).hide();
									mceCv = $('#mce-modal-block').hide();
								} else {
									mceDlg = $('.tox-dialog-wrap').hide();
								}
							},
							// Show MCE dialog and modal block
							showMceDlg = function() {
								mceCv && mceCv.show();
								mceDlg && mceDlg.show();
							},
							tVer = tinymce.majorVersion,
							opts, mceDlg, mceCv;

						// set base height
						base.height(h);
						// fit height function
						textarea._setHeight = function(height) {
							if (tVer < 5) {
								var base = $(this).parent(),
									h = height || base.innerHeight(),
									ctrH = 0,
									areaH;
								base.find('.mce-container-body:first').children('.mce-top-part,.mce-statusbar').each(function() {
									ctrH += $(this).outerHeight(true);
								});
								areaH = h - ctrH - delta;
								base.find('.mce-edit-area iframe:first').height(areaH);
							}
						};

						// TinyMCE configure options
						opts = {
							selector: '#' + textarea.id,
							resize: false,
							plugins: 'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help',
							toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat',
							image_advtab: true,
							init_instance_callback : function(editor) {
								// fit height on init
								textarea._setHeight(h);
								// re-build on dom move
								dlg.one('beforedommove.'+fm.namespace, function() {
									tinymce.execCommand('mceRemoveEditor', false, textarea.id);
								}).one('dommove.'+fm.namespace, function() {
									self.load(textarea).done(function(editor) {
										self.instance = editor;
									});
								});
								// return editor instance
								dfrd.resolve(editor);
							},
							file_picker_callback : function (callback, value, meta) {
								var gf = fm.getCommand('getfile'),
									revar = function() {
										if (prevVars.hasVar) {
											gf.callback = prevVars.callback;
											gf.options.folders = prevVars.folders;
											gf.options.multiple = prevVars.multi;
											fm.commandMap.open = prevVars.open;
											prevVars.hasVar = false;
										}
										dlg.off('resize close', revar);
										showMceDlg();
									},
									prevVars = {};
								prevVars.callback = gf.callback;
								prevVars.folders = gf.options.folders;
								prevVars.multi = gf.options.multiple;
								prevVars.open = fm.commandMap.open;
								prevVars.hasVar = true;
								gf.callback = function(file) {
									var url, info;

									if (file.mime === 'directory') {
										fm.one('open', function() {
											fm.commandMap.open = 'getfile';
										}).getCommand('open').exec(file.hash);
										return;
									}

									// URL normalization
									url = fm.convAbsUrl(file.url);
									
									// Make file info
									info = file.name + ' (' + fm.formatSize(file.size) + ')';

									// Provide file and text for the link dialog
									if (meta.filetype == 'file') {
										callback(url, {text: info, title: info});
									}

									// Provide image and alt text for the image dialog
									if (meta.filetype == 'image') {
										callback(url, {alt: info});
									}

									// Provide alternative source and posted for the media dialog
									if (meta.filetype == 'media') {
										callback(url);
									}
									dlg.trigger('togleminimize');
								};
								gf.options.folders = true;
								gf.options.multiple = false;
								fm.commandMap.open = 'getfile';
								
								hideMceDlg();
								dlg.trigger('togleminimize').one('resize close', revar);
								fm.toast({
									mode: 'info',
									msg: fm.i18n('dblclickToSelect')
								});

								return false;
							},
							images_upload_handler : function (blobInfo, success, failure) {
								var file = blobInfo.blob(),
									err = function(e) {
										var dlg = e.data.dialog || {};
		                                if (dlg.hasClass('elfinder-dialog-error') || dlg.hasClass('elfinder-confirm-upload')) {
		                                    hideMceDlg();
		                                    dlg.trigger('togleminimize').one('resize close', revert);
		                                    fm.unbind('dialogopened', err);
		                                }
									},
									revert = function() {
										dlg.off('resize close', revert);
										showMceDlg();
									},
									clipdata = true;

								// check file object
								if (file.name) {
									// file blob of client side file object
									clipdata = void(0);
								}
								fm.bind('dialogopened', err).exec('upload', Object.assign({
									files: [file],
									clipdata: clipdata // to get unique name on connector
								}, self.confObj.uploadOpts), void(0), fm.cwd().hash).done(function(data) {
									if (data.added && data.added.length) {
										fm.url(data.added[0].hash, { async: true }).done(function(url) {
											showMceDlg();
											success(fm.convAbsUrl(url));
										}).fail(function() {
											failure(fm.i18n('errFileNotFound'));
										});
									} else {
										failure(fm.i18n(data.error? data.error : 'errUpload'));
									}
								}).fail(function(err) {
									var error = fm.parseError(err);
									if (error) {
										if (error === 'errUnknownCmd') {
											error = 'errPerm';
										} else if (error === 'userabort') {
											error = 'errAbort';
										}
									}
									failure(fm.i18n(error? error : 'errUploadNoFiles'));
								});
							}
						};

						// TinyMCE 5 supports "height: 100%"
						if (tVer >= 5) {
							opts.height = '100%';
						}

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: tinymce,
							instance: void(0),
							opts: opts
						});

						// TinyMCE configure
						tinymce.init(Object.assign(opts, self.confObj.mceOpts));
					};
				
				if (!self.confObj.loader) {
					self.confObj.loader = $.Deferred();
					self.fm.loadScript([fm.options.cdns.tinymce + (fm.options.cdns.tinymce.match(/\.js/)? '' : '/tinymce.min.js')], function() {
						self.confObj.loader.resolve();
					}, {
						loadType: 'tag'
					});
				}
				self.confObj.loader.done(init);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id);
			},
			save : function(textarea, instance) {
				instance && instance.save();
			},
			focus : function(textarea, instance) {
				instance && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				// fit height to base node on dialog resize
				instance && textarea._setHeight();
			}
		},
		{
			info : {
				id : 'zohoeditor',
				name : 'Zoho Editor',
				iconImg : 'img/editor-icons.png 0 -32',
				cmdCheck : 'ZohoOffice',
				preventGet: true,
				hideButtons: true,
				syncInterval : 15000,
				canMakeEmpty: true,
				integrate: {
					title: 'Zoho Office API',
					link: 'https://www.zoho.com/officeapi/'
				}
			},
			mimes : [
				'application/msword',
				'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
				//'application/pdf',
				'application/vnd.oasis.opendocument.text',
				'application/rtf',
				'text/html',
				'application/vnd.ms-excel',
				'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
				'application/vnd.oasis.opendocument.spreadsheet',
				'application/vnd.sun.xml.calc',
				'text/csv',
				'text/tab-separated-values',
				'application/vnd.ms-powerpoint',
				'application/vnd.openxmlformats-officedocument.presentationml.presentation',
				'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
				'application/vnd.oasis.opendocument.presentation',
				'application/vnd.sun.xml.impress'
			],
			html : '<iframe style="width:100%;max-height:100%;border:none;"></iframe>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				if (fm.UA.Mobile || fm.UA.ltIE8) {
					this.disabled = true;
				}
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				var elfNode = base.editor.fm.getUI();
				$(base).height(elfNode.height());
				dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8);
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var ta = this,
					ifm = $(this).hide(),
					uiToast = fm.getUI('toast'),
					spnr = $('<div class="elfinder-edit-spinner elfinder-edit-zohoeditor"></div>')
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(ifm.parent()),
					cdata = function() {
						var data = '';
						$.each(fm.customData, function(key, val) {
							data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val);
						});
						return data;
					};
				
				$(ta).data('xhr', fm.request({
					data: {
						cmd: 'editor',
						name: ta.editor.confObj.info.cmdCheck,
						method: 'init',
						'args[target]': file.hash,
						'args[lang]' : fm.lang,
						'args[cdata]' : cdata()
					},
					preventDefault : true
				}).done(function(data) {
					var opts;
					if (data.zohourl) {
						opts = {
							css: {
								height: '100%'
							}
						};
						// trigger event 'editEditorPrepare'
						ta.editor.trigger('Prepare', {
							node: ta,
							editorObj: void(0),
							instance: ifm,
							opts: opts
						});

						ifm.attr('src', data.zohourl).show().css(opts.css);
						if (data.warning) {
							uiToast.appendTo(ta.closest('.ui-dialog'));
							fm.toast({
								msg: fm.i18n(data.warning),
								mode: 'warning',
								timeOut: 0,
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								},
								button: {
									text: 'btnYes'
								}
							});
						}
					} else {
						data.error && fm.error(data.error);
						ta.elfinderdialog('destroy');
					}
				}).fail(function(error) {
					error && fm.error(error);
					ta.elfinderdialog('destroy');
				}).always(function() {
					spnr.remove();
				}));
			},
			load : function() {},
			getContent : function() {},
			save : function() {},
			// Before dialog close
			beforeclose : iframeClose,
			// On dialog closed
			close : function(ta) {
				var fm = this.fm,
					xhr = $(ta).data('xhr');
				if (xhr.state() === 'pending') {
					xhr.reject();
				}
			}
		},
		{
			// Zip Archive with FlySystem
			info : {
				id : 'ziparchive',
				name : 'btnMount',
				iconImg : 'img/toolbar.png 0 -416',
				cmdCheck : 'ZipArchive',
				edit : function(file, editor) {
					var fm = this,
						dfrd = $.Deferred();
					fm.request({
						data:{
							cmd: 'netmount',
							protocol: 'ziparchive',
							host: file.hash,
							path: file.phash
						},
						preventFail: true,
						notify : {type : 'netmount', cnt : 1, hideCnt : true}
					}).done(function(data) {
						var pdir;
						if (data.added && data.added.length) {
							if (data.added[0].phash) {
								if (pdir = fm.file(data.added[0].phash)) {
									if (! pdir.dirs) {
										pdir.dirs = 1;
										fm.change({ changed: [ pdir ] });
									}
								}
							}
							fm.one('netmountdone', function() {
								fm.exec('open', data.added[0].hash);
								fm.one('opendone', function() {
									data.toast && fm.toast(data.toast);
								});
							});
						}
						dfrd.resolve();
					})
					.fail(function(error) {
						dfrd.reject(error);
					});
					return dfrd;
				}
			},
			mimes : ['application/zip'],
			load : function() {},
			save : function(){}
		},
		{
			// Simple Text (basic textarea editor)
			info : {
				id : 'textarea',
				name : 'TextArea',
				useTextAreaEvent : true
			},
			load : function(textarea) {
				// trigger event 'editEditorPrepare'
				this.trigger('Prepare', {
					node: textarea,
					editorObj: void(0),
					instance: void(0),
					opts: {}
				});
				textarea.setSelectionRange && textarea.setSelectionRange(0, 0);
				$(textarea).trigger('focus').show();
			},
			save : function(){}
		},
		{
			// File converter with online-convert.com
			info : {
				id : 'onlineconvert',
				name : 'Online Convert',
				iconImg : 'img/editor-icons.png 0 -144',
				cmdCheck : 'OnlineConvert',
				preventGet: true,
				hideButtons: true,
				single: true,
				converter: true,
				canMakeEmpty: false,
				integrate: {
					title: 'ONLINE-CONVERT.COM',
					link: 'https://online-convert.com'
				}
			},
			mimes : ['*'],
			html : '<div style="width:100%;max-height:100%;"></div>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				var mOpts = opts.extraOptions.onlineConvert || {maxSize:100,showLink:true};
				if (mOpts.maxSize) {
					this.info.maxSize = mOpts.maxSize * 1048576;
				}
				this.set = Object.assign({
					url : 'https://%s.online-convert.com%s?external_url=',
					conv : {
						Archive: {'7Z':{}, 'BZ2':{ext:'bz'}, 'GZ':{}, 'ZIP':{}},
						Audio: {'MP3':{}, 'OGG':{ext:'oga'}, 'WAV':{}, 'WMA':{}, 'AAC':{}, 'AIFF':{ext:'aif'}, 'FLAC':{}, 'M4A':{}, 'MMF':{}, 'OPUS':{ext:'oga'}},
						Document: {'DOC':{}, 'DOCX':{}, 'HTML':{}, 'ODT':{}, 'PDF':{}, 'PPT':{}, 'PPTX':{}, 'RTF':{}, 'SWF':{}, 'TXT':{}},
						eBook: {'AZW3':{ext:'azw'}, 'ePub':{}, 'FB2':{ext:'xml'}, 'LIT':{}, 'LRF':{}, 'MOBI':{}, 'PDB':{}, 'PDF':{},'PDF-eBook':{ext:'pdf'}, 'TCR':{}},
						Hash: {'Adler32':{},  'Apache-htpasswd':{}, 'Blowfish':{}, 'CRC32':{}, 'CRC32B':{}, 'Gost':{}, 'Haval128':{},'MD4':{}, 'MD5':{}, 'RIPEMD128':{}, 'RIPEMD160':{}, 'SHA1':{}, 'SHA256':{}, 'SHA384':{}, 'SHA512':{}, 'Snefru':{}, 'Std-DES':{}, 'Tiger128':{}, 'Tiger128-calculator':{}, 'Tiger128-converter':{}, 'Tiger160':{}, 'Tiger192':{}, 'Whirlpool':{}},
						Image: {'BMP':{}, 'EPS':{ext:'ai'}, 'GIF':{}, 'EXR':{}, 'ICO':{}, 'JPG':{}, 'PNG':{}, 'SVG':{}, 'TGA':{}, 'TIFF':{ext:'tif'}, 'WBMP':{}, 'WebP':{}},
						Video: {'3G2':{}, '3GP':{}, 'AVI':{}, 'FLV':{}, 'HLS':{ext:'m3u8'}, 'MKV':{}, 'MOV':{}, 'MP4':{}, 'MPEG-1':{ext:'mpeg'}, 'MPEG-2':{ext:'mpeg'}, 'OGG':{ext:'ogv'}, 'OGV':{}, 'WebM':{}, 'WMV':{}, 'Android':{link:'/convert-video-for-%s',ext:'mp4'}, 'Blackberry':{link:'/convert-video-for-%s',ext:'mp4'}, 'DPG':{link:'/convert-video-for-%s',ext:'avi'}, 'iPad':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPhone':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPod':{link:'/convert-video-for-%s',ext:'mp4'}, 'Nintendo-3DS':{link:'/convert-video-for-%s',ext:'avi'}, 'Nintendo-DS':{link:'/convert-video-for-%s',ext:'avi'}, 'PS3':{link:'/convert-video-for-%s',ext:'mp4'}, 'Wii':{link:'/convert-video-for-%s',ext:'avi'}, 'Xbox':{link:'/convert-video-for-%s',ext:'wmv'}}
					},
					catExts : {
						Hash: 'txt'
					},
					link : '<div class="elfinder-edit-onlineconvert-link"><a href="https://www.online-convert.com" target="_blank"><span class="elfinder-button-icon"></span>ONLINE-CONVERT.COM</a></div>',
					useTabs : ($.fn.tabs && !fm.UA.iOS)? true : false // Can't work on iOS, I don't know why.
				}, mOpts);
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				var elfNode = base.editor.fm.getUI();
				$(base).height(elfNode.height());
				dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8);
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var ta = this,
					confObj = ta.editor.confObj,
					set = confObj.set,
					uiToast = fm.getUI('toast'),
					idxs = {},
					allowZip = fm.uploadMimeCheck('application/zip', file.phash),
					selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '',
					getExt = function(cat, con) {
						var c;
						if (set.catExts[cat]) {
							return set.catExts[cat];
						}
						if (set.conv[cat] && (c = set.conv[cat][con])) {
							return (c.ext || con).toLowerCase();
						}
						return con.toLowerCase();
					},
					setOptions = function(cat, done) {
						var type, dfdInit, dfd;
						if (typeof confObj.api === 'undefined') {
							dfdInit = fm.request({
								data: {
									cmd: 'editor',
									name: 'OnlineConvert',
									method: 'init'
								},
								preventDefault : true
							});
						} else {
							dfdInit = $.Deferred().resolve({api: confObj.api});
						}
						cat = cat.toLowerCase();
						dfdInit.done(function(data) {
							confObj.api = data.api;
							if (confObj.api) {
								if (cat) {
									type = '?category=' + cat;
								} else {
									type = '';
									cat = 'all';
								}
								if (!confObj.conversions) {
									confObj.conversions = {};
								}
								if (!confObj.conversions[cat]) {
									dfd = $.getJSON('https://api2.online-convert.com/conversions' + type);
								} else {
									dfd = $.Deferred().resolve(confObj.conversions[cat]);
								}
								dfd.done(function(d) {
									confObj.conversions[cat] = d;
									$.each(d, function(i, o) {
										btns[set.useTabs? 'children' : 'find']('.onlineconvert-category-' + o.category).children('.onlineconvert-' + o.target).trigger('makeoption', o);
									});
									done && done();
								});
							}
						});
					},
					btns = (function() {
						var btns = $('<div></div>').on('click', 'button', function() {
								var b = $(this),
									opts = b.data('opts') || null,
									cat = b.closest('.onlineconvert-category').data('cname'),
									con = b.data('conv');
								if (confObj.api === true) {
									api({
										category: cat,
										convert: con,
										options: opts
									});
								}
							}).on('change', function(e) {
								var t = $(e.target),
									p = t.parent(), 
									b = t.closest('.elfinder-edit-onlineconvert-button').children('button:first'),
									o = b.data('opts') || {},
									v = p.data('type') === 'boolean'? t.is(':checked') : t.val();
								e.stopPropagation();
								if (v) {
									if (p.data('type') === 'integer') {
										v = parseInt(v);
									}
									if (p.data('pattern')) {
										var reg = new RegExp(p.data('pattern'));
										if (!reg.test(v)) {
											requestAnimationFrame(function() {
												fm.error('"' + fm.escape(v) + '" is not match to "/' + fm.escape(p.data('pattern')) + '/"');
											});
											v = null;
										}
									}
								}
								if (v) {
									o[t.parent().data('optkey')] = v;
								} else {
									delete o[p.data('optkey')];
								}
								b.data('opts', o);
							}),
							ul = $('<ul></ul>'),
							oform = function(n, o) {
								var f = $('<p></p>').data('optkey', n).data('type', o.type),
									checked = '',
									disabled = '',
									nozip = false,
									opts, btn, elm;
								if (o.description) {
									f.attr('title', fm.i18n(o.description));
								}
								if (o.pattern) {
									f.data('pattern', o.pattern);
								}
								f.append($('<span></span>').text(fm.i18n(n) + ' : '));
								if (o.type === 'boolean') {
									if (o['default'] || (nozip = (n === 'allow_multiple_outputs' && !allowZip))) {
										checked = ' checked';
										if (nozip) {
											disabled = ' disabled';
										}
										btn = this.children('button:first');
										opts = btn.data('opts') || {};
										opts[n] = true;
										btn.data('opts', opts);
									}
									f.append($('<input type="checkbox" value="true"'+checked+disabled+'/>'));
								} else if (o['enum']){
									elm = $('<select></select>').append($('<option value=""></option>').text('Select...'));
									$.each(o['enum'], function(i, v) {
										elm.append($('<option value="'+v+'"></option>').text(v));
									});
									f.append(elm);
								} else {
									f.append($('<input type="text" value=""/>'));
								}
								return f;
							},
							makeOption = function(o) {
								var elm = this,
									b = $('<span class="elfinder-button-icon elfinder-button-icon-preference"></span>').on('click', function() {
										f.toggle();
									}),
									f = $('<div class="elfinder-edit-onlinconvert-options"></div>').hide();
								if (o.options) {
									$.each(o.options, function(k, v) {
										k !== 'download_password' && f.append(oform.call(elm, k, v));
									});
								}
								elm.append(b, f);
							},
							ts = (+new Date()),
							i = 0;
						
						if (!confObj.ext2mime) {
							confObj.ext2mime = Object.assign(fm.arrayFlip(fm.mimeTypes), ext2mime);
						}
						$.each(set.conv, function(t, c) {
							var cname = t.toLowerCase(),
								id = 'elfinder-edit-onlineconvert-' + cname + ts,
								type = $('<div id="' + id + '" class="onlineconvert-category onlineconvert-category-'+cname+'"></div>').data('cname', t),
								cext;
							$.each(c, function(n, o) {
								var nl = n.toLowerCase(),
									ext = getExt(t, n);
								if (!confObj.ext2mime[ext]) {
									if (cname === 'audio' || cname === 'image' || cname === 'video') {
										confObj.ext2mime[ext] = cname + '/x-' + nl;
									} else {
										confObj.ext2mime[ext] = 'application/octet-stream';
									}
								}
								if (fm.uploadMimeCheck(confObj.ext2mime[ext], file.phash)) {
									type.append($('<div class="elfinder-edit-onlineconvert-button onlineconvert-'+nl+'"></div>').on('makeoption', function(e, data) {
										var elm = $(this);
										if (!elm.children('.elfinder-button-icon-preference').length) {
											makeOption.call(elm, data);
										}
									}).append($('<button></button>').text(n).data('conv', n)));
								}
							});
							if (type.children().length) {
								ul.append($('<li></li>').append($('<a></a>').attr('href', selfUrl + '#' + id).text(t)));
								btns.append(type);
								idxs[cname] = i++;
							}
						});
						if (set.useTabs) {
							btns.prepend(ul).tabs({
								beforeActivate: function(e, ui) {
									setOptions(ui.newPanel.data('cname'));
								}
							});
						} else {
							$.each(set.conv, function(t) {
								var tl = t.toLowerCase();
								btns.append($('<fieldset class="onlineconvert-fieldset-' + tl + '"></fieldset>').append($('<legend></legend>').text(t)).append(btns.children('.onlineconvert-category-' + tl)));
							});
						}
						return btns;
					})(),
					select = $(this)
						.append(
							btns,
							(set.showLink? $(set.link) : null)
						),
					spnr = $('<div class="elfinder-edit-spinner elfinder-edit-onlineconvert"></div>')
						.hide()
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(select.parent()),
					prog = $('<div class="elfinder-quicklook-info-progress"></div>').appendTo(spnr),
					_url = null,
					url = function() {
						var onetime;
						if (_url) {
							return $.Deferred().resolve(_url);
						} else {
							spnr.show();
							return fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
								_url = url;
							}).fail(function(error) {
								error && fm.error(error);
								ta.elfinderdialog('destroy');
							}).always(function() {
								spnr.hide();
							});
						}
					},
					api = function(opts) {
						$(ta).data('dfrd', url().done(function(url) {
							select.fadeOut();
							setStatus({info: 'Start conversion request.'});
							fm.request({
								data: {
									cmd: 'editor',
									name: 'OnlineConvert',
									method: 'api',
									'args[category]' : opts.category.toLowerCase(),
									'args[convert]'  : opts.convert.toLowerCase(),
									'args[options]'  : JSON.stringify(opts.options),
									'args[source]'   : fm.convAbsUrl(url),
									'args[filename]' : fm.splitFileExtention(file.name)[0] + '.' + getExt(opts.category, opts.convert),
									'args[mime]'     : file.mime
								},
								preventDefault : true
							}).done(function(data) {
								checkRes(data.apires, opts.category, opts.convert);
							}).fail(function(error) {
								error && fm.error(error);
								ta.elfinderdialog('destroy');
							});
						}));
					},
					checkRes = function(res, cat, con) {
						var status, err = [];
						if (res && res.id) {
							status = res.status;
							if (status.code === 'failed') {
								spnr.hide();
								if (res.errors && res.errors.length) {
									$.each(res.errors, function(i, o) {
										o.message && err.push(o.message);
									});
								}
								fm.error(err.length? err : status.info);
								select.fadeIn();
							} else if (status.code === 'completed') {
								upload(res);
							} else {
								setStatus(status);
								setTimeout(function() {
									polling(res.id);
								}, 1000);
							}
						} else {
							uiToast.appendTo(ta.closest('.ui-dialog'));
							if (res.message) {
								fm.toast({
									msg: fm.i18n(res.message),
									mode: 'error',
									timeOut: 5000,
									onHidden: function() {
										uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
									}
								});
							}
							fm.toast({
								msg: fm.i18n('editorConvNoApi'),
								mode: 'error',
								timeOut: 3000,
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								}
							});
							spnr.hide();
							select.show();
						}
					},
					setStatus = function(status) {
						spnr.show().children('.elfinder-spinner-text').text(status.info);
					},
					polling = function(jobid) {
						fm.request({
							data: {
								cmd: 'editor',
								name: 'OnlineConvert',
								method: 'api',
								'args[jobid]': jobid
							},
							preventDefault : true
						}).done(function(data) {
							checkRes(data.apires);
						}).fail(function(error) {
							error && fm.error(error);
							ta.elfinderdialog('destroy');
						});
					},
					upload = function(res) {
						var output = res.output,
							id = res.id,
							url = '';
						spnr.hide();
						if (output && output.length) {
							ta.elfinderdialog('destroy');
							$.each(output, function(i, o) {
								if (o.uri) {
									url += o.uri + '\n';
								}
							});
							fm.upload({
								target: file.phash,
								files: [url],
								type: 'text',
								extraData: {
									contentSaveId: 'OnlineConvert-' + res.id
								}
							});
						}
					},
					mode = 'document',
					cl, m;
				select.parent().css({overflow: 'auto'}).addClass('overflow-scrolling-touch');
				if (m = file.mime.match(/^(audio|image|video)/)) {
					mode = m[1];
				}
				if (set.useTabs) {
					if (idxs[mode]) {
						btns.tabs('option', 'active', idxs[mode]);
					}
				} else {
					cl = Object.keys(set.conv).length;
					$.each(set.conv, function(t) {
						if (t.toLowerCase() === mode) {
							setOptions(t, function() {
								$.each(set.conv, function(t0) {
									t0.toLowerCase() !== mode && setOptions(t0);
								});
							});
							return false;
						}
						cl--;
					});
					if (!cl) {
						$.each(set.conv, function(t) {
							setOptions(t);
						});
					}
					select.parent().scrollTop(btns.children('.onlineconvert-fieldset-' + mode).offset().top);
				}
			},
			load : function() {},
			getContent : function() {},
			save : function() {},
			// On dialog closed
			close : function(ta) {
				var fm = this.fm,
					dfrd = $(ta).data('dfrd');
				if (dfrd && dfrd.state() === 'pending') {
					dfrd.reject();
				}
			}
		}
	];
}, window.elFinder));
})(jQuery)                                                                                                                                                                                                                                                                                                                   includes/File_manager/lib/js/extras/editors.default.min.js                                          0000644                 00000131076 15266052751 0017650 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       !function(e,t){if("function"==typeof define&&define.amd)define(["elfinder"],e);else if(t){var i=t.prototype._options.commandsOptions.edit.editors;t.prototype._options.commandsOptions.edit.editors=i.concat(e(t))}}(function(e){"use strict";var t,i=window.location.search.match(/getfile=([a-z]+)/),n=e.prototype.hasRequire,o={bmp:"image/x-ms-bmp",dng:"image/x-adobe-dng",gif:"image/gif",jpeg:"image/jpeg",jpg:"image/jpeg",pdf:"application/pdf",png:"image/png",ppm:"image/x-portable-pixmap",psd:"image/vnd.adobe.photoshop",pxd:"image/x-pixlr-data",svg:"image/svg+xml",tiff:"image/tiff",webp:"image/webp",xcf:"image/x-xcf",sketch:"application/x-sketch",ico:"image/x-icon",dds:"image/vnd-ms.dds",emf:"application/x-msmetafile"},a=function(e,i,n){t||(t=i.arrayFlip(o));var a=t[e]||i.mimeTypes[e];return n?"jpg"===a&&(a="jpeg"):"jpeg"===a&&(a="jpg"),a},r=function(e,t){var i=$.Deferred();try{var n=document.createElement("canvas"),o=n.getContext("2d"),a=new Image,r=function(){var e,o,a=n.toDataURL(t);e=(o=a.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i))?o[1]:"",e.toLowerCase()===t.toLowerCase()?i.resolve(n.toDataURL(t),n):i.reject()};return a.src=e,$(a).on("load",function(){try{n.width=a.width,n.height=a.height,o.drawImage(a,0,0),r()}catch(e){i.reject()}}).on("error",function(){i.reject()}),i}catch(s){return i.reject()}},s=function(e,t,i,n){var o,r=$(this).children("img:first").data("ext",a(t.mime,n)),s=$('<div class="elfinder-edit-spinner elfinder-edit-image"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("ntfloadimg")+'</span><span class="elfinder-spinner"></span>').hide().appendTo(this),d=function(){r.attr("id",e+"-img").attr("src",o||i).css({height:"","max-width":"100%","max-height":"100%",cursor:"pointer"}).data("loading",function(e){var t=r.closest(".elfinder-dialog").find("button,.elfinder-titlebar-button");return t.prop("disabled",!e)[e?"removeClass":"addClass"]("ui-state-disabled"),r.css("opacity",e?"":"0.3"),s[e?"hide":"show"](),r})};i.match(/^data:/)?d():n.openUrl(t.hash,!1,function(e){o=e,r.attr("_src",i),d()})},d=function(e,t){var i,n,o,a=e.attr("style");try{e.attr("style",""),i=e.get(0),n=document.createElement("canvas"),n.width=i.width,n.height=i.height,e.attr("style",a),n.getContext("2d").drawImage(i,0,0),o=n.toDataURL(t)}catch(r){o=e.attr("src")}return o},c=function(e){var t,i=$(e),n=$.Deferred().always(function(){i.off("load",r)}),o="about:blank",a=function(){t=setTimeout(function(){var e;try{e=base.contentWindow.location.href}catch(t){e=null}e===o?n.resolve():--s>0?a():n.reject()},500)},r=function(){t&&clearTimeout(t),n.resolve()},s=20;return i.one("load",r),e.src=o,a(),n};return i&&(i=i[1],"ckeditor"===i&&(e.prototype._options.getFileCallback=function(e,t){window.opener.CKEDITOR.tools.callFunction(function(){var e=new RegExp("(?:[?&]|&amp;)CKEditorFuncNum=([^&]+)","i"),t=window.location.search.match(e);return t&&t.length>1?t[1]:""}(),t.convAbsUrl(e.url)),t.destroy(),window.close()})),[{info:{id:"tuiimgedit",name:"TUI Image Editor",iconImg:"img/editor-icons.png 0 -48",dataScheme:!0,schemeContent:!0,openMaximized:!0,canMakeEmpty:!1,integrate:{title:"TOAST UI Image Editor",link:"http://ui.toast.com/tui-image-editor/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],html:'<div class="elfinder-edit-imageeditor"><canvas></canvas></div>',setup:function(e,t){t.UA.ltIE8||t.UA.Mobile?this.disabled=!0:(this.opts=Object.assign({version:"v3.15.3"},e.extraOptions.tuiImgEditOpts||{},{iconsPath:t.baseUrl+"img/tui-",theme:{}}),t.isSameOrigin(this.opts.iconsPath)||(this.disabled=!0,t.debug("warning","Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.")))},init:function(e,t,i,n){this.data("url",i)},load:function(e){var t,i=this,n=this.fm,o=$.Deferred(),a=n.options.cdns,r=i.confObj.opts.version,s=function(t){var a,r,s,d,c,l=$(e),p=l.parent(),m=i.confObj.opts,f=(m.iconsPath,$('<div class="tui-image-editor-container">').appendTo(p)),u=[$('<div class="tui-image-editor-submenu"></div>').appendTo(f),$('<div class="tui-image-editor-controls"></div>').appendTo(f)],g=new t(e,{includeUI:{loadImage:{path:l.data("url"),name:i.file.name},theme:m.theme,initMenu:"filter",menuBarPosition:"bottom"},cssMaxWidth:Math.max(300,p.width()),cssMaxHeight:Math.max(200,p.height()-(u[0].height()+u[1].height()+3)),usageStatistics:!1}),h=l.find("canvas:first").get(0),v=function(e){if("undefined"!=typeof e){var t,i,n,o=$(h),r=parseInt(o.attr("width")),s=parseInt(o.attr("height")),d=r/s;0===e?(i=r,n=s):(i=parseInt(o.css("max-width"))+Number(e),n=i/d,i>r&&n>s&&(i=r,n=s)),t=Math.round(i/r*100),t<100?(g.resetZoom(),g.stopDrawingMode(),a.hide()):a.show(),y.text(t+"%"),g.resizeCanvasDimension({width:i,height:n}),c&&setTimeout(function(){c&&v(e)},50)}},b=$('<span class="ui-icon ui-icon-plusthick"></span>').data("val",10),x=$('<span class="ui-icon ui-icon-minusthick"></span>').data("val",-10),y=$("<button></button>").css("width","4em").text("%").attr("title","100%").data("val",0);f.remove(),l.removeData("url").data("mime",i.file.mime),"image/jpeg"===i.file.mime?(l.data("quality",n.storage("jpgQuality")||n.option("jpgQuality")),r=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=r.val();l.data("quality",e),s&&cancelAnimationFrame(s),s=requestAnimationFrame(function(){h.toBlob(function(e){e&&r.next("span").text(" ("+n.formatSize(e.size)+")")},"image/jpeg",Math.max(Math.min(e,100),1)/100)})}).val(l.data("quality")),$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').append($("<span>").html(n.i18n("quality")+" : "),r,$("<span></span>")).prependTo(l.parent().next())):"image/svg+xml"===i.file.mime&&l.closest(".ui-dialog").trigger("changeType",{extention:"png",mime:"image/png",keepEditor:!0}),$('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>').append(x,y,b).attr("title",n.i18n("scale")).on("click","span,button",function(){v($(this).data("val"))}).on("mousedown mouseup mouseleave","span",function(e){c=!1,d&&clearTimeout(d),"mousedown"===e.type&&(d=setTimeout(function(){c=!0,v($(e.target).data("val"))},500))}).prependTo(l.parent().next()),setTimeout(function(){o.resolve(g),r&&(r.trigger("change"),g.on("redoStackChanged undoStackChanged",function(){r.trigger("change")})),a=l.find(".tie-btn-zoomIn,.tie-btn-zoomOut,.tie-btn-hand"),v(null)},100),l.find(".tui-colorpicker-palette-container").on("click",".tui-colorpicker-palette-preview",function(){$(this).closest(".color-picker-control").height("auto").find(".tui-colorpicker-slider-container").toggle()}),l.on("click",function(){l.find(".tui-colorpicker-slider-container").hide()})};return i.confObj.editor?s(i.confObj.editor):(t=$.Deferred(),n.loadCss([a.tui+"/tui-color-picker/latest/tui-color-picker.css",a.tui+"/tui-image-editor/"+r+"/tui-image-editor.css"]),n.hasRequire?(require.config({paths:{"fabric/dist/fabric.require":a.fabric+"/fabric.require.min",fabric:a.fabric+"/fabric.min","tui-code-snippet":a.tui+"/tui.code-snippet/latest/tui-code-snippet.min","tui-color-picker":a.tui+"/tui-color-picker/latest/tui-color-picker.min","tui-image-editor":a.tui+"/tui-image-editor/"+r+"/tui-image-editor.min"}}),require(["tui-image-editor"],function(e){t.resolve(e)})):n.loadScript([a.fabric+"/fabric.min.js",a.tui+"/tui.code-snippet/latest/tui-code-snippet.min.js"],function(){n.loadScript([a.tui+"/tui-color-picker/latest/tui-color-picker.min.js"],function(){n.loadScript([a.tui+"/tui-image-editor/"+r+"/tui-image-editor.min.js"],function(){t.resolve(window.tui.ImageEditor)},{loadType:"tag"})},{loadType:"tag"})},{loadType:"tag"}),t.done(function(e){i.confObj.editor=e,s(e)})),o},getContent:function(e){var t=this.editor,i=t.fm,n=$(e),o=n.data("quality");if(t.instance)return"image/jpeg"===n.data("mime")&&(o=o||i.storage("jpgQuality")||i.option("jpgQuality"),o=Math.max(.1,Math.min(1,o/100))),t.instance.toDataURL({format:a(n.data("mime"),i,!0),quality:o})},save:function(e){var t,i=$(e),n=i.data("quality"),o=i.data("hash");this.instance.deactivateAll(),"undefined"!=typeof n&&this.fm.storage("jpgQuality",n),o&&(t=this.fm.file(o),i.data("mime",t.mime))}},{info:{id:"photopea",name:"Photopea",iconImg:"img/editor-icons.png 0 -160",single:!0,noContent:!0,arrayBufferContent:!0,openMaximized:!0,canMakeEmpty:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp","image/tiff","image/webp","image/vnd.adobe.photoshop","application/pdf","image/x-portable-pixmap","image/x-sketch","image/x-icon","image/vnd-ms.dds"],integrate:{title:"Photopea",link:"https://www.photopea.com/learn/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp","image/tiff","image/x-adobe-dng","image/webp","image/x-xcf","image/vnd.adobe.photoshop","application/pdf","image/x-portable-pixmap","image/x-sketch","image/x-icon","image/vnd-ms.dds","application/x-msmetafile"],html:'<iframe style="width:100%;height:100%;border:none;"></iframe>',setup:function(e,t){(t.UA.IE||t.UA.Mobile)&&(this.disabled=!0)},init:function(e,t,i,n){var r,s,d,c="https://www.photopea.com",l=$(this).hide().on("load",function(){l.show()}).on("error",function(){f.remove(),l.show()}),p=this.editor,m=p.confObj,f=$('<div class="elfinder-edit-spinner elfinder-edit-photopea"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(l.parent()),u=n.arrayFlip(m.info.canMakeEmpty),g=function(e){var t=a(e,n),i=o[t];return m.mimesFlip[i]?"jpeg"===t&&(t="jpg"):t="",t&&u[i]||(t="psd",i=o[t],l.closest(".ui-dialog").trigger("changeType",{extention:t,mime:i,keepEditor:!0})),t},h=t.mime;m.mimesFlip||(m.mimesFlip=n.arrayFlip(m.mimes,!0)),m.liveMsg||(m.liveMsg=function(e,t,i){var o,a=e.get(0).contentWindow,r=0,s=null,d=$.Deferred().done(function(){t.remove(),r=1,a.postMessage(s,c)});this.load=function(){return n.getContents(i.hash,"arraybuffer").done(function(e){s=e})},this.receive=function(t){var i=t.originalEvent;i.origin===c&&i.source===a&&("done"===i.data?0===r?d.resolve():1===r?(r=2,e.trigger("contentsloaded")):o&&"pending"===o.state()&&o.reject("errDataEmpty"):"Save"===i.data?p.doSave():o&&"pending"===o.state()&&("object"==typeof i.data?o.resolve("data:"+h+";base64,"+n.arrayBufferToBase64(i.data)):o.reject("errDataEmpty")))},this.getContent=function(){var t,i;if(r>1)return o&&"pending"===o.state()&&o.reject(),o=null,o=$.Deferred(),2===r?(r=3,o.resolve("data:"+h+";base64,"+n.arrayBufferToBase64(s)),s=null,o):(e.data("mime")&&(h=e.data("mime"),t=g(h)),(i=e.data("quality"))&&(t+=":"+i/100),a.postMessage('app.activeDocument.saveToOE("'+t+'")',c),o)}}),l.parent().css("padding",0),s=g(t.mime),r=p.liveMsg=new m.liveMsg(l,f,t),$(window).on("message."+n.namespace,r.receive),r.load().done(function(){var e=JSON.stringify({files:[],environment:{lang:n.lang.replace(/_/g,"-"),customIO:{save:'app.echoToOE("Save");'}}});l.attr("src",c+"/#"+encodeURI(e))}).fail(function(e){e&&n.error(e),p.initFail=!0}),"image/jpeg"!==t.mime&&"image/webp"!==t.mime||(l.data("quality",n.storage("jpgQuality")||n.option("jpgQuality")),d=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=d.val();l.data("quality",e)}).val(l.data("quality")),$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').append($("<span>").html(n.i18n("quality")+" : "),d,$("<span></span>")).prependTo(l.parent().next()))},load:function(e){var t=$.Deferred(),i=this,n=(this.fm,$(e));return i.initFail?t.reject():n.on("contentsloaded",function(){t.resolve(i.liveMsg)}),t},getContent:function(){return this.editor.liveMsg?this.editor.liveMsg.getContent():void 0},save:function(e,t){var i,n=$(e),o=n.data("quality"),a=n.data("hash");"undefined"!=typeof o&&this.fm.storage("jpgQuality",o),a?(i=this.fm.file(a),n.data("mime",i.mime)):n.removeData("mime")},close:function(e,t){$(e).attr("src",""),t&&$(window).off("message."+this.fm.namespace,t.receive)}},{info:{id:"pixo",name:"Pixo Editor",iconImg:"img/editor-icons.png 0 -208",dataScheme:!0,schemeContent:!0,single:!0,canMakeEmpty:!1,integrate:{title:"Pixo Editor",link:"https://pixoeditor.com/privacy-policy/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],html:'<div class="elfinder-edit-imageeditor"><img/></div>',setup:function(e,t){!t.UA.ltIE8&&e.extraOptions&&e.extraOptions.pixo&&e.extraOptions.pixo.apikey?this.editorOpts=e.extraOptions.pixo:this.disabled=!0},init:function(e,t,i,n){s.call(this,e,t,i,n)},getContent:function(){return $(this).children("img:first").attr("src")},load:function(e){var t,i,n,o,s,d=this,c=this.fm,l=$(e),p=l.children("img:first"),m=l.closest(".ui-dialog"),f=c.getUI(),u=$.Deferred(),g=$("#elfinder-pixo-container"),h=function(n){var h;g.length?g.appendTo(g.parent()):(g=$('<div id="elfinder-pixo-container" class="ui-front"></div>').css({position:"fixed",top:0,right:0,width:"100%",height:$(window).height(),overflow:"hidden"}).hide().appendTo(f.hasClass("elfinder-fullscreen")?f:"body"),f.on("resize."+c.namespace,function(e,t){e.preventDefault(),e.stopPropagation(),t&&t.fullscreen&&g.appendTo("on"===t.fullscreen?f:"body")}),c.bind("destroy",function(){s&&s.cancelEditing(),g.remove()})),p.on("click",v),h=Object.assign({type:"child",parent:g.get(0),output:{format:"png"},onSave:function(n){var s=n.toBlob().type,l=a(s,c),f=function(e){p.one("load error",function(){p.data("loading")&&p.data("loading")(!0)}).attr("crossorigin","anonymous").attr("src",e)},u=n.toDataURL();p.data("loading")(),delete e._canvas,p.data("ext")!==l?r(u,d.file.mime).done(function(n,a){a&&(e._canvas=o=a,i.trigger("change"),t&&t.show()),f(n)}).fail(function(){m.trigger("changeType",{extention:l,mime:s}),f(u)}):f(u)},onClose:function(){m.removeClass(c.res("class","preventback")),c.toggleMaximize(g,!1),g.hide(),c.toFront(m)}},d.confObj.editorOpts),d.trigger("Prepare",{node:e,editorObj:Pixo,instance:void 0,opts:h}),s=new Pixo.Bridge(h),u.resolve(s),l.on("saveAsFail",v),n&&n()},v=function(){m.addClass(c.res("class","preventback")),c.toggleMaximize(g,!0),c.toFront(g),g.show().data("curhash",d.file.hash),s.edit(p.get(0)),p.data("loading")(!0)};return p.data("loading")(),"image/jpeg"===d.file.mime&&(i=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=i.val();n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){o&&o.toBlob(function(e){e&&i.next("span").text(" ("+c.formatSize(e.size)+")")},"image/jpeg",Math.max(Math.min(e,100),1)/100)})}).val(c.storage("jpgQuality")||c.option("jpgQuality")),t=$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').hide().append($("<span>").html(c.i18n("quality")+" : "),i,$("<span></span>")).prependTo(l.parent().next()),l.data("quty",i)),"undefined"==typeof Pixo?c.loadScript(["https://pixoeditor.com:8443/editor/scripts/bridge.m.js"],function(){h(v)},{loadType:"tag"}):(h(),v()),u},save:function(e){var t,i=this,n=$(e),o=n.children("img:first");e._canvas?(n.data("quty")&&(t=n.data("quty").val(),t&&this.fm.storage("jpgQuality",t)),o.attr("src",e._canvas.toDataURL(i.file.mime,t?Math.max(Math.min(t,100),1)/100:void 0))):"data:"!==o.attr("src").substr(0,5)&&o.attr("src",d(o,this.file.mime))},close:function(e,t){t&&t.destroy()}},{setup:function(e,t){!t.UA.ltIE8&&t.options.cdns.ace||(this.disabled=!0)},info:{id:"aceeditor",name:"ACE Editor",iconImg:"img/editor-icons.png 0 -96"},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=i.options.cdns.ace,a=function(){var i,a,r,s=$(e),d=s.parent(),c=d.parent(),l=e.id+"_ace",p=(t.file.name.replace(/^.+\.([^.]+)|(.+)$/,"$1$2").toLowerCase(),{"text/x-php":"php","application/x-php":"php","text/html":"html","application/xhtml+xml":"html","text/javascript":"javascript","application/javascript":"javascript","text/css":"css","text/x-c":"c_cpp","text/x-csrc":"c_cpp","text/x-chdr":"c_cpp","text/x-c++":"c_cpp","text/x-c++src":"c_cpp","text/x-c++hdr":"c_cpp","text/x-shellscript":"sh","application/x-csh":"sh","text/x-python":"python","text/x-java":"java","text/x-java-source":"java","text/x-ruby":"ruby","text/x-perl":"perl","application/x-perl":"perl","text/x-sql":"sql","text/xml":"xml","application/docbook+xml":"xml","application/xml":"xml"});d.height(d.height()),ace.config.set("basePath",o),a=$('<div id="'+l+'" style="width:100%; height:100%;"></div>').text(s.val()).insertBefore(s.hide()),s.data("ace",!0),i=ace.edit(l),i.$blockScrolling=1/0,i.setOptions({theme:"ace/theme/monokai",fontSize:"14px",wrap:!0}),ace.config.loadModule("ace/ext/modelist",function(){r=ace.require("ace/ext/modelist").getModeForPath("/"+t.file.name).name,"text"===r&&p[t.file.mime]&&(r=p[t.file.mime]),d.prev().children(".elfinder-dialog-title").append(" ("+t.file.mime+" : "+r.split(/[\/\\]/).pop()+")"),i.setOptions({mode:"ace/mode/"+r}),"resolved"===n.state()&&c.trigger("resize")}),ace.config.loadModule("ace/ext/language_tools",function(){ace.require("ace/ext/language_tools"),i.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!1})}),ace.config.loadModule("ace/ext/settings_menu",function(){ace.require("ace/ext/settings_menu").init(i)}),i.commands.addCommand({name:"saveFile",bindKey:{win:"Ctrl-s",mac:"Command-s"},exec:function(e){t.doSave()}}),i.commands.addCommand({name:"closeEditor",bindKey:{win:"Ctrl-w|Ctrl-q",mac:"Command-w|Command-q"},exec:function(e){t.doCancel()}}),i.resize(),$('<div class="ui-dialog-buttonset"></div>').css("float","left").append($("<button></button>").html(t.fm.i18n("TextArea")).button().on("click",function(){s.data("ace")?(s.removeData("ace"),a.hide(),s.val(i.session.getValue()).show().trigger("focus"),$(this).text("AceEditor")):(s.data("ace",!0),a.show(),i.setValue(s.hide().val(),-1),i.focus(),$(this).html(t.fm.i18n("TextArea")))})).append($("<button>Ace editor setting</button>").button({icons:{primary:"ui-icon-gear",secondary:"ui-icon-triangle-1-e"},text:!1}).on("click",function(){i.showSettingsMenu(),$("#ace_settingsmenu").css("font-size","80%").find('div[contains="setOptions"]').hide().end().parent().appendTo($("#elfinder"))})).prependTo(d.next()),t.trigger("Prepare",{node:e,editorObj:ace,instance:i,opts:{}}),n.resolve(i)};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadScript([o+"/ace.js"],function(){t.confObj.loader.resolve()},void 0,{obj:window,name:"ace"})),t.confObj.loader.done(a),n},close:function(e,t){t&&t.destroy()},save:function(e,t){t&&$(e).data("ace")&&(e.value=t.session.getValue())},focus:function(e,t){t&&$(e).data("ace")&&t.focus()},resize:function(e,t,i,n){t&&t.resize()}},{setup:function(e,t){!t.UA.ltIE10&&t.options.cdns.codemirror||(this.disabled=!0)},info:{id:"codemirror",name:"CodeMirror",iconImg:"img/editor-icons.png 0 -176"},load:function(e){var t=this.fm,i=t.convAbsUrl(t.options.cdns.codemirror),o=$.Deferred(),a=this,r=function(t){var r,s,d,c=$(e),l=c.parent();l.height(l.height()),d={lineNumbers:!0,lineWrapping:!0,extraKeys:{"Ctrl-S":function(){a.doSave()},"Ctrl-Q":function(){a.doCancel()},"Ctrl-W":function(){a.doCancel()}}},a.trigger("Prepare",{node:e,editorObj:t,instance:void 0,opts:d}),r=t.fromTextArea(e,d),o.resolve(r);var p,m,f,u;p||(p=t.findModeByMIME(a.file.mime)),!p&&(m=a.file.name.match(/.+\.([^.]+)$/))&&(p=t.findModeByExtension(m[1])),p&&(t.modeURL=n?"codemirror/mode/%N/%N.min":i+"/mode/%N/%N.min.js",f=p.mode,u=p.mime,r.setOption("mode",u),t.autoLoadMode(r,f),l.prev().children(".elfinder-dialog-title").append(" ("+u+("null"!=f?" : "+f:"")+")")),s=$(r.getWrapperElement()).css({padding:0,border:"none"}),c.data("cm",!0),s.height("100%"),$('<div class="ui-dialog-buttonset"></div>').css("float","left").append($("<button></button>").html(a.fm.i18n("TextArea")).button().on("click",function(){c.data("cm")?(c.removeData("cm"),s.hide(),c.val(r.getValue()).show().trigger("focus"),$(this).text("CodeMirror")):(c.data("cm",!0),s.show(),r.setValue(c.hide().val()),r.refresh(),r.focus(),$(this).html(a.fm.i18n("TextArea")))})).prependTo(l.next())};return a.confObj.loader||(a.confObj.loader=$.Deferred(),n?(require.config({packages:[{name:"codemirror",location:i,main:"codemirror.min"}],map:{codemirror:{"codemirror/lib/codemirror":"codemirror"}}}),require(["codemirror","codemirror/addon/mode/loadmode.min","codemirror/mode/meta.min"],function(e){a.confObj.loader.resolve(e)})):a.fm.loadScript([i+"/codemirror.min.js"],function(){a.fm.loadScript([i+"/addon/mode/loadmode.min.js",i+"/mode/meta.min.js"],function(){a.confObj.loader.resolve(CodeMirror)})},{loadType:"tag"}),a.fm.loadCss(i+"/codemirror.css")),a.confObj.loader.done(r),o},close:function(e,t){t&&t.toTextArea()},save:function(e,t){t&&$(e).data("cm")&&(e.value=t.getValue())},focus:function(e,t){t&&$(e).data("cm")&&t.focus()},resize:function(e,t,i,n){t&&t.refresh()}},{setup:function(e,t){!t.UA.ltIE10&&t.options.cdns.simplemde||(this.disabled=!0)},info:{id:"simplemde",name:"SimpleMDE",iconImg:"img/editor-icons.png 0 -80"},exts:["md"],load:function(e){var t=this,i=this.fm,o=$(e).parent(),a=$.Deferred(),r=i.options.cdns.simplemde,s=function(i){var n,r,s,d=o.height(),c=o.outerHeight(!0)-d+14;e._setHeight=function(e){var t,i=e||o.height(),a=0;return o.children(".editor-toolbar,.editor-statusbar").each(function(){a+=$(this).outerHeight(!0)}),t=i-a-c,r.height(t),n.codemirror.refresh(),t},o.height(d),s={element:e,autofocus:!0},t.trigger("Prepare",{node:e,editorObj:i,instance:void 0,opts:s}),n=new i(s),a.resolve(n),r=$(n.codemirror.getWrapperElement()),r.css("min-height","50px").children(".CodeMirror-scroll").css("min-height","50px"),e._setHeight(d)};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadCss(r+"/simplemde.min.css"),n?require([r+"/simplemde.min.js"],function(e){t.confObj.loader.resolve(e)}):t.fm.loadScript([r+"/simplemde.min.js"],function(){t.confObj.loader.resolve(SimpleMDE)},{loadType:"tag"})),t.confObj.loader.done(s),a},close:function(e,t){t&&t.toTextArea(),t=null},save:function(e,t){t&&(e.value=t.value())},focus:function(e,t){t&&t.codemirror.focus()},resize:function(e,t,i,n){t&&e._setHeight()}},{info:{id:"ckeditor",name:"CKEditor",iconImg:"img/editor-icons.png 0 0"},exts:["htm","html","xhtml"],setup:function(e,t){var i=this;t.options.cdns.ckeditor?(i.ckeOpts={},e.extraOptions&&(i.ckeOpts=Object.assign({},e.extraOptions.ckeditor||{}),e.extraOptions.managerUrl&&(i.managerUrl=e.extraOptions.managerUrl))):i.disabled=!0},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=function(){var o,a=$(e).parent(),r=a.closest(".elfinder-dialog"),s=a.height(),d=/([&?]getfile=)[^&]+/,c=t.confObj.managerUrl||window.location.href.replace(/#.*$/,""),l="ckeditor";d.test(c)?c=c.replace(d,"$1"+l):c+="?getfile="+l,a.height(s),o={startupFocus:!0,fullPage:!0,allowedContent:!0,filebrowserBrowseUrl:c,toolbarCanCollapse:!0,toolbarStartupExpanded:!i.UA.Mobile,removePlugins:"resize",extraPlugins:"colorbutton,justify,docprops",on:{instanceReady:function(o){var a=o.editor;a.resize("100%",s),r.one("beforedommove."+i.namespace,function(){a.destroy()}).one("dommove."+i.namespace,function(){t.load(e).done(function(e){t.instance=e})}),n.resolve(o.editor)}}},t.trigger("Prepare",{node:e,editorObj:CKEDITOR,instance:void 0,opts:o}),CKEDITOR.replace(e.id,Object.assign(o,t.confObj.ckeOpts)),CKEDITOR.on("dialogDefinition",function(e){var t=e.data.definition.dialog;t.on("show",function(e){i.getUI().append($(".cke_dialog_background_cover")).append(this.getElement().$)}),t.on("hide",function(e){$("body:first").append($(".cke_dialog_background_cover")).append(this.getElement().$)})})};return t.confObj.loader||(t.confObj.loader=$.Deferred(),window.CKEDITOR_BASEPATH=i.options.cdns.ckeditor+"/",$.getScript(i.options.cdns.ckeditor+"/ckeditor.js",function(){t.confObj.loader.resolve()})),t.confObj.loader.done(o),n},close:function(e,t){t&&t.destroy()},save:function(e,t){t&&(e.value=t.getData())},focus:function(e,t){t&&t.focus()},resize:function(e,t,i,n){t&&"ready"===t.status&&t.resize("100%",$(e).parent().height())}},{info:{id:"ckeditor5",name:"CKEditor5",iconImg:"img/editor-icons.png 0 -16"},exts:["htm","html","xhtml"],html:'<div class="edit-editor-ckeditor5"></div>',setup:function(e,t){var i=this;t.options.cdns.ckeditor5&&"function"==typeof window.Symbol&&"symbol"==typeof Symbol()?(i.ckeOpts={},e.extraOptions&&(e.extraOptions.ckeditor5Mode&&(i.ckeditor5Mode=e.extraOptions.ckeditor5Mode),i.ckeOpts=Object.assign({},e.extraOptions.ckeditor5||{}),i.ckeOpts.mode&&(i.ckeditor5Mode=i.ckeOpts.mode,delete i.ckeOpts.mode),e.extraOptions.managerUrl&&(i.managerUrl=e.extraOptions.managerUrl))):i.disabled=!0,t.bind("destroy",function(){i.editor=null})},prepare:function(e,t,i){$(e).height(e.editor.fm.getUI().height()-100)},init:function(e,t,i,n){var o=i.match(/^([\s\S]*<body[^>]*>)([\s\S]+)(<\/body>[\s\S]*)$/i),a="",r="",s="";this.css({width:"100%",height:"100%","box-sizing":"border-box"}),o?(a=o[1],r=o[2],s=o[3]):r=i,this.data("data",{header:a,body:r,footer:s}),this._setupSelEncoding(i)},load:function(e){var t,i=this,n=this.fm,o=$.Deferred(),a=i.confObj.ckeditor5Mode||"decoupled-document",r=function(){var e=n.lang.toLowerCase().replace("_","-");return"zh"===e.substr(0,2)&&"zh-cn"!==e&&(e="zh"),e}(),s=function(t){var s,c=$(e).parent();c.height(n.getUI().height()-100),s=Object.assign({toolbar:["heading","|","fontSize","fontFamily","|","bold","italic","underline","strikethrough","highlight","|","alignment","|","numberedList","bulletedList","blockQuote","indent","outdent","|","ckfinder","link","imageUpload","insertTable","mediaEmbed","|","undo","redo"],language:r},i.confObj.ckeOpts),i.trigger("Prepare",{node:e,editorObj:t,instance:void 0,opts:s}),t.create(e,s).then(function(t){var i,r,s=t.commands.get("ckfinder"),l=t.plugins.get("FileRepository"),p={};!t.ui.view.toolbar||"classic"!==a&&"decoupled-document"!==a||$(e).closest(".elfinder-dialog").children(".ui-widget-header").append($(t.ui.view.toolbar.element).css({marginRight:"-1em",marginLeft:"-1em"})),"classic"===a&&$(e).closest(".elfinder-edit-editor").css("overflow","auto"),s&&(i=function(e){return e&&e.mime.match(/^image\//i)},r=function(e){var i=t.commands.get("imageUpload");if(!i.isEnabled){var n=t.plugins.get("Notification"),o=t.locale.t;return void n.showWarning(o("Could not insert image at the current position."),{title:o("Inserting image failed"),namespace:"ckfinder"})}t.execute("imageInsert",{source:e})},s.execute=function(){var e=c.closest(".elfinder-dialog"),o=n.getCommand("getfile"),a=function(){p.hasVar&&(e.off("resize close",a),o.callback=p.callback,o.options.folders=p.folders,o.options.multiple=p.multi,n.commandMap.open=p.open,p.hasVar=!1)};e.trigger("togleminimize").one("resize close",a),p.callback=o.callback,p.folders=o.options.folders,p.multi=o.options.multiple,p.open=n.commandMap.open,p.hasVar=!0,o.callback=function(o){var a=[];return 1===o.length&&"directory"===o[0].mime?void n.one("open",function(){n.commandMap.open="getfile"}).getCommand("open").exec(o[0].hash):(n.getUI("cwd").trigger("unselectall"),$.each(o,function(e,o){i(o)?a.push(n.convAbsUrl(o.url)):t.execute("link",n.convAbsUrl(o.url))}),a.length&&r(a),void e.trigger("togleminimize"))},o.options.folders=!0,o.options.multiple=!0,n.commandMap.open="getfile",n.toast({mode:"info",msg:n.i18n("dblclickToSelect")})}),l.createUploadAdapter=function(e){return new d(e)},t.setData($(e).data("data").body),n.getUI().append($("body > div.ck-body")),$("div.ck-balloon-panel").css({"z-index":n.getMaximizeCss().zIndex+1}),o.resolve(t)})["catch"](function(e){n.error(e)})},d=function(e){var t=function(t,i,o){n.exec("upload",{files:[t]},void 0,n.cwd().hash).done(function(e){e.added&&e.added.length?n.url(e.added[0].hash,{async:!0}).done(function(e){i({"default":n.convAbsUrl(e)})}).fail(function(){o("errFileNotFound")}):o(n.i18n(e.error?e.error:"errUpload"))}).fail(function(e){var t=n.parseError(e);o(n.i18n(t?"userabort"===t?"errAbort":t:"errUploadNoFiles"))}).progress(function(t){e.uploadTotal=t.total,e.uploaded=t.progress})};this.upload=function(){return new Promise(function(i,n){e.file instanceof Promise||e.file&&"function"==typeof e.file.then?e.file.then(function(e){t(e,i,n)}):t(e.file,i,n)})},this.abort=function(){n.getUI().trigger("uploadabort")}};return i.confObj.editor?s(i.confObj.editor):(t=$.Deferred(),i.fm.loadScript([n.options.cdns.ckeditor5+"/"+a+"/ckeditor.js"],function(e){e||(e=window.BalloonEditor||window.InlineEditor||window.ClassicEditor||window.DecoupledEditor),"en"!==n.lang?i.fm.loadScript([n.options.cdns.ckeditor5+"/"+a+"/translations/"+r+".js"],function(i){t.resolve(e)},{tryRequire:!0,loadType:"tag",error:function(i){r="en",t.resolve(e)}}):t.resolve(e)},{tryRequire:!0,loadType:"tag"}),t.done(function(e){i.confObj.editor=e,s(e)})),o},getContent:function(){var e=$(this).data("data");return e.header+e.body+e.footer},close:function(e,t){t&&t.destroy()},save:function(e,t){var i=$(e),n=i.data("data");t&&(n.body=t.getData(),i.data("data",n))},focus:function(e,t){$(e).trigger("focus")}},{info:{id:"tinymce",name:"TinyMCE",iconImg:"img/editor-icons.png 0 -64"},exts:["htm","html","xhtml"],setup:function(e,t){var i=this;t.options.cdns.tinymce?(i.mceOpts={},e.extraOptions?(i.uploadOpts=Object.assign({},e.extraOptions.uploadOpts||{}),i.mceOpts=Object.assign({},e.extraOptions.tinymce||{})):i.uploadOpts={}):i.disabled=!0},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=function(){var o,a,r,s=$(e).show().parent(),d=s.closest(".elfinder-dialog"),c=s.height(),l=s.outerHeight(!0)-c,p=function(){var e;tinymce.activeEditor.windowManager.windows?(e=tinymce.activeEditor.windowManager.windows[0],a=$(e?e.getEl():void 0).hide(),r=$("#mce-modal-block").hide()):a=$(".tox-dialog-wrap").hide()},m=function(){r&&r.show(),a&&a.show()},f=tinymce.majorVersion;s.height(c),e._setHeight=function(e){if(f<5){var t,i=$(this).parent(),n=e||i.innerHeight(),o=0;i.find(".mce-container-body:first").children(".mce-top-part,.mce-statusbar").each(function(){o+=$(this).outerHeight(!0)}),t=n-o-l,i.find(".mce-edit-area iframe:first").height(t)}},o={selector:"#"+e.id,resize:!1,plugins:"preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help",toolbar:"formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat",image_advtab:!0,init_instance_callback:function(o){e._setHeight(c),d.one("beforedommove."+i.namespace,function(){tinymce.execCommand("mceRemoveEditor",!1,e.id)}).one("dommove."+i.namespace,function(){t.load(e).done(function(e){t.instance=e})}),n.resolve(o)},file_picker_callback:function(e,t,n){var o=i.getCommand("getfile"),a=function(){r.hasVar&&(o.callback=r.callback,o.options.folders=r.folders,o.options.multiple=r.multi,i.commandMap.open=r.open,r.hasVar=!1),d.off("resize close",a),m()},r={};return r.callback=o.callback,r.folders=o.options.folders,r.multi=o.options.multiple,r.open=i.commandMap.open,r.hasVar=!0,o.callback=function(t){var o,a;return"directory"===t.mime?void i.one("open",function(){i.commandMap.open="getfile"}).getCommand("open").exec(t.hash):(o=i.convAbsUrl(t.url),a=t.name+" ("+i.formatSize(t.size)+")","file"==n.filetype&&e(o,{text:a,title:a}),"image"==n.filetype&&e(o,{alt:a}),"media"==n.filetype&&e(o),void d.trigger("togleminimize"))},o.options.folders=!0,o.options.multiple=!1,i.commandMap.open="getfile",p(),d.trigger("togleminimize").one("resize close",a),i.toast({mode:"info",msg:i.i18n("dblclickToSelect")}),!1},images_upload_handler:function(e,n,o){var a=e.blob(),r=function(e){var t=e.data.dialog||{};(t.hasClass("elfinder-dialog-error")||t.hasClass("elfinder-confirm-upload"))&&(p(),t.trigger("togleminimize").one("resize close",s),i.unbind("dialogopened",r));
},s=function(){d.off("resize close",s),m()},c=!0;a.name&&(c=void 0),i.bind("dialogopened",r).exec("upload",Object.assign({files:[a],clipdata:c},t.confObj.uploadOpts),void 0,i.cwd().hash).done(function(e){e.added&&e.added.length?i.url(e.added[0].hash,{async:!0}).done(function(e){m(),n(i.convAbsUrl(e))}).fail(function(){o(i.i18n("errFileNotFound"))}):o(i.i18n(e.error?e.error:"errUpload"))}).fail(function(e){var t=i.parseError(e);t&&("errUnknownCmd"===t?t="errPerm":"userabort"===t&&(t="errAbort")),o(i.i18n(t?t:"errUploadNoFiles"))})}},f>=5&&(o.height="100%"),t.trigger("Prepare",{node:e,editorObj:tinymce,instance:void 0,opts:o}),tinymce.init(Object.assign(o,t.confObj.mceOpts))};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadScript([i.options.cdns.tinymce+(i.options.cdns.tinymce.match(/\.js/)?"":"/tinymce.min.js")],function(){t.confObj.loader.resolve()},{loadType:"tag"})),t.confObj.loader.done(o),n},close:function(e,t){t&&tinymce.execCommand("mceRemoveEditor",!1,e.id)},save:function(e,t){t&&t.save()},focus:function(e,t){t&&t.focus()},resize:function(e,t,i,n){t&&e._setHeight()}},{info:{id:"zohoeditor",name:"Zoho Editor",iconImg:"img/editor-icons.png 0 -32",cmdCheck:"ZohoOffice",preventGet:!0,hideButtons:!0,syncInterval:15e3,canMakeEmpty:!0,integrate:{title:"Zoho Office API",link:"https://www.zoho.com/officeapi/"}},mimes:["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.oasis.opendocument.text","application/rtf","text/html","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.spreadsheet","application/vnd.sun.xml.calc","text/csv","text/tab-separated-values","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/vnd.oasis.opendocument.presentation","application/vnd.sun.xml.impress"],html:'<iframe style="width:100%;max-height:100%;border:none;"></iframe>',setup:function(e,t){(t.UA.Mobile||t.UA.ltIE8)&&(this.disabled=!0)},prepare:function(e,t,i){var n=e.editor.fm.getUI();$(e).height(n.height()),t.width=Math.max(t.width||0,.8*n.width())},init:function(e,t,i,n){var o=this,a=$(this).hide(),r=n.getUI("toast"),s=$('<div class="elfinder-edit-spinner elfinder-edit-zohoeditor"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(a.parent()),d=function(){var e="";return $.each(n.customData,function(t,i){e+="&"+encodeURIComponent(t)+"="+encodeURIComponent(i)}),e};$(o).data("xhr",n.request({data:{cmd:"editor",name:o.editor.confObj.info.cmdCheck,method:"init","args[target]":t.hash,"args[lang]":n.lang,"args[cdata]":d()},preventDefault:!0}).done(function(e){var t;e.zohourl?(t={css:{height:"100%"}},o.editor.trigger("Prepare",{node:o,editorObj:void 0,instance:a,opts:t}),a.attr("src",e.zohourl).show().css(t.css),e.warning&&(r.appendTo(o.closest(".ui-dialog")),n.toast({msg:n.i18n(e.warning),mode:"warning",timeOut:0,onHidden:function(){1===r.children().length&&r.appendTo(n.getUI())},button:{text:"btnYes"}}))):(e.error&&n.error(e.error),o.elfinderdialog("destroy"))}).fail(function(e){e&&n.error(e),o.elfinderdialog("destroy")}).always(function(){s.remove()}))},load:function(){},getContent:function(){},save:function(){},beforeclose:c,close:function(e){var t=(this.fm,$(e).data("xhr"));"pending"===t.state()&&t.reject()}},{info:{id:"ziparchive",name:"btnMount",iconImg:"img/toolbar.png 0 -416",cmdCheck:"ZipArchive",edit:function(e,t){var i=this,n=$.Deferred();return i.request({data:{cmd:"netmount",protocol:"ziparchive",host:e.hash,path:e.phash},preventFail:!0,notify:{type:"netmount",cnt:1,hideCnt:!0}}).done(function(e){var t;e.added&&e.added.length&&(e.added[0].phash&&(t=i.file(e.added[0].phash))&&(t.dirs||(t.dirs=1,i.change({changed:[t]}))),i.one("netmountdone",function(){i.exec("open",e.added[0].hash),i.one("opendone",function(){e.toast&&i.toast(e.toast)})})),n.resolve()}).fail(function(e){n.reject(e)}),n}},mimes:["application/zip"],load:function(){},save:function(){}},{info:{id:"textarea",name:"TextArea",useTextAreaEvent:!0},load:function(e){this.trigger("Prepare",{node:e,editorObj:void 0,instance:void 0,opts:{}}),e.setSelectionRange&&e.setSelectionRange(0,0),$(e).trigger("focus").show()},save:function(){}},{info:{id:"onlineconvert",name:"Online Convert",iconImg:"img/editor-icons.png 0 -144",cmdCheck:"OnlineConvert",preventGet:!0,hideButtons:!0,single:!0,converter:!0,canMakeEmpty:!1,integrate:{title:"ONLINE-CONVERT.COM",link:"https://online-convert.com"}},mimes:["*"],html:'<div style="width:100%;max-height:100%;"></div>',setup:function(e,t){var i=e.extraOptions.onlineConvert||{maxSize:100,showLink:!0};i.maxSize&&(this.info.maxSize=1048576*i.maxSize),this.set=Object.assign({url:"https://%s.online-convert.com%s?external_url=",conv:{Archive:{"7Z":{},BZ2:{ext:"bz"},GZ:{},ZIP:{}},Audio:{MP3:{},OGG:{ext:"oga"},WAV:{},WMA:{},AAC:{},AIFF:{ext:"aif"},FLAC:{},M4A:{},MMF:{},OPUS:{ext:"oga"}},Document:{DOC:{},DOCX:{},HTML:{},ODT:{},PDF:{},PPT:{},PPTX:{},RTF:{},SWF:{},TXT:{}},eBook:{AZW3:{ext:"azw"},ePub:{},FB2:{ext:"xml"},LIT:{},LRF:{},MOBI:{},PDB:{},PDF:{},"PDF-eBook":{ext:"pdf"},TCR:{}},Hash:{Adler32:{},"Apache-htpasswd":{},Blowfish:{},CRC32:{},CRC32B:{},Gost:{},Haval128:{},MD4:{},MD5:{},RIPEMD128:{},RIPEMD160:{},SHA1:{},SHA256:{},SHA384:{},SHA512:{},Snefru:{},"Std-DES":{},Tiger128:{},"Tiger128-calculator":{},"Tiger128-converter":{},Tiger160:{},Tiger192:{},Whirlpool:{}},Image:{BMP:{},EPS:{ext:"ai"},GIF:{},EXR:{},ICO:{},JPG:{},PNG:{},SVG:{},TGA:{},TIFF:{ext:"tif"},WBMP:{},WebP:{}},Video:{"3G2":{},"3GP":{},AVI:{},FLV:{},HLS:{ext:"m3u8"},MKV:{},MOV:{},MP4:{},"MPEG-1":{ext:"mpeg"},"MPEG-2":{ext:"mpeg"},OGG:{ext:"ogv"},OGV:{},WebM:{},WMV:{},Android:{link:"/convert-video-for-%s",ext:"mp4"},Blackberry:{link:"/convert-video-for-%s",ext:"mp4"},DPG:{link:"/convert-video-for-%s",ext:"avi"},iPad:{link:"/convert-video-for-%s",ext:"mp4"},iPhone:{link:"/convert-video-for-%s",ext:"mp4"},iPod:{link:"/convert-video-for-%s",ext:"mp4"},"Nintendo-3DS":{link:"/convert-video-for-%s",ext:"avi"},"Nintendo-DS":{link:"/convert-video-for-%s",ext:"avi"},PS3:{link:"/convert-video-for-%s",ext:"mp4"},Wii:{link:"/convert-video-for-%s",ext:"avi"},Xbox:{link:"/convert-video-for-%s",ext:"wmv"}}},catExts:{Hash:"txt"},link:'<div class="elfinder-edit-onlineconvert-link"><a href="https://www.online-convert.com" target="_blank"><span class="elfinder-button-icon"></span>ONLINE-CONVERT.COM</a></div>',useTabs:!(!$.fn.tabs||t.UA.iOS)},i)},prepare:function(e,t,i){var n=e.editor.fm.getUI();$(e).height(n.height()),t.width=Math.max(t.width||0,.8*n.width())},init:function(e,t,i,n){var a,r,s=this,d=s.editor.confObj,c=d.set,l=n.getUI("toast"),p={},m=n.uploadMimeCheck("application/zip",t.phash),f=$("base").length?document.location.href.replace(/#.*$/,""):"",u=function(e,t){var i;return c.catExts[e]?c.catExts[e]:c.conv[e]&&(i=c.conv[e][t])?(i.ext||t).toLowerCase():t.toLowerCase()},g=function(e,t){var i,o,a;o="undefined"==typeof d.api?n.request({data:{cmd:"editor",name:"OnlineConvert",method:"init"},preventDefault:!0}):$.Deferred().resolve({api:d.api}),e=e.toLowerCase(),o.done(function(n){d.api=n.api,d.api&&(e?i="?category="+e:(i="",e="all"),d.conversions||(d.conversions={}),a=d.conversions[e]?$.Deferred().resolve(d.conversions[e]):$.getJSON("https://api2.online-convert.com/conversions"+i),a.done(function(i){d.conversions[e]=i,$.each(i,function(e,t){h[c.useTabs?"children":"find"](".onlineconvert-category-"+t.category).children(".onlineconvert-"+t.target).trigger("makeoption",t)}),t&&t()}))})},h=function(){var e=$("<div></div>").on("click","button",function(){var e=$(this),t=e.data("opts")||null,i=e.closest(".onlineconvert-category").data("cname"),n=e.data("conv");d.api===!0&&k({category:i,convert:n,options:t})}).on("change",function(e){var t=$(e.target),i=t.parent(),o=t.closest(".elfinder-edit-onlineconvert-button").children("button:first"),a=o.data("opts")||{},r="boolean"===i.data("type")?t.is(":checked"):t.val();if(e.stopPropagation(),r&&("integer"===i.data("type")&&(r=parseInt(r)),i.data("pattern"))){var s=new RegExp(i.data("pattern"));s.test(r)||(requestAnimationFrame(function(){n.error('"'+n.escape(r)+'" is not match to "/'+n.escape(i.data("pattern"))+'/"')}),r=null)}r?a[t.parent().data("optkey")]=r:delete a[i.data("optkey")],o.data("opts",a)}),i=$("<ul></ul>"),a=function(e,t){var i,o,a,r=$("<p></p>").data("optkey",e).data("type",t.type),s="",d="",c=!1;return t.description&&r.attr("title",n.i18n(t.description)),t.pattern&&r.data("pattern",t.pattern),r.append($("<span></span>").text(n.i18n(e)+" : ")),"boolean"===t.type?((t["default"]||(c="allow_multiple_outputs"===e&&!m))&&(s=" checked",c&&(d=" disabled"),o=this.children("button:first"),i=o.data("opts")||{},i[e]=!0,o.data("opts",i)),r.append($('<input type="checkbox" value="true"'+s+d+"/>"))):t["enum"]?(a=$("<select></select>").append($('<option value=""></option>').text("Select...")),$.each(t["enum"],function(e,t){a.append($('<option value="'+t+'"></option>').text(t))}),r.append(a)):r.append($('<input type="text" value=""/>')),r},r=function(e){var t=this,i=$('<span class="elfinder-button-icon elfinder-button-icon-preference"></span>').on("click",function(){n.toggle()}),n=$('<div class="elfinder-edit-onlinconvert-options"></div>').hide();e.options&&$.each(e.options,function(e,i){"download_password"!==e&&n.append(a.call(t,e,i))}),t.append(i,n)},s=+new Date,l=0;return d.ext2mime||(d.ext2mime=Object.assign(n.arrayFlip(n.mimeTypes),o)),$.each(c.conv,function(o,a){var c=o.toLowerCase(),m="elfinder-edit-onlineconvert-"+c+s,g=$('<div id="'+m+'" class="onlineconvert-category onlineconvert-category-'+c+'"></div>').data("cname",o);$.each(a,function(e,i){var a=e.toLowerCase(),s=u(o,e);d.ext2mime[s]||("audio"===c||"image"===c||"video"===c?d.ext2mime[s]=c+"/x-"+a:d.ext2mime[s]="application/octet-stream"),n.uploadMimeCheck(d.ext2mime[s],t.phash)&&g.append($('<div class="elfinder-edit-onlineconvert-button onlineconvert-'+a+'"></div>').on("makeoption",function(e,t){var i=$(this);i.children(".elfinder-button-icon-preference").length||r.call(i,t)}).append($("<button></button>").text(e).data("conv",e)))}),g.children().length&&(i.append($("<li></li>").append($("<a></a>").attr("href",f+"#"+m).text(o))),e.append(g),p[c]=l++)}),c.useTabs?e.prepend(i).tabs({beforeActivate:function(e,t){g(t.newPanel.data("cname"))}}):$.each(c.conv,function(t){var i=t.toLowerCase();e.append($('<fieldset class="onlineconvert-fieldset-'+i+'"></fieldset>').append($("<legend></legend>").text(t)).append(e.children(".onlineconvert-category-"+i)))}),e}(),v=$(this).append(h,c.showLink?$(c.link):null),b=$('<div class="elfinder-edit-spinner elfinder-edit-onlineconvert"></div>').hide().html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(v.parent()),x=$('<div class="elfinder-quicklook-info-progress"></div>').appendTo(b),y=null,w=function(){return y?$.Deferred().resolve(y):(b.show(),n.forExternalUrl(t.hash,{progressBar:x}).done(function(e){y=e}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")}).always(function(){b.hide()}))},k=function(e){$(s).data("dfrd",w().done(function(i){v.fadeOut(),j({info:"Start conversion request."}),n.request({data:{cmd:"editor",name:"OnlineConvert",method:"api","args[category]":e.category.toLowerCase(),"args[convert]":e.convert.toLowerCase(),"args[options]":JSON.stringify(e.options),"args[source]":n.convAbsUrl(i),"args[filename]":n.splitFileExtention(t.name)[0]+"."+u(e.category,e.convert),"args[mime]":t.mime},preventDefault:!0}).done(function(t){O(t.apires,e.category,e.convert)}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")})}))},O=function(e,t,i){var o,a=[];e&&e.id?(o=e.status,"failed"===o.code?(b.hide(),e.errors&&e.errors.length&&$.each(e.errors,function(e,t){t.message&&a.push(t.message)}),n.error(a.length?a:o.info),v.fadeIn()):"completed"===o.code?M(e):(j(o),setTimeout(function(){C(e.id)},1e3))):(l.appendTo(s.closest(".ui-dialog")),e.message&&n.toast({msg:n.i18n(e.message),mode:"error",timeOut:5e3,onHidden:function(){1===l.children().length&&l.appendTo(n.getUI())}}),n.toast({msg:n.i18n("editorConvNoApi"),mode:"error",timeOut:3e3,onHidden:function(){1===l.children().length&&l.appendTo(n.getUI())}}),b.hide(),v.show())},j=function(e){b.show().children(".elfinder-spinner-text").text(e.info)},C=function(e){n.request({data:{cmd:"editor",name:"OnlineConvert",method:"api","args[jobid]":e},preventDefault:!0}).done(function(e){O(e.apires)}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")})},M=function(e){var i=e.output,o=(e.id,"");b.hide(),i&&i.length&&(s.elfinderdialog("destroy"),$.each(i,function(e,t){t.uri&&(o+=t.uri+"\n")}),n.upload({target:t.phash,files:[o],type:"text",extraData:{contentSaveId:"OnlineConvert-"+e.id}}))},T="document";v.parent().css({overflow:"auto"}).addClass("overflow-scrolling-touch"),(r=t.mime.match(/^(audio|image|video)/))&&(T=r[1]),c.useTabs?p[T]&&h.tabs("option","active",p[T]):(a=Object.keys(c.conv).length,$.each(c.conv,function(e){return e.toLowerCase()===T?(g(e,function(){$.each(c.conv,function(e){e.toLowerCase()!==T&&g(e)})}),!1):void a--}),a||$.each(c.conv,function(e){g(e)}),v.parent().scrollTop(h.children(".onlineconvert-fieldset-"+T).offset().top))},load:function(){},getContent:function(){},save:function(){},close:function(e){var t=(this.fm,$(e).data("dfrd"));t&&"pending"===t.state()&&t.reject()}}]},window.elFinder);                                                                                                                                                                                                                                                                                                                                                                                                                                                                  includes/File_manager/lib/js/i18n/elfinder.cs.js                                                    0000644                 00000103414 15266052752 0015433 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Czech translation
 * @author RobiNN <robo@kelcak.com>
 * @author Jay Gridley <gridley.jay@hotmail.com>
 * @version 2021-06-10
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.cs = {
		translator : 'RobiNN &lt;robo@kelcak.com&gt;, Jay Gridley &lt;gridley.jay@hotmail.com&gt;',
		language   : 'ÄŒeÅ¡tina',
		direction  : 'ltr',
		dateFormat : 'd. m. Y H:i', // will show like: 10. 06. 2021 23:37
		fancyDateFormat : '$1 H:i', // will show like: Dnes 23:37
		nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233701
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Chyba',
			'errUnknown'           : 'NeznÃ¡mÃ¡ chyba.',
			'errUnknownCmd'        : 'NeznÃ¡mÃ½ pÅ™Ã­kaz.',
			'errJqui'              : 'NedostaÄ�ujÃ­cÃ­ konfigurace jQuery UI. MusÃ­ bÃ½t zahrnuty komponenty Selectable, Draggable a Droppable.',
			'errNode'              : 'elFinder vyÅ¾aduje vytvoÅ™enÃ½ DOM Elementu.',
			'errURL'               : 'ChybnÃ¡ konfigurace elFinderu! NenÃ­ nastavena hodnota URL.',
			'errAccess'            : 'PÅ™Ã­stup zamÃ­tnut.',
			'errConnect'           : 'NepodaÅ™ilo se pÅ™ipojit k backendu.',
			'errAbort'             : 'PÅ™ipojenÃ­ zruÅ¡eno.',
			'errTimeout'           : 'VypÅ¡el limit pro pÅ™ipojenÃ­.',
			'errNotFound'          : 'Backend nenalezen.',
			'errResponse'          : 'NesprÃ¡vnÃ¡ odpovÄ›Ä� backendu.',
			'errConf'              : 'NepsrÃ¡vnÃ¡ konfigurace backendu.',
			'errJSON'              : 'PHP modul JSON nenÃ­ nainstalovÃ¡n.',
			'errNoVolumes'         : 'NenÃ­ dostupnÃ½ Ä�itelnÃ½ oddÃ­l.',
			'errCmdParams'         : 'NesprÃ¡vnÃ© parametry pÅ™Ã­kazu "$1".',
			'errDataNotJSON'       : 'Data nejsou ve formÃ¡tu JSON.',
			'errDataEmpty'         : 'Data jsou prÃ¡zdnÃ¡.',
			'errCmdReq'            : 'Dotaz backendu vyÅ¾aduje nÃ¡zev pÅ™Ã­kazu.',
			'errOpen'              : 'Chyba pÅ™i otevÃ­rÃ¡nÃ­ "$1".',
			'errNotFolder'         : 'Objekt nenÃ­ sloÅ¾ka.',
			'errNotFile'           : 'Objekt nenÃ­ soubor.',
			'errRead'              : 'Chyba pÅ™i Ä�tenÃ­ "$1".',
			'errWrite'             : 'Chyba pÅ™i zÃ¡pisu do "$1".',
			'errPerm'              : 'PÅ™Ã­stup odepÅ™en.',
			'errLocked'            : '"$1" je uzamÄ�enÃ½ a nemÅ¯Å¾e bÃ½t pÅ™ejmenovÃ¡n, pÅ™esunut nebo smazÃ¡n.',
			'errExists'            : 'Soubor s nÃ¡zvem "$1" jiÅ¾ existuje.',
			'errInvName'           : 'NesprÃ¡vnÃ½ nÃ¡zev souboru.',
			'errInvDirname'        : 'NeplatnÃ½ nÃ¡zev adresÃ¡Å™e.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'SloÅ¾ka nenalezena.',
			'errFileNotFound'      : 'Soubor nenalezen.',
			'errTrgFolderNotFound' : 'CÃ­lovÃ¡ sloÅ¾ka "$1" nenalezena.',
			'errPopup'             : 'ProhlÃ­Å¾eÄ� zabrÃ¡nil otevÅ™enÃ­ vyskakovacÃ­ho okna. K otevÅ™enÃ­ souboru, povolte vyskakovacÃ­ okno v prohlÃ­Å¾eÄ�i.',
			'errMkdir'             : 'NepodaÅ™ilo se vytvoÅ™it sloÅ¾ku "$1".',
			'errMkfile'            : 'NepodaÅ™ilo se vytvoÅ™it soubor "$1".',
			'errRename'            : 'NepodaÅ™ilo se pÅ™ejmenovat "$1".',
			'errCopyFrom'          : 'KopÃ­rovÃ¡nÃ­ souborÅ¯ z oddÃ­lu "$1" nenÃ­ povoleno.',
			'errCopyTo'            : 'KopÃ­rovÃ¡nÃ­ souborÅ¯ do oddÃ­lu "$1" nenÃ­ povoleno.',
			'errMkOutLink'         : 'Nelze vytvoÅ™it odkaz mimo koÅ™enovÃ©ho svazku.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Chyba nahrÃ¡vÃ¡nÃ­.',  // old name - errUploadCommon
			'errUploadFile'        : 'NepodaÅ™ilo se nahrÃ¡t "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nejsou vybrÃ¡ny Å¾Ã¡dnÃ© soubory k nahrÃ¡nÃ­.',
			'errUploadTotalSize'   : 'PÅ™ekroÄ�ena maximÃ¡lnÃ­ povolenÃ¡ velikost dat.', // old name - errMaxSize
			'errUploadFileSize'    : 'PÅ™ekroÄ�ena maximÃ¡lnÃ­ povolenÃ¡ velikost souboru.', //  old name - errFileMaxSize
			'errUploadMime'        : 'NepovolenÃ½ typ souboru.',
			'errUploadTransfer'    : '"$1" chyba pÅ™enosu.',
			'errUploadTemp'        : 'Nelze vytvoÅ™it doÄ�asnÃ½ soubor pro upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" v tomto umÃ­stÄ›nÃ­ jiÅ¾ existuje a nelze jej nahradit s jinÃ½m typem objektu.', // new
			'errReplace'           : 'Nelze nahradit "$1".',
			'errSave'              : '"$1" nelze uloÅ¾it.',
			'errCopy'              : '"$1" nelze zkopÃ­rovat.',
			'errMove'              : '"$1" nelze pÅ™emÃ­stit.',
			'errCopyInItself'      : '"$1" nelze zkopÃ­rovat do sebe sama.',
			'errRm'                : '"$1" nelze odstranit.',
			'errTrash'             : 'Nelze se dostat do koÅ¡e.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nelze odstranit zdrojovÃ½ soubor(y).',
			'errExtract'           : 'Nelze extrahovat soubory z "$1".',
			'errArchive'           : 'Nelze vytvoÅ™it archÃ­v.',
			'errArcType'           : 'NepodporovanÃ½ typ archÃ­vu.',
			'errNoArchive'         : 'Soubor nenÃ­ archÃ­v nebo mÃ¡ nepodporovanÃ½ formÃ¡t.',
			'errCmdNoSupport'      : 'Backend tento pÅ™Ã­kaz nepodporuje.',
			'errReplByChild'       : 'SloÅ¾ka "$1" nemÅ¯Å¾e bÃ½t nahrazena souborem, kterÃ½ sama obsahuje.',
			'errArcSymlinks'       : 'Z bezpeÄ�nostnÃ­ch dÅ¯vodÅ¯ je zakÃ¡zÃ¡no rozbalit archÃ­vy obsahujÃ­cÃ­ symlinky.', // edited 24.06.2012
			'errArcMaxSize'        : 'Soubory archÃ­vu pÅ™ekraÄ�ujÃ­ maximÃ¡lnÃ­ povolenou velikost.',
			'errResize'            : 'NepodaÅ™ilo se zmÄ›nit velikost obrÃ¡zku "$1".',
			'errResizeDegree'      : 'NeplatnÃ½ stupeÅˆ rotace.',  // added 7.3.2013
			'errResizeRotate'      : 'Nelze otoÄ�it obrÃ¡zek.',  // added 7.3.2013
			'errResizeSize'        : 'NeplatnÃ¡ velikost obrÃ¡zku.',  // added 7.3.2013
			'errResizeNoChange'    : 'Velikost obrazu se nezmÄ›nÃ­.',  // added 7.3.2013
			'errUsupportType'      : 'NepodporovanÃ½ typ souboru.',
			'errNotUTF8Content'    : 'Soubor "$1" nemÃ¡ ani obsah kÃ³dovanÃ½ v UTF-8 a nelze zmÄ›nit.',  // added 9.11.2011
			'errNetMount'          : 'NenÃ­ moÅ¾nÃ© se pÅ™ipojit "$ 1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'NepodporovanÃ½ protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'PÅ™ipojenÃ­ se nezdaÅ™ilo.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Hostitel se vyÅ¾aduje.', // added 18.04.2012
			'errSessionExpires'    : 'Relace byla ukonÄ�ena z dÅ¯vodu neÄ�innosti.',
			'errCreatingTempDir'   : 'Nelze vytvoÅ™it doÄ�asnÃ½ adresÃ¡Å™: "$1"',
			'errFtpDownloadFile'   : 'Nelze stÃ¡hnout soubor z FTP: "$1"',
			'errFtpUploadFile'     : 'Nelze nahrÃ¡t soubor na FTP: "$1"',
			'errFtpMkdir'          : 'NepodaÅ™ilo se vytvoÅ™it vzdÃ¡lenÃ½ adresÃ¡Å™ na FTP: "$1"',
			'errArchiveExec'       : 'PÅ™i archivaci do souboru doÅ¡lo k chybÄ›: "$1"',
			'errExtractExec'       : 'Chyba pÅ™i extrahovÃ¡nÃ­ souboru: "$1"',
			'errNetUnMount'        : 'NepodaÅ™ilo se odpojit', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nelze pÅ™evÃ©st na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Chcete-li nahrÃ¡t sloÅ¾ku, zkuste modernÃ­ prohlÃ­Å¾eÄ�.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'VyprÅ¡enÃ­ Ä�asovÃ©ho limitu pÅ™i hledÃ¡nÃ­ "$1". Je Ä�Ã¡steÄ�nÄ› vÃ½sledkem hledÃ¡nÃ­.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'OpÄ›tovnÃ© povolenÃ­ je nutnÃ©.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'MaximÃ¡lnÃ­ poÄ�et volitelnÃ½ch pÅ™edmÄ›tÅ¯ je $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nelze obnovit z koÅ¡e. Nelze identifikovat cÃ­l obnovenÃ­.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor tohoto typu souboru nebyl nalezen.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'DoÅ¡lo k chybÄ› na stranÄ› serveru.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nelze vyprÃ¡zdnit sloÅ¾ku "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'ExistujÃ­ jeÅ¡tÄ› dalÅ¡Ã­ $1 chyby.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'MÅ¯Å¾ete vytvoÅ™it aÅ¾ $1 sloÅ¾ek najednou.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'VytvoÅ™it archÃ­v',
			'cmdback'      : 'ZpÄ›t',
			'cmdcopy'      : 'KopÃ­rovat',
			'cmdcut'       : 'Vyjmout',
			'cmddownload'  : 'StÃ¡hnout',
			'cmdduplicate' : 'Duplikovat',
			'cmdedit'      : 'Upravit soubor',
			'cmdextract'   : 'Rozbalit archÃ­v',
			'cmdforward'   : 'VpÅ™ed',
			'cmdgetfile'   : 'Vybrat soubory',
			'cmdhelp'      : 'O softwaru',
			'cmdhome'      : 'DomÅ¯',
			'cmdinfo'      : 'Zobrazit informace',
			'cmdmkdir'     : 'NovÃ¡ sloÅ¾ka',
			'cmdmkdirin'   : 'Do novÃ© sloÅ¾ky', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'NovÃ½ soubor',
			'cmdopen'      : 'OtevÅ™Ã­t',
			'cmdpaste'     : 'VloÅ¾it',
			'cmdquicklook' : 'NÃ¡hled',
			'cmdreload'    : 'Obnovit',
			'cmdrename'    : 'PÅ™ejmenovat',
			'cmdrm'        : 'Smazat',
			'cmdtrash'     : 'Do koÅ¡e', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Obnovit', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'NajÃ­t soubory',
			'cmdup'        : 'PÅ™ejÃ­t do nadÅ™azenÃ© sloÅ¾ky',
			'cmdupload'    : 'NahrÃ¡t soubor(y)',
			'cmdview'      : 'Zobrazit',
			'cmdresize'    : 'ZmÄ›nit velikost',
			'cmdsort'      : 'SeÅ™adit',
			'cmdnetmount'  : 'PÅ™ipojit sÃ­Å¥ovou jednotku', // added 18.04.2012
			'cmdnetunmount': 'Odpojit', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'UmÃ­stÄ›nÃ­', // added 28.12.2014
			'cmdchmod'     : 'ZmÄ›nit reÅ¾im', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'OtevÅ™enÃ­ sloÅ¾ky', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'ObnovenÃ­ Å¡Ã­Å™ku sloupce', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'CelÃ¡ obrazovka', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Posouvat', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'VyprÃ¡zdnit sloÅ¾ku', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Krok zpÄ›t', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'UdÄ›lat to znovu', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preference', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Vyberat vÅ¡e', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Nic nevyberaÅ¥', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertovat vÃ½bÄ›r', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'OtevÅ™i v novÃ©m oknÄ›', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'SkrÃ½t (PÅ™edvolba)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'ZavÅ™Ã­t',
			'btnSave'   : 'UloÅ¾it',
			'btnRm'     : 'Odstranit',
			'btnApply'  : 'PouÅ¾Ã­t',
			'btnCancel' : 'ZruÅ¡it',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Ano',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'PÅ™ipojit',  // added 18.04.2012
			'btnApprove': 'PÅ™ejÃ­t do Ä�Ã¡sti 1 $ & schvÃ¡lit', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odpojit', // from v2.1 added 30.04.2012
			'btnConv'   : 'PÅ™evÃ©st', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
			'btnVolume' : 'MÃ©dium',    // from v2.1 added 22.5.2015
			'btnAll'    : 'VÅ¡echno',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
			'btnFileName':'NÃ¡zev souboru',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'UloÅ¾it & zavÅ™Ã­t', // from v2.1 added 12.6.2015
			'btnBackup' : 'ZÃ¡lohovat', // fromv2.1 added 28.11.2015
			'btnRename'    : 'PÅ™ejmenovat',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'PÅ™ejmenovat vÅ¡e', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'PÅ™edch ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'DalÅ¡Ã­ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'UloÅ¾it jako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'OtevÃ­rÃ¡nÃ­ sloÅ¾ky',
			'ntffile'     : 'OtevÃ­rÃ¡nÃ­ souboru',
			'ntfreload'   : 'ObnovovÃ¡nÃ­ obsahu sloÅ¾ky',
			'ntfmkdir'    : 'VytvÃ¡Å™enÃ­ sloÅ¾ky',
			'ntfmkfile'   : 'VytvÃ¡Å™enÃ­ souborÅ¯',
			'ntfrm'       : 'VymazÃ¡nÃ­ poloÅ¾ek',
			'ntfcopy'     : 'KopÃ­rovÃ¡nÃ­ poloÅ¾ek',
			'ntfmove'     : 'PÅ™emÃ­stÄ›nÃ­ poloÅ¾ek',
			'ntfprepare'  : 'Kontrola existujÃ­cÃ­ch poloÅ¾ek',
			'ntfrename'   : 'PÅ™ejmenovÃ¡vÃ¡nÃ­ souborÅ¯',
			'ntfupload'   : 'NahrÃ¡vÃ¡nÃ­ souborÅ¯',
			'ntfdownload' : 'StahovÃ¡nÃ­ souborÅ¯',
			'ntfsave'     : 'UklÃ¡dÃ¡nÃ­ souborÅ¯',
			'ntfarchive'  : 'VytvÃ¡Å™enÃ­ archÃ­vu',
			'ntfextract'  : 'RozbalovÃ¡nÃ­ souborÅ¯ z archÃ­vu',
			'ntfsearch'   : 'VyhledÃ¡vÃ¡nÃ­ souborÅ¯',
			'ntfresize'   : 'ZmÄ›na velikosti obrÃ¡zkÅ¯',
			'ntfsmth'     : 'ÄŒekejte prosÃ­m...',
			'ntfloadimg'  : 'NaÄ�Ã­tÃ¡nÃ­ obrÃ¡zkÅ¯',
			'ntfnetmount' : 'PÅ™ipojenÃ­ sÃ­Å¥ovÃ©ho mÃ©dia', // added 18.04.2012
			'ntfnetunmount': 'OdpojenÃ­ sÃ­Å¥ovÃ©ho mÃ©dia', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ZÃ­skejte rozmÄ›r obrazu', // added 20.05.2013
			'ntfreaddir'  : 'PÅ™eÄ�tÄ›te si informace o sloÅ¾ce', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ZÃ­skejte adresu URL odkazu', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ZmÄ›na souboru', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Zkontrolujte nÃ¡zev nahravanÃ©ho souboru', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'VytvoÅ™it soubor ke staÅ¾enÃ­', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ZÃ­skÃ¡nÃ­ informacÃ­ o cestÄ›', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ZpracovÃ¡nÃ­ nahranÃ©ho souboru', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Hodit do koÅ¡e', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Obnova z koÅ¡e', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrola cÃ­lovÃ© sloÅ¾ky', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ZruÅ¡it  pÅ™edchozÃ­ operaci', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Obnovit pÅ™edchozÃ­ zruÅ¡enÃ­', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'KoÅ¡', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'neznÃ¡mÃ½',
			'Today'       : 'Dnes',
			'Yesterday'   : 'VÄ�era',
			'msJan'       : 'Led',
			'msFeb'       : 'Ãšno',
			'msMar'       : 'BÅ™e',
			'msApr'       : 'Dub',
			'msMay'       : 'KvÄ›',
			'msJun'       : 'ÄŒer',
			'msJul'       : 'ÄŒec',
			'msAug'       : 'Srp',
			'msSep'       : 'ZÃ¡Å™',
			'msOct'       : 'Å˜Ã­j',
			'msNov'       : 'Lis',
			'msDec'       : 'Pro',
			'January'     : 'Leden',
			'February'    : 'Ãšnor',
			'March'       : 'BÅ™ezen',
			'April'       : 'Duben',
			'May'         : 'KvÄ›ten',
			'June'        : 'ÄŒerven',
			'July'        : 'ÄŒervenec',
			'August'      : 'Srpen',
			'September'   : 'ZÃ¡Å™Ã­',
			'October'     : 'Å˜Ã­jen',
			'November'    : 'Listopad',
			'December'    : 'Prosinec',
			'Sunday'      : 'NedÄ›le',
			'Monday'      : 'PondÄ›lÃ­',
			'Tuesday'     : 'ÃšterÃ½',
			'Wednesday'   : 'StÅ™eda',
			'Thursday'    : 'ÄŒtvrtek',
			'Friday'      : 'PÃ¡tek',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ne',
			'Mon'         : 'Po',
			'Tue'         : 'Ãšt',
			'Wed'         : 'St',
			'Thu'         : 'ÄŒt',
			'Fri'         : 'PÃ¡',
			'Sat'         : 'So',

			/******************************** sort variants ********************************/
			'sortname'          : 'dle jmÃ©na',
			'sortkind'          : 'dle typu',
			'sortsize'          : 'dle velikosti',
			'sortdate'          : 'dle data',
			'sortFoldersFirst'  : 'NapÅ™ed sloÅ¾ky',
			'sortperm'          : 'dle povolenÃ­', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'dle mÃ³du',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'dle majitele',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'dle skupiny',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'TakÃ© stromovÃ© zobrazenÃ­',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NovÃ½ soubor.txt', // added 10.11.2015
			'untitled folder'   : 'NovÃ¡ sloÅ¾ka',   // added 10.11.2015
			'Archive'           : 'NovÃ½ archiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NovÃ½ soubor.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 soubor',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'PoÅ¾adovÃ¡no potvrzenÃ­',
			'confirmRm'       : 'Opravdu chcete odstranit tyto soubory?<br/>Operace nelze vrÃ¡tit!',
			'confirmRepl'     : 'Nahradit starÃ© soubory novÃ½mi?',
			'confirmRest'     : 'Nahradit stÃ¡vajÃ­cÃ­ poloÅ¾ku poloÅ¾kou z koÅ¡e?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'NenÃ­ v UTF-8, pÅ™evÃ©st do UTF-8?<br/>Obsah po pÅ™evodu se stÃ¡vÃ¡ UTF-8.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'KÃ³dovÃ¡nÃ­ tohoto souboru nemoholo rozpoznÃ¡n. Pro Ãºpravy je tÅ™eba doÄ�asnÄ› pÅ™evÃ©st do kÃ³dovÃ¡nÃ­ UTF-8.<br/>ProsÃ­m, vyberte kÃ³dovÃ¡nÃ­ znakÅ¯ souboru.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Byl zmÄ›nÄ›n.<br/>Pokud obsahuje neuloÅ¾enÃ© zmÄ›ny, dojde ke ztrÃ¡tÄ› prÃ¡ce.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Opravdu chcete poloÅ¾ky pÅ™esunout do koÅ¡e?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Opravdu chcete poloÅ¾ky pÅ™esunout do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Pro vÅ¡echny',
			'name'            : 'NÃ¡zev',
			'size'            : 'Velikost',
			'perms'           : 'PrÃ¡va',
			'modify'          : 'UpravenÃ½',
			'kind'            : 'Typ',
			'read'            : 'Ä�tenÃ­',
			'write'           : 'zÃ¡pis',
			'noaccess'        : 'pÅ™Ã­stup odepÅ™en',
			'and'             : 'a',
			'unknown'         : 'neznÃ¡mÃ½',
			'selectall'       : 'Vybrat vÅ¡echny poloÅ¾ky',
			'selectfiles'     : 'Vybrat poloÅ¾ku(y)',
			'selectffile'     : 'Vybrat prvnÃ­ poloÅ¾ku',
			'selectlfile'     : 'Vybrat poslednÃ­ poloÅ¾ku',
			'viewlist'        : 'Seznam',
			'viewicons'       : 'Ikony',
			'viewSmall'       : 'MalÃ© ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'StÅ™ednÃ­ ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'VelkÃ© ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra velkÃ© ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'MÃ­sta',
			'calc'            : 'VypoÄ�Ã­tat',
			'path'            : 'Cesta',
			'aliasfor'        : 'ZÃ¡stupce pro',
			'locked'          : 'UzamÄ�enÃ½',
			'dim'             : 'RozmÄ›ry',
			'files'           : 'Soubory',
			'folders'         : 'SloÅ¾ky',
			'items'           : 'PoloÅ¾ky',
			'yes'             : 'ano',
			'no'              : 'ne',
			'link'            : 'Odkaz',
			'searcresult'     : 'VÃ½sledky hledÃ¡nÃ­',
			'selected'        : 'vybranÃ© poloÅ¾ky',
			'about'           : 'O softwaru',
			'shortcuts'       : 'Zkratky',
			'help'            : 'NÃ¡povÄ›da',
			'webfm'           : 'WebovÃ½ sprÃ¡vce souborÅ¯',
			'ver'             : 'Verze',
			'protocolver'     : 'verze protokolu',
			'homepage'        : 'DomovskÃ¡ strÃ¡nka projektu',
			'docs'            : 'Dokumentace',
			'github'          : 'Najdete nÃ¡s na Gitgube',
			'twitter'         : 'NÃ¡sledujte nÃ¡s na Twitteri',
			'facebook'        : 'PÅ™ipojte se k nÃ¡m na Facebooku',
			'team'            : 'TÃ½m',
			'chiefdev'        : 'sÃ©f vÃ½vojÃ¡Å™Å¯',
			'developer'       : 'vÃ½vojÃ¡r',
			'contributor'     : 'spolupracovnÃ­k',
			'maintainer'      : 'ÃºdrÅ¾ba',
			'translator'      : 'pÅ™eklad',
			'icons'           : 'Ikony',
			'dontforget'      : 'a nezapomeÅˆte si vzÃ­t plavky',
			'shortcutsof'     : 'Zkratky nejsou povoleny',
			'dropFiles'       : 'Sem pÅ™etÃ¡hnÄ›te soubory',
			'or'              : 'nebo',
			'selectForUpload' : 'Vyberte soubory',
			'moveFiles'       : 'PÅ™esunout sobory',
			'copyFiles'       : 'ZkopÃ­rovat soubory',
			'restoreFiles'    : 'Obnovit poloÅ¾ky', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Odstranit z mÃ­st',
			'aspectRatio'     : 'PomÄ›r stran',
			'scale'           : 'MÄ›Å™Ã­tko',
			'width'           : 'Å Ã­Å™ka',
			'height'          : 'VÃ½Å¡ka',
			'resize'          : 'ZmÄ›nit vel.',
			'crop'            : 'OÅ™ezat',
			'rotate'          : 'OtoÄ�it',
			'rotate-cw'       : 'OtoÄ�it o +90 stupÅˆÅ¯',
			'rotate-ccw'      : 'OtoÄ�it o -90 stupÅˆÅ¯',
			'degree'          : ' stupÅˆÅ¯',
			'netMountDialogTitle' : 'PÅ™ipojenÃ­ sÃ­Å¥ovÃ©ho mÃ©dia', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'UÅ¾ivatel', // added 18.04.2012
			'pass'                : 'Heslo', // added 18.04.2012
			'confirmUnmount'      : 'Chcete odpojit $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'PÅ™emÃ­stÄ›te nebo pÅ™esuÅˆte soubory z prohlÃ­Å¾eÄ�e', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Zde pÅ™emÃ­stÄ›te nebo pÅ™esuÅˆte soubory a adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'KÃ³dovÃ¡nÃ­', // from v2.1 added 19.12.2014
			'locale'          : 'Lokalizce',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'CÃ­l: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'VyhledÃ¡vÃ¡nÃ­ podle vstupnÃ­ho MIME typu', // from v2.1 added 22.5.2015
			'owner'           : 'Majitel', // from v2.1 added 20.6.2015
			'group'           : 'Skupina', // from v2.1 added 20.6.2015
			'other'           : 'OstatnÃ­', // from v2.1 added 20.6.2015
			'execute'         : 'Spustit', // from v2.1 added 20.6.2015
			'perm'            : 'PovolenÃ­', // from v2.1 added 20.6.2015
			'mode'            : 'ReÅ¾im', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'SloÅ¾ka je prÃ¡zdnÃ¡', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'SloÅ¾ka je prÃ¡zdnÃ¡, pÅ™esunout nebo zkontrolovat poloÅ¾ky', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'SloÅ¾ka je prÃ¡zdnÃ¡, dlouhim kliknutÃ­m pÅ™idÃ¡te poloÅ¾ky', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'AutomatickÃ¡ synchronizace',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'PÅ™esunout nahoru',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'ZÃ­skat URL odkaz', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'VybranÃ© poloÅ¾ky ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID sloÅ¾ky', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Povolit pÅ™Ã­stup offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Znovu ovÄ›Å™it', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'NaÄ�Ã­tÃ¡nÃ­...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'OtevÅ™enÃ­ vÃ­ce souborÅ¯', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'PokouÅ¡Ã­te se otevÅ™Ã­t soubor $1. Chcete jej otevÅ™Ã­t v prohlÃ­Å¾eÄ�i?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'VÃ½sledky hledÃ¡nÃ­ jsou prÃ¡zdnÃ©', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Upravujete soubor.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vybrali jste $1 poloÅ¾ky.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'MÃ¡te $1 poloÅ¾ky v schrÃ¡nce.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'InkrementÃ¡lnÃ­ hledÃ¡nÃ­ je pouze z aktuÃ¡lnÃ­ho zobrazenÃ­.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Obnovit', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 kompletnÃ­', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'KontextovÃ© menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'OtÃ¡Ä�enÃ­ strÃ¡nky', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'KoÅ™eny mÃ©dia', // from v2.1.16 added 16.9.2016
			'reset'           : 'Obnovit', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Barva pozadÃ­', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'VÃ½bÄ›r barvy', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px mÅ™Ã­Å¾ka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Povoleno', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ZakÃ¡zÃ¡no', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'VÃ½sledky hledÃ¡nÃ­ jsou prÃ¡zdnÃ© v aktuÃ¡lnÃ­m zobrazenÃ­.\\StisknutÃ­m tlaÄ�Ã­tka [Enter] rozÅ¡Ã­Å™Ã­te vyhledÃ¡vÃ¡nÃ­ cÃ­le.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'VÃ½sledky vyhledÃ¡vÃ¡nÃ­ prvnÃ­ho listu jsou v aktuÃ¡lnÃ­m zobrazenÃ­ prÃ¡zdnÃ©.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'NÃ¡pis textu', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minut zÅ¯stÃ¡vÃ¡', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'OtevÅ™Ã­t pomocÃ­ zvolenÃ©ho kÃ³dovÃ¡nÃ­', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'UloÅ¾it s vybranÃ½m kÃ³dovÃ¡nÃ­m', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Vyberte sloÅ¾ku', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'HledÃ¡nÃ­ prvnÃ­ho listu', // from v2.1.23 added 24.3.2017
			'presets'         : 'PÅ™edvolby', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Je to pÅ™Ã­liÅ¡ mnoho poloÅ¾ek, takÅ¾e se nemohou dostat do koÅ¡e.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'VyprÃ¡zdnit sloÅ¾ku "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ve sloÅ¾ce "$1" nejsou Å¾Ã¡dnÃ© poloÅ¾ky.', // from v2.1.25 added 22.6.2017
			'preference'      : 'PÅ™edvolby', // from v2.1.26 added 28.6.2017
			'language'        : 'Nastavte jazyk', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializujte nastavenÃ­ uloÅ¾enÃ¡ v tomto prohlÃ­Å¾eÄ�i', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'NastavenÃ­ panelu nÃ¡strojÅ¯', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...$1 znakÅ¯ zbÃ½vÃ¡.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '...$1 Å™Ã¡dkÅ¯ zÅ¯stÃ¡vÃ¡.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'SouÄ�et', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'HrubÃ¡ velikost souboru', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'ZamÄ›Å™enÃ­ na prvek dialogu s mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Vybrat', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Akce pÅ™i vybranÃ©m souboru', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'OtevÅ™Ã­t pomocÃ­ naposledy pouÅ¾itÃ©ho editoru', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'ObrÃ¡tit vÃ½bÄ›r poloÅ¾ek', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Opravdu chcete pÅ™ejmenovat $1 vybranÃ½ch poloÅ¾ek, jako napÅ™Ã­klad $2<br/>NenÃ­ to moÅ¾nÃ© vrÃ¡tit zpÄ›t!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch pÅ™ejmenovÃ¡nÃ­', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ ÄŒÃ­slo', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'PÅ™idat pÅ™edponu', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'PÅ™idat pÅ™Ã­ponu', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ZmÄ›nit pÅ™Ã­ponu', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'NastavenÃ­ sloupcÅ¯ (ZobrazenÃ­ seznamu)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'VÅ¡echny zmÄ›ny se okamÅ¾itÄ› projevÃ­ v archivu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'JakÃ©koliv zmÄ›ny se nebudou odrÃ¡Å¾et, dokud nebude tento svazek odpojen.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'NÃ¡sledujÃ­cÃ­ svazky namontovanÃ© na tomto svazku jsou takÃ© odpojeny. Opravdu ji odpojÃ­te?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informace o vÃ½bÄ›ru', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmy pro zobrazenÃ­ hashovÃ¡nÃ­ souborÅ¯', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'InformaÄ�nÃ­ poloÅ¾ky (panel s informacemi o vÃ½bÄ›ru)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'DalÅ¡Ã­m stisknutÃ­m opustÃ­te.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Panel nÃ¡strojÅ¯', // from v2.1.38 added 4.4.2018
			'workspace'       : 'PracovnÃ­ prostor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'VÅ¡echno', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Velikost ikony (zobrazenÃ­ ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'OtevÅ™ete maximalizovanÃ© okno editora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'ProtoÅ¾e konverze podle API momentÃ¡lnÄ› nenÃ­ k dispozici, pÅ™eveÄ�te na webovÃ© strÃ¡nce.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konverzi musÃ­te nahrÃ¡t pÅ™eveden soubor pomocÃ­ URL poloÅ¾ky nebo staÅ¾enÃ½ soubor k uloÅ¾enÃ­ pÅ™evedenÃ©ho souboru.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'PÅ™evÃ©st na strÃ¡nce $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrace', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Tento elFinder mÃ¡ integrovanÃ© nÃ¡sledujÃ­cÃ­ externÃ­ sluÅ¾by. PÅ™ed pouÅ¾itÃ­m zkontrolujte podmÃ­nky pouÅ¾Ã­vÃ¡nÃ­, zÃ¡sady ochrany osobnÃ­ch ÃºdajÅ¯ atd.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Zobrazit skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'SkrÃ½t skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Zobrazit/skrÃ½t skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy souborÅ¯, jeÅ¾ majÃ­ bÃ½t povoleny pomocÃ­ "NovÃ½ soubor"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ textovÃ©ho souboru', // from v2.1.41 added 7.8.2018
			'add'             : 'PÅ™idat', // from v2.1.41 added 7.8.2018
			'theme'           : 'TÃ©ma', // from v2.1.43 added 19.10.2018
			'default'         : 'VÃ½chozÃ­', // from v2.1.43 added 19.10.2018
			'description'     : 'Popis', // from v2.1.43 added 19.10.2018
			'website'         : 'StrÃ¡nka', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licence', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Tuto poloÅ¾ku nelze uloÅ¾it. Abyste se vyhnuli ztrÃ¡tÄ› Ãºprav, musÃ­te je exportovat do poÄ�Ã­taÄ�e.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'PoklepÃ¡nÃ­m na soubor jej vyberte.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'PouÅ¾Ã­t reÅ¾im celÃ© obrazovky', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'NeznÃ¡mÃ½',
			'kindRoot'        : 'KoÅ™en mÃ©dia', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'SloÅ¾ka',
			'kindSelects'     : 'VÃ½bÄ›ry', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'ZlomenÃ½ alias',
			// applications
			'kindApp'         : 'Aplikace',
			'kindPostscript'  : 'Dokument Postscriptu',
			'kindMsOffice'    : 'Dokument Microsoft Office',
			'kindMsWord'      : 'Dokument Microsoft Word',
			'kindMsExcel'     : 'Dokument Microsoft Excel',
			'kindMsPP'        : 'Prezentace Microsoft Powerpoint',
			'kindOO'          : 'OtevÅ™Ã­t dokument Office',
			'kindAppFlash'    : 'Flash aplikace',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Soubor BitTorrent',
			'kind7z'          : 'ArchÃ­v 7z',
			'kindTAR'         : 'ArchÃ­v TAR',
			'kindGZIP'        : 'ArchÃ­v GZIP',
			'kindBZIP'        : 'ArchÃ­v BZIP',
			'kindXZ'          : 'ArchÃ­v XZ',
			'kindZIP'         : 'ArchÃ­v ZIP',
			'kindRAR'         : 'ArchÃ­v RAR',
			'kindJAR'         : 'Soubor Java JAR',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM balÃ­Ä�ek',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'TextovÃ½ dokument',
			'kindTextPlain'   : 'ÄŒistÃ½ text',
			'kindPHP'         : 'PHP zdrojovÃ½ kÃ³d',
			'kindCSS'         : 'KaskÃ¡dovÃ© styly',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript zdrojovÃ½ kÃ³d',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C zdrojovÃ½ kÃ³d',
			'kindCHeader'     : 'C hlaviÄ�ka',
			'kindCPP'         : 'C++ zdrojovÃ½ kÃ³d',
			'kindCPPHeader'   : 'C++ hlaviÄ�ka',
			'kindShell'       : 'Unix shell skript',
			'kindPython'      : 'Python zdrojovÃ½ kÃ³d',
			'kindJava'        : 'Java zdrojovÃ½ kÃ³d',
			'kindRuby'        : 'Ruby zdrojovÃ½ kÃ³d',
			'kindPerl'        : 'Perl skript',
			'kindSQL'         : 'SQL zdrojovÃ½ kÃ³d',
			'kindXML'         : 'Dokument XML',
			'kindAWK'         : 'AWK zdrojovÃ½ kÃ³d',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'ObrÃ¡zek',
			'kindBMP'         : 'ObrÃ¡zek BMP',
			'kindJPEG'        : 'ObrÃ¡zek JPEG',
			'kindGIF'         : 'ObrÃ¡zek GIF',
			'kindPNG'         : 'ObrÃ¡zek PNG',
			'kindTIFF'        : 'ObrÃ¡zek TIFF',
			'kindTGA'         : 'ObrÃ¡zek TGA',
			'kindPSD'         : 'ObrÃ¡zek Adobe Photoshop',
			'kindXBITMAP'     : 'ObrÃ¡zek X bitmapa',
			'kindPXM'         : 'ObrÃ¡zek Pixelmator',
			// media
			'kindAudio'       : 'Audio sobory',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video sobory',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

                                                                                                                                                                                                                                                    includes/File_manager/lib/js/i18n/elfinder.ru.js                                                    0000644                 00000123766 15266052752 0015470 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Ð ÑƒÑ�Ñ�ÐºÐ¸Ð¹ Ñ�Ð·Ñ‹Ðº translation
 * @author Dmitry "dio" Levashov <dio@std42.ru>
 * @author Andrew Berezovsky <andrew.berezovsky@gmail.com>
 * @author Alex Yashkin <alex@yashkin.by>
 * @author Aleev Ruslan <info@cat-art.ru>
 * @version 2024-11-05
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ru = {
		translator : 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;, Andrew Berezovsky &lt;andrew.berezovsky@gmail.com&gt;, Alex Yashkin &lt;alex@yashkin.by&gt;, Aleev Ruslan &lt;info@cat-art.ru&gt;',
		language   : 'Ð ÑƒÑ�Ñ�ÐºÐ¸Ð¹ Ñ�Ð·Ñ‹Ðº',
		direction  : 'ltr',
		dateFormat : 'd M Y H:i', // will show like: 05 Ð�Ð¾Ñ� 2024 21:08
		fancyDateFormat : '$1 H:i', // will show like: Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ� 21:08
		nonameDateFormat : 'ymd-His', // noname upload will show like: 241105-210850
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'ÐžÑˆÐ¸Ð±ÐºÐ°',
			'errUnknown'           : 'Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°.',
			'errUnknownCmd'        : 'Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.',
			'errJqui'              : 'ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹ jQuery UI - selectable, draggable Ð¸ droppable.',
			'errNode'              : 'ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ DOM Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ elFinder.',
			'errURL'               : 'Ð�ÐµÐ²ÐµÑ€Ð½Ð°Ñ� ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ� elFinder! Ð�Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ URL.',
			'errAccess'            : 'Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½.',
			'errConnect'           : 'Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾ÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒÑ�Ñ� Ñ� Ñ�ÐµÑ€Ð²ÐµÑ€Ð¾Ð¼.',
			'errAbort'             : 'Ð¡Ð¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð¾.',
			'errTimeout'           : 'Ð¢Ð°Ð¹Ð¼Ð°ÑƒÑ‚ Ñ�Ð¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ�.',
			'errNotFound'          : 'Ð¡ÐµÑ€Ð²ÐµÑ€ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½.',
			'errResponse'          : 'Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð²ÐµÑ‚ Ñ�ÐµÑ€Ð²ÐµÑ€Ð°.',
			'errConf'              : 'Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ñ�ÐµÑ€Ð²ÐµÑ€Ð°.',
			'errJSON'              : 'ÐœÐ¾Ð´ÑƒÐ»ÑŒ PHP JSON Ð½Ðµ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½.',
			'errNoVolumes'         : 'ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚ ÐºÐ¾Ñ€Ð½ÐµÐ²Ñ‹Ðµ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ½Ñ‹Ðµ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�.',
			'errCmdParams'         : 'Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ "$1".',
			'errDataNotJSON'       : 'Ð”Ð°Ð½Ð½Ñ‹Ðµ Ð½Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ JSON.',
			'errDataEmpty'         : 'Ð”Ð°Ð½Ð½Ñ‹Ðµ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚.',
			'errCmdReq'            : 'Ð”Ð»Ñ� Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð° Ðº Ñ�ÐµÑ€Ð²ÐµÑ€Ñƒ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ð¸Ð¼Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹.',
			'errOpen'              : 'Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ "$1".',
			'errNotFolder'         : 'ÐžÐ±ÑŠÐµÐºÑ‚ Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¿Ð°Ð¿ÐºÐ¾Ð¹.',
			'errNotFile'           : 'ÐžÐ±ÑŠÐµÐºÑ‚ Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ„Ð°Ð¹Ð»Ð¾Ð¼.',
			'errRead'              : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� "$1".',
			'errWrite'             : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð² "$1".',
			'errPerm'              : 'Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½.',
			'errLocked'            : '"$1" Ð·Ð°Ñ‰Ð¸Ñ‰ÐµÐ½ Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½, Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½.',
			'errExists'            : 'Ð’ Ð¿Ð°Ð¿ÐºÐµ ÑƒÐ¶Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ„Ð°Ð¹Ð» Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ "$1".',
			'errInvName'           : 'Ð�ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð°.',
			'errInvDirname'        : 'Ð�ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿Ð°Ð¿ÐºÐ¸.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ÐŸÐ°Ð¿ÐºÐ° Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°.',
			'errFileNotFound'      : 'Ð¤Ð°Ð¹Ð» Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½.',
			'errTrgFolderNotFound' : 'Ð¦ÐµÐ»ÐµÐ²Ð°Ñ� Ð¿Ð°Ð¿ÐºÐ° "$1" Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°.',
			'errPopup'             : 'Ð‘Ñ€Ð°ÑƒÐ·ÐµÑ€ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð» Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ðµ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¾ÐºÐ½Ð°. Ð§Ñ‚Ð¾Ð±Ñ‹ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ„Ð°Ð¹Ð», Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°.',
			'errMkdir'             : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð¿Ð°Ð¿ÐºÐ¸ "$1".',
			'errMkfile'            : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° "$1".',
			'errRename'            : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ� "$1".',
			'errCopyFrom'          : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸Ð· Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ "$1" Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾.',
			'errCopyTo'            : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÑŽ "$1" Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾.',
			'errMkOutLink'         : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ð²Ð½Ðµ ÐºÐ¾Ñ€Ð½Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð°.', // from v2.1 added 03.10.2015
			'errUpload'            : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.',  // old name - errUploadCommon
			'errUploadFile'        : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ð�ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð´Ð»Ñ� Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.',
			'errUploadTotalSize'   : 'ÐŸÑ€ÐµÐ²Ñ‹ÑˆÐµÐ½ Ð´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ….', // old name - errMaxSize
			'errUploadFileSize'    : 'Ð Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ð�ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð°.',
			'errUploadTransfer'    : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ Ñ„Ð°Ð¹Ð»Ð° "$1".',
			'errUploadTemp'        : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'ÐžÐ±ÑŠÐµÐºÑ‚ "$1" Ð¿Ð¾ Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ ÑƒÐ¶Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð°.', // new
			'errReplace'           : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ "$1".',
			'errSave'              : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ "$1".',
			'errCopy'              : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ "$1".',
			'errMove'              : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ "$1".',
			'errCopyInItself'      : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ "$1" Ð² Ñ�Ð°Ð¼Ð¾Ð³Ð¾ Ñ�ÐµÐ±Ñ�.',
			'errRm'                : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ "$1".',
			'errTrash'             : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ð² ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñƒ.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹ Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸ÐºÐ°.',
			'errExtract'           : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð·Ð²Ð»ÐµÑ‡ÑŒ Ñ„Ð°Ð»Ñ‹ Ð¸Ð· "$1".',
			'errArchive'           : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð°Ñ€Ñ…Ð¸Ð².',
			'errArcType'           : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ð¸Ð²Ð°.',
			'errNoArchive'         : 'Ð¤Ð°Ð¹Ð» Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð¼ Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ð¸Ð²Ð°.',
			'errCmdNoSupport'      : 'Ð¡ÐµÑ€Ð²ÐµÑ€ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ñ‚Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ.',
			'errReplByChild'       : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ "$1" Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð¸Ð¼Ñ�Ñ� Ð² Ð½ÐµÐ¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼.',
			'errArcSymlinks'       : 'ÐŸÐ¾ Ñ�Ð¾Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�Ð¼ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð° Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²ÐºÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð², Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð¸Ñ… Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ (symlinks) Ð¸Ð»Ð¸ Ñ„Ð°Ð¹Ð»Ñ‹ Ñ� Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¼Ð¸ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸.', // edited 24.06.2012
			'errArcMaxSize'        : 'Ð Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð½Ñ‹Ð¹.',
			'errResize'            : 'Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ "$1".',
			'errResizeDegree'      : 'Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð³Ñ€Ð°Ð´ÑƒÑ� Ð¿Ð¾Ð²Ð¾Ñ€Ð¾Ñ‚Ð°.',  // added 7.3.2013
			'errResizeRotate'      : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ.',  // added 7.3.2013
			'errResizeSize'        : 'Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ð Ð°Ð·Ð¼ÐµÑ€ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ�.',  // added 7.3.2013
			'errUsupportType'      : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð°.',
			'errNotUTF8Content'    : 'Ð¤Ð°Ð¹Ð» "$1" Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ‚ÐµÐºÑ�Ñ‚ Ð² ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐµ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð½Ð¾Ð¹ Ð¾Ñ‚ UTF-8 Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¾Ñ‚Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½.',  // added 9.11.2011
			'errNetMount'          : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð».',     // added 17.04.2012
			'errNetMountFailed'    : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ð¢Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñ…Ð¾Ñ�Ñ‚.', // added 18.04.2012
			'errSessionExpires'    : 'Ð¡ÐµÑ�Ñ�Ð¸Ñ� Ð±Ñ‹Ð»Ð° Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð° Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ�Ñ‚Ð¸.',
			'errCreatingTempDir'   : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½ÑƒÑŽ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÑŽ: "$1"',
			'errFtpDownloadFile'   : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ°Ñ‡Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð» Ñ� FTP: "$1"',
			'errFtpUploadFile'     : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð» Ð½Ð° FTP: "$1"',
			'errFtpMkdir'          : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÑŽ Ð½Ð° FTP: "$1"',
			'errArchiveExec'       : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ð¸ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸: "$1"',
			'errExtractExec'       : 'ÐžÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ð¸ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²ÐºÐ¸: "$1"',
			'errNetUnMount'        : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ð�Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð² UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ð•Ñ�Ð»Ð¸ Ð²Ñ‹ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÐ¸, Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'ÐŸÑ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¿Ð¾Ð¸Ñ�ÐºÐµ "$1". Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ‹ Ð¿Ð¾Ð¸Ñ�ÐºÐ° Ñ‡Ð°Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ‹Ðµ.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ð¢Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ� Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ�.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'ÐœÐ°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ Ñ‡Ð¸Ñ�Ð»Ð¾ Ð²Ñ‹Ð±Ð¸Ñ€Ð°ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²: $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð¸Ð· ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñ‹. Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿ÑƒÑ‚ÑŒ Ð´Ð»Ñ� Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ�.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð².', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ð’Ð¾Ð·Ð½Ð¸ÐºÐ»Ð° Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½Ð° Ñ�Ñ‚Ð¾Ñ€Ð¾Ð½Ðµ Ñ�ÐµÑ€Ð²ÐµÑ€Ð°.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‡Ð¸Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Ð•Ñ‰Ðµ Ð¾ÑˆÐ¸Ð±Ð¾Ðº: $1', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Ð’Ñ‹ Ð¼Ð¾Ð¶ÐµÑ‚Ðµ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð·Ð° Ð¾Ð´Ð¸Ð½ Ñ€Ð°Ð· Ð¿Ð°Ð¿Ð¾Ðº: $1.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ð¡Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð°Ñ€Ñ…Ð¸Ð²',
			'cmdback'      : 'Ð�Ð°Ð·Ð°Ð´',
			'cmdcopy'      : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ',
			'cmdcut'       : 'Ð’Ñ‹Ñ€ÐµÐ·Ð°Ñ‚ÑŒ',
			'cmddownload'  : 'Ð¡ÐºÐ°Ñ‡Ð°Ñ‚ÑŒ',
			'cmdduplicate' : 'Ð¡Ð´ÐµÐ»Ð°Ñ‚ÑŒ ÐºÐ¾Ð¿Ð¸ÑŽ',
			'cmdedit'      : 'Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»',
			'cmdextract'   : 'Ð Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ñ‚ÑŒ Ð°Ñ€Ñ…Ð¸Ð²',
			'cmdforward'   : 'Ð’Ð¿ÐµÑ€ÐµÐ´',
			'cmdgetfile'   : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'cmdhelp'      : 'Ðž Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ðµ',
			'cmdhome'      : 'Ð”Ð¾Ð¼Ð¾Ð¹',
			'cmdinfo'      : 'Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð°',
			'cmdmkdir'     : 'Ð�Ð¾Ð²Ð°Ñ� Ð¿Ð°Ð¿ÐºÐ°',
			'cmdmkdirin'   : 'Ð’ Ð½Ð¾Ð²ÑƒÑŽ Ð¿Ð°Ð¿ÐºÑƒ', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ð�Ð¾Ð²Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»',
			'cmdopen'      : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ',
			'cmdpaste'     : 'Ð’Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ',
			'cmdquicklook' : 'Ð‘Ñ‹Ñ�Ñ‚Ñ€Ñ‹Ð¹ Ð¿Ñ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€',
			'cmdreload'    : 'ÐžÐ±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ',
			'cmdrename'    : 'ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ',
			'cmdrm'        : 'Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ',
			'cmdtrash'     : 'ÐŸÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ð² ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñƒ', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ð’Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'ÐŸÐ¾Ð¸Ñ�Ðº Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'cmdup'        : 'Ð�Ð°Ð²ÐµÑ€Ñ…',
			'cmdupload'    : 'Ð—Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'cmdview'      : 'Ð’Ð¸Ð´',
			'cmdresize'    : 'Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¸ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ',
			'cmdsort'      : 'Ð¡Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ',
			'cmdnetmount'  : 'ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ñ�ÐµÑ‚ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»', // added 18.04.2012
			'cmdnetunmount': 'ÐžÑ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ð’ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð½Ð¾Ðµ', // added 28.12.2014
			'cmdchmod'     : 'Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¿Ñ€Ð°Ð²Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ð¡Ð±Ñ€Ð¾Ñ�Ð¸Ñ‚ÑŒ ÑˆÐ¸Ñ€Ð¸Ð½Ñƒ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ÐŸÐ¾Ð»Ð½Ñ‹Ð¹ Ñ�ÐºÑ€Ð°Ð½', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ÐŸÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'ÐžÑ‡Ð¸Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ÐžÑ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ð’ÐµÑ€Ð½ÑƒÑ‚ÑŒ', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ð²Ñ�Ðµ', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'ÐžÑ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð²Ñ‹Ð±Ð¾Ñ€', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Ð˜Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ñ‹Ð±Ð¾Ñ€', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð² Ð½Ð¾Ð²Ð¾Ð¼ Ð¾ÐºÐ½Ðµ', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ð¡ÐºÑ€Ñ‹Ñ‚ÑŒ (Ð¿ÐµÑ€Ñ�Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ð—Ð°ÐºÑ€Ñ‹Ñ‚ÑŒ',
			'btnSave'   : 'Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ',
			'btnRm'     : 'Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ',
			'btnApply'  : 'ÐŸÑ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ',
			'btnCancel' : 'ÐžÑ‚Ð¼ÐµÐ½Ð°',
			'btnNo'     : 'Ð�ÐµÑ‚',
			'btnYes'    : 'Ð”Ð°',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ',  // added 18.04.2012
			'btnApprove': 'ÐŸÐµÑ€ÐµÐ¹Ñ‚Ð¸ Ð² $1 Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ', // from v2.1 added 26.04.2012
			'btnUnmount': 'ÐžÑ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ', // from v2.1 added 30.04.2012
			'btnConv'   : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ð—Ð´ÐµÑ�ÑŒ',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ð Ð°Ð·Ð´ÐµÐ»',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ð’Ñ�Ðµ',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Ñ‚Ð¸Ð¿', // from v2.1 added 22.5.2015
			'btnFileName':'Ð˜Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð°',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð¸ Ð·Ð°ÐºÑ€Ñ‹Ñ‚ÑŒ', // from v2.1 added 12.6.2015
			'btnBackup' : 'Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ� ÐºÐ¾Ð¿Ð¸Ñ�', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ (Ð²Ñ�Ðµ)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ÐŸÑ€ÐµÐ´. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Ð¡Ð»ÐµÐ´. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ ÐºÐ°Ðº', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ',
			'ntffile'     : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»',
			'ntfreload'   : 'ÐžÐ±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ‚ÐµÐºÑƒÑ‰ÑƒÑŽ Ð¿Ð°Ð¿ÐºÑƒ',
			'ntfmkdir'    : 'Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð¿Ð°Ð¿ÐºÐ¸',
			'ntfmkfile'   : 'Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'ntfrm'       : 'Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'ntfcopy'     : 'Ð¡ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'ntfmove'     : 'ÐŸÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'ntfprepare'  : 'ÐŸÐ¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²ÐºÐ° Ðº ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÑŽ Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'ntfrename'   : 'ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'ntfupload'   : 'Ð—Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'ntfdownload' : 'Ð¡ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'ntfsave'     : 'Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'ntfarchive'  : 'Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ð²Ð°',
			'ntfextract'  : 'Ð Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²ÐºÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°',
			'ntfsearch'   : 'ÐŸÐ¾Ð¸Ñ�Ðº Ñ„Ð°Ð¹Ð»Ð¾Ð²',
			'ntfresize'   : 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð² Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹',
			'ntfsmth'     : 'Ð—Ð°Ð½Ñ�Ñ‚ Ð²Ð°Ð¶Ð½Ñ‹Ð¼ Ð´ÐµÐ»Ð¾Ð¼',
			'ntfloadimg'  : 'Ð—Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�',
			'ntfnetmount' : 'ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ñ�ÐµÑ‚ÐµÐ²Ð¾Ð³Ð¾ Ð´Ð¸Ñ�ÐºÐ°', // added 18.04.2012
			'ntfnetunmount': 'ÐžÑ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ñ�ÐµÑ‚ÐµÐ²Ð¾Ð³Ð¾ Ð´Ð¸Ñ�ÐºÐ°', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð² Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�', // added 20.05.2013
			'ntfreaddir'  : 'Ð§Ñ‚ÐµÐ½Ð¸Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿Ð°Ð¿ÐºÐµ', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ URL Ñ�Ñ�Ñ‹Ð»ÐºÐ¸', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð° Ðº Ñ„Ð°Ð¹Ð»Ñƒ', // from v2.1 added 20.6.2015
			'ntfpreupload': 'ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¸Ð·Ð¼ÐµÐ½Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ñ�ÐºÐ°Ñ‡ÐºÐ¸', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿ÑƒÑ‚Ð¸', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñƒ', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ð’Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¸Ð· ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñ‹', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¿Ð°Ð¿ÐºÐ¸ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ÐžÑ‚Ð¼ÐµÐ½Ð° Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ð’Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'ÐšÐ¾Ñ€Ð·Ð¸Ð½Ð°', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾',
			'Today'       : 'Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ�',
			'Yesterday'   : 'Ð’Ñ‡ÐµÑ€Ð°',
			'msJan'       : 'Ð¯Ð½Ð²',
			'msFeb'       : 'Ð¤ÐµÐ²',
			'msMar'       : 'ÐœÐ°Ñ€',
			'msApr'       : 'Ð�Ð¿Ñ€',
			'msMay'       : 'ÐœÐ°Ð¹',
			'msJun'       : 'Ð˜ÑŽÐ½',
			'msJul'       : 'Ð˜ÑŽÐ»',
			'msAug'       : 'Ð�Ð²Ð³',
			'msSep'       : 'Ð¡ÐµÐ½',
			'msOct'       : 'ÐžÐºÑ‚',
			'msNov'       : 'Ð�Ð¾Ñ�',
			'msDec'       : 'Ð”ÐµÐº',
			'January'     : 'Ð¯Ð½Ð²Ð°Ñ€ÑŒ',
			'February'    : 'Ð¤ÐµÐ²Ñ€Ð°Ð»ÑŒ',
			'March'       : 'ÐœÐ°Ñ€Ñ‚',
			'April'       : 'Ð�Ð¿Ñ€ÐµÐ»ÑŒ',
			'May'         : 'ÐœÐ°Ð¹',
			'June'        : 'Ð˜ÑŽÐ½ÑŒ',
			'July'        : 'Ð˜ÑŽÐ»ÑŒ',
			'August'      : 'Ð�Ð²Ð³ÑƒÑ�Ñ‚',
			'September'   : 'Ð¡ÐµÐ½Ñ‚Ñ�Ð±Ñ€ÑŒ',
			'October'     : 'ÐžÐºÑ‚Ñ�Ð±Ñ€ÑŒ',
			'November'    : 'Ð�Ð¾Ñ�Ð±Ñ€ÑŒ',
			'December'    : 'Ð”ÐµÐºÐ°Ð±Ñ€ÑŒ',
			'Sunday'      : 'Ð’Ð¾Ñ�ÐºÑ€ÐµÑ�ÐµÐ½ÑŒÐµ',
			'Monday'      : 'ÐŸÐ¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸Ðº',
			'Tuesday'     : 'Ð’Ñ‚Ð¾Ñ€Ð½Ð¸Ðº',
			'Wednesday'   : 'Ð¡Ñ€ÐµÐ´Ð°',
			'Thursday'    : 'Ð§ÐµÑ‚Ð²ÐµÑ€Ð³',
			'Friday'      : 'ÐŸÑ�Ñ‚Ð½Ð¸Ñ†Ð°',
			'Saturday'    : 'Ð¡ÑƒÐ±Ð±Ð¾Ñ‚Ð°',
			'Sun'         : 'Ð’Ñ�Ðº',
			'Mon'         : 'ÐŸÐ½Ð´',
			'Tue'         : 'Ð’Ñ‚Ñ€',
			'Wed'         : 'Ð¡Ñ€Ð´',
			'Thu'         : 'Ð§Ñ‚Ð²',
			'Fri'         : 'ÐŸÑ‚Ð½',
			'Sat'         : 'Ð¡Ð±Ñ‚',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ð¿Ð¾ Ð¸Ð¼ÐµÐ½Ð¸',
			'sortkind'          : 'Ð¿Ð¾ Ñ‚Ð¸Ð¿Ñƒ',
			'sortsize'          : 'Ð¿Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ',
			'sortdate'          : 'Ð¿Ð¾ Ð´Ð°Ñ‚Ðµ',
			'sortFoldersFirst'  : 'ÐŸÐ°Ð¿ÐºÐ¸ Ð² Ð½Ð°Ñ‡Ð°Ð»Ðµ',
			'sortperm'          : 'Ð¿Ð¾ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ�Ð¼', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Ð¿Ð¾ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Ð¿Ð¾ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ñƒ',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Ð¿Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ð¢Ð°ÐºÐ¶Ðµ Ð¸ Ð´ÐµÑ€ÐµÐ²Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð²',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Ð�Ð¾Ð²Ñ‹Ð¹Ð¤Ð°Ð¹Ð».txt', // added 10.11.2015
			'untitled folder'   : 'Ð�Ð¾Ð²Ð°Ñ�ÐŸÐ°Ð¿ÐºÐ°',   // added 10.11.2015
			'Archive'           : 'Ð�Ð¾Ð²Ñ‹Ð¹Ð�Ñ€Ñ…Ð¸Ð²',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Ð�Ð¾Ð²Ñ‹Ð¹Ð¤Ð°Ð¹Ð».$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 Ð¤Ð°Ð¹Ð»',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Ð�ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ',
			'confirmRm'       : 'Ð’Ñ‹ ÑƒÐ²ÐµÑ€ÐµÐ½Ñ‹, Ñ‡Ñ‚Ð¾ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹?<br>Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ‚Ð¸Ð¼Ð¾!',
			'confirmRepl'     : 'Ð—Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ð¾Ð²Ñ‹Ð¼?',
			'confirmRest'     : 'Ð—Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñ„Ð°Ð¹Ð»Ð¾Ð¼ Ð¸Ð· ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñ‹?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ð�Ðµ UTF-8<br/>Ð¡ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð² UTF-8?<br/>Ð”Ð°Ð½Ð½Ñ‹Ðµ Ñ�Ñ‚Ð°Ð½ÑƒÑ‚ UTF-8 Ð¿Ñ€Ð¸ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ð¸ Ð¿Ð¾Ñ�Ð»Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ð¸.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÑƒ Ñ„Ð°Ð¹Ð»Ð°. Ð�ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ� ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð² UTF-8 Ð´Ð»Ñ� Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ³Ð¾ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�.<br/>Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÑƒ Ñ„Ð°Ð¹Ð»Ð°.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'ÐŸÑ€Ð¾Ð¸Ð·Ð¾ÑˆÐ»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ�.<br/>Ð•Ñ�Ð»Ð¸ Ð½Ðµ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚Ðµ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ�, Ñ‚Ð¾ Ð¿Ð¾Ñ‚ÐµÑ€Ñ�ÐµÑ‚Ðµ Ð¸Ñ….', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ð’Ñ‹ ÑƒÐ²ÐµÑ€ÐµÐ½Ñ‹, Ñ‡Ñ‚Ð¾ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹ Ð² ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñƒ?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ð’Ñ‹ ÑƒÐ²ÐµÑ€ÐµÐ½Ñ‹, Ñ‡Ñ‚Ð¾ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹ Ð² "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'ÐŸÑ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð´Ð»Ñ� Ð²Ñ�ÐµÑ…',
			'name'            : 'Ð˜Ð¼Ñ�',
			'size'            : 'Ð Ð°Ð·Ð¼ÐµÑ€',
			'perms'           : 'Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿',
			'modify'          : 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½',
			'kind'            : 'Ð¢Ð¸Ð¿',
			'read'            : 'Ñ‡Ñ‚ÐµÐ½Ð¸Ðµ',
			'write'           : 'Ð·Ð°Ð¿Ð¸Ñ�ÑŒ',
			'noaccess'        : 'Ð½ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°',
			'and'             : 'Ð¸',
			'unknown'         : 'Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾',
			'selectall'       : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ð²Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ñ‹',
			'selectfiles'     : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»(Ñ‹)',
			'selectffile'     : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»',
			'selectlfile'     : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»',
			'viewlist'        : 'Ð’ Ð²Ð¸Ð´Ðµ Ñ�Ð¿Ð¸Ñ�ÐºÐ°',
			'viewicons'       : 'Ð’ Ð²Ð¸Ð´Ðµ Ð¸ÐºÐ¾Ð½Ð¾Ðº',
			'viewSmall'       : 'ÐœÐ°Ð»ÐµÐ½ÑŒÐºÐ¸Ðµ Ð¸ÐºÐ¾Ð½ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ð¡Ñ€ÐµÐ´Ð½Ð¸Ðµ Ð¸ÐºÐ¾Ð½ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ð‘Ð¾Ð»ÑŒÑˆÐ¸Ðµ Ð¸ÐºÐ¾Ð½ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'ÐžÑ‡ÐµÐ½ÑŒ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ðµ Ð¸ÐºÐ¾Ð½ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'places'          : 'Ð˜Ð·Ð±Ñ€Ð°Ð½Ð½Ð¾Ðµ',
			'calc'            : 'Ð’Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ',
			'path'            : 'ÐŸÑƒÑ‚ÑŒ',
			'aliasfor'        : 'Ð£ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð°',
			'locked'          : 'Ð—Ð°Ñ‰Ð¸Ñ‚Ð°',
			'dim'             : 'Ð Ð°Ð·Ð¼ÐµÑ€Ñ‹',
			'files'           : 'Ð¤Ð°Ð¹Ð»Ñ‹',
			'folders'         : 'ÐŸÐ°Ð¿ÐºÐ¸',
			'items'           : 'ÐžÐ±ÑŠÐµÐºÑ‚Ñ‹',
			'yes'             : 'Ð´Ð°',
			'no'              : 'Ð½ÐµÑ‚',
			'link'            : 'Ð¡Ñ�Ñ‹Ð»ÐºÐ°',
			'searcresult'     : 'Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ‹ Ð¿Ð¾Ð¸Ñ�ÐºÐ°',
			'selected'        : 'Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð¾',
			'about'           : 'Ðž Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ðµ',
			'shortcuts'       : 'Ð“Ð¾Ñ€Ñ�Ñ‡Ð¸Ðµ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸',
			'help'            : 'ÐŸÐ¾Ð¼Ð¾Ñ‰ÑŒ',
			'webfm'           : 'Ð¤Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ€ Ð´Ð»Ñ� Web',
			'ver'             : 'Ð’ÐµÑ€Ñ�Ð¸Ñ�',
			'protocolver'     : 'Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð°',
			'homepage'        : 'Ð¡Ð°Ð¹Ñ‚ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°',
			'docs'            : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ�',
			'github'          : 'Ð¤Ð¾Ñ€ÐºÐ½Ð¸Ñ‚Ðµ Ð½Ð° GitHub',
			'twitter'         : 'Ð¡Ð»ÐµÐ´Ð¸Ñ‚Ðµ Ð² Twitter',
			'facebook'        : 'ÐŸÑ€Ð¸Ñ�Ð¾ÐµÐ´Ð¸Ð½Ñ�Ð¹Ñ‚ÐµÑ�ÑŒ Ð½Ð° Facebook',
			'team'            : 'ÐšÐ¾Ð¼Ð°Ð½Ð´Ð°',
			'chiefdev'        : 'Ð²ÐµÐ´ÑƒÑ‰Ð¸Ð¹ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº',
			'developer'       : 'Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº',
			'contributor'     : 'ÑƒÑ‡Ð°Ñ�Ñ‚Ð½Ð¸Ðº',
			'maintainer'      : 'Ñ�Ð¾Ð¿Ñ€Ð¾Ð²Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°',
			'translator'      : 'Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸Ðº',
			'icons'           : 'Ð˜ÐºÐ¾Ð½ÐºÐ¸',
			'dontforget'      : 'Ð¸ Ð½Ðµ Ð·Ð°Ð±ÑƒÐ´ÑŒÑ‚Ðµ Ð²Ð·Ñ�Ñ‚ÑŒ Ñ�Ð²Ð¾Ñ‘ Ð¿Ð¾Ð»Ð¾Ñ‚ÐµÐ½Ñ†Ðµ',
			'shortcutsof'     : 'Ð“Ð¾Ñ€Ñ�Ñ‡Ð¸Ðµ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹',
			'dropFiles'       : 'ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ñ�ÑŽÐ´Ð°',
			'or'              : 'Ð¸Ð»Ð¸',
			'selectForUpload' : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹ Ð´Ð»Ñ� Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸',
			'moveFiles'       : 'ÐŸÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'copyFiles'       : 'Ð¡ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹',
			'restoreFiles'    : 'Ð’Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ Ð¸Ð· Ð¸Ð·Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾',
			'aspectRatio'     : 'Ð¡Ð¾Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ð¾Ñ€Ð¾Ð½',
			'scale'           : 'ÐœÐ°Ñ�ÑˆÑ‚Ð°Ð±',
			'width'           : 'Ð¨Ð¸Ñ€Ð¸Ð½Ð°',
			'height'          : 'Ð’Ñ‹Ñ�Ð¾Ñ‚Ð°',
			'resize'          : 'Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€',
			'crop'            : 'ÐžÐ±Ñ€ÐµÐ·Ð°Ñ‚ÑŒ',
			'rotate'          : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ',
			'rotate-cw'       : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð¾Ð² Ð¿Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ð¹ Ñ�Ñ‚Ñ€ÐµÐ»ÐºÐµ',
			'rotate-ccw'      : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð¾Ð² Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ð¹ Ñ�Ñ‚Ñ€ÐµÐ»ÐºÐµ',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ñ�ÐµÑ‚ÐµÐ²Ð¾Ð¹ Ð´Ð¸Ñ�Ðº', // added 18.04.2012
			'protocol'            : 'ÐŸÑ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»', // added 18.04.2012
			'host'                : 'Ð¥Ð¾Ñ�Ñ‚', // added 18.04.2012
			'port'                : 'ÐŸÐ¾Ñ€Ñ‚', // added 18.04.2012
			'user'                : 'ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒ', // added 18.04.2012
			'pass'                : 'ÐŸÐ°Ñ€Ð¾Ð»ÑŒ', // added 18.04.2012
			'confirmUnmount'      : 'Ð’Ñ‹ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ð¸Ð»Ð¸ Ð²Ñ�Ñ‚Ð°Ð²ÑŒÑ‚Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð¸Ð· Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ð¸Ð»Ð¸ Ð²Ñ�Ñ‚Ð°Ð²ÑŒÑ‚Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð¸ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Ñ�ÑŽÐ´Ð°', // from v2.1 added 07.04.2014
			'encoding'        : 'ÐšÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°', // from v2.1 added 19.12.2014
			'locale'          : 'Ð›Ð¾ÐºÐ°Ð»ÑŒ',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ð¦ÐµÐ»ÑŒ: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'ÐŸÐ¾Ð¸Ñ�Ðº Ð¿Ð¾ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ð¾Ð¼Ñƒ MIME Ñ‚Ð¸Ð¿Ñƒ', // from v2.1 added 22.5.2015
			'owner'           : 'Ð’Ð»Ð°Ð´ÐµÐ»ÐµÑ†', // from v2.1 added 20.6.2015
			'group'           : 'Ð“Ñ€ÑƒÐ¿Ð¿Ð°', // from v2.1 added 20.6.2015
			'other'           : 'ÐžÑ�Ñ‚Ð°Ð»ÑŒÐ½Ñ‹Ðµ', // from v2.1 added 20.6.2015
			'execute'         : 'Ð˜Ñ�Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ', // from v2.1 added 20.6.2015
			'perm'            : 'Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ', // from v2.1 added 20.6.2015
			'mode'            : 'Ð ÐµÐ¶Ð¸Ð¼', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ÐŸÐ°Ð¿ÐºÐ° Ð¿ÑƒÑ�Ñ‚Ð°', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ÐŸÐ°Ð¿ÐºÐ° Ð¿ÑƒÑ�Ñ‚Ð°\\A ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ÐŸÐ°Ð¿ÐºÐ° Ð¿ÑƒÑ�Ñ‚Ð°\\A Ð”Ð¾Ð»Ð³Ð¾Ðµ Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ðµ Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ', // from v2.1.6 added 30.12.2015
			'quality'         : 'ÐšÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð¾', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Ð�Ð²Ñ‚Ð¾ Ñ�Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ�',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ÐŸÐµÑ€ÐµÐ´Ð²Ð¸Ð½ÑƒÑ‚ÑŒ Ð²Ð²ÐµÑ€Ñ…',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'ÐŸÐ¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ URL Ñ�Ñ�Ñ‹Ð»ÐºÑƒ', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Ð¿Ð°Ð¿ÐºÐ¸', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'ÐŸÐ¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚ÑŒ Ð°Ð²Ñ‚Ð¾Ð½Ð¾Ð¼Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Ð�Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ð—Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÑ‚Ñ�Ñ�...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'ÐžÑ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ñ„Ð°Ð¹Ð»Ð¾Ð²', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Ð’Ñ‹ Ð¿Ñ‹Ñ‚Ð°ÐµÑ‚ÐµÑ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ $1 Ñ„Ð°Ð¹Ð»(Ð°/Ð¾Ð²). Ð’Ñ‹ ÑƒÐ²ÐµÑ€ÐµÐ½Ñ‹, Ñ‡Ñ‚Ð¾ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¸Ñ… Ð² Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ðµ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Ð�Ð¸Ñ‡ÐµÐ³Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ð­Ñ‚Ð¾ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ñ„Ð°Ð¹Ð».', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ð’Ñ‹ Ð²Ñ‹Ð±Ñ€Ð°Ð»Ð¸ $1 Ñ„Ð°Ð¹Ð»(-Ð¾Ð²).', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Ð£ Ð²Ð°Ñ� $1 Ñ„Ð°Ð¹Ð»(-Ð¾Ð²) Ð² Ð±ÑƒÑ„ÐµÑ€Ðµ Ð¾Ð±Ð¼ÐµÐ½Ð°.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Ð˜Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð½Ñ‹Ð¹ Ð¿Ð¾Ð¸Ñ�Ðº Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð· Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ Ð²Ð¸Ð´Ð°.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Ð’Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ÐšÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð½Ð¾Ðµ Ð¼ÐµÐ½ÑŽ', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ÐšÐ¾Ñ€Ð½Ð¸ Ñ‚Ð¾Ð¼Ð¾Ð²', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ð¡Ð±Ñ€Ð¾Ñ�Ð¸Ñ‚ÑŒ', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Ð¤Ð¾Ð½Ð¾Ð²Ñ‹Ð¹ Ñ†Ð²ÐµÑ‚', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Ð’Ñ‹Ð±Ð¾Ñ€ Ñ†Ð²ÐµÑ‚Ð°', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Ñ�ÐµÑ‚ÐºÐ°', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ÐžÑ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ð�Ð¸Ñ‡ÐµÐ³Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð² Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¼ Ð²Ð¸Ð´Ðµ.\\AÐ�Ð°Ð¶Ð¼Ð¸Ñ‚Ðµ [Enter] Ð´Ð»Ñ� Ñ€Ð°Ð·Ð²ÐµÑ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ� Ñ†ÐµÐ»Ð¸ Ð¿Ð¾Ð¸Ñ�ÐºÐ°.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'ÐŸÐ¾Ð¸Ñ�Ðº Ð¿Ð¾ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð½Ðµ Ð´Ð°Ð» Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð² Ð² Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¼ Ð²Ð¸Ð´Ðµ.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ð°Ñ� Ð¼ÐµÑ‚ÐºÐ°', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Ð¼Ð¸Ð½ÑƒÑ‚ Ð¾Ñ�Ñ‚Ð°Ð»Ð¾Ñ�ÑŒ', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'ÐŸÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'ÐŸÐ¾Ð¸Ñ�Ðº Ð¿Ð¾ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ', // from v2.1.23 added 24.3.2017
			'presets'         : 'ÐŸÑ€ÐµÑ�ÐµÑ‚Ñ‹', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Ð¡Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÐºÐ¾Ñ€Ð·Ð¸Ð½Ñƒ.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ð°Ñ� Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'ÐžÑ‡Ð¸Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¿ÐºÑƒ "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ð�ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ð¿Ð°ÐºÐµ "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ°', // from v2.1.26 added 28.6.2017
			'language'        : 'Ð¯Ð·Ñ‹Ðº', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Ð¡Ð±Ñ€Ð¾Ñ�Ð¸Ñ‚ÑŒ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð³Ð¾ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð°Ð½ÐµÐ»Ð¸', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... ÐµÑ‰Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: $1.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... ÐµÑ‰Ðµ Ñ�Ñ‚Ñ€Ð¾Ðº: $1.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'ÐžÐ±Ñ‰Ð¸Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'ÐŸÑ€Ð¸Ð±Ð»Ð¸Ð·Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Ð¤Ð¾ÐºÑƒÑ� Ð½Ð° Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð° Ð¿Ñ€Ð¸ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ð¸ Ð¼Ñ‹ÑˆÐ¸',  // from v2.1.30 added 2.11.2017
			'select'          : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¿Ñ€Ð¸ Ð²Ñ‹Ð±Ð¾Ñ€Ðµ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ÐžÑ‚ÐºÑ€Ñ‹Ð²Ð°Ñ‚ÑŒ Ð² Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ðµ, Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¼ Ð² Ð¿Ñ€Ð¾ÑˆÐ»Ñ‹Ð¹ Ñ€Ð°Ð·', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Ð’Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ñ� Ð¸Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ ($1 ÑˆÑ‚.) Ð² $2?<br/>Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Ð“Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ðµ', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Ð§Ð¸Ñ�Ð»Ð¾', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ð”Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ð”Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ Ñ�ÑƒÑ„Ñ„Ð¸ÐºÑ�', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº (Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€Ð° Ð² Ð²Ð¸Ð´Ðµ Ñ�Ð¿Ð¸Ñ�ÐºÐ°)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Ð’Ñ�Ðµ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ� Ð±ÑƒÐ´ÑƒÑ‚ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ Ð¾Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ñ‹ Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð²Ñ�Ñ‚ÑƒÐ¿Ñ�Ñ‚ Ð² Ñ�Ð¸Ð»Ñƒ Ð´Ð¾ Ñ‚ÐµÑ… Ð¿Ð¾Ñ€, Ð¿Ð¾ÐºÐ° Ð²Ñ‹ Ð½Ðµ Ñ€Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ñ‚Ð¾Ñ‚ Ñ‚Ð¾Ð¼.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Ð¢Ð¾Ð¼Ð°, Ñ�Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ðµ Ð½Ð° Ñ�Ñ‚Ð¾Ð¼ Ñ‚Ð¾Ð¼Ðµ, Ñ‚Ð°ÐºÐ¶Ðµ Ð±ÑƒÐ´ÑƒÑ‚ Ñ€Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ñ‹. Ð’Ñ‹ Ñ…Ð¾Ñ‚Ð¸Ñ‚Ðµ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ ÐµÐ³Ð¾?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð°', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Ð�Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ñ‹ Ð´Ð»Ñ� Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ� Ñ…ÐµÑˆ-Ñ�ÑƒÐ¼Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð²', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ð² Ð¿Ð°Ð½ÐµÐ»Ð¸ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ð�Ð°Ð¶Ð¼Ð¸Ñ‚Ðµ Ñ�Ð½Ð¾Ð²Ð° Ð´Ð»Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð°.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'ÐŸÐ°Ð½ÐµÐ»ÑŒ', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ� Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Ð”Ð¸Ð°Ð»Ð¾Ð³', // from v2.1.38 added 4.4.2018
			'all'             : 'Ð’Ñ�Ðµ', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ð Ð°Ð·Ð¼ÐµÑ€ Ð¸ÐºÐ¾Ð½Ð¾Ðº (Ð’ Ð²Ð¸Ð´Ðµ Ð¸ÐºÐ¾Ð½Ð¾Ðº)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'ÐžÑ‚ÐºÑ€Ñ‹Ð²Ð°Ñ‚ÑŒ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ Ð² Ñ€Ð°Ð·Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¾Ð¼ Ð²Ð¸Ð´Ðµ', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ð¢Ð°Ðº ÐºÐ°Ðº ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ� Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ API Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾, Ð¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´Ð¸Ñ‚Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸ÑŽ Ð½Ð° Ð²ÐµÐ±-Ñ�Ð°Ð¹Ñ‚Ðµ.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'ÐŸÐ¾Ñ�Ð»Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�ÐºÐ°Ñ‡Ð°Ð½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ ÐµÐ³Ð¾.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½Ð° Ñ�Ð°Ð¹Ñ‚Ðµ $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ð¸', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ÐœÐµÐ½ÐµÐ´Ð¶ÐµÑ€ elFinder Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ�Ð¾ Ñ�Ð»ÐµÐ´ÑƒÑŽÑ‰Ð¸Ð¼Ð¸ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ Ñ�ÐµÑ€Ð²Ð¸Ñ�Ð°Ð¼Ð¸. ÐžÐ·Ð½Ð°ÐºÐ¾Ð¼ÑŒÑ‚ÐµÑ�ÑŒ Ñ� Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ�, Ð¿Ð¾Ð»Ð¸Ñ‚Ð¸ÐºÐ°Ð¼Ð¸ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¸ Ð´Ñ€. Ð¿ÐµÑ€ÐµÐ´ Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ð¡ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ/Ñ�ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Ð¢Ð¸Ð¿Ñ‹ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ð¼ÐµÐ½ÑŽ "Ð�Ð¾Ð²Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Ð¢Ð¸Ð¿ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.41 added 7.8.2018
			'add'             : 'Ð”Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ', // from v2.1.41 added 7.8.2018
			'theme'           : 'Ð¢ÐµÐ¼Ð°', // from v2.1.43 added 19.10.2018
			'default'         : 'ÐŸÐ¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ', // from v2.1.43 added 19.10.2018
			'description'     : 'ÐžÐ¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ', // from v2.1.43 added 19.10.2018
			'website'         : 'Ð’ÐµÐ±-Ñ�Ð°Ð¹Ñ‚', // from v2.1.43 added 19.10.2018
			'author'          : 'Ð�Ð²Ñ‚Ð¾Ñ€', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ�', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð». Ð§Ñ‚Ð¾Ð±Ñ‹ Ð½Ðµ Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ�, Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ… Ð½Ð° Ñ�Ð²Ð¾Ð¹ ÐŸÐš.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Ð”Ð²Ð¾Ð¹Ð½Ð¾Ð¹ ÐºÐ»Ð¸Ðº Ð¿Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ Ð´Ð»Ñ� ÐµÐ³Ð¾ Ð²Ñ‹Ð±Ð¾Ñ€Ð°.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ð¾Ð»Ð½Ð¾Ñ�ÐºÑ€Ð°Ð½Ð½Ñ‹Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹',
			'kindRoot'        : 'ÐšÐ¾Ñ€ÐµÐ½ÑŒ Ñ‚Ð¾Ð¼Ð°', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ÐŸÐ°Ð¿ÐºÐ°',
			'kindSelects'     : 'Ð’Ñ‹Ð±Ð¾Ñ€', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ð¡Ñ�Ñ‹Ð»ÐºÐ°',
			'kindAliasBroken' : 'Ð‘Ð¸Ñ‚Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ°',
			// applications
			'kindApp'         : 'ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPostscript'  : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Postscript',
			'kindMsOffice'    : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Office',
			'kindMsWord'      : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Word',
			'kindMsExcel'     : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Excel',
			'kindMsPP'        : 'ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ� Microsoft Powerpoint',
			'kindOO'          : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Open Office',
			'kindAppFlash'    : 'ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Flash',
			'kindPDF'         : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ PDF',
			'kindTorrent'     : 'Ð¤Ð°Ð¹Ð» Bittorrent',
			'kind7z'          : 'Ð�Ñ€Ñ…Ð¸Ð² 7z',
			'kindTAR'         : 'Ð�Ñ€Ñ…Ð¸Ð² TAR',
			'kindGZIP'        : 'Ð�Ñ€Ñ…Ð¸Ð² GZIP',
			'kindBZIP'        : 'Ð�Ñ€Ñ…Ð¸Ð² BZIP',
			'kindXZ'          : 'Ð�Ñ€Ñ…Ð¸Ð² XZ',
			'kindZIP'         : 'Ð�Ñ€Ñ…Ð¸Ð² ZIP',
			'kindRAR'         : 'Ð�Ñ€Ñ…Ð¸Ð² RAR',
			'kindJAR'         : 'Ð¤Ð°Ð¹Ð» Java JAR',
			'kindTTF'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ True Type',
			'kindOTF'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Open Type',
			'kindRPM'         : 'ÐŸÐ°ÐºÐµÑ‚ RPM',
			// fonts
			'kindFont'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚',
			'kindSFNT'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ SFNT',
			'kindEOT'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Embedded Open Type',
			'kindWOFF'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Web Open Font Format',
			'kindWOFF2'       : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Web Open Font Format 2',
			// texts
			'kindText'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ð¹ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindTextPlain'   : 'ÐŸÑ€Ð¾Ñ�Ñ‚Ð¾Ð¹ Ñ‚ÐµÐºÑ�Ñ‚',
			'kindPHP'         : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº PHP',
			'kindCSS'         : 'Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ð¸Ð»ÐµÐ¹ CSS',
			'kindHTML'        : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ HTML',
			'kindJS'          : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº Javascript',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº C',
			'kindCHeader'     : 'Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» C',
			'kindCPP'         : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº C++',
			'kindCPPHeader'   : 'Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» C++',
			'kindShell'       : 'Ð¡ÐºÑ€Ð¸Ð¿Ñ‚ Unix shell',
			'kindPython'      : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº Python',
			'kindJava'        : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº Java',
			'kindRuby'        : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº Ruby',
			'kindPerl'        : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº Perl',
			'kindSQL'         : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº SQL',
			'kindXML'         : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ XML',
			'kindAWK'         : 'Ð˜Ñ�Ñ…Ð¾Ð´Ð½Ð¸Ðº AWK',
			'kindCSV'         : 'Ð¢ÐµÐºÑ�Ñ‚ Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ�Ð¼Ð¸',
			'kindDOCBOOK'     : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Docbook XML',
			'kindMarkdown'    : 'Ð¢ÐµÐºÑ�Ñ‚ Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindBMP'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ BMP',
			'kindJPEG'        : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ JPEG',
			'kindGIF'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ GIF',
			'kindPNG'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ PNG',
			'kindTIFF'        : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ TIFF',
			'kindTGA'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ TGA',
			'kindPSD'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ Adobe Photoshop',
			'kindXBITMAP'     : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ X bitmap',
			'kindPXM'         : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ Pixelmator',
			// media
			'kindAudio'       : 'Ð�ÑƒÐ´Ð¸Ð¾ Ñ„Ð°Ð¹Ð»',
			'kindAudioMPEG'   : 'Ð�ÑƒÐ´Ð¸Ð¾ MPEG',
			'kindAudioMPEG4'  : 'Ð�ÑƒÐ´Ð¸Ð¾ MPEG-4',
			'kindAudioMIDI'   : 'Ð�ÑƒÐ´Ð¸Ð¾ MIDI',
			'kindAudioOGG'    : 'Ð�ÑƒÐ´Ð¸Ð¾ Ogg Vorbis',
			'kindAudioWAV'    : 'Ð�ÑƒÐ´Ð¸Ð¾ WAV',
			'AudioPlaylist'   : 'ÐŸÐ»ÐµÐ¹Ð»Ð¸Ñ�Ñ‚ MP3',
			'kindVideo'       : 'Ð’Ð¸Ð´ÐµÐ¾ Ñ„Ð°Ð¹Ð»',
			'kindVideoDV'     : 'Ð’Ð¸Ð´ÐµÐ¾ DV',
			'kindVideoMPEG'   : 'Ð’Ð¸Ð´ÐµÐ¾ MPEG',
			'kindVideoMPEG4'  : 'Ð’Ð¸Ð´ÐµÐ¾ MPEG-4',
			'kindVideoAVI'    : 'Ð’Ð¸Ð´ÐµÐ¾ AVI',
			'kindVideoMOV'    : 'Ð’Ð¸Ð´ÐµÐ¾ Quick Time',
			'kindVideoWM'     : 'Ð’Ð¸Ð´ÐµÐ¾ Windows Media',
			'kindVideoFlash'  : 'Ð’Ð¸Ð´ÐµÐ¾ Flash',
			'kindVideoMKV'    : 'Ð’Ð¸Ð´ÐµÐ¾ Matroska',
			'kindVideoOGG'    : 'Ð’Ð¸Ð´ÐµÐ¾ Ogg'
		}
	};
}));

          includes/File_manager/lib/js/i18n/elfinder.sr.js                                                    0000644                 00000037720 15266052752 0015460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                        /**
 * Serbian translation
 * @author MomÄ�ilo m0k1 MiÄ‡anoviÄ‡ <moki.forum@gmail.com>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sr = {
		translator : 'MomÄ�ilo m0k1 MiÄ‡anoviÄ‡ &lt;moki.forum@gmail.com&gt;',
		language   : 'Srpski',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'GreÅ¡ka',
			'errUnknown'           : 'Nepoznata greÅ¡ka.',
			'errUnknownCmd'        : 'Nepoznata komanda.',
			'errJqui'              : 'Neispravna konfiguracija jQuery UI. Komponente koje mogu da se odabiru, povlaÄ�e, izbacuju moraju biti ukljuÄ�ene.',
			'errNode'              : 'elFinder zahteva DOM Element da bude kreiran.',
			'errURL'               : 'Neispravna elFinder konfiguracija! URL opcija nije postavljena.',
			'errAccess'            : 'Pristup odbijen.',
			'errConnect'           : 'Nije moguÄ‡e povezivanje s skriptom.',
			'errAbort'             : 'Veza prekinuta.',
			'errTimeout'           : 'Veza odbaÄ�ena.',
			'errNotFound'          : 'Skripta nije pronaÄ‘ena.',
			'errResponse'          : 'Neispravan odgovor skripte.',
			'errConf'              : 'Neispravna konfiguracija skripte.',
			'errJSON'              : 'PHP JSON modul nije instaliran.',
			'errNoVolumes'         : 'Vidljivi volumeni nisu dostupni.',
			'errCmdParams'         : 'NevaÅ¾eÄ‡i parametri za komandu "$1".',
			'errDataNotJSON'       : 'Podaci nisu JSON.',
			'errDataEmpty'         : 'Podaci nisu prazni.',
			'errCmdReq'            : 'Skripta zahteva komandu.',
			'errOpen'              : 'NemoguÄ‡e otvoriti "$1".',
			'errNotFolder'         : 'Objekat nije folder.',
			'errNotFile'           : 'Objekat nije datoteka.',
			'errRead'              : 'NemoguÄ‡e proÄ�itati "$1".',
			'errWrite'             : 'NemoguÄ‡e pisati u "$1".',
			'errPerm'              : 'Dozvola je odbijena.',
			'errLocked'            : '"$1" je zakljuÄ�an i nemoÅ¾e biti preimenovan, premeÅ¡ten ili obrisan.',
			'errExists'            : 'Datoteka zvana "$1" veÄ‡ postoji.',
			'errInvName'           : 'Neispravno ime datoteke.',
			'errFolderNotFound'    : 'Folder nije pronaÄ‘en.',
			'errFileNotFound'      : 'Datoteka nije pronaÄ‘ena.',
			'errTrgFolderNotFound' : 'Izabrani folder "$1" nije pronaÄ‘en.',
			'errPopup'             : 'PretraÅ¾ivaÄ� spreÄ�ava otvaranje iskaÄ�uÄ‡ih prozora. Da otvorite datoteku ukljuÄ�ite iskaÄ�uÄ‡e prozore u opcijama pretraÅ¾ivaÄ�a.',
			'errMkdir'             : 'NemoguÄ‡e kreirati folder "$1".',
			'errMkfile'            : 'NemoguÄ‡e kreirati datoteku "$1".',
			'errRename'            : 'NemoguÄ‡e preimenovati datoteku "$1".',
			'errCopyFrom'          : 'Kopiranje datoteki sa "$1" nije dozvoljeno.',
			'errCopyTo'            : 'Kopiranje datoteki na "$1" nije dozvoljeno.',
			'errUpload'            : 'Greska pri slanju.',
			'errUploadFile'        : 'NemoguÄ‡e poslati "$1".',
			'errUploadNoFiles'     : 'Nisu pronaÄ‘ene datoteke za slanje.',
			'errUploadTotalSize'   : 'Podaci premaÅ¡uju najveÄ‡u dopuÅ¡tenu veliÄ�inu.',
			'errUploadFileSize'    : 'Datoteka premaÅ¡uje najveÄ‡u dopuÅ¡tenu veliÄ�inu.',
			'errUploadMime'        : 'Vrsta datoteke nije dopuÅ¡tena.',
			'errUploadTransfer'    : '"$1" greÅ¡ka prilikom slanja.',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'NemoÅ¾eÅ¡ saÄ�uvati "$1".',
			'errCopy'              : 'NemoÅ¾eÅ¡ kopirati "$1".',
			'errMove'              : 'NemoÅ¾eÅ¡ premestiti "$1".',
			'errCopyInItself'      : 'NemoÅ¾eÅ¡ kopirati "$1" na istu lokaciju.',
			'errRm'                : 'NemoÅ¾eÅ¡ obrisati "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'NemoguÄ‡e izvaditi datoteke iz "$1".',
			'errArchive'           : 'NemoguÄ‡e kreirati arhivu.',
			'errArcType'           : 'NepodrÅ¾ani tip arhive.',
			'errNoArchive'         : 'Datoteka nije arhiva ili je nepodrÅ¾ani tip arhive.',
			'errCmdNoSupport'      : 'Skripta nepodrÅ¾ava ovu komandu.',
			'errReplByChild'       : 'Folder â€œ$1â€� ne moÅ¾e biti zamenut stavkom koju sadrÅ¾i.',
			'errArcSymlinks'       : 'Zbog bezbednosnih razloga ne moÅ¾ete raspakovati arhive koje sadrÅ¾e simboliÄ�ke veze ili datoteke sa nedozvoljenim imenima.',
			'errArcMaxSize'        : 'Arhiva je dostigla maksimalnu veliÄ�inu.',
			'errResize'            : 'NemoguÄ‡e promeniti veliÄ�inu "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',
			'errResizeRotate'      : 'Unable to rotate image.',
			'errResizeSize'        : 'Invalid image size.',
			'errResizeNoChange'    : 'Image size not changed.',
			'errUsupportType'      : 'nepodrÅ¾an tip datoteke.',
			'errNotUTF8Content'    : 'Datoteka "$1" nije u UTF-8  formati i ne moÅ¾e biti izmenjena.',
			'errNetMount'          : 'Nije moguÄ‡e montirati "$1".',
			'errNetMountNoDriver'  : 'NepodrÅ¾ani protokol.',
			'errNetMountFailed'    : 'Montiranje neuspelo.',
			'errNetMountHostReq'   : 'Host je potreban.',
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Kreiraj arhivu',
			'cmdback'      : 'Nazad',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'Iseci',
			'cmddownload'  : 'Preuzmi',
			'cmdduplicate' : 'Dupliraj',
			'cmdedit'      : 'Izmeni datoteku',
			'cmdextract'   : 'Raspakuj arhivu',
			'cmdforward'   : 'Napred',
			'cmdgetfile'   : 'Izaberi datoteke',
			'cmdhelp'      : 'O ovom softveru',
			'cmdhome'      : 'PoÄ�etna',
			'cmdinfo'      : 'Proveri informacije',
			'cmdmkdir'     : 'Novi folder',
			'cmdmkfile'    : 'Nova datoteka',
			'cmdopen'      : 'Otvori',
			'cmdpaste'     : 'Zalepi',
			'cmdquicklook' : 'Pregledaj',
			'cmdreload'    : 'Povno uÄ�itaj',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'ObriÅ¡i',
			'cmdsearch'    : 'PronaÄ‘i datoteke',
			'cmdup'        : 'Idi na nadreÄ‘eni folder',
			'cmdupload'    : 'PoÅ¡alji datoteke',
			'cmdview'      : 'Pogledaj',
			'cmdresize'    : 'Promeni veliÄ�inu slike',
			'cmdsort'      : 'Sortiraj',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'Zatvori',
			'btnSave'   : 'SaÄ�uvaj',
			'btnRm'     : 'ObriÅ¡i',
			'btnApply'  : 'Potvrdi',
			'btnCancel' : 'Prekini',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Otvaranje foldera',
			'ntffile'     : 'Otvaranje datoteke',
			'ntfreload'   : 'Ponovo uÄ�itavanje sadrÅ¾aja foldera',
			'ntfmkdir'    : 'Kreiranje foldera',
			'ntfmkfile'   : 'Kreiranje datoteke',
			'ntfrm'       : 'Brisanje datoteke',
			'ntfcopy'     : 'Kopiranje datoteke',
			'ntfmove'     : 'PremeÅ¡tanje datoteke',
			'ntfprepare'  : 'Priprema za kopiranje dateoteke',
			'ntfrename'   : 'Primenovanje datoteke',
			'ntfupload'   : 'Slanje datoteke',
			'ntfdownload' : 'Preuzimanje datoteke',
			'ntfsave'     : 'ÄŒuvanje datoteke',
			'ntfarchive'  : 'Kreiranje arhive',
			'ntfextract'  : 'Izdvajanje datoteka iz arhive',
			'ntfsearch'   : 'Pretraga datoteka',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Radim neÅ¡to >_<',
			'ntfloadimg'  : 'UÄ�itavanje slike',
			'ntfnetmount' : 'Montiranje mreÅ¾nog volumena', 
			'ntfdim'      : 'Acquiring image dimension',
			
			/************************************ dates **********************************/
			'dateUnknown' : 'nepoznat',
			'Today'       : 'Danas',
			'Yesterday'   : 'Sutra',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Avg',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Mart',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Jun',
			'July'        : 'Jul',
			'August'      : 'Avgust',
			'September'   : 'Septembar',
			'October'     : 'Oktobar',
			'November'    : 'Novembar',
			'December'    : 'Decembar',
			'Sunday'      : 'Nedelja', 
			'Monday'      : 'Ponedeljak', 
			'Tuesday'     : 'Utorak', 
			'Wednesday'   : 'Sreda', 
			'Thursday'    : 'ÄŒetvrtak', 
			'Friday'      : 'Petak', 
			'Saturday'    : 'Subota',
			'Sun'         : 'Ned', 
			'Mon'         : 'Pon', 
			'Tue'         : 'Uto', 
			'Wed'         : 'Sre', 
			'Thu'         : 'ÄŒet', 
			'Fri'         : 'Pet', 
			'Sat'         : 'Sub',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu', 
			'sortkind'          : 'po vrsti', 
			'sortsize'          : 'po veliÄ�ini',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Prvo folderi',
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Potrebna potvrda',
			'confirmRm'       : 'Da li ste sigurni da Å¾elite da obriÅ¡ete datoteke?<br/>Ovo se ne moÅ¾e poniÅ¡titi!',
			'confirmRepl'     : 'Zameniti stare datoteke sa novima?',
			'apllyAll'        : 'Potvrdi za sve',
			'name'            : 'Ime',
			'size'            : 'VeliÄ�ina',
			'perms'           : 'Dozvole',
			'modify'          : 'Izmenjeno',
			'kind'            : 'Vrsta',
			'read'            : 'Ä�itanje',
			'write'           : 'pisanje',
			'noaccess'        : 'bez pristupa',
			'and'             : 'i',
			'unknown'         : 'nepoznato',
			'selectall'       : 'Izaberi sve datoteke',
			'selectfiles'     : 'Izaberi datoteku(e)',
			'selectffile'     : 'Izaberi prvu datoteku',
			'selectlfile'     : 'Izaberi poslednju datoteku',
			'viewlist'        : 'Popisni prikaz',
			'viewicons'       : 'Pregled ikona',
			'places'          : 'Mesta',
			'calc'            : 'IzraÄ�unaj', 
			'path'            : 'Putanja',
			'aliasfor'        : 'Nadimak za',
			'locked'          : 'ZakljuÄ�ano',
			'dim'             : 'Dimenzije',
			'files'           : 'Datoteke',
			'folders'         : 'Folderi',
			'items'           : 'Stavke',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'Veza',
			'searcresult'     : 'Rezultati pretrage',  
			'selected'        : 'odabrane stavke',
			'about'           : 'O softveru',
			'shortcuts'       : 'PreÄ�ice',
			'help'            : 'PomoÄ‡',
			'webfm'           : 'Web menaÄ‘er datoteka',
			'ver'             : 'Verzija',
			'protocolver'     : 'verzija protokla',
			'homepage'        : 'Adresa projekta',
			'docs'            : 'Dokumentacija',
			'github'          : 'Forkuj nas na Github',
			'twitter'         : 'Prati nas na twitter',
			'facebook'        : 'PridruÅ¾i nam se na facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'glavni programer',
			'developer'       : 'programer',
			'contributor'     : 'pomoÄ‡nik',
			'maintainer'      : 'odrÅ¾avatelj',
			'translator'      : 'prevodilac',
			'icons'           : 'Ikone',
			'dontforget'      : 'i ne zaboravite da ponesete peÅ¡kir',
			'shortcutsof'     : 'PreÄ�ice iskljuÄ�ene',
			'dropFiles'       : 'Prevucite datoteke ovde',
			'or'              : 'ili',
			'selectForUpload' : 'Odaberite datoteke za slanje',
			'moveFiles'       : 'Premesti datoteke',
			'copyFiles'       : 'Kopiraj datoteke',
			'rmFromPlaces'    : 'Ukloni iz mesta',
			'aspectRatio'     : 'Omer Å¡irine i visine',
			'scale'           : 'Razmera',
			'width'           : 'Å irina',
			'height'          : 'Visina',
			'resize'          : 'Promeni veliÄ�inu',
			'crop'            : 'Iseci',
			'rotate'          : 'Rotiraj',
			'rotate-cw'       : 'Rotiraj 90 stepeni CW',
			'rotate-ccw'      : 'Rotiraj 90 stepeni CCW',
			'degree'          : 'Stepeni',
			'netMountDialogTitle' : 'Montiraj mreÅ¾ni volumen', 
			'protocol'            : 'Protokol', 
			'host'                : 'Host', 
			'port'                : 'Port', 
			'user'                : 'KorisniÄ�ko Ime', 
			'pass'                : 'Lozinka', 

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Nepoznat',
			'kindFolder'      : 'Folder',
			'kindAlias'       : 'Nadimak',
			'kindAliasBroken' : 'Neispravan nadimak',
			// applications
			'kindApp'         : 'Aplikacija',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash aplikacija',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent datoteka',
			'kind7z'          : '7z arhiva',
			'kindTAR'         : 'TAR arhiva',
			'kindGZIP'        : 'GZIP arhiva',
			'kindBZIP'        : 'BZIP arhiva',
			'kindXZ'          : 'XZ arhiva',
			'kindZIP'         : 'ZIP arhiva',
			'kindRAR'         : 'RAR arhiva',
			'kindJAR'         : 'Java JAR datoteka',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM paket',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Teokstualni dokument',
			'kindTextPlain'   : 'ÄŒist tekst',
			'kindPHP'         : 'PHP kod',
			'kindCSS'         : 'CSS kod',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript kod',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C kod',
			'kindCHeader'     : 'C header kod',
			'kindCPP'         : 'C++ kod',
			'kindCPPHeader'   : 'C++ header kod',
			'kindShell'       : 'Unix shell skripta',
			'kindPython'      : 'Python kod',
			'kindJava'        : 'Java kod',
			'kindRuby'        : 'Ruby kod',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL kod',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK kod',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			// images
			'kindImage'       : 'Slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Zvuk',
			'kindAudioMPEG'   : 'MPEG zvuk',
			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
			'kindAudioMIDI'   : 'MIDI zvuk',
			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
			'kindAudioWAV'    : 'WAV zvuk',
			'AudioPlaylist'   : 'MP3 lista',
			'kindVideo'       : 'Video',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));
                                                includes/File_manager/lib/js/i18n/elfinder.sl.js                                                    0000644                 00000040054 15266052753 0015445 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Slovenian translation
 * @author Damjan Rems <d_rems at yahoo.com>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sl = {
		translator : 'Damjan Rems &lt;d_rems at yahoo.com&gt;',
		language   : 'SlovenÅ¡Ä�ina',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'Napaka',
			'errUnknown'           : 'Neznana napaka.',
			'errUnknownCmd'        : 'Neznan ukaz.',
			'errJqui'              : 'NapaÄ�na jQuery UI nastavitev. Selectable, draggable in droppable dodatki morajo biti vkljuÄ�eni.',
			'errNode'              : 'elFinder potrebuje "DOM Element".',
			'errURL'               : 'NapaÄ�na nastavitev elFinder-ja! Manjka URL nastavitev.',
			'errAccess'            : 'Dostop zavrnjen.',
			'errConnect'           : 'Ne morem se prikljuÄ�iti na "backend".',
			'errAbort'             : 'Povezava prekinjena (aborted).',
			'errTimeout'           : 'Povezava potekla (timeout).',
			'errNotFound'          : 'Nisem naÅ¡el "backend-a".',
			'errResponse'          : 'NapaÄ�ni "backend" odgovor.',
			'errConf'              : 'NapaÄ�na "backend" nastavitev.',
			'errJSON'              : 'JSON modul ni instaliran.',
			'errNoVolumes'         : 'Readable volumes not available.',
			'errCmdParams'         : 'NapaÄ�ni parametri za ukaz "$1".',
			'errDataNotJSON'       : 'Podatki niso v JSON obliki.',
			'errDataEmpty'         : 'Ni podatkov oz. so prazni.',
			'errCmdReq'            : '"Backend" zahtevek potrebuje ime ukaza.',
			'errOpen'              : '"$1" ni moÅ¾no odpreti.',
			'errNotFolder'         : 'Objekt ni mapa.',
			'errNotFile'           : 'Objekt ni datoteka.',
			'errRead'              : '"$1" ni moÅ¾no brati.',
			'errWrite'             : 'Ne morem pisati v "$1".',
			'errPerm'              : 'Dostop zavrnjen.',
			'errLocked'            : '"$1" je zaklenjen(a) in je ni moÅ¾no preimenovati, premakniti ali izbrisati.',
			'errExists'            : 'Datoteka z imenom "$1" Å¾e obstaja.',
			'errInvName'           : 'NapaÄ�no ime datoteke.',
			'errFolderNotFound'    : 'Mape nisem naÅ¡el.',
			'errFileNotFound'      : 'Datoteke nisem naÅ¡el.',
			'errTrgFolderNotFound' : 'Ciljna mapa "$1" ne obstaja.',
			'errPopup'             : 'Brskalnik je prepreÄ�il prikaz (popup) okna. Za vpogled datoteke omogoÄ�ite nastavitev v vaÅ¡em brskalniku.',
			'errMkdir'             : 'Ni moÅ¾no dodati mape "$1".',
			'errMkfile'            : 'Ni moÅ¾no dodati datoteke "$1".',
			'errRename'            : 'Ni moÅ¾no preimenovati "$1".',
			'errCopyFrom'          : 'Kopiranje datotek iz "$1" ni dovoljeno.',
			'errCopyTo'            : 'Kopiranje datotek na "$1" ni dovoljeno.',
			'errUpload'            : 'Napaka pri prenosu.',
			'errUploadFile'        : '"$1" ni moÅ¾no naloÅ¾iti (upload).',
			'errUploadNoFiles'     : 'Ni datotek za nalaganje (upload).',
			'errUploadTotalSize'   : 'Podatki presegajo najveÄ�jo dovoljeno velikost.',
			'errUploadFileSize'    : 'Datoteka presega najveÄ�jo dovoljeno velikost.',
			'errUploadMime'        : 'Datoteke s to konÄ�nico niso dovoljene.',
			'errUploadTransfer'    : '"$1" napaka pri prenosu.',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : '"$1" ni moÅ¾no shraniti.',
			'errCopy'              : '"$1" ni moÅ¾no kopirati.',
			'errMove'              : '"$1" ni moÅ¾no premakniti.',
			'errCopyInItself'      : '"$1" ni moÅ¾no kopirati samo vase.',
			'errRm'                : '"$1" ni moÅ¾no izbrisati.',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Datotek iz "$1" ni moÅ¾no odpakirati.',
			'errArchive'           : 'Napaka pri delanju arhiva.',
			'errArcType'           : 'Nepodprta vrsta arhiva.',
			'errNoArchive'         : 'Datoteka ni arhiv ali vrsta arhiva ni podprta.',
			'errCmdNoSupport'      : '"Backend" ne podpira tega ukaza.',
			'errReplByChild'       : 'Mape â€œ$1â€� ni moÅ¾no zamenjati z vsebino mape.',
			'errArcSymlinks'       : 'Zaradi varnostnih razlogov arhiva ki vsebuje "symlinks" ni moÅ¾no odpakirati.',
			'errArcMaxSize'        : 'Datoteke v arhivu presegajo najveÄ�jo dovoljeno velikost.',
			'errResize'            : '"$1" ni moÅ¾no razÅ¡iriti.',
			'errResizeDegree'      : 'Invalid rotate degree.',
			'errResizeRotate'      : 'Unable to rotate image.',
			'errResizeSize'        : 'Invalid image size.',
			'errResizeNoChange'    : 'Image size not changed.',
			'errUsupportType'      : 'Nepodprta vrsta datoteke.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			
			/******************************* commands names ********************************/
			'cmdarchive'   : 'Naredi arhiv',
			'cmdback'      : 'Nazaj',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'IzreÅ¾i',
			'cmddownload'  : 'Poberi (download)',
			'cmdduplicate' : 'Podvoji',
			'cmdedit'      : 'Uredi datoteko',
			'cmdextract'   : 'Odpakiraj datoteke iz arhiva',
			'cmdforward'   : 'Naprej',
			'cmdgetfile'   : 'Izberi datoteke',
			'cmdhelp'      : 'VeÄ� o',
			'cmdhome'      : 'Domov',
			'cmdinfo'      : 'Lastnosti',
			'cmdmkdir'     : 'Nova mapa',
			'cmdmkfile'    : 'Nova datoteka',
			'cmdopen'      : 'Odpri',
			'cmdpaste'     : 'Prilepi',
			'cmdquicklook' : 'Hitri ogled',
			'cmdreload'    : 'OsveÅ¾i',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'IzbriÅ¡i',
			'cmdsearch'    : 'PoiÅ¡Ä�i datoteke',
			'cmdup'        : 'Mapa nazaj',
			'cmdupload'    : 'NaloÅ¾i (upload)',
			'cmdview'      : 'Ogled',
			'cmdresize'    : 'PoveÄ�aj (pomanjÅ¡aj) sliko',
			'cmdsort'      : 'Razvrsti',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'Zapri',
			'btnSave'   : 'Shrani',
			'btnRm'     : 'IzbriÅ¡i',
			'btnApply'  : 'Uporabi',
			'btnCancel' : 'PrekliÄ�i',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Odpri mapo',
			'ntffile'     : 'Odpri datoteko',
			'ntfreload'   : 'OsveÅ¾i vsebino mape',
			'ntfmkdir'    : 'Ustvarjam mapo',
			'ntfmkfile'   : 'Ustvarjam datoteke',
			'ntfrm'       : 'BriÅ¡em datoteke',
			'ntfcopy'     : 'Kopiram datoteke',
			'ntfmove'     : 'Premikam datoteke',
			'ntfprepare'  : 'Pripravljam se na kopiranje datotek',
			'ntfrename'   : 'Preimenujem datoteke',
			'ntfupload'   : 'Nalagam (upload) datoteke',
			'ntfdownload' : 'Pobiram (download) datoteke',
			'ntfsave'     : 'Shranjujem datoteke',
			'ntfarchive'  : 'Ustvarjam arhiv',
			'ntfextract'  : 'Razpakiram datoteke iz arhiva',
			'ntfsearch'   : 'IÅ¡Ä�em datoteke',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'PoÄ�akaj delam >_<',
			'ntfloadimg'  : 'Nalagam sliko',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			
			/************************************ dates **********************************/
			'dateUnknown' : 'neznan',
			'Today'       : 'Danes',
			'Yesterday'   : 'VÄ�eraj',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Avg',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Marec',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Junij',
			'July'        : 'Julij',
			'August'      : 'Avgust',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Nedelja', 
			'Monday'      : 'Ponedeljek', 
			'Tuesday'     : 'Torek', 
			'Wednesday'   : 'Sreda', 
			'Thursday'    : 'ÄŒetrtek', 
			'Friday'      : 'Petek', 
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ned', 
			'Mon'         : 'Pon', 
			'Tue'         : 'Tor', 
			'Wed'         : 'Sre', 
			'Thu'         : 'ÄŒet', 
			'Fri'         : 'Pet', 
			'Sat'         : 'Sob',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu', 
			'sortkind'          : 'po vrsti', 
			'sortsize'          : 'po velikosti',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Folders first',
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Zahtevana je potrditev',
			'confirmRm'       : 'Ste prepriÄ�ani, da Å¾elite izbrisati datoteko?<br/>POZOR! Tega ukaza ni moÅ¾no preklicati!',
			'confirmRepl'     : 'Zamenjam staro datoteko z novo?',
			'apllyAll'        : 'Uporabi pri vseh',
			'name'            : 'Ime',
			'size'            : 'Velikost',
			'perms'           : 'Dovoljenja',
			'modify'          : 'Spremenjeno',
			'kind'            : 'Vrsta',
			'read'            : 'beri',
			'write'           : 'piÅ¡i',
			'noaccess'        : 'ni dostopa',
			'and'             : 'in',
			'unknown'         : 'neznan',
			'selectall'       : 'Izberi vse datoteke',
			'selectfiles'     : 'Izberi datotek(o)e',
			'selectffile'     : 'Izberi prvo datoteko',
			'selectlfile'     : 'Izberi zadnjo datoteko',
			'viewlist'        : 'Seznam',
			'viewicons'       : 'Ikone',
			'places'          : 'Mesta (places)',
			'calc'            : 'IzraÄ�un', 
			'path'            : 'Pot do',
			'aliasfor'        : 'Sopomenka (alias) za',
			'locked'          : 'Zaklenjeno',
			'dim'             : 'Dimenzije',
			'files'           : 'Datoteke',
			'folders'         : 'Mape',
			'items'           : 'Predmeti',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'Povezava',
			'searcresult'     : 'Rezultati iskanja',  
			'selected'        : 'izbrani predmeti',
			'about'           : 'VeÄ� o',
			'shortcuts'       : 'BliÅ¾njice',
			'help'            : 'PomoÄ�',
			'webfm'           : 'Spletni upravitelj datotek',
			'ver'             : 'Verzija',
			'protocolver'     : 'verzija protokola',
			'homepage'        : 'DomaÄ�a stran',
			'docs'            : 'Dokumentacija',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Sledi na twitterju',
			'facebook'        : 'PridruÅ¾i se nam na facebook-u',
			'team'            : 'Tim',
			'chiefdev'        : 'Glavni razvijalec',
			'developer'       : 'razvijalec',
			'contributor'     : 'contributor',
			'maintainer'      : 'vzdrÅ¾evalec',
			'translator'      : 'prevajalec',
			'icons'           : 'Ikone',
			'dontforget'      : 'In ne pozabi na brisaÄ�o',
			'shortcutsof'     : 'BliÅ¾njica onemogoÄ�ena',
			'dropFiles'       : 'Datoteke spusti tukaj',
			'or'              : 'ali',
			'selectForUpload' : 'Izberi datoteke za nalaganje',
			'moveFiles'       : 'Premakni datoteke',
			'copyFiles'       : 'Kopiraj datoteke',
			'rmFromPlaces'    : 'IzbriÅ¡i iz mesta (places)',
			'aspectRatio'     : 'Razmerje slike',
			'scale'           : 'RazÅ¡iri',
			'width'           : 'Å irina',
			'height'          : 'ViÅ¡ina',
			'resize'          : 'PoveÄ�aj',
			'crop'            : 'ObreÅ¾i',
			'rotate'          : 'Zavrti',
			'rotate-cw'       : 'Zavrti 90 st. v smeri ure',
			'rotate-ccw'      : 'Zavrti 90 st. v obratni smeri ure',
			'degree'          : 'Stopnja',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			
			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Neznan',
			'kindFolder'      : 'Mapa',
			'kindAlias'       : 'Sopomenka (alias)',
			'kindAliasBroken' : 'NedelujoÄ�a sopomenka (alias)',
			// applications
			'kindApp'         : 'Program',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint predstavitev',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash program',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent datoteka',
			'kind7z'          : '7z arhiv',
			'kindTAR'         : 'TAR arhiv',
			'kindGZIP'        : 'GZIP arhiv',
			'kindBZIP'        : 'BZIP arhiv',
			'kindXZ'          : 'XZ arhiv',
			'kindZIP'         : 'ZIP arhiv',
			'kindRAR'         : 'RAR arhiv',
			'kindJAR'         : 'Java JAR datoteka',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM paket',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Tekst dokument',
			'kindTextPlain'   : 'Samo tekst',
			'kindPHP'         : 'PHP koda',
			'kindCSS'         : 'Cascading style sheet (CSS)',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript koda',
			'kindRTF'         : 'Rich Text Format (RTF)',
			'kindC'           : 'C koda',
			'kindCHeader'     : 'C header koda',
			'kindCPP'         : 'C++ koda',
			'kindCPPHeader'   : 'C++ header koda',
			'kindShell'       : 'Unix shell skripta',
			'kindPython'      : 'Python kdoa',
			'kindJava'        : 'Java koda',
			'kindRuby'        : 'Ruby koda',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL koda',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK koda',
			'kindCSV'         : 'Besedilo loÄ�eno z vejico (CSV)',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			// images
			'kindImage'       : 'Slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Avdio medija',
			'kindAudioMPEG'   : 'MPEG zvok',
			'kindAudioMPEG4'  : 'MPEG-4 zvok',
			'kindAudioMIDI'   : 'MIDI zvok',
			'kindAudioOGG'    : 'Ogg Vorbis zvok',
			'kindAudioWAV'    : 'WAV zvok',
			'AudioPlaylist'   : 'MP3 seznam',
			'kindVideo'       : 'Video medija',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/js/i18n/elfinder.el.js                                                    0000644                 00000052734 15266052754 0015440 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Greek translation
 * @author yawd <info@yawd.eu>, Romanos
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.el = {
		translator : 'yawd &lt;ingo@yawd.eu&gt;',
		language   : 'Î•Î»Î»Î·Î½Î¹ÎºÎ¬',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'Î Ï�ÏŒÎ²Î»Î·Î¼Î±',
			'errUnknown'           : 'Î†Î³Î½Ï‰ÏƒÏ„Î¿ Ï€Ï�ÏŒÎ²Î»Î·Î¼Î±.',
			'errUnknownCmd'        : 'Î†Î³Î½Ï‰ÏƒÏ„Î· ÎµÎ½Ï„Î¿Î»Î®.',
			'errJqui'              : 'ÎœÎ· Î­Î³ÎºÏ…Ï�Î· Ï�Ï�Î¸Î¼Î¹ÏƒÎ· Ï„Î¿Ï… jQuery UI. Î¤Î± components "selectable", "draggable" ÎºÎ±Î¹ "droppable" Ï€Ï�Î­Ï€ÎµÎ¹ Î½Î± Ï€ÎµÏ�Î¹Î»Î·Ï†Î¿Ï�Î½.',
			'errNode'              : 'Ï„Î¿ elFinder Ï‡Ï�ÎµÎ¹Î¬Î¶ÎµÏ„Î±Î¹ Î½Î± Î­Ï‡ÎµÎ¹ Î´Î·Î¼Î¹Î¿Ï…Ï�Î³Î·Î¸ÎµÎ¯ Ï„Î¿ DOM Element.',
			'errURL'               : 'ÎœÎ· Î­Î³ÎºÏ…Ï�ÎµÏ‚ Ï�Ï…Î¸Î¼Î¯ÏƒÎµÎ¹Ï‚ Î³Î¹Î± Ï„Î¿ elFinder! Î· ÎµÏ€Î¹Î»Î¿Î³Î® URL Î´ÎµÎ½ Î­Ï‡ÎµÎ¹ Î¿Ï�Î¹ÏƒÏ„ÎµÎ¯.',
			'errAccess'            : 'Î‘Ï€Î±Î³Î¿Ï�ÎµÏ�ÎµÏ„Î±Î¹ Î· Ï€Ï�ÏŒÏƒÎ²Î±ÏƒÎ·.',
			'errConnect'           : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· ÏƒÏ�Î½Î´ÎµÏƒÎ· Î¼Îµ Ï„Î¿ backend.',
			'errAbort'             : 'Î— ÏƒÏ�Î½Î´ÎµÏƒÎ· ÎµÎ³ÎºÎ±Ï„Î±Î»ÎµÎ¯Ï†Î¸Î·ÎºÎµ.',
			'errTimeout'           : 'Î— ÏƒÏ�Î½Î´ÎµÏƒÎ· Î­Î»Î·Î¾Îµ.',
			'errNotFound'          : 'Î”Îµ Î²Ï�Î­Î¸Î·ÎºÎµ Ï„Î¿ backend.',
			'errResponse'          : 'ÎœÎ® Î­Î³ÎºÏ…Ï�Î· Î±Ï€Î¬Î½Ï„Î·ÏƒÎ· Î±Ï€ÏŒ Ï„Î¿ backend.',
			'errConf'              : 'ÎœÎ· Î­Î³ÎºÏ…Ï�ÎµÏ‚ Ï�Ï…Î¸Î¼Î¯ÏƒÎµÎ¹Ï‚ Î³Î¹Î± Ï„Î¿ backend.',
			'errJSON'              : 'Î¤Î¿ PHP JSON module Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ ÎµÎ³ÎºÎ±Ï„ÎµÏƒÏ„Î·Î¼Î­Î½Î¿.',
			'errNoVolumes'         : 'Î”ÎµÎ½ Î²Ï�Î­Î¸Î·ÎºÎ±Î½ Î±Î½Î±Î³Î½ÏŽÏƒÎ¹Î¼Î± volumes.',
			'errCmdParams'         : 'ÎœÎ· Î­Î³ÎºÏ…Ï�ÎµÏ‚ Ï€Î±Ï�Î¬Î¼ÎµÏ„Ï�Î¿Î¹ Î³Î¹Î± Ï„Î·Î½ ÎµÎ½Ï„Î¿Î»Î® "$1".',
			'errDataNotJSON'       : 'Î¤Î± Î´ÎµÎ´Î¿Î¼Î­Î½Î± Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ JSON.',
			'errDataEmpty'         : 'Î¤Î± Î´ÎµÎ´Î¿Î¼Î­Î½Î± ÎµÎ¯Î½Î±Î¹ Î¬Î´ÎµÎ¹Î±.',
			'errCmdReq'            : 'Î¤Î¿ Backend request Ï‡Ï�ÎµÎ¹Î¬Î¶ÎµÏ„Î±Î¹ ÏŒÎ½Î¿Î¼Î± ÎµÎ½Ï„Î¿Î»Î®Ï‚.',
			'errOpen'              : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„ÏŒ Î½Î± Î±Î½Î¿Î¯Î¾ÎµÎ¹ Ï„Î¿ "$1".',
			'errNotFolder'         : 'Î¤Î¿ Î±Î½Ï„Î¹ÎºÎµÎ¯Î¼ÎµÎ½Î¿ Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ Ï†Î¬ÎºÎµÎ»Î¿Ï‚.',
			'errNotFile'           : 'Î¤Î¿ Î±Î½Ï„Î¹ÎºÎµÎ¯Î¼ÎµÎ½Î¿ Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ Î±Ï�Ï‡ÎµÎ¯Î¿.',
			'errRead'              : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„ÏŒÎ½ Î½Î± Î´Î¹Î±Î²Î±ÏƒÏ„ÎµÎ¯ Ï„Î¿ "$1".',
			'errWrite'             : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· ÎµÎ³Î³Ï�Î±Ï†Î® ÏƒÏ„Î¿ "$1".',
			'errPerm'              : 'Î‘Ï€Î±Î³Î¿Ï�ÎµÏ�ÎµÏ„Î±Î¹ Î· Ï€Ï�ÏŒÏƒÎ²Î±ÏƒÎ·.',
			'errLocked'            : '"$1" ÎµÎ¯Î½Î±Î¹ ÎºÎ»ÎµÎ¹Î´Ï‰Î¼Î­Î½Î¿ ÎºÎ±Î¹ Î´ÎµÎ½ Î¼Ï€Î¿Ï�ÎµÎ¯ Î½Î± Î¼ÎµÏ„Î¿Î½Î¿Î¼Î±ÏƒÏ„ÎµÎ¯, Î¼ÎµÏ„Î±ÎºÎ¹Î½Î·Î¸ÎµÎ¯ Î® Î´Î¹Î±Î³Ï�Î±Ï†ÎµÎ¯.',
			'errExists'            : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ Î¼Îµ ÏŒÎ½Î¿Î¼Î± "$1" Ï…Ï€Î¬Ï�Ï‡ÎµÎ¹ Î®Î´Î·.',
			'errInvName'           : 'ÎœÎ· Î­Î³ÎºÏ…Ï�Î¿ ÏŒÎ½Î¿Î¼Î± Î±Ï�Ï‡ÎµÎ¯Î¿Ï….',
			'errFolderNotFound'    : 'ÎŸ Ï†Î¬ÎºÎµÎ»Î¿Ï‚ Î´Îµ Î²Ï�Î­Î¸Î·ÎºÎµ.',
			'errFileNotFound'      : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ Î´Îµ Î²Ï�Î­Î¸Î·ÎºÎµ.',
			'errTrgFolderNotFound' : 'ÎŸ Ï†Î¬ÎºÎµÎ»Î¿Ï‚ "$1" Î´Îµ Î²Ï�Î­Î¸Î·ÎºÎµ.',
			'errPopup'             : 'Î¤Î¿ Ï€Ï�ÏŒÎ³Ï�Î±Î¼Î¼Î± Ï€Î»Î®Î³Î·ÏƒÎ·Ï‚ ÎµÎ¼Ï€ÏŒÎ´Î¹ÏƒÎµ Ï„Î¿ Î¬Î½Î¿Î¹Î³Î¼Î± Î±Î½Î±Î´Ï…ÏŒÎ¼ÎµÎ½Î¿Ï… Ï€Î±Ï�Î±Î¸Ï�Ï�Î¿Ï…. Î“Î¹Î± Î±Î½Î¿Î¯Î¾ÎµÏ„Îµ Ï„Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ ÎµÎ½ÎµÏ�Î³Î¿Ï€Î¿Î¹Î®ÏƒÏ„Îµ Ï„Î¿ ÏƒÏ„Î¹Ï‚ ÎµÏ€Î¹Î»Î¿Î³Î­Ï‚ Ï„Î¿Ï… Ï€ÎµÏ�Î¹Î·Î³Î·Ï„Î®.',
			'errMkdir'             : 'Î— Î´Ï…Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Ï„Î¿Ï… Ï†Î±ÎºÎ­Î»Î¿Ï… "$1" Î´ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î®.',
			'errMkfile'            : 'Î— Î´Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Ï„Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï… "$1" Î´ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î®.',
			'errRename'            : 'Î— Î¼ÎµÏ„Î¿Î½Î¿Î¼Î±ÏƒÎ¯Î± Ï„Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï… "$1" Î´ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î®.',
			'errCopyFrom'          : 'Î”ÎµÎ½ ÎµÏ€Î¹Ï„Ï�Î­Ï€ÎµÏ„Î±Î¹ Î· Î±Î½Ï„Î¹Î³Ï�Î±Ï†Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î±Ï€ÏŒ Ï„Î¿ volume "$1".',
			'errCopyTo'            : 'Î”ÎµÎ½ ÎµÏ€Î¹Ï„Ï�Î­Ï€ÎµÏ„Î±Î¹ Î· Î±Î½Ï„Î¹Î³Ï�Î±Ï†Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ ÏƒÏ„Î¿ volume "$1".',
			'errUpload'            : 'Î Ï�ÏŒÎ²Î»Î·Î¼Î± ÎºÎ±Ï„Î¬ Ï„Î¿ upload.',
			'errUploadFile'        : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ "$1" Î´ÎµÎ½ Î¼Ï€ÏŒÏ�ÎµÏƒÎµ Î½Î± Î³Î¯Î½ÎµÎ¹ upload.',
			'errUploadNoFiles'     : 'Î”ÎµÎ½ Î²Ï�Î­Î¸Î·ÎºÎ±Î½ Î±Ï�Ï‡ÎµÎ¯Î± Î³Î¹Î± upload.',
			'errUploadTotalSize'   : 'Î¤Î± Î´ÎµÎ´Î¿Î¼Î­Î½Î± Ï…Ï€ÎµÏ�Î²Î±Î¯Î½Î¿Ï…Î½ Ï„Î¿ ÎµÏ€Î¹Ï„Ï�ÎµÏ€ÏŒÎ¼ÎµÎ½Î¿ Î¼Î­Î³Î¹ÏƒÏ„Î¿ Î¼Î­Î³ÎµÎ¸Î¿Ï‚ Î´ÎµÎ´Î¿Î¼Î­Î½Ï‰Î½.',
			'errUploadFileSize'    : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ Ï…Ï€ÎµÏ�Î²Î±Î¯Î½ÎµÎ¹ Ï„Î¿ ÎµÏ€Î¹Ï„Ï�ÎµÏ€ÏŒÎ¼ÎµÎ½Î¿ Î¼Î­Î³Î¹ÏƒÏ„Î¿ Î¼Î­Î³ÎµÎ¸Î¿Ï‚.',
			'errUploadMime'        : 'ÎŸ Ï„Ï�Ï€Î¿Ï‚ Î±Ï�Ï‡ÎµÎ¯Î¿Ï… Î´ÎµÎ½ ÎµÏ€Î¹Ï„Ï�Î­Ï€ÎµÏ„Î±Î¹.',
			'errUploadTransfer'    : 'Î Ï�ÏŒÎ²Î»Î·Î¼Î± Î¼ÎµÏ„Î±Ï†Î¿Ï�Î¬Ï‚ Î³Î¹Î± Ï„Î¿ "$1".',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Î¤Î¿ "$1" Î´ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„ÏŒÎ½ Î½Î± Î±Ï€Î¿Î¸Î·ÎºÎµÏ…Ï„ÎµÎ¯.',
			'errCopy'              : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î±Î½Ï„Î¹Î³Ï�Î±Ï†Î® Ï„Î¿Ï… "$1".',
			'errMove'              : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î¼ÎµÏ„Î±ÎºÎ¯Î½Î·ÏƒÎ· Ï„Î¿Ï… "$1".',
			'errCopyInItself'      : 'Î”ÎµÎ½ ÎµÎ¯Î½Î±Î¹ Î´Ï…Î½Î±Ï„Î® Î· Î±Î½Ï„Î¹Î³Ï�Î±Ï†Î® Ï„Î¿Ï… "$1" ÏƒÏ„Î¿Î½ ÎµÎ±Ï…Ï„ÏŒ Ï„Î¿Ï….',
			'errRm'                : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î±Ï†Î±Î¯Ï�ÎµÏƒÎ· Ï„Î¿Ï… "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î±Î½Î¬Î³Î½Ï‰ÏƒÎ· Ï„Ï‰Î½ Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î±Ï€ÏŒ "$1".',
			'errArchive'           : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î´Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Ï„Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï….',
			'errArcType'           : 'ÎŸ Ï„Ï�Ï€Î¿Ï‚ Î±Ï�Ï‡ÎµÎ¯Î¿Ï… Î´ÎµÎ½ Ï…Ï€Î¿ÏƒÏ„Î·Ï�Î¯Î¶ÎµÏ„Î±Î¹.',
			'errNoArchive'         : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ Î­Î³ÎºÏ…Ï�Î¿ Î® Î´ÎµÎ½ Ï…Ï€Î¿ÏƒÏ„Î·Ï�Î¯Î¶ÎµÏ„Î±Î¹ Î¿ Ï„Ï�Ï€Î¿Ï‚ Ï„Î¿Ï….',
			'errCmdNoSupport'      : 'Î¤Î¿ backend Î´ÎµÎ½ Ï…Ï€Î¿ÏƒÏ„Î·Ï�Î¯Î¶ÎµÎ¹ Î±Ï…Ï„Î® Ï„Î·Î½ ÎµÎ½Ï„Î¿Î»Î®.',
			'errReplByChild'       : 'ÎŸ Ï†Î¬ÎºÎµÎ»Î¿Ï‚ â€œ$1â€� Î´ÎµÎ½ Î¼Ï€Î¿Ï�ÎµÎ¯ Î½Î± Î±Î½Ï„Î¹ÎºÎ±Ï„Î±ÏƒÏ„Î±Î¸ÎµÎ¯ Î±Ï€ÏŒ Î¿Ï€Î¿Î¹Î¿Î´Î®Ï€Î¿Ï„Îµ Î±Ï�Ï‡ÎµÎ¯Î¿ Ï€ÎµÏ�Î¹Î­Ï‡ÎµÏ„Î±Î¹ ÏƒÎµ Î±Ï…Ï„ÏŒÎ½.',
			'errArcSymlinks'       : 'Î“Î¹Î± Î»ÏŒÎ³Î¿Ï…Ï‚ Î±ÏƒÏ†Î±Î»ÎµÎ¯Î±Ï‚ Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ Î´Ï…Î½Î±Ï„ÏŒÎ½ Î½Î± Î´Î¹Î±Î²Î±ÏƒÏ„Î¿Ï�Î½ Î±Ï�Ï‡ÎµÎ¯Î± Ï€Î¿Ï… Ï€ÎµÏ�Î¹Î­Ï‡Î¿Ï…Î½ symlinks orÎ· Î±Ï�Ï‡ÎµÎ¯Î± Î¼Îµ Î¼Î· ÎµÏ€Î¹Ï„Ï�ÎµÏ€Ï„Î¬ Î¿Î½ÏŒÎ¼Î±Ï„Î±.', // edited 24.06.2012
			'errArcMaxSize'        : 'Î¤Î¿ Î¼Î­Î³ÎµÎ¸Î¿Ï‚ Ï„Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï… Ï…Ï€ÎµÏ�Î²Î±Î¯Î½ÎµÎ¹ Ï„Î¿ Î¼Î­Î³Î¹ÏƒÏ„Î¿ ÎµÏ€Î¹Ï„Ï�ÎµÏ€Ï„ÏŒ ÏŒÏ�Î¹Î¿.',
			'errResize'            : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Î±Î»Î»Î±Î³Î® Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ Ï„Î¿Ï… "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',
			'errResizeRotate'      : 'Unable to rotate image.',
			'errResizeSize'        : 'Invalid image size.',
			'errResizeNoChange'    : 'Image size not changed.',
			'errUsupportType'      : 'ÎŸ Ï„Ï�Ï€Î¿Ï‚ Î±Ï�Ï‡ÎµÎ¯Î¿Ï… Î´ÎµÎ½ Ï…Ï€Î¿ÏƒÏ„Î·Ï�Î¯Î¶ÎµÏ„Î±Î¹.',
			'errNotUTF8Content'    : 'Î¤Î¿ Î±Ï�Ï‡ÎµÎ¯Î¿ "$1" Î´ÎµÎ½ ÎµÎ¯Î½Î±Î¹ UTF-8 ÎºÎ±Î¹ Î´ÎµÎ½ Î¼Ï€Î¿Ï�ÎµÎ¯ Î½Î± ÎµÏ€ÎµÎ¾ÎµÏ�Î³Î±ÏƒÎ¸ÎµÎ¯.',  // added 9.11.2011
			'errNetMount'          : 'Î”ÎµÎ½ Î®Ï„Î±Î½ Î´Ï…Î½Î±Ï„Î® Î· Ï†ÏŒÏ�Ï„Ï‰ÏƒÎ· Ï„Î¿Ï… "$1".',     // added 17.04.2012
			'errNetMountNoDriver'  : 'ÎœÎ· Ï…Ï€Î¿ÏƒÏ„Î·Ï�Î¹Î¶ÏŒÎ¼ÎµÎ½Î¿ Ï€Ï�Ï‰Ï„ÏŒÎºÎ¿Î»Î¿.',     // added 17.04.2012
			'errNetMountFailed'    : 'Î— Ï†ÏŒÏ�Ï„Ï‰ÏƒÎ· Î±Ï€Î­Ï„Ï…Ï‡Îµ.',             // added 17.04.2012
			'errNetMountHostReq'   : 'Î‘Ï€Î±Î¹Ï„ÎµÎ¯Ï„Î±Î¹ host ÎµÎ¾Ï…Ï€Î·Ï�ÎµÏ„Î·Ï„Î®Ï‚.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			
			/******************************* commands names ********************************/
			'cmdarchive'   : 'Î”Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± archive Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'cmdback'      : 'Î Î¯ÏƒÏ‰',
			'cmdcopy'      : 'Î‘Î½Ï„Î¹Î³Ï�Î±Ï†Î®',
			'cmdcut'       : 'Î‘Ï†Î±Î¯Ï�ÎµÏƒÎ·',
			'cmddownload'  : 'ÎœÎµÏ„Î±Ï†ÏŒÏ�Ï„Ï‰ÏƒÎ·',
			'cmdduplicate' : 'Î‘Î½Ï„Î¯Î³Ï�Î±Ï†Î¿',
			'cmdedit'      : 'Î•Ï€ÎµÎ¾ÎµÏ�Î³Î±ÏƒÎ¯Î± Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'cmdextract'   : 'Î•Î¾Î±Î³Ï‰Î³Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î±Ï€ÏŒ archive',
			'cmdforward'   : 'Î Ï�Î¿ÏŽÎ¸Î·ÏƒÎ·',
			'cmdgetfile'   : 'Î•Ï€Î¹Î»Î­Î¾Ï„Îµ Î±Ï�Ï‡ÎµÎ¯Î±',
			'cmdhelp'      : 'Î£Ï‡ÎµÏ„Î¹ÎºÎ¬ Î¼Îµ Î±Ï…Ï„ÏŒ Ï„Î¿ Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÏŒ',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Î Î»Î·Ï�Î¿Ï†Î¿Ï�Î¯ÎµÏ‚',
			'cmdmkdir'     : 'Î�Î­Î¿Ï‚ Ï†Î¬ÎºÎµÎ»Î¿Ï‚',
			'cmdmkfile'    : 'Î�Î­Î¿Ï‚ Î±Ï�Ï‡ÎµÎ¯Î¿',
			'cmdopen'      : 'Î†Î½Î¿Î¹Î³Î¼Î±',
			'cmdpaste'     : 'Î•Ï€Î¹ÎºÏŒÎ»Î»Î·ÏƒÎ·',
			'cmdquicklook' : 'Î Ï�Î¿ÎµÏ€Î¹ÏƒÎºÏŒÏ€Î·ÏƒÎ·',
			'cmdreload'    : 'Î‘Î½Î±Î½Î­Ï‰ÏƒÎ·',
			'cmdrename'    : 'ÎœÎµÏ„Î¿Î½Î¿Î¼Î±ÏƒÎ¯Î±',
			'cmdrm'        : 'Î”Î¹Î±Î³Ï�Î±Ï†Î®',
			'cmdsearch'    : 'ÎˆÏ…Ï�ÎµÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'cmdup'        : 'ÎœÎµÏ„Î¬Î²Î±ÏƒÎ· ÏƒÏ„Î¿ Î³Î¿Î½Î¹ÎºÏŒ Ï†Î¬ÎºÎµÎ»Î¿',
			'cmdupload'    : 'Î‘Î½Î­Î²Î±ÏƒÎ¼Î± Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'cmdview'      : 'Î Ï�Î¿Î²Î¿Î»Î®',
			'cmdresize'    : 'Î‘Î»Î»Î±Î³Î® Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚ ÎµÎ¹ÎºÏŒÎ½Î±Ï‚',
			'cmdsort'      : 'Î¤Î±Î¾Î¹Î½ÏŒÎ¼Î·ÏƒÎ·',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'ÎšÎ»ÎµÎ¯ÏƒÎ¹Î¼Î¿',
			'btnSave'   : 'Î‘Ï€Î¿Î¸Î®ÎºÎµÏ…ÏƒÎ·',
			'btnRm'     : 'Î‘Ï†Î±Î¯Ï�ÎµÏƒÎ·',
			'btnApply'  : 'Î•Ï†Î±Ï�Î¼Î¿Î³Î®',
			'btnCancel' : 'Î‘ÎºÏ�Ï�Ï‰ÏƒÎ·',
			'btnNo'     : 'ÎŒÏ‡Î¹',
			'btnYes'    : 'Î�Î±Î¹',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Î†Î½Î¿Î¹Î³Î¼Î± Ï†Î±ÎºÎ­Î»Î¿Ï…',
			'ntffile'     : 'Î†Î½Î¿Î¹Î³Î¼Î± Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'ntfreload'   : 'Î‘Î½Î±Î½Î­Ï‰ÏƒÎ· Ï€ÎµÏ�Î¹ÎµÏ‡Î¿Î¼Î­Î½Ï‰Î½ Ï†Î±ÎºÎ­Î»Î¿Ï…',
			'ntfmkdir'    : 'Î”Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Ï†Î±ÎºÎ­Î»Î¿Ï…',
			'ntfmkfile'   : 'Î”Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfrm'       : 'Î”Î¹Î±Î³Ï�Î±Ï†Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfcopy'     : 'Î‘Î½Ï„Î¹Î³Ï�Î±Ï†Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfmove'     : 'ÎœÎµÏ„Î±ÎºÎ¯Î½Î·ÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfprepare'  : 'Î Ï�Î¿ÎµÏ„Î¿Î¹Î¼Î±ÏƒÎ¯Î± Î±Î½Ï„Î¹Î³Ï�Î±Ï†Î®Ï‚ Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfrename'   : 'ÎœÎµÏ„Î¿Î½Î¿Î¼Î±ÏƒÎ¯Î± Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfupload'   : 'Î‘Î½Î­Î²Î±ÏƒÎ¼Î± Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfdownload' : 'ÎœÎµÏ„Î±Ï†ÏŒÏ�Ï„Ï‰ÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfsave'     : 'Î‘Ï€Î¿Î¸Î®ÎºÎµÏ…ÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfarchive'  : 'Î”Î·Î¼Î¹Î¿Ï…Ï�Î³Î¯Î± Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'ntfextract'  : 'Î•Î¾Î±Î³Ï‰Î³Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î±Ï€ÏŒ Ï„Î¿ archive',
			'ntfsearch'   : 'Î‘Î½Î±Î¶Î®Ï„Î·ÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Î£Ï�ÏƒÏ„Î·Î¼Î± Î±Ï€Î±ÏƒÏ‡Î¿Î»Î·Î¼Î­Î½Î¿>_<',
			'ntfloadimg'  : 'Î¦ÏŒÏ�Ï„Ï‰ÏƒÎ· ÎµÎ¹ÎºÏŒÎ½Î±Ï‚',
			'ntfnetmount' : 'Î¦ÏŒÏ�Ï„Ï‰ÏƒÎ· Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï� Î´Î¯ÏƒÎºÎ¿Ï…', // added 18.04.2012
			'ntfdim'      : 'Acquiring image dimension',
			
			/************************************ dates **********************************/
			'dateUnknown' : 'Î¬Î³Î½Ï‰ÏƒÏ„Î¿',
			'Today'       : 'Î£Î®Î¼ÎµÏ�Î±',
			'Yesterday'   : 'Î§Î¸Î­Ï‚',
			'msJan'       : 'Î™Î±Î½',
			'msFeb'       : 'Î¦ÎµÎ²',
			'msMar'       : 'ÎœÎ±Ï�',
			'msApr'       : 'Î‘Ï€Ï�',
			'msMay'       : 'ÎœÎ±ÏŠ',
			'msJun'       : 'Î™Î¿Ï…Î½',
			'msJul'       : 'Î™Î¿Ï…Î»',
			'msAug'       : 'Î‘Ï…Î³',
			'msSep'       : 'Î£ÎµÏ€',
			'msOct'       : 'ÎŸÎºÏ„',
			'msNov'       : 'Î�Î¿ÎµÎ¼',
			'msDec'       : 'Î”ÎµÎº',
			'January'     : 'Î™Î±Î½Î¿Ï…Î¬Ï�Î¹Î¿Ï‚',
			'February'    : 'Î¦ÎµÎ²Ï�Î¿Ï…Î¬Ï�Î¹Î¿Ï‚',
			'March'       : 'ÎœÎ¬Ï�Ï„Î¹Î¿Ï‚',
			'April'       : 'Î‘Ï€Ï�Î¯Î»Î¹Î¿Ï‚',
			'May'         : 'ÎœÎ¬ÏŠÎ¿Ï‚',
			'June'        : 'Î™Î¿Ï�Î½Î¹Î¿Ï‚',
			'July'        : 'Î™Î¿Ï�Î»Î¹Î¿Ï‚',
			'August'      : 'Î‘Ï�Î³Î¿Ï…ÏƒÏ„Î¿Ï‚',
			'September'   : 'Î£ÎµÏ€Ï„Î­Î¼Î²Ï�Î¹Î¿Ï‚',
			'October'     : 'ÎŸÎºÏ„ÏŽÎ²Ï�Î¹Î¿Ï‚',
			'November'    : 'Î�Î¿Î­Î¼Î²Ï�Î¹Î¿Ï‚',
			'December'    : 'Î”ÎµÎºÎ­Î¼Î²Ï�Î¹Î¿Ï‚',
			'Sunday'      : 'ÎšÏ…Ï�Î¹Î±ÎºÎ®', 
			'Monday'      : 'Î”ÎµÏ…Ï„Î­Ï�Î±', 
			'Tuesday'     : 'Î¤Ï�Î¯Ï„Î·', 
			'Wednesday'   : 'Î¤ÎµÏ„Î¬Ï�Ï„Î·', 
			'Thursday'    : 'Î Î­Î¼Ï€Ï„Î·', 
			'Friday'      : 'Î Î±Ï�Î±ÏƒÎºÎµÏ…Î®', 
			'Saturday'    : 'Î£Î¬Î²Î²Î±Ï„Î¿',
			'Sun'         : 'ÎšÏ…Ï�', 
			'Mon'         : 'Î”ÎµÏ…', 
			'Tue'         : 'Î¤Ï�', 
			'Wed'         : 'Î¤ÎµÏ„', 
			'Thu'         : 'Î ÎµÎ¼', 
			'Fri'         : 'Î Î±Ï�', 
			'Sat'         : 'Î£Î±Î²',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'ÎºÎ±Ï„Î¬ ÏŒÎ½Î¿Î¼Î±', 
			'sortkind'          : 'ÎºÎ±Ï„Î¬ ÎµÎ¯Î´Î¿Ï‚', 
			'sortsize'          : 'ÎºÎ±Ï„Î¬ Î¼Î­Î³ÎµÎ¸Î¿Ï‚',
			'sortdate'          : 'ÎºÎ±Ï„Î¬ Î·Î¼ÎµÏ�Î¿Î¼Î·Î½Î¯Î±',
			'sortFoldersFirst'  : 'Î Ï�ÏŽÏ„Î± Î¿Î¹ Ï†Î¬ÎºÎµÎ»Î¿Î¹', // added 22.06.2012
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Î‘Ï€Î±Î¹Ï„ÎµÎ¯Ï„Î±Î¹ ÎµÏ€Î¹Î²ÎµÎ²Î±Î¯Ï‰ÏƒÎ·',
			'confirmRm'       : 'Î•Î¯ÏƒÏ„Îµ ÏƒÎ¯Î³Î¿Ï…Ï�Î¿Î¹ Ï€Ï‰Ï‚ Î¸Î­Î»ÎµÏ„Îµ Î½Î± Î´Î¹Î±Î³Ï�Î¬ÏˆÎµÏ„Îµ Ï„Î± Î±Ï�Ï‡ÎµÎ¯Î±?<br/>ÎŸÎ¹ Î±Î»Î»Î±Î³Î­Ï‚ Î¸Î± ÎµÎ¯Î½Î±Î¹ Î¼ÏŒÎ½Î¹Î¼ÎµÏ‚!',
			'confirmRepl'     : 'Î‘Î½Ï„Î¹ÎºÎ±Ï„Î¬ÏƒÏ„Î±ÏƒÎ· Ï„Î¿Ï… Ï€Î±Î»Î¹Î¿Ï� Î±Ï�Ï‡ÎµÎ¯Î¿Ï… Î¼Îµ Ï„Î¿ Î½Î­Î¿?',
			'apllyAll'        : 'Î•Ï†Î±Ï�Î¼Î¿Î³Î® ÏƒÎµ ÏŒÎ»Î±',
			'name'            : 'ÎŒÎ½Î¿Î¼Î±',
			'size'            : 'ÎœÎ­Î³ÎµÎ¸Î¿Ï‚',
			'perms'           : 'Î”Î¹ÎºÎ±Î¹ÏŽÎ¼Î±Ï„Î±',
			'modify'          : 'Î¤Ï�Î¿Ï€Î¿Ï€Î¿Î¹Î®Î¸Î·ÎºÎµ',
			'kind'            : 'Î•Î¯Î´Î¿Ï‚',
			'read'            : 'Î±Î½Î¬Î³Î½Ï‰ÏƒÎ·',
			'write'           : 'ÎµÎ³Î³Ï�Î±Ï†Î®',
			'noaccess'        : 'Î´ÎµÎ½ Ï…Ï€Î¬Ï�Ï‡ÎµÎ¹ Ï€Ï�ÏŒÏƒÎ²Î±ÏƒÎ·',
			'and'             : 'ÎºÎ±Î¹',
			'unknown'         : 'Î¬Î³Î½Ï‰ÏƒÏ„Î¿',
			'selectall'       : 'Î•Ï€Î¹Î»Î¿Î³Î® ÏŒÎ»Ï‰Î½',
			'selectfiles'     : 'Î•Ï€Î¹Î»Î¿Î³Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'selectffile'     : 'Î•Ï€Î¹Î»Î¿Î³Î® Ï€Ï�ÏŽÏ„Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'selectlfile'     : 'Î•Ï€Î¹Î»Î¿Î³Î® Ï„ÎµÎ»ÎµÏ…Ï„Î±Î¯Î¿Ï… Î±Ï�Ï‡ÎµÎ¯Î¿Ï…',
			'viewlist'        : 'Î Ï�Î¿Î²Î¿Î»Î® Î»Î¯ÏƒÏ„Î±Ï‚',
			'viewicons'       : 'Î Ï�Î¿Î²Î¿Î»Î® ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Ï‰Î½',
			'places'          : 'Î¤Î¿Ï€Î¿Î¸ÎµÏƒÎ¯ÎµÏ‚',
			'calc'            : 'Î¥Ï€Î¿Î»Î¿Î³Î¹ÏƒÎ¼ÏŒÏ‚', 
			'path'            : 'Î”Î¹Î±Î´Ï�Î¿Î¼Î®',
			'aliasfor'        : 'Î¨ÎµÏ…Î´ÏŽÎ½Ï…Î¼Î¿ Î³Î¹Î±',
			'locked'          : 'ÎšÎ»ÎµÎ¹Î´Ï‰Î¼Î­Î½Î¿',
			'dim'             : 'Î”Î¹Î±ÏƒÏ„Î¬ÏƒÎµÎ¹Ï‚',
			'files'           : 'Î‘Ï�Ï‡ÎµÎ¯Î±',
			'folders'         : 'Î¦Î¬ÎºÎµÎ»Î¿Î¹',
			'items'           : 'Î‘Î½Ï„Î¹ÎºÎµÎ¯Î¼ÎµÎ½Î±',
			'yes'             : 'Î½Î±Î¹',
			'no'              : 'ÏŒÏ‡Î¹',
			'link'            : 'Î£Ï�Î½Î´ÎµÏƒÎ¼Î¿Ï‚',
			'searcresult'     : 'Î‘Ï€Î¿Ï„ÎµÎ»Î­ÏƒÎ¼Î±Ï„Î± Î±Î½Î±Î¶Î®Ï„Î·ÏƒÎ·Ï‚',  
			'selected'        : 'ÎµÏ€Î¹Î»ÎµÎ³Î¼Î­Î½Î± Î±Î½Ï„Î¹ÎºÎµÎ¯Î¼ÎµÎ½Î±',
			'about'           : 'Î£Ï‡ÎµÏ„Î¹ÎºÎ¬',
			'shortcuts'       : 'Î£Ï…Î½Ï„Î¿Î¼ÎµÏ�ÏƒÎµÎ¹Ï‚',
			'help'            : 'Î’Î¿Î®Î¸ÎµÎ¹Î±',
			'webfm'           : 'ÎµÏ�Î³Î±Î»ÎµÎ¯Î¿ Î´Î¹Î±Ï‡ÎµÎ¯Ï�Î¹ÏƒÎ·Ï‚ Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î±Ï€ÏŒ Ï„Î¿ web',
			'ver'             : 'ÎˆÎºÎ´Î¿ÏƒÎ·',
			'protocolver'     : 'Î­ÎºÎ´Î¿ÏƒÎ· Ï€Ï�Ï‰Ï„Î¿ÎºÏŒÎ»Î»Î¿Ï…',
			'homepage'        : 'Î£ÎµÎ»Î¯Î´Î± Ï„Î¿Ï… project',
			'docs'            : 'Î¤ÎµÎºÎ¼Î·Ï�Î¯Ï‰ÏƒÎ· (documentation)',
			'github'          : 'ÎšÎ¬Î½Ï„Îµ Î¼Î±Ï‚ fork ÏƒÏ„Î¿ Github',
			'twitter'         : 'Î‘ÎºÎ¿Î»Î¿Ï…Î¸Î®ÏƒÏ„Îµ Î¼Î±Ï‚ ÏƒÏ„Î¿ twitter',
			'facebook'        : 'Î’Ï�ÎµÎ¯Ï„Îµ Î¼Î±Ï‚ ÏƒÏ„Î¿ facebook',
			'team'            : 'ÎŸÎ¼Î¬Î´Î±',
			'chiefdev'        : 'ÎºÏ�Ï�Î¹Î¿Ï‚ Ï€Ï�Î¿Î³Ï�Î±Î¼Î¼Î±Ï„Î¹ÏƒÏ„Î®Ï‚',
			'developer'       : 'Ï€Ï�Î¿Î³Ï�Î±Î¼Î¼Î±Ï„Î¹ÏƒÏ„Î®Ï‚',
			'contributor'     : 'ÏƒÏ…Î½ÎµÎ¹ÏƒÏ†Î¿Ï�Î¬',
			'maintainer'      : 'ÏƒÏ…Î½Ï„Î·Ï�Î·Ï„Î®Ï‚',
			'translator'      : 'Î¼ÎµÏ„Î±Ï†Ï�Î±ÏƒÏ„Î®Ï‚',
			'icons'           : 'Î•Î¹ÎºÎ¿Î½Î¯Î´Î¹Î±',
			'dontforget'      : 'ÎºÎ±Î¹ Î¼Î·Î½ Î¾ÎµÏ‡Î¬ÏƒÎµÎ¹Ï‚ Ï„Î·Î½ Ï€ÎµÏ„ÏƒÎ­Ï„Î± ÏƒÎ¿Ï…!',
			'shortcutsof'     : 'ÎŸÎ¹ ÏƒÏ…Î½Ï„Î¿Î¼ÎµÏ�ÏƒÎµÎ¹Ï‚ ÎµÎ¯Î½Î±Î¹ Î±Ï€ÎµÎ½ÎµÏ�Î³Î¿Ï€Î¿Î¹Î·Î¼Î­Î½ÎµÏ‚',
			'dropFiles'       : 'ÎšÎ¬Î½Ï„Îµ drop Ï„Î± Î±Ï�Ï‡ÎµÎ¯Î± ÎµÎ´ÏŽ',
			'or'              : 'Î®',
			'selectForUpload' : 'Î•Ï€Î¹Î»Î¿Î³Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½ Î³Î¹Î± Î±Î½Î­Î²Î±ÏƒÎ¼Î±',
			'moveFiles'       : 'ÎœÎµÏ„Î±ÎºÎ¯Î½Î·ÏƒÎ· Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'copyFiles'       : 'Î‘Î½Ï„Î¹Î³Ï�Î±Ï†Î® Î±Ï�Ï‡ÎµÎ¯Ï‰Î½',
			'rmFromPlaces'    : 'Î‘Î½Ï„Î¹Î³Ï�Î±Ï†Î® Î±Ï€ÏŒ Ï„Î¿Ï€Î¿Î¸ÎµÏƒÎ¯ÎµÏ‚',
			'aspectRatio'     : 'Î‘Î½Î±Î»Î¿Î³Î¯Î± Î´Î¹Î±ÏƒÏ„Î¬ÏƒÎµÏ‰Î½',
			'scale'           : 'ÎšÎ»Î¯Î¼Î±ÎºÎ±',
			'width'           : 'Î Î»Î¬Ï„Î¿Ï‚',
			'height'          : 'ÎŽÏˆÎ¿Ï‚',
			'resize'          : 'Î‘Î»Î»Î±Î³Î® Î¼ÎµÎ³Î­Î¸Î¿Ï…Ï‚',
			'crop'            : 'Crop',
			'rotate'          : 'Î ÎµÏ�Î¹ÏƒÏ„Ï�Î¿Ï†Î®',
			'rotate-cw'       : 'Î ÎµÏ�Î¹ÏƒÏ„Ï�Î¿Ï†Î® ÎºÎ±Ï„Î¬ 90 Î²Î±Î¸Î¼Î¿Ï�Ï‚ CW',
			'rotate-ccw'      : 'Î ÎµÏ�Î¹ÏƒÏ„Ï�Î¿Ï†Î® ÎºÎ±Ï„Î¬ 90 Î²Î±Î¸Î¼Î¿Ï�Ï‚ CCW',
			'degree'          : 'Î’Î±Î¸Î¼ÏŒÏ‚',
			'netMountDialogTitle' : 'Î¦Î¿Ï�Ï„ÏŽÏƒÏ„Îµ Î´Î¹ÎºÏ„Ï…Î±ÎºÏŒ Î´Î¯ÏƒÎºÎ¿', // added 18.04.2012
			'protocol'            : 'Î Ï�Ï‰Ï„ÏŒÎºÎ¿Î»Î»Î¿', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Î§Ï�Î®ÏƒÏ„Î·Ï‚', // added 18.04.2012
			'pass'                : 'ÎšÏ‰Î´Î¹ÎºÏŒÏ‚', // added 18.04.2012
			
			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Î†Î³Î½Ï‰ÏƒÏ„Î¿',
			'kindFolder'      : 'Î¦Î¬ÎºÎµÎ»Î¿Ï‚',
			'kindAlias'       : 'Î¨ÎµÏ…Î´ÏŽÎ½Ï…Î¼Î¿ (alias)',
			'kindAliasBroken' : 'ÎœÎ· Î­Î³ÎºÏ…Ï�Î¿ ÏˆÎµÏ…Î´ÏŽÎ½Ï…Î¼Î¿',
			// applications
			'kindApp'         : 'Î•Ï†Î±Ï�Î¼Î¿Î³Î®',
			'kindPostscript'  : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Postscript',
			'kindMsOffice'    : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Microsoft Office',
			'kindMsWord'      : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Microsoft Word',
			'kindMsExcel'     : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Microsoft Excel',
			'kindMsPP'        : 'Î Î±Ï�Î¿Ï…ÏƒÎ¯Î±ÏƒÎ· Microsoft Powerpoint',
			'kindOO'          : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Open Office',
			'kindAppFlash'    : 'Î•Ï†Î±Ï�Î¼Î¿Î³Î® Flash',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ Bittorrent',
			'kind7z'          : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ 7z',
			'kindTAR'         : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ TAR',
			'kindGZIP'        : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ GZIP',
			'kindBZIP'        : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ BZIP',
			'kindXZ'          : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ XZ',
			'kindZIP'         : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ ZIP',
			'kindRAR'         : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ RAR',
			'kindJAR'         : 'Î‘Ï�Ï‡ÎµÎ¯Î¿ Java JAR',
			'kindTTF'         : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ True Type',
			'kindOTF'         : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ Open Type',
			'kindRPM'         : 'Î Î±ÎºÎ­Ï„Î¿ RPM',
			// fonts
			'kindFont'        : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬',
			'kindSFNT'        : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ SFNT',
			'kindEOT'         : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ Embedded Open Type',
			'kindWOFF'        : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ Web Open Font Format',
			'kindWOFF2'       : 'Î“Ï�Î±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹Ï�Î¬ Web Open Font Format 2',
			// texts
			'kindText'        : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ ÎºÎµÎ¹Î¼Î­Î½Î¿Ï…',
			'kindTextPlain'   : 'Î‘Ï€Î»ÏŒ ÎºÎµÎ¯Î¼ÎµÎ½Î¿',
			'kindPHP'         : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ PHP',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ HTML',
			'kindJS'          : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ Javascript',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ C',
			'kindCHeader'     : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ ÎºÎµÏ†Î±Î»Î¯Î´Î±Ï‚ C',
			'kindCPP'         : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ C++',
			'kindCPPHeader'   : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ ÎºÎµÏ†Î±Î»Î¯Î´Î±Ï‚ C++',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ Python',
			'kindJava'        : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ Java',
			'kindRuby'        : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ Ruby',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ SQL',
			'kindXML'         : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ XML',
			'kindAWK'         : 'ÎšÏŽÎ´Î¹ÎºÎ±Ï‚ AWK',
			'kindCSV'         : 'Î¤Î¹Î¼Î­Ï‚ Ï‡Ï‰Ï�Î¹ÏƒÎ¼Î­Î½ÎµÏ‚ Î¼Îµ ÎºÏŒÎ¼Î¼Î±',
			'kindDOCBOOK'     : 'ÎˆÎ³Î³Ï�Î±Ï†Î¿ Docbook XML',
			// images
			'kindImage'       : 'Î•Î¹ÎºÏŒÎ½Î±',
			'kindBMP'         : 'Î•Î¹ÎºÏŒÎ½Î± BMP',
			'kindJPEG'        : 'Î•Î¹ÎºÏŒÎ½Î± JPEG',
			'kindGIF'         : 'Î•Î¹ÎºÏŒÎ½Î± GIF',
			'kindPNG'         : 'Î•Î¹ÎºÏŒÎ½Î± PNG',
			'kindTIFF'        : 'Î•Î¹ÎºÏŒÎ½Î± TIFF',
			'kindTGA'         : 'Î•Î¹ÎºÏŒÎ½Î± TGA',
			'kindPSD'         : 'Î•Î¹ÎºÏŒÎ½Î± Adobe Photoshop',
			'kindXBITMAP'     : 'Î•Î¹ÎºÏŒÎ½Î± X bitmap',
			'kindPXM'         : 'Î•Î¹ÎºÏŒÎ½Î± Pixelmator',
			// media
			'kindAudio'       : 'Î‘Ï�Ï‡ÎµÎ¯Î± Î®Ï‡Î¿Ï…',
			'kindAudioMPEG'   : 'Î‰Ï‡Î¿Ï‚ MPEG',
			'kindAudioMPEG4'  : 'Î•Î¹ÎºÏŒÎ½Î± MPEG-4',
			'kindAudioMIDI'   : 'Î•Î¹ÎºÏŒÎ½Î± MIDI',
			'kindAudioOGG'    : 'Î•Î¹ÎºÏŒÎ½Î± Ogg Vorbis',
			'kindAudioWAV'    : 'Î•Î¹ÎºÏŒÎ½Î± WAV',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Î‘Ï�Ï‡ÎµÎ¯Î± media',
			'kindVideoDV'     : 'Î¤Î±Î¹Î½Î¯Î± DV',
			'kindVideoMPEG'   : 'Î¤Î±Î¹Î½Î¯Î± MPEG',
			'kindVideoMPEG4'  : 'Î¤Î±Î¹Î½Î¯Î± MPEG-4',
			'kindVideoAVI'    : 'Î¤Î±Î¹Î½Î¯Î± AVI',
			'kindVideoMOV'    : 'Î¤Î±Î¹Î½Î¯Î± Quick Time',
			'kindVideoWM'     : 'Î¤Î±Î¹Î½Î¯Î± Windows Media',
			'kindVideoFlash'  : 'Î¤Î±Î¹Î½Î¯Î± flash',
			'kindVideoMKV'    : 'Î¤Î±Î¹Î½Î¯Î± matroska',
			'kindVideoOGG'    : 'Î¤Î±Î¹Î½Î¯Î± ogg'
		}
	};
}));
                                    includes/File_manager/lib/js/i18n/elfinder.ro.js                                                    0000644                 00000050030 15266052754 0015443 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * RomÃ¢nÄƒ translation
 * @author Cristian Tabacitu <hello@tabacitu.ro>
 * @version 2015-11-13
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ro = {
		translator : 'Cristian Tabacitu &lt;hello@tabacitu.ro&gt;',
		language   : 'RomÃ¢nÄƒ',
		direction  : 'ltr',
		dateFormat : 'd M Y h:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Eroare',
			'errUnknown'           : 'Eroare necunoscutÄƒ.',
			'errUnknownCmd'        : 'ComandÄƒ necunoscuta.',
			'errJqui'              : 'ConfiguraÈ›ie jQuery UI necunoscutÄƒ. Componentele selectable, draggable È™i droppable trebuie sÄƒ fie incluse.',
			'errNode'              : 'elFinder necesitÄƒ ca DOM Element sÄƒ fie creat.',
			'errURL'               : 'ConfiguraÈ›ie elFinder nevalidÄƒ! URL option nu este setat.',
			'errAccess'            : 'Acces interzis.',
			'errConnect'           : 'Nu ne-am putut conecta la backend.',
			'errAbort'             : 'Conexiunea a fost opritÄƒ.',
			'errTimeout'           : 'Conexiunea a fost Ã®ntreruptÄƒ.',
			'errNotFound'          : 'Nu am gasit backend-ul.',
			'errResponse'          : 'RÄƒspuns backend greÈ™it.',
			'errConf'              : 'ConfiguraÈ›ie backend greÈ™itÄƒ.',
			'errJSON'              : 'Modulul PHP JSON nu este instalat.',
			'errNoVolumes'         : 'Volumele citibile nu sunt disponibile.',
			'errCmdParams'         : 'Parametri greÈ™iÈ›i pentru comanda "$1".',
			'errDataNotJSON'       : 'Datele nu sunt Ã®n format JSON.',
			'errDataEmpty'         : 'Datele sunt goale.',
			'errCmdReq'            : 'Cererea cÄƒtre backend necesitÄƒ un nume de comandÄƒ.',
			'errOpen'              : 'Nu am putut deschide "$1".',
			'errNotFolder'         : 'Obiectul nu este un dosar.',
			'errNotFile'           : 'Obiectul nu este un fiÈ™ier.',
			'errRead'              : 'Nu am putut citi "$1".',
			'errWrite'             : 'Nu am putu scrie Ã®n "$1".',
			'errPerm'              : 'Nu ai permisiunea necesarÄƒ.',
			'errLocked'            : '"$1" este blocat È™i nu poate fi redenumit, mutat sau È™ters.',
			'errExists'            : 'Un fiÈ™ier cu numele "$1" existÄƒ deja.',
			'errInvName'           : 'Numele pentru fiÈ™ier este greÈ™it.',
			'errFolderNotFound'    : 'Nu am gÄƒsit dosarul.',
			'errFileNotFound'      : 'Nu am gÄƒsit fiÈ™ierul.',
			'errTrgFolderNotFound' : 'Nu am gÄƒsit dosarul pentru destinaÈ›ie "$1".',
			'errPopup'             : 'Browserul tÄƒu a prevenit deschiderea ferestrei popup. Pentru a deschide fiÈ™ierul permite deschidere ferestrei.',
			'errMkdir'             : 'Nu am putut crea dosarul "$1".',
			'errMkfile'            : 'Nu am putut crea fiÈ™ierul "$1".',
			'errRename'            : 'Nu am putut redenumi "$1".',
			'errCopyFrom'          : 'Copierea fiÈ™ierelor de pe volumul "$1" este interzisÄƒ.',
			'errCopyTo'            : 'Copierea fiÈ™ierelor cÄƒtre volumul "$1" este interzisÄƒ.',
			'errMkOutLink'         : 'Nu am putut crea linkul Ã®n afara volumului rÄƒdÄƒcinÄƒ.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Eroare de upload.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nu am putut urca "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nu am gÄƒsit fiÈ™iere pentru a le urca.',
			'errUploadTotalSize'   : 'Datele depÃ¢È™est limita maximÄƒ de mÄƒrime.', // old name - errMaxSize
			'errUploadFileSize'    : 'FiÈ™ierul este prea mare.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Acest tip de fiÈ™ier nu este permis.',
			'errUploadTransfer'    : 'Eroare la transferarea "$1".',
			'errUploadTemp'        : 'Nu am putut crea fiÈ™ierul temporar pentru upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obiectul "$1" existÄƒ deja Ã®n acest loc È™i nu poate fi Ã®nlocuit de un obiect de alt tip.', // new
			'errReplace'           : 'Nu am putut Ã®nlocui "$1".',
			'errSave'              : 'Nu am putut salva "$1".',
			'errCopy'              : 'Nu am putut copia "$1".',
			'errMove'              : 'Nu am putut muta "$1".',
			'errCopyInItself'      : 'Nu am putut copia "$1" Ã®n el Ã®nsuÈ™i.',
			'errRm'                : 'Nu am putut È™terge "$1".',
			'errRmSrc'             : 'Nu am putut È™terge fiÈ™ierul sursÄƒ.',
			'errExtract'           : 'Nu am putut extrage fiÈ™ierele din "$1".',
			'errArchive'           : 'Nu am putut crea arhiva.',
			'errArcType'           : 'Arhiva este de un tip nesuportat.',
			'errNoArchive'         : 'FiÈ™ierul nu este o arhiva sau este o arhivÄƒ de un tip necunoscut.',
			'errCmdNoSupport'      : 'Backend-ul nu suportÄƒ aceastÄƒ comandÄƒ.',
			'errReplByChild'       : 'Dosarul â€œ$1â€� nu poate fi Ã®nlocuit de un element pe care el Ã®l conÈ›ine.',
			'errArcSymlinks'       : 'Din motive de securitate, arhiva nu are voie sÄƒ conÈ›inÄƒ symlinks sau fiÈ™iere cu nume interzise.', // edited 24.06.2012
			'errArcMaxSize'        : 'FiÈ™ierul arhivei depÄƒÈ™eÈ™te mÄƒrimea maximÄƒ permisÄƒ.',
			'errResize'            : 'Nu am putut redimensiona "$1".',
			'errResizeDegree'      : 'Grad de rotaÈ›ie nevalid.',  // added 7.3.2013
			'errResizeRotate'      : 'Imaginea nu a fost rotitÄƒ.',  // added 7.3.2013
			'errResizeSize'        : 'MÄƒrimea imaginii este nevalidÄƒ.',  // added 7.3.2013
			'errResizeNoChange'    : 'MÄƒrimea imaginii nu a fost schimbatÄƒ.',  // added 7.3.2013
			'errUsupportType'      : 'Tipul acesta de fiÈ™ier nu este suportat.',
			'errNotUTF8Content'    : 'FiÈ™ierul "$1" nu foloseÈ™te UTF-8 È™i nu poate fi editat.',  // added 9.11.2011
			'errNetMount'          : 'Nu am putut Ã®ncÄƒrca "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocol nesuportat.',     // added 17.04.2012
			'errNetMountFailed'    : 'ÃŽncÄƒrcare eÈ™uatÄƒ.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Gazda este necesarÄƒ.', // added 18.04.2012
			'errSessionExpires'    : 'Sesiunea a expirat datoritÄƒ lipsei de activitate.',
			'errCreatingTempDir'   : 'Nu am putut crea fiÈ™ierul temporar: "$1"',
			'errFtpDownloadFile'   : 'Nu am putut descarca fiÈ™ierul de pe FTP: "$1"',
			'errFtpUploadFile'     : 'Nu am putut Ã®ncÄƒrca fiÈ™ierul pe FTP: "$1"',
			'errFtpMkdir'          : 'Nu am putut crea acest dosar pe FTP: "$1"',
			'errArchiveExec'       : 'Eroare la arhivarea fiÈ™ierelor: "$1"',
			'errExtractExec'       : 'Eroare la dezarhivarea fiÈ™ierelor: "$1"',
			'errNetUnMount'        : 'Nu am putut elimina volumul', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nu poate fi convertit la UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Pentru a urca dosare Ã®ncearcÄƒ Google Chrome.', // from v2.1 added 26.6.2015

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Creeaza arhivÄƒ',
			'cmdback'      : 'ÃŽnapoi',
			'cmdcopy'      : 'CopiazÄƒ',
			'cmdcut'       : 'Taie',
			'cmddownload'  : 'DescarcÄƒ',
			'cmdduplicate' : 'CreeazÄƒ duplicat',
			'cmdedit'      : 'ModificÄƒ fiÈ™ier',
			'cmdextract'   : 'Extrage fiÈ™ierele din arhivÄƒ',
			'cmdforward'   : 'ÃŽnainte',
			'cmdgetfile'   : 'Alege fiÈ™iere',
			'cmdhelp'      : 'Despre acest software',
			'cmdhome'      : 'AcasÄƒ',
			'cmdinfo'      : 'InformaÈ›ii',
			'cmdmkdir'     : 'Dosar nou',
			'cmdmkfile'    : 'FiÈ™ier nou',
			'cmdopen'      : 'Deschide',
			'cmdpaste'     : 'LipeÈ™te',
			'cmdquicklook' : 'PrevizualizeazÄƒ',
			'cmdreload'    : 'ReÃ®ncarcÄƒ',
			'cmdrename'    : 'RedenumeÈ™te',
			'cmdrm'        : 'È˜terge',
			'cmdsearch'    : 'GÄƒseÈ™te fiÈ™iere',
			'cmdup'        : 'Mergi la dosarul pÄƒrinte',
			'cmdupload'    : 'UrcÄƒ fiÈ™iere',
			'cmdview'      : 'Vezi',
			'cmdresize'    : 'RedimensioneazÄƒ & roteÈ™te',
			'cmdsort'      : 'SorteazÄƒ',
			'cmdnetmount'  : 'ÃŽncarcÄƒ volum din reÈ›ea', // added 18.04.2012
			'cmdnetunmount': 'EliminÄƒ volum', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'La Locuri', // added 28.12.2014
			'cmdchmod'     : 'SchimbÄƒ mod', // from v2.1 added 20.6.2015

			/*********************************** buttons ***********************************/
			'btnClose'  : 'ÃŽnchide',
			'btnSave'   : 'SalveazÄƒ',
			'btnRm'     : 'È˜terge',
			'btnApply'  : 'AplicÄƒ',
			'btnCancel' : 'AnuleazÄƒ',
			'btnNo'     : 'Nu',
			'btnYes'    : 'Da',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ÃŽncarcÄƒ',  // added 18.04.2012
			'btnApprove': 'Mergi la $1 È™i aprobÄƒ', // from v2.1 added 26.04.2012
			'btnUnmount': 'EliminÄƒ volum', // from v2.1 added 30.04.2012
			'btnConv'   : 'ConverteÈ™te', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volum',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Toate',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipuri MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nume fiÈ™ier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'SalveazÄƒ È™i Ã®nchide', // from v2.1 added 12.6.2015

			/******************************** notifications ********************************/
			'ntfopen'     : 'Deschide dosar',
			'ntffile'     : 'Deschide fiÈ™ier',
			'ntfreload'   : 'ActualizeazÄƒ conÈ›inutul dosarului',
			'ntfmkdir'    : 'Se creeazÄƒ dosarul',
			'ntfmkfile'   : 'Se creeazÄƒ fiÈ™ierele',
			'ntfrm'       : 'È˜terge fiÈ™iere',
			'ntfcopy'     : 'CopiazÄƒ fiÈ™iere',
			'ntfmove'     : 'MutÄƒ fiÈ™iere',
			'ntfprepare'  : 'PregÄƒteÈ™te copierea fiÈ™ierelor',
			'ntfrename'   : 'RedenumeÈ™te fiÈ™iere',
			'ntfupload'   : 'Se urcÄƒ fiÈ™ierele',
			'ntfdownload' : 'Se descarcÄƒ fiÈ™ierele',
			'ntfsave'     : 'SalveazÄƒ fiÈ™iere',
			'ntfarchive'  : 'Se creeazÄƒ arhiva',
			'ntfextract'  : 'Se extrag fiÈ™ierele din arhivÄƒ',
			'ntfsearch'   : 'Se cautÄƒ fiÈ™ierele',
			'ntfresize'   : 'Se redimnesioneazÄƒ imaginile',
			'ntfsmth'     : 'Se Ã®ntamplÄƒ ceva',
			'ntfloadimg'  : 'Se Ã®ncarcÄƒ imaginea',
			'ntfnetmount' : 'Se Ã®ncarcÄƒ volumul din reÈ›ea', // added 18.04.2012
			'ntfnetunmount': 'Se eliminÄƒ volumul din reÈ›ea', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Se preiau dimensiunile imaginii', // added 20.05.2013
			'ntfreaddir'  : 'Se citesc informaÈ›iile dosarului', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Se preia URL-ul din link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Se schimba modul de fiÈ™ier', // from v2.1 added 20.6.2015

			/************************************ dates **********************************/
			'dateUnknown' : 'necunoscutÄƒ',
			'Today'       : 'AstÄƒzi',
			'Yesterday'   : 'Ieri',
			'msJan'       : 'Ian',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Iun',
			'msJul'       : 'Iul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Ianuarie',
			'February'    : 'Februarie',
			'March'       : 'Martie',
			'April'       : 'Aprilie',
			'May'         : 'Mai',
			'June'        : 'Iunie',
			'July'        : 'Iulie',
			'August'      : 'August',
			'September'   : 'Septembrie',
			'October'     : 'Octombrie',
			'November'    : 'Noiembrie',
			'December'    : 'Decembrie',
			'Sunday'      : 'DuminicÄƒ',
			'Monday'      : 'Luni',
			'Tuesday'     : 'MarÈ›i',
			'Wednesday'   : 'Miercuri',
			'Thursday'    : 'Joi',
			'Friday'      : 'Vineri',
			'Saturday'    : 'SÃ¢mbÄƒtÄƒ',
			'Sun'         : 'Du',
			'Mon'         : 'Lu',
			'Tue'         : 'Ma',
			'Wed'         : 'Mi',
			'Thu'         : 'Jo',
			'Fri'         : 'Vi',
			'Sat'         : 'SÃ¢',

			/******************************** sort variants ********************************/
			'sortname'          : 'dupÄƒ nume',
			'sortkind'          : 'dupÄƒ tip',
			'sortsize'          : 'dupÄƒ mÄƒrime',
			'sortdate'          : 'dupÄƒ datÄƒ',
			'sortFoldersFirst'  : 'Dosarele primele',

			/********************************** new items **********************************/
			'untitled file.txt' : 'FisierNou.txt', // added 10.11.2015
			'untitled folder'   : 'DosarNou',   // added 10.11.2015
			'Archive'           : 'ArhivaNoua',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'Este necesarÄƒ confirmare',
			'confirmRm'       : 'EÈ™ti sigur cÄƒ vrei sÄƒ È™tergi fiÈ™ierele?<br/>AcÈ›iunea este ireversibilÄƒ!',
			'confirmRepl'     : 'ÃŽnlocuieÈ™te fiÈ™ierul vechi cu cel nou?',
			'confirmConvUTF8' : 'Nu este Ã®n UTF-8<br/>Convertim la UTF-8?<br/>ConÈ›inutul devine UTF-8 dupÄƒ salvarea conversiei.', // from v2.1 added 08.04.2014
			'confirmNotSave'  : 'Au avut loc modificÄƒri.<br/>DacÄƒ nu salvezi se vor pierde modificÄƒrile.', // from v2.1 added 15.7.2015
			'apllyAll'        : 'AplicÄƒ pentru toate',
			'name'            : 'Nume',
			'size'            : 'MÄƒrime',
			'perms'           : 'Permisiuni',
			'modify'          : 'Modificat la',
			'kind'            : 'Tip',
			'read'            : 'citire',
			'write'           : 'scriere',
			'noaccess'        : 'acces interzis',
			'and'             : 'È™i',
			'unknown'         : 'necunoscut',
			'selectall'       : 'Alege toate fiÈ™ierele',
			'selectfiles'     : 'Alege fiÈ™ier(e)',
			'selectffile'     : 'Alege primul fiÈ™ier',
			'selectlfile'     : 'Alege ultimul fiÈ™ier',
			'viewlist'        : 'Vezi ca listÄƒ',
			'viewicons'       : 'Vezi ca icoane',
			'places'          : 'Locuri',
			'calc'            : 'CalculeazÄƒ',
			'path'            : 'Cale',
			'aliasfor'        : 'Alias pentru',
			'locked'          : 'Securizat',
			'dim'             : 'Dimensiuni',
			'files'           : 'FiÈ™iere',
			'folders'         : 'Dosare',
			'items'           : 'Elemente',
			'yes'             : 'da',
			'no'              : 'nu',
			'link'            : 'Link',
			'searcresult'     : 'Rezultatele cÄƒutÄƒrii',
			'selected'        : 'elemente alese',
			'about'           : 'Despre',
			'shortcuts'       : 'ScurtÄƒturi',
			'help'            : 'Ajutor',
			'webfm'           : 'Manager web pentru fiÈ™iere',
			'ver'             : 'Versiune',
			'protocolver'     : 'versiune protocol',
			'homepage'        : 'Pagina proiectului',
			'docs'            : 'DocumentaÈ›ie',
			'github'          : 'Fork nou pe Github',
			'twitter'         : 'UrmÄƒreÈ™te-ne pe twitter',
			'facebook'        : 'AlÄƒtura-te pe facebook',
			'team'            : 'Echipa',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Icoane',
			'dontforget'      : 'È™i nu uita sÄƒ-È›i iei prosopul',
			'shortcutsof'     : 'ScurtÄƒturile sunt dezactivate',
			'dropFiles'       : 'DÄƒ drumul fiÈ™ierelor aici',
			'or'              : 'sau',
			'selectForUpload' : 'Alege fiÈ™iere pentru a le urca',
			'moveFiles'       : 'MutÄƒ fiÈ™iere',
			'copyFiles'       : 'CopiazÄƒ fiÈ™iere',
			'rmFromPlaces'    : 'È˜terge din locuri',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'ScalÄƒ',
			'width'           : 'LÄƒÈ›ime',
			'height'          : 'ÃŽnÄƒlÈ›ime',
			'resize'          : 'RedimensioneazÄƒ',
			'crop'            : 'DecupeazÄƒ',
			'rotate'          : 'RoteÈ™te',
			'rotate-cw'       : 'RoteÈ™te cu 90Â° Ã®n sensul ceasului',
			'rotate-ccw'      : 'RoteÈ™te cu 90Â° Ã®n sensul invers ceasului',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'ÃŽncarcÄƒ volum din reÈ›ea', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'GazdÄƒ', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilizator', // added 18.04.2012
			'pass'                : 'ParolÄƒ', // added 18.04.2012
			'confirmUnmount'      : 'Vrei sÄƒ elimini volumul $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drag&drop sau lipeÈ™te din browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drag&drop sau lipeÈ™te fiÈ™iere aici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodare', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ÈšintÄƒ: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'CautÄƒ dupÄƒ tipul MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Owner', // from v2.1 added 20.6.2015
			'group'           : 'Group', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Execute', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mod', // from v2.1 added 20.6.2015

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Necunoscut',
			'kindFolder'      : 'Dosar',
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias stricat',
			// applications
			'kindApp'         : 'AplicaÈ›ie',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'Prezentare Microsoft Powerpoint',
			'kindOO'          : 'Document Open Office',
			'kindAppFlash'    : 'AplicaÈ›ie Flash',
			'kindPDF'         : 'Document Portabil (PDF)',
			'kindTorrent'     : 'FiÈ™ier Bittorrent',
			'kind7z'          : 'ArhivÄƒ 7z',
			'kindTAR'         : 'ArhivÄƒ TAR',
			'kindGZIP'        : 'ArhivÄƒ GZIP',
			'kindBZIP'        : 'ArhivÄƒ BZIP',
			'kindXZ'          : 'ArhivÄƒ XZ',
			'kindZIP'         : 'ArhivÄƒ ZIP',
			'kindRAR'         : 'ArhivÄƒ RAR',
			'kindJAR'         : 'FiÈ™ier Java JAR',
			'kindTTF'         : 'Font True Type',
			'kindOTF'         : 'Font Open Type',
			'kindRPM'         : 'Pachet RPM',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'Font SFNT',
			'kindEOT'         : 'Font Embedded Open Type',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Document text',
			'kindTextPlain'   : 'Text simplu',
			'kindPHP'         : 'SursÄƒ PHP',
			'kindCSS'         : 'FiÈ™ier de stil (CSS)',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'SursÄƒ Javascript',
			'kindRTF'         : 'Text formatat (rich text)',
			'kindC'           : 'SursÄƒ C',
			'kindCHeader'     : 'SursÄƒ C header',
			'kindCPP'         : 'SursÄƒ C++',
			'kindCPPHeader'   : 'SursÄƒ C++ header',
			'kindShell'       : 'Script terminal Unix',
			'kindPython'      : 'SursÄƒ Python',
			'kindJava'        : 'SursÄƒ Java',
			'kindRuby'        : 'SursÄƒ Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'SursÄƒ SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'SursÄƒ AWK',
			'kindCSV'         : 'Valori separate de virgulÄƒ (CSV)',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Text Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagine',
			'kindBMP'         : 'Imagine BMP',
			'kindJPEG'        : 'Imagine JPEG',
			'kindGIF'         : 'Imagine GIF',
			'kindPNG'         : 'Imagine PNG',
			'kindTIFF'        : 'Imagine TIFF',
			'kindTGA'         : 'Imagine TGA',
			'kindPSD'         : 'Imagine Adobe Photoshop',
			'kindXBITMAP'     : 'Imagine X bitmap',
			'kindPXM'         : 'Imagine Pixelmator',
			// media
			'kindAudio'       : 'Audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Playlist MP3',
			'kindVideo'       : 'Video',
			'kindVideoDV'     : 'Video DV',
			'kindVideoMPEG'   : 'Video MPEG',
			'kindVideoMPEG4'  : 'Video MPEG-4',
			'kindVideoAVI'    : 'Video AVI',
			'kindVideoMOV'    : 'Video Quick Time',
			'kindVideoWM'     : 'Video Windows Media',
			'kindVideoFlash'  : 'Video Flash',
			'kindVideoMKV'    : 'Video Matroska',
			'kindVideoOGG'    : 'Video Ogg'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/js/i18n/elfinder.hu.js                                                    0000644                 00000102776 15266052755 0015457 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Hungarian translation
 * @author GÃ¡spÃ¡r Lajos <info@glsys.eu>
 * @author karrak1
 * @version 2020-11-27
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.hu = {
		translator : 'GÃ¡spÃ¡r Lajos &lt;info@glsys.eu&gt;, karrak1',
		language   : 'Hungarian',
		direction  : 'ltr',
		dateFormat : 'Y.F.d H:i:s', // will show like: 2020.November.27 20:52:18
		fancyDateFormat : '$1 H:i', // will show like: Ma 20:52
		nonameDateFormat : 'ymd-His', // noname upload will show like: 201127-205218
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Hiba',
			'errUnknown'           : 'Ismeretlen hiba.',
			'errUnknownCmd'        : 'Ismeretlen parancs.',
			'errJqui'              : 'HibÃ¡s jQuery UI konfigurÃ¡ciÃ³. A "selectable", "draggable" Ã©s a "droppable" komponensek szÃ¼ksÃ©gesek.',
			'errNode'              : 'Az elFinder "DOM" elem lÃ©trehozÃ¡sÃ¡t igÃ©nyli.',
			'errURL'               : 'HibÃ¡s elFinder konfigurÃ¡ciÃ³! "URL" paramÃ©ter nincs megadva.',
			'errAccess'            : 'HozzÃ¡fÃ©rÃ©s megtagadva.',
			'errConnect'           : 'Nem sikerÃ¼lt csatlakozni a kiszolgÃ¡lÃ³hoz.',
			'errAbort'             : 'Kapcsolat megszakÃ­tva.',
			'errTimeout'           : 'Kapcsolat idÅ‘tÃºllÃ©pÃ©s.',
			'errNotFound'          : 'A backend nem elÃ©rhetÅ‘.',
			'errResponse'          : 'HibÃ¡s backend vÃ¡lasz.',
			'errConf'              : 'HibÃ¡s backend konfigurÃ¡ciÃ³.',
			'errJSON'              : 'PHP JSON modul nincs telepÃ­tve.',
			'errNoVolumes'         : 'Nem Ã¡llnak rendelkezÃ©sre olvashatÃ³ kÃ¶tetek.',
			'errCmdParams'         : 'Ã©rvÃ©nytelen paramÃ©terek a parancsban. ("$1")',
			'errDataNotJSON'       : 'A vÃ¡lasz nem JSON tÃ­pusÃº adat.',
			'errDataEmpty'         : 'Nem Ã©rkezett adat.',
			'errCmdReq'            : 'A backend kÃ©relem parancsnevet igÃ©nyel.',
			'errOpen'              : '"$1" megnyitÃ¡sa nem sikerÃ¼lt.',
			'errNotFolder'         : 'Az objektum nem egy mappa.',
			'errNotFile'           : 'Az objektum nem egy fÃ¡jl.',
			'errRead'              : '"$1" olvasÃ¡sa nem sikerÃ¼lt.',
			'errWrite'             : '"$1" Ã­rÃ¡sa nem sikerÃ¼lt.',
			'errPerm'              : 'EngedÃ©ly megtagadva.',
			'errLocked'            : '"$1" zÃ¡rolÃ¡s alatt van, Ã©s nem lehet Ã¡tnevezni, mozgatni vagy eltÃ¡volÃ­tani.',
			'errExists'            : '"$1" nevÅ± fÃ¡jl mÃ¡r lÃ©tezik.',
			'errInvName'           : 'Ã‰rvÃ©nytelen fÃ¡ljnÃ©v.',
			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappa nem talÃ¡lhatÃ³.',
			'errFileNotFound'      : 'FÃ¡jl nem talÃ¡lhatÃ³.',
			'errTrgFolderNotFound' : 'CÃ©l mappa nem talÃ¡lhatÃ³. ("$1")',
			'errPopup'             : 'A bÃ¶ngÃ©szÅ‘ megakadÃ¡lyozta egy felugrÃ³ ablak megnyitÃ¡sÃ¡t. A fÃ¡jl megnyitÃ¡sÃ¡t tegye lehetÅ‘vÃ© a bÃ¶ngÃ©szÅ‘ beÃ¡llitÃ¡saiban.',
			'errMkdir'             : '"$1" mappa lÃ©trehozÃ¡sa sikertelen.',
			'errMkfile'            : '"$1" fÃ¡jl lÃ©trehozÃ¡sa sikertelen.',
			'errRename'            : '"$1" Ã¡tnevezÃ©se sikertelen.',
			'errCopyFrom'          : 'FÃ¡jlok mÃ¡solÃ¡sa a kÃ¶tetrÅ‘l nem megengedett. ("$1")',
			'errCopyTo'            : 'FÃ¡jlok mÃ¡solÃ¡sa a kÃ¶tetre nem megengedett. ("$1")',
			'errMkOutLink'         : 'HivatkozÃ¡s lÃ©trehozÃ¡sa a root kÃ¶teten kÃ­vÃ¼l nem megengedett.', // from v2.1 added 03.10.2015
			'errUpload'            : 'FeltÃ¶ltÃ©si hiba.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nem sikerÃ¼lt a fÃ¡jlt feltÃ¶lteni. ($1)', // old name - errUpload
			'errUploadNoFiles'     : 'Nem talÃ¡lhatÃ³ fÃ¡jl feltÃ¶ltÃ©shez.',
			'errUploadTotalSize'   : 'Az adat meghaladja a maximÃ¡lisan megengedett mÃ©retet.', // old name - errMaxSize
			'errUploadFileSize'    : 'A fÃ¡jl meghaladja a maximÃ¡lisan megengedett mÃ©retet.', //  old name - errFileMaxSize
			'errUploadMime'        : 'A fÃ¡jltÃ­pus nem engedÃ©lyezett.',
			'errUploadTransfer'    : '"$1" transzfer hiba.',
			'errUploadTemp'        : 'Sikertelen az ideiglenes fÃ¡jl lÃ©terhezozÃ¡sa feltÃ¶ltÃ©shez.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Az objektum "$1" mÃ¡r lÃ©tezik ezen a helyen, Ã©s nem lehet cserÃ©lni mÃ¡sik tÃ­pusra', // new
			'errReplace'           : '"$1" nem cserÃ©lhetÅ‘.',
			'errSave'              : '"$1" mentÃ©se nem sikerÃ¼lt.',
			'errCopy'              : '"$1" mÃ¡solÃ¡sa nem sikerÃ¼lt.',
			'errMove'              : '"$1" Ã¡thelyezÃ©se nem sikerÃ¼lt.',
			'errCopyInItself'      : '"$1" nem mÃ¡solhatÃ³ sajÃ¡t magÃ¡ra.',
			'errRm'                : '"$1" tÃ¶rlÃ©se nem sikerÃ¼lt.',
			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ForrÃ¡sfÃ¡jl(ok) eltÃ¡volÃ­tÃ¡sa sikertelen.',
			'errExtract'           : 'Nem sikerÃ¼lt kikibontani a "$1" fÃ¡jlokat.',
			'errArchive'           : 'Nem sikerÃ¼lt lÃ©trehozni az archÃ­vumot.',
			'errArcType'           : 'Nem tÃ¡mogatott archÃ­vum tÃ­pus.',
			'errNoArchive'         : 'A fÃ¡jl nem archÃ­v, vagy nem tÃ¡mogatott archÃ­vumtÃ­pust tartalmaz.',
			'errCmdNoSupport'      : 'A backend nem tÃ¡mogatja ezt a parancsot.',
			'errReplByChild'       : 'Az â€ž$1â€� mappÃ¡t nem lehet helyettesÃ­teni egy abban talÃ¡lhatÃ³ elemmel.',
			'errArcSymlinks'       : 'BiztonsÃ¡gi okokbÃ³l az archÃ­vumok kicsomagolÃ¡sÃ¡nak megtagadÃ¡sa szimbolikus linkeket vagy fÃ¡jlokat tartalmaz, amelyek nem engedÃ©lyezettek.', // edited 24.06.2012
			'errArcMaxSize'        : 'Az archÃ­v fÃ¡jlok meghaladjÃ¡k a megengedett legnagyobb mÃ©retet.',
			'errResize'            : 'Nem lehet Ã¡tmÃ©retezni a (z) "$1".',
			'errResizeDegree'      : 'Ã‰rvÃ©nytelen forgatÃ¡si fok.',  // added 7.3.2013
			'errResizeRotate'      : 'Nem lehet elforgatni a kÃ©pet.',  // added 7.3.2013
			'errResizeSize'        : 'Ã‰rvÃ©nytelen kÃ©pmÃ©ret.',  // added 7.3.2013
			'errResizeNoChange'    : 'A kÃ©p mÃ©rete nem vÃ¡ltozott.',  // added 7.3.2013
			'errUsupportType'      : 'Nem tÃ¡mogatott fÃ¡jl tÃ­pus',
			'errNotUTF8Content'    : 'Az "$1" fÃ¡jl nincs az UTF-8-ban, Ã©s nem szerkeszthetÅ‘.',  // added 9.11.2011
			'errNetMount'          : 'Nem lehet beilleszteni a(z) "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nem tÃ¡mogatott protokoll.',     // added 17.04.2012
			'errNetMountFailed'    : 'A csatlakozÃ¡s nem sikerÃ¼lt.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host szÃ¼ksÃ©ges.', // added 18.04.2012
			'errSessionExpires'    : 'A session inaktivitÃ¡s miatt lejÃ¡rt.',
			'errCreatingTempDir'   : 'Nem lehet ideiglenes kÃ¶nyvtÃ¡rat lÃ©trehozni: "$1"',
			'errFtpDownloadFile'   : 'Nem lehet letÃ¶lteni a fÃ¡jlt az FTP-rÅ‘l: "$1"',
			'errFtpUploadFile'     : 'Nem lehet feltÃ¶lteni a fÃ¡jlt az FTP-re: "$1"',
			'errFtpMkdir'          : 'Nem sikerÃ¼lt tÃ¡voli kÃ¶nyvtÃ¡rat lÃ©trehozni az FTP-n: "$1"',
			'errArchiveExec'       : 'Hiba a fÃ¡jlok archivÃ¡lÃ¡sakor: "$1"',
			'errExtractExec'       : 'Hiba a fÃ¡jlok kibontÃ¡sakor: "$1"',
			'errNetUnMount'        : 'Nem lehet levÃ¡lasztani', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nem konvertÃ¡lhatÃ³ UTF-8-ra', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'PrÃ³bÃ¡lja ki a Google Chrome-ot, ha szeretnÃ© feltÃ¶lteni a mappÃ¡t.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'DÅ‘tÃºllÃ©pÃ©s a(z) "$1" keresÃ©se kÃ¶zben. A keresÃ©si eredmÃ©ny rÃ©szleges.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ãšj engedÃ©lyre van szÃ¼ksÃ©g.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'ArchÃ­vum lÃ©trehozÃ¡sa',
			'cmdback'      : 'Vissza',
			'cmdcopy'      : 'MÃ¡solÃ¡s',
			'cmdcut'       : 'KivÃ¡gÃ¡s',
			'cmddownload'  : 'LetÃ¶ltÃ©s',
			'cmdduplicate' : 'MÃ¡solat kÃ©szÃ­tÃ©s',
			'cmdedit'      : 'SzerkesztÃ©s',
			'cmdextract'   : 'KibontÃ¡s',
			'cmdforward'   : 'ElÅ‘re',
			'cmdgetfile'   : 'FÃ¡jlok kijelÃ¶lÃ©se',
			'cmdhelp'      : 'ErrÅ‘l a programrÃ³l...',
			'cmdhome'      : 'FÅ‘kÃ¶nyvtÃ¡r',
			'cmdinfo'      : 'TulajdonsÃ¡gok',
			'cmdmkdir'     : 'Ãšj mappa',
			'cmdmkdirin'   : 'Ãšj mappÃ¡ba', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ãšj fÃ¡jl',
			'cmdopen'      : 'MegnyitÃ¡s',
			'cmdpaste'     : 'BeillesztÃ©s',
			'cmdquicklook' : 'ElÅ‘nÃ©zet',
			'cmdreload'    : 'FrissÃ­tÃ©s',
			'cmdrename'    : 'Ã�tnevezÃ©s',
			'cmdrm'        : 'TÃ¶rlÃ©s',
			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'KeresÃ©s',
			'cmdup'        : 'UgrÃ¡s a szÃ¼lÅ‘mappÃ¡ba',
			'cmdupload'    : 'FeltÃ¶ltÃ©s',
			'cmdview'      : 'NÃ©zet',
			'cmdresize'    : 'Ã�tmÃ©retezÃ©s Ã©s forgatÃ¡s',
			'cmdsort'      : 'RendezÃ©s',
			'cmdnetmount'  : 'Csatlakoztassa a hÃ¡lÃ³zat hangerejÃ©t', // added 18.04.2012
			'cmdnetunmount': 'LevÃ¡laszt', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Helyekhez', // added 28.12.2014
			'cmdchmod'     : 'MÃ³dvÃ¡ltÃ¡s', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Mappa megnyitÃ¡sa', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ã�llÃ­tsa vissza az oszlop szÃ©lessÃ©gÃ©t', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in new window', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'BezÃ¡r',
			'btnSave'   : 'Ment',
			'btnRm'     : 'TÃ¶rÃ¶l',
			'btnApply'  : 'Alkalmaz',
			'btnCancel' : 'MÃ©gsem',
			'btnNo'     : 'Nem',
			'btnYes'    : 'Igen',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Csatlakoztat',  // added 18.04.2012
			'btnApprove': 'TovÃ¡bb $1 Ã©s jÃ³vÃ¡hagyÃ¡s', // from v2.1 added 26.04.2012
			'btnUnmount': 'LevÃ¡laszt', // from v2.1 added 30.04.2012
			'btnConv'   : 'Ã�talakÃ­t', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Itt',      // from v2.1 added 22.5.2015
			'btnVolume' : 'HangerÅ‘',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ã–sszes',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Tipus', // from v2.1 added 22.5.2015
			'btnFileName':'FÃ¡jl nÃ©v',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'MentÃ©s Ã©s KilÃ©pÃ©s', // from v2.1 added 12.6.2015
			'btnBackup' : 'BiztonsÃ¡gi mentÃ©s', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Mappa megnyitÃ¡s',
			'ntffile'     : 'FÃ¡jl megnyitÃ¡s',
			'ntfreload'   : 'A mappa tartalmÃ¡nak ÃºjratÃ¶ltÃ©se',
			'ntfmkdir'    : 'Mappa lÃ©trehozÃ¡sa',
			'ntfmkfile'   : 'FÃ¡jlok lÃ©trehozÃ¡sa',
			'ntfrm'       : 'FÃ¡jlok tÃ¶rÃ©lse',
			'ntfcopy'     : 'FÃ¡jlok mÃ¡solÃ¡sa',
			'ntfmove'     : 'FÃ¡jlok Ã¡thelyezÃ©se',
			'ntfprepare'  : 'Checking existing items',
			'ntfrename'   : 'FÃ¡jlok Ã¡tnevezÃ©se',
			'ntfupload'   : 'FÃ¡jlok feltÃ¶ltÃ©se',
			'ntfdownload' : 'FÃ¡jlok letÃ¶ltÃ©se',
			'ntfsave'     : 'FÃ¡jlok mentÃ©se',
			'ntfarchive'  : 'ArchÃ­vum lÃ©trehozÃ¡sa',
			'ntfextract'  : 'KibontÃ¡s archÃ­vumbÃ³l',
			'ntfsearch'   : 'FÃ¡jlok keresÃ©se',
			'ntfresize'   : 'KÃ©pek Ã¡tmÃ©retezÃ©se',
			'ntfsmth'     : 'CsinÃ¡l valamit >_<',
			'ntfloadimg'  : 'KÃ©p betÃ¶ltÃ©se',
			'ntfnetmount' : 'HÃ¡lÃ³zati meghajtÃ³ hozzÃ¡adÃ¡sa', // added 18.04.2012
			'ntfnetunmount': 'HÃ¡lÃ³zati meghajtÃ³ levÃ¡lasztÃ¡sa', // from v2.1 added 30.04.2012
			'ntfdim'      : 'KÃ©pmÃ©ret megÃ¡llapÃ­tÃ¡sa', // added 20.05.2013
			'ntfreaddir'  : 'A mappa adatainak olvasÃ¡sa', // from v2.1 added 01.07.2013
			'ntfurl'      : 'A link URL-jÃ©nek lekÃ©rdezÃ©se', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'A fÃ¡jlmÃ³d megvÃ¡ltoztatÃ¡sa', // from v2.1 added 20.6.2015
			'ntfpreupload': 'A feltÃ¶ltÃ¶tt fÃ¡jlnÃ©v ellenÅ‘rzÃ©se', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'FÃ¡jl lÃ©trehozÃ¡sa letÃ¶ltÃ©sre', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ismeretlen',
			'Today'       : 'Ma',
			'Yesterday'   : 'Tegnap',
			'msJan'       : 'jan',
			'msFeb'       : 'febr',
			'msMar'       : 'mÃ¡rc',
			'msApr'       : 'Ã¡pr',
			'msMay'       : 'mÃ¡j',
			'msJun'       : 'jÃºn',
			'msJul'       : 'jÃºl',
			'msAug'       : 'aug',
			'msSep'       : 'szept',
			'msOct'       : 'okt',
			'msNov'       : 'nov',
			'msDec'       : 'dec',
			'January'     : 'JanuÃ¡r',
			'February'    : 'FebruÃ¡r',
			'March'       : 'MÃ¡rcius',
			'April'       : 'Ã�prilis',
			'May'         : 'MÃ¡jus',
			'June'        : 'JÃºnius',
			'July'        : 'JÃºlius',
			'August'      : 'Augusztus',
			'September'   : 'Szeptember',
			'October'     : 'OktÃ³ber',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'VasÃ¡rnap',
			'Monday'      : 'HÃ©tfÅ‘',
			'Tuesday'     : 'Kedd',
			'Wednesday'   : 'Szerda',
			'Thursday'    : 'CsÃ¼tÃ¶rtÃ¶k',
			'Friday'      : 'PÃ©ntek',
			'Saturday'    : 'Szombat',
			'Sun'         : 'V',
			'Mon'         : 'H',
			'Tue'         : 'K',
			'Wed'         : 'Sz',
			'Thu'         : 'Cs',
			'Fri'         : 'P',
			'Sat'         : 'Szo',

			/******************************** sort variants ********************************/
			'sortname'          : 'nÃ©v szerint',
			'sortkind'          : 'by kind',
			'sortsize'          : 'mÃ©ret szerint',
			'sortdate'          : 'dÃ¡tum szerint',
			'sortFoldersFirst'  : 'ElÅ‘szÃ¶r a mappÃ¡k',
			'sortperm'          : 'engedÃ©ly alapjÃ¡n', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'mÃ³d szerint',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'tulajdonos alapjÃ¡n',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'csoportok szerint',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'MegerÅ‘sÃ­tÃ©s szÃ¼ksÃ©ges',
			'confirmRm'       : 'ValÃ³ban tÃ¶rÃ¶lni akarja a kijelÃ¶lt adatokat?<br/>Ez kÃ©sÅ‘bb nem fordÃ­thatÃ³ vissza!',
			'confirmRepl'     : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)',
			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nem UTF-8.<br/>Ã�talakÃ­tsam UTF-8-ra?<br/>A tartalom mentÃ©s utÃ¡n UTF-8 lesz..', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'MegvÃ¡ltozott.<br/>MÃ³dosÃ­tÃ¡sok elvesznek, ha nem menti el azokat.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Mindenre vonatkozik',
			'name'            : 'NÃ©v',
			'size'            : 'MÃ©ret',
			'perms'           : 'Jogok',
			'modify'          : 'MÃ³dosÃ­tva',
			'kind'            : 'TÃ­pus',
			'read'            : 'olvasÃ¡s',
			'write'           : 'Ã­rÃ¡s',
			'noaccess'        : '-',
			'and'             : 'Ã©s',
			'unknown'         : 'ismeretlen',
			'selectall'       : 'Ã–sszes kijelÃ¶lÃ©se',
			'selectfiles'     : 'FÃ¡jlok kijelÃ¶lÃ©se',
			'selectffile'     : 'ElsÅ‘ fÃ¡jl kijelÃ¶lÃ©se',
			'selectlfile'     : 'UtolsÃ³ fÃ¡jl kijelÃ¶lÃ©se',
			'viewlist'        : 'Lista nÃ©zet',
			'viewicons'       : 'Ikon nÃ©zet',
			'viewSmall'       : 'Small icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Helyek',
			'calc'            : 'KiszÃ¡mÃ­tja',
			'path'            : 'Ãštvonal',
			'aliasfor'        : 'CÃ©l',
			'locked'          : 'ZÃ¡rolt',
			'dim'             : 'MÃ©retek',
			'files'           : 'FÃ¡jlok',
			'folders'         : 'MappÃ¡k',
			'items'           : 'Elemek',
			'yes'             : 'igen',
			'no'              : 'nem',
			'link'            : 'Parancsikon',
			'searcresult'     : 'KeresÃ©s eredmÃ©nye',
			'selected'        : 'kijelÃ¶lt elemek',
			'about'           : 'NÃ©vjegy',
			'shortcuts'       : 'GyorsbillenytyÅ±k',
			'help'            : 'SÃºgÃ³',
			'webfm'           : 'Web file manager',
			'ver'             : 'VerziÃ³',
			'protocolver'     : 'protokol verziÃ³',
			'homepage'        : 'Projekt honlap',
			'docs'            : 'DokumentÃ¡ciÃ³',
			'github'          : 'Hozz lÃ©tre egy Ãºj verziÃ³t a Github-on',
			'twitter'         : 'KÃ¶vess minket a twitter-en',
			'facebook'        : 'Csatlakozz hozzÃ¡nk a facebook-on',
			'team'            : 'Csapat',
			'chiefdev'        : 'vezetÅ‘ fejlesztÅ‘',
			'developer'       : 'fejlesztÅ‘',
			'contributor'     : 'kÃ¼lsÅ‘s hozzÃ¡jÃ¡rulÃ³',
			'maintainer'      : 'karbantartÃ³',
			'translator'      : 'fordÃ­tÃ³',
			'icons'           : 'Ikonok',
			'dontforget'      : 'tÃ¶rÃ¶lkÃ¶zÅ‘t ne felejts el hozni!',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'FÃ¡jlok dobÃ¡sa ide',
			'or'              : 'vagy',
			'selectForUpload' : 'fÃ¡jlok bÃ¶ngÃ©szÃ©se',
			'moveFiles'       : 'FÃ¡jlok Ã¡thelyezÃ©se',
			'copyFiles'       : 'FÃ¡jlok mÃ¡solÃ¡sa',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'TÃ¡volÃ­tsa el a helyekrÅ‘l',
			'aspectRatio'     : 'OldalarÃ¡ny',
			'scale'           : 'SkÃ¡la',
			'width'           : 'SzÃ©lessÃ©g',
			'height'          : 'MagassÃ¡g',
			'resize'          : 'Ã�tmÃ©retezÃ©s',
			'crop'            : 'VÃ¡g',
			'rotate'          : 'Forgat',
			'rotate-cw'       : 'Forgassa el 90 fokkal',
			'rotate-ccw'      : 'Forgassa el 90 fokkal CCW irÃ¡nyban',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protokoll', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'FelhasznÃ¡lÃ³', // added 18.04.2012
			'pass'                : 'JelszÃ³', // added 18.04.2012
			'confirmUnmount'      : 'LevÃ¡lasztod $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'FÃ¡jlok dobÃ¡sa vagy beillesztÃ©se a bÃ¶ngÃ©szÅ‘bÅ‘l', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'KÃ³dolÃ¡s', // from v2.1 added 19.12.2014
			'locale'          : 'Nyelv',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'CÃ©l: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'KeresÃ©s a MIME tÃ­pus bevitele alapjÃ¡n', // from v2.1 added 22.5.2015
			'owner'           : 'Tulajdonos', // from v2.1 added 20.6.2015
			'group'           : 'Csoport', // from v2.1 added 20.6.2015
			'other'           : 'EgyÃ©b', // from v2.1 added 20.6.2015
			'execute'         : 'VÃ©grehajt', // from v2.1 added 20.6.2015
			'perm'            : 'EngedÃ©ly', // from v2.1 added 20.6.2015
			'mode'            : 'MÃ³d', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'A mappa Ã¼res', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'A mappa Ã¼res\\Elem eldobÃ¡sa', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'A mappa Ã¼res\\HosszÃº koppintÃ¡s elemek hozzÃ¡adÃ¡sÃ¡hoz', // from v2.1.6 added 30.12.2015
			'quality'         : 'MinÅ‘sÃ©g', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'MozgatÃ¡s fel',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL-link letÃ¶ltÃ©se', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'KivÃ¡lasztott elemek ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Mappa ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Offline hozzÃ¡fÃ©rÃ©s engedÃ©lyezÃ©se', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'ÃšjrahitelesÃ­tÃ©shez', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Most betÃ¶lt...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'TÃ¶bb fÃ¡jl megnyitÃ¡sa', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'MegprÃ³bÃ¡lja megnyitni a $1 fÃ¡jlokat. Biztosan meg akarja nyitni a bÃ¶ngÃ©szÅ‘ben?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 elemet vÃ¡lasztott ki.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 elem van a vÃ¡gÃ³lapon.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar settings', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 lines left.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ismeretlen',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappa',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Parancsikon',
			'kindAliasBroken' : 'HibÃ¡s parancsikon',
			// applications
			'kindApp'         : 'AlkalmazÃ¡s',
			'kindPostscript'  : 'Postscript dokumentum',
			'kindMsOffice'    : 'Microsoft Office dokumentum',
			'kindMsWord'      : 'Microsoft Word dokumentum',
			'kindMsExcel'     : 'Microsoft Excel dokumentum',
			'kindMsPP'        : 'Microsoft Powerpoint bemutatÃ³',
			'kindOO'          : 'Open Office dokumentum',
			'kindAppFlash'    : 'Flash alkalmazÃ¡s',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent fÃ¡jl',
			'kind7z'          : '7z archÃ­vum',
			'kindTAR'         : 'TAR archÃ­vum',
			'kindGZIP'        : 'GZIP archÃ­vum',
			'kindBZIP'        : 'BZIP archÃ­vum',
			'kindXZ'          : 'XZ archÃ­vum',
			'kindZIP'         : 'ZIP archÃ­vum',
			'kindRAR'         : 'RAR archÃ­vum',
			'kindJAR'         : 'Java JAR fÃ¡jl',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM csomag',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'SzÃ¶veges dokumentum',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP forrÃ¡skÃ³d',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML dokumentum',
			'kindJS'          : 'Javascript forrÃ¡skÃ³d',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C forrÃ¡skÃ³d',
			'kindCHeader'     : 'C header forrÃ¡skÃ³d',
			'kindCPP'         : 'C++ forrÃ¡skÃ³d',
			'kindCPPHeader'   : 'C++ header forrÃ¡skÃ³d',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python forrÃ¡skÃ³d',
			'kindJava'        : 'Java forrÃ¡skÃ³d',
			'kindRuby'        : 'Ruby forrÃ¡skÃ³d',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL forrÃ¡skÃ³d',
			'kindXML'         : 'XML dokumentum',
			'kindAWK'         : 'AWK forrÃ¡skÃ³d',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML dokumentum',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'KÃ©p',
			'kindBMP'         : 'BMP kÃ©p',
			'kindJPEG'        : 'JPEG kÃ©p',
			'kindGIF'         : 'GIF kÃ©p',
			'kindPNG'         : 'PNG kÃ©p',
			'kindTIFF'        : 'TIFF kÃ©p',
			'kindTGA'         : 'TGA kÃ©p',
			'kindPSD'         : 'Adobe Photoshop kÃ©p',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'HangfÃ¡jl',
			'kindAudioMPEG'   : 'MPEG hangfÃ¡jl',
			'kindAudioMPEG4'  : 'MPEG-4 hangfÃ¡jl',
			'kindAudioMIDI'   : 'MIDI hangfÃ¡jl',
			'kindAudioOGG'    : 'Ogg Vorbis hangfÃ¡jl',
			'kindAudioWAV'    : 'WAV hangfÃ¡jl',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Film',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));

  includes/File_manager/lib/js/i18n/elfinder.pl.js                                                    0000644                 00000103647 15266052755 0015454 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Polskie tÅ‚umaczenie
 * @author Marcin MikoÅ‚ajczyk <marcin@pjwstk.edu.pl>
 * @author BogusÅ‚aw ZiÄ™ba <bobi@poczta.fm>
 * @version 2020-03-29
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.pl = {
		translator : 'Marcin MikoÅ‚ajczyk &lt;marcin@pjwstk.edu.pl&gt;, BogusÅ‚aw ZiÄ™ba &lt;bobi@poczta.fm&gt;, BogusÅ‚aw ZiÄ™ba &lt;bobi@poczta.fm&gt;',
		language   : 'Polski',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 29.03.2020 06:58
		fancyDateFormat : '$1 H:i', // will show like: Dzisiaj 06:58
		nonameDateFormat : 'ymd-His', // noname upload will show like: 200329-065813
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'BÅ‚Ä…d',
			'errUnknown'           : 'Nieznany bÅ‚Ä…d.',
			'errUnknownCmd'        : 'Nieznane polecenie.',
			'errJqui'              : 'Niepoprawna konfiguracja jQuery UI. MuszÄ… byÄ‡ zawarte komponenty selectable, draggable i droppable.',
			'errNode'              : 'elFinder wymaga utworzenia obiektu DOM.',
			'errURL'               : 'Niepoprawna konfiguracja elFinder! Pole URL nie jest ustawione.',
			'errAccess'            : 'DostÄ™p zabroniony.',
			'errConnect'           : 'BÅ‚Ä…d poÅ‚Ä…czenia z zapleczem.',
			'errAbort'             : 'PoÅ‚Ä…czenie zostaÅ‚o przerwane.',
			'errTimeout'           : 'UpÅ‚ynÄ…Å‚ czas oczekiwania na poÅ‚Ä…czenie.',
			'errNotFound'          : 'Zaplecze nie zostaÅ‚o znalezione.',
			'errResponse'          : 'NieprawidÅ‚owa odpowiedÅº zaplecza.',
			'errConf'              : 'Niepoprawna konfiguracja zaplecza.',
			'errJSON'              : 'ModuÅ‚ PHP JSON nie jest zainstalowany.',
			'errNoVolumes'         : 'Brak moÅ¼liwoÅ›ci odczytu katalogÃ³w.',
			'errCmdParams'         : 'NieprawidÅ‚owe parametry dla polecenia "$1".',
			'errDataNotJSON'       : 'Dane nie sÄ… JSON.',
			'errDataEmpty'         : 'Dane sÄ… puste.',
			'errCmdReq'            : 'Zaplecze wymaga podania nazwy polecenia.',
			'errOpen'              : 'Nie moÅ¼na otworzyÄ‡ "$1".',
			'errNotFolder'         : 'Obiekt nie jest katalogiem.',
			'errNotFile'           : 'Obiekt nie jest plikiem.',
			'errRead'              : 'Nie moÅ¼na odczytaÄ‡ "$1".',
			'errWrite'             : 'Nie moÅ¼na zapisaÄ‡ do "$1".',
			'errPerm'              : 'Brak uprawnieÅ„.',
			'errLocked'            : '"$1" jest zablokowany i nie moÅ¼e zostaÄ‡ zmieniony, przeniesiony lub usuniÄ™ty.',
			'errExists'            : 'Plik "$1" juÅ¼ istnieje.',
			'errInvName'           : 'NieprawidÅ‚owa nazwa pliku.',
			'errInvDirname'        : 'NieprawidÅ‚owa nazwa folderu.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Nie znaleziono folderu.',
			'errFileNotFound'      : 'Plik nie zostaÅ‚ znaleziony.',
			'errTrgFolderNotFound' : 'Katalog docelowy "$1" nie zostaÅ‚ znaleziony.',
			'errPopup'             : 'PrzeglÄ…darka zablokowaÅ‚a otwarcie nowego okna. Aby otworzyÄ‡ plik, zmieÅ„ ustawienia przeglÄ…darki.',
			'errMkdir'             : 'Nie moÅ¼na utworzyÄ‡ katalogu "$1".',
			'errMkfile'            : 'Nie moÅ¼na utworzyÄ‡ pliku "$1".',
			'errRename'            : 'Nie moÅ¼na zmieniÄ‡ nazwy "$1".',
			'errCopyFrom'          : 'Kopiowanie z katalogu "$1" nie jest moÅ¼liwe.',
			'errCopyTo'            : 'Kopiowanie do katalogu "$1" nie jest moÅ¼liwe.',
			'errMkOutLink'         : 'Nie moÅ¼na utworzyÄ‡ link do zewnÄ™trznego katalogu gÅ‚Ã³wnego.', // from v2.1 added 03.10.2015
			'errUpload'            : 'BÅ‚Ä…d wysyÅ‚ania.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nie moÅ¼na wysÅ‚aÄ‡ "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nie znaleziono plikÃ³w do wysÅ‚ania.',
			'errUploadTotalSize'   : 'Przekroczono dopuszczalny rozmiar wysyÅ‚anych plikÃ³w.', // old name - errMaxSize
			'errUploadFileSize'    : 'Plik przekracza dopuszczalny rozmiar.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Niedozwolony typ pliku.',
			'errUploadTransfer'    : 'BÅ‚Ä…d przesyÅ‚ania "$1".',
			'errUploadTemp'        : 'Nie moÅ¼na wykonaÄ‡ tymczasowego pliku do przesÅ‚ania.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obiekt "$1" istnieje juÅ¼ w tej lokalizacji i nie moÅ¼e byÄ‡ zastÄ…piony przez inny typ obiektu.', // new
			'errReplace'           : 'Nie moÅ¼na zastÄ…piÄ‡ "$1".',
			'errSave'              : 'Nie moÅ¼na zapisaÄ‡ "$1".',
			'errCopy'              : 'Nie moÅ¼na skopiowaÄ‡ "$1".',
			'errMove'              : 'Nie moÅ¼na przenieÅ›Ä‡ "$1".',
			'errCopyInItself'      : 'Nie moÅ¼na skopiowaÄ‡ "$1" w miejsce jego samego.',
			'errRm'                : 'Nie moÅ¼na usunÄ…Ä‡ "$1".',
			'errTrash'             : 'Nie moÅ¼na do kosza.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nie naleÅ¼y usunÄ…Ä‡ pliku(s) ÅºrÃ³dÅ‚owy.',
			'errExtract'           : 'Nie moÅ¼na wypakowaÄ‡ plikÃ³w z "$1".',
			'errArchive'           : 'Nie moÅ¼na utworzyÄ‡ archiwum.',
			'errArcType'           : 'NieobsÅ‚ugiwany typ archiwum.',
			'errNoArchive'         : 'Plik nie jest prawidÅ‚owym typem archiwum.',
			'errCmdNoSupport'      : 'Zaplecze nie obsÅ‚uguje tego polecenia.',
			'errReplByChild'       : 'Nie moÅ¼na zastÄ…piÄ‡ katalogu "$1" elementem w nim zawartym',
			'errArcSymlinks'       : 'Ze wzglÄ™dÃ³w bezpieczeÅ„stwa rozpakowywanie archiwÃ³w zawierajÄ…cych dowiÄ…zania symboliczne (symlinks) jest niedozwolone.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archiwum przekracza maksymalny dopuszczalny rozmiar.',
			'errResize'            : 'Nie moÅ¼na zmieniÄ‡ rozmiaru "$1".',
			'errResizeDegree'      : 'NieprawidÅ‚owy stopieÅ„ obracania.',  // added 7.3.2013
			'errResizeRotate'      : 'Nie moÅ¼na obrÃ³ciÄ‡ obrazu.',  // added 7.3.2013
			'errResizeSize'        : 'NieprawidÅ‚owy rozmiar obrazu.',  // added 7.3.2013
			'errResizeNoChange'    : 'Nie zmieniono rozmiaru obrazu.',  // added 7.3.2013
			'errUsupportType'      : 'NieobsÅ‚ugiwany typ pliku.',
			'errNotUTF8Content'    : 'Plik "$1" nie jest UTF-8 i nie moÅ¼e byÄ‡ edytowany.',  // added 9.11.2011
			'errNetMount'          : 'Nie moÅ¼na zamontowaÄ‡ "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'NieobsÅ‚ugiwany protokÃ³Å‚.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montowanie nie powiodÅ‚o siÄ™.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host wymagany.', // added 18.04.2012
			'errSessionExpires'    : 'Twoja sesja wygasÅ‚a z powodu nieaktywnoÅ›ci.',
			'errCreatingTempDir'   : 'Nie moÅ¼na utworzyÄ‡ katalogu tymczasowego: "$1"',
			'errFtpDownloadFile'   : 'Nie moÅ¼na pobraÄ‡ pliku z FTP: "$1"',
			'errFtpUploadFile'     : 'Nie moÅ¼na przesÅ‚aÄ‡ pliku na serwer FTP: "$1"',
			'errFtpMkdir'          : 'Nie moÅ¼na utworzyÄ‡ zdalnego katalogu FTP: "$1"',
			'errArchiveExec'       : 'BÅ‚Ä…d podczas archiwizacji plikÃ³w: "$1"',
			'errExtractExec'       : 'BÅ‚Ä…d podczas wyodrÄ™bniania plikÃ³w: "$1"',
			'errNetUnMount'        : 'Nie moÅ¼na odmontowaÄ‡', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nie wymienialne na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'WyprÃ³buj Google Chrome, jeÅ›li chcesz przesÅ‚aÄ‡ katalog.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'UpÅ‚ynÄ…Å‚ limit czasu podczas wyszukiwania "$1". Wynik wyszukiwania jest czÄ™Å›ciowy.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Wymagana jest ponowna autoryzacja.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maks. liczba elementÃ³w do wyboru to $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nie moÅ¼na przywrÃ³ciÄ‡ z kosza. Nie moÅ¼na zidentyfikowaÄ‡ przywrÃ³ciÄ‡ docelowego.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Nie znaleziono edytora tego typu pliku.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'WystÄ…piÅ‚ bÅ‚Ä…d po stronie serwera .', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nie moÅ¼na do pustego folderu "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Jest jeszcze $1 bÅ‚Ä…d/bÅ‚Ä™dy.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'UtwÃ³rz archiwum',
			'cmdback'      : 'Wstecz',
			'cmdcopy'      : 'Kopiuj',
			'cmdcut'       : 'Wytnij',
			'cmddownload'  : 'Pobierz',
			'cmdduplicate' : 'Duplikuj',
			'cmdedit'      : 'Edytuj plik',
			'cmdextract'   : 'Wypakuj pliki z archiwum',
			'cmdforward'   : 'Dalej',
			'cmdgetfile'   : 'Wybierz pliki',
			'cmdhelp'      : 'Informacje o programie',
			'cmdhome'      : 'GÅ‚Ã³wny',
			'cmdinfo'      : 'WÅ‚aÅ›ciwoÅ›ci',
			'cmdmkdir'     : 'Nowy katalog',
			'cmdmkdirin'   : 'Do nowego katalogu', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nowy plik',
			'cmdopen'      : 'OtwÃ³rz',
			'cmdpaste'     : 'Wklej',
			'cmdquicklook' : 'PodglÄ…d',
			'cmdreload'    : 'OdÅ›wieÅ¼',
			'cmdrename'    : 'ZmieÅ„ nazwÄ™',
			'cmdrm'        : 'UsuÅ„',
			'cmdtrash'     : 'Do kosza', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'PrzywrÃ³Ä‡', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Wyszukaj pliki',
			'cmdup'        : 'PrzejdÅº do katalogu nadrzÄ™dnego',
			'cmdupload'    : 'WyÅ›lij pliki',
			'cmdview'      : 'Widok',
			'cmdresize'    : 'ZmieÅ„ rozmiar i ObrÃ³Ä‡',
			'cmdsort'      : 'Sortuj',
			'cmdnetmount'  : 'Zamontuj wolumin sieciowy', // added 18.04.2012
			'cmdnetunmount': 'Odmontuj', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Do Miejsc', // added 28.12.2014
			'cmdchmod'     : 'Zmiana trybu', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'OtwÃ³rz katalog', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Resetuj szerokoÅ›Ä‡ kolumny', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'PeÅ‚ny ekran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'PrzenieÅ›', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'OprÃ³Å¼nij folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Cofnij', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'PonÃ³w', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencje', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Zaznacz wszystko', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Odznacz wszystko', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'OdwrÃ³Ä‡ wybÃ³r', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'OtwÃ³rz w nowym oknie', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ukryj (osobiste)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zamknij',
			'btnSave'   : 'Zapisz',
			'btnRm'     : 'UsuÅ„',
			'btnApply'  : 'Zastosuj',
			'btnCancel' : 'Anuluj',
			'btnNo'     : 'Nie',
			'btnYes'    : 'Tak',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Montuj',  // added 18.04.2012
			'btnApprove': 'IdÅº do $1 & zatwierdÅº', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odmontuj', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konwertuj', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tutaj',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Wolumin',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Wszystko',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Typ MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nazwa pliku',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Zapisz & Zamknij', // from v2.1 added 12.6.2015
			'btnBackup' : 'Kopia zapasowa', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ZmieÅ„ nazwÄ™',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ZmieÅ„ nazwÄ™(Wszystkie)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Poprz ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Nast ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Zapisz Jako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otwieranie katalogu',
			'ntffile'     : 'OtwÃ³rz plik',
			'ntfreload'   : 'OdÅ›wieÅ¼ zawartoÅ›Ä‡ katalogu',
			'ntfmkdir'    : 'Tworzenie katalogu',
			'ntfmkfile'   : 'Tworzenie plikÃ³w',
			'ntfrm'       : 'Usuwanie plikÃ³w',
			'ntfcopy'     : 'Kopiowanie plikÃ³w',
			'ntfmove'     : 'Przenoszenie plikÃ³w',
			'ntfprepare'  : 'Przygotowanie do kopiowania plikÃ³w',
			'ntfrename'   : 'Zmiana nazw plikÃ³w',
			'ntfupload'   : 'WysyÅ‚anie plikÃ³w',
			'ntfdownload' : 'Pobieranie plikÃ³w',
			'ntfsave'     : 'Zapisywanie plikÃ³w',
			'ntfarchive'  : 'Tworzenie archiwum',
			'ntfextract'  : 'Wypakowywanie plikÃ³w z archiwum',
			'ntfsearch'   : 'Wyszukiwanie plikÃ³w',
			'ntfresize'   : 'Zmiana rozmiaru obrazÃ³w',
			'ntfsmth'     : 'Robienie czegoÅ› >_<',
			'ntfloadimg'  : 'Å�adowanie obrazu',
			'ntfnetmount' : 'MontaÅ¼ woluminu sieciowego', // added 18.04.2012
			'ntfnetunmount': 'OdÅ‚Ä…czanie woluminu sieciowego', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Pozyskiwanie wymiaru obrazu', // added 20.05.2013
			'ntfreaddir'  : 'Odczytywanie informacji katalogu', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Pobieranie URL linku', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Zmiana trybu pliku', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Weryfikacja nazwy przesÅ‚anego pliku', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Tworzenie pliku do pobrania', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Uzyskiwanie informacji o Å›cieÅ¼ce', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Przetwarzanie przesÅ‚anego pliku', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Wykonuje wrzucanie do kosza', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Wykonuje przywracanie z kosza', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Sprawdzanie folderu docelowego', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Cofanie poprzedniej operacji', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ponownie poprzednio cofniÄ™te', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Sprawdzanie zawartoÅ›ci', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Åšmieci', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'nieznana',
			'Today'       : 'Dzisiaj',
			'Yesterday'   : 'Wczoraj',
			'msJan'       : 'Sty',
			'msFeb'       : 'Lut',
			'msMar'       : 'Mar',
			'msApr'       : 'Kwi',
			'msMay'       : 'Maj',
			'msJun'       : 'Cze',
			'msJul'       : 'Lip',
			'msAug'       : 'Sie',
			'msSep'       : 'Wrz',
			'msOct'       : 'PaÅº',
			'msNov'       : 'Lis',
			'msDec'       : 'Gru',
			'January'     : 'StyczeÅ„',
			'February'    : 'Luty',
			'March'       : 'Marzec',
			'April'       : 'KwiecieÅ„',
			'May'         : 'Maj',
			'June'        : 'Czerwiec',
			'July'        : 'Lipiec',
			'August'      : 'SierpieÅ„',
			'September'   : 'WrzesieÅ„',
			'October'     : 'PaÅºdziernik',
			'November'    : 'Listopad',
			'December'    : 'GrudzieÅ„',
			'Sunday'      : 'Niedziela',
			'Monday'      : 'PoniedziaÅ‚ek',
			'Tuesday'     : 'Wtorek',
			'Wednesday'   : 'Åšroda',
			'Thursday'    : 'Czwartek',
			'Friday'      : 'PiÄ…tek',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Nie',
			'Mon'         : 'Pon',
			'Tue'         : 'Wto',
			'Wed'         : 'Åšro',
			'Thu'         : 'Czw',
			'Fri'         : 'PiÄ…',
			'Sat'         : 'Sob',

			/******************************** sort variants ********************************/
			'sortname'          : 'w/g nazwy',
			'sortkind'          : 'w/g typu',
			'sortsize'          : 'w/g rozmiaru',
			'sortdate'          : 'w/g daty',
			'sortFoldersFirst'  : 'katalogi pierwsze',
			'sortperm'          : 'wg/nazwy', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'wg/trybu',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'wg/wÅ‚aÅ›ciciela',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'wg/grup',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'RÃ³wnieÅ¼ drzewa katalogÃ³w',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NowyPlik.txt', // added 10.11.2015
			'untitled folder'   : 'NowyFolder',   // added 10.11.2015
			'Archive'           : 'NoweArchiwum',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NowyPlik.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 Plik',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Wymagane potwierdzenie',
			'confirmRm'       : 'Czy na pewno chcesz usunÄ…Ä‡ pliki?<br/>Tej operacji nie moÅ¼na cofnÄ…Ä‡!',
			'confirmRepl'     : 'ZastÄ…piÄ‡ stary plik nowym?',
			'confirmRest'     : 'ZamieniÄ‡ istniejÄ…cy element na pozycjÄ™ w koszu?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nie w UTF-8<br/>KonwertowaÄ‡ na UTF-8?<br/>ZawartoÅ›Ä‡ stanie siÄ™  UTF-8 poprzez zapisanie po konwersji.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Nie moÅ¼na wykryÄ‡ kodowania tego pliku. Musi byÄ‡ tymczasowo przeksztaÅ‚cony do UTF-8. <br/> ProszÄ™ wybraÄ‡ kodowanie znakÃ³w tego pliku.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'ZostaÅ‚ zmodyfikowany.<br/>Utracisz pracÄ™, jeÅ›li nie zapiszesz zmian.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Czy na pewno chcesz przenieÅ›Ä‡ elementy do kosza?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Czy na pewno chcesz przenieÅ›Ä‡ elementy do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Zastosuj do wszystkich',
			'name'            : 'Nazwa',
			'size'            : 'Rozmiar',
			'perms'           : 'Uprawnienia',
			'modify'          : 'Zmodyfikowany',
			'kind'            : 'Typ',
			'read'            : 'odczyt',
			'write'           : 'zapis',
			'noaccess'        : 'brak dostÄ™pu',
			'and'             : 'i',
			'unknown'         : 'nieznany',
			'selectall'       : 'Zaznacz wszystkie pliki',
			'selectfiles'     : 'Zaznacz plik(i)',
			'selectffile'     : 'Zaznacz pierwszy plik',
			'selectlfile'     : 'Zaznacz ostatni plik',
			'viewlist'        : 'Widok listy',
			'viewicons'       : 'Widok ikon',
			'viewSmall'       : 'MaÅ‚e ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Åšrednie ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'DuÅ¼e ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Bardzo duÅ¼e ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'Ulubione',
			'calc'            : 'Obliczanie',
			'path'            : 'ÅšcieÅ¼ka',
			'aliasfor'        : 'Alias do',
			'locked'          : 'Zablokowany',
			'dim'             : 'Wymiary',
			'files'           : 'Plik(Ã³w)',
			'folders'         : 'Katalogi',
			'items'           : 'Element(Ã³w)',
			'yes'             : 'tak',
			'no'              : 'nie',
			'link'            : 'OdnoÅ›nik',
			'searcresult'     : 'Wyniki wyszukiwania',
			'selected'        : 'zaznaczonych obiektÃ³w',
			'about'           : 'O programie',
			'shortcuts'       : 'SkrÃ³ty klawiaturowe',
			'help'            : 'Pomoc',
			'webfm'           : 'MenedÅ¼er plikÃ³w sieciowych',
			'ver'             : 'Wersja',
			'protocolver'     : 'wersja protokoÅ‚u',
			'homepage'        : 'Strona projektu',
			'docs'            : 'Dokumentacja',
			'github'          : 'Obserwuj rozwÃ³j projektu na Github',
			'twitter'         : 'ÅšledÅº nas na Twitterze',
			'facebook'        : 'DoÅ‚Ä…cz do nas na Facebooku',
			'team'            : 'ZespÃ³Å‚',
			'chiefdev'        : 'gÅ‚Ã³wny programista',
			'developer'       : 'programista',
			'contributor'     : 'wspÃ³Å‚autor',
			'maintainer'      : 'koordynator',
			'translator'      : 'tÅ‚umacz',
			'icons'           : 'Ikony',
			'dontforget'      : 'i nie zapomnij zabraÄ‡ rÄ™cznika',
			'shortcutsof'     : 'SkrÃ³ty klawiaturowe sÄ… wyÅ‚Ä…czone',
			'dropFiles'       : 'UpuÅ›Ä‡ pliki tutaj',
			'or'              : 'lub',
			'selectForUpload' : 'Wybierz pliki',
			'moveFiles'       : 'PrzenieÅ› pliki',
			'copyFiles'       : 'Kopiuj pliki',
			'restoreFiles'    : 'PrzywrÃ³Ä‡ elementy', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'UsuÅ„ z miejsc',
			'aspectRatio'     : 'Zachowaj proporcje',
			'scale'           : 'Skala',
			'width'           : 'SzerokoÅ›Ä‡',
			'height'          : 'WysokoÅ›Ä‡',
			'resize'          : 'ZmieÅ„ rozmiar',
			'crop'            : 'Przytnij',
			'rotate'          : 'ObrÃ³Ä‡',
			'rotate-cw'       : 'ObrÃ³Ä‡ 90Â° w lewo',
			'rotate-ccw'      : 'ObrÃ³Ä‡ 90Â° w prawo',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'MontaÅ¼ woluminu sieciowego', // added 18.04.2012
			'protocol'            : 'ProtokÃ³Å‚', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'UÅ¼ytkownik', // added 18.04.2012
			'pass'                : 'HasÅ‚o', // added 18.04.2012
			'confirmUnmount'      : 'Czy chcesz odmontowaÄ‡ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'UpuÅ›Ä‡ lub Wklej pliki z przeglÄ…darki', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'UpuÅ›Ä‡ lub Wklej tutaj pliki i adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodowanie', // from v2.1 added 19.12.2014
			'locale'          : 'Lokalne',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Docelowo: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Wyszukiwanie poprzez wpisanie typu MIME', // from v2.1 added 22.5.2015
			'owner'           : 'WÅ‚aÅ›ciciel', // from v2.1 added 20.6.2015
			'group'           : 'Grupa', // from v2.1 added 20.6.2015
			'other'           : 'Inne', // from v2.1 added 20.6.2015
			'execute'         : 'Wykonaj', // from v2.1 added 20.6.2015
			'perm'            : 'Uprawnienia', // from v2.1 added 20.6.2015
			'mode'            : 'Tryb', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Katalog jest pusty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Katalog jest pusty\\AUpuÅ›Ä‡ aby dodaÄ‡ pozycje', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Katalog jest pusty\\ADotknij dÅ‚uÅ¼ej aby dodaÄ‡ pozycje', // from v2.1.6 added 30.12.2015
			'quality'         : 'JakoÅ›Ä‡', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto synchronizacja',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'PrzenieÅ› w gÃ³rÄ™',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Pobierz URL linku', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Wybrane pozycje ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Katalogu', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'ZezwÃ³l na dostÄ™p offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Aby ponownie uwierzytelniÄ‡', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Teraz Å‚adujÄ™...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otwieranie wielu plikÃ³w', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'PrÃ³bujesz otworzyÄ‡ $1 plikÃ³w. Czy na pewno chcesz, aby otworzyÄ‡ w przeglÄ…darce?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Wynik wyszukiwania jest pusty', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Edytujesz plik.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Masz wybranych $1 pozycji.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Masz $1 pozycji w schowku.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Wyszukiwanie przyrostowe jest wyÅ‚Ä…cznie z bieÅ¼Ä…cego widoku.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Przywracanie', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 zakoÅ„czone', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu kontekstowe', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Obracanie strony', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Wolumin gÅ‚Ã³wny', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetuj', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Kolor tÅ‚a', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Wybierania kolorÃ³w', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Kratka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'WÅ‚Ä…czone', // from v2.1.16 added 4.10.2016
			'disabled'        : 'WyÅ‚Ä…czone', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Wyniki wyszukiwania sÄ… puste w bieÅ¼Ä…cym widoku.\\AWciÅ›nij [Enter] aby poszerzyÄ‡ zakres wyszukiwania.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Wyszukiwanie pierwszej litery brak wynikÃ³w w bieÅ¼Ä…cym widoku.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etykieta tekstowa', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 min pozostaÅ‚o', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'OtwÃ³rz ponownie z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Zapisz z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Wybierz katalog', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Wyszukiwanie pierwszej litery', // from v2.1.23 added 24.3.2017
			'presets'         : 'WstÄ™pnie ustalone', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'To zbyt wiele rzeczy, wiÄ™c nie mogÄ… byÄ‡ w koszu.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'PoleTekstowe', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'OprÃ³Å¼nij folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Brak elementÃ³w w folderze "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencje', // from v2.1.26 added 28.6.2017
			'language'        : 'Ustawienie jÄ™zyka', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Zainicjuj ustawienia zapisane w tej przeglÄ…darce', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ustawienia paska narzÄ™dzi', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... pozostaÅ‚o $1 znak(Ã³w).',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... pozostaÅ‚o $1 lini.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Suma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'PrzybliÅ¼ony rozmiar pliku', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Skoncentruj siÄ™ na elemencie dialogowym po najechaniu myszÄ…',  // from v2.1.30 added 2.11.2017
			'select'          : 'Wybierz', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'DziaÅ‚anie po wybraniu pliku', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'OtwÃ³rz za pomocÄ… ostatnio uÅ¼ywanego edytora', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'OdwrÃ³Ä‡ zaznaczenie', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Czy na pewno chcesz zmieniÄ‡ nazwÄ™ $1 wybranych elementÃ³w takich jak $2?<br/>Tego nie da siÄ™ cofnÄ…Ä‡!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'ZmieÅ„ partiami', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Liczba', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Dodaj prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Dodaj suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ZmieÅ„ rozszerzenie', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ustawienia kolumn (Widok listy)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Wszystkie zmiany widoczne natychmiast w archiwum.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Wszelkie zmiany nie bÄ™dÄ… widoczne, dopÃ³ki nie odÅ‚Ä…czysz tego woluminu.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'NastÄ™pujÄ…cy wolumin (y), zamontowany na tym urzÄ…dzeniu rÃ³wnieÅ¼ niezamontowany. Czy na pewno chcesz go odmontowaÄ‡?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informacje Wyboru', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorytmy do pokazywania hash pliku', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info ElementÃ³w (WybÃ³r Panelu Informacyjnego)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'NaciÅ›nij ponownie, aby wyjÅ›Ä‡.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Pasek narzÄ™dziowy', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Obszar Pracy', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Wszystko', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Rozmiar Ikony (PodglÄ…d ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'OtwÃ³rz zmaksymalizowane okno edytora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'PoniewaÅ¼ konwersja przez API nie jest obecnie dostÄ™pna, naleÅ¼y dokonaÄ‡ konwersji w witrynie.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konwersji musisz przesÅ‚aÄ‡ z adresem URL pozycji lub pobranym plikiem, aby zapisaÄ‡ przekonwertowany plik.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konwertuj na stronie $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integracje', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ten elFinder ma zintegrowane nastÄ™pujÄ…ce usÅ‚ugi zewnÄ™trzne. Przed uÅ¼yciem ich sprawdÅº warunki uÅ¼ytkowania, politykÄ™ prywatnoÅ›ci itp.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'PokaÅ¼ ukryte pozycje', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'PokaÅ¼/Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy plikÃ³w, ktÃ³re moÅ¼na wÅ‚Ä…czyÄ‡ za pomocÄ… "Nowy plik"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ pliku tekstowego', // from v2.1.41 added 7.8.2018
			'add'             : 'Dodaj', // from v2.1.41 added 7.8.2018
			'theme'           : 'Motyw', // from v2.1.43 added 19.10.2018
			'default'         : 'DomyÅ›lnie', // from v2.1.43 added 19.10.2018
			'description'     : 'Opis', // from v2.1.43 added 19.10.2018
			'website'         : 'Witryna', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licencja', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Tego elementu nie moÅ¼na zapisaÄ‡. Aby uniknÄ…Ä‡ utraty zmian, musisz wyeksportowaÄ‡ go na swÃ³j komputer.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Kliknij dwukrotnie plik, aby go wybraÄ‡.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'UÅ¼yj trybu peÅ‚noekranowego', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Nieznany',
			'kindRoot'        : 'GÅ‚Ã³wny Wolumin', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Katalog',
			'kindSelects'     : 'Zaznaczenie', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Utracony alias',
			// applications
			'kindApp'         : 'Aplikacja',
			'kindPostscript'  : 'Dokument Postscript',
			'kindMsOffice'    : 'Dokument Office',
			'kindMsWord'      : 'Dokument Word',
			'kindMsExcel'     : 'Dokument Excel',
			'kindMsPP'        : 'Prezentacja PowerPoint',
			'kindOO'          : 'Dokument OpenOffice',
			'kindAppFlash'    : 'Aplikacja Flash',
			'kindPDF'         : 'Dokument przenoÅ›ny PDF',
			'kindTorrent'     : 'Plik BitTorrent',
			'kind7z'          : 'Archiwum 7z',
			'kindTAR'         : 'Archiwum TAR',
			'kindGZIP'        : 'Archiwum GZIP',
			'kindBZIP'        : 'Archiwum BZIP',
			'kindXZ'          : 'Archiwum XZ',
			'kindZIP'         : 'Archiwum ZIP',
			'kindRAR'         : 'Archiwum RAR',
			'kindJAR'         : 'Plik Java JAR',
			'kindTTF'         : 'Czcionka TrueType',
			'kindOTF'         : 'Czcionka OpenType',
			'kindRPM'         : 'Pakiet RPM',
			// fonts
			'kindFont'        : 'Czcionka',
			'kindSFNT'        : 'Czcionka SFNT',
			'kindEOT'         : 'Czcionka Embedded Open Type',
			'kindWOFF'        : 'Czcionka Web Open Font Format',
			'kindWOFF2'       : 'Czcionka Web Open Font Format 2',
			// texts
			'kindText'        : 'Dokument tekstowy',
			'kindTextPlain'   : 'ZwykÅ‚y tekst',
			'kindPHP'         : 'Kod ÅºrÃ³dÅ‚owy PHP',
			'kindCSS'         : 'Kaskadowe arkusze stylÃ³w',
			'kindHTML'        : 'Dokument HTML',
			'kindJS'          : 'Kod ÅºrÃ³dÅ‚owy Javascript',
			'kindRTF'         : 'Tekst sformatowany RTF',
			'kindC'           : 'Kod ÅºrÃ³dÅ‚owy C',
			'kindCHeader'     : 'Plik nagÅ‚Ã³wka C',
			'kindCPP'         : 'Kod ÅºrÃ³dÅ‚owy C++',
			'kindCPPHeader'   : 'Plik nagÅ‚Ã³wka C++',
			'kindShell'       : 'Skrypt powÅ‚oki Unix',
			'kindPython'      : 'Kod ÅºrÃ³dÅ‚owy Python',
			'kindJava'        : 'Kod ÅºrÃ³dÅ‚owy Java',
			'kindRuby'        : 'Kod ÅºrÃ³dÅ‚owy Ruby',
			'kindPerl'        : 'Skrypt Perl',
			'kindSQL'         : 'Kod ÅºrÃ³dÅ‚owy SQL',
			'kindXML'         : 'Dokument XML',
			'kindAWK'         : 'Kod ÅºrÃ³dÅ‚owy AWK',
			'kindCSV'         : 'Tekst rozdzielany przecinkami CSV',
			'kindDOCBOOK'     : 'Dokument Docbook XML',
			'kindMarkdown'    : 'Tekst promocyjny', // added 20.7.2015
			// images
			'kindImage'       : 'Obraz',
			'kindBMP'         : 'Obraz BMP',
			'kindJPEG'        : 'Obraz JPEG',
			'kindGIF'         : 'Obraz GIF',
			'kindPNG'         : 'Obraz PNG',
			'kindTIFF'        : 'Obraz TIFF',
			'kindTGA'         : 'Obraz TGA',
			'kindPSD'         : 'Obraz Adobe Photoshop',
			'kindXBITMAP'     : 'Obraz X BitMap',
			'kindPXM'         : 'Obraz Pixelmator',
			// media
			'kindAudio'       : 'Plik dÅºwiÄ™kowy',
			'kindAudioMPEG'   : 'Plik dÅºwiÄ™kowy MPEG',
			'kindAudioMPEG4'  : 'Plik dÅºwiÄ™kowy MPEG-4',
			'kindAudioMIDI'   : 'Plik dÅºwiÄ™kowy MIDI',
			'kindAudioOGG'    : 'Plik dÅºwiÄ™kowy Ogg Vorbis',
			'kindAudioWAV'    : 'Plik dÅºwiÄ™kowy WAV',
			'AudioPlaylist'   : 'Lista odtwarzania MP3',
			'kindVideo'       : 'Plik wideo',
			'kindVideoDV'     : 'Plik wideo DV',
			'kindVideoMPEG'   : 'Plik wideo MPEG',
			'kindVideoMPEG4'  : 'Plik wideo MPEG-4',
			'kindVideoAVI'    : 'Plik wideo AVI',
			'kindVideoMOV'    : 'Plik wideo Quick Time',
			'kindVideoWM'     : 'Plik wideo Windows Media',
			'kindVideoFlash'  : 'Plik wideo Flash',
			'kindVideoMKV'    : 'Plik wideo Matroska',
			'kindVideoOGG'    : 'Plik wideo Ogg'
		}
	};
}));

                                                                                         includes/File_manager/lib/js/i18n/elfinder.sv.js                                                    0000644                 00000037204 15266052755 0015464 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Swedish translation
 * @author Gabriel Satzger <gabriel.satzger@sbg.se>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sv = {
		translator : 'Gabriel Satzger &lt;gabriel.satzger@sbg.se&gt;',
		language   : 'Svenska',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'OkÃ¤nt error.',
			'errUnknownCmd'        : 'OkÃ¤nt kommando.',
			'errJqui'              : 'Felaktig jQuery UI konfiguration. Komponenterna selectable, draggable och droppable mÃ¥ste vara inkluderade.',
			'errNode'              : 'elFinder krÃ¤ver att DOM Elementen skapats.',
			'errURL'               : 'Felaktig elFinder konfiguration! URL parametern Ã¤r inte satt.',
			'errAccess'            : 'Ã…tkomst nekad.',
			'errConnect'           : 'Kan inte ansluta till backend.',
			'errAbort'             : 'Anslutningen avbrÃ¶ts.',
			'errTimeout'           : 'Anslutningen lÃ¶pte ut.',
			'errNotFound'          : 'Backend hittades inte.',
			'errResponse'          : 'Ogiltig backend svar.',
			'errConf'              : 'Ogiltig backend konfiguration.',
			'errJSON'              : 'PHP JSON modul Ã¤r inte installerad.',
			'errNoVolumes'         : 'LÃ¤sbara volymer Ã¤r inte tillgÃ¤ngliga.',
			'errCmdParams'         : 'Ogiltiga parametrar fÃ¶r kommandot "$1".',
			'errDataNotJSON'       : 'Datan Ã¤r inte JSON.',
			'errDataEmpty'         : 'Datan Ã¤r tom.',
			'errCmdReq'            : 'Backend begÃ¤ran krÃ¤ver kommandonamn.',
			'errOpen'              : 'Kan inte Ã¶ppna "$1".',
			'errNotFolder'         : 'Objektet Ã¤r inte en mapp.',
			'errNotFile'           : 'Objektet Ã¤r inte en fil.',
			'errRead'              : 'Kan inte lÃ¤sa "$1".',
			'errWrite'             : 'Kan inte skriva till "$1".',
			'errPerm'              : 'TillstÃ¥nd nekat.',
			'errLocked'            : '"$1" Ã¤r lÃ¥st och kan inte dÃ¶pas om, flyttas eller tas bort.',
			'errExists'            : 'Fil med namn "$1" finns redan.',
			'errInvName'           : 'Ogiltigt filnamn.',
			'errFolderNotFound'    : 'Mappen hittades inte.',
			'errFileNotFound'      : 'Filen hittades inte.',
			'errTrgFolderNotFound' : 'MÃ¥lmappen "$1" hittades inte.',
			'errPopup'             : 'WebblÃ¤saren hindrade popup-fÃ¶nstret att Ã¶ppnas. Ã„ndra i webblÃ¤sarens instÃ¤llningar fÃ¶r att kunna Ã¶ppna filen.',
			'errMkdir'             : 'Kan inte skapa mappen "$1".',
			'errMkfile'            : 'Kan inte skapa filen "$1".',
			'errRename'            : 'Kan inte dÃ¶pa om "$1".',
			'errCopyFrom'          : 'Kopiera filer frÃ¥n volym "$1" tillÃ¥ts inte.',
			'errCopyTo'            : 'Kopiera filer till volym "$1" tillÃ¥ts inte.',
			'errUpload'            : 'Error vid uppladdningen.',
			'errUploadFile'        : 'Kan inte ladda upp "$1".',
			'errUploadNoFiles'     : 'Inga filer hittades fÃ¶r uppladdning.',
			'errUploadTotalSize'   : 'Data Ã¶verskrider den hÃ¶gsta tillÃ¥tna storleken.',
			'errUploadFileSize'    : 'Filen Ã¶verskrider den hÃ¶gsta tillÃ¥tna storleken.',
			'errUploadMime'        : 'OtillÃ¥ten filtyp.',
			'errUploadTransfer'    : '"$1" Ã¶verfÃ¶ringsfel.',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Kan inte spara "$1".',
			'errCopy'              : 'Kan inte kopiera "$1".',
			'errMove'              : 'Kan inte flytta "$1".',
			'errCopyInItself'      : 'Kan inte flytta "$1" till sig sjÃ¤lv.',
			'errRm'                : 'Kan inte ta bort "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Kan inte packa upp filen frÃ¥n "$1".',
			'errArchive'           : 'Kan inte skapa arkiv.',
			'errArcType'           : 'Arkivtypen stÃ¶ds inte.',
			'errNoArchive'         : 'Filen Ã¤r inte av typen arkiv.',
			'errCmdNoSupport'      : 'Backend stÃ¶der inte detta kommando.',
			'errReplByChild'       : 'Mappen â€œ$1â€� kan inte ersÃ¤ttas av ett objekt den innehÃ¥ller.',
			'errArcSymlinks'       : 'Av sÃ¤kerhetsskÃ¤l nekas arkivet att packas upp dÃ¥ det innehÃ¥ller symboliska lÃ¤nkar eller filer med ej tillÃ¥tna namn.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkivfiler Ã¶verskrider stÃ¶rsta tillÃ¥tna storlek.',
			'errResize'            : 'Kan inte Ã¤ndra storlek "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',
			'errResizeRotate'      : 'Unable to rotate image.',
			'errResizeSize'        : 'Invalid image size.',
			'errResizeNoChange'    : 'Image size not changed.',
			'errUsupportType'      : 'Filtypen stÃ¶ds inte.',
			'errNotUTF8Content'    : 'Filen "$1" Ã¤r inte i UTF-8 och kan inte redigeras.',  // added 9.11.2011
			'errNetMount'          : 'Kan inte koppla "$1".',     // added 17.04.2012
			'errNetMountNoDriver'  : 'Protokollet stÃ¶ds inte.',     // added 17.04.2012
			'errNetMountFailed'    : 'Kopplingen misslyckades.',             // added 17.04.2012
			'errNetMountHostReq'   : 'Host krÃ¤vs.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			
			/******************************* commands names ********************************/
			'cmdarchive'   : 'Skapa arkiv',
			'cmdback'      : 'Tillbaka',
			'cmdcopy'      : 'Kopiera',
			'cmdcut'       : 'Klipp ut',
			'cmddownload'  : 'Ladda ned',
			'cmdduplicate' : 'Duplicera',
			'cmdedit'      : 'Redigera fil',
			'cmdextract'   : 'Extrahera filer frÃ¥n arkiv',
			'cmdforward'   : 'FramÃ¥t',
			'cmdgetfile'   : 'VÃ¤lj filer',
			'cmdhelp'      : 'Om denna programvara',
			'cmdhome'      : 'Hem',
			'cmdinfo'      : 'Visa info',
			'cmdmkdir'     : 'Ny mapp',
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Ã–ppna',
			'cmdpaste'     : 'Klistra in',
			'cmdquicklook' : 'FÃ¶rhandsgranska',
			'cmdreload'    : 'Ladda om',
			'cmdrename'    : 'DÃ¶p om',
			'cmdrm'        : 'Radera',
			'cmdsearch'    : 'Hitta filer',
			'cmdup'        : 'GÃ¥ till Ã¶verordnade katalog',
			'cmdupload'    : 'Ladda upp filer',
			'cmdview'      : 'Visa',
			'cmdresize'    : 'Ã„ndra bildstorlek',
			'cmdsort'      : 'Sortera',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'StÃ¤ng',
			'btnSave'   : 'Spara',
			'btnRm'     : 'Ta bort',
			'btnApply'  : 'VerkstÃ¤ll',
			'btnCancel' : 'Ã…ngra',
			'btnNo'     : 'Nej',
			'btnYes'    : 'Ja',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Ã–ppnar mapp',
			'ntffile'     : 'Ã–ppnar fil',
			'ntfreload'   : 'Laddar om mappinnehÃ¥llet',
			'ntfmkdir'    : 'Skapar katalog',
			'ntfmkfile'   : 'Skapar fil',
			'ntfrm'       : 'Tar bort filer',
			'ntfcopy'     : 'Kopierar filer',
			'ntfmove'     : 'Flyttar filer',
			'ntfprepare'  : 'FÃ¶rbereder att flytta filer',
			'ntfrename'   : 'DÃ¶per om filer',
			'ntfupload'   : 'Laddar upp filer',
			'ntfdownload' : 'Laddar ner filer',
			'ntfsave'     : 'Sparar filer',
			'ntfarchive'  : 'Skapar arkiv',
			'ntfextract'  : 'Extraherar filer frÃ¥n arkiv',
			'ntfsearch'   : 'SÃ¶ker filer',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'GÃ¶r nÃ¥gonting >_<',
			'ntfloadimg'  : 'Laddar bild',
			'ntfnetmount' : 'kopplar nÃ¤tverksvolym', // added 18.04.2012
			'ntfdim'      : 'Acquiring image dimension',
			
			/************************************ dates **********************************/
			'dateUnknown' : 'okÃ¤nt',
			'Today'       : 'Idag',
			'Yesterday'   : 'IgÃ¥r',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januari',
			'February'    : 'Februari',
			'March'       : 'Mars',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'Augusti',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'SÃ¶ndag', 
			'Monday'      : 'MÃ¥ndag', 
			'Tuesday'     : 'Tisdag', 
			'Wednesday'   : 'Onsdag', 
			'Thursday'    : 'Torsdag', 
			'Friday'      : 'Fredag', 
			'Saturday'    : 'LÃ¶rdag',
			'Sun'         : 'SÃ¶n', 
			'Mon'         : 'MÃ¥n', 
			'Tue'         : 'Tis', 
			'Wed'         : 'Ons', 
			'Thu'         : 'Tor', 
			'Fri'         : 'Fre', 
			'Sat'         : 'LÃ¶r',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'efter namn', 
			'sortkind'          : 'efter sort', 
			'sortsize'          : 'efter storlek',
			'sortdate'          : 'efter datum',
			'sortFoldersFirst'  : 'Mappar fÃ¶rst', // added 22.06.2012
			
			/********************************** messages **********************************/
			'confirmReq'      : 'BekrÃ¤ftelse krÃ¤vs',
			'confirmRm'       : 'Ã„r du sÃ¤ker pÃ¥ att du vill ta bort filer? <br/> Detta kan inte Ã¥ngras!',
			'confirmRepl'     : 'ErsÃ¤tt den gamla filen med en ny?',
			'apllyAll'        : 'AnvÃ¤nd fÃ¶r alla',
			'name'            : 'Namn',
			'size'            : 'Storlek',
			'perms'           : 'RÃ¤ttigheter',
			'modify'          : 'Ã„ndrad',
			'kind'            : 'Sort',
			'read'            : 'lÃ¤s',
			'write'           : 'skriv',
			'noaccess'        : 'ingen Ã¥tkomst',
			'and'             : 'och',
			'unknown'         : 'okÃ¤nd',
			'selectall'       : 'VÃ¤lj alla filer',
			'selectfiles'     : 'VÃ¤lj fil(er)',
			'selectffile'     : 'VÃ¤lj fÃ¶rsta filen',
			'selectlfile'     : 'VÃ¤lj sista filen',
			'viewlist'        : 'Listvy',
			'viewicons'       : 'Ikonvy',
			'places'          : 'Platser',
			'calc'            : 'BerÃ¤kna', 
			'path'            : 'SÃ¶kvÃ¤g',
			'aliasfor'        : 'Alias fÃ¶r',
			'locked'          : 'LÃ¥st',
			'dim'             : 'Dimensioner',
			'files'           : 'Filer',
			'folders'         : 'Mappar',
			'items'           : 'Objekt',
			'yes'             : 'ja',
			'no'              : 'nej',
			'link'            : 'LÃ¤nk',
			'searcresult'     : 'SÃ¶kresultat',  
			'selected'        : 'valda objekt',
			'about'           : 'Om',
			'shortcuts'       : 'GenvÃ¤g',
			'help'            : 'HjÃ¤lp',
			'webfm'           : 'Webbfilhanterare',
			'ver'             : 'Version',
			'protocolver'     : 'protokolversion',
			'homepage'        : 'Projekt hemsida',
			'docs'            : 'Dokumentation',
			'github'          : 'Forka oss pÃ¥ Github',
			'twitter'         : 'FÃ¶lj oss pÃ¥ twitter',
			'facebook'        : 'FÃ¶lj oss pÃ¥ facebook',
			'team'            : 'Team',
			'chiefdev'        : 'senior utvecklare',
			'developer'       : 'utvecklare',
			'contributor'     : 'bidragsgivare',
			'maintainer'      : 'underhÃ¥llare',
			'translator'      : 'Ã¶versÃ¤ttare',
			'icons'           : 'Ikoner',
			'dontforget'      : 'och glÃ¶m inte att ta med din handduk',
			'shortcutsof'     : 'GenvÃ¤gar avaktiverade',
			'dropFiles'       : 'SlÃ¤pp filerna hÃ¤r',
			'or'              : 'eller',
			'selectForUpload' : 'VÃ¤lj filer att ladda upp',
			'moveFiles'       : 'Flytta filer',
			'copyFiles'       : 'Kopiera filer',
			'rmFromPlaces'    : 'Ta bort frÃ¥n platser',
			'aspectRatio'     : 'Aspekt ratio',
			'scale'           : 'Skala',
			'width'           : 'Bredd',
			'height'          : 'HÃ¶jd',
			'resize'          : 'Ã„ndra storlek',
			'crop'            : 'BeskÃ¤r',
			'rotate'          : 'Rotera',
			'rotate-cw'       : 'Rotera 90 grader medurs',
			'rotate-ccw'      : 'Rotera 90 grader moturs',
			'degree'          : 'Grader',
			'netMountDialogTitle' : 'Koppla nÃ¤tverksvolym', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'anvÃ¤ndare', // added 18.04.2012
			'pass'                : 'LÃ¶senord', // added 18.04.2012
			
			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'OkÃ¤nd',
			'kindFolder'      : 'Mapp',
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Trasigt alias',
			// applications
			'kindApp'         : 'Applikation',
			'kindPostscript'  : 'Postscript',
			'kindMsOffice'    : 'Microsoft Office',
			'kindMsWord'      : 'Microsoft Word',
			'kindMsExcel'     : 'Microsoft Excel',
			'kindMsPP'        : 'Microsoft Powerpoint',
			'kindOO'          : 'Open Office',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent',
			'kind7z'          : '7z',
			'kindTAR'         : 'TAR',
			'kindGZIP'        : 'GZIP',
			'kindBZIP'        : 'BZIP',
			'kindXZ'          : 'XZ',
			'kindZIP'         : 'ZIP',
			'kindRAR'         : 'RAR',
			'kindJAR'         : 'Java JAR',
			'kindTTF'         : 'True Type',
			'kindOTF'         : 'Open Type',
			'kindRPM'         : 'RPM',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT',
			'kindEOT'         : 'Embedded Open Type',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text',
			'kindTextPlain'   : 'Plain',
			'kindPHP'         : 'PHP',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C',
			'kindCHeader'     : 'C header',
			'kindCPP'         : 'C++',
			'kindCPPHeader'   : 'C++ header',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python',
			'kindJava'        : 'Java',
			'kindRuby'        : 'Ruby',
			'kindPerl'        : 'Perl',
			'kindSQL'         : 'SQL',
			'kindXML'         : 'XML',
			'kindAWK'         : 'AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML',
			// images
			'kindImage'       : 'Bild',
			'kindBMP'         : 'BMP',
			'kindJPEG'        : 'JPEG',
			'kindGIF'         : 'GIF',
			'kindPNG'         : 'PNG',
			'kindTIFF'        : 'TIFF',
			'kindTGA'         : 'TGA',
			'kindPSD'         : 'Adobe Photoshop',
			'kindXBITMAP'     : 'X bitmap',
			'kindPXM'         : 'Pixelmator',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                            includes/File_manager/lib/js/i18n/elfinder.zh_TW.js                                                 0000644                 00000102573 15266052756 0016072 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * ç¹�é«”ä¸­æ–‡ translation
 * @author Yuwei Chuang <ywchuang.tw@gmail.com>
 * @author Danny Lin <danny0838@gmail.com>
 * @author TCC <john987john987@gmail.com>
 * @author Rick Jiang <rick.jiang@aol.com&gt
 * @author Banny Tai <cssf998811@gmail.com>
 * @author Alex Lion (é˜¿åŠ›ç�…) <learnwithalex@gmail.com>
 * @version 2023-12-18
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.zh_TW = {
		translator : 'Yuwei Chuang &lt;ywchuang.tw@gmail.com&gt;, Danny Lin &lt;danny0838@gmail.com&gt;, TCC &lt;john987john987@gmail.com&gt;, Rick Jiang &lt;rick.jiang@aol.com&gt, Banny Tai &lt;cssf998811@gmail.com&gt;, Alex Lion (é˜¿åŠ›ç�…) &lt;learnwithalex@gmail.com&gt;',
		language   : 'ç¹�é«”ä¸­æ–‡',
		direction  : 'ltr',
		dateFormat : 'Y/n/j H:i', // will show like: 2023/12/4 14:29
		fancyDateFormat : '$1 H:i', // will show like: ä»Šå¤© 14:29
		nonameDateFormat : 'ymd-His', // noname upload will show like: 231204-142932
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'éŒ¯èª¤',
			'errUnknown'           : 'æœªçŸ¥çš„éŒ¯èª¤ã€‚',
			'errUnknownCmd'        : 'æœªçŸ¥çš„å‘½ä»¤ã€‚',
			'errJqui'              : 'ç„¡æ•ˆçš„ jQuery ä½¿ç”¨è€…ä»‹é�¢çµ„æ…‹ã€‚å¿…é ˆåŒ…å�« Selectableã€�draggable å�Š droppable å…ƒä»¶ã€‚',
			'errNode'              : 'å»ºç«‹ elFinder éœ€è¦� DOM å…ƒç´ ã€‚',
			'errURL'               : 'ç„¡æ•ˆçš„ elFinder çµ„æ…‹ã€‚URL é�¸é …å°šæœªè¨­å®šã€‚',
			'errAccess'            : 'æ‹’çµ•å­˜å�–ã€‚',
			'errConnect'           : 'ç„¡æ³•é€£ç·šè‡³å¾Œç«¯ã€‚',
			'errAbort'             : 'é€£ç·šä¸­æ­¢ã€‚',
			'errTimeout'           : 'é€£ç·šé€¾æ™‚ã€‚',
			'errNotFound'          : 'æ‰¾ä¸�åˆ°å¾Œç«¯ã€‚',
			'errResponse'          : 'ç„¡æ•ˆçš„å¾Œç«¯å›žæ‡‰ã€‚',
			'errConf'              : 'ç„¡æ•ˆçš„å¾Œç«¯çµ„æ…‹ã€‚',
			'errJSON'              : 'PHP JSON æ¨¡çµ„å°šæœªå®‰è£�ã€‚',
			'errNoVolumes'         : 'æ²’æœ‰å�¯ä¾›è®€å�–çš„ç£�ç¢Ÿã€‚',
			'errCmdParams'         : 'å‘½ä»¤ $1 çš„ç„¡æ•ˆå�ƒæ•¸ã€‚',
			'errDataNotJSON'       : 'è³‡æ–™ä¸�æ˜¯ JSON æ ¼å¼�ã€‚',
			'errDataEmpty'         : 'è³‡æ–™ç‚ºç©ºç™½ã€‚',
			'errCmdReq'            : 'å¾Œç«¯è¦�æ±‚éœ€è¦�å‘½ä»¤å��ç¨±ã€‚',
			'errOpen'              : 'ç„¡æ³•é–‹å•Ÿ [$1]ã€‚',
			'errNotFolder'         : 'ç‰©ä»¶ä¸�æ˜¯è³‡æ–™å¤¾ã€‚',
			'errNotFile'           : 'ç‰©ä»¶ä¸�æ˜¯æª”æ¡ˆã€‚',
			'errRead'              : 'ç„¡æ³•è®€å�– [$1]ã€‚',
			'errWrite'             : 'ç„¡æ³•å¯«å…¥ [$1]ã€‚',
			'errPerm'              : 'æ²’æœ‰ä½¿ç”¨æ¬Šé™�ã€‚',
			'errLocked'            : 'ç”±æ–¼ [$1] å·²éŽ–å®šï¼Œå› æ­¤ç„¡æ³•é‡�æ–°å‘½å��ã€�ç§»å‹•æˆ–ç§»é™¤ã€‚',
			'errExists'            : 'å��ç¨±ç‚º [$1] çš„é …ç›®å·²å­˜åœ¨ã€‚',
			'errInvName'           : 'ç„¡æ•ˆçš„æª”æ¡ˆå��ç¨±ã€‚',
			'errInvDirname'        : 'ç„¡æ•ˆçš„è³‡æ–™å¤¾å��ç¨±ã€‚',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'æ‰¾ä¸�åˆ°è³‡æ–™å¤¾ã€‚',
			'errFileNotFound'      : 'æ‰¾ä¸�åˆ°æª”æ¡ˆã€‚',
			'errTrgFolderNotFound' : 'æ‰¾ä¸�åˆ°ç›®æ¨™è³‡æ–™å¤¾ [$1]ã€‚',
			'errPopup'             : 'ç€�è¦½å™¨é˜»æ“‹äº†å½ˆå‡ºå¼�è¨Šæ�¯è¦–çª—ã€‚å¦‚éœ€é–‹å•Ÿæª”æ¡ˆï¼Œè«‹å…�è¨±ç€�è¦½å™¨é–‹å•Ÿå½ˆå‡ºå¼�è¨Šæ�¯è¦–çª—ã€‚',
			'errMkdir'             : 'ç„¡æ³•å»ºç«‹è³‡æ–™å¤¾ [$1]ã€‚',
			'errMkfile'            : 'ç„¡æ³•å»ºç«‹æª”æ¡ˆ [$1]ã€‚',
			'errRename'            : 'ç„¡æ³•é‡�æ–°å‘½å�� [$1]ã€‚',
			'errCopyFrom'          : 'ä¸�å…�è¨±å¾žç£�ç¢Ÿ $1 è¤‡è£½æª”æ¡ˆã€‚',
			'errCopyTo'            : 'ä¸�å…�è¨±å°‡æª”æ¡ˆè¤‡è£½è‡³ç£�ç¢Ÿ $1ã€‚',
			'errMkOutLink'         : 'ç„¡æ³•å»ºç«‹ç£�ç¢Ÿæ ¹ç›®éŒ„ä»¥å¤–çš„é€£çµ�ã€‚', // from v2.1 added 03.10.2015
			'errUpload'            : 'ä¸Šå‚³æ™‚ç™¼ç”ŸéŒ¯èª¤ã€‚',  // old name - errUploadCommon
			'errUploadFile'        : 'ç„¡æ³•ä¸Šå‚³ [$1]ã€‚', // old name - errUpload
			'errUploadNoFiles'     : 'æ‰¾ä¸�åˆ°è¦�ä¸Šå‚³çš„æª”æ¡ˆã€‚',
			'errUploadTotalSize'   : 'è³‡æ–™è¶…é�Žå…�è¨±çš„å¤§å°�ä¸Šé™�ã€‚', // old name - errMaxSize
			'errUploadFileSize'    : 'æª”æ¡ˆè¶…é�Žå…�è¨±çš„å¤§å°�ä¸Šé™�ã€‚', //  old name - errFileMaxSize
			'errUploadMime'        : 'ä¸�å…�è¨±çš„æª”æ¡ˆé¡žåž‹ã€‚',
			'errUploadTransfer'    : 'å‚³è¼¸ [$1] æ™‚ç™¼ç”ŸéŒ¯èª¤ã€‚',
			'errUploadTemp'        : 'ç„¡æ³•ç”¢ç”Ÿç”¨æ–¼ä¸Šå‚³æ™‚æ‰€éœ€çš„æš«å­˜æª”æ¡ˆã€‚', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'ç‰©ä»¶ [$1] å·²å­˜åœ¨æ–¼é€™å€‹ä½�ç½®ï¼Œä¸”ç„¡æ³•å°¤å…¶ä»–é¡žåž‹ç‰©ä»¶å�–ä»£ã€‚', // new
			'errReplace'           : 'ç„¡æ³•å�–ä»£ [$1]ã€‚',
			'errSave'              : 'ç„¡æ³•å„²å­˜ [$1]ã€‚',
			'errCopy'              : 'ç„¡æ³•è¤‡è£½ [$1]ã€‚',
			'errMove'              : 'ç„¡æ³•ç§»å‹• [$1]ã€‚',
			'errCopyInItself'      : 'ç„¡æ³•å°‡ [$1] ç§»å‹•è‡³ç�¾æœ‰ä½�ç½®ã€‚',
			'errRm'                : 'ç„¡æ³•ç§»é™¤ [$1]ã€‚',
			'errTrash'             : 'ç„¡æ³•ç§»è‡³å›žæ”¶æ¡¶ã€‚', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ç„¡æ³•ç§»é™¤ä¾†æº�æª”æ¡ˆã€‚',
			'errExtract'           : 'ç„¡æ³•è§£å£“ç¸® [$1] ä¸­çš„æª”æ¡ˆã€‚',
			'errArchive'           : 'ç„¡æ³•å»ºç«‹å£“ç¸®æª”ã€‚',
			'errArcType'           : 'ä¸�æ”¯æ�´çš„å£“ç¸®æª”æ ¼å¼�ã€‚',
			'errNoArchive'         : 'æª”æ¡ˆä¸�æ˜¯å£“ç¸®æª”ï¼Œæˆ–æ˜¯ä¸�æ”¯æ�´çš„å£“ç¸®æª”æ ¼å¼�ã€‚',
			'errCmdNoSupport'      : 'å¾Œç«¯ä¸�æ”¯æ�´é€™å€‹å‘½ä»¤ã€‚',
			'errReplByChild'       : 'è³‡æ–™å¤¾ [$1] ç„¡æ³•ç”±å®ƒæ‰€åŒ…å�«çš„é …ç›®å�–ä»£ã€‚',
			'errArcSymlinks'       : 'åŸºæ–¼å®‰å…¨æ€§è€ƒé‡�ï¼Œæ‹’çµ•è§£å£“ç¸®åŒ…å�«ç¬¦è™Ÿé€£çµ�æˆ–å�«æœ‰ä¸�ç¬¦è¦�å®šå��ç¨±çš„æª”æ¡ˆçš„å£“ç¸®æª”ã€‚', // edited 24.06.2012
			'errArcMaxSize'        : 'å£“ç¸®æª”å¤§å°�è¶…é�Žä¸Šé™�ã€‚',
			'errResize'            : 'ç„¡æ³•èª¿æ•´ [$1] çš„å¤§å°�ã€‚',
			'errResizeDegree'      : 'ç„¡æ•ˆçš„æ—‹è½‰è§’åº¦ã€‚',  // added 7.3.2013
			'errResizeRotate'      : 'ç„¡æ³•æ—‹è½‰åœ–ç‰‡ã€‚',  // added 7.3.2013
			'errResizeSize'        : 'ç„¡æ•ˆçš„åœ–ç‰‡å°ºå¯¸ã€‚',  // added 7.3.2013
			'errResizeNoChange'    : 'åœ–ç‰‡å°ºå¯¸æ²’æœ‰è®Šæ›´ã€‚',  // added 7.3.2013
			'errUsupportType'      : 'ä¸�æ”¯æ�´çš„æª”æ¡ˆé¡žåž‹ã€‚',
			'errNotUTF8Content'    : 'æª”æ¡ˆ [$1] ä¸�æ˜¯ UTF-8 ç·¨ç¢¼ä¸”ç„¡æ³•ç·¨è¼¯ã€‚',  // added 9.11.2011
			'errNetMount'          : 'ç„¡æ³•æŽ›æŽ¥ $1ã€‚', // added 17.04.2012
			'errNetMountNoDriver'  : 'ä¸�æ”¯æ�´çš„é€šè¨Šå�”å®šã€‚',     // added 17.04.2012
			'errNetMountFailed'    : 'ç„¡æ³•æŽ›æŽ¥ç£�ç¢Ÿã€‚',         // added 17.04.2012
			'errNetMountHostReq'   : 'éœ€è¦�è¨­å®šä¸»æ©Ÿå��ç¨±ã€‚', // added 18.04.2012
			'errSessionExpires'    : 'ç”±æ–¼é�žä½¿ç”¨ç‹€æ…‹æ™‚é–“é�Žé•·ï¼Œå› æ­¤ç›®å‰�çš„å·¥ä½œéšŽæ®µå·²åˆ°æœŸã€‚',
			'errCreatingTempDir'   : 'ç„¡æ³•å»ºç«‹æš«å­˜ç›®éŒ„: $1',
			'errFtpDownloadFile'   : 'ç„¡æ³•å¾ž FTP ä¸‹è¼‰æª”æ¡ˆ: $1',
			'errFtpUploadFile'     : 'ç„¡æ³•ä¸Šå‚³æª”æ¡ˆè‡³ FTP: $1',
			'errFtpMkdir'          : 'ç„¡æ³•é€�é�Ž FTP å»ºç«‹é� ç«¯ç›®éŒ„: $1',
			'errArchiveExec'       : 'å£“ç¸®æª”æ¡ˆæ™‚ç™¼ç”ŸéŒ¯èª¤: $1',
			'errExtractExec'       : 'è§£å£“ç¸®æª”æ¡ˆæ™‚ç™¼ç”ŸéŒ¯èª¤: $1',
			'errNetUnMount'        : 'ç„¡æ³•å�¸è¼‰ç£�ç¢Ÿã€‚', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'ç„¡æ³•è½‰æ�›ç‚º UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'å¦‚éœ€ä¸Šå‚³è³‡æ–™å¤¾ï¼Œè«‹ä½¿ç”¨æ–°å¼�ç€�è¦½å™¨ã€‚', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'æ�œå°‹ã€Œ$1ã€�é€¾æ™‚ï¼Œå› æ­¤åƒ…åˆ—å‡ºéƒ¨åˆ†æ�œå°‹çµ�æžœã€‚', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'å¿…é ˆé‡�æ–°é©—è­‰ã€‚', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'å�¯é�¸å�–çš„é …ç›®æ•¸é‡�ä¸Šé™�ç‚º $1ã€‚', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'ç„¡æ³•å¾ž [å›žæ”¶æ¡¶] é‚„åŽŸã€‚ç„¡æ³•è­˜åˆ¥é‚„åŽŸç›®æ¨™ä½�ç½®ã€‚', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'æ‰¾ä¸�åˆ°èˆ‡é€™å€‹æª”æ¡ˆé¡žåž‹é—œè�¯çš„ç·¨è¼¯å™¨ã€‚', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'ä¼ºæœ�å™¨ç«¯ç™¼ç”ŸéŒ¯èª¤ã€‚', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'ç„¡æ³•æ¸…ç©ºè³‡æ–™å¤¾ [$1]ã€‚', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'æœ‰è¶…é�Ž $1 å€‹éŒ¯èª¤ã€‚', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'æœ€å¤šå�¯ä»¥å�Œæ™‚å»ºç«‹ $1 å€‹è³‡æ–™å¤¾ã€‚', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'å»ºç«‹å£“ç¸®æª”',
			'cmdback'      : 'è¿”å›ž',
			'cmdcopy'      : 'è¤‡è£½',
			'cmdcut'       : 'å‰ªä¸‹',
			'cmddownload'  : 'ä¸‹è¼‰',
			'cmdduplicate' : 'å†�è£½',
			'cmdedit'      : 'ç·¨è¼¯æª”æ¡ˆ',
			'cmdextract'   : 'å°‡å£“ç¸®æª”è§£å£“ç¸®',
			'cmdforward'   : 'å¾€å‰�',
			'cmdgetfile'   : 'é�¸å�–æª”æ¡ˆ',
			'cmdhelp'      : 'é—œæ–¼é€™å€‹è»Ÿé«”',
			'cmdhome'      : 'æ ¹ç›®éŒ„',
			'cmdinfo'      : 'å�–å¾—é …ç›®è³‡è¨Š',
			'cmdmkdir'     : 'æ–°å¢žè³‡æ–™å¤¾',
			'cmdmkdirin'   : 'ç§»è‡³æ–°è³‡æ–™å¤¾', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'æ–°å¢žæª”æ¡ˆ',
			'cmdopen'      : 'é–‹å•Ÿ',
			'cmdpaste'     : 'è²¼ä¸Š',
			'cmdquicklook' : 'é �è¦½',
			'cmdreload'    : 'é‡�æ–°è¼‰å…¥',
			'cmdrename'    : 'é‡�æ–°å‘½å��',
			'cmdrm'        : 'åˆªé™¤',
			'cmdtrash'     : 'ç§»è‡³ [å›žæ”¶æ¡¶]', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'é‚„åŽŸ', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'å°‹æ‰¾æª”æ¡ˆ',
			'cmdup'        : 'å‰�å¾€ä¸Šä¸€å±¤è³‡æ–™å¤¾',
			'cmdupload'    : 'ä¸Šå‚³æª”æ¡ˆ',
			'cmdview'      : 'æª¢è¦–',
			'cmdresize'    : 'èª¿æ•´å¤§å°�å�Šæ—‹è½‰',
			'cmdsort'      : 'æŽ’åº�æ–¹å¼�',
			'cmdnetmount'  : 'æŽ›æŽ¥ç¶²è·¯ç£�ç¢Ÿ', // added 18.04.2012
			'cmdnetunmount': 'å�¸è¼‰', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'åŠ å…¥èµ·å§‹ä½�ç½®', // added 28.12.2014
			'cmdchmod'     : 'è®Šæ›´æ¬Šé™�', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'é–‹å•Ÿè³‡æ–™å¤¾', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'é‡�è¨­æ¬„ä½�å¯¬åº¦', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'å…¨èž¢å¹•', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ç§»å‹•', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'æ¸…ç©ºè³‡æ–™å¤¾', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'å¾©åŽŸ', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'å�–æ¶ˆå¾©åŽŸ', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'å��å¥½è¨­å®š', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'å…¨éƒ¨é�¸å�–', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'å…¨éƒ¨ä¸�é�¸', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'å��å�‘é�¸å�–', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'åœ¨æ–°è¦–çª—ä¸­é–‹å•Ÿ', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'éš±è—� (å��å¥½è¨­å®š)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'é—œé–‰',
			'btnSave'   : 'å„²å­˜',
			'btnRm'     : 'ç§»é™¤',
			'btnApply'  : 'å¥—ç”¨',
			'btnCancel' : 'å�–æ¶ˆ',
			'btnNo'     : 'å�¦',
			'btnYes'    : 'æ˜¯',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'æŽ›æŽ¥',  // added 18.04.2012
			'btnApprove': 'å‰�å¾€ $1 ä¸¦æ ¸å‡†', // from v2.1 added 26.04.2012
			'btnUnmount': 'å�¸è¼‰', // from v2.1 added 30.04.2012
			'btnConv'   : 'è½‰æ�›', // from v2.1 added 08.04.2014
			'btnCwd'    : 'ç›®å‰�ä½�ç½®',      // from v2.1 added 22.5.2015
			'btnVolume' : 'ç£�ç¢Ÿ',    // from v2.1 added 22.5.2015
			'btnAll'    : 'å…¨éƒ¨',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME é¡žåž‹', // from v2.1 added 22.5.2015
			'btnFileName':'æª”æ¡ˆå��ç¨±',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'å„²å­˜ä¸¦é—œé–‰', // from v2.1 added 12.6.2015
			'btnBackup' : 'å‚™ä»½', // fromv2.1 added 28.11.2015
			'btnRename'    : 'é‡�æ–°å‘½å��',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'å…¨éƒ¨é‡�æ–°å‘½å��', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ä¸Šä¸€é � ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'ä¸‹ä¸€é � ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'å�¦å­˜æ–°æª”', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'é–‹å•Ÿè³‡æ–™å¤¾',
			'ntffile'     : 'é–‹å•Ÿæª”æ¡ˆ',
			'ntfreload'   : 'é‡�æ–°è¼‰å…¥è³‡æ–™å¤¾å…§å®¹',
			'ntfmkdir'    : 'æ­£åœ¨å»ºç«‹è³‡æ–™å¤¾',
			'ntfmkfile'   : 'æ­£åœ¨å»ºç«‹æª”æ¡ˆ',
			'ntfrm'       : 'åˆªé™¤é …ç›®',
			'ntfcopy'     : 'è¤‡è£½é …ç›®',
			'ntfmove'     : 'ç§»å‹•é …ç›®',
			'ntfprepare'  : 'æ­£åœ¨æª¢æŸ¥ç�¾æœ‰é …ç›®',
			'ntfrename'   : 'é‡�æ–°å‘½å��æª”æ¡ˆ',
			'ntfupload'   : 'æ­£åœ¨ä¸Šå‚³æª”æ¡ˆ',
			'ntfdownload' : 'æ­£åœ¨ä¸‹è¼‰æª”æ¡ˆ',
			'ntfsave'     : 'å„²å­˜æª”æ¡ˆ',
			'ntfarchive'  : 'æ­£åœ¨å»ºç«‹å£“ç¸®æª”',
			'ntfextract'  : 'æ­£åœ¨å¾žå£“ç¸®æª”è§£å£“ç¸®æª”æ¡ˆ',
			'ntfsearch'   : 'æ­£åœ¨æ�œå°‹æª”æ¡ˆ',
			'ntfresize'   : 'æ­£åœ¨èª¿æ•´åœ–ç‰‡å°ºå¯¸',
			'ntfsmth'     : 'æ­£åœ¨è™•ç�†',
			'ntfloadimg'  : 'æ­£åœ¨è¼‰å…¥åœ–ç‰‡',
			'ntfnetmount' : 'æ­£åœ¨æŽ›æŽ¥ç¶²è·¯ç£�ç¢Ÿ', // added 18.04.2012
			'ntfnetunmount': 'æ­£åœ¨å�¸è¼‰ç¶²è·¯ç£�ç¢Ÿ', // from v2.1 added 30.04.2012
			'ntfdim'      : 'æ­£åœ¨æ“·å�–åœ–ç‰‡å°ºå¯¸', // added 20.05.2013
			'ntfreaddir'  : 'æ­£åœ¨è®€å�–è³‡æ–™å¤¾è³‡è¨Š', // from v2.1 added 01.07.2013
			'ntfurl'      : 'æ­£åœ¨å�–å¾—é€£çµ�çš„ç¶²å�€', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'æ­£åœ¨è®Šæ›´æª”æ¡ˆæ¬Šé™�', // from v2.1 added 20.6.2015
			'ntfpreupload': 'æ­£åœ¨é©—è­‰ä¸Šå‚³æª”æ¡ˆå��ç¨±', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'æ­£åœ¨å»ºç«‹å�¯ä¾›ä¸‹è¼‰çš„æª”æ¡ˆ', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'æ­£åœ¨å�–å¾—è·¯å¾‘è³‡è¨Š', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'æ­£åœ¨è™•ç�†ä¸Šå‚³çš„æª”æ¡ˆ', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'æ­£åœ¨ç§»è‡³ [å›žæ”¶æ¡¶]', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'æ­£åœ¨å¾ž [å›žæ”¶æ¡¶] é‚„åŽŸ', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'æ­£åœ¨æª¢æŸ¥ç›®æ¨™è³‡æ–™å¤¾', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'æ­£åœ¨å¾©åŽŸä¹‹å‰�çš„æ“�ä½œ', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'æ­£åœ¨å�–æ¶ˆå¾©åŽŸä¹‹å‰�çš„å¾©åŽŸæ“�ä½œ', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'æ­£åœ¨æª¢æŸ¥å…§å®¹', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'å›žæ”¶æ¡¶', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'æœªçŸ¥',
			'Today'       : 'ä»Šå¤©',
			'Yesterday'   : 'æ˜¨å¤©',
			'msJan'       : '1 æœˆ',
			'msFeb'       : '2 æœˆ',
			'msMar'       : '3 æœˆ',
			'msApr'       : '4 æœˆ',
			'msMay'       : '5 æœˆ',
			'msJun'       : '6 æœˆ',
			'msJul'       : '7 æœˆ',
			'msAug'       : '8 æœˆ',
			'msSep'       : '9 æœˆ',
			'msOct'       : '10 æœˆ',
			'msNov'       : '11 æœˆ',
			'msDec'       : '12 æœˆ',
			'January'     : '1 æœˆ',
			'February'    : '2 æœˆ',
			'March'       : '3 æœˆ',
			'April'       : '4 æœˆ',
			'May'         : '5 æœˆ',
			'June'        : '6 æœˆ',
			'July'        : '7 æœˆ',
			'August'      : '8 æœˆ',
			'September'   : '9 æœˆ',
			'October'     : '10 æœˆ',
			'November'    : '11 æœˆ',
			'December'    : '12 æœˆ',
			'Sunday'      : 'æ˜ŸæœŸæ—¥',
			'Monday'      : 'æ˜ŸæœŸä¸€',
			'Tuesday'     : 'æ˜ŸæœŸäºŒ',
			'Wednesday'   : 'æ˜ŸæœŸä¸‰',
			'Thursday'    : 'æ˜ŸæœŸå››',
			'Friday'      : 'æ˜ŸæœŸäº”',
			'Saturday'    : 'æ˜ŸæœŸå…­',
			'Sun'         : 'é€±æ—¥',
			'Mon'         : 'é€±ä¸€',
			'Tue'         : 'é€±äºŒ',
			'Wed'         : 'é€±ä¸‰',
			'Thu'         : 'é€±å››',
			'Fri'         : 'é€±äº”',
			'Sat'         : 'é€±å…­',

			/******************************** sort variants ********************************/
			'sortname'          : 'ä¾�æ“šå��ç¨±',
			'sortkind'          : 'ä¾�æ“šé¡žåž‹',
			'sortsize'          : 'ä¾�æ“šå¤§å°�',
			'sortdate'          : 'ä¾�æ“šæ—¥æœŸ',
			'sortFoldersFirst'  : 'å…ˆé¡¯ç¤ºè³‡æ–™å¤¾',
			'sortperm'          : 'ä¾�æ“šæ¬Šé™�', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'ä¾�æ“šæ¬Šé™�',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'ä¾�æ“šæ“�æœ‰è€…',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'ä¾�æ“šç¾¤çµ„',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'å�Œæ™‚å¥—ç”¨æ–¼æ¨¹ç‹€æª¢è¦–',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'æ–°å¢žæª”æ¡ˆ.txt', // added 10.11.2015
			'untitled folder'   : 'æ–°å¢žè³‡æ–™å¤¾',   // added 10.11.2015
			'Archive'           : 'æ–°å¢žå£“ç¸®æª”',  // from v2.1 added 10.11.2015
			'untitled file'     : 'æ–°å¢žæª”æ¡ˆ.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: æª”æ¡ˆ',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'æ“�ä½œç¢ºèª�è¦�æ±‚',
			'confirmRm'       : 'ç¢ºå®šè¦�æ°¸ä¹…ç§»é™¤é …ç›®ï¼Ÿ<br/>é€™é …æ“�ä½œç„¡æ³•å¾©åŽŸï¼�',
			'confirmRepl'     : 'æ˜¯å�¦è¦�ä»¥æ–°çš„é …ç›®å�–ä»£èˆŠçš„é …ç›®ï¼Ÿ(å¦‚æžœé …ç›®åŒ…å�«è³‡æ–™å¤¾ï¼Œè³‡æ–™å¤¾æœƒå�ˆä½µã€‚å¦‚éœ€å‚™ä»½å¾Œæ‰�å�–ä»£ï¼Œè«‹é»žæ“Š [å‚™ä»½]ã€‚)',
			'confirmRest'     : 'æ˜¯å�¦è¦�ä»¥ [å›žæ”¶æ¡¶] å…§çš„é …ç›®å�–ä»£ç›®å‰�é …ç›®ï¼Ÿ', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'ä¸�æ˜¯ UTF-8 ç·¨ç¢¼<br/>è½‰æ�›è‡³ UTF-8 ç·¨ç¢¼ï¼Ÿ<br/>è½‰æ�›å¾Œå„²å­˜æœƒå°‡å…§å®¹è®Šæ›´ç‚º UTF-8 ç·¨ç¢¼ã€‚', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ç„¡æ³•å�µæ¸¬é€™å€‹æª”æ¡ˆçš„å­—å…ƒç·¨ç¢¼æ–¹å¼�ã€‚é€™å€‹æª”æ¡ˆéœ€è¦�æš«æ™‚è½‰æ�›è‡³ UTF-8 ç·¨ç¢¼ä»¥é€²è¡Œç·¨è¼¯ã€‚<br/>è«‹é�¸å�–é€™å€‹æª”æ¡ˆçš„å­—å…ƒç·¨ç¢¼æ–¹å¼�ã€‚', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'é …ç›®å·²ä¿®æ”¹ã€‚<br/>å¦‚æžœä¸�å„²å­˜è®Šæ›´ï¼Œä¾¿æœƒå¤±åŽ»ä¹‹å‰�çš„å·¥ä½œæˆ�æžœã€‚', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'ç¢ºå®šè¦�å°‡é …ç›®ç§»è‡³ [å›žæ”¶æ¡¶]ï¼Ÿ', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'ç¢ºå®šè¦�å°‡é …ç›®ç§»è‡³ [$1]ï¼Ÿ', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'å…¨éƒ¨å¥—ç”¨',
			'name'            : 'å��ç¨±',
			'size'            : 'å¤§å°�',
			'perms'           : 'æ¬Šé™�',
			'modify'          : 'ä¿®æ”¹æ—¥æœŸ',
			'kind'            : 'é¡žåž‹',
			'read'            : 'è®€å�–',
			'write'           : 'å¯«å…¥',
			'noaccess'        : 'æ²’æœ‰å­˜å�–æ¬Šé™�',
			'and'             : 'å�Š',
			'unknown'         : 'æœªçŸ¥',
			'selectall'       : 'é�¸å�–å…¨éƒ¨é …ç›®',
			'selectfiles'     : 'é�¸å�–é …ç›®',
			'selectffile'     : 'é�¸å�–ç¬¬ä¸€å€‹é …ç›®',
			'selectlfile'     : 'é�¸å�–æœ€å¾Œä¸€å€‹é …ç›®',
			'viewlist'        : 'æ¸…å–®æª¢è¦–',
			'viewicons'       : 'åœ–ç¤ºæª¢è¦–',
			'viewSmall'       : 'å°�åž‹åœ–ç¤º', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'ä¸­åž‹åœ–ç¤º', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'å¤§åž‹åœ–ç¤º', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'è¶…å¤§åž‹åœ–ç¤º', // from v2.1.39 added 22.5.2018
			'places'          : 'èµ·å§‹ä½�ç½®',
			'calc'            : 'è¨ˆç®—',
			'path'            : 'è·¯å¾‘',
			'aliasfor'        : 'åˆ¥å��',
			'locked'          : 'éŽ–å®š',
			'dim'             : 'å°ºå¯¸',
			'files'           : 'æª”æ¡ˆ',
			'folders'         : 'è³‡æ–™å¤¾',
			'items'           : 'é …ç›®',
			'yes'             : 'æ˜¯',
			'no'              : 'å�¦',
			'link'            : 'é€£çµ�',
			'searcresult'     : 'æ�œå°‹çµ�æžœ',
			'selected'        : 'é�¸å�–çš„é …ç›®',
			'about'           : 'é—œæ–¼',
			'shortcuts'       : 'å¿«é€Ÿé�µ',
			'help'            : 'ä½¿ç”¨èªªæ˜Ž',
			'webfm'           : 'ç¶²é �æª”æ¡ˆç®¡ç�†åŠŸèƒ½',
			'ver'             : 'ç‰ˆæœ¬',
			'protocolver'     : 'é€šè¨Šå�”å®šç‰ˆæœ¬',
			'homepage'        : 'å°ˆæ¡ˆå��ç¨±',
			'docs'            : 'ç·šä¸Šèªªæ˜Ž',
			'github'          : 'åœ¨ GitHub ä¸Šé€²è¡Œåˆ†æ”¯é–‹ç™¼',
			'twitter'         : 'åœ¨ Twitter ä¸Šè·Ÿéš¨æˆ‘å€‘',
			'facebook'        : 'åœ¨ Facebook åŠ å…¥æˆ‘å€‘',
			'team'            : 'åœ˜éšŠ',
			'chiefdev'        : 'é¦–å¸­é–‹ç™¼è€…',
			'developer'       : 'é–‹ç™¼è€…',
			'contributor'     : 'å�ƒèˆ‡è€…',
			'maintainer'      : 'ç¶­è­·è€…',
			'translator'      : 'æœ¬åœ°åŒ–äººå“¡',
			'icons'           : 'åœ–ç¤º',
			'dontforget'      : 'è«‹è¨˜å¾—å®£å‚³é€™å€‹ç¨‹å¼�',
			'shortcutsof'     : 'å¿«é€Ÿé�µå·²å�œç”¨',
			'dropFiles'       : 'å°‡æª”æ¡ˆæ‹–æ”¾è‡³é€™è£¡',
			'or'              : 'æˆ–',
			'selectForUpload' : 'é�¸å�–æª”æ¡ˆ',
			'moveFiles'       : 'ç§»å‹•é …ç›®',
			'copyFiles'       : 'è¤‡è£½é …ç›®',
			'restoreFiles'    : 'é‚„åŽŸé …ç›®', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'å¾žèµ·å§‹ä½�ç½®ç§»é™¤',
			'aspectRatio'     : 'å¤–è§€æ¯”ä¾‹',
			'scale'           : 'ç¸®æ”¾',
			'width'           : 'å¯¬åº¦',
			'height'          : 'é«˜åº¦',
			'resize'          : 'èª¿æ•´å¤§å°�',
			'crop'            : 'è£�å‰ª',
			'rotate'          : 'æ—‹è½‰',
			'rotate-cw'       : 'é †æ™‚é‡�æ—‹è½‰ 90 åº¦',
			'rotate-ccw'      : 'é€†æ™‚é‡�æ—‹è½‰ 90 åº¦',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'æŽ›æŽ¥ç¶²è·¯ç£�ç¢Ÿ', // added 18.04.2012
			'protocol'            : 'é€šè¨Šå�”å®š', // added 18.04.2012
			'host'                : 'ä¸»æ©Ÿå��ç¨±', // added 18.04.2012
			'port'                : 'é€šè¨ŠåŸ ', // added 18.04.2012
			'user'                : 'ä½¿ç”¨è€…', // added 18.04.2012
			'pass'                : 'å¯†ç¢¼', // added 18.04.2012
			'confirmUnmount'      : 'ç¢ºå®šè¦�å�¸è¼‰ $1ï¼Ÿ',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'å¾žç€�è¦½å™¨æ‹–æ”¾æª”æ¡ˆæˆ–è²¼ä¸Šæª”æ¡ˆ', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'æ‹–æ”¾æª”æ¡ˆã€�è²¼ä¸Šç¶²å�€æˆ–åœ–ç‰‡è‡³é€™è£¡', // from v2.1 added 07.04.2014
			'encoding'        : 'ç·¨ç¢¼æ–¹å¼�', // from v2.1 added 19.12.2014
			'locale'          : 'åœ°å�€èªžè¨€',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ç›®æ¨™: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'ä¾�æ“šè¼¸å…¥çš„ MIME é¡žåž‹æ�œå°‹', // from v2.1 added 22.5.2015
			'owner'           : 'æ“�æœ‰è€…', // from v2.1 added 20.6.2015
			'group'           : 'ç¾¤çµ„', // from v2.1 added 20.6.2015
			'other'           : 'å…¶ä»–', // from v2.1 added 20.6.2015
			'execute'         : 'åŸ·è¡Œ', // from v2.1 added 20.6.2015
			'perm'            : 'æ¬Šé™�', // from v2.1 added 20.6.2015
			'mode'            : 'æ¬Šé™�', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'è³‡æ–™å¤¾ç‚ºç©º', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'è³‡æ–™å¤¾ç‚ºç©º\\Aæ‹–æ”¾ä»¥æ–°å¢žé …ç›®', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'è³‡æ–™å¤¾ç‚ºç©º\\Aé•·æŒ‰ä»¥æ–°å¢žé …ç›®', // from v2.1.6 added 30.12.2015
			'quality'         : 'å“�è³ª', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'è‡ªå‹•å�Œæ­¥',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ä¸Šç§»',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'å�–å¾—ç¶²å�€é€£çµ�', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'é�¸å�–çš„é …ç›® ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'è³‡æ–™å¤¾ ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'å…�è¨±é›¢ç·šå­˜å�–', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'é‡�æ–°é©—è­‰', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'æ­£åœ¨è¼‰å…¥...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'é–‹å•Ÿå¤šå€‹æª”æ¡ˆ', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'ç›®å‰�æ­£åœ¨å˜—è©¦é–‹å•Ÿ $1 å€‹æª”æ¡ˆã€‚ç¢ºå®šè¦�åœ¨ç€�è¦½å™¨ä¸­é–‹å•Ÿï¼Ÿ', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'æ�œå°‹ç›®æ¨™çš„æ�œå°‹çµ�æžœç‚ºç©ºã€‚', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'ç›®å‰�æ­£åœ¨ç·¨è¼¯æª”æ¡ˆã€‚', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'å·²é�¸å�– $1 å€‹é …ç›®ã€‚', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'å‰ªè²¼ç°¿ä¸­æœ‰ $1 å€‹é …ç›®ã€‚', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'åƒ…èƒ½åœ¨ç›®å‰�çš„æª¢è¦–æ–¹å¼�ä¸­é€²è¡Œç´¯åŠ æ�œå°‹ã€‚', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'é‚„åŽŸ', // from v2.1.15 added 3.8.2016
			'complete'        : '$1å·²å®Œæˆ�', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'æ“�ä½œåŠŸèƒ½è¡¨', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'æ�›é �', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ç£�ç¢Ÿæ ¹ç›®éŒ„', // from v2.1.16 added 16.9.2016
			'reset'           : 'é‡�è¨­', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'èƒŒæ™¯è‰²å½©', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'è‰²å½©é�¸æ“‡å™¨', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px æ ¼ç‹€æŽ’åˆ—', // from v2.1.16 added 4.10.2016
			'enabled'         : 'å•Ÿç”¨', // from v2.1.16 added 4.10.2016
			'disabled'        : 'å�œç”¨', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'åœ¨ç›®å‰�çš„æª¢è¦–æ–¹å¼�ä¸­æ�œå°‹çµ�æžœç‚ºç©ºã€‚\\AæŒ‰ä¸‹ Enter ä»¥æ“´å¤§æ�œå°‹ç›®æ¨™ã€‚', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'åœ¨ç›®å‰�çš„æª¢è¦–æ–¹å¼�ä¸­é¦–å€‹å­—æ¯�æ�œå°‹çš„æ�œå°‹çµ�æžœç‚ºç©ºã€‚', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'æ–‡å­—æ¨™ç±¤', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'å‰©ä¸‹ $1 åˆ†é�˜', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'ä»¥é�¸å�–çš„ç·¨ç¢¼æ–¹å¼�é‡�æ–°é–‹å•Ÿ', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'ä»¥é�¸å�–çš„ç·¨ç¢¼æ–¹å¼�å„²å­˜', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'é�¸å�–è³‡æ–™å¤¾', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'é¦–å€‹å­—æ¯�æ�œå°‹', // from v2.1.23 added 24.3.2017
			'presets'         : 'é �è¨­é›†', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'ç”±æ–¼è¦�ç§»é™¤çš„æª”æ¡ˆæ•¸é‡�è¶…é�Žä¸Šé™�ï¼Œå› æ­¤ç„¡æ³•ç§»è‡³ [å›žæ”¶æ¡¶]ã€‚', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'æ–‡å­—å�€åŸŸ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'æ¸…ç©ºè³‡æ–™å¤¾ [$1]ã€‚', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'è³‡æ–™å¤¾ $1 ä¸­æ²’æœ‰ä»»ä½•é …ç›®ã€‚', // from v2.1.25 added 22.6.2017
			'preference'      : 'å��å¥½è¨­å®š', // from v2.1.26 added 28.6.2017
			'language'        : 'ä»‹é�¢èªžè¨€', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'åˆ�å§‹åŒ–é€™å€‹ç€�è¦½å™¨ä¸­å·²å„²å­˜çš„è¨­å®š', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'å·¥å…·åˆ—è¨­å®š', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... å‰©ä¸‹ $1 å€‹å­—å…ƒã€‚',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... å‰©ä¸‹ $1 è¡Œã€‚',  // from v2.1.52 added 16.1.2020
			'sum'             : 'ç¸½è¨ˆ', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'æª”æ¡ˆæ¦‚ç•¥å¤§å°�', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'è�šç„¦æ–¼æ¸¸æ¨™æš«ç•™å°�è©±æ–¹å¡Šçš„å…ƒç´ ',  // from v2.1.30 added 2.11.2017
			'select'          : 'é�¸å�–', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'é�¸å�–æª”æ¡ˆå¾Œçš„å‹•ä½œ', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ä½¿ç”¨ä¸Šæ¬¡çš„ç·¨è¼¯å™¨é–‹å•Ÿ', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'å��å�‘é�¸å�–', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ç¢ºå®šè¦�å°‡é�¸å�–çš„é …ç›® $1 é‡�æ–°å‘½å��ç‚º $2ï¼Ÿ<br/>é€™é …æ“�ä½œç„¡æ³•å¾©åŽŸï¼�', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'æ‰¹æ¬¡é‡�æ–°å‘½å��', // from v2.1.31 added 8.12.2017
			'plusNumber'      : 'å¢žåŠ æ•¸å€¼', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'æ–°å¢žå‰�ç½®è©ž', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'æ–°å¢žå¾Œç½®è©ž', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'è®Šæ›´å‰¯æª”å��', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'æ¬„ä½�è¨­å®š (æ¸…å–®æª¢è¦–)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'å…¨éƒ¨è®Šæ›´æœƒç«‹å�³å½±éŸ¿å£“ç¸®æª”ã€‚', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'åœ¨å�¸è¼‰é€™å€‹ç£�ç¢Ÿå‰�ï¼Œä»»ä½•è®Šæ›´å�‡ä¸�æœƒç”Ÿæ•ˆã€‚', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'æŽ›æŽ¥åœ¨é€™å€‹ç£�ç¢Ÿçš„ä¸‹åˆ—ç£�ç¢Ÿç„¡æ³•å�¸è¼‰ã€‚ç¢ºå®šè¦�å�¸è¼‰é€™å€‹ç£�ç¢Ÿï¼Ÿ', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'é�¸å�–é …ç›®è³‡è¨Š', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'ç”¨æ–¼é¡¯ç¤ºæª”æ¡ˆé›œæ¹Šå€¼çš„æ¼”ç®—æ³•', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'è³‡è¨Šé …ç›® (ç”¨æ–¼é�¸å�–é …ç›®çš„è³‡è¨Šé�¢æ�¿)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'å†�æŒ‰ä¸€ä¸‹ä»¥é›¢é–‹ã€‚', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'å·¥å…·åˆ—', // from v2.1.38 added 4.4.2018
			'workspace'       : 'å·¥ä½œå�€', // from v2.1.38 added 4.4.2018
			'dialog'          : 'å°�è©±æ–¹å¡Š', // from v2.1.38 added 4.4.2018
			'all'             : 'å…¨éƒ¨', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'åœ–ç¤ºå°ºå¯¸ (åœ–ç¤ºæª¢è¦–)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'é–‹å•Ÿæœ€å¤§åŒ–ç·¨è¼¯å™¨è¦–çª—', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'ç”±æ–¼è½‰æ�› API ç›®å‰�ç„¡æ³•ä½¿ç”¨ï¼Œè«‹åœ¨ç¶²ç«™ä¸Šé€²è¡Œè½‰æ�›ã€‚', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'å®Œæˆ�è½‰æ�›å¾Œï¼Œå¿…é ˆä½¿ç”¨é …ç›®çš„ç¶²å�€ä¸Šå‚³æˆ–ä¸‹è¼‰æª”æ¡ˆä»¥å„²å­˜è½‰æ�›å¾Œçš„æª”æ¡ˆã€‚', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'åœ¨ $1 çš„ç¶²ç«™ä¸Šè½‰æ�›', // from v2.1.40 added 10.7.2018
			'integrations'    : 'æ•´å�ˆé …ç›®', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'é€™è£¡æœƒåˆ—å‡º elFinder æ•´å�ˆçš„å¤–éƒ¨æœ�å‹™ã€‚è«‹åœ¨ä½¿ç”¨ elFinder å‰�å…ˆæŸ¥çœ‹é€™äº›æ•´å�ˆé …ç›®çš„ä½¿ç”¨æ¢�æ¬¾ã€�éš±ç§�æ¬Šæ”¿ç­–ç­‰å…§å®¹ã€‚', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'é¡¯ç¤ºéš±è—�é …ç›®', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'éš±è—�éš±è—�é …ç›®', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'é¡¯ç¤º/éš±è—�éš±è—�é …ç›®', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'æ–°å¢žæª”æ¡ˆå�¯ä»¥æ–°å¢žçš„æª”æ¡ˆé¡žåž‹', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'æ–‡å­—æª”æ¡ˆé¡žåž‹', // from v2.1.41 added 7.8.2018
			'add'             : 'æ–°å¢ž', // from v2.1.41 added 7.8.2018
			'theme'           : 'ä½ˆæ™¯ä¸»é¡Œ', // from v2.1.43 added 19.10.2018
			'default'         : 'é �è¨­', // from v2.1.43 added 19.10.2018
			'description'     : 'å…§å®¹èªªæ˜Ž', // from v2.1.43 added 19.10.2018
			'website'         : 'ç¶²ç«™', // from v2.1.43 added 19.10.2018
			'author'          : 'é–‹ç™¼è€…', // from v2.1.43 added 19.10.2018
			'email'           : 'é›»å­�éƒµä»¶åœ°å�€', // from v2.1.43 added 19.10.2018
			'license'         : 'æŽˆæ¬Šæ–¹å¼�', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'é€™å€‹é …ç›®ç„¡æ³•å„²å­˜ã€‚ç‚ºé�¿å…�é�ºå¤±ç·¨è¼¯è³‡æ–™ï¼Œå¿…é ˆå°‡è³‡æ–™åŒ¯å‡ºè‡³å€‹äººè£�ç½®ã€‚', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'æŒ‰å…©ä¸‹æª”æ¡ˆä»¥é�¸å�–ã€‚', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'ä½¿ç”¨å…¨èž¢å¹•æ¨¡å¼�', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'æœªçŸ¥',
			'kindRoot'        : 'ç£�ç¢Ÿæ ¹ç›®éŒ„', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'è³‡æ–™å¤¾',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'åˆ¥å��',
			'kindAliasBroken' : 'ä¸­æ–·çš„åˆ¥å��',
			// applications
			'kindApp'         : 'æ‡‰ç”¨ç¨‹å¼�',
			'kindPostscript'  : 'PostScript æ–‡ä»¶',
			'kindMsOffice'    : 'Microsoft Office æ–‡ä»¶',
			'kindMsWord'      : 'Microsoft Word æ–‡ä»¶',
			'kindMsExcel'     : 'Microsoft Excel è©¦ç®—è¡¨',
			'kindMsPP'        : 'Microsoft Powerpoint ç°¡å ±',
			'kindOO'          : 'Open Office æ–‡ä»¶',
			'kindAppFlash'    : 'Flash æ‡‰ç”¨ç¨‹å¼�',
			'kindPDF'         : 'PDF æ–‡ä»¶',
			'kindTorrent'     : 'Bittorrent æª”æ¡ˆ',
			'kind7z'          : '7z å£“ç¸®æª”',
			'kindTAR'         : 'TAR å£“ç¸®æª”',
			'kindGZIP'        : 'GZIP å£“ç¸®æª”',
			'kindBZIP'        : 'BZIP å£“ç¸®æª”',
			'kindXZ'          : 'XZ å£“ç¸®æª”',
			'kindZIP'         : 'ZIP å£“ç¸®æª”',
			'kindRAR'         : 'RAR å£“ç¸®æª”',
			'kindJAR'         : 'Java JAR æª”æ¡ˆ',
			'kindTTF'         : 'True Type å­—åž‹',
			'kindOTF'         : 'Open Type å­—åž‹',
			'kindRPM'         : 'RPM å°�è£�æª”æ¡ˆ',
			// fonts
			'kindFont'        : 'å­—åž‹',
			'kindSFNT'        : 'SFNT å­—åž‹',
			'kindEOT'         : 'Embedded Open Type å­—åž‹',
			'kindWOFF'        : 'Web Open Font Format å­—åž‹',
			'kindWOFF2'       : 'Web Open Font Format 2 å­—åž‹',
			// texts
			'kindText'        : 'æ–‡å­—æª”æ¡ˆ',
			'kindTextPlain'   : 'ç´”æ–‡å­—',
			'kindPHP'         : 'PHP åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindCSS'         : 'éšŽå±¤å¼�æ¨£å¼�è¡¨ (CSS)',
			'kindHTML'        : 'HTML æ–‡ä»¶',
			'kindJS'          : 'JavaScript åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindRTF'         : 'RTF æ ¼å¼�',
			'kindC'           : 'C åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindCHeader'     : 'C æ¨™é ­åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindCPP'         : 'C++ åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindCPPHeader'   : 'C++ æ¨™é ­åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindShell'       : 'Unix æ®¼å±¤æŒ‡ä»¤ç¢¼',
			'kindPython'      : 'Python åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindJava'        : 'Java åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindRuby'        : 'Ruby åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindPerl'        : 'Perl æŒ‡ä»¤ç¢¼',
			'kindSQL'         : 'SQL åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindXML'         : 'XML æ–‡ä»¶',
			'kindAWK'         : 'AWK åŽŸå§‹ç¨‹å¼�ç¢¼',
			'kindCSV'         : 'é€—é»žåˆ†éš”å€¼ (CSV)',
			'kindDOCBOOK'     : 'Docbook XML æ–‡ä»¶',
			'kindMarkdown'    : 'Markdown æ–‡å­—', // added 20.7.2015
			// images
			'kindImage'       : 'åœ–ç‰‡',
			'kindBMP'         : 'BMP åœ–ç‰‡',
			'kindJPEG'        : 'JPEG åœ–ç‰‡',
			'kindGIF'         : 'GIF åœ–ç‰‡',
			'kindPNG'         : 'PNG åœ–ç‰‡',
			'kindTIFF'        : 'TIFF åœ–ç‰‡',
			'kindTGA'         : 'TGA åœ–ç‰‡',
			'kindPSD'         : 'Adobe Photoshop åœ–ç‰‡',
			'kindXBITMAP'     : 'X bitmap åœ–ç‰‡',
			'kindPXM'         : 'Pixelmator åœ–ç‰‡',
			// media
			'kindAudio'       : 'éŸ³è¨Š',
			'kindAudioMPEG'   : 'MPEG éŸ³è¨Š',
			'kindAudioMPEG4'  : 'MPEG-4 éŸ³è¨Š',
			'kindAudioMIDI'   : 'MIDI éŸ³è¨Š',
			'kindAudioOGG'    : 'Ogg Vorbis éŸ³è¨Š',
			'kindAudioWAV'    : 'WAV éŸ³è¨Š',
			'AudioPlaylist'   : 'MP3 æ’­æ”¾æ¸…å–®',
			'kindVideo'       : 'è¦–è¨Š',
			'kindVideoDV'     : 'DV å½±ç‰‡',
			'kindVideoMPEG'   : 'MPEG å½±ç‰‡',
			'kindVideoMPEG4'  : 'MPEG-4 å½±ç‰‡',
			'kindVideoAVI'    : 'AVI å½±ç‰‡',
			'kindVideoMOV'    : 'Quick Time å½±ç‰‡',
			'kindVideoWM'     : 'Windows Media å½±ç‰‡',
			'kindVideoFlash'  : 'Flash å½±ç‰‡',
			'kindVideoMKV'    : 'Matroska å½±ç‰‡',
			'kindVideoOGG'    : 'Ogg å½±ç‰‡'
		}
	};
}));

                                                                                                                                     includes/File_manager/lib/js/i18n/elfinder.hr.js                                                    0000644                 00000050713 15266052756 0015446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * hr translation
 * @version 2016-04-18
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.hr = {
		translator : '',
		language   : 'Croatian',
		direction  : 'ltr',
		dateFormat : 'd.m.Y. H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'GreÅ¡ka',
			'errUnknown'           : 'Nepoznata greÅ¡ka.',
			'errUnknownCmd'        : 'Nepoznata naredba.',
			'errJqui'              : 'Kriva jQuery UI konfiguracija. Selectable, draggable, i droppable komponente moraju biti ukljuÄ�ene.',
			'errNode'              : 'elFinder zahtjeva DOM element da bi bio stvoren.',
			'errURL'               : 'Krivo konfiguriran elFinder. Opcija URL nije postavljena.',
			'errAccess'            : 'Zabranjen pristup.',
			'errConnect'           : 'Nije moguÄ‡e spajanje na server.',
			'errAbort'             : 'Prekinuta veza.',
			'errTimeout'           : 'Veza je istekla.',
			'errNotFound'          : 'Server nije pronaÄ‘en.',
			'errResponse'          : 'Krivi odgovor servera.',
			'errConf'              : 'Krivo konfiguriran server',
			'errJSON'              : 'Nije instaliran PHP JSON modul.',
			'errNoVolumes'         : 'Disk nije dostupan.',
			'errCmdParams'         : 'Krivi parametri za naredbu "$1".',
			'errDataNotJSON'       : 'Podaci nisu tipa JSON.',
			'errDataEmpty'         : 'Nema podataka.',
			'errCmdReq'            : 'Backend request requires command name.',
			'errOpen'              : 'Ne mogu otvoriti "$1".',
			'errNotFolder'         : 'Objekt nije mapa.',
			'errNotFile'           : 'Objekt nije dokument.',
			'errRead'              : 'Ne mogu proÄ�itati "$1".',
			'errWrite'             : 'Ne mogu pisati u "$1".',
			'errPerm'              : 'Pristup zabranjen',
			'errLocked'            : '"$1" je zakljuÄ�an i ne moÅ¾e biti preimenovan, premjeÅ¡ten ili obrisan.',
			'errExists'            : 'Dokument s imenom "$1" veÄ‡ postoji.',
			'errInvName'           : 'Krivo ime dokumenta',
			'errFolderNotFound'    : 'Mapa nije pronaÄ‘ena',
			'errFileNotFound'      : 'Dokument nije pronaÄ‘en',
			'errTrgFolderNotFound' : 'Mapa "$1" nije pronaÄ‘ena',
			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
			'errMkdir'             : 'Ne mogu napraviti mapu "$1".',
			'errMkfile'            : 'Ne mogu napraviti dokument "$1".',
			'errRename'            : 'Ne mogu preimenovati "$1".',
			'errCopyFrom'          : 'Kopiranje s diska "$1" nije dozvoljeno.',
			'errCopyTo'            : 'Kopiranje na disk "$1" nije dozvoljeno.',
			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'GreÅ¡ka pri prebacivanju dokumenta na server.',  // old name - errUploadCommon
			'errUploadFile'        : 'Ne mogu prebaciti "$1" na server', // old name - errUpload
			'errUploadNoFiles'     : 'Nema dokumenata za prebacivanje na server',
			'errUploadTotalSize'   : 'Dokumenti prelaze maksimalnu dopuÅ¡tenu veliÄ�inu.', // old name - errMaxSize
			'errUploadFileSize'    : 'Dokument je prevelik.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ovaj tip dokumenta nije dopuÅ¡ten.',
			'errUploadTransfer'    : '"$1" greÅ¡ka pri prebacivanju',
			'errUploadTemp'        : 'Ne mogu napraviti privremeni dokument za prijenos na server', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
			'errReplace'           : 'Ne mogu zamijeniti "$1".',
			'errSave'              : 'Ne mogu spremiti "$1".',
			'errCopy'              : 'Ne mogu kopirati "$1".',
			'errMove'              : 'Ne mogu premjestiti "$1".',
			'errCopyInItself'      : 'Ne mogu kopirati "$1" na isto mjesto.',
			'errRm'                : 'Ne mogu ukloniti "$1".',
			'errRmSrc'             : 'Ne mogu ukloniti izvorni kod.',
			'errExtract'           : 'Unable to extract files from "$1".',
			'errArchive'           : 'Unable to create archive.',
			'errArcType'           : 'Unsupported archive type.',
			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
			'errCmdNoSupport'      : 'Backend does not support this command.',
			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 3.24.2016

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Arhiviraj',
			'cmdback'      : 'Nazad',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'IzreÅ¾i',
			'cmddownload'  : 'Preuzmi',
			'cmdduplicate' : 'Dupliciraj',
			'cmdedit'      : 'Uredi dokument',
			'cmdextract'   : 'Raspakiraj arhivu',
			'cmdforward'   : 'Naprijed',
			'cmdgetfile'   : 'Odaberi dokumente',
			'cmdhelp'      : 'O programu',
			'cmdhome'      : 'PoÄ�etak',
			'cmdinfo'      : 'Info',
			'cmdmkdir'     : 'Nova mapa',
			'cmdmkdirin'   : 'U novu mapu', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nova Ñ„Ð°Ð¹Ð»',
			'cmdopen'      : 'Otvori',
			'cmdpaste'     : 'Zalijepi',
			'cmdquicklook' : 'Pregled',
			'cmdreload'    : 'Ponovo uÄ�itaj',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'ObriÅ¡i',
			'cmdsearch'    : 'PronaÄ‘i',
			'cmdup'        : 'Roditeljska mapa',
			'cmdupload'    : 'Prebaci dokumente na server',
			'cmdview'      : 'Pregledaj',
			'cmdresize'    : 'Promjeni veliÄ�inu i rotiraj',
			'cmdsort'      : 'Sortiraj',
			'cmdnetmount'  : 'Spoji se na mreÅ¾ni disk', // added 18.04.2012
			'cmdnetunmount': 'Odspoji disk', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Otvori mapu', // from v2.1 added 13.1.2016

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zatvori',
			'btnSave'   : 'Spremi',
			'btnRm'     : 'Ukloni',
			'btnApply'  : 'Primjeni',
			'btnCancel' : 'Odustani',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Spremi i zatvori', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otvori mapu',
			'ntffile'     : 'Otvori dokument',
			'ntfreload'   : 'Ponovo uÄ�itaj sadrÅ¾aj mape',
			'ntfmkdir'    : 'Radim mapu',
			'ntfmkfile'   : 'Radim dokumente',
			'ntfrm'       : 'BriÅ¡em dokumente',
			'ntfcopy'     : 'Kopiram dokumente',
			'ntfmove'     : 'MiÄ�em dokumente',
			'ntfprepare'  : 'Priprema za kopiranje dokumenata',
			'ntfrename'   : 'Preimenuj dokumente',
			'ntfupload'   : 'Pohranjujem dokumente na server',
			'ntfdownload' : 'Preuzimam dokumente',
			'ntfsave'     : 'Spremi dokumente',
			'ntfarchive'  : 'Radim arhivu',
			'ntfextract'  : 'Extracting files from archive',
			'ntfsearch'   : 'TraÅ¾im dokumente',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something',
			'ntfloadimg'  : 'UÄ�itavam sliku',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016

			/************************************ dates **********************************/
			'dateUnknown' : 'nepoznato',
			'Today'       : 'Danas',
			'Yesterday'   : 'JuÄ�er',
			'msJan'       : 'Sij',
			'msFeb'       : 'Vel',
			'msMar'       : 'OÅ¾u',
			'msApr'       : 'Tra',
			'msMay'       : 'Svi',
			'msJun'       : 'Lip',
			'msJul'       : 'Srp',
			'msAug'       : 'Kol',
			'msSep'       : 'Ruj',
			'msOct'       : 'Lis',
			'msNov'       : 'Stu',
			'msDec'       : 'Pro',
			'January'     : 'SijeÄ�anj',
			'February'    : 'VeljaÄ�a',
			'March'       : 'OÅ¾ujak',
			'April'       : 'Travanj',
			'May'         : 'Svibanj',
			'June'        : 'Lipanj',
			'July'        : 'Srpanj',
			'August'      : 'Kolovoz',
			'September'   : 'Rujan',
			'October'     : 'Listopad',
			'November'    : 'Studeni',
			'December'    : 'Prosinac',
			'Sunday'      : 'Nedjelja',
			'Monday'      : 'Ponedjeljak',
			'Tuesday'     : 'Utorak',
			'Wednesday'   : 'Srijeda',
			'Thursday'    : 'ÄŒetvrtak',
			'Friday'      : 'Petak',
			'Saturday'    : 'Subota',
			'Sun'         : 'Ned',
			'Mon'         : 'Pon',
			'Tue'         : 'Uto',
			'Wed'         : 'Sri',
			'Thu'         : 'ÄŒet',
			'Fri'         : 'Pet',
			'Sat'         : 'Sub',

			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu',
			'sortkind'          : 'po tipu',
			'sortsize'          : 'po veliÄ�ini',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Prvo mape',

			/********************************** new items **********************************/
			'untitled file.txt' : 'NoviDokument.txt', // added 10.11.2015
			'untitled folder'   : 'NovaMapa',   // added 10.11.2015
			'Archive'           : 'NovaArhiva',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'Potvrda',
			'confirmRm'       : 'Jeste li sigurni?',
			'confirmRepl'     : 'Zamijeni stare dokumente novima?',
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'apllyAll'        : 'Primjeni na sve ',
			'name'            : 'Ime',
			'size'            : 'VeliÄ�ina',
			'perms'           : 'Dozvole',
			'modify'          : 'Modificiran',
			'kind'            : 'Tip',
			'read'            : 'Ä�itanje',
			'write'           : 'pisanje',
			'noaccess'        : 'bez pristupa',
			'and'             : 'i',
			'unknown'         : 'nepoznato',
			'selectall'       : 'Odaberi sve',
			'selectfiles'     : 'Odaberi dokument(e)',
			'selectffile'     : 'Odaberi prvi dokument',
			'selectlfile'     : 'Odaberi zadnji dokument',
			'viewlist'        : 'Lista',
			'viewicons'       : 'Ikone',
			'places'          : 'Mjesta',
			'calc'            : 'RaÄ�unaj',
			'path'            : 'Put',
			'aliasfor'        : 'Drugo ime za',
			'locked'          : 'ZakljuÄ�ano',
			'dim'             : 'Dimenzije',
			'files'           : 'Dokumenti',
			'folders'         : 'Mape',
			'items'           : 'Items',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'poveznica',
			'searcresult'     : 'Rezultati pretrage',
			'selected'        : 'selected items',
			'about'           : 'Info',
			'shortcuts'       : 'PreÄ�aci',
			'help'            : 'PomoÄ‡',
			'webfm'           : 'Web file manager',
			'ver'             : 'Verzija',
			'protocolver'     : 'protocol version',
			'homepage'        : 'Project home',
			'docs'            : 'Dokumentacija',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'glavni developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Ikone',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'PreÄ�aci iskljuÄ�eni',
			'dropFiles'       : 'Ovdje ispusti dokumente',
			'or'              : 'ili',
			'selectForUpload' : 'Odaberi dokumente koje prebacujeÅ¡ na server',
			'moveFiles'       : 'Premjesti dokumente',
			'copyFiles'       : 'Kopiraj dokumente',
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Skaliraj',
			'width'           : 'Å irina',
			'height'          : 'Visina',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop or Paste files and URLs here', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Vlasnik', // from v2.1 added 20.6.2015
			'group'           : 'Grupa', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'IzvrÅ¡i', // from v2.1 added 20.6.2015
			'perm'            : 'Dozvole', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mapa je prazna', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mapa je prazna\\A Dovuci dokumente koje Å¾eliÅ¡ dodati', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mapa je prazna\\A Pritisni dugo za dodavanje dokumenata', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvaliteta', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Gore',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindFolder'      : 'Mapa',
			'kindAlias'       : 'Drugo ime',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Aplikacija',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash aplikacija',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent dokument',
			'kind7z'          : '7z arhiva',
			'kindTAR'         : 'TAR arhiva',
			'kindGZIP'        : 'GZIP arhiva',
			'kindBZIP'        : 'BZIP arhiva',
			'kindXZ'          : 'XZ arhiva',
			'kindZIP'         : 'ZIP arhiva',
			'kindRAR'         : 'RAR arhiva',
			'kindJAR'         : 'Java JAR dokument',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM paket',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Tekst arhiva',
			'kindTextPlain'   : 'ObiÄ�ni tekst',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'vrijednosti razdvojene zarezom',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown tekst', // added 20.7.2015
			// images
			'kindImage'       : 'slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Audio',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 lista',
			'kindVideo'       : 'Video ',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

                                                     includes/File_manager/lib/js/i18n/elfinder.ja.js                                                    0000644                 00000115005 15266052756 0015423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Japanese translation
 * @author Tomoaki Yoshida <info@yoshida-studio.jp>
 * @author Naoki Sawada <hypweb+elfinder@gmail.com>
 * @version 2021-06-02
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ja = {
		translator : 'Tomoaki Yoshida &lt;info@yoshida-studio.jp&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;',
		language   : 'Japanese',
		direction  : 'ltr',
		dateFormat : 'Y/m/d h:i A', // will show like: 2018/08/24 04:37 PM
		fancyDateFormat : '$1 h:i A', // will show like: ä»Šæ—¥ 04:37 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163717
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'ã‚¨ãƒ©ãƒ¼',
			'errUnknown'           : 'ä¸�æ˜Žã�ªã‚¨ãƒ©ãƒ¼ã�§ã�™ã€‚',
			'errUnknownCmd'        : 'ä¸�æ˜Žã�ªã‚³ãƒžãƒ³ãƒ‰ã�§ã�™ã€‚',
			'errJqui'              : 'ç„¡åŠ¹ã�ª jQuery UI è¨­å®šã�§ã�™ã€‚Selectable, Draggable, Droppable ã‚³ãƒ³ãƒ�ãƒ¼ãƒ�ãƒ³ãƒˆã‚’å�«ã‚�ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚',
			'errNode'              : 'elFinder ã�¯ DOM Element ã�Œå¿…è¦�ã�§ã�™ã€‚',
			'errURL'               : 'ç„¡åŠ¹ã�ª elFinder è¨­å®šã�§ã�™ï¼� URLã‚’è¨­å®šã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚',
			'errAccess'            : 'ã‚¢ã‚¯ã‚»ã‚¹ã�Œæ‹’å�¦ã�•ã‚Œã�¾ã�—ã�Ÿã€‚',
			'errConnect'           : 'ãƒ�ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã�¨ã�®æŽ¥ç¶šã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errAbort'             : 'æŽ¥ç¶šã�Œä¸­æ–­ã�•ã‚Œã�¾ã�—ã�Ÿã€‚',
			'errTimeout'           : 'æŽ¥ç¶šã�Œã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã�—ã�¾ã�—ã�Ÿã€‚',
			'errNotFound'          : 'ãƒ�ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã�Œè¦‹ã�¤ã�‹ã‚Šã�¾ã�›ã‚“ã€‚',
			'errResponse'          : 'ç„¡åŠ¹ã�ªãƒ�ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãƒ¬ã‚¹ãƒ�ãƒ³ã‚¹ã�§ã�™ã€‚',
			'errConf'              : 'ãƒ�ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã�®è¨­å®šã�Œæœ‰åŠ¹ã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errJSON'              : 'PHP JSON ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã�Œã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚',
			'errNoVolumes'         : 'èª­ã�¿è¾¼ã�¿å�¯èƒ½ã�ªãƒœãƒªãƒ¥ãƒ¼ãƒ ã�Œã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errCmdParams'         : 'ã‚³ãƒžãƒ³ãƒ‰ "$1"ã�®ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã�Œç„¡åŠ¹ã�§ã�™ã€‚',
			'errDataNotJSON'       : 'JSONãƒ‡ãƒ¼ã‚¿ã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errDataEmpty'         : 'ç©ºã�®ãƒ‡ãƒ¼ã‚¿ã�§ã�™ã€‚',
			'errCmdReq'            : 'ãƒ�ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�¯ã‚³ãƒžãƒ³ãƒ‰å��ã�Œå¿…è¦�ã�§ã�™ã€‚',
			'errOpen'              : '"$1" ã‚’é–‹ã��ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errNotFolder'         : 'ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã�Œãƒ•ã‚©ãƒ«ãƒ€ã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errNotFile'           : 'ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã�Œãƒ•ã‚¡ã‚¤ãƒ«ã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errRead'              : '"$1" ã‚’èª­ã�¿è¾¼ã‚€ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errWrite'             : '"$1" ã�«æ›¸ã��è¾¼ã‚€ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errPerm'              : 'æ¨©é™�ã�Œã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errLocked'            : '"$1" ã�¯ãƒ­ãƒƒã‚¯ã�•ã‚Œã�¦ã�„ã‚‹ã�®ã�§å��å‰�ã�®å¤‰æ›´ã€�ç§»å‹•ã€�å‰Šé™¤ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errExists'            : '"$1" ã�¨ã�„ã�†ã‚¢ã‚¤ãƒ†ãƒ å��ã�¯ã�™ã�§ã�«å­˜åœ¨ã�—ã�¦ã�„ã�¾ã�™ã€‚',
			'errInvName'           : 'ç„¡åŠ¹ã�ªãƒ•ã‚¡ã‚¤ãƒ«å��ã�§ã�™ã€‚',
			'errInvDirname'        : 'ç„¡åŠ¹ã�ªãƒ•ã‚©ãƒ«ãƒ€å��ã�§ã�™ã€‚',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ãƒ•ã‚©ãƒ«ãƒ€ã�Œè¦‹ã�¤ã�‹ã‚Šã�¾ã�›ã‚“ã€‚',
			'errFileNotFound'      : 'ãƒ•ã‚¡ã‚¤ãƒ«ã�Œè¦‹ã�¤ã�‹ã‚Šã�¾ã�›ã‚“ã€‚',
			'errTrgFolderNotFound' : 'ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã�¨ã�™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ "$1" ã�Œè¦‹ã�¤ã�‹ã‚Šã�¾ã�›ã‚“ã€‚',
			'errPopup'             : 'ãƒ�ãƒƒãƒ—ã‚¢ãƒƒãƒ—ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã�Œé–‹ã�‘ã�¾ã�›ã‚“ã€‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã��ã�«ã�¯ãƒ–ãƒ©ã‚¦ã‚¶ã�®è¨­å®šã‚’å¤‰æ›´ã�—ã�¦ã��ã� ã�•ã�„ã€‚',
			'errMkdir'             : 'ãƒ•ã‚©ãƒ«ãƒ€ "$1" ã‚’ä½œæˆ�ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errMkfile'            : 'ãƒ•ã‚¡ã‚¤ãƒ« "$1" ã‚’ä½œæˆ�ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errRename'            : '"$1" ã�®å��å‰�ã‚’å¤‰æ›´ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errCopyFrom'          : '"$1" ã�‹ã‚‰ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚³ãƒ”ãƒ¼ã�¯è¨±å�¯ã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚',
			'errCopyTo'            : '"$1" ã�¸ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚³ãƒ”ãƒ¼ã�¯è¨±å�¯ã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚',
			'errMkOutLink'         : 'ãƒœãƒªãƒ¥ãƒ¼ãƒ ãƒ«ãƒ¼ãƒˆå¤–ã�¸ã�®ãƒªãƒ³ã‚¯ã‚’ä½œæˆ�ã�™ã‚‹ã�“ã�¨ã�¯ã�§ã��ã�¾ã�›ã‚“ã€‚', // from v2.1 added 03.10.2015
			'errUpload'            : 'ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã‚¨ãƒ©ãƒ¼',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚', // old name - errUpload
			'errUploadNoFiles'     : 'ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�•ã‚Œã�Ÿãƒ•ã‚¡ã‚¤ãƒ«ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚',
			'errUploadTotalSize'   : 'ãƒ‡ãƒ¼ã‚¿ã�Œè¨±å®¹ã‚µã‚¤ã‚ºã‚’è¶…ã�ˆã�¦ã�„ã�¾ã�™ã€‚', // old name - errMaxSize
			'errUploadFileSize'    : 'ãƒ•ã‚¡ã‚¤ãƒ«ã�Œè¨±å®¹ã‚µã‚¤ã‚ºã‚’è¶…ã�ˆã�¦ã�„ã�¾ã�™ã€‚', //  old name - errFileMaxSize
			'errUploadMime'        : 'è¨±å�¯ã�•ã‚Œã�¦ã�„ã�ªã�„ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼�ã�§ã�™ã€‚',
			'errUploadTransfer'    : '"$1" è»¢é€�ã‚¨ãƒ©ãƒ¼ã�§ã�™ã€‚',
			'errUploadTemp'        : 'ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ç”¨ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œæˆ�ã�§ã��ã�¾ã�›ã‚“ã€‚', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'ã‚¢ã‚¤ãƒ†ãƒ  "$1" ã�¯ã�™ã�§ã�«ã�“ã�®å ´æ‰€ã�«ã�‚ã‚Šã€�ã‚¢ã‚¤ãƒ†ãƒ ã�®ã‚¿ã‚¤ãƒ—ã�Œé�•ã�†ã�®ã�§ç½®ã��æ�›ã�ˆã‚‹ã�“ã�¨ã�¯ã�§ã��ã�¾ã�›ã‚“ã€‚', // new
			'errReplace'           : '"$1" ã‚’ç½®ã��æ�›ã�ˆã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errSave'              : '"$1" ã‚’ä¿�å­˜ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errCopy'              : '"$1" ã‚’ã‚³ãƒ”ãƒ¼ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errMove'              : '"$1" ã‚’ç§»å‹•ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errCopyInItself'      : '"$1" ã‚’ã��ã‚Œè‡ªèº«ã�®ä¸­ã�«ã‚³ãƒ”ãƒ¼ã�™ã‚‹ã�“ã�¨ã�¯ã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errRm'                : '"$1" ã‚’å‰Šé™¤ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errTrash'             : 'ã�”ã�¿ç®±ã�«å…¥ã‚Œã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'å…ƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‰Šé™¤ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errExtract'           : '"$1" ã‚’è§£å‡�ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errArchive'           : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’ä½œæˆ�ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errArcType'           : 'ã‚µãƒ�ãƒ¼ãƒˆå¤–ã�®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–å½¢å¼�ã�§ã�™ã€‚',
			'errNoArchive'         : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã�§ã�ªã�„ã�‹ã‚µãƒ�ãƒ¼ãƒˆã�•ã‚Œã�¦ã�„ã�ªã�„ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–å½¢å¼�ã�§ã�™ã€‚',
			'errCmdNoSupport'      : 'ã‚µãƒ�ãƒ¼ãƒˆã�•ã‚Œã�¦ã�„ã�ªã�„ã‚³ãƒžãƒ³ãƒ‰ã�§ã�™ã€‚',
			'errReplByChild'       : 'ãƒ•ã‚©ãƒ«ãƒ€ "$1" ã�«å�«ã�¾ã‚Œã�¦ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç½®ã��æ�›ã�ˆã‚‹ã�“ã�¨ã�¯ã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errArcSymlinks'       : 'ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã�¾ã�Ÿã�¯è¨±å®¹ã�•ã‚Œã�ªã�„ãƒ•ã‚¡ã‚¤ãƒ«å��ã‚’å�«ã‚€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã�¯ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã€�è§£å‡�ã�§ã��ã�¾ã�›ã‚“ã€‚', // edited 24.06.2012
			'errArcMaxSize'        : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã�Œè¨±å®¹ã�•ã‚Œã�Ÿã‚µã‚¤ã‚ºã‚’è¶…ã�ˆã�¦ã�„ã�¾ã�™ã€‚',
			'errResize'            : '"$1" ã�®ãƒªã‚µã‚¤ã‚ºã�¾ã�Ÿã�¯å›žè»¢ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚',
			'errResizeDegree'      : 'ã‚¤ãƒ¡ãƒ¼ã‚¸ã�®å›žè»¢è§’åº¦ã�Œä¸�æ­£ã�§ã�™ã€‚',  // added 7.3.2013
			'errResizeRotate'      : 'ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å›žè»¢ã�§ã��ã�¾ã�›ã‚“ã€‚',  // added 7.3.2013
			'errResizeSize'        : 'æŒ‡å®šã�•ã‚Œã�Ÿã‚¤ãƒ¡ãƒ¼ã‚¸ã‚µã‚¤ã‚ºã�Œä¸�æ­£ã�§ã�™ã€‚',  // added 7.3.2013
			'errResizeNoChange'    : 'ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚µã‚¤ã‚ºã�ªã�©ã�®å¤‰æ›´ç‚¹ã�Œã�‚ã‚Šã�¾ã�›ã‚“ã€‚',  // added 7.3.2013
			'errUsupportType'      : 'ã�“ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ã�¯ã‚µãƒ�ãƒ¼ãƒˆã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚',
			'errNotUTF8Content'    : 'ãƒ•ã‚¡ã‚¤ãƒ« "$1" ã�«ã�¯ UTF-8 ä»¥å¤–ã�®æ–‡å­—ã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹ã�®ã�§ç·¨é›†ã�§ã��ã�¾ã�›ã‚“ã€‚',  // added 9.11.2011
			'errNetMount'          : '"$1" ã‚’ãƒžã‚¦ãƒ³ãƒˆã�§ã��ã�¾ã�›ã‚“ã€‚', // added 17.04.2012
			'errNetMountNoDriver'  : 'ã‚µãƒ�ãƒ¼ãƒˆã�•ã‚Œã�¦ã�„ã�ªã�„ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã�§ã�™ã€‚',     // added 17.04.2012
			'errNetMountFailed'    : 'ãƒžã‚¦ãƒ³ãƒˆã�«å¤±æ•—ã�—ã�¾ã�—ã�Ÿã€‚',         // added 17.04.2012
			'errNetMountHostReq'   : 'ãƒ›ã‚¹ãƒˆå��ã�¯å¿…é ˆã�§ã�™ã€‚', // added 18.04.2012
			'errSessionExpires'    : 'ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã�Œã�ªã�‹ã�£ã�Ÿã�Ÿã‚�ã€�ã‚»ãƒƒã‚·ãƒ§ãƒ³ã�ŒæœŸé™�åˆ‡ã‚Œã�«ã�ªã‚Šã�¾ã�—ã�Ÿã€‚',
			'errCreatingTempDir'   : 'ä¸€æ™‚ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œæˆ�ã�§ã��ã�¾ã�›ã‚“ï¼š"$1"',
			'errFtpDownloadFile'   : 'FTP ã�‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã�§ã��ã�¾ã�›ã‚“ï¼š"$1"',
			'errFtpUploadFile'     : 'FTP ã�¸ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�§ã��ã�¾ã�›ã‚“ï¼š"$1"',
			'errFtpMkdir'          : 'FTP ã�«ãƒªãƒ¢ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œæˆ�ã�§ã��ã�¾ã�›ã‚“ï¼š"$1"',
			'errArchiveExec'       : 'ãƒ•ã‚¡ã‚¤ãƒ«ã�®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ä¸­ã�«ã‚¨ãƒ©ãƒ¼ã�Œç™ºç”Ÿã�—ã�¾ã�—ã�Ÿï¼š"$1"',
			'errExtractExec'       : 'ãƒ•ã‚¡ã‚¤ãƒ«ã�®æŠ½å‡ºä¸­ã�«ã‚¨ãƒ©ãƒ¼ã�Œç™ºç”Ÿã�—ã�¾ã�—ã�Ÿï¼š"$1"',
			'errNetUnMount'        : 'ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã�§ã��ã�¾ã�›ã‚“ã€‚', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8 ã�«å¤‰æ�›ã�§ã��ã�¾ã�›ã‚“ã�§ã�—ã�Ÿã€‚', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�—ã�Ÿã�„ã�®ã�§ã�‚ã‚Œã�°ã€�ãƒ¢ãƒ€ãƒ³ãƒ–ãƒ©ã‚¦ã‚¶ã‚’è©¦ã�—ã�¦ã��ã� ã�•ã�„ã€‚', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" ã‚’æ¤œç´¢ä¸­ã�«ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã�—ã�¾ã�—ã�Ÿã€‚æ¤œç´¢çµ�æžœã�¯éƒ¨åˆ†çš„ã�§ã�™ã€‚', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'å†�èª�å�¯ã�Œå¿…è¦�ã�§ã�™ã€‚', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'é�¸æŠžå�¯èƒ½ã�ªæœ€å¤§ã‚¢ã‚¤ãƒ†ãƒ æ•°ã�¯ $1 å€‹ã�§ã�™ã€‚', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'å®›å…ˆã�®ç‰¹å®šã�Œã�§ã��ã�ªã�„ã�Ÿã‚�ã€�ã�”ã�¿ç®±ã�‹ã‚‰æˆ»ã�›ã�¾ã�›ã‚“ã€‚', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'ã�“ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ã�®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã�Œã�‚ã‚Šã�¾ã�›ã‚“ã€‚', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'ã‚µãƒ¼ãƒ�ãƒ¼å�´ã�§ã‚¨ãƒ©ãƒ¼ã�Œç™ºç”Ÿã�—ã�¾ã�—ã�Ÿã€‚', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'ãƒ•ã‚©ãƒ«ãƒ€"$1"ã‚’ç©ºã�«ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�›ã‚“ã€‚', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'ã�•ã‚‰ã�« $1 ä»¶ã�®ã‚¨ãƒ©ãƒ¼ã�Œã�‚ã‚Šã�¾ã�™ã€‚', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'ä¸€åº¦ã�«ä½œæˆ�ã�§ã��ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã�¯ $1 å€‹ã�¾ã�§ã�§ã�™ã€‚', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ä½œæˆ�',
			'cmdback'      : 'æˆ»ã‚‹',
			'cmdcopy'      : 'ã‚³ãƒ”ãƒ¼',
			'cmdcut'       : 'ã‚«ãƒƒãƒˆ',
			'cmddownload'  : 'ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰',
			'cmdduplicate' : 'è¤‡è£½',
			'cmdedit'      : 'ãƒ•ã‚¡ã‚¤ãƒ«ç·¨é›†',
			'cmdextract'   : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’è§£å‡�',
			'cmdforward'   : 'é€²ã‚€',
			'cmdgetfile'   : 'ãƒ•ã‚¡ã‚¤ãƒ«é�¸æŠž',
			'cmdhelp'      : 'ã�“ã�®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã�«ã�¤ã�„ã�¦',
			'cmdhome'      : 'ãƒ«ãƒ¼ãƒˆ',
			'cmdinfo'      : 'æƒ…å ±',
			'cmdmkdir'     : 'æ–°è¦�ãƒ•ã‚©ãƒ«ãƒ€',
			'cmdmkdirin'   : 'æ–°è¦�ãƒ•ã‚©ãƒ«ãƒ€ã�¸', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'æ–°è¦�ãƒ•ã‚¡ã‚¤ãƒ«',
			'cmdopen'      : 'é–‹ã��',
			'cmdpaste'     : 'ãƒšãƒ¼ã‚¹ãƒˆ',
			'cmdquicklook' : 'ãƒ—ãƒ¬ãƒ“ãƒ¥ãƒ¼',
			'cmdreload'    : 'ãƒªãƒ­ãƒ¼ãƒ‰',
			'cmdrename'    : 'ãƒªãƒ�ãƒ¼ãƒ ',
			'cmdrm'        : 'å‰Šé™¤',
			'cmdtrash'     : 'ã�”ã�¿ç®±ã�¸', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'å¾©å…ƒ', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æŽ¢ã�™',
			'cmdup'        : 'è¦ªãƒ•ã‚©ãƒ«ãƒ€ã�¸ç§»å‹•',
			'cmdupload'    : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰',
			'cmdview'      : 'ãƒ“ãƒ¥ãƒ¼',
			'cmdresize'    : 'ãƒªã‚µã‚¤ã‚ºã�¨å›žè»¢',
			'cmdsort'      : 'ã‚½ãƒ¼ãƒˆ',
			'cmdnetmount'  : 'ãƒ�ãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’ãƒžã‚¦ãƒ³ãƒˆ', // added 18.04.2012
			'cmdnetunmount': 'ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆ', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'ã‚ˆã��ä½¿ã�†é …ç›®ã�¸', // added 28.12.2014
			'cmdchmod'     : 'å±žæ€§å¤‰æ›´', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’é–‹ã��', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'åˆ—å¹…ãƒªã‚»ãƒƒãƒˆ', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ç§»å‹•', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’ç©ºã�«', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'å…ƒã�«æˆ»ã�™', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'ã‚„ã‚Šç›´ã�—', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'å€‹äººè¨­å®š', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'ã�™ã�¹ã�¦é�¸æŠž', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'é�¸æŠžè§£é™¤', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'é�¸æŠžã‚’å��è»¢', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'æ–°ã�—ã�„ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã�§é–‹ã��', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'é�žè¡¨ç¤º (å€‹äººè¨­å®š)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'é–‰ã�˜ã‚‹',
			'btnSave'   : 'ä¿�å­˜',
			'btnRm'     : 'å‰Šé™¤',
			'btnApply'  : 'é�©ç”¨',
			'btnCancel' : 'ã‚­ãƒ£ãƒ³ã‚»ãƒ«',
			'btnNo'     : 'ã�„ã�„ã�ˆ',
			'btnYes'    : 'ã�¯ã�„',
			'btnDiscard': 'å¤‰æ›´ã‚’ç ´æ£„',
			'btnMount'  : 'ãƒžã‚¦ãƒ³ãƒˆ',  // added 18.04.2012
			'btnApprove': '$1ã�¸è¡Œã��èª�å�¯ã�™ã‚‹', // from v2.1 added 26.04.2012
			'btnUnmount': 'ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆ', // from v2.1 added 30.04.2012
			'btnConv'   : 'å¤‰æ�›', // from v2.1 added 08.04.2014
			'btnCwd'    : 'ã�“ã�®å ´æ‰€',      // from v2.1 added 22.5.2015
			'btnVolume' : 'ãƒœãƒªãƒ¥ãƒ¼ãƒ ',    // from v2.1 added 22.5.2015
			'btnAll'    : 'å…¨ã�¦',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIMEã‚¿ã‚¤ãƒ—', // from v2.1 added 22.5.2015
			'btnFileName':'ãƒ•ã‚¡ã‚¤ãƒ«å��',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'ä¿�å­˜ã�—ã�¦é–‰ã�˜ã‚‹', // from v2.1 added 12.6.2015
			'btnBackup' : 'ãƒ�ãƒƒã‚¯ã‚¢ãƒƒãƒ—', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ãƒªãƒ�ãƒ¼ãƒ ',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ãƒªãƒ�ãƒ¼ãƒ (å…¨ã�¦)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'å‰�ã�¸ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'æ¬¡ã�¸ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'åˆ¥å��ä¿�å­˜', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’é–‹ã�„ã�¦ã�„ã�¾ã�™',
			'ntffile'     : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã�„ã�¦ã�„ã�¾ã�™',
			'ntfreload'   : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’å†�èª­è¾¼ã�—ã�¦ã�„ã�¾ã�™',
			'ntfmkdir'    : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’ä½œæˆ�ã�—ã�¦ã�„ã�¾ã�™',
			'ntfmkfile'   : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œæˆ�ã�—ã�¦ã�„ã�¾ã�™',
			'ntfrm'       : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’å‰Šé™¤ã�—ã�¦ã�„ã�¾ã�™',
			'ntfcopy'     : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚³ãƒ”ãƒ¼ã�—ã�¦ã�„ã�¾ã�™',
			'ntfmove'     : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç§»å‹•ã�—ã�¦ã�„ã�¾ã�™',
			'ntfprepare'  : 'æ—¢å­˜ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç¢ºèª�ã�—ã�¦ã�„ã�¾ã�™',
			'ntfrename'   : 'ãƒ•ã‚¡ã‚¤ãƒ«å��ã‚’å¤‰æ›´ã�—ã�¦ã�„ã�¾ã�™',
			'ntfupload'   : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�—ã�¦ã�„ã�¾ã�™',
			'ntfdownload' : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã�—ã�¦ã�„ã�¾ã�™',
			'ntfsave'     : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿�å­˜ã�—ã�¦ã�„ã�¾ã�™',
			'ntfarchive'  : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ä½œæˆ�ã�—ã�¦ã�„ã�¾ã�™',
			'ntfextract'  : 'ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’è§£å‡�ã�—ã�¦ã�„ã�¾ã�™',
			'ntfsearch'   : 'ãƒ•ã‚¡ã‚¤ãƒ«æ¤œç´¢ä¸­',
			'ntfresize'   : 'ãƒªã‚µã‚¤ã‚ºã�—ã�¦ã�„ã�¾ã�™',
			'ntfsmth'     : 'å‡¦ç�†ã‚’ã�—ã�¦ã�„ã�¾ã�™',
			'ntfloadimg'  : 'ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’èª­ã�¿è¾¼ã‚“ã�§ã�„ã�¾ã�™',
			'ntfnetmount' : 'ãƒ�ãƒƒãƒˆãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’ãƒžã‚¦ãƒ³ãƒˆä¸­', // added 18.04.2012
			'ntfnetunmount': 'ãƒ�ãƒƒãƒˆãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆä¸­', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ç”»åƒ�ã‚µã‚¤ã‚ºã‚’å�–å¾—ã�—ã�¦ã�„ã�¾ã�™', // added 20.05.2013
			'ntfreaddir'  : 'ãƒ•ã‚©ãƒ«ãƒ€æƒ…å ±ã‚’èª­ã�¿å�–ã�£ã�¦ã�„ã�¾ã�™', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ãƒªãƒ³ã‚¯URLã‚’å�–å¾—ã�—ã�¦ã�„ã�¾ã�™', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ãƒ•ã‚¡ã‚¤ãƒ«å±žæ€§ã‚’å¤‰æ›´ã�—ã�¦ã�„ã�¾ã�™', // from v2.1 added 20.6.2015
			'ntfpreupload': 'ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«å��ã‚’æ¤œè¨¼ä¸­', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ç”¨ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œæˆ�ä¸­', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ãƒ‘ã‚¹æƒ…å ±ã‚’å�–å¾—ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰æ¸ˆã�¿ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‡¦ç�†ä¸­', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ã�”ã�¿ç®±ã�«å…¥ã‚Œã�¦ã�„ã�¾ã�™', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'ã�”ã�¿ç®±ã�‹ã‚‰å…ƒã�«æˆ»ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'å®›å…ˆãƒ•ã‚©ãƒ«ãƒ€ã‚’ç¢ºèª�ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'å‰�ã�®æ“�ä½œã‚’å�–ã‚Šæ¶ˆã�—ã�¦å…ƒã�«æˆ»ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'å…ƒã�«æˆ»ã�—ã�Ÿæ“�ä½œã‚’ã‚„ã‚Šç›´ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ãƒ�ã‚§ãƒƒã‚¯ã�—ã�¦ã�„ã�¾ã�™', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'ã�”ã�¿ç®±', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ä¸�æ˜Ž',
			'Today'       : 'ä»Šæ—¥',
			'Yesterday'   : 'æ˜¨æ—¥',
			'msJan'       : '1æœˆ',
			'msFeb'       : '2æœˆ',
			'msMar'       : '3æœˆ',
			'msApr'       : '4æœˆ',
			'msMay'       : '5æœˆ',
			'msJun'       : '6æœˆ',
			'msJul'       : '7æœˆ',
			'msAug'       : '8æœˆ',
			'msSep'       : '9æœˆ',
			'msOct'       : '10æœˆ',
			'msNov'       : '11æœˆ',
			'msDec'       : '12æœˆ',
			'January'     : '1æœˆ',
			'February'    : '2æœˆ',
			'March'       : '3æœˆ',
			'April'       : '4æœˆ',
			'May'         : '5æœˆ',
			'June'        : '6æœˆ',
			'July'        : '7æœˆ',
			'August'      : '8æœˆ',
			'September'   : '9æœˆ',
			'October'     : '10æœˆ',
			'November'    : '11æœˆ',
			'December'    : '12æœˆ',
			'Sunday'      : 'æ—¥æ›œæ—¥',
			'Monday'      : 'æœˆæ›œæ—¥',
			'Tuesday'     : 'ç�«æ›œæ—¥',
			'Wednesday'   : 'æ°´æ›œæ—¥',
			'Thursday'    : 'æœ¨æ›œæ—¥',
			'Friday'      : 'é‡‘æ›œæ—¥',
			'Saturday'    : 'åœŸæ›œæ—¥',
			'Sun'         : '(æ—¥)',
			'Mon'         : '(æœˆ)',
			'Tue'         : '(ç�«)',
			'Wed'         : '(æ°´)',
			'Thu'         : '(æœ¨)',
			'Fri'         : '(é‡‘)',
			'Sat'         : '(åœŸ)',

			/******************************** sort variants ********************************/
			'sortname'          : 'å��å‰�é †',
			'sortkind'          : 'ç¨®é¡žé †',
			'sortsize'          : 'ã‚µã‚¤ã‚ºé †',
			'sortdate'          : 'æ—¥ä»˜é †',
			'sortFoldersFirst'  : 'ãƒ•ã‚©ãƒ«ãƒ€å„ªå…ˆ',
			'sortperm'          : 'æ¨©é™�é †', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'å±žæ€§é †',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'ã‚ªãƒ¼ãƒŠãƒ¼é †',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'ã‚°ãƒ«ãƒ¼ãƒ—é †',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'ãƒ„ãƒªãƒ¼ãƒ“ãƒ¥ãƒ¼ã‚‚',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'æ–°è¦�ãƒ•ã‚¡ã‚¤ãƒ«.txt', // added 10.11.2015
			'untitled folder'   : 'æ–°è¦�ãƒ•ã‚©ãƒ«ãƒ€',   // added 10.11.2015
			'Archive'           : 'æ–°è¦�ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',  // from v2.1 added 10.11.2015
			'untitled file'     : 'æ–°è¦�ãƒ•ã‚¡ã‚¤ãƒ«.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: ãƒ•ã‚¡ã‚¤ãƒ«',     // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'å‡¦ç�†ã‚’å®Ÿè¡Œã�—ã�¾ã�™ã�‹ï¼Ÿ',
			'confirmRm'       : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’å®Œå…¨ã�«å‰Šé™¤ã�—ã�¦ã‚‚ã‚ˆã‚�ã�—ã�„ã�§ã�™ã�‹ï¼Ÿ<br/>ã�“ã�®æ“�ä½œã�¯å�–ã‚Šæ¶ˆã�—ã�§ã��ã�¾ã�›ã‚“ï¼�',
			'confirmRepl'     : 'å�¤ã�„ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ–°ã�—ã�„ãƒ•ã‚¡ã‚¤ãƒ«ã�§ä¸Šæ›¸ã��ã�—ã�¾ã�™ã�‹ï¼Ÿ (ãƒ•ã‚©ãƒ«ãƒ€ã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�¯çµ±å�ˆã�•ã‚Œã�¾ã�™ã€‚ç½®ã��æ�›ã�ˆã‚‹å ´å�ˆã�¯ã€Œãƒ�ãƒƒã‚¯ã‚¢ãƒƒãƒ—ã€�é�¸æŠžã�—ã�¦ã��ã� ã�•ã�„ã€‚)',
			'confirmRest'     : 'æ—¢å­˜ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã�”ã�¿ç®±ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�§ä¸Šæ›¸ã��ã�—ã�¾ã�™ã�‹ï¼Ÿ', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 ä»¥å¤–ã�®æ–‡å­—ã�Œå�«ã�¾ã‚Œã�¦ã�„ã�¾ã�™ã€‚<br/>UTF-8  ã�«å¤‰æ�›ã�—ã�¾ã�™ã�‹ï¼Ÿ<br/>å¤‰æ�›å¾Œã�®ä¿�å­˜ã�§ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã�¯ UTF-8 ã�«ã�ªã‚Šã�¾ã�™ã€‚', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ã�“ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã�®æ–‡å­—ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’åˆ¤åˆ¥ã�§ã��ã�¾ã�›ã‚“ã�§ã�—ã�Ÿã€‚ç·¨é›†ã�™ã‚‹ã�«ã�¯ä¸€æ™‚çš„ã�« UTF-8 ã�«å¤‰æ�›ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚<br/>æ–‡å­—ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’æŒ‡å®šã�—ã�¦ã��ã� ã�•ã�„ã€‚', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'å¤‰æ›´ã�•ã‚Œã�¦ã�„ã�¾ã�™ã€‚<br/>ä¿�å­˜ã�›ã�šã�«é–‰ã�˜ã‚‹ã�¨ç·¨é›†å†…å®¹ã�Œå¤±ã‚�ã‚Œã�¾ã�™ã€‚', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã�”ã�¿ç®±ã�«ç§»å‹•ã�—ã�¦ã‚‚ã‚ˆã‚�ã�—ã�„ã�§ã�™ã�‹ï¼Ÿ', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’"$1"ã�«ç§»å‹•ã�—ã�¦ã‚‚ã‚ˆã‚�ã�—ã�„ã�§ã�™ã�‹ï¼Ÿ', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'å…¨ã�¦ã�«é�©ç”¨ã�—ã�¾ã�™',
			'name'            : 'å��å‰�',
			'size'            : 'ã‚µã‚¤ã‚º',
			'perms'           : 'æ¨©é™�',
			'modify'          : 'æ›´æ–°',
			'kind'            : 'ç¨®é¡ž',
			'read'            : 'èª­ã�¿å�–ã‚Š',
			'write'           : 'æ›¸ã��è¾¼ã�¿',
			'noaccess'        : 'ã‚¢ã‚¯ã‚»ã‚¹ç¦�æ­¢',
			'and'             : ',',
			'unknown'         : 'ä¸�æ˜Ž',
			'selectall'       : 'ã�™ã�¹ã�¦ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é�¸æŠž',
			'selectfiles'     : 'ã‚¢ã‚¤ãƒ†ãƒ é�¸æŠž',
			'selectffile'     : 'æœ€åˆ�ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é�¸æŠž',
			'selectlfile'     : 'æœ€å¾Œã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é�¸æŠž',
			'viewlist'        : 'ãƒªã‚¹ãƒˆå½¢å¼�ã�§è¡¨ç¤º',
			'viewicons'       : 'ã‚¢ã‚¤ã‚³ãƒ³å½¢å¼�ã�§è¡¨ç¤º',
			'viewSmall'       : 'å°�ã‚¢ã‚¤ã‚³ãƒ³', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'ä¸­ã‚¢ã‚¤ã‚³ãƒ³', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'å¤§ã‚¢ã‚¤ã‚³ãƒ³', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'ç‰¹å¤§ã‚¢ã‚¤ã‚³ãƒ³', // from v2.1.39 added 22.5.2018
			'places'          : 'ã‚ˆã��ä½¿ã�†é …ç›®',
			'calc'            : 'è¨ˆç®—ä¸­',
			'path'            : 'ãƒ‘ã‚¹',
			'aliasfor'        : 'ã‚¨ã‚¤ãƒªã‚¢ã‚¹',
			'locked'          : 'ãƒ­ãƒƒã‚¯',
			'dim'             : 'ç”»ç´ æ•°',
			'files'           : 'ãƒ•ã‚¡ã‚¤ãƒ«',
			'folders'         : 'ãƒ•ã‚©ãƒ«ãƒ€',
			'items'           : 'ã‚¢ã‚¤ãƒ†ãƒ ',
			'yes'             : 'ã�¯ã�„',
			'no'              : 'ã�„ã�„ã�ˆ',
			'link'            : 'ãƒªãƒ³ã‚¯',
			'searcresult'     : 'æ¤œç´¢çµ�æžœ',
			'selected'        : 'é�¸æŠžã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ',
			'about'           : 'æ¦‚è¦�',
			'shortcuts'       : 'ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ',
			'help'            : 'ãƒ˜ãƒ«ãƒ—',
			'webfm'           : 'ã‚¦ã‚§ãƒ–ãƒ•ã‚¡ã‚¤ãƒ«ãƒžãƒ�ãƒ¼ã‚¸ãƒ£ãƒ¼',
			'ver'             : 'ãƒ�ãƒ¼ã‚¸ãƒ§ãƒ³',
			'protocolver'     : 'ãƒ—ãƒ­ãƒˆã‚³ãƒ«ãƒ�ãƒ¼ã‚¸ãƒ§ãƒ³',
			'homepage'        : 'ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãƒ›ãƒ¼ãƒ ',
			'docs'            : 'ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³',
			'github'          : 'Github ã�§ãƒ•ã‚©ãƒ¼ã‚¯',
			'twitter'         : 'Twitter ã�§ãƒ•ã‚©ãƒ­ãƒ¼',
			'facebook'        : 'Facebookã‚°ãƒ«ãƒ¼ãƒ— ã�«å�‚åŠ ',
			'team'            : 'ãƒ�ãƒ¼ãƒ ',
			'chiefdev'        : 'ãƒ�ãƒ¼ãƒ•ãƒ‡ãƒ™ãƒ­ãƒƒãƒ‘ãƒ¼',
			'developer'       : 'ãƒ‡ãƒ™ãƒ­ãƒƒãƒ‘ãƒ¼',
			'contributor'     : 'ã‚³ãƒ³ãƒˆãƒªãƒ“ãƒ¥ãƒ¼ã‚¿',
			'maintainer'      : 'ãƒ¡ã‚¤ãƒ³ãƒ†ãƒŠãƒ¼',
			'translator'      : 'ç¿»è¨³è€…',
			'icons'           : 'ã‚¢ã‚¤ã‚³ãƒ³',
			'dontforget'      : 'ã‚¿ã‚ªãƒ«å¿˜ã‚Œã�¡ã‚ƒã� ã‚�ã‚ˆï½ž',
			'shortcutsof'     : 'ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã�¯åˆ©ç”¨ã�§ã��ã�¾ã�›ã‚“',
			'dropFiles'       : 'ã�“ã�“ã�«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ‰ãƒ­ãƒƒãƒ—',
			'or'              : 'ã�¾ã�Ÿã�¯',
			'selectForUpload' : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é�¸æŠž',
			'moveFiles'       : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç§»å‹•',
			'copyFiles'       : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚³ãƒ”ãƒ¼',
			'restoreFiles'    : 'ã‚¢ã‚¤ãƒ†ãƒ ã‚’å…ƒã�«æˆ»ã�™', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ã�“ã�“ã�‹ã‚‰å‰Šé™¤',
			'aspectRatio'     : 'ç¸¦æ¨ªæ¯”ç¶­æŒ�',
			'scale'           : 'è¡¨ç¤ºç¸®å°º',
			'width'           : 'å¹…',
			'height'          : 'é«˜ã�•',
			'resize'          : 'ãƒªã‚µã‚¤ã‚º',
			'crop'            : 'åˆ‡ã‚ŠæŠœã��',
			'rotate'          : 'å›žè»¢',
			'rotate-cw'       : '90åº¦å·¦å›žè»¢',
			'rotate-ccw'      : '90åº¦å�³å›žè»¢',
			'degree'          : 'åº¦',
			'netMountDialogTitle' : 'ãƒ�ãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒœãƒªãƒ¥ãƒ¼ãƒ ã�®ãƒžã‚¦ãƒ³ãƒˆ', // added 18.04.2012
			'protocol'            : 'ãƒ—ãƒ­ãƒˆã‚³ãƒ«', // added 18.04.2012
			'host'                : 'ãƒ›ã‚¹ãƒˆå��', // added 18.04.2012
			'port'                : 'ãƒ�ãƒ¼ãƒˆ', // added 18.04.2012
			'user'                : 'ãƒ¦ãƒ¼ã‚¶ãƒ¼å��', // added 18.04.2012
			'pass'                : 'ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰', // added 18.04.2012
			'confirmUnmount'      : '$1ã‚’ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã�—ã�¾ã�™ã�‹?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ãƒ–ãƒ©ã‚¦ã‚¶ã�‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ‰ãƒ­ãƒƒãƒ—ã�¾ã�Ÿã�¯è²¼ã‚Šä»˜ã�‘', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'ã�“ã�“ã�«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ‰ãƒ­ãƒƒãƒ— ã�¾ã�Ÿã�¯ URLãƒªã‚¹ãƒˆ, ç”»åƒ�(ã‚¯ãƒªãƒƒãƒ—ãƒœãƒ¼ãƒ‰) ã‚’è²¼ã‚Šä»˜ã�‘', // from v2.1 added 07.04.2014
			'encoding'        : 'ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°', // from v2.1 added 19.12.2014
			'locale'          : 'ãƒ­ã‚±ãƒ¼ãƒ«',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'æ¤œç´¢ç¯„å›²: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'æŒ‡å®šã�—ã�Ÿ MIME ã‚¿ã‚¤ãƒ—ã�§æ¤œç´¢', // from v2.1 added 22.5.2015
			'owner'           : 'ã‚ªãƒ¼ãƒŠãƒ¼', // from v2.1 added 20.6.2015
			'group'           : 'ã‚°ãƒ«ãƒ¼ãƒ—', // from v2.1 added 20.6.2015
			'other'           : 'ã��ã�®ä»–', // from v2.1 added 20.6.2015
			'execute'         : 'å®Ÿè¡Œ', // from v2.1 added 20.6.2015
			'perm'            : 'ãƒ‘ãƒ¼ãƒŸãƒƒã‚·ãƒ§ãƒ³', // from v2.1 added 20.6.2015
			'mode'            : 'å±žæ€§', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ç©ºã�®ãƒ•ã‚©ãƒ«ãƒ€', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ç©ºã�®ãƒ•ã‚©ãƒ«ãƒ€\\Aã‚¢ã‚¤ãƒ†ãƒ ã‚’è¿½åŠ ã�™ã‚‹ã�«ã�¯ã�“ã�“ã�¸ãƒ‰ãƒ­ãƒƒãƒ—', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ç©ºã�®ãƒ•ã‚©ãƒ«ãƒ€\\Aã‚¢ã‚¤ãƒ†ãƒ ã‚’è¿½åŠ ã�™ã‚‹ã�«ã�¯ã�“ã�“ã‚’ãƒ­ãƒ³ã‚°ã‚¿ãƒƒãƒ—', // from v2.1.6 added 30.12.2015
			'quality'         : 'å“�è³ª', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'è‡ªå‹•æ›´æ–°',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ä¸Šã�¸ç§»å‹•',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'ãƒªãƒ³ã‚¯URLã‚’å�–å¾—', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'é�¸æŠžã‚¢ã‚¤ãƒ†ãƒ  ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ãƒ•ã‚©ãƒ«ãƒ€ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ ã‚¢ã‚¯ã‚»ã‚¹ã‚’å�¯èƒ½ã�«ã�™ã‚‹', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'å†�èª�è¨¼ã�™ã‚‹', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'èª­ã�¿è¾¼ã‚“ã�§ã�„ã�¾ã�™...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'è¤‡æ•°ãƒ•ã‚¡ã‚¤ãƒ«ã‚ªãƒ¼ãƒ—ãƒ³', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 å€‹ã�®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã�“ã�†ã�¨ã�—ã�¦ã�„ã�¾ã�™ã€‚ã�“ã�®ã�¾ã�¾ãƒ–ãƒ©ã‚¦ã‚¶ã�§é–‹ã��ã�¾ã�™ã�‹ï¼Ÿ', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'æ¤œç´¢å¯¾è±¡ã�«è©²å½“ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ç·¨é›†ä¸­ã�§ã�™ã€‚', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 å€‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é�¸æŠžä¸­ã�§ã�™ã€‚', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 å€‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�Œã‚¯ãƒªãƒƒãƒ—ãƒœãƒ¼ãƒ‰ã�«å…¥ã�£ã�¦ã�„ã�¾ã�™ã€‚', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'é€�æ¬¡æ¤œç´¢å¯¾è±¡ã�¯ç�¾åœ¨ã�®ãƒ“ãƒ¥ãƒ¼ã�®ã�¿ã�§ã�™ã€‚', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'å…ƒã�«æˆ»ã�™', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 å®Œäº†', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'ãƒšãƒ¼ã‚¸ã‚�ã��ã‚Š', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ãƒœãƒªãƒ¥ãƒ¼ãƒ ãƒ«ãƒ¼ãƒˆ', // from v2.1.16 added 16.9.2016
			'reset'           : 'ãƒªã‚»ãƒƒãƒˆ', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'èƒŒæ™¯è‰²', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'ã‚«ãƒ©ãƒ¼ãƒ”ãƒƒã‚«ãƒ¼', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8pxã‚°ãƒªãƒƒãƒ‰', // from v2.1.16 added 4.10.2016
			'enabled'         : 'æœ‰åŠ¹', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ç„¡åŠ¹', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'ç�¾åœ¨ã�®ãƒ“ãƒ¥ãƒ¼å†…ã�«è©²å½“ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚\\A[Enter]ã‚­ãƒ¼ã�§æ¤œç´¢å¯¾è±¡ã‚’æ‹¡ã�’ã�¾ã�™ã€‚', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'ç�¾åœ¨ã�®ãƒ“ãƒ¥ãƒ¼å†…ã�«æŒ‡å®šã�•ã‚Œã�Ÿæ–‡å­—ã�§å§‹ã�¾ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'ãƒ†ã‚­ã‚¹ãƒˆãƒ©ãƒ™ãƒ«', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'æ®‹ã‚Š$1åˆ†', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'é�¸æŠžã�—ã�Ÿã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã�§é–‹ã��ç›´ã�™', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'é�¸æŠžã�—ã�Ÿã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã�§ä¿�å­˜', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'ãƒ•ã‚©ãƒ«ãƒ€ã‚’é�¸æŠž', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'ä¸€æ–‡å­—ç›®ã�§æ¤œç´¢', // from v2.1.23 added 24.3.2017
			'presets'         : 'ãƒ—ãƒªã‚»ãƒƒãƒˆ', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'ã‚¢ã‚¤ãƒ†ãƒ æ•°ã�Œå¤šã�™ã�Žã‚‹ã�®ã�§ã�”ã�¿ç®±ã�«å…¥ã‚Œã‚‰ã‚Œã�¾ã�›ã‚“ã€‚', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒªã‚¢', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'ãƒ•ã‚©ãƒ«ãƒ€"$1"ã‚’ç©ºã�«ã�—ã�¾ã�™ã€‚', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'ãƒ•ã‚©ãƒ«ãƒ€"$1"ã�«ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�‚ã‚Šã�¾ã�›ã‚“ã€‚', // from v2.1.25 added 22.6.2017
			'preference'      : 'å€‹äººè¨­å®š', // from v2.1.26 added 28.6.2017
			'language'        : 'è¨€èªž', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'ãƒ–ãƒ©ã‚¦ã‚¶ã�«ä¿�å­˜ã�•ã‚Œã�Ÿè¨­å®šã‚’åˆ�æœŸåŒ–ã�™ã‚‹', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ãƒ„ãƒ¼ãƒ«ãƒ�ãƒ¼è¨­å®š', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... æ®‹ã‚Š $1 æ–‡å­—',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... æ®‹ã‚Š $1 è¡Œ',  // from v2.1.52 added 16.1.2020
			'sum'             : 'å�ˆè¨ˆ', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'å¤§ã�¾ã�‹ã�ªãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚º', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'ãƒžã‚¦ã‚¹ã‚ªãƒ¼ãƒ�ãƒ¼ã�§ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã�®è¦�ç´ ã�«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã�™ã‚‹',  // from v2.1.30 added 2.11.2017
			'select'          : 'é�¸æŠž', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'ãƒ•ã‚¡ã‚¤ãƒ«é�¸æŠžæ™‚ã�®å‹•ä½œ', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'å‰�å›žä½¿ç”¨ã�—ã�Ÿã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã�§é–‹ã��', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'é�¸æŠžã‚¢ã‚¤ãƒ†ãƒ ã‚’å��è»¢', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'é�¸æŠžã�—ã�Ÿ $1 å€‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ $2 ã�®ã‚ˆã�†ã�«ãƒªãƒ�ãƒ¼ãƒ ã�—ã�¾ã�™ã�‹ï¼Ÿ<br/>ã�“ã�®æ“�ä½œã�¯å�–ã‚Šæ¶ˆã�—ã�§ã��ã�¾ã�›ã‚“ï¼�', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'ä¸€æ‹¬ãƒªãƒ�ãƒ¼ãƒ ', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ é€£ç•ª', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'å…ˆé ­ã�«è¿½åŠ ', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'æœ«å°¾ã�«è¿½åŠ ', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'æ‹¡å¼µå­�å¤‰æ›´', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'åˆ—é …ç›®è¨­å®š(ãƒªã‚¹ãƒˆãƒ“ãƒ¥ãƒ¼)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'å…¨ã�¦ã�®å¤‰æ›´ã�¯ã€�ç›´ã�¡ã�«ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã�«å��æ˜ ã�•ã‚Œã�¾ã�™ã€‚', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'ã�“ã�®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã�™ã‚‹ã�¾ã�§ã€�å¤‰æ›´ã�¯å��æ˜ ã�•ã‚Œã�¾ã�›ã‚“ã€‚', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'ã�“ã�®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã�«ãƒžã‚¦ãƒ³ãƒˆã�•ã‚Œã�¦ã�„ã‚‹ä»¥ä¸‹ã�®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚‚ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã�•ã‚Œã�¾ã�™ã€‚ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã�—ã�¾ã�™ã�‹ï¼Ÿ', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'é�¸æŠžæƒ…å ±', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'ãƒ•ã‚¡ã‚¤ãƒ«ãƒ�ãƒƒã‚·ãƒ¥ã‚’è¡¨ç¤ºã�™ã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'æƒ…å ±é …ç›® (é�¸æŠžæƒ…å ±ãƒ‘ãƒ�ãƒ«)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'ã‚‚ã�†ä¸€åº¦æŠ¼ã�™ã�¨çµ‚äº†ã�—ã�¾ã�™ã€‚', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'ãƒ„ãƒ¼ãƒ«ãƒ�ãƒ¼', // from v2.1.38 added 4.4.2018
			'workspace'       : 'ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹', // from v2.1.38 added 4.4.2018
			'dialog'          : 'ãƒ€ã‚¤ã‚¢ãƒ­ã‚°', // from v2.1.38 added 4.4.2018
			'all'             : 'ã�™ã�¹ã�¦', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'ã‚¢ã‚¤ã‚³ãƒ³ã‚µã‚¤ã‚º (ã‚¢ã‚¤ã‚³ãƒ³ãƒ“ãƒ¥ãƒ¼)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’æœ€å¤§åŒ–ã�—ã�¦é–‹ã��', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'ç�¾åœ¨ API ã�«ã‚ˆã‚‹å¤‰æ�›ã�¯åˆ©ç”¨ã�§ã��ã�ªã�„ã�®ã�§ã€�Web ã‚µã‚¤ãƒˆã�§å¤‰æ�›ã‚’è¡Œã�£ã�¦ã��ã� ã�•ã�„ã€‚', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'å¤‰æ�›å¾Œã�«å¤‰æ�›ã�•ã‚Œã�Ÿãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿�å­˜ã�™ã‚‹ã�«ã�¯ã€�ã‚¢ã‚¤ãƒ†ãƒ ã�® URL ã�¾ã�Ÿã�¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã�—ã�Ÿãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$1 ã�®ã‚µã‚¤ãƒˆä¸Šã�§å¤‰æ�›ã�™ã‚‹', // from v2.1.40 added 10.7.2018
			'integrations'    : 'çµ±å�ˆ', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ã�“ã�® elFinder ã�¯æ¬¡ã�®å¤–éƒ¨ã‚µãƒ¼ãƒ“ã‚¹ã�Œçµ±å�ˆã�•ã‚Œã�¦ã�„ã�¾ã�™ã€‚ã��ã‚Œã‚‰ã�®åˆ©ç”¨è¦�ç´„ã€�ãƒ—ãƒ©ã‚¤ãƒ�ã‚·ãƒ¼ãƒ�ãƒªã‚·ãƒ¼ã�ªã�©ã‚’ã�”ç¢ºèª�ã�®ä¸Šã€�ã�”åˆ©ç”¨ã��ã� ã�•ã�„ã€‚', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'é�žè¡¨ç¤ºã‚¢ã‚¤ãƒ†ãƒ ã‚’è¡¨ç¤º', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'é�žè¡¨ç¤ºã‚¢ã‚¤ãƒ†ãƒ ã‚’éš ã�™', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'é�žè¡¨ç¤ºã‚¢ã‚¤ãƒ†ãƒ ã�®è¡¨ç¤º/é�žè¡¨ç¤º', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'ã€Œæ–°ã�—ã�„ãƒ•ã‚¡ã‚¤ãƒ«ã€�ã�§æœ‰åŠ¹ã�«ã�™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'ãƒ†ã‚­ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã�®ã‚¿ã‚¤ãƒ—', // from v2.1.41 added 7.8.2018
			'add'             : 'è¿½åŠ ', // from v2.1.41 added 7.8.2018
			'theme'           : 'ãƒ†ãƒ¼ãƒž', // from v2.1.43 added 19.10.2018
			'default'         : 'ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ', // from v2.1.43 added 19.10.2018
			'description'     : 'èª¬æ˜Ž', // from v2.1.43 added 19.10.2018
			'website'         : 'ã‚¦ã‚§ãƒ–ã‚µã‚¤ãƒˆ', // from v2.1.43 added 19.10.2018
			'author'          : 'ä½œè€…', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'ãƒ©ã‚¤ã‚»ãƒ³ã‚¹', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�¯ä¿�å­˜ã�§ã��ã�¾ã�›ã‚“ã€‚ ç·¨é›†å†…å®¹ã‚’å¤±ã‚�ã�ªã�„ã‚ˆã�†ã�«ã�™ã‚‹ã�«ã�¯ã€�PCã�«ã‚¨ã‚¯ã‚¹ãƒ�ãƒ¼ãƒˆã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ€ãƒ–ãƒ«ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦é�¸æŠžã�—ã�¾ã�™ã€‚', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒ¢ãƒ¼ãƒ‰ã�®åˆ©ç”¨', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'ä¸�æ˜Ž',
			'kindRoot'        : 'ãƒœãƒªãƒ¥ãƒ¼ãƒ ãƒ«ãƒ¼ãƒˆ', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ãƒ•ã‚©ãƒ«ãƒ€',
			'kindSelects'     : 'è¤‡æ•°é�¸æŠž', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'åˆ¥å��',
			'kindAliasBroken' : 'å®›å…ˆä¸�æ˜Žã�®åˆ¥å��',
			// applications
			'kindApp'         : 'ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³',
			'kindPostscript'  : 'Postscript ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindMsOffice'    : 'Microsoft Office ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindMsWord'      : 'Microsoft Word ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindMsExcel'     : 'Microsoft Excel ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindMsPP'        : 'Microsoft Powerpoint ãƒ—ãƒ¬ã‚¼ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³',
			'kindOO'          : 'Open Office ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindAppFlash'    : 'Flash ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Bittorrent ãƒ•ã‚¡ã‚¤ãƒ«',
			'kind7z'          : '7z ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindTAR'         : 'TAR ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindGZIP'        : 'GZIP ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindBZIP'        : 'BZIP ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindXZ'          : 'XZ ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindZIP'         : 'ZIP ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindRAR'         : 'RAR ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–',
			'kindJAR'         : 'Java JAR ãƒ•ã‚¡ã‚¤ãƒ«',
			'kindTTF'         : 'True Type ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindOTF'         : 'Open Type ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindRPM'         : 'RPM ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸',
			// fonts
			'kindFont'        : 'ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindSFNT'        : 'SFNT ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindEOT'         : 'Embedded Open Type ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindWOFF'        : 'Web Open Font Format ãƒ•ã‚©ãƒ³ãƒˆ',
			'kindWOFF2'       : 'Web Open Font Format 2  ãƒ•ã‚©ãƒ³ãƒˆ',
			// texts
			'kindText'        : 'Text ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindTextPlain'   : 'ãƒ—ãƒ¬ã‚¤ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ',
			'kindPHP'         : 'PHP ã‚½ãƒ¼ã‚¹',
			'kindCSS'         : 'ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒˆ',
			'kindHTML'        : 'HTML ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindJS'          : 'Javascript ã‚½ãƒ¼ã‚¹',
			'kindRTF'         : 'Rich Text ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ',
			'kindC'           : 'C ã‚½ãƒ¼ã‚¹',
			'kindCHeader'     : 'C ãƒ˜ãƒƒãƒ€ãƒ¼ã‚½ãƒ¼ã‚¹',
			'kindCPP'         : 'C++ ã‚½ãƒ¼ã‚¹',
			'kindCPPHeader'   : 'C++ ãƒ˜ãƒƒãƒ€ãƒ¼ã‚½ãƒ¼ã‚¹',
			'kindShell'       : 'Unix shell ã‚¹ã‚¯ãƒªãƒ—ãƒˆ',
			'kindPython'      : 'Python ã‚½ãƒ¼ã‚¹',
			'kindJava'        : 'Java ã‚½ãƒ¼ã‚¹',
			'kindRuby'        : 'Ruby ã‚½ãƒ¼ã‚¹',
			'kindPerl'        : 'Perl ã‚¹ã‚¯ãƒªãƒ—ãƒˆ',
			'kindSQL'         : 'SQL ã‚½ãƒ¼ã‚¹',
			'kindXML'         : 'XML ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindAWK'         : 'AWK ã‚½ãƒ¼ã‚¹',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ',
			'kindMarkdown'    : 'Markdown ãƒ†ã‚­ã‚¹ãƒˆ', // added 20.7.2015
			// images
			'kindImage'       : 'ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindBMP'         : 'BMP ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindJPEG'        : 'JPEG ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindGIF'         : 'GIF ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindPNG'         : 'PNG ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindTIFF'        : 'TIFF ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindTGA'         : 'TGA ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindPSD'         : 'Adobe Photoshop ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindXBITMAP'     : 'X bitmap ã‚¤ãƒ¡ãƒ¼ã‚¸',
			'kindPXM'         : 'Pixelmator ã‚¤ãƒ¡ãƒ¼ã‚¸',
			// media
			'kindAudio'       : 'ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ¡ãƒ‡ã‚£ã‚¢',
			'kindAudioMPEG'   : 'MPEG ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª',
			'kindAudioMPEG4'  : 'MPEG-4 ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª',
			'kindAudioMIDI'   : 'MIDI ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª',
			'kindAudioOGG'    : 'Ogg Vorbis ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª',
			'kindAudioWAV'    : 'WAV ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª',
			'AudioPlaylist'   : 'MP3 ãƒ—ãƒ¬ã‚¤ãƒªã‚¹ãƒˆ',
			'kindVideo'       : 'ãƒ“ãƒ‡ã‚ªãƒ¡ãƒ‡ã‚£ã‚¢',
			'kindVideoDV'     : 'DV ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoMPEG'   : 'MPEG ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoMPEG4'  : 'MPEG-4 ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoAVI'    : 'AVI ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoMOV'    : 'Quick Time ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoWM'     : 'Windows Media ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoFlash'  : 'Flash ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoMKV'    : 'Matroska ãƒ ãƒ¼ãƒ“ãƒ¼',
			'kindVideoOGG'    : 'Ogg ãƒ ãƒ¼ãƒ“ãƒ¼'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           includes/File_manager/lib/js/i18n/elfinder.fr_CA.js                                                 0000644                 00000105506 15266052757 0016011 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Traduction canadienne franÃ§aise (identique Ã  la traduction franÃ§aise)
 * @author RÃ©gis Guyomarch <regisg@gmail.com>
 * @author Benoit Delachaux <benorde33@gmail.com>
 * @author Jonathan Grunder <jonathan.grunder@gmail.com>
 * @version 2019-10-15
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fr_CA = {
		translator : 'RÃ©gis Guyomarch &lt;regisg@gmail.com&gt;, Benoit Delachaux &lt;benorde33@gmail.com&gt;, Jonathan Grunder &lt;jonathan.grunder@gmail.com&gt;',
		language   : 'franÃ§aise',
		direction  : 'ltr',
		dateFormat : 'd/M/Y H:i', // will show like: 15/Oct/2019 14:47
		fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 14:47
		nonameDateFormat : 'ymd-His', // noname upload will show like: 191015-144704
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Erreur',
			'errUnknown'           : 'Erreur inconnue.',
			'errUnknownCmd'        : 'Commande inconnue.',
			'errJqui'              : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent Ãªtre inclus.',
			'errNode'              : 'elFinder requiert que l\'Ã©lÃ©ment DOM ait Ã©tÃ© crÃ©Ã©.',
			'errURL'               : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas Ã©tÃ© dÃ©finie.',
			'errAccess'            : 'AccÃ¨s refusÃ©.',
			'errConnect'           : 'Impossible de se connecter au backend.',
			'errAbort'             : 'Connexion interrompue.',
			'errTimeout'           : 'DÃ©lai de connexion dÃ©passÃ©.',
			'errNotFound'          : 'Backend non trouvÃ©.',
			'errResponse'          : 'Mauvaise rÃ©ponse du backend.',
			'errConf'              : 'Mauvaise configuration du backend.',
			'errJSON'              : 'Le module PHP JSON n\'est pas installÃ©.',
			'errNoVolumes'         : 'Aucun volume lisible.',
			'errCmdParams'         : 'Mauvais paramÃ©trage de la commande "$1".',
			'errDataNotJSON'       : 'Les donnÃ©es ne sont pas au format JSON.',
			'errDataEmpty'         : 'DonnÃ©es inexistantes.',
			'errCmdReq'            : 'La requÃªte au Backend doit comporter le nom de la commande.',
			'errOpen'              : 'Impossible d\'ouvrir "$1".',
			'errNotFolder'         : 'Cet objet n\'est pas un dossier.',
			'errNotFile'           : 'Cet objet n\'est pas un fichier.',
			'errRead'              : 'Impossible de lire "$1".',
			'errWrite'             : 'Impossible d\'Ã©crire dans "$1".',
			'errPerm'              : 'Permission refusÃ©e.',
			'errLocked'            : '"$1" est verrouillÃ© et ne peut Ãªtre dÃ©placÃ© ou supprimÃ©.',
			'errExists'            : 'Un Ã©lÃ©ment nommÃ© "$1" existe dÃ©jÃ .',
			'errInvName'           : 'Nom de fichier incorrect.',
			'errInvDirname'        : 'Nom de dossier incorrect.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Dossier non trouvÃ©.',
			'errFileNotFound'      : 'Fichier non trouvÃ©.',
			'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvÃ©.',
			'errPopup'             : 'Le navigateur web a empÃªchÃ© l\'ouverture d\'une fenÃªtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.',
			'errMkdir'             : 'Impossible de crÃ©er le dossier "$1".',
			'errMkfile'            : 'Impossible de crÃ©er le fichier "$1".',
			'errRename'            : 'Impossible de renommer "$1".',
			'errCopyFrom'          : 'Interdiction de copier des fichiers depuis le volume "$1".',
			'errCopyTo'            : 'Interdiction de copier des fichiers vers le volume "$1".',
			'errMkOutLink'         : 'Impossible de crÃ©er un lien en dehors du volume principal.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erreur lors de l\'envoi du fichier.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossible d\'envoyer "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Aucun fichier Ã  envoyer.',
			'errUploadTotalSize'   : 'Les donnÃ©es dÃ©passent la taille maximale allouÃ©e.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le fichier dÃ©passe la taille maximale allouÃ©e.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Type de fichier non autorisÃ©.',
			'errUploadTransfer'    : '"$1" erreur transfert.',
			'errUploadTemp'        : 'Impossible de crÃ©er un fichier temporaire pour transfÃ©rer les fichiers.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'objet "$1" existe dÃ©jÃ  Ã  cet endroit et ne peut Ãªtre remplacÃ© par un objet d\'un type diffÃ©rent.', // new
			'errReplace'           : 'Impossible de remplacer "$1".',
			'errSave'              : 'Impossible de sauvegarder "$1".',
			'errCopy'              : 'Impossible de copier "$1".',
			'errMove'              : 'Impossible de dÃ©placer "$1".',
			'errCopyInItself'      : 'Impossible de copier "$1" sur lui-mÃªme.',
			'errRm'                : 'Impossible de supprimer "$1".',
			'errTrash'             : 'Impossible de dÃ©placer dans la corbeille', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossible de supprimer le(s) fichier(s) source(s).',
			'errExtract'           : 'Imbossible d\'extraire les fichiers Ã  partir de "$1".',
			'errArchive'           : 'Impossible de crÃ©er l\'archive.',
			'errArcType'           : 'Type d\'archive non supportÃ©.',
			'errNoArchive'         : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supportÃ©.',
			'errCmdNoSupport'      : 'Le Backend ne prend pas en charge cette commande.',
			'errReplByChild'       : 'Le dossier â€œ$1â€� ne peut pas Ãªtre remplacÃ© par un Ã©lÃ©ment qu\'il contient.',
			'errArcSymlinks'       : 'Par mesure de sÃ©curitÃ©, il est dÃ©fendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisÃ©s.', // edited 24.06.2012
			'errArcMaxSize'        : 'Les fichiers de l\'archive excÃ¨dent la taille maximale autorisÃ©e.',
			'errResize'            : 'Impossible de redimensionner "$1".',
			'errResizeDegree'      : 'DegrÃ© de rotation invalide.',  // added 7.3.2013
			'errResizeRotate'      : 'L\'image ne peut pas Ãªtre tournÃ©e.',  // added 7.3.2013
			'errResizeSize'        : 'Dimension de l\'image non-valide.',  // added 7.3.2013
			'errResizeNoChange'    : 'L\'image n\'est pas redimensionnable.',  // added 7.3.2013
			'errUsupportType'      : 'Type de fichier non supportÃ©.',
			'errNotUTF8Content'    : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut Ãªtre Ã©ditÃ©.',  // added 9.11.2011
			'errNetMount'          : 'Impossible de monter "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocole non supportÃ©.',     // added 17.04.2012
			'errNetMountFailed'    : 'Echec du montage.',         // added 17.04.2012
			'errNetMountHostReq'   : 'HÃ´te requis.', // added 18.04.2012
			'errSessionExpires'    : 'Votre session a expirÃ© en raison de son inactivitÃ©.',
			'errCreatingTempDir'   : 'Impossible de crÃ©er le rÃ©pertoire temporaire : "$1"',
			'errFtpDownloadFile'   : 'Impossible de tÃ©lÃ©charger le file depuis l\'accÃ¨s FTP : "$1"',
			'errFtpUploadFile'     : 'Impossible d\'envoyer le fichier vers l\'accÃ¨s FTP : "$1"',
			'errFtpMkdir'          : 'Impossible de crÃ©er un rÃ©pertoire distant sur l\'accÃ¨s FTP :"$1"',
			'errArchiveExec'       : 'Erreur lors de l\'archivage des fichiers : "$1"',
			'errExtractExec'       : 'Erreur lors de l\'extraction des fichiers : "$1"',
			'errNetUnMount'        : 'Impossible de dÃ©monter.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'DÃ©lai dâ€™attente dÃ©passÃ© pour la recherche "$1". Le rÃ©sultat de la recherche est partiel.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'RÃ©authorisation requise.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Le nombre maximal d\'Ã©lÃ©ments pouvant Ãªtre sÃ©lectionnÃ©s est $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu Ãªtre identifiÃ©e.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Aucun Ã©diteur n\'a Ã©tÃ© trouvÃ© pour ce type de fichier.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Une erreur est survenue du cÃ´tÃ© serveur.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'CrÃ©er une archive',
			'cmdback'      : 'PrÃ©cÃ©dent',
			'cmdcopy'      : 'Copier',
			'cmdcut'       : 'Couper',
			'cmddownload'  : 'TÃ©lÃ©charger',
			'cmdduplicate' : 'Dupliquer',
			'cmdedit'      : 'Ã‰diter le fichier',
			'cmdextract'   : 'Extraire les fichiers de l\'archive',
			'cmdforward'   : 'Suivant',
			'cmdgetfile'   : 'SÃ©lectionner les fichiers',
			'cmdhelp'      : 'Ã€ propos de ce logiciel',
			'cmdhome'      : 'Accueil',
			'cmdinfo'      : 'Informations',
			'cmdmkdir'     : 'Nouveau dossier',
			'cmdmkdirin'   : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nouveau fichier',
			'cmdopen'      : 'Ouvrir',
			'cmdpaste'     : 'Coller',
			'cmdquicklook' : 'PrÃ©visualiser',
			'cmdreload'    : 'Actualiser',
			'cmdrename'    : 'Renommer',
			'cmdrm'        : 'Supprimer',
			'cmdtrash'     : 'Ã€ la corbeille', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurer', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Trouver les fichiers',
			'cmdup'        : 'Remonter au dossier parent',
			'cmdupload'    : 'Envoyer les fichiers',
			'cmdview'      : 'Vue',
			'cmdresize'    : 'Redimensionner l\'image',
			'cmdsort'      : 'Trier',
			'cmdnetmount'  : 'Monter un volume rÃ©seau', // added 18.04.2012
			'cmdnetunmount': 'DÃ©monter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Vers Favoris', // added 28.12.2014
			'cmdchmod'     : 'Changer de mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ouvrir un dossier', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'RÃ©initialiser largeur colone', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Plein Ã©cran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'DÃ©placer', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vider le dossier', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annuler', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refaire', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'PrÃ©fÃ©rences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Tout sÃ©lectionner', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Tout dÃ©sÃ©lectionner', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverser la sÃ©lection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ouvrir dans une nouvelle fenÃªtre', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fermer',
			'btnSave'   : 'Sauvegarder',
			'btnRm'     : 'Supprimer',
			'btnApply'  : 'Confirmer',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Non',
			'btnYes'    : 'Oui',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Monter',  // added 18.04.2012
			'btnApprove': 'Aller Ã  $1 & approuver', // from v2.1 added 26.04.2012
			'btnUnmount': 'DÃ©monter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tous',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Type MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nom du fichier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renommer',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'PrÃ©c. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ouvrir le dossier',
			'ntffile'     : 'Ouvrir le fichier',
			'ntfreload'   : 'Actualiser le contenu du dossier',
			'ntfmkdir'    : 'CrÃ©ation du dossier',
			'ntfmkfile'   : 'CrÃ©ation des fichiers',
			'ntfrm'       : 'Supprimer les Ã©lÃ©ments',
			'ntfcopy'     : 'Copier les Ã©lÃ©ments',
			'ntfmove'     : 'DÃ©placer les Ã©lÃ©ments',
			'ntfprepare'  : 'PrÃ©paration de la copie des Ã©lÃ©ments',
			'ntfrename'   : 'Renommer les fichiers',
			'ntfupload'   : 'Envoi des fichiers',
			'ntfdownload' : 'TÃ©lÃ©chargement des fichiers',
			'ntfsave'     : 'Sauvegarder les fichiers',
			'ntfarchive'  : 'CrÃ©ation de l\'archive',
			'ntfextract'  : 'Extraction des fichiers de l\'archive',
			'ntfsearch'   : 'Recherche des fichiers',
			'ntfresize'   : 'Redimensionner les images',
			'ntfsmth'     : 'Fait quelque chose',
			'ntfloadimg'  : 'Chargement de l\'image',
			'ntfnetmount' : 'Monte le volume rÃ©seau', // added 18.04.2012
			'ntfnetunmount': 'DÃ©monte le volume rÃ©seau', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Calcule la dimension de l\'image', // added 20.05.2013
			'ntfreaddir'  : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013
			'ntfurl'      : 'RÃ©cupÃ©ration de lâ€™URL du lien', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changement de mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'VÃ©rification du nom du fichier envoyÃ©', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'CrÃ©ation dâ€™un fichier pour le tÃ©lÃ©chargement', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Traitement du fichier envoyÃ©', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Mettre Ã  la corbeille', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annuler l\'opÃ©ration prÃ©cÃ©dente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refaire l\'opÃ©ration annulÃ©e', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Inconnue',
			'Today'       : 'Aujourd\'hui',
			'Yesterday'   : 'Hier',
			'msJan'       : 'Jan',
			'msFeb'       : 'FÃ©v',
			'msMar'       : 'Mar',
			'msApr'       : 'Avr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'AoÃ»',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'DÃ©c',
			'January'     : 'Janvier',
			'February'    : 'FÃ©vrier',
			'March'       : 'Mars',
			'April'       : 'Avril',
			'May'         : 'Mai',
			'June'        : 'Juin',
			'July'        : 'Huillet',
			'August'      : 'AoÃ»t',
			'September'   : 'Septembre',
			'October'     : 'Octobre',
			'November'    : 'Novembre',
			'December'    : 'DÃ©cembre',
			'Sunday'      : 'Dimanche',
			'Monday'      : 'Lundi',
			'Tuesday'     : 'Mardi',
			'Wednesday'   : 'Mercredi',
			'Thursday'    : 'Jeudi',
			'Friday'      : 'Vendredi',
			'Saturday'    : 'Samedi',
			'Sun'         : 'Dim',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Jeu',
			'Fri'         : 'Ven',
			'Sat'         : 'Sam',

			/******************************** sort variants ********************************/
			'sortname'          : 'par nom',
			'sortkind'          : 'par type',
			'sortsize'          : 'par taille',
			'sortdate'          : 'par date',
			'sortFoldersFirst'  : 'Dossiers en premier',
			'sortperm'          : 'par permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'par mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'par propriÃ©taire',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'par groupe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Egalement arborescence',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015
			'untitled folder'   : 'NouveauDossier',   // added 10.11.2015
			'Archive'           : 'NouvelleArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation requise',
			'confirmRm'       : 'ÃŠtes-vous certain de vouloir supprimer les Ã©lÃ©ments ?<br/>Cela ne peut Ãªtre annulÃ© !',
			'confirmRepl'     : 'Supprimer l\'ancien fichier par le nouveau ?',
			'confirmRest'     : 'Remplacer l\'Ã©lÃ©ment existant par l\'Ã©lÃ©ment de la corbeille ?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8<br/>Convertir en UTF-8 ?<br/>Les contenus deviendront UTF-8 en sauvegardant aprÃ¨s la conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Impossible de dÃ©tecter l\'encodage de ce fichier. Pour Ãªtre modifiÃ©, il doit Ãªtre temporairement convertit en UTF-8.<br/>Veuillez s\'il vous plaÃ®t sÃ©lectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ce fichier a Ã©tÃ© modifiÃ©.<br/>Les donnÃ©es seront perdues si les changements ne sont pas sauvegardÃ©s.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'ÃŠtes-vous certain de vouloir dÃ©placer les Ã©lÃ©ments vers la corbeille?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Appliquer Ã  tous',
			'name'            : 'Nom',
			'size'            : 'Taille',
			'perms'           : 'Permissions',
			'modify'          : 'ModifiÃ©',
			'kind'            : 'Type',
			'read'            : 'Lecture',
			'write'           : 'Ã‰criture',
			'noaccess'        : 'Pas d\'accÃ¨s',
			'and'             : 'et',
			'unknown'         : 'inconnu',
			'selectall'       : 'SÃ©lectionner tous les Ã©lÃ©ments',
			'selectfiles'     : 'SÃ©lectionner le(s) Ã©lÃ©ment(s)',
			'selectffile'     : 'SÃ©lectionner le premier Ã©lÃ©ment',
			'selectlfile'     : 'SÃ©lectionner le dernier Ã©lÃ©ment',
			'viewlist'        : 'Vue par liste',
			'viewicons'       : 'Vue par icÃ´nes',
			'viewSmall'       : 'Petites icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Moyennes icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Grandes icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'TrÃ¨s grandes icÃ´nes', // from v2.1.39 added 22.5.2018
			'places'          : 'Favoris',
			'calc'            : 'Calculer',
			'path'            : 'Chemin',
			'aliasfor'        : 'Raccourcis pour',
			'locked'          : 'Verrouiller',
			'dim'             : 'Dimensions',
			'files'           : 'Fichiers',
			'folders'         : 'Dossiers',
			'items'           : 'Ã‰lÃ©ments',
			'yes'             : 'oui',
			'no'              : 'non',
			'link'            : 'Lien',
			'searcresult'     : 'RÃ©sultats de la recherche',
			'selected'        : 'Ã‰lÃ©ments sÃ©lectionnÃ©s',
			'about'           : 'Ã€ propos',
			'shortcuts'       : 'Raccourcis',
			'help'            : 'Aide',
			'webfm'           : 'Gestionnaire de fichier Web',
			'ver'             : 'Version',
			'protocolver'     : 'Version du protocole',
			'homepage'        : 'Page du projet',
			'docs'            : 'Documentation',
			'github'          : 'Forkez-nous sur Github',
			'twitter'         : 'Suivez nous sur twitter',
			'facebook'        : 'Joignez-nous facebook',
			'team'            : 'Ã‰quipe',
			'chiefdev'        : 'DÃ©veloppeur en chef',
			'developer'       : 'DÃ©veloppeur',
			'contributor'     : 'Contributeur',
			'maintainer'      : 'Mainteneur',
			'translator'      : 'Traducteur',
			'icons'           : 'IcÃ´nes',
			'dontforget'      : 'et n\'oubliez pas votre serviette',
			'shortcutsof'     : 'Raccourcis dÃ©sactivÃ©s',
			'dropFiles'       : 'DÃ©posez les fichiers ici',
			'or'              : 'ou',
			'selectForUpload' : 'SÃ©lectionner les fichiers Ã  envoyer',
			'moveFiles'       : 'DÃ©placer les Ã©lÃ©ments',
			'copyFiles'       : 'Copier les Ã©lÃ©ments',
			'restoreFiles'    : 'Restaurer les Ã©lÃ©ments', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Retirer des favoris',
			'aspectRatio'     : 'Ratio dâ€™affichage',
			'scale'           : 'Mise Ã  l\'Ã©chelle',
			'width'           : 'Largeur',
			'height'          : 'Hauteur',
			'resize'          : 'Redimensionner',
			'crop'            : 'Recadrer',
			'rotate'          : 'Rotation',
			'rotate-cw'       : 'Rotation de 90 degrÃ©s horaire',
			'rotate-ccw'      : 'Rotation de 90 degrÃ©s antihoraire',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Monter un volume rÃ©seau', // added 18.04.2012
			'protocol'            : 'Protocole', // added 18.04.2012
			'host'                : 'HÃ´te', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilisateur', // added 18.04.2012
			'pass'                : 'Mot de passe', // added 18.04.2012
			'confirmUnmount'      : 'DÃ©monter $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Glissez-dÃ©posez depuis le navigateur de fichier', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Glissez-dÃ©posez les fichiers ici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodage', // from v2.1 added 19.12.2014
			'locale'          : 'Encodage rÃ©gional',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destination: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Recherche par type MIME', // from v2.1 added 22.5.2015
			'owner'           : 'PropriÃ©taire', // from v2.1 added 20.6.2015
			'group'           : 'Groupe', // from v2.1 added 20.6.2015
			'other'           : 'Autre', // from v2.1 added 20.6.2015
			'execute'         : 'ExÃ©cuter', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Le dossier est vide', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-dÃ©posez pour ajouter des Ã©lÃ©ments.', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des Ã©lÃ©ments.', // from v2.1.6 added 30.12.2015
			'quality'         : 'QualitÃ©', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Synchronisation automatique',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'DÃ©placer vers le haut',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtenir le lien dâ€™URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ã‰lÃ©ments sÃ©lectionnÃ©s ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID du dossier', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permettre l\'accÃ¨s hors-ligne', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Pour se rÃ©authentifier', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'En cours de chargement...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. ÃŠtes-vous sÃ»r de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Aucun rÃ©sultat trouvÃ© avec les paramÃ¨tres de recherche.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vous avez sÃ©lectionnÃ© $1 Ã©lÃ©ments.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Vous avez $1 Ã©lÃ©ments dans le presse-papier.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Recherche incrÃ©mentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'RÃ©tablir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complÃ©tÃ©', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextuel', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Tourner la page', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumes principaux', // from v2.1.16 added 16.9.2016
			'reset'           : 'RÃ©initialiser', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Couleur de fond', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'SÃ©lecteur de couleur', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grille 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Actif', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inactif', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Aucun rÃ©sultat trouvÃ©.\\AAppuyez sur [EntrÃ©e] pour dÃ©velopper la cible de recherche.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Aucun rÃ©sultat trouvÃ© pour la recherche par premiÃ¨re lettre.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Label texte', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'RÃ©ouvrir avec l\'encodage sÃ©lectionnÃ©', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Sauvegarder avec l\'encodage sÃ©lectionnÃ©', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Choisir le dossier', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Recherche par premiÃ¨re lettre', // from v2.1.23 added 24.3.2017
			'presets'         : 'PrÃ©sÃ©lections', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Impossible de mettre autant d\'Ã©lÃ©ments Ã  la corbeille.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Zone de texte', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Il n\'y a pas d\'Ã©lÃ©ment dans le dossier "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'PrÃ©fÃ©rence', // from v2.1.26 added 28.6.2017
			'language'        : 'Configuration de langue', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisation des configurations sauvegardÃ©es dans ce navigateur', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ParamÃ¨tres de la barre d\'outils', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caractÃ¨res restants.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Somme', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'SÃ©lectionner', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action lors de la sÃ©lection d\'un fichier', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ouvrir avec le dernier Ã©diteur utilisÃ©', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverser la sÃ©lection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ÃŠtes-vous sÃ»r de vouloir renommer les Ã©lÃ©ments sÃ©lectionnÃ©s $1 en $2 ?<br/>L\'action est dÃ©finitive !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renommer le Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nombre', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ajouter un prÃ©fixe', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ParamÃ¨tres des colonnes (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Les changements seront immÃ©diatement appliquÃ©s Ã  l\'archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Aucun changement ne sera appliquÃ© tant que ce volume n\'a pas Ã©tÃ© dÃ©montÃ©.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Le(s) volume(s) suivant(s) montÃ©s sur ce volume seront Ã©galement dÃ©montÃ©s. ÃŠtes-vous sÃ»r de vouloir le dÃ©monter ?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informations sur la sÃ©lection', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Appuyez Ã  nouveau pour quitter.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barre d\'outils', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espace de travail', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogue', // from v2.1.38 added 4.4.2018
			'all'             : 'Tout', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Inconnu',
			'kindRoot'        : 'Volume principal', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dossier',
			'kindSelects'     : 'SÃ©lections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Raccourci',
			'kindAliasBroken' : 'Raccourci cassÃ©',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'PrÃ©sentation Microsoft PowerPoint',
			'kindOO'          : 'Document OpenOffice',
			'kindAppFlash'    : 'Application Flash',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Fichier BitTorrent',
			'kind7z'          : 'Archive 7z',
			'kindTAR'         : 'Archive TAR',
			'kindGZIP'        : 'Archive GZIP',
			'kindBZIP'        : 'Archive BZIP',
			'kindXZ'          : 'Archive XZ',
			'kindZIP'         : 'Archive ZIP',
			'kindRAR'         : 'Archive RAR',
			'kindJAR'         : 'Fichier Java JAR',
			'kindTTF'         : 'Police True Type',
			'kindOTF'         : 'Police Open Type',
			'kindRPM'         : 'Package RPM',
			// fonts
			'kindFont'        : 'Police',
			'kindSFNT'        : 'Police SFNT',
			'kindEOT'         : 'Police Embedded Open Type',
			'kindWOFF'        : 'Police Web Open Font Format',
			'kindWOFF2'       : 'Police Web Open Font Format 2',
			// texts
			'kindText'        : 'Document Text',
			'kindTextPlain'   : 'Texte non formatÃ©',
			'kindPHP'         : 'Source PHP',
			'kindCSS'         : 'Feuille de style en cascade',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Source JavaScript',
			'kindRTF'         : 'Format de texte enrichi (Rich Text Format)',
			'kindC'           : 'Source C',
			'kindCHeader'     : 'Source header C',
			'kindCPP'         : 'Source C++',
			'kindCPPHeader'   : 'Source header C++',
			'kindShell'       : 'Shell script Unix',
			'kindPython'      : 'Source Python',
			'kindJava'        : 'Source Java',
			'kindRuby'        : 'Source Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Source SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Source AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'Image BMP',
			'kindJPEG'        : 'Image JPEG',
			'kindGIF'         : 'Image GIF',
			'kindPNG'         : 'Image PNG',
			'kindTIFF'        : 'Image TIFF',
			'kindTGA'         : 'Image TGA',
			'kindPSD'         : 'Image Adobe Photoshop',
			'kindXBITMAP'     : 'Image X bitmap',
			'kindPXM'         : 'Image Pixelmator',
			// media
			'kindAudio'       : 'Son',
			'kindAudioMPEG'   : 'Son MPEG',
			'kindAudioMPEG4'  : 'Son MPEG-4',
			'kindAudioMIDI'   : 'Son MIDI',
			'kindAudioOGG'    : 'Son Ogg Vorbis',
			'kindAudioWAV'    : 'Son WAV',
			'AudioPlaylist'   : 'Liste de lecture audio',
			'kindVideo'       : 'VidÃ©o',
			'kindVideoDV'     : 'VidÃ©o DV',
			'kindVideoMPEG'   : 'VidÃ©o MPEG',
			'kindVideoMPEG4'  : 'VidÃ©o MPEG-4',
			'kindVideoAVI'    : 'VidÃ©o AVI',
			'kindVideoMOV'    : 'VidÃ©o Quick Time',
			'kindVideoWM'     : 'VidÃ©o Windows Media',
			'kindVideoFlash'  : 'VidÃ©o Flash',
			'kindVideoMKV'    : 'VidÃ©o Matroska',
			'kindVideoOGG'    : 'VidÃ©o Ogg'
		}
	};
}));

                                                                                                                                                                                          includes/File_manager/lib/js/i18n/elfinder.ko.js                                                    0000644                 00000106500 15266052760 0015435 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Korea-í•œêµ­ì–´ translation
 * @author Hwang Ahreum; <luckmagic@naver.com>
 * @author Park Sungyong; <sungyong@gmail.com>
 * @author Yeonjeong Woo <eat_sweetly@naver.com>
 * @author Kwon Hyungjoo <hyung778@gmail.com>
 * @version 2024-03-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ko = {
		translator : 'Hwang Ahreum; &lt;luckmagic@naver.com&gt;, Park Sungyong; &lt;sungyong@gmail.com&gt;, Yeonjeong Woo &lt;eat_sweetly@naver.com&gt;, Kwon Hyungjoo &lt;hyung778@gmail.com&gt;',
		language   : 'Korea-í•œêµ­ì–´',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i', // will show like: 2024-03-19 16:27
		fancyDateFormat : '$1 H:i', // will show like: ì˜¤ëŠ˜ 16:27
		nonameDateFormat : 'ymd-His', // noname upload will show like: 240319-162748
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'ì˜¤ë¥˜',
			'errUnknown'           : 'ì•Œ ìˆ˜ ì—†ëŠ” ì˜¤ë¥˜.',
			'errUnknownCmd'        : 'ì•Œ ìˆ˜ ì—†ëŠ” ëª…ë ¹ì–´.',
			'errJqui'              : 'jQuery UI ì„¤ì •ì�´ ì˜¬ë°”ë¥´ì§€ ì•ŠìŠµë‹ˆë‹¤. Selectable, draggable ë°� droppable êµ¬ì„± ìš”ì†Œê°€ í�¬í•¨ë�˜ì–´ ìžˆì–´ì•¼ í•©ë‹ˆë‹¤.',
			'errNode'              : 'elFinderë¥¼ ìƒ�ì„±í•˜ê¸° ìœ„í•´ì„œëŠ” DOM Elementë¥¼ ìš”êµ¬í•©ë‹ˆë‹¤.',
			'errURL'               : 'elFinder í™˜ê²½ì„¤ì •ì�´ ì˜¬ë°”ë¥´ì§€ ì•ŠìŠµë‹ˆë‹¤! URL ì˜µì…˜ì�´ ì„¤ì •ë�˜ì§€ ì•Šì•˜ìŠµë‹ˆë‹¤.',
			'errAccess'            : 'ì ‘ê·¼ ì œí•œ.',
			'errConnect'           : 'Backendì—� ì—°ê²°í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errAbort'             : 'ì—°ê²° ì‹¤íŒ¨.',
			'errTimeout'           : 'ì—°ê²°ì‹œê°„ ì´ˆê³¼.',
			'errNotFound'          : 'Backendë¥¼ ì°¾ì�„ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errResponse'          : 'Backendê°€ ì�‘ë‹µí•˜ì§€ ì•ŠìŠµë‹ˆë‹¤.',
			'errConf'              : 'Backend í™˜ê²½ì„¤ì •ì�´ ì˜¬ë°”ë¥´ì§€ ì•ŠìŠµë‹ˆë‹¤.',
			'errJSON'              : 'PHP JSON ëª¨ë“ˆì�´ ì„¤ì¹˜ë�˜ì§€ ì•Šì•˜ìŠµë‹ˆë‹¤.',
			'errNoVolumes'         : 'ì�½ì�„ ìˆ˜ ìžˆëŠ” ë³¼ë¥¨ì�´ ì—†ìŠµë‹ˆë‹¤.',
			'errCmdParams'         : '"$1" ëª…ë ¹ì—� ìž˜ëª»ë�œ ë§¤ê°œ ë³€ìˆ˜ê°€ ìžˆìŠµë‹ˆë‹¤.',
			'errDataNotJSON'       : 'ë�°ì�´í„°ê°€ JSONì�´ ì•„ë‹™ë‹ˆë‹¤.',
			'errDataEmpty'         : 'ë�°ì�´í„°ê°€ ë¹„ì–´ìžˆìŠµë‹ˆë‹¤.',
			'errCmdReq'            : 'Backend ìš”ì²­ì—�ëŠ” ëª…ë ¹ì–´ ì�´ë¦„ì�´ í•„ìš”í•©ë‹ˆë‹¤.',
			'errOpen'              : '"$1"ì�„(ë¥¼) ì—´ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errNotFolder'         : 'í�´ë�”ê°€ ì•„ë‹™ë‹ˆë‹¤.',
			'errNotFile'           : 'íŒŒì�¼ì�´ ì•„ë‹™ë‹ˆë‹¤.',
			'errRead'              : '"$1"ì�„(ë¥¼) ì�½ì�„ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errWrite'             : '"$1"ì—� ì“¸ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errPerm'              : 'ê¶Œí•œì�´ ì—†ìŠµë‹ˆë‹¤.',
			'errLocked'            : '"$1"ì�´(ê°€) ìž ê²¨ ìžˆìŠµë‹ˆë‹¤, ì�´ë�™, ì‚­ì œê°€ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤',
			'errExists'            : 'ì�´ë¯¸ "$1"íŒŒì�¼ì�´ ì¡´ìž¬í•©ë‹ˆë‹¤.',
			'errInvName'           : 'íŒŒì�¼ëª…ì—� ì˜¬ë°”ë¥´ì§€ ì•Šì�€ ë¬¸ìž�ê°€ í�¬í•¨ë�˜ì—ˆìŠµë‹ˆë‹¤.',
			'errInvDirname'        : 'í�´ë�”ëª…ì—� ì˜¬ë°”ë¥´ì§€ ì•Šì�€ ë¬¸ìž�ê°€ í�¬í•¨ë�˜ì—ˆìŠµë‹ˆë‹¤.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'í�´ë�”ë¥¼ ì°¾ì�„ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errFileNotFound'      : 'íŒŒì�¼ì�„ ì°¾ì�„ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errTrgFolderNotFound' : '"$1" í�´ë�”ë¥¼ ì°¾ì�„ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errPopup'             : 'ë¸Œë�¼ìš°ì €ì—�ì„œ íŒ�ì—…ì�„ ì°¨ë‹¨í•˜ì˜€ìŠµë‹ˆë‹¤. íŒ�ì—…ì�„ í—ˆìš©í•˜ë ¤ë©´ ë¸Œë�¼ìš°ì € ì˜µì…˜ì�„ ë³€ê²½í•˜ì„¸ìš”.',
			'errMkdir'             : '"$1" í�´ë�”ë¥¼ ìƒ�ì„±í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errMkfile'            : '"$1" íŒŒì�¼ì�„ ìƒ�ì„±í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errRename'            : '"$1"ì�˜ ì�´ë¦„ì�„ ë³€ê²½í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errCopyFrom'          : 'ë³¼ë¥  "$1"ìœ¼(ë¡œ)ë¶€í„° íŒŒì�¼ì�„ ë³µì‚¬í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errCopyTo'            : 'ë³¼ë¥  "$1"ì—� íŒŒì�¼ì�„ ë³µì‚¬í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errMkOutLink'         : 'root ë³¼ë¥¨ ì™¸ë¶€ì—� ë§�í�¬ë¥¼ ë§Œë“¤ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1 added 03.10.2015
			'errUpload'            : 'ì—…ë¡œë“œ ì˜¤ë¥˜.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1"ì�„(ë¥¼) ì—…ë¡œë“œí•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // old name - errUpload
			'errUploadNoFiles'     : 'ì—…ë¡œë“œí•  íŒŒì�¼ì�´ ì—†ìŠµë‹ˆë‹¤.',
			'errUploadTotalSize'   : 'ë�°ì�´í„°ê°€ í—ˆìš©ë�œ ìµœëŒ€í�¬ê¸°ë¥¼ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.', // old name - errMaxSize
			'errUploadFileSize'    : 'íŒŒì�¼ì�´ í—ˆìš©ë�œ ìµœëŒ€í�¬ê¸°ë¥¼ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.', //  old name - errFileMaxSize
			'errUploadMime'        : 'ìž˜ëª»ë�œ íŒŒì�¼í˜•ì‹�ìž…ë‹ˆë‹¤.',
			'errUploadTransfer'    : '"$1" ì „ì†¡ ì˜¤ë¥˜.',
			'errUploadTemp'        : 'ì—…ë¡œë“œì—� í•„ìš”í•œ ìž„ì‹œíŒŒì�¼ ìƒ�ì„±ì�„ í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1"ê°œì²´ê°€ í˜„ìž¬ ìœ„ì¹˜ì—� ì�´ë¯¸ ì¡´ìž¬í•˜ë©° ë‹¤ë¥¸ ìœ í˜•ì�˜ ê°œì²´ë¡œ ëŒ€ì²´ í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // new
			'errReplace'           : '"$1"ì�„(ë¥¼) ë³€ê²½í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errSave'              : '"$1"ì�„(ë¥¼) ì €ìž¥í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errCopy'              : '"$1"ì�„(ë¥¼) ë³µì‚¬í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errMove'              : '"$1"ì�„(ë¥¼) ì�´ë�™í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errCopyInItself'      : '"$1"ì�„(ë¥¼) ìž�ê¸° ìž�ì‹ ì—�ê²Œ ë³µì‚¬í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errRm'                : '"$1"ì�˜ ì�´ë¦„ì�„ ë³€ê²½í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errTrash'             : 'íœ´ì§€í†µìœ¼ë¡œ ë³´ë‚¼ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ì›�ë³¸ íŒŒì�¼ì�„ ì œê±°í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errExtract'           : '"$1"ì—� ì••ì¶•ì�„ í’€ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errArchive'           : 'ì••ì¶•íŒŒì�¼ì�„ ìƒ�ì„±í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errArcType'           : 'ì§€ì›�í•˜ì§€ ì•ŠëŠ” ì••ì¶•íŒŒì�¼ í˜•ì‹�ìž…ë‹ˆë‹¤.',
			'errNoArchive'         : 'ì••ì¶•íŒŒì�¼ì�´ ì•„ë‹ˆê±°ë‚˜ ì§€ì›�í•˜ì§€ ì•ŠëŠ” ì••ì¶•íŒŒì�¼ í˜•ì‹�ìž…ë‹ˆë‹¤.',
			'errCmdNoSupport'      : 'Backendì—�ì„œ ì�´ ëª…ë ¹ì�„ ì§€ì›�í•˜ì§€ ì•ŠìŠµë‹ˆë‹¤.',
			'errReplByChild'       : '"$1" í�´ë�”ì—� ë�®ì–´ì“¸ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errArcSymlinks'       : 'ë³´ì•ˆìƒ�ì�˜ ì�´ìœ ë¡œ ì••ì¶•íŒŒì�¼ì�´ ì‹¬ë³¼ë¦­ ë§�í�¬ë¥¼ í�¬í•¨í•˜ê±°ë‚˜ í—ˆìš©ë�˜ì§€ ì•ŠëŠ” ì�´ë¦„ì�´ ìžˆì�„ ê²½ìš° ì••ì¶• í•´ì œê°€ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.', // edited 24.06.2012
			'errArcMaxSize'        : 'ì••ì¶•íŒŒì�¼ì�´ í—ˆìš©ë�œ ìµœëŒ€í�¬ê¸°ë¥¼ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.',
			'errResize'            : '"$1"ì�˜ í�¬ê¸° ë³€ê²½ì�„ í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',
			'errResizeDegree'      : 'íšŒì „ê°€ëŠ¥í•œ ê°�ë�„ê°€ ì•„ë‹™ë‹ˆë‹¤.',  // added 7.3.2013
			'errResizeRotate'      : 'ì�´ë¯¸ì§€ë¥¼ íšŒì „í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',  // added 7.3.2013
			'errResizeSize'        : 'ì˜¬ë°”ë¥´ì§€ ì•Šì�€ í�¬ê¸°ì�˜ ì�´ë¯¸ì§€ìž…ë‹ˆë‹¤.',  // added 7.3.2013
			'errResizeNoChange'    : 'ì�´ë¯¸ì§€ í�¬ê¸°ê°€ ë³€ê²½ë�˜ì§€ ì•Šì•˜ìŠµë‹ˆë‹¤.',  // added 7.3.2013
			'errUsupportType'      : 'ì§€ì›�í•˜ì§€ ì•ŠëŠ” íŒŒì�¼ í˜•ì‹�.',
			'errNotUTF8Content'    : 'íŒŒì�¼ "$1"ì�€ UTF-8 í˜•ì‹�ì�´ ì•„ë‹ˆì–´ì„œ íŽ¸ì§‘í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.',  // added 9.11.2011
			'errNetMount'          : '"$1"ì�„(ë¥¼) ë§ˆìš´íŠ¸í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // added 17.04.2012
			'errNetMountNoDriver'  : 'ì§€ì›�ë�˜ì§€ ì•ŠëŠ” í”„ë¡œí† ì½œ.',     // added 17.04.2012
			'errNetMountFailed'    : 'ë§ˆìš´ë“œ ì‹¤íŒ¨.',         // added 17.04.2012
			'errNetMountHostReq'   : 'í˜¸ìŠ¤íŠ¸ê°€ í•„ìš”í•©ë‹ˆë‹¤.', // added 18.04.2012
			'errSessionExpires'    : 'í™œë�™ì�´ ì—†ì–´ ì„¸ì…˜ì�´ ë§Œë£Œë�˜ì—ˆìŠµë‹ˆë‹¤.',
			'errCreatingTempDir'   : 'ìž„ì‹œ í�´ë�” ìƒ�ì„±ì—� ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errFtpDownloadFile'   : 'FTPë¥¼ í†µí•œ ë‹¤ìš´ë¡œë“œì—� ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errFtpUploadFile'     : 'FTPì—� ì—…ë¡œë“œ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errFtpMkdir'          : 'FTPì—�ì„œ í�´ë�” ìƒ�ì„±ì—� ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errArchiveExec'       : 'ì••ì¶•ì¤‘ ì˜¤ë¥˜ê°€ ë°œìƒ�í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errExtractExec'       : 'ì••ì¶•í•´ì œì¤‘ ì˜¤ë¥˜ê°€ ë°œìƒ�í–ˆìŠµë‹ˆë‹¤: "$1"',
			'errNetUnMount'        : 'ë§ˆìš´íŠ¸ë¥¼ í•´ì œí•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8ë¡œ ë³€í™˜í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'í�´ë�”ë¥¼ ì—…ë¡œë“œ í•˜ë ¤ë©´ ìµœì‹  ë¸Œë�¼ìš°ì €ë¥¼ ì‚¬ìš©í•˜ì„¸ìš”.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" ê²€ìƒ‰ì¤‘ ì‹œê°„ì�„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤. ì�¼ë¶€ ê²°ê³¼ë§Œ í‘œì‹œë�©ë‹ˆë‹¤.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'ìž¬ì�¸ì¦�ì�´ í•„ìš”í•©ë‹ˆë‹¤.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'ì„ íƒ� ê°€ëŠ¥í•œ ìµœëŒ€ ê°œìˆ˜ëŠ” $1ê°œìž…ë‹ˆë‹¤.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'íœ´ì§€í†µì—�ì„œ ë³µì›�í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤. ë³µì›�í•  ìœ„ì¹˜ë¥¼ í™•ì�¸í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'ì�´ íŒŒì�¼ í˜•ì‹�ì�„ ìœ„í•œ íŽ¸ì§‘ê¸°ë¥¼ ì°¾ì§€ ëª»í–ˆìŠµë‹ˆë‹¤.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'ì„œë²„ì¸¡ì—�ì„œ ì˜¤ë¥˜ê°€ ë°œìƒ�í–ˆìŠµë‹ˆë‹¤.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" í�´ë�”ë¥¼ ë¹„ìš¸ ìˆ˜ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '$1ê°œì�˜ ì˜¤ë¥˜ê°€ ë�” ë°œìƒ�í–ˆìŠµë‹ˆë‹¤.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'ì••ì¶•íŒŒì�¼ìƒ�ì„±',
			'cmdback'      : 'ë’¤ë¡œ',
			'cmdcopy'      : 'ë³µì‚¬',
			'cmdcut'       : 'ìž�ë¥´ê¸°',
			'cmddownload'  : 'ë‹¤ìš´ë¡œë“œ',
			'cmdduplicate' : 'ì‚¬ë³¸',
			'cmdedit'      : 'íŽ¸ì§‘',
			'cmdextract'   : 'ì••ì¶•í’€ê¸°',
			'cmdforward'   : 'ì•žìœ¼ë¡œ',
			'cmdgetfile'   : 'ì„ íƒ�',
			'cmdhelp'      : 'ì�´ ì†Œí”„íŠ¸ì›¨ì–´ëŠ”',
			'cmdhome'      : 'í™ˆ',
			'cmdinfo'      : 'íŒŒì�¼ì •ë³´',
			'cmdmkdir'     : 'ìƒˆ í�´ë�”',
			'cmdmkdirin'   : 'ìƒˆ í�´ë�”ë¡œ', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'ìƒˆ íŒŒì�¼',
			'cmdopen'      : 'ì—´ê¸°',
			'cmdpaste'     : 'ë¶™ì—¬ë„£ê¸°',
			'cmdquicklook' : 'ë¯¸ë¦¬ë³´ê¸°',
			'cmdreload'    : 'ìƒˆë¡œê³ ì¹¨',
			'cmdrename'    : 'ì�´ë¦„ë°”ê¾¸ê¸°',
			'cmdrm'        : 'ì‚­ì œ',
			'cmdtrash'     : 'íœ´ì§€í†µìœ¼ë¡œ', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'ë³µì›�', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'íŒŒì�¼ì°¾ê¸°',
			'cmdup'        : 'ìƒ�ìœ„í�´ë�”',
			'cmdupload'    : 'ì—…ë¡œë“œ',
			'cmdview'      : 'ë³´ê¸°',
			'cmdresize'    : 'ì�´ë¯¸ì§€ í�¬ê¸° ë³€ê²½ & íšŒì „',
			'cmdsort'      : 'ì •ë ¬',
			'cmdnetmount'  : 'ë„¤íŠ¸ì›Œí�¬ ë³¼ë¥¨ ë§ˆìš´íŠ¸', // added 18.04.2012
			'cmdnetunmount': 'ë§ˆìš´íŠ¸ í•´ì œ', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'ì¦�ê²¨ì°¾ê¸°ë¡œ', // added 28.12.2014
			'cmdchmod'     : 'ëª¨ë“œ ë³€ê²½', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'í�´ë�” ì—´ê¸°', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'ì»¬ëŸ¼ ë„“ì�´ ì´ˆê¸°í™”', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ì „ì²´ í™”ë©´', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ì�´ë�™', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'í�´ë�” ë¹„ìš°ê¸°', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ì‹¤í–‰ ì·¨ì†Œ', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'ë‹¤ì‹œ ì‹¤í–‰', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'í™˜ê²½ì„¤ì •', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'ì „ì²´ ì„ íƒ�', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'ì„ íƒ� ì·¨ì†Œ', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'ì„ íƒ� ë°˜ì „', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'ìƒˆ ì°½ìœ¼ë¡œ ì—´ê¸°', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'ìˆ¨ê¸°ê¸° (í™˜ê²½ì„¤ì •)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'ë‹«ê¸°',
			'btnSave'   : 'ì €ìž¥',
			'btnRm'     : 'ì‚­ì œ',
			'btnApply'  : 'ì �ìš©',
			'btnCancel' : 'ì·¨ì†Œ',
			'btnNo'     : 'ì•„ë‹ˆì˜¤',
			'btnYes'    : 'ì˜ˆ',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ë§ˆìš´íŠ¸',  // added 18.04.2012
			'btnApprove': '$1ë¡œ ì�´ë�™ ë°� ìŠ¹ì�¸', // from v2.1 added 26.04.2012
			'btnUnmount': 'ë§ˆìš´íŠ¸ í•´ì œ', // from v2.1 added 30.04.2012
			'btnConv'   : 'ë³€í™˜', // from v2.1 added 08.04.2014
			'btnCwd'    : 'ì—¬ê¸°',      // from v2.1 added 22.5.2015
			'btnVolume' : 'ë³¼ë¥¨',    // from v2.1 added 22.5.2015
			'btnAll'    : 'ì „ì²´',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME íƒ€ìž…', // from v2.1 added 22.5.2015
			'btnFileName':'íŒŒì�¼ ì�´ë¦„',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'ì €ìž¥í›„ ë‹«ê¸°', // from v2.1 added 12.6.2015
			'btnBackup' : 'ë°±ì—…', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ì�´ë¦„ë³€ê²½',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ì „ì²´ì�´ë¦„ ë³€ê²½', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ì�´ì „ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'ë‹¤ì�Œ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'ë‹¤ë¥¸ ì�´ë¦„ìœ¼ë¡œ ì €ìž¥í•˜ê¸°', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'í�´ë�” ì—´ê¸°',
			'ntffile'     : 'íŒŒì�¼ ì—´ê¸°',
			'ntfreload'   : 'ìƒˆë¡œê³ ì¹¨',
			'ntfmkdir'    : 'í�´ë�” ìƒ�ì„±',
			'ntfmkfile'   : 'íŒŒì�¼ ìƒ�ì„±',
			'ntfrm'       : 'ì‚­ì œ',
			'ntfcopy'     : 'ë³µì‚¬',
			'ntfmove'     : 'ì�´ë�™',
			'ntfprepare'  : 'ë³µì‚¬ ì¤€ë¹„',
			'ntfrename'   : 'ì�´ë¦„ë°”ê¾¸ê¸°',
			'ntfupload'   : 'ì—…ë¡œë“œ',
			'ntfdownload' : 'ë‹¤ìš´ë¡œë“œ',
			'ntfsave'     : 'ì €ìž¥í•˜ê¸°',
			'ntfarchive'  : 'ì••ì¶•íŒŒì�¼ë§Œë“¤ê¸°',
			'ntfextract'  : 'ì••ì¶•í’€ê¸°',
			'ntfsearch'   : 'ê²€ìƒ‰',
			'ntfresize'   : 'ì�´ë¯¸ì§€ í�¬ê¸° ë³€ê²½',
			'ntfsmth'     : 'ìž‘ì—…ì¤‘ >_<',
			'ntfloadimg'  : 'ì�´ë¯¸ì§€ ë¶ˆëŸ¬ì˜¤ëŠ” ì¤‘',
			'ntfnetmount' : 'ë„¤íŠ¸ì›Œí�¬ ë³¼ë¥¨ ë§ˆìš´íŠ¸ ì¤‘', // added 18.04.2012
			'ntfnetunmount': 'ë„¤íŠ¸ì›Œí�¬ ë³¼ë¥¨ ë§ˆìš´íŠ¸ í•´ì œ ì¤‘', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ì�´ë¯¸ì§€ í•´ìƒ�ë�„ ê°€ì ¸ì˜¤ëŠ” ì¤‘', // added 20.05.2013
			'ntfreaddir'  : 'í�´ë�” ì •ë³´ ì�½ëŠ” ì¤‘', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ë§�í�¬ URL ê°€ì ¸ì˜¤ëŠ” ì¤‘', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'íŒŒì�¼ ëª¨ë“œ ë³€ê²½í•˜ëŠ” ì¤‘', // from v2.1 added 20.6.2015
			'ntfpreupload': 'ì—…ë¡œë“œë�œ íŒŒì�¼ëª… ê²€ì¦� ì¤‘', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'ë‹¤ìš´ë¡œë“œí•  íŒŒì�¼ ìƒ�ì„± ì¤‘', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ê²½ë¡œ ì •ë³´ ê°€ì ¸ì˜¤ëŠ” ì¤‘', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ì—…ë¡œë“œë�œ íŒŒì�¼ ì²˜ë¦¬ ì¤‘', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'íœ´ì§€í†µìœ¼ë¡œ ì�´ë�™ ì¤‘', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'íœ´ì§€í†µì—�ì„œ ë³µì›� ì¤‘', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'ëŒ€ìƒ� í�´ë�” ì �ê²€ ì¤‘', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ì�´ì „ ìž‘ì—… ì·¨ì†Œ ì¤‘', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'ì·¨ì†Œë�œ ìž‘ì—… ë‹¤ì‹œ í•˜ëŠ” ì¤‘', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'ë‚´ìš© í™•ì�¸ ì¤‘', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'íœ´ì§€í†µ', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ì•Œ ìˆ˜ ì—†ì�Œ',
			'Today'       : 'ì˜¤ëŠ˜',
			'Yesterday'   : 'ì–´ì œ',
			'msJan'       : '1ì›”',
			'msFeb'       : '2ì›”',
			'msMar'       : '3ì›”',
			'msApr'       : '4ì›”',
			'msMay'       : '5ì›”',
			'msJun'       : '6ì›”',
			'msJul'       : '7ì›”',
			'msAug'       : '8ì›”',
			'msSep'       : '9ì›”',
			'msOct'       : '10ì›”',
			'msNov'       : '11ì›”',
			'msDec'       : '12ì›”',
			'January'     : '1ì›”',
			'February'    : '2ì›”',
			'March'       : '3ì›”',
			'April'       : '4ì›”',
			'May'         : '5ì›”',
			'June'        : '6ì›”',
			'July'        : '7ì›”',
			'August'      : '8ì›”',
			'September'   : '9ì›”',
			'October'     : '10ì›”',
			'November'    : '11ì›”',
			'December'    : '12ì›”',
			'Sunday'      : 'ì�¼ìš”ì�¼',
			'Monday'      : 'ì›”ìš”ì�¼',
			'Tuesday'     : 'í™”ìš”ì�¼',
			'Wednesday'   : 'ìˆ˜ìš”ì�¼',
			'Thursday'    : 'ëª©ìš”ì�¼',
			'Friday'      : 'ê¸ˆìš”ì�¼',
			'Saturday'    : 'í† ìš”ì�¼',
			'Sun'         : 'ì�¼',
			'Mon'         : 'ì›”',
			'Tue'         : 'í™”',
			'Wed'         : 'ìˆ˜',
			'Thu'         : 'ëª©',
			'Fri'         : 'ê¸ˆ',
			'Sat'         : 'í† ',

			/******************************** sort variants ********************************/
			'sortname'          : 'ì�´ë¦„',
			'sortkind'          : 'ì¢…ë¥˜',
			'sortsize'          : 'í�¬ê¸°',
			'sortdate'          : 'ë‚ ì§œ',
			'sortFoldersFirst'  : 'í�´ë�” ë¨¼ì €',
			'sortperm'          : 'í�¼ë¯¸ì…˜ë³„', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'ëª¨ë“œë³„',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'ì†Œìœ ìž�ë³„',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'ê·¸ë£¹ë³„',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'íŠ¸ë¦¬ë·°ë�„ ê°™ì�´',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'ìƒˆíŒŒì�¼.txt', // added 10.11.2015
			'untitled folder'   : 'ìƒˆí�´ë�”',   // added 10.11.2015
			'Archive'           : 'ìƒˆì•„ì¹´ì�´ë¸Œ',  // from v2.1 added 10.11.2015
			'untitled file'     : 'ìƒˆíŒŒì�¼.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: íŒŒì�¼',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'í™•ì�¸',
			'confirmRm'       : 'ì�´ íŒŒì�¼ì�„ ì •ë§�ë¡œ ì‚­ì œ í•˜ê² ìŠµë‹ˆê¹Œ?<br/>ì‹¤í–‰ í›„ ë�˜ë�Œë¦´ ìˆ˜ ì—†ìŠµë‹ˆë‹¤!',
			'confirmRepl'     : 'ì˜¤ëž˜ë�œ íŒŒì�¼ì�„ ìƒˆ íŒŒì�¼ë¡œ ë°”ê¾¸ì‹œê² ìŠµë‹ˆê¹Œ? (í�´ë�”ê°€ í�¬í•¨ë�˜ì–´ ìžˆìœ¼ë©´ ë³‘í•©ë�©ë‹ˆë‹¤. ë°±ì—… ë°� êµ�ì²´í•˜ë ¤ë©´ ë°±ì—…ì�„ ì„ íƒ�í•˜ì„¸ìš”.)',
			'confirmRest'     : 'ì�´ë¯¸ ìžˆëŠ” íŒŒì�¼ì�„ íœ´ì§€í†µì—� ìžˆëŠ” íŒŒì�¼ë¡œ êµ�ì²´í•˜ì‹œê² ìŠµë‹ˆê¹Œ?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8ì�´ ì•„ë‹™ë‹ˆë‹¤<br/>UTF-8ë¡œ ë³€í™˜í• ê¹Œìš”?<br/>ë³€í™˜í›„ ì €ìž¥í•˜ë©´ UTF-8ë¡œ ë°”ë€�ë‹ˆë‹¤.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ì�´ íŒŒì�¼ì�˜ ì�¸ì½”ë”© íƒ€ìž…ì�„ ì•Œì•„ë‚´ì§€ ëª»í–ˆìŠµë‹ˆë‹¤. íŽ¸ì§‘í•˜ë ¤ë©´ ìž„ì‹œë¡œ UTF-8ë¡œ ë³€í™˜í•´ì•¼ í•©ë‹ˆë‹¤.<br/>ì�´ íŒŒì�¼ì�˜ ì�¸ì½”ë”©ì�„ ì„ íƒ�í•´ì£¼ì„¸ìš”.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'ë³€ê²½ë�œ ë¶€ë¶„ì�´ ìžˆìŠµë‹ˆë‹¤.<br/>ì €ìž¥í•˜ì§€ ì•ŠëŠ”ë‹¤ë©´ í˜„ìž¬ ìž‘ì—…ì¤‘ì�¸ ë‚´ìš©ì�„ ìžƒì�„ ìˆ˜ ìžˆìŠµë‹ˆë‹¤.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'íœ´ì§€í†µìœ¼ë¡œ ì�´ë�™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'ì�´ íŒŒì�¼ì�„ ì •ë§� "$1"(ìœ¼)ë¡œ ì�´ë�™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'ëª¨ë‘� ì �ìš©',
			'name'            : 'ì�´ë¦„',
			'size'            : 'í�¬ê¸°',
			'perms'           : 'ê¶Œí•œ',
			'modify'          : 'ìˆ˜ì •ë�œ ì‹œê°„',
			'kind'            : 'ì¢…ë¥˜',
			'read'            : 'ì�½ê¸°',
			'write'           : 'ì“°ê¸°',
			'noaccess'        : 'ì•¡ì„¸ìŠ¤ ë¶ˆê°€',
			'and'             : 'ì™€',
			'unknown'         : 'ì•Œ ìˆ˜ ì—†ì�Œ',
			'selectall'       : 'ëª¨ë“  íŒŒì�¼ ì„ íƒ�',
			'selectfiles'     : 'íŒŒì�¼ ì„ íƒ�',
			'selectffile'     : 'ì²«ë²ˆì§¸ íŒŒì�¼ ì„ íƒ�',
			'selectlfile'     : 'ë§ˆì§€ë§‰ íŒŒì�¼ ì„ íƒ�',
			'viewlist'        : 'ë¦¬ìŠ¤íŠ¸ ë³´ê¸°',
			'viewicons'       : 'ì•„ì�´ì½˜ ë³´ê¸°',
			'viewSmall'       : 'ìž‘ì�€ ì•„ì�´ì½˜', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'ì¤‘ê°„ ì•„ì�´ì½˜', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'í�° ì•„ì�´ì½˜', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'ì•„ì£¼ í�° ì•„ì�´ì½˜', // from v2.1.39 added 22.5.2018
			'places'          : 'ì¦�ê²¨ì°¾ê¸°',
			'calc'            : 'ê³„ì‚°',
			'path'            : 'ê²½ë¡œ',
			'aliasfor'        : 'ë³„ëª…',
			'locked'          : 'ìž ê¸ˆ',
			'dim'             : 'í�¬ê¸°',
			'files'           : 'íŒŒì�¼',
			'folders'         : 'í�´ë�”',
			'items'           : 'ì•„ì�´í…œ',
			'yes'             : 'ì˜ˆ',
			'no'              : 'ì•„ë‹ˆì˜¤',
			'link'            : 'ë§�í�¬',
			'searcresult'     : 'ê²€ìƒ‰ ê²°ê³¼',
			'selected'        : 'ì•„ì�´í…œ ì„ íƒ�',
			'about'           : 'ì�´ í”„ë¡œê·¸ëž¨ì�€..',
			'shortcuts'       : 'ë‹¨ì¶•ì•„ì�´ì½˜',
			'help'            : 'ë�„ì›€ë§�',
			'webfm'           : 'ì›¹ íŒŒì�¼ë§¤ë‹ˆì €',
			'ver'             : 'ë²„ì „',
			'protocolver'     : 'í”„ë¡œí† ì½œ ë²„ì „',
			'homepage'        : 'í™ˆíŽ˜ì�´ì§€',
			'docs'            : 'ë¬¸ì„œ',
			'github'          : 'Githubì—�ì„œ í�¬í�¬í•˜ê¸°',
			'twitter'         : 'íŠ¸ìœ„í„°ì—�ì„œ íŒ”ë¡œìš°í•˜ê¸°',
			'facebook'        : 'íŽ˜ì�´ìŠ¤ë¶�ì—�ì„œ ê°€ìž…í•˜ê¸°',
			'team'            : 'íŒ€',
			'chiefdev'        : 'ê°œë°œíŒ€ìž¥',
			'developer'       : 'ê°œë°œìž�',
			'contributor'     : 'ê³µí—Œìž�',
			'maintainer'      : 'ê´€ë¦¬ìž�',
			'translator'      : 'ë²ˆì—­',
			'icons'           : 'ì•„ì�´ì½˜',
			'dontforget'      : 'ê·¸ë¦¬ê³  ìˆ˜ê±´ ê°€ì ¸ê°€ëŠ” ê²ƒì�„ ìžŠì§€ ë§ˆì„¸ìš”',
			'shortcutsof'     : 'ë‹¨ì¶•ì•„ì�´ì½˜ ì‚¬ìš©ë¶ˆê°€',
			'dropFiles'       : 'ì—¬ê¸°ë¡œ ì�´ë�™í•˜ê¸°',
			'or'              : 'ë˜�ëŠ”',
			'selectForUpload' : 'ì—…ë¡œë“œ íŒŒì�¼ ì„ íƒ�',
			'moveFiles'       : 'íŒŒì�¼ ì�´ë�™',
			'copyFiles'       : 'íŒŒì�¼ ë³µì‚¬',
			'restoreFiles'    : 'ë³µì›�í•˜ê¸°', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'í˜„ìž¬ í�´ë�”ì—�ì„œ ì‚­ì œí•˜ê¸°',
			'aspectRatio'     : 'í™”ë©´ë¹„ìœ¨',
			'scale'           : 'í�¬ê¸°',
			'width'           : 'ê°€ë¡œ',
			'height'          : 'ì„¸ë¡œ',
			'resize'          : 'ì‚¬ì�´ì¦ˆ ë³€ê²½',
			'crop'            : 'ìž�ë¥´ê¸°',
			'rotate'          : 'íšŒì „',
			'rotate-cw'       : 'ë°˜ì‹œê³„ë°©í–¥ 90ë�„ íšŒì „',
			'rotate-ccw'      : 'ì‹œê³„ë°©í–¥ 90ë�„ íšŒì „',
			'degree'          : 'ë�„',
			'netMountDialogTitle' : 'ë„¤íŠ¸ì›Œí�¬ ë³¼ë¥¨ ë§ˆìš´íŠ¸', // added 18.04.2012
			'protocol'            : 'í”„ë¡œí† ì½œ', // added 18.04.2012
			'host'                : 'í˜¸ìŠ¤íŠ¸', // added 18.04.2012
			'port'                : 'í�¬íŠ¸', // added 18.04.2012
			'user'                : 'ì‚¬ìš©ìž�', // added 18.04.2012
			'pass'                : 'ë¹„ë°€ë²ˆí˜¸', // added 18.04.2012
			'confirmUnmount'      : '$1ì�„(ë¥¼) ë§ˆìš´íŠ¸ í•´ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ë¸Œë�¼ìš°ì €ì—�ì„œ íŒŒì�¼ì�„ ë�Œì–´ì˜¤ê±°ë‚˜ ë¶™ì—¬ë„£ìœ¼ì„¸ìš”', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'íŒŒì�¼ì�„ ë�Œì–´ì˜¤ê±°ë‚˜, í�´ë¦½ë³´ë“œì�˜ URLì�´ë‚˜ ì�´ë¯¸ì§€ë“¤ì�„ ë¶™ì—¬ë„£ìœ¼ì„¸ìš”', // from v2.1 added 07.04.2014
			'encoding'        : 'ì�¸ì½”ë”©', // from v2.1 added 19.12.2014
			'locale'          : 'ë¡œì¼€ì�¼',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ëŒ€ìƒ�: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'ìž…ë ¥í•œ MIME íƒ€ìž…ìœ¼ë¡œ ê²€ìƒ‰í•˜ê¸°', // from v2.1 added 22.5.2015
			'owner'           : 'ì†Œìœ ìž�', // from v2.1 added 20.6.2015
			'group'           : 'ê·¸ë£¹', // from v2.1 added 20.6.2015
			'other'           : 'ê·¸ì™¸', // from v2.1 added 20.6.2015
			'execute'         : 'ì‹¤í–‰', // from v2.1 added 20.6.2015
			'perm'            : 'ê¶Œí•œ', // from v2.1 added 20.6.2015
			'mode'            : 'ëª¨ë“œ', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ë¹ˆ í�´ë�”ìž…ë‹ˆë‹¤', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ë¹ˆ í�´ë�”ìž…ë‹ˆë‹¤\\A ë“œëž˜ë“œ ì•¤ ë“œë¡­ìœ¼ë¡œ íŒŒì�¼ì�„ ì¶”ê°€í•˜ì„¸ìš”', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ë¹ˆ í�´ë�”ìž…ë‹ˆë‹¤\\A ê¸¸ê²Œ ëˆŒëŸ¬ íŒŒì�¼ì�„ ì¶”ê°€í•˜ì„¸ìš”', // from v2.1.6 added 30.12.2015
			'quality'         : 'í’ˆì§ˆ', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'ìž�ë�™ ë�™ê¸°',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ìœ„ë¡œ ì�´ë�™',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL ë§�í�¬ ê°€ì ¸ì˜¤ê¸°', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'ì„ íƒ�ë�œ í•­ëª© ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'í�´ë�” ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'ì˜¤í”„ë�¼ì�¸ ì ‘ê·¼ í—ˆìš©', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'ìž¬ì�¸ì¦�í•˜ê¸°', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'ë¡œë”©ì¤‘...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'ì—¬ëŸ¬ íŒŒì�¼ ì—´ê¸°', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 íŒŒì�¼ì�„ ì—´ë ¤ê³  í•©ë‹ˆë‹¤. ë¸Œë�¼ìš°ì €ì—�ì„œ ì—´ê² ìŠµë‹ˆê¹Œ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'ê²€ìƒ‰ê²°ê³¼ê°€ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'íŽ¸ì§‘ì¤‘ì�¸ íŒŒì�¼ìž…ë‹ˆë‹¤.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1ê°œë¥¼ ì„ íƒ�í–ˆìŠµë‹ˆë‹¤.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'í�´ë¦½ë³´ë“œì—� $1ê°œê°€ ìžˆìŠµë‹ˆë‹¤.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'ì¦�ë¶„ ê²€ìƒ‰ì�€ í˜„ìž¬ ë³´ê¸°ì—�ì„œë§Œ ê°€ëŠ¥í•©ë‹ˆë‹¤.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'ë³µì›�', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 ì™„ë£Œ', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ì»¨í…�ìŠ¤íŠ¸ ë©”ë‰´', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'íŽ˜ì�´ì§€ ì „í™˜', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ë³¼ë¥¨ ë£¨íŠ¸', // from v2.1.16 added 16.9.2016
			'reset'           : 'ì´ˆê¸°í™”', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'ë°°ê²½ìƒ‰', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'ìƒ‰ ì„ íƒ�ê¸°', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px ê·¸ë¦¬ë“œ', // from v2.1.16 added 4.10.2016
			'enabled'         : 'í™œì„±', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ë¹„í™œì„±', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'í˜„ìž¬ ë³´ê¸°ì—�ëŠ” ê²€ìƒ‰ê²°ê³¼ê°€ ì—†ìŠµë‹ˆë‹¤.\\A[Enter]ë¥¼ ëˆŒëŸ¬ ê²€ìƒ‰ ëŒ€ìƒ�ì�„ í™•ìž¥í•˜ì„¸ìš”.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'í˜„ìž¬ ë³´ê¸°ì—�ëŠ” ì²« ê¸€ìž� ê²€ìƒ‰ ê²°ê³¼ê°€ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'í…�ìŠ¤íŠ¸ ë�¼ë²¨', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 ë¶„ ë‚¨ì•˜ìŠµë‹ˆë‹¤', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'ì„ íƒ�í•œ ì�¸ì½”ë”©ìœ¼ë¡œ ë‹¤ì‹œ ì—´ê¸°', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'ì„ íƒ�í•œ ì�¸ì½”ë”©ìœ¼ë¡œ ì €ìž¥í•˜ê¸°', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'í�´ë�” ì„ íƒ�', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'ì²« ê¸€ìž� ê²€ìƒ‰', // from v2.1.23 added 24.3.2017
			'presets'         : 'í”„ë¦¬ì…‹', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'íœ´ì§€í†µìœ¼ë¡œ ì˜®ê¸°ê¸°ì—” í•­ëª©ì�´ ë„ˆë¬´ ë§ŽìŠµë‹ˆë‹¤.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'ê¸€ìž�ì˜�ì—­', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '"$1" í�´ë�”ë¥¼ ë¹„ìš°ì„¸ìš”.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '"$1" í�´ë�”ì—� ì•„ë¬´ê²ƒë�„ ì—†ìŠµë‹ˆë‹¤.', // from v2.1.25 added 22.6.2017
			'preference'      : 'í™˜ê²½ì„¤ì •', // from v2.1.26 added 28.6.2017
			'language'        : 'ì–¸ì–´ ì„¤ì •', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'ì�´ ë¸Œë�¼ìš°ì €ì—� ì €ìž¥ë�œ ì„¤ì •ê°’ ì´ˆê¸°í™”í•˜ê¸°', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'íˆ´ë°” ì„¤ì •', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 ê¸€ìž� ë‚¨ì•˜ìŠµë‹ˆë‹¤.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 ì¤„ ë‚¨ì•˜ìŠµë‹ˆë‹¤.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'í•©ê³„', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'ëŒ€ëžµì �ì�¸ íŒŒì�¼ í�¬ê¸°', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'ë§ˆìš°ìŠ¤ë¥¼ ê°€ì ¸ê°ˆ ë•Œ ëŒ€í™”ì°½ ìš”ì†Œì—� ì´ˆì � ë§žì¶”ê¸°',  // from v2.1.30 added 2.11.2017
			'select'          : 'ì„ íƒ�', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'íŒŒì�¼ ì„ íƒ�ì‹œ ë�™ìž‘', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ë§ˆì§€ë§‰ ì‚¬ìš©í•œ íŽ¸ì§‘ê¸°ë¡œ ì—´ê¸°', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'ì„ íƒ� ë°˜ì „', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ì„ íƒ�í•œ $1ì�„(ë¥¼) $2ì™€ ê°™ì�´ ë°”ê¾¸ê² ìŠµë‹ˆê¹Œ?<br/>ì�´ ìž‘ì—…ì�€ ë�˜ë�Œë¦´ ìˆ˜ ì—†ìŠµë‹ˆë‹¤!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'ì�¼ê´„ ì�´ë¦„ ë°”ê¾¸ê¸°', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ ìˆ«ìž�', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'ì ‘ë‘�ì‚¬ ì¶”ê°€', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'ì ‘ë¯¸ì‚¬ ì¶”ê°€', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'í™•ìž¥ìž� ë³€ê²½', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ì‚¬ì�´ë“œë°” ì„¤ì • (ë¦¬ìŠ¤íŠ¸ ë³´ê¸°)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'ëª¨ë“  ë³€ê²½ì�€ ì•„ì¹´ì�´ë¸Œì—� ì¦‰ì‹œ ë°˜ì˜�ë�©ë‹ˆë‹¤.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'ì�´ ë³¼ë¥¨ì�˜ ë§ˆìš´íŠ¸ë¥¼ í•´ì œí•  ë•Œê¹Œì§€ëŠ” ì–´ë– í•œ ë³€ê²½ì‚¬í•­ë�„ ë°˜ì˜�ë�˜ì§€ ì•ŠìŠµë‹ˆë‹¤.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'ì•„ëž˜ì�˜ ë³¼ë¥¨ë“¤ë�„ ì�´ ë³¼ë¥¨ê³¼ í•¨ê»˜ ë§ˆìš´íŠ¸ê°€ í•´ì œë�©ë‹ˆë‹¤. ê³„ì†�í•˜ì‹œê² ìŠµë‹ˆê¹Œ?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'ì„ íƒ� ì •ë³´', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'íŒŒì�¼ í•´ì‰¬ ì•Œê³ ë¦¬ì¦˜', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'ì •ë³´ (ì„ íƒ� ì •ë³´ íŒ¨ë„�)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'ë‚˜ê°€ê¸° ìœ„í•´ì„œ í•œ ë²ˆ ë�” ëˆ„ë¥´ì„¸ìš”.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'íˆ´ë°”', // from v2.1.38 added 4.4.2018
			'workspace'       : 'ìž‘ì—…ê³µê°„', // from v2.1.38 added 4.4.2018
			'dialog'          : 'ëŒ€í™”ìƒ�ìž�', // from v2.1.38 added 4.4.2018
			'all'             : 'ì „ì²´', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'ì•„ì�´ì½˜ í�¬ê¸° (ì•„ì�´ì½˜ ë³´ê¸°)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'ìµœëŒ€í™”ë�œ íŽ¸ì§‘ê¸° ì°½ì�„ ì—½ë‹ˆë‹¤', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'í˜„ìž¬ APIë¥¼ í†µí•œ ë³€í™˜ì�´ ë¶ˆê°€ëŠ¥í•˜ë¯€ë¡œ ì›¹ ì‚¬ì�´íŠ¸ì—�ì„œ ë³€í™˜í•˜ì‹œê¸° ë°”ëž�ë‹ˆë‹¤.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'ë³€í™˜ í›„ ë³€í™˜ë�œ íŒŒì�¼ì�„ ì €ìž¥í•˜ê¸° ìœ„í•´ì„œëŠ” íŒŒì�¼ URLì�´ë‚˜ ë‹¤ìš´ë¡œë“œë°›ì�€ íŒŒì�¼ì�„ ì—…ë¡œë“œ í•´ì•¼ í•©ë‹ˆë‹¤.', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$1 ì‚¬ì�´íŠ¸ì—�ì„œ ë³€í™˜í•˜ì‹œê¸° ë°”ëž�ë‹ˆë‹¤.', // from v2.1.40 added 10.7.2018
			'integrations'    : 'í†µí•©', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'elFinderì—�ëŠ” ë‹¤ì�Œê³¼ ê°™ì�€ ì™¸ë¶€ ì„œë¹„ìŠ¤ê°€ í†µí•©ë�˜ì–´ ìžˆìŠµë‹ˆë‹¤. ì�´ìš©í•˜ê¸° ì „ì—� ì�´ìš© ì•½ê´€, ê°œì�¸ì •ë³´ ë³´í˜¸ì •ì±… ë“±ì�„ í™•ì�¸í•˜ì‹œê¸° ë°”ëž�ë‹ˆë‹¤.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'ìˆ¨ê²¨ì§„ íŒŒì�¼ í‘œì‹œ', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'ìˆ¨ê²¨ì§„ íŒŒì�¼ ìˆ¨ê¸°ê¸°', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'ìˆ¨ê²¨ì§„ í•­ëª© í‘œì‹œ/ìˆ¨ê¸°ê¸°', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '"ìƒˆ íŒŒì�¼"ì—�ì„œ ì‚¬ìš©í•  íŒŒì�¼ í˜•ì‹�', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'í…�ìŠ¤íŠ¸ íŒŒì�¼ ìœ í˜•', // from v2.1.41 added 7.8.2018
			'add'             : 'ì¶”ê°€', // from v2.1.41 added 7.8.2018
			'theme'           : 'í…Œë§ˆ', // from v2.1.43 added 19.10.2018
			'default'         : 'ê¸°ë³¸ê°’', // from v2.1.43 added 19.10.2018
			'description'     : 'ì„¤ëª…', // from v2.1.43 added 19.10.2018
			'website'         : 'ì›¹ì‚¬ì�´íŠ¸', // from v2.1.43 added 19.10.2018
			'author'          : 'ì €ìž�', // from v2.1.43 added 19.10.2018
			'email'           : 'ì�´ë©”ì�¼', // from v2.1.43 added 19.10.2018
			'license'         : 'ë�¼ì�´ì„ ìŠ¤', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'ì�´ íŒŒì�¼ì�€ ì €ìž¥ë�  ìˆ˜ ì—†ìŠµë‹ˆë‹¤. íŽ¸ì§‘í•œ ë‚´ìš©ì�„ ìœ ì§€í•˜ë ¤ë©´ PCë¡œ ë‚´ë³´ë‚´ì‹œê¸° ë°”ëž�ë‹ˆë‹¤.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'íŒŒì�¼ì�„ ë‘� ë²ˆ í�´ë¦­í•˜ì—¬ ì„ íƒ�í•˜ì„¸ìš”.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'ì „ì²´ í™”ë©´ ëª¨ë“œ ì‚¬ìš©', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'ì•Œ ìˆ˜ ì—†ì�Œ',
			'kindRoot'        : 'Root ë³¼ë¥¨', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'í�´ë�”',
			'kindSelects'     : 'ì„ íƒ�', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'ë³„ì¹­',
			'kindAliasBroken' : 'ì†�ìƒ�ë�œ ë³„ì¹­',
			// applications
			'kindApp'         : 'ì�‘ìš©í”„ë¡œê·¸ëž¨',
			'kindPostscript'  : 'Postscript ë¬¸ì„œ',
			'kindMsOffice'    : 'Microsoft Office ë¬¸ì„œ',
			'kindMsWord'      : 'Microsoft Word ë¬¸ì„œ',
			'kindMsExcel'     : 'Microsoft Excel ë¬¸ì„œ',
			'kindMsPP'        : 'Microsoft Powerpoint í”„ë ˆì  í…Œì�´ì…˜',
			'kindOO'          : 'Open Office ë¬¸ì„œ',
			'kindAppFlash'    : 'í”Œëž˜ì‰¬ íŒŒì�¼',
			'kindPDF'         : 'PDF ë¬¸ì„œ',
			'kindTorrent'     : 'ë¹„íŠ¸í† ë ŒíŠ¸ íŒŒì�¼',
			'kind7z'          : '7z ì••ì¶•íŒŒì�¼',
			'kindTAR'         : 'TAR ì••ì¶•íŒŒì�¼',
			'kindGZIP'        : 'GZIP ì••ì¶•íŒŒì�¼',
			'kindBZIP'        : 'BZIP ì••ì¶•íŒŒì�¼',
			'kindXZ'          : 'XZ ì••ì¶•íŒŒì�¼',
			'kindZIP'         : 'ZIP ì••ì¶•íŒŒì�¼',
			'kindRAR'         : 'RAR ì••ì¶•íŒŒì�¼',
			'kindJAR'         : 'ìž�ë°” JAR íŒŒì�¼',
			'kindTTF'         : 'íŠ¸ë£¨ íƒ€ìž… ê¸€ê¼´',
			'kindOTF'         : 'ì˜¤í”ˆ íƒ€ìž… ê¸€ê¼´',
			'kindRPM'         : 'RPM íŒ¨í‚¤ì§€',
			// fonts
			'kindFont'        : 'ê¸€ê¼´',
			'kindSFNT'        : 'SFNT ê¸€ê¼´',
			'kindEOT'         : 'Embedded Open Type ê¸€ê¼´',
			'kindWOFF'        : 'Web Open Font Format ê¸€ê¼´',
			'kindWOFF2'       : 'Web Open Font Format 2 ê¸€ê¼´',
			// texts
			'kindText'        : 'í…�ìŠ¤íŠ¸ ë¬¸ì„œ',
			'kindTextPlain'   : 'ì�¼ë°˜ í…�ìŠ¤íŠ¸',
			'kindPHP'         : 'PHP ì†ŒìŠ¤',
			'kindCSS'         : 'CSS ë¬¸ì„œ',
			'kindHTML'        : 'HTML ë¬¸ì„œ',
			'kindJS'          : 'ìž�ë°”ìŠ¤í�¬ë¦½íŠ¸ ì†ŒìŠ¤',
			'kindRTF'         : 'RTF í˜•ì‹�',
			'kindC'           : 'C ì†ŒìŠ¤',
			'kindCHeader'     : 'C í—¤ë�” ì†ŒìŠ¤',
			'kindCPP'         : 'C++ ì†ŒìŠ¤',
			'kindCPPHeader'   : 'C++ í—¤ë�” ì†ŒìŠ¤',
			'kindShell'       : 'ìœ ë‹‰ìŠ¤ ì‰˜ ìŠ¤í�¬ë¦½íŠ¸',
			'kindPython'      : 'íŒŒì�´ì�¬ ì†ŒìŠ¤',
			'kindJava'        : 'ìž�ë°” ì†ŒìŠ¤',
			'kindRuby'        : 'ë£¨ë¹„ ì†ŒìŠ¤',
			'kindPerl'        : 'íŽ„ ìŠ¤í�¬ë¦½íŠ¸',
			'kindSQL'         : 'SQL ì†ŒìŠ¤',
			'kindXML'         : 'XML ë¬¸ì„œ',
			'kindAWK'         : 'AWK ì†ŒìŠ¤',
			'kindCSV'         : 'CSV íŒŒì�¼',
			'kindDOCBOOK'     : 'ë‹¥ë¶� XML ë¬¸ì„œ',
			'kindMarkdown'    : 'ë§ˆí�¬ë‹¤ìš´ ë¬¸ì„œ', // added 20.7.2015
			// images
			'kindImage'       : 'ì�´ë¯¸ì§€',
			'kindBMP'         : 'BMP ì�´ë¯¸ì§€',
			'kindJPEG'        : 'JPEG ì�´ë¯¸ì§€',
			'kindGIF'         : 'GIF ì�´ë¯¸ì§€',
			'kindPNG'         : 'PNG ì�´ë¯¸ì§€',
			'kindTIFF'        : 'TIFF ì�´ë¯¸ì§€',
			'kindTGA'         : 'TGA ì�´ë¯¸ì§€',
			'kindPSD'         : 'Adobe Photoshop ì�´ë¯¸ì§€',
			'kindXBITMAP'     : 'X ë¹„íŠ¸ë§µ ì�´ë¯¸ì§€',
			'kindPXM'         : 'Pixelmator ì�´ë¯¸ì§€',
			// media
			'kindAudio'       : 'ì˜¤ë””ì˜¤ ë¯¸ë””ì–´',
			'kindAudioMPEG'   : 'MPEG ì˜¤ë””ì˜¤',
			'kindAudioMPEG4'  : 'MPEG-4 ì˜¤ë””ì˜¤',
			'kindAudioMIDI'   : 'MIDI ì˜¤ë””ì˜¤',
			'kindAudioOGG'    : 'Ogg Vorbis ì˜¤ë””ì˜¤',
			'kindAudioWAV'    : 'WAV ì˜¤ë””ì˜¤',
			'AudioPlaylist'   : 'MP3 í”Œë ˆì�´ ë¦¬ìŠ¤íŠ¸',
			'kindVideo'       : 'ë�™ì˜�ìƒ� ë¯¸ë””ì–´',
			'kindVideoDV'     : 'DV ë�™ì˜�ìƒ�',
			'kindVideoMPEG'   : 'MPEG ë�™ì˜�ìƒ�',
			'kindVideoMPEG4'  : 'MPEG-4 ë�™ì˜�ìƒ�',
			'kindVideoAVI'    : 'AVI ë�™ì˜�ìƒ�',
			'kindVideoMOV'    : 'í€µ íƒ€ìž„ ë�™ì˜�ìƒ�',
			'kindVideoWM'     : 'ìœˆë�„ìš° ë¯¸ë””ì–´ í”Œë ˆì�´ì–´ ë�™ì˜�ìƒ�',
			'kindVideoFlash'  : 'í”Œëž˜ì‰¬ ë�™ì˜�ìƒ�',
			'kindVideoMKV'    : 'Matroska ë�™ì˜�ìƒ�',
			'kindVideoOGG'    : 'Ogg ë�™ì˜�ìƒ�'
		}
	};
}));

                                                                                                                                                                                                includes/File_manager/lib/js/i18n/elfinder.fallback.js                                              0000644                 00000000353 15266052760 0016562 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(factory) {
	if (typeof define === 'function' && define.amd) {
		define(factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory();
	} else {
		factory();
	}
}(this, function() {
	return void 0;
}));
                                                                                                                                                                                                                                                                                     includes/File_manager/lib/js/i18n/elfinder.vi.js                                                    0000644                 00000105233 15266052760 0015444 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * NgÃ´n ngá»¯ Viá»‡t Nam translation
 * @author Chung Thá»§y f <chungthuyf@gmail.com>
 * @author Son Nguyen <son.nguyen@catalyst.net.nz>
 * @author Nguyá»…n Tráº§n Chung <admin@chungnguyen.xyz>
 * @version 2019-12-03
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.vi = {
		translator : 'Chung Thá»§y f &lt;chungthuyf@gmail.com&gt;, Son Nguyen &lt;son.nguyen@catalyst.net.nz&gt;, Nguyá»…n Tráº§n Chung &lt;admin@chungnguyen.xyz&gt;',
		language   : 'NgÃ´n ngá»¯ Viá»‡t Nam',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 03.12.2019 17:28
		fancyDateFormat : '$1 H:i', // will show like: HÃ´m nay 17:28
		nonameDateFormat : 'ymd-His', // noname upload will show like: 191203-172820
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Lá»—i',
			'errUnknown'           : 'Lá»—i khÃ´ng xÃ¡c Ä‘á»‹nh Ä‘Æ°á»£c.',
			'errUnknownCmd'        : 'Lá»—i khÃ´ng rÃµ lá»‡nh.',
			'errJqui'              : 'Cáº¥u hÃ¬nh jQueryUI khÃ´ng há»£p lá»‡. CÃ¡c thÃ nh pháº§n lá»±a chá»�n, kÃ©o vÃ  tháº£ pháº£i Ä‘Æ°á»£c bao gá»“m.',
			'errNode'              : 'elFinder Ä‘Ã²i há»�i pháº§n tá»­ DOM pháº£i Ä‘Æ°á»£c táº¡o ra.',
			'errURL'               : 'Cáº¥u hÃ¬nh elFinder khÃ´ng há»£p lá»‡! URL khÃ´ng Ä‘Æ°á»£c thiáº¿t láº­p tÃ¹y chá»�n.',
			'errAccess'            : 'Truy cáº­p bá»‹ tá»« chá»‘i.',
			'errConnect'           : 'KhÃ´ng thá»ƒ káº¿t ná»‘i vá»›i backend.',
			'errAbort'             : 'Káº¿t ná»‘i bá»‹ há»§y bá»�.',
			'errTimeout'           : 'Thá»�i gian chá»� káº¿t ná»‘i Ä‘Ã£ háº¿t.',
			'errNotFound'          : 'Backend khÃ´ng tÃ¬m tháº¥y.',
			'errResponse'          : 'Pháº£n há»“i backend khÃ´ng há»£p lá»‡.',
			'errConf'              : 'Cáº¥u hÃ¬nh backend khÃ´ng há»£p lá»‡.',
			'errJSON'              : 'MÃ´-Ä‘un PHP JSON khÃ´ng Ä‘Æ°á»£c cÃ i Ä‘áº·t.',
			'errNoVolumes'         : 'Táº­p cÃ³ thá»ƒ Ä‘á»�c khÃ´ng cÃ³ sáºµn.',
			'errCmdParams'         : 'ThÃ´ng sá»‘ khÃ´ng há»£p lá»‡ cho lá»‡nh "$1".',
			'errDataNotJSON'       : 'Dá»¯ liá»‡u khÃ´ng pháº£i lÃ  JSON.',
			'errDataEmpty'         : 'Dá»¯ liá»‡u trá»‘ng.',
			'errCmdReq'            : 'Backend Ä‘Ã²i há»�i tÃªn lá»‡nh.',
			'errOpen'              : 'KhÃ´ng thá»ƒ má»Ÿ "$1".',
			'errNotFolder'         : 'Ä�á»‘i tÆ°á»£ng khÃ´ng pháº£i lÃ  má»™t thÆ° má»¥c.',
			'errNotFile'           : 'Ä�á»‘i tÆ°á»£ng khÃ´ng pháº£i lÃ  má»™t táº­p tin.',
			'errRead'              : 'KhÃ´ng thá»ƒ Ä‘á»�c "$1".',
			'errWrite'             : 'KhÃ´ng thá»ƒ ghi vÃ o "$1".',
			'errPerm'              : 'Quyá»�n bá»‹ tá»« chá»‘i.',
			'errLocked'            : '"$1" Ä‘Ã£ bá»‹ khÃ³a vÃ  khÃ´ng thá»ƒ Ä‘á»•i tÃªn, di chuyá»ƒn hoáº·c loáº¡i bá»�.',
			'errExists'            : 'Táº­p tin cÃ³ tÃªn "$1" Ä‘Ã£ tá»“n táº¡i.',
			'errInvName'           : 'TÃªn táº­p tin khÃ´ng há»£p lá»‡.',
			'errInvDirname'        : 'TÃªn thÆ° má»¥c khÃ´ng há»£p lá»‡.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ThÆ° má»¥c khÃ´ng tÃ¬m tháº¥y.',
			'errFileNotFound'      : 'Táº­p tin khÃ´ng tÃ¬m tháº¥y.',
			'errTrgFolderNotFound' : 'ThÆ° má»¥c Ä‘Ã­ch "$1" khÃ´ng Ä‘Æ°á»£c tÃ¬m tháº¥y.',
			'errPopup'             : 'TrÃ¬nh duyá»‡t ngÄƒn cháº·n má»Ÿ cá»­a sá»• popup.',
			'errMkdir'             : 'KhÃ´ng thá»ƒ táº¡o thÆ° má»¥c "$1".',
			'errMkfile'            : 'KhÃ´ng thá»ƒ táº¡o táº­p tin "$1".',
			'errRename'            : 'KhÃ´ng thá»ƒ Ä‘á»•i tÃªn "$1".',
			'errCopyFrom'          : 'Sao chÃ©p táº­p tin tá»« táº­p "$1" khÃ´ng Ä‘Æ°á»£c phÃ©p.',
			'errCopyTo'            : 'Sao chÃ©p táº­p tin tá»›i táº­p "$1" khÃ´ng Ä‘Æ°á»£c phÃ©p.',
			'errMkOutLink'         : 'KhÃ´ng thá»ƒ táº¡o liÃªn káº¿t ra bÃªn ngoÃ i volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Táº£i lÃªn bÃ¡o lá»—i.',  // old name - errUploadCommon
			'errUploadFile'        : 'KhÃ´ng thá»ƒ táº£i lÃªn "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'KhÃ´ng tháº¥y táº­p tin nÃ o Ä‘á»ƒ táº£i lÃªn.',
			'errUploadTotalSize'   : 'Dá»¯ liá»‡u vÆ°á»£t quÃ¡ kÃ­ch thÆ°á»›c tá»‘i Ä‘a cho phÃ©p.', // old name - errMaxSize
			'errUploadFileSize'    : 'Táº­p tin vÆ°á»£t quÃ¡ kÃ­ch thÆ°á»›c tá»‘i Ä‘a cho phÃ©p.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Kiá»ƒu táº­p tin khÃ´ng Ä‘Æ°á»£c phÃ©p.',
			'errUploadTransfer'    : 'Lá»—i khi truyá»�n "$1".',
			'errUploadTemp'        : 'KhÃ´ng thá»ƒ táº¡o thÆ° má»¥c táº¡m Ä‘á»ƒ táº£i lÃªn.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Ä�á»‘i tÆ°á»£ng "$1" Ä‘Ã£ tá»“n táº¡i á»Ÿ vá»‹ trÃ­ nÃ y vÃ  khÃ´ng thá»ƒ thay tháº¿ báº±ng Ä‘á»‘i tÆ°á»£ng vá»›i loáº¡i khÃ¡c.', // new
			'errReplace'           : 'KhÃ´ng thá»ƒ thay tháº¿ "$1".',
			'errSave'              : 'KhÃ´ng thá»ƒ lÆ°u "$1".',
			'errCopy'              : 'KhÃ´ng thá»ƒ sao chÃ©p "$1".',
			'errMove'              : 'KhÃ´ng thá»ƒ chuyá»ƒn "$1".',
			'errCopyInItself'      : 'KhÃ´ng thá»ƒ sao chÃ©p "$1" vÃ o chÃ­nh nÃ³.',
			'errRm'                : 'KhÃ´ng thá»ƒ xÃ³a "$1".',
			'errTrash'             : 'KhÃ´ng thá»ƒ cho vÃ o thÃ¹ng rÃ¡c.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'KhÃ´ng thá»ƒ xÃ³a tá»‡p nguá»“n.',
			'errExtract'           : 'KhÃ´ng thá»ƒ giáº£i nÃ©n cÃ¡c táº­p tin tá»«"$1".',
			'errArchive'           : 'KhÃ´ng thá»ƒ táº¡o ra lÆ°u trá»¯.',
			'errArcType'           : 'Loáº¡i lÆ°u trá»¯ khÃ´ng Ä‘Æ°á»£c há»— trá»£.',
			'errNoArchive'         : 'Táº­p tin khÃ´ng pháº£i lÃ  lÆ°u trá»¯ hoáº·c cÃ³ kiá»ƒu lÆ°u trá»¯ khÃ´ng Ä‘Æ°á»£c há»— trá»£.',
			'errCmdNoSupport'      : 'Backend khÃ´ng há»— trá»£ lá»‡nh nÃ y.',
			'errReplByChild'       : 'ThÆ° má»¥c "$1" khÃ´ng thá»ƒ Ä‘Æ°á»£c thay tháº¿ báº±ng má»™t má»¥c con mÃ  nÃ³ chá»©a.',
			'errArcSymlinks'       : 'VÃ¬ lÃ½ do báº£o máº­t, tá»« chá»‘i giáº£i nÃ©n táº­p tin lÆ°u trá»¯ cÃ³ chá»©a liÃªn káº¿t má»�m.', // edited 24.06.2012
			'errArcMaxSize'        : 'Táº­p tin lÆ°u trá»¯ vÆ°á»£t quÃ¡ kÃ­ch thÆ°á»›c tá»‘i Ä‘a cho phÃ©p.',
			'errResize'            : 'KhÃ´ng thá»ƒ thay Ä‘á»•i kÃ­ch thÆ°á»›c "$1".',
			'errResizeDegree'      : 'Ä�á»™ xoay khÃ´ng há»£p lá»‡.',  // added 7.3.2013
			'errResizeRotate'      : 'KhÃ´ng thá»ƒ xoay hÃ¬nh áº£nh.',  // added 7.3.2013
			'errResizeSize'        : 'KÃ­ch thÆ°á»›c hÃ¬nh áº£nh khÃ´ng há»£p lá»‡.',  // added 7.3.2013
			'errResizeNoChange'    : 'KÃ­ch thÆ°á»›c hÃ¬nh áº£nh khÃ´ng thay Ä‘á»•i.',  // added 7.3.2013
			'errUsupportType'      : 'Loáº¡i táº­p tin khÃ´ng Ä‘Æ°á»£c há»— trá»£.',
			'errNotUTF8Content'    : 'Tá»‡p "$1" khÃ´ng pháº£i bá»™ kÃ½ tá»± UTF-8 nÃªn khÃ´ng thá»ƒ chá»‰nh sá»­a.',  // added 9.11.2011
			'errNetMount'          : 'KhÃ´ng thá»ƒ gáº¯n káº¿t "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Giao thá»©c khÃ´ng Ä‘Æ°á»£c há»— trá»£.',     // added 17.04.2012
			'errNetMountFailed'    : 'Gáº¯n (káº¿t ná»‘i) tháº¥t báº¡i.',         // added 17.04.2012
			'errNetMountHostReq'   : 'YÃªu cáº§u mÃ¡y chá»§.', // added 18.04.2012
			'errSessionExpires'    : 'PhiÃªn cá»§a báº¡n Ä‘Ã£ háº¿t háº¡n do khÃ´ng hoáº¡t Ä‘á»™ng.',
			'errCreatingTempDir'   : 'KhÃ´ng thá»ƒ táº¡o thÆ° má»¥c táº¡m thá»�i: "$1"',
			'errFtpDownloadFile'   : 'KhÃ´ng thá»ƒ táº£i xuá»‘ng tá»‡p tá»« FTP: "$1"',
			'errFtpUploadFile'     : 'KhÃ´ng thá»ƒ táº£i tá»‡p lÃªn FTP: "$1"',
			'errFtpMkdir'          : 'KhÃ´ng thá»ƒ táº¡o thÆ° má»¥c tá»« xa trÃªn FTP: "$1"',
			'errArchiveExec'       : 'Lá»—i trong khi lÆ°u trá»¯ tá»‡p: "$1"',
			'errExtractExec'       : 'Lá»—i trong khi giáº£i nÃ©n táº­p tin: "$1"',
			'errNetUnMount'        : 'KhÃ´ng thá»ƒ gá»¡ gáº¯n (liÃªn káº¿t).', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'KhÃ´ng thá»ƒ chuyá»ƒn Ä‘á»•i thÃ nh UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'HÃ£y thá»­ trÃ¬nh duyá»‡t má»›i hÆ¡n (vÃ¬ trÃ¬nh duyá»‡t hiá»‡n táº¡i cÃ³ váº» cÅ© nÃªn khÃ´ng há»— trá»£  táº£i lÃªn thÆ° má»¥c).', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Ä�Ã£ háº¿t thá»�i gian trong khi tÃ¬m kiáº¿m "$1". Káº¿t quáº£ tÃ¬m kiáº¿m lÃ  má»™t pháº§n.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Cáº§n á»§y quyá»�n láº¡i.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Sá»‘ lÆ°á»£ng tá»‘i Ä‘a cá»§a cÃ¡c má»¥c cÃ³ thá»ƒ chá»�n lÃ  $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'KhÃ´ng thá»ƒ khÃ´i phá»¥c tá»« thÃ¹ng rÃ¡c. KhÃ´ng thá»ƒ xÃ¡c Ä‘á»‹nh Ä‘Ã­ch khÃ´i phá»¥c.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'KhÃ´ng tÃ¬m tháº¥y trÃ¬nh chá»‰nh sá»­a cho loáº¡i tá»‡p nÃ y.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Lá»—i xáº£y ra á»Ÿ phÃ­a mÃ¡y chá»§.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'KhÃ´ng thá»ƒ lÃ m rá»—ng thÆ° má»¥c "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'CÃ³ thÃªm $1 lá»—i.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Táº¡o táº­p tin nÃ©n',
			'cmdback'      : 'Trá»Ÿ láº¡i',
			'cmdcopy'      : 'Sao chÃ©p',
			'cmdcut'       : 'Cáº¯t',
			'cmddownload'  : 'Táº£i vá»�',
			'cmdduplicate' : 'Báº£n sao',
			'cmdedit'      : 'Sá»­a táº­p tin',
			'cmdextract'   : 'Giáº£i nÃ©n táº­p tin',
			'cmdforward'   : 'TrÆ°á»›c',
			'cmdgetfile'   : 'Chá»�n táº­p tin',
			'cmdhelp'      : 'Giá»›i thiá»‡u pháº§n má»�m',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'ThÃ´ng tin',
			'cmdmkdir'     : 'ThÆ° má»¥c',
			'cmdmkdirin'   : 'VÃ o thÆ° má»¥c má»›i', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Táº¡o táº­p tin Text',
			'cmdopen'      : 'Má»Ÿ',
			'cmdpaste'     : 'DÃ¡n',
			'cmdquicklook' : 'Xem trÆ°á»›c',
			'cmdreload'    : 'Náº¡p láº¡i',
			'cmdrename'    : 'Ä�á»•i tÃªn',
			'cmdrm'        : 'XÃ³a',
			'cmdtrash'     : 'VÃ o thÃ¹ng rÃ¡c', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'KhÃ´i phá»¥c', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'TÃ¬m táº­p tin',
			'cmdup'        : 'Go to parent directory',
			'cmdupload'    : 'Táº£i táº­p tin lÃªn',
			'cmdview'      : 'Xem',
			'cmdresize'    : 'Thay Ä‘á»•i kÃ­ch thÆ°á»›c vÃ  xoay',
			'cmdsort'      : 'Sáº¯p xáº¿p',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Gá»¡ mount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Thay Ä‘á»•i cháº¿ Ä‘á»™', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Má»Ÿ má»™t thÆ° má»¥c', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ä�áº·t láº¡i chiá»�u rá»™ng cá»™t', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ToÃ n mÃ n hÃ¬nh', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Di chuyá»ƒn', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'LÃ m rá»—ng thÆ° má»¥c', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Há»§y bá»� (hoÃ n tÃ¡c)', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'LÃ m láº¡i', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Chá»�n táº¥t cáº£', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'KhÃ´ng chá»�n gÃ¬', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Chá»�n ngÆ°á»£c láº¡i', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Má»Ÿ trong cá»­a sá»• má»›i', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'áº¨n (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ä�Ã³ng',
			'btnSave'   : 'LÆ°u',
			'btnRm'     : 'Gá»¡ bá»�',
			'btnApply'  : 'Ã�p dá»¥ng',
			'btnCancel' : 'Há»§y bá»�',
			'btnNo'     : 'KhÃ´ng',
			'btnYes'    : 'Ä�á»“ng Ã½',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Má»Ÿ thÆ° má»¥c',
			'ntffile'     : 'Má»Ÿ táº­p tin',
			'ntfreload'   : 'Náº¡p láº¡i ná»™i dung thÆ° má»¥c',
			'ntfmkdir'    : 'Táº¡o thÆ° má»¥c',
			'ntfmkfile'   : 'Táº¡o táº­p tin',
			'ntfrm'       : 'XÃ³a táº­p tin',
			'ntfcopy'     : 'Sao chÃ©p táº­p tin',
			'ntfmove'     : 'Di chuyá»ƒn táº­p tin',
			'ntfprepare'  : 'Chuáº©n bá»‹ Ä‘á»ƒ sao chÃ©p cÃ¡c táº­p tin',
			'ntfrename'   : 'Ä�á»•i tÃªn táº­p tin',
			'ntfupload'   : 'Táº£i táº­p tin lÃªn',
			'ntfdownload' : 'Táº£i táº­p tin',
			'ntfsave'     : 'LÆ°u táº­p tin',
			'ntfarchive'  : 'Táº¡o táº­p tin nÃ©n',
			'ntfextract'  : 'Giáº£i nÃ©n táº­p tin',
			'ntfsearch'   : 'TÃ¬m kiáº¿m táº­p tin',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something >_<',
			'ntfloadimg'  : 'Ä�ang táº£i hÃ¬nh áº£nh',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ChÆ°a biáº¿t',
			'Today'       : 'HÃ´m nay',
			'Yesterday'   : 'HÃ´m qua',
			'msJan'       : 'ThÃ¡ng 1',
			'msFeb'       : 'ThÃ¡ng 2',
			'msMar'       : 'ThÃ¡ng 3',
			'msApr'       : 'ThÃ¡ng 4',
			'msMay'       : 'ThÃ¡ng 5',
			'msJun'       : 'ThÃ¡ng 6',
			'msJul'       : 'ThÃ¡ng 7',
			'msAug'       : 'ThÃ¡ng 8',
			'msSep'       : 'ThÃ¡ng 9',
			'msOct'       : 'ThÃ¡ng 10',
			'msNov'       : 'ThÃ¡ng 11',
			'msDec'       : 'ThÃ¡ng 12',
			'January'     : 'ThÃ¡ng 1',
			'February'    : 'ThÃ¡ng 2',
			'March'       : 'ThÃ¡ng 3',
			'April'       : 'ThÃ¡ng 4',
			'May'         : 'ThÃ¡ng 5',
			'June'        : 'ThÃ¡ng 6',
			'July'        : 'ThÃ¡ng 7',
			'August'      : 'ThÃ¡ng 8',
			'September'   : 'ThÃ¡ng 9',
			'October'     : 'ThÃ¡ng 10',
			'November'    : 'ThÃ¡ng 11',
			'December'    : 'ThÃ¡ng 12',
			'Sunday'      : 'Chá»§ nháº­t',
			'Monday'      : 'Thá»© 2',
			'Tuesday'     : 'Thá»© 3',
			'Wednesday'   : 'Thá»© 4',
			'Thursday'    : 'Thá»© 5',
			'Friday'      : 'Thá»© 6',
			'Saturday'    : 'Thá»© 7',
			'Sun'         : 'Chá»§ nháº­t',
			'Mon'         : 'Thá»© 2',
			'Tue'         : 'Thá»© 3',
			'Wed'         : 'Thá»© 4',
			'Thu'         : 'Thá»© 5',
			'Fri'         : 'Thá»© 6',
			'Sat'         : 'Thá»© 7',

			/******************************** sort variants ********************************/
			'sortname'          : 'theo tÃªn',
			'sortkind'          : 'theo loáº¡i',
			'sortsize'          : 'theo kÃ­ch cá»¡',
			'sortdate'          : 'theo ngÃ y',
			'sortFoldersFirst'  : 'ThÆ° má»¥c Ä‘áº§u tiÃªn',
			'sortperm'          : 'theo quyá»�n háº¡n', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'theo cháº¿ Ä‘á»™',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'theo ngÆ°á»�i táº¡o',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'theo nhÃ³m',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'YÃªu cáº§u xÃ¡c nháº­n',
			'confirmRm'       : 'Báº¡n cÃ³ cháº¯c cháº¯n muá»‘n xÃ³a vÄ©nh viá»…n cÃ¡c má»¥c?<br/>  Ä�iá»�u nÃ y khÃ´ng thá»ƒ Ä‘Æ°á»£c hoÃ n tÃ¡c!',
			'confirmRepl'     : 'Thay táº­p tin cÅ© báº±ng táº­p tin má»›i? (Náº¿u nÃ³ chá»©a cÃ¡c thÆ° má»¥c, nÃ³ sáº½ Ä‘Æ°á»£c há»£p nháº¥t. Ä�á»ƒ sao lÆ°u vÃ  thay tháº¿, chá»�n Sao lÆ°u.)',
			'confirmRest'     : 'Thay tháº¿ má»¥c hiá»‡n cÃ³ báº±ng má»™t má»¥c trong thÃ¹ng rÃ¡c?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Báº¡n cÃ³ cháº¯c cháº¯n muá»‘n chuyá»ƒn cÃ¡c má»¥c vÃ o thÃ¹ng rÃ¡c?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Báº¡n cÃ³ cháº¯c cháº¯n muá»‘n chuyá»ƒn cÃ¡c má»¥c vÃ o "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Ã�p dá»¥ng cho táº¥t cáº£',
			'name'            : 'TÃªn',
			'size'            : 'KÃ­ch cá»¡',
			'perms'           : 'Quyá»�n',
			'modify'          : 'Sá»­a Ä‘á»•i',
			'kind'            : 'Loáº¡i',
			'read'            : 'Ä‘á»�c',
			'write'           : 'viáº¿t',
			'noaccess'        : 'khÃ´ng truy cáº­p',
			'and'             : 'vÃ ',
			'unknown'         : 'khÃ´ng xÃ¡c Ä‘á»‹nh',
			'selectall'       : 'Chá»�n táº¥t cáº£ cÃ¡c má»¥c',
			'selectfiles'     : 'Chá»�n cÃ¡c má»¥c',
			'selectffile'     : 'Chá»�n má»¥c Ä‘áº§u tiÃªn',
			'selectlfile'     : 'Chá»�n má»¥c cuá»‘i cÃ¹ng',
			'viewlist'        : 'Hiá»ƒn thá»‹ danh sÃ¡ch',
			'viewicons'       : 'Hiá»ƒn thá»‹ biá»ƒu tÆ°á»£ng',
			'viewSmall'       : 'Biá»ƒu tÆ°á»£ng nhá»�', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Biá»ƒu tÆ°á»£ng vá»«a', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Biá»ƒu tÆ°á»£ng lá»›n', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Biá»ƒu tÆ°á»£ng cá»±c lá»›n', // from v2.1.39 added 22.5.2018
			'places'          : 'Places',
			'calc'            : 'TÃ­nh toÃ¡n',
			'path'            : 'Ä�Æ°á»�ng dáº«n',
			'aliasfor'        : 'BÃ­ danh cho',
			'locked'          : 'Ä�Ã£ khÃ³a',
			'dim'             : 'KÃ­ch thÆ°á»›c',
			'files'           : 'Tá»‡p',
			'folders'         : 'ThÆ° má»¥c',
			'items'           : 'Items',
			'yes'             : 'yes',
			'no'              : 'no',
			'link'            : 'LiÃªn káº¿t',
			'searcresult'     : 'Káº¿t quáº£ tÃ¬m kiáº¿m',
			'selected'        : 'má»¥c Ä‘Ã£ chá»�n',
			'about'           : 'Vá»�',
			'shortcuts'       : 'Lá»‘i táº¯t',
			'help'            : 'GiÃºp Ä‘á»¡',
			'webfm'           : 'Web file manager',
			'ver'             : 'PhiÃªn báº£n',
			'protocolver'     : 'phiÃªn báº£n protocol',
			'homepage'        : 'Trang chá»§ dá»± Ã¡n',
			'docs'            : 'TÃ i liá»‡u',
			'github'          : 'Theo dÃµi chÃºng tÃ´i trÃªn GitHub',
			'twitter'         : 'Theo dÃµi chÃºng tÃ´i trÃªn Twitter',
			'facebook'        : 'Theo dÃµi chÃºng tÃ´i trÃªn Facebook',
			'team'            : 'Ä�á»™i ngÅ©',
			'chiefdev'        : 'TrÃ¹m sÃ²',
			'developer'       : 'ngÆ°á»�i phÃ¡t triá»ƒn',
			'contributor'     : 'ngÆ°á»�i Ä‘Ã³ng gÃ³p',
			'maintainer'      : 'ngÆ°á»�i báº£o trÃ¬',
			'translator'      : 'ngÆ°á»�i dá»‹ch',
			'icons'           : 'Icons',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'Tháº£ tá»‡p vÃ o Ä‘Ã¢y',
			'or'              : 'hoáº·c',
			'selectForUpload' : 'Chá»�n tá»‡p',
			'moveFiles'       : 'Di chuyá»ƒn cÃ¡c má»¥c',
			'copyFiles'       : 'Sao chÃ©p cÃ¡c má»¥c',
			'restoreFiles'    : 'KhÃ´i má»¥c cÃ¡c má»¥c', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Tá»‰ lá»‡ khung hÃ¬nh',
			'scale'           : 'Tá»‰ lá»‡',
			'width'           : 'Rá»™ng',
			'height'          : 'Cao',
			'resize'          : 'Thay Ä‘á»•i kÃ­ch cá»¡',
			'crop'            : 'Cáº¯t',
			'rotate'          : 'Xoay',
			'rotate-cw'       : 'Xoay 90 Ä‘á»™ CW',
			'rotate-ccw'      : 'Xoay 90 Ä‘á»™ CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'MÃ£ hÃ³a', // from v2.1 added 19.12.2014
			'locale'          : 'Ä�á»‹a phÆ°Æ¡ng',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Má»¥c tiÃªu: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'TÃ¬m kiáº¿m theo kiá»ƒu tá»‡p (MIME)', // from v2.1 added 22.5.2015
			'owner'           : 'Chá»§ sá»Ÿ há»¯u', // from v2.1 added 20.6.2015
			'group'           : 'NhÃ³m', // from v2.1 added 20.6.2015
			'other'           : 'KhÃ¡c', // from v2.1 added 20.6.2015
			'execute'         : 'Thá»±c thi', // from v2.1 added 20.6.2015
			'perm'            : 'Quyá»�n', // from v2.1 added 20.6.2015
			'mode'            : 'Cháº¿ Ä‘á»™', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ThÆ° má»¥c trá»‘ng', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ThÆ° má»¥c trá»‘ng\\A KÃ©o tháº£ vÃ o Ä‘Ã¢y Ä‘á»ƒ thÃªm cÃ¡c má»¥c', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ThÆ° má»¥c trá»‘ng\\A Nháº¥n giá»¯ Ä‘á»ƒ thÃªm cÃ¡c má»¥c', // from v2.1.6 added 30.12.2015
			'quality'         : 'Cháº¥t lÆ°á»£ng', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Tá»± Ä‘á»™ng Ä‘á»™ng bá»™',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Di chuyá»ƒn lÃªn',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Láº¥y liÃªn káº¿t URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'CÃ¡c má»¥c Ä‘Ã£ chá»�n ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID thÆ° má»¥c', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Cho phÃ©p truy cáº­p ngoáº¡i tuyáº¿n', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'XÃ¡c thá»±c láº¡i', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ä�ang táº£i...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Má»Ÿ nhiá»�u táº­p tin', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Káº¿t quáº£ tÃ¬m kiáº¿m trá»‘ng trong má»¥c tiÃªu tÃ¬m kiáº¿m.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'NÃ³ lÃ  má»™t táº­p tin Ä‘ang chá»‰nh sá»­a.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'TÃ¬m kiáº¿m gia tÄƒng chá»‰ tá»« hiá»ƒn thá»‹ hiá»‡n táº¡i.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Phá»¥c há»“i', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 hoÃ n thÃ nh', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'TrÃ¬nh Ä‘Æ¡n ngá»¯ cáº£nh', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Chuyá»ƒn trang', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ä�áº·t láº¡i', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'MÃ u ná»�n', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Chá»�n mÃ u', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ä�Ã£ báº­t', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Ä�Ã£ táº¯t', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Káº¿t quáº£ tÃ¬m kiáº¿m thÆ° Ä‘áº§u tiÃªn lÃ  trá»‘ng trong cháº¿ Ä‘á»™ xem hiá»‡n táº¡i.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'NhÃ£n vÄƒn báº£n', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Chá»�n thÆ° má»¥c', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Ä�áº·t trÆ°á»›c', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'CÃ³ quÃ¡ nhiá»�u má»¥c vÃ¬ váº­y khÃ´ng thá»ƒ cho vÃ o thÃ¹ng rÃ¡c.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'NgÃ´n ngá»¯', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'CÃ i Ä‘áº·t thanh cÃ´ng cá»¥', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'ThÃªm tiá»�n tá»‘', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'ThÃªm háº­u tá»‘', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Thay Ä‘á»•i pháº§n má»Ÿ rá»™ng', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Nháº¥n má»™t láº§n ná»¯a Ä‘á»ƒ thoÃ¡t.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office document',
			'kindMsWord'      : 'Microsoft Word document',
			'kindMsExcel'     : 'Microsoft Excel document',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office document',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text document',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML document',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML document',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'BMP image',
			'kindJPEG'        : 'JPEG image',
			'kindGIF'         : 'GIF Image',
			'kindPNG'         : 'PNG Image',
			'kindTIFF'        : 'TIFF image',
			'kindTGA'         : 'TGA image',
			'kindPSD'         : 'Adobe Photoshop image',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}));
                                                                                                                                                                                                                                                                                                                                                                     includes/File_manager/lib/js/i18n/elfinder.fo.js                                                    0000644                 00000046764 15266052761 0015450 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Faroese translation
 * @author Marius Hammer <marius@vrg.fo>
 * @version 2015-12-03
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fo = {
		translator : 'Marius Hammer &lt;marius@vrg.fo&gt;',
		language   : 'Faroese',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Villa Ã­komin',
			'errUnknown'           : 'Ã“kend villa.',
			'errUnknownCmd'        : 'Ã“kend boÃ°.',
			'errJqui'              : 'Ã“gildig jQuery UI konfiguratiÃ³n. VÃ¦lbÃ¦rar, sum kunnu hÃ¡last runt og kunnu sleppast skulu takast viÃ°.',
			'errNode'              : 'elFinder krevur DOM Element stovna.',
			'errURL'               : 'Ugyldig elFinder konfiguration! URL stilling er ikki Ã¡sett.',
			'errAccess'            : 'Atgongd nokta.',
			'errConnect'           : 'Far ikki samband viÃ° backend.',
			'errAbort'             : 'Sambandi avbrotiÃ°.',
			'errTimeout'           : 'Sambandi broti av.',
			'errNotFound'          : 'Backend ikki funniÃ°.',
			'errResponse'          : 'Ã“gildugt backend svar.',
			'errConf'              : 'Ã“gildugt backend konfiguratiÃ³n.',
			'errJSON'              : 'PHP JSON moduliÃ° er ikki innstallera.',
			'errNoVolumes'         : 'Lesiligar mappur er ikki atkomulig.',
			'errCmdParams'         : 'Ã“gildigar stillingar fyri kommando "$1".',
			'errDataNotJSON'       : 'DÃ¡ta er ikki JSON.',
			'errDataEmpty'         : 'DÃ¡ta er tÃ¸mt.',
			'errCmdReq'            : 'Backend krevur eitt kommando navn.',
			'errOpen'              : 'Kundi ikki opna "$1".',
			'errNotFolder'         : 'Luturin er ikki ein mappa.',
			'errNotFile'           : 'Luturin er ikki ein fÃ­la.',
			'errRead'              : 'Kundi ikki lesa til "$1".',
			'errWrite'             : 'Kundi ikki skriva til "$1".',
			'errPerm'              : 'Atgongd nokta.',
			'errLocked'            : '"$1" er lÃ¸st og kann ikki umdoybast, flytast ella strikast.',
			'errExists'            : 'TaÃ° finst longu ein fÃ­la viÃ° navn "$1".',
			'errInvName'           : 'Ã“gildugt fÃ­la navn.',
			'errFolderNotFound'    : 'Mappa ikki funnin.',
			'errFileNotFound'      : 'FÃ­la ikki funnin.',
			'errTrgFolderNotFound' : 'Mappan "$1" bleiv ikke funnin.',
			'errPopup'             : 'Kagin forÃ°aÃ°i Ã­ at opna eitt popup-vindeyga. Fyri at opna fÃ­luna, aktivera popup-vindeygu Ã­ tÃ­num kaga stillingum.',
			'errMkdir'             : '\'Kundi ikki stovna mappu "$1".',
			'errMkfile'            : 'Kundi ikki stovna mappu "$1".',
			'errRename'            : 'Kundi ikki umdoyba "$1".',
			'errCopyFrom'          : 'Kopiering av fÃ­lum frÃ¡ mappuni "$1" er ikke loyvt.',
			'errCopyTo'            : 'Kopiering av fÃ­lum til mappuna "$1" er ikke loyvt.',
			'errMkOutLink'         : 'Ikki fÃ¸rt fyri at stovna leinkju til uttanfyri \'volume\' rÃ³t.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Innlegginar feilur.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kundi ikki leggja "$1" inn.', // old name - errUpload
			'errUploadNoFiles'     : 'Ongar fÃ­lar funnir at leggja inn.',
			'errUploadTotalSize'   : 'DÃ¡tain er stÃ¸rri enn mest loyvda stÃ¸ddin.', // old name - errMaxSize
			'errUploadFileSize'    : 'FÃ­la er stÃ¸rri enn mest loyvda stÃ¸ddin.', //  old name - errFileMaxSize
			'errUploadMime'        : 'FÃ­lu slag ikki gÃ³Ã°kent.',
			'errUploadTransfer'    : '"$1" innleggingar feilur.',
			'errUploadTemp'        : 'Ikki fÃ¸rt fyri at gera fyribils fÃ­lu fyri innlegging.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Lutur "$1" finst longu Ã¡ hesum staÃ° og can ikki skiftast Ãºt av lutiÃ° av Ã¸Ã°rum slag.', // new
			'errReplace'           : 'Ikki fÃ¸rt fyri at erstattae "$1".',
			'errSave'              : 'Kundi ikki goyma "$1".',
			'errCopy'              : 'Kundi ikki kopiera "$1".',
			'errMove'              : 'Kundi ikki flyta "$1".',
			'errCopyInItself'      : 'Kundi ikki kopiera "$1" inn Ã­ seg sjÃ¡lva.',
			'errRm'                : 'Kundi ikki strika "$1".',
			'errRmSrc'             : 'Ikki fÃ¸rt fyri at strika keldu fÃ­la(r).',
			'errExtract'           : 'Kundi ikki Ãºtpakka fÃ­lar frÃ¡ "$1".',
			'errArchive'           : 'Kundi ikki stovna arkiv.',
			'errArcType'           : 'Arkiv slagiÃ° er ikki stuÃ°la.',
			'errNoArchive'         : 'FÃ­lan er ikki eitt arkiv ella er ikki eitt stuÃ°la arkiva slag.',
			'errCmdNoSupport'      : 'Backend stuÃ°lar ikki hesi boÃ°.',
			'errReplByChild'       : 'appan "$1" kann ikki erstattast av einari vÃ¸ru, hon inniheldur.',
			'errArcSymlinks'       : 'Av trygdarÃ¡vum grundum, noktaÃ°i skipanin at pakka Ãºt arkivir iÃ° innihalda symlinks ella fÃ­lur viÃ° nÃ¸vn iÃ° ikki eru loyvd.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkiv fÃ­lar fylla meir enn mest loyvda stÃ¸ddin.',
			'errResize'            : 'Kundi ikki broyta stÃ¸ddina Ã¡ "$1".',
			'errResizeDegree'      : 'Ã“gildugt roterings stig.',  // added 7.3.2013
			'errResizeRotate'      : 'Ikki fÃ¸rt fyri at rotera mynd.',  // added 7.3.2013
			'errResizeSize'        : 'Ã“gildug myndastÃ¸dd.',  // added 7.3.2013
			'errResizeNoChange'    : 'Mynda stÃ¸dd ikki broytt.',  // added 7.3.2013
			'errUsupportType'      : 'Ikki stuÃ°la fÃ­la slag.',
			'errNotUTF8Content'    : 'FÃ­lan "$1" er ikki Ã­ UTF-8 og kann ikki vera rÃ¦ttaÃ°.',  // added 9.11.2011
			'errNetMount'          : 'Kundi ikki "mounta" "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ikki stuÃ°la protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount miseydnaÃ°ist.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host kravt.', // added 18.04.2012
			'errSessionExpires'    : 'TÃ­n seta er Ãºtgingin vegna Ã³virkniy.',
			'errCreatingTempDir'   : 'Ikki fÃ¸rt fyri at stovna fyribils fÃ­luskrÃ¡: "$1"',
			'errFtpDownloadFile'   : 'Ikki fÃ¸rt fyri at taka fÃ­lu niÃ°ur frÃ¡ FTP: "$1"',
			'errFtpUploadFile'     : 'Ikki fÃ¸rt fyri at leggja fÃ­lu til FTP: "$1"',
			'errFtpMkdir'          : 'Ikki fÃ¸rt fyri at stovna fjar-fÃ­laskrÃ¡ Ã¡ FTP: "$1"',
			'errArchiveExec'       : 'Villa Ã­komin undir arkiveran af fÃ­lar: "$1"',
			'errExtractExec'       : 'Villa Ã­komin undir Ãºtpakking af fÃ­lum: "$1"',
			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kann ikki broytast til UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Royn Google Chrome, um tÃº ynskir at leggja mappu innn.', // from v2.1 added 26.6.2015

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Stovna arkiv',
			'cmdback'      : 'Aftur\'',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klipp',
			'cmddownload'  : 'Tak niÃ°ur',
			'cmdduplicate' : 'TvÃ­falda',
			'cmdedit'      : 'RÃ¦tta fÃ­lu',
			'cmdextract'   : 'Pakka Ãºt fÃ­lar Ãºr arkiv',
			'cmdforward'   : 'Fram',
			'cmdgetfile'   : 'Vel fÃ­lar',
			'cmdhelp'      : 'Um hesa software',
			'cmdhome'      : 'Heim',
			'cmdinfo'      : 'FÃ¡ upplÃ½singar',
			'cmdmkdir'     : 'NÃ½ggja mappu',
			'cmdmkfile'    : 'NÃ½ggja fÃ­lu',
			'cmdopen'      : 'Opna',
			'cmdpaste'     : 'Set inn',
			'cmdquicklook' : 'ForsÃ½ning',
			'cmdreload'    : 'Les inn umaftur',
			'cmdrename'    : 'Umdoyp',
			'cmdrm'        : 'Strika',
			'cmdsearch'    : 'Finn fÃ­lar',
			'cmdup'        : 'Eitt stig upp',
			'cmdupload'    : 'Legg fÃ­lar inn',
			'cmdview'      : 'SÃ­ggj',
			'cmdresize'    : 'Tillaga stÃ¸dd & Roter',
			'cmdsort'      : 'RaÃ°a',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Til stÃ¸Ã°', // added 28.12.2014
			'cmdchmod'     : 'Broytir stÃ­l', // from v2.1 added 20.6.2015

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Lat aftur',
			'btnSave'   : 'Goym',
			'btnRm'     : 'Strika',
			'btnApply'  : 'BrÃºka',
			'btnCancel' : 'Angra',
			'btnNo'     : 'Nei',
			'btnYes'    : 'Ja',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konverter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ã˜ll',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Slag', // from v2.1 added 22.5.2015
			'btnFileName':'FÃ­lunavn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Goym & Lat aftur', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015

			/******************************** notifications ********************************/
			'ntfopen'     : 'Opna mappu',
			'ntffile'     : '\'Opna fÃ­lu',
			'ntfreload'   : 'Les innaftur mappu innihald',
			'ntfmkdir'    : 'Stovnar mappu',
			'ntfmkfile'   : 'Stovnar fÃ­lur',
			'ntfrm'       : 'Strikar fÃ­lur',
			'ntfcopy'     : 'Kopierar fÃ­lur',
			'ntfmove'     : 'Flytur fÃ­lar',
			'ntfprepare'  : 'Ger klÃ¡rt at kopiera fÃ­lar',
			'ntfrename'   : 'Umdoyp fÃ­lar',
			'ntfupload'   : 'Leggur inn fÃ­lar',
			'ntfdownload' : 'Tekur fÃ­lar niÃ°ur',
			'ntfsave'     : 'Goymir fÃ­lar',
			'ntfarchive'  : 'Stovnar arkiv',
			'ntfextract'  : 'Ãštpakkar fÃ­lar frÃ¡ arkiv',
			'ntfsearch'   : 'Leitar eftir fÃ­lum',
			'ntfresize'   : 'Broytir stÃ¸dd Ã¡ fÃ­lur',
			'ntfsmth'     : '\'Ger okkurt >_<',
			'ntfloadimg'  : 'Lesur mynd inn',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Tekur mynda vÃ­dd', // added 20.05.2013
			'ntfreaddir'  : 'Lesur mappu upplÃ½singar', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Far URL af leinkju', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Broyti fÃ­lu stÃ­l', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Kannar fÃ­lunavniÃ° Ã¡ fÃ­lu', // from v2.1 added 31.11.2015

			/************************************ dates **********************************/
			'dateUnknown' : 'Ã³kent',
			'Today'       : 'Ã� dag',
			'Yesterday'   : 'Ã� gjÃ¡r',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Des',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Mars',
			'April'       : 'AprÃ­l',
			'May'         : 'Mai',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'Desember',
			'Sunday'      : 'Sunnudag',
			'Monday'      : 'MÃ¡nadag',
			'Tuesday'     : 'TÃ½sdag',
			'Wednesday'   : 'Mikudag',
			'Thursday'    : 'HÃ³sdag',
			'Friday'      : 'FrÃ­ggjadag',
			'Saturday'    : 'Leygardag',
			'Sun'         : 'Sun',
			'Mon'         : 'MÃ¡n',
			'Tue'         : 'TÃ½s',
			'Wed'         : 'Mik',
			'Thu'         : 'HÃ³s',
			'Fri'         : 'FrÃ­',
			'Sat'         : 'Ley',

			/******************************** sort variants ********************************/
			'sortname'          : 'eftir navn',
			'sortkind'          : 'eftir slag',
			'sortsize'          : 'eftir stÃ¸dd',
			'sortdate'          : 'eftir dato',
			'sortFoldersFirst'  : 'mappur fyrst',

			/********************************** new items **********************************/
			'untitled file.txt' : 'NÃ½ggjaFÃ­lu.txt', // added 10.11.2015
			'untitled folder'   : 'NÃ½ggjaMappu',   // added 10.11.2015
			'Archive'           : 'NÃ½tArkiv',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'VÃ¡ttan kravd',
			'confirmRm'       : 'Ert tÃº vÃ­sur Ã­ at tÃº ynskir at strika fÃ­larnar?<br/>Hetta kann ikki angrast!',
			'confirmRepl'     : 'Erstatta gomlu fÃ­lu viÃ° nÃ½ggja?',
			'confirmConvUTF8' : 'BrÃºka Ã¡ Ã¸ll', // from v2.1 added 08.04.2014
			'confirmNotSave'  : 'Er blivi rÃ¦ttaÃ°.<br/>Missir sÃ­nar broytingar um tÃº ikki goymir.', // from v2.1 added 15.7.2015
			'apllyAll'        : 'BrÃºka til Ã¸ll',
			'name'            : 'Navn',
			'size'            : 'StÃ¸dd',
			'perms'           : 'RÃ¦ttindi',
			'modify'          : 'RÃ¦ttaÃ°',
			'kind'            : 'Slag',
			'read'            : 'sÃ­ggja',
			'write'           : 'broyta',
			'noaccess'        : 'onga atgongd',
			'and'             : 'og',
			'unknown'         : 'Ã³kent',
			'selectall'       : 'Vel allar fÃ­lur',
			'selectfiles'     : 'Vel fÃ­lu(r)',
			'selectffile'     : 'Vel fyrstu fÃ­lu',
			'selectlfile'     : 'Vel sÃ­Ã°stu fÃ­lu',
			'viewlist'        : 'Lista vÃ­sing',
			'viewicons'       : 'Ikon vÃ­sing',
			'places'          : 'StÃ¸Ã°',
			'calc'            : 'Rokna',
			'path'            : 'Stiga',
			'aliasfor'        : 'HjÃ¡navn fyri',
			'locked'          : 'LÃ¦st',
			'dim'             : 'VÃ­dd',
			'files'           : 'FÃ­lur',
			'folders'         : 'Mappur',
			'items'           : 'Myndir',
			'yes'             : 'ja',
			'no'              : 'nei',
			'link'            : 'Leinkja',
			'searcresult'     : 'Leiti Ãºrslit',
			'selected'        : 'valdar myndir',
			'about'           : 'Um',
			'shortcuts'       : 'Snarvegir',
			'help'            : 'HjÃ¡lp',
			'webfm'           : 'Web fÃ­lu umsitan',
			'ver'             : 'ÃštgÃ¡va',
			'protocolver'     : 'protokol versiÃ³n',
			'homepage'        : 'VerkÃ¦tlan heim',
			'docs'            : 'Skjalfesting',
			'github'          : 'Mynda okkum Ã¡ Github',
			'twitter'         : 'Fylg okkum Ã¡ twitter',
			'facebook'        : 'Fylg okkum Ã¡ facebook',
			'team'            : 'LiÃ°',
			'chiefdev'        : 'forritaleiÃ°ari',
			'developer'       : 'forritari',
			'contributor'     : 'stuÃ°ulsveitari',
			'maintainer'      : 'viÃ°lÃ­kahaldari',
			'translator'      : 'umsetari',
			'icons'           : 'Ikonir',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Snarvegir sligi frÃ¡',
			'dropFiles'       : 'Slepp fÃ­lur her',
			'or'              : 'ella',
			'selectForUpload' : 'Vel fÃ­lur at leggja inn',
			'moveFiles'       : 'Flyt fÃ­lur',
			'copyFiles'       : 'Kopier fÃ­lur',
			'rmFromPlaces'    : 'Flyt frÃ¡ stÃ¸Ã°',
			'aspectRatio'     : 'Skermformat',
			'scale'           : 'Skalera',
			'width'           : 'Longd',
			'height'          : 'HÃ¦dd',
			'resize'          : 'Tilliga stÃ¸dd',
			'crop'            : 'Sker til',
			'rotate'          : 'Rotera',
			'rotate-cw'       : 'Rotera 90 gradir viÃ° uriÃ°',
			'rotate-ccw'      : 'otera 90 gradir mÃ³ti uriÃ°',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'BrÃºkari', // added 18.04.2012
			'pass'                : 'LoyniorÃ°', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'HÃ¡la ella set innn fÃ­lar frÃ¡ kaga', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'HÃ¡la ella set inn fÃ­lar frÃ¡ URls her', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Leita viÃ° input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Eigari', // from v2.1 added 20.6.2015
			'group'           : 'BÃ³lkur', // from v2.1 added 20.6.2015
			'other'           : 'AnnaÃ°', // from v2.1 added 20.6.2015
			'execute'         : 'ÃštfÃ¸r', // from v2.1 added 20.6.2015
			'perm'            : 'RÃ¦ttindi', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ã“kent',
			'kindFolder'      : 'Mappa',
			'kindAlias'       : 'HjÃ¡navn',
			'kindAliasBroken' : 'Ã“virki hjÃ¡navn',
			// applications
			'kindApp'         : 'ApplikatiÃ³n',
			'kindPostscript'  : 'Postscript skjal',
			'kindMsOffice'    : 'Microsoft Office skjal',
			'kindMsWord'      : 'Microsoft Word skjal',
			'kindMsExcel'     : 'Microsoft Excel skjal',
			'kindMsPP'        : 'Microsoft Powerpoint framlÃ¸ga',
			'kindOO'          : 'Open Office skjal',
			'kindAppFlash'    : 'Flash applikatiÃ³n',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent fÃ­la',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR arkiv',
			'kindJAR'         : 'Java JAR ffÃ­laile',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM pakki',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text skjal',
			'kindTextPlain'   : 'Reinur tekstur',
			'kindPHP'         : 'PHP kelda',
			'kindCSS'         : 'Cascading style sheet (CSS)',
			'kindHTML'        : 'HTML skjal',
			'kindJS'          : 'Javascript kelda',
			'kindRTF'         : 'Rich Text Format (RTF)',
			'kindC'           : 'C kelda',
			'kindCHeader'     : 'C header kelda',
			'kindCPP'         : 'C++ kelda',
			'kindCPPHeader'   : 'C++ header kelda',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python kelda',
			'kindJava'        : 'Java kelda',
			'kindRuby'        : 'Ruby kelda',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL kelda',
			'kindXML'         : 'XML skjal',
			'kindAWK'         : 'AWK kelda',
			'kindCSV'         : 'Comma separated values (CSV)',
			'kindDOCBOOK'     : 'Docbook XML skjal',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Mynd',
			'kindBMP'         : 'BMP mynd',
			'kindJPEG'        : 'JPEG mynd',
			'kindGIF'         : 'GIF mynd',
			'kindPNG'         : 'PNG mynd',
			'kindTIFF'        : 'TIFF mynd',
			'kindTGA'         : 'TGA mynd',
			'kindPSD'         : 'Adobe Photoshop mynd',
			'kindXBITMAP'     : 'X bitmap mynd',
			'kindPXM'         : 'Pixelmator mynd',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG ljÃ³Ã°fÃ­la',
			'kindAudioMPEG4'  : 'MPEG-4 ljÃ³Ã°fÃ­la',
			'kindAudioMIDI'   : 'MIDI ljÃ³Ã°fÃ­la',
			'kindAudioOGG'    : 'Ogg Vorbis ljÃ³Ã°fÃ­la',
			'kindAudioWAV'    : 'WAV ljÃ³Ã°fÃ­la',
			'AudioPlaylist'   : 'MP3 playlisti',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV filmur',
			'kindVideoMPEG'   : 'MPEG filmur',
			'kindVideoMPEG4'  : 'MPEG-4 filmur',
			'kindVideoAVI'    : 'AVI filmur',
			'kindVideoMOV'    : 'Quick Time filmur',
			'kindVideoWM'     : 'Windows Media filmur',
			'kindVideoFlash'  : 'Flash filmur',
			'kindVideoMKV'    : 'Matroska filmur',
			'kindVideoOGG'    : 'Ogg filmur'
		}
	};
}));

            includes/File_manager/lib/js/i18n/elfinder.uk.js                                                    0000644                 00000123206 15266052761 0015446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ° Ð¼Ð¾Ð²Ð° translation
 * @author ITLancer
 * @author cjayho <cj.fooser@gmail.com>
 * @version 2020-02-10
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.uk = {
		translator : 'ITLancer, cjayho &lt;cj.fooser@gmail.com&gt;',
		language   : 'Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ° Ð¼Ð¾Ð²Ð°',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 10.02.2020 16:52
		fancyDateFormat : '$1 H:i', // will show like: Ñ�ÑŒÐ¾Ð³Ð¾Ð´Ð½Ñ– 16:52
		nonameDateFormat : 'ymd-His', // noname upload will show like: 200210-165246
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°',
			'errUnknown'           : 'Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°.',
			'errUnknownCmd'        : 'Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.',
			'errJqui'              : 'Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ðµ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� jQuery UI. Ð’Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¸: selectable, draggable, droppable.',
			'errNode'              : 'Ð’Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ–Ð¹ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ DOM Ð´Ð»Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� elFinder.',
			'errURL'               : 'Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ðµ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�! Ð�Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð° Ð¾Ð¿Ñ†Ñ–Ñ� URL.',
			'errAccess'            : 'Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾.',
			'errConnect'           : 'Ð�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸Ñ�Ñ� Ð· backend.',
			'errAbort'             : 'Ð—â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ñ–Ñ€Ð²Ð°Ð½Ðµ.',
			'errTimeout'           : 'Ð¢Ð°Ð¹Ð¼-Ð°ÑƒÑ‚ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ�.',
			'errNotFound'          : 'Ð�Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ backend.',
			'errResponse'          : 'Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð° Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð²Ñ–Ð´ backend.',
			'errConf'              : 'Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ðµ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� backend.',
			'errJSON'              : 'ÐœÐ¾Ð´ÑƒÐ»ÑŒ PHP JSON Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾.',
			'errNoVolumes'         : 'Ð�ÐµÐ¼Ð°Ñ” Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ñ… Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð¹.',
			'errCmdParams'         : 'Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ– Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ "$1".',
			'errDataNotJSON'       : 'Ð”Ð°Ð½Ñ– Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– JSON.',
			'errDataEmpty'         : 'Ð”Ð°Ð½Ñ– Ð²Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ–.',
			'errCmdReq'            : 'Backend Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” Ð½Ð°Ð·Ð²Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸.',
			'errOpen'              : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ "$1".',
			'errNotFolder'         : 'ÐžÐ±â€™Ñ”ÐºÑ‚ Ð½Ðµ Ñ” Ð¿Ð°Ð¿ÐºÐ¾ÑŽ.',
			'errNotFile'           : 'ÐžÐ±â€™Ñ”ÐºÑ‚ Ð½Ðµ Ñ” Ñ„Ð°Ð¹Ð»Ð¾Ð¼.',
			'errRead'              : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ "$1".',
			'errWrite'             : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð² "$1".',
			'errPerm'              : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ.',
			'errLocked'            : 'Ð¤Ð°Ð¹Ð» "$1" Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾ Ñ– Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸, Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ‡Ð¸ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸.',
			'errExists'            : 'Ð¤Ð°Ð¹Ð» Ð· Ð½Ð°Ð·Ð²Ð¾ÑŽ "$1" Ð²Ð¶Ðµ Ñ–Ñ�Ð½ÑƒÑ”.',
			'errInvName'           : 'Ð�ÐµÐ´Ñ–Ð¹Ñ�Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ„Ð°Ð¹Ð»Ð°.',
			'errInvDirname'        : 'Ð�ÐµÐ´Ñ–Ð¹Ñ�Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ‚ÐµÐºÐ¸.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ð¢ÐµÐºÑƒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾.',
			'errFileNotFound'      : 'Ð¤Ð°Ð¹Ð» Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾.',
			'errTrgFolderNotFound' : 'Ð¦Ñ–Ð»ÑŒÐ¾Ð²Ñƒ Ñ‚ÐµÐºÑƒ "$1" Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾.',
			'errPopup'             : 'Ð‘Ñ€Ð°ÑƒÐ·ÐµÑ€ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ñ�Ñ” Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ñ‚Ð¸ popup-Ð²Ñ–ÐºÐ½Ð¾. Ð”Ð¾Ð·Ð²Ð¾Ð»ÑŒÑ‚Ðµ Ñƒ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°, Ñ‰Ð¾Ð± Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð».',
			'errMkdir'             : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ "$1".',
			'errMkfile'            : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» "$1".',
			'errRename'            : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» "$1".',
			'errCopyFrom'          : 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· Ñ‚Ð¾Ð¼Ñƒ "$1" Ð½Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾.',
			'errCopyTo'            : 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½Ð° Ñ‚Ð¾Ð¼ "$1" Ð½Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾.',
			'errMkOutLink'         : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ñƒ Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÐºÐ¾Ñ€ÐµÐ½ÐµÐ²Ð¾Ñ— Ñ‚ÐµÐºÐ¸ Ð½Ð¾Ñ�Ñ–Ñ�.', // from v2.1 added 03.10.2015
			'errUpload'            : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�.',  // old name - errUploadCommon
			'errUploadFile'        : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ð�Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð´Ð»Ñ� Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�.',
			'errUploadTotalSize'   : 'ÐžÐ±\'Ñ”Ð¼ Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰Ð¸Ð² Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ Ð»Ñ–Ð¼Ñ–Ñ‚.', // old name - errMaxSize
			'errUploadFileSize'    : 'ÐžÐ±\'Ñ”Ð¼ Ñ„Ð°Ð¹Ð»Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰Ð¸Ð² Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ Ð»Ñ–Ð¼Ñ–Ñ‚.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ð¤Ð°Ð¹Ð»Ð¸ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ñ–.',
			'errUploadTransfer'    : '"$1" : Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–.',
			'errUploadTemp'        : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñ�Ð¾Ð²Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'ÐžÐ±\'Ñ”ÐºÑ‚ "$1" Ð²Ð¶Ðµ Ñ–Ñ�Ð½ÑƒÑ” Ñ‚ÑƒÑ‚ Ñ‚Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð·Ð°Ð¼Ñ–Ð½ÐµÐ½Ð¸Ð¼ Ð½Ð° Ð¾Ð±\'Ñ”ÐºÑ‚ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ.', // new
			'errReplace'           : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð°Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ "$1".',
			'errSave'              : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ "$1".',
			'errCopy'              : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ "$1".',
			'errMove'              : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�Ñ‚Ð¸ "$1".',
			'errCopyInItself'      : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ "$1" Ñ�Ð°Ð¼ Ñƒ Ñ�ÐµÐ±Ðµ.',
			'errRm'                : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ "$1".',
			'errTrash'             : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ½ÑƒÑ‚Ð¸ Ð´Ð¾ Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»ÑŒÐ½Ð¸Ð¹(Ñ–) Ñ„Ð°Ð¹Ð»(Ð¸).',
			'errExtract'           : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸ Ð· "$1".',
			'errArchive'           : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð°Ñ€Ñ…Ñ–Ð².',
			'errArcType'           : 'Ð¢Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑ�Ñ�.',
			'errNoArchive'         : 'Ð¤Ð°Ð¹Ð» Ð½Ðµ Ñ” Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð¼, Ð°Ð±Ð¾ Ñ” Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð¼, Ñ‚Ð¸Ð¿ Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑ�Ñ�.',
			'errCmdNoSupport'      : 'Ð¡ÐµÑ€Ð²ÐµÑ€Ð½Ð° Ñ‡Ð°Ñ�Ñ‚Ð¸Ð½Ð° Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ” Ñ†Ñ–Ñ”Ñ— ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸.',
			'errReplByChild'       : 'ÐŸÐ°Ð¿ÐºÐ° â€œ$1â€� Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð·Ð°Ð¼Ñ–Ð½ÐµÐ½Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð¼, Ñ�ÐºÐ¸Ð¹ Ð²Ð¾Ð½Ð° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ.',
			'errArcSymlinks'       : 'Ð— Ð¼Ñ–Ñ€ÐºÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ñ€Ñ…Ñ–Ð²Ð¸ Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ñ‡Ð½Ð¸Ð¼Ð¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ð¼Ð¸.', // edited 24.06.2012
			'errArcMaxSize'        : 'Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�.',
			'errResize'            : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¼Ð°Ñ�ÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ñ‚Ð¸ "$1".',
			'errResizeDegree'      : 'Ð�ÐµÐ´Ñ–Ð¹Ñ�Ð½Ð¸Ð¹ ÐºÑƒÑ‚ Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ�.',  // added 7.3.2013
			'errResizeRotate'      : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¸ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ñƒ.',  // added 7.3.2013
			'errResizeSize'        : 'Ð�ÐµÐ´Ñ–Ð¹Ñ�Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ð¸.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ð¸ Ð½Ðµ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾.',  // added 7.3.2013
			'errUsupportType'      : 'Ð�ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð°.',
			'errNotUTF8Content'    : 'Ð¤Ð°Ð¹Ð» "$1" Ð½Ðµ Ð² UTF-8 Ñ– Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð²Ñ–Ð´Ñ€ÐµÐ´Ð°Ð³Ð¾Ð²Ð°Ð½Ð¸Ð¹.',  // added 9.11.2011
			'errNetMount'          : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ð�ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ».',     // added 17.04.2012
			'errNetMountFailed'    : 'Ð’ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ– Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð°Ð»Ð°Ñ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ð�ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¾ Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñ…Ð¾Ñ�Ñ‚.', // added 18.04.2012
			'errSessionExpires'    : 'Ð§Ð°Ñ� Ñ�ÐµÐ°Ð½Ñ�Ñƒ Ð¼Ð¸Ð½ÑƒÐ² Ñ‡ÐµÑ€ÐµÐ· Ð½ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ.',
			'errCreatingTempDir'   : 'Ð�Ð•Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–ÑŽ: "$1"',
			'errFtpDownloadFile'   : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ð· FTP: "$1"',
			'errFtpUploadFile'     : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ð½Ð° FTP: "$1"',
			'errFtpMkdir'          : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð½Ð° FTP: "$1"',
			'errArchiveExec'       : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ€Ð¸ Ð°Ñ€Ñ…Ñ–Ð²Ð°Ñ†Ñ–Ñ— Ñ„Ð°Ð¹Ð»Ñ–Ð²: "$1"',
			'errExtractExec'       : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ€Ð¸ Ñ€Ð¾Ð·Ð°Ñ€Ñ…Ñ–Ð²ÑƒÐ²Ð°Ð½Ð½Ñ– Ñ„Ð°Ð¹Ð»Ñ–Ð²: "$1"',
			'errNetUnMount'        : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð´ÐµÐ¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð² UTF - 8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ¹Ñ‚Ðµ Google Chrome, Ñ�ÐºÑ‰Ð¾ Ð²Ð¸ Ñ…Ð¾Ñ‡ÐµÑ‚Ðµ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð¿Ð°Ð¿ÐºÑƒ', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Ð§Ð°Ñ� Ð¿Ð¾ÑˆÑƒÐºÑƒ "$1" Ð²Ð¸Ð¹ÑˆÐ¾Ð². Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñ‡Ð°Ñ�Ñ‚ÐºÐ¾Ð²Ð¸Ð¹', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ð�ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð° Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ñ–Ñ�.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'ÐœÐ°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð² Ñ‰Ð¾ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð±Ñ€Ð°Ñ‚Ð¸ Ñ�ÐºÐ»Ð°Ð´Ð°Ñ” $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ– Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ð¼Ñ–Ñ�Ñ†Ðµ ÐºÑƒÐ´Ð¸ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Ð”Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð½Ð° Ð±Ð¾Ñ†Ñ– Ñ�ÐµÑ€Ð²ÐµÑ€Ð°.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Ð„ Ñ‚Ð°ÐºÐ¾Ð¶ Ñ‰Ðµ $1 Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ð�Ñ€Ñ…Ñ–Ð²ÑƒÐ²Ð°Ñ‚Ð¸',
			'cmdback'      : 'Ð�Ð°Ð·Ð°Ð´',
			'cmdcopy'      : 'ÐšÐ¾Ð¿Ñ–Ð²Ð°Ñ‚Ð¸',
			'cmdcut'       : 'Ð’Ð¸Ñ€Ñ–Ð·Ð°Ñ‚Ð¸',
			'cmddownload'  : 'Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸',
			'cmdduplicate' : 'Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸',
			'cmdedit'      : 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»',
			'cmdextract'   : 'Ð Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸ Ð· Ð°Ñ€Ñ…Ñ–Ð²Ñƒ',
			'cmdforward'   : 'Ð’Ð¿ÐµÑ€ÐµÐ´',
			'cmdgetfile'   : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'cmdhelp'      : 'ÐŸÑ€Ð¾ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ',
			'cmdhome'      : 'Ð”Ð¾Ð´Ð¾Ð¼Ñƒ',
			'cmdinfo'      : 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ�',
			'cmdmkdir'     : 'Ð¡Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ',
			'cmdmkdirin'   : 'Ð”Ð¾ Ð½Ð¾Ð²Ð¾Ñ— Ñ‚ÐµÐºÐ¸', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ð¡Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»',
			'cmdopen'      : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸',
			'cmdpaste'     : 'Ð’Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ð¸',
			'cmdquicklook' : 'ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¹ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´',
			'cmdreload'    : 'ÐŸÐµÑ€ÐµÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸',
			'cmdrename'    : 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸',
			'cmdrm'        : 'Ð’Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸',
			'cmdtrash'     : 'Ð”Ð¾ Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ð’Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ð¨ÑƒÐºÐ°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'cmdup'        : 'Ð�Ð° 1 Ñ€Ñ–Ð²ÐµÐ½ÑŒ Ð²Ð³Ð¾Ñ€Ñƒ',
			'cmdupload'    : 'Ð’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'cmdview'      : 'ÐŸÐµÑ€ÐµÐ³Ð»Ñ�Ð´',
			'cmdresize'    : 'ÐœÐ°Ñ�ÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ�',
			'cmdsort'      : 'Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�',
			'cmdnetmount'  : 'Ð—Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð¸Ð¹ Ð´Ð¸Ñ�Ðº', // added 18.04.2012
			'cmdnetunmount': 'Ð Ð¾Ð·Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ð”Ð¾ ÐœÑ–Ñ�Ñ†ÑŒ', // added 28.12.2014
			'cmdchmod'     : 'Ð—Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð°Ð²Ð°', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–ÑŽ', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ð¡ÐºÐ¸Ð½ÑƒÑ‚Ð¸ ÑˆÐ¸Ñ€Ð¸Ð½Ñƒ Ñ�Ñ‚Ð¾Ð²Ð¿Ñ‡Ð¸ÐºÐ°', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ÐŸÐ¾Ð²Ð½Ð¸Ð¹ ÐµÐºÑ€Ð°Ð½', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ÐŸÐµÑ€ÐµÑ�ÑƒÐ½ÑƒÑ‚Ð¸', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ð¡Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Ð¡ÐºÐ°Ñ�ÑƒÐ²Ð°Ñ‚Ð¸', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ð’Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ ÑƒÑ�Ñ–', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Ð—Ð½Ñ�Ñ‚Ð¸ Ð²Ð¸Ð±Ñ–Ñ€', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Ð†Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð¸Ð±Ñ–Ñ€', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñƒ Ð½Ð¾Ð²Ð¾Ð¼Ñƒ Ð²Ñ–ÐºÐ½Ñ–', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ð¡Ñ…Ð¾Ð²Ð°Ñ‚Ð¸ (Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ð—Ð°ÐºÑ€Ð¸Ñ‚Ð¸',
			'btnSave'   : 'Ð—Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸',
			'btnRm'     : 'Ð’Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸',
			'btnApply'  : 'Ð—Ð°Ñ�Ñ‚Ð¾Ñ�ÑƒÐ²Ð°Ñ‚Ð¸',
			'btnCancel' : 'Ð¡ÐºÐ°Ñ�ÑƒÐ²Ð°Ñ‚Ð¸',
			'btnNo'     : 'Ð�Ñ–',
			'btnYes'    : 'Ð¢Ð°Ðº',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸',  // added 18.04.2012
			'btnApprove': 'ÐŸÐµÑ€ÐµÐ¹Ñ‚Ð¸ Ð² $1 Ñ– Ð¿Ñ€Ð¸Ð¹Ð½Ñ�Ñ‚Ð¸', // from v2.1 added 26.04.2012
			'btnUnmount': 'Ð’Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸', // from v2.1 added 30.04.2012
			'btnConv'   : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ð¢ÑƒÑ‚',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ð Ð¾Ð·Ð´Ñ–Ð»',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ð’Ñ�Ñ–',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Ñ‚Ð¸Ð¿', // from v2.1 added 22.5.2015
			'btnFileName':'Ð�Ð°Ð·Ð²Ð° Ñ„Ð°Ð¹Ð»Ð°',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Ð—Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñ– Ð²Ð¸Ð¹Ñ‚Ð¸', // from v2.1 added 12.6.2015
			'btnBackup' : 'Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð° ÐºÐ¾Ð¿Ñ–Ñ�', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ñ–(Ð£Ñ�Ñ–)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ÐŸÐ¾Ð¿ÐµÑ€. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Ð�Ð°Ñ�Ñ‚ÑƒÐ¿. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Ð—Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñ�Ðº', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ',
			'ntffile'     : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»',
			'ntfreload'   : 'ÐŸÐµÑ€ÐµÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ‚ÐµÐºÐ¸',
			'ntfmkdir'    : 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ‚ÐµÐºÐ¸',
			'ntfmkfile'   : 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð²',
			'ntfrm'       : 'Ð’Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfcopy'     : 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfmove'     : 'ÐŸÐµÑ€ÐµÐ½ÐµÑ�Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfprepare'  : 'ÐŸÑ–Ð´Ð³Ð¾Ñ‚Ð¾Ð²ÐºÐ° Ð´Ð¾ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð²',
			'ntfrename'   : 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfupload'   : 'Ð’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfdownload' : 'Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfsave'     : 'Ð—Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'ntfarchive'  : 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ',
			'ntfextract'  : 'Ð Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ',
			'ntfsearch'   : 'ÐŸÐ¾ÑˆÑƒÐº Ñ„Ð°Ð¹Ð»Ñ–Ð²',
			'ntfresize'   : 'Ð—Ð¼Ñ–Ð½Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ð¸',
			'ntfsmth'     : 'Ð’Ð¸ÐºÐ¾Ð½ÑƒÑ”Ð¼Ð¾',
			'ntfloadimg'  : 'Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ�',
			'ntfnetmount' : 'ÐœÐ¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð¾Ð³Ð¾ Ð´Ð¸Ñ�ÐºÐ°', // added 18.04.2012
			'ntfnetunmount': 'Ð Ð¾Ð·Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð¾Ð³Ð¾ Ð´Ð¸Ñ�ÐºÐ°', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ð¸', // added 20.05.2013
			'ntfreaddir'  : 'Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ—', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� URL Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ð—Ð¼Ñ–Ð½Ð° Ð¿Ñ€Ð°Ð² Ñ„Ð°Ð¹Ð»Ñƒ', // from v2.1 added 20.6.2015
			'ntfpreupload': 'ÐŸÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° Ñ–Ð¼ÐµÐ½Ñ– Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñƒ Ð´Ð»Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð¿Ñ€Ð¾ ÑˆÐ»Ñ�Ñ…', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ÐžÐ±Ñ€Ð¾Ð±ÐºÐ° Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÑƒÑ”Ð¼Ð¾ Ð´Ð¾ Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ð·Ñ– Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'ÐŸÐµÑ€ÐµÐ²Ñ–Ñ€Ñ�Ñ”Ð¼Ð¾ Ñ‚ÐµÐºÑƒ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Ð¡ÐºÐ°Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ñ— Ð´Ñ–Ñ—', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñ�ÐºÐ°Ñ�Ð¾Ð²Ð°Ð½Ð¾Ñ— Ð´Ñ–Ñ—', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'ÐŸÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Ð¡Ð¼Ñ–Ñ‚Ð½Ð¸Ðº', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾',
			'Today'       : 'Ñ�ÑŒÐ¾Ð³Ð¾Ð´Ð½Ñ–',
			'Yesterday'   : 'Ð²Ñ‡Ð¾Ñ€Ð°',
			'msJan'       : 'Ð¡Ñ–Ñ‡',
			'msFeb'       : 'Ð›ÑŽÑ‚',
			'msMar'       : 'Ð‘ÐµÑ€',
			'msApr'       : 'ÐšÐ²Ñ–',
			'msMay'       : 'Ð¢Ñ€Ð°',
			'msJun'       : 'Ð§ÐµÑ€',
			'msJul'       : 'Ð›Ð¸Ð¿',
			'msAug'       : 'Ð¡ÐµÑ€',
			'msSep'       : 'Ð’ÐµÑ€',
			'msOct'       : 'Ð–Ð¾Ð²',
			'msNov'       : 'Ð›Ð¸Ñ�',
			'msDec'       : 'Ð“Ñ€Ñƒ',
			'January'     : 'Ñ�Ñ–Ñ‡Ð½Ñ�',
			'February'    : 'Ð»ÑŽÑ‚Ð¾Ð³Ð¾',
			'March'       : 'Ð±ÐµÑ€ÐµÐ·Ð½Ñ�',
			'April'       : 'ÐºÐ²Ñ–Ñ‚Ð½Ñ�',
			'May'         : 'Ñ‚Ñ€Ð°Ð²Ð½Ñ�',
			'June'        : 'Ñ‡ÐµÑ€Ð²Ð½Ñ�',
			'July'        : 'Ð»Ð¸Ð¿Ð½Ñ�',
			'August'      : 'Ñ�ÐµÑ€Ð¿Ð½Ñ�',
			'September'   : 'Ð²ÐµÑ€ÐµÑ�Ð½Ñ�',
			'October'     : 'Ð¶Ð¾Ð²Ñ‚Ð½Ñ�',
			'November'    : 'Ð»Ð¸Ñ�Ñ‚Ð¾Ð¿Ð°Ð´Ð°',
			'December'    : 'Ð³Ñ€ÑƒÐ´Ð½Ñ�',
			'Sunday'      : 'Ð�ÐµÐ´Ñ–Ð»Ñ�',
			'Monday'      : 'ÐŸÐ¾Ð½ÐµÐ´Ñ–Ð»Ð¾Ðº',
			'Tuesday'     : 'Ð’Ñ–Ð²Ñ‚Ð¾Ñ€Ð¾Ðº',
			'Wednesday'   : 'Ð¡ÐµÑ€ÐµÐ´Ð°',
			'Thursday'    : 'Ð§ÐµÑ‚Ð²ÐµÑ€',
			'Friday'      : 'ÐŸâ€™Ñ�Ñ‚Ð½Ð¸Ñ†Ñ�',
			'Saturday'    : 'Ð¡ÑƒÐ±Ð¾Ñ‚Ð°',
			'Sun'         : 'Ð�Ð´',
			'Mon'         : 'ÐŸÐ½',
			'Tue'         : 'Ð’Ñ‚',
			'Wed'         : 'Ð¡Ñ€',
			'Thu'         : 'Ð§Ñ‚',
			'Fri'         : 'ÐŸÑ‚',
			'Sat'         : 'Ð¡Ð±',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ð·Ð° Ð½Ð°Ð·Ð²Ð¾ÑŽ',
			'sortkind'          : 'Ð·Ð° Ñ‚Ð¸Ð¿Ð¾Ð¼',
			'sortsize'          : 'Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼',
			'sortdate'          : 'Ð·Ð° Ð´Ð°Ñ‚Ð¾ÑŽ',
			'sortFoldersFirst'  : 'Ð¡Ð¿Ð¸Ñ�Ð¾Ðº Ñ‚ÐµÐº',
			'sortperm'          : 'Ð·Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ð°Ð¼Ð¸', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Ð·Ð° Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Ð·Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÐºÐ¾Ð¼',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Ð·Ð° Ð³Ñ€ÑƒÐ¿Ð¾ÑŽ',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ð¢Ð°ÐºÐ¾Ð¶ Ð²Ð¸Ð³Ð»Ñ�Ð´ Ð´ÐµÑ€ÐµÐ²Ð°',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Ð½ÐµÐ½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð».txt', // added 10.11.2015
			'untitled folder'   : 'Ð½ÐµÐ½Ð°Ð·Ð²Ð°Ð½Ð° Ñ‚ÐµÐºÐ°',   // added 10.11.2015
			'Archive'           : 'Ð�Ð¾Ð²Ð¸Ð¹Ð�Ñ€Ñ…Ñ–Ð²',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Ð�Ð¾Ð²Ð¸Ð¹Ð¤Ð°Ð¹Ð».$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Ð¤Ð°Ð¹Ð»',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2 ',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Ð�ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ�',
			'confirmRm'       : 'Ð’Ð¸ Ñ�Ð¿Ñ€Ð°Ð²Ð´Ñ– Ñ…Ð¾Ñ‡ÐµÑ‚Ðµ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸?<br/>ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ� Ð½ÐµÐ·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ñ�!',
			'confirmRepl'     : 'Ð—Ð°Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ð¾Ð²Ð¸Ð¼? (Ð¿Ñ€Ð¸ Ð½Ð°Ñ�Ð²Ð½Ð¾Ñ�Ñ‚Ñ– Ñ‚ÐµÐº Ð²Ð¾Ð½Ð¸ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ Ð¾Ð±\'Ñ”Ð´Ð½Ð°Ð½Ñ–. Ð”Ð»Ñ� Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ñ— ÐºÐ¾Ð¿Ñ–Ñ— Ñ‚Ð° Ð·Ð°Ð¼Ñ–Ð½Ð¸ Ð¾Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð ÐµÐ·ÐµÑ€Ð²Ð½Ñƒ ÐšÐ¾Ð¿Ñ–ÑŽ)',
			'confirmRest'     : 'Ð—Ð°Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ–Ñ�Ð½ÑƒÑŽÑ‡Ð¸Ð¹ Ð¾Ð±\'Ñ”ÐºÑ‚ Ð¾Ð±\'Ñ”ÐºÑ‚Ð¾Ð¼ Ð·Ñ– Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ð�Ðµ Ñƒ UTF-8<br/>ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ UTF-8?<br/>Ð’Ð¼Ñ–Ñ�Ñ‚ Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ UTF-8 Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ�Ð¼ Ð¿Ñ–Ñ�Ð»Ñ� ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ñ–Ñ—.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ†ÑŒÐ¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸. ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñ�Ð¾Ð²Ð¾ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð¹Ð¾Ð³Ð¾ Ñƒ UTF-8 Ð´Ð»Ñ� Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ�.<br/>ÐžÐ±ÐµÑ€Ñ–Ñ‚ÑŒ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ð‘ÑƒÐ»Ð¾ Ð²Ð½ÐµÑ�ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð¸.<br/>Ð¯ÐºÑ‰Ð¾ Ñ–Ñ— Ð½Ðµ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸, Ñ—Ñ… Ð±ÑƒÐ´Ðµ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ð’Ð¸ Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð±Ð°Ð¶Ð°Ñ”Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ†Ñ– Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸ Ð´Ð¾ Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸ÐºÐ°?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ð’Ð¸ Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð±Ð°Ð¶Ð°Ñ”Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸ Ð´Ð¾ "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Ð—Ð°Ñ�Ñ‚Ð¾Ñ�ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¾ Ð²Ñ�Ñ–Ñ…',
			'name'            : 'Ð�Ð°Ð·Ð²Ð°',
			'size'            : 'Ð Ð¾Ð·Ð¼Ñ–Ñ€',
			'perms'           : 'Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿Ð¸',
			'modify'          : 'Ð—Ð¼Ñ–Ð½ÐµÐ½Ð¾',
			'kind'            : 'Ð¢Ð¸Ð¿',
			'read'            : 'Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�',
			'write'           : 'Ð·Ð°Ð¿Ð¸Ñ�',
			'noaccess'        : 'Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾',
			'and'             : 'Ñ–',
			'unknown'         : 'Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾',
			'selectall'       : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ Ð²Ñ�Ñ– Ñ„Ð°Ð¹Ð»Ð¸',
			'selectfiles'     : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»(Ð¸)',
			'selectffile'     : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÑˆÐ¸Ð¹ Ñ„Ð°Ð¹Ð»',
			'selectlfile'     : 'Ð’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ Ð¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¹ Ñ„Ð°Ð¹Ð»',
			'viewlist'        : 'Ð¡Ð¿Ð¸Ñ�ÐºÐ¾Ð¼',
			'viewicons'       : 'Ð—Ð½Ð°Ñ‡ÐºÐ°Ð¼Ð¸',
			'viewSmall'       : 'ÐœÐ°Ð»ÐµÐ½ÑŒÐºÑ– Ð·Ð½Ð°Ñ‡ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ð¡ÐµÑ€ÐµÐ´Ð½Ñ– Ð·Ð½Ð°Ñ‡ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ð’ÐµÐ»Ð¸ÐºÑ– Ð·Ð½Ð°Ñ‡ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ð”ÑƒÐ¶Ðµ Ð²ÐµÐ»Ð¸ÐºÑ– Ð·Ð½Ð°Ñ‡ÐºÐ¸', // from v2.1.39 added 22.5.2018
			'places'          : 'Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�',
			'calc'            : 'Ð’Ð¸Ñ€Ð°Ñ…ÑƒÐ²Ð°Ñ‚Ð¸',
			'path'            : 'Ð¨Ð»Ñ�Ñ…',
			'aliasfor'        : 'Ð�Ð»Ñ–Ð°Ñ� Ð´Ð»Ñ�',
			'locked'          : 'Ð—Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾',
			'dim'             : 'Ð Ð¾Ð·Ð¼Ñ–Ñ€Ð¸',
			'files'           : 'Ð¤Ð°Ð¹Ð»Ð¸',
			'folders'         : 'Ñ‚ÐµÐºÐ¸',
			'items'           : 'Ð•Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¸',
			'yes'             : 'Ñ‚Ð°Ðº',
			'no'              : 'Ð½Ñ–',
			'link'            : 'ÐŸÐ¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�',
			'searcresult'     : 'Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¸ Ð¿Ð¾ÑˆÑƒÐºÑƒ',
			'selected'        : 'Ð’Ð¸Ð±Ñ€Ð°Ð½Ñ– ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸',
			'about'           : 'ÐŸÑ€Ð¾',
			'shortcuts'       : 'Ð¯Ñ€Ð»Ð¸ÐºÐ¸',
			'help'            : 'Ð”Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð°',
			'webfm'           : 'Web-Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ€ Ñ„Ð°Ð¹Ð»Ñ–Ð²',
			'ver'             : 'Ð’ÐµÑ€Ñ�Ñ–Ñ�',
			'protocolver'     : 'Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ',
			'homepage'        : 'Ð¡Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ° Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñƒ',
			'docs'            : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ�',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Ð¡Ð»Ñ–Ð´ÐºÑƒÐ¹Ñ‚Ðµ Ñƒ Ð¢Ð²Ñ–Ñ‚ÐµÑ€Ñ–',
			'facebook'        : 'ÐŸÑ€Ð¸Ñ”Ð´Ð½ÑƒÐ¹Ñ‚ÐµÑ�ÑŒ Ñƒ Ñ„ÐµÐ¹Ñ�Ð±ÑƒÑ†Ñ–',
			'team'            : 'Ð�Ð²Ñ‚Ð¾Ñ€Ð¸',
			'chiefdev'        : 'Ð³Ð¾Ð»Ð¾Ð²Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸Ðº',
			'developer'       : 'Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸Ðº',
			'contributor'     : 'ÑƒÑ‡Ð°Ñ�Ð½Ð¸Ðº',
			'maintainer'      : 'Ñ�ÑƒÐ¿Ñ€Ð¾Ð²Ð¾Ð´Ð¶ÑƒÐ²Ð°Ñ‡',
			'translator'      : 'Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ñ‡',
			'icons'           : 'Ð—Ð½Ð°Ñ‡ÐºÐ¸',
			'dontforget'      : 'Ñ– Ð½Ðµ Ð·Ð°Ð±ÑƒÐ´ÑŒÑ‚Ðµ Ñ€ÑƒÑˆÐ½Ð¸Ñ‡Ð¾Ðº',
			'shortcutsof'     : 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾',
			'dropFiles'       : 'ÐšÐ¸Ð´Ð°Ð¹Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¸ Ñ�ÑŽÐ´Ð¸',
			'or'              : 'Ð°Ð±Ð¾',
			'selectForUpload' : 'Ð’Ð¸Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¸ Ð´Ð»Ñ� Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�',
			'moveFiles'       : 'ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'copyFiles'       : 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸',
			'restoreFiles'    : 'Ð’Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Ð’Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ð· Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½ÑŒ',
			'aspectRatio'     : 'Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ�',
			'scale'           : 'ÐœÐ°Ñ�ÑˆÑ‚Ð°Ð±',
			'width'           : 'Ð¨Ð¸Ñ€Ð¸Ð½Ð°',
			'height'          : 'Ð’Ð¸Ñ�Ð¾Ñ‚Ð°',
			'resize'          : 'Ð—Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€',
			'crop'            : 'ÐžÐ±Ñ€Ñ–Ð·Ð°Ñ‚Ð¸',
			'rotate'          : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¸',
			'rotate-cw'       : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¸ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ñ–Ð² Ð·Ð° Ð³Ð¾Ð´. Ñ�Ñ‚Ñ€.',
			'rotate-ccw'      : 'ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¸ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ñ–Ð² Ð¿Ñ€Ð¾Ñ‚Ð¸ Ð³Ð¾Ð´. Ñ�Ñ‚Ñ€.',
			'degree'          : 'Ð“Ñ€Ð°Ð´ÑƒÑ�',
			'netMountDialogTitle' : 'Ð—Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð½Ð¾Ñ�Ñ–Ð¹ Ñƒ Ð¼ÐµÑ€ÐµÐ¶Ñ–', // added 18.04.2012
			'protocol'            : 'Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ', // added 18.04.2012
			'host'                : 'Ð¥Ð¾Ñ�Ñ‚', // added 18.04.2012
			'port'                : 'ÐŸÐ¾Ñ€Ñ‚', // added 18.04.2012
			'user'                : 'Ð›Ð¾Ð³Ñ–Ð½', // added 18.04.2012
			'pass'                : 'ÐŸÐ°Ñ€Ð¾Ð»ÑŒ', // added 18.04.2012
			'confirmUnmount'      : 'Ð’Ð¸ Ð²Ñ–Ð´Ð¼Ð¾Ð½Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ÐŸÐµÑ€ÐµÑ‚Ñ�Ð³Ð½Ñ–Ñ‚ÑŒ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð²Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¸ Ð· Ð¾Ð³Ð»Ñ�Ð´Ð°Ñ‡Ð°', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'ÐŸÐµÑ€ÐµÑ‚Ñ�Ð³Ð½Ñ–Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¸, Ð’Ñ�Ñ‚Ð°Ð²Ñ‚Ðµ URL Ð°Ð±Ð¾ Ñ�Ð²Ñ–Ñ‚Ð»Ð¸Ð½Ð¸ (Ð· Ð±ÑƒÑ„ÐµÑ€Ð° Ð¾Ð±Ð¼Ñ–Ð½Ñƒ) Ñ�ÑŽÐ´Ð¸', // from v2.1 added 07.04.2014
			'encoding'        : 'ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ�', // from v2.1 added 19.12.2014
			'locale'          : 'Ð›Ð¾ÐºÐ°Ð»ÑŒ',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'ÐŸÐ¾ÑˆÑƒÐº Ð·Ð° Ð²Ð²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ñ‚Ð¸Ð¿Ð¾Ð¼ MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Ð’Ð»Ð°Ñ�Ð½Ð¸Ðº', // from v2.1 added 20.6.2015
			'group'           : 'Ð“Ñ€ÑƒÐ¿Ð°', // from v2.1 added 20.6.2015
			'other'           : 'Ð†Ð½ÑˆÑ–', // from v2.1 added 20.6.2015
			'execute'         : 'Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�', // from v2.1 added 20.6.2015
			'perm'            : 'Ð”Ð¾Ð·Ð²Ñ–Ð»', // from v2.1 added 20.6.2015
			'mode'            : 'Ð ÐµÐ¶Ð¸Ð¼', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Ð¢ÐµÐºÐ° Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ�', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Ð¢ÐµÐºÐ° Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ�\\A ÐŸÐµÑ€ÐµÑ‚Ñ�Ð³Ð½Ñ–Ñ‚ÑŒ Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸ Ð´Ð»Ñ� Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ�', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Ð¢ÐµÐºÐ° Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ�\\A Ð”Ð»Ñ� Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ� Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð² Ñ‚Ð¾Ñ€ÐºÐ½Ñ–Ñ‚ÑŒ Ñ‚Ð° ÑƒÑ‚Ñ€Ð¸Ð¼ÑƒÐ¹Ñ‚Ðµ', // from v2.1.6 added 30.12.2015
			'quality'         : 'Ð¯ÐºÑ–Ñ�Ñ‚ÑŒ', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Ð�Ð²Ñ‚Ð¾ Ñ�Ð¸Ð½Ñ….',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ÐŸÐµÑ€ÐµÑ�ÑƒÐ½ÑƒÑ‚Ð¸ Ð²Ð³Ð¾Ñ€Ñƒ',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'ÐžÐ±Ñ€Ð°Ð½Ñ– Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸ ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Ñ‚ÐµÐºÐ¸', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Ð”Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð¾Ñ„Ð»Ð°Ð¹Ð½', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Ð”Ð»Ñ� Ñ€ÐµÐ°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ—', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ð—Ð°Ñ€Ð°Ð· Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÑ”Ð¼Ð¾...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ„Ð°Ð¹Ð»Ñ–Ð²', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Ð’Ð¸ Ð½Ð°Ð¼Ð°Ð³Ð°Ñ”Ñ‚ÐµÑ�ÑŒ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ $1 Ñ„Ð°Ð¹Ð»Ñ–Ð². Ð’Ð¸ Ð²Ð¿ÐµÐ²Ð½ÐµÐ½Ñ– Ñ‰Ð¾ Ñ…Ð¾Ñ‡ÐµÑ‚Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ–Ñ— Ñƒ Ð¾Ð³Ð»Ñ�Ð´Ð°Ñ‡Ñ–?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'ÐŸÐ¾ÑˆÑƒÐº Ð½Ðµ Ð´Ð°Ð² Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² Ñƒ Ð¾Ð±Ñ€Ð°Ð½Ð¾Ð¼Ñƒ Ð¼Ñ–Ñ�Ñ†Ñ–.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ð ÐµÐ´Ð°Ð³ÑƒÑ” Ñ„Ð°Ð¹Ð».', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ð’Ð¸ Ð¾Ð±Ñ€Ð°Ð»Ð¸ $1 Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð².', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Ð£ Ð²Ð°Ñ� Ñ” $1 Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð² Ñƒ Ð±ÑƒÑ„ÐµÑ€Ñ– Ð¾Ð±Ð¼Ñ–Ð½Ñƒ.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Ð†Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð½Ð¸Ð¹ Ð¿Ð¾ÑˆÑƒÐº Ñ” Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Ð’Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¾', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ÐšÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð½Ðµ Ð¼ÐµÐ½ÑŽ', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ÐšÐ¾Ñ€ÐµÐ½ÐµÐ²Ñ– Ñ‚ÐµÐºÐ¸ Ð½Ð¾Ñ�Ñ–Ñ—Ð²', // from v2.1.16 added 16.9.2016
			'reset'           : 'ÐžÐ±Ð½ÑƒÐ»Ð¸Ñ‚Ð¸', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'ÐšÐ¾Ð»Ñ–Ñ€ Ñ„Ð¾Ð½Ñƒ', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'ÐžÐ±Ñ€Ð°Ñ‚Ð¸ ÐºÐ¾Ð»Ñ–Ñ€', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Ñ�Ñ–Ñ‚ÐºÐ° 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ð£Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¸ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñ– Ð²Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ–.\\AÐ�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ [Enter] Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ÐºÑ€Ð¸Ñ‚ÐµÑ€Ñ–Ñ—Ð² Ð¿Ð¾ÑˆÑƒÐºÑƒ.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¸ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ð·Ð° Ð¿ÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ Ð²Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ– Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñ–.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ð° Ð¼Ñ–Ñ‚ÐºÐ°', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Ñ…Ð². Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�ÑŒ', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð·Ð½Ð¾Ð²Ñƒ Ð· Ð¾Ð±Ñ€Ð°Ð½Ð¸Ð¼ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Ð—Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ð· Ð¾Ð±Ñ€Ð°Ð½Ð¸Ð¼ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'ÐžÐ±Ñ€Ð°Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'ÐŸÐ¾ÑˆÑƒÐº Ð·Ð° Ð¿ÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ', // from v2.1.23 added 24.3.2017
			'presets'         : 'Ð¨Ð°Ð±Ð»Ð¾Ð½Ð¸', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Ð”ÑƒÐ¶Ðµ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð² Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ñƒ Ñ�Ð¼Ñ–Ñ‚Ð½Ð¸Ðº.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²ÐµÐŸÐ¾Ð»Ðµ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ð¡Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ð¸Ñ‚Ð¸ Ñ‚ÐµÐºÑƒ "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ð¢ÐµÐºÐ° "$1" Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ�.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�', // from v2.1.26 added 28.6.2017
			'language'        : 'ÐœÐ¾Ð²Ð°', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Ð†Ð½Ñ–Ñ†Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ñ– Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ð¾Ð³Ð»Ñ�Ð´Ð°Ñ‡Ñ–', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð»Ð¾Ñ‚ÐºÑƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð²', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�ÑŒ.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 Ñ€Ñ�Ð´ÐºÑ–Ð² Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�ÑŒ.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Ð¡ÑƒÐ¼Ð°', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'ÐŸÑ€Ð¸Ð±Ð»Ð¸Ð·Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ñƒ', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Ð¤Ð¾ÐºÑƒÑ�ÑƒÐ²Ð°Ñ‚Ð¸ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ Ð´Ñ–Ð°Ð»Ð¾Ð³Ð° Ð¿Ñ€Ð¸ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð½Ñ– ÐºÑƒÑ€Ñ�Ð¾Ñ€Ð° Ð¼Ð¸ÑˆÑ–',  // from v2.1.30 added 2.11.2017
			'select'          : 'ÐžÐ±Ñ€Ð°Ñ‚Ð¸', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ð”Ñ–Ñ� Ð¿Ñ€Ð¸ Ð²Ð¸Ð±Ð¾Ñ€Ñ– Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð²Ñ�Ñ� ÐºÑ€Ð°Ð¹Ð½Ñ–Ð¹ Ñ€Ð°Ð·.', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Ð†Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð¸Ð±Ñ–Ñ€', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ð’Ð¸ Ñ‚Ð¾Ñ‡Ð½Ð¾ Ñ…Ð¾Ñ‡ÐµÑ‚Ðµ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ $1 Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ… Ð¾Ð±\'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ð° ÐºÑˆÑ‚Ð°Ð»Ñ‚ $2?<br/>Ð¦Ðµ Ð½ÐµÐ·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð° Ð´Ñ–Ñ�!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'ÐŸÐ°ÐºÐµÑ‚Ð½Ðµ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ�', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Ð§Ð¸Ñ�Ð»Ð¾', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ð”Ð¾Ð´Ð°Ñ‚Ð¸ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ð”Ð¾Ð´Ð°Ñ‚Ð¸ Ñ�ÑƒÑ„Ñ–ÐºÑ�', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Ð—Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¾Ð²Ð¿Ñ‡Ð¸ÐºÑ–Ð² (Ð²Ð¸Ð³Ð»Ñ�Ð´ Ñ�Ð¿Ð¸Ñ�ÐºÑƒ)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Ð£Ñ�Ñ– Ð·Ð¼Ñ–Ð½Ð¸ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð°Ð½Ñ– Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ–.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Ð”ÐµÑ�ÐºÑ– Ð·Ð¼Ñ–Ð½Ð¸ Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð´Ð½Ð¾ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ð¾Ñ�Ñ–Ñ�.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Ð�Ð°Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¹(Ñ–) Ð½Ð¾Ñ�Ñ–Ð¹(Ñ—) Ð½Ð° Ñ†ÑŒÐ¾Ð¼Ñƒ Ð½Ð¾Ñ�Ñ–Ñ— Ñ‚Ð°ÐºÐ¾Ð¶ Ð½Ðµ Ð·Ð¼Ð¾Ð½Ñ‚Ð¾Ð²Ð°Ð½Ñ–. Ð’Ð¸ Ñ‚Ð¾Ñ‡Ð½Ð¾ Ñ…Ð¾Ñ‡ÐµÑ‚Ðµ Ð²Ñ–Ð´Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð½Ð¾Ñ�Ñ–Ð¹?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ� Ð¿Ñ€Ð¾ Ð¾Ð±Ñ€Ð°Ð½Ðµ', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Ð�Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ð¸ Ð´Ð»Ñ� Ð¿Ð¾ÐºÐ°Ð·Ñƒ Ñ…ÐµÑˆÑƒ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ð¹Ð½Ñ– Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸ (ÐŸÐ°Ð½ÐµÐ»ÑŒ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð¿Ñ€Ð¾ Ð¾Ð±Ñ€Ð°Ð½Ðµ)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ Ð·Ð½Ð¾Ð²Ñƒ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ð¾Ð´Ñƒ.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'ÐŸÐ°Ð½ÐµÐ»ÑŒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð²', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ð Ð¾Ð±Ð¾Ñ‡Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ–Ñ€', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Ð”Ñ–Ð°Ð»Ð¾Ð³', // from v2.1.38 added 4.4.2018
			'all'             : 'Ð£Ñ�Ñ–', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐºÑ–Ð² (Ð²Ð¸Ð³Ð»Ñ�Ð´ Ð·Ð½Ð°Ñ‡ÐºÑ–Ð²)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ðµ Ð²Ñ–ÐºÐ½Ð¾ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ð§ÐµÑ€ÐµÐ· Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� API, Ñ�ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ¹Ñ‚Ðµ Ð½Ð° Ð²ÐµÐ±Ñ�Ð°Ð¹Ñ‚Ñ–.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'ÐŸÑ–Ñ�Ð»Ñ� ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð°Ð¼ Ñ‚Ñ€ÐµÐ±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ URL Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ñƒ, Ð´Ð»Ñ� Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ð°Ð¹Ñ‚ Ð· $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Ð†Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ—', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ð¦ÐµÐ¹ elFinder Ð¼Ð°Ñ” Ð½Ð°Ñ�Ñ‚ÑƒÐ¿Ð½Ñ– Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð¾Ð²Ð°Ð½Ñ– Ñ�ÐµÑ€Ð²Ñ–Ñ�Ð¸. ÐŸÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ ÑƒÐ¼Ð¾Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ð¿Ð¾Ð»Ñ–Ñ‚Ð¸ÐºÑƒ Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¾Ñ�Ñ‚Ñ– Ñ‚Ð° Ñ–Ð½ÑˆÐµ Ð¿ÐµÑ€ÐµÐ´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ñ– Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ð¡Ñ…Ð¾Ð²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ñ– Ð¾Ð±\'Ñ”ÐºÑ‚Ð¸', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚Ð¸/Ð¡Ñ…Ð¾Ð²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ñ– Ð¾\'Ñ”ÐºÑ‚Ð¸', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Ð¢Ð¸Ð¿Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð², Ñ�ÐºÑ– Ð¼Ð¾Ð¶Ð½Ð° Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Ð¢Ð¸Ð¿ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ñƒ', // from v2.1.41 added 7.8.2018
			'add'             : 'Ð”Ð¾Ð´Ð°Ñ‚Ð¸', // from v2.1.41 added 7.8.2018
			'theme'           : 'Ð¢ÐµÐ¼Ð°', // from v2.1.43 added 19.10.2018
			'default'         : 'Ð¯Ðº Ð·Ð°Ð·Ð²Ð¸Ñ‡Ð°Ð¹', // from v2.1.43 added 19.10.2018
			'description'     : 'ÐžÐ¿Ð¸Ñ�', // from v2.1.43 added 19.10.2018
			'website'         : 'Ð’ÐµÐ±-Ñ�Ð°Ð¹Ñ‚', // from v2.1.43 added 19.10.2018
			'author'          : 'Ð�Ð²Ñ‚Ð¾Ñ€', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ�', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'ÐžÐ±\'Ñ”ÐºÑ‚ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸. Ð©Ð¾Ð± ÑƒÐ½Ð¸ÐºÐ½ÑƒÑ‚Ð¸ Ð²Ñ‚Ñ€Ð°Ñ‚Ð¸ Ð¿Ñ€Ð°Ð²Ð¾Ðº Ð²Ð°Ð¼ Ñ‚Ñ€ÐµÐ±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ñ— Ð´Ð¾ Ñ�ÐµÐ±Ðµ Ñƒ Ð¿Ñ€Ð¸Ñ�Ñ‚Ñ€Ñ–Ð¹.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Ð”Ð²Ñ–Ñ‡Ñ– ÐºÐ»Ð°Ñ†Ð½Ñ–Ñ‚ÑŒ Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� Ð²Ð¸Ð±Ð¾Ñ€Ñƒ.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ð¾Ð²Ð½Ð¾ÐµÐºÑ€Ð°Ð½Ð½Ð¸Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾',
			'kindRoot'        : 'ÐšÐ¾Ñ€ÐµÐ½ÐµÐ²Ð° Ñ‚ÐµÐºÐ° Ð½Ð¾Ñ�Ñ–Ñ�', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ÐŸÐ°Ð¿ÐºÐ°',
			'kindSelects'     : 'Ð’Ð¸Ð±Ñ–Ñ€', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ð�Ð»Ñ–Ð°Ñ�',
			'kindAliasBroken' : 'ÐŸÐ¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð°Ð»Ñ–Ð°Ñ�',
			// applications
			'kindApp'         : 'ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð°',
			'kindPostscript'  : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Postscript',
			'kindMsOffice'    : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Office',
			'kindMsWord'      : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Word',
			'kindMsExcel'     : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Microsoft Excel',
			'kindMsPP'        : 'ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ� Microsoft Powerpoint',
			'kindOO'          : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Open Office',
			'kindAppFlash'    : 'Flash-Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº',
			'kindPDF'         : 'ÐŸÐ¾Ñ€Ñ‚Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² (PDF)',
			'kindTorrent'     : 'Ð¤Ð°Ð¹Ð» Bittorrent',
			'kind7z'          : 'Ð�Ñ€Ñ…Ñ–Ð² 7z',
			'kindTAR'         : 'Ð�Ñ€Ñ…Ñ–Ð² TAR',
			'kindGZIP'        : 'Ð�Ñ€Ñ…Ñ–Ð² GZIP',
			'kindBZIP'        : 'Ð�Ñ€Ñ…Ñ–Ð² BZIP',
			'kindXZ'          : 'Ð�Ñ€Ñ…Ñ–Ð² XZ',
			'kindZIP'         : 'Ð�Ñ€Ñ…Ñ–Ð² ZIP',
			'kindRAR'         : 'Ð�Ñ€Ñ…Ñ–Ð² RAR',
			'kindJAR'         : 'Ð¤Ð°Ð¹Ð» Java JAR',
			'kindTTF'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ True Type',
			'kindOTF'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Open Type',
			'kindRPM'         : 'ÐŸÐ°ÐºÑƒÐ½Ð¾Ðº RPM',
			// fonts
			'kindFont'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚',
			'kindSFNT'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ SFNT',
			'kindEOT'         : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Embedded Open Type',
			'kindWOFF'        : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Web Open Font Format',
			'kindWOFF2'       : 'Ð¨Ñ€Ð¸Ñ„Ñ‚ Web Open Font Format 2',
			// texts
			'kindText'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¸Ð¹ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindTextPlain'   : 'ÐŸÑ€Ð¾Ñ�Ñ‚Ð¸Ð¹ Ñ‚ÐµÐºÑ�Ñ‚',
			'kindPHP'         : 'ÐšÐ¾Ð´ PHP',
			'kindCSS'         : 'ÐšÐ°Ñ�ÐºÐ°Ð´Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ñ‚Ð¸Ð»Ñ–Ð² (CSS)',
			'kindHTML'        : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ HTML',
			'kindJS'          : 'ÐšÐ¾Ð´ Javascript',
			'kindRTF'         : 'Ð¤Ð°Ð¹Ð» RTF',
			'kindC'           : 'ÐšÐ¾Ð´ C',
			'kindCHeader'     : 'Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð²Ð¸Ð¹ ÐºÐ¾Ð´ C',
			'kindCPP'         : 'ÐšÐ¾Ð´ C++',
			'kindCPPHeader'   : 'Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð²Ð¸Ð¹ ÐºÐ¾Ð´ C++',
			'kindShell'       : 'Ð¡ÐºÑ€Ð¸Ð¿Ñ‚ Unix shell',
			'kindPython'      : 'ÐšÐ¾Ð´ Python',
			'kindJava'        : 'ÐšÐ¾Ð´ Java',
			'kindRuby'        : 'ÐšÐ¾Ð´ Ruby',
			'kindPerl'        : 'ÐšÐ¾Ð´ Perl',
			'kindSQL'         : 'ÐšÐ¾Ð´ SQL',
			'kindXML'         : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ XML',
			'kindAWK'         : 'ÐšÐ¾Ð´ AWK',
			'kindCSV'         : 'Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»ÐµÐ½Ñ– ÐºÐ¾Ð¼Ð¾ÑŽ (CSV)',
			'kindDOCBOOK'     : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Docbook XML',
			'kindMarkdown'    : 'Ð¢ÐµÐºÑ�Ñ‚ Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ�',
			'kindBMP'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� BMP',
			'kindJPEG'        : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� JPEG',
			'kindGIF'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� GIF',
			'kindPNG'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� PNG',
			'kindTIFF'        : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� TIFF',
			'kindTGA'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� TGA',
			'kindPSD'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Adobe Photoshop',
			'kindXBITMAP'     : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� X bitmap',
			'kindPXM'         : 'Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Pixelmator',
			// media
			'kindAudio'       : 'Ð�ÑƒÐ´Ñ–Ð¾',
			'kindAudioMPEG'   : 'Ð�ÑƒÐ´Ñ–Ð¾ MPEG',
			'kindAudioMPEG4'  : 'Ð�ÑƒÐ´Ñ–Ð¾ MPEG-4',
			'kindAudioMIDI'   : 'Ð�ÑƒÐ´Ñ–Ð¾ MIDI',
			'kindAudioOGG'    : 'Ð�ÑƒÐ´Ñ–Ð¾ Ogg Vorbis',
			'kindAudioWAV'    : 'Ð�ÑƒÐ´Ñ–Ð¾ WAV',
			'AudioPlaylist'   : 'Ð¡Ð¿Ð¸Ñ�Ð¾Ðº Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� MP3',
			'kindVideo'       : 'Ð’Ñ–Ð´ÐµÐ¾',
			'kindVideoDV'     : 'Ð’Ñ–Ð´ÐµÐ¾ DV',
			'kindVideoMPEG'   : 'Ð’Ñ–Ð´ÐµÐ¾ MPEG',
			'kindVideoMPEG4'  : 'Ð’Ñ–Ð´ÐµÐ¾ MPEG-4',
			'kindVideoAVI'    : 'Ð’Ñ–Ð´ÐµÐ¾ AVI',
			'kindVideoMOV'    : 'Ð’Ñ–Ð´ÐµÐ¾ Quick Time',
			'kindVideoWM'     : 'Ð’Ñ–Ð´ÐµÐ¾ Windows Media',
			'kindVideoFlash'  : 'Ð’Ñ–Ð´ÐµÐ¾ Flash',
			'kindVideoMKV'    : 'Ð’Ñ–Ð´ÐµÐ¾ Matroska',
			'kindVideoOGG'    : 'Ð’Ñ–Ð´ÐµÐ¾ Ogg'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                          includes/File_manager/lib/js/i18n/elfinder.bg.js                                                    0000644                 00000117663 15266052762 0015432 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Bulgarian translation
 * @author Stamo Petkov <stamo.petkov@gmail.com>
 * @author Nikolay Petkov <office@cmstory.com>
 * @version 2018-07-28
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.bg = {
		translator : 'Stamo Petkov &lt;stamo.petkov@gmail.com&gt;, Nikolay Petkov &lt;office@cmstory.com&gt;',
		language   : 'Bulgarian',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Ð“Ñ€ÐµÑˆÐºÐ°',
			'errUnknown'           : 'Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°.',
			'errUnknownCmd'        : 'Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.',
			'errJqui'              : 'Ð“Ñ€ÐµÑˆÐ½Ð° ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ� Ð½Ð° jQuery UI. ÐšÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¸Ñ‚Ðµ selectable, draggable Ð¸ droppable Ñ‚Ñ€Ñ�Ð±Ð²Ð° Ð´Ð° Ñ�Ð° Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸.',
			'errNode'              : 'elFinder Ð¸Ð·Ð¸Ñ�ÐºÐ²Ð° Ð´Ð° Ð±ÑŠÐ´Ðµ Ñ�ÑŠÐ·Ð´Ð°Ð´ÐµÐ½ DOM ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚.',
			'errURL'               : 'Ð“Ñ€ÐµÑˆÐºÐ° Ð² Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸Ñ‚Ðµ Ð½Ð° elFinder! Ð½Ðµ Ðµ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð° Ñ�Ñ‚Ð¾Ð¹Ð½Ð¾Ñ�Ñ‚ Ð½Ð° URL.',
			'errAccess'            : 'Ð”Ð¾Ñ�Ñ‚ÑŠÐ¿ Ð¾Ñ‚ÐºÐ°Ð·Ð°Ð½.',
			'errConnect'           : 'Ð�Ñ�Ð¼Ð° Ð²Ñ€ÑŠÐ·ÐºÐ° Ñ�ÑŠÑ� Ñ�ÑŠÑ€Ð²ÑŠÑ€Ð°.',
			'errAbort'             : 'Ð’Ñ€ÑŠÐ·ÐºÐ°Ñ‚Ð° Ðµ Ð¿Ñ€ÐµÐºÑŠÑ�Ð½Ð°Ñ‚Ð°.',
			'errTimeout'           : 'ÐŸÑ€Ð¾Ñ�Ñ€Ð¾Ñ‡ÐµÐ½Ð° Ð²Ñ€ÑŠÐ·ÐºÐ°.',
			'errNotFound'          : 'Ð¡ÑŠÑ€Ð²ÑŠÑ€ÑŠÑ‚ Ð½Ðµ Ðµ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½.',
			'errResponse'          : 'Ð“Ñ€ÐµÑˆÐµÐ½ Ð¾Ñ‚Ð³Ð¾Ð²Ð¾Ñ€ Ð¾Ñ‚ Ñ�ÑŠÑ€Ð²ÑŠÑ€Ð°.',
			'errConf'              : 'Ð“Ñ€ÐµÑˆÐ½Ð¸ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð½Ð° Ñ�ÑŠÑ€Ð²ÑŠÑ€Ð°.',
			'errJSON'              : 'Ð�Ðµ Ðµ Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð½ Ð¼Ð¾Ð´ÑƒÐ» Ð½Ð° PHP Ð·Ð° JSON.',
			'errNoVolumes'         : 'Ð�Ñ�Ð¼Ð° Ð´Ñ�Ð»Ð¾Ð²Ðµ Ð´Ð¾Ñ�Ñ‚ÑŠÐ¿Ð½Ð¸ Ð·Ð° Ñ‡ÐµÑ‚ÐµÐ½Ðµ.',
			'errCmdParams'         : 'Ð“Ñ€ÐµÑˆÐ½Ð¸ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° "$1".',
			'errDataNotJSON'       : 'Ð”Ð°Ð½Ð½Ð¸Ñ‚Ðµ Ð½Ðµ Ñ�Ð° JSON.',
			'errDataEmpty'         : 'Ð›Ð¸Ð¿Ñ�Ð²Ð°Ñ‚ Ð´Ð°Ð½Ð½Ð¸.',
			'errCmdReq'            : 'Ð—Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½ÐµÑ‚Ð¾ Ð¾Ñ‚ Ñ�ÑŠÑ€Ð²ÑŠÑ€Ð° Ð¸Ð·Ð¸Ñ�ÐºÐ²Ð° Ð¸Ð¼Ðµ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.',
			'errOpen'              : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ñ�Ð½Ðµ Ð½Ð° "$1".',
			'errNotFolder'         : 'ÐžÐ±ÐµÐºÑ‚ÑŠÑ‚ Ð½Ðµ Ðµ Ð¿Ð°Ð¿ÐºÐ°.',
			'errNotFile'           : 'ÐžÐ±ÐµÐºÑ‚ÑŠÑ‚ Ð½Ðµ Ðµ Ñ„Ð°Ð¹Ð».',
			'errRead'              : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ðµ Ð½Ð° "$1".',
			'errWrite'             : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐµÐ½ Ð·Ð°Ð¿Ð¸Ñ� Ð² "$1".',
			'errPerm'              : 'Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ñ‚ÐºÐ°Ð·Ð°Ð½Ð¾.',
			'errLocked'            : '"$1" Ðµ Ð·Ð°ÐºÐ»ÑŽÑ‡ÐµÐ½ Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½, Ð¼ÐµÑ�Ñ‚ÐµÐ½ Ð¸Ð»Ð¸ Ð¿Ñ€ÐµÐ¼Ð°Ñ…Ð²Ð°Ð½.',
			'errExists'            : 'Ð’ÐµÑ‡Ðµ Ñ�ÑŠÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐ²Ð° Ñ„Ð°Ð¹Ð» Ñ� Ð¸Ð¼Ðµ "$1"',
			'errInvName'           : 'Ð“Ñ€ÐµÑˆÐ½Ð¾ Ð¸Ð¼Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð».',
			'errInvDirname'        : 'Ð�ÐµÐ²Ð°Ð»Ð¸Ð´Ð½Ð¾ Ð¸Ð¼Ðµ Ð½Ð° Ð¿Ð°Ð¿ÐºÐ°.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° Ð½Ðµ Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ñ‚Ð°.',
			'errFileNotFound'      : 'Ð¤Ð°Ð¹Ð»ÑŠÑ‚ Ð½Ðµ Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ñ‚.',
			'errTrgFolderNotFound' : 'Ð¦ÐµÐ»ÐµÐ²Ð°Ñ‚Ð° Ð¿Ð°Ð¿ÐºÐ° "$1" Ð½Ðµ Ðµ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð°.',
			'errPopup'             : 'Ð‘Ñ€Ð°ÑƒÐ·ÑŠÑ€Ð° Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð° Ð¾Ñ‚Ð²Ð°Ñ€Ñ�Ð½ÐµÑ‚Ð¾ Ð½Ð° Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†. Ð—Ð° Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ð°, Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÑ‚Ðµ Ð¾Ñ‚Ð²Ð°Ñ€Ñ�Ð½ÐµÑ‚Ð¾ Ð² Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸Ñ‚Ðµ Ð½Ð° Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€Ð°.',
			'errMkdir'             : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ñ�ÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð¿Ð°Ð¿ÐºÐ° "$1".',
			'errMkfile'            : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ñ�ÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð» "$1".',
			'errRename'            : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ðµ Ð½Ð° "$1".',
			'errCopyFrom'          : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ð¾Ñ‚ Ñ‚Ð¾Ð¼ "$1" Ð½Ðµ Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾.',
			'errCopyTo'            : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ð² Ñ‚Ð¾Ð¼ "$1" Ð½Ðµ Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾.',
			'errMkOutLink'         : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑ… Ð¿Ñ€Ð¸ Ñ�ÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð²Ñ€ÑŠÐ·ÐºÐ° Ð¸Ð·Ð²ÑŠÐ½ Ð½Ð°Ñ‡Ð°Ð»Ð¾Ñ‚Ð¾ Ð½Ð° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð°.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Ð“Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸ ÐºÐ°Ñ‡Ð²Ð°Ð½Ðµ.',  // old name - errUploadCommon
			'errUploadFile'        : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ ÐºÐ°Ñ‡Ð²Ð°Ð½Ðµ Ð½Ð° "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ð�Ðµ Ñ�Ð° Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ð·Ð° ÐºÐ°Ñ‡Ð²Ð°Ð½Ðµ.',
			'errUploadTotalSize'   : 'Ð”Ð°Ð½Ð½Ð¸Ñ‚Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐ°Ð²Ð°Ñ‚ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»Ð½Ð¾ Ð´Ð¾Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¼Ð¸Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€.', // old name - errMaxSize
			'errUploadFileSize'    : 'Ð¤Ð°Ð¹Ð»ÑŠÑ‚ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐ°Ð²Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»Ð½Ð¾ Ð´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ð�ÐµÐ¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½ Ñ‚Ð¸Ð¿ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð°.',
			'errUploadTransfer'    : '"$1" Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸ Ð¿Ñ€ÐµÐ´Ð°Ð²Ð°Ð½Ðµ.',
			'errUploadTemp'        : 'Ð�ÐµÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ñ�ÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð²Ñ€ÐµÐ¼ÐµÐ½ÐµÐ½ Ñ„Ð°Ð¹Ð» Ð·Ð° ÐºÐ°Ñ‡Ð²Ð°Ð½Ðµ.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'ÐžÐ±ÐµÐºÑ‚ "$1" Ð²ÐµÑ‡Ðµ Ñ�ÑŠÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐ²Ð° Ð½Ð° Ñ‚Ð¾Ð²Ð° Ð¼Ñ�Ñ�Ñ‚Ð¾ Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½ Ð¾Ñ‚ Ð¾Ð±ÐµÐºÑ‚ Ð¾Ñ‚ Ð´Ñ€ÑƒÐ³ Ñ‚Ð¸Ð¿.', // new
			'errReplace'           : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð·Ð°Ð¼ÐµÐ½Ð¸ "$1".',
			'errSave'              : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð·Ð°Ð¿Ð¸ÑˆÐµ "$1".',
			'errCopy'              : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ ÐºÐ¾Ð¿Ð¸Ñ€Ð° "$1".',
			'errMove'              : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸ "$1".',
			'errCopyInItself'      : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ ÐºÐ¾Ð¿Ð¸Ñ€Ð° "$1" Ð²ÑŠÑ€Ñ…Ñƒ Ñ�Ð°Ð¼Ð¸Ñ� Ð½ÐµÐ³Ð¾.',
			'errRm'                : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ñ…Ð½Ðµ "$1".',
			'errTrash'             : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸ Ð² ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ñ…Ð½Ðµ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ� Ñ„Ð°Ð¹Ð»(Ð¾Ð²Ðµ).',
			'errExtract'           : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¸Ð·Ð²Ð»ÐµÐºÐ°Ñ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ Ð¾Ñ‚ "$1".',
			'errArchive'           : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ñ�ÑŠÐ·Ð´Ð°Ð´Ðµ Ð°Ñ€Ñ…Ð¸Ð².',
			'errArcType'           : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½ Ñ‚Ð¸Ð¿ Ð½Ð° Ð°Ñ€Ñ…Ð¸Ð²Ð°.',
			'errNoArchive'         : 'Ð¤Ð°Ð¹Ð»ÑŠÑ‚ Ð½Ðµ Ðµ Ð°Ñ€Ñ…Ð¸Ð² Ð¸Ð»Ð¸ Ðµ Ð¾Ñ‚ Ð½ÐµÐ¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½ Ñ‚Ð¸Ð¿.',
			'errCmdNoSupport'      : 'Ð¡ÑŠÑ€Ð²ÑŠÑ€Ð° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð° Ñ‚Ð°Ð·Ð¸ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.',
			'errReplByChild'       : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° â€œ$1â€� Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð° Ð¾Ñ‚ Ñ�ÑŠÐ´ÑŠÑ€Ð¶Ð°Ñ‰ Ñ�Ðµ Ð² Ð½ÐµÑ� ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚.',
			'errArcSymlinks'       : 'ÐžÑ‚ Ñ�ÑŠÐ¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ� Ð·Ð° Ñ�Ð¸Ð³ÑƒÑ€Ð½Ð¾Ñ�Ñ‚ Ð½Ñ�Ð¼Ð° Ð´Ð° Ð±ÑŠÐ´Ð°Ñ‚ Ñ€Ð°Ð·Ð¾Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ñ�ÑŠÐ´ÑŠÑ€Ð¶Ð°Ñ‰Ð¸ symlinks.', // edited 24.06.2012
			'errArcMaxSize'        : 'Ð�Ñ€Ñ…Ð¸Ð²Ð½Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐ°Ð²Ð°Ñ‚ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»Ð½Ð¾ Ð´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€.',
			'errResize'            : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¾Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¸ "$1".',
			'errResizeDegree'      : 'Ð�ÐµÐ²Ð°Ð»Ð¸Ð´ÐµÐ½ Ð³Ñ€Ð°Ð´ÑƒÑ� Ð·Ð° Ñ€Ð¾Ñ‚Ð°Ñ†Ð¸Ñ�.',  // added 7.3.2013
			'errResizeRotate'      : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ Ð½Ðµ Ðµ Ñ€Ð¾Ñ‚Ð¸Ñ€Ð°Ð½Ð¾.',  // added 7.3.2013
			'errResizeSize'        : 'Ð�ÐµÐ²Ð°Ð»Ð¸Ð´ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð½Ð° Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ð Ð°Ð·Ð¼ÐµÑ€ÑŠÑ‚ Ð½Ð° Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ Ð½Ðµ Ðµ Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÐµÐ½.',  // added 7.3.2013
			'errUsupportType'      : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½ Ñ‚Ð¸Ð¿ Ð½Ð° Ñ„Ð°Ð¹Ð».',
			'errNotUTF8Content'    : 'Ð¤Ð°Ð¹Ð» "$1" Ð½Ðµ Ðµ Ð² UTF-8 Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½.',  // added 9.11.2011
			'errNetMount'          : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð° "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ð�ÐµÐ¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð».',     // added 17.04.2012
			'errNetMountFailed'    : 'ÐœÐ¾Ð½Ñ‚Ð¸Ñ€Ð°Ð½ÐµÑ‚Ð¾ Ð½Ðµ Ðµ ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ð¥Ð¾Ñ�Ñ‚ Ñ�Ðµ Ð¸Ð·Ð¸Ñ�ÐºÐ²Ð°.', // added 18.04.2012
			'errSessionExpires'    : 'Ð¡ÐµÑ�Ð¸Ñ�Ñ‚Ð° Ð²Ð¸ Ð¸Ð·Ñ‚ÐµÑ‡Ðµ Ð¿Ð¾Ñ€Ð°Ð´Ð¸ Ð»Ð¸Ð¿Ñ�Ð° Ð½Ð° Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ�Ñ‚.',
			'errCreatingTempDir'   : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ñ�ÑŠÐ·Ð´Ð°Ð´Ðµ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ�: "$1"',
			'errFtpDownloadFile'   : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¸Ð·Ñ‚ÐµÐ³Ð»Ð¸ Ñ„Ð°Ð¹Ð» Ð¾Ñ‚ FTP: "$1"',
			'errFtpUploadFile'     : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ ÐºÐ°Ñ‡Ð¸ Ñ„Ð°Ð¹Ð» Ð½Ð° FTP: "$1"',
			'errFtpMkdir'          : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ñ�ÑŠÐ·Ð´Ð°Ð´Ðµ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ� Ð½Ð° FTP: "$1"',
			'errArchiveExec'       : 'Ð“Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ: "$1"',
			'errExtractExec'       : 'Ð“Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸ Ñ€Ð°Ð·Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ: "$1"',
			'errNetUnMount'        : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð°', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ð�Ðµ Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ Ð´Ð¾ UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'ÐžÐ¿Ð¸Ñ‚Ð°Ð¹Ñ‚Ðµ Google Chrome, Ð°ÐºÐ¾ Ð¸Ñ�ÐºÐ°Ñ‚Ðµ Ð´Ð° ÐºÐ°Ñ‡Ð¸Ñ‚Ðµ Ð¿Ð°Ð¿ÐºÐ°.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Ð’Ñ€ÐµÐ¼ÐµÑ‚Ð¾ Ð¸Ð·Ñ‚ÐµÑ‡Ðµ Ð¿Ñ€Ð¸ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾ Ð½Ð° "$1". Ð ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚ÑŠÑ‚ Ð¾Ñ‚ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾ Ðµ Ñ‡Ð°Ñ�Ñ‚Ð¸Ñ‡ÐµÐ½.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ð�ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð¸Ñ€Ð°Ð½Ðµ.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'ÐœÐ°ÐºÑ�Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ�Ñ‚ Ð±Ñ€Ð¾Ð¹ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ðµ $ 1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð²ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸ Ð¾Ñ‚ ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾. Ð�Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ Ð·Ð° Ð²ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ�Ð²Ð°Ð½Ðµ.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Ð�Ðµ Ðµ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ Ð·Ð° Ñ‚Ð¾Ð·Ð¸ Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð».', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ð’ÑŠÐ·Ð½Ð¸ÐºÐ½Ð° Ð³Ñ€ÐµÑˆÐºÐ° Ð½Ð° Ñ�ÑŠÑ€Ð²ÑŠÑ€Ð°.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° "$1" Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ðµ Ð¸Ð·Ð¿Ñ€Ð°Ð·Ð½Ð¸.', // from v2.1.25 added 22.6.2017

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ð¡ÑŠÐ·Ð´Ð°Ð¹ Ð°Ñ€Ñ…Ð¸Ð²',
			'cmdback'      : 'Ð�Ð°Ð·Ð°Ð´',
			'cmdcopy'      : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð°Ð¹',
			'cmdcut'       : 'Ð˜Ð·Ñ€ÐµÐ¶Ð¸',
			'cmddownload'  : 'Ð¡Ð²Ð°Ð»Ð¸',
			'cmdduplicate' : 'Ð”ÑƒÐ±Ð»Ð¸Ñ€Ð°Ð¹',
			'cmdedit'      : 'Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð¹ Ñ„Ð°Ð¹Ð»',
			'cmdextract'   : 'Ð˜Ð·Ð²Ð»ÐµÑ‡Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ Ð¾Ñ‚ Ð°Ñ€Ñ…Ð¸Ð²Ð°',
			'cmdforward'   : 'Ð�Ð°Ð¿Ñ€ÐµÐ´',
			'cmdgetfile'   : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'cmdhelp'      : 'Ð—Ð° Ñ‚Ð°Ð·Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°',
			'cmdhome'      : 'Ð�Ð°Ñ‡Ð°Ð»Ð¾',
			'cmdinfo'      : 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ�',
			'cmdmkdir'     : 'Ð�Ð¾Ð²Ð° Ð¿Ð°Ð¿ÐºÐ°',
			'cmdmkdirin'   : 'Ð’ Ð½Ð¾Ð²Ð° Ð¿Ð°Ð¿ÐºÐ°', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ð�Ð¾Ð² Ñ„Ð°Ð¹Ð»',
			'cmdopen'      : 'ÐžÑ‚Ð²Ð¾Ñ€Ð¸',
			'cmdpaste'     : 'Ð’Ð¼ÑŠÐºÐ½Ð¸',
			'cmdquicklook' : 'ÐŸÑ€ÐµÐ³Ð»ÐµÐ´',
			'cmdreload'    : 'ÐŸÑ€ÐµÐ·Ð°Ñ€ÐµÐ´Ð¸',
			'cmdrename'    : 'ÐŸÑ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð¹',
			'cmdrm'        : 'Ð˜Ð·Ñ‚Ñ€Ð¸Ð¹',
			'cmdtrash'     : 'Ð’ ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ð’ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ð�Ð°Ð¼ÐµÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'cmdup'        : 'Ð•Ð´Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ� Ð½Ð°Ð³Ð¾Ñ€Ðµ',
			'cmdupload'    : 'ÐšÐ°Ñ‡Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'cmdview'      : 'Ð’Ð¸Ð¶',
			'cmdresize'    : 'ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð¸ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'cmdsort'      : 'ÐŸÐ¾Ð´Ñ€ÐµÐ´Ð¸',
			'cmdnetmount'  : 'ÐœÐ¾Ð½Ñ‚Ð¸Ñ€Ð°Ð¹ Ð¼Ñ€ÐµÐ¶Ð¾Ð² Ñ€ÐµÑ�ÑƒÑ€Ñ�', // added 18.04.2012
			'cmdnetunmount': 'Ð Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð°Ð¹', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'ÐšÑŠÐ¼ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸', // added 28.12.2014
			'cmdchmod'     : 'ÐŸÑ€Ð¾Ð¼Ñ�Ð½Ð° Ð½Ð° Ð²Ð¸Ð´', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'ÐžÑ‚Ð²Ð¾Ñ€Ð¸ Ð¿Ð°Ð¿ÐºÐ°', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ð�ÑƒÐ»Ð¸Ñ€Ð°Ð¹ ÑˆÐ¸Ñ€Ð¸Ð½Ð°Ñ‚Ð° Ð½Ð° ÐºÐ¾Ð»Ð¾Ð½Ð°Ñ‚Ð°', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Ð¦Ñ�Ð» ÐµÐºÑ€Ð°Ð½', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ÐŸÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ð˜Ð·Ð¿Ñ€Ð°Ð·Ð½Ð¸ Ð¿Ð°Ð¿ÐºÐ°Ñ‚Ð°', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ÐžÑ‚Ð¼ÐµÐ½Ð¸', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'ÐŸÑ€ÐµÐ¿Ñ€Ð°Ð²Ð¸', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð²Ñ�Ð¸Ñ‡ÐºÐ¾', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð½Ð¸Ñ‰Ð¾', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'ÐžÐ±ÑŠÑ€Ð½Ð¸ Ñ�ÐµÐ»ÐµÐºÑ†Ð¸Ñ�Ñ‚Ð°', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'ÐžÑ‚Ð²Ð¾Ñ€Ð¸ Ð² Ð½Ð¾Ð² Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ð¡ÐºÑ€Ð¸Ð¹ (Ð»Ð¸Ñ‡Ð½Ð¾)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ð—Ð°Ñ‚Ð²Ð¾Ñ€Ð¸',
			'btnSave'   : 'Ð—Ð°Ð¿Ð¸ÑˆÐ¸',
			'btnRm'     : 'ÐŸÑ€ÐµÐ¼Ð°Ñ…Ð½Ð¸',
			'btnApply'  : 'ÐŸÑ€Ð¸Ð»Ð¾Ð¶Ð¸',
			'btnCancel' : 'ÐžÑ‚ÐºÐ°Ð·',
			'btnNo'     : 'Ð�Ðµ',
			'btnYes'    : 'Ð”Ð°',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ÐœÐ¾Ð½Ñ‚Ð¸Ñ€Ð°Ð¹',  // added 18.04.2012
			'btnApprove': 'ÐžÑ‚Ð¸Ð´Ð¸ Ð½Ð° $1 Ð¸ Ð¾Ð´Ð¾Ð±Ñ€Ð¸', // from v2.1 added 26.04.2012
			'btnUnmount': 'Ð Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð°Ð¹', // from v2.1 added 30.04.2012
			'btnConv'   : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð°Ð¹', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ð¢ÑƒÐº',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ð ÐµÑ�ÑƒÑ€Ñ�',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ð’Ñ�Ð¸Ñ‡ÐºÐ¸',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Ñ‚Ð¸Ð¿', // from v2.1 added 22.5.2015
			'btnFileName':'Ð˜Ð¼Ðµ',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Ð—Ð°Ð¿Ð°Ð·Ð¸ Ð¸ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð¸', // from v2.1 added 12.6.2015
			'btnBackup' : 'Ð�Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð¹', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ÐŸÑ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð¹',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ÐŸÑ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð¹(Ð’Ñ�Ð¸Ñ‡ÐºÐ¸)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ÐŸÑ€ÐµÐ´ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Ð¡Ð»ÐµÐ´ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Ð—Ð°Ð¿Ð°Ð·Ð¸ ÐºÐ°Ñ‚Ð¾', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'ÐžÑ‚Ð²Ð°Ñ€Ñ�Ð½Ðµ Ð½Ð° Ð¿Ð°Ð¿ÐºÐ°',
			'ntffile'     : 'ÐžÑ‚Ð²Ð°Ñ€Ñ�Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»',
			'ntfreload'   : 'ÐŸÑ€ÐµÐ·Ð°Ñ€ÐµÐ¶Ð´Ð°Ð½Ðµ Ñ�ÑŠÐ´ÑŠÑ€Ð¶Ð°Ð½Ð¸ÐµÑ‚Ð¾ Ð½Ð° Ð¿Ð°Ð¿ÐºÐ°',
			'ntfmkdir'    : 'Ð¡ÑŠÐ·Ð´Ð°Ð²Ð° Ñ�Ðµ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ�',
			'ntfmkfile'   : 'Ð¡ÑŠÐ·Ð´Ð°Ð²Ð° Ñ�Ðµ Ñ„Ð°Ð¹Ð»',
			'ntfrm'       : 'Ð˜Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfcopy'     : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfmove'     : 'ÐŸÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfprepare'  : 'ÐŸÐ¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²ÐºÐ° Ð·Ð° ÐºÐ¾Ð¿Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfrename'   : 'ÐŸÑ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfupload'   : 'ÐšÐ°Ñ‡Ð²Ð°Ñ‚ Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfdownload' : 'Ð¡Ð²Ð°Ð»Ñ�Ñ‚ Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfsave'     : 'Ð—Ð°Ð¿Ð¸Ñ� Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfarchive'  : 'Ð¡ÑŠÐ·Ð´Ð°Ð²Ð° Ñ�Ðµ Ð°Ñ€Ñ…Ð¸Ð²',
			'ntfextract'  : 'Ð˜Ð·Ð²Ð»Ð¸Ñ‡Ð°Ñ‚ Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ Ð¾Ñ‚ Ð°Ñ€Ñ…Ð¸Ð²',
			'ntfsearch'   : 'Ð¢ÑŠÑ€Ñ�Ñ�Ñ‚ Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'ntfresize'   : 'ÐŸÑ€ÐµÐ¾Ñ€Ð°Ð·Ð¼ÐµÑ€Ñ�Ð²Ð°Ñ‚ Ñ�Ðµ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�',
			'ntfsmth'     : 'Ð—Ð°ÐµÑ‚ Ñ�ÑŠÐ¼ >_<',
			'ntfloadimg'  : 'Ð—Ð°Ñ€ÐµÐ¶Ð´Ð°Ñ‚ Ñ�Ðµ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�',
			'ntfnetmount' : 'ÐœÐ¾Ð½Ñ‚Ð¸Ñ€Ð° Ñ�Ðµ Ð¼Ñ€ÐµÐ¶Ð¾Ð² Ñ€ÐµÑ�ÑƒÑ€Ñ�', // added 18.04.2012
			'ntfnetunmount': 'Ð Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð° Ñ�Ðµ Ð¼Ñ€ÐµÐ¶Ð¾Ð² Ñ€ÐµÑ�ÑƒÑ€Ñ�', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Ð˜Ð·Ð²Ð»Ð¸Ñ‡Ð°Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð½Ð° Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ', // added 20.05.2013
			'ntfreaddir'  : 'Ð˜Ð·Ð²Ð»Ð¸Ñ‡Ð° Ñ�Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð·Ð° Ð¿Ð°Ð¿ÐºÐ°', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Ð’Ð·Ð¸Ð¼Ð° Ñ�Ðµ URL Ð¾Ñ‚ Ð²Ñ€ÑŠÐ·ÐºÐ°', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ÐŸÑ€Ð¾Ð¼ÐµÐ½Ñ� Ñ�Ðµ Ð²Ð¸Ð´Ð° Ð½Ð° Ñ„Ð°Ð¹Ð»', // from v2.1 added 20.6.2015
			'ntfpreupload': 'ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð½Ð° Ð¸Ð¼ÐµÑ‚Ð¾ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð° Ð·Ð° ÐºÐ°Ñ‡Ð²Ð°Ð½Ðµ', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ð¡ÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð» Ð·Ð° Ð¸Ð·Ñ‚ÐµÐ³Ð»Ñ�Ð½Ðµ', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ÐŸÐ¾Ð»ÑƒÑ‡Ð°Ð²Ð° Ñ�Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð·Ð° Ð¿ÑŠÑ‚Ñ�', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð½Ð° ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ� Ñ„Ð°Ð¹Ð»', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ÐŸÑ€ÐµÑ…Ð²ÑŠÑ€Ð»Ñ�Ñ‚ Ñ�Ðµ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ Ð² ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ð˜Ð·Ð²ÑŠÑ€ÑˆÐ²Ð° Ñ�Ðµ Ð²ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ�Ð²Ð°Ð½Ðµ Ð¾Ñ‚ ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð½Ð° Ñ†ÐµÐ»ÐµÐ²Ð°Ñ‚Ð° Ð¿Ð°Ð¿ÐºÐ°', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ÐžÑ‚Ð¼Ñ�Ð½Ð° Ð½Ð° Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð°Ñ‚Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ�', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ð’ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ�Ð²Ð°Ð½Ðµ Ð½Ð° Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð´Ð½Ð¸Ñ‚Ðµ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð¸', // from v2.1.27 added 31.07.2017

			/*********************************** volumes *********************************/
			'volume_Trash' : 'ÐšÐ¾ÑˆÑ‡Ðµ', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°',
			'Today'       : 'Ð´Ð½ÐµÑ�',
			'Yesterday'   : 'Ð²Ñ‡ÐµÑ€Ð°',
			'msJan'       : 'Ñ�Ð½Ñƒ',
			'msFeb'       : 'Ñ„ÐµÐ²',
			'msMar'       : 'Ð¼Ð°Ñ€',
			'msApr'       : 'Ð°Ð¿Ñ€',
			'msMay'       : 'Ð¼Ð°Ð¹',
			'msJun'       : 'ÑŽÐ½Ð¸',
			'msJul'       : 'ÑŽÐ»Ð¸',
			'msAug'       : 'Ð°Ð²Ð³',
			'msSep'       : 'Ñ�ÐµÐ¿',
			'msOct'       : 'Ð¾ÐºÑ‚',
			'msNov'       : 'Ð½Ð¾Ðµ',
			'msDec'       : 'Ð´ÐµÐº',
			'January'     : 'Ñ�Ð½ÑƒÐ°Ñ€Ð¸',
			'February'    : 'Ñ„ÐµÐ²Ñ€ÑƒÐ°Ñ€Ð¸',
			'March'       : 'Ð¼Ð°Ñ€Ñ‚',
			'April'       : 'Ð°Ð¿Ñ€Ð¸Ð»',
			'May'         : 'Ð¼Ð°Ð¹',
			'June'        : 'ÑŽÐ½Ð¸',
			'July'        : 'ÑŽÐ»Ð¸',
			'August'      : 'Ð°Ð²Ð³ÑƒÑ�Ñ‚',
			'September'   : 'Ñ�ÐµÐ¿Ñ‚ÐµÐ¼Ð²Ñ€Ð¸',
			'October'     : 'Ð¾ÐºÑ‚Ð¾Ð¼Ð²Ñ€Ð¸',
			'November'    : 'Ð½Ð¾ÐµÐ¼Ð²Ñ€Ð¸',
			'December'    : 'Ð´ÐµÐºÐµÐ¼Ð²Ñ€Ð¸',
			'Sunday'      : 'Ð½ÐµÐ´ÐµÐ»Ñ�',
			'Monday'      : 'Ð¿Ð¾Ð½ÐµÐ´ÐµÐ»Ð½Ð¸Ðº',
			'Tuesday'     : 'Ð²Ñ‚Ð¾Ñ€Ð½Ð¸Ðº',
			'Wednesday'   : 'Ñ�Ñ€Ñ�Ð´Ð°',
			'Thursday'    : 'Ñ‡ÐµÑ‚Ð²ÑŠÑ€Ñ‚ÑŠÐº',
			'Friday'      : 'Ð¿ÐµÑ‚ÑŠÐº',
			'Saturday'    : 'Ñ�ÑŠÐ±Ð¾Ñ‚Ð°',
			'Sun'         : 'Ð½ÐµÐ´',
			'Mon'         : 'Ð¿Ð¾Ð½',
			'Tue'         : 'Ð²Ñ‚Ð¾',
			'Wed'         : 'Ñ�Ñ€Ñ�',
			'Thu'         : 'Ñ‡ÐµÑ‚',
			'Fri'         : 'Ð¿ÐµÑ‚',
			'Sat'         : 'Ñ�ÑŠÐ±',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ð¿Ð¾ Ð¸Ð¼Ðµ',
			'sortkind'          : 'Ð¿Ð¾ Ð²Ð¸Ð´',
			'sortsize'          : 'Ð¿Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€',
			'sortdate'          : 'Ð¿Ð¾ Ð´Ð°Ñ‚Ð°',
			'sortFoldersFirst'  : 'ÐŸÐ°Ð¿ÐºÐ¸Ñ‚Ðµ Ð¿ÑŠÑ€Ð²Ð¸',
			'sortperm'          : 'Ð¿Ð¾ Ð¿Ñ€Ð°Ð²Ð°', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Ð¿Ð¾ Ð²Ð¸Ð´',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Ð¿Ð¾ Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð¸Ðº',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Ð¿Ð¾ Ð³Ñ€ÑƒÐ¿Ð°',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ð¡ÑŠÑ‰Ð¾ Ð´ÑŠÑ€Ð²Ð¾Ð²Ð¸Ð´ÐµÐ½ Ð¸Ð·Ð³Ð»ÐµÐ´',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'Ð˜Ð·Ð¸Ñ�ÐºÐ²Ð° Ñ�Ðµ Ð¿Ð¾Ð´Ñ‚Ð²ÑŠÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ',
			'confirmRm'       : 'Ð¡Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ð»Ð¸ Ñ�Ñ‚Ðµ, Ñ‡Ðµ Ð¶ÐµÐ»Ð°ÐµÑ‚Ðµ Ð´Ð° Ð¿Ñ€ÐµÐ¼Ð°Ñ…Ð½ÐµÑ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ?<br/>Ð¢Ð¾Ð²Ð° Ð´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ðµ Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ‚Ð¸Ð¼Ð¾!',
			'confirmRepl'     : 'Ð”Ð° Ð·Ð°Ð¼ÐµÐ½Ñ� Ð»Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸Ñ� Ñ„Ð°Ð¹Ð» Ñ� Ð½Ð¾Ð²Ð¸Ñ�?',
			'confirmRest'     : 'Ð”Ð° Ñ�Ðµ Ð·Ð°Ð¼ÐµÐ½Ð¸ Ð»Ð¸ Ñ�ÑŠÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐ²Ð°Ñ‰Ð°Ñ‚Ð° Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ� Ñ� Ñ‚Ð°Ð·Ð¸ Ð² ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ð�Ðµ Ðµ Ð² UTF-8 Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚<br/>ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð°Ð½Ðµ Ð´Ð¾ UTF-8?<br/>Ð¡ÑŠÐ´ÑŠÑ€Ð¶Ð°Ð½Ð¸ÐµÑ‚Ð¾ Ñ�Ñ‚Ð°Ð²Ð° Ð² UTF-8 Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ñ€Ð¸ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ Ñ�Ð»ÐµÐ´ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ�Ð¸Ñ�Ñ‚Ð°.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ÐšÐ¾Ð´Ð¸Ñ€Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° Ñ‚Ð¾Ð·Ð¸ Ñ„Ð°Ð¹Ð» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ñ‚Ð¾. Ð�ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ðµ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð´Ð° Ñ�Ðµ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐ²Ð° Ð² UTF-8 Ð·Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ðµ. <br/> ÐœÐ¾Ð»Ñ�, Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ ÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ‚Ð¾Ð·Ð¸ Ñ„Ð°Ð¹Ð».', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ð˜Ð¼Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²ÐµÐ½Ð¸ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸.<br/>Ð¢Ðµ Ñ‰Ðµ Ð±ÑŠÐ´Ð°Ñ‚ Ð·Ð°Ð³ÑƒÐ±ÐµÐ½Ð¸, Ð°ÐºÐ¾ Ð½Ðµ Ð·Ð°Ð¿Ð¸ÑˆÐµÑ‚Ðµ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸Ñ‚Ðµ.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ð�Ð°Ð¸Ñ�Ñ‚Ð¸Ð½Ð° Ð»Ð¸ Ð¸Ñ�ÐºÐ°Ñ‚Ðµ Ð´Ð° Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ Ð² ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾ Ð·Ð° Ð±Ð¾ÐºÐ»ÑƒÐº?', //from v2.1.24 added 29.4.2017
			'apllyAll'        : 'ÐŸÑ€Ð¸Ð»Ð¾Ð¶Ð¸ Ð·Ð° Ð²Ñ�Ð¸Ñ‡ÐºÐ¸',
			'name'            : 'Ð˜Ð¼Ðµ',
			'size'            : 'Ð Ð°Ð·Ð¼ÐµÑ€',
			'perms'           : 'ÐŸÑ€Ð°Ð²Ð°',
			'modify'          : 'ÐŸÑ€Ð¾Ð¼ÐµÐ½ÐµÐ½Ð¾',
			'kind'            : 'Ð’Ð¸Ð´',
			'read'            : 'Ñ‡ÐµÑ‚ÐµÐ½Ðµ',
			'write'           : 'Ð·Ð°Ð¿Ð¸Ñ�',
			'noaccess'        : 'Ð±ÐµÐ· Ð´Ð¾Ñ�Ñ‚ÑŠÐ¿',
			'and'             : 'Ð¸',
			'unknown'         : 'Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚',
			'selectall'       : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð²Ñ�Ð¸Ñ‡ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'selectfiles'     : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ñ„Ð°Ð¹Ð»(Ð¾Ð²Ðµ)',
			'selectffile'     : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð¿ÑŠÑ€Ð²Ð¸Ñ�Ñ‚ Ñ„Ð°Ð¹Ð»',
			'selectlfile'     : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¸Ñ�Ñ‚ Ñ„Ð°Ð¹Ð»',
			'viewlist'        : 'Ð˜Ð·Ð³Ð»ÐµÐ´ Ñ�Ð¿Ð¸Ñ�ÑŠÐº',
			'viewicons'       : 'Ð˜Ð·Ð³Ð»ÐµÐ´ Ð¸ÐºÐ¾Ð½Ð¸',
			'viewSmall'       : 'ÐœÐ°Ð»ÐºÐ¸ Ð¸ÐºÐ¾Ð½Ð¸', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ð¡Ñ€ÐµÐ´Ð½Ð¸ Ð¸ÐºÐ¾Ð½Ð¸', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ð“Ð¾Ð»ÐµÐ¼Ð¸ Ð¸ÐºÐ¾Ð½Ð¸', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'ÐœÐ½Ð¾Ð³Ð¾ Ð³Ð¾Ð»ÐµÐ¼Ð¸ Ð¸ÐºÐ¾Ð½Ð¸', // from v2.1.39 added 22.5.2018
			'places'          : 'Ð˜Ð·Ð±Ñ€Ð°Ð½Ð¸',
			'calc'            : 'Ð˜Ð·Ñ‡Ð¸Ñ�Ð»Ð¸',
			'path'            : 'ÐŸÑŠÑ‚',
			'aliasfor'        : 'Ð’Ñ€ÑŠÐ·ÐºÐ° ÐºÑŠÐ¼',
			'locked'          : 'Ð—Ð°ÐºÐ»ÑŽÑ‡ÐµÐ½',
			'dim'             : 'Ð Ð°Ð·Ð¼ÐµÑ€Ð¸',
			'files'           : 'Ð¤Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'folders'         : 'ÐŸÐ°Ð¿ÐºÐ¸',
			'items'           : 'ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ð¸',
			'yes'             : 'Ð´Ð°',
			'no'              : 'Ð½Ðµ',
			'link'            : 'Ð’Ñ€ÑŠÐ·ÐºÐ°',
			'searcresult'     : 'Ð ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð¸ Ð¾Ñ‚ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾',
			'selected'        : 'Ð˜Ð·Ð±Ñ€Ð°Ð½Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸',
			'about'           : 'Ð—Ð°',
			'shortcuts'       : 'Ð‘ÑŠÑ€Ð·Ð¸ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸',
			'help'            : 'ÐŸÐ¾Ð¼Ð¾Ñ‰',
			'webfm'           : 'Ð¤Ð°Ð¹Ð»Ð¾Ð² Ð¼ÐµÐ½Ð°Ð¶ÐµÑ€ Ð·Ð° Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚',
			'ver'             : 'Ð’ÐµÑ€Ñ�Ð¸Ñ�',
			'protocolver'     : 'Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð½Ð° Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð°',
			'homepage'        : 'Ð�Ð°Ñ‡Ð°Ð»Ð¾',
			'docs'            : 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ�',
			'github'          : 'Ð Ð°Ð·ÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ðµ Ð² Github',
			'twitter'         : 'ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð²Ð°Ð¹Ñ‚Ðµ Ð½Ð¸ Ð² Twitter',
			'facebook'        : 'ÐŸÑ€Ð¸Ñ�ÑŠÐµÐ´Ð¸Ð½ÐµÑ‚Ðµ Ñ�Ðµ ÐºÑŠÐ¼ Ð½Ð°Ñ� Ð²ÑŠÐ² Facebook',
			'team'            : 'Ð•ÐºÐ¸Ð¿',
			'chiefdev'        : 'Ð“Ð»Ð°Ð²ÐµÐ½ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº',
			'developer'       : 'Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº',
			'contributor'     : 'Ñ�ÑŠÑ‚Ñ€ÑƒÐ´Ð½Ð¸Ðº',
			'maintainer'      : 'Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ°',
			'translator'      : 'Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð°Ñ‡',
			'icons'           : 'Ð˜ÐºÐ¾Ð½Ð¸',
			'dontforget'      : 'Ð¸ Ð½Ðµ Ð·Ð°Ð±Ñ€Ð°Ð²Ñ�Ð¹Ñ‚Ðµ Ð´Ð° Ñ�Ð¸ Ð²Ð·ÐµÐ¼ÐµÑ‚Ðµ ÐºÑŠÑ€Ð¿Ð°Ñ‚Ð°',
			'shortcutsof'     : 'ÐŸÑ€ÐµÐºÐ¸Ñ‚Ðµ Ð¿ÑŠÑ‚Ð¸Ñ‰Ð° Ñ�Ð° Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸',
			'dropFiles'       : 'ÐŸÑƒÑ�Ð½ÐµÑ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ Ñ‚ÑƒÐº',
			'or'              : 'Ð¸Ð»Ð¸',
			'selectForUpload' : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'moveFiles'       : 'ÐŸÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'copyFiles'       : 'ÐšÐ¾Ð¿Ð¸Ñ€Ð°Ð¹ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
			'restoreFiles'    : 'Ð’ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ÐŸÑ€ÐµÐ¼Ð°Ñ…Ð½Ð¸ Ð¾Ñ‚ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸',
			'aspectRatio'     : 'ÐžÑ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ðµ',
			'scale'           : 'ÐœÐ°Ñ‰Ð°Ð±',
			'width'           : 'Ð¨Ð¸Ñ€Ð¸Ð½Ð°',
			'height'          : 'Ð’Ð¸Ñ�Ð¾Ñ‡Ð¸Ð½Ð°',
			'resize'          : 'ÐŸÑ€ÐµÐ¾Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¸',
			'crop'            : 'ÐžÑ‚Ñ€ÐµÐ¶Ð¸',
			'rotate'          : 'Ð Ð¾Ñ‚Ð¸Ñ€Ð°Ð¹',
			'rotate-cw'       : 'Ð Ð¾Ñ‚Ð¸Ñ€Ð°Ð¹ 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð° CW',
			'rotate-ccw'      : 'Ð Ð¾Ñ‚Ð¸Ñ€Ð°Ð¹ 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð° CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'ÐœÐ¾Ð½Ñ‚Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ð¼Ñ€ÐµÐ¶Ð¾Ð² Ñ€ÐµÑ�ÑƒÑ€Ñ�', // added 18.04.2012
			'protocol'            : 'ÐŸÑ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»', // added 18.04.2012
			'host'                : 'Ð¥Ð¾Ñ�Ñ‚', // added 18.04.2012
			'port'                : 'ÐŸÐ¾Ñ€Ñ‚', // added 18.04.2012
			'user'                : 'ÐŸÐ¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»', // added 18.04.2012
			'pass'                : 'ÐŸÐ°Ñ€Ð¾Ð»Ð°', // added 18.04.2012
			'confirmUnmount'      : 'Ð©Ðµ Ñ€Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð°Ñ‚Ðµ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ÐŸÑƒÑ�Ð½Ð¸ Ð¸Ð»Ð¸ Ð²Ð¼ÑŠÐºÐ½Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ð¾Ñ‚ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Ð¢ÑƒÐº Ð¿Ð¾Ñ�Ð½ÐµÑ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐµÑ‚Ðµ, URL Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ‚Ðµ Ð¸Ð»Ð¸ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�Ñ‚Ð° Ð¾Ñ‚ ÐºÐ»Ð¸Ð¿Ð±Ð¾Ñ€Ð´Ð°', // from v2.1 added 07.04.2014
			'encoding'        : 'ÐšÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°', // from v2.1 added 19.12.2014
			'locale'          : 'Ð›Ð¾ÐºÐ°Ð»Ð¸',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ð¦ÐµÐ»: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Ð¢ÑŠÑ€Ñ�ÐµÐ½Ðµ Ð¿Ð¾ Ð²ÑŠÐ²ÐµÐ´ÐµÐ½ MIME Ñ‚Ð¸Ð¿', // from v2.1 added 22.5.2015
			'owner'           : 'Ð¡Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð¸Ðº', // from v2.1 added 20.6.2015
			'group'           : 'Ð“Ñ€ÑƒÐ¿Ð°', // from v2.1 added 20.6.2015
			'other'           : 'Ð”Ñ€ÑƒÐ³Ð¸', // from v2.1 added 20.6.2015
			'execute'         : 'Ð˜Ð·Ð¿ÑŠÐ»Ð½Ñ�Ð²Ð°', // from v2.1 added 20.6.2015
			'perm'            : 'Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ', // from v2.1 added 20.6.2015
			'mode'            : 'Ð’Ð¸Ð´', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°\\A Ð’Ð»Ð°Ñ‡Ð¸ Ð¸ Ð¿ÑƒÑ�Ð½Ð¸ Ð·Ð° Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ÐŸÐ°Ð¿ÐºÐ°Ñ‚Ð° Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°\\A Ð”Ð¾ÐºÐ¾Ñ�Ð½ÐµÑ‚Ðµ Ð´ÑŠÐ»Ð³Ð¾ Ð·Ð° Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚Ðµ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸', // from v2.1.6 added 30.12.2015
			'quality'         : 'ÐšÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð¾', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ Ñ�Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð¸Ñ€Ð°Ð½Ðµ',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ÐŸÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸ Ð½Ð°Ð³Ð¾Ñ€Ðµ',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Ð’Ð·ÐµÐ¼Ð¸ URL Ð²Ñ€ÑŠÐ·ÐºÐ°', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ð˜Ð·Ð±Ñ€Ð°Ð½Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ÐŸÐ°Ð¿ÐºÐ° ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'ÐŸÐ¾Ð·Ð²Ð¾Ð»Ð¸ Ð¾Ñ„Ð»Ð°Ð¹Ð½ Ð´Ð¾Ñ�Ñ‚ÑŠÐ¿', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Ð—Ð° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ ÑƒÐ´Ð¾Ñ�Ñ‚Ð¾Ð²ÐµÑ€Ñ�Ð²Ð°Ð½Ðµ', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ð¡ÐµÐ³Ð° Ñ�Ðµ Ð·Ð°Ñ€ÐµÐ¶Ð´Ð°...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'ÐžÑ‚Ð²Ð°Ñ€Ñ�Ð½Ðµ Ð½Ð° Ð½Ñ�ÐºÐ¾Ð»ÐºÐ¾ Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'ÐžÐ¿Ð¸Ñ‚Ð²Ð°Ñ‚Ðµ Ñ�Ðµ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ $1 Ñ„Ð°Ð¹Ð»Ð°. Ð�Ð°Ð¸Ñ�Ñ‚Ð¸Ð½Ð° Ð»Ð¸ Ð¸Ñ�ÐºÐ°Ñ‚Ðµ Ð´Ð° Ð³Ð¸ Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð² Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€Ð°?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Ð�Ñ�Ð¼Ð° Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚ Ð¾Ñ‚ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð° Ñ�Ðµ Ñ„Ð°Ð¹Ð».', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ð’Ð¸Ðµ Ñ�Ñ‚Ðµ Ð¸Ð·Ð±Ñ€Ð°Ð»Ð¸ $1 Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Ð˜Ð¼Ð°Ñ‚Ðµ $1 Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ Ð² ÐºÐ»Ð¸Ð¿Ð±Ð¾Ñ€Ð´Ð°.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Ð˜Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ð»Ð½Ð¾Ñ‚Ð¾ Ñ‚ÑŠÑ€Ñ�ÐµÐ½Ðµ Ðµ Ñ�Ð°Ð¼Ð¾ Ð¾Ñ‚ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ� Ð¸Ð·Ð³Ð»ÐµÐ´.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Ð’ÑŠÐ·Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ�Ð²Ð°Ð½Ðµ', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð¸', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ÐšÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð½Ð¾ Ð¼ÐµÐ½ÑŽ', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Ð—Ð°Ð²ÑŠÑ€Ñ‚Ð°Ð½Ðµ Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°Ñ‚Ð°', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Ð�Ð°Ñ‡Ð°Ð»Ð° Ð½Ð° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¸', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ð�ÑƒÐ»Ð¸Ñ€Ð°Ð½Ðµ', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Ð¦Ð²Ñ�Ñ‚ Ð½Ð° Ñ„Ð¾Ð½Ð°', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Ð¡Ñ€ÐµÐ´Ñ�Ñ‚Ð²Ð¾ Ð·Ð° Ð¸Ð·Ð±Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ†Ð²Ñ�Ñ‚', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Ð¼Ñ€ÐµÐ¶Ð°', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ð�ÐºÑ‚Ð¸Ð²Ð½Ð¾', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Ð�ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ð¾', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ð�Ñ�Ð¼Ð° Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚ Ð¾Ñ‚ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾ Ð² Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ� Ð¸Ð·Ð³Ð»ÐµÐ´.\\AÐ�Ð°Ñ‚Ð¸Ñ�Ð½ÐµÑ‚Ðµ [Enter] Ð·Ð° Ð´Ð° Ñ€Ð°Ð·ÑˆÐ¸Ñ€Ð¸Ñ‚Ðµ Ñ†ÐµÐ»Ñ‚Ð° Ð½Ð° Ñ‚ÑŠÑ€Ñ�ÐµÐ½Ðµ.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Ð ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð¸Ñ‚Ðµ Ð¾Ñ‚ Ñ‚ÑŠÑ€Ñ�ÐµÐ½ÐµÑ‚Ð¾ Ð½Ð° Ð¿ÑŠÑ€Ð²Ð°Ñ‚Ð° Ð±ÑƒÐºÐ²Ð° Ñ�Ð° Ð¿Ñ€Ð°Ð·Ð½Ð¸ Ð² Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ� Ð¸Ð·Ð³Ð»ÐµÐ´.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð² ÐµÑ‚Ð¸ÐºÐµÑ‚', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Ð¼Ð¸Ð½ Ð¾Ñ�Ñ‚Ð°Ð²Ð°Ñ‚', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'ÐžÑ‚Ð²Ð°Ñ€Ñ�Ð½Ðµ Ð¾Ñ‚Ð½Ð¾Ð²Ð¾ Ñ� Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¾ ÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½Ðµ', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Ð—Ð°Ð¿Ð°Ð·ÐµÑ‚Ðµ Ñ� Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¾Ñ‚Ð¾ ÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½Ðµ', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Ð˜Ð·Ð±ÐµÑ€Ð¸ Ð¿Ð°Ð¿ÐºÐ°', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Ð¢ÑŠÑ€Ñ�ÐµÐ½Ðµ Ð¿Ð¾ Ð¿ÑŠÑ€Ð²Ð° Ð±ÑƒÐºÐ²Ð°', // from v2.1.23 added 24.3.2017
			'presets'         : 'ÐœÐ¾Ñ�Ñ‚Ñ€Ð¸', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'ÐŸÑ€ÐµÐºÐ°Ð»ÐµÐ½Ð¾ Ð¼Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸, Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸ Ð² ÐºÐ¾ÑˆÑ‡ÐµÑ‚Ð¾.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾ Ð¿Ð¾Ð»Ðµ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ð˜Ð·Ð¿Ñ€Ð°Ð·Ð½ÐµÑ‚Ðµ Ð¿Ð°Ð¿ÐºÐ° "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ð’ Ð¿Ð°Ð¿ÐºÐ° "$1" Ð½Ñ�Ð¼Ð° Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸', // from v2.1.26 added 28.6.2017
			'language'        : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ð° ÐµÐ·Ð¸ÐºÐ°', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸Ñ‚Ðµ Ð·Ð°Ð¿Ð°Ð¼ÐµÑ‚ÐµÐ½Ð¸ Ð² Ñ‚Ð¾Ð·Ð¸ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð½Ð° Ð»ÐµÐ½Ñ‚Ð°Ñ‚Ð° Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ð°Ñ‚.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Ð¡ÑƒÐ¼Ð°Ñ€Ð½Ð¾', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Ð“Ñ€ÑƒÐ± Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð°', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Ð¤Ð¾ÐºÑƒÑ�Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ Ð²ÑŠÑ€Ñ…Ñƒ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð² Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¸Ñ� Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† Ñ� Ð¼Ð¸ÑˆÐºÐ°Ñ‚Ð°',  // from v2.1.30 added 2.11.2017
			'select'          : 'Ð˜Ð·Ð±ÐµÑ€Ð¸', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ Ð¿Ñ€Ð¸ Ð¸Ð·Ð±Ð¾Ñ€ Ð½Ð° Ñ„Ð°Ð¹Ð»', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ÐžÑ‚Ð²Ð¾Ñ€ÐµÑ‚Ðµ Ñ� Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°, Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ Ð·Ð° Ð¿Ð¾Ñ�Ð»ÐµÐ´ÐµÐ½ Ð¿ÑŠÑ‚', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'ÐžÐ±ÑŠÑ€Ð½ÐµÑ‚Ðµ Ñ�ÐµÐ»ÐµÐºÑ†Ð¸Ñ�Ñ‚Ð°', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ð�Ð°Ð¸Ñ�Ñ‚Ð¸Ð½Ð° Ð»Ð¸ Ð¸Ñ�ÐºÐ°Ñ‚Ðµ Ð´Ð° Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ðµ $1 Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ ÐºÐ°Ñ‚Ð¾ $2? <br/> Ð¢Ð¾Ð²Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±ÑŠÐ´Ðµ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð¾!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Ð“Ñ€ÑƒÐ¿Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ðµ', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Ð�Ð¾Ð¼ÐµÑ€', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ð”Ð¾Ð±Ð°Ð²Ð¸ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ð”Ð¾Ð±Ð°Ð²Ð¸ Ñ�ÑƒÑ„Ð¸ÐºÑ�', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð¸ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð·Ð° ÐºÐ¾Ð»Ð¾Ð½Ð¸ (Ð˜Ð·Ð³Ð»ÐµÐ´ Ð² Ñ�Ð¿Ð¸Ñ�ÑŠÐº)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Ð’Ñ�Ð¸Ñ‡ÐºÐ¸ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸ Ñ‰Ðµ Ñ�Ðµ Ð¾Ñ‚Ñ€Ð°Ð·Ñ�Ñ‚ Ð½ÐµÐ·Ð°Ð±Ð°Ð²Ð½Ð¾ Ð² Ð°Ñ€Ñ…Ð¸Ð²Ð°.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð¸Ñ‚Ðµ Ð½Ñ�Ð¼Ð° Ð´Ð° Ñ�Ðµ Ð¾Ñ‚Ñ€Ð°Ð·Ñ�Ñ‚, Ð´Ð¾ÐºÐ°Ñ‚Ð¾ Ð½Ðµ Ñ€Ð°Ð·Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð°Ñ‚Ðµ Ñ‚Ð¾Ð·Ð¸ Ð´Ð¸Ñ�Ðº.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð·Ð° Ñ�ÐµÐ»ÐµÐºÑ†Ð¸Ñ�Ñ‚Ð°', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Ð�Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ð¸ Ð·Ð° Ð¿Ð¾ÐºÐ°Ð·Ð²Ð°Ð½Ðµ Ð½Ð° Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ� Ñ…ÐµÑˆ', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ð�Ð°Ñ‚Ð¸Ñ�Ð½ÐµÑ‚Ðµ Ð¾Ñ‚Ð½Ð¾Ð²Ð¾, Ð·Ð° Ð´Ð° Ð¸Ð·Ð»ÐµÐ·ÐµÑ‚Ðµ.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Ð›ÐµÐ½Ñ‚Ð° Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ð Ð°Ð±Ð¾Ñ‚Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Ð”Ð¸Ð°Ð»Ð¾Ð³', // from v2.1.38 added 4.4.2018
			'all'             : 'Ð’Ñ�Ð¸Ñ‡ÐºÐ¸', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ð Ð°Ð·Ð¼ÐµÑ€ Ð½Ð° Ð¸ÐºÐ¾Ð½Ð¸Ñ‚Ðµ (Ð¸Ð·Ð³Ð»ÐµÐ´ Ñ� Ð¸ÐºÐ¾Ð½Ð¸)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'ÐžÑ‚Ð²Ð°Ñ€Ñ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð¸Ð·Ð¸Ñ€Ð°Ð½ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† Ð½Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ð¢ÑŠÐ¹ ÐºÐ°Ñ‚Ð¾ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° Ð½Ðµ Ðµ Ð½Ð°Ð»Ð¸Ñ‡Ð½Ð° API Ð·Ð° ÐºÐ¾Ð½Ð²ÐµÑ€Ñ�Ð¸Ñ�Ñ‚Ð°, Ð¼Ð¾Ð»Ñ�, ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ Ð² ÑƒÐµÐ±Ñ�Ð°Ð¹Ñ‚Ð°.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Ð¡Ð»ÐµÐ´ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ�Ð¸Ñ�Ñ‚Ð° Ñ‚Ñ€Ñ�Ð±Ð²Ð° Ð´Ð° Ð³Ð¾ ÐºÐ°Ñ‡Ð¸Ñ‚Ðµ Ñ� URL Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð»Ð¸ Ð¸Ð·Ñ‚ÐµÐ³Ð»ÐµÐ½Ð¸Ñ� Ñ„Ð°Ð¹Ð», Ð·Ð° Ð´Ð° Ð·Ð°Ð¿Ð°Ð·Ð¸Ñ‚Ðµ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ� Ñ„Ð°Ð¹Ð».', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€Ð°Ð½Ðµ Ð½Ð° Ñ�Ð°Ð¹Ñ‚Ð° Ð¾Ñ‚ $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ð¸', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ð¢Ð¾Ð·Ð¸ elFinder Ð¸Ð¼Ð° Ñ�Ð»ÐµÐ´Ð½Ð¸Ñ‚Ðµ Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð¸Ñ€Ð°Ð½Ð¸ Ð²ÑŠÐ½ÑˆÐ½Ð¸ ÑƒÑ�Ð»ÑƒÐ³Ð¸. ÐœÐ¾Ð»Ñ�, Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ñ�Ñ‚Ð° Ð·Ð° Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ðµ, Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ�Ñ‚Ð° Ð·Ð° Ð¿Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÐµÐ»Ð½Ð¾Ñ�Ñ‚ Ð¸ Ñ‚.Ð½., Ð¿Ñ€ÐµÐ´Ð¸ Ð´Ð° Ð³Ð¸ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ‚Ðµ.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'ÐŸÐ¾ÐºÐ°Ð¶Ð¸ Ñ�ÐºÑ€Ð¸Ñ‚Ð¸Ñ‚Ðµ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ð¡ÐºÑ€Ð¸Ð¹ Ñ�ÐºÑ€Ð¸Ñ‚Ð¸Ñ‚Ðµ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'ÐŸÐ¾ÐºÐ°Ð¶Ð¸/Ñ�ÐºÑ€Ð¸Ð¹ Ñ�ÐºÑ€Ð¸Ñ‚Ð¸Ñ‚Ðµ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸', // from v2.1.41 added 24.7.2018

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚',
			'kindRoot'        : 'Ð�Ð°Ñ‡Ð°Ð»Ð¾ Ð½Ð° Ñ€ÐµÑ�ÑƒÑ€Ñ�', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ÐŸÐ°Ð¿ÐºÐ°',
			'kindSelects'     : 'Ð¡ÐµÐ»ÐµÐºÑ†Ð¸Ð¸', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ð’Ñ€ÑŠÐ·ÐºÐ°',
			'kindAliasBroken' : 'Ð¡Ñ‡ÑƒÐ¿ÐµÐ½Ð° Ð²Ñ€ÑŠÐ·ÐºÐ°',
			// applications
			'kindApp'         : 'ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPostscript'  : 'Postscript Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindMsOffice'    : 'Microsoft Office Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindMsWord'      : 'Microsoft Word Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindMsExcel'     : 'Microsoft Excel Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindMsPP'        : 'Microsoft Powerpoint Ð¿Ñ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ�',
			'kindOO'          : 'Open Office Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindAppFlash'    : 'Flash Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPDF'         : 'PDF Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindTorrent'     : 'Bittorrent Ñ„Ð°Ð¹Ð»',
			'kind7z'          : '7z Ð°Ñ€Ñ…Ð¸Ð²',
			'kindTAR'         : 'TAR Ð°Ñ€Ñ…Ð¸Ð²',
			'kindGZIP'        : 'GZIP Ð°Ñ€Ñ…Ð¸Ð²',
			'kindBZIP'        : 'BZIP Ð°Ñ€Ñ…Ð¸Ð²',
			'kindXZ'          : 'XZ Ð°Ñ€Ñ…Ð¸Ð²',
			'kindZIP'         : 'ZIP Ð°Ñ€Ñ…Ð¸Ð²',
			'kindRAR'         : 'RAR Ð°Ñ€Ñ…Ð¸Ð²',
			'kindJAR'         : 'Java JAR Ñ„Ð°Ð¹Ð»',
			'kindTTF'         : 'True Type ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindOTF'         : 'Open Type ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindRPM'         : 'RPM Ð¿Ð°ÐºÐµÑ‚',
			// fonts
			'kindFont'        : 'ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindSFNT'        : 'SFNT ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindEOT'         : 'Embedded Open Type ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindWOFF'        : 'Web Open Font Format ÑˆÑ€Ð¸Ñ„Ñ‚',
			'kindWOFF2'       : 'Web Open Font Format 2 ÑˆÑ€Ð¸Ñ„Ñ‚',
			// texts
			'kindText'        : 'Ð¢ÐµÐºÑ�Ñ‚Ð¾Ð² Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindTextPlain'   : 'Ð§Ð¸Ñ�Ñ‚ Ñ‚ÐµÐºÑ�Ñ‚',
			'kindPHP'         : 'PHP Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindCSS'         : 'CSS Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÑŠÑ� Ñ�Ñ‚Ð¸Ð»Ð¾Ð²Ðµ',
			'kindHTML'        : 'HTML Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindJS'          : 'Javascript Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindRTF'         : 'RTF Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¸ Ñ„Ð°Ð¹Ð»',
			'kindC'           : 'C Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindCHeader'     : 'C header Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindCPP'         : 'C++ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindCPPHeader'   : 'C++ header Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindShell'       : 'Unix shell Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindPython'      : 'Python Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindJava'        : 'Java Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindRuby'        : 'Ruby Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindPerl'        : 'Perl Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindSQL'         : 'SQL Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindXML'         : 'XML Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindAWK'         : 'AWK Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ ÐºÐ¾Ð´',
			'kindCSV'         : 'CSV Ñ�Ñ‚Ð¾Ð¹Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸ Ñ�ÑŠÑ� Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ�',
			'kindDOCBOOK'     : 'Docbook XML Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
			'kindMarkdown'    : 'Markdown Ñ‚ÐµÐºÑ�Ñ‚', // added 20.7.2015
			// images
			'kindImage'       : 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindBMP'         : 'BMP Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindJPEG'        : 'JPEG Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindGIF'         : 'GIF Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPNG'         : 'PNG Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindTIFF'        : 'TIFF Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindTGA'         : 'TGA Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPSD'         : 'Adobe Photoshop Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindXBITMAP'     : 'X bitmap Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			'kindPXM'         : 'Pixelmator Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ',
			// media
			'kindAudio'       : 'Ð�ÑƒÐ´Ð¸Ð¾ Ð¼ÐµÐ´Ð¸Ñ�',
			'kindAudioMPEG'   : 'MPEG Ð·Ð²ÑƒÐº',
			'kindAudioMPEG4'  : 'MPEG-4 Ð·Ð²ÑƒÐº',
			'kindAudioMIDI'   : 'MIDI Ð·Ð²ÑƒÐº',
			'kindAudioOGG'    : 'Ogg Vorbis Ð·Ð²ÑƒÐº',
			'kindAudioWAV'    : 'WAV Ð·Ð²ÑƒÐº',
			'AudioPlaylist'   : 'MP3 Ñ�Ð¿Ð¸Ñ�ÑŠÐº Ð·Ð° Ð¸Ð·Ð¿ÑŠÐ»Ð½ÐµÐ½Ð¸Ðµ',
			'kindVideo'       : 'Ð’Ð¸Ð´ÐµÐ¾ Ð¼ÐµÐ´Ð¸Ñ�',
			'kindVideoDV'     : 'DV Ñ„Ð¸Ð»Ð¼',
			'kindVideoMPEG'   : 'MPEG Ñ„Ð¸Ð»Ð¼',
			'kindVideoMPEG4'  : 'MPEG-4 Ñ„Ð¸Ð»Ð¼',
			'kindVideoAVI'    : 'AVI Ñ„Ð¸Ð»Ð¼',
			'kindVideoMOV'    : 'Quick Time Ñ„Ð¸Ð»Ð¼',
			'kindVideoWM'     : 'Windows Media Ñ„Ð¸Ð»Ð¼',
			'kindVideoFlash'  : 'Flash Ñ„Ð¸Ð»Ð¼',
			'kindVideoMKV'    : 'Matroska Ñ„Ð¸Ð»Ð¼',
			'kindVideoOGG'    : 'Ogg Ñ„Ð¸Ð»Ð¼'
		}
	};
}));
                                                                             includes/File_manager/lib/js/i18n/elfinder.id.js                                                    0000644                 00000064377 15266052763 0015442 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Bahasa Indonesia translation
 * @author Suyadi <1441177004009@student.unsika.ac.id>
 * @author Ammar Faizi <ammarfaizi2@gmail.com>
 * @version 2017-05-28
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.id = {
		translator : 'Suyadi &lt;1441177004009@student.unsika.ac.id&gt;, Ammar Faizi &lt;ammarfaizi2@gmail.com&gt;',
		language   : 'Bahasa Indonesia',
		direction  : 'ltr',
		dateFormat : 'j F, Y H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'd m Y - H : i : s', // to apply if upload file is noname: 120513172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Kesalahan',
			'errUnknown'           : 'Kesalahan tak dikenal.',
			'errUnknownCmd'        : 'Perintah tak dikenal.',
			'errJqui'              : 'Konfigurasi jQuery UI tidak valid. Komponen pemilih, penyeret dan penaruh harus disertakan.',
			'errNode'              : 'elFinder membutuhkan pembuatan elemen DOM.',
			'errURL'               : 'Konfigurasi elFinder tidak valid! opsi URL belum diatur.',
			'errAccess'            : 'Akses ditolak.',
			'errConnect'           : 'Tidak dapat tersambung ke backend.',
			'errAbort'             : 'Koneksi dibatalkan.',
			'errTimeout'           : 'Waktu koneksi habis.',
			'errNotFound'          : 'Backend tidak ditemukan.',
			'errResponse'          : 'Respon backend tidak valid.',
			'errConf'              : 'Konfigurasi elFinder tidak valid.',
			'errJSON'              : 'Modul PHP JSON belum terpasang.',
			'errNoVolumes'         : 'Tidak tersedia ruang kosong.',
			'errCmdParams'         : 'Parameter perintah "$1" tidak valid.',
			'errDataNotJSON'       : 'Data bukan merupakan JSON.',
			'errDataEmpty'         : 'Data masih kosong.',
			'errCmdReq'            : 'Permintaan ke backend membutuhkan nama perintah.',
			'errOpen'              : 'Tidak dapat membuka "$1".',
			'errNotFolder'         : 'Obyek ini bukan folder.',
			'errNotFile'           : 'Obyek ini bukan berkas.',
			'errRead'              : 'Tidak dapat membaca "$1".',
			'errWrite'             : 'Tidak dapat menulis ke "$1".',
			'errPerm'              : 'Ijin ditolak.',
			'errLocked'            : '"$1" ini terkunci dan tak dapat dipidahkan, diubah atau dihapus.',
			'errExists'            : 'Berkas bernama "$1" sudah ada.',
			'errInvName'           : 'Nama berkas tidak valid.',
			'errInvDirname'        : 'Nama folder salah.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder tidak ditemukan.',
			'errFileNotFound'      : 'Berkas tidak ditemukan.',
			'errTrgFolderNotFound' : 'Folder tujuan "$1" tidak ditemukan.',
			'errPopup'             : 'Peramban anda mencegah untuk membuka jendela munculan. Untuk dapat membuka berkas ini ubah pengaturan pada peramban anda.',
			'errMkdir'             : 'Tidak dapat membuat folder "$1".',
			'errMkfile'            : 'Tidak dapat membuat berkas "$1".',
			'errRename'            : 'Tidak dapat mengubah nama "$1".',
			'errCopyFrom'          : 'Tidak diizinkan menyalin berkas dari volume "$1".',
			'errCopyTo'            : 'tidak diizinkan menyalin berkas ke volume "$1".',
			'errMkOutLink'         : 'Tidak dapat membuat tautan diluar volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Kesalahan saat mengunggah.',  // old name - errUploadCommon
			'errUploadFile'        : 'Tidak dapat mengunggah "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Tak ada berkas untuk diunggah.',
			'errUploadTotalSize'   : 'Data melampaui ukuran yang diperbolehkan.', // old name - errMaxSize
			'errUploadFileSize'    : 'Berkas melampaui ukuran yang diperbolehkan.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Jenis berkas ini tidak diijinkan.',
			'errUploadTransfer'    : 'Kesalahan transfer "$1".',
			'errUploadTemp'        : 'Tidak dapat membuat file sementara untuk diupload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obyek "$1" sudah ada di lokasi ini dan tidak dapat ditimpa oleh obyek jenis lain.', // new
			'errReplace'           : 'Tidak dapat menimpa "$1".',
			'errSave'              : 'Tidak dapat menyimpan "$1".',
			'errCopy'              : 'Tidak dapat menyalin "$1".',
			'errMove'              : 'Tidak dapat memindahkan "$1".',
			'errCopyInItself'      : 'Tidak dapat menyalin "$1" ke dirinya sendiri.',
			'errRm'                : 'Tidak dapat menghapus "$1".',
			'errTrash'             : 'Tidak dapat masuk ke tempat sampah.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Tidak dapat menghapus sumber berkas.',
			'errExtract'           : 'Tidak dapat mengekstrak berkas dari "$1".',
			'errArchive'           : 'Tidak dapat membuat arsip.',
			'errArcType'           : 'Jenis arsip tidak didukung.',
			'errNoArchive'         : 'Berkas ini bukan arsip atau arsip jenis ini tidak didukung.',
			'errCmdNoSupport'      : 'Backend tidak mendukung perintah ini.',
			'errReplByChild'       : 'Folder â€œ$1â€� tidak dapat ditimpa dengan berkas didalamnya.',
			'errArcSymlinks'       : 'Untuk keamanan tak diijinkan mengekstrak arsip berisi symlink atau jenis berkas yang tak diijinkan.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arsip ini melampaui ukuran yang diijinkan.',
			'errResize'            : 'Tidak dapat mengubah ukuran "$1".',
			'errResizeDegree'      : 'Derajat putaran tidak valid.',  // added 7.3.2013
			'errResizeRotate'      : 'Citra tidak diputar.',  // added 7.3.2013
			'errResizeSize'        : 'Ukuran citra tidak valid.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ukuran citra tidak diubah.',  // added 7.3.2013
			'errUsupportType'      : 'Jenis berkas tidak didukung.',
			'errNotUTF8Content'    : 'Berkas "$1" tidak dalam format UTF-8 dan tidak dapat disunting.',  // added 9.11.2011
			'errNetMount'          : 'Tidak dapat membaca susunan "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protokol tidak didukung.',     // added 17.04.2012
			'errNetMountFailed'    : 'Tidak dapat membaca susunannya.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host harus ada.', // added 18.04.2012
			'errSessionExpires'    : 'Sesi anda telah kadaluwarsa karena lama tidak aktif.',
			'errCreatingTempDir'   : 'Tidak dapat membuat direktori sementara: "$1"',
			'errFtpDownloadFile'   : 'Tidak dapat mengunduh berkas dari FTP: "$1"',
			'errFtpUploadFile'     : 'Tidak dapat mengunggah berkas dari FTP: "$1"',
			'errFtpMkdir'          : 'Tidak dapat membuat remot direktori dari FTP: "$1"',
			'errArchiveExec'       : 'Kesalahan saat mengarsipkan berkas: "$1"',
			'errExtractExec'       : 'Kesalahan saat mengekstrak berkas: "$1"',
			'errNetUnMount'        : 'Tidak dapat melakukan mount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Tidak cocok untuk konversi ke UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Coba dengan browser yang modern, Jika akan mengupload folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Waktu habis selama melakukan pencarian "$1". Hasil sementara.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization dibutuhkan.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Berkas maksimal yang dipilih adalah $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Tidak dapat mengembalikan berkas dari tempat sampah. Tujuan tidak ditemukan.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Tidak ditemukan editor untuk file tipe ini.', // from v2.1.25 added 23.5.2017

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Buat arsip',
			'cmdback'      : 'Kembali',
			'cmdcopy'      : 'Salin',
			'cmdcut'       : 'Potong',
			'cmddownload'  : 'Unduh',
			'cmdduplicate' : 'Gandakan',
			'cmdedit'      : 'Sunting berkas',
			'cmdextract'   : 'Ekstrak berkas dari arsip',
			'cmdforward'   : 'Maju',
			'cmdgetfile'   : 'Pilih berkas',
			'cmdhelp'      : 'Tentang software ini',
			'cmdhome'      : 'Rumah',
			'cmdinfo'      : 'Dapatkan info',
			'cmdmkdir'     : 'Buat folder',
			'cmdmkdirin'   : 'Masuk ke folder baru', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Buat fail',
			'cmdopen'      : 'Buka',
			'cmdpaste'     : 'Tempel',
			'cmdquicklook' : 'Pratinjau',
			'cmdreload'    : 'Muat-ulang',
			'cmdrename'    : 'Ganti nama',
			'cmdrm'        : 'Hapus',
			'cmdtrash'     : 'Sampahkan', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Kembalikan', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Cari berkas',
			'cmdup'        : 'Ke direktori utama',
			'cmdupload'    : 'Unggah berkas',
			'cmdview'      : 'Lihat',
			'cmdresize'    : 'Ubah ukuran & Putar',
			'cmdsort'      : 'Urutkan',
			'cmdnetmount'  : 'Baca-susun volume jaringan', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ke Tempat', // added 28.12.2014
			'cmdchmod'     : 'Mode mengubah', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Membuka folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Layar Penuh', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Pindah', // from v2.1.15 added 21.08.2016

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Tutup',
			'btnSave'   : 'Simpan',
			'btnRm'     : 'Buang',
			'btnApply'  : 'Terapkan',
			'btnCancel' : 'Batal',
			'btnNo'     : 'Tidak',
			'btnYes'    : 'Ya',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Baca susunan',  // added 18.04.2012
			'btnApprove': 'Menuju ke $1 & setujui', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konversi', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Disini',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Semua',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Nama file',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Simpan & Tutup', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Ubah nama',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Ubah nama(Semua)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Sebelumnya ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Selanjutnya ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Simpan sebagai', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Buka folder',
			'ntffile'     : 'Buka berkas',
			'ntfreload'   : 'Muat-ulang isi folder',
			'ntfmkdir'    : 'Membuat direktori',
			'ntfmkfile'   : 'Membuat berkas',
			'ntfrm'       : 'Menghapus berkas',
			'ntfcopy'     : 'Salin berkas',
			'ntfmove'     : 'Pindahkan berkas',
			'ntfprepare'  : 'Persiapan menyalin berkas',
			'ntfrename'   : 'Ubah nama berkas',
			'ntfupload'   : 'Unggah berkas',
			'ntfdownload' : 'Mengunduh berkas',
			'ntfsave'     : 'Simpan berkas',
			'ntfarchive'  : 'Membuat arsip',
			'ntfextract'  : 'Mengekstrak berkas dari arsip',
			'ntfsearch'   : 'Mencari berkas',
			'ntfresize'   : 'Mengubah ukuran citra',
			'ntfsmth'     : 'Melakukan sesuatu',
			'ntfloadimg'  : 'Memuat citra',
			'ntfnetmount' : 'Membaca susunan volume jaringan', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Mendapatkan dimensi citra', // added 20.05.2013
			'ntfreaddir'  : 'Membaca informasi folder', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Mendapatkan URL dari link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Dalam mode mengubah', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Sedang memverifikasi nama file yang diupload', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Membuat file untuk didownload', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Mengambil informasi path', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Sedang mengupload file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Sedang melempar ke tempat sampah', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Sedang mengembalikan dari tempat sampah', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Mengecek folder tujuan', // from v2.1.24 added 3.5.2017

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Sampah', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'tak diketahui',
			'Today'       : 'Hari ini',
			'Yesterday'   : 'Kemarin',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mei',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Agt',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nop',
			'msDec'       : 'Des',
			'January'     : 'Januari',
			'February'    : 'Pebruari',
			'March'       : 'Maret',
			'April'       : 'April',
			'May'         : 'Mei',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'Agustus',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'Nopember',
			'December'    : 'Desember',
			'Sunday'      : 'Minggu',
			'Monday'      : 'Senin',
			'Tuesday'     : 'Selasa',
			'Wednesday'   : 'Rabu',
			'Thursday'    : 'Kamis',
			'Friday'      : 'Jum \'at',
			'Saturday'    : 'Sabtu',
			'Sun'         : 'Min',
			'Mon'         : 'Sen',
			'Tue'         : 'Sel',
			'Wed'         : 'Rab',
			'Thu'         : 'Kam',
			'Fri'         : 'Jum',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'menurut nama',
			'sortkind'          : 'menurut jenis',
			'sortsize'          : 'menurut ukuran',
			'sortdate'          : 'menurut tanggal',
			'sortFoldersFirst'  : 'Utamakan folder',
			'sortperm'          : 'menurut perizinan', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'menurut mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'menurut pemilik',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'menurut grup',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'FileBaru.txt', // added 10.11.2015
			'untitled folder'   : 'FolderBaru',   // added 10.11.2015
			'Archive'           : 'ArsipBaru',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'Diperlukan konfirmasi',
			'confirmRm'       : 'Anda yakin akan menghapus berkas?<br/>Ini tidak dapat kembalikan!',
			'confirmRepl'     : 'Timpa berkas lama dengan yang baru?',
			'confirmRest'     : 'Timpa berkas yang ada dengan berkas dari sampah?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Bukan UTF-8<br/>Konversi ke UTF-8?<br/>Konten akan berubah menjadi UTF-8 ketika disimpan dengan konversi.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Telah terjadi perubahan.<br/>Kehilangan perkerjaan jika kamu tidak menyimpan.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Anda yakin untuk membuang berkas ke tempat sampah?', //from v2.1.24 added 29.4.2017
			'apllyAll'        : 'Terapkan ke semua',
			'name'            : 'Nama',
			'size'            : 'Ukuran',
			'perms'           : 'Perijinan',
			'modify'          : 'Diubah',
			'kind'            : 'Jenis',
			'read'            : 'baca',
			'write'           : 'tulis',
			'noaccess'        : 'tidak ada akses',
			'and'             : 'dan',
			'unknown'         : 'tak diketahui',
			'selectall'       : 'Pilih semua berkas',
			'selectfiles'     : 'Pilih berkas',
			'selectffile'     : 'Pilih berkas pertama',
			'selectlfile'     : 'Pilih berkas terakhir',
			'viewlist'        : 'Tampilan daftar',
			'viewicons'       : 'Tampilan ikon',
			'places'          : 'Lokasi',
			'calc'            : 'Hitung',
			'path'            : 'Alamat',
			'aliasfor'        : 'Nama lain untuk',
			'locked'          : 'Dikunci',
			'dim'             : 'Dimensi',
			'files'           : 'Berkas',
			'folders'         : 'Folder',
			'items'           : 'Pokok',
			'yes'             : 'ya',
			'no'              : 'tidak',
			'link'            : 'Tautan',
			'searcresult'     : 'Hasil pencarian',
			'selected'        : 'Pokok terpilih',
			'about'           : 'Tentang',
			'shortcuts'       : 'Pintasan',
			'help'            : 'Bantuan',
			'webfm'           : 'Pengelola berkas web',
			'ver'             : 'Versi',
			'protocolver'     : 'versi protokol',
			'homepage'        : 'Rumah proyek',
			'docs'            : 'Dokumentasi',
			'github'          : 'Ambil kami di Github',
			'twitter'         : 'Ikuti kami di twitter',
			'facebook'        : 'Gabung dengan kami di facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'kepala pengembang',
			'developer'       : 'pengembang',
			'contributor'     : 'kontributor',
			'maintainer'      : 'pengurus',
			'translator'      : 'penerjemah',
			'icons'           : 'Ikon',
			'dontforget'      : 'dan jangan lupa pakai handukmu',
			'shortcutsof'     : 'Pintasan dimatikan',
			'dropFiles'       : 'Seret berkas anda kesini',
			'or'              : 'atau',
			'selectForUpload' : 'Pilih berkas untuk diunggah',
			'moveFiles'       : 'Pindahkan berkas',
			'copyFiles'       : 'Salin berkas',
			'restoreFiles'    : 'Kembalikan berkas', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Hapus dari lokasi',
			'aspectRatio'     : 'Aspek rasio',
			'scale'           : 'Skala',
			'width'           : 'Lebar',
			'height'          : 'Tinggi',
			'resize'          : 'Ubah ukuran',
			'crop'            : 'Potong',
			'rotate'          : 'Putar',
			'rotate-cw'       : 'Putar 90 derajat ke kanan',
			'rotate-ccw'      : 'Putar 90 derajat ke kiri',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Baca susunan volume jaringan', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Pengguna', // added 18.04.2012
			'pass'                : 'Sandi', // added 18.04.2012
			'confirmUnmount'      : 'Apakah anda unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Seret atau Tempel file dari browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Seret file, Tempel URL atau gambar dari clipboard', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Lokasi',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Mencari berdasarkan inpu MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Pemilik', // from v2.1 added 20.6.2015
			'group'           : 'Grup', // from v2.1 added 20.6.2015
			'other'           : 'Lainnya', // from v2.1 added 20.6.2015
			'execute'         : 'Eksekusi', // from v2.1 added 20.6.2015
			'perm'            : 'Izin', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder kosong', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder kosong\\A Seret untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder kosong\\A Tekan yang lama untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kualitas', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sinkronasi Otomatis',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Pindah ke atas',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Mendepatkan URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : '($1) berkas dipilih', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Folder', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Izin akses offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Sedang memuat...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Membuka file bersamaan', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Anda mencoba membuka file $1. Apakah anda ingin membuka di browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Hasil pencarian kosong dalam target', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Sedang mengedit file', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Anda memilih $1 berkas', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Kamu mempunyai $i berkas di clipboard', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Hanya pencarian bertamah untuk menampilkan tampilan sekarang', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 selesai', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Warna background', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Mengambil warna', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Diaktifkan', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Nonaktifkan', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Tak diketahui',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindAlias'       : 'Nama lain',
			'kindAliasBroken' : 'Nama lain rusak',
			// applications
			'kindApp'         : 'Aplikasi',
			'kindPostscript'  : 'Dokumen postscript',
			'kindMsOffice'    : 'Dokumen Ms. Office',
			'kindMsWord'      : 'Dokumen Ms. Word',
			'kindMsExcel'     : 'Dokumen Ms. Excel',
			'kindMsPP'        : 'Dokumen Ms. Powerpoint',
			'kindOO'          : 'Dokumen Open Office',
			'kindAppFlash'    : 'Aplikasi Flash',
			'kindPDF'         : 'Portable Dokumen Format (PDF)',
			'kindTorrent'     : 'Berkas Bittorrent',
			'kind7z'          : 'Arsip 7z',
			'kindTAR'         : 'Arsip TAR',
			'kindGZIP'        : 'Arsip GZIP',
			'kindBZIP'        : 'Arsip BZIP',
			'kindXZ'          : 'Arsip XZ',
			'kindZIP'         : 'Arsip ZIP',
			'kindRAR'         : 'Arsip RAR',
			'kindJAR'         : 'Berkas Java JAR',
			'kindTTF'         : 'Huruf True Type',
			'kindOTF'         : 'Huruf Open Type',
			'kindRPM'         : 'Paket RPM',
			// fonts
			'kindFont'        : 'Huruf',
			'kindSFNT'        : 'Huruf SFNT',
			'kindEOT'         : 'Huruf Embedded Open Type',
			'kindWOFF'        : 'Huruf Web Open Font Format',
			'kindWOFF2'       : 'Huruf Web Open Font Format 2',
			// texts
			'kindText'        : 'Dokumen teks',
			'kindTextPlain'   : 'Berkas teks biasa',
			'kindPHP'         : 'Kode-sumber PHP',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'Dokumen HTML',
			'kindJS'          : 'Kode-sumber Javascript',
			'kindRTF'         : 'Berkas Rich Text',
			'kindC'           : 'Kode-sumber C',
			'kindCHeader'     : 'Kode-sumber header C',
			'kindCPP'         : 'Kode-sumber C++',
			'kindCPPHeader'   : 'Kode-sumber header C++',
			'kindShell'       : 'Berkas shell Unix',
			'kindPython'      : 'Kode-sumber Python',
			'kindJava'        : 'Kode-sumber Java',
			'kindRuby'        : 'Kode-sumber Ruby',
			'kindPerl'        : 'Kode-sumber Perl',
			'kindSQL'         : 'Kode-sumber SQL',
			'kindXML'         : 'Dokumen XML',
			'kindAWK'         : 'Kode-sumber AWK',
			'kindCSV'         : 'Dokumen CSV',
			'kindDOCBOOK'     : 'Dokumen Docbook XML',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Citra',
			'kindBMP'         : 'Citra BMP',
			'kindJPEG'        : 'Citra JPEG',
			'kindGIF'         : 'Citra GIF',
			'kindPNG'         : 'Citra PNG',
			'kindTIFF'        : 'Citra TIFF',
			'kindTGA'         : 'Citra TGA',
			'kindPSD'         : 'Citra Adobe Photoshop',
			'kindXBITMAP'     : 'Citra X bitmap',
			'kindPXM'         : 'Citra Pixelmator',
			// media
			'kindAudio'       : 'Berkas audio',
			'kindAudioMPEG'   : 'Berkas audio MPEG',
			'kindAudioMPEG4'  : 'Berkas audio MPEG-4',
			'kindAudioMIDI'   : 'Berkas audio MIDI',
			'kindAudioOGG'    : 'Berkas audio Ogg Vorbis',
			'kindAudioWAV'    : 'Berkas audio WAV',
			'AudioPlaylist'   : 'Berkas daftar putar MP3',
			'kindVideo'       : 'Berkas video',
			'kindVideoDV'     : 'Berkas video DV',
			'kindVideoMPEG'   : 'Berkas video MPEG',
			'kindVideoMPEG4'  : 'Berkas video MPEG-4',
			'kindVideoAVI'    : 'Berkas video AVI',
			'kindVideoMOV'    : 'Berkas video Quick Time',
			'kindVideoWM'     : 'Berkas video Windows Media',
			'kindVideoFlash'  : 'Berkas video Flash',
			'kindVideoMKV'    : 'Berkas video Matroska',
			'kindVideoOGG'    : 'Berkas video Ogg'
		}
	};
}));

                                                                                                                                                                                                                                                                 includes/File_manager/lib/js/i18n/elfinder.it.js                                                    0000644                 00000104555 15266052763 0015453 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Italiano translation
 * @author Alberto Tocci (alberto.tocci@gmail.com)
 * @author Claudio Nicora (coolsoft.ita@gmail.com)
 * @author Stefano Galeazzi <stefano.galeazzi@probanet.it>
 * @author Thomas Camaran <camaran@gmail.com>
 * @author Fabio Ferrero <fabioferrero@gmail.com>
 * @version 2023-04-21
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.it = {
		translator : 'Alberto Tocci (alberto.tocci@gmail.com), Claudio Nicora (coolsoft.ita@gmail.com), Stefano Galeazzi &lt;stefano.galeazzi@probanet.it&gt;, Thomas Camaran &lt;camaran@gmail.com&gt;, Fabio Ferrero &lt;fabioferrero@gmail.com&gt;',
		language   : 'Italiano',
		direction  : 'ltr',
		dateFormat : 'd/m/Y H:i', // will show like: 21/04/2023 16:21
		fancyDateFormat : '$1 H:i', // will show like: Oggi 16:21
		nonameDateFormat : 'ymd-His', // noname upload will show like: 230421-162111
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Errore',
			'errUnknown'           : 'Errore sconosciuto.',
			'errUnknownCmd'        : 'Comando sconosciuto.',
			'errJqui'              : 'Configurazione JQuery UI non valida. Devono essere inclusi i plugin Selectable, Draggable e Droppable.',
			'errNode'              : 'elFinder necessita dell\'elemento DOM per essere inizializzato.',
			'errURL'               : 'Configurazione non valida.Il parametro URL non Ã¨ settato.',
			'errAccess'            : 'Accesso negato.',
			'errConnect'           : 'Impossibile collegarsi al backend.',
			'errAbort'             : 'Connessione annullata.',
			'errTimeout'           : 'Timeout di connessione.',
			'errNotFound'          : 'Backend non trovato.',
			'errResponse'          : 'Risposta non valida dal backend.',
			'errConf'              : 'Configurazione backend non valida.',
			'errJSON'              : 'Modulo PHP JSON non installato.',
			'errNoVolumes'         : 'Non Ã¨ stato possibile leggere i volumi.',
			'errCmdParams'         : 'Parametri non validi per il comando "$1".',
			'errDataNotJSON'       : 'I dati non sono nel formato JSON.',
			'errDataEmpty'         : 'Stringa vuota.',
			'errCmdReq'            : 'La richiesta al backend richiede il nome del comando.',
			'errOpen'              : 'Impossibile aprire "$1".',
			'errNotFolder'         : 'L\'oggetto non Ã¨ una cartella..',
			'errNotFile'           : 'L\'oggetto non Ã¨ un file.',
			'errRead'              : 'Impossibile leggere "$1".',
			'errWrite'             : 'Non Ã¨ possibile scrivere in "$1".',
			'errPerm'              : 'Permesso negato.',
			'errLocked'            : '"$1" Ã¨ bloccato e non puÃ² essere rinominato, spostato o eliminato.',
			'errExists'            : 'Il file "$1" Ã¨ giÃ  esistente.',
			'errInvName'           : 'Nome file non valido.',
			'errInvDirname'        : 'Nome cartella non valido.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Cartella non trovata.',
			'errFileNotFound'      : 'File non trovato.',
			'errTrgFolderNotFound' : 'La cartella di destinazione"$1" non Ã¨ stata trovata.',
			'errPopup'             : 'Il tuo Browser non consente di aprire finestre di pop-up. Per aprire il file abilita questa opzione nelle impostazioni del tuo Browser.',
			'errMkdir'             : 'Impossibile creare la cartella "$1".',
			'errMkfile'            : 'Impossibile creare il file "$1".',
			'errRename'            : 'Impossibile rinominare "$1".',
			'errCopyFrom'          : 'Non Ã¨ possibile copiare file da "$1".',
			'errCopyTo'            : 'Non Ã¨ possibile copiare file in "$1".',
			'errMkOutLink'         : 'Impossibile creare un link all\'esterno della radice del volume.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Errore di Caricamento.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossibile Caricare "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Non sono stati specificati file da caricare.',
			'errUploadTotalSize'   : 'La dimensione totale dei file supera il limite massimo consentito.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le dimensioni del file superano il massimo consentito.', //  old name - errFileMaxSize
			'errUploadMime'        : 'FileType non consentito.',
			'errUploadTransfer'    : 'Trasferimento errato del file "$1".',
			'errUploadTemp'        : 'Impossibile creare il file temporaneo per l\'upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'oggetto "$1" esiste giÃ  in questa cartella e non puÃ² essere sostituito con un oggetto di un tipo differente.', // new
			'errReplace'           : 'Impossibile sostituire "$1".',
			'errSave'              : 'Impossibile salvare "$1".',
			'errCopy'              : 'Impossibile copiare "$1".',
			'errMove'              : 'Impossibile spostare "$1".',
			'errCopyInItself'      : 'Sorgente e destinazione risultato essere uguali.',
			'errRm'                : 'Impossibile rimuovere "$1".',
			'errTrash'             : 'Impossibile cestinare.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossibile eliminare i file origine.',
			'errExtract'           : 'Impossibile estrarre file da "$1".',
			'errArchive'           : 'Impossibile creare archivio.',
			'errArcType'           : 'Tipo di archivio non supportato.',
			'errNoArchive'         : 'Il file non Ã¨ un archivio o contiene file non supportati.',
			'errCmdNoSupport'      : 'Il Backend non supporta questo comando.',
			'errReplByChild'       : 'La cartella $1 non puÃ² essere sostituita da un oggetto in essa contenuto.',
			'errArcSymlinks'       : 'Per questioni di sicurezza non Ã¨ possibile estrarre archivi che contengono collegamenti..', // edited 24.06.2012
			'errArcMaxSize'        : 'La dimensione dell\'archivio supera le massime dimensioni consentite.',
			'errResize'            : 'Impossibile ridimensionare "$1".',
			'errResizeDegree'      : 'Angolo di rotazione non valido.',  // added 7.3.2013
			'errResizeRotate'      : 'Impossibile ruotare l\'immagine.',  // added 7.3.2013
			'errResizeSize'        : 'Dimensione dell\'immagine non valida.',  // added 7.3.2013
			'errResizeNoChange'    : 'Dimensione dell\'immagine non modificata.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo di file non supportato.',
			'errNotUTF8Content'    : 'Il file "$1" non Ã¨ nel formato UTF-8 e non puÃ² essere modificato.',  // added 9.11.2011
			'errNetMount'          : 'Impossibile montare "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocollo non supportato.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount fallito.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host richiesto.', // added 18.04.2012
			'errSessionExpires'    : 'La sessione Ã¨ scaduta a causa di inattivitÃ .',
			'errCreatingTempDir'   : 'Impossibile creare la cartella temporanea: "$1"',
			'errFtpDownloadFile'   : 'Impossibile scaricare il file tramite FTP: "$1"',
			'errFtpUploadFile'     : 'Impossibile caricare il file tramite FTP: "$1"',
			'errFtpMkdir'          : 'Impossibile creare la cartella remota tramite FTP: "$1"',
			'errArchiveExec'       : 'Errore durante l\'archiviazione dei file: "$1"',
			'errExtractExec'       : 'Errore durante l\'estrazione dei file: "$1"',
			'errNetUnMount'        : 'Impossibile smontare', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Non convertibile nel formato UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Per uploadare l0intera cartella usare Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timeout durante la ricerca di "$1". I risultati della ricerca sono parziali.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'E\' necessaria la riautorizzazione.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Il numero massimo di oggetti selezionabili Ã¨ $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossibile ripristinare dal cestino: destinazione di ripristino non trovata.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Impossibile trovare un editor per questo tipo di file.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Si Ã¨ verificato un errore lato server.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossibile svuotare la cartella "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Ci sono $1 ulteriori errori.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Puoi creare fino a $1 cartelle alla volta.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crea archivio',
			'cmdback'      : 'Indietro',
			'cmdcopy'      : 'Copia',
			'cmdcut'       : 'Taglia',
			'cmddownload'  : 'Scarica',
			'cmdduplicate' : 'Duplica',
			'cmdedit'      : 'Modifica File',
			'cmdextract'   : 'Estrai Archivio',
			'cmdforward'   : 'Avanti',
			'cmdgetfile'   : 'Seleziona File',
			'cmdhelp'      : 'Informazioni su...',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Informazioni',
			'cmdmkdir'     : 'Nuova cartella',
			'cmdmkdirin'   : 'In una nuova cartella', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nuovo file',
			'cmdopen'      : 'Apri',
			'cmdpaste'     : 'Incolla',
			'cmdquicklook' : 'Anteprima',
			'cmdreload'    : 'Ricarica',
			'cmdrename'    : 'Rinomina',
			'cmdrm'        : 'Elimina',
			'cmdtrash'     : 'Nel cestino', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ripristina', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ricerca file',
			'cmdup'        : 'Vai alla directory padre',
			'cmdupload'    : 'Carica File',
			'cmdview'      : 'Visualizza',
			'cmdresize'    : 'Ridimensiona Immagine',
			'cmdsort'      : 'Ordina',
			'cmdnetmount'  : 'Monta disco di rete', // added 18.04.2012
			'cmdnetunmount': 'Smonta', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Aggiungi ad Accesso rapido', // added 28.12.2014
			'cmdchmod'     : 'Cambia modalitÃ ', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Apri una cartella', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reimposta dimensione colonne', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Schermo intero', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Sposta', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Svuota la cartella', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annulla', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ripeti', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferenze', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Seleziona tutto', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Annulla selezione', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverti selezione', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Apri in una nuova finestra', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Nascondi (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Chiudi',
			'btnSave'   : 'Salva',
			'btnRm'     : 'Elimina',
			'btnApply'  : 'Applica',
			'btnCancel' : 'Annulla',
			'btnNo'     : 'No',
			'btnYes'    : 'SÃ¬',
			'btnDiscard': 'Scartare le modifiche',
			'btnMount'  : 'Monta',  // added 18.04.2012
			'btnApprove': 'Vai a $1 & approva', // from v2.1 added 26.04.2012
			'btnUnmount': 'Smonta', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converti', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Qui',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Disco',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tutti',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nome file',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Salva & Chiudi', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rinomina',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rinomina (tutto)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Indietro ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Avanti ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Salva come', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Apri cartella',
			'ntffile'     : 'Apri file',
			'ntfreload'   : 'Ricarica il contenuto della cartella',
			'ntfmkdir'    : 'Creazione delle directory in corso',
			'ntfmkfile'   : 'Creazione dei files in corso',
			'ntfrm'       : 'Eliminazione dei files in corso',
			'ntfcopy'     : 'Copia file in corso',
			'ntfmove'     : 'Spostamento file in corso',
			'ntfprepare'  : 'Preparazione della copia dei file.',
			'ntfrename'   : 'Sto rinominando i file',
			'ntfupload'   : 'Caricamento file in corso',
			'ntfdownload' : 'Downloading file in corso',
			'ntfsave'     : 'Salvataggio file in corso',
			'ntfarchive'  : 'Creazione archivio in corso',
			'ntfextract'  : 'Estrazione file dall\'archivio in corso',
			'ntfsearch'   : 'Ricerca files in corso',
			'ntfresize'   : 'Ridimensionamento immagini',
			'ntfsmth'     : 'Operazione in corso. Attendere...',
			'ntfloadimg'  : 'Caricamento immagine in corso',
			'ntfnetmount' : 'Montaggio disco di rete', // added 18.04.2012
			'ntfnetunmount': 'Smontaggio disco di rete', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Lettura dimensioni immagine', // added 20.05.2013
			'ntfreaddir'  : 'Lettura informazioni cartella', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Lettura URL del collegamento', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Modifica della modalitÃ  del file', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifica del nome del file caricato', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creazione del file da scaricare', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Ottenimento informazioni percorso', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processazione file caricato', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Spostamento nel cestino', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ripristino dal cestino', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Controllo cartella destinazione', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annullamento operazione precedente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Rifacimento precedente annullamento', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Controllo contenuto', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Cestino', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Sconosciuto',
			'Today'       : 'Oggi',
			'Yesterday'   : 'Ieri',
			'msJan'       : 'Gen',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mag',
			'msJun'       : 'Giu',
			'msJul'       : 'Lug',
			'msAug'       : 'Ago',
			'msSep'       : 'Set',
			'msOct'       : 'Ott',
			'msNov'       : 'Nov',
			'msDec'       : 'Dic',
			'January'     : 'Gennaio',
			'February'    : 'Febbraio',
			'March'       : 'Marzo',
			'April'       : 'Aprile',
			'May'         : 'Maggio',
			'June'        : 'Giugno',
			'July'        : 'Luglio',
			'August'      : 'Agosto',
			'September'   : 'Settembre',
			'October'     : 'Ottobre',
			'November'    : 'Novembre',
			'December'    : 'Dicembre',
			'Sunday'      : 'Domenica',
			'Monday'      : 'LunedÃ¬',
			'Tuesday'     : 'MartedÃ¬',
			'Wednesday'   : 'MercoledÃ¬',
			'Thursday'    : 'GiovedÃ¬',
			'Friday'      : 'VenerdÃ¬',
			'Saturday'    : 'Sabato',
			'Sun'         : 'Dom',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Gio',
			'Fri'         : 'Ven',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'per nome',
			'sortkind'          : 'per tipo',
			'sortsize'          : 'per dimensione',
			'sortdate'          : 'per data',
			'sortFoldersFirst'  : 'cartelle in testa',
			'sortperm'          : 'per permessi', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'per modalitÃ ',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'per possessore',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'per gruppo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Anche vista ad albero',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NuovoFile.txt', // added 10.11.2015
			'untitled folder'   : 'NuovaCartella',   // added 10.11.2015
			'Archive'           : 'NuovoArchivio',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NuovoFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Conferma richiesta',
			'confirmRm'       : 'Sei sicuro di voler eliminare i file?<br />L\'operazione non Ã¨ reversibile!',
			'confirmRepl'     : 'Sostituire i file ?',
			'confirmRest'     : 'Rimpiazza l\'oggetto esistente con quello nel cestino?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Non in formato UTF-8<br/>Convertire in UTF-8?<br/>Il contenuto diventerÃ  UTF-8 salvando dopo la conversione.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'La codifica caratteri di questo file non puÃ² essere determinata. SarÃ  temporaneamente convertito in UTF-8 per l\'editting.<br/>Per cortesia, selezionare la codifica caratteri per il file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Il contenuto Ã¨ stato modificato.<br/>Le modifiche andranno perse se non si salveranno.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Sei sicuro di voler cestinare gli oggetti?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Sei sicuro di voler spostare gli oggetti in "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Applica a tutti',
			'name'            : 'Nome',
			'size'            : 'Dimensione',
			'perms'           : 'Permessi',
			'modify'          : 'Modificato il',
			'kind'            : 'Tipo',
			'read'            : 'lettura',
			'write'           : 'scrittura',
			'noaccess'        : 'nessun accesso',
			'and'             : 'e',
			'unknown'         : 'sconosciuto',
			'selectall'       : 'Seleziona tutti i file',
			'selectfiles'     : 'Seleziona file',
			'selectffile'     : 'Seleziona il primo file',
			'selectlfile'     : 'Seleziona l\'ultimo file',
			'viewlist'        : 'Visualizza Elenco',
			'viewicons'       : 'Visualizza Icone',
			'viewSmall'       : 'Icone piccole', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Icone medie', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Icone grandi', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Icone molto grandi', // from v2.1.39 added 22.5.2018
			'places'          : 'Accesso rapido',
			'calc'            : 'Calcola',
			'path'            : 'Percorso',
			'aliasfor'        : 'Alias per',
			'locked'          : 'Bloccato',
			'dim'             : 'Dimensioni',
			'files'           : 'File',
			'folders'         : 'Cartelle',
			'items'           : 'Oggetti',
			'yes'             : 'sÃ¬',
			'no'              : 'no',
			'link'            : 'Collegamento',
			'searcresult'     : 'Risultati ricerca',
			'selected'        : 'oggetti selezionati',
			'about'           : 'Informazioni',
			'shortcuts'       : 'Scorciatoie',
			'help'            : 'Aiuto',
			'webfm'           : 'Gestore file WEB',
			'ver'             : 'Versione',
			'protocolver'     : 'versione protocollo',
			'homepage'        : 'Home del progetto',
			'docs'            : 'Documentazione',
			'github'          : 'Seguici su Github',
			'twitter'         : 'Seguici su Twitter',
			'facebook'        : 'Seguici su Facebook',
			'team'            : 'Gruppo',
			'chiefdev'        : 'sviluppatore capo',
			'developer'       : 'sviluppatore',
			'contributor'     : 'collaboratore',
			'maintainer'      : 'manutentore',
			'translator'      : 'traduttore',
			'icons'           : 'Icone',
			'dontforget'      : 'e non dimenticate di portare l\'asciugamano',
			'shortcutsof'     : 'Scorciatoie disabilitate',
			'dropFiles'       : 'Trascina i file qui',
			'or'              : 'o',
			'selectForUpload' : 'Seleziona file da caricare',
			'moveFiles'       : 'Sposta file',
			'copyFiles'       : 'Copia file',
			'restoreFiles'    : 'Ripristina oggetti', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Rimuovi da Accesso rapido',
			'aspectRatio'     : 'Proporzioni',
			'scale'           : 'Scala',
			'width'           : 'Larghezza',
			'height'          : 'Altezza',
			'resize'          : 'Ridimensione',
			'crop'            : 'Ritaglia',
			'rotate'          : 'Ruota',
			'rotate-cw'       : 'Ruota di 90Â° in senso orario',
			'rotate-ccw'      : 'Ruota di 90Â° in senso antiorario',
			'degree'          : 'Gradi',
			'netMountDialogTitle' : 'Monta disco di rete', // added 18.04.2012
			'protocol'            : 'Protocollo', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Porta', // added 18.04.2012
			'user'                : 'Utente', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Vuoi smontare $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Rilascia o incolla dal browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Rilascia o incolla files e indirizzi URL qui', // from v2.1 added 07.04.2014
			'encoding'        : 'Codifica', // from v2.1 added 19.12.2014
			'locale'          : 'Lingua',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destinazione: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Cerca per MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Possessore', // from v2.1 added 20.6.2015
			'group'           : 'Gruppo', // from v2.1 added 20.6.2015
			'other'           : 'Altri', // from v2.1 added 20.6.2015
			'execute'         : 'Esegui', // from v2.1 added 20.6.2015
			'perm'            : 'Permessi', // from v2.1 added 20.6.2015
			'mode'            : 'ModalitÃ ', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'La cartella Ã¨ vuota', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'La cartella Ã¨ vuota\\A Trascina e rilascia per aggiungere elementi', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'La cartella Ã¨ vuota\\A Premi a lungo per aggiungere elementi', // from v2.1.6 added 30.12.2015
			'quality'         : 'QualitÃ ', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sincr. automatica',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Sposta in alto',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Mostra URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Elementi selezionati ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID cartella', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permetti accesso non in linea', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Per ri-autenticarsi', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Caricamento...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Apri piÃ¹ files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Stai cercando di aprire $1 files. Sei sicuro di volerli aprire nel browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Nessun risultato soddisfa i criteri di ricerca', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Il file Ã¨ in modifica.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 elementi sono selezionati.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 elementi negli appunti.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'La ricerca incrementale Ã¨ solo dalla vista corrente.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reistanzia', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completato', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contestuale', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Orientamento pagina', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Percorsi base del volume', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetta', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Colore di sfondo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selettore colori', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Griglia di 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Abilitato', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabilitato', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Nessun risultato di ricerca nella vista corrente\\APremere [Invio] per espandere l\'oggetto della ricerca.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Nessun risultato di ricerca tramite prima lettera nella vista corrente.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etichetta di testo', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minuti rimanenti', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Riapri con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Salva con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Seleziona cartella', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Cerca tramite la prima lettera', // from v2.1.23 added 24.3.2017
			'presets'         : 'Opzioni predefinite', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Troppi oggetti da spostare nel cestino', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Area di testo', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Svuota la cartella "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Non ci sono oggetti nella cartella "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferenze', // from v2.1.26 added 28.6.2017
			'language'        : 'Impostazioni Lingua', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inizializza le impostazioni salvate nel browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Impostazioni ToolBar', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caratteri rimanenti.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 linee rimaste.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Dimensione file approssimativa', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fuoco sull\'elemento sotto al mouse',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seleziona', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Azione quando un file Ã¨ selezionato', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Apri con l\'editor usato l\'ultima volta', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverti selezione', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Sei sicuro di voler rinominare $1 selezionati come $2?<br/>Questo non puÃ² essere annullato!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Rinomina gruppo', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Numero', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Aggiungi prefisso', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Aggiungi sufisso', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Cambia estensione', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Impostazioni delle colonne (visualizzazione elenco)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Tutti i cambiamenti saranno immeditamente applicati.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Qualsiasi modifica non sarÃ  visibile fino a quando non si monta questo volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'I seguenti volumi montati su questo volume saranno smontati. Sei sicuro di volerlo smontare?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Seleziona Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmi per visualizzare l\'hash del file', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informazioni (pannello di informazioni sulla selezione)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Premi di nuovo per uscire.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Spazio di lavoro', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogo', // from v2.1.38 added 4.4.2018
			'all'             : 'Tutti', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Dimensione icona (Visualizzazione icone)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Apri la finestra di modifica massimizzata', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Dato che le API di conversione non sono disponibili, effettua la conversione sul sito web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Dopo la conversione, devi caricarlo con l\'URL o con il file scaricato per salvare il file convertito.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converti sul sito di $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrazioni', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Questo elFinder ha i seguenti servizi esterni integrati. Controlla i termini di utilizzo, le politiche sulla privacy, etc, prima di utilizzarli.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostra oggetti nascosti', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Visualizza/Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipi di file da abilitare con "Nuovo file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipo del file di testo', // from v2.1.41 added 7.8.2018
			'add'             : 'Aggiungi', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Descrizione', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Autore', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'Licenza', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'L\'oggetto non puÃ² essere salvato. Per non perdere le modifiche, devi esportarlo sul tuo computer.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Doppio click sul file per selezionarlo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Usa schermo intero', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Sconosciuto',
			'kindRoot'        : 'Percorso base del volume', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Cartella',
			'kindSelects'     : 'Selezioni', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias guasto',
			// applications
			'kindApp'         : 'Applicazione',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'Presentazione Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'Applicazione Flash',
			'kindPDF'         : 'Documento PDF',
			'kindTorrent'     : 'File Bittorrent',
			'kind7z'          : 'Archivio 7z',
			'kindTAR'         : 'Archivio TAR',
			'kindGZIP'        : 'Archivio GZIP',
			'kindBZIP'        : 'Archivio BZIP',
			'kindXZ'          : 'Archivio XZ',
			'kindZIP'         : 'Archivio ZIP',
			'kindRAR'         : 'Archivio RAR',
			'kindJAR'         : 'File Java JAR',
			'kindTTF'         : 'Font True Type',
			'kindOTF'         : 'Font Open Type',
			'kindRPM'         : 'Pacchetto RPM',
			// fonts
			'kindFont'        : 'File font',
			'kindSFNT'        : 'Font SFNT',
			'kindEOT'         : 'Font Embedded Open Type',
			'kindWOFF'        : 'Font Web Open Font Format',
			'kindWOFF2'       : 'Font Web Open Font Format 2',
			// texts
			'kindText'        : 'Documento di testo',
			'kindTextPlain'   : 'Testo Semplice',
			'kindPHP'         : 'File PHP',
			'kindCSS'         : 'File CSS (Cascading Style Sheet)',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'File Javascript',
			'kindRTF'         : 'File RTF (Rich Text Format)',
			'kindC'           : 'File C',
			'kindCHeader'     : 'File C (header)',
			'kindCPP'         : 'File C++',
			'kindCPPHeader'   : 'File C++ (header)',
			'kindShell'       : 'Script Unix shell',
			'kindPython'      : 'File Python',
			'kindJava'        : 'File Java',
			'kindRuby'        : 'File Ruby',
			'kindPerl'        : 'File Perl',
			'kindSQL'         : 'File SQL',
			'kindXML'         : 'File XML',
			'kindAWK'         : 'File AWK',
			'kindCSV'         : 'File CSV (Comma separated values)',
			'kindDOCBOOK'     : 'File Docbook XML',
			'kindMarkdown'    : 'Testo markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Immagine',
			'kindBMP'         : 'Immagine BMP',
			'kindJPEG'        : 'Immagine JPEG',
			'kindGIF'         : 'Immagine GIF',
			'kindPNG'         : 'Immagine PNG',
			'kindTIFF'        : 'Immagine TIFF',
			'kindTGA'         : 'Immagine TGA',
			'kindPSD'         : 'Immagine Adobe Photoshop',
			'kindXBITMAP'     : 'Immagine X bitmap',
			'kindPXM'         : 'Immagine Pixelmator',
			// media
			'kindAudio'       : 'File Audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Playlist MP3',
			'kindVideo'       : 'File Video',
			'kindVideoDV'     : 'Filmato DV',
			'kindVideoMPEG'   : 'Filmato MPEG',
			'kindVideoMPEG4'  : 'Filmato MPEG-4',
			'kindVideoAVI'    : 'Filmato AVI',
			'kindVideoMOV'    : 'Filmato Quick Time',
			'kindVideoWM'     : 'Filmato Windows Media',
			'kindVideoFlash'  : 'Filmato Flash',
			'kindVideoMKV'    : 'Filmato Matroska',
			'kindVideoOGG'    : 'Filmato Ogg'
		}
	};
}));

                                                                                                                                                   includes/File_manager/lib/js/i18n/elfinder.da.js                                                    0000644                 00000101100 15266052764 0015403 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Danish translation
 * @author Mark Topper (webman.io)
 * @author Helmuth Mikkelsen <helmuthm@gmail.com>
 * @version 2020-11-27
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.da = {
		translator : 'Mark Topper (webman.io), Helmuth Mikkelsen &lt;helmuthm@gmail.com&gt;',
		language   : 'Danish',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 27.11.2020 11:50
		fancyDateFormat : '$1 H:i', // will show like: I dag 11:50
		nonameDateFormat : 'Ymd-His', // noname upload will show like: 20201127-115006
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Fejl',
			'errUnknown'           : 'Ukendt fejl.',
			'errUnknownCmd'        : 'Ukendt kommando.',
			'errJqui'              : 'Ugyldig jQuery UI-konfiguration. Valgbare, trÃ¦kbare og dropbare komponenter skal medtages.',
			'errNode'              : 'elFinder krÃ¦ver DOM Element oprettet.',
			'errURL'               : 'Ugyldig elFinder konfiguration! URL option er ikke sat.',
			'errAccess'            : 'Adgang nÃ¦gtet.',
			'errConnect'           : 'Kan ikke fÃ¥ kontatkt med backend.',
			'errAbort'             : 'Forbindelse afbrudt.',
			'errTimeout'           : 'Forbindelse timeout.',
			'errNotFound'          : 'Backend ikke fundet.',
			'errResponse'          : 'Ugyldigt backend svar.',
			'errConf'              : 'Ugyldig backend konfiguration.',
			'errJSON'              : 'PHP JSON modul ikke installeret.',
			'errNoVolumes'         : 'LÃ¦sbare diskenheder er ikke tilgÃ¦ngelige.',
			'errCmdParams'         : 'Ugyldige parametre for kommando "$1".',
			'errDataNotJSON'       : 'Data er ikke JSON.',
			'errDataEmpty'         : 'Data er tom.',
			'errCmdReq'            : 'Backend-anmodning krÃ¦ver kommandonavn.',
			'errOpen'              : 'Kunne ikke Ã¥bne "$1".',
			'errNotFolder'         : 'Objektet er ikke en mappe.',
			'errNotFile'           : 'Objektet er ikke en fil.',
			'errRead'              : 'Kunne ikke lÃ¦se "$1".',
			'errWrite'             : 'Kunne ikke skrive til "$1".',
			'errPerm'              : 'Adgang nÃ¦gtet.',
			'errLocked'            : '"$1" er lÃ¥st og kan ikke blive omdÃ¸bt, flyttet eller slettet.',
			'errExists'            : 'Der findes allerede en fil ved navn "$1".',
			'errInvName'           : 'Ugyldigt filnavn.',
			'errInvDirname'        : 'Ugyldigt mappenavn.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappe ikke fundet.',
			'errFileNotFound'      : 'Fil ikke fundet.',
			'errTrgFolderNotFound' : 'Mappen "$1" blev ikke fundet.',
			'errPopup'             : 'Browser forhindrede Ã¥bning af pop up-vindue. For at Ã¥bne filen skal du aktivere den i browserindstillinger.',
			'errMkdir'             : 'Kunne ikke oprette mappen "$1".',
			'errMkfile'            : 'Kunne ikke oprette filen "$1".',
			'errRename'            : 'Kunne ikke omdÃ¸be "$1".',
			'errCopyFrom'          : 'Kopiering af filer fra diskenhed "$1" er ikke tilladt.',
			'errCopyTo'            : 'Kopiering af filer til diskenhed "$1" er ikke tilladt.',
			'errMkOutLink'         : 'Kan ikke oprette et link til uden for diskenhedsroden.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload fejl.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kunne ikke uploade "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ingen filer fundet til upload.',
			'errUploadTotalSize'   : 'Data overskrider den maksimalt tilladte stÃ¸rrelse.', // old name - errMaxSize
			'errUploadFileSize'    : 'Fil overskrider den maksimalt tilladte stÃ¸rrelse.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Filtype ikke godkendt.',
			'errUploadTransfer'    : '"$1" overfÃ¸rselsfejl.',
			'errUploadTemp'        : 'Kan ikke oprette midlertidig fil til upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" findes allerede pÃ¥ dette sted og kan ikke erstattes af objekt med en anden type.', // new
			'errReplace'           : 'Kan ikke erstatte "$1".',
			'errSave'              : 'Kunne ikke gemme "$1".',
			'errCopy'              : 'Kunne ikke kopiere "$1".',
			'errMove'              : 'Kunne ikke flytte "$1".',
			'errCopyInItself'      : 'Kunne ikke kopiere "$1" til sig selv.',
			'errRm'                : 'Kunne ikke slette "$1".',
			'errTrash'             : 'Kan ikke komme i papirkurven.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kunne ikke fjerne kildefil(er).',
			'errExtract'           : 'Kunne ikke udpakke filer fra "$1".',
			'errArchive'           : 'Kunne ikke oprette arkiv.',
			'errArcType'           : 'Arkivtypen er ikke understÃ¸ttet.',
			'errNoArchive'         : 'Filen er ikke et arkiv eller har ien kke-understÃ¸ttet arkivtype.',
			'errCmdNoSupport'      : 'Backend understÃ¸tter ikke denne kommando.',
			'errReplByChild'       : 'Mappen "$1" kan ikke erstattes af et element, den indeholder.',
			'errArcSymlinks'       : 'Af sikkerhedsmÃ¦ssige Ã¥rsager nÃ¦gtes at udpakke arkiver der indeholder symlinks eller filer med ikke-tilladte navne.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkivfiler overskrider den maksimalt tilladte stÃ¸rrelse.',
			'errResize'            : 'Kunne ikke Ã¦ndre stÃ¸rrelsen pÃ¥ "$1".',
			'errResizeDegree'      : 'Ugyldig rotationsgrad.',  // added 7.3.2013
			'errResizeRotate'      : 'Kunne ikke rotere billedet.',  // added 7.3.2013
			'errResizeSize'        : 'Ugyldig billedstÃ¸rrelse.',  // added 7.3.2013
			'errResizeNoChange'    : 'BilledstÃ¸rrelse ikke Ã¦ndret.',  // added 7.3.2013
			'errUsupportType'      : 'Ikke-understÃ¸ttet filtype.',
			'errNotUTF8Content'    : 'Filen "$1" er ikke i UTF-8 og kan ikke blive redigeret.',  // added 9.11.2011
			'errNetMount'          : 'Kunne ikke mounte "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ikke-understÃ¸ttet protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount mislykkedes.',         // added 17.04.2012
			'errNetMountHostReq'   : 'VÃ¦rten krÃ¦ves.', // added 18.04.2012
			'errSessionExpires'    : 'Din session er udlÃ¸bet pÃ¥ grund af inaktivitet.',
			'errCreatingTempDir'   : 'Kunne ikke oprette midlertidig mappe: "$1"',
			'errFtpDownloadFile'   : 'Kunne ikke downloade filen fra FTP: "$1"',
			'errFtpUploadFile'     : 'Kunne ikke uploade filen til FTP: "$1"',
			'errFtpMkdir'          : 'Kunne ikke oprette fjernmappe pÃ¥ FTP: "$1"',
			'errArchiveExec'       : 'Fejl under arkivering af filer: "$1"',
			'errExtractExec'       : 'Fejl under udpakning af filer: "$1"',
			'errNetUnMount'        : 'Kan ikke unmounte.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kan ikke konverteres til UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'PrÃ¸v den nyeste browser, hvis du vil uploade mappen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Time out under sÃ¸gning pÃ¥ "$1". SÃ¸geresultatet er delvis.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-autorisation er pÃ¥krÃ¦vet.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maksimalt antal valgbare emner er $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Kan ikke gendannes fra papirkurven. Kan ikke identificere gendannelsesdestinationen.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor blev ikke fundet til denne filtype.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Der opstod en fejl pÃ¥ serversiden.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Kunne ikke tÃ¸mme mappen "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Der er $1 flere fejl.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Opret arkiv',
			'cmdback'      : 'Tilbage',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klip',
			'cmddownload'  : 'Download',
			'cmdduplicate' : 'Dupliker',
			'cmdedit'      : 'Rediger fil',
			'cmdextract'   : 'Udpak filer fra arkiv',
			'cmdforward'   : 'Frem',
			'cmdgetfile'   : 'VÃ¦lg filer',
			'cmdhelp'      : 'Om denne software',
			'cmdhome'      : 'Hjem',
			'cmdinfo'      : 'Information',
			'cmdmkdir'     : 'Ny mappe',
			'cmdmkdirin'   : 'I en ny mappe', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Ã…ben',
			'cmdpaste'     : 'IndsÃ¦t',
			'cmdquicklook' : 'Vis',
			'cmdreload'    : 'GenindlÃ¦s',
			'cmdrename'    : 'OmdÃ¸b',
			'cmdrm'        : 'Slet',
			'cmdtrash'     : 'I papirkurven', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Gendan', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find filer',
			'cmdup'        : 'GÃ¥ til overordnet mappe',
			'cmdupload'    : 'Upload filer',
			'cmdview'      : 'Vis',
			'cmdresize'    : 'Tilpas stÃ¸rrelse & Roter',
			'cmdsort'      : 'Sorter',
			'cmdnetmount'  : 'Mount netvÃ¦rksdrev', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Til steder', // added 28.12.2014
			'cmdchmod'     : 'Skift tilstand', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ã…bn en mappe', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Nulstil sÃ¸jlebredde', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Fuld skÃ¦rm', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Flyt', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'TÃ¸m mappe', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Fortryd', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Gentag igen', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'PrÃ¦ferencer', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'VÃ¦lg alle', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'VÃ¦lg ingen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverter valg', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ã…bn i nyt vindue', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skjul (prÃ¦ference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Luk',
			'btnSave'   : 'Gem',
			'btnRm'     : 'Slet',
			'btnApply'  : 'Anvend',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Nej',
			'btnYes'    : 'Ja',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'GÃ¥ til $1 & godkend', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konverter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Diskenhed',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-type', // from v2.1 added 22.5.2015
			'btnFileName':'Filnavn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Gem & Luk', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'OmdÃ¸b',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'OmdÃ¸b(Alle)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Forrige ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'NÃ¦ste ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Gem som', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ã…ben mappe',
			'ntffile'     : 'Ã…ben fil',
			'ntfreload'   : 'GenindlÃ¦s mappeindhold',
			'ntfmkdir'    : 'Opretter mappe',
			'ntfmkfile'   : 'Opretter filer',
			'ntfrm'       : 'Sletter filer',
			'ntfcopy'     : 'Kopier filer',
			'ntfmove'     : 'Flytter filer',
			'ntfprepare'  : 'Kontrol af eksisterende emner',
			'ntfrename'   : 'OmdÃ¸b filer',
			'ntfupload'   : 'Uploader filer',
			'ntfdownload' : 'Downloader filer',
			'ntfsave'     : 'Gemmer filer',
			'ntfarchive'  : 'Opretter arkiv',
			'ntfextract'  : 'Udpakker filer fra arkiv',
			'ntfsearch'   : 'SÃ¸ger filer',
			'ntfresize'   : 'Ã†ndring af stÃ¸rrelsen pÃ¥ billeder',
			'ntfsmth'     : 'GÃ¸r noget',
			'ntfloadimg'  : 'Henter billede',
			'ntfnetmount' : 'Mounter netvÃ¦rksdrev', // added 18.04.2012
			'ntfnetunmount': 'Unmounter netvÃ¦rksdrev', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Henter billeddimension', // added 20.05.2013
			'ntfreaddir'  : 'LÃ¦ser folderinfomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'FÃ¥r URL til link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ã†ndring af filtilstand', // from v2.1 added 20.6.2015
			'ntfpreupload': 'BekrÃ¦ftelse af upload filnavn', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Oprettelse af en fil til download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'FÃ¥ stiinformation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Behandler den uploadede fil', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Smider i papirkurv', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'UdfÃ¸rer gendannelse fra papirkurven', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrollerer destinationsmappe', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Fortryder tidligere handling', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Gentager tidligere fortryd', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrol af indhold', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Papirkurv', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ukendt',
			'Today'       : 'I dag',
			'Yesterday'   : 'I gÃ¥r',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Marts',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'SÃ¸ndag',
			'Monday'      : 'Mandag',
			'Tuesday'     : 'Tirsdag',
			'Wednesday'   : 'Onsdag',
			'Thursday'    : 'Torsdag',
			'Friday'      : 'Fredag',
			'Saturday'    : 'LÃ¸rdag',
			'Sun'         : 'SÃ¸n',
			'Mon'         : 'Man',
			'Tue'         : 'Tir',
			'Wed'         : 'Ons',
			'Thu'         : 'Tor',
			'Fri'         : 'Fre',
			'Sat'         : 'LÃ¸r',

			/******************************** sort variants ********************************/
			'sortname'          : 'efter navn',
			'sortkind'          : 'efter type',
			'sortsize'          : 'efter stÃ¸rrelse',
			'sortdate'          : 'efter dato',
			'sortFoldersFirst'  : 'Mapper fÃ¸rst',
			'sortperm'          : 'efter tilladelse', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'efter mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'efter ejer',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'efter gruppe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'OgsÃ¥ Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NyFil.txt', // added 10.11.2015
			'untitled folder'   : 'NyFolder',   // added 10.11.2015
			'Archive'           : 'NytArkiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NyFil.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fil',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'BekrÃ¦ftelse pÃ¥krÃ¦vet',
			'confirmRm'       : 'Er du sikker pÃ¥ du vil slette valgte filer?<br/>Dette kan ikke fortrydes!',
			'confirmRepl'     : 'Erstat gammel fil med ny fil?',
			'confirmRest'     : 'Erstat eksisterende element med elementet i papirkurven?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ikke i UTF-8<br/>Konverter til UTF-8?<br/>Indholdet bliver UTF-8 ved at gemme efter konvertering.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Tegnkodning af denne fil kunne ikke registreres. Det er nÃ¸dvendigt at konvertere midlertidigt til UTF-8 til redigering.<br/>VÃ¦lg tegnkodning af denne fil.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Det er blevet Ã¦ndret.<br/>Du mister arbejde, hvis du ikke gemmer Ã¦ndringer.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Er du sikker pÃ¥, at du vil flytte emner til papirkurven?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Er du sikker pÃ¥, at du vil flytte emner til "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Anvend ved alle',
			'name'            : 'Navn',
			'size'            : 'StÃ¸rrelse',
			'perms'           : 'Rettigheder',
			'modify'          : 'Ã†ndret',
			'kind'            : 'Type',
			'read'            : 'lÃ¦se',
			'write'           : 'skrive',
			'noaccess'        : 'ingen adgang',
			'and'             : 'og',
			'unknown'         : 'ukendt',
			'selectall'       : 'VÃ¦lg alle filer',
			'selectfiles'     : 'VÃ¦lg fil(er)',
			'selectffile'     : 'VÃ¦lg fÃ¸rste fil',
			'selectlfile'     : 'VÃ¦lg sidste fil',
			'viewlist'        : 'Listevisning',
			'viewicons'       : 'Ikonvisning',
			'viewSmall'       : 'SmÃ¥ ikoner', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium ikoner', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Store ikoner', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ekstra store ikoner', // from v2.1.39 added 22.5.2018
			'places'          : 'Placeringer',
			'calc'            : 'Beregn',
			'path'            : 'Sti',
			'aliasfor'        : 'Alias for',
			'locked'          : 'LÃ¥st',
			'dim'             : 'StÃ¸rrelser',
			'files'           : 'Filer',
			'folders'         : 'Mapper',
			'items'           : 'Emner',
			'yes'             : 'ja',
			'no'              : 'nej',
			'link'            : 'Link',
			'searcresult'     : 'SÃ¸geresultater',
			'selected'        : 'valgte emner',
			'about'           : 'Om',
			'shortcuts'       : 'Genveje',
			'help'            : 'HjÃ¦lp',
			'webfm'           : 'Internet filmanager',
			'ver'             : 'Version',
			'protocolver'     : 'protokol version',
			'homepage'        : 'Projektside',
			'docs'            : 'Dokumentation',
			'github'          : 'Fork os pÃ¥ Github',
			'twitter'         : 'FÃ¸lg os pÃ¥ Twitter',
			'facebook'        : 'FÃ¸lg os pÃ¥ Facebook',
			'team'            : 'Hold',
			'chiefdev'        : 'hovedudvikler',
			'developer'       : 'udvikler',
			'contributor'     : 'bidragyder',
			'maintainer'      : 'vedligeholder',
			'translator'      : 'oversÃ¦tter',
			'icons'           : 'Ikoner',
			'dontforget'      : 'og glem ikke at tage dit hÃ¥ndklÃ¦de',
			'shortcutsof'     : 'Gemveje deaktiveret',
			'dropFiles'       : 'Drop filer hertil',
			'or'              : 'eller',
			'selectForUpload' : 'VÃ¦lg filer',
			'moveFiles'       : 'Flyt filer',
			'copyFiles'       : 'Kopier filer',
			'restoreFiles'    : 'Gendan emner', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Slet fra placering',
			'aspectRatio'     : 'SkÃ¦rmformat',
			'scale'           : 'Skala',
			'width'           : 'Bredde',
			'height'          : 'HÃ¸jde',
			'resize'          : 'Tilpas stÃ¸rrelse',
			'crop'            : 'BeskÃ¦r',
			'rotate'          : 'Roter',
			'rotate-cw'       : 'Roter 90 grader med uret',
			'rotate-ccw'      : 'Roter 90 grader mod uret',
			'degree'          : 'Grader',
			'netMountDialogTitle' : 'Mount netwÃ¦rkdrev', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'VÃ¦rt', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Bruger', // added 18.04.2012
			'pass'                : 'Kodeord', // added 18.04.2012
			'confirmUnmount'      : 'Unmounter du $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Slip eller indsÃ¦t filer fra browseren', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Slip filer, indsÃ¦t webadresser eller billeder (udklipsholder) her', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'SÃ¸g efter input MIME-type', // from v2.1 added 22.5.2015
			'owner'           : 'Ejer', // from v2.1 added 20.6.2015
			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
			'other'           : 'Andet', // from v2.1 added 20.6.2015
			'execute'         : 'UdfÃ¸r', // from v2.1 added 20.6.2015
			'perm'            : 'Tilladelse', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mappe er tom', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mappe er tom\\A Drop for at tilfÃ¸je enmer', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mappen er tom\\A Langt tryk for at tilfÃ¸je emner', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalitet', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Autosync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Flyt op',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Hent URL-link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Valgte emner ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Tillad offline adgang', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'For at godkende igen', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'IndlÃ¦ser nu...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ã…ben flere filer', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Du prÃ¸ver at Ã¥bne $1-filerne. Er du sikker pÃ¥, at du vil Ã¥bne i browseren?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'SÃ¸geresultaterne er tomme i sÃ¸gemÃ¥let.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Redigerer en fil.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Du har valgt $1 emner.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Du har $1 emner i udklipsholder.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementel sÃ¸gning er kun fra den aktuelle visning.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'GenindsÃ¦t', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 fÃ¦rdig', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontekstmenu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sidevending', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Diskenheds rÃ¸dder', // from v2.1.16 added 16.9.2016
			'reset'           : 'Nulstil', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Baggrundsfarve', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'FarvevÃ¦lger', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Aktiveret', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Deaktiveret', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'SÃ¸geresultaterne er tomme i den aktuelle visning.\\ATryk pÃ¥ [Enter] for at udvide sÃ¸gemÃ¥let.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'FÃ¸rstebogstavs sÃ¸geresultater er tomme i den aktuelle visning.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Tekstlabel', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minutter tilbage', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ã…bn igen med valgt encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Gem med valgt encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'VÃ¦lg mappe', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'FÃ¸rstebogstavs sÃ¸gning', // from v2.1.23 added 24.3.2017
			'presets'         : 'Forudindstillinger', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Det er for mange emner, sÃ¥ det kan ikke komme i papirkurven.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'TÃ¸m mappen "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Der er ingen emner i mappen "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'PrÃ¦ference', // from v2.1.26 added 28.6.2017
			'language'        : 'Sprog', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialiser de indstillinger, der er gemt i denne browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'VÃ¦rktÃ¸jslinjens indstillinger', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 tegn tilbage.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 linjer tilbage.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Omtrentlig filstÃ¸rrelse', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokuser pÃ¥ elementet i dialog med musemarkering',  // from v2.1.30 added 2.11.2017
			'select'          : 'VÃ¦lg', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Handling, nÃ¥r du vÃ¦lger fil', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ã…bn med den editor, der blev brugt sidst', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverter valg', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Er du sikker pÃ¥, at du vil omdÃ¸be $1 valgte emner som $2?<br/>Dette kan ikke fortrydes!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch omdÃ¸bning', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Tal', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'TilfÃ¸j prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'TilfÃ¸j suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Skift filendelse', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Kolonneindstillinger (listevisning)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alle Ã¦ndringer pÃ¥virker straks arkivet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Eventuelle Ã¦ndringer gennemfÃ¸res ikke, fÃ¸r denne enhed fjernes.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'FÃ¸lgende disk(e) mounted pÃ¥ denne enhed unmountes ogsÃ¥. Er du sikker pÃ¥ at unmounte den?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Valg info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmer, der viser filens hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info-emner (panelet til valg af info)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Tryk igen for at afslutte.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'VÃ¦rktÃ¸jslinje', // from v2.1.38 added 4.4.2018
			'workspace'       : 'ArbejdsomrÃ¥de', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alle', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'IkonstÃ¸rrelse (ikonvisning)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ã…bn det maksimerede editorvindue', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Da konvertering via API ikke er tilgÃ¦ngelig i Ã¸jeblikket, bedes du konvertere pÃ¥ webstedet.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Efter konvertering skal du uploade med elementets URL eller en downloadet fil for at gemme den konverterede fil.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konverter pÃ¥ stedet pÃ¥ $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrationer', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Denne elFinder har fÃ¸lgende eksterne tjenester integreret. Kontroller venligst vilkÃ¥rene for brug, fortrolighedspolitik osv. inden du bruger det.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Vis skjulte emner', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skjul skjulte emner', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Vis / Skjul skjulte emner', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Filtyper, der skal aktiveres med "Ny fil"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type af tekstfilen', // from v2.1.41 added 7.8.2018
			'add'             : 'TilfÃ¸j', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Standard', // from v2.1.43 added 19.10.2018
			'description'     : 'Beskrivelse', // from v2.1.43 added 19.10.2018
			'website'         : 'Hjemmeside', // from v2.1.43 added 19.10.2018
			'author'          : 'Forfatter', // from v2.1.43 added 19.10.2018
			'email'           : 'Mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licens', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Dette element kan ikke gemmes. For at undgÃ¥ at miste redigeringerne skal du eksportere til din pc.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dobbeltklik pÃ¥ filen for at vÃ¦lge den.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Brug fuldskÃ¦rmstilstand', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ukendt',
			'kindRoot'        : 'Diskenheds rod', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappe',
			'kindSelects'     : 'Valg', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Ã˜delagt alias',
			// applications
			'kindApp'         : 'Applikation',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prÃ¦sentation',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash applikation',
			'kindPDF'         : 'Flytbart Dokument Format (PDF)',
			'kindTorrent'     : 'Bittorrent fil',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR arkiv',
			'kindJAR'         : 'Java JAR fil',
			'kindTTF'         : 'True Type skrift',
			'kindOTF'         : 'Open Type skrift',
			'kindRPM'         : 'RPM pakke',
			// fonts
			'kindFont'        : 'Skrift',
			'kindSFNT'        : 'SFNT skrift',
			'kindEOT'         : 'Embedded Open Type skrift',
			'kindWOFF'        : 'Web Open Font Format skrift',
			'kindWOFF2'       : 'Web Open Font Format 2 skrift',
			// texts
			'kindText'        : 'Tekstdokument',
			'kindTextPlain'   : 'Ren tekst',
			'kindPHP'         : 'PHP-kode',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML-dokument',
			'kindJS'          : 'Javascript-kode',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'Ckkode',
			'kindCHeader'     : 'C header-kode',
			'kindCPP'         : 'C++-kode',
			'kindCPPHeader'   : 'C++ header-kode',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python-kode',
			'kindJava'        : 'Java-kode',
			'kindRuby'        : 'Ruby-kode',
			'kindPerl'        : 'Perlscript',
			'kindSQL'         : 'SQ- kode',
			'kindXML'         : 'XML-dokument',
			'kindAWK'         : 'AWK-kode',
			'kindCSV'         : 'Komma seperarede vÃ¦rdier',
			'kindDOCBOOK'     : 'Docbook XML-dokument',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Billede',
			'kindBMP'         : 'BMP-billede',
			'kindJPEG'        : 'JPEG-billede',
			'kindGIF'         : 'GIF-billede',
			'kindPNG'         : 'PNG-billede',
			'kindTIFF'        : 'TIFF-billede',
			'kindTGA'         : 'TGA-billede',
			'kindPSD'         : 'Adobe Photoshop-billede',
			'kindXBITMAP'     : 'X bitmap-billede',
			'kindPXM'         : 'Pixelmator-billede',
			// media
			'kindAudio'       : 'Lydmedie',
			'kindAudioMPEG'   : 'MPEG-lyd',
			'kindAudioMPEG4'  : 'MPEG-4-lyd',
			'kindAudioMIDI'   : 'MIDI-lyd',
			'kindAudioOGG'    : 'Ogg Vorbis-lyd',
			'kindAudioWAV'    : 'WAV-lyd',
			'AudioPlaylist'   : 'MP3-spilleliste',
			'kindVideo'       : 'Videomedie',
			'kindVideoDV'     : 'DV-video',
			'kindVideoMPEG'   : 'MPEG-video',
			'kindVideoMPEG4'  : 'MPEG-4-video',
			'kindVideoAVI'    : 'AVI-video',
			'kindVideoMOV'    : 'Quick Time-video',
			'kindVideoWM'     : 'Windows Media-video',
			'kindVideoFlash'  : 'Flash-video',
			'kindVideoMKV'    : 'Matroska-video',
			'kindVideoOGG'    : 'Ogg-video'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/js/i18n/elfinder.fa.js                                                    0000644                 00000123130 15266052765 0015415 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Ù�Ø§Ø±Ø³ÛŒ translation
 * @author Keyhan Mohammadpour <keyhan_universityworks@yahoo.com>
 * @author mhs prog <mhs.prog@gmail.com>
 * @version 2021-04-14
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fa = {
		translator : 'Keyhan Mohammadpour &lt;keyhan_universityworks@yahoo.com&gt;, Farhad Zare &lt;farhad@persianoc.com&gt;',
		language   : 'Ù�Ø§Ø±Ø³ÛŒ',
		direction  : 'rtl',
		dateFormat : 'd.m.Y H:i', // will show like: 14.04.2021 19:24
		fancyDateFormat : '$1 H:i', // will show like: Ø§Ù…Ø±ÙˆØ² 19:24
		nonameDateFormat : 'ymd-His', // noname upload will show like: 210414-192445
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Ø®Ø·Ø§',
			'errUnknown'           : 'Ø®Ø·Ø§ÛŒ Ù†Ø§Ø´Ù†Ø§Ø®ØªÙ‡.',
			'errUnknownCmd'        : 'Ø¯Ø³ØªÙˆØ± Ù†Ø§Ø´Ù†Ø§Ø®ØªÙ‡.',
			'errJqui'              : 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª Ú©ØªØ§Ø¨Ø®Ø§Ù†Ù‡ JQuery UI Ø´Ù…Ø§ Ø¨Ù‡ Ø¯Ø±Ø³ØªÛŒ Ø§Ù†Ø¬Ø§Ù… Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª. Ø§ÛŒÙ† Ú©ØªØ§Ø¨Ø®Ø§Ù†Ù‡ Ø¨Ø§ÛŒØ³ØªÛŒ Ø´Ø§Ù…Ù„ Resizable ØŒDraggable Ùˆ Droppable Ø¨Ø§Ø´Ø¯.',
			'errNode'              : 'elfinder Ø¨Ù‡ Ø¯Ø±Ø³ØªÛŒ Ø§ÛŒØ¬Ø§Ø¯ Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª.',
			'errURL'               : 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª elfinder Ø´Ù…Ø§ Ø¨Ù‡ Ø¯Ø±Ø³ØªÛŒ Ø§Ù†Ø¬Ø§Ù… Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª. ØªÙ†Ø¸ÛŒÙ… Url Ø±Ø§ Ø§ØµÙ„Ø§Ø­ Ù†Ù…Ø§ÛŒÛŒØ¯.',
			'errAccess'            : 'Ù…Ø­Ø¯ÙˆØ¯ÛŒØª Ø³Ø·Ø­ Ø¯Ø³ØªØ±Ø³ÛŒ',
			'errConnect'           : 'Ø§Ù…Ú©Ø§Ù† Ø§ØªØµØ§Ù„ Ø¨Ù‡ Ù…Ø¯ÛŒØ±ÛŒØª ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errAbort'             : 'Ø§Ø±ØªØ¨Ø§Ø· Ù‚Ø·Ø¹ Ø´Ø¯Ù‡ Ø§Ø³Øª.',
			'errTimeout'           : 'Ù…Ù‡Ù„Øª Ø²Ù…Ø§Ù†ÛŒ Ø§Ø±ØªØ¨Ø§Ø· Ø´Ù…Ø§ Ø¨Ù‡ Ø§ØªÙ…Ø§Ù… Ø±Ø³ÛŒØ¯Ù‡ Ø§Ø³Øª.',
			'errNotFound'          : 'ØªÙ†Ø¸ÛŒÙ… Ù…Ø¯ÛŒØ±ÛŒØª ÛŒØ§Ù�Øª Ù†Ø´Ø¯.',
			'errResponse'          : 'Ù¾Ø§Ø³Ø® Ø¯Ø±ÛŒØ§Ù�ØªÛŒ Ø§Ø² Ù…Ø¯ÛŒØ±ÛŒØª ØµØ­ÛŒØ­ Ù†Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errConf'              : 'ØªÙ†Ø·ÛŒÙ…Ø§Øª Ù…Ø¯ÛŒØ±ÛŒØª Ø¨Ù‡ Ø¯Ø±Ø³ØªÛŒ Ø§Ù†Ø¬Ø§Ù… Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª.',
			'errJSON'              : 'Ù…Ø§Ú˜ÙˆÙ„ PHP JSON Ù†ØµØ¨ Ù†ÛŒØ³Øª.',
			'errNoVolumes'         : 'Ø¯Ø±Ø§ÛŒÙˆÙ‡Ø§ÛŒ Ù‚Ø§Ø¨Ù„ Ø®ÙˆØ§Ù†Ø¯Ù† ÛŒØ§Ù�Øª Ù†Ø´Ø¯Ù†Ø¯.',
			'errCmdParams'         : 'Ù¾Ø§Ø±Ø§Ù…ØªØ±Ù‡Ø§ÛŒ Ø¯Ø³ØªÙˆØ± "$1" Ø¨Ù‡ ØµÙˆØ±Øª ØµØ­ÛŒØ­ Ø§Ø±Ø³Ø§Ù„ Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª.',
			'errDataNotJSON'       : 'Ø¯Ø§Ø¯Ù‡ Ù‡Ø§ Ø¯Ø± Ù‚Ø§Ù„Ø¨ JSON Ù†Ù…ÛŒ Ø¨Ø§Ø´Ù†Ø¯.',
			'errDataEmpty'         : 'Ø¯Ø§Ø¯Ù‡ Ø¯Ø±ÛŒØ§Ù�ØªÛŒ Ø®Ø§Ù„ÛŒ Ø§Ø³Øª.',
			'errCmdReq'            : 'Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø§Ø² Ø³Ù…Øª Ù…Ø¯ÛŒØ±ÛŒØª Ù†ÛŒØ§Ø²Ù…Ù†Ø¯ Ù†Ø§Ù… Ø¯Ø³ØªÙˆØ± Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errOpen'              : 'Ø§Ù…Ú©Ø§Ù† Ø¨Ø§Ø² Ù†Ù…ÙˆØ¯Ù† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errNotFolder'         : 'Ø¢ÛŒØªÙ… Ù…ÙˆØ±Ø¯Ù†Ø¸Ø± Ù¾ÙˆØ´Ù‡ Ù†ÛŒØ³Øª.',
			'errNotFile'           : 'Ø¢ÛŒØªÙ… Ù…ÙˆØ±Ø¯Ù†Ø¸Ø± Ù�Ø§ÛŒÙ„ Ù†ÛŒØ³Øª.',
			'errRead'              : 'Ø§Ù…Ú©Ø§Ù† Ø®ÙˆØ§Ù†Ø¯Ù† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errWrite'             : 'Ø§Ù…Ú©Ø§Ù† Ù†ÙˆØ´ØªÙ† Ø¯Ø± Ø¯Ø±ÙˆÙ† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errPerm'              : 'Ø´Ù…Ø§ Ù…Ø¬Ø§Ø² Ø¨Ù‡ Ø§Ù†Ø¬Ø§Ù… Ø§ÛŒÙ† Ø¹Ù…Ù„ Ù†Ù…ÛŒ Ø¨Ø§Ø´ÛŒØ¯.',
			'errLocked'            : '"$1" Ù‚Ù�Ù„ Ú¯Ø±Ø¯ÛŒØ¯Ù‡ Ø§Ø³Øª Ùˆ Ø´Ù…Ø§ Ù‚Ø§Ø¯Ø± Ø¨Ù‡ ØªØºÛŒÛŒØ± Ù†Ø§Ù… ØŒ Ø­Ø°Ù� Ùˆ ÛŒØ§ Ø¬Ø§Ø¨Ø¬Ø§ÛŒÛŒ Ø¢Ù† Ù†Ù…ÛŒ Ø¨Ø§Ø´ÛŒØ¯.',
			'errExists'            : 'Ù�Ø§ÛŒÙ„ÛŒ Ø¨Ø§ Ù†Ø§Ù… "$1" Ù‡Ù… Ø§Ú©Ù†ÙˆÙ† ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.',
			'errInvName'           : 'Ù†Ø§Ù… Ø§Ù†ØªØ®Ø§Ø¨ÛŒ Ø´Ù…Ø§ ØµØ­ÛŒØ­ Ù†Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errInvDirname'        : 'Ù†Ø§Ù… Ù¾ÙˆØ´Ù‡ ØºÛŒØ±Ù…Ø¹ØªØ¨Ø± Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ù¾ÙˆØ´Ù‡ Ù…ÙˆØ±Ø¯ Ù†Ø¸Ø± ÛŒØ§Ù�Øª Ù†Ø´Ø¯.',
			'errFileNotFound'      : 'Ù�Ø§ÛŒÙ„ Ù…ÙˆØ±Ø¯ Ù†Ø¸Ø± ÛŒØ§Ù�Øª Ù†Ø´Ø¯.',
			'errTrgFolderNotFound' : 'Ù¾ÙˆØ´Ù‡ Ù…Ù‚ØµØ¯ Ø¨Ø§ Ù†Ø§Ù… "$1" ÛŒØ§Ù�Øª Ù†Ø´Ø¯.',
			'errPopup'             : 'Ù…Ø±ÙˆØ±Ú¯Ø± Ø´Ù…Ø§ Ø§Ø± Ø¨Ø§Ø² Ø´Ø¯Ù† Ù¾Ù†Ø¬Ø±Ù‡ popup Ø¬Ù„ÙˆÚ¯ÛŒØ±ÛŒ Ù…ÛŒ Ú©Ù†Ø¯ØŒ Ù„Ø·Ù�Ø§ ØªÙ†Ø¸ÛŒÙ…Ø§Øª Ù…Ø±Ø¨ÙˆØ·Ù‡ Ø±Ø§ Ø¯Ø± Ù…Ø±ÙˆØ±Ú¯Ø± Ø®ÙˆØ¯ Ù�Ø¹Ø§Ù„ Ù†Ù…Ø§ÛŒÛŒØ¯.',
			'errMkdir'             : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ù¾ÙˆØ´Ù‡ Ø§ÛŒ Ø¨Ø§ Ù†Ø§Ù… "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errMkfile'            : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ÛŒ Ø¨Ø§ Ù†Ø§Ù… "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errRename'            : 'Ø§Ù…Ú©Ø§Ù† ØªØºÛŒÛŒØ± Ù†Ø§Ù… Ù�Ø§ÛŒÙ„ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errCopyFrom'          : 'Ú©Ù¾ÛŒ Ù†Ù…ÙˆØ¯Ù† Ø§Ø² Ø¯Ø±Ø§ÛŒÙˆ Ø¨Ø§ Ù†Ø§Ù… "$1" Ù…Ù…Ú©Ù† Ù†Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errCopyTo'            : 'Ú©Ù¾ÛŒ Ù†Ù…ÙˆØ¯Ù† Ø¨Ù‡ Ø¯Ø±Ø§ÛŒÙˆ Ø¨Ø§ Ù†Ø§Ù… "$1" Ù…Ù…Ú©Ù† Ù†Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errMkOutLink'         : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ù„ÛŒÙ†Ú© Ø¨Ù‡ Ø®Ø§Ø±Ø¬ Ø§Ø² Ù…Ø³ÛŒØ± Ø±ÛŒØ´Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Ø®Ø·Ø§ÛŒ Ø¢Ù¾Ù„ÙˆØ¯',  // old name - errUploadCommon
			'errUploadFile'        : 'Ø§Ù…Ú©Ø§Ù† Ø¢Ù¾Ù„ÙˆØ¯ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // old name - errUpload
			'errUploadNoFiles'     : 'Ù�Ø§ÛŒÙ„ÛŒ Ø¨Ø±Ø§ÛŒ Ø¢Ù¾Ù„ÙˆØ¯ ÛŒØ§Ù�Øª Ù†Ø´Ø¯.',
			'errUploadTotalSize'   : 'Ø­Ø¬Ù… Ø¯Ø§Ø¯Ù‡ Ø¨ÛŒØ´ Ø§Ø² Ø­Ø¯ Ù…Ø¬Ø§Ø² Ù…ÛŒ Ø¨Ø§Ø´Ø¯.', // old name - errMaxSize
			'errUploadFileSize'    : 'Ø­Ø¬Ù… Ù�Ø§ÛŒÙ„ Ø¨ÛŒØ´ Ø§Ø² Ø­Ø¯ Ù…Ø¬Ø§Ø² Ù…ÛŒ Ø¨Ø§Ø´Ø¯.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„ Ø§Ù†ØªØ®Ø§Ø¨ÛŒ Ù…Ø¬Ø§Ø² Ù†Ù…ÛŒ Ø¨Ø§Ø´Ø¯.',
			'errUploadTransfer'    : 'Ø¯Ø± Ø§Ù†ØªÙ‚Ø§Ù„ "$1" Ø®Ø·Ø§ÛŒÛŒ Ø±Ø® Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª.',
			'errUploadTemp'        : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ Ù…ÙˆÙ‚Øª Ø¬Ù‡Øª Ø¢Ù¾Ù„ÙˆØ¯ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Ø¢ÛŒØªÙ… "$1" Ø§Ø² Ù‚Ø¨Ù„ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ Ùˆ Ø§Ù…Ú©Ø§Ù† Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ Ø¢Ù† Ø¨Ø§ Ø¢ÛŒØªÙ…ÛŒ Ø§Ø² Ù†ÙˆØ¹ Ø¯ÛŒÚ¯Ø± ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // new
			'errReplace'           : 'Ø§Ù…Ú©Ø§Ù† Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errSave'              : 'Ø§Ù…Ú©Ø§Ù† Ø°Ø®ÛŒØ±Ù‡ Ú©Ø±Ø¯Ù† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errCopy'              : 'Ø§Ù…Ú©Ø§Ù† Ú©Ù¾ÛŒ Ú©Ø±Ø¯Ù† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errMove'              : 'Ø§Ù…Ú©Ø§Ù† Ø¬Ø§Ø¨Ø¬Ø§ÛŒÛŒ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errCopyInItself'      : 'Ø§Ù…Ú©Ø§Ù† Ú©Ù¾ÛŒ Ú©Ø±Ø¯Ù† "$1" Ø¯Ø± Ø¯Ø±ÙˆÙ† Ø®ÙˆØ¯Ø´ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errRm'                : 'Ø§Ù…Ú©Ø§Ù† Ø­Ø°Ù� Ú©Ø±Ø¯Ù† "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errTrash'             : 'Ø§Ù…Ú©Ø§Ù† Ø­Ø°Ù� ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ø§Ù…Ú©Ø§Ù† Ø­Ø°Ù� Ù�Ø§ÛŒÙ„(Ù‡Ø§) Ø§Ø² Ù…Ø¨Ø¯Ø§ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errExtract'           : 'Ø§Ù…Ú©Ø§Ù† Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errArchive'           : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errArcType'           : 'Ù†ÙˆØ¹ Ù†Ø§Ø´Ù†Ø§Ø®ØªÙ‡ Ø¨Ø±Ø§ÛŒ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡.',
			'errNoArchive'         : 'Ø§ÛŒÙ† Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ Ù†ÛŒØ³Øª ÛŒØ§ Ø§ÛŒÙ†Ú©Ù‡ Ø§ÛŒÙ† Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ Ù¾Ø´ØªÛŒØ¨Ø§Ù†ÛŒ Ù†Ù…ÛŒ Ø´ÙˆØ¯.',
			'errCmdNoSupport'      : 'Ù…Ø¯ÛŒØ±ÛŒØª Ø§Ø² Ø§ÛŒÙ† Ø¯Ø³ØªÙˆØ± Ù¾Ø´ØªÛŒØ¨Ø§Ù†ÛŒ Ù†Ù…ÛŒ Ú©Ù†Ø¯.',
			'errReplByChild'       : 'Ø§Ù…Ú©Ø§Ù† Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ Ù¾ÙˆØ´Ù‡ "$1" Ø¨Ø§ ÛŒÚ© Ø¢ÛŒØªÙ… Ø§Ø² Ø¯Ø±ÙˆÙ† Ø®ÙˆØ¯Ø´ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errArcSymlinks'       : 'Ø¨Ù‡ Ø¯Ù„Ø§ÛŒÙ„ Ù…Ø³Ø§Ø¦Ù„ Ø§Ù…Ù†ÛŒØªÛŒ Ø§Ù…Ú©Ø§Ù† Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ Ø¯Ø§Ø±Ø§ÛŒ symlinks ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // edited 24.06.2012
			'errArcMaxSize'        : 'Ù�Ø§ÛŒÙ„ Ù‡Ø§ÛŒ Ù�Ø´Ø±Ø¯Ù‡ Ø¨Ù‡ Ø­Ø¯Ø§Ú©Ø«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØ¹ÛŒÛŒÙ† Ø´Ø¯Ù‡ Ø±Ø³ÛŒØ¯Ù‡ Ø§Ù†Ø¯.',
			'errResize'            : 'Ø§Ù…Ú©Ø§Ù† ØªØºÛŒÛŒØ± Ø§Ù†Ø¯Ø§Ø²Ù‡ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',
			'errResizeDegree'      : 'Ø¯Ø±Ø¬Ù‡ Ú†Ø±Ø®Ø´ Ù†Ø§Ù…Ø¹ØªØ¨Ø± Ø§Ø³Øª.',  // added 7.3.2013
			'errResizeRotate'      : 'Ø§Ù…Ú©Ø§Ù† Ú†Ø±Ø®Ø´ ØªØµÙˆÛŒØ± ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',  // added 7.3.2013
			'errResizeSize'        : 'Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØµÙˆÛŒØ± Ù†Ø§Ù…Ø¹ØªØ¨Ø± Ø§Ø³Øª.',  // added 7.3.2013
			'errResizeNoChange'    : 'ØªØºÛŒÛŒØ±ÛŒ Ø¯Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØµÙˆÛŒØ± Ø§ÛŒØ¬Ø§Ø¯ Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª.',  // added 7.3.2013
			'errUsupportType'      : 'Ø§ÛŒÙ† Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„ Ù¾Ø´ØªÛŒØ¨Ø§Ù†ÛŒ Ù†Ù…ÛŒ Ø´ÙˆØ¯.',
			'errNotUTF8Content'    : 'Ù�Ø§ÛŒÙ„ "$1" Ø¨Ù‡ ØµÙˆØ±Øª UTF-8 Ø°Ø®ÛŒØ±Ù‡ Ù†Ø´Ø¯Ù‡ Ùˆ Ø§Ù…Ú©Ø§Ù† ÙˆÛŒØ±Ø§ÛŒØ´ Ø¢Ù† ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.',  // added 9.11.2011
			'errNetMount'          : 'Ø§Ù…Ú©Ø§Ù† Ø§ØªØµØ§Ù„ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ø§ÛŒÙ† Ù¾Ø±ÙˆØªÚ©Ù„ Ù¾Ø´ØªÛŒØ¨Ø§Ù†ÛŒ Ù†Ù…ÛŒ Ø´ÙˆØ¯.',     // added 17.04.2012
			'errNetMountFailed'    : 'Ø§ØªØµØ§Ù„ Ù†Ø§Ù…ÙˆÙ�Ù‚ Ø¨ÙˆØ¯.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ù…ÛŒØ²Ø¨Ø§Ù† Ù…ÙˆØ±Ø¯Ù†ÛŒØ§Ø² Ø§Ø³Øª.', // added 18.04.2012
			'errSessionExpires'    : 'Ø§Ø¹ØªØ¨Ø§Ø± Ø¬Ù„Ø³Ù‡ Ú©Ø§Ø±ÛŒ Ø´Ù…Ø§ Ø¨Ø¯Ù„ÛŒÙ„ Ø¹Ø¯Ù… Ù�Ø¹Ø§Ù„ÛŒØª Ø¨Ø±Ø§ÛŒ Ù…Ø¯Øª Ø²Ù…Ø§Ù† Ø·ÙˆÙ„Ø§Ù†ÛŒ Ø¨Ù‡ Ø§ØªÙ…Ø§Ù… Ø±Ø³ÛŒØ¯Ù‡ Ø§Ø³Øª.',
			'errCreatingTempDir'   : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ø¯Ø§ÛŒØ±Ú©ØªÙˆØ±ÛŒ Ù…ÙˆÙ‚Øª ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯: "$1"',
			'errFtpDownloadFile'   : 'Ø§Ù…Ú©Ø§Ù† Ø¯Ø±ÛŒØ§Ù�Øª Ù�Ø§ÛŒÙ„ Ø§Ø² FTP ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯: "$1"',
			'errFtpUploadFile'     : 'Ø§Ù…Ú©Ø§Ù† Ø¢Ù¾Ù„ÙˆØ¯ Ù�Ø§ÛŒÙ„ Ø¨Ù‡ FTP ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯: "$1"',
			'errFtpMkdir'          : 'Ø§Ù…Ú©Ø§Ù† Ø§ÛŒØ¬Ø§Ø¯ Ø¯Ø§ÛŒØ±Ú©ØªÙˆØ±ÛŒ Ø¨Ø±Ø±ÙˆÛŒ FTP ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯: "$1"',
			'errArchiveExec'       : 'Ø®Ø·Ø§ Ø¯Ø± Ø²Ù…Ø§Ù† Ù�Ø´Ø±Ø¯Ù‡ Ø³Ø§Ø²ÛŒ Ø§ÛŒÙ† Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§: "$1"',
			'errExtractExec'       : 'Ø®Ø·Ø§ Ø¯Ø± Ø²Ù…Ø§Ù† Ø¨Ø§Ø²Ú¯Ø´Ø§ÛŒÛŒ Ø§ÛŒÙ† Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§: "$1"',
			'errNetUnMount'        : 'Ø§Ù…Ú©Ø§Ù† Ù‚Ø·Ø¹ Ø§ØªØµØ§Ù„ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ø§Ù…Ú©Ø§Ù† ØªØ¨Ø¯ÛŒÙ„ Ø¨Ù‡ UTF-8 ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ø¬Ù‡Øª Ø¢Ù¾Ù„ÙˆØ¯ Ú©Ø±Ø¯Ù† Ù¾ÙˆØ´Ù‡ØŒ Ø§Ø² ÛŒÚ© Ù…Ø±ÙˆØ±Ú¯Ø± Ù…Ø¯Ø±Ù† Ø§Ø³ØªÙ�Ø§Ø¯Ù‡ Ù†Ù…Ø§ÛŒÛŒØ¯.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Ø¯Ø± Ù‡Ù†Ú¯Ø§Ù† Ø¬Ø³ØªØ¬Ùˆ Ø¨Ø±Ø§ÛŒ "$1" Ø®Ø·Ø§ÛŒÛŒ Ø±Ø® Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª. Ù†ØªÛŒØ¬Ù‡ Ø¬Ø³ØªØ¬Ùˆ Ø¨Ù‡ ØµÙˆØ±Øª Ù†Ø§ØªÙ…Ø§Ù… Ù…ÛŒ Ø¨Ø§Ø´Ø¯.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ø§Ø¹ØªØ¨Ø§Ø±Ø³Ù†Ø¬ÛŒ Ù…Ø¬Ø¯Ø¯ Ù…ÙˆØ±Ø¯Ù†ÛŒØ§Ø² Ø§Ø³Øª.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Ø­Ø¯Ø§Ú©Ø«Ø± ØªØ¹Ø¯Ø§Ø¯ Ø§Ù†ØªØ®Ø§Ø¨ Ù‚Ø§Ø¨Ù„ Ù‚Ø¨ÙˆÙ„ $1 Ù…ÛŒâ€ŒØ¨Ø§Ø´Ø¯.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ø§Ù…Ú©Ø§Ù† Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯. Ù…Ù‚ØµØ¯ Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ Ù†Ø§Ù…Ø´Ø®Øµ Ø§Ø³Øª.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'ÙˆÛŒØ±Ø§ÛŒØ´Ú¯Ø±ÛŒ Ø¨Ø±Ø§ÛŒ Ø§ÛŒÙ† Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„ ÛŒØ§Ù�Øª Ù†Ø´Ø¯.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ø®Ø·Ø§ÛŒÛŒ Ø¯Ø± Ø³Ù…Øª Ø³Ø±ÙˆØ± Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Ø§Ù…Ú©Ø§Ù† Ø®Ø§Ù„ÛŒ Ú©Ø±Ø¯Ù† Ù¾ÙˆØ´Ù‡ "$1" ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '$1 Ø®Ø·Ø§ÛŒ Ø¯ÛŒÚ¯Ø± Ù†ÛŒØ² ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡',
			'cmdback'      : 'Ø¨Ø§Ø²Ú¯Ø´Øª Ø¨Ù‡ Ø¹Ù‚Ø¨',
			'cmdcopy'      : 'Ú©Ù¾ÛŒ',
			'cmdcut'       : 'Ø¨Ø±ÛŒØ¯Ù†',
			'cmddownload'  : 'Ø¯Ø§Ù†Ù„ÙˆØ¯',
			'cmdduplicate' : 'ØªÚ©Ø«ÛŒØ± Ù�Ø§ÛŒÙ„',
			'cmdedit'      : 'ÙˆÛŒØ±Ø§ÛŒØ´ Ù…Ø­ØªÙˆØ§ÛŒ Ù�Ø§ÛŒÙ„',
			'cmdextract'   : 'Ø¨Ø§Ø²Ú¯Ø´Ø§ÛŒÛŒ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡',
			'cmdforward'   : 'Ø­Ø±Ú©Øª Ø¨Ù‡ Ø¬Ù„Ùˆ',
			'cmdgetfile'   : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§',
			'cmdhelp'      : 'Ø¯Ø±Ø¨Ø§Ø±Ù‡ Ø§ÛŒÙ† Ù†Ø±Ù…â€ŒØ§Ù�Ø²Ø§Ø±',
			'cmdhome'      : 'Ø±ÛŒØ´Ù‡',
			'cmdinfo'      : 'Ù…Ø´Ø§Ù‡Ø¯Ù‡ Ù…Ø´Ø®ØµØ§Øª',
			'cmdmkdir'     : 'Ù¾ÙˆØ´Ù‡ Ø¬Ø¯ÛŒØ¯',
			'cmdmkdirin'   : 'Ø§Ù†ØªÙ‚Ø§Ù„ Ø¨Ù‡ Ù¾ÙˆØ´Ù‡ Ø¬Ø¯ÛŒØ¯', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ù�Ø§ÛŒÙ„ Ø¬Ø¯ÛŒØ¯',
			'cmdopen'      : 'Ø¨Ø§Ø² Ú©Ø±Ø¯Ù†',
			'cmdpaste'     : 'Ú†Ø³Ø¨Ø§Ù†Ø¯Ù†',
			'cmdquicklook' : 'Ù¾ÛŒØ´ Ù†Ù…Ø§ÛŒØ´',
			'cmdreload'    : 'Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±ÛŒ Ù…Ø¬Ø¯Ø¯',
			'cmdrename'    : 'ØªØºÛŒÛŒØ± Ù†Ø§Ù…',
			'cmdrm'        : 'Ø­Ø°Ù�',
			'cmdtrash'     : 'Ø§Ù†ØªÙ‚Ø§Ù„ Ø¨Ù‡ Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ø¬Ø³ØªØ¬ÙˆÛŒ Ù�Ø§ÛŒÙ„',
			'cmdup'        : 'Ø±Ù�ØªÙ† Ø¨Ù‡ Ø³Ø·Ø­ Ø¨Ø§Ù„Ø§ØªØ±',
			'cmdupload'    : 'Ø¢Ù¾Ù„ÙˆØ¯ Ù�Ø§ÛŒÙ„',
			'cmdview'      : 'Ù…Ø´Ø§Ù‡Ø¯Ù‡',
			'cmdresize'    : 'ØªØºÛŒÛŒØ± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ùˆ Ú†Ø±Ø®Ø´',
			'cmdsort'      : 'Ù…Ø±ØªØ¨ Ø³Ø§Ø²ÛŒ',
			'cmdnetmount'  : 'Ø§ØªØµØ§Ù„ Ø¯Ø±Ø§ÛŒÙˆ Ø´Ø¨Ú©Ù‡', // added 18.04.2012
			'cmdnetunmount': 'Ù‚Ø·Ø¹ Ø§ØªØµØ§Ù„', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ø¨Ù‡ Ù…Ø³ÛŒØ±Ù‡Ø§ÛŒ', // added 28.12.2014
			'cmdchmod'     : 'ØªØºÛŒÛŒØ± Ø­Ø§Ù„Øª', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ø¨Ø§Ø²Ú©Ø±Ø¯Ù† ÛŒÚ© Ù¾ÙˆØ´Ù‡', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ø¨Ø§Ø²Ù†Ø´Ø§Ù†ÛŒ Ø¹Ø±Ø¶ Ø³ØªÙˆÙ†', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Ø­Ø§Ù„Øª Ù†Ù…Ø§ÛŒØ´ ØªÙ…Ø§Ù… ØµÙ�Ø­Ù‡', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Ø§Ù†ØªÙ‚Ø§Ù„', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ø®Ø§Ù„ÛŒ Ú©Ø±Ø¯Ù† Ù¾ÙˆØ´Ù‡', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Ø®Ù†Ø«ÛŒâ€ŒØ³Ø§Ø²ÛŒ', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ø§Ù†Ø¬Ø§Ù… Ù…Ø¬Ø¯Ø¯', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù‡Ù…Ù‡ Ù…ÙˆØ§Ø±Ø¯', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Ù„ØºÙˆ Ø§Ù†ØªØ®Ø§Ø¨', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Ø§Ù†ØªØ®Ø§Ø¨ Ù…Ø¹Ú©ÙˆØ³', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ø¯Ø± Ù¾Ù†Ø¬Ø±Ù‡ Ø¬Ø¯ÛŒØ¯', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ù…Ø®Ù�ÛŒ (Ù¾ÛŒØ´Ù†Ù‡Ø§Ø¯ÛŒ)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ø¨Ø³ØªÙ†',
			'btnSave'   : 'Ø°Ø®ÛŒØ±Ù‡',
			'btnRm'     : 'Ø­Ø°Ù�',
			'btnApply'  : 'Ø§Ø¹Ù…Ø§Ù„',
			'btnCancel' : 'Ø§Ù†ØµØ±Ø§Ù�',
			'btnNo'     : 'Ø®ÛŒØ±',
			'btnYes'    : 'Ø¨Ù„ÛŒ',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Ø§ØªØµØ§Ù„',  // added 18.04.2012
			'btnApprove': 'Ø±Ù�ØªÙ† Ø¨Ù‡ $1 Ùˆ ØªØ§ÛŒÛŒØ¯', // from v2.1 added 26.04.2012
			'btnUnmount': 'Ù‚Ø·Ø¹ Ø§ØªØµØ§Ù„', // from v2.1 added 30.04.2012
			'btnConv'   : 'ØªØ¨Ø¯ÛŒÙ„', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ø§ÛŒÙ†Ø¬Ø§',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ø¯Ø±Ø§ÛŒÙˆ',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ù‡Ù…Ù‡',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„', // from v2.1 added 22.5.2015
			'btnFileName':'Ù†Ø§Ù… Ù�Ø§ÛŒÙ„',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Ø°Ø®ÛŒØ±Ù‡ Ùˆ Ø¨Ø³ØªÙ†', // from v2.1 added 12.6.2015
			'btnBackup' : 'Ù¾Ø´ØªÛŒØ¨Ø§Ù†â€ŒÚ¯ÛŒØ±ÛŒ', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ØªØºÛŒÛŒØ± Ù†Ø§Ù…',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'ØªØºÛŒÛŒØ± Ù†Ø§Ù…(Ù‡Ù…Ù‡)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Ù‚Ø¨Ù„ÛŒ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Ø¨Ø¹Ø¯ÛŒ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Ø°Ø®ÛŒØ±Ù‡ Ø¨Ø§ Ù†Ø§Ù… Ø¬Ø¯ÛŒØ¯', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ù¾ÙˆØ´Ù‡',
			'ntffile'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ù�Ø§ÛŒÙ„',
			'ntfreload'   : 'Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±ÛŒ Ù…Ø¬Ø¯Ø¯ Ù…Ø­ØªÙˆÛŒØ§Øª Ù¾ÙˆØ´Ù‡',
			'ntfmkdir'    : 'Ø¯Ø± Ø­Ø§Ù„ Ø§ÛŒØ¬Ø§Ø¯ Ù¾ÙˆØ´Ù‡',
			'ntfmkfile'   : 'Ø¯Ø± Ø­Ø§Ù„ Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„',
			'ntfrm'       : 'Ø¯Ø± Ø­Ø§Ù„ Ø­Ø°Ù� Ù…ÙˆØ§Ø±Ø¯ Ù…ÙˆØ±Ø¯Ù†Ø¸Ø±',
			'ntfcopy'     : 'Ø¯Ø± Ø­Ø§Ù„ Ú©Ù¾ÛŒ Ù…ÙˆØ§Ø±Ø¯ Ù…ÙˆØ±Ø¯Ù†Ø¸Ø±',
			'ntfmove'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø§Ù†ØªÙ‚Ø§Ù„ Ù…ÙˆØ§Ø±Ø¯ Ù…ÙˆØ±Ø¯Ù†Ø¸Ø±',
			'ntfprepare'  : 'Ø¨Ø±Ø±Ø³ÛŒ Ù…ÙˆØ§Ø±Ø¯ Ù…ÙˆØ¬ÙˆØ¯',
			'ntfrename'   : 'Ø¯Ø± Ø­Ø§Ù„ ØªØºÛŒÛŒØ± Ù†Ø§Ù… Ù�Ø§ÛŒÙ„',
			'ntfupload'   : 'Ø¯Ø± Ø­Ø§Ù„ Ø¢Ù¾Ù„ÙˆØ¯ Ù�Ø§ÛŒÙ„',
			'ntfdownload' : 'Ø¯Ø± Ø­Ø§Ù„ Ø¯Ø§Ù†Ù„ÙˆØ¯ Ù�Ø§ÛŒÙ„',
			'ntfsave'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø°Ø®ÛŒØ±Ù‡ Ù�Ø§ÛŒÙ„',
			'ntfarchive'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡',
			'ntfextract'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ù�Ø§ÛŒÙ„ Ù‡Ø§ Ø§Ø² Ø­Ø§Ù„Øª Ù�Ø´Ø±Ø¯Ù‡',
			'ntfsearch'   : 'Ø¯Ø± Ø­Ø§Ù„ Ø¬Ø³ØªØ¬ÙˆÛŒ Ù�Ø§ÛŒÙ„',
			'ntfresize'   : 'Ø¯Ø± Ø­Ø§Ù„ ØªØºÛŒÛŒØ± Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØµØ§ÙˆÛŒØ±',
			'ntfsmth'     : 'Ø¯Ø±Ø­Ø§Ù„ Ø§Ù†Ø¬Ø§Ù… Ø¹Ù…Ù„ÛŒØ§Øª ....',
			'ntfloadimg'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±ÛŒ ØªØµÙˆÛŒØ±',
			'ntfnetmount' : 'Ø¯Ø± Ø­Ø§Ù„ Ø§ØªØµØ§Ù„ Ø¯Ø±Ø§ÛŒÙˆ Ø´Ø¨Ú©Ù‡', // added 18.04.2012
			'ntfnetunmount': 'Ù‚Ø·Ø¹ Ø§ØªØµØ§Ù„ Ø¯Ø±Ø§ÛŒÙˆ Ø´Ø¨Ú©Ù‡', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Ø¯Ø± Ø­Ø§Ù„ Ù…Ø­Ø§Ø³Ø¨Ù‡ Ø§Ø¨Ø¹Ø§Ø¯ ØªØµÙˆÛŒØ±', // added 20.05.2013
			'ntfreaddir'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø¯Ø±ÛŒØ§Ù�Øª Ù…Ø´Ø®ØµØ§Øª Ù¾ÙˆØ´Ù‡', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Ø¯Ø± Ø­Ø§Ù„ Ø¯Ø±ÛŒØ§Ù�Øª URL', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ø¯Ø± Ø­Ø§Ù„ ØªØºÛŒÛŒØ± Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Ø¯Ø± Ø­Ø§Ù„ ØªØ§ÛŒÛŒØ¯ Ù†Ø§Ù… Ù�Ø§ÛŒÙ„ Ø¬Ù‡Øª Ø¢Ù¾Ù„ÙˆØ¯', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ø¯Ø± Ø­Ø§Ù„ Ø§ÛŒØ¬Ø§Ø¯ Ù�Ø§ÛŒÙ„ Ø¬Ù‡Øª Ø¯Ø§Ù†Ù„ÙˆØ¯', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø¯Ø±ÛŒØ§Ù�Øª Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ù…Ø³ÛŒØ±', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Ø¯Ø± Ø­Ø§Ù„ Ù¾Ø±Ø¯Ø§Ø²Ø´ Ù�Ø§ÛŒÙ„ Ø¢Ù¾Ù„ÙˆØ¯ Ø´Ø¯Ù‡', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Ø¯Ø± Ø­Ø§Ù„ Ø§Ù†ØªÙ‚Ø§Ù„ Ø¨Ù‡ Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ Ø§Ø² Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Ø¨Ø±Ø±Ø³ÛŒ Ù¾ÙˆØ´Ù‡ Ù…Ù‚ØµØ¯', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø®Ù†Ø«ÛŒâ€ŒØ³Ø§Ø²ÛŒ Ø¢Ø®Ø±ÛŒÙ† Ø¹Ù…Ù„ÛŒØ§Øª', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ø¯Ø± Ø­Ø§Ù„ Ø§Ù†Ø¬Ø§Ù… Ù…Ø¬Ø¯Ø¯ Ø¢Ø®Ø±ÛŒÙ† Ø¹Ù…Ù„ÛŒØ§Øª', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø±Ø±Ø³ÛŒ Ù…Ø·Ø§Ù„Ø¨', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ù†Ø§Ù…Ø¹Ù„ÙˆÙ…',
			'Today'       : 'Ø§Ù…Ø±ÙˆØ²',
			'Yesterday'   : 'Ø¯ÛŒØ±ÙˆØ²',
			'msJan'       : 'Ú˜Ø§Ù†ÙˆÛŒÙ‡',
			'msFeb'       : 'Ù�ÙˆØ±ÛŒÙ‡',
			'msMar'       : 'Ù…Ø§Ø±Ø³',
			'msApr'       : 'Ø¢ÙˆØ±ÛŒÙ„',
			'msMay'       : 'Ù…ÛŒ',
			'msJun'       : 'Ø¬ÙˆÙ†',
			'msJul'       : 'Ø¬ÙˆÙ„Ø§ÛŒ',
			'msAug'       : 'Ø¢Ú¯ÙˆØ³Øª',
			'msSep'       : 'Ø³Ù¾ØªØ§Ù…Ø¨Ø±',
			'msOct'       : 'Ø§Ú©ØªØ¨Ø±',
			'msNov'       : 'Ù†ÙˆØ§Ù…Ø¨Ø±',
			'msDec'       : 'Ø¯Ø³Ø§Ù…Ø¨Ø±',
			'January'     : 'Ú˜Ø§Ù†ÙˆÛŒÙ‡',
			'February'    : 'Ù�ÙˆØ±ÛŒÙ‡',
			'March'       : 'Ù…Ø§Ø±Ø³',
			'April'       : 'Ø¢ÙˆØ±ÛŒÙ„',
			'May'         : 'Ù…ÛŒ',
			'June'        : 'Ø¬ÙˆÙ†',
			'July'        : 'Ø¬ÙˆÙ„Ø§ÛŒ',
			'August'      : 'Ø¢Ú¯ÙˆØ³Øª',
			'September'   : 'Ø³Ù¾ØªØ§Ù…Ø¨Ø±',
			'October'     : 'Ø§Ú©ØªØ¨Ø±',
			'November'    : 'Ù†ÙˆØ§Ù…Ø¨Ø±',
			'December'    : 'Ø¯Ø³Ø§Ù…Ø¨Ø±',
			'Sunday'      : 'ÛŒÚ©â€ŒØ´Ù†Ø¨Ù‡',
			'Monday'      : 'Ø¯ÙˆØ´Ù†Ø¨Ù‡',
			'Tuesday'     : 'Ø³Ù‡â€ŒØ´Ù†Ø¨Ù‡',
			'Wednesday'   : 'Ú†Ù‡Ø§Ø±Ø´Ù†Ø¨Ù‡',
			'Thursday'    : 'Ù¾Ù†Ø¬â€ŒØ´Ù†Ø¨Ù‡',
			'Friday'      : 'Ø¬Ù…Ø¹Ù‡',
			'Saturday'    : 'Ø´Ù†Ø¨Ù‡',
			'Sun'         : 'ÛŒÚ©â€ŒØ´Ù†Ø¨Ù‡',
			'Mon'         : 'Ø¯ÙˆØ´Ù†Ø¨Ù‡',
			'Tue'         : 'Ø³Ù‡â€ŒØ´Ù†Ø¨Ù‡',
			'Wed'         : 'Ú†Ù‡Ø§Ø±Ø´Ù†Ø¨Ù‡',
			'Thu'         : 'Ù¾Ù†Ø¬â€ŒØ´Ù†Ø¨Ù‡',
			'Fri'         : 'Ø¬Ù…Ø¹Ù‡',
			'Sat'         : 'Ø´Ù†Ø¨Ù‡',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ø¨Ø± Ø§Ø³Ø§Ø³ Ù†Ø§Ù…',
			'sortkind'          : 'Ø¨Ø± Ø§Ø³Ø§Ø³ Ù†ÙˆØ¹',
			'sortsize'          : 'Ø¨Ø± Ø§Ø³Ø§Ø³ Ø§Ù†Ø¯Ø§Ø²Ù‡',
			'sortdate'          : 'Ø¨Ø± Ø§Ø³Ø§Ø³ ØªØ§Ø±ÛŒØ®',
			'sortFoldersFirst'  : 'Ù¾ÙˆØ´Ù‡â€ŒÙ‡Ø§ Ø¯Ø± Ø§Ø¨ØªØ¯Ø§ÛŒ Ù„ÛŒØ³Øª',
			'sortperm'          : 'Ø¨Ø±Ø§Ø³Ø§Ø³ Ø³Ø·Ø­ Ø¯Ø³ØªØ±Ø³ÛŒ', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Ø¨Ø±Ø§Ø³Ø§Ø³ Ù…Ø¯ Ø¯Ø³ØªØ±Ø³ÛŒ',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Ø¨Ø±Ø§Ø³Ø§Ø³ Ù…Ø§Ù„Ú©',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Ø¨Ø±Ø§Ø³Ø§Ø³ Ú¯Ø±ÙˆÙ‡',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ù‡Ù…Ú†Ù†ÛŒÙ† Ù†Ù…Ø§ÛŒ Ø¯Ø±Ø®ØªÛŒ',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Ù�Ø§ÛŒÙ„ .txt Ø¬Ø¯ÛŒØ¯', // added 10.11.2015
			'untitled folder'   : 'Ù¾ÙˆØ´Ù‡ Ø¬Ø¯ÛŒØ¯',   // added 10.11.2015
			'Archive'           : 'Ø¨Ø§ÛŒÚ¯Ø§Ù†ÛŒ Ø¬Ø¯ÛŒØ¯',  // from v2.1 added 10.11.2015
			'untitled file'     : '$1 Ù�Ø§ÛŒÙ„ Ø¬Ø¯ÛŒØ¯',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Ù�Ø§ÛŒÙ„',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'ØªØ§ÛŒÛŒØ¯ Ù†Ù‡Ø§ÛŒÛŒ Ø¹Ù…Ù„ÛŒØ§Øª Ø¶Ø±ÙˆØ±ÛŒ Ø§Ø³Øª.',
			'confirmRm'       : 'Ø¢ÛŒØ§ Ù…Ø·Ù…Ø¦Ù†ÛŒØ¯ Ú©Ù‡ Ù…ÙˆØ§Ø±Ø¯ Ø§Ù†ØªØ®Ø§Ø¨ÛŒ Ø­Ø°Ù� Ø´ÙˆÙ†Ø¯ØŸ Ù…ÙˆØ§Ø±Ø¯ Ø­Ø¯Ù� Ø´Ø¯Ù‡ Ù‚Ø§Ø¨Ù„ Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ Ù†Ø®ÙˆØ§Ù‡Ù†Ø¯ Ø¨ÙˆØ¯!',
			'confirmRepl'     : 'Ù…Ø§Ù„ÛŒÙ„Ø¯ Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ Ù�Ø§ÛŒÙ„ Ù‚Ø¯ÛŒÙ…ÛŒ Ø¨Ø§ Ù�Ø§ÛŒÙ„ Ø¬Ø¯ÛŒØ¯ Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯ØŸ (Ø¨Ø±Ø§ÛŒ Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ Ù¾ÙˆØ´Ù‡ Ù…Ø­ØªÙˆØ§ÛŒ Ù‚Ø¯ÛŒÙ…ÛŒ Ø¨Ø§ Ù…Ø­ØªÙˆØ§ÛŒ Ù¾ÙˆØ´Ù‡ Ø¬Ø¯ÛŒØ¯ Ø§Ø¯ØºØ§Ù… Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯. Ø¨Ø±Ø§ÛŒ ØªÙ‡ÛŒÙ‡ Ù¾Ø´ØªÛŒØ¨Ø§Ù†ÛŒ Ùˆ Ø³Ù¾Ø³ Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ Ú¯Ø²ÛŒÙ†Ù‡ Ù¾Ø´ØªÛŒØ¨Ø§Ù†â€ŒÚ¯ÛŒØ±ÛŒ Ø±Ø§ Ø§Ù†ØªØ®Ø§Ø¨ Ù†Ù…Ø§ÛŒÛŒØ¯)',
			'confirmRest'     : 'Ø¢ÛŒØ§ Ù…Ø§ÛŒÙ„ÛŒØ¯ Ù…ÙˆØ§Ø±Ø¯ Ù…ÙˆØ¬ÙˆØ¯ Ø¨Ø§ Ù…ÙˆØ§Ø±Ø¯ Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ Ø´Ø¯Ù‡ Ø§Ø² Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ† Ø´ÙˆØ¯ØŸ', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 Ù†ÛŒØ³Øª<br/>ØªØ¨Ø¯ÛŒÙ„ Ø¨Ù‡ UTF-8 Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯ØŸ<br/>Ù¾Ø³ Ø§Ø² Ø°Ø®ÛŒØ±Ù‡ Ø³Ø§Ø²ÛŒ Ù…Ø­ØªÙˆØ§ Ø¨Ù‡ ØµÙˆØ±Øª UTF-8 Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'encoding Ø§ÛŒÙ† Ù�Ø§ÛŒÙ„ Ù‚Ø§Ø¨Ù„ ØªØ´Ø®ÛŒØµ Ù†ÛŒØ³Øª. Ø¬Ù‡Øª ÙˆÛŒØ±Ø§ÛŒØ´ Ù†ÛŒØ§Ø² Ø§Ø³Øª Ú©Ù‡ Ø¨Ù‡ ØµÙˆØ±Øª Ù…ÙˆÙ‚Øª Ø¨Ù‡ UTF-8 ØªØ¨Ø¯ÛŒÙ„ Ø´ÙˆØ¯.<br/>Ù„Ø·Ù�Ø§ encoding Ù�Ø§ÛŒÙ„ Ø±Ø§ Ø§Ù†ØªØ®Ø§Ø¨ Ù†Ù…Ø§ÛŒÛŒØ¯.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'ØªØºÛŒÛŒØ±Ø§ØªÛŒ Ø§Ø¹Ù…Ø§Ù„ Ø´Ø¯Ù‡ Ø§Ø³Øª.<br/>Ø¯Ø± ØµÙˆØ±Øª Ø¹Ø¯Ù… Ø°Ø®ÛŒØ±Ù‡ ØªØºÛŒÛŒØ±Ø§Øª Ø§Ø² Ø¨ÛŒÙ† Ø®ÙˆØ§Ù‡Ø¯ Ø±Ù�Øª.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ø¢ÛŒØ§ Ù…Ø·Ù…Ø¦Ù†ÛŒØ¯ Ú©Ù‡ Ø§ÛŒÙ† Ù…ÙˆØ§Ø±Ø¯ Ø¨Ù‡ Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª Ù…Ù†ØªÙ‚Ù„ Ø´ÙˆÙ†Ø¯ØŸ', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ø¢ÛŒØ§ Ù…Ø·Ù…Ø¦Ù† Ù‡Ø³ØªÛŒØ¯ Ú©Ù‡ Ù…ÛŒ Ø®ÙˆØ§Ù‡ÛŒØ¯ Ù…ÙˆØ§Ø±Ø¯ Ø±Ø§ Ø¨Ù‡ "$1" Ù…Ù†ØªÙ‚Ù„ Ú©Ù†ÛŒØ¯ØŸ', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Ø§Ø¹Ù…Ø§Ù„ ØªØºÛŒÛŒØ±Ø§Øª Ø¨Ù‡ Ù‡Ù…Ù‡ Ù…ÙˆØ§Ø±Ø¯',
			'name'            : 'Ù†Ø§Ù…',
			'size'            : 'Ø§Ù†Ø¯Ø§Ø²Ù‡',
			'perms'           : 'Ø³Ø·Ø­ Ø¯Ø³ØªØ±Ø³ÛŒ',
			'modify'          : 'Ø¢Ø®Ø±ÛŒÙ† ØªØºÛŒÛŒØ±Ø§Øª',
			'kind'            : 'Ù†ÙˆØ¹',
			'read'            : 'Ø®ÙˆØ§Ù†Ø¯Ù†',
			'write'           : 'Ù†ÙˆØ´ØªÙ†',
			'noaccess'        : 'Ø¯Ø³ØªØ±Ø³ÛŒ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯',
			'and'             : 'Ùˆ',
			'unknown'         : 'Ù†Ø§Ù…Ø¹Ù„ÙˆÙ…',
			'selectall'       : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù‡Ù…Ù‡ Ù…ÙˆØ§Ø±Ø¯',
			'selectfiles'     : 'Ø§Ù†ØªØ®Ø§Ø¨ ÛŒÚ© ÛŒØ§ Ú†Ù†Ø¯ Ù…ÙˆØ±Ø¯',
			'selectffile'     : 'Ø§Ù†ØªØ®Ø§Ø¨ Ø§ÙˆÙ„ÛŒÙ† Ù…ÙˆØ±Ø¯',
			'selectlfile'     : 'Ø§Ù†ØªØ®Ø§Ø¨ Ø¢Ø®Ø±ÛŒÙ† Ù…ÙˆØ±Ø¯',
			'viewlist'        : 'Ø­Ø§Ù„Øª Ù†Ù…Ø§ÛŒØ´ Ù„ÛŒØ³Øª',
			'viewicons'       : 'Ù†Ù…Ø§ÛŒØ´ Ø¨Ø§ Ø¢ÛŒÚ©ÙˆÙ†',
			'viewSmall'       : 'Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§ÛŒ Ú©ÙˆÚ†Ú©', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§ÛŒ Ù…ØªÙˆØ³Ø·', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§ÛŒ Ø¨Ø²Ø±Ú¯', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§ÛŒ Ø®ÛŒÙ„ÛŒ Ø¨Ø²Ø±Ú¯', // from v2.1.39 added 22.5.2018
			'places'          : 'Ù…Ø³ÛŒØ±Ù‡Ø§',
			'calc'            : 'Ù…Ø­Ø§Ø³Ø¨Ù‡',
			'path'            : 'Ù…Ø³ÛŒØ±',
			'aliasfor'        : 'Ù†Ø§Ù… Ù…Ø³ØªØ¹Ø§Ø± Ø¨Ø±Ø§ÛŒ',
			'locked'          : 'Ù‚Ù�Ù„ Ø´Ø¯Ù‡',
			'dim'             : 'Ø§Ø¨Ø¹Ø§Ø¯',
			'files'           : 'Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§',
			'folders'         : 'Ù¾ÙˆØ´Ù‡â€ŒÙ‡Ø§',
			'items'           : 'Ø¢ÛŒØªÙ…â€ŒÙ‡Ø§',
			'yes'             : 'Ø¨Ù„ÛŒ',
			'no'              : 'Ø®ÛŒØ±',
			'link'            : 'Ù„ÛŒÙ†Ú©',
			'searcresult'     : 'Ù†ØªØ§ÛŒØ¬ Ø¬Ø³ØªØ¬Ùˆ',
			'selected'        : 'Ù…ÙˆØ§Ø±Ø¯ Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡',
			'about'           : 'Ø¯Ø±Ø¨Ø§Ø±Ù‡',
			'shortcuts'       : 'Ù…ÛŒØ§Ù†Ø¨Ø±Ù‡Ø§',
			'help'            : 'Ø±Ø§Ù‡Ù†Ù…Ø§ÛŒÛŒ',
			'webfm'           : 'Ù…Ø¯ÛŒØ± Ù�Ø§ÛŒÙ„ ØªØ­Øª ÙˆØ¨',
			'ver'             : 'Ù†Ø³Ø®Ù‡',
			'protocolver'     : 'Ù†Ø³Ø®Ù‡ Ù¾Ø±ÙˆØªÚ©Ù„',
			'homepage'        : 'ØµÙ�Ø­Ù‡ Ø§ØµÙ„ÛŒ Ù¾Ø±ÙˆÚ˜Ù‡',
			'docs'            : 'Ù…Ø³ØªÙ†Ø¯Ø§Øª',
			'github'          : 'ØµÙ�Ø­Ù‡ Ù¾Ø±ÙˆÚ˜Ù‡ Ø±Ø§ Ø¯Ø± Github Ù…Ø´Ø§Ù‡Ø¯Ù‡ Ú©Ù†ÛŒØ¯',
			'twitter'         : 'Ù…Ø§ Ø±Ø§ Ø¯Ø± Twitter Ø¯Ù†Ø¨Ø§Ù„ Ú©Ù†ÛŒØ¯',
			'facebook'        : 'Ø¨Ù‡ Ù…Ø§ Ø¯Ø± facebook Ù…Ù„Ø­Ù‚ Ø´ÙˆÛŒØ¯',
			'team'            : 'ØªÛŒÙ…',
			'chiefdev'        : 'ØªÙˆØ³Ø¹Ù‡ Ø¯Ù‡Ù†Ø¯Ù‡ Ø§ØµÙ„ÛŒ',
			'developer'       : 'ØªÙˆØ³Ø¹Ù‡ Ø¯Ù‡Ù†Ø¯Ù‡',
			'contributor'     : 'Ù…Ø´Ø§Ø±Ú©Øª Ú©Ù†Ù†Ø¯Ù‡',
			'maintainer'      : 'Ù¾Ø´ØªÛŒØ¨Ø§Ù†',
			'translator'      : 'Ù…ØªØ±Ø¬Ù…',
			'icons'           : 'Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Ù…ÛŒØ§Ù†Ø¨Ø±Ù‡Ø§ ØºÛŒØ±Ù�Ø¹Ø§Ù„ Ø´Ø¯Ù‡â€ŒØ§Ù†Ø¯.',
			'dropFiles'       : 'Ù�Ø§ÛŒÙ„ Ù‡Ø§ Ø¯Ø± Ø§ÛŒÙ† Ø¨Ø®Ø´ Ø±Ù‡Ø§ Ú©Ù†ÛŒØ¯.',
			'or'              : 'ÛŒØ§',
			'selectForUpload' : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù�Ø§ÛŒÙ„ Ø¬Ù‡Øª Ø¢Ù¾Ù„ÙˆØ¯',
			'moveFiles'       : 'Ø§Ù†ØªÙ‚Ø§Ù„ Ù…ÙˆØ§Ø±Ø¯',
			'copyFiles'       : 'Ú©Ù¾ÛŒ Ù…ÙˆØ§Ø±Ø¯',
			'restoreFiles'    : 'Ø¨Ø§Ø²ÛŒØ§Ø¨ÛŒ Ù…ÙˆØ§Ø±Ø¯', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Ø­Ø°Ù�',
			'aspectRatio'     : 'Ù†Ø³Ø¨Øª ØªØµÙˆÛŒØ±',
			'scale'           : 'Ù…Ù‚ÛŒØ§Ø³',
			'width'           : 'Ø·ÙˆÙ„',
			'height'          : 'Ø§Ø±ØªÙ�Ø§Ø¹',
			'resize'          : 'ØªØºÛŒÛŒØ± Ø§Ù†Ø¯Ø§Ø²Ù‡',
			'crop'            : 'Ø¨Ø±ÛŒØ¯Ù†',
			'rotate'          : 'Ú†Ø±Ø®Ø§Ù†Ø¯Ù†',
			'rotate-cw'       : 'Ú†Ø±Ø®Ø§Ù†Ø¯Ù† 90 Ø¯Ø±Ø¬Ù‡ Ø¯Ø± Ø¬Ù‡Øª Ø¹Ù‚Ø±Ø¨Ù‡â€ŒÙ‡Ø§ÛŒ Ø³Ø§Ø¹Øª',
			'rotate-ccw'      : 'Ú†Ø±Ø®Ø§Ù†Ø¯Ù† 90 Ø¯Ø±Ø¬Ù‡ Ø¯Ø± Ø¬Ù‡Øª Ø®Ù„Ø§Ù� Ø¹Ù‚Ø±Ø¨Ù‡â€ŒÙ‡Ø§ÛŒ Ø³Ø§Ø¹Øª',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Ø§ØªØµØ§Ù„ Ø¯Ø±Ø§ÛŒÙˆ Ø´Ø¨Ú©Ù‡', // added 18.04.2012
			'protocol'            : 'Ù¾Ø±ÙˆØªÚ©Ù„', // added 18.04.2012
			'host'                : 'Ù…ÛŒØ²Ø¨Ø§Ù†', // added 18.04.2012
			'port'                : 'Ù¾ÙˆØ±Øª', // added 18.04.2012
			'user'                : 'Ù†Ø§Ù… Ú©Ø§Ø±Ø¨Ø±ÛŒ', // added 18.04.2012
			'pass'                : 'Ú©Ù„Ù…Ù‡ Ø¹Ø¨ÙˆØ±', // added 18.04.2012
			'confirmUnmount'      : 'Ù…Ø·Ù…Ø¦Ù† Ø¨Ù‡ Ù‚Ø·Ø¹ Ø§ØªØµØ§Ù„ $1 Ù…ÛŒ Ø¨Ø§Ø´Ø¯ØŸ',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§ Ø±Ø§ Ø¨Ù‡ Ø¯Ø§Ø®Ù„ Ø§ÛŒÙ† Ú©Ø§Ø¯Ø± Ø¨ÛŒÙ†Ø¯Ø§Ø²ÛŒØ¯ ÛŒØ§ Ø§Ø² Ø­Ø§Ù�Ø¸Ù‡ paste Ú©Ù†ÛŒØ¯', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§ Ø±Ø§ Ø¨Ù‡ Ø¯Ø§Ø®Ù„ Ø§ÛŒÙ† Ú©Ø§Ø¯Ø± Ø¨ÛŒÙ†Ø¯Ø§Ø²ÛŒØ¯ ÛŒØ§ Ø§Ø² Ø¯Ø§Ø®Ù„ Ø­Ø§Ù�Ø¸Ù‡ Ø¢Ø¯Ø±Ø³ URL/ØªØµØ§ÙˆÛŒØ± Ø±Ø§ paste Ú©Ù†ÛŒØ¯', // from v2.1 added 07.04.2014
			'encoding'        : 'Ù†ÙˆØ¹ Ú©Ø¯ Ú¯Ø°Ø§Ø±ÛŒ', // from v2.1 added 19.12.2014
			'locale'          : 'Ù†ÙˆØ¹ Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ù…Ù‚ØµØ¯: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Ø¬Ø³ØªØ¬Ùˆ Ø¨Ø±Ø§Ø³Ø§Ø³ MIME Type ÙˆØ§Ø±Ø¯ Ø´Ø¯Ù‡', // from v2.1 added 22.5.2015
			'owner'           : 'Ù…Ø§Ù„Ú©', // from v2.1 added 20.6.2015
			'group'           : 'Ú¯Ø±ÙˆÙ‡', // from v2.1 added 20.6.2015
			'other'           : 'Ø³Ø§ÛŒØ±', // from v2.1 added 20.6.2015
			'execute'         : 'Ù‚Ø§Ø¨Ù„ Ø§Ø¬Ø±Ø§', // from v2.1 added 20.6.2015
			'perm'            : 'Ø³Ø·Ø­ Ø¯Ø³ØªØ±Ø³ÛŒ', // from v2.1 added 20.6.2015
			'mode'            : 'Ù…Ø¯ Ø¯Ø³ØªØ±Ø³ÛŒ', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Ù¾ÙˆØ´Ù‡ Ø®Ø§Ù„ÛŒ Ø§Ø³Øª', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Ù¾ÙˆØ´Ù‡ Ø®Ø§Ù„ÛŒ Ø§Ø³ØªØŒ Ù�Ø§ÛŒÙ„â€ŒÙ‡Ø§ Ø±Ø§ Ø¬Ù‡Øª Ø§Ù�Ø²ÙˆØ¯Ù† Ú©Ø´ÛŒØ¯Ù‡ Ùˆ Ø±Ù‡Ø§ Ú©Ù†ÛŒØ¯', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Ù¾ÙˆØ´Ù‡ Ø®Ø§Ù„ÛŒ Ø§Ø³ØªØŒ ÛŒÚ© Ø§Ø´Ø§Ø±Ù‡ Ø·ÙˆÙ„Ø§Ù†ÛŒ Ø¨Ø±Ø§ÛŒ Ø§Ù�Ø²ÙˆØ¯Ù† Ù�Ø§ÛŒÙ„ Ú©Ø§Ù�ÛŒ Ø§Ø³Øª', // from v2.1.6 added 30.12.2015
			'quality'         : 'Ú©ÛŒÙ�ÛŒØª', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Ù‡Ù…Ú¯Ø§Ù…â€ŒØ³Ø§Ø²ÛŒ Ø®ÙˆØ¯Ú©Ø§Ø±',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Ø­Ø±Ú©Øª Ø¨Ù‡ Ø¨Ø§Ù„Ø§',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Ø¯Ø±ÛŒØ§Ù�Øª URL Ù„ÛŒÙ†Ú©', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ù…ÙˆØ§Ø±Ø¯ Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡ ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Ø´Ù†Ø§Ø³Ù‡ Ù¾ÙˆØ´Ù‡', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Ø§Ø¬Ø§Ø²Ù‡ Ø¯Ø³ØªØ±Ø³ÛŒ Ø¨Ù‡ ØµÙˆØ±Øª Ø¢Ù�Ù„Ø§ÛŒÙ†', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Ø¬Ù‡Øª Ø§Ø¹ØªØ¨Ø§Ø±Ø³Ù†Ø¬ÛŒ Ù…Ø¬Ø¯Ø¯', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ø¯Ø± Ø­Ø§Ù„ Ø¨Ø§Ø²Ú¯Ø°Ø§Ø±ÛŒ...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ø¨Ø§Ø²Ú©Ø±Ø¯Ù† Ú†Ù†Ø¯ÛŒÙ† Ù�Ø§ÛŒÙ„', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Ø´Ù…Ø§ Ù‚ØµØ¯ Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† $1 Ù�Ø§ÛŒÙ„ Ø±Ø§ Ø¯Ø§Ø±ÛŒØ¯. Ø¢ÛŒØ§ Ù…Ø§ÛŒÙ„ÛŒØ¯ Ù‡Ù…Ù‡ Ù…ÙˆØ§Ø±Ø¯ Ø¯Ø± Ù…Ø±ÙˆØ±Ú¯Ø± Ø¨Ø§Ø² Ø´ÙˆØ¯ØŸ', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Ù…ÙˆØ±Ø¯ÛŒ ÛŒØ§Ù�Øª Ù†Ø´Ø¯.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ø¯Ø± Ø­Ø§Ù„ ÙˆÛŒØ±Ø§ÛŒØ´ ÛŒÚ© Ù�Ø§ÛŒÙ„.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ø´Ù…Ø§ $1 Ù…ÙˆØ±Ø¯ Ø±Ø§ Ø§Ù†ØªØ®Ø§Ø¨ Ú©Ø±Ø¯Ù‡â€ŒØ§ÛŒØ¯.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Ø¯Ø± Ø­Ø§Ù�Ø¸Ù‡ $1 Ù…ÙˆØ±Ø¯ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Ø¬Ø³ØªØ¬ÙˆÛŒ Ø§Ù�Ø²Ø§ÛŒØ´ Ù�Ù‚Ø· Ø§Ø² Ù†Ù…Ø§ÛŒ Ù�Ø¹Ù„ÛŒ.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§Ù†Ø¯Ù†', // from v2.1.15 added 3.8.2016
			'complete'        : 'Ø¹Ù…Ù„ÛŒØ§Øª $1 Ø§Ù†Ø¬Ø§Ù… Ø´Ø¯', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Ù…Ù†Ùˆ Ø±Ø§Ø³Øª', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Ú†Ø±Ø®Ø´ ØµÙ�Ø­Ù‡', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Ø±ÛŒØ´Ù‡â€ŒÙ‡Ø§ÛŒ Ø¯Ø±Ø§ÛŒÙˆ', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ø¨Ø§Ø²Ù†Ø´Ø§Ù†ÛŒ', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Ø±Ù†Ú¯ Ù¾Ø³ Ø²Ù…ÛŒÙ†Ù‡', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Ø§Ù†ØªØ®Ø§Ø¨Ú¯Ø± Ø±Ù†Ú¯', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Ú¯Ø±ÛŒØ¯ 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ù�Ø¹Ø§Ù„ Ø´Ø¯Ù‡', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ØºÛŒØ±Ù�Ø¹Ø§Ù„ Ø´Ø¯Ù‡', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ø¯Ø± Ù†Ù…Ø§ÛŒ Ù�Ø¹Ù„ÛŒ Ù…ÙˆØ±Ø¯ÛŒ ÛŒØ§Ù�Øª Ù†Ø´Ø¯.\\AØ¨Ø§ Ù�Ø´Ø±Ø¯Ù† Ú©Ù„ÛŒØ¯ Enter Ù…Ø³ÛŒØ± Ø¬Ø³ØªØ¬Ùˆ Ø±Ø§ ØªØºÛŒÛŒØ± Ø¯Ù‡ÛŒØ¯.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Ø¨Ø±Ø§ÛŒ Ø¬Ø³ØªØ¬ÙˆÛŒ ØªÚ© Ø­Ø±Ù�ÛŒ Ø¯Ø± Ù†Ù…Ø§ÛŒØ´ Ù�Ø¹Ù„ÛŒ Ù…ÙˆØ±Ø¯ÛŒ ÛŒØ§Ù�Øª Ù†Ø´Ø¯.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Ø¹Ù†ÙˆØ§Ù† Ù…ØªÙ†ÛŒ', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Ø¯Ù‚ÛŒÙ‚Ù‡ Ø¨Ø§Ù‚ÛŒÙ…Ø§Ù†Ø¯Ù‡', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ù…Ø¬Ø¯Ø¯ Ø¨Ø§ Ú©Ø¯ Ú¯Ø°Ø§Ø±ÛŒ Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Ø°Ø®ÛŒØ±Ù‡ Ø¨Ø§ Ú©Ø¯ Ú¯Ø°Ø§Ø±ÛŒ Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù¾ÙˆØ´Ù‡', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Ø¬Ø³ØªØ¬ÙˆÛŒ ØªÚ© Ø­Ø±Ù�ÛŒ', // from v2.1.23 added 24.3.2017
			'presets'         : 'Ø§Ø² Ù¾ÛŒØ´ ØªØ¹ÛŒÛŒÙ† Ø´Ø¯Ù‡', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Ù…ÙˆØ§Ø±Ø¯ Ø²ÛŒØ§Ø¯ Ø§Ø³Øª Ùˆ Ø§Ù…Ú©Ø§Ù† Ø§Ù†ØªÙ‚Ø§Ù„ Ø¨Ù‡ Ø³Ø·Ù„ Ø¨Ø§Ø²ÛŒØ§Ù�Øª ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'ÙˆÛŒØ±Ø§ÛŒØ´ Ù…Ø­ØªÙˆØ§', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ø®Ø§Ù„ÛŒ Ú©Ø±Ø¯Ù† Ù¾ÙˆØ´Ù‡ "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ù¾ÙˆØ´Ù‡ "$1" â€ŒØ°Ø§ØªØ§ Ø®Ø§Ù„ÛŒ Ø§Ø³Øª.', // from v2.1.25 added 22.6.2017
			'preference'      : 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª', // from v2.1.26 added 28.6.2017
			'language'        : 'Ø²Ø¨Ø§Ù†', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Ø¨Ø§Ø²Ø¨ÛŒÙ†ÛŒ ØªÙ†Ø¸ÛŒÙ…Ø§Øª Ø°Ø®ÛŒØ±Ù‡ Ø´Ø¯Ù‡ Ø¯Ø± Ø§ÛŒÙ† Ù…Ø±ÙˆØ±Ú¯Ø±', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª Ù†ÙˆØ§Ø± Ø§Ø¨Ø²Ø§Ø±', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Ú©Ø§Ø±Ø§Ú©ØªØ± Ø¨Ø§Ù‚ÛŒÙ…Ø§Ù†Ø¯Ù‡.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '$1 Ø®Ø· Ù…Ø§Ù†Ø¯Ù‡ Ø§Ø³Øª',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Ù…Ø¬Ù…ÙˆØ¹', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Ø§Ù†Ø¯Ø§Ø²Ù‡ Ù�Ø§ÛŒÙ„ Ù†Ø§Ù…ØªØ¹Ø§Ø±Ù�', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Ø§Ù†ØªØ®Ø§Ø¨ Ø¹Ù†Ø§ØµØ± Ø¯Ø§Ø®Ù„ Ø¯ÛŒØ§Ù„ÙˆÚ¯ Ø¨Ø§ mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Ø§Ù†ØªØ®Ø§Ø¨', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ø¹Ù…Ù„ÛŒØ§Øª Ø¨Ù‡ Ù‡Ù†Ú¯Ø§Ù… Ø§Ù†ØªØ®Ø§Ø¨ Ù�Ø§ÛŒÙ„', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ø¨Ø§ ÙˆÛŒØ±Ø§ÛŒØ´Ú¯Ø± Ù…ÙˆØ±Ø¯Ø§Ø³ØªÙ�Ø§Ø¯Ù‡ Ø¯Ø± Ø¢Ø®Ø±ÛŒÙ† Ø¯Ù�Ø¹Ù‡', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Ø§Ù†ØªØ®Ø§Ø¨ Ù…Ø¹Ú©ÙˆØ³', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ø¢ÛŒØ§ Ù…Ø§ÛŒÙ„ Ø¨Ù‡ ØªØºÛŒÛŒØ± Ù†Ø§Ù… $1 Ù…ÙˆØ±Ø¯ Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡ Ù‡Ù…Ø§Ù†Ù†Ø¯ $2 Ù‡Ø³ØªÛŒØ¯ØŸ<br/>Ø§Ù…Ú©Ø§Ù† Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§Ù†Ø¯Ù† Ø§ÛŒÙ† ØªØºÛŒÛŒØ± Ù¾Ø³ Ø§Ø² Ø§Ø¹Ù…Ø§Ù„Ùˆ Ø¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'ØªØºÛŒÛŒØ±Ù†Ø§Ù… Ú¯Ø±ÙˆÙ‡ÛŒ', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Ø¹Ø¯Ø¯', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ø§Ù�Ø²ÙˆØ¯Ù† Ù¾ÛŒØ´ÙˆÙ†Ø¯', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ø§Ù�Ø²ÙˆØ¯Ù† Ù¾Ø³ÙˆÙ†Ø¯', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ØªØºÛŒÛŒØ± Ù¾Ø³ÙˆÙ†Ø¯ Ù�Ø§ÛŒÙ„', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ØªÙ†Ø¸ÛŒÙ…Ø§Øª Ø³ØªÙˆÙ†â€ŒÙ‡Ø§ (Ø­Ø§Ù„Øª Ù†Ù…Ø§ÛŒØ´ Ù„ÛŒØ³Øª)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'ØªÙ…Ø§Ù…ÛŒ ØªØºÛŒÛŒØ±Ø§Øª Ø¨Ù‡ ØµÙˆØ±Øª Ø¢Ù†ÛŒ Ø¨Ø±Ø±ÙˆÛŒ Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ Ø§Ø¹Ù…Ø§Ù„ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'ØªÙ…Ø§Ù…ÛŒ ØªØºÛŒÛŒØ±Ø§Øª ØªØ§ Ø²Ù…Ø§Ù†ÛŒ Ú©Ù‡ Ø§ØªØµØ§Ù„ Ø§ÛŒÙ† Ø¯Ø±Ø§ÛŒÙˆ Ù‚Ø·Ø¹ Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª Ø§Ø¹Ù…Ø§Ù„ Ù†Ø®ÙˆØ§Ù‡Ù†Ø¯ Ø´Ø¯.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Ø§ØªØµØ§Ù„ Ø¨Ù‡ Ø¯Ø±Ø§ÛŒÙˆÙ‡Ø§ÛŒ Ø²ÛŒØ± Ù‚Ø·Ø¹ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯. Ø¢ÛŒØ§ Ù…Ø·Ù…Ø¦Ù† Ø¨Ù‡ Ø§Ø¯Ø§Ù…Ù‡ Ø¹Ù…Ù„ÛŒØ§Øª Ù‡Ø³ØªÛŒØ¯ØŸ', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Ù…Ø´Ø®ØµØ§Øª', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Ø§Ù„Ú¯ÙˆØ±ÛŒØªÙ… Ù‡Ø§ÛŒ Ù†Ù…Ø§ÛŒØ´ hash Ù�Ø§ÛŒÙ„', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ù…ÙˆØ§Ø±Ø¯ Ø§Ø·Ù„Ø§Ø¹Ø§Øª', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ø¬Ù‡Øª Ø®Ø±ÙˆØ¬ Ù…Ø¬Ø¯Ø¯ Ù�Ø´Ø§Ø± Ø¯Ù‡ÛŒØ¯.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Ù†ÙˆØ§Ø± Ø§Ø¨Ø²Ø§Ø±', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ù�Ø¶Ø§ÛŒ Ú©Ø§Ø±ÛŒ', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Ù¾Ù†Ø¬Ø±Ù‡ Ø¯ÛŒØ§Ù„ÙˆÚ¯', // from v2.1.38 added 4.4.2018
			'all'             : 'Ù‡Ù…Ù‡', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¢ÛŒÚ©ÙˆÙ†â€ŒÙ‡Ø§ (Ù†Ù…Ø§ÛŒØ´ Ø¨Ù‡ ØµÙˆØ±Øª Ø¢ÛŒÚ©ÙˆÙ†)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ø¨Ø§Ø² Ú©Ø±Ø¯Ù† Ù¾Ù†Ø¬Ø±Ù‡ ÙˆÛŒØ±Ø§ÛŒØ´Ú¯Ø± Ø¨Ù‡ ØµÙˆØ±Øª ØªÙ…Ø§Ù… ØµÙ�Ø­Ù‡', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ø¨Ø¯Ù„ÛŒÙ„ Ø¯Ø± Ø¯Ø³ØªØ±Ø³ÛŒ Ù†Ø¨ÙˆØ¯Ù† ØªØ¨Ø¯ÛŒÙ„ Ø§Ø² Ø·Ø±ÛŒÙ‚ APIØŒ Ù„Ø·Ù�Ø§ Ø¨Ø±Ø±ÙˆÛŒ ÙˆØ¨ Ø³Ø§ÛŒØª ØªØ¨Ø¯ÛŒÙ„ Ø±Ø§ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡ÛŒØ¯.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Ù¾Ø³ Ø§Ø² ØªØ¨Ø¯ÛŒÙ„, Ø´Ù…Ø§ Ø¨Ø§ÛŒØ³ØªÛŒ Ø§Ø² Ø·Ø±ÛŒÙ‚ Ø¢Ø¯Ø±Ø³ URL ÛŒØ§ Ù�Ø§ÛŒÙ„ Ø¯Ø±ÛŒØ§Ù�Øª Ø´Ø¯Ù‡ Ø¢Ù¾Ù„ÙˆØ¯ Ø±Ø§ Ø§Ù†Ø¬Ø§Ø¯ Ø¯Ù‡ÛŒØ¯ ØªØ§ Ù�Ø§ÛŒÙ„ ØªØ¨Ø¯ÛŒÙ„ Ø´Ø¯Ù‡ Ø°Ø®ÛŒØ±Ù‡ Ú¯Ø±Ø¯Ø¯.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'ØªØ¨Ø¯ÛŒÙ„ Ø¨Ø±Ø±ÙˆÛŒ Ø³Ø§ÛŒØª Ø§Ø² $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Ù‡Ù…Ø§Ù‡Ù†Ú¯ Ø³Ø§Ø²ÛŒâ€ŒÙ‡Ø§', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'elFinder Ø¨Ø§ Ø³Ø±ÙˆÛŒØ³ Ù‡Ø§ÛŒ Ø²ÛŒØ± Ù‡Ù…Ø§Ù‡Ù†Ú¯ Ø´Ø¯Ù‡ Ø§Ø³Øª. Ù„Ø·Ù�Ø§ Ø§Ø¨ØªØ¯Ø§ Ø´Ø±Ø§ÛŒØ· Ø§Ø³ØªÙ�Ø§Ø¯Ù‡ØŒ Ù…Ù‚Ø±Ø±Ø§Øª Ø­Ø±ÛŒÙ… Ø®ØµÙˆØµÛŒ Ùˆ Ø³Ø§ÛŒØ± Ù…ÙˆØ§Ø±Ø¯ Ø±Ø§ Ù…Ø·Ø§Ù„Ø¹Ù‡ Ø¨Ù�Ø±Ù…Ø§ÛŒÛŒØ¯.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Ù†Ù…Ø§ÛŒØ´ Ù…ÙˆØ§Ø±Ø¯ Ù¾Ù†Ù‡Ø§Ù†', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ù…ÙˆØ§Ø±Ø¯ Ù…Ø®Ù�ÛŒ Ø±Ø§ Ù¾Ù†Ù‡Ø§Ù† Ú©Ù†ÛŒØ¯', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Ù†Ù…Ø§ÛŒØ´ / Ù¾Ù†Ù‡Ø§Ù† Ú©Ø±Ø¯Ù† Ù…ÙˆØ§Ø±Ø¯ Ù¾Ù†Ù‡Ø§Ù†', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Ù†ÙˆØ¹ Ù�Ø§ÛŒÙ„ Ù†ÙˆØ´ØªØ§Ø±ÛŒ', // from v2.1.41 added 7.8.2018
			'add'             : 'Ø§Ø¶Ø§Ù�Ù‡ Ú©Ø±Ø¯Ù†', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Ù¾ÛŒØ´ Ù�Ø±Ø¶', // from v2.1.43 added 19.10.2018
			'description'     : 'ØªÙˆØ¶ÛŒØ­Ø§Øª', // from v2.1.43 added 19.10.2018
			'website'         : 'ÙˆØ¨ Ø³Ø§ÛŒØª', // from v2.1.43 added 19.10.2018
			'author'          : 'Ù†ÙˆÛŒØ³ØªØ¯Ù‡', // from v2.1.43 added 19.10.2018
			'email'           : 'Ø§ÛŒÙ…ÛŒÙ„', // from v2.1.43 added 19.10.2018
			'license'         : 'Ù„Ø§ÛŒØ³Ù†Ø³', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ø§ÛŒÙ† Ù…ÙˆØ±Ø¯ Ø°Ø®ÛŒØ±Ù‡ Ù†Ù…ÛŒ Ø´ÙˆØ¯ Ø¨Ø±Ø§ÛŒ Ø¬Ù„ÙˆÚ¯ÛŒØ±ÛŒ Ø§Ø² Ø¯Ø³Øª Ø¯Ø§Ø¯Ù† ÙˆÛŒØ±Ø§ÛŒØ´ Ù‡Ø§ ØŒ Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ø¨Ù‡ Ø±Ø§ÛŒØ§Ù†Ù‡ Ø®ÙˆØ¯ Ù…Ù†ØªÙ‚Ù„ Ú©Ù†ÛŒØ¯.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Ø¨Ø±Ø§ÛŒ Ø§Ù†ØªØ®Ø§Ø¨ Ù¾Ø±ÙˆÙ†Ø¯Ù‡ ØŒ Ø¯ÙˆØ¨Ø§Ø± Ú©Ù„ÛŒÚ© Ú©Ù†ÛŒØ¯.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Ø§Ø² Ø­Ø§Ù„Øª ØªÙ…Ø§Ù… ØµÙ�Ø­Ù‡ Ø§Ø³ØªÙ�Ø§Ø¯Ù‡ Ú©Ù†ÛŒØ¯', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ù†Ø§Ù…Ø¹Ù„ÙˆÙ…',
			'kindRoot'        : 'Ø±ÛŒØ´Ù‡ Ø¯Ø±Ø§ÛŒÙˆ', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Ù¾ÙˆØ´Ù‡',
			'kindSelects'     : 'Ø§Ù†ØªØ®Ø§Ø¨ Ø´Ø¯Ù‡â€ŒÙ‡Ø§', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ø§Ø³Ù… Ù…Ø³ØªØ¹Ø§Ø±',
			'kindAliasBroken' : 'Ø§Ø³Ù… Ù…Ø³ØªØ¹Ø§Ø± Ù†Ø§Ù‚Øµ',
			// applications
			'kindApp'         : 'Ø¨Ø±Ù†Ø§Ù…Ù‡',
			'kindPostscript'  : 'Ø³Ù†Ø¯ Postscript',
			'kindMsOffice'    : 'Ø³Ù†Ø¯ Microsoft Office',
			'kindMsWord'      : 'Ø³Ù†Ø¯ Microsoft Word',
			'kindMsExcel'     : 'Ø³Ù†Ø¯ Microsoft Excel',
			'kindMsPP'        : 'Ù�Ø§ÛŒÙ„ Ø§Ø±Ø§ÛŒÙ‡ Microsoft Powerpoint',
			'kindOO'          : 'Ø³Ù†Ø¯ Open Office',
			'kindAppFlash'    : 'Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù�Ù„Ø´',
			'kindPDF'         : 'Ø³Ù†Ø¯ Ù‚Ø§Ø¨Ù„ Ø­Ù…Ù„ (PDF)',
			'kindTorrent'     : 'Ù�Ø§ÛŒÙ„ ØªÙˆØ±Ù†Øª',
			'kind7z'          : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ 7z',
			'kindTAR'         : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ TAR',
			'kindGZIP'        : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ GZIP',
			'kindBZIP'        : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ BZIP',
			'kindXZ'          : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ XZ',
			'kindZIP'         : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ ZIP',
			'kindRAR'         : 'Ù�Ø§ÛŒÙ„ Ù�Ø´Ø±Ø¯Ù‡ RAR',
			'kindJAR'         : 'Ù�Ø§ÛŒÙ„ JAR Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø¬Ø§ÙˆØ§',
			'kindTTF'         : 'Ù�ÙˆÙ†Øª True Type',
			'kindOTF'         : 'Ù�ÙˆÙ†Øª Open Type',
			'kindRPM'         : 'Ø¨Ø³ØªÙ‡ RPM',
			// fonts
			'kindFont'        : 'Ù�ÙˆÙ†Øª',
			'kindSFNT'        : 'Ù�ÙˆÙ†Øª SFNT',
			'kindEOT'         : 'Ù�ÙˆÙ†Øª Embedded Open Type',
			'kindWOFF'        : 'Ù�ÙˆÙ†Øª Web Open Font Format',
			'kindWOFF2'       : 'Ù�ÙˆÙ†Øª Web Open Font Format 2',
			// texts
			'kindText'        : 'Ø³Ù†Ø¯ Ù…ØªÙ†ÛŒ',
			'kindTextPlain'   : 'Ø³Ù†Ø¯ Ù…ØªÙ†ÛŒ Ø³Ø§Ø¯Ù‡',
			'kindPHP'         : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ PHP',
			'kindCSS'         : 'Ù�Ø§ÛŒÙ„ style sheet',
			'kindHTML'        : 'Ø³Ù†Ø¯ HTML',
			'kindJS'          : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ Javascript',
			'kindRTF'         : 'Ø³Ù†Ø¯ Ù…ØªÙ†ÛŒ ØºÙ†ÛŒ',
			'kindC'           : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ C',
			'kindCHeader'     : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ C header',
			'kindCPP'         : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ C++',
			'kindCPPHeader'   : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ C++ header',
			'kindShell'       : 'Ø§Ø³Ú©Ø±ÛŒÙ¾Øª Ø´Ù„ ÛŒÙˆÙ†ÛŒÚ©Ø³',
			'kindPython'      : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ Python',
			'kindJava'        : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ Java',
			'kindRuby'        : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ Ruby',
			'kindPerl'        : 'Ø§Ø³Ú©Ø±ÛŒÙ¾Øª Perl',
			'kindSQL'         : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ SQL',
			'kindXML'         : 'Ø³Ù†Ø¯ XML',
			'kindAWK'         : 'Ø³ÙˆØ±Ø³ Ú©Ø¯ AWK',
			'kindCSV'         : 'Ù…Ù‚Ø§Ø¯ÛŒØ± Ø¬Ø¯Ø§Ø´Ø¯Ù‡ Ø¨Ø§ Ú©Ø§Ù…Ù„',
			'kindDOCBOOK'     : 'Ø³Ù†Ø¯ Docbook XML',
			'kindMarkdown'    : 'Ø³Ù†Ø¯ Ù…ØªÙ†ÛŒ Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'ØªØµÙˆÛŒØ±',
			'kindBMP'         : 'ØªØµÙˆÛŒØ± BMP',
			'kindJPEG'        : 'ØªØµÙˆÛŒØ± JPEG',
			'kindGIF'         : 'ØªØµÙˆÛŒØ± GIF',
			'kindPNG'         : 'ØªØµÙˆÛŒØ± PNG',
			'kindTIFF'        : 'ØªØµÙˆÛŒØ± TIFF',
			'kindTGA'         : 'ØªØµÙˆÛŒØ± TGA',
			'kindPSD'         : 'ØªØµÙˆÛŒØ± Adobe Photoshop',
			'kindXBITMAP'     : 'ØªØµÙˆÛŒØ± X bitmap',
			'kindPXM'         : 'ØªØµÙˆÛŒØ± Pixelmator',
			// media
			'kindAudio'       : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ',
			'kindAudioMPEG'   : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ MPEG',
			'kindAudioMPEG4'  : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ MPEG-4',
			'kindAudioMIDI'   : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ MIDI',
			'kindAudioOGG'    : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ Ogg Vorbis',
			'kindAudioWAV'    : 'Ù�Ø§ÛŒÙ„ ØµÙˆØªÛŒ WAV',
			'AudioPlaylist'   : 'Ù„ÛŒØ³Øª Ù¾Ø®Ø´ MP3',
			'kindVideo'       : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ',
			'kindVideoDV'     : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ DV',
			'kindVideoMPEG'   : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ MPEG',
			'kindVideoMPEG4'  : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ MPEG-4',
			'kindVideoAVI'    : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ AVI',
			'kindVideoMOV'    : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ Quick Time',
			'kindVideoWM'     : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ Windows Media',
			'kindVideoFlash'  : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ Flash',
			'kindVideoMKV'    : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ Matroska',
			'kindVideoOGG'    : 'Ù�Ø§ÛŒÙ„ ÙˆÛŒØ¯ÛŒÙˆÛŒÛŒ Ogg'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/js/i18n/elfinder.de.js                                                    0000644                 00000103744 15266052765 0015430 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * German Translation / Deutsche Ãœbersetzung
 * @author JPG & Mace <dev@flying-datacenter.de>
 * @author tora60 from pragmaMx.org
 * @author Timo-Linde <info@timo-linde.de>
 * @author OSWorX <https://osworx.net>
 * @author Maximilian Schwarz <info@deefuse.de>
 * @author SF Webdesign <webdesign@stephan-frank.de>
 * @version 2019-12-13
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.de = {
		translator : 'JPG & Mace &lt;dev@flying-datacenter.de&gt;, tora60 from pragmaMx.org, Timo-Linde &lt;info@timo-linde.de&gt;, OSWorX &lt;info@osworx.net&gt;, Maximilian Schwarz &lt;info@deefuse.de&gt;, SF Webdesign &lt;webdesign@stephan-frank.de&gt;',
		language   : 'Deutsch',
		direction  : 'ltr',
		dateFormat : 'j. F Y H:i', // 3. MÃ¤rz 2020 14:58
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
		messages : {

			/********************************** errors **********************************/
			'error'                : 'Fehler',
			'errUnknown'           : 'Unbekannter Fehler.',
			'errUnknownCmd'        : 'Unbekannter Befehl.',
			'errJqui'              : 'UngÃ¼ltige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable mÃ¼ssen inkludiert sein.',
			'errNode'              : 'FÃ¼r elFinder muss das DOM-Element erstellt werden.',
			'errURL'               : 'UngÃ¼ltige elFinder-Konfiguration! Die URL-Option ist nicht gesetzt.',
			'errAccess'            : 'Zugriff verweigert.',
			'errConnect'           : 'Verbindung zum Backend fehlgeschlagen.',
			'errAbort'             : 'Verbindung abgebrochen.',
			'errTimeout'           : 'ZeitÃ¼berschreitung der Verbindung.',
			'errNotFound'          : 'Backend nicht gefunden.',
			'errResponse'          : 'UngÃ¼ltige Backend-Antwort.',
			'errConf'              : 'UngÃ¼ltige Backend-Konfiguration.',
			'errJSON'              : 'PHP JSON-Modul nicht vorhanden.',
			'errNoVolumes'         : 'Keine lesbaren Laufwerke vorhanden.',
			'errCmdParams'         : 'UngÃ¼ltige Parameter fÃ¼r Befehl: "$1".',
			'errDataNotJSON'       : 'Daten nicht im JSON-Format.',
			'errDataEmpty'         : 'Daten sind leer.',
			'errCmdReq'            : 'Backend-Anfrage benÃ¶tigt Befehl.',
			'errOpen'              : 'Kann "$1" nicht Ã¶ffnen.',
			'errNotFolder'         : 'Objekt ist kein Ordner.',
			'errNotFile'           : 'Objekt ist keine Datei.',
			'errRead'              : 'Kann "$1" nicht Ã¶ffnen.',
			'errWrite'             : 'Kann nicht in "$1" schreiben.',
			'errPerm'              : 'Zugriff verweigert.',
			'errLocked'            : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelÃ¶scht werden.',
			'errExists'            : 'Die Datei "$1" existiert bereits.',
			'errInvName'           : 'UngÃ¼ltiger Dateiname.',
			'errInvDirname'        : 'UngÃ¼ltiger Ordnername.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ordner nicht gefunden.',
			'errFileNotFound'      : 'Datei nicht gefunden.',
			'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.',
			'errPopup'             : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu Ã¶ffnen, Pop-Ups in den Browsereinstellungen aktivieren.',
			'errMkdir'             : 'Kann Ordner "$1" nicht erstellen.',
			'errMkfile'            : 'Kann Datei "$1" nicht erstellen.',
			'errRename'            : 'Kann "$1" nicht umbenennen.',
			'errCopyFrom'          : 'Kopieren von Dateien von "$1" nicht erlaubt.',
			'errCopyTo'            : 'Kopieren von Dateien nach "$1" nicht erlaubt.',
			'errMkOutLink'         : 'Der Link kann nicht auÃŸerhalb der Partition fÃ¼hren.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload-Fehler.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kann "$1" nicht hochladen.', // old name - errUpload
			'errUploadNoFiles'     : 'Keine Dateien zum Hochladen gefunden.',
			'errUploadTotalSize'   : 'GesamtgrÃ¶ÃŸe Ã¼berschreitet die MaximalgrÃ¶ÃŸe.', // old name - errMaxSize
			'errUploadFileSize'    : 'Die Datei Ã¼berschreitet die MaximalgrÃ¶ÃŸe.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Dateiart (mime) nicht zulÃ¤ssig.',
			'errUploadTransfer'    : '"$1" Ãœbertragungsfehler.',
			'errUploadTemp'        : 'Kann temporÃ¤re Datei nicht erstellen.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new
			'errReplace'           : 'Kann "$1" nicht ersetzen.',
			'errSave'              : 'Kann "$1" nicht speichern.',
			'errCopy'              : 'Kann "$1" nicht kopieren.',
			'errMove'              : 'Kann "$1" nicht verschieben.',
			'errCopyInItself'      : '"$1" kann sich nicht in sich selbst kopieren.',
			'errRm'                : 'Kann "$1" nicht entfernen.',
			'errTrash'             : 'Kann Objekt nicht in MÃ¼lleimer legen.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kann Quelldatei(en) nicht entfernen.',
			'errExtract'           : 'Kann "$1" nicht entpacken.',
			'errArchive'           : 'Archiv konnte nicht erstellt werden.',
			'errArcType'           : 'Archivtyp nicht untersÃ¼tzt.',
			'errNoArchive'         : 'Bei der Datei handelt es sich nicht um ein Archiv, oder die Archivart wird nicht unterstÃ¼tzt.',
			'errCmdNoSupport'      : 'Das Backend unterstÃ¼tzt diesen Befehl nicht.',
			'errReplByChild'       : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthÃ¤lt.',
			'errArcSymlinks'       : 'Aus SicherheitsgrÃ¼nden ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012
			'errArcMaxSize'        : 'Die Archivdateien Ã¼bersteigen die maximal erlaubte GrÃ¶ÃŸe.',
			'errResize'            : 'GrÃ¶ÃŸe von "$1" kann nicht geÃ¤ndert werden.',
			'errResizeDegree'      : 'UngÃ¼ltiger Rotationswert.',  // added 7.3.2013
			'errResizeRotate'      : 'Bild konnte nicht gedreht werden.',  // added 7.3.2013
			'errResizeSize'        : 'UngÃ¼ltige BildgrÃ¶ÃŸe.',  // added 7.3.2013
			'errResizeNoChange'    : 'BildmaÃŸe nicht geÃ¤ndert.',  // added 7.3.2013
			'errUsupportType'      : 'Nicht unterstÃ¼tzte Dateiart.',
			'errNotUTF8Content'    : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht bearbeitet werden.',  // added 9.11.2011
			'errNetMount'          : 'Verbindung mit "$1" nicht mÃ¶glich.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nicht unterstÃ¼tztes Protokoll.',     // added 17.04.2012
			'errNetMountFailed'    : 'Verbindung fehlgeschlagen.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host benÃ¶tigt.', // added 18.04.2012
			'errSessionExpires'    : 'Diese Sitzung ist aufgrund von InaktivitÃ¤t abgelaufen.',
			'errCreatingTempDir'   : 'Erstellung des temporÃ¤ren Ordners nicht mÃ¶glich: "$1"',
			'errFtpDownloadFile'   : 'Download der Datei Ã¼ber FTP nicht mÃ¶glich: "$1"',
			'errFtpUploadFile'     : 'Upload der Datei zu FTP nicht mÃ¶glich: "$1"',
			'errFtpMkdir'          : 'Erstellung des Remote-Ordners mit FTP nicht mÃ¶glich: "$1"',
			'errArchiveExec'       : 'Fehler beim Archivieren der Dateien: "$1"',
			'errExtractExec'       : 'Fehler beim Extrahieren der Dateien: "$1"',
			'errNetUnMount'        : 'Kann nicht ausgehÃ¤ngt werden.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ordner kann nich hochladen werden, eventuell mit Google Chrome versuchen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'ZeitÃ¼berschreitung wÃ¤hrend der Suche nach "$1". Suchergebnis ist unvollstÃ¤ndig.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Die maximale Anzahl auswÃ¤hlbarer Elemente ist $1', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Datei konnte nicht aus MÃ¼lleimer wieder hergestellt werden bzw. Ziel fÃ¼r Wiederherstellung nicht gefunden.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Kein Editor fÃ¼r diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ein serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Es sind noch $1 weitere Fehler.', // from v2.1.44 added 13.12.2019

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Archiv erstellen',
			'cmdback'      : 'ZurÃ¼ck',
			'cmdcopy'      : 'Kopieren',
			'cmdcut'       : 'Ausschneiden',
			'cmddownload'  : 'Herunterladen',
			'cmdduplicate' : 'Duplizieren',
			'cmdedit'      : 'Datei bearbeiten',
			'cmdextract'   : 'Archiv entpacken',
			'cmdforward'   : 'VorwÃ¤rts',
			'cmdgetfile'   : 'Datei auswÃ¤hlen',
			'cmdhelp'      : 'Ãœber diese Software',
			'cmdhome'      : 'Startordner',
			'cmdinfo'      : 'Informationen',
			'cmdmkdir'     : 'Neuer Ordner',
			'cmdmkdirin'   : 'In neuen Ordner', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Neuer Datei',
			'cmdopen'      : 'Ã–ffnen',
			'cmdpaste'     : 'EinfÃ¼gen',
			'cmdquicklook' : 'Vorschau',
			'cmdreload'    : 'Aktualisieren',
			'cmdrename'    : 'Umbenennen',
			'cmdrm'        : 'LÃ¶schen',
			'cmdtrash'     : 'In den MÃ¼lleimer legen', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Wiederherstellen', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Suchen',
			'cmdup'        : 'In Ã¼bergeordneten Ordner wechseln',
			'cmdupload'    : 'Datei hochladen',
			'cmdview'      : 'Ansehen',
			'cmdresize'    : 'GrÃ¶ÃŸe Ã¤ndern & drehen',
			'cmdsort'      : 'Sortieren',
			'cmdnetmount'  : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012
			'cmdnetunmount': 'AbhÃ¤ngen', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Favoriten', // added 28.12.2014
			'cmdchmod'     : 'Berechtigung Ã¤ndern', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Einen Ordner Ã¶ffnen', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Spaltenbreite zurÃ¼cksetzen', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Verschieben', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ordner Leeren', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'RÃ¼ckgÃ¤ngig', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Wiederholen', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Alle auswÃ¤hlen', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Keine auswÃ¤hlen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Auswahl rÃ¼ckgÃ¤ngig machen', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'In neuem Fenster Ã¶ffnen', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Verstecken', // from v2.1.41 added 13.12.2019

			/*********************************** buttons ***********************************/
			'btnClose'  : 'SchlieÃŸen',
			'btnSave'   : 'Speichern',
			'btnRm'     : 'Entfernen',
			'btnApply'  : 'Anwenden',
			'btnCancel' : 'Abbrechen',
			'btnNo'     : 'Nein',
			'btnYes'    : 'Ja',
			'btnDiscard': 'Ã„nderungen verwerfen',
			'btnMount'  : 'Verbinden',  // added 18.04.2012
			'btnApprove': 'Gehe zu $1 und genehmige', // from v2.1 added 26.04.2012
			'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konvertieren', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Arbeitspfad',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Partition',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-Typ', // from v2.1 added 22.5.2015
			'btnFileName':'Dateiname',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Speichern & SchlieÃŸen', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Umbenennen',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ZurÃ¼ck ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Speichern als', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ã–ffne Ordner',
			'ntffile'     : 'Ã–ffne Datei',
			'ntfreload'   : 'Ordnerinhalt neu',
			'ntfmkdir'    : 'Erstelle Ordner',
			'ntfmkfile'   : 'Erstelle Dateien',
			'ntfrm'       : 'LÃ¶sche Dateien',
			'ntfcopy'     : 'Kopiere Dateien',
			'ntfmove'     : 'Verschiebe Dateien',
			'ntfprepare'  : 'Kopiervorgang initialisieren',
			'ntfrename'   : 'Benenne Dateien um',
			'ntfupload'   : 'Dateien hochladen',
			'ntfdownload' : 'Dateien herunterladen',
			'ntfsave'     : 'Speichere Datei',
			'ntfarchive'  : 'Erstelle Archiv',
			'ntfextract'  : 'Entpacke Dateien',
			'ntfsearch'   : 'Suche',
			'ntfresize'   : 'BildgrÃ¶ÃŸen Ã¤ndern',
			'ntfsmth'     : 'Bin beschÃ¤ftigt ..',
			'ntfloadimg'  : 'Lade Bild ..',
			'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012
			'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012
			'ntfdim'      : 'BildgrÃ¶ÃŸe erfassen', // added 20.05.2013
			'ntfreaddir'  : 'Lese Ordnerinformationen', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Hole URL von Link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ã„ndere Dateiberechtigungen', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Upload-Dateinamen Ã¼berprÃ¼fen', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Upload lÃ¤uft', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Bewege in den MÃ¼lleimer', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Wiederherstellung aus MÃ¼lleimer', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'PrÃ¼fe Zielordner', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Vorherige Operation rÃ¼ckgÃ¤ngig machen', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Wiederherstellen', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'ÃœberprÃ¼fe Inhalte', // from v2.1.41 added 13.12.2019

			/*********************************** volumes *********************************/
			'volume_Trash' : 'MÃ¼lleimer', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unbekannt',
			'Today'       : 'Heute',
			'Yesterday'   : 'Gestern',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'MÃ¤r',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dez',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'MÃ¤rz',
			'April'       : 'April',
			'May'         : 'Mai',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'Dezember',
			'Sunday'      : 'Sonntag',
			'Monday'      : 'Montag',
			'Tuesday'     : 'Dienstag',
			'Wednesday'   : 'Mittwoch',
			'Thursday'    : 'Donnerstag',
			'Friday'      : 'Freitag',
			'Saturday'    : 'Samstag',
			'Sun'         : 'So',
			'Mon'         : 'Mo',
			'Tue'         : 'Di',
			'Wed'         : 'Mi',
			'Thu'         : 'Do',
			'Fri'         : 'Fr',
			'Sat'         : 'Sa',

			/******************************** sort variants ********************************/
			'sortname'          : 'nach Name',
			'sortkind'          : 'nach Art',
			'sortsize'          : 'nach GrÃ¶ÃŸe',
			'sortdate'          : 'nach Datum',
			'sortFoldersFirst'  : 'Ordner zuerst',
			'sortperm'          : 'nach Berechtigung', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'nach Modus',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'nach Besitzer',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'nach Gruppe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'auch Baumansicht',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Neues Textdokument (.txt)', // added 10.11.2015
			'untitled folder'   : 'Neuer Ordner',   // added 10.11.2015
			'Archive'           : 'Neues Archiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Neue Datei $1',  // from v2.1.41 added 13.12.2019
			'extentionfile'     : '$1: Datei',    // from v2.1.41 added 13.12.2019
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 13.12.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'BestÃ¤tigung benÃ¶tigt',
			'confirmRm'       : 'Sollen die Dateien gelÃ¶scht werden?<br>Vorgang ist endgÃ¼ltig!',
			'confirmRepl'     : 'Datei ersetzen?',
			'confirmRest'     : 'Vorhandenes Element durch das Element aus MÃ¼lleimer ersetzen?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nicht UTF-8 kodiert<br>Zu UTF-8 konvertieren?<br>Inhalte werden zu UTF-8 konvertiert bei Speicherung.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorÃ¼bergehend in UTF-8 zur Bearbeitung konvertiert werden.<br> Bitte eine Zeichenkodierung dieser Datei auswÃ¤hlen.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Die Datei wurde geÃ¤ndert.<br>Ã„nderungen gehen verloren, wenn nicht gespeichert wird.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Sicher diese Elemente in den MÃ¼lleimer verschieben?', // from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Sicher alle Elemente nach "$1" verschieben?', // from v2.1.50 added 13.12.2019
			'apllyAll'        : 'Alles bestÃ¤tigen',
			'name'            : 'Name',
			'size'            : 'GrÃ¶ÃŸe',
			'perms'           : 'Berechtigungen',
			'modify'          : 'GeÃ¤ndert',
			'kind'            : 'Typ',
			'read'            : 'Lesen',
			'write'           : 'Schreiben',
			'noaccess'        : 'Kein Zugriff',
			'and'             : 'und',
			'unknown'         : 'unbekannt',
			'selectall'       : 'Alle Dateien auswÃ¤hlen',
			'selectfiles'     : 'Dateien auswÃ¤hlen',
			'selectffile'     : 'Erste Datei auswÃ¤hlen',
			'selectlfile'     : 'Letzte Datei auswÃ¤hlen',
			'viewlist'        : 'Spaltenansicht',
			'viewicons'       : 'Symbolansicht',
			'viewSmall'       : 'Kleine Icons', // from v2.1.39 added 13.12.2019
			'viewMedium'      : 'Medium Icons', // from v2.1.39 added 13.12.2019
			'viewLarge'       : 'GroÃŸe Icons', // from v2.1.39 added 13.12.2019
			'viewExtraLarge'  : 'ExtragroÃŸe Icons', // from v2.1.39 added 13.12.2019
			'places'          : 'Favoriten',
			'calc'            : 'Berechne',
			'path'            : 'Pfad',
			'aliasfor'        : 'VerknÃ¼pfung zu',
			'locked'          : 'Gesperrt',
			'dim'             : 'BildgrÃ¶ÃŸe',
			'files'           : 'Dateien',
			'folders'         : 'Ordner',
			'items'           : 'Objekte',
			'yes'             : 'ja',
			'no'              : 'nein',
			'link'            : 'Link',
			'searcresult'     : 'Suchergebnisse',
			'selected'        : 'Objekte ausgewÃ¤hlt',
			'about'           : 'Ãœber',
			'shortcuts'       : 'Tastenkombinationen',
			'help'            : 'Hilfe',
			'webfm'           : 'Web-Dateiverwaltung',
			'ver'             : 'Version',
			'protocolver'     : 'Protokoll-Version',
			'homepage'        : 'Projekt-Webseite',
			'docs'            : 'Dokumentation',
			'github'          : 'Forke uns auf Github',
			'twitter'         : 'Folge uns auf twitter',
			'facebook'        : 'Begleite uns auf facebook',
			'team'            : 'Team',
			'chiefdev'        : 'Chefentwickler',
			'developer'       : 'Entwickler',
			'contributor'     : 'UnterstÃ¼tzer',
			'maintainer'      : 'Maintainer',
			'translator'      : 'Ãœbersetzer',
			'icons'           : 'Icons',
			'dontforget'      : 'und vergiss nicht .. morgen ist auch noch ein Tag ..',
			'shortcutsof'     : 'Tastenkombinationen deaktiviert',
			'dropFiles'       : 'Dateien hier ablegen',
			'or'              : 'oder',
			'selectForUpload' : 'Dateien zum Upload auswÃ¤hlen',
			'moveFiles'       : 'Dateien verschieben',
			'copyFiles'       : 'Dateien kopieren',
			'restoreFiles'    : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'LÃ¶sche von Favoriten',
			'aspectRatio'     : 'SeitenverhÃ¤ltnis',
			'scale'           : 'MaÃŸstab',
			'width'           : 'Breite',
			'height'          : 'HÃ¶he',
			'resize'          : 'GrÃ¶ÃŸe Ã¤ndern',
			'crop'            : 'Zuschneiden',
			'rotate'          : 'Drehen',
			'rotate-cw'       : 'Drehe 90Â° im Uhrzeigersinn',
			'rotate-ccw'      : 'Drehe 90Â° gegen Uhrzeigersinn',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012
			'protocol'            : 'Protokoll', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Benutzer', // added 18.04.2012
			'pass'                : 'Passwort', // added 18.04.2012
			'confirmUnmount'      : 'Soll "$1" ausgehÃ¤ngt werden',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Dateien in den Browser ziehen', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Dateien hier loslassen', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodierung', // from v2.1 added 19.12.2014
			'locale'          : 'Lokal',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ziel: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015
			'owner'           : 'Besitzer', // from v2.1 added 20.6.2015
			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
			'other'           : 'Andere', // from v2.1 added 20.6.2015
			'execute'         : 'AusfÃ¼hren', // from v2.1 added 20.6.2015
			'perm'            : 'Berechtigung', // from v2.1 added 20.6.2015
			'mode'            : 'Modus', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Der Ordner ist leer\\A Elemente durch Ziehen hinzufÃ¼gen', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Der Ordner ist leer\\A Elemente durch langes Tippen hinzufÃ¼gen', // from v2.1.6 added 30.12.2015
			'quality'         : 'QualitÃ¤t', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatische Synchronisation',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Nach oben bewegen',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL-Link holen', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'AusgewÃ¤hlte Objekte ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Ordner-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Erneut anmelden', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Wird geladen...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'mehrere Dateien Ã¶ffnen', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Es wird versucht die $1 Dateien zu Ã¶ffnen .. sicher im Browser Ã¶ffnen?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Kein Suchergebnis', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 Objekt(e) ausgewÃ¤hlt.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Wiederherstellen', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'KontextmenÃ¼', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Seite umblÃ¤ttern', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016
			'reset'           : 'Neustart', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Farbauswahl', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Raster', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ein', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Aus', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Die Ergebnisse der ersten Buchstabensuche sind in der aktuellen Ansicht leer.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text Bezeichnung', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Minuten Ã¼brig', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'WiedererÃ¶ffnen mit ausgewÃ¤hlter Codierung', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Speichern mit der gewÃ¤hlten Kodierung', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Verzeichnis auswÃ¤hlen', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017
			'presets'         : 'Voreinstellungen', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Zu viele Elemente auf einmal fÃ¼r den MÃ¼lleimer.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textbereich', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Leere Ordner "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Es befinden sich keine Elemente im Ordner "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Einstellungen', // from v2.1.26 added 28.6.2017
			'language'        : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbareinstellung', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Zeichen Ã¼brig',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Summe', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'UngefÃ¤hre DateigrÃ¶ÃŸe', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokussierung auf das Element Dialog mit Mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'AuswÃ¤hlen', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Aktion bei der Auswahl der Datei', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ã–ffnen mit dem zuletzt verwendeten Editor', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Auswahl umkehren', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Sicher $1 ausgewÃ¤hlte Elemente in $2 umbenennen?<br>RÃ¼ckgÃ¤ngig nicht mÃ¶glich!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Stapelumbenennung', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Vorzeichen hinzufÃ¼gen', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Nachzeichen hinzufÃ¼gen', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Erweiterung Ã¤ndern', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Spalteneinstellungen (Listenansicht)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alle Ã„nderungen werden sofort im Archiv angewendet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Alle Ã„nderungen werden nicht angewendet bis dieses Volume entfernt wird.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Die folgenden DatentrÃ¤ger, die auf diesem DatentrÃ¤ger eingehÃ¤ngt sind, werden ebenfalls ausgehÃ¤ngt. Sicher dass alle aushÃ¤ngt werden sollen?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Auswahl Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Datei-Hash-Algorithmen', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info-Elemente (Auswahl-Info-Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'DrÃ¼cken Sie erneut, um zu beenden.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Symbolleiste', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Arbeitsplatz', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alle', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'IcongrÃ¶ÃŸe (Symbolansicht)', // form v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ã–ffne Editorfenster in voller GrÃ¶ÃŸe', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Aktuell keine API zur Bearbeitung verfÃ¼gbar, bitte auf Webseite bearbeiten', //from v2.1.40 added 13.12.2019
			'editorConvNeedUpload' : 'Um zu speichern nach der Bearbeitung Element entweder mit URL hochladen oder mit herunter geladener Datei', // from v2.1.40 added 13.12.2019
			'convertOn'       : 'Bearbeiten auf Seite $1', // from v2.1.40 added 13.12.2019
			'integrations'    : 'Integrationen', // from v2.1.40 added 13.12.2019
			'integrationWith' : 'Diese Software hat folgende externe Dienste integriert. Vor Anwendung bitte die jeweiligen Nutzungsbedingungen usw. beachten', // from v2.1.40 added 13.12.2019
			'showHidden'      : 'Zeige versteckte Elemente', // from v2.1.41 added 13.12.2019
			'hideHidden'      : 'Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019
			'toggleHidden'    : 'Zeige/Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019
			'makefileTypes'   : 'Dateiarten bei "Neue Datei" aktivieren', // from v2.1.41 added 13.12.2019
			'typeOfTextfile'  : 'Art der Textdatei', // from v2.1.41 added 13.12.2019
			'add'             : 'Neu', // from v2.1.41 added 13.12.2019
			'theme'           : 'Thema', // from v2.1.43 added 13.12.2019
			'default'         : 'Standard', // from v2.1.43 added 13.12.2019
			'description'     : 'Beschreibung', // from v2.1.43 added 13.12.2019
			'website'         : 'Webseite', // from v2.1.43 added 13.12.2019
			'author'          : 'Autor', // from v2.1.43 added 13.12.2019
			'email'           : 'Email', // from v2.1.43 added 13.12.2019
			'license'         : 'Lizenz', // from v2.1.43 added 13.12.2019
			'exportToSave'    : 'Dieses Element kann nicht gespeichert werden. Um Ã„nderungen nicht zu verlieren, muss es auf den lokalen PC exportiert werden', // from v2.1.44 added 13.12.2019
			'dblclickToSelect': 'Doppelt auf Datei klicken um auszuwÃ¤hlen', // from v2.1.47 added 13.12.2019
			'useFullscreen'   : 'Gesamter Bildschirm', // from v2.1.47 added 13.12.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unbekannt',
			'kindRoot'        : 'Stammverzeichnis', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Ordner',
			'kindSelects'     : 'Auswahlkriterien', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'VerknÃ¼pfung',
			'kindAliasBroken' : 'Defekte VerknÃ¼pfung',
			// applications
			'kindApp'         : 'Programm',
			'kindPostscript'  : 'Postscript-Dokument',
			'kindMsOffice'    : 'MS Office-Dokument',
			'kindMsWord'      : 'MS Word-Dokument',
			'kindMsExcel'     : 'MS Excel-Dokument',
			'kindMsPP'        : 'MS Powerpoint-PrÃ¤sentation',
			'kindOO'          : 'Open Office-Dokument',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portables Dokumentenformat (PDF)',
			'kindTorrent'     : 'Bittorrent-Datei',
			'kind7z'          : '7z-Archiv',
			'kindTAR'         : 'TAR-Archiv',
			'kindGZIP'        : 'GZIP-Archiv',
			'kindBZIP'        : 'BZIP-Archiv',
			'kindXZ'          : 'XZ-Archiv',
			'kindZIP'         : 'ZIP-Archiv',
			'kindRAR'         : 'RAR-Archiv',
			'kindJAR'         : 'Java JAR-Datei',
			'kindTTF'         : 'True Type-Schrift',
			'kindOTF'         : 'Open Type-Schrift',
			'kindRPM'         : 'RPM-Paket',
			// fonts
			'kindFont'        : 'Schriftart',
			'kindSFNT'        : 'SFNT-Schrift',
			'kindEOT'         : 'Embedded-Open-Type-Schrift',
			'kindWOFF'        : 'Web-Open-Font-Format-Schrift',
			'kindWOFF2'       : 'Web-Open-Font-Format-2-Schrift',
			// texts
			'kindText'        : 'Text-Dokument',
			'kindTextPlain'   : 'Text-Dokument',
			'kindPHP'         : 'PHP-Quelltext',
			'kindCSS'         : 'CSS Stilvorlage',
			'kindHTML'        : 'HTML-Dokument',
			'kindJS'          : 'Javascript-Quelltext',
			'kindRTF'         : 'Formatierte Textdatei',
			'kindC'           : 'C-Quelltext',
			'kindCHeader'     : 'C Header-Quelltext',
			'kindCPP'         : 'C++ Quelltext',
			'kindCPPHeader'   : 'C++ Header-Quelltext',
			'kindShell'       : 'Unix-Shell-Skript',
			'kindPython'      : 'Python-Quelltext',
			'kindJava'        : 'Java-Quelltext',
			'kindRuby'        : 'Ruby-Quelltext',
			'kindPerl'        : 'Perl Script',
			'kindSQL'         : 'SQL-Quelltext',
			'kindXML'         : 'XML-Dokument',
			'kindAWK'         : 'AWK-Quelltext',
			'kindCSV'         : 'Kommagetrennte Daten',
			'kindDOCBOOK'     : 'Docbook XML-Dokument',
			'kindMarkdown'    : 'Markdown-Text', // added 20.7.2015
			// images
			'kindImage'       : 'Bild',
			'kindBMP'         : 'Bitmap-Bild',
			'kindJPEG'        : 'JPEG-Bild',
			'kindGIF'         : 'GIF-Bild',
			'kindPNG'         : 'PNG-Bild',
			'kindTIFF'        : 'TIFF-Bild',
			'kindTGA'         : 'TGA-Bild',
			'kindPSD'         : 'Adobe Photoshop-Dokument',
			'kindXBITMAP'     : 'X Bitmap-Bild',
			'kindPXM'         : 'Pixelmator-Bild',
			// media
			'kindAudio'       : 'Audiodatei',
			'kindAudioMPEG'   : 'MPEG Audio',
			'kindAudioMPEG4'  : 'MPEG-4 Audio',
			'kindAudioMIDI'   : 'MIDI Audio',
			'kindAudioOGG'    : 'Ogg Vorbis Audio',
			'kindAudioWAV'    : 'WAV Audio',
			'AudioPlaylist'   : 'MP3-Playlist',
			'kindVideo'       : 'Videodatei',
			'kindVideoDV'     : 'DV Film',
			'kindVideoMPEG'   : 'MPEG Film',
			'kindVideoMPEG4'  : 'MPEG4 Film',
			'kindVideoAVI'    : 'AVI Film',
			'kindVideoMOV'    : 'QuickTime Film',
			'kindVideoWM'     : 'Windows Media Film',
			'kindVideoFlash'  : 'Flash Film',
			'kindVideoMKV'    : 'Matroska Film',
			'kindVideoOGG'    : 'Ogg Film'
		}
	};
}));
                            includes/File_manager/lib/js/i18n/help/zh_CN.html.js                                                0000644                 00000001343 15266052765 0016135 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ï»¿<H2>æ“�ä½œæ��ç¤º</h2>
<p>åœ¨UIä¸Šçš„æ“�ä½œç±»ä¼¼äºŽæ“�ä½œç³»ç»Ÿçš„æ ‡å‡†æ–‡ä»¶ç®¡ç�†å™¨ã€‚ ä½†æ˜¯åœ¨ç§»åŠ¨è®¾å¤‡æµ�è§ˆå™¨ä¸�èƒ½è¿›è¡Œæ‹–æ”¾ã€‚ </p>
<ul>
	<li>å�³é”®å�•å‡»æˆ–é•¿æŒ‰æ˜¾ç¤ºä¸Šä¸‹æ–‡è�œå�•ã€‚</li>
	<li>å°†æ–‡ä»¶æ‹–æ”¾åˆ°æ ‘çŠ¶æ–‡ä»¶å¤¹æˆ–ç›®å‰�å·¥ä½œåŒºä¾¿èƒ½ç§»åŠ¨/å¤�åˆ¶æ–‡ä»¶ã€‚</li>
	<li>å·¥ä½œç©ºé—´ä¸­çš„æ–‡ä»¶é€‰æ‹©å�¯ä»¥é€šè¿‡Shiftæˆ–Altï¼ˆOptionï¼‰é”®è¿›è¡Œå¤šé€‰ã€‚</li>
	<li>æ‹–æ”¾åˆ°ç›®æ ‡æ–‡ä»¶å¤¹æˆ–å·¥ä½œåŒºä¸Šå¼€å§‹ä¸Šä¼ æ–‡ä»¶å’Œæ–‡ä»¶å¤¹ã€‚</li>
	<li>ä¸Šä¼ å¯¹è¯�æ¡†å�¯ä»¥ç²˜è´´/æ‹–æ”¾å‰ªè´´æ�¿æ•°æ�®æˆ–URLåˆ—è¡¨ï¼Œä»¥å�Šä»Žå…¶ä»–æµ�è§ˆå™¨æˆ–æ–‡ä»¶ç®¡ç�†å™¨æ‹–æ”¾çš„æ–‡ä»¶ã€‚</li>
	<li>æ‹–åŠ¨ä»ŽæŒ‰ä¸‹Altï¼ˆOptionï¼‰é”®å¼€å§‹æ‹–åŠ¨åˆ°å¤–éƒ¨æµ�è§ˆå™¨ï¼Œä¼šå�˜æˆ� Google Chrome çš„ä¸‹è½½æ“�ä½œã€‚</li>
</ul>
                                                                                                                                                                                                                                                                                             includes/File_manager/lib/js/i18n/help/cs.html.js                                                   0000644                 00000001722 15266052766 0015543 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Tipy na obsluhu</h2>
<p>Obsluha na uÅ¾ivatelskÃ©m rozhranÃ­ je podobnÃ¡ standardnÃ­mu sprÃ¡vci souborÅ¯ operaÄ�nÃ­ho systÃ©mu. Drag and Drop vÅ¡ak nenÃ­ moÅ¾nÃ© pouÅ¾Ã­vat s mobilnÃ­mi prohlÃ­Å¾eÄ�i. </p>
<ul>
	<li>KliknutÃ­m pravÃ½m tlaÄ�Ã­tkem nebo dlouhÃ½m klepnutÃ­m zobrazÃ­te kontextovÃ© menu.</li>
	<li>PÅ™etÃ¡hnÄ›te do stromu sloÅ¾ek nebo do aktuÃ¡lnÃ­ho pracovnÃ­ho prostoru a pÅ™etÃ¡hnÄ›te / kopÃ­rujte poloÅ¾ky.</li>
	<li>VÃ½bÄ›r poloÅ¾ky v pracovnÃ­m prostoru mÅ¯Å¾ete rozÅ¡Ã­Å™it pomocÃ­ klÃ¡ves Shift nebo Alt (MoÅ¾nost).</li>
	<li>PÅ™emÃ­stÄ›te soubory a sloÅ¾ky do cÃ­lovÃ© sloÅ¾ky nebo do pracovnÃ­ho prostoru.</li>
	<li>Dialog pÅ™edÃ¡vÃ¡nÃ­ mÅ¯Å¾e pÅ™ijÃ­mat data schrÃ¡nky nebo seznamy adres URL a pÅ™itÃ¡hnout a odejÃ­t z jinÃ½ch prohlÃ­Å¾eÄ�Å¯ nebo sprÃ¡vcÅ¯ souborÅ¯.</li>
	<li>ZataÅ¾enÃ­m spusÅ¥te stisknutÃ­m klÃ¡vesy Alt (MoÅ¾nost) pÅ™etÃ¡hnÄ›te do vnÄ›jÅ¡Ã­ho prohlÃ­Å¾eÄ�e. Tato funkce se pÅ™evezme pomocÃ­ prohlÃ­Å¾eÄ�e Google Chrome.</li>
</ul>
                                              includes/File_manager/lib/js/i18n/help/zh_TW.html.js                                                0000644                 00000001425 15266052766 0016171 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ï»¿<h2>æ“�ä½œä½¿ç”¨æ��ç¤º</h2>
<p>ä»‹é�¢çš„æ“�ä½œé¡žä¼¼ä½œæ¥­ç³»çµ±ä¸­çš„æ¨™æº–æª”æ¡ˆç®¡ç�†åŠŸèƒ½ï¼Œä½†æ˜¯åœ¨è¡Œå‹•è£�ç½®ç€�è¦½å™¨ä¸­ç„¡æ³•é€²è¡Œæ‹–æ”¾æ“�ä½œã€‚</p>
<ul>
	<li>é»žæ“Šå�³é�µæˆ–é•·æŒ‰ä¾¿æœƒé¡¯ç¤ºæ“�ä½œåŠŸèƒ½è¡¨</li>
	<li>å°‡é …ç›®æ‹–æ”¾è‡³æ¨¹ç‹€è³‡æ–™å¤¾æˆ–ç›®å‰�å·¥ä½œå�€ä¾¿èƒ½ç§»å‹•/è¤‡è£½é …ç›®ã€‚</li>
	<li>æ�­é…�ä½¿ç”¨ Shift æˆ– Alt (Option) é�µï¼Œä¾¿èƒ½åœ¨å·¥ä½œå�€å°�é …ç›®é€²è¡Œå»¶ä¼¸é�¸å�–ã€‚</li>
	<li>å¾žå„²å­˜è£�ç½®æ‹–æ”¾é …ç›®è‡³ç›®æ¨™è³‡æ–™å¤¾æˆ–å·¥ä½œå�€ï¼Œä¾¿èƒ½ä¸Šå‚³æª”æ¡ˆå�Šè³‡æ–™å¤¾ã€‚</li>
	<li>ä¸Šå‚³å°�è©±æ–¹å¡Šå�¯ä»¥è²¼ä¸Š/æ‹–æ”¾å‰ªè²¼ç°¿è³‡æ–™æˆ–ç¶²å�€æ¸…å–®ï¼Œä»¥å�Šå¾žå…¶ä»–ç€�è¦½å™¨æˆ–æª”æ¡ˆç®¡ç�†ç¨‹å¼�æ‹–æ”¾çš„æª”æ¡ˆã€‚</li>
	<li>æŒ‰ä½� Alt (Option) é�µå°‡é�¸å�–çš„é …ç›®æ‹–æ”¾è‡³ç€�è¦½å™¨ï¼Œæœƒæˆ�ç‚º Google Chrome çš„ä¸‹è¼‰æ“�ä½œã€‚</li>
</ul>
                                                                                                                                                                                                                                           includes/File_manager/lib/js/i18n/help/pl.html.js                                                   0000644                 00000002007 15266052766 0015546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>WskazÃ³wki ObsÅ‚ugi</h2>
<p>DziaÅ‚anie w interfejsie uÅ¼ytkownika jest podobne do standardowego menedÅ¼era plikÃ³w systemu operacyjnego. Jednak PrzeciÄ…ganie i Upuszczanie nie jest moÅ¼liwe w przeglÄ…darkach mobilnych. </p>
<ul>
	<li>Kliknij prawym przyciskiem myszy lub dÅ‚uÅ¼ej, aby wyÅ›wietliÄ‡ menu kontekstowe.</li>
	<li>PrzeciÄ…gnij i upuÅ›Ä‡ w drzewie folderÃ³w lub bieÅ¼Ä…cym obszarze roboczym, aby przenieÅ›Ä‡/kopiowaÄ‡ elementy.</li>
	<li>WybÃ³r elementu w obszarze roboczym moÅ¼na rozszerzyÄ‡ wybÃ³r z klawiszem Shift lub Alt(Opcja).</li>
	<li>PrzeciÄ…gnij i UpuÅ›Ä‡ do folderu docelowego lub obszaru roboczego, aby przesÅ‚aÄ‡ pliki i foldery.</li>
	<li>W oknie dialogowym przesyÅ‚ania moÅ¼na zaakceptowaÄ‡ wklejanie/upuszczanie danych schowka lub listy adresÃ³w URL, i PrzeciÄ…gnij i UpuÅ›Ä‡ z innych przeglÄ…darek lub menedÅ¼erÃ³w plikÃ³w, itp.</li>
	<li>Rozpocznij PrzeciÄ…ganie naciskajÄ…c Alt (Opcja), aby przeciÄ…gnÄ…Ä‡ na zewnÄ…trz przeglÄ…darki. Stanie siÄ™ operacjÄ… pobierania z Google Chrome. </li>
</ul>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         includes/File_manager/lib/js/i18n/help/ru.html.js                                                   0000644                 00000003105 15266052766 0015561 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Ð¡Ð¾Ð²ÐµÑ‚Ñ‹ Ð¿Ð¾ Ñ€Ð°Ð±Ð¾Ñ‚Ðµ</h2>
<p>Ð Ð°Ð±Ð¾Ñ‚Ð° Ñ� Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑ�ÐºÐ¸Ð¼ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ�Ð¾Ð¼ Ð¿Ð¾Ñ…Ð¾Ð¶Ð° Ð½Ð° Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ€ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹. ÐžÐ´Ð½Ð°ÐºÐ¾ Ð¿ÐµÑ€ÐµÑ‚Ð°Ñ�ÐºÐ¸Ð²Ð°Ð½Ð¸Ðµ Ð² Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ñ… Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°Ñ… Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾.</p>
<ul>
	<li>Ð©ÐµÐ»ÐºÐ½Ð¸Ñ‚Ðµ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ Ð¼Ñ‹ÑˆÐ¸ Ð¸Ð»Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Â«Ð´Ð»Ð¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð°Ð¿Â», Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚ÑŒ ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð½Ð¾Ðµ Ð¼ÐµÐ½ÑŽ.</li>
	<li>ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ð² Ð´ÐµÑ€ÐµÐ²Ð¾ Ð¿Ð°Ð¿Ð¾Ðº Ð¸Ð»Ð¸ Ñ‚ÐµÐºÑƒÑ‰ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‡ÑƒÑŽ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� / ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð².</li>
	<li>Ð’Ñ‹Ð±Ð¾Ñ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð² Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½ Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ Shift Ð¸Ð»Ð¸ Alt (Option).</li>
	<li>ÐŸÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚Ðµ Ð² Ð¿Ð°Ð¿ÐºÑƒ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¸Ð»Ð¸ Ñ€Ð°Ð±Ð¾Ñ‡ÑƒÑŽ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸ Ð¿Ð°Ð¿Ð¾Ðº.</li>
	<li>Ð’ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¾Ð¼ Ð¾ÐºÐ½Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ñ�Ñ‚Ð°Ð²ÐºÑƒ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¸Ð»Ð¸ Ñ�Ð¿Ð¸Ñ�ÐºÐ¾Ð² URL-Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² Ð¸Ð· Ð±ÑƒÑ„ÐµÑ€Ð° Ð¾Ð±Ð¼ÐµÐ½Ð°, Ð° Ñ‚Ð°ÐºÐ¶Ðµ Ð¿ÐµÑ€ÐµÑ‚Ð°Ñ�ÐºÐ¸Ð²Ð°Ñ‚ÑŒ Ð¸Ð· Ð´Ñ€ÑƒÐ³Ð¸Ñ… Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð² Ð¸Ð»Ð¸ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ñ… Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ€Ð¾Ð² Ð¸ Ñ‚.Ð´.</li>
	<li>Ð�Ð°Ñ‡Ð½Ð¸Ñ‚Ðµ Ð¿ÐµÑ€ÐµÑ‚Ð°Ñ�ÐºÐ¸Ð²Ð°Ð½Ð¸Ðµ, Ð½Ð°Ð¶Ð°Ð² Alt (Option), Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð¿ÐµÑ€ÐµÑ‚Ð°Ñ‰Ð¸Ñ‚ÑŒ Ð·Ð° Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‹ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°. Ð­Ñ‚Ð¾ Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ� Ñ�ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ� Ð² Google Chrome.</li>
</ul>
                                                                                                                                                                                                                                                                                                                                                                                                                                                           includes/File_manager/lib/js/i18n/help/tr.html.js                                                   0000644                 00000001652 15266052767 0015566 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Ä°ÅŸlem Ä°puÃ§larÄ±</h2>
<p>KullanÄ±cÄ± arayÃ¼zÃ¼ndeki iÅŸlem, iÅŸletim sisteminin standart dosya yÃ¶neticisine benzer. Ancak SÃ¼rÃ¼kle ve BÄ±rak Ã¶zelliÄŸi mobil tarayÄ±cÄ±larda mÃ¼mkÃ¼n deÄŸildir. </p>
<ul>
	<li>BaÄŸlam menÃ¼sÃ¼nÃ¼ gÃ¶stermek iÃ§in saÄŸ tÄ±klayÄ±n veya uzun dokunun.</li>
	<li>Ã–ÄŸeleri taÅŸÄ±mak/kopyalamak iÃ§in klasÃ¶r aÄŸacÄ±na veya geÃ§erli Ã§alÄ±ÅŸma alanÄ±na sÃ¼rÃ¼kleyip bÄ±rakÄ±n.</li>
	<li>Ã‡alÄ±ÅŸma alanÄ±ndaki Ã¶ÄŸe seÃ§imi Shift veya Alt (SeÃ§enek) tuÅŸuyla geniÅŸletilebilir.</li>
	<li>Dosya ve klasÃ¶r yÃ¼klemek iÃ§in hedef klasÃ¶re veya Ã§alÄ±ÅŸma alanÄ±na sÃ¼rÃ¼kleyip bÄ±rakÄ±n.</li>
	<li>YÃ¼kleme iletiÅŸim kutusu, pano verilerini veya URL listelerini yapÄ±ÅŸtÄ±rma/bÄ±rakma ve diÄŸer tarayÄ±cÄ± veya dosya yÃ¶neticilerinden SÃ¼rÃ¼kle ve BÄ±rak vb.</li>
	<li>DÄ±ÅŸ tarayÄ±cÄ±ya sÃ¼rÃ¼klemek iÃ§in Alt (SeÃ§enek) tuÅŸuna basarak sÃ¼rÃ¼kleyin. Google Chrome ile indirme iÅŸlemi olacak.</li>
</ul>
                                                                                      includes/File_manager/lib/js/i18n/help/es.html.js                                                   0000644                 00000002042 15266052770 0015534 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Consejos de operaci&oacute;n</h2>
<p>Operar en la Interfaz del Usuario es similar al administrador de archivos estandar del sistema operativo. Sin embargo, Arrastrar y soltar no es posible con los navegadores m&oacute;viles.</p>
<ul>
	<li>Click derecho o un tap largo para mostrar el men&uacute; de contexto.</li>
	<li>Arrastrar y soltar dentro del &aacute;rbol de carpetas o el espacio de trabajo actual para mover/copiar elementos.</li>
	<li>La selecci&oacute;n de elementos en el espacio de trabajo puede ampliarse con la tecla Shift o Alt (Opci&oacute;n).</li>
	<li>Arrastrar y soltar a la carpeta de destino o &aacute;rea de trabajo para cargar archivos y carpetas.</li>
	<li>El cuadro de di&aacute;logo de carga puede aceptar pegar/soltar datos del portapapeles o listas de URL y arrastrar y soltar desde otro navegador o administrador de archivos, etc.</li>
	<li>Iniciar a arrastrar presionando la tecla Alt (Opci&oacute;n) para arrastrar fuera del navegador. Se convertir&aacute; en una operaci&oacute;n de descarga con Google Chrome.</li>
</ul>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              includes/File_manager/lib/js/i18n/help/sk.html.js                                                   0000644                 00000001745 15266052770 0015553 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Tipy na obsluhu</h2>
<p>Obsluha na pouÅ¾Ã­vateÄ¾skom rozhranÃ­ je podobnÃ¡ Å¡tandardnÃ©mu sprÃ¡vcovi sÃºborov operaÄ�nÃ©ho systÃ©mu. Drag and Drop vÅ¡ak nie je moÅ¾nÃ© pouÅ¾Ã­vaÅ¥ s mobilnÃ½mi prehliadaÄ�mi. </p>
<ul>
	<li>KliknutÃ­m pravÃ½m tlaÄ�idlom alebo dlhÃ½m klepnutÃ­m zobrazÃ­te kontextovÃ© menu.</li>
	<li>PresuÅˆte myÅ¡ou do stromu prieÄ�inkov alebo do aktuÃ¡lneho pracovnÃ©ho priestoru a presuÅˆte / kopÃ­rujte poloÅ¾ky.</li>
	<li>VÃ½ber poloÅ¾ky v pracovnom priestore mÃ´Å¾ete rozÅ¡Ã­riÅ¥ pomocou klÃ¡vesov Shift alebo Alt (MoÅ¾nosÅ¥).</li>
	<li>Premiestnite sÃºbory a prieÄ�inky do cieÄ¾ovej zloÅ¾ky alebo do pracovnÃ©ho priestoru.</li>
	<li>Dialog odovzdÃ¡vania mÃ´Å¾e prijÃ­maÅ¥ dÃ¡ta schrÃ¡nky alebo zoznamy adries URL a pritiahnuÅ¥ a odÃ­sÅ¥ z inÃ½ch prehliadaÄ�ov alebo sprÃ¡vcov sÃºborov.</li>
	<li>PotiahnutÃ­m spustite stlaÄ�enÃ­m klÃ¡vesu Alt (MoÅ¾nosÅ¥) pretiahnite do vonkajÅ¡ieho prehliadaÄ�a. TÃ¡to funkcia sa prevezme pomocou prehliadaÄ�a Google Chrome.</li>
</ul>
                           includes/File_manager/lib/js/i18n/help/en.html.js                                                   0000644                 00000001440 15266052771 0015531 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Operation Tips</h2>
<p>Operation on the UI is similar to operating system&#39;s standard file manager. However, Drag and Drop is not possible with mobile browsers. </p>
<ul>
	<li>Right click or long tap to show the context menu.</li>
	<li>Drag and drop into the folder tree or the current workspace to move/copy items.</li>
	<li>Item selection in the workspace can be extended selection with Shift or Alt (Option) key.</li>
	<li>Drag and Drop to the destination folder or workspace to upload files and folders.</li>
	<li>The upload dialog can accept paste/drop clipboard data or URL lists and Drag and Drop from other browser or file managers etc.</li>
	<li>Drag start with pressing Alt(Option) key to drag out to outside browser. It will became download operation with Google Chrome.</li>
</ul>
                                                                                                                                                                                                                                includes/File_manager/lib/js/i18n/help/de.html.js                                                   0000644                 00000004370 15266052771 0015524 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Anwendungstipps</h2>
<p>Die Verwendung dieser Anwendung ist Ã¤hnlich der einer lokalen Dateiverwaltung.<br><b>Hinweis</b>: auf mobilen GerÃ¤ten ist das Ziehen und Ablegen (Drag and Drop) von Dateien nicht mÃ¶glich.</p>
<ul>
	<li>Rechtsklick auf ein Element oder lÃ¤nger darauf zeigen Ã¶ffnet das KontextmenÃ¼</li>
	<li>Um Elemente in andere Ordner oder aktuellen Arbeitsbereich zu kopieren oder verschieben diese Ziehen und Ablegen</li>
	<li>Elementauswahl im Arbeitsbereich kann mit der Hochstell- oder ALT-TAste erweitert werden</li>
	<li>Um lokale Ordner und Dateien in den Zielorder oder -arbeitsbereich zu kopieren diese Ziehen und Ablegen</li>
	<li>Der Uploaddialog erlaubt Daten aus dem Clipboard (Zwischenspeicher), eine URL und Ziehen und Ablegen aus anderen Browsern und DateiverwaltungsoberflÃ¤chen</li>
	<li>Ziehen mit gedrÃ¼ckter ALT-Taste erlaubt einen einfachen Dateidownload (nur Google Chrome)</li>
	<li>Ordner und Dateien kÃ¶nnen ausgeblendet (versteckt) werden. Um sie wieder dauerhaft sichtbar zu machen, Ã¼ber die MenÃ¼leiste das "Icon Einstellungen" anklicken, dort unter Arbeitsplatz "Zeige versteckte Elemente" den Button "Neustart" anklicken</li>
	<li>Das KontextmenÃ¼ (rechte Maustaste) zeigt je nach ausgewÃ¤hlten Element diverse Aktionen an</li>
	<li>Je nach Art des Elements kann der Inhalt entweder mit dem integrierten Editor bearbeitet werden (z.B. .php, .txt, .ini usw.) oder wenn ein Bild dieses gedreht sowie die GrÃ¶ÃŸe geÃ¤ndert werden</li>
	<li>Zum verbinden externer Speicherorte (FTP, Dropbox, Box, GoogleDrive, OneDrive) sowie Onlineeditor <a href="https://www.zoho.com/officeplatform/integrator/" target="_blank">Zoho Office Editor</a> oder Konvertierungsdienst <a href="https://www.online-convert.com/" target="_blank">Online-Convert</a> mÃ¼ssen diese Anwendungen freigeschaltet als auch die entsprechenden API-Daten zum Abrufen je Dienst definiert sein.<br>Sollten diese Dienste nicht verfÃ¼gbar sein, mÃ¼ssen diese entweder selbstÃ¤ndig dazu programmiert werden, oder einen Entwickler des Vertrauens damit beauftragen (z.B. <a href="https://osworx.net" target="_blank">OSWorX</a>)</li>
	<li>In den Einstellungen "MenÃ¼ Icon Einstellungen" kann der gesamte Arbeitsbereich, die MenÃ¼leiste sowie etliche weitere Aktionen definiert werden</li>
</ul>
                                                                                                                                                                                                                                                                        includes/File_manager/lib/js/i18n/help/ko.html.js                                                   0000644                 00000002034 15266052771 0015540 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>ì‚¬ìš© íŒ�</h2>
<p>UI ì¡°ìž‘ì�€ ìš´ì˜�ì²´ì œì�˜ í‘œì¤€ íŒŒì�¼ ê´€ë¦¬ìž�ë¥¼ ì‚¬ìš©í•˜ëŠ” ë°©ë²•ê³¼ ë¹„ìŠ·í•©ë‹ˆë‹¤. í•˜ì§€ë§Œ ëª¨ë°”ì�¼ ë¸Œë�¼ìš°ì €ì—�ì„œëŠ” ë“œëž˜ê·¸ì•¤ë“œë¡­ì�„ ì‚¬ìš©í•  ìˆ˜ ì—†ìŠµë‹ˆë‹¤. </p>
<ul>
	<li>ì˜¤ë¥¸ìª½ í�´ë¦­í•˜ê±°ë‚˜ ê¸¸ê²Œ ëˆ„ë¥´ë©´ ì»¨í…�ìŠ¤íŠ¸ ë©”ë‰´ê°€ ë‚˜íƒ€ë‚©ë‹ˆë‹¤.</li>
	<li>ì�´ë�™/ë³µì‚¬í•˜ë ¤ë©´ í�´ë�” íŠ¸ë¦¬ ë˜�ëŠ” ì›�í•˜ëŠ” í�´ë�”ë¡œ ë“œëž˜ê·¸ì•¤ë“œë¡­í•˜ì‹­ì‹œì˜¤.</li>
	<li>ìž‘ì—…ê³µê°„ì—�ì„œ í•­ëª©ì�„ ì„ íƒ�í•˜ë ¤ë©´ Shiftë˜�ëŠ” Alt(Option) í‚¤ë¥¼ ì‚¬ìš©í•˜ì—¬ ì„ íƒ� ì˜�ì—­ì�„ ë„“íž� ìˆ˜ ìžˆìŠµë‹ˆë‹¤.</li>
	<li>ì—…ë¡œë“œ ëŒ€ìƒ� í�´ë�” ë˜�ëŠ” ìž‘ì—… ì˜�ì—­ìœ¼ë¡œ íŒŒì�¼ë°� í�´ë�”ë¥¼ ë“œëž˜ê·¸ì•¤ë“œë¡­í•˜ì—¬ ì—…ë¡œë“œí•  ìˆ˜ ìžˆìŠµë‹ˆë‹¤.</li>
	<li>ë‹¤ë¥¸ ë¸Œë�¼ìš°ì € ë˜�ëŠ” íŒŒì�¼ê´€ë¦¬ìž�ë“±ì—�ì„œ ë“œëž˜ê·¸ì•¤ë“œë¡­í•˜ê±°ë‚˜, í�´ë¦½ë³´ë“œë¥¼ í†µí•´ ë�°ì�´í„°ë˜�ëŠ” URLì�„ ë³µì‚¬/ë¶™ì—¬ë„£ì–´ ì—…ë¡œë“œí•  ìˆ˜ ìžˆìŠµë‹ˆë‹¤.</li>
	<li>í�¬ë¡¬ë¸Œë�¼ìš°ì €ì�˜ ê²½ìš°, Alt(Option) í‚¤ë¥¼ ëˆ„ë¥¸ ìƒ�íƒœì—�ì„œ ë¸Œë�¼ìš°ì € ë°–ìœ¼ë¡œ ë“œëž˜ê·¸ì•¤ë“œë¡­í•˜ë©´ ë‹¤ìš´ë¡œë“œê°€ ê°€ëŠ¥í•©ë‹ˆë‹¤.</li>
</ul>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/js/i18n/help/fr.html.js                                                   0000644                 00000002576 15266052771 0015551 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>Conseils d'utilisation</h2>
<p>Le fonctionnement sur l&#39;interface utilisateur est similaire &agrave; celui du gestionnaire de fichiers standard du syst&egrave;me d&#39;exploitation. Cependant, le glisser-d&eacute;poser n&#39;est pas possible avec les navigateurs mobiles. </p>
<ul>
<li>Cliquez avec le bouton droit ou appuyez longuement pour afficher le menu contextuel.</li>
<li>Faites glisser et d&eacute;posez dans l&#39;arborescence des dossiers ou dans l&#39;espace de travail actuel pour d&eacute;placer/copier des &eacute;l&eacute;ments.</li>
<li>La s&eacute;lection d&#39;&eacute;l&eacute;ments dans l&#39;espace de travail peut &ecirc;tre une s&eacute;lection &eacute;tendue avec la touche Maj ou Alt (Option).</li>
<li>Faites glisser et d&eacute;posez vers le dossier ou l&#39;espace de travail de destination pour t&eacute;l&eacute;charger des fichiers et des dossiers.</li>
<li>La bo&icirc;te de dialogue de t&eacute;l&eacute;chargement peut accepter le collage/d&eacute;placement de donn&eacute;es du presse-papiers ou de listes d&#39;URL, ainsi que le glisser-d&eacute;poser depuis d&#39;autres navigateurs ou gestionnaires de fichiers, etc.</li>
<li>Faites glisser le d&eacute;but en appuyant sur la touche Alt (Option) pour le faire glisser vers l&#39;ext&eacute;rieur du navigateur. Cela deviendra une op&eacute;ration de t&eacute;l&eacute;chargement avec Google Chrome.</li>
</ul>
                                                                                                                                  includes/File_manager/lib/js/i18n/help/ja.html.js                                                   0000644                 00000002402 15266052772 0015521 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <h2>æ“�ä½œã�®ãƒ’ãƒ³ãƒˆ</h2>
<p>UIã�®æ“�ä½œã�¯ã€�ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã�®æ¨™æº–ãƒ•ã‚¡ã‚¤ãƒ«ãƒžãƒ�ãƒ¼ã‚¸ãƒ£ã�«ã�»ã�¼æº–æ‹ ã�—ã�¦ã�„ã�¾ã�™ã€‚ã�Ÿã� ã�—ã€�ãƒ¢ãƒ�ã‚¤ãƒ«ãƒ–ãƒ©ã‚¦ã‚¶ã�§ã�¯ãƒ‰ãƒ©ãƒƒã‚°ï¼†ãƒ‰ãƒ­ãƒƒãƒ—ã�¯ã�§ã��ã�¾ã�›ã‚“ã€‚</p>
<ul>
	<li>å�³ã‚¯ãƒªãƒƒã‚¯ã�¾ã�Ÿã�¯ãƒ­ãƒ³ã‚°ã‚¿ãƒƒãƒ—ã�§ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’è¡¨ç¤ºã�—ã�¾ã�™ã€‚</li>
	<li>ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç§»å‹•/ã‚³ãƒ”ãƒ¼ã�™ã‚‹ã�«ã�¯ã€�ãƒ•ã‚©ãƒ«ãƒ€ãƒ„ãƒªãƒ¼ã�¾ã�Ÿã�¯ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã�«ãƒ‰ãƒ©ãƒƒã‚°ï¼†ãƒ‰ãƒ­ãƒƒãƒ—ã�—ã�¾ã�™ã€‚</li>
	<li>ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹å†…ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�®é�¸æŠžã�¯ã€�Shiftã‚­ãƒ¼ã�¾ã�Ÿã�¯Altã‚­ãƒ¼(Optionã‚­ãƒ¼)ã�§é�¸æŠžç¯„å›²ã‚’æ‹¡å¼µã�§ã��ã�¾ã�™ã€‚</li>
	<li>ã‚³ãƒ”ãƒ¼å…ˆã�®ãƒ•ã‚©ãƒ«ãƒ€ã�¾ã�Ÿã�¯ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã�«ãƒ‰ãƒ©ãƒƒã‚°ã‚¢ãƒ³ãƒ‰ãƒ‰ãƒ­ãƒƒãƒ—ã�—ã�¦ã€�ãƒ•ã‚¡ã‚¤ãƒ«ã�¨ãƒ•ã‚©ãƒ«ãƒ€ã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã�—ã�¾ã�™ã€‚</li>
	<li>ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã�§ã�¯ã€�ã‚¯ãƒªãƒƒãƒ—ãƒœãƒ¼ãƒ‰ã�®ãƒ‡ãƒ¼ã‚¿ã‚„URLãƒªã‚¹ãƒˆã�®ãƒšãƒ¼ã‚¹ãƒˆ/ãƒ‰ãƒ­ãƒƒãƒ—ã€�ä»–ã�®ãƒ–ãƒ©ã‚¦ã‚¶ã‚„ãƒ•ã‚¡ã‚¤ãƒ«ãƒžãƒ�ãƒ¼ã‚¸ãƒ£ã�‹ã‚‰ã�®ãƒ‰ãƒ©ãƒƒã‚°ï¼†ãƒ‰ãƒ­ãƒƒãƒ—ã�ªã�©ã‚’å�—ã�‘å…¥ã‚Œã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚</li>
	<li>Altã‚­ãƒ¼(Optionã‚­ãƒ¼)ã‚’æŠ¼ã�—ã�ªã�Œã‚‰ãƒ‰ãƒ©ãƒƒã‚°ã�™ã‚‹ã�¨ã€�ãƒ–ãƒ©ã‚¦ã‚¶ã�®å¤–ã�«ãƒ‰ãƒ©ãƒƒã‚°ã�§ã��ã�¾ã�™ã€‚Google Chromeã�§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ“�ä½œã�«ã�ªã‚Šã�¾ã�™ã€‚</li>
</ul>
                                                                                                                                                                                                                                                              includes/File_manager/lib/js/i18n/elfinder.ca.js                                                    0000644                 00000041305 15266052772 0015413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Catalan translation
 * @author Sergio Jovani <lesergi@gmail.com>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ca = {
		translator : 'Sergio Jovani &lt;lesergi@gmail.com&gt;',
		language   : 'CatalÃ ',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Error desconegut.',
			'errUnknownCmd'        : 'Ordre desconeguda.',
			'errJqui'              : 'La configuraciÃ³ de jQuery UI no Ã©s vÃ lida. S\'han d\'incloure els components "selectable", "draggable" i "droppable".',
			'errNode'              : 'elFinder necessita crear elements DOM.',
			'errURL'               : 'La configuraciÃ³ de l\'elFinder no Ã©s vÃ lida! L\'opciÃ³ URL no estÃ  configurada.',
			'errAccess'            : 'AccÃ©s denegat.',
			'errConnect'           : 'No s\'ha pogut connectar amb el rerefons.',
			'errAbort'             : 'S\'ha interromput la connexiÃ³.',
			'errTimeout'           : 'Temps de connexiÃ³ excedit.',
			'errNotFound'          : 'No s\'ha trobat el rerefons.',
			'errResponse'          : 'La resposta del rerefons no Ã©s vÃ lida.',
			'errConf'              : 'La configuraciÃ³ del rerefons no Ã©s vÃ lida.',
			'errJSON'              : 'No estÃ  instalÂ·lat el mÃ²dul JSON del PHP.',
			'errNoVolumes'         : 'No s\'han trobat volums llegibles.',
			'errCmdParams'         : 'Els parÃ metres per l\'ordre "$1" no sÃ³n vÃ lids.',
			'errDataNotJSON'       : 'Les dades no sÃ³n JSON.',
			'errDataEmpty'         : 'Les dades estan buides.',
			'errCmdReq'            : 'La solÂ·licitud del rerefons necessita el nom de l\'ordre.',
			'errOpen'              : 'No s\'ha pogut obrir "$1".',
			'errNotFolder'         : 'L\'objecte no Ã©s una carpeta.',
			'errNotFile'           : 'L\'objecte no Ã©s un fitxer.',
			'errRead'              : 'No s\'ha pogut llegir "$1".',
			'errWrite'             : 'No s\'ha pogut escriure a "$1".',
			'errPerm'              : 'PermÃ­s denegat.',
			'errLocked'            : '"$1" estÃ  bloquejat i no podeu canviar-li el nom, moure-lo ni suprimir-lo.',
			'errExists'            : 'Ja existeix un fitxer anomenat "$1".',
			'errInvName'           : 'El nom de fitxer no Ã©s vÃ lid.',
			'errFolderNotFound'    : 'No s\'ha trobat la carpeta.',
			'errFileNotFound'      : 'No s\'ha trobat el fitxer.',
			'errTrgFolderNotFound' : 'No s\'ha trobat la carpeta de destÃ­ "$1".',
			'errPopup'             : 'El navegador ha evitat obrir una finestra emergent. Autoritzeu-la per obrir el fitxer.',
			'errMkdir'             : 'No s\'ha pogut crear la carpeta "$1".',
			'errMkfile'            : 'No s\'ha pogut crear el fitxer "$1".',
			'errRename'            : 'No s\'ha pogut canviar el nom de "$1".',
			'errCopyFrom'          : 'No estÃ  permÃ¨s copiar fitxers des del volum "$1".',
			'errCopyTo'            : 'No estÃ  permÃ¨s copiar fitxers al volum "$1".',
			'errUpload'            : 'S\'ha produÃ¯t un error en la cÃ rrega.',
			'errUploadFile'        : 'No s\'ha pogut carregar "$1".',
			'errUploadNoFiles'     : 'No s\'han trobat fitxers per carregar.',
			'errUploadTotalSize'   : 'Les dades excedeixen la mida mÃ xima permesa.',
			'errUploadFileSize'    : 'El fitxer excedeix la mida mÃ xima permesa.',
			'errUploadMime'        : 'El tipus de fitxer no estÃ  permÃ¨s.',
			'errUploadTransfer'    : 'S\'ha produÃ¯t un error en transferir "$1".', 
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'No s\'ha pogut desar "$1".',
			'errCopy'              : 'No s\'ha pogut copiar "$1".',
			'errMove'              : 'No s\'ha pogut moure "$1".',
			'errCopyInItself'      : 'No s\'ha pogut copiar "$1" a si mateix.',
			'errRm'                : 'No s\'ha pogut suprimir "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'No s\'han pogut extreure els fitxers de "$1".',
			'errArchive'           : 'No s\'ha pogut crear l\'arxiu.',
			'errArcType'           : 'El tipus d\'arxiu no estÃ  suportat.',
			'errNoArchive'         : 'El fitxer no Ã©s un arxiu o Ã©s un tipus no suportat.',
			'errCmdNoSupport'      : 'El rerefons no suporta aquesta ordre.',
			'errReplByChild'       : 'No es pot reemplaÃ§ar la carpeta â€œ$1â€� per un element que contÃ©.',
			'errArcSymlinks'       : 'Per raons de seguretat, no es permet extreure arxius que contenen enllaÃ§os simbÃ²lics.',
			'errArcMaxSize'        : 'Els fitxers de l\'arxiu excedeixen la mida mÃ xima permesa.',
			'errResize'            : 'No s\'ha pogut redimensionar "$1".',
			'errResizeDegree' : 'Invalid rotate degree.',
			'errResizeRotate' : 'Unable to rotate image.',
			'errResizeSize' : 'Invalid image size.',
			'errResizeNoChange' : 'Image size not changed.',
			'errUsupportType'      : 'El tipus de fitxer no estÃ  suportat.',
			'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.',
			'errNetMount' : 'Unable to mount "$1".',
			'errNetMountNoDriver' : 'Unsupported protocol.',
			'errNetMountFailed' : 'Mount failed.',
			'errNetMountHostReq' : 'Host required.',
			'errSessionExpires' : 'Your session has expired due to inactivity.',
			'errCreatingTempDir' : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec' : 'Error while archiving files: "$1"',
			'errExtractExec' : 'Error while extracting files: "$1"',
			
			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crea arxiu',
			'cmdback'      : 'Enrere',
			'cmdcopy'      : 'Copia',
			'cmdcut'       : 'Retalla',
			'cmddownload'  : 'Descarrega',
			'cmdduplicate' : 'Duplica',
			'cmdedit'      : 'Edita el fitxer',
			'cmdextract'   : 'Extreu els fitxers de l\'arxiu',
			'cmdforward'   : 'Endavant',
			'cmdgetfile'   : 'Selecciona els fitxers',
			'cmdhelp'      : 'Quant a aquest programari',
			'cmdhome'      : 'Inici',
			'cmdinfo'      : 'ObtÃ© informaciÃ³',
			'cmdmkdir'     : 'Nova carpeta',
			'cmdmkfile'    : 'Nou fitxer',
			'cmdopen'      : 'Obre',
			'cmdpaste'     : 'Enganxa',
			'cmdquicklook' : 'Previsualitza',
			'cmdreload'    : 'Torna a carregar',
			'cmdrename'    : 'Canvia el nom',
			'cmdrm'        : 'Suprimeix',
			'cmdsearch'    : 'Cerca fitxers',
			'cmdup'        : 'VÃ©s al directori superior',
			'cmdupload'    : 'Carrega fitxers',
			'cmdview'      : 'Visualitza',
			'cmdresize'    : 'Redimensiona la imatge',
			'cmdsort'      : 'Ordena',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'Tanca',
			'btnSave'   : 'Desa',
			'btnRm'     : 'Suprimeix',
			'btnApply'  : 'Aplica',
			'btnCancel' : 'CancelÂ·la',
			'btnNo'     : 'No',
			'btnYes'    : 'SÃ­',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'S\'estÃ  obrint la carpeta',
			'ntffile'     : 'S\'estÃ  obrint el fitxer',
			'ntfreload'   : 'S\'estÃ  tornant a carregar el contingut de la carpeta',
			'ntfmkdir'    : 'S\'estÃ  creant el directori',
			'ntfmkfile'   : 'S\'estan creant el fitxers',
			'ntfrm'       : 'S\'estan suprimint els fitxers',
			'ntfcopy'     : 'S\'estan copiant els fitxers',
			'ntfmove'     : 'S\'estan movent els fitxers',
			'ntfprepare'  : 'S\'estÃ  preparant per copiar fitxers',
			'ntfrename'   : 'S\'estan canviant els noms del fitxers',
			'ntfupload'   : 'S\'estan carregant els fitxers',
			'ntfdownload' : 'S\'estan descarregant els fitxers',
			'ntfsave'     : 'S\'estan desant els fitxers',
			'ntfarchive'  : 'S\'estÃ  creant l\'arxiu',
			'ntfextract'  : 'S\'estan extreient els fitxers de l\'arxiu',
			'ntfsearch'   : 'S\'estan cercant els fitxers',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'S\'estan realitzant operacions',
			'ntfloadimg'  : 'S\'estÃ  carregant la imatge',
			'ntfnetmount' : 'Mounting network volume',
			'ntfdim'      : 'Acquiring image dimension',
			
			/************************************ dates **********************************/
			'dateUnknown' : 'desconegut',
			'Today'       : 'Avui',
			'Yesterday'   : 'Ahir',
			'msJan'       : 'gen.',
			'msFeb'       : 'febr.',
			'msMar'       : 'marÃ§',
			'msApr'       : 'abr.',
			'msMay'       : 'maig',
			'msJun'       : 'juny',
			'msJul'       : 'jul.',
			'msAug'       : 'ag.',
			'msSep'       : 'set.',
			'msOct'       : 'oct.',
			'msNov'       : 'nov.',
			'msDec'       : 'des.',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun', 
			'Mon'         : 'Mon', 
			'Tue'         : 'Tue', 
			'Wed'         : 'Wed', 
			'Thu'         : 'Thu', 
			'Fri'         : 'Fri', 
			'Sat'         : 'Sat',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'per nom', 
			'sortkind'          : 'per tipus', 
			'sortsize'          : 'per mida',
			'sortdate'          : 'per data',
			'sortFoldersFirst' : 'Folders first',
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Es necessita confirmaciÃ³',
			'confirmRm'       : 'Voleu suprimir els fitxers?<br />L\'acciÃ³ es podrÃ  desfer!',
			'confirmRepl'     : 'Voleu reemplaÃ§ar el fitxer antic amb el nou?',
			'apllyAll'        : 'Aplica a tot',
			'name'            : 'Nom',
			'size'            : 'Mida',
			'perms'           : 'Permisos',
			'modify'          : 'Modificat',
			'kind'            : 'Tipus',
			'read'            : 'llegir',
			'write'           : 'escriure',
			'noaccess'        : 'sense accÃ©s',
			'and'             : 'i',
			'unknown'         : 'desconegut',
			'selectall'       : 'Selecciona tots els fitxers',
			'selectfiles'     : 'Selecciona el(s) fitxer(s)',
			'selectffile'     : 'Selecciona el primer fitxer',
			'selectlfile'     : 'Selecciona l\'Ãºltim fitxer',
			'viewlist'        : 'Vista en llista',
			'viewicons'       : 'Vista en icones',
			'places'          : 'Llocs',
			'calc'            : 'Calcula', 
			'path'            : 'CamÃ­',
			'aliasfor'        : 'Ã€lies per',
			'locked'          : 'Bloquejat',
			'dim'             : 'Dimensions',
			'files'           : 'Fitxers',
			'folders'         : 'Carpetes',
			'items'           : 'Elements',
			'yes'             : 'sÃ­',
			'no'              : 'no',
			'link'            : 'EnllaÃ§',
			'searcresult'     : 'Resultats de la cerca',  
			'selected'        : 'Elements seleccionats',
			'about'           : 'Quant a',
			'shortcuts'       : 'Dreceres',
			'help'            : 'Ajuda',
			'webfm'           : 'Gestor de fitxers web',
			'ver'             : 'VersiÃ³',
			'protocolver'     : 'versiÃ³ de protocol',
			'homepage'        : 'PÃ gina del projecte',
			'docs'            : 'DocumentaciÃ³',
			'github'          : 'Bifurca\'ns a GitHub',
			'twitter'         : 'Segueix-nos a Twitter',
			'facebook'        : 'Uniu-vos a Facebook',
			'team'            : 'Equip',
			'chiefdev'        : 'cap desenvolupador',
			'developer'       : 'desenvolupador',
			'contributor'     : 'colÂ·laborador',
			'maintainer'      : 'mantenidor',
			'translator'      : 'traductor',
			'icons'           : 'Icones',
			'dontforget'      : 'i no oblideu agafar la vostra tovallola',
			'shortcutsof'     : 'Les dreceres estan inhabilitades',
			'dropFiles'       : 'Arrossegueu els fitxers aquÃ­',
			'or'              : 'o',
			'selectForUpload' : 'Seleccioneu els fitxer a carregar',
			'moveFiles'       : 'Mou els fitxers',
			'copyFiles'       : 'Copia els fitxers',
			'rmFromPlaces'    : 'Suprimeix dels llocs',
			'aspectRatio'     : 'RelaciÃ³ d\'aspecte',
			'scale'           : 'Escala',
			'width'           : 'Amplada',
			'height'          : 'AlÃ§ada',
			'resize'          : 'Redimensiona',
			'crop'            : 'Retalla',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume',
			'protocol'        : 'Protocol',
			'host'            : 'Host',
			'port'            : 'Port',
			'user'            : 'User',
			'pass'            : 'Password',
			
			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconegut',
			'kindFolder'      : 'Carpeta',
			'kindAlias'       : 'Ã€lies',
			'kindAliasBroken' : 'Ã€lies no vÃ lid',
			// applications
			'kindApp'         : 'AplicaciÃ³',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document del Microsoft Office',
			'kindMsWord'      : 'Document del Microsoft Word',
			'kindMsExcel'     : 'Document del Microsoft Excel',
			'kindMsPP'        : 'PresentaciÃ³ del Microsoft Powerpoint',
			'kindOO'          : 'Document de l\'Open Office',
			'kindAppFlash'    : 'AplicaciÃ³ Flash',
			'kindPDF'         : 'Document PDF',
			'kindTorrent'     : 'Fitxer Bittorrent',
			'kind7z'          : 'Arxiu 7z',
			'kindTAR'         : 'Arxiu TAR',
			'kindGZIP'        : 'Arxiu GZIP',
			'kindBZIP'        : 'Arxiu BZIP',
			'kindXZ'          : 'Arxiu XZ',
			'kindZIP'         : 'Arxiu ZIP',
			'kindRAR'         : 'Arxiu RAR',
			'kindJAR'         : 'Fitxer JAR de Java',
			'kindTTF'         : 'Tipus de lletra True Type',
			'kindOTF'         : 'Tipus de lletra Open Type',
			'kindRPM'         : 'Paquet RPM',
			// fonts
			'kindFont'        : 'Tipus de lletra',
			'kindSFNT'        : 'Tipus de lletra SFNT',
			'kindEOT'         : 'Tipus de lletra Embedded Open Type',
			'kindWOFF'        : 'Tipus de lletra Web Open Font Format',
			'kindWOFF2'       : 'Tipus de lletra Web Open Font Format 2',
			// texts
			'kindText'        : 'Document de text',
			'kindTextPlain'   : 'Document de text net',
			'kindPHP'         : 'Codi PHP',
			'kindCSS'         : 'Full d\'estils CSS',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Codi Javascript',
			'kindRTF'         : 'Document RTF',
			'kindC'           : 'Codi C',
			'kindCHeader'     : 'Codi de caÃ§alera C',
			'kindCPP'         : 'Codi C++',
			'kindCPPHeader'   : 'Codi de caÃ§alera C++',
			'kindShell'       : 'Script Unix',
			'kindPython'      : 'Codi Python',
			'kindJava'        : 'Codi Java',
			'kindRuby'        : 'Codi Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Codi SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Codi AWK',
			'kindCSV'         : 'Document CSV',
			'kindDOCBOOK'     : 'Document XML de Docbook',
			// images
			'kindImage'       : 'Imatge',
			'kindBMP'         : 'Imatge BMP',
			'kindJPEG'        : 'Imatge JPEG',
			'kindGIF'         : 'Imatge GIF',
			'kindPNG'         : 'Imatge PNG',
			'kindTIFF'        : 'Imatge TIFF',
			'kindTGA'         : 'Imatge TGA',
			'kindPSD'         : 'Imatge Adobe Photoshop',
			'kindXBITMAP'     : 'Imatge X bitmap',
			'kindPXM'         : 'Imatge Pixelmator',
			// media
			'kindAudio'       : 'Fitxer d\'Ã udio',
			'kindAudioMPEG'   : 'Fitxer d\'Ã udio MPEG',
			'kindAudioMPEG4'  : 'Fitxer d\'Ã udio MPEG-4',
			'kindAudioMIDI'   : 'Fitxer d\'Ã udio MIDI',
			'kindAudioOGG'    : 'Fitxer d\'Ã udio Ogg Vorbis',
			'kindAudioWAV'    : 'Fitxer d\'Ã udio WAV',
			'AudioPlaylist'   : 'Llista de reproducciÃ³ MP3',
			'kindVideo'       : 'Fitxer de vÃ­deo',
			'kindVideoDV'     : 'Fitxer de vÃ­deo DV',
			'kindVideoMPEG'   : 'Fitxer de vÃ­deo MPEG',
			'kindVideoMPEG4'  : 'Fitxer de vÃ­deo MPEG-4',
			'kindVideoAVI'    : 'Fitxer de vÃ­deo AVI',
			'kindVideoMOV'    : 'Fitxer de vÃ­deo Quick Time',
			'kindVideoWM'     : 'Fitxer de vÃ­deo Windows Media',
			'kindVideoFlash'  : 'Fitxer de vÃ­deo Flash',
			'kindVideoMKV'    : 'Fitxer de vÃ­deo Matroska',
			'kindVideoOGG'    : 'Fitxer de vÃ­deo Ogg'
		}
	};
}));

                                                                                                                                                                                                                                                                                                                           includes/File_manager/lib/js/i18n/elfinder.si.js                                                    0000644                 00000126554 15266052773 0015456 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Sinhala translation
 * @author CodeLyokoXtEAM <XcodeLyokoTEAM@gmail.com>
 * @version 2018-03-26
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.si = {
		translator : 'CodeLyokoXtEAM &lt;XcodeLyokoTEAM@gmail.com&gt;',
		language   : 'Sinhala',
		direction  : 'ltr',
		dateFormat : 'Y.m.d h:i A', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'à¶¯à·�à·‚à¶ºà¶šà·’.',
			'errUnknown'           : 'à¶±à·œà¶¯à¶±à·Šà¶±à·� à¶¯à·�à·‚à¶ºà¶šà·’.',
			'errUnknownCmd'        : 'à¶±à·œà¶¯à¶±à·Šà¶±à·� à·€à·’à¶°à·�à¶±à¶ºà¶šà·’.',
			'errJqui'              : 'à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± jQuery UI à·ƒà·�à¶šà·�à·ƒà·Šà¶¸à¶šà·’. à¶­à·šà¶»à·’à¶º à·„à·�à¶šà·’, à¶‡à¶¯à¶œà·™à¶± à¶ºà·�à¶¸ à·ƒà·„ à¶‡à¶¯ à¶¯à·�à¶¸à·’à¶º à·„à·�à¶šà·’ à¶šà·œà¶§à·ƒà·Š à¶‡à¶­à·”à·…à¶­à·Š à¶šà·… à¶ºà·”à¶­à·”à¶º.',
			'errNode'              : 'ElFinder à·€à·’à·ƒà·’à¶±à·Š DOM Element à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶…à·€à·�à·Šâ€�à¶ºà·€ à¶…à·�à¶­.',
			'errURL'               : 'à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± elFinder à·ƒà·�à¶šà·�à·ƒà·Šà¶¸à¶šà·’! URL à·€à·’à¶šà¶½à·Šà¶´à¶º à·ƒà·�à¶šà·ƒà·� à¶±à·�à¶­.',
			'errAccess'            : 'à¶·à·�à·€à·’à¶­à¶º à¶…à¶­à·Šà·„à·’à¶§à·”à·€à·� à¶‡à¶­.',
			'errConnect'           : 'à¶´à·ƒà·”à¶¶à·’à¶¸(Backend) à·€à·™à¶­ à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶° à·€à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’à¶º.',
			'errAbort'             : 'à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶°à¶­à·�à·€à¶º à·€à·ƒà·�à¶¯à¶¸à·� à¶‡à¶­.',
			'errTimeout'           : 'à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶°à¶­à·� à¶šà¶½à·Š à¶‰à¶šà·”à¶­à·Šà·€à·“ à¶‡à¶­.',
			'errNotFound'          : 'à¶´à·ƒà·”à¶¶à·’à¶¸(Backend) à·ƒà·œà¶ºà·�à¶œà¶­ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errResponse'          : 'à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± à¶´à·ƒà·”à¶¶à·’à¶¸(Backend) à¶´à·Šâ€�à¶»à¶­à·’à¶ à·�à¶»à¶º.',
			'errConf'              : 'à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± Backend à·ƒà·�à¶šà·�à·ƒà·Šà¶¸à¶šà·’.',
			'errJSON'              : 'PHP JSON à¶¸à·œà¶©à·’à¶ºà·”à¶½à¶º à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà¶» à¶±à·�à¶­.',
			'errNoVolumes'         : 'à¶šà·’à¶ºà·€à·’à¶º à·„à·�à¶šà·’ à¶‘à·Šà¶šà¶š(volumes) à¶±à·œà¶¸à·�à¶­.',
			'errCmdParams'         : '"$1" à¶±à¶¸à·Š à·€à·’à¶°à·�à¶±à¶º à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± à¶´à¶»à·�à¶¸à·’à¶­à·’à¶ºà¶šà·’.',
			'errDataNotJSON'       : 'JSON à¶¯à¶­à·Šà¶­ à¶±à·œà·€à·š.',
			'errDataEmpty'         : 'à·„à·’à·ƒà·Š à¶¯à¶­à·Šà¶­à¶ºà¶šà·’.',
			'errCmdReq'            : 'Backend à·ƒà¶³à·„à·� à¶‰à¶½à·Šà¶½à¶± à¶½à¶¯ à·€à·’à¶°à·�à¶±à¶ºà·™à·Š à¶±à¶¸ à¶…à·€à·�à·Šâ€�à¶º à·€à·š.',
			'errOpen'              : '"$1" à·€à·’à·€à·˜à¶­ à¶šà·… à¶±à·œà·„à·�à¶š.',
			'errNotFolder'         : 'à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸(object) à·†à·œà¶½à·Šà¶©à¶»à¶ºà¶šà·Š à¶±à·œà·€à·š.',
			'errNotFile'           : 'à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸(object) à¶œà·œà¶±à·”à·€à¶šà·Š à¶±à·œà·€à·š.',
			'errRead'              : '"$1" à¶šà·’à¶ºà·€à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errWrite'             : '"$1" à¶­à·”à¶½ à¶½à·’à·€à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’à¶º.',
			'errPerm'              : 'à¶…à·€à·ƒà¶»à¶º à¶±à·™à·�à¶¸à·�à¶­.',
			'errLocked'            : '"$1" à¶…à¶œà·”à·…à·” à¶¯à¶¸à·� à¶‡à¶­à·’ à¶…à¶­à¶» à¶‘à¶º à¶±à·�à·€à¶­ à¶±à¶¸à·Š à¶šà·’à¶»à·“à¶¸, à·ƒà¶¸à·Šà¶´à·–à¶»à·Šà¶«à¶ºà·™à¶±à·Š à·€à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà·’à¶»à·“à¶¸ à·„à·� à¶‰à·€à¶­à·Š à¶šà·’à¶»à·“à¶¸ à¶šà·… à¶±à·œà·„à·�à¶š.',
			'errExists'            : '"$1" à¶±à¶¸à·Š à¶œà·œà¶±à·”à·€ à¶¯à·�à¶±à¶§à¶¸à¶­à·Š à¶´à·€à¶­à·“.',
			'errInvName'           : 'à¶œà·œà¶±à·” à¶±à¶¸ à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à·™à·Š.',
			'errInvDirname'        : 'à·†à·�à¶½à·Šà¶©à¶»à·Š à¶±à¶¸ à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à·™à·Š.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à·„à¶¸à·” à¶±à·œà·€à·’à¶«à·’.',
			'errFileNotFound'      : 'à¶œà·œà¶±à·”à·€ à·„à¶¸à·” à¶±à·œà·€à·’à¶«à·’.',
			'errTrgFolderNotFound' : 'à¶‰à¶½à¶šà·Šà¶šà¶œà¶­ à·†à·�à¶½à·Šà¶©à¶»à¶º "$1" à·„à¶¸à·” à¶±à·œà·€à·’à¶±à·’.',
			'errPopup'             : 'à¶¶à·Šâ€�à¶»à·€à·”à·ƒà¶»à¶º à¶‹à¶­à·Šà¶´à¶­à¶± à¶šà·€à·”à·…à·”à·€ à·€à·’à·€à·˜à¶­ à¶šà·’à¶»à·“à¶¸ à·€à·…à¶šà·Šà·€à¶ºà·’. à¶œà·œà¶±à·” à·€à·’à·€à·˜à¶­ à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à·� à¶¶à·Šâ€�à¶»à·€à·”à·ƒà¶»à¶ºà·™à·Š à·€à·’à¶šà¶½à·Šà¶´ à¶­à·”à·… à¶‘à¶º à·ƒà¶šà·Šà¶»à·’à¶º à¶šà¶»à¶±à·Šà¶±.',
			'errMkdir'             : '"$1" à·†à·�à¶½à·Šà¶©à¶»à¶º à·ƒà·‘à¶¯à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’à¶º.',
			'errMkfile'            : '"$1" à¶œà·œà¶±à·”à·€ à·ƒà·‘à¶¯à·’à¶º à¶±à·œà·„à·�à¶š.',
			'errRename'            : '"$1" à¶±à·�à·€à¶­ à¶±à¶¸à·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errCopyFrom'          : '"$1" volume à¶ºà·™à¶±à·Š à¶œà·œà¶±à·” à¶´à·’à¶§à¶´à¶­à·Š à¶šà·’à¶»à·“à¶¸ à¶­à·„à¶±à¶¸à·Šà¶º.',
			'errCopyTo'            : '"$1" volume à¶ºà¶§ à¶œà·œà¶±à·” à¶´à·’à¶§à¶´à¶­à·Š à¶šà·’à¶»à·“à¶¸ à¶­à·„à¶±à¶¸à·Šà¶º.',
			'errMkOutLink'         : 'volume root à¶ºà·™à¶±à·Š à¶´à·’à¶§à¶­à¶§ à·ƒà¶¶à·�à¶³à·’à¶º(link) à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.', // from v2.1 added 03.10.2015
			'errUpload'            : 'à¶‹à¶©à·”à¶œà¶­(upload) à¶šà·’à¶»à·“à¶¸à·š à¶¯à·�à·‚à¶ºà¶šà·’.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" à¶‹à¶©à·”à¶œà¶­(upload) à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.', // old name - errUpload
			'errUploadNoFiles'     : 'à¶‹à¶©à·”à¶œà¶­(upload) à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à·� à¶œà·œà¶±à·” à¶šà·’à·ƒà·’à·€à¶šà·Š à·ƒà·œà¶ºà·�à¶œà¶­ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errUploadTotalSize'   : 'à¶¯à¶­à·Šà¶­ à¶…à·€à·ƒà¶» à¶¯à·“ à¶…à·�à¶­à·’ à¶‹à¶´à¶»à·’à¶¸ à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à¶‰à¶šà·Šà¶¸à·€à·� à¶‡à¶­.', // old name - errMaxSize
			'errUploadFileSize'    : 'à¶œà·œà¶±à·” à¶…à·€à·ƒà¶» à¶¯à·“ à¶…à·�à¶­à·’ à¶‹à¶´à¶»à·’à¶¸ à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à¶‰à¶šà·Šà¶¸à·€à·� à¶‡à¶­.', //  old name - errFileMaxSize
			'errUploadMime'        : 'à¶œà·œà¶±à·” à·€à¶»à·Šà¶œà¶ºà¶§ à¶…à·€à·ƒà¶» à¶±à·�à¶­.',
			'errUploadTransfer'    : '"$1" à·€ à¶¸à·�à¶»à·” à¶šà·’à¶»à·“à¶¸à·š à¶¯à·�à·‚à¶ºà¶šà·’.',
			'errUploadTemp'        : 'upload à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à·� à¶­à·�à·€à¶šà·�à¶½à·’à¶š à¶œà·œà¶±à·”à·€ à·ƒà·‘à¶¯à·’à¶º à¶±à·œà·„à·�à¶š.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1" à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸(object) à¶¯à·�à¶±à¶§à¶¸à¶­à·Š à¶¸à·™à¶¸ à·ƒà·Šà¶®à·�à¶±à¶ºà·š à¶´à·€à¶­à·“, à·€à·™à¶±à¶­à·Š à·€à¶»à·Šà¶œà¶ºà¶šà·’à¶±à·’ à¶´à·Šâ€�à¶»à¶­à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà·… à¶±à·œà·„à·�à¶š.', // new
			'errReplace'           : '"$1" à¶´à·Šâ€�à¶»à¶­à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà·… à¶±à·œà·„à·�à¶š.',
			'errSave'              : '"$1" à·ƒà·”à¶»à·�à¶šà·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errCopy'              : '"$1" à¶´à·’à¶§à¶´à¶­à·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errMove'              : '"$1" à·ƒà¶¸à·Šà¶´à·–à¶»à·Šà¶«à¶ºà·™à¶±à·Š à·€à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errCopyInItself'      : '"$1" à¶­à·”à¶½à¶§ à¶´à·’à¶§à¶´à¶­à·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errRm'                : '"$1" à¶‰à·€à¶­à·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errTrash'             : 'à¶šà·”à¶«à·”-à¶šà·–à¶©à¶º à¶­à·”à¶½à¶§ à¶¯à·�à¶¸à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º à¶œà·œà¶±à·”(à·€) à¶‰à·€à¶­à·Š à¶šà·… à¶±à·œà·„à·�à¶š.',
			'errExtract'           : '"$1" à·€à·™à¶­à·’à¶±à·Š à¶œà·œà¶±à·” à¶¯à·’à¶œ à·„à·�à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.',
			'errArchive'           : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶º à·ƒà·‘à¶¯à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errArcType'           : 'à¶±à·œà¶œà·�à¶½à¶´à·™à¶± à·ƒà¶‚à¶»à¶šà·Šà·‚à¶« à·€à¶»à·Šà¶œà¶ºà¶šà·’.',
			'errNoArchive'         : 'à¶œà·œà¶±à·”à·€ à¶±à·œà¶œà·�à¶½à¶´à·™à¶± à·ƒà¶‚à¶»à¶šà·Šà·‚à¶« à·€à¶»à·Šà¶œà¶ºà¶šà·Š à·„à·� à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶ºà¶šà·Š à¶±à·™à·�à·€à·™à·Š.',
			'errCmdNoSupport'      : 'à¶´à·ƒà·”à¶¶à·’à¶¸(Backend) à¶¸à·™à¶¸ à·€à·’à¶°à·�à¶±à¶º à¶±à·œà¶¯à¶±à·“.',
			'errReplByChild'       : '"$1" à·†à·�à¶½à·Šà¶©à¶»à¶º à¶‘à·„à·’à¶¸ à¶…à¶©à¶‚à¶œà·” à¶…à¶ºà·’à¶­à¶¸à¶ºà¶šà·Š à¶¸à¶œà·’à¶±à·Š à¶´à·Šâ€�à¶»à¶­à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà·… à¶±à·œà·„à·�à¶š.',
			'errArcSymlinks'       : 'à¶†à¶»à¶šà·Šà·‚à·’à¶­ à·„à·šà¶­à·”à·€ à¶±à·’à·ƒà·� à¶…à¶±à·”à¶¸à¶­ à¶±à·œà¶šà·™à¶»à·™à¶± à·ƒà¶¶à·�à¶³à·’ à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶¯à¶­à·� à·„à·� à¶½à·’à¶´à·’à¶œà·œà¶±à·” à¶±à¶¸à·Š à¶…à¶©à¶‚à¶œà·” à¶¶à·�à·€à·’à¶±à·Š à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶º à¶¯à·’à¶œ à·„à·�à¶»à·“à¶¸ à¶šà·’à¶»à·“à¶¸à¶§ à¶‰à¶© à¶±à·œà¶¯à·™à¶±.', // edited 24.06.2012
			'errArcMaxSize'        : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶º à¶½à·’à¶´à·’à¶œà·œà¶±à·” à¶‹à¶´à¶»à·’à¶¸ à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à¶‰à¶šà·Šà¶¸à·€à·� à¶‡à¶­.',
			'errResize'            : 'à¶´à·Šâ€�à¶»à¶­à·’à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',
			'errResizeDegree'      : 'à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à¶± à¶·à·Šâ€�à¶»à¶¸à¶« à¶šà·™à·�à·Šà¶«à¶ºà¶šà·’.',  // added 7.3.2013
			'errResizeRotate'      : 'à¶»à·–à¶´à¶º à¶·à·Šâ€�à¶»à¶¸à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º.',  // added 7.3.2013
			'errResizeSize'        : 'à¶»à·–à¶´à¶ºà·™à·Š à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à·€à¶½à¶‚à¶œà·” à¶±à·œà·€à·™à·Š.',  // added 7.3.2013
			'errResizeNoChange'    : 'à¶»à·–à¶´à¶ºà·š à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à·€à·™à¶±à·ƒà·Š à¶±à·œà·€à·”à¶«à·’.',  // added 7.3.2013
			'errUsupportType'      : 'à¶±à·œà¶œà·�à¶½à¶´à·™à¶± à¶œà·œà¶±à·” à·€à¶»à·Šà¶œà¶ºà¶šà·’.',
			'errNotUTF8Content'    : '"$1" à¶œà·œà¶±à·”à·€ UTF-8 à·„à·’ à¶±à·œà¶¸à·�à¶­à·’ à¶…à¶­à¶» à·ƒà¶‚à·ƒà·Šà¶šà¶»à¶«à¶º à¶šà·… à¶±à·œà·„à·�à¶š.',  // added 9.11.2011
			'errNetMount'          : '"$1" à·ƒà·€à·’(mount) à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.', // added 17.04.2012
			'errNetMountNoDriver'  : 'à¶´à·Šâ€�à¶»à·™à·�à¶§à·œà¶šà·�à¶½à¶º(protocol) à¶±à·œà¶œà·�à¶½à¶´à·™à·Š.',     // added 17.04.2012
			'errNetMountFailed'    : 'à·ƒà·€à·’ à¶šà·’à¶»à·“à¶¸(mount à¶šà·’à¶»à·“à¶¸) à¶…à·ƒà·�à¶»à·Šà¶®à¶š à·€à·’à¶º.',         // added 17.04.2012
			'errNetMountHostReq'   : 'à¶°à·�à¶»à¶šà¶º(Host) à¶…à·€à·�à·Šâ€�à¶º à·€à·š.', // added 18.04.2012
			'errSessionExpires'    : 'à¶”à¶¶à·š à¶…à¶šà·Šâ€�à¶»à·’à¶ºà¶­à·�à·€ à·„à·šà¶­à·”à·€à·™à¶±à·Š à·ƒà·�à·ƒà·’à¶º(session) à¶šà¶½à·Š à¶‰à¶šà·”à¶­à·Š à·€à·“ à¶‡à¶­.',
			'errCreatingTempDir'   : 'à¶­à·�à·€à¶šà·�à¶½à·’à¶š à¶©à·’à¶»à·™à¶šà·Šà¶§à¶»à¶ºà¶šà·Š(directory) â€‹â€‹à·ƒà·‘à¶¯à·’à¶º à¶±à·œà·„à·�à¶š: "$1"',
			'errFtpDownloadFile'   : 'FTP à·€à¶½à·’à¶±à·Š à¶œà·œà¶±à·”à·€ à¶¶à·�à¶œà¶­(download) à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º: "$1"',
			'errFtpUploadFile'     : 'à¶œà·œà¶±à·”à·€ FTP à·€à·™à¶­ à¶‹à¶©à·”à¶œà¶­(upload) à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º: "$1"',
			'errFtpMkdir'          : 'FTP à¶¸à¶­ à¶¯à·”à¶»à·ƒà·Šà¶® à¶±à·�à¶¸à·�à·€à¶½à·’à¶ºà¶šà·Š(remote directory) à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º: "$1"',
			'errArchiveExec'       : 'à¶œà·œà¶±à·” à·ƒà¶‚à¶»à¶šà·Šà·‚à¶«à¶º(archiving) à¶šà·’à¶»à·“à¶¸à·šà¶¯à·“ à¶¯à·�à·‚à¶ºà¶šà·Š à¶‡à¶­à·’à·€à·’à¶º: "$1"',
			'errExtractExec'       : 'à¶œà·œà¶±à·” à¶¯à·’à¶œà·„à·�à¶»à·“à¶¸à·šà¶¯à·“(extracting) à¶¯à·�à·‚à¶ºà¶šà·Š à¶‡à¶­à·’à·€à·’à¶º: "$1"',
			'errNetUnMount'        : 'à·€à·’à·ƒà¶±à·Šà¶°à·’ à¶šà·’à¶»à·“à¶¸à¶§(unmount) à¶±à·œà·„à·�à¶š.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8 à·€à·™à¶­ à¶´à¶»à·’à·€à¶»à·Šà¶­à¶±à¶º à¶šà·… à¶±à·œà·„à·�à¶š.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'à¶”à¶¶ à·†à·�à¶½à·Šà¶©à¶»à¶º à¶‹à¶©à·”à¶œà¶­(upload) à¶šà·’à¶»à·“à¶¸à¶§ à¶šà·�à¶¸à¶­à·’ à¶±à¶¸à·Š à¶±à·€à·“à¶± à¶¶à·Šâ€�à¶»à·€à·”à·ƒà¶»à¶ºà¶šà·’à¶±à·Š à¶‹à¶­à·Šà·ƒà·�à·„ à¶šà¶»à¶±à·Šà¶±.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" à·ƒà·™à·€à·“à¶¸ à¶šà¶½à·Š à¶‰à¶šà·”à¶­à·Šà·€à·“ à¶‡à¶­. à·ƒà·™à·€à·”à¶¸à·Š à¶´à·Šâ€�à¶»à¶­à·’à¶µà¶½ à¶…à¶»à·Šà¶° à·€à·�à¶ºà·™à¶±à·Š à¶¯à·’à·ƒà·Šà·€à·™à·Š.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'à¶±à·�à·€à¶­ à¶¶à¶½à¶º(Re-authorization) à¶½à¶¶à·� à¶¯à·“à¶¸ à¶…à·€à·�à·Šâ€�à¶º à·€à·š.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'à¶­à·�à¶»à·� à¶œà¶­ à·„à·�à¶šà·’ à¶‹à¶´à¶»à·’à¶¸ à¶…à¶ºà·’à¶­à¶¸ à·ƒà¶‚à¶›à·Šâ€�à¶ºà·�à·€ $1 à¶šà·Š à·€à·š.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶ºà·™à¶±à·Š à¶±à·�à·€à¶­ à¶½à¶¶à·� à¶œà¶­ à¶±à·œà·„à·�à¶š. à¶ºà·…à·’ à¶´à·’à·„à·’à¶§à·”à·€à·“à¶¸à·š à¶œà¶¸à¶±à·�à¶±à·Šà¶­à¶º(restore destination) à·„à¶³à·”à¶±à·�à¶œà¶­ à¶±à·œà·„à·�à¶š.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'à¶¸à·™à¶¸ à¶œà·œà¶±à·” à·€à¶»à·Šà¶œà¶ºà·™à·Š à·ƒà¶‚à·ƒà·Šà¶šà·�à¶»à¶šà¶º à·„à¶¸à·” à¶±à·œà·€à·’à¶«à·’.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'à·ƒà·šà·€à·�à¶¯à·�à¶ºà¶šà¶ºà·š à¶´à·�à¶­à·Šà¶­à·™à¶±à·Š(server side) à¶¯à·�à·�à¶ºà¶šà·Š à¶‡à¶­à·’à·€à·’à¶º.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" à·†à·�à¶½à·Šà¶©à¶»à¶º à·„à·’à·ƒà·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶±à·œà·„à·�à¶š.', // from v2.1.25 added 22.6.2017

			/******************************* commands names ********************************/
			'cmdarchive'   : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶º(archive) à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà¶»à¶±à·Šà¶±',
			'cmdback'      : 'à¶†à¶´à·ƒà·”',
			'cmdcopy'      : 'à¶´à·’à¶§à¶´à¶­à·Š à¶šà¶»à¶±à·Šà¶±',
			'cmdcut'       : 'à¶¸à·”à·…à·”à¶¸à¶±à·’à¶±à·Šà¶¸ à¶´à·’à¶§à¶´à¶­à·Š à¶šà¶»à¶±à·Šà¶±(Cut)',
			'cmddownload'  : 'à¶¶à·�à¶œà¶­ à¶šà¶»à¶±à·Šà¶±(Download)',
			'cmdduplicate' : 'à¶…à¶±à·”à¶´à·’à¶§à¶´à¶­à·Š à¶šà¶»à¶±à·Šà¶±(Duplicate)',
			'cmdedit'      : 'à¶œà·œà¶±à·”à·€ à·ƒà¶‚à·ƒà·Šà¶šà¶»à¶«à¶º à¶šà¶»à¶±à·Šà¶±',
			'cmdextract'   : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à·’à¶­à¶ºà·š à¶œà·œà¶±à·” à¶¯à·’à¶œà·„à¶»à·’à¶±à·Šà¶±(Extract)',
			'cmdforward'   : 'à¶‰à¶¯à·’à¶»à·’à¶ºà¶§',
			'cmdgetfile'   : 'à¶œà·œà¶±à·” à¶­à·�à¶»à¶±à·Šà¶±',
			'cmdhelp'      : 'à¶¸à·™à¶¸ à¶¸à·˜à¶¯à·”à¶šà·�à¶‚à¶œà¶º à¶´à·’à·…à·’à¶¶à¶³à·€',
			'cmdhome'      : 'à¶±à·’à·€à·„à¶±(Home)',
			'cmdinfo'      : 'à¶­à·œà¶»à¶­à·”à¶»à·” à¶½à¶¶à·�à¶œà¶±à·Šà¶±',
			'cmdmkdir'     : 'à¶…à·…à·”à¶­à·Š à·†à·�à¶½à·Šà¶©à¶»à¶ºà¶šà·Š',
			'cmdmkdirin'   : 'à¶…à·…à·”à¶­à·Š à·†à·�à¶½à·Šà¶©à¶»à¶ºà¶šà·Š à¶­à·”à·…à¶§', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'à¶±à·€ à¶œà·œà¶±à·”à·€à¶šà·Š',
			'cmdopen'      : 'à·€à·’à·€à·˜à¶­ à¶šà¶»à¶±à·Šà¶±',
			'cmdpaste'     : 'à¶¯à¶¸à¶±à·Šà¶±(Paste)',
			'cmdquicklook' : 'à¶´à·–à¶»à·Šà·€ à¶¯à¶»à·Šà·�à¶±à¶ºà¶šà·Š(Preview)',
			'cmdreload'    : 'à¶±à·�à·€à¶­ à¶…à·…à·”à¶­à·Š à¶šà¶»à¶±à·Šà¶±(Reload)',
			'cmdrename'    : 'à¶±à¶¸ à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶±à·Šà¶±',
			'cmdrm'        : 'à¶¸à¶šà¶±à·Šà¶±',
			'cmdtrash'     : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶ºà¶§ à¶¯à¶¸à¶±à·Šà¶±', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'à¶ºà·…à·’ à¶´à·’à·„à·’à¶§à·”à·€à¶±à·Šà¶±(Restore)', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'à¶œà·œà¶±à·” à·ƒà·œà¶ºà¶±à·Šà¶±',
			'cmdup'        : 'à¶´à·Šâ€�à¶»à·Šâ€�à¶»à¶°à·�à¶± à¶±à·�à¶¸à·�à·€à¶½à·’à¶º(parent directory) à·€à·™à¶­ à¶ºà¶±à·Šà¶±',
			'cmdupload'    : 'à¶œà·œà¶±à·” à¶‹à¶©à·”à¶œà¶­(Upload) à¶šà¶»à¶±à·Šà¶±',
			'cmdview'      : 'à¶¯à¶»à·Šà·�à¶±à¶º(View)',
			'cmdresize'    : 'à¶´à·Šâ€�à¶»à¶®à·’à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à·ƒà·„ à¶·à·Šâ€�à¶»à¶¸à¶«à¶º',
			'cmdsort'      : 'à·€à¶»à·Šà¶œà·“à¶šà¶»à¶«à¶º à¶šà¶»à¶±à·Šà¶±',
			'cmdnetmount'  : 'à¶¢à·�à¶½ à¶‘à·Šà¶šà¶šà¶ºà¶šà·Š à·ƒà·€à·’ à¶šà¶»à¶±à·Šà¶±(Mount network volume)', // added 18.04.2012
			'cmdnetunmount': 'à¶œà¶½à·€à¶±à·Šà¶±(Unmount)', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'à¶´à·„à·ƒà·” à·ƒà·Šà¶®à·�à¶±à¶ºà¶§(To Places)', // added 28.12.2014
			'cmdchmod'     : 'à¶šà·Šâ€�à¶»à¶¸à¶º à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶±à·Šà¶±', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à·€à·’à·€à·˜à¶­ à¶šà¶»à¶±à·Šà¶±', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'à¶±à·�à·€à¶­ à¶­à·“à¶»à·” à¶´à·…à¶½ à¶´à·’à·„à·’à¶§à·”à·€à¶±à·Šà¶±', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'à¶´à·”à·…à·”à¶½à·Š à¶­à·’à¶»à¶º', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'à¶¸à·�à¶»à·” à¶šà¶»à¶±à·Šà¶±(Move)', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à·„à·’à·ƒà·Š à¶šà¶»à¶±à·Šà¶±', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'à¶±à·’à·‚à·Šà¶´à·Šâ€�à¶»à¶· à¶šà¶»à¶±à·Šà¶±', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'à¶±à·�à·€à¶­ à¶šà¶»à¶±à·Šà¶±', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'à¶…à¶·à·’à¶¸à¶­à¶ºà¶±à·Š (Preferences)', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'à·ƒà·’à¶ºà¶½à·Šà¶½ à¶­à·�à¶»à¶±à·Šà¶±', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'à¶šà·’à·ƒà·’à·€à¶šà·Š à¶­à·�à¶»à¶±à·Šà¶± à¶‘à¶´à·�', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'à·€à·’à¶»à·”à¶¯à·Šà¶° à¶…à·�à¶šà·�à¶»à¶ºà¶§ à¶­à·�à¶»à¶±à·Šà¶±', // from v2.1.28 added 15.08.2017

			/*********************************** buttons ***********************************/
			'btnClose'  : 'à·€à·ƒà¶±à·Šà¶±',
			'btnSave'   : 'à·ƒà·”à¶»à¶šà·’à¶±à·Šà¶±',
			'btnRm'     : 'à¶‰à·€à¶­à·Š à¶šà¶»à¶±à·Šà¶±',
			'btnApply'  : 'à¶ºà·™à·�à¶¯à¶±à·Šà¶±(Apply)',
			'btnCancel' : 'à¶…à·€à¶½à¶‚à¶œà·” à¶šà¶»à¶±à·Šà¶±',
			'btnNo'     : 'à¶±à·�à¶­',
			'btnYes'    : 'à¶”à·€à·Š',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'à·ƒà·€à·’à¶šà·’à¶»à·“à¶¸(Mount)',  // added 18.04.2012
			'btnApprove': 'à¶šà¶»à·”à¶«à·�à¶šà¶» $1 à¶…à¶±à·”à¶¸à¶­ à¶šà¶»à¶±à·Šà¶±', // from v2.1 added 26.04.2012
			'btnUnmount': 'à¶œà¶½à·€à¶±à·Šà¶±(Unmount)', // from v2.1 added 30.04.2012
			'btnConv'   : 'à¶´à¶»à·’à·€à¶»à·Šà¶­à¶±à¶º à¶šà¶»à¶±à·Šà¶±', // from v2.1 added 08.04.2014
			'btnCwd'    : 'à¶¸à·™à¶­à¶±',      // from v2.1 added 22.5.2015
			'btnVolume' : 'à¶‘à·Šà¶šà¶šà¶º(Volume)',    // from v2.1 added 22.5.2015
			'btnAll'    : 'à·ƒà·’à¶ºà¶½à·Šà¶½',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME à·€à¶»à·Šà¶œà¶º', // from v2.1 added 22.5.2015
			'btnFileName':'à¶œà·œà¶±à·”à·€à·š à¶±à¶¸',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'à·ƒà·”à¶»à¶šà·’à¶±à·Šà¶± à·ƒà·„ à·€à·ƒà¶±à·Šà¶±', // from v2.1 added 12.6.2015
			'btnBackup' : 'à¶‹à¶´à·ƒà·Šà¶®(Backup) à¶šà¶»à¶±à·Šà¶±', // fromv2.1 added 28.11.2015
			'btnRename'    : 'à¶±à¶¸ à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶±à·Šà¶±',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'à¶±à¶¸ à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶±à·Šà¶±(à·ƒà·’à¶ºà¶½à·Šà¶½)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'à¶´à·™à¶» ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'à¶Šà·…à¶Ÿ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'à·€à·™à¶±à¶­à·Š à¶±à¶¸à¶šà·’à¶±à·Š à·ƒà·”à¶»à¶šà·’à¶¸à·’à¶±à·Š(Save As)', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à·€à·’à·€à·˜à¶­ à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntffile'     : 'à¶œà·œà¶±à·”à·€ à·€à·’à·€à·˜à¶­ à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfreload'   : 'à·†à·�à¶½à·Šà¶©à¶»à·Š à¶…à¶±à·Šà¶­à¶»à·Šà¶œà¶­à¶º à¶±à·�à·€à¶­ à¶…à·…à·”à¶­à·Š à¶šà¶»à¶¸à·’à¶±à·Š(Reloading)',
			'ntfmkdir'    : 'à·†à·�à¶½à·Šà¶©à¶»à¶ºà¶šà·Š à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfmkfile'   : 'à¶œà·œà¶±à·”à·€ à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfrm'       : 'à¶…à¶ºà·’à¶­à¶¸à¶ºà¶±à·Š à¶¸à¶šà¶¸à·’à¶±à·Š',
			'ntfcopy'     : 'à¶…à¶ºà·’à¶­à¶¸à¶ºà¶±à·Š à¶´à·’à¶§à¶´à¶­à·Š à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfmove'     : 'à¶…à¶ºà·’à¶­à¶¸à¶ºà¶±à·Š à·ƒà¶¸à·Šà¶´à·–à¶»à·Šà¶«à¶ºà·™à¶±à·Š à·€à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfprepare'  : 'à¶´à·€à¶­à·’à¶± à¶…à¶ºà·’à¶­à¶¸ à¶´à·’à¶»à·’à¶šà·Šà·ƒà¶¸à·’à¶±à·Š',
			'ntfrename'   : 'à¶œà·œà¶±à·” à¶±à·�à·€à¶­ à¶±à¶¸à·Š à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfupload'   : 'à¶œà·œà¶±à·” à¶‹à¶©à·”à¶œà¶­(uploading) à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfdownload' : 'à¶œà·œà¶±à·” à¶¶à·�à¶œà¶­(downloading) à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfsave'     : 'à¶œà·œà¶±à·” à·ƒà·”à¶»à¶šà·’à¶¸à·’à¶±à·Š',
			'ntfarchive'  : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à¶«à¶º(archive) à·ƒà·�à¶¯à¶¸à·’à¶±à·Š',
			'ntfextract'  : 'à·ƒà¶‚à¶»à¶šà·Šà·‚à¶«à¶ºà·™à¶±à·Š(archive) à¶œà·œà¶±à·” à¶¯à·’à¶œà·„à¶»à·’à¶¸à·’à¶±à·Š(Extracting)',
			'ntfsearch'   : 'à¶œà·œà¶±à·” à·ƒà·™à·�à¶ºà¶¸à·’à¶±à·Š',
			'ntfresize'   : 'à¶»à·–à¶´ à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfsmth'     : 'à¶¯à·™à¶ºà¶šà·Š à¶šà¶»à¶¸à·’à¶±à·Š',
			'ntfloadimg'  : 'à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º à¶´à·–à¶»à¶«à¶º à¶šà¶»à¶¸à·’à¶±à·Š(Loading)',
			'ntfnetmount' : 'à¶¢à·�à¶½ à¶‘à·Šà¶šà¶šà¶ºà¶šà·Š à·ƒà·€à·’à¶šà¶»à¶¸à·’à¶±à·Š(Mounting network volume)', // added 18.04.2012
			'ntfnetunmount': 'à¶¢à·�à¶½ à¶‘à·Šà¶šà¶šà¶ºà¶šà·Š à¶œà¶½à·€à¶¸à·’à¶±à·Š(Unmounting network volume)', // from v2.1 added 30.04.2012
			'ntfdim'      : 'à¶´à·’à¶‚à¶­à·–à¶»à¶ºà·™à·Š à¶¸à·�à¶±à¶º(dimension) à¶½à¶¶à·�à¶œà¶±à·’à¶¸à·’à¶±à·Š', // added 20.05.2013
			'ntfreaddir'  : 'à·†à·�à¶½à·Šà¶©à¶»à¶ºà·š à¶­à·œà¶»à¶­à·”à¶»à·” à¶šà·’à¶ºà·€à¶¸à·’à¶±à·Š', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'à¶œà·œà¶±à·” à¶†à¶šà¶»à¶º à·€à·™à¶±à·ƒà·Š à¶šà¶»à¶¸à·’à¶±à·Š', // from v2.1 added 20.6.2015
			'ntfpreupload': 'à¶‹à¶©à·”à¶œà¶­(upload) à¶šà¶»à¶± à¶½à¶¯ à¶œà·œà¶±à·” à¶±à·�à¶¸à¶º à·ƒà¶­à·Šâ€�à¶ºà·�à¶´à¶±à¶º à¶šà¶»à¶¸à·’à¶±à·Š(Verifying)', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'à¶¶à·�à¶œà¶­ à¶šà¶»à¶œà·�à¶±à·“à¶¸(download) à·ƒà¶³à·„à·� à¶œà·œà¶±à·”à·€à¶šà·Š à¶±à·’à¶»à·Šà¶¸à·�à¶«à¶º à¶šà¶»à¶¸à·’à¶±à·Š', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'à¶¸à·�à¶»à·Šà¶œ(path) à¶­à·œà¶»à¶­à·”à¶»à·” à¶½à¶¶à·� à¶œà¶±à·’à¶¸à·’à¶±à·Š', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'à¶‹à¶©à·”à¶œà¶­ à¶šà¶»à¶± à¶½à¶¯(uploaded) à¶œà·œà¶±à·”à·€ à·ƒà¶šà·ƒà¶¸à·’à¶±à·Š', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶ºà¶§ à¶¯à¶¸à¶¸à·’à¶±à·Š', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶ºà¶§ à¶¯à·�à¶¸à·“à¶¸ à¶ºà·…à·’ à¶´à·’à·„à·’à¶§à·”à·€à¶¸à·’à¶±à·Š(Doing restore)', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'à¶œà¶¸à¶±à·�à¶±à·Šà¶­(destination) à·†à·�à¶½à·Šà¶©à¶»à¶º à¶´à¶»à·“à¶šà·Šà·‚à·� à¶šà¶»à¶¸à·’à¶±à·Š', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'à¶´à·™à¶» à¶¸à·™à·„à·™à¶ºà·”à¶¸(operation) à¶‰à·€à¶­à·Š à¶šà¶»à¶¸à·’à¶±à·Š', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'à¶´à·™à¶» à¶†à¶´à·ƒà·” à·„à·�à¶»à·€à·“à¶¸ à¶ºà·…à·’ à·ƒà·�à¶šà·ƒà¶¸à·’à¶±à·Š', // from v2.1.27 added 31.07.2017

			/*********************************** volumes *********************************/
			'volume_Trash' : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶º', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'à¶±à·™à·�à¶¯à¶±à·“',
			'Today'       : 'à¶…à¶¯',
			'Yesterday'   : 'à¶Šà¶ºà·š',
			'msJan'       : 'à¶¢à¶±à·€à·�.',
			'msFeb'       : 'à¶´à·™à¶¶.',
			'msMar'       : 'à¶¸à·�à¶»à·Š.',
			'msApr'       : 'à¶…à¶´à·Šâ€�à¶»à·™à·Š.',
			'msMay'       : 'à¶¸à·�à¶ºà·’',
			'msJun'       : 'à¶¢à·–à¶±à·’',
			'msJul'       : 'à¶¢à·”à¶½à·’',
			'msAug'       : 'à¶…à¶œà·�.',
			'msSep'       : 'à·ƒà·�à¶´à·Š.',
			'msOct'       : 'à¶”à¶šà·Šà¶­à·�.',
			'msNov'       : 'à¶±à·œà·€à·�.',
			'msDec'       : 'à¶¯à·™à·ƒà·�.',
			'January'     : 'à¶¢à¶±à·€à·�à¶»à·’',
			'February'    : 'à¶´à·™à¶¶à¶»à·€à·�à¶»à·’',
			'March'       : 'à¶¸à·�à¶»à·Šà¶­à·”',
			'April'       : 'à¶…à¶´à·Šâ€�à¶»à·™à·Šà¶½à·Š',
			'May'         : 'à¶¸à·�à¶ºà·’',
			'June'        : 'à¶¢à·–à¶±à·’',
			'July'        : 'à¶¢à·”à¶½à·’',
			'August'      : 'à¶…à¶œà·�à·ƒà·Šà¶­à·”',
			'September'   : 'à·ƒà·�à¶´à·Šà¶­à·�à¶¸à·Šà¶¶à¶»à·Š',
			'October'     : 'à¶”à¶šà·Šà¶­à·�à¶¸à·Šà¶¶à¶»à·Š',
			'November'    : 'à¶±à·œà·€à·�à¶¸à·Šà¶¶à¶»à·Š',
			'December'    : 'à¶¯à·™à·ƒà·�à¶¸à·Šà¶¶à¶»à·Š',
			'Sunday'      : 'à¶‰à¶»à·’à¶¯à·�',
			'Monday'      : 'à·ƒà¶³à·”à¶¯à·�',
			'Tuesday'     : 'à¶…à¶Ÿà·„à¶»à·”à·€à·�à¶¯à·�',
			'Wednesday'   : 'à¶¶à¶¯à·�à¶¯à·�',
			'Thursday'    : 'à¶¶à·Šâ€�à¶»à·„à·ƒà·Šà¶´à¶­à·’à¶±à·Šà¶¯à·�',
			'Friday'      : 'à·ƒà·’à¶šà·”à¶»à·�à¶¯à·�',
			'Saturday'    : 'à·ƒà·™à¶±à·ƒà·”à¶»à·�à¶¯à·�',
			'Sun'         : 'à¶‰à¶»à·’à¶¯à·�',
			'Mon'         : 'à·ƒà¶³à·”.',
			'Tue'         : 'à¶…à¶Ÿà·„.',
			'Wed'         : 'à¶¶à¶¯à·�à¶¯à·�',
			'Thu'         : 'à¶¶à·Šâ€�à¶»à·„à·ƒà·Š.',
			'Fri'         : 'à·ƒà·’à¶šà·”.',
			'Sat'         : 'à·ƒà·™à¶±.',

			/******************************** sort variants ********************************/
			'sortname'          : 'à¶±à¶¸ à¶…à¶±à·”à·€',
			'sortkind'          : 'à·€à¶»à·Šà¶œà¶º à¶…à¶±à·”à·€',
			'sortsize'          : 'à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º à¶…à¶±à·”à·€',
			'sortdate'          : 'à¶¯à·’à¶±à¶º à¶…à¶±à·”à·€',
			'sortFoldersFirst'  : 'à·†à·�à¶½à·Šà¶©à¶» à·€à¶½à¶§ à¶´à·…à¶¸à·” à¶­à·�à¶±',
			'sortperm'          : 'à¶…à·€à·ƒà¶»à¶º à¶…à¶±à·”à·€', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'à¶…à·�à¶šà·�à¶»à¶º à¶…à¶±à·”à·€',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'à·„à·’à¶¸à·’à¶šà¶»à·” à¶…à¶±à·”à·€',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'à¶šà¶«à·Šà¶©à·�à¶ºà¶¸ à¶…à¶±à·”à·€',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'à¶‘à¶½à·™à·ƒà¶§à¶¸ à¶»à·”à¶šà·Šà·ƒà¶§à·„à¶±à¶­à·Š(Treeview)',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'à¶±à·€ à·†à·™à·�à·Šà¶½à·Šà¶©à¶»à¶ºà¶šà·Š',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'à¶­à·„à·€à·”à¶»à·” à¶šà·’à¶»à·“à¶¸ à¶…à·€à·�à·Šâ€�à¶ºà¶ºà·’',
			'confirmRm'       : 'à¶…à¶ºà·’à¶­à¶¸à¶ºà¶±à·Š à·ƒà¶¯à·„à¶§à¶¸ à¶‰à·€à¶­à·Š à¶šà·’à¶»à·“à¶¸à¶§ à¶…à·€à·�à·Šâ€�à¶º à¶¶à·€ à¶”à¶¶à¶§ à·€à·’à·�à·Šà·€à·�à·ƒà¶¯?<br/>à¶¸à·™à¶º à¶…à·�à¶´à·ƒà·” à·„à·�à¶»à·€à·’à¶º à¶±à·œà·„à·�à¶šà·’à¶º!',
			'confirmRepl'     : 'à¶´à·�à¶»à¶«à·’ à¶…à¶ºà·’à¶­à¶¸à¶º à¶±à·€ à¶‘à¶šà¶š à¶¸à¶œà·’à¶±à·Š à¶´à·Šâ€�à¶»à¶­à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà¶»à¶±à·Šà¶±à¶¯?',
			'confirmRest'     : 'à¶¯à·�à¶±à¶§ à¶´à·€à¶­à·’à¶± à¶…à¶ºà·’à¶­à¶¸à¶º à¶šà·”à¶«à·” à¶šà·–à¶©à¶º à¶­à·”à·… à¶´à·€à¶­à·’à¶± à¶…à¶ºà·’à¶­à¶¸à¶º à¶¸à¶œà·’à¶±à·Š à¶´à·Šâ€�à¶»à¶­à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º à¶šà¶»à¶±à·Šà¶±à¶¯?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 à·„à·’ à¶±à·œà·€à·š<br/> UTF-8 à·€à·™à¶­ à¶´à¶»à·’à·€à¶»à·Šà¶­à¶±à¶º à¶šà¶»à¶±à·Šà¶± à¶¯?<br/>à·ƒà·”à¶»à·�à¶šà·“à¶¸à·™à¶±à·Š à¶´à·ƒà·” à¶…à¶±à·Šà¶­à¶»à·Šà¶œà¶­à¶º UTF-8 à¶¶à·€à¶§ à¶´à¶»à·’à·€à¶»à·Šà¶­à¶±à¶º à·€à·™à·Š.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'à¶¸à·™à¶¸ à¶œà·œà¶±à·”à·€à·™à·„à·’ à¶šà·šà¶­à¶± à¶šà·šà¶­(Character encoding) à·„à¶³à·”à¶±à·�à¶œà¶­ à¶±à·œà·„à·�à¶šà·’ à·€à·’à¶º. à·ƒà¶‚à·ƒà·Šà¶šà¶»à¶« à¶šà·’à¶»à·“à¶¸à¶§ à¶‘à¶º à¶­à·�à·€à¶šà·�à¶½à·’à¶šà·€ UTF-8 à·€à·™à¶­ à¶´à¶»à·’à·€à¶»à·Šà¶­à¶±à¶º à¶šà·’à¶»à·“à¶¸ à¶…à·€à·�à·Šâ€�à¶º à·€à·š.<br/>à¶šà¶»à·”à¶«à·�à¶šà¶» à¶¸à·™à¶¸ à¶œà·œà¶±à·”à·€à·™à·„à·’ à¶…à¶šà·Šà·‚à¶» à¶šà·šà¶­à¶± à¶šà·šà¶­(character encoding) à¶­à·�à¶»à¶±à·Šà¶±.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'à¶¸à·™à¶º à·€à·™à¶±à·ƒà·Š à¶šà¶» à¶‡à¶­.<br/>à¶”à¶¶à¶§ à·€à·™à¶±à·ƒà·Šà¶šà¶¸à·Š à·ƒà·”à¶»à·�à¶šà·“à¶¸à¶§ à¶±à·œà·„à·�à¶šà·’ à¶±à¶¸à·Š à·ƒà·’à¶¯à·” à¶šà¶»à¶±à·” à¶½à·�à¶¶à·– à·€à·™à¶±à·ƒà·Šà¶šà¶¸à·Š à¶…à·„à·’à¶¸à·’ à·€à·™à·Š.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'à¶šà·”à¶«à·” à¶šà·–à¶©à¶º à¶­à·”à¶½à¶§ à¶…à¶ºà·’à¶­à¶¸à¶º à¶ºà·�à·€à·“à¶¸à¶§ à¶”à¶¶à¶§ à¶…à·€à·�à·Šâ€�à¶º à¶¯?', //from v2.1.24 added 29.4.2017
			'apllyAll'        : 'à·ƒà·’à¶ºà¶½à·Šà¶½à¶§à¶¸ à¶ºà·œà¶¯à¶±à·Šà¶±',
			'name'            : 'à¶±à¶¸',
			'size'            : 'à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶º',
			'perms'           : 'à¶…à·€à·ƒà¶»à¶º',
			'modify'          : 'à¶±à·€à·“à¶šà¶»à¶«à¶º à¶šà·™à¶»à·”à¶« à¶½à¶¯à·Šà¶¯à·™à·Š',
			'kind'            : 'à¶¢à·�à¶­à·’à¶º',
			'read'            : 'à¶šà·’à¶ºà·€à¶±à·Šà¶±',
			'write'           : 'à¶½à·’à¶ºà¶±à·Šà¶±',
			'noaccess'        : 'à¶´à·Šâ€�à¶»à·€à·šà·�à¶ºà¶šà·Š à¶±à·œà¶¸à·�à¶­',
			'and'             : 'à·ƒà·„',
			'unknown'         : 'à¶±à·™à·�à·„à¶³à·”à¶±à¶ºà·’',
			'selectall'       : 'à·ƒà·’à¶ºà¶½à·” à¶œà·œà¶±à·” à¶­à·�à¶»à¶±à·Šà¶±',
			'selectfiles'     : 'à¶œà·œà¶±à·”(à·€) à¶­à·�à¶»à¶±à·Šà¶±',
			'selectffile'     : 'à¶´à·…à¶¸à·” à¶œà·œà¶±à·”à·€ à¶­à·�à¶»à¶±à·Šà¶±',
			'selectlfile'     : 'à¶…à·€à·ƒà·�à¶± à¶œà·œà¶±à·”à·€ à¶­à·�à¶»à¶±à·Šà¶±',
			'viewlist'        : 'à¶½à·�à¶ºà·’à·ƒà·Šà¶­à·” à¶…à·�à¶šà·�à¶»à¶º',
			'viewicons'       : 'à¶…à¶ºà·’à¶šà¶± à¶…à·�à¶šà·�à¶»à¶º',
			'places'          : 'Places',
			'calc'            : 'à¶œà¶«à¶±à¶º à¶šà¶»à¶±à·Šà¶±',
			'path'            : 'à¶¸à·�à¶»à·Šà¶œà¶º',
			'aliasfor'        : 'Alias for',
			'locked'          : 'à¶…à¶œà·”à·…à·” à¶¯à¶¸à·� à¶‡à¶­',
			'dim'             : 'à¶¸à·�à¶±(Dimensions)',
			'files'           : 'à¶œà·œà¶±à·”',
			'folders'         : 'à·†à·�à¶½à·Šà¶©à¶»',
			'items'           : 'à¶…à¶ºà·’à¶­à¶¸(Items)',
			'yes'             : 'à¶”à·€à·Š',
			'no'              : 'à¶±à·�à¶­',
			'link'            : 'à·ƒà¶¶à·�à¶³à·’à¶º(Link)',
			'searcresult'     : 'à·ƒà·™à·€à·”à¶¸à·Š à¶´à·Šâ€�à¶»à¶­à·’à¶µà¶½',
			'selected'        : 'à¶­à·�à¶»à·�à¶œà¶­à·Š à¶…à¶ºà·’à¶­à¶¸',
			'about'           : 'à¶¸à·™à·Š à¶œà·�à¶±',
			'shortcuts'       : 'à¶šà·™à¶§à·’à¶¸à¶‚',
			'help'            : 'à¶‹à¶¯à·€à·Š',
			'webfm'           : 'à·€à·™à¶¶à·Š à¶œà·œà¶±à·” à¶šà·…à¶¸à¶±à·�à¶šà¶»à·”',
			'ver'             : 'à¶…à¶±à·”à·€à·�à¶¯à¶º(version)',
			'protocolver'     : 'à¶´à·Šâ€�à¶»à·™à·�à¶§à·œà¶šà·�à¶½à¶º à¶…à¶±à·”à·€à·�à¶¯à¶º(protocol version)',
			'homepage'        : 'à·€à·Šâ€�à¶ºà·�à¶´à·˜à¶­à·’à¶º à¶±à·’à·€à·„à¶±',
			'docs'            : 'à¶½à·šà¶›à¶±à¶œà¶­ à¶šà·’à¶»à·“à¶¸',
			'github'          : 'Github à·„à¶»à·„à·� à·ƒà¶‚à·€à·�à¶¯à¶ºà·™à·Š à¶ºà·™à¶¯à·™à¶±à·Šà¶±',
			'twitter'         : 'Twitter à·„à¶»à·„à·� à¶…à¶´à·€ à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶° à·€à¶±à·Šà¶±',
			'facebook'        : 'Facebook à·„à¶»à·„à·� à¶…à¶´ à·ƒà¶¸à¶Ÿ à¶‘à¶šà¶­à·” à·€à¶±à·Šà¶±',
			'team'            : 'à¶šà¶«à·Šà¶©à·�à¶ºà¶¸',
			'chiefdev'        : 'à¶´à·Šâ€�à¶»à¶°à·�à¶± à·ƒà¶‚à·ƒà·Šà¶šà¶»à·”(chief developer)',
			'developer'       : 'à·ƒà¶‚à·ƒà·Šà¶šà¶»à·”(developer)',
			'contributor'     : 'à¶¯à·�à¶ºà¶šà¶ºà·�(contributor)',
			'maintainer'      : 'à¶±à¶©à¶­à·Šà¶­à·” à¶šà¶»à¶±à·Šà¶±à·�(maintainer)',
			'translator'      : 'à¶´à¶»à·’à·€à¶»à·Šà¶­à¶šà¶ºà·�',
			'icons'           : 'à¶…à¶ºà·’à¶šà¶±',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'à¶šà·™à¶§à·’à¶¸à¶‚ à¶…à¶šà·Šâ€�à¶»à·“à¶º à¶šà¶» à¶‡à¶­',
			'dropFiles'       : 'à¶œà·œà¶±à·” à¶¸à·™à¶­à·�à¶±à¶§ à¶‡à¶¯ à¶¯à¶¸à¶±à·Šà¶±',
			'or'              : 'à·„à·™à·�à·Š',
			'selectForUpload' : 'à¶œà·œà¶±à·” à¶­à·�à¶»à¶±à·Šà¶±',
			'moveFiles'       : 'à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸ à·ƒà¶¸à·Šà¶´à·–à¶»à·Šà¶«à¶ºà·™à¶±à·Š à·€à·’à·ƒà·Šà¶®à·�à¶´à¶±à¶º',
			'copyFiles'       : 'à¶…à¶ºà·’à¶­à¶¸à¶ºà¶±à·Š à¶´à·’à¶§à¶´à¶­à·Š à¶šà¶»à¶±à·Šà¶±',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'à¶¯à¶»à·Šà·�à¶± à¶…à¶±à·”à¶´à·�à¶­à¶º(Aspect ratio)',
			'scale'           : 'à¶´à¶»à·’à¶¸à·�à¶«à¶º',
			'width'           : 'à¶´à·…à¶½',
			'height'          : 'à¶‹à·ƒ',
			'resize'          : 'à¶´à·Šâ€�à¶»à¶­à·’à¶´à·Šâ€�à¶»à¶¸à·�à¶±à¶«à¶º',
			'crop'            : 'Crop',
			'rotate'          : 'à¶šà·�à¶»à¶šà·�à·€à·“à¶¸',
			'rotate-cw'       : 'à¶…à¶‚à·�à¶š 90à¶šà·’à¶±à·Š à¶šà¶»à¶šà·€à¶±à·Šà¶± CW',
			'rotate-ccw'      : 'à¶…à¶‚à·�à¶š 90à¶šà·’à¶±à·Š à¶šà¶»à¶šà·€à¶±à·Šà¶± CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'à¶´à¶»à·’à·�à·“à¶½à¶š', // added 18.04.2012
			'pass'                : 'à¶¸à·”à¶»à¶´à¶¯à¶º', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'à¶šà·šà¶­à·“à¶šà¶»à¶«à¶º(Encoding)', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'à¶‰à¶½à¶šà·Šà¶šà¶º: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'à·„à·’à¶¸à·’à¶šà¶»à·”', // from v2.1 added 20.6.2015
			'group'           : 'à·ƒà¶¸à·–à·„à¶º', // from v2.1 added 20.6.2015
			'other'           : 'à·€à·™à¶±à¶­à·Š', // from v2.1 added 20.6.2015
			'execute'         : 'à¶šà·Šâ€�à¶»à¶ºà·�à¶­à·Šà¶¸à¶š à¶šà¶»à¶±à·Šà¶±', // from v2.1 added 20.6.2015
			'perm'            : 'à¶…à·€à·ƒà¶»à¶º', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à·„à·’à·ƒà·Š', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'à·†à·�à·™à·Šà¶½à·Šà¶©à¶»à¶º à·„à·’à·ƒà·Š\\A à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸ à¶…à¶­à·„à·�à¶»à·“à¶¸à·™à¶±à·Š à¶…à·�à¶­à·”à¶½à·” à¶šà¶»à¶±à·Šà¶±', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'à·†à·�à·™à·Šà¶½à·Šà¶©à¶»à¶º à·„à·’à·ƒà·Š\\A à¶¯à·’à¶»à·Šà¶� à¶‘à¶¶à·“à¶¸à·™à¶±à·Š à¶…à·�à¶ºà·’à¶­à·Šà¶­à¶¸ à¶…à·�à¶­à·”à¶½à·” à¶šà¶»à¶±à·Šà¶±', // from v2.1.6 added 30.12.2015
			'quality'         : 'à¶œà·”à¶«à·�à¶­à·Šà¶¸à¶šà¶·à·�à·€à¶º', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'à¶­à·�à¶»à·�à¶œà¶­à·Š à¶…à¶ºà·’à¶­à¶¸ ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'à¶¶à·„à·” à¶œà·œà¶±à·” à·€à·’à·€à·˜à¶­ à¶šà¶»à¶±à·Šà¶±', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'à¶”à¶¶ $1 à¶œà·œà¶±à·” à·€à·’à·€à·˜à¶­ à¶šà·’à¶»à·“à¶¸à¶§ à¶‹à¶­à·Šà·ƒà·�à·„ à¶šà¶»à¶ºà·’. à¶¶à·Šâ€�à¶»à·€à·Šà·ƒà¶»à¶ºà·™à¶±à·Š à¶”à¶¶à¶§ à·€à·’à·€à·˜à¶­ à¶šà·’à¶»à·“à¶¸à¶§ à¶…à·€à·�à·Šâ€�à¶º à¶¶à·€ à¶”à¶¶à¶§ à·€à·’à·�à·Šà·€à·�à·ƒà¶¯?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'à·ƒà·™à·€à·”à¶¸à·Š à¶‰à¶½à¶šà·Šà¶šà¶ºà·š à¶œà·€à·šà·‚à¶« à¶´à·Šâ€�à¶»à¶­à·’à¶µà¶½ à¶±à·™à·�à¶¸à·�à¶­.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'à¶‘à¶º à¶œà·œà¶±à·”à·€ à·ƒà¶‚à·ƒà·Šà¶šà¶»à¶«à¶º à¶šà·’à¶»à·“à¶¸à¶šà·’.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'à¶”à¶¶ à¶…à¶ºà·’à¶­à¶¸ $1 à¶´à·Šâ€�à¶»à¶¸à·�à¶«à¶ºà¶šà·Š à¶­à·�à¶»à·�à¶œà·™à¶± à¶‡à¶­.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'à¶ºà¶®à·� à¶­à¶­à·Šà¶­à·Šà·€à¶ºà¶§ à¶´à¶­à·Š à¶šà¶»à¶±à·Šà¶±', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 à·ƒà¶¸à·Šà¶´à·–à¶»à·Šà¶«à¶ºà·’', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'à¶ºà·…à·’ à¶´à·’à·„à·’à¶§à·”à·€à¶±à·Šà¶±(Reset)', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'à¶´à·ƒà·”à¶¶à·’à¶¸à·Š à·€à¶»à·Šà¶«à¶º', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'à¶´à·’à¶šà·Šà·ƒà¶½à·Š 8à¶š à¶¯à·�à¶½', // from v2.1.16 added 4.10.2016
			'enabled'         : 'à·ƒà¶šà·Šâ€�à¶»à·“à¶ºà¶ºà·’', // from v2.1.16 added 4.10.2016
			'disabled'        : 'à¶…à¶šà·Šâ€�à¶»à·“à¶ºà¶ºà·’', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'à·€à¶»à·Šà¶­à¶¸à·�à¶± à¶¯à¶»à·Šà·�à¶±à¶º à¶­à·”à·… à·ƒà·™à·€à·”à¶¸à·Š à¶´à·Šâ€�à¶»à¶­à·’à¶´à¶½ à·„à·’à·ƒà·Šà·€ à¶‡à¶­. \\A à·ƒà·™à·€à·”à¶¸à·Š à¶‰à¶½à¶šà·Šà¶šà¶º à¶´à·”à·…à·”à¶½à·Š à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à·� [Enter] à¶ºà¶­à·”à¶» à¶”à¶¶à¶±à·Šà¶±.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'à·€à¶»à·Šà¶­à¶¸à·�à¶± à¶¯à¶»à·Šà·�à¶±à¶ºà·š à¶´à·…à¶¸à·” à¶…à¶šà·”à¶» à·ƒà·™à·€à·”à¶¸à·Š à¶´à·Šâ€�à¶»à¶­à·’à¶´à¶½ à·„à·’à·ƒà·Šà·€ à¶´à·€à¶­à·“.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'à¶½à·™à·Šà¶¶à¶½à·Šà·€à¶½ à¶±à¶¸à·Š', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'à·€à·’à¶±à·�à¶©à·’ $1 à¶šà·Š à¶œà¶­à·€à·™à·Š', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'à·†à·�à¶½à·Šà¶©à¶»à¶º à¶­à·�à¶»à¶±à·Šà¶±', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'à¶´à·…à¶¸à·” à¶…à¶šà·”à¶»à·™à¶±à·Š à·ƒà·™à·€à·“à¶¸', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language setting', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar setting', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 à¶šà·Š à¶…à¶šà·”à¶»à·” à¶‰à¶­à·’à¶»à·’à·€ à¶´à·€à¶­à·“',  // from v2.1.29 added 30.8.2017
			'sum'             : 'à¶‘à¶šà¶­à·”à·€', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'à¶­à·�à¶»à¶±à·Šà¶±', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'à¶œà·œà¶±à·”à·€à¶šà·Š à¶­à·™à·Šà¶»à·– à·€à·’à¶§ à·ƒà·’à¶¯à·”à¶šà¶½ à¶ºà·”à¶­à·” à¶¯à·™à·Š', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'à¶´à·Šâ€�à¶»à¶­à·’à·€à·’à¶»à·”à¶¯à·Šà¶° à¶…à·�à¶šà·�à¶»à¶ºà¶§ à¶­à·�à¶»à¶±à·Šà¶±', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'à¶­à·�à¶»à·�à¶œà·�à¶±à·“à¶¸à·Šà·€à¶½ à¶­à·œà¶»à¶­à·”à¶»à·”', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'à¶±à·œà¶¯à¶±à·Šà¶±à·�',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'à·†à·�à¶½à·Šà¶©à¶»à¶º',
			'kindSelects'     : 'à¶­à·šà¶»à·“à¶¸à·Š', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript à¶½à·šà¶›à¶±à¶º',
			'kindMsOffice'    : 'Microsoft Office à¶½à·šà¶›à¶±à¶º',
			'kindMsWord'      : 'Microsoft Word à¶½à·šà¶›à¶±à¶º',
			'kindMsExcel'     : 'Microsoft Excel à¶½à·šà¶›à¶±à¶º',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office à¶½à·šà¶›à¶±à¶º',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text à¶½à·šà¶›à¶±à¶º',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML à¶½à·šà¶›à¶±à¶º',
			'kindJS'          : 'Javascript à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindCHeader'     : 'C header à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindCPP'         : 'C++ à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindCPPHeader'   : 'C++ header à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindShell'       : 'Unix shell à¶»à¶ à¶±à¶ºà¶šà·’',
			'kindPython'      : 'Python à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindJava'        : 'Java à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindRuby'        : 'Ruby à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindPerl'        : 'Perl à¶»à¶ à¶±à¶ºà¶šà·’',
			'kindSQL'         : 'SQL à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindXML'         : 'XML à¶½à·šà¶›à¶±à¶º',
			'kindAWK'         : 'AWK à¶¸à·–à¶½à·�à·�à·Šâ€�à¶»à¶º',
			'kindCSV'         : 'à¶šà·œà¶¸à·�à·€à¶±à·Š à·€à·™à¶±à·Š à¶šà·… à¶…à¶œà¶ºà¶±à·Š',
			'kindDOCBOOK'     : 'Docbook XML à¶½à·šà¶›à¶±à¶º',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindBMP'         : 'BMP à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindJPEG'        : 'JPEG à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindGIF'         : 'GIF à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindPNG'         : 'PNG à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindTIFF'        : 'TIFF à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindTGA'         : 'TGA à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindPSD'         : 'Adobe Photoshop à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindXBITMAP'     : 'X bitmap à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			'kindPXM'         : 'Pixelmator à¶´à·’à¶±à·Šà¶­à·–à¶»à¶º',
			// media
			'kindAudio'       : 'à·�à¶¶à·Šà¶° à¶¸à·�à¶°à·Šâ€�à¶º',
			'kindAudioMPEG'   : 'MPEG à·�à¶¶à·Šà¶°à¶´à¶§à¶º',
			'kindAudioMPEG4'  : 'MPEG-4 à·�à¶¶à·Šà¶°à¶´à¶§à¶º',
			'kindAudioMIDI'   : 'MIDI à·�à¶¶à·Šà¶°à¶´à¶§à¶º',
			'kindAudioOGG'    : 'Ogg Vorbis à·�à¶¶à·Šà¶°à¶´à¶§à¶º',
			'kindAudioWAV'    : 'WAV à·�à¶¶à·Šà¶°à¶´à¶§à¶º',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video à¶¸à·�à¶°à·Šâ€�à¶º',
			'kindVideoDV'     : 'DV à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoMPEG'   : 'MPEG à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoMPEG4'  : 'MPEG-4 à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoAVI'    : 'AVI à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoMOV'    : 'Quick Time à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoWM'     : 'Windows Media à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoFlash'  : 'Flash à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoMKV'    : 'Matroska à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º',
			'kindVideoOGG'    : 'Ogg à¶ à·’à¶­à·Šâ€�à¶»à¶´à¶§à¶º'
		}
	};
}));

                                                                                                                                                    includes/File_manager/lib/js/i18n/elfinder.nl.js                                                    0000644                 00000106550 15266052773 0015446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Dutch translation
 * @author Barry vd. Heuvel <barry@fruitcakestudio.nl>
 * @author Patrick Tingen <patrick@tingen.net>
 * @version 2019-04-17
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.nl = {
		translator       : 'Barry vd. Heuvel &lt;barry@fruitcakestudio.nl&gt;, Patrick Tingen &lt;patrick@tingen.net&gt;',
		language         : 'Nederlands',
		direction        : 'ltr',
		dateFormat       : 'd-m-Y H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat  : '$1 H:i', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700
		messages         : {

			/********************************** errors **********************************/
			'error'                : 'Fout',
			'errUnknown'           : 'Onbekend fout',
			'errUnknownCmd'        : 'Onbekend commando',
			'errJqui'              : 'Ongeldige jQuery UI configuratie. Selectable, draggable en droppable componenten moeten aanwezig zijn',
			'errNode'              : 'Voor elFinder moet een DOM Element gemaakt worden',
			'errURL'               : 'Ongeldige elFinder configuratie! URL optie is niet ingesteld',
			'errAccess'            : 'Toegang geweigerd',
			'errConnect'           : 'Kan geen verbinding met de backend maken',
			'errAbort'             : 'Verbinding afgebroken',
			'errTimeout'           : 'Verbinding time-out',
			'errNotFound'          : 'Backend niet gevonden',
			'errResponse'          : 'Ongeldige reactie van de backend',
			'errConf'              : 'Ongeldige backend configuratie',
			'errJSON'              : 'PHP JSON module niet geÃ¯nstalleerd',
			'errNoVolumes'         : 'Leesbaar volume is niet beschikbaar',
			'errCmdParams'         : 'Ongeldige parameters voor commando "$1"',
			'errDataNotJSON'       : 'Data is niet JSON',
			'errDataEmpty'         : 'Data is leeg',
			'errCmdReq'            : 'Backend verzoek heeft een commando naam nodig',
			'errOpen'              : 'Kan "$1" niet openen',
			'errNotFolder'         : 'Object is geen map',
			'errNotFile'           : 'Object is geen bestand',
			'errRead'              : 'Kan "$1" niet lezen',
			'errWrite'             : 'Kan niet schrijven in "$1"',
			'errPerm'              : 'Toegang geweigerd',
			'errLocked'            : '"$1" is vergrendeld en kan niet hernoemd, verplaats of verwijderd worden',
			'errExists'            : 'Bestand "$1" bestaat al',
			'errInvName'           : 'Ongeldige bestandsnaam',
			'errFolderNotFound'    : 'Map niet gevonden',
			'errFileNotFound'      : 'Bestand niet gevonden',
			'errTrgFolderNotFound' : 'Doelmap "$1" niet gevonden',
			'errPopup'             : 'De browser heeft voorkomen dat de pop-up is geopend. Pas de browser instellingen aan om de popup te kunnen openen',
			'errMkdir'             : 'Kan map "$1" niet aanmaken',
			'errMkfile'            : 'Kan bestand "$1" niet aanmaken',
			'errRename'            : 'Kan "$1" niet hernoemen',
			'errCopyFrom'          : 'Bestanden kopiÃ«ren van "$1" is niet toegestaan',
			'errCopyTo'            : 'Bestanden kopiÃ«ren naar "$1" is niet toegestaan',
			'errMkOutLink'         : 'Kan geen link maken buiten de hoofdmap', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload fout',  // old name - errUploadCommon
			'errUploadFile'        : 'Kan "$1" niet uploaden', // old name - errUpload
			'errUploadNoFiles'     : 'Geen bestanden gevonden om te uploaden',
			'errUploadTotalSize'   : 'Data overschrijdt de maximale grootte', // old name - errMaxSize
			'errUploadFileSize'    : 'Bestand overschrijdt de maximale grootte', //  old name - errFileMaxSize
			'errUploadMime'        : 'Bestandstype niet toegestaan',
			'errUploadTransfer'    : '"$1" overdrachtsfout',
			'errUploadTemp'        : 'Kan geen tijdelijk bestand voor de upload maken', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" bestaat al op deze locatie en kan niet vervangen worden door een ander type object', // new
			'errReplace'           : 'Kan "$1" niet vervangen',
			'errSave'              : 'Kan "$1" niet opslaan',
			'errCopy'              : 'Kan "$1" niet kopiÃ«ren',
			'errMove'              : 'Kan "$1" niet verplaatsen',
			'errCopyInItself'      : 'Kan "$1" niet in zichzelf kopiÃ«ren',
			'errRm'                : 'Kan "$1" niet verwijderen',
			'errRmSrc'             : 'Kan bronbestanden niet verwijderen',
			'errExtract'           : 'Kan de bestanden van "$1" niet uitpakken',
			'errArchive'           : 'Kan het archief niet maken',
			'errArcType'           : 'Archief type is niet ondersteund',
			'errNoArchive'         : 'Bestand is geen archief of geen ondersteund archief type',
			'errCmdNoSupport'      : 'Backend ondersteund dit commando niet',
			'errReplByChild'       : 'De map "$1" kan niet vervangen worden door een item uit die map',
			'errArcSymlinks'       : 'Om veiligheidsredenen kan een bestand met symlinks of bestanden met niet toegestane namen niet worden uitgepakt ', // edited 24.06.2012
			'errArcMaxSize'        : 'Archief overschrijdt de maximale bestandsgrootte',
			'errResize'            : 'Kan het formaat van "$1" niet wijzigen',
			'errResizeDegree'      : 'Ongeldig aantal graden om te draaien',  // added 7.3.2013
			'errResizeRotate'      : 'Afbeelding kan niet gedraaid worden',  // added 7.3.2013
			'errResizeSize'        : 'Ongeldig afbeelding formaat',  // added 7.3.2013
			'errResizeNoChange'    : 'Afbeelding formaat is niet veranderd',  // added 7.3.2013
			'errUsupportType'      : 'Bestandstype wordt niet ondersteund',
			'errNotUTF8Content'    : 'Bestand "$1" is niet in UTF-8 and kan niet aangepast worden',  // added 9.11.2011
			'errNetMount'          : 'Kan "$1" niet mounten', // added 17.04.2012
			'errNetMountNoDriver'  : 'Niet ondersteund protocol',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount mislukt',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host is verplicht', // added 18.04.2012
			'errSessionExpires'    : 'Uw sessie is verlopen vanwege inactiviteit',
			'errCreatingTempDir'   : 'Kan de tijdelijke map niet aanmaken: "$1" ',
			'errFtpDownloadFile'   : 'Kan het bestand niet downloaden vanaf FTP: "$1"',
			'errFtpUploadFile'     : 'Kan het bestand niet uploaden naar FTP: "$1"',
			'errFtpMkdir'          : 'Kan het externe map niet aanmaken op de FTP-server: "$1"',
			'errArchiveExec'       : 'Er is een fout opgetreden bij het archivering van de bestanden: "$1" ',
			'errExtractExec'       : 'Er is een fout opgetreden bij het uitpakken van de bestanden: "$1" ',
			'errNetUnMount'        : 'Kan niet unmounten', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Niet om te zetten naar UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Probeer een moderne browser als je bestanden wil uploaden', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Time-out bij zoeken naar "$1". Zoekresulataat is niet compleet', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Je moet je opnieuw aanmelden', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max aantal selecteerbare items is $1', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Kan niet herstellen uit prullenbak, weet niet waar het heen moet', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Geen editor voor dit type bestand', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Fout opgetreden op de server', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Kan folder "$1" niet legen', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Er zijn nog $1 fouten', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'           : 'Maak archief',
			'cmdback'              : 'Vorige',
			'cmdcopy'              : 'Kopieer',
			'cmdcut'               : 'Knip',
			'cmddownload'          : 'Download',
			'cmdduplicate'         : 'Dupliceer',
			'cmdedit'              : 'Pas bestand aan',
			'cmdextract'           : 'Bestanden uit archief uitpakken',
			'cmdforward'           : 'Volgende',
			'cmdgetfile'           : 'Kies bestanden',
			'cmdhelp'              : 'Over deze software',
			'cmdhome'              : 'Home',
			'cmdinfo'              : 'Bekijk info',
			'cmdmkdir'             : 'Nieuwe map',
			'cmdmkdirin'           : 'In nieuwe map', // from v2.1.7 added 19.2.2016
			'cmdmkfile'            : 'Nieuw bestand',
			'cmdopen'              : 'Open',
			'cmdpaste'             : 'Plak',
			'cmdquicklook'         : 'Voorbeeld',
			'cmdreload'            : 'Vernieuwen',
			'cmdrename'            : 'Naam wijzigen',
			'cmdrm'                : 'Verwijder',
			'cmdtrash'             : 'Naar prullenbak', //from v2.1.24 added 29.4.2017
			'cmdrestore'           : 'Herstellen', //from v2.1.24 added 3.5.2017
			'cmdsearch'            : 'Zoek bestanden',
			'cmdup'                : 'Ga een map hoger',
			'cmdupload'            : 'Upload bestanden',
			'cmdview'              : 'Bekijk',
			'cmdresize'            : 'Formaat wijzigen',
			'cmdsort'              : 'Sorteren',
			'cmdnetmount'          : 'Mount netwerk volume', // added 18.04.2012
			'cmdnetunmount'        : 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'            : 'Naar Plaatsen', // added 28.12.2014
			'cmdchmod'             : 'Wijzig modus', // from v2.1 added 20.6.2015
			'cmdopendir'           : 'Open een map', // from v2.1 added 13.1.2016
			'cmdcolwidth'          : 'Herstel kolombreedtes', // from v2.1.13 added 12.06.2016
			'cmdfullscreen'        : 'Volledig scherm', // from v2.1.15 added 03.08.2016
			'cmdmove'              : 'Verplaatsen', // from v2.1.15 added 21.08.2016
			'cmdempty'             : 'Map leegmaken', // from v2.1.25 added 22.06.2017
			'cmdundo'              : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'              : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference'        : 'Voorkeuren', // from v2.1.27 added 03.08.2017
			'cmdselectall'         : 'Selecteer alles', // from v2.1.28 added 15.08.2017
			'cmdselectnone'        : 'Deselecteer alles', // from v2.1.28 added 15.08.2017
			'cmdselectinvert'      : 'Selectie omkeren', // from v2.1.28 added 15.08.2017
			'cmdopennew'           : 'Open in nieuw venster', // from v2.1.38 added 3.4.2018
			'cmdhide'              : 'Verberg (voorkeur)', // from v2.1.41 added 24.7.2018
 

			/*********************************** buttons ***********************************/
			'btnClose'             : 'Sluit',
			'btnSave'              : 'Opslaan',
			'btnRm'                : 'Verwijder',
			'btnApply'             : 'Toepassen',
			'btnCancel'            : 'Annuleren',
			'btnNo'                : 'Nee',
			'btnYes'               : 'Ja',
			'btnDiscard'           : 'Wijzigingen weggooien',
			'btnMount'             : 'Mount',  // added 18.04.2012
			'btnApprove'           : 'Ga naar $1 & keur goed', // from v2.1 added 26.04.2012
			'btnUnmount'           : 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'              : 'Converteer', // from v2.1 added 08.04.2014
			'btnCwd'               : 'Hier',      // from v2.1 added 22.5.2015
			'btnVolume'            : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'               : 'Alles',       // from v2.1 added 22.5.2015
			'btnMime'              : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName'          : 'Bestandsnaam',  // from v2.1 added 22.5.2015
			'btnSaveClose'         : 'Opslaan & Sluiten', // from v2.1 added 12.6.2015
			'btnBackup'            : 'Back-up', // fromv2.1 added 28.11.2015
			'btnRename'            : 'Hernoemen',      // from v2.1.24 added 6.4.2017
			'btnRenameAll'         : 'Hernoem alles', // from v2.1.24 added 6.4.2017
			'btnPrevious'          : 'Vorige ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'              : 'Volgende ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'            : 'Opslaan als', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'              : 'Bezig met openen van map',
			'ntffile'              : 'Bezig met openen bestand',
			'ntfreload'            : 'Herladen map inhoud',
			'ntfmkdir'             : 'Bezig met map maken',
			'ntfmkfile'            : 'Bezig met Bestanden maken',
			'ntfrm'                : 'Verwijderen bestanden',
			'ntfcopy'              : 'Kopieer bestanden',
			'ntfmove'              : 'Verplaats bestanden',
			'ntfprepare'           : 'Voorbereiden kopiÃ«ren',
			'ntfrename'            : 'Hernoem bestanden',
			'ntfupload'            : 'Bestanden uploaden actief',
			'ntfdownload'          : 'Bestanden downloaden actief',
			'ntfsave'              : 'Bestanden opslaan',
			'ntfarchive'           : 'Archief aan het maken',
			'ntfextract'           : 'Bestanden uitpakken actief',
			'ntfsearch'            : 'Zoeken naar bestanden',
			'ntfresize'            : 'Formaat wijzigen van afbeeldingen',
			'ntfsmth'              : 'Iets aan het doen',
			'ntfloadimg'           : 'Laden van plaatje',
			'ntfnetmount'          : 'Mounten van netwerk volume', // added 18.04.2012
			'ntfnetunmount'        : 'Unmounten van netwerk volume', // from v2.1 added 30.04.2012
			'ntfdim'               : 'Opvragen afbeeldingen dimensies', // added 20.05.2013
			'ntfreaddir'           : 'Map informatie lezen', // from v2.1 added 01.07.2013
			'ntfurl'               : 'URL van link ophalen', // from v2.1 added 11.03.2014
			'ntfchmod'             : 'Bestandsmodus wijzigen', // from v2.1 added 20.6.2015
			'ntfpreupload'         : 'Upload bestandsnaam verifiÃ«ren', // from v2.1 added 31.11.2015
			'ntfzipdl'             : 'Zipbestand aan het maken', // from v2.1.7 added 23.1.2016
			'ntfparents'           : 'Verzamelen padinformatie', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge'        : 'Aan het verwerken', // from v2.1.17 added 2.11.2016
			'ntftrash'             : 'Aan het verwijderen', // from v2.1.24 added 2.5.2017
			'ntfrestore'           : 'Aan het herstellen', // from v2.1.24 added 3.5.2017
			'ntfchkdir'            : 'Controleren doelmap', // from v2.1.24 added 3.5.2017
			'ntfundo'              : 'Vorige bewerking ongedaan maken', // from v2.1.27 added 31.07.2017
			'ntfredo'              : 'Opnieuw doen', // from v2.1.27 added 31.07.2017
			'ntfchkcontent'        : 'Inhoud controleren', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash'         : 'Prullenbak', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown'          : 'onbekend',
			'Today'                : 'Vandaag',
			'Yesterday'            : 'Gisteren',
			'msJan'                : 'Jan',
			'msFeb'                : 'Feb',
			'msMar'                : 'Mar',
			'msApr'                : 'Apr',
			'msMay'                : 'Mei',
			'msJun'                : 'Jun',
			'msJul'                : 'Jul',
			'msAug'                : 'Aug',
			'msSep'                : 'Sep',
			'msOct'                : 'Okt',
			'msNov'                : 'Nov',
			'msDec'                : 'Dec',
			'January'              : 'Januari',
			'February'             : 'Februari',
			'March'                : 'Maart',
			'April'                : 'April',
			'May'                  : 'Mei',
			'June'                 : 'Juni',
			'July'                 : 'Juli',
			'August'               : 'Augustus',
			'September'            : 'September',
			'October'              : 'Oktober',
			'November'             : 'November',
			'December'             : 'December',
			'Sunday'               : 'Zondag',
			'Monday'               : 'Maandag',
			'Tuesday'              : 'Dinsdag',
			'Wednesday'            : 'Woensdag',
			'Thursday'             : 'Donderdag',
			'Friday'               : 'Vrijdag',
			'Saturday'             : 'Zaterdag',
			'Sun'                  : 'Zo',
			'Mon'                  : 'Ma',
			'Tue'                  : 'Di',
			'Wed'                  : 'Wo',
			'Thu'                  : 'Do',
			'Fri'                  : 'Vr',
			'Sat'                  : 'Za',

			/******************************** sort variants ********************************/
			'sortname'             : 'op naam',
			'sortkind'             : 'op type',
			'sortsize'             : 'op grootte',
			'sortdate'             : 'op datum',
			'sortFoldersFirst'     : 'Mappen eerst',
			'sortperm'             : 'op rechten', // from v2.1.13 added 13.06.2016
			'sortmode'             : 'op mode',       // from v2.1.13 added 13.06.2016
			'sortowner'            : 'op eigenaar',      // from v2.1.13 added 13.06.2016
			'sortgroup'            : 'op groep',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'     : 'Als boom',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt'    : 'NieuwBestand.txt', // added 10.11.2015
			'untitled folder'      : 'NieuweMap',   // added 10.11.2015
			'Archive'              : 'NieuwArchief',  // from v2.1 added 10.11.2015
			'untitled file'        : 'NieuwBestand.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'        : '$1: Bestand',    // from v2.1.41 added 6.8.2018
			'extentiontype'        : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'           : 'Bevestiging nodig',
			'confirmRm'            : 'Weet u zeker dat u deze bestanden wil verwijderen?<br/>Deze actie kan niet ongedaan gemaakt worden!',
			'confirmRepl'          : 'Oud bestand vervangen door het nieuwe bestand?',
			'confirmRest'          : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017						
			'confirmConvUTF8'      : 'Niet in UTF-8<br/>Converteren naar UTF-8?<br/>De inhoud wordt UTF-8 door op te slaan na de conversie', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'       : 'Het is aangepast.<br/>Wijzigingen gaan verloren als je niet opslaat', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'apllyAll'             : 'Toepassen op alles',
			'name'                 : 'Naam',
			'size'                 : 'Grootte',
			'perms'                : 'Rechten',
			'modify'               : 'Aangepast',
			'kind'                 : 'Type',
			'read'                 : 'lees',
			'write'                : 'schrijf',
			'noaccess'             : 'geen toegang',
			'and'                  : 'en',
			'unknown'              : 'onbekend',
			'selectall'            : 'Selecteer alle bestanden',
			'selectfiles'          : 'Selecteer bestand(en)',
			'selectffile'          : 'Selecteer eerste bestand',
			'selectlfile'          : 'Selecteer laatste bestand',
			'viewlist'             : 'Lijst weergave',
			'viewicons'            : 'Icoon weergave',
			'viewSmall'            : 'Klein', // from v2.1.39 added 22.5.2018
			'viewMedium'           : 'Middelgroot', // from v2.1.39 added 22.5.2018
			'viewLarge'            : 'Groot', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'       : 'Extra groot', // from v2.1.39 added 22.5.2018
			'places'               : 'Plaatsen',
			'calc'                 : 'Bereken',
			'path'                 : 'Pad',
			'aliasfor'             : 'Alias voor',
			'locked'               : 'Vergrendeld',
			'dim'                  : 'Dimensies',
			'files'                : 'Bestanden',
			'folders'              : 'Mappen',
			'items'                : 'Items',
			'yes'                  : 'ja',
			'no'                   : 'nee',
			'link'                 : 'Link',
			'searcresult'          : 'Zoek resultaten',
			'selected'             : 'geselecteerde items',
			'about'                : 'Over',
			'shortcuts'            : 'Snelkoppelingen',
			'help'                 : 'Help',
			'webfm'                : 'Web bestandsmanager',
			'ver'                  : 'Versie',
			'protocolver'          : 'protocol versie',
			'homepage'             : 'Project home',
			'docs'                 : 'Documentatie',
			'github'               : 'Fork ons op Github',
			'twitter'              : 'Volg ons op twitter',
			'facebook'             : 'Wordt lid op facebook',
			'team'                 : 'Team',
			'chiefdev'             : 'Hoofd ontwikkelaar',
			'developer'            : 'ontwikkelaar',
			'contributor'          : 'bijdrager',
			'maintainer'           : 'onderhouder',
			'translator'           : 'vertaler',
			'icons'                : 'Iconen',
			'dontforget'           : 'En vergeet je handdoek niet!',
			'shortcutsof'          : 'Snelkoppelingen uitgeschakeld',
			'dropFiles'            : 'Sleep hier uw bestanden heen',
			'or'                   : 'of',
			'selectForUpload'      : 'Selecteer bestanden om te uploaden',
			'moveFiles'            : 'Verplaats bestanden',
			'copyFiles'            : 'Kopieer bestanden',
			'restoreFiles'         : 'Items herstellen', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'         : 'Verwijder uit Plaatsen',
			'aspectRatio'          : 'Aspect ratio',
			'scale'                : 'Schaal',
			'width'                : 'Breedte',
			'height'               : 'Hoogte',
			'resize'               : 'Verkleinen',
			'crop'                 : 'Bijsnijden',
			'rotate'               : 'Draaien',
			'rotate-cw'            : 'Draai 90 graden rechtsom',
			'rotate-ccw'           : 'Draai 90 graden linksom',
			'degree'               : 'Â°',
			'netMountDialogTitle'  : 'Mount netwerk volume', // added 18.04.2012
			'protocol'             : 'Protocol', // added 18.04.2012
			'host'                 : 'Host', // added 18.04.2012
			'port'                 : 'Poort', // added 18.04.2012
			'user'                 : 'Gebruikersnaams', // added 18.04.2012
			'pass'                 : 'Wachtwoord', // added 18.04.2012
			'confirmUnmount'       : 'Weet u zeker dat u $1 wil unmounten?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser'     : 'Sleep of plak bestanden vanuit de browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'       : 'Sleep of plak bestanden hier', // from v2.1 added 07.04.2014
			'encoding'             : 'Encodering', // from v2.1 added 19.12.2014
			'locale'               : 'Localisatie',   // from v2.1 added 19.12.2014
			'searchTarget'         : 'Doel: $1',                // from v2.1 added 22.5.2015
			'searchMime'           : 'Zoek op invoer MIME Type', // from v2.1 added 22.5.2015
			'owner'                : 'Eigenaar', // from v2.1 added 20.6.2015
			'group'                : 'Groep', // from v2.1 added 20.6.2015
			'other'                : 'Overig', // from v2.1 added 20.6.2015
			'execute'              : 'Uitvoeren', // from v2.1 added 20.6.2015
			'perm'                 : 'Rechten', // from v2.1 added 20.6.2015
			'mode'                 : 'Modus', // from v2.1 added 20.6.2015
			'emptyFolder'          : 'Map is leeg', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop'      : 'Map is leeg\\A Sleep hier naar toe om toe te voegen', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap'      : 'Map is leeg\\A Lang ingedrukt houden om toe te voegen', // from v2.1.6 added 30.12.2015
			'quality'              : 'Kwaliteit', // from v2.1.6 added 5.1.2016
			'autoSync'             : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'               : 'Omhoog',  // from v2.1.6 added 18.1.2016
			'getLink'              : 'Geef link', // from v2.1.7 added 9.2.2016
			'selectedItems'        : 'Geselecteerde items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'             : 'Map ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'        : 'Toestaan offline toegang', // from v2.1.10 added 3.25.2016
			'reAuth'               : 'Opnieuw autenticeren', // from v2.1.10 added 3.25.2016
			'nowLoading'           : 'Laden..', // from v2.1.12 added 4.26.2016
			'openMulti'            : 'Open meerdere bestanden', // from v2.1.12 added 5.14.2016
			'openMultiConfirm'     : 'Je probeert het $1 bestanden te openen. Weet je zeker dat je dat in je browser wil doen?', // from v2.1.12 added 5.14.2016
			'emptySearch'          : 'Geen zoekresultaten', // from v2.1.12 added 5.16.2016
			'editingFile'          : 'Bestand wordt bewerkt', // from v2.1.13 added 6.3.2016
			'hasSelected'          : 'Je hebt $1 items geselecteerd', // from v2.1.13 added 6.3.2016
			'hasClipboard'         : 'Je hebt $1 items op het clipboard', // from v2.1.13 added 6.3.2016
			'incSearchOnly'        : 'Verder zoeken kan alleen vanuit huidige view', // from v2.1.13 added 6.30.2016
			'reinstate'            : 'Herstellen', // from v2.1.15 added 3.8.2016
			'complete'             : '$1 compleet', // from v2.1.15 added 21.8.2016
			'contextmenu'          : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'          : 'Pagina omslaan', // from v2.1.15 added 10.9.2016
			'volumeRoots'          : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'                : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'              : 'Achtergrondkleur', // from v2.1.16 added 1.10.2016
			'colorPicker'          : 'Kleurkiezer', // from v2.1.16 added 1.10.2016
			'8pxgrid'              : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'              : 'Actief', // from v2.1.16 added 4.10.2016
			'disabled'             : 'Inactief', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'       : 'Zoekresultaten zijn leeg in actuele view\\ADruk [Enter] om zoekgebied uit te breiden', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'       : 'Zoeken op eerste letter is leeg in actuele view', // from v2.1.23 added 24.3.2017
			'textLabel'            : 'Tekstlabel', // from v2.1.17 added 13.10.2016
			'minsLeft'             : '$1 minuten over', // from v2.1.17 added 13.11.2016
			'openAsEncoding'       : 'Opnieuw openen met geselecteerde encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'       : 'Opslaan met geselecteerde encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'         : 'Selecteer map', // from v2.1.20 added 13.12.2016
			'firstLetterSearch'    : 'Zoeken op eerste letter', // from v2.1.23 added 24.3.2017
			'presets'              : 'Voorkeuren', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'       : 'Teveel voor in de prullenbak', // from v2.1.25 added 9.6.2017
			'TextArea'             : 'Tekstgebied', // from v2.1.25 added 14.6.2017
			'folderToEmpty'        : 'Map "$1" legen', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'        : 'Er zijn geen items in map "$1"', // from v2.1.25 added 22.6.2017
			'preference'           : 'Voorkeur', // from v2.1.26 added 28.6.2017
			'language'             : 'Taal', // from v2.1.26 added 28.6.2017
			'clearBrowserData'     : 'Initialiseer instellingen van deze browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'          : 'Toolbar instellingen', // from v2.1.27 added 2.8.2017
			'charsLeft'            : '... $1 tekens over',  // from v2.1.29 added 30.8.2017
			'sum'                  : 'Totaal', // from v2.1.29 added 28.9.2017
			'roughFileSize'        : 'Geschatte bestandsgrootte', // from v2.1.30 added 2.11.2017
			'autoFocusDialog'      : 'Focus op het dialoogelement met mouseover',  // from v2.1.30 added 2.11.2017
			'select'               : 'Selecteren', // from v2.1.30 added 23.11.2017
			'selectAction'         : 'Actie als bestand is geselecteerd', // from v2.1.30 added 23.11.2017
			'useStoredEditor'      : 'Open met laatstgebruikte editor', // from v2.1.30 added 23.11.2017
			'selectinvert'         : 'Selectie omkeren', // from v2.1.30 added 25.11.2017
			'renameMultiple'       : 'Weet je zeker dat je $1 items wil hernoemen naar $2?<br/>Dit kan niet ongedaan worden gemaakt!', // from v2.1.31 added 4.12.2017
			'batchRename'          : 'Batch hernoemen', // from v2.1.31 added 8.12.2017
			'plusNumber'           : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'             : 'Voeg prefix toe', // from v2.1.31 added 8.12.2017
			'asSuffix'             : 'Voeg suffix toe', // from v2.1.31 added 8.12.2017
			'changeExtention'      : 'Verander extentie', // from v2.1.31 added 8.12.2017
			'columnPref'           : 'Kolominstelllingen (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate'   : 'Aanpassingen worden direct toegepast op het archief', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'     : 'Aanpassingen worden pas toegepast na re-mount van dit volume', // from v2.1.33 added 2.3.2018
			'unmountChildren'      : 'Deze volume(s) worden ook unmounted. Weet je het zeker?', // from v2.1.33 added 5.3.2018
			'selectionInfo'        : 'Selectie informatie', // from v2.1.33 added 7.3.2018
			'hashChecker'          : 'Algoritmes voor file hash', // from v2.1.33 added 10.3.2018
			'infoItems'            : 'Informatie Items (Selectie Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit'     : 'Druk nogmaals om te eindigen', // from v2.1.38 added 1.4.2018
			'toolbar'              : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'            : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'               : 'Dialoog', // from v2.1.38 added 4.4.2018
			'all'                  : 'Alles', // from v2.1.38 added 4.4.2018
			'iconSize'             : 'Icoongrootte (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized'      : 'Open de maximale editor', // from v2.1.40 added 30.6.2018
			'editorConvNoApi'      : 'Conversie via API is niet beschikbaar, converteer aub op de website', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file', //from v2.1.40 added 8.7.2018
			'convertOn'            : 'Converteer op de site $1', // from v2.1.40 added 10.7.2018
			'integrations'         : 'Integratie', // from v2.1.40 added 11.7.2018
			'integrationWith'      : 'Deze elFinder heeft de volgende externe services. Controleer de voorwaarden, privacy policy, etc. voor gebruik', // from v2.1.40 added 11.7.2018
			'showHidden'           : 'Toon verborgen items', // from v2.1.41 added 24.7.2018
			'hideHidden'           : 'Verberg verborgen items', // from v2.1.41 added 24.7.2018
			'toggleHidden'         : 'Toon/verberg verborgen items', // from v2.1.41 added 24.7.2018
			'makefileTypes'        : 'File types die aangemaakt mogen worden', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'       : 'Type voor tekstbestand', // from v2.1.41 added 7.8.2018
			'add'                  : 'Toevoegen', // from v2.1.41 added 7.8.2018
			'theme'                : 'Thema', // from v2.1.43 added 19.10.2018
			'default'              : 'Default', // from v2.1.43 added 19.10.2018
			'description'          : 'Beschrijving', // from v2.1.43 added 19.10.2018
			'website'              : 'Website', // from v2.1.43 added 19.10.2018
			'author'               : 'Auteur', // from v2.1.43 added 19.10.2018
			'email'                : 'Email', // from v2.1.43 added 19.10.2018
			'license'              : 'Licensie', // from v2.1.43 added 19.10.2018
			'exportToSave'         : 'Dit item kan niet worden opgeslagen, exporteer naar je pc om wijzingen te bewaren', // from v2.1.44 added 1.12.2018

			/********************************** mimetypes **********************************/
			'kindUnknown'          : 'Onbekend',
			'kindRoot'             : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'           : 'Map',
			'kindSelects'          : 'Selecties', // from v2.1.29 added 29.8.2017
			'kindAlias'            : 'Alias',
			'kindAliasBroken'      : 'Verbroken alias',
			
			/********************************** applications **********************************/
			'kindApp'              : 'Applicatie',
			'kindPostscript'       : 'Postscript document',
			'kindMsOffice'         : 'Microsoft Office document',
			'kindMsWord'           : 'Microsoft Word document',
			'kindMsExcel'          : 'Microsoft Excel document',
			'kindMsPP'             : 'Microsoft Powerpoint presentation',
			'kindOO'               : 'Open Office document',
			'kindAppFlash'         : 'Flash applicatie',
			'kindPDF'              : 'Portable Document Format (PDF)',
			'kindTorrent'          : 'Bittorrent bestand',
			'kind7z'               : '7z archief',
			'kindTAR'              : 'TAR archief',
			'kindGZIP'             : 'GZIP archief',
			'kindBZIP'             : 'BZIP archief',
			'kindXZ'               : 'XZ archief',
			'kindZIP'              : 'ZIP archief',
			'kindRAR'              : 'RAR archief',
			'kindJAR'              : 'Java JAR bestand',
			'kindTTF'              : 'True Type font',
			'kindOTF'              : 'Open Type font',
			'kindRPM'              : 'RPM package',
			/********************************** fonts **********************************/
			'kindFont'             : 'Lettertype bestand',
			'kindSFNT'             : 'SFNT font',
			'kindEOT'              : 'Embedded Open Type font',
			'kindWOFF'             : 'Web Open Font Format',
			'kindWOFF2'            : 'Web Open Font Format 2',
			
			/********************************** texts **********************************/
			'kindText'             : 'Tekst bestand',
			'kindTextPlain'        : 'Tekst',
			'kindPHP'              : 'PHP bronbestand',
			'kindCSS'              : 'Cascading style sheet',
			'kindHTML'             : 'HTML document',
			'kindJS'               : 'Javascript bronbestand',
			'kindRTF'              : 'Rich Text Format',
			'kindC'                : 'C bronbestand',
			'kindCHeader'          : 'C header bronbestand',
			'kindCPP'              : 'C++ bronbestand',
			'kindCPPHeader'        : 'C++ header bronbestand',
			'kindShell'            : 'Unix shell script',
			'kindPython'           : 'Python bronbestand',
			'kindJava'             : 'Java bronbestand',
			'kindRuby'             : 'Ruby bronbestand',
			'kindPerl'             : 'Perl bronbestand',
			'kindSQL'              : 'SQL bronbestand',
			'kindXML'              : 'XML document',
			'kindAWK'              : 'AWK bronbestand',
			'kindCSV'              : 'Komma gescheiden waardes',
			'kindDOCBOOK'          : 'Docbook XML document',
			'kindMarkdown'         : 'Markdown tekst', // added 20.7.2015
			
			/********************************** images **********************************/
			
			//               
			'kindImage'            : 'Afbeelding',
			'kindBMP'              : 'BMP afbeelding',
			'kindJPEG'             : 'JPEG afbeelding',
			'kindGIF'              : 'GIF afbeelding',
			'kindPNG'              : 'PNG afbeelding',
			'kindTIFF'             : 'TIFF afbeelding',
			'kindTGA'              : 'TGA afbeelding',
			'kindPSD'              : 'Adobe Photoshop afbeelding',
			'kindXBITMAP'          : 'X bitmap afbeelding',
			'kindPXM'              : 'Pixelmator afbeelding',
			
			/********************************** media **********************************/
			'kindAudio'            : 'Audio media',
			'kindAudioMPEG'        : 'MPEG audio',
			'kindAudioMPEG4'       : 'MPEG-4 audio',
			'kindAudioMIDI'        : 'MIDI audio',
			'kindAudioOGG'         : 'Ogg Vorbis audio',
			'kindAudioWAV'         : 'WAV audio',
			'AudioPlaylist'        : 'MP3 playlist',
			'kindVideo'            : 'Video media',
			'kindVideoDV'          : 'DV video',
			'kindVideoMPEG'        : 'MPEG video',
			'kindVideoMPEG4'       : 'MPEG-4 video',
			'kindVideoAVI'         : 'AVI video',
			'kindVideoMOV'         : 'Quick Time video',
			'kindVideoWM'          : 'Windows Media video',
			'kindVideoFlash'       : 'Flash video',
			'kindVideoMKV'         : 'Matroska video',
			'kindVideoOGG'         : 'Ogg video'
		}
	};
}));

                                                                                                                                                        includes/File_manager/lib/js/i18n/elfinder.fr.js                                                    0000644                 00000106536 15266052773 0015450 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * franÃ§aise translation
 * @author RÃ©gis Guyomarch <regisg@gmail.com>
 * @author Benoit Delachaux <benorde33@gmail.com>
 * @author Jonathan Grunder <jonathan.grunder@gmail.com>
 * @version 2023-04-16
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fr = {
		translator : 'RÃ©gis Guyomarch &lt;regisg@gmail.com&gt;, Benoit Delachaux &lt;benorde33@gmail.com&gt;, Jonathan Grunder &lt;jonathan.grunder@gmail.com&gt;',
		language   : 'franÃ§aise',
		direction  : 'ltr',
		dateFormat : 'd/M/Y H:i', // will show like: 16/Avr/2023 12:36
		fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 12:36
		nonameDateFormat : 'ymd-His', // noname upload will show like: 230416-123657
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Erreur',
			'errUnknown'           : 'Erreur inconnue.',
			'errUnknownCmd'        : 'Commande inconnue.',
			'errJqui'              : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent Ãªtre inclus.',
			'errNode'              : 'elFinder requiert que l\'Ã©lÃ©ment DOM ait Ã©tÃ© crÃ©Ã©.',
			'errURL'               : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas Ã©tÃ© dÃ©finie.',
			'errAccess'            : 'AccÃ¨s refusÃ©.',
			'errConnect'           : 'Impossible de se connecter au backend.',
			'errAbort'             : 'Connexion interrompue.',
			'errTimeout'           : 'DÃ©lai de connexion dÃ©passÃ©.',
			'errNotFound'          : 'Backend non trouvÃ©.',
			'errResponse'          : 'Mauvaise rÃ©ponse du backend.',
			'errConf'              : 'Mauvaise configuration du backend.',
			'errJSON'              : 'Le module PHP JSON n\'est pas installÃ©.',
			'errNoVolumes'         : 'Aucun volume lisible.',
			'errCmdParams'         : 'Mauvais paramÃ©trage de la commande "$1".',
			'errDataNotJSON'       : 'Les donnÃ©es ne sont pas au format JSON.',
			'errDataEmpty'         : 'DonnÃ©es inexistantes.',
			'errCmdReq'            : 'La requÃªte au Backend doit comporter le nom de la commande.',
			'errOpen'              : 'Impossible d\'ouvrir "$1".',
			'errNotFolder'         : 'Cet objet n\'est pas un dossier.',
			'errNotFile'           : 'Cet objet n\'est pas un fichier.',
			'errRead'              : 'Impossible de lire "$1".',
			'errWrite'             : 'Impossible d\'Ã©crire dans "$1".',
			'errPerm'              : 'Permission refusÃ©e.',
			'errLocked'            : '"$1" est verrouillÃ© et ne peut Ãªtre dÃ©placÃ© ou supprimÃ©.',
			'errExists'            : 'Un Ã©lÃ©ment nommÃ© "$1" existe dÃ©jÃ .',
			'errInvName'           : 'Nom de fichier incorrect.',
			'errInvDirname'        : 'Nom de dossier incorrect.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Dossier non trouvÃ©.',
			'errFileNotFound'      : 'Fichier non trouvÃ©.',
			'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvÃ©.',
			'errPopup'             : 'Le navigateur web a empÃªchÃ© l\'ouverture d\'une fenÃªtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.',
			'errMkdir'             : 'Impossible de crÃ©er le dossier "$1".',
			'errMkfile'            : 'Impossible de crÃ©er le fichier "$1".',
			'errRename'            : 'Impossible de renommer "$1".',
			'errCopyFrom'          : 'Interdiction de copier des fichiers depuis le volume "$1".',
			'errCopyTo'            : 'Interdiction de copier des fichiers vers le volume "$1".',
			'errMkOutLink'         : 'Impossible de crÃ©er un lien en dehors du volume principal.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erreur lors de l\'envoi du fichier.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossible d\'envoyer "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Aucun fichier Ã  envoyer.',
			'errUploadTotalSize'   : 'Les donnÃ©es dÃ©passent la taille maximale allouÃ©e.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le fichier dÃ©passe la taille maximale allouÃ©e.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Type de fichier non autorisÃ©.',
			'errUploadTransfer'    : '"$1" erreur de transfert.',
			'errUploadTemp'        : 'Impossible de crÃ©er un fichier temporaire pour transfÃ©rer les fichiers.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'objet "$1" existe dÃ©jÃ  Ã  cet endroit et ne peut Ãªtre remplacÃ© par un objet d\'un type diffÃ©rent.', // new
			'errReplace'           : 'Impossible de remplacer "$1".',
			'errSave'              : 'Impossible de sauvegarder "$1".',
			'errCopy'              : 'Impossible de copier "$1".',
			'errMove'              : 'Impossible de dÃ©placer "$1".',
			'errCopyInItself'      : 'Impossible de copier "$1" sur lui-mÃªme.',
			'errRm'                : 'Impossible de supprimer "$1".',
			'errTrash'             : 'Impossible de dÃ©placer dans la corbeille', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossible de supprimer le(s) fichier(s) source(s).',
			'errExtract'           : 'Imbossible d\'extraire les fichiers Ã  partir de "$1".',
			'errArchive'           : 'Impossible de crÃ©er l\'archive.',
			'errArcType'           : 'Type d\'archive non supportÃ©.',
			'errNoArchive'         : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supportÃ©.',
			'errCmdNoSupport'      : 'Le Backend ne prend pas en charge cette commande.',
			'errReplByChild'       : 'Le dossier â€œ$1â€� ne peut pas Ãªtre remplacÃ© par un Ã©lÃ©ment qu\'il contient.',
			'errArcSymlinks'       : 'Par mesure de sÃ©curitÃ©, il est dÃ©fendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisÃ©s.', // edited 24.06.2012
			'errArcMaxSize'        : 'Les fichiers de l\'archive excÃ¨dent la taille maximale autorisÃ©e.',
			'errResize'            : 'Impossible de redimensionner "$1".',
			'errResizeDegree'      : 'DegrÃ© de rotation invalide.',  // added 7.3.2013
			'errResizeRotate'      : 'L\'image ne peut pas Ãªtre tournÃ©e.',  // added 7.3.2013
			'errResizeSize'        : 'Dimension de l\'image non-valide.',  // added 7.3.2013
			'errResizeNoChange'    : 'L\'image n\'est pas redimensionnable.',  // added 7.3.2013
			'errUsupportType'      : 'Type de fichier non supportÃ©.',
			'errNotUTF8Content'    : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut Ãªtre Ã©ditÃ©.',  // added 9.11.2011
			'errNetMount'          : 'Impossible de monter "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocole non supportÃ©.',     // added 17.04.2012
			'errNetMountFailed'    : 'Echec du montage.',         // added 17.04.2012
			'errNetMountHostReq'   : 'HÃ´te requis.', // added 18.04.2012
			'errSessionExpires'    : 'Votre session a expirÃ© en raison de son inactivitÃ©.',
			'errCreatingTempDir'   : 'Impossible de crÃ©er le rÃ©pertoire temporaire : "$1"',
			'errFtpDownloadFile'   : 'Impossible de tÃ©lÃ©charger le file depuis l\'accÃ¨s FTP : "$1"',
			'errFtpUploadFile'     : 'Impossible d\'envoyer le fichier vers l\'accÃ¨s FTP : "$1"',
			'errFtpMkdir'          : 'Impossible de crÃ©er un rÃ©pertoire distant sur l\'accÃ¨s FTP :"$1"',
			'errArchiveExec'       : 'Erreur lors de l\'archivage des fichiers : "$1"',
			'errExtractExec'       : 'Erreur lors de l\'extraction des fichiers : "$1"',
			'errNetUnMount'        : 'Impossible de dÃ©monter.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'DÃ©lai dâ€™attente dÃ©passÃ© pour la recherche "$1". Le rÃ©sultat de la recherche est partiel.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'RÃ©authorisation requise.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Le nombre maximal d\'Ã©lÃ©ments pouvant Ãªtre sÃ©lectionnÃ©s est $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu Ãªtre identifiÃ©e.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Aucun Ã©diteur n\'a Ã©tÃ© trouvÃ© pour ce type de fichier.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Une erreur est survenue du cÃ´tÃ© serveur.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Il y a encore $1 erreur(s).', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Vous ne pouvez crÃ©er que $1 dossier au mÃªme moment.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'CrÃ©er une archive',
			'cmdback'      : 'PrÃ©cÃ©dent',
			'cmdcopy'      : 'Copier',
			'cmdcut'       : 'Couper',
			'cmddownload'  : 'TÃ©lÃ©charger',
			'cmdduplicate' : 'Dupliquer',
			'cmdedit'      : 'Ã‰diter le fichier',
			'cmdextract'   : 'Extraire les fichiers de l\'archive',
			'cmdforward'   : 'Suivant',
			'cmdgetfile'   : 'SÃ©lectionner les fichiers',
			'cmdhelp'      : 'Ã€ propos de ce logiciel',
			'cmdhome'      : 'Accueil',
			'cmdinfo'      : 'Informations',
			'cmdmkdir'     : 'Nouveau dossier',
			'cmdmkdirin'   : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nouveau fichier',
			'cmdopen'      : 'Ouvrir',
			'cmdpaste'     : 'Coller',
			'cmdquicklook' : 'PrÃ©visualiser',
			'cmdreload'    : 'Actualiser',
			'cmdrename'    : 'Renommer',
			'cmdrm'        : 'Supprimer',
			'cmdtrash'     : 'Ã€ la corbeille', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurer', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Trouver les fichiers',
			'cmdup'        : 'Remonter au dossier parent',
			'cmdupload'    : 'Envoyer les fichiers',
			'cmdview'      : 'Vue',
			'cmdresize'    : 'Redimensionner l\'image',
			'cmdsort'      : 'Trier',
			'cmdnetmount'  : 'Monter un volume rÃ©seau', // added 18.04.2012
			'cmdnetunmount': 'DÃ©monter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Vers Favoris', // added 28.12.2014
			'cmdchmod'     : 'Changer de mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ouvrir un dossier', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'RÃ©initialiser largeur colone', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Plein Ã©cran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'DÃ©placer', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vider le dossier', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annuler', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refaire', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'PrÃ©fÃ©rences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Tout sÃ©lectionner', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Tout dÃ©sÃ©lectionner', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverser la sÃ©lection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ouvrir dans une nouvelle fenÃªtre', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Cacher (PrÃ©fÃ©rence)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fermer',
			'btnSave'   : 'Enregistrer',
			'btnRm'     : 'Supprimer',
			'btnApply'  : 'Appliquer',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Non',
			'btnYes'    : 'Oui',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Monter',  // added 18.04.2012
			'btnApprove': 'Aller Ã  $1 & approuver', // from v2.1 added 26.04.2012
			'btnUnmount': 'DÃ©monter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tous',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Type MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nom du fichier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Sauvegarder & Fermer', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renommer',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'PrÃ©c. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ouvrir le dossier',
			'ntffile'     : 'Ouvrir le fichier',
			'ntfreload'   : 'Actualiser le contenu du dossier',
			'ntfmkdir'    : 'CrÃ©ation du dossier',
			'ntfmkfile'   : 'CrÃ©ation des fichiers',
			'ntfrm'       : 'Supprimer les Ã©lÃ©ments',
			'ntfcopy'     : 'Copier les Ã©lÃ©ments',
			'ntfmove'     : 'DÃ©placer les Ã©lÃ©ments',
			'ntfprepare'  : 'PrÃ©paration de la copie des Ã©lÃ©ments',
			'ntfrename'   : 'Renommer les fichiers',
			'ntfupload'   : 'Envoi des fichiers',
			'ntfdownload' : 'TÃ©lÃ©chargement des fichiers',
			'ntfsave'     : 'Sauvegarder les fichiers',
			'ntfarchive'  : 'CrÃ©ation de l\'archive',
			'ntfextract'  : 'Extraction des fichiers de l\'archive',
			'ntfsearch'   : 'Recherche des fichiers',
			'ntfresize'   : 'Redimensionner les images',
			'ntfsmth'     : 'Fait quelque chose',
			'ntfloadimg'  : 'Chargement de l\'image',
			'ntfnetmount' : 'Monte le volume rÃ©seau', // added 18.04.2012
			'ntfnetunmount': 'DÃ©monte le volume rÃ©seau', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Calcule la dimension de l\'image', // added 20.05.2013
			'ntfreaddir'  : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013
			'ntfurl'      : 'RÃ©cupÃ©ration de lâ€™URL du lien', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changement de mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'VÃ©rification du nom du fichier envoyÃ©', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'CrÃ©ation dâ€™un fichier pour le tÃ©lÃ©chargement', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Traitement du fichier envoyÃ©', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Mettre Ã  la corbeille', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annuler l\'opÃ©ration prÃ©cÃ©dente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refaire l\'opÃ©ration annulÃ©e', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'VÃ©rification du contenu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Inconnue',
			'Today'       : 'Aujourd\'hui',
			'Yesterday'   : 'Hier',
			'msJan'       : 'Jan',
			'msFeb'       : 'FÃ©v',
			'msMar'       : 'Mar',
			'msApr'       : 'Avr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'AoÃ»',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'DÃ©c',
			'January'     : 'Janvier',
			'February'    : 'FÃ©vrier',
			'March'       : 'Mars',
			'April'       : 'Avril',
			'May'         : 'Mai',
			'June'        : 'Juin',
			'July'        : 'Juillet',
			'August'      : 'AoÃ»t',
			'September'   : 'Septembre',
			'October'     : 'Octobre',
			'November'    : 'Novembre',
			'December'    : 'DÃ©cembre',
			'Sunday'      : 'Dimanche',
			'Monday'      : 'Lundi',
			'Tuesday'     : 'Mardi',
			'Wednesday'   : 'Mercredi',
			'Thursday'    : 'Jeudi',
			'Friday'      : 'Vendredi',
			'Saturday'    : 'Samedi',
			'Sun'         : 'Dim',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Jeu',
			'Fri'         : 'Ven',
			'Sat'         : 'Sam',

			/******************************** sort variants ********************************/
			'sortname'          : 'par nom',
			'sortkind'          : 'par type',
			'sortsize'          : 'par taille',
			'sortdate'          : 'par date',
			'sortFoldersFirst'  : 'Dossiers en premier',
			'sortperm'          : 'par permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'par mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'par propriÃ©taire',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'par groupe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Egalement arborescence',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015
			'untitled folder'   : 'NouveauDossier',   // added 10.11.2015
			'Archive'           : 'NouvelleArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fichier',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation requise',
			'confirmRm'       : 'ÃŠtes-vous certain de vouloir supprimer les Ã©lÃ©ments ?<br/>Cela ne peut Ãªtre annulÃ© !',
			'confirmRepl'     : 'Remplacer l\'ancien fichier par le nouveau ?',
			'confirmRest'     : 'Remplacer l\'Ã©lÃ©ment existant par l\'Ã©lÃ©ment de la corbeille ?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8<br/>Convertir en UTF-8 ?<br/>Les contenus deviendront UTF-8 en sauvegardant aprÃ¨s la conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Impossible de dÃ©tecter l\'encodage de ce fichier. Pour Ãªtre modifiÃ©, il doit Ãªtre temporairement convertit en UTF-8.<br/>Veuillez s\'il vous plaÃ®t sÃ©lectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ce fichier a Ã©tÃ© modifiÃ©.<br/>Les donnÃ©es seront perdues si les changements ne sont pas sauvegardÃ©s.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'ÃŠtes-vous certain de vouloir dÃ©placer les Ã©lÃ©ments vers la corbeille?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Etes-vous sÃ»r de vouloir dÃ©placer ces Ã©lÃ©ments vers "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Appliquer Ã  tous',
			'name'            : 'Nom',
			'size'            : 'Taille',
			'perms'           : 'Permissions',
			'modify'          : 'ModifiÃ©',
			'kind'            : 'Type',
			'read'            : 'Lecture',
			'write'           : 'Ã‰criture',
			'noaccess'        : 'Pas d\'accÃ¨s',
			'and'             : 'et',
			'unknown'         : 'inconnu',
			'selectall'       : 'SÃ©lectionner tous les Ã©lÃ©ments',
			'selectfiles'     : 'SÃ©lectionner le(s) Ã©lÃ©ment(s)',
			'selectffile'     : 'SÃ©lectionner le premier Ã©lÃ©ment',
			'selectlfile'     : 'SÃ©lectionner le dernier Ã©lÃ©ment',
			'viewlist'        : 'Vue par liste',
			'viewicons'       : 'Vue par icÃ´nes',
			'viewSmall'       : 'Petites icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Moyennes icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Grandes icÃ´nes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'TrÃ¨s grandes icÃ´nes', // from v2.1.39 added 22.5.2018
			'places'          : 'Favoris',
			'calc'            : 'Calculer',
			'path'            : 'Chemin',
			'aliasfor'        : 'Raccourcis pour',
			'locked'          : 'Verrouiller',
			'dim'             : 'Dimensions',
			'files'           : 'Fichiers',
			'folders'         : 'Dossiers',
			'items'           : 'Ã‰lÃ©ments',
			'yes'             : 'oui',
			'no'              : 'non',
			'link'            : 'Lien',
			'searcresult'     : 'RÃ©sultats de la recherche',
			'selected'        : 'Ã‰lÃ©ments sÃ©lectionnÃ©s',
			'about'           : 'Ã€ propos',
			'shortcuts'       : 'Raccourcis',
			'help'            : 'Aide',
			'webfm'           : 'Gestionnaire de fichier Web',
			'ver'             : 'Version',
			'protocolver'     : 'Version du protocole',
			'homepage'        : 'Page du projet',
			'docs'            : 'Documentation',
			'github'          : 'Forkez-nous sur Github',
			'twitter'         : 'Suivez nous sur Twitter',
			'facebook'        : 'Joignez-nous sur Facebook',
			'team'            : 'Ã‰quipe',
			'chiefdev'        : 'DÃ©veloppeur en chef',
			'developer'       : 'DÃ©veloppeur',
			'contributor'     : 'Contributeur',
			'maintainer'      : 'Mainteneur',
			'translator'      : 'Traducteur',
			'icons'           : 'IcÃ´nes',
			'dontforget'      : 'et n\'oubliez pas votre serviette',
			'shortcutsof'     : 'Raccourcis dÃ©sactivÃ©s',
			'dropFiles'       : 'DÃ©posez les fichiers ici',
			'or'              : 'ou',
			'selectForUpload' : 'SÃ©lectionner les fichiers Ã  envoyer',
			'moveFiles'       : 'DÃ©placer les Ã©lÃ©ments',
			'copyFiles'       : 'Copier les Ã©lÃ©ments',
			'restoreFiles'    : 'Restaurer les Ã©lÃ©ments', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Retirer des favoris',
			'aspectRatio'     : 'Ratio dâ€™affichage',
			'scale'           : 'Mise Ã  l\'Ã©chelle',
			'width'           : 'Largeur',
			'height'          : 'Hauteur',
			'resize'          : 'Redimensionner',
			'crop'            : 'Recadrer',
			'rotate'          : 'Rotation',
			'rotate-cw'       : 'Rotation de 90 degrÃ©s horaire',
			'rotate-ccw'      : 'Rotation de 90 degrÃ©s antihoraire',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Monter un volume rÃ©seau', // added 18.04.2012
			'protocol'            : 'Protocole', // added 18.04.2012
			'host'                : 'HÃ´te', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilisateur', // added 18.04.2012
			'pass'                : 'Mot de passe', // added 18.04.2012
			'confirmUnmount'      : 'DÃ©monter $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Glissez-dÃ©posez depuis le navigateur de fichier', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Glissez-dÃ©posez les fichiers ici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodage', // from v2.1 added 19.12.2014
			'locale'          : 'Encodage rÃ©gional',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destination: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Recherche par type MIME', // from v2.1 added 22.5.2015
			'owner'           : 'PropriÃ©taire', // from v2.1 added 20.6.2015
			'group'           : 'Groupe', // from v2.1 added 20.6.2015
			'other'           : 'Autre', // from v2.1 added 20.6.2015
			'execute'         : 'ExÃ©cuter', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Le dossier est vide', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-dÃ©posez pour ajouter des Ã©lÃ©ments.', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des Ã©lÃ©ments.', // from v2.1.6 added 30.12.2015
			'quality'         : 'QualitÃ©', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Synchronisation automatique',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'DÃ©placer vers le haut',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtenir le lien dâ€™URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ã‰lÃ©ments sÃ©lectionnÃ©s ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID du dossier', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permettre l\'accÃ¨s hors-ligne', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Pour se rÃ©authentifier', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'En cours de chargement...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. ÃŠtes-vous sÃ»r de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Aucun rÃ©sultat trouvÃ© avec les paramÃ¨tres de recherche.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vous avez sÃ©lectionnÃ© $1 Ã©lÃ©ments.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Vous avez $1 Ã©lÃ©ments dans le presse-papier.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Recherche incrÃ©mentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'RÃ©tablir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complÃ©tÃ©', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextuel', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Tourner la page', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumes principaux', // from v2.1.16 added 16.9.2016
			'reset'           : 'RÃ©initialiser', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Couleur de fond', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'SÃ©lecteur de couleur', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grille 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Actif', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inactif', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Aucun rÃ©sultat trouvÃ©.\\Appuyez sur [EntrÃ©e] pour dÃ©velopper la cible de recherche.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Aucun rÃ©sultat trouvÃ© pour la recherche par premiÃ¨re lettre.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Label texte', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'RÃ©ouvrir avec l\'encodage sÃ©lectionnÃ©', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Sauvegarder avec l\'encodage sÃ©lectionnÃ©', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Choisir le dossier', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Recherche par premiÃ¨re lettre', // from v2.1.23 added 24.3.2017
			'presets'         : 'PrÃ©sÃ©lections', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Impossible de mettre autant d\'Ã©lÃ©ments Ã  la corbeille.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Zone de texte', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Il n\'y a pas d\'Ã©lÃ©ment dans le dossier "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'PrÃ©fÃ©rences', // from v2.1.26 added 28.6.2017
			'language'        : 'Configuration de langue', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisation des configurations sauvegardÃ©es dans ce navigateur', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ParamÃ¨tres de la barre d\'outils', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caractÃ¨re(s) restant(s).',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 ligne(s) restante(s).',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somme', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Concentrez-vous sur l\'Ã©lÃ©ment de dialogue avec le survol de la souris',  // from v2.1.30 added 2.11.2017
			'select'          : 'SÃ©lectionner', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action lors de la sÃ©lection d\'un fichier', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ouvrir avec le dernier Ã©diteur utilisÃ©', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverser la sÃ©lection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ÃŠtes-vous sÃ»r de vouloir renommer les Ã©lÃ©ments sÃ©lectionnÃ©s $1 en $2 ?<br/>L\'action est dÃ©finitive !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renommer le Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nombre', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ajouter un prÃ©fixe', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ParamÃ¨tres des colonnes (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Les changements seront immÃ©diatement appliquÃ©s Ã  l\'archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Aucun changement ne sera appliquÃ© tant que ce volume n\'a pas Ã©tÃ© dÃ©montÃ©.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Le(s) volume(s) suivant(s) montÃ©s sur ce volume seront Ã©galement dÃ©montÃ©s. ÃŠtes-vous sÃ»r de vouloir le dÃ©monter ?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informations sur la sÃ©lection', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ã‰lÃ©ments d\'information (panneau de sÃ©lection d\'informations )', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Appuyez Ã  nouveau pour quitter.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barre d\'outils', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espace de travail', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogue', // from v2.1.38 added 4.4.2018
			'all'             : 'Tout', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Dimensions de l\'icÃ´ne (AperÃ§u)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ouvrir la fenÃªtre d\'Ã©dition Ã  la taille maximale', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ã‰tant donnÃ© que la conversion par API n\'est pas disponible actuellement, veuillez effectuer la conversion sur le site Web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'AprÃ¨s la conversion, vous devez ajouter l\'URL de l\'Ã©lÃ©ment ou un fichier tÃ©lÃ©chargÃ© pour enregistrer le fichier converti.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convertir sur le site de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'IntÃ©grations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Cet elFinder intÃ¨gre les services externes suivants. Veuillez vÃ©rifier les conditions d\'utilisation, la politique de confidentialitÃ©, etc. avant de l\'utiliser.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Afficher les Ã©lÃ©ment cachÃ©s', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ne pas afficher les Ã©lÃ©ment cachÃ©s', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Afficher/Cacher les Ã©lÃ©ments cachÃ©s', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Type de ficher autorisÃ© avec "Nouveau fichier"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type du fichier de texte', // from v2.1.41 added 7.8.2018
			'add'             : 'Ajouter', // from v2.1.41 added 7.8.2018
			'theme'           : 'ThÃ¨me', // from v2.1.43 added 19.10.2018
			'default'         : 'Par DÃ©faut', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Site Web', // from v2.1.43 added 19.10.2018
			'author'          : 'Aauteur', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Cet Ã©lÃ©ment ne peut Ãªtre enregistrer. Pour Ã©viter de perdre les modifications, vous devez exporter vers votre ordinateur.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double-cliquez sur le fichier pour le sÃ©lectionner.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Utiliser le mode plein Ã©cran', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Inconnu',
			'kindRoot'        : 'Volume principal', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dossier',
			'kindSelects'     : 'SÃ©lections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Raccourci',
			'kindAliasBroken' : 'Raccourci cassÃ©',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'PrÃ©sentation Microsoft PowerPoint',
			'kindOO'          : 'Document OpenOffice',
			'kindAppFlash'    : 'Application Flash',
			'kindPDF'         : 'Format de document portable (PDF)',
			'kindTorrent'     : 'Fichier BitTorrent',
			'kind7z'          : 'Archive 7z',
			'kindTAR'         : 'Archive TAR',
			'kindGZIP'        : 'Archive GZIP',
			'kindBZIP'        : 'Archive BZIP',
			'kindXZ'          : 'Archive XZ',
			'kindZIP'         : 'Archive ZIP',
			'kindRAR'         : 'Archive RAR',
			'kindJAR'         : 'Fichier Java JAR',
			'kindTTF'         : 'Police True Type',
			'kindOTF'         : 'Police Open Type',
			'kindRPM'         : 'Package RPM',
			// fonts
			'kindFont'        : 'Police',
			'kindSFNT'        : 'Police font',
			'kindEOT'         : 'Police Embedded Open Type',
			'kindWOFF'        : 'Police Web Open Font Format',
			'kindWOFF2'       : 'Police Web Open Font Format 2',
			// texts
			'kindText'        : 'Document Text',
			'kindTextPlain'   : 'Texte non formatÃ©',
			'kindPHP'         : 'Source PHP',
			'kindCSS'         : 'Feuille de style en cascade',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Source JavaScript',
			'kindRTF'         : 'Format de texte enrichi (Rich Text Format)',
			'kindC'           : 'Source C',
			'kindCHeader'     : 'Source header C',
			'kindCPP'         : 'Source C++',
			'kindCPPHeader'   : 'Source header C++',
			'kindShell'       : 'Shell script Unix',
			'kindPython'      : 'Source Python',
			'kindJava'        : 'Source Java',
			'kindRuby'        : 'Source Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Source SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Source AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'Image BMP',
			'kindJPEG'        : 'Image JPEG',
			'kindGIF'         : 'Image GIF',
			'kindPNG'         : 'Image PNG',
			'kindTIFF'        : 'Image TIFF',
			'kindTGA'         : 'Image TGA',
			'kindPSD'         : 'Image Adobe Photoshop',
			'kindXBITMAP'     : 'Image X bitmap',
			'kindPXM'         : 'Image Pixelmator',
			// media
			'kindAudio'       : 'Son',
			'kindAudioMPEG'   : 'Son MPEG',
			'kindAudioMPEG4'  : 'Son MPEG-4',
			'kindAudioMIDI'   : 'Son MIDI',
			'kindAudioOGG'    : 'Son Ogg Vorbis',
			'kindAudioWAV'    : 'Son WAV',
			'AudioPlaylist'   : 'Liste de lecture audio',
			'kindVideo'       : 'VidÃ©o',
			'kindVideoDV'     : 'VidÃ©o DV',
			'kindVideoMPEG'   : 'VidÃ©o MPEG',
			'kindVideoMPEG4'  : 'VidÃ©o MPEG-4',
			'kindVideoAVI'    : 'VidÃ©o AVI',
			'kindVideoMOV'    : 'VidÃ©o Quick Time',
			'kindVideoWM'     : 'VidÃ©o Windows Media',
			'kindVideoFlash'  : 'VidÃ©o Flash',
			'kindVideoMKV'    : 'VidÃ©o Matroska',
			'kindVideoOGG'    : 'VidÃ©o Ogg'
		}
	};
}));

                                                                                                                                                                  includes/File_manager/lib/js/i18n/elfinder.tr.js                                                    0000644                 00000103744 15266052774 0015465 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * TÃ¼rkÃ§e translation
 * @author I.Taskinoglu & A.Kaya <alikaya@armsyazilim.com>
 * @author Abdullah ELEN <abdullahelen@msn.com>
 * @author Osman KAYAN <osmnkayan@gmail.com>
 * @author alikayan95@gmail.com
 * @author Cengiz AKCAN cengiz@vobo.company
 * @author Ali KAYAN <alikayan95@gmail.com>
 * @version 2025-06-26
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.tr = {
		translator : 'I.Taskinoglu & A.Kaya &lt;alikaya@armsyazilim.com&gt;, Abdullah ELEN &lt;abdullahelen@msn.com&gt;, Osman KAYAN &lt;osmnkayan@gmail.com&gt;, alikayan95@gmail.com, Cengiz AKCAN cengiz@vobo.company, Ali KAYAN &lt;alikayan95@gmail.com&gt;',
		language   : 'TÃ¼rkÃ§e',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 26.06.2025 09:57
		fancyDateFormat : '$1 H:i', // will show like: BugÃ¼n 09:57
		nonameDateFormat : 'ymd-His', // noname upload will show like: 250626-095752
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Hata',
			'errUnknown'           : 'Bilinmeyen hata.',
			'errUnknownCmd'        : 'Bilinmeyen komut.',
			'errJqui'              : 'GeÃ§ersiz jQuery UI yapÄ±landÄ±rmasÄ±. SeÃ§ilebilir, sÃ¼rÃ¼kle ve bÄ±rak bileÅŸenlerini iÃ§ermelidir.',
			'errNode'              : 'elFinder yaratÄ±lmasÄ± iÃ§in DOM Element\'ine ihtiyacÄ± vardÄ±r.',
			'errURL'               : 'GeÃ§ersiz elFinder yapÄ±landÄ±rmasÄ±! URL seÃ§eneÄŸi ayarlanmamÄ±ÅŸ.',
			'errAccess'            : 'EriÅŸim reddedildi.',
			'errConnect'           : 'Sunucu-TarafÄ±\'na baÄŸlanÄ±lamÄ±yor.',
			'errAbort'             : 'BaÄŸlantÄ± iptal edildi.',
			'errTimeout'           : 'BaÄŸlantÄ± zaman aÅŸÄ±mÄ±.',
			'errNotFound'          : 'Sunucu-TarafÄ± bulunamadÄ±.',
			'errResponse'          : 'GeÃ§ersiz Sunucu-TarafÄ± yanÄ±tÄ±.',
			'errConf'              : 'GeÃ§ersiz Sunucu-TarafÄ± yapÄ±landÄ±rmasÄ±.',
			'errJSON'              : 'PHP JSON modÃ¼lÃ¼ kurulu deÄŸil.',
			'errNoVolumes'         : 'Okunabilir birimler mevcut deÄŸil.',
			'errCmdParams'         : '"$1" komutu iÃ§in geÃ§ersiz parametre.',
			'errDataNotJSON'       : 'Veri JSON formatÄ±nda deÄŸil.',
			'errDataEmpty'         : 'Veri boÅŸ.',
			'errCmdReq'            : 'Sunucu-TarafÄ± isteÄŸi iÃ§in komut adÄ± gerekli.',
			'errOpen'              : '"$1" aÃ§Ä±lamÄ±yor.',
			'errNotFolder'         : 'Nesne bir dizin deÄŸil.',
			'errNotFile'           : 'Nesne bir dosya deÄŸil.',
			'errRead'              : '"$1" okunamÄ±yor.',
			'errWrite'             : '"$1" yazÄ±lamÄ±yor.',
			'errPerm'              : 'Ä°zin reddedildi.',
			'errLocked'            : '"$1" kilitli. Bu nedenle taÅŸÄ±ma, yeniden adlandÄ±rma veya kaldÄ±rma yapÄ±lamÄ±yor.',
			'errExists'            : '"$1" adÄ±nda bir dosya zaten var.',
			'errInvName'           : 'GeÃ§ersiz dosya ismi.',
			'errInvDirname'        : 'GeÃ§ersiz dizin ismi.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Dizin bulunamadÄ±.',
			'errFileNotFound'      : 'Dosya bulunamadÄ±.',
			'errTrgFolderNotFound' : 'Hedef dizin "$1" bulunamadÄ±.',
			'errPopup'             : 'TarayÄ±cÄ± popup penceresi aÃ§mayÄ± engelledi. TarayÄ±cÄ± ayarlarÄ±ndan dosya aÃ§mayÄ± aktif hale getirin.',
			'errMkdir'             : 'Dizin oluÅŸturulamÄ±yor "$1".',
			'errMkfile'            : '"$1" dosyasÄ± oluÅŸturulamÄ±yor.',
			'errRename'            : '"$1" yeniden adlandÄ±rma yapÄ±lamÄ±yor.',
			'errCopyFrom'          : '"$1" biriminden dosya kopyalamaya izin verilmedi.',
			'errCopyTo'            : '"$1" birimine dosya kopyalamaya izin verilmedi.',
			'errMkOutLink'         : 'Birim kÃ¶kÃ¼ dÄ±ÅŸÄ±nda bir baÄŸlantÄ± oluÅŸturulamÄ±yor', // from v2.1 added 03.10.2015
			'errUpload'            : 'Dosya yÃ¼kleme hatasÄ±.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" dosyasÄ± yÃ¼klenemedi.', // old name - errUpload
			'errUploadNoFiles'     : 'YÃ¼klenecek dosya bulunamadÄ±.',
			'errUploadTotalSize'   : 'Veri izin verilen boyuttan bÃ¼yÃ¼k.', // old name - errMaxSize
			'errUploadFileSize'    : 'Dosya izin verilen boyuttan bÃ¼yÃ¼k.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Dosya tÃ¼rÃ¼ne izin verilmiyor.',
			'errUploadTransfer'    : '"$1" aktarma hatasÄ±.',
			'errUploadTemp'        : 'YÃ¼kleme iÃ§in geÃ§ici dosya yapÄ±lamÄ±yor.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1" nesnesi bu konumda zaten var ve baÅŸka tÃ¼rde nesne ile deÄŸiÅŸtirilemez.', // new
			'errReplace'           : 'DeÄŸiÅŸiklik yapÄ±lamÄ±yor "$1".',
			'errSave'              : '"$1" kaydedilemiyor.',
			'errCopy'              : '"$1" kopyalanamÄ±yor.',
			'errMove'              : '"$1" taÅŸÄ±namÄ±yor.',
			'errCopyInItself'      : '"$1" kendi iÃ§ine kopyalanamaz.',
			'errRm'                : '"$1" kaldÄ±rÄ±lamÄ±yor.',
			'errTrash'             : 'Ã‡Ã¶p kutusuna taÅŸÄ±namÄ±yor.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kaynak dosya(lar) kaldÄ±rÄ±lamÄ±yor.',
			'errExtract'           : '"$1" kaynaÄŸÄ±ndan dosyalar Ã§Ä±kartÄ±lamÄ±yor.',
			'errArchive'           : 'ArÅŸiv oluÅŸturulamÄ±yor.',
			'errArcType'           : 'Desteklenmeyen arÅŸiv tÃ¼rÃ¼.',
			'errNoArchive'         : 'Dosya arÅŸiv deÄŸil veya desteklenmeyen arÅŸiv tÃ¼rÃ¼.',
			'errCmdNoSupport'      : 'Sunucu-TarafÄ± bu komutu desteklemiyor.',
			'errReplByChild'       : 'â€œ$1â€� dizini, iÃ§erdiÄŸi bir Ã¶ÄŸe tarafÄ±ndan deÄŸiÅŸtirilemez.',
			'errArcSymlinks'       : 'Sembolik baÄŸlantÄ±larÄ± iÃ§eren arÅŸivlerin aÃ§Ä±lmasÄ± gÃ¼venlik nedeniyle reddedildi.', // edited 24.06.2012
			'errArcMaxSize'        : 'ArÅŸiv dosyalarÄ± izin verilen maksimum boyutu aÅŸtÄ±.',
			'errResize'            : '"$1" yeniden boyutlandÄ±rÄ±lamÄ±yor.',
			'errResizeDegree'      : 'GeÃ§ersiz dÃ¶ndÃ¼rme derecesi.',  // added 7.3.2013
			'errResizeRotate'      : 'Resim dÃ¶ndÃ¼rÃ¼lemiyor.',  // added 7.3.2013
			'errResizeSize'        : 'GeÃ§ersiz resim boyutu.',  // added 7.3.2013
			'errResizeNoChange'    : 'Resim boyutu deÄŸiÅŸtirilemez.',  // added 7.3.2013
			'errUsupportType'      : 'Desteklenmeyen dosya tÃ¼rÃ¼.',
			'errNotUTF8Content'    : 'Dosya "$1" UTF-8 olmadÄ±ÄŸÄ±ndan dÃ¼zenlenemez.',  // added 9.11.2011
			'errNetMount'          : '"$1" baÄŸlanamadÄ±.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Desteklenmeyen protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'BaÄŸlama baÅŸarÄ±sÄ±z oldu.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host gerekli.', // added 18.04.2012
			'errSessionExpires'    : 'Uzun sÃ¼re iÅŸlem yapÄ±lmadÄ±ÄŸÄ±ndan oturumunuz sonlandÄ±.',
			'errCreatingTempDir'   : 'GeÃ§ici dizin oluÅŸturulamÄ±yor: "$1"',
			'errFtpDownloadFile'   : 'Dosya FTP: "$1" adresinden indirilemiyor.',
			'errFtpUploadFile'     : 'Dosya FTP: "$1" adresine yÃ¼klenemiyor.',
			'errFtpMkdir'          : 'FTP: "$1" Ã¼zerinde uzak dizin oluÅŸturulamÄ±yor.',
			'errArchiveExec'       : '"$1" DosyalarÄ±nda arÅŸivlenirken hata oluÅŸtu.',
			'errExtractExec'       : '"$1" DosyalarÄ± arÅŸivden Ã§Ä±kartÄ±lÄ±rken hata oluÅŸtu.',
			'errNetUnMount'        : 'BaÄŸlantÄ± kaldÄ±rÄ±lamÄ±yor.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8\'e dÃ¶nÃ¼ÅŸtÃ¼rÃ¼lemez.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Dizin yÃ¼kleyebilmek iÃ§in daha modern bir tarayÄ±cÄ±ya ihtiyacÄ±nÄ±z var.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" aranÄ±rken zaman aÅŸÄ±mÄ±na uÄŸradÄ±. Arama sonuÃ§larÄ± kÄ±smidir.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Yeniden yetkilendirme gerekiyor.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maksimum seÃ§ilebilir Ã¶ge sayÄ±sÄ± $1 adettir.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ã‡Ã¶p kutusundan geri yÃ¼klenemiyor. Geri yÃ¼kleme notkasÄ± belirlenemiyor.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Bu doya tÃ¼rÃ¼ iÃ§in dÃ¼zenleyici bulunamadÄ±.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Sunucu tarafÄ±nda beklenilmeyen bir hata oluÅŸtu.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" Dizini boÅŸaltÄ±lamÄ±yor.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '"$1" tane daha hata var.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Tek seferde en fazla 1$ dizin oluÅŸturabilirsiniz.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'ArÅŸiv oluÅŸtur',
			'cmdback'      : 'Geri',
			'cmdcopy'      : 'Kopyala',
			'cmdcut'       : 'Kes',
			'cmddownload'  : 'Ä°ndir',
			'cmdduplicate' : 'KopyasÄ±nÄ± oluÅŸtur',
			'cmdedit'      : 'DosyayÄ± dÃ¼zenle',
			'cmdextract'   : 'ArÅŸivden dosyalarÄ± Ã§Ä±kart',
			'cmdforward'   : 'Ä°leri',
			'cmdgetfile'   : 'DosyalarÄ± seÃ§',
			'cmdhelp'      : 'Bu yazÄ±lÄ±m hakkÄ±nda',
			'cmdhome'      : 'KÃ¶k',
			'cmdinfo'      : 'Bilgi gÃ¶ster',
			'cmdmkdir'     : 'Yeni klasÃ¶r',
			'cmdmkdirin'   : 'Yeni KlasÃ¶r / aÃ§', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Yeni dosya',
			'cmdopen'      : 'AÃ§',
			'cmdpaste'     : 'YapÄ±ÅŸtÄ±r',
			'cmdquicklook' : 'Ã–nizleme',
			'cmdreload'    : 'Geri YÃ¼kle',
			'cmdrename'    : 'Yeniden AdlandÄ±r',
			'cmdrm'        : 'Sil',
			'cmdtrash'     : 'Ã‡Ã¶pe at', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Geri yÃ¼kle', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'DosyalarÄ± bul',
			'cmdup'        : 'Ãœst dizine Ã§Ä±k',
			'cmdupload'    : 'DosyalarÄ± yÃ¼kle',
			'cmdview'      : 'GÃ¶rÃ¼ntÃ¼le',
			'cmdresize'    : 'BoyutlandÄ±r & DÃ¶ndÃ¼r',
			'cmdsort'      : 'SÄ±rala',
			'cmdnetmount'  : 'AÄŸ birimi baÄŸla', // added 18.04.2012
			'cmdnetunmount': 'baÄŸlantÄ±yÄ± kes', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Yerlere', // added 28.12.2014
			'cmdchmod'     : 'Mod deÄŸiÅŸtir', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Bir Dizin AÃ§', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'SÃ¼tun geniÅŸliÄŸini sÄ±fÄ±rla', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Tam Ekran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'TaÅŸÄ±', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Dizini boÅŸalt', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Geri al', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Yinele', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Tercihler', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'TÃ¼mÃ¼nÃ¼ seÃ§', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'SeÃ§imi temizle', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'DiÄŸerlerini seÃ§', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Yeni Sekmede aÃ§', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ã–geyi Gizle', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Kapat',
			'btnSave'   : 'Kaydet',
			'btnRm'     : 'KaldÄ±r',
			'btnApply'  : 'Uygula',
			'btnCancel' : 'Ä°ptal',
			'btnNo'     : 'HayÄ±r',
			'btnYes'    : 'Evet',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'BaÄŸla',  // added 18.04.2012
			'btnApprove': 'Git $1 & onayla', // from v2.1 added 26.04.2012
			'btnUnmount': 'BaÄŸlantÄ±yÄ± kes', // from v2.1 added 30.04.2012
			'btnConv'   : 'DÃ¶nÃ¼ÅŸtÃ¼r', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Buraya',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Birim',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Hepsi',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME TÃ¼rÃ¼', // from v2.1 added 22.5.2015
			'btnFileName':'Dosya adÄ±',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Kaydet & Kapat', // from v2.1 added 12.6.2015
			'btnBackup' : 'Yedekle', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Yeniden adlandÄ±r',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Yeniden adlandÄ±r(TÃ¼mÃ¼)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Ã–nceki ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Sonraki ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'FarklÄ± Kaydet', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Dizin AÃ§',
			'ntffile'     : 'Dosya AÃ§',
			'ntfreload'   : 'Dizin iÃ§eriÄŸini yeniden yÃ¼kle',
			'ntfmkdir'    : 'Dizin oluÅŸturuluyor',
			'ntfmkfile'   : 'DosyalarÄ± oluÅŸturma',
			'ntfrm'       : 'Ã–ÄŸeleri sil',
			'ntfcopy'     : 'Ã–ÄŸeleri kopyala',
			'ntfmove'     : 'Ã–ÄŸeleri taÅŸÄ±',
			'ntfprepare'  : 'Varolan Ã¶ÄŸeler kontrol ediliyor',
			'ntfrename'   : 'DosyalarÄ± yeniden adlandÄ±r',
			'ntfupload'   : 'Dosyalar yÃ¼kleniyor',
			'ntfdownload' : 'Dosyalar indiriliyor',
			'ntfsave'     : 'Dosyalar kaydediliyor',
			'ntfarchive'  : 'ArÅŸiv oluÅŸturuluyor',
			'ntfextract'  : 'ArÅŸivden dosyalar Ã§Ä±kartÄ±lÄ±yor',
			'ntfsearch'   : 'Dosyalar aranÄ±yor',
			'ntfresize'   : 'Resimler boyutlandÄ±rÄ±lÄ±yor',
			'ntfsmth'     : 'Ä°ÅŸlem yapÄ±lÄ±yor',
			'ntfloadimg'  : 'Resim yÃ¼kleniyor',
			'ntfnetmount' : 'AÄŸ birimine baÄŸlanÄ±lÄ±yor', // added 18.04.2012
			'ntfnetunmount': 'AÄŸ birimi baÄŸlantÄ±sÄ± kesiliyor', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Resim boyutu alÄ±nÄ±yor', // added 20.05.2013
			'ntfreaddir'  : 'Dizin bilgisi okunuyor', // from v2.1 added 01.07.2013
			'ntfurl'      : 'BaÄŸlantÄ±nÄ±n URL\'si alÄ±nÄ±yor', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Dosya modu deÄŸiÅŸtiriliyor', // from v2.1 added 20.6.2015
			'ntfpreupload': 'YÃ¼klenen dosya ismi doÄŸrulanÄ±yor', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ä°ndirilecek dosya oluÅŸturuluyor', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Dosya yolu bilgileri alÄ±nÄ±yor', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'YÃ¼klenen dosya iÅŸleniyor', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Ã‡Ã¶p kutusuna atma', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ã‡Ã¶p kutusundan geri yÃ¼kle', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Hedef dizin kontrol ediliyor', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Ã–nceki iÅŸlemi geri alma', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ã–nceki geri almayÄ± tekrarlama', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Ä°Ã§eriÄŸi kontrol ediniz', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Ã‡Ã¶p', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Bilinmiyor',
			'Today'       : 'BugÃ¼n',
			'Yesterday'   : 'DÃ¼n',
			'msJan'       : 'Oca',
			'msFeb'       : 'Åžub',
			'msMar'       : 'Mar',
			'msApr'       : 'Nis',
			'msMay'       : 'May',
			'msJun'       : 'Haz',
			'msJul'       : 'Tem',
			'msAug'       : 'AÄŸu',
			'msSep'       : 'Eyl',
			'msOct'       : 'Ekm',
			'msNov'       : 'Kas',
			'msDec'       : 'Ara',
			'January'     : 'Ocak',
			'February'    : 'Åžubat',
			'March'       : 'Mart',
			'April'       : 'Nisan',
			'May'         : 'MayÄ±s',
			'June'        : 'Haziran',
			'July'        : 'Temmuz',
			'August'      : 'AÄŸustos',
			'September'   : 'EylÃ¼l',
			'October'     : 'Ekim',
			'November'    : 'KasÄ±m',
			'December'    : 'AralÄ±k',
			'Sunday'      : 'Pazar',
			'Monday'      : 'Pazartesi',
			'Tuesday'     : 'SalÄ±',
			'Wednesday'   : 'Ã‡arÅŸamba',
			'Thursday'    : 'PerÅŸembe',
			'Friday'      : 'Cuma',
			'Saturday'    : 'Cumartesi',
			'Sun'         : 'Paz',
			'Mon'         : 'Pzt',
			'Tue'         : 'Sal',
			'Wed'         : 'Ã‡ar',
			'Thu'         : 'Per',
			'Fri'         : 'Cum',
			'Sat'         : 'Cmt',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ada gÃ¶re',
			'sortkind'          : 'TÃ¼re gÃ¶re',
			'sortsize'          : 'Boyuta gÃ¶re',
			'sortdate'          : 'Tarihe gÃ¶re',
			'sortFoldersFirst'  : 'Ã–nce dizinler',
			'sortperm'          : 'izinlere gÃ¶re', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'moduna gÃ¶re',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'sahibine gÃ¶re',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'grubuna gÃ¶re',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'AyrÄ±ca aÄŸaÃ§ gÃ¶rÃ¼nÃ¼mÃ¼',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'YeniDosya.txt', // added 10.11.2015
			'untitled folder'   : 'YeniKlasor',   // added 10.11.2015
			'Archive'           : 'YeniArsiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'YeniDosya.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Dosya',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Onay gerekli',
			'confirmRm'       : 'Ã–ÄŸeleri kaldÄ±rmak istediÄŸinden emin misin?<br/>Bu iÅŸlem geri alÄ±namaz!',
			'confirmRepl'     : 'Eski dosya yenisi ile deÄŸiÅŸtirilsin mi?',
			'confirmRest'     : 'Mevcut Ã¶ge Ã§Ã¶p kutusundaki Ã¶geyle deÄŸiÅŸtirilsin mi?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 deÄŸil<br/>UTF-8\'e dÃ¶nÃ¼ÅŸtÃ¼rÃ¼lsÃ¼n mÃ¼?<br/>DÃ¶nÃ¼ÅŸtÃ¼rme sonrasÄ± kaydedebilmek iÃ§in iÃ§eriÄŸin UTF-8 olmasÄ± gerekir.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Bu dosyanÄ±n karakter kodlamasÄ± tespit edilemedi. DÃ¼zenleme iÃ§in geÃ§ici olarak UTF-8\'e dÃ¶nÃ¼ÅŸtÃ¼rÃ¼lmesi gerekir.<br/>LÃ¼tfen bu dosyanÄ±n karakter kodlamasÄ±nÄ± seÃ§in.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'DÃ¼zenlenmiÅŸ iÃ§erik.<br/>DeÄŸiÅŸiklikleri kaydetmek istemiyorsanÄ±z son yapÄ±lanlar kaybolacak.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ã–ÄŸeleri Ã§Ã¶p kutusuna taÅŸÄ±mak istediÄŸinizden emin misiniz?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : '"$1" deÄŸiÅŸtirmek istediÄŸinizden emin misiniz?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'TÃ¼mÃ¼ne uygula',
			'name'            : 'Ä°sim',
			'size'            : 'Boyut',
			'perms'           : 'Yetkiler',
			'modify'          : 'DeÄŸiÅŸtirildi',
			'kind'            : 'TÃ¼r',
			'read'            : 'oku',
			'write'           : 'yaz',
			'noaccess'        : 'eriÅŸim yok',
			'and'             : 've',
			'unknown'         : 'bilinmeyen',
			'selectall'       : 'TÃ¼m Ã¶ÄŸeleri seÃ§',
			'selectfiles'     : 'Ã–ÄŸe(ler)i seÃ§',
			'selectffile'     : 'Ä°lk Ã¶ÄŸeyi seÃ§',
			'selectlfile'     : 'Son Ã¶ÄŸeyi seÃ§',
			'viewlist'        : 'Liste gÃ¶rÃ¼nÃ¼mÃ¼',
			'viewicons'       : 'Simge gÃ¶rÃ¼nÃ¼mÃ¼',
			'viewSmall'       : 'KÃ¼Ã§Ã¼k simgeler', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Orta simgleler', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'BÃ¼yÃ¼k simgleler', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ã‡ok bÃ¼yÃ¼k simgeler', // from v2.1.39 added 22.5.2018
			'places'          : 'Yerler',
			'calc'            : 'Hesapla',
			'path'            : 'Dosya Yolu',
			'aliasfor'        : 'Takma adÄ±',
			'locked'          : 'Kilitli',
			'dim'             : 'Ã–lÃ§Ã¼ler',
			'files'           : 'Dosyalar',
			'folders'         : 'Dizinler',
			'items'           : 'Nesneler',
			'yes'             : 'evet',
			'no'              : 'hayÄ±r',
			'link'            : 'BaÄŸlantÄ±',
			'searcresult'     : 'Arama sonuÃ§larÄ±',
			'selected'        : 'SeÃ§ili Ã¶ÄŸeler',
			'about'           : 'HakkÄ±nda',
			'shortcuts'       : 'KÄ±sayollar',
			'help'            : 'YardÄ±m',
			'webfm'           : 'Web dosyasÄ± yÃ¶neticisi',
			'ver'             : 'SÃ¼rÃ¼m',
			'protocolver'     : 'protokol sÃ¼rÃ¼mÃ¼',
			'homepage'        : 'Proje AnasayfasÄ±',
			'docs'            : 'Belgeler',
			'github'          : 'Github\'ta bizi takip edin',
			'twitter'         : 'Twitter\'da bizi takip edin',
			'facebook'        : 'Facebook\'ta bize katÄ±lÄ±n',
			'team'            : 'TakÄ±m',
			'chiefdev'        : 'geliÅŸtirici ÅŸefi',
			'developer'       : 'geliÅŸtirici',
			'contributor'     : 'iÅŸtirakÃ§i',
			'maintainer'      : 'bakÄ±cÄ±',
			'translator'      : 'tercÃ¼man',
			'icons'           : 'Simgeler',
			'dontforget'      : 've havlunuzu almayÄ± unutmayÄ±n',
			'shortcutsof'     : 'KÄ±sayollar devre dÄ±ÅŸÄ±',
			'dropFiles'       : 'DosyalarÄ± buraya taÅŸÄ±',
			'or'              : 'veya',
			'selectForUpload' : 'YÃ¼klemek iÃ§in dosyalarÄ± seÃ§in',
			'moveFiles'       : 'Ã–ÄŸeleri taÅŸÄ±',
			'copyFiles'       : 'Ã–ÄŸeleri kopyala',
			'restoreFiles'    : 'Ã–ÄŸeleri geri yÃ¼kle', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Yerlerinden sil',
			'aspectRatio'     : 'GÃ¶rÃ¼nÃ¼m oranÄ±',
			'scale'           : 'Ã–lÃ§eklendir',
			'width'           : 'GeniÅŸlik',
			'height'          : 'YÃ¼kseklik',
			'resize'          : 'BoyutlandÄ±r',
			'crop'            : 'KÄ±rp',
			'rotate'          : 'DÃ¶ndÃ¼r',
			'rotate-cw'       : '90 derece saÄŸa dÃ¶ndÃ¼r',
			'rotate-ccw'      : '90 derece sola dÃ¶ndÃ¼r',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'BaÄŸlÄ± (Mount) aÄŸ birimi', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'KapÄ±(Port)', // added 18.04.2012
			'user'                : 'KullanÄ±cÄ±', // added 18.04.2012
			'pass'                : 'Åžifre', // added 18.04.2012
			'confirmUnmount'      : 'BaÄŸlantÄ± kesilsin mi $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'DosyalarÄ± tarayÄ±cÄ±dan yapÄ±ÅŸtÄ±r veya bÄ±rak', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'DosyalarÄ± buraya yapÄ±ÅŸtÄ±r veya bÄ±rak', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodlama', // from v2.1 added 19.12.2014
			'locale'          : 'Yerel',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Hedef: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'GiriÅŸ MIME TÃ¼rÃ¼ne GÃ¶re Arama', // from v2.1 added 22.5.2015
			'owner'           : 'Sahibi', // from v2.1 added 20.6.2015
			'group'           : 'Grup', // from v2.1 added 20.6.2015
			'other'           : 'DiÄŸer', // from v2.1 added 20.6.2015
			'execute'         : 'Ã‡alÄ±ÅŸtÄ±r', // from v2.1 added 20.6.2015
			'perm'            : 'Yetki', // from v2.1 added 20.6.2015
			'mode'            : 'Mod', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Dizin boÅŸ', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Dizin boÅŸ\\Ã–ÄŸe eklemek iÃ§in sÃ¼rÃ¼kleyin', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Dizin boÅŸ\\Ã–ÄŸe eklemek iÃ§in basÄ±lÄ± tutun', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kalite', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Otomatik senkronizasyon',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'YukarÄ± taÅŸÄ±',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL baÄŸlantÄ±sÄ± alÄ±n', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'SeÃ§ili Ã¶ÄŸeler ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Dizin kimliÄŸi', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Ã‡evrimdÄ±ÅŸÄ± eriÅŸime izin ver', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Yeniden kimlik doÄŸrulamasÄ± iÃ§in', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Åžimdi yÃ¼kleniyor...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ã‡oklu dosya aÃ§', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 dosyalarÄ±nÄ± aÃ§maya Ã§alÄ±ÅŸÄ±yorsunuz. TarayÄ±cÄ±da aÃ§mak istediÄŸinizden emin misiniz?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Arama hedefinde eÅŸleÅŸen sonuÃ§ bulunamadÄ±.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Dosya dÃ¼zenleniyor.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 Ã¶ÄŸe seÃ§tiniz.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Panonuzda $1 Ã¶ÄŸeniz var.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Artan arama yalnÄ±zca geÃ§erli gÃ¶rÃ¼nÃ¼mden yapÄ±lÄ±r.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Eski durumuna getir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 tamamlandÄ±', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Konteks menÃ¼sÃ¼', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sayfa Ã§evir', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'KÃ¶k birimler', // from v2.1.16 added 16.9.2016
			'reset'           : 'SÄ±fÄ±rla', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Arkaplan rengi', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Renk seÃ§ici', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Izgara', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Etkin', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Engelli', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'GeÃ§erli gÃ¶rÃ¼nÃ¼mde arama sonucu bulunamadÄ±. Arama sonucunu geniÅŸletmek iÃ§in \\APress [Enter]  yapÄ±n', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'GeÃ§erli gÃ¶rÃ¼nÃ¼mde ilk harf arama sonuÃ§larÄ± boÅŸ.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Metin etiketi', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 dakika kaldÄ±', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'SeÃ§ilen kodlamayla yeniden aÃ§', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'SeÃ§ilen kodlamayla kaydet', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Dizin seÃ§', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Ä°lk arama sayfasÄ±', // from v2.1.23 added 24.3.2017
			'presets'         : 'HazÄ±r ayarlar', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Ã§ok fazla Ã¶ge var Ã§Ã¶p kutusuna atÄ±lamaz.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Metin alanÄ±(TextArea)', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '"$1" dizinini boÅŸalt.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '"$1" dizininde Ã¶ÄŸe yok.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Tercih', // from v2.1.26 added 28.6.2017
			'language'        : 'Dil ayarlarÄ±', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Bu tarayÄ±cÄ±da kayÄ±tlÄ± ayarlarÄ± baÅŸlat', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'AraÃ§ Ã§ubuÄŸu ayarlarÄ±', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 karakter kaldÄ±',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 satÄ±r kaldÄ±.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Toplam', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Kaba dosya boyutu', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fare ile Ã¼zerine gelince diyalog Ã¶ÄŸesi odaklansÄ±n',  // from v2.1.30 added 2.11.2017
			'select'          : 'SeÃ§', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Dosya seÃ§ildiÄŸinde iÅŸleme al', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'GeÃ§en sefer kullanÄ±lan editÃ¶rle aÃ§', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'ZÄ±t seÃ§im', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '$1 seÃ§ilen Ã¶ÄŸeleri $2 gibi yeniden adlandÄ±rmak istediÄŸinizden emin misiniz?</br>Bu geri alÄ±namaz!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'YÄ±ÄŸÄ±n adÄ±nÄ± deÄŸiÅŸtir', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ SayÄ±', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ã–n ek kele', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Son ek ekle', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'UzantÄ±yÄ± deÄŸiÅŸtir', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'SÃ¼tun ayarlarÄ± (Liste gÃ¶rÃ¼nÃ¼mÃ¼)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'TÃ¼m deÄŸiÅŸiklikler hemen arÅŸive yansÄ±tÄ±lacaktÄ±r.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Herhangi bir deÄŸiÅŸiklik, bu birimi kaldÄ±rÄ±lÄ±ncaya kadar yansÄ±tÄ±lmayacaktÄ±r.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'BaÄŸlatÄ±yÄ± kesmek istediÄŸiniz birime baÄŸlÄ± ÅŸu birim(ler)\'in de baÄŸlantÄ±sÄ± kesilecek. BaÄŸlantÄ±yÄ± kesmek istediÄŸinize emin misiniz?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'SeÃ§im Bilgisi', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Dosya imza(hash) algoritmalarÄ±', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ã¶ÄŸelerin bilgisi (SeÃ§im Bilgi Paneli)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ã‡Ä±kmak iÃ§in tekrar basÄ±n.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'AraÃ§ Ã‡ubuÄŸu', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ã‡alÄ±ÅŸma alanÄ±', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Diyalog', // from v2.1.38 added 4.4.2018
			'all'             : 'TÃ¼mÃ¼', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Simge Boyutu (Simge GÃ¶rÃ¼nÃ¼mÃ¼)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Maksimum dÃ¼zenleyici penceresini aÃ§', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'API ile dÃ¶nÃ¼ÅŸÃ¼m ÅŸu anda mevcut olmadÄ±ÄŸÄ±ndan, lÃ¼tfen web sitesinde dÃ¶nÃ¼ÅŸtÃ¼rÃ¼n.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'DÃ¶nÃ¼ÅŸtÃ¼rmeden sonra, dÃ¶nÃ¼ÅŸtÃ¼rÃ¼len dosyayÄ± kaydetmek iÃ§in Ã¶ÄŸe URL\'si veya indirilen bir dosya ile karÅŸÄ±ya yÃ¼klemeniz gerekir.', //from v2.1.40 added 8.7.2018
			'convertOn'       : ' $1 site Ã§evrildi', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Entegrasyonlar', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Bu elFinder aÅŸaÄŸÄ±daki harici hizmetlere entegre edilmiÅŸtir. LÃ¼tfen kullanmadan Ã¶nce kullanÄ±m koÅŸullarÄ±nÄ±, gizlilik politikasÄ±nÄ± vb. Kontrol edin.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Gizli Ã¶geleri aÃ§.', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Gizli Ã¶geleri kapat.', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Gizli Ã¶geleri aÃ§/kapat', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '"Yeni dosya" ile etkinleÅŸtirilecek dosya tÃ¼rleri', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Text dosyasÄ± tipi.', // from v2.1.41 added 7.8.2018
			'add'             : 'Ekle', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'VarsayÄ±lan', // from v2.1.43 added 19.10.2018
			'description'     : 'AÃ§Ä±klama', // from v2.1.43 added 19.10.2018
			'website'         : 'WebsayfasÄ±', // from v2.1.43 added 19.10.2018
			'author'          : 'Yazar', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Lisans', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Bu Ã¶ÄŸe kaydedilemez. DÃ¼zenlemeleri kaybetmemek iÃ§in PC\'nize aktarmanÄ±z gerekir.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'DosyayÄ± seÃ§mek iÃ§in Ã§ift tÄ±klayÄ±n.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Tam ekran modunu kullan', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Bilinmiyor',
			'kindRoot'        : 'Birim KÃ¶k dizini', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dizin',
			'kindSelects'     : 'SeÃ§im', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias (Takma ad)',
			'kindAliasBroken' : 'Bozuk alias',
			// applications
			'kindApp'         : 'Uygulama',
			'kindPostscript'  : 'Postscript dosyasÄ±',
			'kindMsOffice'    : 'Microsoft Office dosyasÄ±',
			'kindMsWord'      : 'Microsoft Word dosyasÄ±',
			'kindMsExcel'     : 'Microsoft Excel dosyasÄ±',
			'kindMsPP'        : 'Microsoft Powerpoint sunumu',
			'kindOO'          : 'Open Office dosyasÄ±',
			'kindAppFlash'    : 'Flash uygulamasÄ±',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Bittorrent dosyasÄ±',
			'kind7z'          : '7z arÅŸivi',
			'kindTAR'         : 'TAR arÅŸivi',
			'kindGZIP'        : 'GZIP arÅŸivi',
			'kindBZIP'        : 'BZIP arÅŸivi',
			'kindXZ'          : 'XZ arÅŸivi',
			'kindZIP'         : 'ZIP arÅŸivi',
			'kindRAR'         : 'RAR arÅŸivi',
			'kindJAR'         : 'Java JAR dosyasÄ±',
			'kindTTF'         : 'True Type fontu',
			'kindOTF'         : 'Open Type fontu',
			'kindRPM'         : 'RPM paketi',
			// fonts
			'kindFont'        : 'Fontu',
			'kindSFNT'        : 'SFNT fontu',
			'kindEOT'         : 'Embedded Open Type fontu',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Metin dosyasÄ±',
			'kindTextPlain'   : 'DÃ¼z metin',
			'kindPHP'         : 'PHP kodu',
			'kindCSS'         : 'CSS dosyasÄ±',
			'kindHTML'        : 'HTML dosyasÄ±',
			'kindJS'          : 'Javascript kodu',
			'kindRTF'         : 'Zengin Metin Belgesi',
			'kindC'           : 'C kodu',
			'kindCHeader'     : 'C baÅŸlÄ±k kodu',
			'kindCPP'         : 'C++ kodu',
			'kindCPPHeader'   : 'C++ baÅŸlÄ±k kodu',
			'kindShell'       : 'Unix shell scripti',
			'kindPython'      : 'Python kodu',
			'kindJava'        : 'Java kodu',
			'kindRuby'        : 'Ruby kodu',
			'kindPerl'        : 'Perl scripti',
			'kindSQL'         : 'SQL kodu',
			'kindXML'         : 'XML dosyasÄ±',
			'kindAWK'         : 'AWK kodu',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML dosyasÄ±',
			'kindMarkdown'    : 'Markdown dosyasÄ±', // added 20.7.2015
			// images
			'kindImage'       : 'Resim',
			'kindBMP'         : 'BMP dosyasÄ±',
			'kindJPEG'        : 'JPEG dosyasÄ±',
			'kindGIF'         : 'GIF dosyasÄ±',
			'kindPNG'         : 'PNG dosyasÄ±',
			'kindTIFF'        : 'TIFF dosyasÄ±',
			'kindTGA'         : 'TGA dosyasÄ±',
			'kindPSD'         : 'Adobe Photoshop dosyasÄ±',
			'kindXBITMAP'     : 'X bitmap dosyasÄ±',
			'kindPXM'         : 'Pixelmator dosyasÄ±',
			// media
			'kindAudio'       : 'Ses ortamÄ±',
			'kindAudioMPEG'   : 'MPEG ses',
			'kindAudioMPEG4'  : 'MPEG-4 ses',
			'kindAudioMIDI'   : 'MIDI ses',
			'kindAudioOGG'    : 'Ogg Vorbis ses',
			'kindAudioWAV'    : 'WAV ses',
			'AudioPlaylist'   : 'MP3 listesi',
			'kindVideo'       : 'Video ortamÄ±',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));
                            includes/File_manager/lib/js/i18n/elfinder.no.js                                                    0000644                 00000037563 15266052774 0015461 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Norwegian translation
 * @author Stian Jacobsen <stian@promonorge.no>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.no = {
		translator : 'Stian Jacobsen &lt;stian@promonorge.no&gt;',
		language   : 'Norwegian BokmÃ¥l',
		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
		direction  : 'ltr',
		messages   : {
			
			/********************************** errors **********************************/
			'error'                : 'Feil',
			'errUnknown'           : 'Ukjent feil.',
			'errUnknownCmd'        : 'Ukjent kommando.',
			'errJqui'              : 'Ugyldig jQuery UI konfigurasjon. Selectable, draggable og droppable komponentene mÃ¥ vÃ¦re inkludert.',
			'errNode'              : 'elFinder pÃ¥krever at DOM Elementer kan opprettes.',
			'errURL'               : 'Ugyldig elFinder konfigurasjon! URL-valget er ikke satt.',
			'errAccess'            : 'Ingen adgang.',
			'errConnect'           : 'Kunne ikke koble til.',
			'errAbort'             : 'Tilkoblingen avbrutt.',
			'errTimeout'           : 'Tilkoblingen tidsavbrudd.',
			'errNotFound'          : 'Backend ble ikke funnet',
			'errResponse'          : 'Ugyldig backend respons.',
			'errConf'              : 'Ugyldig backend konfigurasjon.',
			'errJSON'              : 'PHP JSON modul er ikke installert.',
			'errNoVolumes'         : 'Lesbar volum er ikke tilgjennelig.',
			'errCmdParams'         : 'Ugyldig parameter for kommando "$1".',
			'errDataNotJSON'       : 'Innhold er ikke JSON.',
			'errDataEmpty'         : 'Innholdet er tomt.',
			'errCmdReq'            : 'Backend spÃ¸rringen pÃ¥krever kommando.',
			'errOpen'              : 'Kunne ikke Ã¥pne "$1".',
			'errNotFolder'         : 'Objektet er ikke en mappe.',
			'errNotFile'           : 'Objektet er ikke en fil.',
			'errRead'              : 'Kunne ikke lese "$1".',
			'errWrite'             : 'Kunne ikke skrive til "$1".',
			'errPerm'              : 'Du har ikke rettigheter.',
			'errLocked'            : '"$1" er lÃ¥st og kan ikke flyttes, slettes eller endres',
			'errExists'            : 'Filen "$1" finnes allerede.',
			'errInvName'           : 'Ugyldig filnavn.',
			'errFolderNotFound'    : 'Mappen finnes ikke.',
			'errFileNotFound'      : 'Filen finnes ikke.',
			'errTrgFolderNotFound' : 'MÃ¥lmappen "$1" ble ikke funnet.',
			'errPopup'             : 'Nettleseren din blokkerte et pop-up vindu. For Ã¥ Ã¥pne filen mÃ¥ du aktivere pop-up i din nettlesers innstillinger.',
			'errMkdir'             : 'Kunne ikke opprette mappen "$1".',
			'errMkfile'            : 'Kunne ikke opprette filen "$1".',
			'errRename'            : 'Kunne ikke gi nytt navn til "$1".',
			'errCopyFrom'          : 'Kopiere filer fra "$1" er ikke tillatt.',
			'errCopyTo'            : 'Kopiere filer til "$1" er ikke tillatt.',
			'errUpload'            : 'Feil under opplasting.',
			'errUploadFile'        : 'Kunne ikke laste opp "$1".',
			'errUploadNoFiles'     : 'Ingen filer funnet til opplasting.',
			'errUploadTotalSize'   : 'Innholdet overgÃ¥r maksimum tillatt stÃ¸rrelse.',
			'errUploadFileSize'    : 'Filen vergÃ¥r maksimum tillatt stÃ¸rrelse.',
			'errUploadMime'        : 'Filtypen ikke tillatt.',
			'errUploadTransfer'    : '"$1" overfÃ¸rings feil.',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Kunne ikke lagre "$1".',
			'errCopy'              : 'Kunne ikke kopiere "$1".',
			'errMove'              : 'Kunne ikke flytte "$1".',
			'errCopyInItself'      : 'Kunne ikke kopiere "$1" til seg selv.',
			'errRm'                : 'Kunne ikke slette "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Kunne ikke pakke ut filer fra "$1".',
			'errArchive'           : 'Kunne ikke opprette arkiv.',
			'errArcType'           : 'akriv-typen er ikke stÃ¸ttet.',
			'errNoArchive'         : 'Filen er ikke et arkiv eller et arkiv som ikke er stÃ¸ttet.',
			'errCmdNoSupport'      : 'Backend stÃ¸tter ikke denne kommandoen.',
			'errReplByChild'       : 'The folder â€œ$1â€� canâ€™t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			
			/******************************* commands names ********************************/
			'cmdarchive'   : 'Opprett arkiv',
			'cmdback'      : 'Tilbake',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klipp ut',
			'cmddownload'  : 'Last ned',
			'cmdduplicate' : 'Dupliser',
			'cmdedit'      : 'Rediger fil',
			'cmdextract'   : 'Pakk ut filer fra arkiv',
			'cmdforward'   : 'Frem',
			'cmdgetfile'   : 'Velg filer',
			'cmdhelp'      : 'Om',
			'cmdhome'      : 'Hjem',
			'cmdinfo'      : 'Vis info',
			'cmdmkdir'     : 'Ny mappe',
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Ã…pne',
			'cmdpaste'     : 'Lim inn',
			'cmdquicklook' : 'ForhÃ¥ndsvis',
			'cmdreload'    : 'Last inn pÃ¥ nytt',
			'cmdrename'    : 'Gi nytt navn',
			'cmdrm'        : 'Slett',
			'cmdsearch'    : 'Find filer',
			'cmdup'        : 'Opp et nivÃ¥',
			'cmdupload'    : 'Last opp filer',
			'cmdview'      : 'Vis',
			'cmdresize'    : 'Resize & Rotate',
			'cmdsort'      : 'Sort',
			'cmdnetmount'  : 'Mount network volume',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'Lukk',
			'btnSave'   : 'Lagre',
			'btnRm'     : 'Slett',
			'btnApply'  : 'Apply',
			'btnCancel' : 'Avbryt',
			'btnNo'     : 'Nei',
			'btnYes'    : 'Ja',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Ã…pne mappe',
			'ntffile'     : 'Ã…pne fil',
			'ntfreload'   : 'Last inn mappen pÃ¥ nytt',
			'ntfmkdir'    : 'Oppretter mappe',
			'ntfmkfile'   : 'Oppretter filer',
			'ntfrm'       : 'Sletter filer',
			'ntfcopy'     : 'Kopierer filer',
			'ntfmove'     : 'Flytter filer',
			'ntfprepare'  : 'GjÃ¸r klar til kopiering av filer',
			'ntfrename'   : 'Gir nytt navn til filer',
			'ntfupload'   : 'Laster opp filer',
			'ntfdownload' : 'Laster ned filer',
			'ntfsave'     : 'Lagrer filer',
			'ntfarchive'  : 'Oppretter arkiv',
			'ntfextract'  : 'Pakker ut filer fra arkiv',
			'ntfsearch'   : 'SÃ¸ker i filer',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'GjÃ¸r noe... >_<',
			'ntfloadimg'  : 'Loading image',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			
			/************************************ dates **********************************/
			'dateUnknown' : 'Ukjent',
			'Today'       : 'I dag',
			'Yesterday'   : 'I gÃ¥r',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Des',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun', 
			'Mon'         : 'Mon', 
			'Tue'         : 'Tue', 
			'Wed'         : 'Wed', 
			'Thu'         : 'Thu', 
			'Fri'         : 'Fri', 
			'Sat'         : 'Sat',

			/******************************** sort variants ********************************/
			'sortname'          : 'by name', 
			'sortkind'          : 'by kind', 
			'sortsize'          : 'by size',
			'sortdate'          : 'by date',
			'sortFoldersFirst'  : 'Folders first',
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Bekreftelse nÃ¸dvendig',
			'confirmRm'       : 'Er du sikker pÃ¥ at du Ã¸nsker Ã¥ slette filene?',
			'confirmRepl'     : 'Erstatt fil?',
			'apllyAll'        : 'Apply to all',
			'name'            : 'Navn',
			'size'            : 'StÃ¸rrelse',
			'perms'           : 'Rettigheter',
			'modify'          : 'Endret',
			'kind'            : 'Type',
			'read'            : 'les',
			'write'           : 'skriv',
			'noaccess'        : 'ingen adgang',
			'and'             : 'og',
			'unknown'         : 'ukjent',
			'selectall'       : 'Velg alle filene',
			'selectfiles'     : 'Velg fil(er)',
			'selectffile'     : 'Velg fÃ¸rste fil',
			'selectlfile'     : 'Velg siste fil',
			'viewlist'        : 'Listevisning',
			'viewicons'       : 'Ikoner',
			'places'          : 'OmrÃ¥der',
			'calc'            : 'Beregn', 
			'path'            : 'Bane',
			'aliasfor'        : 'Alias for',
			'locked'          : 'LÃ¥st',
			'dim'             : 'StÃ¸rrelser',
			'files'           : 'Filer',
			'folders'         : 'Mapper',
			'items'           : 'objekter',
			'yes'             : 'ja',
			'no'              : 'nei',
			'link'            : 'Link',
			'searcresult'     : 'SÃ¸keresultater',  
			'selected'        : 'valgte filer',
			'about'           : 'Om',
			'shortcuts'       : 'Snarveier',
			'help'            : 'Hjelp',
			'webfm'           : 'Web-filbehandler',
			'ver'             : 'Versjon',
			'protocolver'     : 'protokol versjon',
			'homepage'        : 'Project home',
			'docs'            : 'dokumentasjon',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'Team',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Ikoner',
			'dontforget'      : 'and don\'t forget to bring a towel',
			'shortcutsof'     : 'Snarveier avslÃ¥tt',
			'dropFiles'       : 'Slipp filer her',
			'or'              : 'eller',
			'selectForUpload' : 'Velg filer til opplasting',
			'moveFiles'       : 'Flytt filer',
			'copyFiles'       : 'Kopier filer',
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Scale',
			'width'           : 'Width',
			'height'          : 'Height',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			
			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ukjent',
			'kindFolder'      : 'Mappe',
			'kindAlias'       : 'Snarvei',
			'kindAliasBroken' : 'Ugyldig snarvei',
			// applications
			'kindApp'         : 'Programfil',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portabelt dokument (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR ar',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Tekst dokument',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP kilde',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Rikt Tekst Format',
			'kindC'           : 'C kilde',
			'kindCHeader'     : 'C header kilde',
			'kindCPP'         : 'C++ kilde',
			'kindCPPHeader'   : 'C++ header kilde',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python kilde',
			'kindJava'        : 'Java kilde',
			'kindRuby'        : 'Ruby kilde',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL skilde',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK kilde',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			// Images
			'kindImage'       : 'Bilde',
			'kindBMP'         : 'BMP bilde',
			'kindJPEG'        : 'JPEG bilde',
			'kindGIF'         : 'GIF bilde',
			'kindPNG'         : 'PNG bilde',
			'kindTIFF'        : 'TIFF bilde',
			'kindTGA'         : 'TGA bilde',
			'kindPSD'         : 'Adobe Photoshop bilde',
			'kindXBITMAP'     : 'X bitmap bilde',
			'kindPXM'         : 'Pixelmator bilde',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 spilleliste',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));
                                                                                                                                             includes/File_manager/lib/js/i18n/elfinder.he.js                                                    0000644                 00000045443 15266052775 0015436 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * ×¢×‘×¨×™×ª translation
 * @author Yaron Shahrabani <sh.yaron@gmail.com>
 * @version 2015-11-02
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.he = {
		translator : 'Yaron Shahrabani <sh.yaron@gmail.com>',
		language   : '×¢×‘×¨×™×ª',
		direction  : 'rtl',
		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
		messages   : {

			/********************************** errors **********************************/
			'error'                : '×©×’×™×�×”',
			'errUnknown'           : '×©×’×™×�×” ×‘×œ×ª×™ ×ž×•×›×¨×ª.',
			'errUnknownCmd'        : '×¤×§×•×“×” ×‘×œ×ª×™ ×ž×•×›×¨×ª.',
			'errJqui'              : '×ª×¦×•×¨×ª ×”Ö¾jQuery UI ×©×’×•×™×”. ×™×© ×œ×›×œ×•×œ ×¨×›×™×‘×™×� ×”× ×™×ª× ×™×� ×œ×‘×—×™×¨×”, ×’×¨×™×¨×” ×•×”×©×œ×›×”.',
			'errNode'              : 'elFinder ×“×•×¨×© ×™×¦×™×¨×” ×©×œ ×¨×›×™×‘ DOM.',
			'errURL'               : '×”×ª×¦×•×¨×” ×©×œ elFinder ×©×’×•×™×”! ×�×¤×©×¨×•×ª ×”×›×ª×•×‘×ª (URL) ×œ×� ×”×•×’×“×¨×”.',
			'errAccess'            : '×”×’×™×©×” × ×“×—×™×ª.',
			'errConnect'           : '×œ×� × ×™×ª×Ÿ ×œ×”×ª×—×‘×¨ ×œ×ž× ×’× ×•×Ÿ.',
			'errAbort'             : '×”×—×™×‘×•×¨ ×‘×•×˜×œ.',
			'errTimeout'           : '×–×ž×Ÿ ×”×—×™×‘×•×¨ ×¤×’.',
			'errNotFound'          : '×œ×� × ×ž×¦×� ×ž× ×’× ×•×Ÿ.',
			'errResponse'          : '×ª×’×•×‘×ª ×”×ž× ×’× ×•×Ÿ ×©×’×•×™×”.',
			'errConf'              : '×ª×¦×•×¨×ª ×”×ž× ×’× ×•×Ÿ ×©×’×•×™×”.',
			'errJSON'              : '×”×ž×•×“×•×œ PHP JSON ×œ×� ×ž×•×ª×§×Ÿ.',
			'errNoVolumes'         : '×�×™×Ÿ ×›×•× × ×™×� ×–×ž×™× ×™×� ×œ×§×¨×™×�×”.',
			'errCmdParams'         : '×¤×¨×ž×˜×¨×™×� ×©×’×•×™×™×� ×œ×¤×§×•×“×” â€ž$1â€œ.',
			'errDataNotJSON'       : '×”× ×ª×•× ×™×� ×�×™× ×� JSON.',
			'errDataEmpty'         : '×”× ×ª×•× ×™×� ×¨×™×§×™×�.',
			'errCmdReq'            : '×‘×§×©×” ×œ×ž× ×’× ×•×Ÿ ×“×•×¨×©×ª ×©×� ×¤×§×•×“×”.',
			'errOpen'              : '×œ×� × ×™×ª×Ÿ ×œ×¤×ª×•×— ×�×ª â€ž$1â€œ.',
			'errNotFolder'         : '×”×¤×¨×™×˜ ×�×™× ×• ×ª×™×§×™×™×”.',
			'errNotFile'           : '×”×¤×¨×™×˜ ×�×™× ×• ×§×•×‘×¥.',
			'errRead'              : '×œ×� × ×™×ª×Ÿ ×œ×§×¨×•×� ×�×ª â€ž$1â€œ.',
			'errWrite'             : '×œ×� × ×™×ª×Ÿ ×œ×›×ª×•×‘ ×�×œ â€ž$1â€œ.',
			'errPerm'              : '×”×”×¨×©×�×” × ×“×—×ª×”.',
			'errLocked'            : 'â€ž$1â€œ × ×¢×•×œ ×•×�×™×Ÿ ×�×¤×©×¨×•×ª ×œ×©× ×•×ª ×�×ª ×©×ž×•, ×œ×”×¢×‘×™×¨×• ×�×• ×œ×”×¡×™×¨×•.',
			'errExists'            : '×§×•×‘×¥ ×‘×©×� â€ž$1â€œ ×›×‘×¨ ×§×™×™×�.',
			'errInvName'           : '×©×� ×”×§×•×‘×¥ ×©×’×•×™.',
			'errFolderNotFound'    : '×”×ª×™×§×™×™×” ×œ×� × ×ž×¦×�×”.',
			'errFileNotFound'      : '×”×§×•×‘×¥ ×œ×� × ×ž×¦×�.',
			'errTrgFolderNotFound' : '×ª×™×§×™×™×ª ×”×™×¢×“ â€ž$1â€œ ×œ×� × ×ž×¦×�×”.',
			'errPopup'             : '×”×“×¤×“×¤×Ÿ ×ž× ×¢ ×¤×ª×™×—×ª ×—×œ×•×Ÿ ×§×•×‘×¥. ×›×“×™ ×œ×¤×ª×•×— ×§×•×‘×¥ ×™×© ×œ×�×¤×©×¨ ×–×�×ª ×‘×”×’×“×¨×•×ª ×”×“×¤×“×¤×Ÿ.',
			'errMkdir'             : '×œ×� × ×™×ª×Ÿ ×œ×™×¦×•×¨ ×�×ª ×”×ª×™×§×™×™×” â€ž$1â€œ.',
			'errMkfile'            : '×œ×� × ×™×ª×Ÿ ×œ×™×¦×•×¨ ×�×ª ×”×§×•×‘×¥ â€ž$1â€œ.',
			'errRename'            : '×œ×� × ×™×ª×Ÿ ×œ×©× ×•×ª ×�×ª ×”×©×� ×©×œ â€ž$1â€œ.',
			'errCopyFrom'          : '×”×¢×ª×§×ª ×§×‘×¦×™×� ×ž×”×›×•× ×Ÿ â€ž$1â€œ ×�×™× ×” ×ž×�×•×¤×©×¨×ª.',
			'errCopyTo'            : '×”×¢×ª×§×ª ×§×‘×¦×™×� ×�×œ ×”×›×•× ×Ÿ â€ž$1â€œ ×�×™× ×” ×ž×�×•×¤×©×¨×ª.',
			'errUpload'            : '×©×’×™×�×ª ×”×¢×œ×�×”.',  // old name - errUploadCommon
			'errUploadFile'        : '×œ×� × ×™×ª×Ÿ ×œ×”×¢×œ×•×ª ×�×ª â€ž$1â€œ.', // old name - errUpload
			'errUploadNoFiles'     : '×œ×� × ×ž×¦×�×• ×§×‘×¦×™×� ×œ×”×¢×œ×�×”.',
			'errUploadTotalSize'   : '×”× ×ª×•× ×™×� ×—×•×¨×’×™×� ×ž×”×’×•×“×œ ×”×ž×¨×‘×™ ×”×ž×•×ª×¨.', // old name - errMaxSize
			'errUploadFileSize'    : '×”×§×•×‘×¥ ×—×•×¨×’ ×ž×”×’×•×“×œ ×”×ž×¨×‘×™ ×”×ž×•×ª×¨.', //  old name - errFileMaxSize
			'errUploadMime'        : '×¡×•×’ ×”×§×•×‘×¥ ×�×™× ×• ×ž×•×¨×©×”.',
			'errUploadTransfer'    : '×©×’×™×�×ª ×”×¢×‘×¨×” â€ž$1â€œ.',
			'errNotReplace'        : '×”×¤×¨×™×˜ â€ž$1â€œ ×›×‘×¨ ×§×™×™×� ×‘×ž×™×§×•×� ×–×” ×•×�×™ ×�×¤×©×¨ ×œ×”×—×œ×™×¤×• ×‘×¤×¨×™×˜ ×ž×¡×•×’ ×�×—×¨.', // new
			'errReplace'           : '×œ×� × ×™×ª×Ÿ ×œ×”×—×œ×™×£ ×�×ª â€ž$1â€œ.',
			'errSave'              : '×œ×� × ×™×ª×Ÿ ×œ×©×ž×•×¨ ×�×ª â€ž$1â€œ.',
			'errCopy'              : '×œ×� × ×™×ª×Ÿ ×œ×”×¢×ª×™×§ ×�×ª â€ž$1â€œ.',
			'errMove'              : '×œ×� × ×™×ª×Ÿ ×œ×”×¢×‘×™×¨ ×�×ª â€ž$1â€œ.',
			'errCopyInItself'      : '×œ×� × ×™×ª×Ÿ ×œ×”×¢×ª×™×§ ×�×ª â€ž$1â€œ ×œ×ª×•×š ×¢×¦×ž×•.',
			'errRm'                : '×œ×� × ×™×ª×Ÿ ×œ×”×¡×™×¨ ×�×ª â€ž$1â€œ.',
			'errRmSrc'             : '×œ×� × ×™×ª×Ÿ ×œ×”×¡×™×¨ ×�×ª ×§×•×‘×¦×™ ×”×ž×§×•×¨.',
			'errExtract'           : '×œ×� × ×™×ª×Ÿ ×œ×—×œ×¥ ×§×‘×¦×™×� ×ž×”×�×¨×›×™×•×Ÿ â€ž$1â€œ.',
			'errArchive'           : '×œ×� × ×™×ª×Ÿ ×œ×™×¦×•×¨ ×�×¨×›×™×•×Ÿ.',
			'errArcType'           : '×¡×•×’ ×”×�×¨×›×™×•×Ÿ ×�×™× ×• × ×ª×ž×š.',
			'errNoArchive'         : '×”×§×•×‘×¥ ×�×™× ×• ×�×¨×›×™×•×Ÿ ×�×• ×©×¡×•×’ ×”×§×•×‘×¥ ×©×œ×• ×�×™× ×• × ×ª×ž×š.',
			'errCmdNoSupport'      : '×”×ž× ×’× ×•×Ÿ ×�×™× ×• ×ª×•×ž×š ×‘×¤×§×•×“×” ×–×•.',
			'errReplByChild'       : '×œ×� × ×™×ª×Ÿ ×œ×”×—×œ×™×£ ×�×ª ×”×ª×™×§×™×™×” â€ž$1â€œ ×‘×¤×¨×™×˜ ×ž×ª×•×›×”.',
			'errArcSymlinks'       : '×ž×˜×¢×ž×™ ×�×‘×˜×—×” ×œ×� × ×™×ª×Ÿ ×œ×—×œ×¥ ×�×¨×›×™×•× ×™×� ×©×ž×›×™×œ×™×� ×§×™×©×•×¨×™×� ×¡×™×ž×‘×•×œ×™×™×� ×�×• ×§×‘×¦×™×� ×¢×� ×©×ž×•×ª ×‘×œ×ª×™ ×ž×•×¨×©×™×�.', // edited 24.06.2012
			'errArcMaxSize'        : '×”×�×¨×›×™×•×Ÿ ×—×•×¨×’ ×ž×”×’×•×“×œ ×”×ž×¨×‘×™ ×”×ž×•×ª×¨.',
			'errResize'            : '×œ×� × ×™×ª×Ÿ ×œ×©× ×•×ª ×�×ª ×”×’×•×“×œ ×©×œ â€ž$1â€œ.',
			'errResizeDegree'      : '×ž×¢×œ×•×ª ×”×”×™×¤×•×š ×©×’×•×™×•×ª.',  // added 7.3.2013
			'errResizeRotate'      : '×œ×� × ×™×ª×Ÿ ×œ×”×¤×•×š ×�×ª ×”×ª×ž×•× ×”.',  // added 7.3.2013
			'errResizeSize'        : '×’×•×“×œ ×”×ª×ž×•× ×” ×©×’×•×™.',  // added 7.3.2013
			'errResizeNoChange'    : '×’×•×“×œ ×”×ª×ž×•× ×” ×œ×� ×”×©×ª× ×”.',  // added 7.3.2013
			'errUsupportType'      : '×¡×•×’ ×”×§×•×‘×¥ ×�×™× ×• × ×ª×ž×š.',
			'errNotUTF8Content'    : '×”×§×•×‘×¥ â€ž$1â€œ ×”×•×� ×œ×� ×‘×ª×¡×“×™×¨ UTF-8 ×•×œ×� × ×™×ª×Ÿ ×œ×¢×¨×•×š ×�×•×ª×•.',  // added 9.11.2011
			'errNetMount'          : '×œ×� × ×™×ª×Ÿ ×œ×¢×’×Ÿ ×�×ª â€ž$1â€œ.', // added 17.04.2012
			'errNetMountNoDriver'  : '×¤×¨×•×˜×•×§×•×œ ×‘×œ×ª×™ × ×ª×ž×š.',     // added 17.04.2012
			'errNetMountFailed'    : '×”×¢×™×’×•×Ÿ × ×›×©×œ.',         // added 17.04.2012
			'errNetMountHostReq'   : '× ×“×¨×© ×ž×�×¨×—.', // added 18.04.2012
			'errSessionExpires'    : '×”×”×¤×¢×œ×” ×©×œ×š ×¤×’×” ×¢×§×‘ ×—×•×¡×¨ ×¤×¢×™×œ×•×ª.',
			'errCreatingTempDir'   : '×œ×� × ×™×ª×Ÿ ×œ×™×¦×•×¨ ×ª×™×§×™×™×” ×–×ž× ×™×ª: â€ž$1â€œ',
			'errFtpDownloadFile'   : '×œ×� × ×™×ª×Ÿ ×œ×”×•×¨×™×“ ×§×•×‘×¥ ×žÖ¾ FTP: â€ž$1â€œ',
			'errFtpUploadFile'     : '×œ×� × ×™×ª×Ÿ ×œ×”×¢×œ×•×ª ×§×•×‘×¥ ×œÖ¾FTP: â€ž$1â€œ',
			'errFtpMkdir'          : '×œ×� × ×™×ª×Ÿ ×œ×™×¦×•×¨ ×ª×™×§×™×™×” ×ž×¨×•×—×§×ª ×‘Ö¾FTP: â€ž$1â€œ',
			'errArchiveExec'       : '×©×ž×™×¨×ª ×”×§×‘×¦×™×� ×‘×�×¨×›×™×•×Ÿ × ×›×©×œ×”: â€ž$1â€œ',
			'errExtractExec'       : '×—×™×œ×•×¥ ×§×‘×¦×™×� × ×›×©×œ: â€ž$1â€œ',

			/******************************* commands names ********************************/
			'cmdarchive'   : '×™×¦×™×¨×ª ×�×¨×›×™×•×Ÿ',
			'cmdback'      : '×—×–×¨×”',
			'cmdcopy'      : '×”×¢×ª×§×”',
			'cmdcut'       : '×’×–×™×¨×”',
			'cmddownload'  : '×”×•×¨×“×”',
			'cmdduplicate' : '×©×›×¤×•×œ',
			'cmdedit'      : '×¢×¨×™×›×ª ×§×•×‘×¥',
			'cmdextract'   : '×—×™×œ×•×¥ ×§×‘×¦×™×� ×ž×�×¨×›×™×•×Ÿ',
			'cmdforward'   : '×”×¢×‘×¨×”',
			'cmdgetfile'   : '×‘×—×™×¨×ª ×§×‘×¦×™×�',
			'cmdhelp'      : '×¤×¨×˜×™×� ×¢×œ ×”×ª×›× ×™×ª ×”×–×•',
			'cmdhome'      : '×‘×™×ª',
			'cmdinfo'      : '×§×‘×œ×ª ×ž×™×“×¢',
			'cmdmkdir'     : '×ª×™×§×™×™×” ×—×“×©×”',
			'cmdmkfile'    : '×§×•×‘×¥ ×—×“×©',
			'cmdopen'      : '×¤×ª×™×—×”',
			'cmdpaste'     : '×”×“×‘×§×”',
			'cmdquicklook' : '×ª×¦×•×’×” ×ž×§×“×™×ž×”',
			'cmdreload'    : '×¨×¢× ×•×Ÿ',
			'cmdrename'    : '×©×™× ×•×™ ×©×�',
			'cmdrm'        : '×ž×—×™×§×”',
			'cmdsearch'    : '×—×™×¤×•×© ×§×‘×¦×™×�',
			'cmdup'        : '×ž×¢×‘×¨ ×œ×ª×™×§×™×™×ª ×”×”×•×¨×”',
			'cmdupload'    : '×”×¢×œ×�×ª ×§×‘×¦×™×�',
			'cmdview'      : '×ª×¦×•×’×”',
			'cmdresize'    : '×©×™× ×•×™ ×’×•×“×œ ×•×”×™×¤×•×š',
			'cmdsort'      : '×ž×™×•×Ÿ',
			'cmdnetmount'  : '×¢×™×’×•×Ÿ ×›×•× ×Ÿ ×¨×©×ª', // added 18.04.2012

			/*********************************** buttons ***********************************/
			'btnClose'  : '×¡×’×™×¨×”',
			'btnSave'   : '×©×ž×™×¨×”',
			'btnRm'     : '×”×¡×¨×”',
			'btnApply'  : '×”×—×œ×”',
			'btnCancel' : '×‘×™×˜×•×œ',
			'btnNo'     : '×œ×�',
			'btnYes'    : '×›×Ÿ',
			'btnDiscard': 'Discard changes',
			'btnMount'  : '×¢×™×’×•×Ÿ',  // added 18.04.2012

			/******************************** notifications ********************************/
			'ntfopen'     : '×¤×ª×™×—×ª ×ª×™×§×™×™×”',
			'ntffile'     : '×¤×ª×™×—×ª ×§×•×‘×¥',
			'ntfreload'   : '×¨×¢× ×•×Ÿ ×ª×•×›×Ÿ ×”×ª×™×§×™×™×”',
			'ntfmkdir'    : '×ª×™×§×™×™×” × ×•×¦×¨×ª',
			'ntfmkfile'   : '×§×‘×¦×™×� × ×•×¦×¨×™×�',
			'ntfrm'       : '×§×‘×¦×™×� × ×ž×—×§×™×�',
			'ntfcopy'     : '×§×‘×¦×™×� ×ž×•×¢×ª×§×™×�',
			'ntfmove'     : '×§×‘×¦×™×� ×ž×•×¢×‘×¨×™×�',
			'ntfprepare'  : '×”×¢×ª×§×ª ×§×‘×¦×™×� ×‘×”×›× ×”',
			'ntfrename'   : '×©×ž×•×ª ×§×‘×¦×™×� ×ž×©×ª× ×™×�',
			'ntfupload'   : '×§×‘×¦×™×� × ×©×œ×—×™×�',
			'ntfdownload' : '×§×‘×¦×™×� ×ž×ª×§×‘×œ×™×�',
			'ntfsave'     : '×©×ž×™×¨×ª ×§×‘×¦×™×�',
			'ntfarchive'  : '×�×¨×›×™×•×Ÿ × ×•×¦×¨',
			'ntfextract'  : '×ž×—×•×œ×¦×™×� ×§×‘×¦×™×� ×ž×�×¨×›×™×•×Ÿ',
			'ntfsearch'   : '×§×‘×¦×™×� ×‘×—×™×¤×•×©',
			'ntfresize'   : '×’×•×“×œ ×§×‘×¦×™×� ×ž×©×ª× ×”',
			'ntfsmth'     : '×ž×ª×‘×¦×¢×ª ×¤×¢×•×œ×”',
			'ntfloadimg'  : '× ×˜×¢× ×ª ×ª×ž×•× ×”',
			'ntfnetmount' : '×›×•× ×Ÿ ×¨×©×ª ×ž×¢×•×’×Ÿ', // added 18.04.2012
			'ntfdim'      : '×ž×ž×“×™ ×ª×ž×•× ×” ×ž×ª×§×‘×œ×™×�', // added 20.05.2013

			/************************************ dates **********************************/
			'dateUnknown' : '×œ×� ×™×“×•×¢',
			'Today'       : '×”×™×•×�',
			'Yesterday'   : '×ž×—×¨',
			'msJan'       : '×™× ×•×³',
			'msFeb'       : '×¤×‘×¨×³',
			'msMar'       : '×ž×¨×¥',
			'msApr'       : '×�×¤×¨×³',
			'msMay'       : '×ž×�×™',
			'msJun'       : '×™×•× ×³',
			'msJul'       : '×™×•×œ×³',
			'msAug'       : '×�×•×’×³',
			'msSep'       : '×¡×¤×˜×³',
			'msOct'       : '×�×•×§×³',
			'msNov'       : '× ×•×‘×³',
			'msDec'       : '×“×¦×ž×³',
			'January'     : '×™× ×•×�×¨',
			'February'    : '×¤×‘×¨×•×�×¨',
			'March'       : '×ž×¨×¥',
			'April'       : '×�×¤×¨×™×œ',
			'May'         : '×ž×�×™',
			'June'        : '×™×•× ×™',
			'July'        : '×™×•×œ×™',
			'August'      : '×�×•×’×•×¡×˜',
			'September'   : '×¡×¤×˜×ž×‘×¨',
			'October'     : '×�×•×§×˜×•×‘×¨',
			'November'    : '× ×•×‘×ž×‘×¨',
			'December'    : '×“×¦×ž×‘×¨',
			'Sunday'      : '×™×•×� ×¨×�×©×•×Ÿ',
			'Monday'      : '×™×•×� ×©× ×™',
			'Tuesday'     : '×™×•×� ×©×œ×™×©×™',
			'Wednesday'   : '×™×•×� ×¨×‘×™×¢×™',
			'Thursday'    : '×™×•×� ×—×ž×™×©×™',
			'Friday'      : '×™×•×� ×©×™×©×™',
			'Saturday'    : '×©×‘×ª',
			'Sun'         : '×�×³',
			'Mon'         : '×‘×³',
			'Tue'         : '×’×³',
			'Wed'         : '×“×³',
			'Thu'         : '×”',
			'Fri'         : '×•×³',
			'Sat'         : '×©×³',

			/******************************** sort variants ********************************/
			'sortname'          : '×œ×¤×™ ×©×�',
			'sortkind'          : '×œ×¤×™ ×¡×•×’',
			'sortsize'          : '×œ×¤×™ ×’×•×“×œ',
			'sortdate'          : '×œ×¤×™ ×ª×�×¨×™×š',
			'sortFoldersFirst'  : '×ª×™×§×™×•×ª ×ª×—×™×œ×”',

			/********************************** messages **********************************/
			'confirmReq'      : '× ×“×¨×© ×�×™×©×•×¨',
			'confirmRm'       : '×œ×”×¡×™×¨ ×�×ª ×”×§×‘×¦×™×�?<br/>×¤×¢×•×œ×” ×–×• ×‘×œ×ª×™ ×”×¤×™×›×”!',
			'confirmRepl'     : '×œ×”×—×œ×™×£ ×§×•×‘×¥ ×™×©×Ÿ ×‘×§×•×‘×¥ ×—×“×©?',
			'apllyAll'        : '×œ×”×—×™×œ ×¢×œ ×”×›×•×œ',
			'name'            : '×©×�',
			'size'            : '×’×•×“×œ',
			'perms'           : '×”×¨×©×�×•×ª',
			'modify'          : '×©×™× ×•×™',
			'kind'            : '×¡×•×’',
			'read'            : '×§×¨×™×�×”',
			'write'           : '×›×ª×™×‘×”',
			'noaccess'        : '×�×™×Ÿ ×’×™×©×”',
			'and'             : '×•×’×�',
			'unknown'         : '×œ×� ×™×“×•×¢',
			'selectall'       : '×‘×—×™×¨×ª ×›×œ ×”×§×‘×¦×™×�',
			'selectfiles'     : '×‘×—×™×¨×ª ×§×•×‘×¥ ×�×—×“ ×•×ž×¢×œ×”',
			'selectffile'     : '×‘×—×™×¨×ª ×”×§×•×‘×¥ ×”×¨×�×©×•×Ÿ',
			'selectlfile'     : '×‘×—×™×¨×ª ×”×§×•×‘×¥ ×”×�×—×¨×•×Ÿ',
			'viewlist'        : '×ª×¦×•×’×ª ×¨×©×™×ž×”',
			'viewicons'       : '×ª×¦×•×’×ª ×¡×ž×œ×™×�',
			'places'          : '×ž×™×§×•×ž×™×�',
			'calc'            : '×—×™×©×•×‘',
			'path'            : '× ×ª×™×‘',
			'aliasfor'        : '×›×™× ×•×™ ×¢×‘×•×¨',
			'locked'          : '× ×¢×•×œ',
			'dim'             : '×ž×ž×“×™×�',
			'files'           : '×§×‘×¦×™×�',
			'folders'         : '×ª×™×§×™×•×ª',
			'items'           : '×¤×¨×™×˜×™×�',
			'yes'             : '×›×Ÿ',
			'no'              : '×œ×�',
			'link'            : '×§×™×©×•×¨',
			'searcresult'     : '×ª×•×¦×�×•×ª ×—×™×¤×•×©',
			'selected'        : '×§×‘×¦×™×� × ×‘×—×¨×™×�',
			'about'           : '×¢×œ ×�×•×“×•×ª',
			'shortcuts'       : '×§×™×¦×•×¨×™ ×“×¨×š',
			'help'            : '×¢×–×¨×”',
			'webfm'           : '×ž× ×”×œ ×§×‘×¦×™×� ×‘×“×¤×“×¤×Ÿ',
			'ver'             : '×’×¨×¡×”',
			'protocolver'     : '×’×¨×¡×ª ×¤×¨×•×˜×•×§×•×œ',
			'homepage'        : '×“×£ ×”×‘×™×ª ×©×œ ×”×ž×™×–×�',
			'docs'            : '×ª×™×¢×•×“',
			'github'          : '×¤×™×œ×•×’ ×¢×•×ª×§ ×‘Ö¾Github',
			'twitter'         : '×œ×¢×§×•×‘ ×�×—×¨×™× ×• ×‘×˜×•×•×™×˜×¨',
			'facebook'        : '×œ×”×¦×˜×¨×£ ×�×œ×™× ×• ×‘×¤×™×™×¡×‘×•×§',
			'team'            : '×¦×•×•×ª',
			'chiefdev'        : '×ž×¤×ª×— ×¨×�×©×™',
			'developer'       : '×ž×ª×›× ×ª',
			'contributor'     : '×ª×•×¨×�',
			'maintainer'      : '×ž×ª×—×–×§',
			'translator'      : '×ž×ª×¨×’×�',
			'icons'           : '×¡×ž×œ×™×�',
			'dontforget'      : '×œ×� ×œ×©×›×•×— ×œ×§×—×ª ×�×ª ×”×ž×’×‘×ª ×©×œ×š',
			'shortcutsof'     : '×§×™×¦×•×¨×™ ×”×“×¨×š ×ž× ×•×˜×¨×œ×™×�',
			'dropFiles'       : '× ×™×ª×Ÿ ×œ×”×©×œ×™×š ×�×ª ×”×§×‘×¦×™×� ×œ×›×�×Ÿ',
			'or'              : '×�×•',
			'selectForUpload' : '×œ×‘×—×•×¨ ×§×‘×¦×™×� ×œ×”×¢×œ×�×”',
			'moveFiles'       : '×”×¢×‘×¨×ª ×§×‘×¦×™×�',
			'copyFiles'       : '×”×¢×ª×§×ª ×§×‘×¦×™×�',
			'rmFromPlaces'    : '×”×¡×¨×” ×ž×ž×™×§×•×ž×™×�',
			'aspectRatio'     : '×™×—×¡ ×ª×¦×•×’×”',
			'scale'           : '×ž×ª×™×—×”',
			'width'           : '×¨×•×—×‘',
			'height'          : '×’×•×‘×”',
			'resize'          : '×©×™× ×•×™ ×”×’×•×“×œ',
			'crop'            : '×—×™×ª×•×š',
			'rotate'          : '×”×™×¤×•×š',
			'rotate-cw'       : '×”×™×¤×•×š ×‘Ö¾90 ×ž×¢×œ×•×ª × ×’×“ ×”×©×¢×•×Ÿ',
			'rotate-ccw'      : '×”×™×¤×•×š ×‘Ö¾90 ×ž×¢×œ×•×ª ×¢×� ×”×©×¢×•×Ÿ CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : '×¢×™×’×•×Ÿ ×›×•× ×Ÿ ×¨×©×ª', // added 18.04.2012
			'protocol'            : '×¤×¨×•×˜×•×§×•×œ', // added 18.04.2012
			'host'                : '×ž×�×¨×—', // added 18.04.2012
			'port'                : '×¤×ª×—×”', // added 18.04.2012
			'user'                : '×ž×©×ª×ž×©', // added 18.04.2012
			'pass'                : '×¡×¡×ž×”', // added 18.04.2012

			/********************************** mimetypes **********************************/
			'kindUnknown'     : '×‘×œ×ª×™ ×™×“×•×¢',
			'kindFolder'      : '×ª×™×§×™×™×”',
			'kindAlias'       : '×›×™× ×•×™',
			'kindAliasBroken' : '×›×™× ×•×™ ×©×‘×•×¨',
			// applications
			'kindApp'         : '×™×™×©×•×�',
			'kindPostscript'  : '×ž×¡×ž×š Postscript',
			'kindMsOffice'    : '×ž×¡×ž×š Microsoft Office',
			'kindMsWord'      : '×ž×¡×ž×š Microsoft Word',
			'kindMsExcel'     : '×ž×¡×ž×š Microsoft Excel',
			'kindMsPP'        : '×ž×¦×’×ª Microsoft Powerpoint',
			'kindOO'          : '×ž×¡×ž×š Open Office',
			'kindAppFlash'    : '×™×™×©×•×� Flash',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : '×§×•×‘×¥ Bittorrent',
			'kind7z'          : '×�×¨×›×™×•×Ÿ 7z',
			'kindTAR'         : '×�×¨×›×™×•×Ÿ TAR',
			'kindGZIP'        : '×�×¨×›×™×•×Ÿ GZIP',
			'kindBZIP'        : '×�×¨×›×™×•×Ÿ BZIP',
			'kindXZ'          : '×�×¨×›×™×•×Ÿ XZ',
			'kindZIP'         : '×�×¨×›×™×•×Ÿ ZIP',
			'kindRAR'         : '×�×¨×›×™×•×Ÿ RAR',
			'kindJAR'         : '×§×•×‘×¥ JAR ×©×œ Java',
			'kindTTF'         : '×’×•×¤×Ÿ True Type',
			'kindOTF'         : '×’×•×¤×Ÿ Open Type',
			'kindRPM'         : '×—×‘×™×œ×ª RPM',
			// fonts
			'kindFont'        : '×’×•×¤×Ÿ',
			'kindSFNT'        : '×’×•×¤×Ÿ SFNT',
			'kindEOT'         : '×’×•×¤×Ÿ Embedded Open Type',
			'kindWOFF'        : '×’×•×¤×Ÿ Web Open Font Format',
			'kindWOFF2'       : '×’×•×¤×Ÿ Web Open Font Format 2',
			// texts
			'kindText'        : '×ž×¡×ž×š ×˜×§×¡×˜',
			'kindTextPlain'   : '×˜×§×¡×˜ ×¤×©×•×˜',
			'kindPHP'         : '×ž×§×•×¨ PHP',
			'kindCSS'         : '×’×™×œ×™×•×Ÿ ×¡×’× ×•×Ÿ ×ž×“×•×¨×’',
			'kindHTML'        : '×ž×¡×ž×š HTML',
			'kindJS'          : '×ž×§×•×¨ Javascript',
			'kindRTF'         : '×ª×‘× ×™×ª ×˜×§×¡×˜ ×¢×©×™×¨',
			'kindC'           : '×ž×§×•×¨ C',
			'kindCHeader'     : '×ž×§×•×¨ ×›×•×ª×¨×ª C',
			'kindCPP'         : '×ž×§×•×¨ C++',
			'kindCPPHeader'   : '×ž×§×•×¨ ×›×•×ª×¨×ª C++',
			'kindShell'       : '×ª×¡×¨×™×˜ ×ž×¢×˜×¤×ª ×™×•× ×™×§×¡',
			'kindPython'      : '×ž×§×•×¨ Python',
			'kindJava'        : '×ž×§×•×¨ Java',
			'kindRuby'        : '×ž×§×•×¨ Ruby',
			'kindPerl'        : '×ª×¡×¨×™×˜ Perl',
			'kindSQL'         : '×ž×§×•×¨ SQL',
			'kindXML'         : '×ž×§×•×¨ XML',
			'kindAWK'         : '×ž×§×•×¨ AWK',
			'kindCSV'         : '×¢×¨×›×™×� ×ž×•×¤×¨×“×™×� ×‘×¤×¡×™×§×™×�',
			'kindDOCBOOK'     : '×ž×¡×ž×šDocbook XML',
			// images
			'kindImage'       : '×ª×ž×•× ×”',
			'kindBMP'         : '×ª×ž×•× ×ª BMP',
			'kindJPEG'        : '×ª×ž×•× ×ª JPEG',
			'kindGIF'         : '×ª×ž×•× ×ª GIF',
			'kindPNG'         : '×ª×ž×•× ×ª PNG',
			'kindTIFF'        : '×ª×ž×•× ×ª TIFF',
			'kindTGA'         : '×ª×ž×•× ×ª TGA',
			'kindPSD'         : '×ª×ž×•× ×ª Adobe Photoshop',
			'kindXBITMAP'     : '×ª×ž×•× ×ª ×ž×¤×ª ×¡×™×‘×™×•×ª X',
			'kindPXM'         : '×ª×ž×•× ×ª Pixelmator',
			// media
			'kindAudio'       : '×ž×“×™×” ×ž×¡×•×’ ×©×ž×¢',
			'kindAudioMPEG'   : '×©×ž×¢ MPEG',
			'kindAudioMPEG4'  : '×©×ž×¢ MPEG-4',
			'kindAudioMIDI'   : '×©×ž×¢ MIDI',
			'kindAudioOGG'    : '×©×ž×¢ Ogg Vorbis',
			'kindAudioWAV'    : '×©×ž×¢ WAV',
			'AudioPlaylist'   : '×¨×©×™×ž×ª × ×’×™× ×” MP3',
			'kindVideo'       : '×ž×“×™×” ×ž×¡×•×’ ×•×™×“×�×•',
			'kindVideoDV'     : '×¡×¨×˜×•×Ÿ DV',
			'kindVideoMPEG'   : '×¡×¨×˜×•×Ÿ MPEG',
			'kindVideoMPEG4'  : '×¡×¨×˜×•×Ÿ MPEG-4',
			'kindVideoAVI'    : '×¡×¨×˜×•×Ÿ AVI',
			'kindVideoMOV'    : '×¡×¨×˜×•×Ÿ Quick Time',
			'kindVideoWM'     : '×¡×¨×˜×•×Ÿ Windows Media',
			'kindVideoFlash'  : '×¡×¨×˜×•×Ÿ Flash',
			'kindVideoMKV'    : '×¡×¨×˜×•×Ÿ Matroska',
			'kindVideoOGG'    : '×¡×¨×˜×•×Ÿ Ogg'
		}
	};
}));

                                                                                                                                                                                                                             includes/File_manager/lib/js/i18n/elfinder.pt_BR.js                                                 0000644                 00000104010 15266052776 0016033 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * PortuguÃªs translation
 * @author Leandro Carvalho <contato@leandrowebdev.net>
 * @author Wesley Osorio<wesleyfosorio@hotmail.com>
 * @author Fernando H. Bandeira <fernando.bandeira94@gmail.com>
 * @author Gustavo Brito <britopereiragustavo@gmail.com>
 * @version 2019-10-22
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.pt_BR = {
		translator : 'Leandro Carvalho &lt;contato@leandrowebdev.net&gt;, Wesley Osorio&lt;wesleyfosorio@hotmail.com&gt;, Fernando H. Bandeira &lt;fernando.bandeira94@gmail.com&gt;, Gustavo Brito &lt;britopereiragustavo@gmail.com&gt;',
		language   : 'PortuguÃªs',
		direction  : 'ltr',
		dateFormat : 'd M Y H:i', // will show like: 22 Out 2019 11:34
		fancyDateFormat : '$1 H:i', // will show like: Hoje 11:34
		nonameDateFormat : 'ymd-His', // noname upload will show like: 191022-113433
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Erro',
			'errUnknown'           : 'Erro desconhecido.',
			'errUnknownCmd'        : 'Comando desconhecido.',
			'errJqui'              : 'ConfiguraÃ§Ã£o invÃ¡lida do JQuery UI. Verifique se os componentes selectable, draggable e droppable estÃ£o incluÃ­dos.',
			'errNode'              : 'elFinder requer um elemento DOM para ser criado.',
			'errURL'               : 'ConfiguraÃ§Ã£o invÃ¡lida do elFinder! VocÃª deve setar a opÃ§Ã£o da URL.',
			'errAccess'            : 'Acesso negado.',
			'errConnect'           : 'Incapaz de conectar ao backend.',
			'errAbort'             : 'ConexÃ£o abortada.',
			'errTimeout'           : 'Tempo de conexÃ£o excedido',
			'errNotFound'          : 'Backend nÃ£o encontrado.',
			'errResponse'          : 'Resposta invÃ¡lida do backend.',
			'errConf'              : 'ConfiguraÃ§Ã£o invÃ¡lida do backend.',
			'errJSON'              : 'MÃ³dulo PHP JSON nÃ£o estÃ¡ instalado.',
			'errNoVolumes'         : 'NÃ£o existe nenhum volume legÃ­vel disponivel.',
			'errCmdParams'         : 'ParÃ¢metro invÃ¡lido para o comando "$1".',
			'errDataNotJSON'       : 'Dados nÃ£o estÃ£o no formato JSON.',
			'errDataEmpty'         : 'Dados vazios.',
			'errCmdReq'            : 'RequisiÃ§Ã£o do Backend requer nome de comando.',
			'errOpen'              : 'Incapaz de abrir "$1".',
			'errNotFolder'         : 'Objeto nÃ£o Ã© uma pasta.',
			'errNotFile'           : 'Objeto nÃ£o Ã© um arquivo.',
			'errRead'              : 'Incapaz de ler "$1".',
			'errWrite'             : 'Incapaz de escrever em "$1".',
			'errPerm'              : 'PermissÃ£o negada.',
			'errLocked'            : '"$1" estÃ¡ bloqueado e nÃ£o pode ser renomeado, movido ou removido.',
			'errExists'            : 'O nome do arquivo "$1" jÃ¡ existe neste local.',
			'errInvName'           : 'Nome do arquivo invÃ¡lido.',
			'errInvDirname'        : 'Nome da pasta invÃ¡lida.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Pasta nÃ£o encontrada.',
			'errFileNotFound'      : 'Arquivo nÃ£o encontrado.',
			'errTrgFolderNotFound' : 'Pasta de destino "$1" nÃ£o encontrada.',
			'errPopup'             : 'O seu navegador estÃ¡ bloqueando popup\'s. Para abrir o arquivo, altere esta opÃ§Ã£o no seu Navegador.',
			'errMkdir'             : 'Incapaz de criar a pasta "$1".',
			'errMkfile'            : 'Incapaz de criar o arquivo "$1".',
			'errRename'            : 'Incapaz de renomear "$1".',
			'errCopyFrom'          : 'Copia dos arquivos do volume "$1" nÃ£o permitida.',
			'errCopyTo'            : 'Copia dos arquivos para o volume "$1" nÃ£o permitida.',
			'errMkOutLink'         : 'Incapaz de criar um link fora da unidade raiz.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erro no upload.',  // old name - errUploadCommon
			'errUploadFile'        : 'NÃ£o foi possÃ­vel fazer o upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'NÃ£o foi encontrado nenhum arquivo para upload.',
			'errUploadTotalSize'   : 'Os dados excedem o tamanho mÃ¡ximo permitido.', // old name - errMaxSize
			'errUploadFileSize'    : 'Arquivo excede o tamanho mÃ¡ximo permitido.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Tipo de arquivo nÃ£o permitido.',
			'errUploadTransfer'    : '"$1" erro na transferÃªncia.',
			'errUploadTemp'        : 'Incapaz de criar um arquivo temporÃ¡rio para upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objeto "$1" jÃ¡ existe neste local e nÃ£o pode ser substituÃ­do por um objeto com outro tipo.', // new
			'errReplace'           : 'Incapaz de substituir "$1".',
			'errSave'              : 'Incapaz de salvar "$1".',
			'errCopy'              : 'Incapaz de copiar "$1".',
			'errMove'              : 'Incapaz de mover "$1".',
			'errCopyInItself'      : 'Incapaz de copiar "$1" nele mesmo.',
			'errRm'                : 'Incapaz de remover "$1".',
			'errTrash'             : 'Incapaz de deletar.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Incapaz de remover o(s) arquivo(s) fonte.',
			'errExtract'           : 'Incapaz de extrair os arquivos de "$1".',
			'errArchive'           : 'Incapaz de criar o arquivo.',
			'errArcType'           : 'Tipo de arquivo nÃ£o suportado.',
			'errNoArchive'         : 'Arquivo invÃ¡lido ou Ã© de um tipo nÃ£o suportado.',
			'errCmdNoSupport'      : 'Backend nÃ£o suporta este comando.',
			'errReplByChild'       : 'A pasta â€œ$1â€� nÃ£o pode ser substituÃ­da por um item que contÃ©m.',
			'errArcSymlinks'       : 'Por razÃµes de seguranÃ§a, negada a permissÃ£o para descompactar arquivos que contenham links ou arquivos com nomes nÃ£o permitidos.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arquivo excede o tamanho mÃ¡ximo permitido.',
			'errResize'            : 'Incapaz de redimensionar "$1".',
			'errResizeDegree'      : 'Grau de rotaÃ§Ã£o invÃ¡lido.',  // added 7.3.2013
			'errResizeRotate'      : 'Incapaz de rotacionar a imagem.',  // added 7.3.2013
			'errResizeSize'        : 'Tamanho invÃ¡lido de imagem.',  // added 7.3.2013
			'errResizeNoChange'    : 'Tamanho da imagem nÃ£o alterado.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo de arquivo nÃ£o suportado.',
			'errNotUTF8Content'    : 'Arquivo "$1" nÃ£o estÃ¡ em UTF-8 e nÃ£o pode ser editado.',  // added 9.11.2011
			'errNetMount'          : 'Incapaz de montar montagem "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocolo nÃ£o suportado.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montagem falhou.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Servidor requerido.', // added 18.04.2012
			'errSessionExpires'    : 'Sua sessÃ£o expirou por inatividade.',
			'errCreatingTempDir'   : 'NÃ£o foi possÃ­vel criar um diretÃ³rio temporÃ¡rio: "$1"',
			'errFtpDownloadFile'   : 'NÃ£o foi possÃ­vel fazer o download do arquivo do FTP: "$1"',
			'errFtpUploadFile'     : 'NÃ£o foi possÃ­vel fazer o upload do arquivo para o FTP: "$1"',
			'errFtpMkdir'          : 'NÃ£o foi possÃ­vel criar um diretÃ³rio remoto no FTP: "$1"',
			'errArchiveExec'       : 'Erro ao arquivar os arquivos: "$1"',
			'errExtractExec'       : 'Erro na extraÃ§Ã£o dos arquivos: "$1"',
			'errNetUnMount'        : 'Incapaz de desmontar', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'NÃ£o conversivel para UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Tente utilizar o Google Chrome, se vocÃª deseja enviar uma pasta.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Tempo limite atingido para a busca "$1". O resultado da pesquisa Ã© parcial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-autorizaÃ§Ã£o Ã© necessÃ¡ria.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'O nÃºmero mÃ¡ximo de itens selecionÃ¡veis â€‹â€‹Ã© $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'NÃ£o foi possÃ­vel restaurar a partir do lixo. NÃ£o Ã© possÃ­vel identificar o destino da restauraÃ§Ã£o.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor nÃ£o encontrado para este tipo de arquivo.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ocorreu um erro no lado do servidor.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'NÃ£o foi possÃ­vel esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Existem mais $1 erros.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Criar arquivo',
			'cmdback'      : 'Voltar',
			'cmdcopy'      : 'Copiar',
			'cmdcut'       : 'Cortar',
			'cmddownload'  : 'Baixar',
			'cmdduplicate' : 'Duplicar',
			'cmdedit'      : 'Editar arquivo',
			'cmdextract'   : 'Extrair arquivo de ficheiros',
			'cmdforward'   : 'AvanÃ§ar',
			'cmdgetfile'   : 'Selecionar arquivos',
			'cmdhelp'      : 'Sobre este software',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Propriedades',
			'cmdmkdir'     : 'Nova pasta',
			'cmdmkdirin'   : 'Em uma nova pasta', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Novo arquivo',
			'cmdopen'      : 'Abrir',
			'cmdpaste'     : 'Colar',
			'cmdquicklook' : 'PrÃ©-vizualizaÃ§Ã£o',
			'cmdreload'    : 'Recarregar',
			'cmdrename'    : 'Renomear',
			'cmdrm'        : 'Deletar',
			'cmdtrash'     : 'Mover para a lixeira', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurar', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Achar arquivos',
			'cmdup'        : 'Ir para o diretÃ³rio pai',
			'cmdupload'    : 'Fazer upload de arquivo',
			'cmdview'      : 'Vizualizar',
			'cmdresize'    : 'Redimencionar & Rotacionar',
			'cmdsort'      : 'Ordenar',
			'cmdnetmount'  : 'Montar unidade de rede', // added 18.04.2012
			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Para locais', // added 28.12.2014
			'cmdchmod'     : 'Alterar permissÃ£o', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Abrir pasta', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Redefinir largura da coluna', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Tela cheia', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mover', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Esvaziar a pasta', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Desfazer', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refazer', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'PreferÃªncias', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Selecionar tudo', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Selecionar nenhum', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverter seleÃ§Ã£o', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Abrir em nova janela', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ocultar (preferÃªncia)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fechar',
			'btnSave'   : 'Salvar',
			'btnRm'     : 'Remover',
			'btnApply'  : 'Aplicar',
			'btnCancel' : 'Cancelar',
			'btnNo'     : 'NÃ£o',
			'btnYes'    : 'Sim',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Montar',  // added 18.04.2012
			'btnApprove': 'VÃ¡ para $1 & aprove', // from v2.1 added 26.04.2012
			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aqui',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nome do arquivo',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Salvar & Fechar', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renomear',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renomear (tudo)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'PrÃ³ximo ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Salvar como', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Abrir pasta',
			'ntffile'     : 'Abrir arquivo',
			'ntfreload'   : 'Recarregar conteudo da pasta',
			'ntfmkdir'    : 'Criar diretÃ³rio',
			'ntfmkfile'   : 'Criar arquivos',
			'ntfrm'       : 'Deletar arquivos',
			'ntfcopy'     : 'Copiar arquivos',
			'ntfmove'     : 'Mover arquivos',
			'ntfprepare'  : 'Preparando para copiar arquivos',
			'ntfrename'   : 'Renomear arquivos',
			'ntfupload'   : 'Subindo os arquivos',
			'ntfdownload' : 'Baixando os arquivos',
			'ntfsave'     : 'Salvando os arquivos',
			'ntfarchive'  : 'Criando os arquivos',
			'ntfextract'  : 'Extraindo arquivos compactados',
			'ntfsearch'   : 'Procurando arquivos',
			'ntfresize'   : 'Redimensionando imagens',
			'ntfsmth'     : 'Fazendo alguma coisa',
			'ntfloadimg'  : 'Carregando Imagem',
			'ntfnetmount' : 'Montando unidade de rede', // added 18.04.2012
			'ntfnetunmount': 'Desmontando unidade de rede', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Adquirindo dimensÃ£o da imagem', // added 20.05.2013
			'ntfreaddir'  : 'Lendo informaÃ§Ãµes da pasta', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Recebendo URL do link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Alterando permissÃµes do arquivo', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verificando o nome do arquivo de upload', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Criando um arquivo para download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obtendo informaÃ§Ãµes do caminho', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processando o arquivo carregado', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Movendo para a lixeira', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurando da lixeira', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Verificando a pasta de destino', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Desfazendo a operaÃ§Ã£o anterior', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refazendo o desfazer anterior', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Verificando conteÃºdos', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Lixo', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Desconhecido',
			'Today'       : 'Hoje',
			'Yesterday'   : 'Ontem',
			'msJan'       : 'Jan',
			'msFeb'       : 'Fev',
			'msMar'       : 'Mar',
			'msApr'       : 'Abr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Ago',
			'msSep'       : 'Set',
			'msOct'       : 'Out',
			'msNov'       : 'Nov',
			'msDec'       : 'Dez',
			'January'     : 'Janeiro',
			'February'    : 'Fevereiro',
			'March'       : 'MarÃ§o',
			'April'       : 'Abril',
			'May'         : 'Maio',
			'June'        : 'Junho',
			'July'        : 'Julho',
			'August'      : 'Agosto',
			'September'   : 'Setembro',
			'October'     : 'Outubro',
			'November'    : 'Novembro',
			'December'    : 'Dezembro',
			'Sunday'      : 'Domingo',
			'Monday'      : 'Segunda-feira',
			'Tuesday'     : 'TerÃ§a-feira',
			'Wednesday'   : 'Quarta-feira',
			'Thursday'    : 'Quinta-feira',
			'Friday'      : 'Sexta-feira',
			'Saturday'    : 'SÃ¡bado',
			'Sun'         : 'Dom',
			'Mon'         : 'Seg',
			'Tue'         : 'Ter',
			'Wed'         : 'Qua',
			'Thu'         : 'Qui',
			'Fri'         : 'Sex',
			'Sat'         : 'SÃ¡b',

			/******************************** sort variants ********************************/
			'sortname'          : 'por nome',
			'sortkind'          : 'por tipo',
			'sortsize'          : 'por tam.',
			'sortdate'          : 'por data',
			'sortFoldersFirst'  : 'Pastas primeiro',
			'sortperm'          : 'Com permissÃ£o', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Por modo',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Por proprietÃ¡rio',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Por grupo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Vizualizar em Ã¡rvore',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NovoArquivo.txt', // added 10.11.2015
			'untitled folder'   : 'NovaPasta',   // added 10.11.2015
			'Archive'           : 'NovoArquivo',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NovoArquivo.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Arquivo',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'ConfirmaÃ§Ã£o requerida',
			'confirmRm'       : 'VocÃª tem certeza que deseja remover os arquivos?<br />Isto nÃ£o pode ser desfeito!',
			'confirmRepl'     : 'Substituir arquivo velho com este novo?',
			'confirmRest'     : 'Substituir o item existente pelo item na lixeira?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'NÃ£o estÃ¡ em UTF-8<br/>Converter para UTF-8?<br/>ConteÃºdo se torna UTF-8 apÃ³s salvar as conversÃµes.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'NÃ£o foi possÃ­vel detectar a codificaÃ§Ã£o de caracteres deste arquivo. Ele precisa ser convertido temporariamente em UTF-8 para ediÃ§Ã£o. Por favor, selecione a codificaÃ§Ã£o de caracteres deste arquivo.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Isto foi modificado.<br/>VocÃª vai perder seu trabalho caso nÃ£o salve as mudanÃ§as.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Tem certeza de que deseja mover itens para a lixeira?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Tem certeza de que deseja mover itens para "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Aplicar a todos',
			'name'            : 'Nome',
			'size'            : 'Tamanho',
			'perms'           : 'PermissÃµes',
			'modify'          : 'Modificado',
			'kind'            : 'Tipo',
			'read'            : 'Ler',
			'write'           : 'Escrever',
			'noaccess'        : 'InacessÃ­vel',
			'and'             : 'e',
			'unknown'         : 'Desconhecido',
			'selectall'       : 'Selecionar todos arquivos',
			'selectfiles'     : 'Selecionar arquivo(s)',
			'selectffile'     : 'Selecionar primeiro arquivo',
			'selectlfile'     : 'Slecionar Ãºltimo arquivo',
			'viewlist'        : 'Exibir como lista',
			'viewicons'       : 'Exibir como Ã­cones',
			'viewSmall'       : 'Ã�cones pequenos', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ã�cones mÃ©dios', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ã�cones grandes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ã�cones gigantes', // from v2.1.39 added 22.5.2018
			'places'          : 'Lugares',
			'calc'            : 'Calcular',
			'path'            : 'Caminho',
			'aliasfor'        : 'Alias para',
			'locked'          : 'Bloqueado',
			'dim'             : 'DimesÃµes',
			'files'           : 'Arquivos',
			'folders'         : 'Pastas',
			'items'           : 'Itens',
			'yes'             : 'sim',
			'no'              : 'nÃ£o',
			'link'            : 'Link',
			'searcresult'     : 'Resultados da pesquisa',
			'selected'        : 'itens selecionados',
			'about'           : 'Sobre',
			'shortcuts'       : 'Atalhos',
			'help'            : 'Ajuda',
			'webfm'           : 'Gerenciador de arquivos web',
			'ver'             : 'VersÃ£o',
			'protocolver'     : 'VersÃ£o do protocolo',
			'homepage'        : 'Home do projeto',
			'docs'            : 'DocumentaÃ§Ã£o',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Siga-nos no twitter',
			'facebook'        : 'Junte-se a nÃ³s no Facebook',
			'team'            : 'Time',
			'chiefdev'        : 'Desenvolvedor chefe',
			'developer'       : 'Desenvolvedor',
			'contributor'     : 'Contribuinte',
			'maintainer'      : 'Mantenedor',
			'translator'      : 'Tradutor',
			'icons'           : 'Ã�cones',
			'dontforget'      : 'e nÃ£o se esqueÃ§a de levar a sua toalha',
			'shortcutsof'     : 'Atalhos desabilitados',
			'dropFiles'       : 'Solte os arquivos aqui',
			'or'              : 'ou',
			'selectForUpload' : 'Selecione arquivos para upload',
			'moveFiles'       : 'Mover arquivos',
			'copyFiles'       : 'Copiar arquivos',
			'restoreFiles'    : 'Restaurar itens', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remover de Lugares',
			'aspectRatio'     : 'Manter aspecto',
			'scale'           : 'Tamanho',
			'width'           : 'Largura',
			'height'          : 'Altura',
			'resize'          : 'Redimencionar',
			'crop'            : 'Cortar',
			'rotate'          : 'Rotacionar',
			'rotate-cw'       : 'Girar 90 graus CW',
			'rotate-ccw'      : 'Girar 90 graus CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Montar Unidade de rede', // added 18.04.2012
			'protocol'            : 'Protocolo', // added 18.04.2012
			'host'                : 'Servidor', // added 18.04.2012
			'port'                : 'Porta', // added 18.04.2012
			'user'                : 'UsuÃ¡rio', // added 18.04.2012
			'pass'                : 'Senha', // added 18.04.2012
			'confirmUnmount'      : 'Deseja desmontar $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Soltar ou colar arquivos do navegador', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Solte ou cole arquivos aqui', // from v2.1 added 07.04.2014
			'encoding'        : 'CodificaÃ§Ã£o', // from v2.1 added 19.12.2014
			'locale'          : 'Local',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Alvo: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Perquisar por input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Dono', // from v2.1 added 20.6.2015
			'group'           : 'Grupo', // from v2.1 added 20.6.2015
			'other'           : 'Outro', // from v2.1 added 20.6.2015
			'execute'         : 'Executar', // from v2.1 added 20.6.2015
			'perm'            : 'PermissÃ£o', // from v2.1 added 20.6.2015
			'mode'            : 'Modo', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Pasta vazia', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Pasta vazia\\A Arraste itens para os adicionar', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Pasta vazia\\A De um toque longo para adicionar itens', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualidade', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sincronizaÃ§Ã£o',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mover para cima',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obter link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Itens selecionados ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID da pasta', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permitir acesso offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Se autenticar novamente', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Carregando...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Abrir mÃºltiplos arquivos', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'VocÃª estÃ¡ tentando abrir os arquivos $1. Tem certeza de que deseja abrir no navegador?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Os resultados da pesquisa estÃ£o vazios no destino da pesquisa.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Arquivo sendo editado.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Voce selecionou $1 itens.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'VocÃª tem $1 itens na Ã¡rea de transferÃªncia.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'A pesquisa incremental Ã© apenas da visualizaÃ§Ã£o atual.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Restabelecer', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completo', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Virar pÃ¡gina', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'RaÃ­zes de volume', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetar', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Cor de fundo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Seletor de cores', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grade 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ativado', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Desativado', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Os resultados da pesquisa estÃ£o vazios na exibiÃ§Ã£o atual.\\APressione [Enter] para expandir o alvo da pesquisa.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Os resultados da pesquisa da primeira letra estÃ£o vazios na exibiÃ§Ã£o atual.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Texto do rÃ³tulo', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minutos restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reabrir com a codificaÃ§Ã£o selecionada', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Salvar com a codificaÃ§Ã£o selecionada', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Selecione a pasta', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Buscar primeira letra', // from v2.1.23 added 24.3.2017
			'presets'         : 'PredefiniÃ§Ãµes', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'SÃ£o muitos itens, portanto nÃ£o podem ser jogados no lixo.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'NÃ£o hÃ¡ itens em uma pasta "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'PreferÃªncia', // from v2.1.26 added 28.6.2017
			'language'        : 'LÃ­ngua', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicialize as configuraÃ§Ãµes salvas neste navegador', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Barra de ferramentas', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caracteres restantes.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Somar', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Tamanho aproximado do arquivo', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focar no elemento do diÃ¡logo com o mouse por cima',  // from v2.1.30 added 2.11.2017
			'select'          : 'Selecione', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'AÃ§Ã£o ao selecionar arquivo', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Abrir com o editor usado pela Ãºltima vez', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverter seleÃ§Ã£o', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Tem certeza de que deseja renomear $1 itens selecionados como $2?<br/>Isto nÃ£o poderÃ¡ ser desfeito!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renomear Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ NÃºmero', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Adicionar prefixo', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Adicionar sufixo', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Alterar extensÃ£o', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ConfiguraÃ§Ãµes de colunas (exibiÃ§Ã£o em lista)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Todas as alteraÃ§Ãµes serÃ£o refletidas imediatamente no arquivo.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Quaisquer alteraÃ§Ãµes nÃ£o serÃ£o refletidas atÃ© desmontar este volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'O(s) seguinte(s) volume(s) montado neste volume tambÃ©m desmontado. VocÃª tem certeza que quer desmontÃ¡-lo(s)?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'InformaÃ§Ãµes da seleÃ§Ã£o', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmos para mostrar o hash do arquivo', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Itens de informaÃ§Ã£o (painel InformaÃ§Ãµes de seleÃ§Ã£o)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Pressione novamente para sair.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra de ferramentas', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ã�rea de trabalho', // from v2.1.38 added 4.4.2018
			'dialog'          : 'DiÃ¡logo', // from v2.1.38 added 4.4.2018
			'all'             : 'Tudo', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Tamanho do Ã­cone (VisualizaÃ§Ã£o de Ã­cones)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Abra a janela maximizada do editor', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Como a conversÃ£o por API nÃ£o estÃ¡ disponÃ­vel no momento, faÃ§a a conversÃ£o no site.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'ApÃ³s a conversÃ£o, vocÃª deve fazer o upload com o URL do item ou um arquivo baixado para salvar o arquivo convertido.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converter no site $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'IntegraÃ§Ãµes', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Este elFinder possui os seguintes serviÃ§os externos integrados. Por favor, verifique os termos de uso, polÃ­tica de privacidade, etc. antes de usÃ¡-lo.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostrar itens ocultos', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ocultar itens ocultos', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Mostrar/Ocultar itens ocultos', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipos de arquivo para ativar com "Novo arquivo"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipo do arquivo de texto', // from v2.1.41 added 7.8.2018
			'add'             : 'Adicionar', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'PadrÃ£o', // from v2.1.43 added 19.10.2018
			'description'     : 'DescriÃ§Ã£o', // from v2.1.43 added 19.10.2018
			'website'         : 'Site da internet', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'LicenÃ§a', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Este item nÃ£o pode ser salvo. Para evitar perder as ediÃ§Ãµes, vocÃª precisa exportar para o seu PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Clique duas vezes no arquivo para selecionÃ¡-lo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Usar o modo de tela cheia', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconhecio',
			'kindRoot'        : 'Raiz do volume', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Pasta',
			'kindSelects'     : 'SeleÃ§Ãµes', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias invÃ¡lido',
			// applications
			'kindApp'         : 'AplicaÃ§Ã£o',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'ApresentaÃ§Ã£o Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'AplicaÃ§Ã£o Flash',
			'kindPDF'         : 'Formato de Documento PortÃ¡til (PDF)',
			'kindTorrent'     : 'Arquivo Bittorrent',
			'kind7z'          : 'Arquivo 7z',
			'kindTAR'         : 'Arquivo TAR',
			'kindGZIP'        : 'Arquivo GZIP',
			'kindBZIP'        : 'Arquivo BZIP',
			'kindXZ'          : 'Arquivo XZ',
			'kindZIP'         : 'Arquivo ZIP',
			'kindRAR'         : 'Arquivo RAR',
			'kindJAR'         : 'Arquivo JAR',
			'kindTTF'         : 'Tipo verdadeiro da fonte',
			'kindOTF'         : 'Abrir tipo de fonte',
			'kindRPM'         : 'Pacote RPM',
			// fonts
			'kindFont'        : 'Fonte',
			'kindSFNT'        : 'SFNT fonte',
			'kindEOT'         : 'Embedded Open Type fonte',
			'kindWOFF'        : 'Web Open Font Format fonte',
			'kindWOFF2'       : 'Web Open Font Format 2 fonte',
			// texts
			'kindText'        : 'Arquivo de texto',
			'kindTextPlain'   : 'Texto simples',
			'kindPHP'         : 'PHP',
			'kindCSS'         : 'CSS',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Formato Rich Text',
			'kindC'           : 'C',
			'kindCHeader'     : 'C cabeÃ§alho',
			'kindCPP'         : 'C++',
			'kindCPPHeader'   : 'C++ cabeÃ§alho',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python',
			'kindJava'        : 'Java',
			'kindRuby'        : 'Ruby',
			'kindPerl'        : 'Perl',
			'kindSQL'         : 'SQL',
			'kindXML'         : 'Documento XML',
			'kindAWK'         : 'AWK',
			'kindCSV'         : 'Valores separados por vÃ­rgula',
			'kindDOCBOOK'     : 'Documento Docbook XML',
			'kindMarkdown'    : 'Texto Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagem',
			'kindBMP'         : 'Imagem BMP',
			'kindJPEG'        : 'Imagem JPEG',
			'kindGIF'         : 'Imagem GIF',
			'kindPNG'         : 'Imagem PNG',
			'kindTIFF'        : 'Imagem TIFF',
			'kindTGA'         : 'Imagem TGA',
			'kindPSD'         : 'Imagem Adobe Photoshop',
			'kindXBITMAP'     : 'Imagem X bitmap',
			'kindPXM'         : 'Imagem Pixelmator',
			// media
			'kindAudio'       : 'Arquivo de audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Lista de reproduÃ§Ã£o MP3 ',
			'kindVideo'       : 'Arquivo de video',
			'kindVideoDV'     : 'DV filme',
			'kindVideoMPEG'   : 'Video MPEG',
			'kindVideoMPEG4'  : 'Video MPEG-4',
			'kindVideoAVI'    : 'Video AVI',
			'kindVideoMOV'    : 'Filme rÃ¡pido',
			'kindVideoWM'     : 'Video Windows Media',
			'kindVideoFlash'  : 'Video Flash',
			'kindVideoMKV'    : 'MKV',
			'kindVideoOGG'    : 'Video Ogg'
		}
	};
}));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        includes/File_manager/lib/js/i18n/elfinder.ar.js                                                    0000644                 00000116060 15266052776 0015437 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Ø§Ù„ØªØ±Ø¬Ù…Ø© Ø§Ù„Ø¹Ø±Ø¨ÙŠØ©
 * @author Khamis Alqutob <alqutob@outlook.com>
 * @author Tawfek Daghistani <tawfekov@gmail.com>
 * @author Atef Ben Ali <atef.bettaib@gmail.com>
 * @version 2020-12-03
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ar = {
		translator : 'Khamis Alqutob &lt;alqutob@outlook.com&gt;, Tawfek Daghistani &lt;tawfekov@gmail.com&gt;, Atef Ben Ali &lt;atef.bettaib@gmail.com&gt;',
		language   : 'Arabic',
		direction  : 'rtl',
		dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM
		fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Ø®Ø·Ø£',
			'errUnknown'           : 'Ø®Ø·Ø£ ØºÙŠØ± Ù…Ø¹Ø±ÙˆÙ� .',
			'errUnknownCmd'        : 'Ø£Ù…Ø± ØºÙŠØ± Ù…Ø¹Ø±ÙˆÙ� .',
			'errJqui'              : 'ØªÙƒÙˆÙŠÙ† jQuery UI ØºÙŠØ± ØµØ§Ù„Ø­. ÙŠØ¬Ø¨ ØªØ¶Ù…ÙŠÙ† Ø§Ù„Ù…ÙƒÙˆÙ†Ø§Øª Ø§Ù„Ù‚Ø§Ø¨Ù„Ø© Ù„Ù„ØªØ­Ø¯ÙŠØ¯ ÙˆØ§Ù„Ù‚Ø§Ø¨Ù„Ø© Ù„Ù„Ø³Ø­Ø¨ ÙˆØ§Ù„Ø¥Ù�Ù„Ø§Øª',
			'errNode'              : 'ÙŠØªØ·Ù„Ø¨ elFinder Ø¥Ù†Ø´Ø§Ø¡ Ø¹Ù†ØµØ± DOM.',
			'errURL'               : 'ØªÙƒÙˆÙŠÙ† elFinder ØºÙŠØ± ØµØ§Ù„Ø­ ! Ù„Ù… ÙŠØªÙ… ØªØ¹ÙŠÙŠÙ† Ø®ÙŠØ§Ø± Ø±Ø§Ø¨Ø· URL',
			'errAccess'            : 'Ø§Ù„ÙˆØµÙˆÙ„ Ù…Ø±Ù�ÙˆØ¶ .',
			'errConnect'           : 'ØªØ¹Ø°Ø± Ø§Ù„Ø§ØªØµØ§Ù„ Ù…Ø¹ Ø®Ø§Ø¯Ù… Ø§Ù„Ø®Ù„Ù�ÙŠØ©',
			'errAbort'             : 'ØªÙ… Ù�ØµÙ„ Ø§Ù„Ø¥ØªØµØ§Ù„',
			'errTimeout'           : 'Ù†Ù�Ø° ÙˆÙ‚Øª Ø§Ù„Ø§ØªØµØ§Ù„.',
			'errNotFound'          : 'Ø§Ù„Ø®Ø§Ø¯ÙˆÙ… Ø§Ù„Ø®Ù„Ù�ÙŠ ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯ .',
			'errResponse'          : 'Ø±Ø¯ ØºÙŠØ± Ù…Ù‚Ø¨ÙˆÙ„ Ù…Ù† Ø§Ù„Ø®Ø§Ø¯ÙˆÙ… Ø§Ù„Ø®Ù„Ù�ÙŠ',
			'errConf'              : 'Ø®Ø·Ø£ Ù�ÙŠ Ø§Ù„Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù„Ø®Ø§ØµØ© Ø¨Ø§Ù„Ø®Ø§Ø¯ÙˆÙ… Ø§Ù„Ø®Ù„Ù�ÙŠ ',
			'errJSON'              : 'Ù…ÙˆØ¯ÙŠÙˆÙ„ PHP JSON module ØºÙŠØ± Ù…Ø«Ø¨Øª ',
			'errNoVolumes'         : 'Ø§Ù„Ø£Ø­Ø¬Ø§Ù… Ø§Ù„Ù…Ù‚Ø±ÙˆØ¡Ø© ØºÙŠØ± Ù…ØªÙˆÙ�Ø±Ø©',
			'errCmdParams'         : 'Ù…Ø¹Ù„Ù…Ø§Øª ØºÙŠØ± ØµØ§Ù„Ø­Ø© Ù„Ù„Ø£Ù…Ø± "$1".',
			'errDataNotJSON'       : 'Ø§Ù„Ø¨ÙŠØ§Ù†Ø§Øª Ù„ÙŠØ³Øª Ù…Ù† Ù†ÙˆØ¹ JSON ',
			'errDataEmpty'         : 'Ø§Ù„Ø¨ÙŠØ§Ù†Ø§Øª Ù�Ø§Ø±ØºØ©',
			'errCmdReq'            : 'Ø§Ù„Ø®Ø§Ø¯ÙˆÙ… Ø§Ù„Ø®Ù„Ù�ÙŠ ÙŠØªØ·Ù„Ø¨ Ø§Ø³Ù… Ø§Ù„Ø£Ù…Ø± ',
			'errOpen'              : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù�ØªØ­  "$1".',
			'errNotFolder'         : 'Ø§Ù„Ø¹Ù†ØµØ± Ù„ÙŠØ³ Ù…Ø¬Ù„Ø¯',
			'errNotFile'           : 'Ø§Ù„Ø¹Ù†ØµØ± Ù„ÙŠØ³ Ù…Ù„Ù�',
			'errRead'              : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù‚Ø±Ø§Ø¡Ø© "$1".',
			'errWrite'             : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø§Ù„ÙƒØªØ§Ø¨Ø© Ù�ÙŠ "$1".',
			'errPerm'              : 'ÙˆØµÙˆÙ„ Ù…Ø±Ù�ÙˆØ¶ ',
			'errLocked'            : '"$1" Ù…Ù‚Ù�Ù„ ÙˆÙ„Ø§ ÙŠÙ…ÙƒÙ† Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØªÙ‡ Ø£Ùˆ Ù†Ù‚Ù„Ù‡ Ø£Ùˆ Ø¥Ø²Ø§Ù„ØªÙ‡.',
			'errExists'            : 'Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ø°ÙŠ ÙŠØ­Ù…Ù„ Ø§Ù„Ø§Ø³Ù… "$1" Ù…ÙˆØ¬ÙˆØ¯ Ù…Ø³Ø¨Ù‚Ø§Ù‹.',
			'errInvName'           : 'Ø§Ø³Ù… Ø§Ù„Ù…Ù„Ù� ØºÙŠØ± ØµØ§Ù„Ø­',
			'errInvDirname'        : 'Ø§Ø³Ù… Ù…Ø¬Ù„Ø¯ ØºÙŠØ± ØµØ§Ù„Ø­',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯',
			'errFileNotFound'      : 'Ø§Ù„Ù…Ù„Ù� ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯',
			'errTrgFolderNotFound' : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ Ø§Ù„Ù‡Ø¯Ù�  "$1" ØºÙŠØ± Ù…ÙˆØ¬ÙˆØ¯ ',
			'errPopup'             : 'Ø§Ù„Ù…ØªØµÙ�Ø­ Ù…Ù†Ø¹ Ù…Ù† Ù�ØªØ­ Ù†Ø§Ù�Ø°Ø© Ù…Ù†Ø¨Ø«Ù‚Ø©. Ù„Ù�ØªØ­ Ù…Ù„Ù� ØŒ Ù‚Ù… Ø¨ØªÙ…ÙƒÙŠÙ†Ù‡ Ù�ÙŠ Ø®ÙŠØ§Ø±Ø§Øª Ø§Ù„Ù…ØªØµÙ�Ø­',
			'errMkdir'             : ' ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø¥Ù†Ø´Ø§Ø¡ Ù…Ø¬Ù„Ø¯ "$1".',
			'errMkfile'            : ' ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø¥Ù†Ø´Ø§Ø¡ Ù…Ù„Ù� "$1".',
			'errRename'            : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ©  "$1".',
			'errCopyFrom'          : 'Ù†Ø³Ø® Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù…Ù† Ø§Ù„Ø¯Ù„ÙŠÙ„ "$1" ØºÙŠØ± Ù…Ø³Ù…ÙˆØ­.',
			'errCopyTo'            : 'Ù†Ø³Ø® Ø§Ù„Ù…Ù„Ù�Ø§Øª Ø¥Ù„Ù‰ Ø§Ù„Ø¯Ù„ÙŠÙ„ "$1" ØºÙŠØ± Ù…Ø³Ù…ÙˆØ­ .',
			'errMkOutLink'         : 'ØªØ¹Ø°Ø± Ø¥Ù†Ø´Ø§Ø¡ Ø±Ø§Ø¨Ø· Ø¥Ù„Ù‰ Ø®Ø§Ø±Ø¬ Ø¬Ø°Ø± Ø§Ù„Ø¯Ù„ÙŠÙ„.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Ø®Ø·Ø£ Ù�ÙŠ Ø¹Ù…Ù„ÙŠØ© Ø§Ù„Ø±Ù�Ø¹.',  // old name - errUploadCommon
			'errUploadFile'        : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø±Ù�Ø¹ "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ù„Ù… ÙŠØªÙ… Ø§Ù„Ø¹Ø«ÙˆØ± Ø¹Ù„Ù‰ Ù…Ù„Ù�Ø§Øª Ù„Ù„ØªØ­Ù…ÙŠÙ„ .',
			'errUploadTotalSize'   : 'Ø§Ù„Ø¨ÙŠØ§Ù†Ø§Øª ØªØªØ¬Ø§ÙˆØ² Ø§Ù„Ø­Ø¯ Ø§Ù„Ø£Ù‚ØµÙ‰ Ù„Ù„Ø­Ø¬Ù… Ø§Ù„Ù…Ø³Ù…ÙˆØ­ Ø¨Ù‡.', // old name - errMaxSize
			'errUploadFileSize'    : 'ØªØ¬Ø§ÙˆØ² Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ø­Ø¯ Ø§Ù„Ø£Ù‚ØµÙ‰ Ù„Ù„Ø­Ø¬Ù… Ø§Ù„Ù…Ø³Ù…ÙˆØ­ Ø¨Ù‡.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ù†ÙˆØ¹ Ø§Ù„Ù…Ù„Ù� ØºÙŠØ± Ù…Ø³Ù…ÙˆØ­ Ø¨Ù‡.',
			'errUploadTransfer'    : '"$1" Ø®Ø·Ø£ Ù†Ù‚Ù„.',
			'errUploadTemp'        : 'ØªØ¹Ø°Ø± Ø¥Ù†Ø´Ø§Ø¡ Ù…Ù„Ù� Ù…Ø¤Ù‚Øª Ù„Ù„ØªØ­Ù…ÙŠÙ„ .', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Ø§Ù„ÙƒØ§Ø¦Ù† "$1" Ù…ÙˆØ¬ÙˆØ¯ Ø¨Ø§Ù„Ù�Ø¹Ù„ Ù�ÙŠ Ù‡Ø°Ø§ Ø§Ù„Ù…ÙˆÙ‚Ø¹ ÙˆÙ„Ø§ ÙŠÙ…ÙƒÙ† Ø§Ø³ØªØ¨Ø¯Ø§Ù„Ù‡ Ø¨ÙƒØ§Ø¦Ù† Ø¨Ù†ÙˆØ¹ Ø¢Ø®Ø±.', // new
			'errReplace'           : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø§Ø³ØªØ¨Ø¯Ø§Ù„ "$1".',
			'errSave'              : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø­Ù�Ø¸ "$1".',
			'errCopy'              : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù†Ø³Ø® "$1".',
			'errMove'              : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù†Ù‚Ù„ "$1".',
			'errCopyInItself'      : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù†Ø³Ø® "$1" Ø¯Ø§Ø®Ù„ Ù†Ù�Ø³Ù‡.',
			'errRm'                : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø¥Ø²Ø§Ù„Ø© "$1".',
			'errTrash'             : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ù�ÙŠ Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§Øª', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ØªØ¹Ø°Ø± Ø¥Ø²Ø§Ù„Ø© Ù…Ù„Ù� (Ù…Ù„Ù�Ø§Øª) Ø§Ù„Ù…ØµØ¯Ø±.',
			'errExtract'           : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù…Ù† "$1".',
			'errArchive'           : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø¥Ù†Ø´Ø§Ø¡ Ù…Ù„Ù� Ù…Ø¶ØºÙˆØ·.',
			'errArcType'           : 'Ù†ÙˆØ¹ Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ù…Ø¶ØºÙˆØ· ØºÙŠØ± Ù…Ø¯Ø¹ÙˆÙ….',
			'errNoArchive'         : 'Ù‡Ø°Ø§ Ø§Ù„Ù…Ù„Ù� Ù„ÙŠØ³ Ù…Ù„Ù� Ù…Ø¶ØºÙˆØ· Ø£Ùˆ Ø°Ùˆ ØµÙŠØºØ© ØºÙŠØ± Ù…Ø¯Ø¹ÙˆÙ…Ø©.',
			'errCmdNoSupport'      : 'Ø§Ù„Ø®Ø§Ø¯ÙˆÙ… Ø§Ù„Ø®Ù„Ù�ÙŠ Ù„Ø§ ÙŠØ¯Ø¹Ù… Ù‡Ø°Ø§ Ø§Ù„Ø£Ù…Ø± ',
			'errReplByChild'       : 'Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø§Ø³ØªØ¨Ø¯Ø§Ù„ Ø§Ù„Ù…Ø¬Ù„Ø¯ "$1" Ø¨Ø¹Ù†ØµØ± Ù…Ø­ØªÙˆÙ� Ù�ÙŠÙ‡.',
			'errArcSymlinks'       : 'Ù„Ø£Ø³Ø¨Ø§Ø¨ Ø£Ù…Ù†ÙŠØ© ØŒ ØªÙ… Ø±Ù�Ø¶ Ù�Ùƒ Ø¶ØºØ· Ø§Ù„Ø£Ø±Ø´ÙŠÙ�Ø§Øª Ø§Ù„ØªÙŠ ØªØ­ØªÙˆÙŠ Ø¹Ù„Ù‰ Ø±ÙˆØ§Ø¨Ø· Ø±Ù…Ø²ÙŠØ© Ø£Ùˆ Ù…Ù„Ù�Ø§Øª Ø¨Ø£Ø³Ù…Ø§Ø¡ ØºÙŠØ± Ù…Ø³Ù…ÙˆØ­ Ø¨Ù‡Ø§.', // edited 24.06.2012
			'errArcMaxSize'        : 'ØªØªØ¬Ø§ÙˆØ² Ù…Ù„Ù�Ø§Øª Ø§Ù„Ø£Ø±Ø´ÙŠÙ� Ø§Ù„Ø­Ø¬Ù… Ø§Ù„Ø£Ù‚ØµÙ‰ Ø§Ù„Ù…Ø³Ù…ÙˆØ­ Ø¨Ù‡.',
			'errResize'            : 'ØªØ¹Ø°Ø± ØªØºÙŠÙŠØ± Ø­Ø¬Ù… "$1".',
			'errResizeDegree'      : 'Ø¯Ø±Ø¬Ø© ØªØ¯ÙˆÙŠØ± ØºÙŠØ± ØµØ§Ù„Ø­Ø©.',  // added 7.3.2013
			'errResizeRotate'      : 'ØªØ¹Ø°Ø± ØªØ¯ÙˆÙŠØ± Ø§Ù„ØµÙˆØ±Ø©.',  // added 7.3.2013
			'errResizeSize'        : 'Ø­Ø¬Ù… Ø§Ù„ØµÙˆØ±Ø© ØºÙŠØ± ØµØ§Ù„Ø­.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ø­Ø¬Ù… Ø§Ù„ØµÙˆØ±Ø© Ù„Ù… ÙŠØªØºÙŠØ±.',  // added 7.3.2013
			'errUsupportType'      : 'Ù†ÙˆØ¹ Ù…Ù„Ù� ØºÙŠØ± Ù…Ø¯Ø¹ÙˆÙ….',
			'errNotUTF8Content'    : 'Ø§Ù„Ù…Ù„Ù� "$1" Ù„ÙŠØ³ Ø¨ØªÙ†Ø³ÙŠÙ‚ UTF-8 ÙˆÙ„Ø§ ÙŠÙ…ÙƒÙ† ØªØ­Ø±ÙŠØ±Ù‡.',  // added 9.11.2011
			'errNetMount'          : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø§Ù„ØªØ«Ø¨ÙŠØª "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ø¨Ø±ÙˆØªÙˆÙƒÙˆÙ„ ØºÙŠØ± Ù…Ø¯Ø¹ÙˆÙ….',     // added 17.04.2012
			'errNetMountFailed'    : 'Ù�Ø´Ù„ Ø§Ù„ØªØ«Ø¨ÙŠØª.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ø§Ù„Ù…Ø¶ÙŠÙ� Ù…Ø·Ù„ÙˆØ¨.', // added 18.04.2012
			'errSessionExpires'    : 'Ø§Ù†ØªÙ‡Øª Ø¬Ù„Ø³Ø© Ø§Ù„Ø¹Ù…Ù„ Ø§Ù„Ø®Ø§ØµØ© Ø¨Ùƒ Ø¨Ø³Ø¨Ø¨ Ø¹Ø¯Ù… Ø§Ù„Ù�Ø§Ø¹Ù„ÙŠØ©.',
			'errCreatingTempDir'   : 'ØªØ¹Ø°Ø± Ø¥Ù†Ø´Ø§Ø¡ Ø¯Ù„ÙŠÙ„ Ù…Ø¤Ù‚Øª: "$1"',
			'errFtpDownloadFile'   : 'ØªØ¹Ø°Ø± ØªÙ†Ø²ÙŠÙ„ Ø§Ù„Ù…Ù„Ù� Ù…Ù† FTP: "$1"',
			'errFtpUploadFile'     : 'ØªØ¹Ø°Ø± ØªØ­Ù…ÙŠÙ„ Ø§Ù„Ù…Ù„Ù� Ø¥Ù„Ù‰ FTP: "$1"',
			'errFtpMkdir'          : 'ØªØ¹Ø°Ø± Ø¥Ù†Ø´Ø§Ø¡ Ø¯Ù„ÙŠÙ„ Ø¹Ù† Ø¨Ø¹Ø¯ Ù�ÙŠ FTP: "$1"',
			'errArchiveExec'       : 'Ø®Ø·Ø£ Ø£Ø«Ù†Ø§Ø¡ Ø£Ø±Ø´Ù�Ø© Ø§Ù„Ù…Ù„Ù�Ø§Øª: "$1"',
			'errExtractExec'       : 'Ø®Ø·Ø£ Ø£Ø«Ù†Ø§Ø¡ Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ø§Ù„Ù…Ù„Ù�Ø§Øª: "$1"',
			'errNetUnMount'        : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ù�Ùƒ Ø§Ù„ØªØ«Ø¨ÙŠØª.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'ØºÙŠØ± Ù‚Ø§Ø¨Ù„ Ù„Ù„ØªØ­ÙˆÙŠÙ„ Ø¥Ù„Ù‰ UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ø¬Ø±Ø¨ Ø§Ù„Ù…ØªØµÙ�Ø­ Ø§Ù„Ø­Ø¯ÙŠØ« ØŒ Ø¥Ø°Ø§ ÙƒÙ†Øª ØªØ±ØºØ¨ Ù�ÙŠ ØªØ­Ù…ÙŠÙ„ Ø§Ù„Ù…Ø¬Ù„Ø¯.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Ø§Ù†ØªÙ‡Øª Ø§Ù„Ù…Ù‡Ù„Ø© Ø£Ø«Ù†Ø§Ø¡ Ø§Ù„Ø¨Ø­Ø« "$1". Ù†ØªÙŠØ¬Ø© Ø§Ù„Ø¨Ø­Ø« Ø¬Ø²Ø¦ÙŠØ©.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Ù…Ø·Ù„ÙˆØ¨ Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„ØªÙ�ÙˆÙŠØ¶.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Ø§Ù„Ø­Ø¯ Ø§Ù„Ø£Ù‚ØµÙ‰ Ù„Ø¹Ø¯Ø¯ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù‚Ø§Ø¨Ù„Ø© Ù„Ù„ØªØ­Ø¯ÙŠØ¯ Ù‡Ùˆ $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'ØºÙŠØ± Ù‚Ø§Ø¯Ø± Ø¹Ù„Ù‰ Ø§Ù„Ø§Ø³ØªØ¹Ø§Ø¯Ø© Ù…Ù† Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§Øª. Ù„Ø§ ÙŠÙ…ÙƒÙ† ØªØ­Ø¯ÙŠØ¯ ÙˆØ¬Ù‡Ø© Ø§Ù„Ø§Ø³ØªØ¹Ø§Ø¯Ø©.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Ù„Ù… ÙŠØªÙ… Ø§Ù„Ø¹Ø«ÙˆØ± Ø¹Ù„Ù‰ Ø§Ù„Ù…Ø­Ø±Ø± Ù„Ù‡Ø°Ø§ Ø§Ù„Ù†ÙˆØ¹ Ù…Ù† Ø§Ù„Ù…Ù„Ù�Ø§Øª.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ø­Ø¯Ø« Ø®Ø·Ø£ Ù…Ù† Ø¬Ø§Ù†Ø¨ Ø§Ù„Ø®Ø§Ø¯Ù….', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'ØªØ¹Ø°Ø± Ø¥Ù�Ø±Ø§Øº Ø§Ù„Ù…Ø¬Ù„Ø¯ "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'ÙŠÙˆØ¬Ø¯ $1 Ø£Ø®Ø·Ø§Ø¡ Ø¥Ø¶Ø§Ù�ÙŠØ©.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ø¥Ù†Ø´Ø§Ø¡ Ø£Ø±Ø´ÙŠÙ�',
			'cmdback'      : 'Ø§Ù„Ø¹ÙˆØ¯Ø©',
			'cmdcopy'      : 'Ù†Ø³Ø®',
			'cmdcut'       : 'Ù‚Øµ',
			'cmddownload'  : 'ØªÙ†Ø²ÙŠÙ„',
			'cmdduplicate' : 'ØªÙƒØ±Ø§Ø±',
			'cmdedit'      : 'ØªØ­Ø±ÙŠØ± Ø§Ù„Ù…Ù„Ù�',
			'cmdextract'   : 'Ø¥Ø³ØªØ®Ø±Ø§Ø¬ Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù…Ù† Ø§Ù„Ø£Ø±Ø´ÙŠÙ�',
			'cmdforward'   : 'Ø§Ù„Ø£Ù…Ø§Ù…',
			'cmdgetfile'   : 'Ø§Ø®ØªÙŠØ§Ø± Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'cmdhelp'      : 'Ø¹Ù† Ù‡Ø°Ù‡ Ø§Ù„Ø¨Ø±Ù…Ø¬ÙŠØ©',
			'cmdhome'      : 'Ø§Ù„Ø¬Ø°Ø±',
			'cmdinfo'      : 'Ø§Ù„Ø­ØµÙˆÙ„ Ø¹Ù„Ù‰ Ø§Ù„Ù…Ø¹Ù„ÙˆÙ…Ø§Øª ',
			'cmdmkdir'     : 'Ù…Ø¬Ù„Ø¯ Ø¬Ø¯ÙŠØ¯',
			'cmdmkdirin'   : 'Ø¯Ø§Ø®Ù„ Ù…Ø¬Ù„Ø¯ Ø¬Ø¯ÙŠØ¯', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ù…Ù„Ù� Ø¬Ø¯ÙŠØ¯',
			'cmdopen'      : 'Ù�ØªØ­',
			'cmdpaste'     : 'Ù„ØµÙ‚',
			'cmdquicklook' : 'Ù…Ø¹Ø§ÙŠÙ†Ø©',
			'cmdreload'    : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ­Ù…ÙŠÙ„',
			'cmdrename'    : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ©',
			'cmdrm'        : 'Ø­Ø°Ù�',
			'cmdtrash'     : 'Ø¯Ø§Ø®Ù„ Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§Øª', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ø¥Ø³ØªØ¹Ø§Ø¯Ø©', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ø¨Ø­Ø« Ø¹Ù† Ù…Ù„Ù�Ø§Øª',
			'cmdup'        : 'Ø§Ù†ØªÙ‚Ù„ Ø¥Ù„Ù‰ Ø§Ù„Ù…Ø¬Ù„Ø¯ Ø§Ù„Ø£ØµÙ„',
			'cmdupload'    : 'Ø±Ù�Ø¹ Ù…Ù„Ù�Ø§Øª',
			'cmdview'      : 'Ø¹Ø±Ø¶',
			'cmdresize'    : 'ØªØºÙŠÙŠØ± Ø§Ù„Ø­Ø¬Ù… ÙˆØ§Ù„ØªØ¯ÙˆÙŠØ±',
			'cmdsort'      : 'Ù�Ø±Ø²',
			'cmdnetmount'  : 'ØªØ«Ø¨ÙŠØª Ø­Ø¬Ù… Ø§Ù„Ø´Ø¨ÙƒØ©', // added 18.04.2012
			'cmdnetunmount': 'Ø¥Ù„ØºØ§Ø¡ Ø§Ù„ØªØ«Ø¨ÙŠØª', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ø§Ù„Ù‰ Ø§Ù„Ø§Ù…Ø§ÙƒÙ†', // added 28.12.2014
			'cmdchmod'     : 'ØªØºÙŠÙŠØ± Ø§Ù„Ù†Ù…Ø·', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ù�ØªØ­ Ù…Ø¬Ù„Ø¯', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ¹ÙŠÙŠÙ† Ø¹Ø±Ø¶ Ø§Ù„Ø¹Ù…ÙˆØ¯', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Ù…Ù„Ø¡ Ø§Ù„Ø´Ø§Ø´Ø©', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Ù†Ù‚Ù„', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'ØªÙ�Ø±ÙŠØº Ø§Ù„Ù…Ø¬Ù„Ø¯', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ØªØ±Ø§Ø¬Ø¹', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ø¥Ø¹Ø§Ø¯Ø©', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Ø§Ù„ØªÙ�Ø¶ÙŠÙ„Ø§Øª', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'ØªØ­Ø¯ÙŠØ¯ Ø§Ù„ÙƒÙ„', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'ØªØ­Ø¯ÙŠØ¯ Ù„Ø§ Ø´ÙŠØ¡', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Ø¹ÙƒØ³ Ø§Ù„Ø§Ø®ØªÙŠØ§Ø±', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ù�ØªØ­ Ù�ÙŠ Ù†Ø§Ù�Ø°Ø© Ø¬Ø¯ÙŠØ¯Ø©', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ø¥Ø®Ù�Ø§Ø¡ (Ø§Ù„Ø£Ù�Ø¶Ù„ÙŠØ©)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Ø¥ØºÙ„Ø§Ù‚',
			'btnSave'   : 'Ø­Ù�Ø¸',
			'btnRm'     : 'Ø¥Ø²Ø§Ù„Ø©',
			'btnApply'  : 'ØªØ·Ø¨ÙŠÙ‚',
			'btnCancel' : 'Ø¥Ù„ØºØ§Ø¡',
			'btnNo'     : 'Ù„Ø§',
			'btnYes'    : 'Ù†Ø¹Ù…',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ØªØ«Ø¨ÙŠØª',  // added 18.04.2012
			'btnApprove': 'Ø§Ù†ØªÙ‚Ù„ Ø¥Ù„Ù‰ $1 ÙˆØ§Ù„Ù…ÙˆØ§Ù�Ù‚Ø©', // from v2.1 added 26.04.2012
			'btnUnmount': 'Ø¥Ù„ØºØ§Ø¡ Ø§Ù„ØªØ«Ø¨ÙŠØª', // from v2.1 added 30.04.2012
			'btnConv'   : 'ØªØ­ÙˆÙŠÙ„', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ù‡Ù†Ø§',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ø§Ù„Ø­Ø¬Ù…',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ø§Ù„ÙƒÙ„',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Ù†ÙˆØ¹ MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Ø¥Ø³Ù… Ø§Ù„Ù…Ù„Ù�',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Ø­Ù�Ø¸ ÙˆØ¥ØºÙ„Ø§Ù‚', // from v2.1 added 12.6.2015
			'btnBackup' : 'Ù†Ø³Ø® Ø§Ø­ØªÙŠØ§Ø·ÙŠ', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ©',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ© (Ø§Ù„Ø¬Ù…ÙŠØ¹)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : '($1/$2) Ø§Ù„Ø³Ø§Ø¨Ù‚', // from v2.1.24 added 11.5.2017
			'btnNext'     : '($1/$2) Ø§Ù„ØªØ§Ù„ÙŠ', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Ø­Ù�Ø¸ ÙƒÙ€Ù€', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ù�ØªØ­ Ù…Ø¬Ù„Ø¯',
			'ntffile'     : 'Ù�ØªØ­ Ù…Ù„Ù�',
			'ntfreload'   : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ­Ù…ÙŠÙ„ Ù…Ø­ØªÙˆÙ‰ Ø§Ù„Ù…Ø¬Ù„Ø¯',
			'ntfmkdir'    : 'Ø¥Ù†Ø´Ø§Ø¡ Ù…Ø¬Ù„Ø¯',
			'ntfmkfile'   : 'Ø¥Ù†Ø´Ø§Ø¡ Ù…Ù„Ù�Ø§Øª',
			'ntfrm'       : 'Ø­Ø°Ù� Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'ntfcopy'     : 'Ù†Ø³Ø® Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'ntfmove'     : 'Ù†Ù‚Ù„ Ø§Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'ntfprepare'  : 'Ù�Ø­Øµ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…ÙˆØ¬ÙˆØ¯Ø©',
			'ntfrename'   : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ© Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'ntfupload'   : 'ØªØ­Ù…ÙŠÙ„ Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'ntfdownload' : 'ØªÙ†Ø²ÙŠÙ„ Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'ntfsave'     : 'Ø­Ù�Ø¸ Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'ntfarchive'  : 'Ø¥Ù†Ø´Ø§Ø¡ Ø£Ø±Ø´ÙŠÙ�',
			'ntfextract'  : 'Ø§Ø³ØªØ®Ø±Ø§Ø¬ Ù…Ù„Ù�Ø§Øª Ù…Ù† Ø§Ù„Ø£Ø±Ø´ÙŠÙ�',
			'ntfsearch'   : 'Ø§Ù„Ø¨Ø­Ø« Ù�ÙŠ Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'ntfresize'   : 'ØªØºÙŠÙŠØ± Ø­Ø¬Ù… Ø§Ù„ØµÙˆØ±',
			'ntfsmth'     : 'Ø§Ù„Ù‚ÙŠØ§Ù… Ø¨Ø´ÙŠØ¡ Ù…Ø§',
			'ntfloadimg'  : 'ØªØ­Ù…ÙŠÙ„ Ø§Ù„ØµÙˆØ±Ø©',
			'ntfnetmount' : 'ØªØ«Ø¨ÙŠØª Ø­Ø¬Ù… Ø§Ù„Ø´Ø¨ÙƒØ©', // added 18.04.2012
			'ntfnetunmount': 'Ø¥Ù„ØºØ§Ø¡ ØªØ«Ø¨ÙŠØª Ø­Ø¬Ù… Ø§Ù„Ø´Ø¨ÙƒØ©', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Ø§ÙƒØªØ³Ø§Ø¨ Ø£Ø¨Ø¹Ø§Ø¯ Ø§Ù„ØµÙˆØ±Ø©', // added 20.05.2013
			'ntfreaddir'  : 'Ù‚Ø±Ø§Ø¡Ø© Ù…Ø¹Ù„ÙˆÙ…Ø§Øª Ø§Ù„Ù…Ø¬Ù„Ø¯', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Ø§Ù„Ø­ØµÙˆÙ„ Ø¹Ù„Ù‰ URL Ø§Ù„Ø±Ø§Ø¨Ø·', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ØªØºÙŠÙŠØ± Ù†Ù…Ø· Ø§Ù„Ù…Ù„Ù�', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Ø§Ù„ØªØ­Ù‚Ù‚ Ù…Ù† Ø§Ø³Ù… Ù…Ù„Ù� Ø§Ù„ØªØ­Ù…ÙŠÙ„', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ø¥Ù†Ø´Ø§Ø¡ Ù…Ù„Ù� Ù„Ù„ØªÙ†Ø²ÙŠÙ„', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Ø§Ù„Ø­ØµÙˆÙ„ Ø¹Ù„Ù‰ Ù…Ø¹Ù„ÙˆÙ…Ø§Øª Ø§Ù„Ù…Ø³Ø§Ø±', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Ù…Ø¹Ø§Ù„Ø¬Ø© Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ù…Ø±Ù�ÙˆØ¹', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Ø§Ù„Ù‚ÙŠØ§Ù… Ø¨Ø§Ù„Ø±Ù…ÙŠ Ù�ÙŠ Ø§Ù„Ù‚Ù…Ø§Ù…Ø©', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ø§Ù„Ù‚ÙŠØ§Ù… Ø¨Ø§Ù„Ø§Ø³ØªØ¹Ø§Ø¯Ø© Ù…Ù† Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§Øª', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Ø§Ù„ØªØ­Ù‚Ù‚ Ù…Ù† Ù…Ø¬Ù„Ø¯ Ø§Ù„ÙˆØ¬Ù‡Ø©', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Ø§Ù„ØªØ±Ø§Ø¬Ø¹ Ø¹Ù† Ø§Ù„Ø¹Ù…Ù„ÙŠØ© Ø§Ù„Ø³Ø§Ø¨Ù‚Ø©', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„ØªØ±Ø§Ø¬Ø¹ Ø§Ù„Ø³Ø§Ø¨Ù‚', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Ù�Ø­Øµ Ø§Ù„Ù…Ø­ØªÙˆÙŠØ§Øª', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ØºÙŠØ± Ù…Ø¹Ù„ÙˆÙ…',
			'Today'       : 'Ø§Ù„ÙŠÙˆÙ…',
			'Yesterday'   : 'Ø§Ù„Ø£Ù…Ø³',
			'msJan'       : 'ÙƒØ§Ù†ÙˆÙ† Ø§Ù„Ø«Ø§Ù†ÙŠ',
			'msFeb'       : 'Ø´Ø¨Ø§Ø·',
			'msMar'       : 'Ø¢Ø°Ø§Ø±',
			'msApr'       : 'Ù†ÙŠØ³Ø§Ù†',
			'msMay'       : 'Ø£ÙŠØ§Ø±',
			'msJun'       : 'Ø­Ø²ÙŠØ±Ø§Ù†',
			'msJul'       : 'ØªÙ…ÙˆØ²',
			'msAug'       : 'Ø¢Ø¨',
			'msSep'       : 'Ø£ÙŠÙ„ÙˆÙ„',
			'msOct'       : 'ØªØ´Ø±ÙŠÙ† Ø§Ù„Ø£ÙˆÙ„',
			'msNov'       : 'ØªØ´Ø±ÙŠÙ† Ø§Ù„Ø«Ø§Ù†ÙŠ',
			'msDec'       : 'ÙƒØ§Ù†ÙˆÙ† Ø§Ù„Ø£ÙˆÙ„ ',
			'January'     : 'ÙƒØ§Ù†ÙˆÙ† Ø§Ù„Ø«Ø§Ù†ÙŠ',
			'February'    : 'Ø´Ø¨Ø§Ø·',
			'March'       : 'Ø¢Ø°Ø§Ø±',
			'April'       : 'Ù†ÙŠØ³Ø§Ù†',
			'May'         : 'Ø£ÙŠØ§Ø±',
			'June'        : 'Ø­Ø²ÙŠØ±Ø§Ù†',
			'July'        : 'ØªÙ…ÙˆØ²',
			'August'      : 'Ø¢Ø¨',
			'September'   : 'Ø£ÙŠÙ„ÙˆÙ„',
			'October'     : 'ØªØ´Ø±ÙŠÙ† Ø§Ù„Ø£ÙˆÙ„',
			'November'    : 'ØªØ´Ø±ÙŠÙ† Ø§Ù„Ø«Ø§Ù†ÙŠ',
			'December'    : 'ÙƒØ§Ù†ÙˆÙ† Ø§Ù„Ø«Ø§Ù†ÙŠ',
			'Sunday'      : 'Ø§Ù„Ø£Ø­Ø¯',
			'Monday'      : 'Ø§Ù„Ø§Ø«Ù†ÙŠÙ†',
			'Tuesday'     : 'Ø§Ù„Ø«Ù„Ø§Ø«Ø§Ø¡',
			'Wednesday'   : 'Ø§Ù„Ø¥Ø±Ø¨Ø¹Ø§Ø¡',
			'Thursday'    : 'Ø§Ù„Ø®Ù…ÙŠØ³',
			'Friday'      : 'Ø§Ù„Ø¬Ù…Ø¹Ø©',
			'Saturday'    : 'Ø§Ù„Ø³Ø¨Øª',
			'Sun'         : 'Ø§Ù„Ø£Ø­Ø¯',
			'Mon'         : 'Ø§Ù„Ø§Ø«Ù†ÙŠÙ†',
			'Tue'         : 'Ø§Ù„Ø«Ù„Ø§Ø«Ø§Ø¡',
			'Wed'         : 'Ø§Ù„Ø¥Ø±Ø¨Ø¹Ø§Ø¡',
			'Thu'         : 'Ø§Ù„Ø®Ù…ÙŠØ³',
			'Fri'         : 'Ø§Ù„Ø¬Ù…Ø¹Ø©',
			'Sat'         : 'Ø§Ù„Ø³Ø¨Øª',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ø­Ø³Ø¨ Ø§Ù„Ø§Ø³Ù…',
			'sortkind'          : 'Ø­Ø³Ø¨ Ø§Ù„Ù†ÙˆØ¹',
			'sortsize'          : 'Ø­Ø³Ø¨ Ø§Ù„Ø­Ø¬Ù…',
			'sortdate'          : 'Ø­Ø³Ø¨ Ø§Ù„ØªØ§Ø±ÙŠØ®',
			'sortFoldersFirst'  : 'Ø§Ù„Ù…Ø¬Ù„Ø¯Ø§Øª Ø£ÙˆÙ„Ø§',
			'sortperm'          : 'Ø­Ø³Ø¨ Ø§Ù„ØµÙ„Ø§Ø­ÙŠØ©', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Ø­Ø³Ø¨ Ø§Ù„Ù†Ù…Ø·',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Ø­Ø³Ø¨ Ø§Ù„Ù…Ø§Ù„Ùƒ',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Ø­Ø³Ø¨ Ø§Ù„Ù…Ø¬Ù…ÙˆØ¹Ø©',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ø£ÙŠØ¶Ø§ Ø¹Ø±Ø¶ Ø§Ù„Ø´Ø¬Ø±Ø©',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'file.txt Ø¨Ø¯ÙˆÙ† Ø¹Ù†ÙˆØ§Ù†' : 'NewFile.txt', // added 10.11.2015
			'Ù…Ø¬Ù„Ø¯ Ø¨Ù„Ø§ Ø¹Ù†ÙˆØ§Ù†'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Ù…Ù„Ù�',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Ø§Ù„ØªØ£ÙƒÙŠØ¯ Ù…Ø·Ù„ÙˆØ¨',
			'confirmRm'       : 'Ù‡Ù„ ØªØ±ÙŠØ¯ Ø¨Ø§Ù„ØªØ£ÙƒÙŠØ¯ Ø¥Ø²Ø§Ù„Ø© Ø§Ù„Ø¹Ù†Ø§ØµØ± Ù†Ù‡Ø§Ø¦ÙŠÙ‹Ø§ØŸ <br/> Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø§Ù„ØªØ±Ø§Ø¬Ø¹ Ø¹Ù† Ù‡Ø°Ø§ Ø§Ù„Ø¥Ø¬Ø±Ø§Ø¡! ',
			'confirmRepl'     : 'Ø§Ø³ØªØ¨Ø¯Ø§Ù„ Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ù‚Ø¯ÙŠÙ… Ø¨Ù…Ù„Ù� Ø¬Ø¯ÙŠØ¯ØŸ (Ø¥Ø°Ø§ ÙƒØ§Ù† ÙŠØ­ØªÙˆÙŠ Ø¹Ù„Ù‰ Ù…Ø¬Ù„Ø¯Ø§Øª ØŒ Ù�Ø³ÙŠØªÙ… Ø¯Ù…Ø¬Ù‡. Ù„Ù„Ù†Ø³Ø® Ø§Ù„Ø§Ø­ØªÙŠØ§Ø·ÙŠ ÙˆØ§Ù„Ø§Ø³ØªØ¨Ø¯Ø§Ù„ ØŒ Ø­Ø¯Ø¯ Ø§Ù„Ù†Ø³Ø® Ø§Ù„Ø§Ø­ØªÙŠØ§Ø·ÙŠ.)',
			'confirmRest'     : 'Ù‡Ù„ ØªØ±ÙŠØ¯ Ø§Ø³ØªØ¨Ø¯Ø§Ù„ Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ù…ÙˆØ¬ÙˆØ¯ Ø¨Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ù…ÙˆØ¬ÙˆØ¯ Ù�ÙŠ Ø§Ù„Ù…Ù‡Ù…Ù„Ø§ØªØŸ', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ù„ÙŠØ³ Ø¨ØµÙŠØºØ© UTF-8<br/>Ø§Ù„ØªØ­ÙˆÙŠÙ„ Ø¥Ù„Ù‰ UTF-8ØŸ<br/>ØªØµØ¨Ø­ Ø§Ù„Ù…Ø­ØªÙˆÙŠØ§Øª UTF-8 Ø¨Ø§Ù„Ø­Ù�Ø¸ Ø¨Ø¹Ø¯ Ø§Ù„ØªØ­ÙˆÙŠÙ„.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'ØªØ¹Ø°Ø± Ø§Ù„ÙƒØ´Ù� Ø¹Ù† ØªØ±Ù…ÙŠØ² Ø§Ù„Ø£Ø­Ø±Ù� Ù„Ù‡Ø°Ø§ Ø§Ù„Ù…Ù„Ù�. ØªØ­ØªØ§Ø¬ Ø¥Ù„Ù‰ Ø§Ù„ØªØ­ÙˆÙŠÙ„ Ù…Ø¤Ù‚ØªØ§Ù‹ Ø¥Ù„Ù‰ UTF-8 Ù„Ù„ØªØ­Ø±ÙŠØ±.<br/>Ø§Ù„Ø±Ø¬Ø§Ø¡ ØªØ­Ø¯ÙŠØ¯ ØªØ±Ù…ÙŠØ² Ø§Ù„Ø£Ø­Ø±Ù� Ù„Ù‡Ø°Ø§ Ø§Ù„Ù…Ù„Ù�.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ù„Ù‚Ø¯ ØªÙ… ØªØ¹Ø¯ÙŠÙ„Ù‡.<br/>Ù‚Ø¯ ØªØ®Ø³Ø± Ø§Ù„Ø¹Ù…Ù„ Ø¥Ø°Ø§ Ù„Ù… ØªÙ‚Ù… Ø¨Ø­Ù�Ø¸ Ø§Ù„ØªØºÙŠÙŠØ±Ø§Øª.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ø£Ù†Ùƒ ØªØ±ÙŠØ¯ Ù†Ù‚Ù„ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø¥Ù„Ù‰ Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§ØªØŸ', //from v2.1.24 added 29.4.2017
						'confirmMove'     : 'Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ø£Ù†Ùƒ ØªØ±ÙŠØ¯ Ù†Ù‚Ù„ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø¥Ù„Ù‰ "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'ØªØ·Ø¨ÙŠÙ‚ Ø¹Ù„Ù‰ Ø§Ù„ÙƒÙ„',
			'name'            : 'Ø§Ù„Ø§Ø³Ù…',
			'size'            : 'Ø§Ù„Ø­Ø¬Ù…',
			'perms'           : 'Ø§Ù„ØµÙ„Ø§Ø­ÙŠØ§Øª',
			'modify'          : 'Ø§Ù„ØªØ¹Ø¯ÙŠÙ„',
			'kind'            : 'Ø§Ù„Ù†ÙˆØ¹',
			'read'            : 'Ù‚Ø§Ø¨Ù„ Ù„Ù„Ù‚Ø±Ø§Ø¡Ø©',
			'write'           : 'Ù‚Ø§Ø¨Ù„ Ù„Ù„ÙƒØªØ§Ø¨Ø©',
			'noaccess'        : 'ÙˆØµÙˆÙ„ Ù…Ù…Ù†ÙˆØ¹',
			'and'             : 'Ùˆ',
			'unknown'         : 'ØºÙŠØ± Ù…Ø¹Ø±ÙˆÙ�',
			'selectall'       : 'ØªØ­Ø¯ÙŠØ¯ ÙƒÙ„ Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'selectfiles'     : 'ØªØ­Ø¯ÙŠØ¯ Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'selectffile'     : 'ØªØ­Ø¯ÙŠØ¯ Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ø£ÙˆÙ„',
			'selectlfile'     : 'ØªØ­Ø¯ÙŠØ¯ Ø§Ù„Ø¹Ù†ØµØ± Ø§Ù„Ø£Ø®ÙŠØ±',
			'viewlist'        : 'Ø¹Ø±Ø¶ Ø§Ù„Ù‚Ø§Ø¦Ù…Ø©',
			'viewicons'       : 'Ø¹Ø±Ø¶ Ø£ÙŠÙ’Ù‚ÙˆÙ†Ø§Øª',
			'viewSmall'       : 'Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª ØµØºÙŠØ±Ø©', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª Ù…ØªÙˆØ³Ø·Ø©', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª ÙƒØ¨ÙŠØ±Ø©', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª ÙƒØ¨ÙŠØ±Ø© Ø¬Ø¯Ø§Ù‹', // from v2.1.39 added 22.5.2018
			'places'          : 'Ø§Ù„Ù…ÙˆØ§Ù‚Ø¹',
			'calc'            : 'Ø­Ø³Ø§Ø¨',
			'path'            : 'Ø§Ù„Ù…Ø³Ø§Ø±',
			'aliasfor'        : 'Ø§Ø³Ù… Ù…Ø³ØªØ¹Ø§Ø± Ù„Ù€',
			'locked'          : 'Ù…Ù‚Ù�Ù„',
			'dim'             : 'Ø§Ù„Ø£Ø¨Ø¹Ø§Ø¯',
			'files'           : 'Ù…Ù„Ù�Ø§Øª',
			'folders'         : 'Ù…Ø¬Ù„Ø¯Ø§Øª',
			'items'           : 'Ø¹Ù†Ø§ØµØ±',
			'yes'             : 'Ù†Ø¹Ù…',
			'no'              : 'Ù„Ø§',
			'link'            : 'Ø§Ù„Ø±Ø§Ø¨Ø·',
			'searcresult'     : 'Ù†ØªØ§Ø¦Ø¬ Ø§Ù„Ø¨Ø­Ø«',
			'selected'        : 'Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø­Ø¯Ø¯Ø©',
			'about'           : 'Ø­ÙˆÙ„',
			'shortcuts'       : 'Ø§Ù„Ø§Ø®ØªØµØ§Ø±Ø§Øª',
			'help'            : 'Ø§Ù„Ù…Ø³Ø§Ø¹Ø¯Ø©',
			'webfm'           : 'Ù…Ø¯ÙŠØ± Ù…Ù„Ù�Ø§Øª Ø§Ù„ÙˆÙŠØ¨',
			'ver'             : 'Ø§Ù„Ø¥ØµØ¯Ø§Ø±',
			'protocolver'     : 'Ø¥ØµØ¯Ø§Ø± Ø§Ù„Ø¨Ø±ØªÙˆÙƒÙˆÙ„',
			'homepage'        : 'Ø±Ø¦ÙŠØ³ÙŠØ© Ø§Ù„Ù…Ø´Ø±ÙˆØ¹',
			'docs'            : 'Ø§Ù„ÙˆØ«Ø§Ø¦Ù‚',
			'github'          : 'Ø´Ø§Ø±ÙƒÙ†Ø§ Ø¹Ù„Ù‰ Github',
			'twitter'         : 'ØªØ§Ø¨Ø¹Ù†Ø§ Ø¹Ù„Ù‰ ØªÙˆÙŠØªØ±',
			'facebook'        : 'Ø§Ù†Ø¶Ù… Ø¥Ù„ÙŠÙ†Ø§ Ø¹Ù„Ù‰ Ø§Ù„Ù�ÙŠØ³ Ø¨ÙˆÙƒ',
			'team'            : 'Ø§Ù„Ù�Ø±ÙŠÙ‚',
			'chiefdev'        : 'Ø±Ø¦ÙŠØ³ Ø§Ù„Ù…Ø¨Ø±Ù…Ø¬ÙŠÙ†',
			'developer'       : 'Ù…Ø¨Ø±Ù…Ø¬',
			'contributor'     : 'Ù…Ø³Ø§Ù‡Ù…',
			'maintainer'      : 'Ù…Ø´Ø±Ù�',
			'translator'      : 'Ù…ØªØ±Ø¬Ù…',
			'icons'           : 'Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª',
			'dontforget'      : 'ÙˆÙ„Ø§ ØªÙ†Ø³ Ø£Ù† ØªØ£Ø®Ø° Ø§Ù„Ù…Ù†Ø´Ù�Ø©',
			'shortcutsof'     : 'Ø§Ù„Ø§Ø®ØªØµØ§Ø±Ø§Øª ØºÙŠØ± Ù…Ù�Ø¹Ù„Ø©',
			'dropFiles'       : 'Ø¥Ù�Ù„Ø§Øª Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù‡Ù†Ø§',
			'or'              : 'Ø£Ùˆ',
			'selectForUpload' : 'Ø§Ø®ØªØ± Ø§Ù„Ù…Ù„Ù�Ø§Øª',
			'moveFiles'       : 'Ù†Ù‚Ù„ Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'copyFiles'       : 'Ù†Ø³Ø® Ø§Ù„Ø¹Ù†Ø§ØµØ±',
			'restoreFiles'    : 'Ø§Ø³ØªØ¹Ø§Ø¯Ø© Ø§Ù„Ø¹Ù†Ø§ØµØ±', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Ø¥Ø²Ø§Ù„Ø© Ù…Ù† Ø§Ù„Ø£Ù…Ø§ÙƒÙ†',
			'aspectRatio'     : 'Ø§Ø¨Ø¹Ø§Ø¯ Ù…ØªØ²Ù†Ø©',
			'scale'           : 'Ù…Ù‚ÙŠØ§Ø³',
			'width'           : 'Ø¹Ø±Ø¶',
			'height'          : 'Ø·ÙˆÙ„',
			'resize'          : 'ØªØºÙŠÙŠØ± Ø§Ù„Ø­Ø¬Ù…',
			'crop'            : 'Ù‚Øµ',
			'rotate'          : 'ØªØ¯ÙˆÙŠØ±',
			'rotate-cw'       : 'Ø§Ø³ØªØ¯Ø§Ø±Ø© 90 Ø¯Ø±Ø¬Ø© Ù…Ø¹ Ø¹Ù‚Ø§Ø±Ø¨ Ø§Ù„Ø³Ø§Ø¹Ø©',
			'rotate-ccw'      : 'Ø§Ø³ØªØ¯Ø§Ø±Ø© 90 Ø¯Ø±Ø¬Ø© Ø¹ÙƒØ³ Ø¹Ù‚Ø§Ø±Ø¨ Ø§Ù„Ø³Ø§Ø¹Ø©',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'ØªØ«Ø¨ÙŠØª Ø­Ø¬Ù… Ø§Ù„Ø´Ø¨ÙƒØ©', // added 18.04.2012
			'protocol'            : 'Ø§Ù„Ø¨Ø±ÙˆØªÙˆÙƒÙˆÙ„', // added 18.04.2012
			'host'                : 'Ø§Ù„Ù…Ø¶ÙŠÙ�', // added 18.04.2012
			'port'                : 'Ø§Ù„Ù…Ù†Ù�Ø°', // added 18.04.2012
			'user'                : 'Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù…', // added 18.04.2012
			'pass'                : 'ÙƒÙ„Ù…Ø© Ø§Ù„Ù…Ø±ÙˆØ±', // added 18.04.2012
			'confirmUnmount'      : 'Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ù…Ù† Ø¥Ù„ØºØ§Ø¡ ØªØ«Ø¨ÙŠØª $1ØŸ',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Ù‚Ù… Ø¨Ø¥Ø³Ù‚Ø§Ø· Ø£Ùˆ Ù„ØµÙ‚ Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù…Ù† Ø§Ù„Ù…ØªØµÙ�Ø­', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Ù‚Ù… Ø¨Ø¥Ø³Ù‚Ø§Ø· Ø§Ù„Ù…Ù„Ù�Ø§Øª Ø£Ùˆ Ù„ØµÙ‚ Ø§Ù„Ø±ÙˆØ§Ø¨Ø· Ø£Ùˆ Ø§Ù„ØµÙˆØ± (Ø§Ù„Ø­Ø§Ù�Ø¸Ø©) Ù‡Ù†Ø§', // from v2.1 added 07.04.2014
			'encoding'        : 'Ø§Ù„ØªØ±Ù…ÙŠØ²', // from v2.1 added 19.12.2014
			'locale'          : 'Ø§Ù„Ù„ØºØ©',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ø§Ù„Ù‡Ø¯Ù�: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Ø§Ù„Ø¨Ø­Ø« Ø¹Ù† Ø·Ø±ÙŠÙ‚ Ø¥Ø¯Ø®Ø§Ù„ Ù†ÙˆØ¹ MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Ø§Ù„Ù…Ø§Ù„Ùƒ', // from v2.1 added 20.6.2015
			'group'           : 'Ø§Ù„Ù…Ø¬Ù…ÙˆØ¹Ø©', // from v2.1 added 20.6.2015
			'other'           : 'Ø£Ø®Ø±Ù‰', // from v2.1 added 20.6.2015
			'execute'         : 'ØªÙ†Ù�ÙŠØ°', // from v2.1 added 20.6.2015
			'perm'            : 'Ø§Ù„ØªØµØ±ÙŠØ­', // from v2.1 added 20.6.2015
			'mode'            : 'Ø§Ù„Ù†Ù…Ø·', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ Ù�Ø§Ø±Øº', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ Ù�Ø§Ø±Øº\\Ø¥Ù�Ù„Ø§Øª Ù„Ø¥Ø¶Ø§Ù�Ø© Ø¹Ù†Ø§ØµØ±', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ Ù�Ø§Ø±Øº\\Ù†Ù‚Ø±Ø© Ø·ÙˆÙŠÙ„Ø© Ù„Ø¥Ø¶Ø§Ù�Ø© Ø§Ù„Ø¹Ù†Ø§ØµØ±', // from v2.1.6 added 30.12.2015
			'quality'         : 'Ø§Ù„Ù†ÙˆØ¹ÙŠØ©', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Ù…Ø²Ø§Ù…Ù†Ø© Ø¢Ù„ÙŠØ©',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ØªØ­Ø±ÙŠÙƒ Ù„Ø£Ø¹Ù„Ù‰',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Ø§Ù„Ø­ØµÙˆÙ„ Ø¹Ù„Ù‰ Ø±Ø§Ø¨Ø· URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø­Ø¯Ø¯Ø© ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Ù…Ø¹Ø±Ù� Ø§Ù„Ù…Ø¬Ù„Ø¯', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Ø§Ù„Ø³Ù…Ø§Ø­ Ø¨Ø§Ù„ÙˆØµÙˆÙ„ Ø¯ÙˆÙ† Ø§ØªØµØ§Ù„', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Ù„Ø¥Ø¹Ø§Ø¯Ø© Ø§Ù„Ù…ØµØ§Ø¯Ù‚Ø©', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Ø¬Ø§Ø±ÙŠ Ø§Ù„ØªØ­Ù…ÙŠÙ„ Ø§Ù„Ø¢Ù†...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ù�ØªØ­ Ù…Ù„Ù�Ø§Øª Ù…ØªØ¹Ø¯Ø¯Ø©', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Ø£Ù†Øª ØªØ­Ø§ÙˆÙ„ Ù�ØªØ­  $1 Ù…Ù„Ù�. Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ø£Ù†Ùƒ ØªØ±ÙŠØ¯ Ø§Ù„Ù�ØªØ­ Ù�ÙŠ Ø§Ù„Ù…ØªØµÙ�Ø­ØŸ', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Ù†ØªØ§Ø¦Ø¬ Ø§Ù„Ø¨Ø­Ø« Ù�Ø§Ø±ØºØ© Ù�ÙŠ Ù‡Ø¯Ù� Ø§Ù„Ø¨Ø­Ø«.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ø¥Ù†Ù‡Ø§ ØªÙ‚ÙˆÙ… Ø¨ØªØ­Ø±ÙŠØ± Ù…Ù„Ù�.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ù„Ù‚Ø¯ Ù‚Ù…Øª Ø¨ØªØ­Ø¯ÙŠØ¯ $1 Ø¹Ù†Ø§ØµØ±.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'ÙŠÙˆØ¬Ø¯ Ù„Ø¯ÙŠÙƒ $1 Ø¹Ù†Ø§ØµØ± Ù�ÙŠ Ø§Ù„Ø­Ø§Ù�Ø¸Ø©.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Ø§Ù„Ø¨Ø­Ø« Ø§Ù„Ù…ØªØ²Ø§ÙŠØ¯ Ù‡Ùˆ Ù�Ù‚Ø· Ù…Ù† Ø§Ù„Ø¹Ø±Ø¶ Ø§Ù„Ø­Ø§Ù„ÙŠ.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Ø¥Ø¹Ø§Ø¯Ø©', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 Ø¥ÙƒØªÙ…Ù„', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Ù‚Ø§Ø¦Ù…Ø© Ø§Ù„Ø³ÙŠØ§Ù‚', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Ù‚Ù„Ø¨ Ø§Ù„ØµÙ�Ø­Ø©', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Ø¬Ø°ÙˆØ± Ø§Ù„Ø­Ø¬Ù…', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ¹ÙŠÙŠÙ†', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Ù„ÙˆÙ† Ø§Ù„Ø®Ù„Ù�ÙŠØ©', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Ø£Ø¯Ø§Ø© Ø§Ù†ØªÙ‚Ø§Ø¡ Ø§Ù„Ù„ÙˆÙ†', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Ø´Ø¨ÙƒØ© 8 Ø¨ÙƒØ³Ù„', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ù…Ù�Ø¹Ù„', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Ù…Ø¹Ø·Ù„', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ù†ØªØ§Ø¦Ø¬ Ø§Ù„Ø¨Ø­Ø« Ù�Ø§Ø±ØºØ© Ù�ÙŠ Ø§Ù„Ø¹Ø±Ø¶ Ø§Ù„Ø­Ø§Ù„ÙŠ. \\ Ø§Ø¶ØºØ· Ø¹Ù„Ù‰ [Enter] Ù„ØªÙˆØ³ÙŠØ¹ Ù‡Ø¯Ù� Ø§Ù„Ø¨Ø­Ø«.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Ù†ØªØ§Ø¦Ø¬ Ø§Ù„Ø¨Ø­Ø« Ø§Ù„Ø­Ø±Ù� Ø§Ù„Ø£ÙˆÙ„ Ù�Ø§Ø±ØºØ© Ù�ÙŠ Ø§Ù„Ø¹Ø±Ø¶ Ø§Ù„Ø­Ø§Ù„ÙŠ.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'ØªØ³Ù…ÙŠØ© Ù†ØµÙŠØ©', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Ø¯Ù‚Ø§Ø¦Ù‚ Ø¨Ø§Ù‚ÙŠØ©', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ø¥Ø¹Ø§Ø¯Ø© Ù�ØªØ­ Ù…Ø¹ Ø§Ù„ØªØ±Ù…ÙŠØ² Ø§Ù„Ù…Ø­Ø¯Ø¯', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Ø­Ù�Ø¸ Ù…Ø¹ Ø§Ù„ØªØ±Ù…ÙŠØ² Ø§Ù„Ù…Ø­Ø¯Ø¯', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'ØªØ­Ø¯ÙŠØ¯ Ù…Ø¬Ù„Ø¯', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Ø§Ù„Ø¨Ø­Ø« Ø¨Ø§Ù„Ø­Ø±Ù� Ø§Ù„Ø£ÙˆÙ„', // from v2.1.23 added 24.3.2017
			'presets'         : 'Ø§Ù„Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù„Ù…Ø³Ø¨Ù‚Ø©', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Ù‡Ù†Ø§Ùƒ Ø¹Ø¯Ø¯ ÙƒØ¨ÙŠØ± Ø¬Ø¯Ø§Ù‹ Ù…Ù† Ø§Ù„Ø¹Ù†Ø§ØµØ± Ù„Ø°Ø§ Ù„Ø§ ÙŠÙ…ÙƒÙ† ÙˆØ¶Ø¹Ù‡Ø§ Ù�ÙŠ Ø³Ù„Ø© Ø§Ù„Ù…Ù‡Ù…Ù„Ø§Øª.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Ù…Ù†Ø·Ù‚Ø© Ø§Ù„Ù†Øµ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ø¥Ù�Ø±Ø§Øº Ø§Ù„Ù…Ø¬Ù„Ø¯ "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ù„Ø§ ØªÙˆØ¬Ø¯ Ø¹Ù†Ø§ØµØ± Ù�ÙŠ Ù…Ø¬Ù„Ø¯ "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Ø§Ù„Ø£Ù�Ø¶Ù„ÙŠØ©', // from v2.1.26 added 28.6.2017
			'language'        : 'Ø§Ù„Ù„ØºØ©', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'ØªÙ‡ÙŠØ¦Ø© Ø§Ù„Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù„Ù…Ø­Ù�ÙˆØ¸Ø© Ù�ÙŠ Ù‡Ø°Ø§ Ø§Ù„Ù…ØªØµÙ�Ø­', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø´Ø±ÙŠØ· Ø§Ù„Ø£Ø¯ÙˆØ§Øª', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Ø­Ø±ÙˆÙ� Ù…ØªØ¨Ù‚ÙŠØ©.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 Ø³Ø·ÙˆØ± Ù…ØªØ¨Ù‚ÙŠØ©.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Ø§Ù„Ù…Ø¬Ù…ÙˆØ¹', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Ø­Ø¬Ù… Ù…Ù„Ù� ØªÙ‚Ø±ÙŠØ¨ÙŠ', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Ø§Ù„ØªØ±ÙƒÙŠØ² Ø¹Ù„Ù‰ Ø¹Ù†ØµØ± Ø§Ù„Ø­ÙˆØ§Ø± Ù…Ø¹ ØªÙ…Ø±ÙŠØ± Ø§Ù„Ù…Ø§ÙˆØ³',  // from v2.1.30 added 2.11.2017
			'select'          : 'Ø­Ø¯Ø¯', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ø§Ù„Ø¥Ø¬Ø±Ø§Ø¡ Ø¹Ù†Ø¯ ØªØ­Ø¯ÙŠØ¯ Ø§Ù„Ù…Ù„Ù�', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ø§Ù„Ù�ØªØ­ Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù… Ø§Ù„Ù…Ø­Ø±Ø± Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù… Ø¢Ø®Ø± Ù…Ø±Ø©', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Ø¹ÙƒØ³ Ø§Ù„Ø§Ø®ØªÙŠØ§Ø±', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ø£Ù†Ùƒ ØªØ±ÙŠØ¯ Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ© $1 Ø¹Ù†Ø§ØµØ± Ù…Ø­Ø¯Ø¯Ø© Ù…Ø«Ù„ $2ØŸ<br/>Ù‡Ø°Ø§ Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø§Ù„ØªØ±Ø§Ø¬Ø¹ Ø¹Ù†Ù‡ !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Ø¥Ø¹Ø§Ø¯Ø© ØªØ³Ù…ÙŠØ© Ø§Ù„Ø­Ø²Ù…Ø©', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Ø±Ù‚Ù…', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ø¥Ø¶Ø§Ù�Ø© Ø¨Ø§Ø¯Ø¦Ø©', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ø¥Ø¶Ø§Ù�Ø© Ù„Ø§Ø­Ù‚Ø©', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ØªØºÙŠÙŠØ± Ø§Ù„Ø§Ù…ØªØ¯Ø§Ø¯', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù„Ø£Ø¹Ù…Ø¯Ø© (Ø¹Ø±Ø¶ Ø§Ù„Ù‚Ø§Ø¦Ù…Ø©)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Ø³ØªÙ†Ø¹ÙƒØ³ Ø¬Ù…ÙŠØ¹ Ø§Ù„ØªØºÙŠÙŠØ±Ø§Øª Ø¹Ù„Ù‰ Ø§Ù„Ù�ÙˆØ± Ø¹Ù„Ù‰ Ø§Ù„Ø£Ø±Ø´ÙŠÙ�.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Ù„Ù† ØªÙ†Ø¹ÙƒØ³ Ø£ÙŠ ØªØºÙŠÙŠØ±Ø§Øª Ø­ØªÙ‰ ÙŠØªÙ… Ù�Ùƒ Ù‡Ø°Ø§ Ø§Ù„Ù…Ø¬Ù„Ø¯.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Ø§Ù„Ù…Ø¬Ù„Ø¯ (Ø§Ù„Ù…Ø¬Ù„Ø¯Ø§Øª) Ø§Ù„ØªØ§Ù„ÙŠØ© Ø§Ù„Ù…Ø±ÙƒØ¨Ø© Ø¹Ù„Ù‰ Ù‡Ø°Ø§ Ø§Ù„Ù…Ø¬Ù„Ø¯ ØºÙŠØ± Ù…Ø«Ø¨ØªØ© Ø£ÙŠØ¶Ø§Ù‹. Ù‡Ù„ Ø£Ù†Øª Ù…ØªØ£ÙƒØ¯ Ù…Ù† Ø¥Ù„ØºØ§Ø¡ ØªØ­Ù…ÙŠÙ„Ù‡ØŸ', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Ù…Ø¹Ù„ÙˆÙ…Ø§Øª Ø§Ù„ØªØ­Ø¯ÙŠØ¯', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Ø®ÙˆØ§Ø±Ø²Ù…ÙŠØ§Øª Ù„Ø¥Ø¸Ù‡Ø§Ø± ØªØ¬Ø²Ø¦Ø© Ø§Ù„Ù…Ù„Ù�', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø¹Ù„ÙˆÙ…Ø§Øª (Ù„ÙˆØ­Ø© Ù…Ø¹Ù„ÙˆÙ…Ø§Øª Ø§Ù„ØªØ­Ø¯ÙŠØ¯)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ø§Ø¶ØºØ· Ù…Ø±Ø© Ø£Ø®Ø±Ù‰ Ù„Ù„Ø®Ø±ÙˆØ¬.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Ø´Ø±ÙŠØ· Ø§Ù„Ø£Ø¯ÙˆØ§Øª', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ù…Ø³Ø§Ø­Ø© Ø§Ù„Ø¹Ù…Ù„', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Ø§Ù„Ø­ÙˆØ§Ø±', // from v2.1.38 added 4.4.2018
			'all'             : 'Ø§Ù„ÙƒÙ„', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ø­Ø¬Ù… Ø§Ù„Ø£ÙŠÙ‚ÙˆÙ†Ø© (Ø¹Ø±Ø¶ Ø§Ù„Ø£ÙŠÙ‚ÙˆÙ†Ø§Øª)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ø§Ù�ØªØ­ Ù†Ø§Ù�Ø°Ø© Ø§Ù„Ù…Ø­Ø±Ø± Ø§Ù„Ù…ÙƒØ¨Ø±Ø©', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ù†Ø¸Ø±Ø§Ù‹ Ù„Ø¹Ø¯Ù… ØªÙˆÙ�Ø± Ø§Ù„ØªØ­ÙˆÙŠÙ„ Ø¨ÙˆØ§Ø³Ø·Ø© API Ø­Ø§Ù„ÙŠØ§Ù‹ ØŒ ÙŠØ±Ø¬Ù‰ Ø§Ù„ØªØ­ÙˆÙŠÙ„ Ø¹Ù„Ù‰ Ù…ÙˆÙ‚Ø¹ Ø§Ù„ÙˆÙŠØ¨.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Ø¨Ø¹Ø¯ Ø§Ù„ØªØ­ÙˆÙŠÙ„ ØŒ ÙŠØ¬Ø¨ Ø£Ù† ØªÙ‚ÙˆÙ… Ø¨Ø§Ù„ØªØ­Ù…ÙŠÙ„ Ù…Ø¹ Ø¹Ù†ÙˆØ§Ù† Ø±Ø§Ø¨Ø· Ø§Ù„Ø¹Ù†ØµØ± Ø£Ùˆ Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ø°ÙŠ ØªÙ… ØªÙ†Ø²ÙŠÙ„Ù‡ Ù„Ø­Ù�Ø¸ Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ù…Ø­ÙˆÙ„.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'ØªØ­ÙˆÙŠÙ„ Ø¹Ù„Ù‰ Ù…ÙˆÙ‚Ø¹ $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'ØªÙƒØ§Ù…Ù„Ø§Øª', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ÙŠØ­ØªÙˆÙŠ elFinder Ø¹Ù„Ù‰ Ø§Ù„Ø®Ø¯Ù…Ø§Øª Ø§Ù„Ø®Ø§Ø±Ø¬ÙŠØ© Ø§Ù„ØªØ§Ù„ÙŠØ© Ø§Ù„Ù…ØªÙƒØ§Ù…Ù„Ø©. ÙŠØ±Ø¬Ù‰ Ø§Ù„ØªØ­Ù‚Ù‚ Ù…Ù† Ø´Ø±ÙˆØ· Ø§Ù„Ø§Ø³ØªØ®Ø¯Ø§Ù… ÙˆØ³ÙŠØ§Ø³Ø© Ø§Ù„Ø®ØµÙˆØµÙŠØ© ÙˆÙ…Ø§ Ø¥Ù„Ù‰ Ø°Ù„Ùƒ Ù‚Ø¨Ù„ Ø§Ø³ØªØ®Ø¯Ø§Ù…Ù‡Ø§.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Ø¥Ø¸Ù‡Ø§Ø± Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø®Ù�ÙŠØ©', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ø¥Ø®Ù�Ø§Ø¡ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø®Ù�ÙŠØ©', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Ø¥Ø¸Ù‡Ø§Ø± / Ø¥Ø®Ù�Ø§Ø¡ Ø§Ù„Ø¹Ù†Ø§ØµØ± Ø§Ù„Ù…Ø®Ù�ÙŠØ©', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Ø£Ù†ÙˆØ§Ø¹ Ø§Ù„Ù…Ù„Ù�Ø§Øª Ù„ØªÙ�Ø¹ÙŠÙ„Ù‡Ø§ Ù…Ø¹ "Ù…Ù„Ù� Ø¬Ø¯ÙŠØ¯"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Ù†ÙˆØ¹ Ø§Ù„Ù…Ù„Ù� Ø§Ù„Ù†ØµÙŠ', // from v2.1.41 added 7.8.2018
			'add'             : 'Ø¥Ø¶Ø§Ù�Ø©', // from v2.1.41 added 7.8.2018
			'theme'           : 'Ø§Ù„Ø«ÙŠÙ…', // from v2.1.43 added 19.10.2018
			'default'         : 'Ø§Ù„Ø§Ù�ØªØ±Ø§Ø¶ÙŠ', // from v2.1.43 added 19.10.2018
			'description'     : 'Ø§Ù„ÙˆØµÙ�', // from v2.1.43 added 19.10.2018
			'website'         : 'Ø§Ù„Ù…ÙˆÙ‚Ø¹ Ø§Ù„Ø§Ù„ÙƒØªØ±ÙˆÙ†ÙŠ', // from v2.1.43 added 19.10.2018
			'author'          : 'Ø§Ù„Ù…Ø¤Ù„Ù�', // from v2.1.43 added 19.10.2018
			'email'           : 'Ø§Ù„Ø¨Ø±ÙŠØ¯ Ø§Ù„Ø§Ù„ÙƒØªØ±ÙˆÙ†ÙŠ', // from v2.1.43 added 19.10.2018
			'license'         : 'Ø§Ù„Ø±Ø®ØµØ©', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ù„Ø§ ÙŠÙ…ÙƒÙ† Ø­Ù�Ø¸ Ù‡Ø°Ø§ Ø§Ù„Ø¹Ù†ØµØ±. Ù„ØªØ¬Ù†Ø¨ Ù�Ù‚Ø¯Ø§Ù† Ø§Ù„ØªØ­Ø±ÙŠØ±Ø§Øª Ø§Ù„ØªÙŠ ØªØ­ØªØ§Ø¬Ù‡Ø§ Ù„Ù„ØªØµØ¯ÙŠØ± Ø¥Ù„Ù‰ Ø¬Ù‡Ø§Ø² Ø§Ù„ÙƒÙ…Ø¨ÙŠÙˆØªØ± Ø§Ù„Ø®Ø§Øµ Ø¨Ùƒ.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Ø§Ù†Ù‚Ø± Ù†Ù‚Ø±Ø§Ù‹ Ù…Ø²Ø¯ÙˆØ¬Ø§Ù‹ Ù�ÙˆÙ‚ Ø§Ù„Ù…Ù„Ù� Ù„ØªØ­Ø¯ÙŠØ¯Ù‡.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Ø§Ø³ØªØ®Ø¯Ø§Ù… ÙˆØ¶Ø¹ Ù…Ù„Ø¡ Ø§Ù„Ø´Ø§Ø´Ø©', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'ØºÙŠØ± Ù…Ø¹Ø±ÙˆÙ�',
			'kindRoot'        : 'Ø¬Ø°Ø± Ø§Ù„Ø­Ø¬Ù…', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Ù…Ø¬Ù„Ø¯',
			'kindSelects'     : 'Ù…Ø®ØªØ§Ø±Ø§Øª', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ø§Ø³Ù… Ù…Ø³ØªØ¹Ø§Ø±',
			'kindAliasBroken' : 'Ø§Ø³Ù… Ù…Ø³ØªØ¹Ø§Ø± Ù…ÙƒØ³ÙˆØ±',
			// applications
			'kindApp'         : 'Ø§Ù„ØªØ·Ø¨ÙŠÙ‚',
			'kindPostscript'  : 'ÙˆØ«ÙŠÙ‚Ø© Postscript',
			'kindMsOffice'    : 'ÙˆØ«ÙŠÙ‚Ø© Microsoft Office',
			'kindMsWord'      : 'ÙˆØ«ÙŠÙ‚Ø© Microsoft Word',
			'kindMsExcel'     : 'ÙˆØ«ÙŠÙ‚Ø© Microsoft Excel',
			'kindMsPP'        : 'Ø¹Ø±Ø¶ ØªÙ‚Ø¯ÙŠÙ…ÙŠ Microsoft Powerpoint',
			'kindOO'          : 'ÙˆØ«ÙŠÙ‚Ø© Open Office',
			'kindAppFlash'    : 'ØªØ·Ø¨ÙŠÙ‚ Ù�Ù„Ø§Ø´',
			'kindPDF'         : 'ØªÙ†Ø³ÙŠÙ‚ Ø§Ù„ÙˆØ«Ø§Ø¦Ù‚ Ø§Ù„Ù…Ø­Ù…ÙˆÙ„Ø© (PDF)',
			'kindTorrent'     : 'Ù…Ù„Ù� Bittorrent ',
			'kind7z'          : 'Ø£Ø±Ø´ÙŠÙ�  7z',
			'kindTAR'         : 'Ø£Ø±Ø´ÙŠÙ� TAR',
			'kindGZIP'        : 'Ø£Ø±Ø´ÙŠÙ� GZIP',
			'kindBZIP'        : 'Ø£Ø±Ø´ÙŠÙ� BZIP',
			'kindXZ'          : 'Ø£Ø±Ø´ÙŠÙ� XZ',
			'kindZIP'         : 'Ø£Ø±Ø´ÙŠÙ� ZIP',
			'kindRAR'         : 'Ø£Ø±Ø´ÙŠÙ� RAR',
			'kindJAR'         : 'Ø£Ø±Ø´ÙŠÙ� Java JAR',
			'kindTTF'         : 'Ø®Ø· True Type ',
			'kindOTF'         : 'Ø®Ø· Open Type ',
			'kindRPM'         : 'Ø­Ø²Ù…Ø© RPM',
			// fonts
			'kindFont'        : 'Ø®Ø·',
			'kindSFNT'        : 'Ø®Ø· SFNT',
			'kindEOT'         : 'Ø®Ø· Embedded Open Type',
			'kindWOFF'        : 'Ø®Ø· Web Open Font Format',
			'kindWOFF2'       : 'Ø®Ø· Web Open Font Format 2',
			// texts
			'kindText'        : 'ÙˆØ«ÙŠÙ‚Ø© Ù†ØµÙŠØ©',
			'kindTextPlain'   : 'Ù†Øµ Ø¹Ø§Ø¯ÙŠ',
			'kindPHP'         : 'Ù…ØµØ¯Ø± PHP',
			'kindCSS'         : 'ÙˆØ±Ù‚Ø© Ø§Ù„Ø£Ù†Ù…Ø§Ø· Ø§Ù„Ù…ØªØªØ§Ù„ÙŠØ©',
			'kindHTML'        : 'ÙˆØ«ÙŠÙ‚Ø© HTML',
			'kindJS'          : 'Ù…ØµØ¯Ø± Javascript',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'Ù…ØµØ¯Ø± C',
			'kindCHeader'     : 'Ù…ØµØ¯Ø± C header',
			'kindCPP'         : 'Ù…ØµØ¯Ø± C++',
			'kindCPPHeader'   : 'Ù…ØµØ¯Ø± C++ header',
			'kindShell'       : 'Ù…ØµØ¯Ø± Unix shell',
			'kindPython'      : 'Ù…ØµØ¯Ø± Python',
			'kindJava'        : 'Ù…ØµØ¯Ø± Java',
			'kindRuby'        : 'Ù…ØµØ¯Ø± Ruby',
			'kindPerl'        : 'Ù…ØµØ¯Ø± Perl',
			'kindSQL'         : 'Ù…ØµØ¯Ø± SQL',
			'kindXML'         : 'ÙˆØ«ÙŠÙ‚Ø© XML',
			'kindAWK'         : 'Ù…ØµØ¯Ø± AWK',
			'kindCSV'         : 'Ù…Ù„Ù� CSV',
			'kindDOCBOOK'     : 'ÙˆØ«ÙŠÙ‚Ø© Docbook XML',
			'kindMarkdown'    : 'Ù†Øµ Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'ØµÙˆØ±Ø©',
			'kindBMP'         : 'ØµÙˆØ±Ø© BMP',
			'kindJPEG'        : 'ØµÙˆØ±Ø© JPEG',
			'kindGIF'         : 'ØµÙˆØ±Ø© GIF',
			'kindPNG'         : 'ØµÙˆØ±Ø© PNG',
			'kindTIFF'        : 'ØµÙˆØ±Ø© TIFF',
			'kindTGA'         : 'ØµÙˆØ±Ø© TGA',
			'kindPSD'         : 'ØµÙˆØ±Ø© Adobe Photoshop',
			'kindXBITMAP'     : 'ØµÙˆØ±Ø© X bitmap',
			'kindPXM'         : 'ØµÙˆØ±Ø© Pixelmator',
			// media
			'kindAudio'       : 'ÙˆØ³Ø§Ø¦Ø· ØµÙˆØª',
			'kindAudioMPEG'   : 'Ù…Ù„Ù� ØµÙˆØªÙŠ MPEG ',
			'kindAudioMPEG4'  : 'Ù…Ù„Ù� ØµÙˆØªÙŠ MPEG-4',
			'kindAudioMIDI'   : 'Ù…Ù„Ù� ØµÙˆØªÙŠ MIDI',
			'kindAudioOGG'    : 'Ù…Ù„Ù� ØµÙˆØªÙŠ Ogg Vorbis',
			'kindAudioWAV'    : 'Ù…Ù„Ù� ØµÙˆØªÙŠ WAV',
			'AudioPlaylist'   : 'Ù‚Ø§Ø¦Ù…Ø© ØªØ´ØºÙŠÙ„ MP3',
			'kindVideo'       : 'ÙˆØ³Ø§Ø¦Ø· Ù�ÙŠØ¯ÙŠÙˆ',
			'kindVideoDV'     : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ DV',
			'kindVideoMPEG'   : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ MPEG',
			'kindVideoMPEG4'  : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ MPEG-4',
			'kindVideoAVI'    : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ AVI',
			'kindVideoMOV'    : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ Quick Time',
			'kindVideoWM'     : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ Windows Media',
			'kindVideoFlash'  : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ Flash',
			'kindVideoMKV'    : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ Matroska',
			'kindVideoOGG'    : 'Ù…Ù„Ù� Ù�ÙŠØ¯ÙŠÙˆ Ogg'
		}
	};
}));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                includes/File_manager/lib/js/i18n/elfinder.LANG.js                                                  0000644                 00000100361 15266052776 0015553 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * elFinder translation template
 * use this file to create new translation
 * submit new translation via https://github.com/Studio-42/elFinder/issues
 * or make a pull request
 */

/**
 * XXXXX translation
 * @author Translator Name <translator@email.tld>
 * @version 201x-xx-xx
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = {
		translator : 'Translator name &lt;translator@email.tld&gt;',
		language   : 'Language of translation in your language',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will show like: Today 12:25 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Unknown error.',
			'errUnknownCmd'        : 'Unknown command.',
			'errJqui'              : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
			'errNode'              : 'elFinder requires DOM Element to be created.',
			'errURL'               : 'Invalid elFinder configuration! URL option is not set.',
			'errAccess'            : 'Access denied.',
			'errConnect'           : 'Unable to connect to backend.',
			'errAbort'             : 'Connection aborted.',
			'errTimeout'           : 'Connection timeout.',
			'errNotFound'          : 'Backend not found.',
			'errResponse'          : 'Invalid backend response.',
			'errConf'              : 'Invalid backend configuration.',
			'errJSON'              : 'PHP JSON module not installed.',
			'errNoVolumes'         : 'Readable volumes not available.',
			'errCmdParams'         : 'Invalid parameters for command "$1".',
			'errDataNotJSON'       : 'Data is not JSON.',
			'errDataEmpty'         : 'Data is empty.',
			'errCmdReq'            : 'Backend request requires command name.',
			'errOpen'              : 'Unable to open "$1".',
			'errNotFolder'         : 'Object is not a folder.',
			'errNotFile'           : 'Object is not a file.',
			'errRead'              : 'Unable to read "$1".',
			'errWrite'             : 'Unable to write into "$1".',
			'errPerm'              : 'Permission denied.',
			'errLocked'            : '"$1" is locked and can not be renamed, moved or removed.',
			'errExists'            : 'Item named "$1" already exists.',
			'errInvName'           : 'Invalid file name.',
			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder not found.',
			'errFileNotFound'      : 'File not found.',
			'errTrgFolderNotFound' : 'Target folder "$1" not found.',
			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
			'errMkdir'             : 'Unable to create folder "$1".',
			'errMkfile'            : 'Unable to create file "$1".',
			'errRename'            : 'Unable to rename "$1".',
			'errCopyFrom'          : 'Copying files from volume "$1" not allowed.',
			'errCopyTo'            : 'Copying files to volume "$1" not allowed.',
			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload error.',  // old name - errUploadCommon
			'errUploadFile'        : 'Unable to upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No files found for upload.',
			'errUploadTotalSize'   : 'Data exceeds the maximum allowed size.', // old name - errMaxSize
			'errUploadFileSize'    : 'File exceeds maximum allowed size.', //  old name - errFileMaxSize
			'errUploadMime'        : 'File type not allowed.',
			'errUploadTransfer'    : '"$1" transfer error.',
			'errUploadTemp'        : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Unable to save "$1".',
			'errCopy'              : 'Unable to copy "$1".',
			'errMove'              : 'Unable to move "$1".',
			'errCopyInItself'      : 'Unable to copy "$1" into itself.',
			'errRm'                : 'Unable to remove "$1".',
			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Unable to extract files from "$1".',
			'errArchive'           : 'Unable to create archive.',
			'errArcType'           : 'Unsupported archive type.',
			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
			'errCmdNoSupport'      : 'Backend does not support this command.',
			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Create archive',
			'cmdback'      : 'Back',
			'cmdcopy'      : 'Copy',
			'cmdcut'       : 'Cut',
			'cmddownload'  : 'Download',
			'cmdduplicate' : 'Duplicate',
			'cmdedit'      : 'Edit file',
			'cmdextract'   : 'Extract files from archive',
			'cmdforward'   : 'Forward',
			'cmdgetfile'   : 'Select files',
			'cmdhelp'      : 'About this software',
			'cmdhome'      : 'Root',
			'cmdinfo'      : 'Get info',
			'cmdmkdir'     : 'New folder',
			'cmdmkdirin'   : 'Into New Folder', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'New file',
			'cmdopen'      : 'Open',
			'cmdpaste'     : 'Paste',
			'cmdquicklook' : 'Preview',
			'cmdreload'    : 'Reload',
			'cmdrename'    : 'Rename',
			'cmdrm'        : 'Delete',
			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find files',
			'cmdup'        : 'Go to parent folder',
			'cmdupload'    : 'Upload files',
			'cmdview'      : 'View',
			'cmdresize'    : 'Resize & Rotate',
			'cmdsort'      : 'Sort',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in new window', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Close',
			'btnSave'   : 'Save',
			'btnRm'     : 'Remove',
			'btnApply'  : 'Apply',
			'btnCancel' : 'Cancel',
			'btnNo'     : 'No',
			'btnYes'    : 'Yes',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Open folder',
			'ntffile'     : 'Open file',
			'ntfreload'   : 'Reload folder content',
			'ntfmkdir'    : 'Creating folder',
			'ntfmkfile'   : 'Creating files',
			'ntfrm'       : 'Delete items',
			'ntfcopy'     : 'Copy items',
			'ntfmove'     : 'Move items',
			'ntfprepare'  : 'Checking existing items',
			'ntfrename'   : 'Rename files',
			'ntfupload'   : 'Uploading files',
			'ntfdownload' : 'Downloading files',
			'ntfsave'     : 'Save files',
			'ntfarchive'  : 'Creating archive',
			'ntfextract'  : 'Extracting files from archive',
			'ntfsearch'   : 'Searching files',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something',
			'ntfloadimg'  : 'Loading image',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unknown',
			'Today'       : 'Today',
			'Yesterday'   : 'Yesterday',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'May',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun',
			'Mon'         : 'Mon',
			'Tue'         : 'Tue',
			'Wed'         : 'Wed',
			'Thu'         : 'Thu',
			'Fri'         : 'Fri',
			'Sat'         : 'Sat',

			/******************************** sort variants ********************************/
			'sortname'          : 'by name',
			'sortkind'          : 'by kind',
			'sortsize'          : 'by size',
			'sortdate'          : 'by date',
			'sortFoldersFirst'  : 'Folders first',
			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation required',
			'confirmRm'       : 'Are you sure you want to permanently remove items?<br/>This cannot be undone!',
			'confirmRepl'     : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)',
			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Apply to all',
			'name'            : 'Name',
			'size'            : 'Size',
			'perms'           : 'Permissions',
			'modify'          : 'Modified',
			'kind'            : 'Kind',
			'read'            : 'read',
			'write'           : 'write',
			'noaccess'        : 'no access',
			'and'             : 'and',
			'unknown'         : 'unknown',
			'selectall'       : 'Select all items',
			'selectfiles'     : 'Select item(s)',
			'selectffile'     : 'Select first item',
			'selectlfile'     : 'Select last item',
			'viewlist'        : 'List view',
			'viewicons'       : 'Icons view',
			'viewSmall'       : 'Small icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Places',
			'calc'            : 'Calculate',
			'path'            : 'Path',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Locked',
			'dim'             : 'Dimensions',
			'files'           : 'Files',
			'folders'         : 'Folders',
			'items'           : 'Items',
			'yes'             : 'yes',
			'no'              : 'no',
			'link'            : 'Link',
			'searcresult'     : 'Search results',
			'selected'        : 'selected items',
			'about'           : 'About',
			'shortcuts'       : 'Shortcuts',
			'help'            : 'Help',
			'webfm'           : 'Web file manager',
			'ver'             : 'Version',
			'protocolver'     : 'protocol version',
			'homepage'        : 'Project home',
			'docs'            : 'Documentation',
			'github'          : 'Fork us on GitHub',
			'twitter'         : 'Follow us on Twitter',
			'facebook'        : 'Join us on Facebook',
			'team'            : 'Team',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Icons',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'Drop files here',
			'or'              : 'or',
			'selectForUpload' : 'Select files',
			'moveFiles'       : 'Move items',
			'copyFiles'       : 'Copy items',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Scale',
			'width'           : 'Width',
			'height'          : 'Height',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Owner', // from v2.1 added 20.6.2015
			'group'           : 'Group', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Execute', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar settings', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 lines left.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office document',
			'kindMsWord'      : 'Microsoft Word document',
			'kindMsExcel'     : 'Microsoft Excel document',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office document',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'Text document',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML document',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML document',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'BMP image',
			'kindJPEG'        : 'JPEG image',
			'kindGIF'         : 'GIF Image',
			'kindPNG'         : 'PNG Image',
			'kindTIFF'        : 'TIFF image',
			'kindTGA'         : 'TGA image',
			'kindPSD'         : 'Adobe Photoshop image',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}));

                                                                                                                                                                                                                                                                               includes/File_manager/lib/js/i18n/elfinder.sk.js                                                    0000644                 00000104712 15266052777 0015454 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Slovak translation
 * @author RobiNN <robo@kelcak.com>
 * @author Jakub ÄŽuraÅ¡ <jkblmr@gmail.com>
 * @version 2021-06-10
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sk = {
		translator : 'RobiNN &lt;robo@kelcak.com&gt;, Jakub ÄŽuraÅ¡ &lt;jkblmr@gmail.com&gt;',
		language   : 'SlovenÄ�ina',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 10.06.2021 23:35
		fancyDateFormat : '$1 H:i', // will show like: Dnes 23:35
		nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233522
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Chyba',
			'errUnknown'           : 'NeznÃ¡ma chyba.',
			'errUnknownCmd'        : 'NeznÃ¡my prÃ­kaz.',
			'errJqui'              : 'NesprÃ¡vna jQuery UI konfigurÃ¡cia. Selectable, draggable a droppable musia byÅ¥ naÄ�Ã­tanÃ©.',
			'errNode'              : 'elFinder vyÅ¾aduje vytvorenie DOM elementu.',
			'errURL'               : 'NesprÃ¡vna elFinder konfigurÃ¡cia! URL nie je definovanÃ¡.',
			'errAccess'            : 'PrÃ­stup zamietnutÃ½.',
			'errConnect'           : 'Nepodarilo sa pripojiÅ¥ do backendu.',
			'errAbort'             : 'Spojenie bolo preruÅ¡enÃ©.',
			'errTimeout'           : 'ÄŒasovÃ½ limit vyprÅ¡al.',
			'errNotFound'          : 'Backend nenÃ¡jdenÃ½.',
			'errResponse'          : 'NesprÃ¡vna backend odpoveÄ�.',
			'errConf'              : 'NesprÃ¡vna backend konfigurÃ¡cia.',
			'errJSON'              : 'PHP JSON modul nie je nainÅ¡talovanÃ½.',
			'errNoVolumes'         : 'Nie sÃº dostupnÃ© Å¾iadne Ä�itateÄ¾nÃ© mÃ©dia.',
			'errCmdParams'         : 'NesprÃ¡vne parametre pre prÃ­kaz "$1".',
			'errDataNotJSON'       : 'DÃ¡ta nie sÃº formÃ¡tu JSON.',
			'errDataEmpty'         : 'PrÃ¡zdne dÃ¡ta.',
			'errCmdReq'            : 'Backend poÅ¾iadavka poÅ¾aduje nÃ¡zov prÃ­kazu.',
			'errOpen'              : 'Nie je moÅ¾nÃ© otvoriÅ¥ "$1".',
			'errNotFolder'         : 'Objekt nie je prieÄ�inok.',
			'errNotFile'           : 'Objekt nie je sÃºbor.',
			'errRead'              : 'Nie je moÅ¾nÃ© preÄ�Ã­taÅ¥ "$1".',
			'errWrite'             : 'Nie je moÅ¾nÃ© pÃ­saÅ¥ do "$1".',
			'errPerm'              : 'PrÃ­stup zamietnutÃ½.',
			'errLocked'            : '"$1" je uzamknutÃ½ a nemÃ´Å¾e byÅ¥ premenovanÃ½, presunutÃ½ alebo odstrÃ¡nenÃ½.',
			'errExists'            : 'PoloÅ¾ka s nÃ¡zvom "$1" uÅ¾ existuje.',
			'errInvName'           : 'NeplatnÃ½ nÃ¡zov sÃºboru.',
			'errInvDirname'        : 'NeplatnÃ½ nÃ¡zov prieÄ�inka.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'PrieÄ�inok nebol nÃ¡jdenÃ½.',
			'errFileNotFound'      : 'SÃºbor nenÃ¡jdenÃ½.',
			'errTrgFolderNotFound' : 'CieÄ¾ovÃ½ prieÄ�inok "$1" sa nenaÅ¡iel.',
			'errPopup'             : 'PrehliadaÄ� zabrÃ¡nil otvoreniu vyskakovacieho okna. Pre otvorenie sÃºboru povoÄ¾te vyskakovacie oknÃ¡.',
			'errMkdir'             : 'Nepodarilo sa vytvoriÅ¥ prieÄ�inok "$1".',
			'errMkfile'            : 'Nepodarilo sa vytvoriÅ¥ sÃºbor "$1".',
			'errRename'            : 'Nepodarilo sa premenovaÅ¥ "$1".',
			'errCopyFrom'          : 'KopÃ­rovanie sÃºborov z mÃ©dia "$1" nie je povolenÃ©.',
			'errCopyTo'            : 'KopÃ­rovanie sÃºborov na mÃ©dium "$1" nie je povolenÃ©.',
			'errMkOutLink'         : 'Nie je moÅ¾nÃ© vytvoriÅ¥ odkaz mimo koreÅˆovÃ©ho zvÃ¤zku.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Chyba pri nahrÃ¡vanÃ­.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nepodarilo sa nahraÅ¥ "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Neboli nÃ¡jdenÃ© Å¾iadne sÃºbory na nahranie.',
			'errUploadTotalSize'   : 'DÃ¡ta prekraÄ�ujÃº maximÃ¡lnu povolenÃº veÄ¾kosÅ¥.', // old name - errMaxSize
			'errUploadFileSize'    : 'SÃºbor prekraÄ�uje maximÃ¡lnu povolenÃº veÄ¾kosÅ¥.', //  old name - errFileMaxSize
			'errUploadMime'        : 'NepovolenÃ½ typ sÃºboru.',
			'errUploadTransfer'    : 'ProblÃ©m s nahrÃ¡vanÃ­m "$1".',
			'errUploadTemp'        : 'Nepodarilo sa vytvoriÅ¥ doÄ�asnÃ½ sÃºbor na nahranie.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" na tomto mieste uÅ¾ existuje a nemÃ´Å¾e byÅ¥ nahradenÃ½ objektom inÃ©ho typu.', // new
			'errReplace'           : 'Nie je moÅ¾nÃ© nahradiÅ¥ "$1".',
			'errSave'              : 'Nie je moÅ¾nÃ© uloÅ¾iÅ¥ "$1".',
			'errCopy'              : 'Nie je moÅ¾nÃ© kopÃ­rovaÅ¥ "$1".',
			'errMove'              : 'Nie je moÅ¾nÃ© preniesÅ¥ "$1".',
			'errCopyInItself'      : 'Nie je moÅ¾nÃ© kopÃ­rovaÅ¥ "$1" do seba.',
			'errRm'                : 'Nie je moÅ¾nÃ© vymazaÅ¥ "$1".',
			'errTrash'             : 'Nie je moÅ¾nÃ© presunÃºÅ¥ do koÅ¡a.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nie je moÅ¾nÃ© odstrÃ¡niÅ¥ zdrojovÃ½/Ã© sÃºbor/y.',
			'errExtract'           : 'Nie je moÅ¾nÃ© extrahovaÅ¥ sÃºbory z "$1".',
			'errArchive'           : 'Nie je moÅ¾nÃ© vytvoriÅ¥ archÃ­v.',
			'errArcType'           : 'NepodporovanÃ½ typ archÃ­vu.',
			'errNoArchive'         : 'SÃºbor nie je archÃ­v alebo mÃ¡ nepodporovanÃ½ typ archÃ­vu.',
			'errCmdNoSupport'      : 'Backend nepodporuje tento prÃ­kaz.',
			'errReplByChild'       : 'PrieÄ�inok "$1" nemÃ´Å¾e byÅ¥ nahradenÃ½ poloÅ¾kou, ktorÃº uÅ¾ obsahuje.',
			'errArcSymlinks'       : 'Z bezpeÄ�nostnÃ½ch dÃ´vodov bolo zakÃ¡zanÃ© extrahovanie archÃ­vov obsahujÃºcich symlinky, alebo sÃºborov s nepovolenÃ½mi nÃ¡zvami.', // edited 24.06.2012
			'errArcMaxSize'        : 'SÃºbory archÃ­vu prekraÄ�ujÃº maximÃ¡lnu povolenÃº veÄ¾kosÅ¥.',
			'errResize'            : 'Nie je moÅ¾nÃ© zmeniÅ¥ veÄ¾kosÅ¥ "$1".',
			'errResizeDegree'      : 'NeplatnÃ½ stupeÅˆ otoÄ�enia.',  // added 7.3.2013
			'errResizeRotate'      : 'Nie je moÅ¾nÃ© otoÄ�iÅ¥ obrÃ¡zok.',  // added 7.3.2013
			'errResizeSize'        : 'NeplatnÃ¡ veÄ¾kosÅ¥ obrÃ¡zka.',  // added 7.3.2013
			'errResizeNoChange'    : 'VeÄ¾kosÅ¥ obrÃ¡zku sa nezmenila.',  // added 7.3.2013
			'errUsupportType'      : 'NepodporovanÃ½ typ sÃºboru.',
			'errNotUTF8Content'    : 'SÃºbor "$1" nie je v UTF-8 a nemÃ´Å¾e byÅ¥ upravenÃ½.',  // added 9.11.2011
			'errNetMount'          : 'Nie je moÅ¾nÃ© pripojiÅ¥ "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'NepodporovanÃ½ protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'PripÃ¡janie zlyhalo.',         // added 17.04.2012
			'errNetMountHostReq'   : 'HosÅ¥ je poÅ¾adovanÃ½.', // added 18.04.2012
			'errSessionExpires'    : 'VaÅ¡a relÃ¡cia vyprÅ¡ala kvÃ´li neÄ�innosti.',
			'errCreatingTempDir'   : 'Nepodarilo sa vytvoriÅ¥ doÄ�asnÃ½ adresÃ¡r: "$1"',
			'errFtpDownloadFile'   : 'Nie je moÅ¾nÃ© stiahnuÅ¥ sÃºbor z FTP: "$1"',
			'errFtpUploadFile'     : 'Nie je moÅ¾nÃ© nahraÅ¥ sÃºbor na FTP: "$1"',
			'errFtpMkdir'          : 'NedÃ¡ sa vytvoriÅ¥ vzdialenÃ½ adresÃ¡r na FTP: "$1"',
			'errArchiveExec'       : 'Chyba pri archivÃ¡cii sÃºborov: "$1"',
			'errExtractExec'       : 'Chyba pri extrahovanÃ­ sÃºborov: "$1"',
			'errNetUnMount'        : 'Nepodarilo sa odpojiÅ¥', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nie je prevoditeÄ¾nÃ½ na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'VyskÃºÅ¡ajte modernÃ½ prehliadaÄ�, ak chcete nahraÅ¥ prieÄ�inok.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'VyprÅ¡al Ä�asovÃ½ limit pri hÄ¾adanÃ­ "$1". VÃ½sledok vyhÄ¾adÃ¡vania je Ä�iastoÄ�nÃ½.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'OpÃ¤tovnÃ© povolenie je potrebnÃ©.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'MaximÃ¡lny poÄ�et voliteÄ¾nÃ½ch poloÅ¾iek je $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nepodarilo sa obnoviÅ¥ z koÅ¡a. CieÄ¾ obnovenia nie je moÅ¾nÃ© identifikovaÅ¥.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor tohto typu sÃºboru nebol nÃ¡jdenÃ½.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Vyskytla sa chyba na strane servera.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nepodarilo sa vyprÃ¡zdniÅ¥ prieÄ�inok "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'ExistujÃº eÅ¡te Ä�alÅ¡ie $1 chyby.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'MÃ´Å¾ete vytvoriÅ¥ aÅ¾ $1 prieÄ�inkov naraz.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'VytvoriÅ¥ archÃ­v',
			'cmdback'      : 'SpÃ¤Å¥',
			'cmdcopy'      : 'KopÃ­rovaÅ¥',
			'cmdcut'       : 'VystrihnÃºÅ¥',
			'cmddownload'  : 'StiahnuÅ¥',
			'cmdduplicate' : 'DuplikovaÅ¥',
			'cmdedit'      : 'UpraviÅ¥ sÃºbor',
			'cmdextract'   : 'ExtrahovaÅ¥ sÃºbory z archÃ­vu',
			'cmdforward'   : 'ÄŽalej',
			'cmdgetfile'   : 'VybraÅ¥ sÃºbory',
			'cmdhelp'      : 'O tomto softvÃ©ri',
			'cmdhome'      : 'Domov',
			'cmdinfo'      : 'Info',
			'cmdmkdir'     : 'NovÃ½ prieÄ�inok',
			'cmdmkdirin'   : 'Do novej zloÅ¾ky', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'NovÃ½ sÃºbor',
			'cmdopen'      : 'OtvoriÅ¥',
			'cmdpaste'     : 'VloÅ¾iÅ¥',
			'cmdquicklook' : 'NÃ¡hÄ¾ad',
			'cmdreload'    : 'ObnoviÅ¥',
			'cmdrename'    : 'PremenovaÅ¥',
			'cmdrm'        : 'VymazaÅ¥',
			'cmdtrash'     : 'Do koÅ¡a', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'ObnoviÅ¥', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'NÃ¡jsÅ¥ sÃºbory',
			'cmdup'        : 'PrejsÅ¥ do nadradenÃ©ho prieÄ�inka',
			'cmdupload'    : 'NahraÅ¥ sÃºbory',
			'cmdview'      : 'PozrieÅ¥',
			'cmdresize'    : 'ZmeniÅ¥ veÄ¾kosÅ¥ obrÃ¡zku',
			'cmdsort'      : 'ZoradiÅ¥',
			'cmdnetmount'  : 'PripojiÅ¥ sieÅ¥ovÃ© mÃ©dium', // added 18.04.2012
			'cmdnetunmount': 'OdpojiÅ¥', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Do umiestnenÃ­', // added 28.12.2014
			'cmdchmod'     : 'ZmeniÅ¥ reÅ¾im', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'OtvoriÅ¥ prieÄ�inok', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'ResetovaÅ¥ Å¡Ã­rku stÄºpca', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'CelÃ¡ obrazovka', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'PosÃºvaÅ¥', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'VyprÃ¡zdniÅ¥ prieÄ�inok', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Krok spÃ¤Å¥', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'VykonaÅ¥ znova', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencie', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'VybraÅ¥ vÅ¡etko', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'NiÄ� nevyberaÅ¥', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'InvertovaÅ¥ vÃ½ber', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'OtvoriÅ¥ v novom okne', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'SkryÅ¥ (PredvoÄ¾ba)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'ZavrieÅ¥',
			'btnSave'   : 'UloÅ¾iÅ¥',
			'btnRm'     : 'VymazaÅ¥',
			'btnApply'  : 'PouÅ¾iÅ¥',
			'btnCancel' : 'ZruÅ¡iÅ¥',
			'btnNo'     : 'Nie',
			'btnYes'    : 'Ã�no',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'PripojiÅ¥',  // added 18.04.2012
			'btnApprove': 'Ã�sÅ¥ na $1 & schvÃ¡liÅ¥', // from v2.1 added 26.04.2012
			'btnUnmount': 'OdpojiÅ¥', // from v2.1 added 30.04.2012
			'btnConv'   : 'PreviesÅ¥', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
			'btnVolume' : 'MÃ©dium',    // from v2.1 added 22.5.2015
			'btnAll'    : 'VÅ¡etko',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
			'btnFileName':'NÃ¡zov sÃºboru',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'UloÅ¾iÅ¥ & zavrieÅ¥', // from v2.1 added 12.6.2015
			'btnBackup' : 'ZÃ¡lohovaÅ¥', // fromv2.1 added 28.11.2015
			'btnRename'    : 'PremenovaÅ¥',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'PremenovaÅ¥ vÅ¡etko', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'PredchÃ¡dzajÃºce ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'ÄŽalÅ¡ie ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'UloÅ¾iÅ¥ ako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'OtvÃ¡ranie prieÄ�inka',
			'ntffile'     : 'OtvÃ¡ranie sÃºboru',
			'ntfreload'   : 'Znovu-naÄ�Ã­tanie obsahu prieÄ�inka',
			'ntfmkdir'    : 'VytvÃ¡ranie prieÄ�inka',
			'ntfmkfile'   : 'VytvÃ¡ranie sÃºborov',
			'ntfrm'       : 'Vymazanie poloÅ¾iek',
			'ntfcopy'     : 'KopÃ­rovanie poloÅ¾iek',
			'ntfmove'     : 'Premiestnenie poloÅ¾iek',
			'ntfprepare'  : 'Kontrola existujÃºcich poloÅ¾iek',
			'ntfrename'   : 'Premenovanie sÃºborov',
			'ntfupload'   : 'NahrÃ¡vanie sÃºborov',
			'ntfdownload' : 'SÅ¥ahovanie sÃºborov',
			'ntfsave'     : 'UloÅ¾enie sÃºborov',
			'ntfarchive'  : 'VytvÃ¡ranie archÃ­vu',
			'ntfextract'  : 'Extrahovanie sÃºborov z archÃ­vu',
			'ntfsearch'   : 'VyhÄ¾adÃ¡vanie sÃºborov',
			'ntfresize'   : 'Zmena veÄ¾kosti obrÃ¡zkov',
			'ntfsmth'     : 'PoÄ�kajte prosÃ­m...',
			'ntfloadimg'  : 'NaÄ�Ã­tavanie obrÃ¡zka',
			'ntfnetmount' : 'PripÃ¡janie sieÅ¥ovÃ©ho mÃ©dia', // added 18.04.2012
			'ntfnetunmount': 'OdpÃ¡janie sieÅ¥ovÃ©ho mÃ©dia', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ZÃ­skanie rozmeru obrÃ¡zka', // added 20.05.2013
			'ntfreaddir'  : 'ÄŒÃ­tajÃº sa informÃ¡cie o prieÄ�inku', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ZÃ­skanie adresy URL odkazu', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Zmena sÃºboru', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Overenie nÃ¡zvu nahravanÃ©ho sÃºboru', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Vytvorenie sÃºboru na stiahnutie', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'ZÃ­skanie informÃ¡ciÃ­ o ceste', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Spracovanie nahranÃ©ho sÃºboru', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Vhadzovanie do koÅ¡a', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'VykonÃ¡vanie obnovy z koÅ¡a', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrola cieÄ¾ovÃ©ho prieÄ�inka', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ZruÅ¡iÅ¥ predchÃ¡dzajÃºcu operÃ¡ciu', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Obnovenie predchÃ¡dzajÃºceho zruÅ¡enia', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'KÃ´Å¡', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'neznÃ¡my',
			'Today'       : 'Dnes',
			'Yesterday'   : 'VÄ�era',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'JÃºl',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'JanuÃ¡r',
			'February'    : 'FebruÃ¡r',
			'March'       : 'Marec',
			'April'       : 'AprÃ­l',
			'May'         : 'MÃ¡j',
			'June'        : 'JÃºn',
			'July'        : 'JÃºl',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'OktÃ³ber',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'NedeÄ¾a',
			'Monday'      : 'Pondelok',
			'Tuesday'     : 'Utorok',
			'Wednesday'   : 'Streda',
			'Thursday'    : 'Å tvrtok',
			'Friday'      : 'Piatok',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ned',
			'Mon'         : 'Pon',
			'Tue'         : 'Ut',
			'Wed'         : 'Str',
			'Thu'         : 'Å tv',
			'Fri'         : 'Pia',
			'Sat'         : 'Sob',

			/******************************** sort variants ********************************/
			'sortname'          : 'podÄ¾a nÃ¡zvu',
			'sortkind'          : 'podÄ¾a druhu',
			'sortsize'          : 'podÄ¾a veÄ¾kosti',
			'sortdate'          : 'podÄ¾a dÃ¡tumu',
			'sortFoldersFirst'  : 'NajskÃ´r prieÄ�inky',
			'sortperm'          : 'podÄ¾a povolenia', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'podÄ¾a mÃ³du',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'podÄ¾a majiteÄ¾a',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'podÄ¾a skupiny',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'TieÅ¾ stromovÃ© zobrazenie',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NovÃ½ sÃºbor.txt', // added 10.11.2015
			'untitled folder'   : 'NovÃ½ prieÄ�inok',   // added 10.11.2015
			'Archive'           : 'NovÃ½ archÃ­v',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NovÃ½ sÃºbor.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 sÃºbor',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'PotrebnÃ© potvrdenie',
			'confirmRm'       : 'UrÄ�ite chcete vymazaÅ¥ sÃºbory?<br/>Nie je to moÅ¾nÃ© vrÃ¡tiÅ¥ spÃ¤Å¥!',
			'confirmRepl'     : 'NahradiÅ¥ starÃ½ sÃºbor za novÃ½? (Ak obsahuje prieÄ�inky, bude zlÃºÄ�enÃ©. Ak chcete zÃ¡lohovaÅ¥ a nahradiÅ¥, vyberte moÅ¾nosÅ¥ ZÃ¡lohovaÅ¥.)',
			'confirmRest'     : 'NahradiÅ¥ existujÃºcu poloÅ¾ku s poloÅ¾kou v koÅ¡i?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nie je v UTF-8<br/>PreviesÅ¥ na UTF-8?<br/>Obsah bude v UTF-8 po uloÅ¾enÃ­ konverzie.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'KÃ³dovanie tohto sÃºboru nemohlo byÅ¥ detekovanÃ©. Pre Ãºpravu doÄ�asne potrebujete previesÅ¥ na UTF-8 .<br/>ProsÃ­m, vyberte kÃ³dovanie znakov tohto sÃºboru.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Bol upravenÃ½.<br/>Ak zmeny neuloÅ¾Ã­te, stratÃ­te vykonanÃº prÃ¡cu.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Naozaj chcete presunÃºÅ¥ poloÅ¾ky do koÅ¡a?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Naozaj chcete presunÃºÅ¥ poloÅ¾ky do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'PouÅ¾iÅ¥ na vÅ¡etky',
			'name'            : 'NÃ¡zov',
			'size'            : 'VeÄ¾kosÅ¥',
			'perms'           : 'Povolenia',
			'modify'          : 'ZmenenÃ©',
			'kind'            : 'Druh',
			'read'            : 'Ä�Ã­taÅ¥',
			'write'           : 'zapisovaÅ¥',
			'noaccess'        : 'bez prÃ­stupu',
			'and'             : 'a',
			'unknown'         : 'neznÃ¡my',
			'selectall'       : 'VybraÅ¥ vÅ¡etky poloÅ¾ky',
			'selectfiles'     : 'VybraÅ¥ poloÅ¾ku(y)',
			'selectffile'     : 'VybraÅ¥ prvÃº poloÅ¾ku',
			'selectlfile'     : 'VybraÅ¥ poslednÃº poloÅ¾ku',
			'viewlist'        : 'Zoznam',
			'viewicons'       : 'Ikony',
			'viewSmall'       : 'MalÃ© ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'StrednÃ© ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'VeÄ¾kÃ© ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra veÄ¾kÃ© ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'Miesta',
			'calc'            : 'PrepoÄ�Ã­tavanie',
			'path'            : 'Cesta',
			'aliasfor'        : 'Alias pre',
			'locked'          : 'UzamknutÃ©',
			'dim'             : 'Rozmery',
			'files'           : 'SÃºbory',
			'folders'         : 'PrieÄ�inky',
			'items'           : 'PoloÅ¾ky',
			'yes'             : 'Ã¡no',
			'no'              : 'nie',
			'link'            : 'Odkaz',
			'searcresult'     : 'VÃ½sledky hÄ¾adania',
			'selected'        : 'zvolenÃ© poloÅ¾ky',
			'about'           : 'O aplikÃ¡cii',
			'shortcuts'       : 'Skratky',
			'help'            : 'Pomoc',
			'webfm'           : 'WebovÃ½ sprÃ¡vca sÃºborov',
			'ver'             : 'Verzia',
			'protocolver'     : 'verzia protokolu',
			'homepage'        : 'DomovskÃ¡ strÃ¡nka',
			'docs'            : 'DokumentÃ¡cia',
			'github'          : 'Pozri nÃ¡s na Githube',
			'twitter'         : 'Nasleduj nÃ¡s na Twitteri',
			'facebook'        : 'Pripoj sa k nÃ¡m na Facebooku',
			'team'            : 'TÃ­m',
			'chiefdev'        : 'HlavnÃ½ vÃ½vojÃ¡r',
			'developer'       : 'VÃ½vojÃ¡r',
			'contributor'     : 'PrispievateÄ¾',
			'maintainer'      : 'SprÃ¡vca',
			'translator'      : 'PrekladateÄ¾',
			'icons'           : 'Ikony',
			'dontforget'      : 'a nezabudnite si plavky',
			'shortcutsof'     : 'Skratky nie sÃº povolenÃ©',
			'dropFiles'       : 'Sem pretiahnite sÃºbory',
			'or'              : 'alebo',
			'selectForUpload' : 'Vyberte sÃºbory',
			'moveFiles'       : 'PremiestniÅ¥ sÃºbory',
			'copyFiles'       : 'KopÃ­rovaÅ¥ sÃºbory',
			'restoreFiles'    : 'ObnoviÅ¥ poloÅ¾ky', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'OdstrÃ¡niÅ¥ z umiestnenÃ­',
			'aspectRatio'     : 'Pomer zobrazenia',
			'scale'           : 'Mierka',
			'width'           : 'Å Ã­rka',
			'height'          : 'VÃ½Å¡ka',
			'resize'          : 'ZmeniÅ¥ veÄ¾kosÅ¥',
			'crop'            : 'OrezaÅ¥',
			'rotate'          : 'OtoÄ�iÅ¥',
			'rotate-cw'       : 'OtoÄ�iÅ¥ o 90 stupÅˆov (v smere h.r.)',
			'rotate-ccw'      : 'OtoÄ�iÅ¥ o 90 stupÅˆov (proti smeru)',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'PripojiÅ¥ sieÅ¥ovÃ© mÃ©dium', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'HosÅ¥', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'UÅ¾Ã­vateÄ¾', // added 18.04.2012
			'pass'                : 'Heslo', // added 18.04.2012
			'confirmUnmount'      : 'Naozaj chcete odpojiÅ¥ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Premiestnite alebo presuÅˆte sÃºbory z prehliadaÄ�a', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Tu premiestnite alebo presuÅˆte sÃºbory a adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'KÃ³dovanie', // from v2.1 added 19.12.2014
			'locale'          : 'LokalizÃ¡cia',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'CieÄ¾: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'VyhÄ¾adÃ¡vanie podÄ¾a vstupnÃ©ho MIME typu', // from v2.1 added 22.5.2015
			'owner'           : 'MajiteÄ¾', // from v2.1 added 20.6.2015
			'group'           : 'Skupina', // from v2.1 added 20.6.2015
			'other'           : 'OstatnÃ©', // from v2.1 added 20.6.2015
			'execute'         : 'SpustiÅ¥', // from v2.1 added 20.6.2015
			'perm'            : 'Povolenie', // from v2.1 added 20.6.2015
			'mode'            : 'ReÅ¾im', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'PrieÄ�inok je prÃ¡zdny', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'PrieÄ�inok je prÃ¡zdny\\A Premiestnite alebo presuÅˆte poloÅ¾ky', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'PrieÄ�inok je prÃ¡zdny\\A DlhÃ½m kliknutÃ­m pridÃ¡te poloÅ¾ky', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'AutomatickÃ¡ synchronizÃ¡cia',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'PosunÃºÅ¥ nahor',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'ZÃ­skaÅ¥ URL odkaz', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'VybratÃ© poloÅ¾ky ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID prieÄ�inka', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'PovoliÅ¥ prÃ­stup v offline reÅ¾ime', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Znova overiÅ¥', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'PrÃ¡ve naÄ�Ã­tava...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otvorenie viacerÃ½ch sÃºborov', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'PokÃºÅ¡ate sa otvoriÅ¥ sÃºbor $1. Naozaj ho chcete otvoriÅ¥ v prehliadaÄ�i?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'VÃ½sledky vyhÄ¾adÃ¡vania sÃº prÃ¡zdne v hÄ¾adanom cieli.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Je to Ãºprava sÃºboru.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vybrali ste $1 poloÅ¾ky.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'MÃ¡te $1 poloÅ¾ky v schrÃ¡nke.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'PrÃ­rastkovÃ© hÄ¾adanie je iba z aktuÃ¡lneho zobrazenia.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Obnovovanie', // from v2.1.15 added 3.8.2016
			'complete'        : '$1: kompletnÃ©', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'KontextovÃ© menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'OtÃ¡Ä�anie strÃ¡nky', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Korene mÃ©dia', // from v2.1.16 added 16.9.2016
			'reset'           : 'ResetovaÅ¥', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Farba pozadia', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'VÃ½ber farby', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px mrieÅ¾ka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'PovolenÃ©', // from v2.1.16 added 4.10.2016
			'disabled'        : 'ZakÃ¡zanÃ©', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'VÃ½sledky vyhÄ¾adÃ¡vania sÃº prÃ¡zdne v aktuÃ¡lnom zobrazenÃ­. StlaÄ�enÃ­m tlaÄ�idla [Enter] rozÅ¡Ã­rite vyhÄ¾adÃ¡vanie cieÄ¾a.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'VÃ½sledky vyhÄ¾adÃ¡vania prvÃ©ho listu sÃº v aktuÃ¡lnom zobrazenÃ­ prÃ¡zdne.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'NÃ¡pis textu', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minÃºt ostÃ¡va', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'OtvoriÅ¥ s vybratÃ½m kÃ³dovanÃ­m', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'UloÅ¾iÅ¥ s vybratÃ½m kÃ³dovanÃ­m', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Vyberte prieÄ�inok', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'HÄ¾adanie prvÃ©ho listu', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presety', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Je to prÃ­liÅ¡ veÄ¾a poloÅ¾iek, takÅ¾e sa nemÃ´Å¾e dostaÅ¥ do koÅ¡a.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'VyprÃ¡zdniÅ¥ prieÄ�inok "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'V prieÄ�inku "$1" nie sÃº Å¾iadne poloÅ¾ky.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencie', // from v2.1.26 added 28.6.2017
			'language'        : 'Nastavenie jazyka', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializujte nastavenia uloÅ¾enÃ© v tomto prehliadaÄ�i', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Nastavenie panela s nÃ¡strojmi', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...$1 znakov ostÃ¡va.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '...$1 riadkov ostÃ¡va.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'SÃºÄ�et', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'HrubÃ¡ veÄ¾kosÅ¥ sÃºboru', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Zameranie na prvok dialÃ³gu s mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'VybraÅ¥', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Akcia pri vybranom sÃºbore', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'OtvoriÅ¥ pomocou naposledy pouÅ¾itÃ©ho editora', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'InvertovaÅ¥ vÃ½ber poloÅ¾iek', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Naozaj chcete premenovaÅ¥ $1 vybranÃ½ch poloÅ¾iek, ako naprÃ­klad $2<br/>Nie je to moÅ¾nÃ© vrÃ¡tiÅ¥ spÃ¤Å¥!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch premenovanie', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ ÄŒÃ­slo', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'PridaÅ¥ predponu', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'PridaÅ¥ prÃ­ponu', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'ZmeniÅ¥ prÃ­ponu', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Nastavenia stÄºpcov (zoznamovÃ© zobrazenie)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'VÅ¡etky zmeny sa okamÅ¾ite premietnu do archÃ­vu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'AkÃ©koÄ¾vek zmeny sa neodzrkadÄ¾ujÃº, kÃ½m sa toto mÃ©dium neodinÅ¡taluje.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'NasledujÃºce mÃ©dium(a) pripojenÃ© v tomto mÃ©diu je tieÅ¾ odpojenÃ©. UrÄ�ite ho odpojiÅ¥?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'InformÃ¡cie o vÃ½bere', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmy na zobrazenie hashu sÃºborov', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'InformaÄ�nÃ© poloÅ¾ky (panel s informÃ¡ciami o vÃ½bere)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'OpÃ¤tovnÃ½m stlaÄ�enÃ­m opustÃ­te.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Panel nÃ¡strojov', // from v2.1.38 added 4.4.2018
			'workspace'       : 'PracovnÃ½ priestor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'DialÃ³g', // from v2.1.38 added 4.4.2018
			'all'             : 'VÅ¡etko', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'VeÄ¾kosÅ¥ ikony (zobrazenie ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Otvorte maximalizovanÃ© okno editora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'PretoÅ¾e konverzia podÄ¾a rozhrania API momentÃ¡lne nie je k dispozÃ­cii, skonvertujte na webovej strÃ¡nke.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konverzii musÃ­te nahraÅ¥ skonvertovanÃ½ sÃºbor pomocou URL poloÅ¾ky alebo stiahnutÃ½ sÃºbor na uloÅ¾enie skonvertovanÃ©ho sÃºboru.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'KonvertovaÅ¥ na strÃ¡nke $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'IntegrÃ¡cie', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Tento elFinder mÃ¡ integrovanÃ© nasledujÃºce externÃ© sluÅ¾by. Pred pouÅ¾itÃ­m skontrolujte podmienky pouÅ¾Ã­vania, zÃ¡sady ochrany osobnÃ½ch Ãºdajov atÄ�.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'ZobraziÅ¥ skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'SkryÅ¥ skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'ZobraziÅ¥/skryÅ¥ skrytÃ© poloÅ¾ky', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy sÃºborov, ktorÃ© sa majÃº povoliÅ¥ pomocou "NovÃ½ sÃºbor"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ textovÃ©ho sÃºboru', // from v2.1.41 added 7.8.2018
			'add'             : 'PridaÅ¥', // from v2.1.41 added 7.8.2018
			'theme'           : 'TÃ©ma', // from v2.1.43 added 19.10.2018
			'default'         : 'PredvolenÃ¡', // from v2.1.43 added 19.10.2018
			'description'     : 'Popis', // from v2.1.43 added 19.10.2018
			'website'         : 'StrÃ¡nka', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licencia', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'TÃºto poloÅ¾ku nemoÅ¾no uloÅ¾iÅ¥. Ak chcete zabrÃ¡niÅ¥ strate Ãºprav, musÃ­te ju exportovaÅ¥ do poÄ�Ã­taÄ�a.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'DvakrÃ¡t kliknite na sÃºbor a vyberte ho.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'PouÅ¾iÅ¥ reÅ¾im celej obrazovky', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'NeznÃ¡my',
			'kindRoot'        : 'KoreÅˆ mÃ©dia', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'PrieÄ�inok',
			'kindSelects'     : 'VÃ½bery', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'PoruÅ¡enÃ½ alias',
			// applications
			'kindApp'         : 'AplikÃ¡cia',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentÃ¡cia',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'FlashovÃ¡ aplikÃ¡cia',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent sÃºbor',
			'kind7z'          : '7z archÃ­v',
			'kindTAR'         : 'TAR archÃ­v',
			'kindGZIP'        : 'GZIP archÃ­v',
			'kindBZIP'        : 'BZIP archÃ­v',
			'kindXZ'          : 'XZ archÃ­v',
			'kindZIP'         : 'ZIP archÃ­v',
			'kindRAR'         : 'RAR archÃ­v',
			'kindJAR'         : 'Java JAR sÃºbor',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM balÃ­k',
			// fonts
			'kindFont'        : 'Font',
			'kindSFNT'        : 'SFNT font',
			'kindEOT'         : 'Embedded Open Type font',
			'kindWOFF'        : 'Web Open Font Format',
			'kindWOFF2'       : 'Web Open Font Format 2',
			// texts
			'kindText'        : 'TextovÃ½ document',
			'kindTextPlain'   : 'ObyÄ�ajnÃ½ text',
			'kindPHP'         : 'PHP zdrojovÃ½ kÃ³d',
			'kindCSS'         : 'Cascading style sheet (CSS)',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript zdrojovÃ½ kÃ³d',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C zdrojovÃ½ kÃ³d',
			'kindCHeader'     : 'C header zdrojovÃ½ kÃ³d',
			'kindCPP'         : 'C++ zdrojovÃ½ kÃ³d',
			'kindCPPHeader'   : 'C++ header zdrojovÃ½ kÃ³d',
			'kindShell'       : 'Unix shell skript',
			'kindPython'      : 'Python zdrojovÃ½ kÃ³d',
			'kindJava'        : 'Java zdrojovÃ½ kÃ³d',
			'kindRuby'        : 'Ruby zdrojovÃ½ kÃ³d',
			'kindPerl'        : 'Perl zdrojovÃ½ kÃ³d',
			'kindSQL'         : 'SQL zdrojovÃ½ kÃ³d',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK zdrojovÃ½ kÃ³d',
			'kindCSV'         : 'ÄŒiarkou oddeÄ¾ovanÃ© hodnoty',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'ObrÃ¡zok',
			'kindBMP'         : 'BMP obrÃ¡zok',
			'kindJPEG'        : 'JPEG obrÃ¡zok',
			'kindGIF'         : 'GIF obrÃ¡zok',
			'kindPNG'         : 'PNG obrÃ¡zok',
			'kindTIFF'        : 'TIFF obrÃ¡zok',
			'kindTGA'         : 'TGA obrÃ¡zok',
			'kindPSD'         : 'Adobe Photoshop obrÃ¡zok',
			'kindXBITMAP'     : 'X bitmap obrÃ¡zok',
			'kindPXM'         : 'Pixelmator obrÃ¡zok',
			// media
			'kindAudio'       : 'ZvukovÃ½ sÃºbor',
			'kindAudioMPEG'   : 'MPEG zvuk',
			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
			'kindAudioMIDI'   : 'MIDI zvuk',
			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
			'kindAudioWAV'    : 'WAV zvuk',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video sÃºbor',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

                                                      includes/File_manager/lib/js/i18n/elfinder.es.js                                                    0000644                 00000076645 15266053000 0015437 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * EspaÃ±ol internacional translation
 * @author JuliÃ¡n Torres <julian.torres@pabernosmatao.com>
 * @author Luis Faura <luis@luisfaura.es>
 * @author AdriÃ  Vilanova <me@avm99963.tk>
 * @author Wilman MarÃ­n Duran <fuclo05@hotmail.com>
 * @version 2018-04-10
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.es = {
		translator : 'JuliÃ¡n Torres &lt;julian.torres@pabernosmatao.com&gt;, Luis Faura &lt;luis@luisfaura.es&gt;, AdriÃ  Vilanova &lt;me@avm99963.tk&gt;, Wilman MarÃ­n Duran &lt;fuclo05@hotmail.com&gt;',
		language   : 'EspaÃ±ol internacional',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Error desconocido.',
			'errUnknownCmd'        : 'Comando desconocido.',
			'errJqui'              : 'ConfiguraciÃ³n no vÃ¡lida de jQuery UI. Deben estar incluidos los componentes selectable, draggable y droppable.',
			'errNode'              : 'elFinder necesita crear elementos DOM.',
			'errURL'               : 'Â¡ConfiguraciÃ³n no vÃ¡lida de elFinder! La opciÃ³n URL no estÃ¡ configurada.',
			'errAccess'            : 'Acceso denegado.',
			'errConnect'           : 'No se ha podido conectar con el backend.',
			'errAbort'             : 'ConexiÃ³n cancelada.',
			'errTimeout'           : 'ConexiÃ³n cancelada por timeout.',
			'errNotFound'          : 'Backend no encontrado.',
			'errResponse'          : 'Respuesta no vÃ¡lida del backend.',
			'errConf'              : 'ConfiguraciÃ³n no vÃ¡lida del backend .',
			'errJSON'              : 'El mÃ³dulo PHP JSON no estÃ¡ instalado.',
			'errNoVolumes'         : 'No hay disponibles volÃºmenes legibles.',
			'errCmdParams'         : 'ParÃ¡metros no vÃ¡lidos para el comando "$1".',
			'errDataNotJSON'       : 'los datos no estÃ¡n en formato JSON.',
			'errDataEmpty'         : 'No hay datos.',
			'errCmdReq'            : 'La peticiÃ³n del backend necesita un nombre de comando.',
			'errOpen'              : 'No se puede abrir "$1".',
			'errNotFolder'         : 'El objeto no es una carpeta.',
			'errNotFile'           : 'El objeto no es un archivo.',
			'errRead'              : 'No se puede leer "$1".',
			'errWrite'             : 'No se puede escribir en "$1".',
			'errPerm'              : 'Permiso denegado.',
			'errLocked'            : '"$1" estÃ¡ bloqueado y no puede ser renombrado, movido o borrado.',
			'errExists'            : 'Ya existe un archivo llamado "$1".',
			'errInvName'           : 'Nombre de archivo no vÃ¡lido.',
			'errInvDirname'        : 'Nombre de carpeta invÃ¡lido.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Carpeta no encontrada.',
			'errFileNotFound'      : 'Archivo no encontrado.',
			'errTrgFolderNotFound' : 'Carpeta de destino "$1" no encontrada.',
			'errPopup'             : 'El navegador impide abrir nuevas ventanas. Puede activarlo en las opciones del navegador.',
			'errMkdir'             : 'No se puede crear la carpeta "$1".',
			'errMkfile'            : 'No se puede crear el archivo "$1".',
			'errRename'            : 'No se puede renombrar "$1".',
			'errCopyFrom'          : 'No se permite copiar archivos desde el volumen "$1".',
			'errCopyTo'            : 'No se permite copiar archivos al volumen "$1".',
			'errMkOutLink'         : 'No se ha podido crear el enlace fuera del volumen raÃ­z.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Error en el envÃ­o.',  // old name - errUploadCommon
			'errUploadFile'        : 'No se ha podido cargar "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No hay archivos para subir.',
			'errUploadTotalSize'   : 'El tamaÃ±o de los datos excede el mÃ¡ximo permitido.', // old name - errMaxSize
			'errUploadFileSize'    : 'El tamaÃ±o del archivo excede el mÃ¡ximo permitido.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Tipo de archivo no permitido.',
			'errUploadTransfer'    : 'Error al transferir "$1".',
			'errUploadTemp'        : 'No se ha podido crear el archivo temporal para la subida.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'El objeto "$1" ya existe y no puede ser reemplazado por otro con otro tipo.', // new
			'errReplace'           : 'No se puede reemplazar "$1".',
			'errSave'              : 'No se puede guardar "$1".',
			'errCopy'              : 'No se puede copiar "$1".',
			'errMove'              : 'No se puede mover "$1".',
			'errCopyInItself'      : 'No se puede copiar "$1" en si mismo.',
			'errRm'                : 'No se puede borrar "$1".',
			'errTrash'             : 'No se puede enviar a la papelera.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'No se puede(n) borrar los archivo(s).',
			'errExtract'           : 'No se puede extraer archivos desde "$1".',
			'errArchive'           : 'No se puede crear el archivo.',
			'errArcType'           : 'Tipo de archivo no soportado.',
			'errNoArchive'         : 'El archivo no es de tipo archivo o es de un tipo no soportado.',
			'errCmdNoSupport'      : 'El backend no soporta este comando.',
			'errReplByChild'       : 'La carpeta â€œ$1â€� no puede ser reemplazada por un elemento contenido en ella.',
			'errArcSymlinks'       : 'Por razones de seguridad no se pueden descomprimir archivos que contengan enlaces simbÃ³licos.', // edited 24.06.2012
			'errArcMaxSize'        : 'El tamaÃ±o del archivo excede el mÃ¡ximo permitido.',
			'errResize'            : 'Error al redimensionar "$1".',
			'errResizeDegree'      : 'Grado de rotaciÃ³n invÃ¡lido.',  // added 7.3.2013
			'errResizeRotate'      : 'Error al rotar la imagen.',  // added 7.3.2013
			'errResizeSize'        : 'TamaÃ±o de imagen invÃ¡lido.',  // added 7.3.2013
			'errResizeNoChange'    : 'No se puede cambiar el tamaÃ±o de la imagen.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo de archivo no soportado.',
			'errNotUTF8Content'    : 'El archivo "$1" no estÃ¡ en formato UTF-8 y no puede ser editado.',  // added 9.11.2011
			'errNetMount'          : 'Fallo al montar "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocolo no soportado.',     // added 17.04.2012
			'errNetMountFailed'    : 'Fallo al montar.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Dominio requerido.', // added 18.04.2012
			'errSessionExpires'    : 'La sesiÃ³n ha expirado por inactividad',
			'errCreatingTempDir'   : 'No se ha podido crear al directorio temporal: "$1"',
			'errFtpDownloadFile'   : 'No se ha podido descargar el archivo desde FTP: "$1"',
			'errFtpUploadFile'     : 'No se ha podido cargar el archivo a FTP: "$1"',
			'errFtpMkdir'          : 'No se ha podido crear el directorio remoto en FTP: "$1"',
			'errArchiveExec'       : 'Se ha producido un error durante el archivo: "$1"',
			'errExtractExec'       : 'Se ha producido un error durante la extracciÃ³n de archivos: "$1"',
			'errNetUnMount'        : 'Imposible montar', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'No es convertible a UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Prueba con un navegador moderno, si quieres subir la carpeta completa.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Se agotÃ³ el tiempo de espera buscando "$1". Los resultados de bÃºsqueda son parciales.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Se requiere autorizar de nuevo.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'NÃºmero mÃ¡ximo de elementos seleccionables es $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'No se puede restaurar desde la papelera. No se puede identificar el destino de restauraciÃ³n.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor no encontrado para este tipo de archivo.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error ocurrido en el lado del servidor.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'No es posible vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crear archivo',
			'cmdback'      : 'AtrÃ¡s',
			'cmdcopy'      : 'Copiar',
			'cmdcut'       : 'Cortar',
			'cmddownload'  : 'Descargar',
			'cmdduplicate' : 'Duplicar',
			'cmdedit'      : 'Editar archivo',
			'cmdextract'   : 'Extraer elementos del archivo',
			'cmdforward'   : 'Adelante',
			'cmdgetfile'   : 'Seleccionar archivos',
			'cmdhelp'      : 'Acerca de este software',
			'cmdhome'      : 'Inicio',
			'cmdinfo'      : 'Obtener informaciÃ³n',
			'cmdmkdir'     : 'Nueva carpeta',
			'cmdmkdirin'   : 'En una nueva carpeta', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nueva archivo',
			'cmdopen'      : 'Abrir',
			'cmdpaste'     : 'Pegar',
			'cmdquicklook' : 'Previsualizar',
			'cmdreload'    : 'Recargar',
			'cmdrename'    : 'Cambiar nombre',
			'cmdrm'        : 'Eliminar',
			'cmdtrash'     : 'Enviar a la papelera', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurar', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Buscar archivos',
			'cmdup'        : 'Ir a la carpeta raÃ­z',
			'cmdupload'    : 'Subir archivos',
			'cmdview'      : 'Ver',
			'cmdresize'    : 'Redimensionar y rotar',
			'cmdsort'      : 'Ordenar',
			'cmdnetmount'  : 'Montar volumen en red', // added 18.04.2012
			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'A Lugares', // added 28.12.2014
			'cmdchmod'     : 'Cambiar modo', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Abrir una carpeta', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Restablecer ancho de columna', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Pantalla completa', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mover', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vaciar la carpeta', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Deshacer', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Rehacer', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencias', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Seleccionar todo', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Seleccionar ninguno', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertir selecciÃ³n', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Abrir en nueva ventana', // from v2.1.38 added 3.4.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Cerrar',
			'btnSave'   : 'Guardar',
			'btnRm'     : 'Eliminar',
			'btnApply'  : 'Aplicar',
			'btnCancel' : 'Cancelar',
			'btnNo'     : 'No',
			'btnYes'    : 'SÃ­',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'Montar',  // added 18.04.2012
			'btnApprove': 'Ir a $1 y aprobar', // from v2.1 added 26.04.2012
			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'AquÃ­',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volumen',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nombre de archivo',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Guardar y cerrar', // from v2.1 added 12.6.2015
			'btnBackup' : 'Copia de seguridad', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renombrar',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renombrar(Todo)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Ant ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Sig ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Guardar como', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Abrir carpeta',
			'ntffile'     : 'Abrir archivo',
			'ntfreload'   : 'Actualizar contenido de la carpeta',
			'ntfmkdir'    : 'Creando directorio',
			'ntfmkfile'   : 'Creando archivos',
			'ntfrm'       : 'Eliminando archivos',
			'ntfcopy'     : 'Copiar archivos',
			'ntfmove'     : 'Mover archivos',
			'ntfprepare'  : 'Preparar copia de archivos',
			'ntfrename'   : 'Renombrar archivos',
			'ntfupload'   : 'Subiendo archivos',
			'ntfdownload' : 'Descargando archivos',
			'ntfsave'     : 'Guardar archivos',
			'ntfarchive'  : 'Creando archivo',
			'ntfextract'  : 'Extrayendo elementos del archivo',
			'ntfsearch'   : 'Buscando archivos',
			'ntfresize'   : 'Redimensionando imÃ¡genes',
			'ntfsmth'     : 'Haciendo algo',
			'ntfloadimg'  : 'Cargando imagen',
			'ntfnetmount' : 'Montando volumen en red', // added 18.04.2012
			'ntfnetunmount': 'Desmontando volumen en red', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Adquiriendo tamaÃ±o de imagen', // added 20.05.2013
			'ntfreaddir'  : 'Leyendo informaciÃ³n de la carpeta', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Obteniendo URL del enlace', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Cambiando el modo de archivo', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verificando nombre del archivo subido', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creando un archivo para descargar', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obteniendo informaciÃ³n de la ruta', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Procesando el archivo cargado', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Enviando a la papelera', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurando desde la papelera', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Comprobando carpeta de destino', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Deshaciendo operaciÃ³n previa', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Rehaciendo previo deshacer', // from v2.1.27 added 31.07.2017

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Papelera', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'desconocida',
			'Today'       : 'Hoy',
			'Yesterday'   : 'Ayer',
			'msJan'       : 'Ene',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Abr',
			'msMay'       : 'May',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Ago',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dic',
			'January'     : 'Enero',
			'February'    : 'Febrero',
			'March'       : 'Marzo',
			'April'       : 'Abril',
			'May'         : 'Mayo',
			'June'        : 'Junio',
			'July'        : 'Julio',
			'August'      : 'Agosto',
			'September'   : 'Septiembre',
			'October'     : 'Octubre',
			'November'    : 'Noviembre',
			'December'    : 'Diciembre',
			'Sunday'      : 'Domingo',
			'Monday'      : 'Lunes',
			'Tuesday'     : 'Martes',
			'Wednesday'   : 'MiÃ©rcoles',
			'Thursday'    : 'Jueves',
			'Friday'      : 'Viernes',
			'Saturday'    : 'SÃ¡bado',
			'Sun'         : 'Dom',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mie',
			'Thu'         : 'Jue',
			'Fri'         : 'Vie',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'por nombre',
			'sortkind'          : 'por tipo',
			'sortsize'          : 'por tamaÃ±o',
			'sortdate'          : 'por fecha',
			'sortFoldersFirst'  : 'Las carpetas primero',
			'sortperm'          : 'por permiso', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'por modo',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'por propietario',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'por grupo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'TambiÃ©n Ã¡rbol de directorios',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NuevoArchivo.txt', // added 10.11.2015
			'untitled folder'   : 'NuevaCarpeta',   // added 10.11.2015
			'Archive'           : 'NuevoArchivo',  // from v2.1 added 10.11.2015

			/********************************** messages **********************************/
			'confirmReq'      : 'Se necesita confirmaciÃ³n',
			'confirmRm'       : 'Â¿EstÃ¡ seguro de querer eliminar archivos?<br/>Â¡Esto no se puede deshacer!',
			'confirmRepl'     : 'Â¿Reemplazar el antiguo archivo con el nuevo?',
			'confirmRest'     : 'Â¿Reemplazar elemento existente con el elemento en la papelera?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'No estÃ¡ en UTF-8<br/>Convertir a UTF-8?<br/>Los contenidos se guardarÃ¡n en UTF-8 tras la conversiÃ³n.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'CodificaciÃ³n de caracteres de este archivo no pudo ser detectada. Es necesario convertir temporalmente a UTF-8 para editarlo. <br/> Por favor, seleccione la codificaciÃ³n de caracteres de este archivo.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ha sido modificado.<br/>PerderÃ¡s los cambios si no los guardas.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Â¿EstÃ¡s seguro que quieres mover los elementos a la papelera?', //from v2.1.24 added 29.4.2017
			'apllyAll'        : 'Aplicar a todo',
			'name'            : 'Nombre',
			'size'            : 'TamaÃ±o',
			'perms'           : 'Permisos',
			'modify'          : 'Modificado',
			'kind'            : 'Tipo',
			'read'            : 'lectura',
			'write'           : 'escritura',
			'noaccess'        : 'sin acceso',
			'and'             : 'y',
			'unknown'         : 'desconocido',
			'selectall'       : 'Seleccionar todos los archivos',
			'selectfiles'     : 'Seleccionar archivo(s)',
			'selectffile'     : 'Seleccionar primer archivo',
			'selectlfile'     : 'Seleccionar Ãºltimo archivo',
			'viewlist'        : 'ver como lista',
			'viewicons'       : 'Ver como iconos',
			'places'          : 'Lugares',
			'calc'            : 'Calcular',
			'path'            : 'Ruta',
			'aliasfor'        : 'Alias para',
			'locked'          : 'Bloqueado',
			'dim'             : 'Dimensiones',
			'files'           : 'Archivos',
			'folders'         : 'Carpetas',
			'items'           : 'Elementos',
			'yes'             : 'sÃ­',
			'no'              : 'no',
			'link'            : 'Enlace',
			'searcresult'     : 'Resultados de la bÃºsqueda',
			'selected'        : 'elementos seleccionados',
			'about'           : 'Acerca',
			'shortcuts'       : 'Accesos directos',
			'help'            : 'Ayuda',
			'webfm'           : 'Administrador de archivos web',
			'ver'             : 'VersiÃ³n',
			'protocolver'     : 'versiÃ³n del protocolo',
			'homepage'        : 'Inicio',
			'docs'            : 'DocumentaciÃ³n',
			'github'          : 'BifÃºrcanos en Github',
			'twitter'         : 'SÃ­guenos en Twitter',
			'facebook'        : 'Ãšnete a nosotros en Facebook',
			'team'            : 'Equipo',
			'chiefdev'        : 'desarrollador jefe',
			'developer'       : 'desarrollador',
			'contributor'     : 'contribuyente',
			'maintainer'      : 'mantenedor',
			'translator'      : 'traductor',
			'icons'           : 'Iconos',
			'dontforget'      : 'y no olvide traer su toalla',
			'shortcutsof'     : 'Accesos directos desactivados',
			'dropFiles'       : 'Arrastre archivos aquÃ­',
			'or'              : 'o',
			'selectForUpload' : 'Seleccione archivos para subir',
			'moveFiles'       : 'Mover archivos',
			'copyFiles'       : 'Copiar archivos',
			'restoreFiles'    : 'Restaurar elementos', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Eliminar en sus ubicaciones',
			'aspectRatio'     : 'RelaciÃ³n de aspecto',
			'scale'           : 'Escala',
			'width'           : 'Ancho',
			'height'          : 'Alto',
			'resize'          : 'Redimensionar',
			'crop'            : 'Recortar',
			'rotate'          : 'Rotar',
			'rotate-cw'       : 'Rotar 90 grados en sentido horario',
			'rotate-ccw'      : 'Rotar 90 grados en sentido anti-horario',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'Montar volumen en red', // added 18.04.2012
			'protocol'            : 'Protocolo', // added 18.04.2012
			'host'                : 'Dominio', // added 18.04.2012
			'port'                : 'Puerto', // added 18.04.2012
			'user'                : 'Usuario', // added 18.04.2012
			'pass'                : 'ContraseÃ±a', // added 18.04.2012
			'confirmUnmount'      : 'Â¿Desmontar $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Arrastra o pega archivos del navegador', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Arrastra o pega enlaces URL aquÃ­', // from v2.1 added 07.04.2014
			'encoding'        : 'Codificando', // from v2.1 added 19.12.2014
			'locale'          : 'Local',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destino: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Buscar entrada por tipo MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Propietario', // from v2.1 added 20.6.2015
			'group'           : 'Grupo', // from v2.1 added 20.6.2015
			'other'           : 'Otro', // from v2.1 added 20.6.2015
			'execute'         : 'Ejecutar', // from v2.1 added 20.6.2015
			'perm'            : 'Permiso', // from v2.1 added 20.6.2015
			'mode'            : 'Modo', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'La carpeta estÃ¡ vacÃ­a', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'La carpeta estÃ¡ vacÃ­a\\A Arrastrar para aÃ±adir elementos', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'La carpeta estÃ¡ vacÃ­a\\A Presiona durante un rato para aÃ±adir elementos', // from v2.1.6 added 30.12.2015
			'quality'         : 'Calidad', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'SincronizaciÃ³n automÃ¡tica',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mover arriba',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtener enlace', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Elementos seleccionados ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID carpeta', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permitir acceso sin conexiÃ³n', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Para volver a autenticarse', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Cargando ahora...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Abrir mÃºltiples archivos', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'EstÃ¡s tratando de abrir los $1 archivos. Â¿EstÃ¡s seguro que quieres abrir en el navegador?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'No se encontraron resultados en el objetivo de bÃºsqueda.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'EstÃ¡ editando un archivo.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Has seleccionado $1 elementos.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Posees $1 elementos en el portapapeles.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'La bÃºsqueda incremental solo se realiza desde la vista actual.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstanciar', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completo', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'MenÃº contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Cambio de pÃ¡gina', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'RaÃ­ces del volumen', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reiniciar', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Color de fondo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selector de color', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Cuadricula', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Habilitado', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Deshabilitado', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Los resultados de la bÃºsqueda estÃ¡n vacÃ­os en la vista actual. \\ APulse [Intro] para expandir el objetivo de bÃºsqueda.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'La primera letra de los resultados de bÃºsqueda estÃ¡ vacÃ­a en la vista actual.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etiqueta de texto', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'Falta $1 minuto(s)', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Abrir nuevamente con la codificaciÃ³n seleccionada', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Guardar con la codificaciÃ³n seleccionada', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Seleccionar carpeta', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Primera letra de bÃºsqueda', // from v2.1.23 added 24.3.2017
			'presets'         : 'Preestablecidos', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Son demasiados elementos, por lo que no puede enviarse a la papelera.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Ã�rea de texto', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'No hay elementos en la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencia', // from v2.1.26 added 28.6.2017
			'language'        : 'Lenguaje', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializa la configuraciÃ³n guardada en este navegador', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ConfiguraciÃ³n de la barra de herramientas', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...falta $1 caracteres.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Suma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'TamaÃ±o de archivo aproximado', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Centrado en el elemento de diÃ¡logo con \'mouseover\'',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seleccionar', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'AcciÃ³n cuando selecciona un archivo', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Abrir con el editor utilizado la Ãºltima vez', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invertir selecciÃ³n', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Â¿EstÃ¡s seguro que quieres renombrar $1 elementos seleccionados como $2?<br/>Â¡Esto no puede ser deshecho!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Cambiar el nombre del lote', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ NÃºmero', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'AÃ±adir prefijo', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'AÃ±adir sufijo', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Cambiar extensiÃ³n', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ConfiguraciÃ³n de columnas (Vista de lista)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Todos los cambios se reflejarÃ¡n inmediatamente en el archivo.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Cualquier cambio no se reflejarÃ¡ hasta que no se desmonte este volumen.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Los siguientes volÃºmenes montados en este volumen tambiÃ©n se desmontaron. Â¿EstÃ¡s seguro de desmontarlo?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'InformaciÃ³n de la selecciÃ³n', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmos para mostrar el hash de archivos', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Elementos de informaciÃ³n (Panel de informaciÃ³n de selecciÃ³n)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Presiona de nuevo para salir.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra de herramienta', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espacio de trabajo', // from v2.1.38 added 4.4.2018
			'dialog'          : 'DiÃ¡logo', // from v2.1.38 added 4.4.2018
			'all'             : 'Todo', // from v2.1.38 added 4.4.2018

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconocido',
			'kindRoot'        : 'RaÃ­ces del volumen', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Carpeta',
			'kindSelects'     : 'Selecciones', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias roto',
			// applications
			'kindApp'         : 'AplicaciÃ³n',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'PresentaciÃ³n Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'AplicaciÃ³n Flash',
			'kindPDF'         : 'Documento PDF',
			'kindTorrent'     : 'Archivo Bittorrent',
			'kind7z'          : 'Archivo 7z',
			'kindTAR'         : 'Archivo TAR',
			'kindGZIP'        : 'Archivo GZIP',
			'kindBZIP'        : 'Archivo BZIP',
			'kindXZ'          : 'Archivo XZ',
			'kindZIP'         : 'Archivo ZIP',
			'kindRAR'         : 'Archivo RAR',
			'kindJAR'         : 'Archivo Java JAR',
			'kindTTF'         : 'Fuente True Type',
			'kindOTF'         : 'Fuente Open Type',
			'kindRPM'         : 'Paquete RPM',
			// fonts
			'kindFont'        : 'Fuente',
			'kindSFNT'        : 'Fuente SFNT',
			'kindEOT'         : 'Fuente Embedded Open Type',
			'kindWOFF'        : 'Fuente Web Open Font Format',
			'kindWOFF2'       : 'Fuente Web Open Font Format 2',
			// texts
			'kindText'        : 'Documento de texto',
			'kindTextPlain'   : 'Texto plano',
			'kindPHP'         : 'CÃ³digo PHP',
			'kindCSS'         : 'Hoja de estilos CSS',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'CÃ³digo Javascript',
			'kindRTF'         : 'Documento RTF',
			'kindC'           : 'CÃ³digo C',
			'kindCHeader'     : 'CÃ³digo C cabeceras',
			'kindCPP'         : 'CÃ³digo C++',
			'kindCPPHeader'   : 'CÃ³digo C++ cabeceras',
			'kindShell'       : 'Script de terminal de Unix',
			'kindPython'      : 'CÃ³digo Python',
			'kindJava'        : 'CÃ³digo Java',
			'kindRuby'        : 'CÃ³digo Ruby',
			'kindPerl'        : 'CÃ³digo Perl',
			'kindSQL'         : 'CÃ³digo QL',
			'kindXML'         : 'Documento XML',
			'kindAWK'         : 'CÃ³digo AWK',
			'kindCSV'         : 'Documento CSV (valores separados por comas)',
			'kindDOCBOOK'     : 'Documento Docbook XML',
			'kindMarkdown'    : 'Texto Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagen',
			'kindBMP'         : 'Imagen BMP',
			'kindJPEG'        : 'Imagen JPEG',
			'kindGIF'         : 'Imagen GIF',
			'kindPNG'         : 'Imagen PNG',
			'kindTIFF'        : 'Imagen TIFF',
			'kindTGA'         : 'Imagen TGA',
			'kindPSD'         : 'Imagen Adobe Photoshop',
			'kindXBITMAP'     : 'Imagen X bitmap',
			'kindPXM'         : 'Imagen Pixelmator',
			// media
			'kindAudio'       : 'Archivo de audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Lista de reproducciÃ³n MP3',
			'kindVideo'       : 'Archivo de vÃ­deo',
			'kindVideoDV'     : 'PelÃ­cula DV',
			'kindVideoMPEG'   : 'PelÃ­cula MPEG',
			'kindVideoMPEG4'  : 'PelÃ­cula MPEG-4',
			'kindVideoAVI'    : 'PelÃ­cula AVI',
			'kindVideoMOV'    : 'PelÃ­cula Quick Time',
			'kindVideoWM'     : 'PelÃ­cula Windows Media',
			'kindVideoFlash'  : 'PelÃ­cula Flash',
			'kindVideoMKV'    : 'PelÃ­cula Matroska MKV',
			'kindVideoOGG'    : 'PelÃ­cula Ogg'
		}
	};
}));
                                                                                           includes/File_manager/lib/js/i18n/elfinder.zh_CN.js                                                 0000644                 00000077545 15266053000 0016031 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * ç®€ä½“ä¸­æ–‡ translation
 * @author ç¿»è¯‘è€… deerchao <deerchao@gmail.com>
 * @author Andy Hu <andyhu7@yahoo.com.hk>
 * @author Max Wen<max.wen@qq.com>
 * @author Kejun Chang <changkejun@hotmail.com>
 * @author LDMING <china-live@live.cn>
 * @author Andy Lee <oraclei@126.com>
 * @author Cololi <i@cololi.moe>
 * @version 2020-04-07
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.zh_CN = {
		translator : 'ç¿»è¯‘è€… deerchao &lt;deerchao@gmail.com&gt;, Andy Hu &lt;andyhu7@yahoo.com.hk&gt;, Max Wen&lt;max.wen@qq.com&gt;, Kejun Chang &lt;changkejun@hotmail.com&gt;, LDMING &lt;china-live@live.cn&gt;, Andy Lee &lt;oraclei@126.com&gt;, Cololi &lt;i@cololi.moe&gt;',
		language   : 'ç®€ä½“ä¸­æ–‡',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i', // will show like: 2020-04-07 14:53
		fancyDateFormat : '$1 H:i', // will show like: ä»Šå¤© 14:53
		nonameDateFormat : 'ymd-His', // noname upload will show like: 200407-145300
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'é”™è¯¯',
			'errUnknown'           : 'æœªçŸ¥çš„é”™è¯¯.',
			'errUnknownCmd'        : 'æœªçŸ¥çš„å‘½ä»¤.',
			'errJqui'              : 'æ— æ•ˆçš„ jQuery UI é…�ç½®,å¿…é¡»åŒ…å�« Selectableã€�draggable ä»¥å�Š droppable ç»„ä»¶.',
			'errNode'              : 'elFinder éœ€è¦�èƒ½åˆ›å»º DOM å…ƒç´ .',
			'errURL'               : 'æ— æ•ˆçš„ elFinder é…�ç½®! URL é€‰é¡¹æœªé…�ç½®.',
			'errAccess'            : 'è®¿é—®è¢«æ‹’ç»�.',
			'errConnect'           : 'ä¸�èƒ½è¿žæŽ¥åˆ°æœ�åŠ¡å™¨ç«¯.',
			'errAbort'             : 'è¿žæŽ¥ä¸­æ­¢.',
			'errTimeout'           : 'è¿žæŽ¥è¶…æ—¶.',
			'errNotFound'          : 'æœªæ‰¾åˆ°æœ�åŠ¡å™¨ç«¯.',
			'errResponse'          : 'æ— æ•ˆçš„æœ�åŠ¡å™¨ç«¯å“�åº”.',
			'errConf'              : 'æ— æ•ˆçš„æœ�åŠ¡å™¨ç«¯é…�ç½®.',
			'errJSON'              : 'PHP JSON æ¨¡å�—æœªå®‰è£….',
			'errNoVolumes'         : 'æ— å�¯è¯»çš„å�·.',
			'errCmdParams'         : 'æ— æ•ˆçš„å‘½ä»¤ "$1".',
			'errDataNotJSON'       : 'æœ�åŠ¡å™¨è¿”å›žçš„æ•°æ�®ä¸�ç¬¦å�ˆ JSON æ ¼å¼�.',
			'errDataEmpty'         : 'æœ�åŠ¡å™¨è¿”å›žçš„æ•°æ�®ä¸ºç©º.',
			'errCmdReq'            : 'æœ�åŠ¡å™¨ç«¯è¯·æ±‚éœ€è¦�å‘½ä»¤å��ç§°.',
			'errOpen'              : 'æ— æ³•æ‰“å¼€ "$1".',
			'errNotFolder'         : 'å¯¹è±¡ä¸�æ˜¯æ–‡ä»¶å¤¹.',
			'errNotFile'           : 'å¯¹è±¡ä¸�æ˜¯æ–‡ä»¶.',
			'errRead'              : 'æ— æ³•è¯»å�– "$1".',
			'errWrite'             : 'æ— æ³•å†™å…¥ "$1".',
			'errPerm'              : 'æ²¡æœ‰æ�ƒé™�.',
			'errLocked'            : '"$1" å·²è¢«é”�å®š,ä¸�èƒ½é‡�å‘½å��, ç§»åŠ¨æˆ–åˆ é™¤.',
			'errExists'            : 'æ–‡ä»¶ "$1" å·²ç»�å­˜åœ¨.',
			'errInvName'           : 'æ— æ•ˆçš„æ–‡ä»¶å��.',
			'errInvDirname'        : 'æ— æ•ˆçš„æ–‡ä»¶å¤¹å��.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'æ–‡ä»¶å¤¹ä¸�å­˜åœ¨.',
			'errFileNotFound'      : 'æ–‡ä»¶ä¸�å­˜åœ¨.',
			'errTrgFolderNotFound' : 'æœªæ‰¾åˆ°ç›®æ ‡æ–‡ä»¶å¤¹ "$1".',
			'errPopup'             : 'æµ�è§ˆå™¨æ‹¦æˆªäº†å¼¹å‡ºçª—å�£. è¯·åœ¨é€‰é¡¹ä¸­å…�è®¸å¼¹å‡ºçª—å�£.',
			'errMkdir'             : 'ä¸�èƒ½åˆ›å»ºæ–‡ä»¶å¤¹ "$1".',
			'errMkfile'            : 'ä¸�èƒ½åˆ›å»ºæ–‡ä»¶ "$1".',
			'errRename'            : 'ä¸�èƒ½é‡�å‘½å�� "$1".',
			'errCopyFrom'          : 'ä¸�å…�è®¸ä»Žå�· "$1" å¤�åˆ¶.',
			'errCopyTo'            : 'ä¸�å…�è®¸å�‘å�· "$1" å¤�åˆ¶.',
			'errMkOutLink'         : 'æ— æ³•åˆ›å»ºé“¾æŽ¥åˆ°å�·æ ¹ä»¥å¤–çš„é“¾æŽ¥.', // from v2.1 added 03.10.2015
			'errUpload'            : 'ä¸Šä¼ å‡ºé”™.',  // old name - errUploadCommon
			'errUploadFile'        : 'æ— æ³•ä¸Šä¼  "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'æœªæ‰¾åˆ°è¦�ä¸Šä¼ çš„æ–‡ä»¶.',
			'errUploadTotalSize'   : 'æ•°æ�®è¶…è¿‡äº†å…�è®¸çš„æœ€å¤§å¤§å°�.', // old name - errMaxSize
			'errUploadFileSize'    : 'æ–‡ä»¶è¶…è¿‡äº†å…�è®¸çš„æœ€å¤§å¤§å°�.', //  old name - errFileMaxSize
			'errUploadMime'        : 'ä¸�å…�è®¸çš„æ–‡ä»¶ç±»åž‹.',
			'errUploadTransfer'    : '"$1" ä¼ è¾“é”™è¯¯.',
			'errUploadTemp'        : 'æ— æ³•ä¸ºä¸Šä¼ æ–‡ä»¶åˆ›å»ºä¸´æ—¶æ–‡ä»¶.', // from v2.1 added 26.09.2015
			'errNotReplace'        : ' "$1" å·²å­˜åœ¨, ä¸�èƒ½è¢«æ›¿æ�¢.', // new
			'errReplace'           : 'æ— æ³•æ›¿æ�¢ "$1".',
			'errSave'              : 'æ— æ³•ä¿�å­˜ "$1".',
			'errCopy'              : 'æ— æ³•å¤�åˆ¶ "$1".',
			'errMove'              : 'æ— æ³•ç§»åŠ¨ "$1".',
			'errCopyInItself'      : 'ä¸�èƒ½ç§»åŠ¨ "$1" åˆ°åŽŸæœ‰ä½�ç½®.',
			'errRm'                : 'æ— æ³•åˆ é™¤ "$1".',
			'errTrash'             : 'æ— æ³•ç§»åˆ°å›žæ”¶ç«™.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ä¸�èƒ½åˆ é™¤æº�æ–‡ä»¶.',
			'errExtract'           : 'æ— æ³•ä»Ž "$1" æ��å�–æ–‡ä»¶.',
			'errArchive'           : 'æ— æ³•åˆ›å»ºåŽ‹ç¼©åŒ….',
			'errArcType'           : 'ä¸�æ”¯æŒ�çš„åŽ‹ç¼©æ ¼å¼�.',
			'errNoArchive'         : 'æ–‡ä»¶ä¸�æ˜¯åŽ‹ç¼©åŒ…, æˆ–è€…ä¸�æ”¯æŒ�è¯¥åŽ‹ç¼©æ ¼å¼�.',
			'errCmdNoSupport'      : 'æœ�åŠ¡å™¨ç«¯ä¸�æ”¯æŒ�è¯¥å‘½ä»¤.',
			'errReplByChild'       : 'ä¸�èƒ½ç”¨æ–‡ä»¶å¤¹ â€œ$1â€� ä¸‹çš„é¡¹æ›¿æ�¢æ–‡ä»¶å¤¹ â€œ$1â€� è‡ªèº«.',
			'errArcSymlinks'       : 'å‡ºäºŽå®‰å…¨ä¸Šçš„è€ƒè™‘ï¼Œä¸�å…�è®¸è§£åŽ‹åŒ…å�«ç¬¦å�·é“¾æŽ¥çš„åŽ‹ç¼©åŒ….', // edited 24.06.2012
			'errArcMaxSize'        : 'åŽ‹ç¼©åŒ…æ–‡ä»¶è¶…è¿‡æœ€å¤§å…�è®¸æ–‡ä»¶å¤§å°�èŒƒå›´.',
			'errResize'            : 'æ— æ³•å°†è°ƒæ•´å¤§å°�åˆ° "$1".',
			'errResizeDegree'      : 'æ— æ•ˆçš„æ—‹è½¬è§’åº¦.',  // added 7.3.2013
			'errResizeRotate'      : 'æ— æ³•æ—‹è½¬å›¾ç‰‡.',  // added 7.3.2013
			'errResizeSize'        : 'æ— æ•ˆçš„å›¾ç‰‡å°ºå¯¸.',  // added 7.3.2013
			'errResizeNoChange'    : 'å›¾ç‰‡å°ºå¯¸æœªæ”¹å�˜.',  // added 7.3.2013
			'errUsupportType'      : 'ä¸�è¢«æ”¯æŒ�çš„æ–‡ä»¶æ ¼å¼�.',
			'errNotUTF8Content'    : 'æ–‡ä»¶ "$1" ä¸�æ˜¯ UTF-8 æ ¼å¼�, ä¸�èƒ½ç¼–è¾‘.',  // added 9.11.2011
			'errNetMount'          : 'æ— æ³•è£…è½½ "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'ä¸�æ”¯æŒ�è¯¥å��è®®.',     // added 17.04.2012
			'errNetMountFailed'    : 'è£…è½½å¤±è´¥.',         // added 17.04.2012
			'errNetMountHostReq'   : 'éœ€è¦�æŒ‡å®šä¸»æœº.', // added 18.04.2012
			'errSessionExpires'    : 'æ‚¨çš„ä¼šè¯�ç”±äºŽé•¿æ—¶é—´æœªæ´»åŠ¨å·²è¿‡æœŸ.',
			'errCreatingTempDir'   : 'æ— æ³•åˆ›å»ºä¸´æ—¶ç›®å½• "$1"',
			'errFtpDownloadFile'   : 'æ— æ³•ä»ŽFTPä¸‹è½½æ–‡ä»¶ "$1" ',
			'errFtpUploadFile'     : 'æ— æ³•å°†æ–‡ä»¶ "$1" ä¸Šä¼ è‡³FTP',
			'errFtpMkdir'          : 'æ— æ³•åœ¨FTPä¸Šåˆ›å»ºè¿œç¨‹ç›®å½• "$1"',
			'errArchiveExec'       : 'å½’æ¡£æ–‡ä»¶"$1"æ—¶å‡ºé”™.',
			'errExtractExec'       : 'è§£åŽ‹æ–‡ä»¶"$1"æ—¶å‡ºé”™.',
			'errNetUnMount'        : 'æ— æ³•å�¸è½½.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'æœªè½¬æ�¢è‡³UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'å¦‚æžœæ‚¨éœ€è¦�ä¸Šä¼ ç›®å½•, è¯·å°�è¯•ä½¿ç”¨Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'æ�œç´¢ "$1" è¶…æ—¶,ä»…æ˜¾ç¤ºéƒ¨åˆ†æ�œç´¢ç»“æžœ.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'å¿…éœ€é‡�æ–°æŽˆæ�ƒ.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'æœ€å¤§å�¯é€‰æ‹©é¡¹ç›®æ•°ä¸º $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'æ— æ³•ä»Žå›žæ”¶ç«™ä¸­æ�¢å¤�ï¼Œæ— æ³•è¯†åˆ«è¿˜åŽŸç›®çš„åœ°.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'æ‰¾ä¸�åˆ°è¿™ä¸ªæ–‡ä»¶çš„ç¼–è¾‘å™¨.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'æœ�åŠ¡ç«¯å�‘ç”Ÿé”™è¯¯.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'æ— æ³•æ¸…ç©ºæ–‡ä»¶å¤¹ "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'å­˜åœ¨ $1 å¤šä¸ªé”™è¯¯.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'åˆ›å»ºåŽ‹ç¼©åŒ…',
			'cmdback'      : 'å�Žé€€',
			'cmdcopy'      : 'å¤�åˆ¶',
			'cmdcut'       : 'å‰ªåˆ‡',
			'cmddownload'  : 'ä¸‹è½½',
			'cmdduplicate' : 'åˆ›å»ºå‰¯æœ¬',
			'cmdedit'      : 'ç¼–è¾‘æ–‡ä»¶',
			'cmdextract'   : 'ä»ŽåŽ‹ç¼©åŒ…æ��å�–æ–‡ä»¶',
			'cmdforward'   : 'å‰�è¿›',
			'cmdgetfile'   : 'é€‰æ‹©æ–‡ä»¶',
			'cmdhelp'      : 'å…³äºŽ',
			'cmdhome'      : 'é¦–é¡µ',
			'cmdinfo'      : 'æŸ¥çœ‹è¯¦æƒ…',
			'cmdmkdir'     : 'æ–°å»ºæ–‡ä»¶å¤¹',
			'cmdmkdirin'   : 'è‡³æ–°æ–‡ä»¶å¤¹', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'æ–°å»ºæ–‡ä»¶',
			'cmdopen'      : 'æ‰“å¼€',
			'cmdpaste'     : 'ç²˜è´´',
			'cmdquicklook' : 'é¢„è§ˆ',
			'cmdreload'    : 'åˆ·æ–°',
			'cmdrename'    : 'é‡�å‘½å��',
			'cmdrm'        : 'åˆ é™¤',
			'cmdtrash'     : 'è‡³å›žæ”¶ç«™', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'æ�¢å¤�', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'æŸ¥æ‰¾æ–‡ä»¶',
			'cmdup'        : 'è½¬åˆ°ä¸Šä¸€çº§æ–‡ä»¶å¤¹',
			'cmdupload'    : 'ä¸Šä¼ æ–‡ä»¶',
			'cmdview'      : 'æŸ¥çœ‹',
			'cmdresize'    : 'è°ƒæ•´å¤§å°�&æ—‹è½¬',
			'cmdsort'      : 'æŽ’åº�',
			'cmdnetmount'  : 'è£…è½½ç½‘ç»œå�·', // added 18.04.2012
			'cmdnetunmount': 'å�¸è½½', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'æ·»åŠ åˆ°æ”¶è—�å¤¹', // added 28.12.2014
			'cmdchmod'     : 'æ”¹å�˜æ¨¡å¼�', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'æ‰“å¼€æ–‡ä»¶å¤¹', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'è®¾ç½®åˆ—å®½', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'å…¨å±�æ˜¾ç¤º', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'ç§»åŠ¨', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'æ¸…ç©ºæ–‡ä»¶å¤¹', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'æ’¤æ¶ˆ', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'é‡�å�š', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'å��å¥½', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'å…¨é€‰', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'å…¨ä¸�é€‰', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'å��å�‘é€‰æ‹©', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'åœ¨æ–°çª—å�£æ‰“å¼€', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'éš�è—� (å��å¥½)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'å…³é—­',
			'btnSave'   : 'ä¿�å­˜',
			'btnRm'     : 'åˆ é™¤',
			'btnApply'  : 'åº”ç”¨',
			'btnCancel' : 'å�–æ¶ˆ',
			'btnNo'     : 'å�¦',
			'btnYes'    : 'æ˜¯',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'è£…è½½',  // added 18.04.2012
			'btnApprove': 'è‡³ $1 å¹¶ç¡®è®¤', // from v2.1 added 26.04.2012
			'btnUnmount': 'å�¸è½½', // from v2.1 added 30.04.2012
			'btnConv'   : 'è½¬æ�¢', // from v2.1 added 08.04.2014
			'btnCwd'    : 'è¿™é‡Œ',      // from v2.1 added 22.5.2015
			'btnVolume' : 'å�·',    // from v2.1 added 22.5.2015
			'btnAll'    : 'å…¨éƒ¨',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIMEç±»åž‹', // from v2.1 added 22.5.2015
			'btnFileName':'æ–‡ä»¶å��',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'ä¿�å­˜å¹¶å…³é—­', // from v2.1 added 12.6.2015
			'btnBackup' : 'å¤‡ä»½', // fromv2.1 added 28.11.2015
			'btnRename'    : 'é‡�å‘½å��',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'é‡�å‘½å��(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'å�‘å‰� ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'å�‘å�Ž ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'å�¦å­˜ä¸º', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'æ‰“å¼€æ–‡ä»¶å¤¹',
			'ntffile'     : 'æ‰“å¼€æ–‡ä»¶',
			'ntfreload'   : 'åˆ·æ–°æ–‡ä»¶å¤¹å†…å®¹',
			'ntfmkdir'    : 'åˆ›å»ºæ–‡ä»¶å¤¹',
			'ntfmkfile'   : 'åˆ›å»ºæ–‡ä»¶',
			'ntfrm'       : 'åˆ é™¤æ–‡ä»¶',
			'ntfcopy'     : 'å¤�åˆ¶æ–‡ä»¶',
			'ntfmove'     : 'ç§»åŠ¨æ–‡ä»¶',
			'ntfprepare'  : 'å‡†å¤‡å¤�åˆ¶æ–‡ä»¶',
			'ntfrename'   : 'é‡�å‘½å��æ–‡ä»¶',
			'ntfupload'   : 'ä¸Šä¼ æ–‡ä»¶',
			'ntfdownload' : 'ä¸‹è½½æ–‡ä»¶',
			'ntfsave'     : 'ä¿�å­˜æ–‡ä»¶',
			'ntfarchive'  : 'åˆ›å»ºåŽ‹ç¼©åŒ…',
			'ntfextract'  : 'ä»ŽåŽ‹ç¼©åŒ…æ��å�–æ–‡ä»¶',
			'ntfsearch'   : 'æ�œç´¢æ–‡ä»¶',
			'ntfresize'   : 'æ­£åœ¨æ›´æ”¹å°ºå¯¸',
			'ntfsmth'     : 'æ­£åœ¨å¿™ >_<',
			'ntfloadimg'  : 'æ­£åœ¨åŠ è½½å›¾ç‰‡',
			'ntfnetmount' : 'æ­£åœ¨è£…è½½ç½‘ç»œå�·', // added 18.04.2012
			'ntfnetunmount': 'å�¸è½½ç½‘ç»œå�·', // from v2.1 added 30.04.2012
			'ntfdim'      : 'èŽ·å�–å›¾åƒ�å°ºå¯¸', // added 20.05.2013
			'ntfreaddir'  : 'æ­£åœ¨è¯»å�–æ–‡ä»¶å¤¹ä¿¡æ�¯', // from v2.1 added 01.07.2013
			'ntfurl'      : 'æ­£åœ¨èŽ·å�–é“¾æŽ¥åœ°å�€', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'æ­£åœ¨æ”¹å�˜æ–‡ä»¶æ¨¡å¼�', // from v2.1 added 20.6.2015
			'ntfpreupload': 'æ­£åœ¨éªŒè¯�ä¸Šä¼ æ–‡ä»¶å��', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'æ­£åœ¨åˆ›å»ºä¸€ä¸ªä¸‹è½½æ–‡ä»¶', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'æ­£åœ¨å�–å¾—è·¯å¾„ä¿¡æ�¯', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'æ­£åœ¨å¤„ç�†ä¸Šä¼ æ–‡ä»¶', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ç§»åŠ¨åˆ°å›žæ”¶ç«™', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'ä»Žå›žæ”¶ç«™æ�¢å¤�', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'æ£€æŸ¥ç›®æ ‡æ–‡ä»¶å¤¹', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'æ’¤æ¶ˆä¸Šä¸€ä¸ªå…¨å±€æ“�ä½œ', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'é‡�å�šä¸Šä¸€å…¨å±€æ“�ä½œ', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'æ£€æŸ¥å†…å®¹', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'å›žæ”¶ç«™', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'æœªçŸ¥',
			'Today'       : 'ä»Šå¤©',
			'Yesterday'   : 'æ˜¨å¤©',
			'msJan'       : 'ä¸€æœˆ',
			'msFeb'       : 'äºŒæœˆ',
			'msMar'       : 'ä¸‰æœˆ',
			'msApr'       : 'å››æœˆ',
			'msMay'       : 'äº”æœˆ',
			'msJun'       : 'å…­æœˆ',
			'msJul'       : 'ä¸ƒæœˆ',
			'msAug'       : 'å…«æœˆ',
			'msSep'       : 'ä¹�æœˆ',
			'msOct'       : 'å��æœˆ',
			'msNov'       : 'å��ä¸€æœˆ',
			'msDec'       : 'å��äºŒæœˆ',
			'January'     : 'ä¸€æœˆ',
			'February'    : 'äºŒæœˆ',
			'March'       : 'ä¸‰æœˆ',
			'April'       : 'å››æœˆ',
			'May'         : 'äº”æœˆ',
			'June'        : 'å…­æœˆ',
			'July'        : 'ä¸ƒæœˆ',
			'August'      : 'å…«æœˆ',
			'September'   : 'ä¹�æœˆ',
			'October'     : 'å��æœˆ',
			'November'    : 'å��ä¸€æœˆ',
			'December'    : 'å��äºŒæœˆ',
			'Sunday'      : 'æ˜ŸæœŸæ—¥',
			'Monday'      : 'æ˜ŸæœŸä¸€',
			'Tuesday'     : 'æ˜ŸæœŸäºŒ',
			'Wednesday'   : 'æ˜ŸæœŸä¸‰',
			'Thursday'    : 'æ˜ŸæœŸå››',
			'Friday'      : 'æ˜ŸæœŸäº”',
			'Saturday'    : 'æ˜ŸæœŸå…­',
			'Sun'         : 'å‘¨æ—¥',
			'Mon'         : 'å‘¨ä¸€',
			'Tue'         : 'å‘¨äºŒ',
			'Wed'         : 'å‘¨ä¸‰',
			'Thu'         : 'å‘¨å››',
			'Fri'         : 'å‘¨äº”',
			'Sat'         : 'å‘¨å…­',

			/******************************** sort variants ********************************/
			'sortname'          : 'æŒ‰å��ç§°',
			'sortkind'          : 'æŒ‰ç±»åž‹',
			'sortsize'          : 'æŒ‰å¤§å°�',
			'sortdate'          : 'æŒ‰æ—¥æœŸ',
			'sortFoldersFirst'  : 'æ–‡ä»¶å¤¹ä¼˜å…ˆ',
			'sortperm'          : 'æŒ‰æ�ƒé™�æŽ’åº�', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'æŒ‰å±žæ€§æŽ’åº�',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'æŒ‰æ‰€æœ‰è€…æŽ’åº�',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'æŒ‰ç»„æŽ’åº�',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'å�Œæ—¶åˆ·æ–°æ ‘çŠ¶ç›®å½•',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'æ–°æ–‡ä»¶.txt', // added 10.11.2015
			'untitled folder'   : 'æ–°æ–‡ä»¶å¤¹',   // added 10.11.2015
			'Archive'           : 'æ–°åŽ‹ç¼©åŒ…',  // from v2.1 added 10.11.2015
			'untitled file'     : 'æ–°æ–‡ä»¶.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: æ–‡ä»¶',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'è¯·ç¡®è®¤',
			'confirmRm'       : 'ç¡®å®šè¦�åˆ é™¤æ–‡ä»¶å�—?<br/>è¯¥æ“�ä½œä¸�å�¯æ’¤é”€!',
			'confirmRepl'     : 'ç”¨æ–°çš„æ–‡ä»¶æ›¿æ�¢åŽŸæœ‰æ–‡ä»¶?',
			'confirmRest'     : 'ä»Žå›žæ”¶ç«™æ›¿æ�¢å½“å‰�é¡¹?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'æ–‡ä»¶ä¸�æ˜¯UTF-8æ ¼å¼�.<br/>è½¬æ�¢ä¸ºUTF-8å�—ï¼Ÿ<br/>é€šè¿‡åœ¨è½¬æ�¢å�Žä¿�å­˜,å†…å®¹å�˜ä¸ºUTF-8.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'æ— æ³•æ£€æµ‹åˆ°æ­¤æ–‡ä»¶çš„å­—ç¬¦ç¼–ç �.éœ€è¦�æš‚æ—¶è½¬æ�¢æ­¤æ–‡ä»¶ä¸ºUTF-8ç¼–ç �ä»¥è¿›è¡Œç¼–è¾‘.<br/>è¯·é€‰æ‹©æ­¤æ–‡ä»¶çš„å­—ç¬¦ç¼–ç �.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'æ–‡ä»¶å·²è¢«ç¼–è¾‘.<br/>å¦‚æžœä¸�ä¿�å­˜ç›´æŽ¥å…³é—­,å°†ä¸¢å¤±ç¼–è¾‘å†…å®¹.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'ç¡®å®šè¦�å°†è¯¥é¡¹ç§»åŠ¨åˆ°å›žæ”¶ç«™ä¹ˆ?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'ç¡®å®šè¦�ç§»åŠ¨è¯¥é¡¹åˆ° "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'å…¨éƒ¨åº”ç”¨',
			'name'            : 'å��ç§°',
			'size'            : 'å¤§å°�',
			'perms'           : 'æ�ƒé™�',
			'modify'          : 'ä¿®æ”¹äºŽ',
			'kind'            : 'ç±»åˆ«',
			'read'            : 'è¯»å�–',
			'write'           : 'å†™å…¥',
			'noaccess'        : 'æ— æ�ƒé™�',
			'and'             : 'å’Œ',
			'unknown'         : 'æœªçŸ¥',
			'selectall'       : 'é€‰æ‹©æ‰€æœ‰æ–‡ä»¶',
			'selectfiles'     : 'é€‰æ‹©æ–‡ä»¶',
			'selectffile'     : 'é€‰æ‹©ç¬¬ä¸€ä¸ªæ–‡ä»¶',
			'selectlfile'     : 'é€‰æ‹©æœ€å�Žä¸€ä¸ªæ–‡ä»¶',
			'viewlist'        : 'åˆ—è¡¨è§†å›¾',
			'viewicons'       : 'å›¾æ ‡è§†å›¾',
			'viewSmall'       : 'å°�å›¾æ ‡', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'ä¸­å›¾æ ‡', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'å¤§å›¾æ ‡', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'è¶…å¤§å›¾æ ‡', // from v2.1.39 added 22.5.2018
			'places'          : 'ä½�ç½®',
			'calc'            : 'è®¡ç®—',
			'path'            : 'è·¯å¾„',
			'aliasfor'        : 'åˆ«å��',
			'locked'          : 'é”�å®š',
			'dim'             : 'å°ºå¯¸',
			'files'           : 'æ–‡ä»¶',
			'folders'         : 'æ–‡ä»¶å¤¹',
			'items'           : 'é¡¹ç›®',
			'yes'             : 'æ˜¯',
			'no'              : 'å�¦',
			'link'            : 'é“¾æŽ¥',
			'searcresult'     : 'æ�œç´¢ç»“æžœ',
			'selected'        : 'é€‰ä¸­çš„é¡¹ç›®',
			'about'           : 'å…³äºŽ',
			'shortcuts'       : 'å¿«æ�·é”®',
			'help'            : 'å¸®åŠ©',
			'webfm'           : 'ç½‘ç»œæ–‡ä»¶ç®¡ç�†å™¨',
			'ver'             : 'ç‰ˆæœ¬',
			'protocolver'     : 'å��è®®ç‰ˆæœ¬',
			'homepage'        : 'é¡¹ç›®ä¸»é¡µ',
			'docs'            : 'æ–‡æ¡£',
			'github'          : 'å¤�åˆ»æˆ‘ä»¬çš„github',
			'twitter'         : 'å…³æ³¨æˆ‘ä»¬çš„twitter',
			'facebook'        : 'åŠ å…¥æˆ‘ä»¬çš„facebook',
			'team'            : 'å›¢é˜Ÿ',
			'chiefdev'        : 'é¦–å¸­å¼€å�‘',
			'developer'       : 'å¼€å�‘',
			'contributor'     : 'è´¡çŒ®',
			'maintainer'      : 'ç»´æŠ¤',
			'translator'      : 'ç¿»è¯‘',
			'icons'           : 'å›¾æ ‡',
			'dontforget'      : 'åˆ«å¿˜äº†å¸¦ä¸Šä½ æ“¦æ±—çš„æ¯›å·¾',
			'shortcutsof'     : 'å¿«æ�·é”®å·²ç¦�ç”¨',
			'dropFiles'       : 'æŠŠæ–‡ä»¶æ‹–åˆ°è¿™é‡Œ',
			'or'              : 'æˆ–è€…',
			'selectForUpload' : 'é€‰æ‹©è¦�ä¸Šä¼ çš„æ–‡ä»¶',
			'moveFiles'       : 'ç§»åŠ¨æ–‡ä»¶',
			'copyFiles'       : 'å¤�åˆ¶æ–‡ä»¶',
			'restoreFiles'    : 'æ�¢å¤�æ–‡ä»¶', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ä»Žè¿™é‡Œä¸­åˆ é™¤',
			'aspectRatio'     : 'ä¿�æŒ�æ¯”ä¾‹',
			'scale'           : 'ç¼©æ”¾æ¯”ä¾‹',
			'width'           : 'å®½',
			'height'          : 'é«˜',
			'resize'          : 'è°ƒæ•´å¤§å°�',
			'crop'            : 'è£�åˆ‡',
			'rotate'          : 'æ—‹è½¬',
			'rotate-cw'       : 'é¡ºæ—¶é’ˆæ—‹è½¬90Â°',
			'rotate-ccw'      : 'é€†æ—¶é’ˆæ—‹è½¬90Â°',
			'degree'          : 'Â°',
			'netMountDialogTitle' : 'è£…è½½ç½‘ç»œç›®å½•', // added 18.04.2012
			'protocol'            : 'å��è®®', // added 18.04.2012
			'host'                : 'ä¸»æœº', // added 18.04.2012
			'port'                : 'ç«¯å�£', // added 18.04.2012
			'user'                : 'ç”¨æˆ·', // added 18.04.2012
			'pass'                : 'å¯†ç �', // added 18.04.2012
			'confirmUnmount'      : 'ç¡®å®žè¦�å�¸è½½ $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ä»Žæµ�è§ˆå™¨ä¸­æ‹–æ”¾æˆ–ç²˜è´´æ–‡ä»¶', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'æ‹–æ”¾æ–‡ä»¶ï¼Œç²˜è´´ç½‘å�€æˆ–å‰ªè´´æ�¿å›¾åƒ�', // from v2.1 added 07.04.2014
			'encoding'        : 'ç¼–ç �', // from v2.1 added 19.12.2014
			'locale'          : 'è¯­è¨€çŽ¯å¢ƒ',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ç›®æ ‡: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'æŒ‰è¾“å…¥MIMEç±»åž‹æ�œç´¢', // from v2.1 added 22.5.2015
			'owner'           : 'æ‰€æœ‰è€…', // from v2.1 added 20.6.2015
			'group'           : 'ç»„', // from v2.1 added 20.6.2015
			'other'           : 'å…¶ä»–', // from v2.1 added 20.6.2015
			'execute'         : 'æ‰§è¡Œ', // from v2.1 added 20.6.2015
			'perm'            : 'è®¸å�¯', // from v2.1 added 20.6.2015
			'mode'            : 'å±žæ€§', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'æ–‡ä»¶å¤¹æ˜¯ç©ºçš„', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'æ–‡ä»¶å¤¹æ˜¯ç©ºçš„\\A æ‹–æ”¾å�¯è¿½åŠ é¡¹ç›®', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'æ–‡ä»¶å¤¹æ˜¯ç©ºçš„\\A é•¿æŒ‰å�¯æ·»åŠ é¡¹ç›®', // from v2.1.6 added 30.12.2015
			'quality'         : 'å“�è´¨', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'è‡ªåŠ¨å�Œæ­¥',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'å�‘ä¸Šç§»åŠ¨',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'èŽ·å�–URLé“¾æŽ¥', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'å·²é€‰æ‹©é¡¹ç›® ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ç›®å½•ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'å…�è®¸ç¦»çº¿æ“�ä½œ', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'é‡�æ–°éªŒè¯�', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'æ­£åœ¨åŠ è½½...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'æ‰“å¼€å¤šä¸ªæ–‡ä»¶', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'æ‚¨æ­£åœ¨å°�è¯•æ‰“å¼€$1æ–‡ä»¶.æ‚¨ç¡®å®šè¦�åœ¨æµ�è§ˆå™¨ä¸­æ‰“å¼€å�—?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'æ�œç´¢ç›®æ ‡ä¸­æ²¡æœ‰åŒ¹é…�ç»“æžœ', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'æ­£åœ¨ç¼–è¾‘æ–‡ä»¶.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'å·²é€‰æ‹© $1 ä¸ªé¡¹ç›®.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'å‰ªè´´æ�¿é‡Œæœ‰ $1 ä¸ªé¡¹ç›®.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'å¢žé‡�æ�œç´¢ä»…æ�¥è‡ªå½“å‰�è§†å›¾.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'æ�¢å¤�', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 å®Œæˆ�', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'ä¸Šä¸‹æ–‡è�œå�•', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'ç¿»é¡µ', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'æ ¹ç›®å½•', // from v2.1.16 added 16.9.2016
			'reset'           : 'é‡�ç½®', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'èƒŒæ™¯è‰²', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'é¢œè‰²é€‰æ‹©å™¨', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'æ­¥é•¿(8px)', // from v2.1.16 added 4.10.2016
			'enabled'         : 'å�¯ç”¨', // from v2.1.16 added 4.10.2016
			'disabled'        : 'å…³é—­', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'å½“å‰�è§†å›¾ä¸‹æ²¡æœ‰åŒ¹é…�ç»“æžœ', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'å½“å‰�è§†å›¾ä¸­çš„ç¬¬ä¸€ä¸ªå­—æ¯�æ�œç´¢ç»“æžœä¸ºç©º', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'æ–‡æœ¬æ ‡ç­¾', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'å‰©ä½™ $1 åˆ†é’Ÿ', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'ä½¿ç”¨æ‰€é€‰ç¼–ç �é‡�æ–°æ‰“å¼€', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'ä½¿ç”¨æ‰€é€‰ç¼–ç �ä¿�å­˜', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'é€‰æ‹©ç›®å½•', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'é¦–å­—æ¯�æ�œç´¢', // from v2.1.23 added 24.3.2017
			'presets'         : 'é¢„ç½®', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'é¡¹ç›®å¤ªå¤šï¼Œä¸�èƒ½ç§»åŠ¨åˆ°å›žæ”¶ç«™.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'æ–‡æœ¬åŒºåŸŸ', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'æ¸…ç©ºæ–‡ä»¶å¤¹ "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'æ–‡ä»¶å¤¹ "$1" ä¸ºç©º.', // from v2.1.25 added 22.6.2017
			'preference'      : 'å��å¥½', // from v2.1.26 added 28.6.2017
			'language'        : 'è¯­è¨€è®¾ç½®', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'æ¸…é™¤ä¿�å­˜åœ¨æ­¤æµ�è§ˆå™¨ä¸­çš„å��å¥½è®¾ç½®', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'å·¥å…·æ �è®¾ç½®', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... å‰©ä½™$1å­—ç¬¦',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... å‰©ä½™$1è¡Œ',  // from v2.1.52 added 16.1.2020
			'sum'             : 'æ€»æ•°', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'ç²—ç•¥çš„æ–‡ä»¶å¤§å°�', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'é¼ æ ‡æ‚¬å�œåœ¨å¯¹è¯�æ¡†å†…å�¯ç¼–è¾‘åŒºåŸŸæ—¶è‡ªåŠ¨èŽ·å¾—ç„¦ç‚¹',  // from v2.1.30 added 2.11.2017
			'select'          : 'é€‰æ‹©', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'å�Œå‡»é€‰æ‹©çš„æ–‡ä»¶æ—¶', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ç”¨ä¸Šæ¬¡ä½¿ç”¨çš„ç¼–è¾‘å™¨æ‰“å¼€', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'å��å�‘é€‰æ‹©', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'ç¡®å®šè¦�é‡�å‘½å��é€‰å®šé¡¹ $1 ä¸º $2 å�—?<br/>è¯¥æ“�ä½œä¸�èƒ½æ’¤æ¶ˆ!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'æ‰¹é‡�é‡�å‘½å��', // from v2.1.31 added 8.12.2017
			'plusNumber'      : 'å¢žåŠ æ•°é‡�', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'æ·»åŠ å‰�ç¼€', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'æ·»åŠ å�Žç¼€', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'å�˜åŒ–èŒƒå›´', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'åˆ—è®¾ç½® (åˆ—è¡¨è§†å›¾)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'æ‰€æœ‰ä¿®æ”¹å°†ç«‹å�³å��é¦ˆåˆ°æ–‡æ¡£.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'æ‰€æœ‰ä¿®æ”¹åœ¨å�¸è½½æœ¬å�·ä¹‹å‰�ä¸�ä¼šå��é¦ˆ', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'å®‰è£…åœ¨æœ¬å�·ä¸Šçš„ä»¥ä¸‹å�·ä¹Ÿä¼šå�¸è½½.ä½ ç¡®å®šè¦�å�¸è½½å�—?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'é€‰æ‹©ä¿¡æ�¯', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'æ˜¾ç¤ºæ–‡ä»¶æ•£åˆ—å€¼çš„ç®—æ³•', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'ä¿¡æ�¯æ�¡ç›® (é€‰æ‹©ä¿¡æ�¯é�¢æ�¿)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'å†�æŒ‰é€€å‡º', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'å·¥å…·æ�¡', // from v2.1.38 added 4.4.2018
			'workspace'       : 'å·¥ä½œç©ºé—´', // from v2.1.38 added 4.4.2018
			'dialog'          : 'å¯¹è¯�æ¡†', // from v2.1.38 added 4.4.2018
			'all'             : 'å…¨éƒ¨', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'å›¾æ ‡å°ºå¯¸ (å›¾æ ‡è§†å›¾)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'æ‰“å¼€æœ€å¤§åŒ–ç¼–è¾‘å™¨çª—å�£', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'ç”±äºŽé€šè¿‡ API è½¬æ�¢åŠŸèƒ½å½“å‰�ä¸�å�¯ç”¨ï¼Œè¯·åˆ°ç½‘ç«™ä¸Šè½¬æ�¢.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'è½¬æ�¢å�Žï¼Œå¿…é¡»ä¸Šä¼ æ�¡ç›®URLæˆ–ä¸€ä¸ªä¸‹è½½çš„æ–‡ä»¶,ä»¥ä¿�å­˜è½¬æ�¢å�Žçš„æ–‡ä»¶.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'åœ¨ $1 ç«™ç‚¹ä¸Šè½¬æ�¢', // from v2.1.40 added 10.7.2018
			'integrations'    : 'é›†æˆ�', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'æœ¬ elFinder é›†æˆ�ä»¥ä¸‹å¤–éƒ¨æœ�åŠ¡.ä½¿ç”¨å‰�è¯·æ£€æŸ¥ä½¿ç”¨æ�¡æ¬¾ã€�éš�ç§�æ”¿ç­–ç­‰.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'æ˜¾ç¤ºå·²éš�è—�çš„æ�¡ç›®', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'éš�è—�å·²éš�è—�çš„æ�¡ç›®', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'æ˜¾ç¤º/éš�è—�å·²éš�è—�çš„æ�¡ç›®', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'å…�è®¸"æ–°æ–‡ä»¶"ä½¿ç”¨çš„æ–‡ä»¶ç±»åž‹', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'æ–‡æœ¬æ–‡ä»¶ç±»åž‹', // from v2.1.41 added 7.8.2018
			'add'             : 'æ·»åŠ ', // from v2.1.41 added 7.8.2018
			'theme'           : 'ä¸»é¢˜', // from v2.1.43 added 19.10.2018
			'default'         : 'ç¼ºçœ�', // from v2.1.43 added 19.10.2018
			'description'     : 'æ��è¿°', // from v2.1.43 added 19.10.2018
			'website'         : 'ç½‘ç«™', // from v2.1.43 added 19.10.2018
			'author'          : 'ä½œè€…', // from v2.1.43 added 19.10.2018
			'email'           : 'é‚®ç®±', // from v2.1.43 added 19.10.2018
			'license'         : 'è®¸å�¯è¯�', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'æœ¬æ�¡ç›®ä¸�èƒ½ä¿�å­˜. ä¸ºé�¿å…�ä¸¢å¤±ç¼–è¾‘æ•°æ�®,é¡»è¦�å¯¼å‡ºåˆ°ä½ çš„ç”µè„‘.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'åœ¨æ–‡ä»¶ä¸Šå�Œå‡»ä»¥é€‰ä¸­å®ƒ.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'ä½¿ç”¨å…¨å±�æ¨¡å¼�', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'æœªçŸ¥',
			'kindRoot'        : 'æ ¹ç›®å½•', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'æ–‡ä»¶å¤¹',
			'kindSelects'     : 'é€‰æ‹©', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'åˆ«å��',
			'kindAliasBroken' : 'é”™è¯¯çš„åˆ«å��',
			// applications
			'kindApp'         : 'ç¨‹åº�',
			'kindPostscript'  : 'Postscript æ–‡æ¡£',
			'kindMsOffice'    : 'Microsoft Office æ–‡æ¡£',
			'kindMsWord'      : 'Microsoft Word æ–‡æ¡£',
			'kindMsExcel'     : 'Microsoft Excel æ–‡æ¡£',
			'kindMsPP'        : 'Microsoft Powerpoint æ¼”ç¤º',
			'kindOO'          : 'Open Office æ–‡æ¡£',
			'kindAppFlash'    : 'Flash ç¨‹åº�',
			'kindPDF'         : 'PDF æ–‡æ¡£',
			'kindTorrent'     : 'Bittorrent æ–‡ä»¶',
			'kind7z'          : '7z åŽ‹ç¼©åŒ…',
			'kindTAR'         : 'TAR åŽ‹ç¼©åŒ…',
			'kindGZIP'        : 'GZIP åŽ‹ç¼©åŒ…',
			'kindBZIP'        : 'BZIP åŽ‹ç¼©åŒ…',
			'kindXZ'          : 'XZ åŽ‹ç¼©åŒ…',
			'kindZIP'         : 'ZIP åŽ‹ç¼©åŒ…',
			'kindRAR'         : 'RAR åŽ‹ç¼©åŒ…',
			'kindJAR'         : 'Java JAR æ–‡ä»¶',
			'kindTTF'         : 'True Type å­—ä½“',
			'kindOTF'         : 'Open Type å­—ä½“',
			'kindRPM'         : 'RPM åŒ…',
			// fonts
			'kindFont'        : 'å­—ä½“',
			'kindSFNT'        : 'SFNT å­—ä½“',
			'kindEOT'         : 'Embedded Open Type å­—ä½“',
			'kindWOFF'        : 'Web Open Font Format å­—ä½“',
			'kindWOFF2'       : 'Web Open Font Format 2 å­—ä½“',
			// texts
			'kindText'        : 'æ–‡æœ¬æ–‡ä»¶',
			'kindTextPlain'   : 'çº¯æ–‡æœ¬',
			'kindPHP'         : 'PHP æº�ä»£ç �',
			'kindCSS'         : 'å±‚å� æ ·å¼�è¡¨(CSS)',
			'kindHTML'        : 'HTML æ–‡æ¡£',
			'kindJS'          : 'Javascript æº�ä»£ç �',
			'kindRTF'         : 'å¯Œæ–‡æœ¬æ ¼å¼�(RTF)',
			'kindC'           : 'C æº�ä»£ç �',
			'kindCHeader'     : 'C å¤´æ–‡ä»¶',
			'kindCPP'         : 'C++ æº�ä»£ç �',
			'kindCPPHeader'   : 'C++ å¤´æ–‡ä»¶',
			'kindShell'       : 'Unix å¤–å£³è„šæœ¬',
			'kindPython'      : 'Python æº�ä»£ç �',
			'kindJava'        : 'Java æº�ä»£ç �',
			'kindRuby'        : 'Ruby æº�ä»£ç �',
			'kindPerl'        : 'Perl æº�ä»£ç �',
			'kindSQL'         : 'SQL è„šæœ¬',
			'kindXML'         : 'XML æ–‡æ¡£',
			'kindAWK'         : 'AWK æº�ä»£ç �',
			'kindCSV'         : 'é€—å�·åˆ†éš”å€¼æ–‡ä»¶(CSV)',
			'kindDOCBOOK'     : 'Docbook XML æ–‡æ¡£',
			'kindMarkdown'    : 'Markdown æ–‡æœ¬', // added 20.7.2015
			// images
			'kindImage'       : 'å›¾ç‰‡',
			'kindBMP'         : 'BMP å›¾ç‰‡',
			'kindJPEG'        : 'JPEG å›¾ç‰‡',
			'kindGIF'         : 'GIF å›¾ç‰‡',
			'kindPNG'         : 'PNG å›¾ç‰‡',
			'kindTIFF'        : 'TIFF å›¾ç‰‡',
			'kindTGA'         : 'TGA å›¾ç‰‡',
			'kindPSD'         : 'Adobe Photoshop å›¾ç‰‡',
			'kindXBITMAP'     : 'X bitmap å›¾ç‰‡',
			'kindPXM'         : 'Pixelmator å›¾ç‰‡',
			// media
			'kindAudio'       : 'éŸ³é¢‘',
			'kindAudioMPEG'   : 'MPEG éŸ³é¢‘',
			'kindAudioMPEG4'  : 'MPEG-4 éŸ³é¢‘',
			'kindAudioMIDI'   : 'MIDI éŸ³é¢‘',
			'kindAudioOGG'    : 'Ogg Vorbis éŸ³é¢‘',
			'kindAudioWAV'    : 'WAV éŸ³é¢‘',
			'AudioPlaylist'   : 'MP3 æ’­æ”¾åˆ—è¡¨',
			'kindVideo'       : 'è§†é¢‘',
			'kindVideoDV'     : 'DV è§†é¢‘',
			'kindVideoMPEG'   : 'MPEG è§†é¢‘',
			'kindVideoMPEG4'  : 'MPEG-4 è§†é¢‘',
			'kindVideoAVI'    : 'AVI è§†é¢‘',
			'kindVideoMOV'    : 'Quick Time è§†é¢‘',
			'kindVideoWM'     : 'Windows Media è§†é¢‘',
			'kindVideoFlash'  : 'Flash è§†é¢‘',
			'kindVideoMKV'    : 'Matroska è§†é¢‘',
			'kindVideoOGG'    : 'Ogg è§†é¢‘'
		}
	};
}));

                                                                                                                                                           includes/File_manager/lib/js/i18n/elfinder.ug_CN.js                                                 0000644                 00000050623 15266053001 0016010 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * Uyghur translation
 * @author Alim.Boyaq <boyaq@otkur.biz>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ug_CN = {
		translator : 'ØªÛ•Ø±Ø¬Ù‰Ù…Û• Ù‚Ù‰Ù„ØºÛ‡Ú†Ù‰:  Ø¦Û†ØªÙƒÛˆØ± Ø¨Ù‰Ø² Ø´Ù‰Ø±ÙƒÙ‰ØªÙ‰ info@otkur.biz',
		language   : 'Ø¦â€�Û‡ÙŠØºÛ‡Ø±Ú†Û•',
		direction  : 'rtl',
		dateFormat : 'Y-m-d H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Ø®Ø§ØªØ§Ù„Ù‰Ù‚',
			'errUnknown'           : 'ÙƒÛˆØªÛˆÙ„Ù…Ù‰Ú¯Û•Ù† Ø®Ø§ØªØ§Ù„Ù‰Ù‚ÙƒÛ•Ù†.',
			'errUnknownCmd'        : 'ÙƒÛˆØªÛˆÙ„Ù…Ù‰Ú¯Û•Ù† Ø¨Û‡ÙŠØ±Û‡Ù‚ÙƒÛ•Ù†.',
			'errJqui'              : 'jQuery UI ØªÛ•Ú­Ø´Ù‰ÙƒÙ‰ ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù†. Ú†ÙˆÙ‚Û‡Ù… SelectableØŒ draggableØŒ droppabl Ù‚Ø§ØªØ§Ø±Ù„Ù‰Ù‚ Ø¨Û†Ù„Û•ÙƒÙ„Û•Ø± Ø¨ÙˆÙ„Û‡Ø´Ù‰ ÙƒÛ�Ø±Û•Ùƒ.',
			'errNode'              : 'elFinder DOM Ø¦Û�Ù„Ù‰Ù…Ù‰Ù†ØªÙ„Ù‰Ø±Ù‰Ù†Ù‰ Ù‚Û‡Ø±Ø§Ù„Ù‰Ø´Ù‰ ÙƒÛ�Ø±Û•Ùƒ.',
			'errURL'               : 'elFinder ØªÛ•Ú­Ø´Ù‰ÙƒÙ‰ ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù†! URL ØªÛ•Ú­Ø´Ù‰ÙƒÙ‰ ÙŠÛ�Ø²Ù‰Ù„Ù…Ù‰ØºØ§Ù†.',
			'errAccess'            : 'Ø²Ù‰ÙŠØ§Ø±Û•Øª Ù‚Ù‰Ù„Ù‰Ø´ Ú†Û•ÙƒÙ„Û•Ù†Ú¯Û•Ù†.',
			'errConnect'           : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ù‰ØºØ§ Ø¦Û‡Ù„Ø§Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰..',
			'errAbort'             : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ù‰ØºØ§ ØªÙˆØ®ØªÙ‰ØªÙ‰Ù„Ø¯Ù‰.',
			'errTimeout'           : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ù‰ØºØ§ Ø¨Û•Ù„Ú¯Ù‰Ù„Û•Ù†Ú¯Û•Ù† Û‹Ø§Ù‚Ù‰ØªØªØ§ Ø¦Û‡Ù„Ù‰ÙŠØ§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errNotFound'          : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ø§ ØªÛ�Ù¾Ù‰Ù„Ù…Ù‰Ø¯Ù‰.',
			'errResponse'          : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ù‰Ø¯Ù‰Ù† ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù† Ø¦Ù‰Ù†ÙƒØ§Ø³ Ù‚Ø§ÙŠØªØªÙ‰.',
			'errConf'              : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ø§ ØªÛ•Ú­Ø´Ù‰ÙƒÙ‰ ØªÙˆØºØ±Ø§ Ø¦Û•Ù…Û•Ø³.',
			'errJSON'              : 'PHP JSON Ø¨Û†Ù„Ù‰ÙƒÙ‰ Ù‚Ø§Ú†Ù‰Ù„Ø§Ù†Ù…Ù‰ØºØ§Ù†.',
			'errNoVolumes'         : 'Ø¦ÙˆÙ‚Û‡Ø´Ù‚Ø§ Ø¨ÙˆÙ„Ù‰Ø¯Ù‰ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø®Ø§Ù„ØªÙ‰Ø³Ù‰ ÙŠÙˆÙ‚.',
			'errCmdParams'         : 'Ù¾Ø§Ø±Ø§Ù…Û�ØªÙ‰Ø± Ø®Ø§ØªØ§ØŒ Ø¨Û‡ÙŠØ±Û‡Ù‚: "$1".',
			'errDataNotJSON'       : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ø§ Ù‚Ø§ÙŠØªÛ‡Ø±ØºØ§Ù† Ø³Ø§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ø§Øª ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„ØºØ§Ù† JSON Ø¦Û•Ù…Û•Ø³ÙƒÛ•Ù†.',
			'errDataEmpty'         : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ø§ Ù‚Ø§ÙŠØªÛ‡Ø±ØºØ§Ù† Ø³Ø§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ø§Øª Ù‚Û‡Ø±Û‡Ù‚ÙƒÛ•Ù†.',
			'errCmdReq'            : 'Ø¦Ø§Ø±Ù‚Ø§ Ø³Û‡Ù¾Ù‰Ø¯Ù‰ÙƒÙ‰ Ø¨Û‡ÙŠØ±Û‡Ù‚Ù†Ù‰Ú­ Ø¦â€�Ø³Ù‰Ù…Ù‰ ØªÛ•Ù…Ù‰Ù†Ù„Ù‰Ù†Ù‰Ø´Ù‰ ÙƒÛ�Ø±Û•Ùƒ.',
			'errOpen'              : '"$1"Ù†Ù‰ Ø¦Ø§Ú†Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errNotFolder'         : 'Ø¦ÙˆØ¨Ù‰ÙƒÙ‰Øª Ù…Û‡Ù†Ø¯Û•Ø±Ù‰Ø¬Û• Ø¦Û•Ù…Û•Ø³ÙƒÛ•Ù†.',
			'errNotFile'           : 'Ø¦ÙˆØ¨Ù‰ÙƒÙ‰Øª Ú¾ÛˆØ¬Ø¬Û•Øª Ø¦Û•Ù…Û•Ø³ÙƒÛ•Ù†.',
			'errRead'              : '"$1"Ù†Ù‰ Ø¦ÙˆÙ‚Û‡ÙŠØ§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errWrite'             : '"$1"Ù†Ù‰ ÙŠØ§Ø²Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errPerm'              : 'Ú¾ÙˆÙ‚Û‡Ù‚ ÙŠÙˆÙ‚.',
			'errLocked'            : '"$1" ØªØ§Ù‚Ø§Ù„ØºØ§Ù†,Ø¦Û†Ø²Ú¯Û•Ø±ØªÛ•Ù„Ù…Û•ÙŠØ³Ù‰Ø².',
			'errExists'            : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•Øª Ø¨Ø§Ø±ÙƒÛ•Ù†.',
			'errInvName'           : 'ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú† Ø¦Ù‰Ø³Ù…Ù‰.',
			'errFolderNotFound'    : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù†Ù‰ ØªØ§Ù¾Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errFileNotFound'      : 'Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ØªØ§Ù¾Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errTrgFolderNotFound' : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù†Ù‰ ØªØ§Ù¾Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errPopup'             : 'Ø³Û•ÙƒØ±Û•Ù¾ Ú†Ù‰Ù‚Ù‚Ø§Ù† ÙŠÛ�Ú­Ù‰ Ø¨Û•ØªÙ†Ù‰ ØªÙˆØ± ÙƒÛ†Ø±Ú¯ÛˆÚ† ÙƒÛ†Ø±Ø³Û•ØªÙ…Ù‰Ø¯Ù‰ØŒ Ø¦ÛˆØ³ØªÙ‰Ø¯Ù‰ÙƒÙ‰ Ø¦Û•Ø³ÙƒÛ•Ø±ØªÙ‰Ø´ØªÙ‰Ù† ØªÙˆØ± ÙƒÛ†Ø±Ú¯ÛˆÚ†Ù†Ù‰ ÙƒÛ†Ø±Ø³Ù‰ØªÙ‰Ø´ÙƒÛ• ØªÛ•Ú­Ø´Û•Ú­.',
			'errMkdir'             : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù†Ù‰ Ù‚Û‡Ø±Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errMkfile'            : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ù‚Û‡Ø±Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errRename'            : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰Ú­ Ø¦Ù‰Ø³Ù…Ù‰Ù†Ù‰ ÙŠÛ�Ú­Ù‰Ù„Ø§Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errCopyFrom'          : ' "$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ø¦ÙˆØ±Û‡Ù†Ø¯Ù‰Ù† Ú¾ÛˆØ¬Ø¬Û•Øª ÙƒÛ†Ú†ÛˆØ±ÛˆØ´ Ú†Û•ÙƒÙ„Û•Ù†Ú¯Û•Ù†.',
			'errCopyTo'            : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ø¦ÙˆØ±Û‡Ù†ØºØ§ Ú¾ÛˆØ¬Ø¬Û•Øª ÙƒÛ†Ú†ÛˆØ±ÛˆØ´ Ú†Û•ÙƒÙ„Û•Ù†Ú¯Û•Ù†.',
			'errUpload'            : 'ÙŠÛˆÙƒÙ„Û•Ø´ØªÛ• Ø®Ø§ØªØ§Ù„Ù‰Ù‚ ÙƒÛ†Ø±ÛˆÙ„Ø¯Ù‰.',
			'errUploadFile'        : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ÙŠÛˆÙƒÙ„Û•Ø´ØªÛ• Ø®Ø§ØªØ§Ù„Ù‰Ù‚ ÙƒÛ†Ø±ÛˆÙ„Ø¯Ù‰.',
			'errUploadNoFiles'     : 'ÙŠÛˆÙƒÙ„Ù‰Ù…Û•ÙƒÚ†Ù‰ Ø¨ÙˆÙ„ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª ØªÛ�Ù¾Ù‰Ù„Ù…Ù‰Ø¯Ù‰.',
			'errUploadTotalSize'   : 'Ø³Ø§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ø§Øª Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰ Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰Ø¯Ù‰Ù† Ø¦Û�Ø´Ù‰Ù¾ ÙƒÛ•ØªÙƒÛ•Ù†..',
			'errUploadFileSize'    : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰ Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰Ø¯Ù‰Ù† Ø¦Û�Ø´Ù‰Ù¾ ÙƒÛ•ØªÙƒÛ•Ù†..',
			'errUploadMime'        : 'Ú†Û•ÙƒÙ„Û•Ù†Ú¯Û•Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø´Û•ÙƒÙ„Ù‰.',
			'errUploadTransfer'    : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ÙŠÙˆÙ„Ù„Ø§Ø´ØªØ§ Ø®Ø§ØªØ§Ù„Ù‰Ù‚ ÙƒÛ†Ø±ÛˆÙ„Ø¯Ù‰.',
			'errNotReplace'        : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•Øª Ø¨Ø§Ø±ÙƒÛ•Ù†ØŒ Ø¦Ø§Ù„Ù…Ø§Ø´ØªÛ‡Ø±Û‡Ø´Ù‚Ø§ Ø¨ÙˆÙ„Ù…Ø§ÙŠØ¯Û‡.', // new
			'errReplace'           : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø¦Ø§Ù„Ù…Ø§Ø´ØªÛ‡Ø±Û‡Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errSave'              : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø³Ø§Ù‚Ù„Ø§Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errCopy'              : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ÙƒÛ†Ú†ÛˆØ±ÛˆØ´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errMove'              : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ÙŠÛ†ØªÙƒÛ•Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errCopyInItself'      : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø¦Û•Ø³Ù„Ù‰ Ø¦ÙˆØ±Ù†Ù‰ØºØ§ ÙŠÛ†ØªÙƒÛ•Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errRm'                : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø¦Û†Ú†ÛˆØ±ÛˆØ´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errRmSrc'             : 'Ø¦Û•Ø³Ù„Ù‰ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø¦Û†Ú†ÛˆØ±ÛˆØ´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errExtract'           : ' "$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ø§ØªØªÙ‰Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø¦Ø§ÙŠØ±Ù‰Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰..',
			'errArchive'           : 'Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ù†ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ú¾Ø§Ø³Ù‰Ù„Ù„Ø§Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',
			'errArcType'           : 'Ø¨Û‡ Ø®Ù‰Ù„ Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ù†ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø´Û•ÙƒÙ„Ù‰Ù†Ù‰ Ø³Ù‰Ø³ØªÛ�Ù…Ø§ Ø¨Ù‰Ø± ØªÛ•Ø±Û•Ù¾ Ù‚Ù‰Ù„Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errNoArchive'         : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ù†ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø¦Û•Ù…Û•Ø³ØŒ ÙŠØ§ÙƒÙ‰ ØªÙˆØºØ±Ø§ Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ù†Ù…Ù‰ØºØ§Ù†.',
			'errCmdNoSupport'      : 'Ø¨Û‡ Ø®Ù‰Ù„ Ø¨Û‡ÙŠØ±Û‡Ù‚Ù†Ù‰ Ø¨Ù‰Ø± ØªÛ•Ø±Û•Ù¾ Ù‚Ù‰Ù„Ø§Ù„Ù…Ù‰Ø¯Ù‰.',
			'errReplByChild'       : 'â€œ$1â€� Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù†Ù‰ Ø¦Ø§Ù„Ù…Ø§Ø´Û‡ØªÛ‡Ø±Û‡Ø´Ù‚Ø§ Ø¨ÙˆÙ„Ù…Ø§ÙŠØ¯Û‡.',
			'errArcSymlinks'       : 'Ø¨Ù‰Ø®Û•ØªÛ•Ø±Ù„Ù‰Ùƒ Ø¦ÛˆÚ†ÛˆÙ† Ø¨Û‡ Ù…Û•Ø´ØºÛ‡Ù„Ø§Øª Ø¦Û•Ù…Û•Ù„Ø¯Ù‰Ù† Ù‚Ø§Ù„Ø¯Û‡Ø±Û‡Ù„Ø¯Ù‰..',
			'errArcMaxSize'        : 'Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ù†ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰Ú­ Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰ Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰Ø¯Ù‰Ù† Ø¦Û�Ø´Ù‰Ù¾ ÙƒÛ•Ù†ÙƒÛ•Ù†.',
			'errResize'            : ' "$1" Ú†ÙˆÚ­Ù„Û‡Ù‚Ù†Ù‰ ØªÛ•Ú­Ø´Û•Ø´ÙƒÛ• Ø¨ÙˆÙ„Ù…Ù‰Ø¯Ù‰.',
			'errResizeDegree'      : 'ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù† Ù¾Ù‰Ù‚Ù‰Ø±Ù‰ØªÙ‰Ø´ Ú¯Ù‰Ø±Ø§Ø¯Û‡Ø³Ù‰',
			'errResizeRotate'      : 'Ø±Û•Ø³Ù‰Ù…Ù†Ù‰ Ù¾Ù‰Ù‚Ù‰Ø±Ù‰ØªÙ‰Ø´Ù‚Ø§ Ø¨ÙˆÙ„Ù…Ù‰Ø¯Ù‰.',
			'errResizeSize'        : 'ØªÙˆØºØ±Ø§ Ø¨ÙˆÙ„Ù…Ù‰ØºØ§Ù† Ø±Û•Ø³Ù‰Ù… Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰.',
			'errResizeNoChange'    : 'Ø±Û•Ø³Ù‰Ù… Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰ Ø¦Û†Ø²Ú¯Û•Ø±Ù…Ù‰Ú¯Û•Ù†.',
			'errUsupportType'      : 'Ù‚ÙˆÙ„Ù„Ù‰Ù…Ø§ÙŠØ¯Ù‰ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ø´Û•ÙƒÙ„Ù‰.',
			'errNotUTF8Content'    : '"$1" Ù†Ø§Ù…Ù„Ù‰Ù‚ Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰Ú­ ÙƒÙˆØ¯Ù‰  UTF-8Ø¦Û•Ù…Û•Ø³ÙƒÛ•Ù†ØŒ  ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Ù‰Ú¯Ù‰Ù„Ù‰ Ø¨ÙˆÙ„Ù…Ø§ÙŠØ¯Û‡.',  // added 9.11.2011
			'errNetMount'          : ' "$1" Ù†Ù‰ ÙŠÛˆÙƒÙ„Û•Ø´ØªÛ• Ø®Ø§ØªÙ„Ù‰Ù‚ ÙŠÛˆØ² Ø¨Û•Ø±Ø¯Ù‰..', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ø¨Û‡ Ø®Ù‰Ù„ Ù¾Ø±ÙˆØªÙˆÙƒÙˆÙ„ Ù‚ÙˆÙ„Ù„Ø§Ù†Ù…Ù‰Ø¯Ù‰..',     // added 17.04.2012
			'errNetMountFailed'    : 'ÙŠÛˆÙƒÙ„Û•Ø´ Ù…Û•ØºÙ„Û‡Ù¾ Ø¨ÙˆÙ„Ø¯Ù‰.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Ù…Û‡Ù„Ø§Ø²Ù‰Ù…Ù‰ØªÙ‰Ø±Ù†Ù‰ ÙƒÛ†Ø±Ø³Ù‰ØªÙ‰Ù¾ Ø¨Û�Ø±Ù‰Ú­.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ø´',
			'cmdback'      : 'Ù‚Ø§ÙŠØªÙ‰Ø´',
			'cmdcopy'      : 'ÙƒÛ†Ú†ÛˆØ±ÛˆØ´',
			'cmdcut'       : 'ÙƒÛ�Ø³Ù‰Ø´',
			'cmddownload'  : 'Ú†ÛˆØ´ÛˆØ±ÛˆØ´',
			'cmdduplicate' : 'Ù†Û‡Ø³Ø®Ù‰Ù„Ø§Ø´',
			'cmdedit'      : 'ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Û•Ø´',
			'cmdextract'   : 'Ù¾Ù‰Ø±Ù‰Ø³ØªÙ‰Ù† Ú¾ÛˆØ¬Ø¬Û•Øª Ú†Ù‰Ù‚Ù‰Ø±Ù‰Ø´',
			'cmdforward'   : 'Ø¦â€�Ø§Ù„Ø¯Ù‰ØºØ§ Ù…Û�Ú­Ù‰Ø´',
			'cmdgetfile'   : 'ØªØ§Ù„Ù„Ø§Ø´',
			'cmdhelp'      : 'Ø¦Û•Ù¾ Ú¾Û•Ù‚Ù‚Ù‰Ø¯Û•',
			'cmdhome'      : 'Ø¨Ø§Ø´ Ø¨Û•Øª',
			'cmdinfo'      : 'Ø¦Û‡Ú†Û‡Ø±Ù„Ù‰Ø±Ù‰',
			'cmdmkdir'     : 'ÙŠÛ�Ú­Ù‰ Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†',
			'cmdmkfile'    : 'ÙŠÛ�Ú­Ù‰ Ú¾ÛˆØ¬Ø¬Û•Øª',
			'cmdopen'      : 'Ø¦Û�Ú†Ù‰Ø´',
			'cmdpaste'     : 'Ú†Ø§Ù¾Ù„Ø§Ø´',
			'cmdquicklook' : 'ÙƒÛ†Ø±ÛˆØ´',
			'cmdreload'    : 'ÙŠÛ�Ú­Ù‰Ù„Ø§Ø´',
			'cmdrename'    : 'Ù†Ø§Ù… ÙŠÛ�Ú­Ù‰Ù„Ø§Ø´',
			'cmdrm'        : 'Ø¦Û†Ú†ÛˆØ±ÛˆØ´',
			'cmdsearch'    : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ø¦Ù‰Ø²Ø¯Û•Ø´',
			'cmdup'        : 'Ø¦Ø§Ù„Ø¯Ù‰Ù†Ù‚Ù‰ Ù…Û‡Ù†Ø¯Û•Ø±Ù‰Ø¬Ù‰Ú¯Û• Ø¨Û�Ø±Ù‰Ø´',
			'cmdupload'    : 'ÙŠÛˆÙƒÙ„Û•Ø´',
			'cmdview'      : 'ÙƒÛ†Ø±ÛˆØ´',
			'cmdresize'    : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰Ù†Ù‰ ØªÛ•Ú­Ø´Û•Ø´',
			'cmdsort'      : 'ØªÛ•Ø±ØªÙ‰Ù¾',
			'cmdnetmount'  : 'ØªÙˆØ±Ø¯Ù‰Ù† Ù‚ÙˆØ´Û‡Ø´', // added 18.04.2012

			/*********************************** buttons ***********************************/
			'btnClose'  : 'ØªØ§Ù‚Ø§Ø´',
			'btnSave'   : 'Ø³Ø§Ù‚Ù„Ø§Ø´',
			'btnRm'     : 'Ø¦Û†Ú†ÛˆØ±ÛˆØ´',
			'btnApply'  : 'Ø¦Ù‰Ø´Ù„Ù‰ØªÙ‰Ø´',
			'btnCancel' : 'Ø¨Û�ÙƒØ§Ø±Ù„Ø§Ø´',
			'btnNo'     : 'ÙŠØ§Ù‚',
			'btnYes'    : 'Ú¾Û•Ø¦Û•',
			'btnDiscard': 'Discard changes',
			'btnMount'  : 'ÙŠÛˆÙƒÙ„Û•Ø´',  // added 18.04.2012

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù†Ù‰ Ø¦Û�Ú†Ù‰Ø´',
			'ntffile'     : 'Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ø¦Û�Ú†Ù‰Ø´',
			'ntfreload'   : 'ÙŠÛ�Ú­Ù‰Ù„Ø§Ø´',
			'ntfmkdir'    : 'Ù‚Ù‰Ø³Ù‚Û‡Ú† Ù‚Û‡Ø±Û‡Ø´',
			'ntfmkfile'   : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Û‡Ø±Û‡Ø´',
			'ntfrm'       : 'Ø¦Û†Ú†ÛˆØ±ÛˆØ´',
			'ntfcopy'     : 'ÙƒÛ†Ú†ÛˆØ±ÛˆØ´',
			'ntfmove'     : 'ÙŠÛ†ØªÙƒÛ•Ø´',
			'ntfprepare'  : 'ÙƒÛ†Ú†ÛˆØ±ÛˆØ´ ØªÛ•ÙŠÙŠØ§Ø±Ù„Ù‰Ù‚Ù‰',
			'ntfrename'   : 'Ù†Ø§Ù… ÙŠÛ�Ú­Ù‰Ù„Ø§Ø´',
			'ntfupload'   : 'ÙŠÛˆÙƒÙ„Û•Ø´',
			'ntfdownload' : 'Ú†ÛˆØ´ÛˆØ±ÛˆØ´',
			'ntfsave'     : 'Ø³Ø§Ù‚Ù„Ø§Ø´',
			'ntfarchive'  : 'Ù¾Ù‰Ø±Ù‰Ø³Ù„Ø§Ø´',
			'ntfextract'  : 'Ù¾Ù‰Ø±Ù‰Ø³ØªÙ‰Ù† ÙŠÛ�Ø´Ù‰Ø´',
			'ntfsearch'   : 'Ø¦Ù‰Ø²Ø¯Û•Ø´',
			'ntfresize'   : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰ Ø¦Û†Ø²Ú¯Û•Ø±ØªÙ‰Ù„Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡',
			'ntfsmth'     : 'Ø¦Ø§Ù„Ø¯Ù‰Ø±Ø§Ø´ >_<',
			'ntfloadimg'  : 'Ø±Û•Ø³Ù‰Ù… Ø¦Û�Ú†Ù‰Ù„Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡',
      		'ntfnetmount' : 'ØªÙˆØ± Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰ ÙŠÛˆÙƒÙ„Ù‰Ù†Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡', // added 18.04.2012
			'ntfdim'      : 'Acquiring image dimension',

			/************************************ dates **********************************/
			'dateUnknown' : 'Ø¦Û�Ù†Ù‰Ù‚ Ø¦Û•Ù…Û•Ø³',
			'Today'       : 'Ø¨ÛˆÚ¯ÛˆÙ†',
			'Yesterday'   : 'ØªÛ†Ù†ÛˆÚ¯ÛˆÙ†',
			'msJan'       : '1-Ø¦Ø§ÙŠ',
			'msFeb'       : '2-Ø¦Ø§ÙŠ',
			'msMar'       : '3-Ø¦Ø§ÙŠ',
			'msApr'       : '4-Ø¦Ø§ÙŠ',
			'msMay'       : '5-Ø¦Ø§ÙŠ',
			'msJun'       : '6-Ø¦Ø§ÙŠ',
			'msJul'       : '7-Ø¦Ø§ÙŠ',
			'msAug'       : '8-Ø¦Ø§ÙŠ',
			'msSep'       : '9-Ø¦â€�Ø§ÙŠ',
			'msOct'       : '10-Ø¦Ø§ÙŠ',
			'msNov'       : '11-Ø¦Ø§ÙŠ',
			'msDec'       : '12-Ø¦Ø§ÙŠ',
			'January'     : '1-Ø¦Ø§ÙŠ',
			'February'    : '2-Ø¦Ø§ÙŠ',
			'March'       : '3-Ø¦Ø§ÙŠ',
			'April'       : '4-Ø¦Ø§ÙŠ',
			'May'         : '5-Ø¦Ø§ÙŠ',
			'June'        : '6-Ø¦Ø§ÙŠ',
			'July'        : '7-Ø¦Ø§ÙŠ',
			'August'      : '8-Ø¦Ø§ÙŠ',
			'September'   : '9-Ø¦Ø§ÙŠ',
			'October'     : '10-Ø¦Ø§ÙŠ',
			'November'    : '11-Ø¦Ø§ÙŠ',
			'December'    : '12-Ø¦Ø§ÙŠ',
			'Sunday'      : 'ÙŠÛ•ÙƒØ´Û•Ù†Ø¨Û•',
			'Monday'      : 'Ø¯ÛˆØ´Û•Ù†Ø¨Û•',
			'Tuesday'     : 'Ø³Û•ÙŠØ´Û•Ù†Ø¨Û•',
			'Wednesday'   : 'Ú†Ø§Ø±Ø´Û•Ù†Ø¨Û•',
			'Thursday'    : 'Ù¾Û•ÙŠØ´Û•Ù†Ø¨Û•',
			'Friday'      : 'Ø¬ÛˆÙ…Û•',
			'Saturday'    : 'Ø´Û•Ù†Ø¨Û•',
			'Sun'         : 'ÙŠÛ•',
			'Mon'         : 'Ø¯Ûˆ',
			'Tue'         : 'Ø³Û•',
			'Wed'         : 'Ú†Ø§',
			'Thu'         : 'Ù¾Û•',
			'Fri'         : 'Ø¬Ûˆ',
			'Sat'         : 'Ø´Û•',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ù†Ø§Ù…Ù‰ ',
			'sortkind'          : 'Ø´Û•ÙƒÙ„Ù‰ ',
			'sortsize'          : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰',
			'sortdate'          : 'Û‹Ø§Ù‚ØªÙ‰',
			'sortFoldersFirst'  : 'Ù‚Ù‰Ø³Ù‚Û‡Ú†Ù„Ø§Ø± Ø¨Ø§Ø´ØªØ§',

			/********************************** messages **********************************/
			'confirmReq'      : 'Ù…Û‡Ù‚Ù‰Ù…Ù„Ø§Ø´ØªÛ‡Ø±Û‡Ú­',
			'confirmRm'       : 'Ø±Ø§Ø³ØªÙ‰Ù†Ù„Ø§ Ø¦Û†Ú†ÛˆØ±Û•Ù…Ø³Ù‰Ø²?<br/>ÙƒÛ•ÙŠÙ†Ù‰Ú¯Û• Ù‚Ø§ÙŠØªÛ‡Ø±ØºÙ‰Ù„Ù‰ Ø¨ÙˆÙ„Ù…Ø§ÙŠØ¯Û‡!',
			'confirmRepl'     : 'Ú¾Ø§Ø²Ù‰Ø±Ù‚Ù‰ Ú¾ÛˆØ¬Ø¬Û•Øª Ø¨Ù‰Ù„Û•Ù† ÙƒÙˆÙ†Ù‰Ø³Ù‰Ù†Ù‰ Ø¦Ø§Ù„Ù…Ø§Ø´ØªÛ‡Ø±Ø§Ù…Ø³Ù‰Ø²?',
			'apllyAll'        : 'Ú¾Û•Ù…Ù…Ù‰Ø³Ù‰Ú¯Û• Ø¦Ù‰Ø´Ù„Ù‰ØªÙ‰Ø´',
			'name'            : 'Ù†Ø§Ù…Ù‰',
			'size'            : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰',
			'perms'           : 'Ú¾ÙˆÙ‚Û‡Ù‚',
			'modify'          : 'Ø¦Û†Ø²Ú¯Û•Ø±Ú¯Û•Ù† Û‹Ø§Ù‚ØªÙ‰',
			'kind'            : 'ØªÛˆØ±Ù‰',
			'read'            : 'Ø¦ÙˆÙ‚Û‡Ø´',
			'write'           : 'ÙŠÛ�Ø²Ù‰Ø´',
			'noaccess'        : 'Ú¾ÙˆÙ‚Û‡Ù‚ ÙŠÙˆÙ‚',
			'and'             : 'Ú¾Û•Ù…',
			'unknown'         : 'Ø¦Û�Ù†Ù‰Ù‚ Ø¦Û•Ù…Û•Ø³',
			'selectall'       : 'Ú¾Û•Ù…Ù…Ù‰Ù†Ù‰ ØªØ§Ù„Ù„Ø§Ø´',
			'selectfiles'     : 'ØªØ§Ù„Ù„Ø§Ø´',
			'selectffile'     : 'Ø¨Ù‰Ø±Ù‰Ù†Ú†Ù‰Ø³Ù‰Ù†Ù‰ ØªØ§Ù„Ù„Ø§Ø´',
			'selectlfile'     : 'Ø¦Û•Ú­ Ø¦Ø§Ø®Ù‰Ø±Ù‚Ù‰Ø³Ù‰Ù†Ù‰ ØªØ§Ù„Ù„Ø§Ø´',
			'viewlist'        : 'Ø¬Û•Ø¯Û‹Û•Ù„Ù„Ù‰Ùƒ ÙƒÛ†Ø±Ù‰Ù†Ù‰Ø´Ù‰',
			'viewicons'       : 'Ø±Û•Ø³Ù‰Ù…Ù„Ù‰Ùƒ ÙƒÛ†Ø±Ù‰Ù†Ù‰Ø´Ù‰',
			'places'          : 'Ø¦ÙˆØ±Ù†Ù‰',
			'calc'            : 'Ú¾Û�Ø³Ø§Ø¨Ù„Ø§Ø´',
			'path'            : 'Ø¦ÙˆØ±Ù†Ù‰',
			'aliasfor'        : 'Ø¨Ø§Ø´Ù‚Ø§ Ù†Ø§Ù…Ù‰',
			'locked'          : 'ØªØ§Ù‚Ø§Ù„ØºØ§Ù†',
			'dim'             : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰',
			'files'           : 'Ú¾ÛˆØ¬Ø¬Û•Øª',
			'folders'         : 'Ù‚Ù‰Ø³Ù‚Û‡Ú†',
			'items'           : 'ØªÛˆØ±Ù„Û•Ø±',
			'yes'             : 'Ú¾Û•Ø¦Û•',
			'no'              : 'ÙŠØ§Ù‚',
			'link'            : 'Ø¦Û‡Ù„Ù‰Ù†Ù‰Ø´',
			'searcresult'     : 'Ø¦Ù‰Ø²Ø¯Û•Ø´ Ù†Û•ØªÙ‰Ø¬Ù‰Ø³Ù‰',
			'selected'        : 'ØªØ§Ù„Ù„Ø§Ù†ØºØ§Ù† ØªÛˆØ±Ù„Û•Ø±',
			'about'           : 'Ú†ÛˆØ´Û•Ù†Ú†Û•',
			'shortcuts'       : 'ØªÛ�Ø² ÙƒÙˆÙ†Û‡Ù¾ÙƒÙ‰Ù„Ø§Ø±',
			'help'            : 'ÙŠØ§Ø±Ø¯Û•Ù…',
			'webfm'           : 'ØªÙˆØ± Ú¾ÛˆØ¬Ø¬Û•ØªÙ„Ù‰Ø±Ù‰Ù†Ù‰ Ø¨Ø§Ø´Ù‚Û‡Ø±Û‡Ø´',
			'ver'             : 'Ù†Û•Ø´Ø±Ù‰',
			'protocolver'     : 'Ù¾Ø±ÙˆØªÙˆÙƒÙˆÙ„ Ù†Û•Ø´Ø±Ù‰',
			'homepage'        : 'ØªÛˆØ± Ø¨Ø§Ø´ Ø¨Û�ØªÙ‰',
			'docs'            : 'Ú¾ÛˆØ¬Ø¬Û•Øª',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'Ú¯Û‡Ø±Û‡Ù¾Ù¾Ø§',
			'chiefdev'        : 'Ø¨Ø§Ø´ Ù¾Ù‰Ø±ÙˆÚ¯Ø±Ø§Ù…Ù…Ù‰Ø±',
			'developer'       : 'Ù¾Ù‰Ø±ÙˆÚ¯Ø±Ø§Ù…Ù…Ù‰Ø±',
			'contributor'     : 'ØªÛ†Ú¾Ù¾Ù‰ÙƒØ§Ø±',
			'maintainer'      : 'Ø¦Ø§Ø³Ø±Ù‰ØºÛ‡Ú†Ù‰',
			'translator'      : 'ØªÛ•Ø±Ø¬Ù‰Ù…Ø§Ù†',
			'icons'           : 'Ø³Ù‰Ù†Ø¨Û•Ù„Ú¯Û•',
			'dontforget'      : 'ØªÛ•Ø±Ù‰Ú­Ù‰Ø²Ù†Ù‰ Ø³ÛˆØ±ØªÙ‰Ø¯Ù‰ØºØ§Ù† Ù‚ÙˆÙ„ÙŠØ§ØºÙ„Ù‰Ù‚Ù‰Ú­Ù‰Ø²Ù†Ù‰ Ø¦Û‡Ù†Û‡ØªÙ…Ø§Ú­ Ø¬Û‡Ù…Û‡',
			'shortcutsof'     : 'ØªÛ�Ø² ÙƒÙˆÙ†Û‡Ù¾ÙƒÙ‰Ù„Ø§Ø± Ú†Û•ÙƒÙ„Û•Ù†Ú¯Û•Ù†',
			'dropFiles'       : 'Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ Ù…ÙˆØ´Û‡ ÙŠÛ•Ø±Ú¯Û• ØªØ§Ø´Ù„Ø§Ú­',
			'or'              : 'ÙŠØ§ÙƒÙ‰',
			'selectForUpload' : 'ÙŠÛˆÙƒÙ„Ù‰Ù…Û•ÙƒÚ†Ù‰ Ø¨ÙˆÙ„ØºØ§Ù† Ú¾ÛˆØ¬Ø¬Û•ØªÙ†Ù‰ ØªØ§Ù„Ù„Ø§Ú­',
			'moveFiles'       : 'ÙŠÛ†ØªÙƒÛ•Ø´',
			'copyFiles'       : 'ÙƒÛ†Ú†ÛˆØ±ÛˆØ´',
			'rmFromPlaces'    : 'Ú¾ÛˆØ¬Ø¬Û•ØªÙ„Û•Ø±Ù†Ù‰ Ø¦Û†Ú†ÛˆØ±ÛˆØ´',
			'aspectRatio'     : 'Ù†Ù‰Ø³Ø¨Ù‰ØªÙ‰Ù†Ù‰ Ø³Ø§Ù‚Ù„Ø§Ø´',
			'scale'           : 'Ù†Ù‰Ø³Ø¨Ù‰ØªÙ‰',
			'width'           : 'Ø¦Û‡Ø²Û‡Ù†Ù„Ù‰Ù‚Ù‰',
			'height'          : 'Ø¦Ù‰Ú¯Ù‰Ø²Ù„Ù‰ÙƒÙ‰',
			'resize'          : 'Ú†ÙˆÚ­Ù„Ù‰Ù‚Ù‰Ù†Ù‰ ØªÛ•Ú­Ø´Û•Ø´',
			'crop'            : 'ÙƒÛ�Ø³Ù‰Ø´',
			'rotate'          : 'Ù¾Ù‰Ù‚Ù‰Ø±Ù‰ØªÙ‰Ø´',
			'rotate-cw'       : 'Ø³Ø§Ø¦Û•Øª Ø¦Ù‰Ø³ØªÙ‰Ø±Ù‰Ù„ÙƒÙ‰Ø³Ù‰ Ø¨ÙˆÙŠÙ‰Ú†Û• 90 Ú¯Ù‰Ø±Ø§Ø¯Û‡Ø³ Ù¾Ù‰Ù‚Ù‰Ø±Ù‰ØªÙ‰Ø´',
			'rotate-ccw'      : 'Ø³Ø§Ø¦Û•Øª Ø¦Ù‰Ø³ØªÙ‰Ø±Ù‰Ù„ÙƒÙ‰Ø³Ù‰Ù†Ù‰ ØªÛ•ØªÛˆØ± ÙŠÛ†Ù†Ù‰Ù„Ù‰Ø´Ù‰ Ø¨ÙˆÙŠÙ‰Ú†Û• 90Ú¯Ù‰Ø±Ø§Ø¯Û‡Ø³ Ù¾Ù‰Ù‚Ù‰Ø±Ù‰ØªÙ‰Ø´',
			'degree'          : 'Ú¯Ù‰Ø±Ø§Ø¯Û‡Ø³',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Ù¾Ù‰Ø±ÙˆØªÙˆÙƒÚ­Ù„', // added 18.04.2012
			'host'                : 'Ù…Û‡Ù„Ø§Ø²Ù‰Ù…Ù‰ØªÙ‰Ø±', // added 18.04.2012
			'port'            : 'Ù¾ÙˆØ±Øª', // added 18.04.2012
			'user'            : 'Ø¦Û•Ø²Ø§', // added 18.04.2012
			'pass'            : 'Ø¦Ù‰Ù…', // added 18.04.2012

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ø¦Û�Ù†Ù‰Ù‚ Ø¦Û•Ù…Û•Ø³',
			'kindFolder'      : 'Ú¾ÛˆØ¬Ø¬Û•Øª Ù‚Ù‰Ø³Ù‚Û‡Ú†',
			'kindAlias'       : 'Ø¨Ø§Ø´Ù‚Ø§ Ù†Ø§Ù…Ù‰',
			'kindAliasBroken' : 'Ø¨Ø§Ø´Ù‚Ø§ Ù†Ø§Ù…Ù‰ Ø®Ø§ØªØ§',
			// applications
			'kindApp'         : 'ÙƒÙˆØ¯ Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindPostscript'  : 'Postscript Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindMsOffice'    : 'Microsoft Office Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindMsWord'      : 'Microsoft Word Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindMsExcel'     : 'Microsoft Excel Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindMsPP'        : 'Microsoft Powerpoint Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindOO'          : 'Open Office Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindAppFlash'    : 'Flash Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kind7z'          : '7z Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindTAR'         : 'TAR Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindGZIP'        : 'GZIP Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindBZIP'        : 'BZIP Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindXZ'          : 'XZ Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindZIP'         : 'ZIP Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindRAR'         : 'RAR Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindJAR'         : 'Java JAR Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindTTF'         : 'True Type Ù�ÙˆÙ†Øª',
			'kindOTF'         : 'Open Type Ù�ÙˆÙ†Øª',
			'kindRPM'         : 'RPM',
			// fonts
			'kindFont'        : 'Ù�ÙˆÙ†Øª',
			'kindSFNT'        : 'SFNT Ù�ÙˆÙ†Øª',
			'kindEOT'         : 'Embedded Open Type Ù�ÙˆÙ†Øª',
			'kindWOFF'        : 'Web Open Font Format Ù�ÙˆÙ†Øª',
			'kindWOFF2'       : 'Web Open Font Format 2 Ù�ÙˆÙ†Øª',
			// texts
			'kindText'        : 'ØªÛ�ÙƒÙ‰Ø³Øª',
			'kindTextPlain'   : 'ØªÛ�ÙƒÙ‰Ø³Øª',
			'kindPHP'         : 'PHP Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindCSS'         : 'CSS Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindHTML'        : 'HTML Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindJS'          : 'Javascript Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindRTF'         : 'RTF Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindC'           : 'C Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindCHeader'     : 'C Ø¨Ø§Ø´ Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindCPP'         : 'C++ Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindCPPHeader'   : 'C++ Ø¨Ø§Ø´ Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindShell'       : 'Unix Ø³Ù‰ÙƒÙ‰Ø±Ù‰Ù¾Øª Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindPython'      : 'Python Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindJava'        : 'Java Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindRuby'        : 'Ruby Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindPerl'        : 'Perl Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindSQL'         : 'SQL Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindXML'         : 'XML Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindAWK'         : 'AWK Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindCSV'         : 'CSV Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			'kindDOCBOOK'     : 'Docbook XML Ú¾ÛˆØ¬Ø¬Ù‰ØªÙ‰',
			// images
			'kindImage'       : 'Ø±Û•Ø³Ù‰Ù…',
			'kindBMP'         : 'BMP Ø±Û•Ø³Ù‰Ù…',
			'kindJPEG'        : 'JPEG Ø±Û•Ø³Ù‰Ù…',
			'kindGIF'         : 'GIF Ø±Û•Ø³Ù‰Ù…',
			'kindPNG'         : 'PNG Ø±Û•Ø³Ù‰Ù…',
			'kindTIFF'        : 'TIFF Ø±Û•Ø³Ù‰Ù…',
			'kindTGA'         : 'TGA Ø±Û•Ø³Ù‰Ù…',
			'kindPSD'         : 'Adobe Photoshop Ø±Û•Ø³Ù‰Ù…',
			'kindXBITMAP'     : 'X bitmap Ø±Û•Ø³Ù‰Ù…',
			'kindPXM'         : 'Pixelmator Ø±Û•Ø³Ù‰Ù…',
			// media
			'kindAudio'       : 'Ø¦Ø§Û‹Ø§Ø²',
			'kindAudioMPEG'   : 'MPEG Ø¦Ø§Û‹Ø§Ø²',
			'kindAudioMPEG4'  : 'MPEG-4 Ø¦Ø§Û‹Ø§Ø²',
			'kindAudioMIDI'   : 'MIDI Ø¦Ø§Û‹Ø§Ø²',
			'kindAudioOGG'    : 'Ogg Vorbis Ø¦Ø§Û‹Ø§Ø²',
			'kindAudioWAV'    : 'WAV Ø¦Ø§Û‹Ø§Ø²',
			'AudioPlaylist'   : 'MP3 Ù‚ÙˆÙŠÛ‡Ø´ ØªÙ‰Ø²Ù‰Ù…Ù„Ù‰ÙƒÙ‰',
			'kindVideo'       : 'Ø³Ù‰Ù†',
			'kindVideoDV'     : 'DV Ø³Ù‰Ù†',
			'kindVideoMPEG'   : 'MPEG Ø³Ù‰Ù†',
			'kindVideoMPEG4'  : 'MPEG-4 Ø³Ù‰Ù†',
			'kindVideoAVI'    : 'AVI Ø³Ù‰Ù†',
			'kindVideoMOV'    : 'Quick Time Ø³Ù‰Ù†',
			'kindVideoWM'     : 'Windows Media Ø³Ù‰Ù†',
			'kindVideoFlash'  : 'Flash Ø³Ù‰Ù†',
			'kindVideoMKV'    : 'Matroska Ø³Ù‰Ù†',
			'kindVideoOGG'    : 'Ogg Ø³Ù‰Ù†'
		}
	};
}));
                                                                                                             includes/File_manager/lib/Changelog                                                                 0000644                 00000211074 15266053001 0013306 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       2025-08-28  Naoki Sawada
	* elFinder (2.1.66):
		- [PHP 8.4] Fix: Curl `CURLOPT_BINARYTRANSFER` deprecated
		- Merge pull request #3629 from Ayesh/php84-curl-depr
		- translate to Chinese
		- Update zh_CN.js
		- Update Chinese help
		- fix name
		- Update elfinder.ko.js
		- try copy / deleting folder if moving it doesn't work
		- Merge pull request #3636 from vfishv/master
		- Merge pull request #3647 from allity/patch-1
		- Merge pull request #3653 from terrafrost/branch-1
		- Fix #3637 FILTER_SANITIZE_STRING is deprecated (PHP 8.1)
		- Allow image URL in theme manifest.json to be a relative link as well
		- Update elfinder.ru.js
		- Merge pull request #3677 from blutorange/feat-relative-image-link-in-theme-manifest
		- Merge pull request #3682 from Ruslan-Aleev/patch-1
		- Fixes #3684 (#3685)
		- [OneDrive] fix Content URL
		- Fix #3667 where the Content URL could be invalid
		- [VD:core] Check if copying was successful when moving files in copy + delete mode
		- Fix CVE-2025-0818 (#3723)
		- Fixes #3689, fm.sync removes unavailable volumes. (#3690)
		- [VD:SFTP] Make compatible with phpseclib version 2 or 3 when returned from connectCallback($options) (#3687)
		- Add font mime kinds (WOFF, WOFF2, EOT, SFNT, generic font/*) (#3691)
		- Ignore posted message that are not intended for ElFinder (#3692)
		- Add option to rename command to disable alias rename (#3693)
		- Add option commandsOptions.edit.confirmUnsavedBeforeClose (#3698)
		- Fix build for Windows environment (#3699)
		- Replace usage of deprecated `E_STRICT` constant (#3705)
		- Add "WEBP" to File mimetype to kind mapping (#3712)
		- fix translation mistakes and unification (#3719)

2024-01-05  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.65):
		- [js] update CDNs
		- [php:editors] Zoho API update


2023-12-20  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.64):
		- [css] re-fix #3584 css error and CI


2023-12-20  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.63):
		- [php:core] fix download a file via context menu the windows download popup don't close (#3619)
		- [VD:MySQL] Use prepared statements instead of escaping when saving file (#3604)
		- [VD:core] fix #3617 Filename Restriction Bypass Leading To Persistent Cross-site Scripting
		- [js] fix #3614 $.isFunction() is deprecated in jQuery
		- [js] Update to jQuery 3.7.1 and Jquery UI 1.13.2
		- [VD:LocalFileSystem] fix #3615 Using .php8 in PHP handler leading to RCE
		- [cmd:upload] fix #3575 Drag&Drop Upload Issue with Firefox

2023-06-14  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.62):
		- [php:core] prevent garbled file name when URL upload
		- [js:core,upload] fixed DnD in-browser image upload in Chrome
		- [js:options] update CDNs
		- [js:core,upload] fixed DnD in-browser image upload in Chrome
		- [php] Update elFinderVolumeSFTPphpseclib.class.php (#3483)
		- [mime.types] Update mime.types to allow MS outlook message files (#3499)
		- [js:cmd:resize] fix #3513 rotate bug on Chrome
		- [VD:LocalFileSystem] Security fixes, directory traversal vulnerability fixes
		  - Awaiting CVE ID.
		  - This issue was found by MichaÅ‚ Majchrowicz & Livio Victoriano AFINE Team.
		- Correctly urlencode path in setcookie(); fix #3538 (#3561)
		- [js:core] fix #3572 Useless backend request during elFinder.sync()
		- [VD:LocalFileSystem] fix #3543 Can't download folder in PHP 8.1
		- [php:core] fix #3546 Use elFinder::getCmdOfBind instead of self::getCmdOfBind which is deprecated in PHP v8.2
		- [VD:SFTP] fix SFTP driver fatal error, cleanup (#3574) 


2022-03-14  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.61):
		- [security] Fixed #3458 filename bypass leading to RCE on Windows server
		- [security:CVE-2022-26960] Fixed a path traversal issue
		- [i18n] Updated ru and fr
		- [js] Updated CDNs of external libs
		- And some minor bug fixes


2021-11-12  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.60):
		- [VD:OneDrive] show error on _od_obtainAccessToken()
		- [ui:cwd] make easily able to mapping mimetype to the kind (#3375) 
		- [cmd:rm] Fixed an issue that sometime ignore the delete button and into the trash
		- [VD:LocalFileSystem] Fixed #3429 RCE on Windows server
		- [js:core,options] Fixed #3401 add an option workerBaseUrl


2021-06-13  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.59):
		- [Security:php] Fixed multiple vulnerabilities leading to RCE
		- [php:session] Fixed #3278 wrong code of typo
		- [js:core] #3351 allow columnsCustomName[x] to be a function
		- [css:quicklook] Fixed #3240 remove unnecessary color specifications
		- [cmd:extract] Fixed #3252 for checking the existence of existing files
		- [js:core] Fixed #3359 add an option "noResizeBySelf"
		- [VD:abstract] Fixed #3216 missing url option on upload into root
		- And some minor bug fixes


2021-06-09  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.58):
		- [VD:abstract] Fixed #3151 support RAR5 lib
		- [cmd:fullscreen] Fixed #3177 wrong fullscreen button caption
		- [js:core] Supports cookie samesite attribute
		- [VD:SFTP] Add new SFTP driver, via phpseclib library
		- [js:core] Fixed #3193 auto-detection of baseUrl
		- [js:upload] Fixed upload bug (#3264)
		- [VD:abstract,php] make the thumbnail support webp (#3265) 
		- [php:core] Fixed #3250 error only variables can be passed by reference
		- [VD:abstract] add 'phar:*' => 'text/x-php' into 'staticMineMap'
		- [VD:abstract] Fixed #3181 add an option uploadMaxMkdirs
		- [php:core] Add cwd param to proc_open (#3281)
		- [VD:abstract] Bugfix of an option mimeDetect (#3291)
		- [UI] Fixed #3302 problem of d&d when copy of UI command is disabled
		- And some minor bug fixes


2020-06-05  Naoki Sawada  <hypweb+elfinder@gmail.com>
	* elFinder (2.1.57):
		- [js] Fixed #3148 to support jQuery 3.5.0 update
		- [php:core] Fixed #3154 volume that require online access cannot be specified
		- [VD:abstract] Fixed #3161 Fixed option data of cwd results on after change files
		- [VD:abstract] Fixed #3167 added "none" (no image library check) to `imgLib`
		- [cmd:resize] Fixed #3158 to make able to change quality without changing dimensions
		- And some minor bug fixes


2020-04-09  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.56):
		- [js:extras:editors.default] remove Pixlr editor it is no longer possible to display in IFRAME
		- [php:core] Fixed #3134 close file pointer before deleting temporary file on shutdown
		- [VD:abstract] change prefix of zipdl temp file
		- [php:core] Fixed #3136 zipdl fails on Chrome on iOS / iPadOS
		- [cmd:netmount] Fixed #3138 OAuth not possible with CORS due to new ITP
		- [VD:MySQL,OneDrive] Fixed #3142 remove debug code
		- [i18n:pl,ko] Updated translations
		- And some minor bug fixes


2020-03-18  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.55):
		- [VD:abstract] Fixed #3125 Fatal error in zipArchiveUnzip()
		- [cmd:open] optimization, move function definition in loop to out of loop
		- [php:session] Fixed #3103 WARNING: setcookie(): Unrecognized key 'lifetime'
		- [i18n:cs,sk] Updated translations


2020-03-14  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.54):
		- [cmd:edit,quicklook] adjustment about select encoding function
		- [php:core] add `toastErrorHandler` for send toast message to client side
		- [cmd:resize] to allow image resize more image type with the ImageMagick
		- [php:session] Fixed #3103 WARNING: setcookie(): Unrecognized key 'lifetime'
		- [php:session] Fixed #2857 warning error on start()
		- [ui:dialog] delete an option `flexibleHeight` so it works well by option `height: "auto"``
		- [cmd:edit] bugfix of save as on the serach results
		- [php:core] add a public method `utf8Encode()` and make new main option `utf8Encoder` @callable
		- [VD:abstract] Fixed #3104 Fixed as much as possible the differences in encoding of archive file names
		- [php:plugins:Watermark] repeated use of Imagick::compositeImage() may cause PHP to hang, so disable it
		- [js:core] Fixed #3106 enable to specify header name of parrot return to enable ITP measures
		- [php:Connector] add a public method `setHeader($value)`
		- [js:core] support fake progress bar
		- [VD:OneDrive] bugfix of large file uploading
		- [VD:Box] Fixed problem where access token could be lost
		- [VD:Box] Fixed processing of `getSharedWebContentLink()`
		- [js:core] if the file URL is public, use it as onetime url
		- [php:plugins:Normalizer] support "caron" with option "umlauts"
		- [js:core:notify] Fixed #3111 add minimize, close(option) button into notify dialog
		- [ja:extars:editors.default] Fixed #2600 remove Creative Cloud Image Editor UI
		- [php] Fixed #3114 stream proxy function using the `file` cmd corresponds to range request
		- [js:extras:efitors.default] to show color slider of TUI Image Editor
		- [cmd:edit] error handling of ta.getContent()
		- [cmd:edit] bugfix of savecl() edit dialog may not re-open in case of error
		- [js:core] Fixed #3118 web worker does not work when elfinder.js is cross-site loaded
		- [php:core,VD] Fixed #3119 disallow extract of uncompressed size larger than option "maxArcFilesSize"
		- [php:core] Fixed #3120 allow plugins (Sanitizer etc) to be applied when pasting from another volume
		- [php:plugins:Normlizer,Sanitizer] update example commentation, recommend to bind to action "paste.copyfrom"
		- [VD:FTP] Fixed stat() of root on server with no supports "MLST"
		- [ui:cwd] Fixed a bug that thumbnails might not be displayed after editing image
		- And some minor bug fixes


2020-01-25  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.53):
		- [VD:LocalFileSystem] Fixed #3095 not able to make `quarantine` directory
		- [cmd:quicklook] Added TIFF image viewer
		- [VD:abstract] Fixed #3097 "Unable to create archive" error deletes target files
		- [cmd:quicklook] Fixed #3099 to make charactor encoding selectable in text file preview
		- And some minor bug fixes


2020-01-20  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.52):
		- [js:core] Fixed #3052 a bug where duplicate CSS was loaded by `loadCss()`
		- [debugger] Fixed #3057 add a client option `toastBackendWarn`
		- [php:core] Fixed #3062 bugfix of `elFinder::getConnectorUrl()`
		- [VD:abstract] Fixed #3071 folders in archive may not be extracted
		- Use square brackets instead of curly braces, because this syntax is deprecated with PHP 7.4 (#3070)
		- [cmd:quicklook] support the elFinder client option `dialogContained`
		- [ui:dialog] Fixed wrong dialog sizing with the option `dialogContained`
		- [VD:abstract] Fixed #3042 stricter processing verification on `getItemsInHand()`
		- [VD] Fixed #3074 authentification (return) URL not useable if the connctor url has "?"
		- [VD:abstract] Fixed #3077 support rapid root stat
		- [VD:Box,OneDrive] Fixed #3082 support permanent mount with connector roots configure
		- [js] Fixed #3081 handle when browser cookies are disabled
		- [js:core] Fixed an issue where opened tabs could't be closed, such as when approving netmount
		- [js:extras:editors.default] Fixed problem that can't save as JPEG with TUI image edtor
		- [editors:online-convert] online-convert.com can no longer be displayed in iFrames on external sites
		- [VD:abstract] Fixed #3084 add thumbnail garbage collection function
		- [VD:FTP] change default option, 'checkSubfolders' to -1
		- [core] Fixed #3085 malfunction of volume root option "disabled"
		- [doc,example] Fixed #3079 add connector.maximal.php-dist
		- [VD] save alias of options to session data of netmount volume
		- [ui:cwd] Fixed #3087 wrong behavior when dragging with old jQuery UI
		- [VD:Box] Fixed problem that `isNameExists()` return value is wrong
		- [js] add worker/worker.js to support the Window.Worker
		- [cmd:quicklook] add bzip2 preview and use Worker to calc
		- [js:core] create new method `fm.getWorker(options)`
		- [i18n:LANG] add new word 'linesLeft' : '... $1 lines left.'
		- [js:core] Fixed #3069 send relative path on folder uploading
		- [ui:cwd] Fixed lazy display of oldschool parent directory icon
		- [php:core] Fixed #3093 add a delegate point `get.detectencoding` for the `bind` option
		- And some minor bug fixes


2019-12-08  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.51):
		- [css] Fixed #2985 conflict css with bootstrap
		- [cmd:edit,mkfile] Fixed #3000 add an option `commandsOptions.edit.mkfileHideMimes`
		- [css:cwd] Fixed #3008 adjusting the minimum width of the type badge
		- [php:session] Fixed #3017 param "SameSite=None" support for CORS
		- [cmd:edit] Fixed #3018 CodeMirror lib URL don't work as relative path when using RequireJS
		- [js:core,VD:abstract] Fixed #3028 add an option `tmbReqCustomData` to the volume roots
		- And some minor bug fixes


2019-08-20  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.50):
		- [cmd:edit] Fixed #2903 Types that can not be created are hidden in the contextmenu
		- [VD:abstract] Fixed #2908 MIME type misjudgment of file with upper case extension
		- [js:main.default] Fixed #2943 add error handling of lang detector
		- [cmd:paste,VD:abstract] Fixed #2954 make the `paste` command cancelable
		- [js:core] Fixed #2957 prevent circular reference of data for event call back
		- [cmd:paste] Fixed #2967 add an option `commandsOptions.paste.moveConfirm`
		- [js:core] Fixed #2970 "response is not defined" on upload error
		- [js:core] Fixed #2971 of logic of `getSize()` function
		- [js:core] Fixed #2863 (again) cssAutoLoad is not working
		- And some minor bug fixes


2019-04-17  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.49):
		- [js:core] Fixed #2863 cssAutoLoad Array option is not working
		- [js:core] Fixed #2862 stop autoSync when browser tab turn to background
		- [cmd:search] Fixed #2867 support incremental search other than filename
		- [VD:abstract] Fixed #2873 correct MIME-Type detection of "*.java"
		- [js:extras:editors] Fixed #2879 adjustment save type of Photopea
		- [js:resources:mixin] Fixed #2880 error "Uncaught TypeError"
		- [VD:MySQL] Fixed #2883 problem that not uses `tmpPath` on `_fopen()`
		- [js:extras:editors] Fixed problem of Online Convert by `<base>` tag
		- [ui:dialog] Fixed problem of dialog height by CSS percentage max-height
		- [ui:cwd] Fixed #2865 add an option `uiOptions.cwd.matekeyDragout`
		- [Security,php:core] Fixed being bypassable of CVE-2019-6257 SSRF
		- And some minor bug fixes


2019-02-26  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.48):
		- [VD:abstract] Fixed animated image conversion on ImageMagick
		- [Security,VD:abstract] [CVE-2019-9194] Fixed command injection vulnerability of PHP connector
			Special thanks to Thomas Chauchefoin (Synacktiv) for reporting this vulnerability.


2019-02-25  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.47):
		- [js] Fixed #2820 remove Multi-byte space characters
		- [js:jqueryelfinder] bugfix of elfinder reload(restart) on dialogelfinder
		- [ui:places] Fixed #2822 set title attr correctly
		- [ui:tree] add an option `uiOptions.tree.attrTitle` to enable set path info to title attr
		- [js:editors.default] support tinyMCE 5 and integrate image uploader
		- [js:dialogelfinder] Fixed #2824 freezes browser in uses dialogelfinder
		- [ui:button] add CSS class `elfinder-button-{COMMAND NAME}-menu` to submenu
		- [ui:sortbutton] Fixed #2829 sort menu is not synchronized with the data of cwd
		- [ui:cwd] Fixed #2840 thumbnail is not created when adding an image to an empty folder
		- [ui:cwd] Fixed #2836 setting CWD icons size not working
		- [php:core] Fixed #2842 allow to cancel upload on upload.presave callback
		- [js:core] Fixed #2845 `size` request with wrong params `targets`
		- [php:session] Fixed #2857 consideration for environment other than "apache2 SAPI"
		- [cmd:fullscreen] Fixed #2858 add an option of fullscreen mode screen/window
		- And some minor bug fixes


2019-01-14  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.46):

		- [php:core:security] Add an option `urlUploadFilter`(@type callable) to elFinder class constructor options
		- [php:core:security] [CVE-2019-6257] Fixed SSRF vulnerability of `elFinder::get_remote_contents()` [Reporter: Do Ha Anh of Viettel Cyber Security]
		- [ui:button] Fixed #2818 correction of cmd menu position
		- And some minor bug fixes


2019-01-09  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.45):

		- [js] Fixed #2802 broken handling of jQuery `#` selector
		- [cmd:upload] Fixed #2807 correction of event handling of buttons
		- [api:url] Fixed #2808 supports onetime url for the external service
		- [VD:abstract] typo Fixed #2809 undefined ERROR_COPY_INTO_ITSELF
		- [cwd] Fixed problem of thumbnail attaching on mobile devices
		- [cmd:edit:editors.default] Fixed #2815 add Pixo editor integration
		- [cmd:edit] To support onetime URL to get content URL
		- [php:core:security] [CVE-2019-5884] Fixed information leakage vulnerability [Reporter: Ravindra Rajaram (ravindra.rajaram@broadcom.com) and Hamsalekha Madiraju (hamsalekha.madiraju@broadcom.com)]
		- And some minor bug fixes


2018-12-15  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.44):

		- [cmd:sort] Fixed #2774 to make can disable "Also Treeview" sort option
		- [cmd:edit:zoho] Fixed #2777 to show warning when editing items that can not be written anonymously
		- [js:core] Fixed #2783i, #2784 make new event `xhruploadfail`
		- [ui:tree,cwd] Fixed #2785 event handling of droppable element of tree of navbar
		- [VD:abstract] Fixed #2791 correction of `localRmdirRecursive()` for Win server
		- [js:core] Fixed #2799 some files are not saved when uploading multiple files
		- And some minor bug fixes


2018-11-24  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.43):

		- [VD:abstract,cmd:info] Fixed #2646 volume roots option `'dirUrlOwn'` accepts value `'hide'`
		- [php:plugin] Fixed #2649 disable content editing plugin when saving data in OnlineConvert
		- [cmd:open] Fixed #2651 add an option `selectAction`
		- [php:core] Fixed #2657 add a connector main option `throwErrorOnExec`
		- [ui:cwd] Fixed #2653 correction of event handling of `input:checkbox`
		- [js:core] Fixed #2660 add `requestError` event and make error message controlable
		- [js:core,ui:cwd,tree] Fixed #2664 problem of handling of connector option `maxTargets`
		- [php:autoload] Fixed #2672 simplified class map
		- [js:core] Fixed #2674 'tooltip' conflict with Bootstrap
		- [VD:abstract] Fixed #2687 add public method `getSession()`
		- [ui:cwd] Fixed #2687, #2694 prevent select action of the item with CSS class "elfinder-cwd-nonselect"
		- [php:core,VD] Fixed #2695 improved redundant check of archivers
		- [ui:cwd] Fixed #2701 correction of oldScholl function
		- [VD:abstract] Fixed #2704 correction of `mimetype()` & add an option `mimeTypeUnknown`
		- [VD:abstract] Fixed #2704 use MIME-Type notified by the volume driver if detected as unknown
		- [css:cwd] Fixed #2707 typo
		- [js:core] Fixed #2706 add an option `i18nBaseUrl`
		- [ui:toolbar] Fixed #2710 add an option `uiOptions.toolbarExtra.preferenceInContextmenu`
		- [cmd:netmount] Fixed #2714 disable command if there is no protocols
		- [cmd:info] Fixed #2712 remove ZWSP of the Path value with mousedown event
		- [cmd:edit] Fixed #2717 encoding select box move to footer
		- [css:toolbar] Fixed #2721 duplicated class name
		- [js:command] Fixed #2718 add a method `fmDialog()` to add cmd class name to dialog
		- [js:core] Fixed #2720 implementation of theme changer
		- [cmd:empty] Fixed #2729 add check that folder is readable in getstate()
		- [cmd:upload] Fixed #2725 problem of contextmenu (target selector) handling
		- [VD:Group] Fixed #2730 set `copy` to disabled command
		- [js:core,ui:cwd] Fixed #2730 correction of dragging icon
		- [cmd:preference] Fixed #2731 add options `width`, `height`
		- [cmd:rm] Fixed #2733 correction of spinner position
		- [css:cwd] Fixed #2724 problem of position of perm marker in rtl
		- [js:core] Fixed #2744 add class name "elfinder-err-var" to replaced word of error message
		- [css:dialog] rel #2724 correction style of `td.elfinder-info-hash`
		- [ui:navdock] Fixed #2747 theme support of CSS fine tuning part
		- [ui:navdock] rel #2747 correction of the ui size adjustment
		- [css:commands] Fixed #2748 Fixed spinner position in rtl and unify `elfinder-info-spinner` to `elfinder-spinner`
		- [css:command] rel #2748 typo Fixed of "spiner" to "spinner"
		- [cmd:quicklook] Fixed #2742 ViewerJS integration for PDF,ODT,ODS,ODP
		- [ui:toolbar] Fixed #2751 correction rtl-toolbar (float icons in group)
		- [css:toolbar] rel #2751 mirroring some icons for rtl
		- [ui:cwd] Fixed #2749 show an unnecessary context menu on touch to the list header
		- [cmd:resize] Fixed #2718 duplicate CSS class name
		- [ui:cwd] Fixed #2749 show an unnecessary context menu on touch to the list header
		- [ui:dialog] rel #2739 use CSS class `ui-corner-top` instead `ui-corner-all`
		- [css:navbar] rel #2748 integrate "elfinder-navbar-spinner" into "elfinder-spinner"
		- [API:upload] Fixed #2753 uploading multiple items continues uploading except error items
		- [js:core] Fixed #2762 prevent useless requests when chunks uploading
		- [cmd:quickllok] Fixed #2752 title bar HTML structure as well as other dialogs
		- [js:core] Fixed #2764 delete padding specification by inline to maximize element
		- [js:core] Fixed #2766 correction upload file size judgment
		- And some minor bug fixes


2018-08-29  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.42):
		- [VD:abstract] Fixed #2624 "application/xml" determines the MIME-Type with the file extension
		- [cmd:quicklook] Fixed #2627 kml, kmz preview with GoogleMaps API
		- [ui:statusbar] Fixed #2635 positioning design with CSS flexible box
		- [cmd:rename] Fixed #2639 change cmd title to "Alias (Preference)" of the volume root
		- [php:core] Fixed #2641 problem of overwrite upload of folder uploading
		- [php] Fixed #2642 Measures of Ghostscript security vulnerabilities
		- And some minor bug fixes


2018-08-19  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.41):
		- [ui:cwd] Fixed #2583 `uiOptions.cwd.oldSchool` is no longer working
		- [VD:abstract] change type from `protected` to `public` of `mimeTypeNormalize()`
		- [js:core] Fixed #2591 show the toast message according with the response of connector
		- [cmd:edit] Fixed #2592 to make ediable as text that the media file composed of text
		- [cmd:undo/redo] Fixed #2596 bug of not updating status when elFinder into enable
		- [cmd:hide] Fixed #2595 make to be able to hide selected items as personal setting
		- [cmd:edit] Fixed #2565 Integrate the TUI Image Editor
		- [cmd:quicklook] Fixed #2599 add controls option of HTML5 media , PDF preview
		- [cmd:edit] set integrate of the "TUI Image Editor"
		- [php:core] Fixed #2603 options path settings convert to absolute path
		- [cmd:edit] Fixed #2569 add the photopea.com editor integration
		- [cmd:upload] Fixed #2607 hash@undefined on select folder upload
		- [cmd:mkfile] Fixed #2609 allow creation of various file types
		- [img] Fixed #2503 make icons-big.svg and use it
		- [VD:Dropbox2] Fixed options definition test (PR #2619)
		- [js:core] Fixed #2616 can't close dialogelfinder if can't connect to the connector
		- [php:plugin:Watermark] Fixed #2621 add option `ratio`, `position`, `marginX` and `marginY`
		- And some minor bug fixes


2018-07-14  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.40):
		- [php:plugin] Fixed #2532 perform folder name filtering on folder upload
		- [VD:abstract] Fixed #2534 bugfix of `doSerach()` method
		- [API,ui:cwd] Fixed #2535 show the remaining time until the volume expires into cwd
		- [js:core] bugfix of click problem of select element of netmount oauth dialog
		- [cmd:rm] Fixed #2541 to be able to customize the action of to put in the trash
		- [VD:abstract] fallback imgLib to 'gd' when error in Imagick (#2544)
		- [ui:dialog] Fixed #2545 problem of the mousedown event of the form element
		- [VD:abstract] Fixed #2549 freezes while creating and extracting a zip/7zip archive
		- [ui:dialog] Fixed #2551 trigger `dialogopen` event before open the dialog
		- [ui:dialog] Fixed #2558 autoopen after creation of dialog if it has open callback
		- [cmd:upload] Fixed #2559 since 2.1.30, broken paste upload on iOS
		- [ui:dialog] Fixed #2560 corection of restore dialog size on maximize/minimize
		- [cmd:edit,preference] Fixed #2566 add preference 'Open the maximized editor window'
		- [cmd:quicklook] Fixed #2567 support Microsoft Office Online viewer
		- [VD:abstract] Fixed #2564 bugfix of MIME-Type detection
		- [cmd:quicklook,VD:abstract] Fixed #2575 add CAD-Files and 3D-Models online viewer on sharecad.org
		- [cmd:edit] Fixed #2570 add online-convert.com integration
		- [cmd:edit] Fixed #2580 Fixed detectation of current enabled editors
		- [cmd:help] Add a tab "Integrations" to listing external services
		- [cmd:edit:images] Fixed #2568 open one format save to another
		- [js:core] Fixed #2582 sync size of list view column headers on browser resize
		- And some minor bug fixes


2018-06-05  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.39):
		- [cmd:preference] Fixed #2497 add a preference "Icon Size (Icons View)"
		- [cmd:mkdir] Fixed #2466 mkdir 'Into new folder' always on
		- [css] Fixed #2499 style correction to the Firefox browser
		- [css] replace volume_icon_* to SVG image
		- [cmd:edit] Fixed #2507 not work if the "commandsOptions.edit.editors" is empty
		- [php:core] Fixed #2515 support multi Level directory creation when uploading
		- [VD:abstract] Fixed #2523 thumbnail file name may exceed 255 bytes
		- [VD:abstract] re-Fixed #2523 add volume id as prefix to tmbname of fallback
		- [API,cmd:download] Fixed #2525 show notification dialog until browser starts downloading
		- [ui:cwd] Fixed #2526 connector option `'tmbURL' => 'self'` does not work currently
		- [cmd:upload] Fixed #2528 show error message "errFolderUpload"
		- [ui:fullscreenbutton] Fixed #2530 wrong toolbar icon of re-fullscreen
		- [VD:abstract,security] add "pht:*", "php7:*" to default option `staticMineMap`
		- [cmd:upload] Fixed #2531 upload buttons are not working in Firefox
		- And some minor bug fixes


2018-05-05  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.38):
		- [js:dialogelfinder] Re-fixed #2401 remove deprecated functions of jQuery
		- [cmd:info,help] Fixed #2445 add user preference `Info Items (Selection Info Panel)`
		- [php:core] More secure processing of `zipdl()`
		- [VD:abstract] Fixed #2450 correction of `getContentUrl()` (when $this->root is "/")
		- [js:core] Fixed #2453 handling back button press to close dialog
		- [cmd:opennew] Fixed #2457 new command "Open in new window" for the folder
		- [cmd:preference] Fixed #2458 move settings from "Preference" tab
		- [cmd:mkdir] Fixed #2466 'Into new folder' always on (toolbar button)
		- [css:common] Fixed #2469 to disable resizable in fullscreen mode
		- [cmd:sort] Fixed #2472 keep stay the context menu when choosing the sort menu
		- [VD:GoogleDrive] Fixed #2473 not use undefined variable
		- [ui:tree] Fixed #2485 add an option `uiOptions.tree.durations`
		- [ui:toast] Fixed #2487 add an option `uiOptions.toast.defaults`
		- [js] Performance tuning
		- [VD,cmd:search] Fixed #2490 support custom search method
		- [cmd:quicklook] support AMR Audio, FLV Video preview
		- And some minor bug fixes


2018-03-28  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.37):
		- [php:security] re-fix directory traversal vulnerability for windows server


2018-03-28  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.36):
		- [js:core] Fixed #2433 cwdOptions becomes trash folder's options when folder restoring
		- [php:plugin:sanitizer] add on option `callBack` (#2432)
		- [ui:uploadbutton] Fixed #2435 can't upload
		- [cmd:upload] Fixed #2436 canâ€™t upload with state that one file selected in cwd
		- [VD:abstract] Fixed #2425 adjustment of `internal_encoding` setting
		- [php:security] correction of symbolic link determination
		- [cmd:rename] bugfix of undo/redo functions
		- [php:plugin] add option onDropWith for plugin function iaEnabled (#2442)
		- [cmd:paste] Fixed #2439 missing `src` param on API < 2.1
		- [proxy:Ver1] correction of response data normalization on paste
		- [php:security] Fixed directory traversal vulnerability
		- And some minor bug fixes


2018-03-21  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.35):
		- [cmd:upload] notify progress data to dfrd.progress in uploading
		- [VD:LocalFileSystem,OneDrive] Fixed wrong result of isNameExists()
		- [ui:dialog] Fixed #2431 form elements can not get focus with mouse down
		- And some minor bug fixes


2018-03-18  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.34):
		- [VD:abstract] Fixed #2423 no longer running under PHP < 5.4
		- [cmd:mkdir] Fixed #2422 bugfix of behavior of mkdir on navbar
		- And some minor bug fixes


2018-03-14  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.33):
		- [cmd:upload] Fixed #2379 icon of target folder list is not shown
		- [js:core] Fixed #2378 sometime can't upload from directory selector
		- [cmd:edit] Fixed #2381 trigger event "editEditorPrepare" before build editor
		- [cmd:edit] Fixed #2382 can't reopen editor on return from canceling SaveAs from cancel action
		- [cmd:edit] Fixed #2383 can't use CodeMirror, SimpleMDE with require.js
		- [VD:MySQL] Fixed #2384 infinitely loop on search if root has parent_id
		- [js:extras:editors] add CKEditor5 editor
		- [js,css] Fixed #2390 optimization to mobile devices
		- [cmd:search] Fixed #2392 broken search design in current nightlty
		- [php:core] Fixed #2393 strange corruption of PHP internal_encoding
		- [js] Fixed #2401 remove deprecated functions of jQuery
		- [js] Fixed #2401 change `on('hover')` to `on('mouseenter mouseleave')`
		- [php:core] Fixed #2402 add an option `memoryLimitGD` to connector main options
		- [js:core] Fixed #2403 backward compatibility with API 2.0 is broken
		- [cmd:edit] Fixed #2405 mount the zip archive to edit archive contents
		- [VD:abstract] Fixed #2407 include the leaf root into search results
		- [VD:abstract] Fixed #2408 have the generic archive function for remote volume
		- [js:core] optimization of handling of leafRoots
		- [cmd:netmount] also unmount volumes included in volume to be unmounted
		- [i18n:LANG] add 'reflectOnImmediate','reflectOnUnmount','unmountChildren'
		- [cmd:netmount] follow the tree in reverse and unmount them in order
		- [php:core] add 'netmount' to `sessionUseCmds` for handle requests synchronously on unmount
		- [VD:Group] correction of `dirs` result of root stat
		- [VD] allow uploading all file types to the net mount volume
		- [cmd:quicklook] add the MarkDown viewer with marked.js
		- [js:core] Fixed #2413 problem that unnecessary "remove" event fires on upload
		- [cmd:info] show the md5, sha256 contents hashes
		- [cmd:help] add preference "Algorithms to show the file hash"
		- [js:rename] Fixed #2419 allow rename of the volume root name
		- And some minor bug fixes


2018-02-07  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.32):
		- [js:extras:editors.default] Fixed problem of initial widh of Zoho editor
		- [cmd:quicklook] Fixed #2346 conflict of `update` event with prototype.js
		- [php:core] Fixed #2345 aFixeddd the warning about object injection attacks
		- [VD:Dropbox2] Fixed #2348 edit File not respecting filename capitalization
		- [js:extras:editors] Fixed #2319 supports local CKEditor
		- [js:core] bugfix of sort by timestamp about unknown values
		- [ui:dialog] Fixed size restoration problem from maximized dialog
		- [ui:dialog] bugfix of when closes editing dialog of maximized
		- [VD:abstract] Fixed #2352 problem of detect MIME-Type as 'unknown' with the empty file
		- [cmd:open] Fixed #2359 can't open with "open" of "Action when select file"
		- [VD:abstract] update `mimeMap` of default options
		- [VD:TrashMySQL] add a new volume "TrashMySQL"
		- [php:core] Fixed #2365 make custom data controllable from the connector side
		- [VD:MySQL] bugfix that it was not possible to set as root path other than the root id
		- [api:put] allow puts by the self item hash
		- [i18n] correction of confirm message when duplicate upload
		- [i18n] Fixed #2369 modify wording of 'confirmRepl'
		- [cmd:help] Fixed #2370 add "Column setting" to Preferences tab
		- [i18n:LANG] add `'columnPref': 'Columns settings (List view)'`
		- And some minor bug fixes


2017-12-27  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.31):
		- [ui:dialog] bugfix that used dialog is not removed
		- [cmd:rename,resources:mixin] bugfix that can't access filename edit area with mobile devices
		- [ui:cwd,ui:tree] Fixed #2303 UX at rename is not good
		- [cmd:rename] Fixed #2308 rename multiple items at once 
		- [cmd:rename] Fixed #2315 add batch rename function
		- [js:core] Fixed #2320 problem that rename on upload don't work with FormData
		- [cmd:rm] Fixed problem of contentmenu extra button "Remove" not work on tree
		- [cmd:quicklook] add "RAR Archive" preview
		- [js:core] bugfix of registration `of fm.decodeRawString` by `fm.options.rawStringDecoder`
		- [php:core] Fixed #2312 can't upload by "paste url or images" on IE
		- [cmd:mkdir] fixed #2326 became can not be create folder on the tree
		- [VD:abstract] Fixed #2329 problem of getFullPath() with without folder name
		- [js:core] Fixed #2332 CORS detection gives false positive on IE11
		- [ui:dialog] Fixed #2331 add CSS class name to dialog buttons
		- [cmd:quicklook] show file size of the Archive preview
		- [js:core] Fixed problem that options.drawString encoder does not effect
		- Fixed #2336 'jp' isn't a Japanese in ISO-639 correctly it's a 'ja'
		- [js:core] Fixed #2337 prevent request initial request is completed
		- [js:options] allow empty value of cdns to disable it
		- [js:resouces,cmd:rename] Fixed #2343 can't close error dialog in item name editing
		- And some minor bug fixes


2017-11-29  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.30):
		- [js:core] Fixed #2238 always same filename on upload with some iOS devices
		- [js:core] Fixed #2240 correspond to parallel request in "Cancel" in notify dialog
		- [VD:FTP] Fixed #2243 problem of symlink handling
		- [ui:cwd] bug Fixed of contextmenu on the "Old School"
		- [cmd:quicklook] Fixed #2249 close-able docked preview window
		- [api] cmd `size` can return size infomation of each targets as `sizes`
		- [api] accept HTTP header "X-elFinderReqid"
		- [cmd:quicklook:plain text] show all contents with click an element `charsLeft`
		- [VD:abstract] Fixed #2253 `elFinderVolumeDriver::getWorkFile()` dose not work
		- [cmd:resize] Fixed #2251 add an option `commandsOptions.resize.getDimThreshold` for rapid starting
		- [VD:abstract] Fixed #2257 save as progressive JPEG on image editing
		- [VD:abstract] bug Fixed of detecting of `tmpLinkPath` and `tmpLinkUrl`
		- [cmd:resize] Fixed #2265 show the jpeg image save file size
		- [ui:dialog] Fixed #2264 add an option `uiOptions.dualog.focusOnMouseOver`
		- [cmd:resize] make rotatable directly with mobile devices
		- [js:options] change default value of `commandsOptions.resize.grid8px` to 'disable'
		- [ui:cwd] Fixed #2271 JavaScript stops when adding item count exceeding the option showFiles
		- [api] add an cmd `editor` that getway for custom contents editor
		- [cmd:edit] Fixed #2280 add plugin to edit with Zoho Office Editor
		- [VD:GoogleDrive] Fixed #2281 class load error with constant `ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT`
		- [js:core] Fixed #2283 thumbnails not displayed with newAPI
		- [VD:FTP] Fixed #2289 add support for FTP+SSL
		- [cmd:help] Fixed #2286 add user preferences "Action when select file", "Open with the editor used last time"
		- And some minor bug fixes


2017-10-07  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.29):
		- [cmd:quicklook.plugins] Fixed #2149 support Data URI scheme contents of the text file
		- [cmd:quicklook] Fixed #2151 tmb icon don't appear at file addition
		- [ui:cwd] Fixed #2152 table header position unmatch in the rtl language
		- [jquery.elfinder] add jQuery function `$.fn.scrollRight()`
		- [ui:navbar] correction position of navbar resize handle in 
		- [js:core] Fixed #2153 correction of `mime2class()`  also give sub-type of "image/*"
		- [ui:cwd] Fixed #2158 add file type badge in icons view with CSS
		- [VD:abstract,plugin] Fixed #2160 animation of apng is lost
		- [php:core] bugfix of passing tagetHash to callback 'upload.presave'
		- [api] configurable MIME-types to handle as text on the connector side
		- [VD:MySQL] Fixed #2164, Fixed #2166 problem with MySQL > 5.6
		- [ui:navbar,cmd:quicklook] Fixed #2171 allow to display the preview on the navbar
		- [js:options] add an option `fileFilter` cf. #2176, #2178
		- [ui:contextmenu] Fixed #2183 problem of selecting submenu on touch devices
		- [js:core] add a unique query param to thumbnail url
		- [cmd:quicklook] Fixed #2191 add an option `commandsOptions.quicklook.contain`
		- [cmd:quicklook] Fixed #2192 show cwd info when unselect item
		- [cmd:quicklook] add PSD preview plugin
		- [VD:FTP] Fixed the permissions when the ftp deamon uses a Virtual User that it isn't a passwd user
		- [php:plugins] Fixed #2198 AutoResize/AutoRotate/Watermark fail if php fileinfo module not loaded
		- [php:core,VD:abstarct] Fixed #2199 remove `create_function()` for PHP>=7.2
		- [js:core] Fixed #2201 bugfix that language setting of options stores in browser
		- [ui:dialog] Fixed #2203 option `dialogContained` to contained in the elFinder node
		- [js:core] Fixed #2210 send `mimes` as Array (not Object) on upload
		- [VD:FTP] Fixed Using epsv4 off with Pure-ftpd servers creates a timeout
		- [js:core] Fixed #2216 to destruction completely of used XHR objects
		- [cmd:quicklook,rm] Fixed #2221 show folder size info into the each
		- [api] Fixed #2222 abort on the client side then notify it to the connector side
		- [js:cwd] Fixed #2224 problems that cause discrepancies on displaying
		- [VD:LocalFileSystem] Fixed #2226 problem on save empty file
		- [i18n:LANG] add "Sum" for the caption of recursive folder size
		- [cmd:download] bugfix of non-alphabetic characters in download filename
		- [php:core] add a main option `connectionFlagsPath`
		- [i18n:LANG] add "Sum" for the caption of recursive folder size
		- [js:core] Fixed #2236 show target path in upload confirm dialog at non-cwd
		- And some minor bug fixes


2017-08-16  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.28):
		- [ui:cwd] Fixed #2140 sync problem of col-width of table header when item add/remove
		- [cmd] Fixed #2144 add cmds `select(all|none|invert)`
		- [php:core] Fixed #2143 locale dependent version number problem
		- And some minor bug fixes


2017-08-10  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.27):
		- [php:core] Fixed #2104 notice error in `getIniBytes()` with php 7.1
		- [cmd:download] Fixed #2106 add an option `commandOptions.download.minFilesZipdl`
		- [VD:abstract] enable to specify the path of server commands as constant
		- [cmd:quicklook] Fixed #2108 support HLS, DASH video preview
		- [cmd:open,quicklook] MIME type determination to case incentive
		- [cmd:undo,redo] Fixed #2115 implement the Undo/Redo command
		- [VD] Fixed #2120 item copy between volumes is incomplete
		- [VD:Box,OneDrive] Fixed #2122 to be able to know the access token in debug mode
		- [VD:abstract] Fixed #2107 do clearstatcache() in abstract class
		- [cmd:help] Fixed #2118 controling to show/hide toolbar icons in preference tab
		- [ui:dialog] Fixed #2123 problem in maximaize on fullscreen mode
		- [ui:toolbar] add an option `showPreferenceButton`
		- [cmd:rm] Fixed #2087 rm command not disable on unselect items
		- [ui:dialog] Fixed #2124 missing dialog on fullscreen mode
		- [cmd:resize] Fixed #2127 don't show "SaveAs" if new image saving is not allowed
		- [VD:OneDrive] Fixed #2131 causes an infinite loop at the copy command
		- And some minor bug fixes


2017-07-17  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.26):
		- [php:core] Fixed #2069 add static method `elFinder::getApiFullVersion()`
		- [js:core] Fixed #2073 auto loading of language files implemented in core
		- [cmd:help] Fixed #2074 add the Preference tab
		- [js:core] Fixed #2079 lost binded user functions with node.elfinder('reload')
		- [cmd:help] Fixed #2076 problem of content area height synchronization
		- [js:core] Fixed #2081 problem that updating of `uiCmdMap`
		- [cmd:resize] Fixed #2085 "Save As" dose not work in 2.1.25
		- [cmd:rm] Fixed #2086 problem of cmd mode sync on the item selected
		- [js:core] Fixed #2076 cancel full screen mode on `destroy`
		- [cmd:rm] Fixed #2087 JavaScript error when hide `rm` icon in toolbar
		- [cmd:netmount] Fixed #2088 problem of shows error dialog behind this dialog
		- [cmd:rm] Fixed #2087 button icon label is wrong until boot up
		- [php:connector] Supports X-Sendfile and similar file-download accelerators
		- And some minor bug fixes


2017-06-23  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.25):
		- [php] Fixed #2014 "Parse error" on PHP < 5.3
		- [core,API] Fixed #1431 cmd `edit` supports Data Uri Scheme
		- [cmd:edit] Added Pixlr Editor, Pixlr Express, Cleative Cloud Image editor, Ace Editor, CodeMirror, SimpleMDE, CKEditor and TinyMCE as default editors
		- [cmd:edit] Fixed #2020 add "Save As" button 
		- [cmd:resize] Fixed #2016 add Preset size buttons
		- [cmd:resize] Fixed #2019 conflict with the bootstrap.js
		- [CD:abstract] Fixed #2025 cannot edit any files with `memory_limit` = -1
		- [cmd:edit] Fixed #2027 make it selectable from multiple editors
		- [VD:abstract,LocalFileSystem] Fixed #2035 support multipart rar extraction
		- [VD:abstract] Fixed #2040 Fatal error on create the item with PHP>=7.1
		- [cmd:rm] Fixed #2042 add command options `infoCheckWait`, `toTrashMaxItems`
		- [cmd:resize] Fixed #2043 add "Save As" button into the resize dialog
		- [js:core] Fixed #2050 handling server errors during upload
		- [VD:abstract] Fixed #2054 to use the same hash value as Linux on Windows server
		- [js:restore] Fixed #2057 problem of empty folder handling
		- [cmd:empty] Fixed #2061 add a new command `empty` - "Empty the folder"
		- And some minor bug fixes


2017-05-19  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.24):
		- [js:options] Fixed #1947 add client option `dispInlineRegex` for legacy connectors
		- [js:options] Fixed #1948 separate uiOptions.toolbar extra options to uiOptions.toolbarExtra
		- [js:core,php:core] Fixed #1951 set name to uploaded items from clipboard data
		- [js:core,php:core] Fixed #1951 to IE and correction to Firefox
		- [js:core] Fixed #1953 to selectable "Rename" when item name exists on upload
		- [VD:abstract] Fixed #1952 urlencode of results file.url on upload
		- [VD:abstract] Fixed #1959 add connector roots option `acceptedDirname`
		- [js:core] Fixed #1965 add an option `heightBase` to client configuration
		- [VD:abstract] Fixed #1974 add an option `driverId` (prefix of volumeid)
		- [php:connector] Fixed #1975 possible XSS issue on debug mode of connector
		- [VD:FTP] Fixed #1982 problem with connect to Pure-FTPd
		- [php:plugin:Normalizer,Sanitizer] Fixed #1983 upload fails due to unnecessary conversion
		- [cmd:quicklook] Fixed #1985 seek and volume change disabled in Firefox
		- [js:core,cmd:rm,VD:trash] Fixed #1065 add "Trash" feature
		- [php:core] Fixed #1990 sometimes in initial request, pass to bind callback `$volume` is empty
		- [cmd:rm,trash,restore] Fixed #1991 implementation of restore function
		- [js:core] Fixed #1996 pass an event object as `this` into binded callback
		- [ui:tree] Fixed #1999 split display of many directories 
		- [js:core] Fixed #2005 prevent folder switching heavy as folders increase
		- [VD:abstract] Fixed #2000 `elFinderVolumeDriver::imageUtil()` is not working properly
		- [plugin:normalizer] Fixed #2004 add an option `umlauts
		- [VD:LocalFileSystem] Fixed #2009 corrention of an option `keepTimestamp`(upload)`
		- [ui:cwd,stat] Fixed #2010 sync problem when deleted any items in search results view
		- And some minor bug fixes


2017-03-31  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.23):
		- [VD:Dropbox2] Fixed #1598 add a driver of Dropbox APIv2
		- [js:core] change option `abortCmdsOnOpen` default value to `['tmb', 'parents']
		- [php:core,VD:abstract] add a command `subdirs`
		- [js:core] add new method `asyncJob` 
		- [quicklook] optimize of HTML5 audio/video player
		- [php:core,VD:abstract] Fixed problem of caching of subdirs
		- [ui:tree] trigger `check subdirs()` if necessary of change targets
		- [cmd:netmount] Fixed #1925 allow selection of multi-level hierarchy
		- [ui,cmd] Fixed #1931 cmd.disabled is not working in multi-volume search
		- [VD:GoogleDrive] Fixed #1932 support to auth type "JSON service account credentials"
		- [VD:GoogleDrive] Fixed #1933 sometimes infinite loop if root path is other than root on GoogleDrive
		- [js:core,ui:cwd,tree] add core method fm.getIconStyle() and use
		- [cmd:quicklook,info] Fixed #1926 support i18 name, file.icon
		- [Vd:abstract] allow -1 as value of option `checkSubfolders` for check asynchronously
		- [ui:cwd] Fixed #1923 first letter search & navigation in cwd
		- [VD:LocalFileSystem,FTP] Make success `extract()` by excluding unallowed items
		- [ui:cwd] Fixed #1941 performance deterioration of the thumbnail attach process
		- [js:core] Supports <base href> tag 
		- And some minor bug fixes


2017-02-25  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.22):
		- [VD:LocalFileSystem] Fixed #1882 option `copyJoin` does not work on extract
		- [cmd:help] Fixed #1898 error ".tabs is not a function" without JqUI tabs widget
		- [VD:abstract] Fixed #1899 rotating image breaks itself without exiftran and jpegtran
		- [VD:LocalFileSystem] Fixed #1910 `startPath` dose not work currently 
		- [VD:abstract] Fixed #1911 unable to rename folder
		- And some minor bug fixes


2017-02-25  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.9):
		- [VD:abstract] Fixed #1911 unable to rename folder


2017-02-09  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.8):
		- [VD:security] Fixed #1891 MIME-type check of unknown item is not execute


2017-02-07  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.21):
		- [cmd:open] Fixed #1844 make configurable to open into tab(s)
		- [php:core] Fixed #1846 target folder may be stay locked by adding items
		- [cmd:download] Fixed #1868 fixed up timeouts for bad connection download
		- [proxy:v1] Fixed #1880 error on command `paste`
		- [v1 support] Fixed #1884 error on command `reload`
		- [cmd:upload] Fixed #1885 Error on upload.ui = 'uploadbutton'
		- [VD:security] Fixed #1891 MIME-type check of unknown item is not execute
		- And some minor bug fixes


2017-01-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.20):
		- [php:core] Fixed #1800 session write before umount of the volume
		- [cmd:upload] Fixed #1804 add folder upload button into upload dialog
		- [php:plugin] Fixed #1807 enable/disable plugin by pressing meta key on DnD upload
		- [cmd:rename] Fixed #1814 trigger event blur of input on item unselect
		- [js:core] Fixed #1817 add "execpre.[cmd]" event and make cmd exec cancelable
		- [js:core] Fixed #1818 mtime not defined for chunk upload
		- [js:core] Fixed #1826 allow command invalidation by each item(folder/file)
		- [ui:dialog] Fixed #1824 empty dialog on elfinder load
		- [cmd:resize] Fixed #1834 configurable default state of `8px Grid`
		- [VD] Fixed #1841 published files security issues
		- [js:core] Fixed #1832 allow to set error message on HTTP status code 4/5xx
		- [js:cmd] Fixed #1842 disable shortcut that specified to `disabled`
		- [php:core] Fixed #1843 security vulnerability fix


2016-12-10  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.19):
		- [js] Fixed #1000 Wrap compiled code in UMD (for commonJs and AMD support)
		- [VD:OneDrive,Box] Fixed #1774 dose not work when PHP has `open_basedir`
		- [cmd:edit,php:core] Fixed #1779 save contents with original character encoding
		- [ui:toolbar] Fixed #1778 displayTextLabel option not works
		- [cmd:edit] add encoding select box rel. #1779
		- [cmd:search] Fixed #1782 search by mimetype dose not work (>=2.1.16)
		- [ui:dialog] Fixed #1785 trigger resize event with `maximize:on` in minimize element
		- [VD:abstract] Fixed #1783 Illegal duplicate data as bind in duplicate command
		- [cmd:edit] include elFinder instance as `fm` into `ta.editor` property
		- [js:core] Fixed #1791 implement JS, CSS loader and auto load of elFinder CSS
		- [cmd:resize] Fixed #1789 bug that crop image size is change while dragging
		- [js:core] Fixed #1788 bug that chunked upload timeout processing is invalid
		- [VD:abstract] Fixed #1799 uses `link()` in exec `zipdl` to more faster
		- And some minor bug fixes


2016-11-21  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.18):

		- [VD:FTP] Fixed #1757 cause infinite loop with getting stat of second level items from system root
		- [js:core] Fixed #1761 problem of chunk merge request on 2.1.17 
		- [php:core] Fixed #1762 broken backward compatibility of PHP < 5.4 on 2.1.17
		- And some minor bug fixes


2016-11-19  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.17):

		- [cmd:upload] Fixed #1695 disabled check doesn't work in other than CWD volume
		- [js:core] Fixed #1698 abort the file upload at network error occurs
		- [ui:toolbar] Fixed #1699 add an option `displayTextLabel` (default: `false`)
		- [css:toolbar] Fixed #1700 correction of button label for touch devices
		- [ui:toolbar] add contextmenu to show/hide the text label
		- [ui:workzone] Fixed #1702 cwd size fits to the workzone at resize
		- [VD:abstract] Fixed #1703 problem of make the video thumbnail
		- [core] Fixed #1706 configurable to limit max number of selectable items
			- Added an option `maxTargets` of connector main option.
		- [ui:cwd] Fixed #1701 No thumbnails after added the item (v 2.1.16)
		- [cmd:download] Fixed #1707 allow zip download in multi volume searching
		- Added native driver for GoogleDrive, OneDrive and Box (Special thanks to Raja Sharma)
		- [cmd:netmount] Fixed #1713 OAuth of procedure is not completed on MS Edge
		- [css:quicklook] Fixed #1717 preview html file won't scroll on IOS
		- [cmd:upload] Fixed #1718 File upload on paste does not work
		- [js:core] Fixed #1724 add client option `enableByMouseOver`
		- [js:core] Fixed #1724 disable event `disable` with option `enableAlways=true`
		- [js:core] Fixed #1724 optimize switching enable/disable for elf in iframe
		- [cmd:getfile] Fixed #1727 wrong path when the tree is not loaded
		- [cmd:quicklook] Fixed #1737 select next item after an item deleted
		- [cmd:mkdir] Fixed #1739 Add 'new folder' action to tree context menu
		- [VD:abstract,LocalFileSystem] Fixed #1744 results `url` must be urlencoded
		- [js:core] Fixed #1738 retry uploading only on connection aborted
		- [cmd:search] Fixed #1745 "onlyMimes" option invalid in search results
		- [js:core] Fixed #1738 bug in the retry function on chunked uploading
		- [php:plugin:AutoResize] Fixed #1746 add an option `forceEffect` (default:false)
		- [js:core,cmd:quicklook] Fixed #1748 add client option `rawStringDecoder`
		- And some minor bug fixes


2016-10-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.16):
		- [cmd:info] Fixed #1652 add CSS class name `file.csscls` to icon
		- [ui:cwd] Fixed #1653 JQUI.selectable does not work on items that has been added
		- [js:core,cmd:info] Fixed #1652 add the item type `Volume Root`
		- [js:core] Fixed #1656 wrong result `fm.convAbsUrl()` with location basename
		- [php:core] Fixed #1658 to allow cancel cmd exec by [cmd].pre callback
		- [js:code] Fixed #1659 not work in Mac/iOS safari private browsing mode
		- [js:core] Fixed #1662 `[cmd]fail` event is fired at fail cmd execution
		- [php:core] Fixed #1669 Fatal error in `detectFileExtension()` when URL upload
		- [ui:dialog] Fixed #1670 add the minimize button into the editing dialog
		- [ui:navbar] Fixed #1684 rtl right-panel resize bug
		- [cmd:resize] Fixed #1685 to enable specify bgcolor in the image rotation
		- [cmd:resize] Fixed #1686 add "Aspect ratio" button into crop panel
		- [cmd:resize] add button "8px Grid" Enabled/Disabled for JPEG image
		- [js:core] Fixed #1689 initialized to an undefined property
		- [js:core] Fixed #1692 optimize function of swipe to close navbar
		- [cmd:quicklook] Fixed #1693 `dispInlineRegex` doesn't reflect in multi volume searching
		- And some minor bug fixes


2016-09-12  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.15):
		- [js:command] inheritable elFinder.command object rel. #1545
		- [VD:abstract] Fixed #1550 option `uiCmdMap` dose not work on 2.1.14
		- [VD:abstract] Fixed #1553 root stat not refresh when do chmod of root
		- [php:core] Fixed make netkey problem - support multiple array options
		- [js:core] Fixed #1554 can not unmount netvolume when done auto sync
		- [js:core] Fixed #1555 can not upload to unreadable folder
		- [php:core] parent dir sets to changed when upload, paste, rm, mkfile, mkdir etc
		- [js:core] Fixed #1560 to possible to apply sort mode in tree in navbar
		- [js:ui,cmd:fullscreen] Fixed #1563 add ui command "fullscrren"
		- [cmd:edit] Fixed #1561 add to fullscreen button
		- [js:core] Fixed #1562 sort with i18 name if exist
		- [js:options] ui option `commands` accepts "*" as all of commands
		- [VD:LocalFileSystem] Fixed #1565 dose not support volume option `searchTimeout`
		- [VD:FTP] Fixed #1571 cause infinite loop during auto-sync of the volume root
		- [php:core] Fixed #1572 unable to DnD upload the folder named "0"
		- [VD:abstract] Fixed #1575 can not rename "0" to "00", "000"...
		- [cmd:rename] Fixed #1573 input text stay in there at rename error in tree view
		- [ui:cwd] Fixed #1576 reset the column width may not applied to the header
		- [ui:conttextmenu] Fixed #1578 to the contextmenu draggable
		- [php,cmd:open] Fixed #1586 RFC7233 violation, add `commandsOptions.open.method`
		- [ui:navbar,cwd] Fixed #1590 auto scroll on HTML5 native dragging
		- [VD:Dropbox] Fixed #1596 correction of `basename`, `dirname` on the windows server
		- [cmd:upload] Fixed #1600 add target folder selector into upload dialog
		- [ui] Fixed #1609 toast notification on complete of upload/paste into any folder
		- [cmd:getfile] Fixed #1610 getFileCallback to supports the jQuery.Deferred
		- [cmd:rename] Fixed #1613 correction of error handling
		- [js:core] Fixed #1614 correction of upload mixed chunks and normal file
		- [ui:cwd] Fixed #1615 break the lazy rendering when it delete items
		- [ui:tree] Fixed #1617 other volumes cmds doesn't work when it disabled in cwd
		- [core] Fixed #1622 added an option `phash` to the volume roots for implement feature of volume group
		- [ui:toolbar] Fixed #1619 use fm.trigger('toolbarload') instead toolbar.tigger('load')
		- [js:options] Fixed #1624 add a new option `overwriteUploadConfirm`
		- [cmd:search] Fixed #1635 support parallel requests for multi volumes
		- [contextmenu] Fixed #1645 to enable the operation of the keyboard
		- [ui:cwd] Fixed #1646 selected targets by ctrl+shift are wrong
		- [ui:dialog] Fixed #1647 controlling tabstop by `elfinder-tabstop` css class name
		- And some minor bug fixes

2016-07-25  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.14):
		- [js:core,VD:abstract] Fixed #1525 do MIME check before file upload
		- [API] Accept the root options data as an attribute `options` of the root stat
		- [ui:cwd] Fixed #1532 can not use the `_` in custom column name
		- [js:command] Fixed #1533 update the cmd status at `sync`
		- [core] Fixed #1012 support i18n folder name
		- [ui:cwd] Fixed #1544 jQuery backward compatibility (fix DnD problem)
		- [proxy:APIv1] Fixed #178 correction of command `paste`
		- And some minor bug fixes


2016-07-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.13):
		- [ui:cwd] Fixed #1433 create a thumbnail of the video file with ffmpeg
		- [js:core] Fixed #1435 bug of getFileCallback on multi instances
		- [ui:cwd] Fixed #1440 bug that not become disabled on multi instance
		- [cmd:quicklook] Fixed #1441 hide the prev/next button on first/last item
		- [js:core] Fixed #1439 show window close confirm dialog while editing file
		- [ui:cwd] Fixed #1450 missing contextmenu on touch up on iOS devices
		- [js] Fixed #1455 duplicate registration of command change event
		- [ui:cwd] Fixed #1461 resizable table column width
		- [cmd:sort] Fixed #1464 to enable more sort options
		- [cmd:chmod] Fixed #1465 remove unnecessary `this` reference
		- [ui:toolbar,navbar] Fixed #1473 memorize state of open/close by swipe
		- [ui:cwd] Fixed #1475 make custom column sortable on list view
		- [cmd:quicklook] Fixed #1478 preview broken with old jQuery
		- [js:core] Fixed #1480 broken compatibility with protocol API v1
		- [cmd:opendir] Fixed #1481 broken in elFinder 2.1.12
		- [ui:cwd] Fixed #1479 can't be moved to the right edge at column sort
		- [ui:cwd] Fixed #1485 add an option of template placeholders replacement rules
		- [php:core] Fixed #1490 configurable root options of the network mounting volume
		- [js] Fixed #1491 jQuery 3.0 supports
		- [cmd:search] Fixed #1499 incremental search from current view items
		- [cmd;resize] Fixed #1498 img-edit dialog layout disordered when resizing window
		- [VD:abstract] Fixed #1505 configurable duplicate's suffix, unique numbe format
		- [VD:abstract] Fixed #1507 add a volume option `dirUrlOwn`
		- [VD:abstract] Fixed #1514 security vulnerability in the archive command
		- And some minor bug fixes


2016-07-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.7):
		- [VD:abstract] Fixed #1514 security vulnerability in the archive command


2016-05-30  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.12):
		- Fixed #1321 Not trim white spaces on editing the text file
		- Fixed #1320 Supported operation in the modal dialog
		- Correction of the context menu (Mobile devices, Right-to-Left Language etc.)
		- Correction of Quicklook (Supported 'video/quicktime', improvement of IFRAME, For Mobile devices etc)
		- Fixed #1272 Correct detection of timestamp on FTP volume
		- Fixed #1315 Implement function for `copyJoin` of the volume root option
		- Fixed #1344 Use self image as thumbnail when without `imgLib`
		- Fixed #1342 Bugfix of method `getFullPath` that was problems relative path can not be resolved
		- Added a volume root option `uploadMaxConn`
			- Maximum number of chunked upload connection. `-1` to disable chunked upload.
		- Changed default value of volume root option `tmbBgColor` to 'transparent'
		- Added a volume root option `bgColorFb`
			- Image rotate fallback background color (defalt: #ffffff). Uses this color if it can not specify to transparent.
		- Fixed #935 Supports `'convert'`(imagemagick) as `imgLib`
		- Fixed #1363 Bugfix of FTP connect from windows localhost to remote server
		- Fixed #1367 Bugfix of backward compatible to jQuery UI < 1.11
		- Mobile devices friendly
			- Swipe to navbar/toolbar show/hide on touch devices
			- Hide toolbar on mobile devices at initial view
			- A little bigger icons
			- Added item select checkboxes
			- Path breadcrumbs move to top of workzone when hide navbar
			- To enable resizing/cropping by touch events
			- UX enhancements
		- Fixed #1311 CWD list table with fixed fixed header
		- UI path apply text-ellipsis in each holder name
		- Fixed #1370 implemented function keep timestamp into LocalFileSystem volume driver
		- Added PHP error handler and removed all `@` error-control operator
		- Fixed #1391 take care 32bit system of chunked file uploading arg `cid`
		- Fixed #1393 Added PHP class auto loader
		- Fixed #1412 Enable auto scroll when navbar/cwd drag over
		- And some minor bug fixes


2016-04-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.11):
		- Added Archive(zip|gzip|tar) quicklook preview plugin
		- DnD upload supports Microsoft Edge
		- Fixed problem which directory is not detected in the LocalFileSystem driver (Bug of 2.1.10)
		- And some minor bug fixes


2016-04-02  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.10):
		- Fixed #1061, #1231 Supported controllable folder icons
		- Fixed #1240 LocalFileSystem search files it was still follow symlinks
		- Added new volume root option `searchExDirReg` for exclusion serach
		- Return file.url in result on file upload for 3rd party uploader
		- Supported elFinder API version 1
		- Added a new volume driver FlysystemGoogleDriveNetmount that based on flysystem-google-drive
		- Added a new connector plugin "AutoRotate"
		- And some minor bug fixes


2016-03-11  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.9):
		- Fixed enbug of 2.1.6-2.1.7 PHP error undefind valiable/array to string conversion
		- The function to make thumbnail supports more image types when Imagick enabled
		- Correction of the problem that Archive / Extract function don't work well under some environment
		- Added a quicklook plugin that is the Google docs online viewer
			- Default is disabled. Set `commandsOptions.quicklook.googleDocsMimes` to enable this plugin.
			```javascript
			commandsOptions : {
				// "quicklook" command options.
				quicklook : {
					autoplay : true,
					jplayer  : 'extensions/jplayer',
					// MIME types to use Google Docs online viewer
					// Example array value
					// ['application/pdf', 'image/tiff', 'application/msword', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']
					googleDocsMimes : []
				}
			}
			```
		- And some minor bug fixes


2016-03-07  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.8):
		- Added a new volume driver `MsSQL`
		- Fixed #1226 problem of sort by clicking on cloumn headers
		- Fixed #1229 bug of selection after sorting in list view
		- Replaceable session handling wrapper (elFinderSessionInterface)
		- Added Connector main config `defaultMimefile` ()
		- update mime.types
		- Added LocalFileSystem volume root config `followSymLinks` (defailt true)
		- And some minor bug fixes


2016-02-21  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.7):
		- Added connector main options `commonTempPath` and `maxArcFilesSize`
		- Fixed #353 It can download files/folders as an archve file
		- Fixed #1195 Supported BMP in GD image resize
		- Became possible to cancellation while searching
		- Supported API protocol version 2.0 for the legacy connector
		- Fixed #1206 Configurable places(favorites) (https://github.com/Studio-42/elFinder/issues/1206)
		- Fixed #1211 Remove deprecated method jQueryUI.zIndex()
		- Supported jQueryUI 1.12.0
		- Fixed #1213 infinite loop in PHP connector
		- Cmd:mkdir to callable "New Folder with Selected items" as "Into New Folder"
		- Supported nao-pon/flysystem-google-drive with barryvdh/elfinder-flysystem-driver
			- barryvdh/elfinder-flysystem-driver (https://github.com/barryvdh/elfinder-flysystem-driver)
			- nao-pon/flysystem-google-drive (https://github.com/nao-pon/flysystem-google-drive)
		- UX improvement of in Touch devices
		- And some minor bug fixes


2015-02-21  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.6):
		- Fixed #1213 infinite loop in PHP connector


2016-01-19  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.6):
		- Fixed #1074 startPath for multi volumes
		- Fixed #1172 enbug-fix of rename command
		- Fixed #1174 support for multi-instance on the same connector
		- Plugin: AutoResize New option `preserveExif`
		- Fixed #179 JPEG quality specifiable
		- Fixed #1176 auto-sync check with HTTP long polling/inotifywait
		- Fixed #1181 case insensitive search problem of LocalFileSystem driver
		- Added an autosync button into contextmenu `Reload`
		- Added new client configuration `syncStart`
		- Search result view optimization
		- Adddd new volume root option `searchTimeout` (default 30s)
		- Added new crient command `opendir` - opens selected item's parent folder at search result
		- Sortable "Places" (your favorites)
		- Fixed #1193 open the file at direct URL if possible
		- And some minor bug fixes


2015-12-26  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.5):
		- Fixed bug that can't in writable with `chmod`
		- Show remove item info in confirm dialog on `rm` action
		- Fixed #1165, MIME types maintenance (doc, dot, xlt, xla)
		- Fixed problem if filename included character that can't be json encode
		- Added option `convmap` to Normalizer plugin
		- And some minor bug fixes


2015-12-26  Naoki Sawada  <hypweb+elfinder@gmail.com>  

	* elFinder (2.0.5):
		- Fixed problem if filename included character that can't be json encode


2015-12-16  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.4):
		- Fixed #1163 Dropbox driver supported windows server
		- Fixed search problem on Windows server


2015-12-13  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.3):
		- Auto configure `customHeaders`, `xhrFields` for CORS
		- Allow set elFinder::$volumesCnt by HTTP header "X-elFinder-VolumesCntStart"
		- Resolved #1145, Configurable keyboard shortcuts of any command
		- Force non-overwrite on URL uploading
		- Supported Drag out function with [Shift] + Drag of file item (with out IE)
			- Drag and Drop copy from elFinder(A) to elFinder(B)
			- Make list of download url to Text editor
			- Drag and Drop download with Chrome (Single file only)
			- etc.
		- Choosable "backup" at pasting of same name files
		- Show confirm at uploading of same name file exists
		- Show URL link icon on Download menu in contextmenu
		        - This icon is clickable as normal link, shows context menu and drag out
		- Added more feedback sign of jQuery DnD drag icon
		- Others, some minor bug fixes


2015-11-23  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.2):
		- [security-fix] vulnerability of the MIME type quarantine
		- Multi-line filename editing on icon view
		- Auto expands filename editing on list view
		- Fixed #1124, Uploading problem exactly 20MiB/30MiB/40MiB...
		- Marged #1125, Fixed file permissions for MySQL LOAD_FILE command
		- Fixed #1127, Supported full path including the drive letter of the Windows server
		- Marged #1131, #1132, Complete Romanian(ro) translation
		- Fixed symbolic link file stats `mtime`, `size`
		- Marged #1133, Complete German(de) translation
		- Marged #1139, Complete TÃ¼rkÃ§e(tr) translation
		- Marged #1141, Plugin Normalizer function: make filename lowercase
		- Others, some minor bug fixes


2015-11-23  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.4):
		- [security-fix] vulnerability of the MIME type quarantine


2015-11-10  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.1.1):
		- More High performance server backend and light client UI
		- Connector plugin
			- AutoResize : Auto resize on file upload.
			- Normalizer : UTF-8 Normalizer of file-name and file-path etc.
			- Sanitizer : Sanitizer of file-name and file-path etc.
			- Watermark : Print watermark on file upload.
		- Folder upload with Chrome
		- Chunked file upload
		- Upload directly to the folder
		- Creating the archive by specifying the file name
		- Direct extraction to the current working directory (you do not want to create a folder)
		- Support Dropbox.comÂ© (Configurable & As network volume)
		- Supports custom information in info dialog
		- Configuable columns of list view
		- Supports custom CSS class function of tree view


2015-11-10  Naoki Sawada  <hypweb+elfinder@gmail.com>

	* elFinder (2.0.3):
		- jQuery 1.9+ support
		- 350+ bugs fixed since rc1 version
		- Modify translations and some new translations
		- Netmount volume function


2012-04-10  Troex Nevelin  <troex@fury.scancode.ru>

	* elFinder (2.0 rc1):
		- Major code refactor
		- 200+ bugs fixed since beta version
		- 14 new translations
		- FTP volume driver
		- Advanced image editing dialog


2011-07-10  Troex Nevelin  <troex@fury.scancode.ru>

	* elFinder (2.0 beta):
		- New branch 2.x, total rewrite from scratch
		- MySQL volume driver support (as file storage)
		- Full drag & drop support with HTML5 upload


2011-06-20  Troex Nevelin  <troex@fury.scancode.ru>

	* elFinder (1.2):
		- jQuery and UI updated
		- Python connector improvements
		- QuickLook fixed
		- CSS fixes
		- New icons from http://pixel-mixer.com/
		- New languages: Czech, Dutch, German, Greek, French, Hungarian,
		  Italian, Japanese, Latvian, Polish, Brazilian Portuguese,
		  Slovak, Thai, Turkish, Vietnamese, Simplified Chinese,
		  Traditional Chinese


2010-03-11  Troex Nevelin  <troex@fury.scancode.ru>

	* elFinder (1.1):
		- Total rewrite from scratch.
		- New PHP connector.
		- Python connector.
		- Create/Extract archives.
		- QuickLook.
		- "Places" for favorites.
		- Background thumbnails creation.
		- Exteneded configuration options of connector and client.
		- Spanish localization.
		- JSON API description.
		- Full documentation in English, Russian and Spanish.
		- No more use of jquery plugins.
		- Website update.
		- [bugfix] All known bugs fixed.


2009-11-09  Dmitry Levashov  <dio@std42.ru>

	* elFinder (1.0.1):
		- In directory tree panel added arrows to open/close directories
		  without entering in.
		- Added shortcut support for copy/cut/paste/delete files and
		  folders. For Mac users added Command+Backspace support.
		- Added context menu to current directory.
		- Added help.
		- [bugfix] invalid determing files/folders permissions using
		  "perms" options in php connector

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    includes/File_manager/lib/LICENSE.md                                                                0000644                 00000002765 15266053002 0013106 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       elFinder is issued under a 3-clauses BSD license.

Copyright (c) 2009-2024, Studio 42
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the Studio 42 Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL "STUDIO 42" OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
           includes/File_manager/lib/css/theme.css                                                             0000644                 00000027451 15266053003 0014106 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * MacOS X like theme for elFinder.
 * Required jquery ui "smoothness" theme.
 *
 * @author Dmitry (dio) Levashov
 **/

/* scrollbar for Chrome and Safari */
.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-track {
    border-radius: 10px;
    box-shadow: inset 0 0 6px rgba(0, 0, 0, .1);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 50, 0.08);
    border-radius: 10px;
    box-shadow:0 0 0 1px rgba(255, 255, 255, .3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:hover {
    background-color: rgba(0, 0, 50, 0.16);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:active {
    background-color: rgba(0, 0, 50, 0.24);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-corner {
    background-color: transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button {
    background-color: transparent;
    width: 10px;
    height: 10px;
    border: 5px solid transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:hover {
    border: 5px solid rgba(0, 0, 50, 0.08);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:active {
    border: 5px solid rgba(0, 0, 50, 0.5);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:decrement {
    border-bottom: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:increment {
    border-top: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:decrement {
    border-right: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:increment {
    border-left: 8px solid rgba(0, 0, 50, 0.3);
}

/* input textarea */
.elfinder input,
.elfinder textarea {
    color: #000;
    background-color: #FFF;
    border-color: #ccc;
}

/* dialogs */
.std42-dialog, .std42-dialog .ui-widget-content {
    background-color: #ededed;
    background-image: none;
    background-clip: content-box;
}

.std42-dialog.elfinder-bg-translucent {
    background-color: #fff;
    background-color: rgba(255, 255, 255, 0.9);
}

.std42-dialog.elfinder-bg-translucent .ui-widget-content {
    background-color: transparent;
}

.elfinder-quicklook-title {
    color: #fff;
}

.elfinder-quicklook-titlebar-icon {
    background-color: transparent;
    background-image: none;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    background-color: #d4d4d4;
    border-color: #8a8a8a;
}

.elfinder-quicklook-info-progress {
    background-color: gray;
}

.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close {
    background-color: #ff6252;
    border-color: #e5695d;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize {
    background-color: #ffbc00;
    border-color: #e3a40b;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
    background-color: #26c82f;
    border-color: #13ae10;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .elfinder-help,
.std42-dialog .elfinder-help .ui-widget-content {
    background: #fff;
}

/* navbar */
.elfinder .elfinder-navbar {
    background: #dde4eb;
}

.elfinder-navbar .ui-state-hover {
    color: #000;
    background-color: #edf1f4;
    border-color: #bdcbd8;
}

.elfinder-navbar .ui-droppable-hover {
    background: transparent;
}

.elfinder-navbar .ui-state-active {
    background: #3875d7;
    border-color: #3875d7;
    color: #fff;
}

.elfinder-navbar .elfinder-droppable-active {
    background: #A7C6E5;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-navbar .ui-state-active {
    background: #dadada;
    border-color: #aaa;
    color: #777;
}

/* workzone */
.elfinder-workzone {
    background: #fff;
}

/* current directory */
/* Is in trash */
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
    background-color: #f0f0f0;
}

/* selected file in "icons" view */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
    background: #ccc;
}

/* type badge in "icons" view */
/* default */
.elfinder-cwd-icon:before {
    color: white;
    background-color: #798da7;
}

/* type */
.elfinder-cwd-icon-text:before {
    background-color: #6f99e6
}

.elfinder-cwd-icon-image:before {
    background-color: #2ea26c
}

.elfinder-cwd-icon-audio:before {
    background-color: #7bad2a
}

.elfinder-cwd-icon-video:before {
    background-color: #322aad
}

/* subtype */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-plain:before {
    background-color: #719be6
}

.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before {
    background-color: #83aae7
}

.elfinder-cwd-icon-pdf:before {
    background-color: #db7424
}

.elfinder-cwd-icon-html:before {
    background-color: #82bc12
}

.elfinder-cwd-icon-xml:before,
.elfinder-cwd-icon-css:before {
    background-color: #7c7c7c
}

.elfinder-cwd-icon-x-shockwave-flash:before {
    background-color: #f43a36
}

.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
    background-color: #97638e
}

.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before {
    background-color: #7c607c
}

.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-office:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:before {
    background-color: #2b569a
}

.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:before {
    background-color: #107b10
}

.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:before {
    background-color: #d24625
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:before,
.elfinder-cwd-icon-vnd-openofficeorg-extension:before {
    background-color: #00a500
}

.elfinder-cwd-icon-postscript:before {
    background-color: #ff5722
}

/* list view*/
.elfinder-cwd table thead td.ui-state-hover {
    background: #ddd;
}

.elfinder-cwd table tr:nth-child(odd) {
    background-color: #edf3fe;
}

.elfinder-cwd table tr {
    border: 1px solid transparent;
    border-top: 1px solid #fff;
}

.elfinder-cwd .elfinder-droppable-active td {
    background: #A7C6E5;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #fff;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #A7C6E5;
}

/* common selected background/color */
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-cwd table td.ui-state-hover,
.elfinder-button-menu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover {
    background: #dadada;
}

/* statusbar */
.elfinder .elfinder-statusbar {
    color: #555;
}

.elfinder .elfinder-statusbar a {
    text-decoration: none;
    color: #555;
}

/* contextmenu */
.elfinder-contextmenu .ui-state-active {
    background: #6293df;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
    background-image: url('../img/arrows-active.png');
}

/* dialog */
.elfinder .ui-dialog input:text.ui-state-hover,
.elfinder .ui-dialog textarea.ui-state-hover {
    background-image: none;
    background-color: inherit;
}

.elfinder-notify-cancel .elfinder-notify-button {
    background-color: #707070;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.elfinder-notify-cancel .elfinder-notify-button.ui-state-hover {
    background-color: #aaa;
}

/* edit dialog */
.elfinder-dialog-edit select.elfinder-edit-changed {
    border-bottom: 2px solid #13ae10;
}

/* tooltip */
.ui-widget-content.elfinder-ui-tooltip {
    background-color: #fff;
}

.elfinder-ui-tooltip.ui-widget-shadow,
.elfinder .elfinder-ui-tooltip.ui-widget-shadow {
    box-shadow: 2px 6px 4px -4px #cecdcd;
}

/* progressbar */
.elfinder-ui-progressbar {
    background-color: #419bf3;
}                                                                                                                                                                                                                       includes/File_manager/lib/css/elfinder.full.css                                                     0000644                 00000362463 15266053003 0015542 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder - file manager for web
 * Version 2.1.66 (2025-08-28)
 * http://elfinder.org
 * 
 * Copyright 2009-2025, Studio 42
 * Licensed under a 3-clauses BSD license
 */

/* File: /css/commands.css */
/******************************************************************/
/*                          COMMANDS STYLES                       */
/******************************************************************/

/********************** COMMAND "RESIZE" ****************************/
.elfinder-resize-container {
    margin-top: .3em;
}

.elfinder-resize-type {
    float: left;
    margin-bottom: .4em;
}

.elfinder-resize-control {
    float: left;
}

.elfinder-resize-control input[type=number] {
    border: 1px solid #aaa;
    text-align: right;
    width: 4.5em;
}

.elfinder-mobile .elfinder-resize-control input[type=number] {
    width: 3.5em;
}

.elfinder-resize-control input.elfinder-resize-bg {
    text-align: center;
    width: 5em;
    direction: ltr;
}

.elfinder-dialog-resize .elfinder-resize-control-panel {
    margin-top: 10px;
}

.elfinder-dialog-resize .elfinder-resize-imgrotate,
.elfinder-dialog-resize .elfinder-resize-pallet {
    cursor: pointer;
}

.elfinder-dialog-resize .elfinder-resize-picking {
    cursor: crosshair;
}

.elfinder-dialog-resize .elfinder-resize-grid8 + button {
    padding-top: 2px;
    padding-bottom: 2px;
}

.elfinder-resize-preview {
    width: 400px;
    height: 400px;
    padding: 10px;
    background: #fff;
    border: 1px solid #aaa;
    float: right;
    position: relative;
    overflow: hidden;
    text-align: left;
    direction: ltr;
}

.elfinder-resize-handle {
    position: relative;
}

.elfinder-resize-handle-hline,
.elfinder-resize-handle-vline {
    position: absolute;
    background-image: url("../img/crop.gif");
}

.elfinder-resize-handle-hline {
    width: 100%;
    height: 1px !important;
    background-repeat: repeat-x;
}

.elfinder-resize-handle-vline {
    width: 1px !important;
    height: 100%;
    background-repeat: repeat-y;
}

.elfinder-resize-handle-hline-top {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-hline-bottom {
    bottom: 0;
    left: 0;
}

.elfinder-resize-handle-vline-left {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-vline-right {
    top: 0;
    right: 0;
}

.elfinder-resize-handle-point {
    position: absolute;
    width: 8px;
    height: 8px;
    border: 1px solid #777;
    background: transparent;
}

.elfinder-resize-handle-point-n {
    top: 0;
    left: 50%;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-ne {
    top: 0;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-e {
    top: 50%;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-se {
    bottom: 0;
    right: 0;
    margin-bottom: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-s {
    bottom: 0;
    left: 50%;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-sw {
    bottom: 0;
    left: 0;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-w {
    top: 50%;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-nw {
    top: 0;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-e {
    width: 10px;
    height: 100%;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-s {
    width: 100%;
    height: 10px;
}

.elfinder-resize-loading {
    position: absolute;
    width: 200px;
    height: 30px;
    top: 50%;
    margin-top: -25px;
    left: 50%;
    margin-left: -100px;
    text-align: center;
    background: url(../img/progress.gif) center bottom repeat-x;
}

.elfinder-resize-row {
    margin-bottom: 9px;
    position: relative;
}

.elfinder-resize-label {
    float: left;
    width: 80px;
    padding-top: 3px;
}

.elfinder-resize-checkbox-label {
    border: 1px solid transparent;
}

.elfinder-dialog-resize .elfinder-resize-whctrls {
    margin: -20px 5px 0 5px;
}

.elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: right;
}

.elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: left;
}

.elfinder-dialog-resize .ui-resizable-e,
.elfinder-dialog-resize .ui-resizable-w {
    height: 100%;
    width: 10px;
}

.elfinder-dialog-resize .ui-resizable-s,
.elfinder-dialog-resize .ui-resizable-n {
    width: 100%;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-e {
    margin-right: -7px;
}

.elfinder-dialog-resize .ui-resizable-w {
    margin-left: -7px;
}

.elfinder-dialog-resize .ui-resizable-s {
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-n {
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-se,
.elfinder-dialog-resize .ui-resizable-sw,
.elfinder-dialog-resize .ui-resizable-ne,
.elfinder-dialog-resize .ui-resizable-nw {
    width: 10px;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-se {
    background: transparent;
    bottom: 0;
    right: 0;
    margin-right: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-sw {
    margin-left: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-ne {
    margin-right: -7px;
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-nw {
    margin-left: -7px;
    margin-top: -7px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-s,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-n {
    height: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-e,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-w {
    width: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-se,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-sw,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-ne,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-nw {
    width: 30px;
    height: 30px;
}

.elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se {
    width: 30px;
    height: 30px;
    margin: 0;
}

.elfinder-dialog-resize .ui-icon-grip-solid-vertical {
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -8px;
    margin-right: -11px;
}

.elfinder-dialog-resize .ui-icon-grip-solid-horizontal {
    position: absolute;
    left: 50%;
    bottom: 0;
    margin-left: -8px;
    margin-bottom: -11px;;
}

.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset {
    float: right;
}

.elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-dialog-resize input.elfinder-resize-quality {
    width: 3.5em;
}

.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality {
    width: 2.5em;
}

.elfinder-dialog-resize .elfinder-resize-degree button.ui-button {
    padding: 6px 8px;
}

.elfinder-dialog-resize button.ui-button span {
    padding: 0;
}

.elfinder-dialog-resize .elfinder-resize-jpgsize {
    font-size: 90%;
}

.ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider {
    width: 195px;
    margin: 10px 7px;
    background-color: #fafafa;
}

.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon {
    display: none;
}

.elfinder-resize-preset-container {
    box-sizing: border-box;
    border-radius: 5px;
}

/********************** COMMAND "EDIT" ****************************/
/* edit text file textarea */
.elfinder-file-edit {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 2px;
    border: 1px solid #ccc;
    box-sizing: border-box;
    resize: none;
}

.elfinder-touch .elfinder-file-edit {
    font-size: 16px;
}

/* edit area */
.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor {
    background-color: #fff;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor {
    width: 100%;
    height: 300px;
    max-height: 100%;
    text-align: center;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main {
    top: 0;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header {
    display: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap {
    height: calc(100% - 150px);
}

/* bottom margen for softkeyboard on fullscreen mode */
.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit {
    padding-bottom: 20em;
    margin-bottom: -20em;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding {
    font-size: 12px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras {
    margin: 0 1em 0 .2em;
    float: left;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality {
    padding-top: 6px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
    font-size: 12px;
    margin-top: 8px;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon {
    cursor: pointer;
}

.elfinder-edit-spinner {
    position: absolute;
    top: 50%;
    text-align: center;
    width: 100%;
    font-size: 16pt;
}

.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner,
.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text {
    float: none;
}

.elfinder-dialog-edit .elfinder-toast > div {
    width: 280px;
}
 
.elfinder-edit-onlineconvert-button {
    display: inline-block;
    width: 180px;
    min-height: 30px;
    vertical-align: top;
}
.elfinder-edit-onlineconvert-button button,
.elfinder-edit-onlineconvert-bottom-btn button {
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline {
    -webkit-appearance: none;
    border-radius: 16px;
    color: #000;
    text-align: center;
    padding: 8px;
    background-color: #eee;
    background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
    background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
}
.elfinder-edit-onlineconvert-button .elfinder-button-icon {
    margin: 0 10px;
    vertical-align: middle;
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn {
    text-align: center;
    margin: 10px 0 0;
}

.elfinder-edit-onlineconvert-link {
    margin-top: 1em;
    text-align: center;
}
.elfinder-edit-onlineconvert-link .elfinder-button-icon {
    background-image: url("../img/editor-icons.png");
    background-repeat: no-repeat;
    background-position: 0 -144px;
    margin-bottom: -3px;
}
.elfinder-edit-onlineconvert-link a {
    text-decoration: none;
}

/********************** COMMAND "SORT" ****************************/
/* for list table header sort triangle icon */
div.elfinder-cwd-wrapper-list tr.ui-state-default td {
    position: relative;
}

div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    position: absolute;
    top: 4px;
    left: 0;
    right: 0;
    margin: auto 0px auto auto;
}

.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    top: 7px;
}

.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    margin: auto auto auto 0px;
}

/********************** COMMAND "HELP" ****************************/
/* help dialog */
.elfinder-help {
    margin-bottom: .5em;
    -webkit-overflow-scrolling: touch;
}

/* fix tabs */
.elfinder-help .ui-tabs-panel {
    padding: .5em;
    overflow: auto;
    padding: 10px;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li {
    overflow: hidden;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .2em .8em;
    display: inline-block;
}

.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .5em .5em;
}

.elfinder-dialog .ui-tabs-active a {
    background: inherit;
}

.elfinder-help-shortcuts {
    height: auto;
    padding: 10px;
    margin: 0;
    box-sizing: border-box;
}

.elfinder-help-shortcut {
    white-space: nowrap;
    clear: both;
}

.elfinder-help-shortcut-pattern {
    float: left;
    width: 160px;
}

.elfinder-help-logo {
    width: 100px;
    height: 96px;
    float: left;
    margin-right: 1em;
    background: url('../img/logo.png') center center no-repeat;
}

.elfinder-help h3 {
    font-size: 1.5em;
    margin: .2em 0 .3em 0;
}

.elfinder-help-separator {
    clear: both;
    padding: .5em;
}

.elfinder-help-link {
    display: inline-block;
    margin-right: 12px;
    padding: 2px 0;
    white-space: nowrap;
}

.elfinder-rtl .elfinder-help-link {
    margin-right: 0;
    margin-left: 12px;
}

.elfinder-help .ui-priority-secondary {
    font-size: .9em;
}

.elfinder-help .ui-priority-primary {
    margin-bottom: 7px;
}

.elfinder-help-team {
    clear: both;
    text-align: right;
    border-bottom: 1px solid #ccc;
    margin: .5em 0;
    font-size: .9em;
}

.elfinder-help-team div {
    float: left;
}

.elfinder-help-license {
    font-size: .9em;
}

.elfinder-help-disabled {
    font-weight: bold;
    text-align: center;
    margin: 90px 0;
}

.elfinder-help .elfinder-dont-panic {
    display: block;
    border: 1px solid transparent;
    width: 200px;
    height: 200px;
    margin: 30px auto;
    text-decoration: none;
    text-align: center;
    position: relative;
    background: #d90004;
    -moz-box-shadow: 5px 5px 9px #111;
    -webkit-box-shadow: 5px 5px 9px #111;
    box-shadow: 5px 5px 9px #111;
    background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%);
    background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004));
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px;
    outline: none;
}

.elfinder-help .elfinder-dont-panic span {
    font-size: 3em;
    font-weight: bold;
    text-align: center;
    color: #fff;
    position: absolute;
    left: 0;
    top: 45px;
}

ul.elfinder-help-integrations ul {
    margin-bottom: 1em;
    padding: 0;
    margin: 0 1em 1em;
}

ul.elfinder-help-integrations a {
    text-decoration: none;
}

ul.elfinder-help-integrations a:hover {
    text-decoration: underline;
}

.elfinder-help-debug {
    height: 100%;
    padding: 0;
    margin: 0;
    overflow: none;
    border: none;
}

.elfinder-help-debug .ui-tabs-panel {
    padding: 0;
    margin: 0;
    overflow: auto;
}

.elfinder-help-debug fieldset {
    margin-bottom: 10px;
    border-color: #778899;
    border-radius: 10px;
}

.elfinder-help-debug legend {
    font-size: 1.2em;
    font-weight: bold;
    color: #2e8b57;
}

.elfinder-help-debug dl {
    margin: 0;
}

.elfinder-help-debug dt {
    color: #778899;
}

.elfinder-help-debug dt:before {
    content: "[";
}

.elfinder-help-debug dt:after {
    content: "]";
}

.elfinder-help-debug dd {
    margin-left: 1em;
}

.elfinder-help-debug dd span {
    /*font-size: 1.2em;*/
}

/********************** COMMAND "PREFERENCE" ****************************/
.elfinder-dialog .elfinder-preference .ui-tabs-nav {
    margin-bottom: 1px;
    height: auto;
}

/* fix tabs */
.elfinder-preference .ui-tabs-panel {
    padding: 10px 10px 0;
    overflow: auto;
    box-sizing: border-box;
    -webkit-overflow-scrolling: touch;
}

.elfinder-preference a.ui-state-hover,
.elfinder-preference label.ui-state-hover {
    border: none;
}

.elfinder-preference dl {
    width: 100%;
    display: inline-block;
    margin: .5em 0;
}

.elfinder-preference dt {
    display: block;
    width: 200px;
    clear: left;
    float: left;
    max-width: 50%;
}

.elfinder-rtl .elfinder-preference dt {
    clear: right;
    float: right;
}

.elfinder-preference dd {
    margin-bottom: 1em;
}

.elfinder-preference dt label {
    cursor: pointer;
}

.elfinder-preference dd label,
.elfinder-preference dd input[type=checkbox] {
    white-space: nowrap;
    display: inline-block;
    cursor: pointer;
}

.elfinder-preference dt.elfinder-preference-checkboxes {
    width: 100%;
    max-width: none;
}

.elfinder-preference dd.elfinder-preference-checkboxes {
    padding-top: 3ex;
}

.elfinder-preference select {
    max-width: 100%;
}

.elfinder-preference dd.elfinder-preference-iconSize .ui-slider {
    width: 50%;
    max-width: 100px;
    display: inline-block;
    margin: 0 10px;
}

.elfinder-preference button {
    margin: 0 16px;
}

.elfinder-preference button + button {
    margin: 0 -10px;
}

.elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball {
    display: none;
}

.elfinder-preference-theme fieldset {
    margin-bottom: 10px;
}

.elfinder-preference-theme legend a {
    font-size: 1.8em;
    text-decoration: none;
    cursor: pointer;
}

.elfinder-preference-theme dt {
    width: 20%;
    word-break: break-all;
}

.elfinder-preference-theme dt:after {
    content: " :";
}

.elfinder-preference-theme dd {
    margin-inline-start: 20%;
}

.elfinder-preference img.elfinder-preference-theme-image {
    display: block;
    margin-left: auto;
    margin-right: auto;
    max-width: 90%;
    max-height: 200px;
    cursor: pointer;
}

.elfinder-preference-theme-btn {
    text-align: center;
}

.elfinder-preference-theme button.elfinder-preference-theme-default {
    display: inline;
    margin: 0 10px;
    font-size: 8pt;
}

/********************** COMMAND "INFO" ****************************/
.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before {
    right: 33px;
    left: auto;
}

.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "UPLOAD" ****************************/
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    position: absolute;
    bottom: 2px;
    width: 16px;
    height: 16px;
    padding: 10px;
    border: none;
    overflow: hidden;
    cursor: pointer;
}

.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    left: 2px;
}

.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    right: 2px;
}

/********************** COMMAND "RM" ****************************/
.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before {
    left: 38px;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before {
    right: 86px;
    left: auto;
}

.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "RENAME" ****************************/
.elfinder-rename-batch div {
    margin: 5px 8px;
}

.elfinder-rename-batch .elfinder-rename-batch-name input {
    width: 100%;
    font-size: 1.6em;
}

.elfinder-rename-batch-type {
    text-align: center;
}

.elfinder-rename-batch .elfinder-rename-batch-type label {
    margin: 2px;
    font-size: .9em;
}

.elfinder-rename-batch-preview {
    padding: 0 8px;
    font-size: 1.1em;
    min-height: 4ex;
}


/* File: /css/common.css */
/*********************************************/
/*            COMMON ELFINDER STUFFS         */
/*********************************************/

/* for old jQuery UI */
.ui-front {
    z-index: 100;
}

/* style reset */
div.elfinder *,
div.elfinder :after,
div.elfinder :before {
    box-sizing: content-box;
}

div.elfinder fieldset {
    display: block;
    margin-inline-start: 2px;
    margin-inline-end: 2px;
    padding-block-start: 0.35em;
    padding-inline-start: 0.75em;
    padding-inline-end: 0.75em;
    padding-block-end: 0.625em;
    min-inline-size: min-content;
    border-width: 2px;
    border-style: groove;
    border-color: threedface;
    border-image: initial;
}

div.elfinder legend {
    display: block;
    padding-inline-start: 2px;
    padding-inline-end: 2px;
    border-width: initial;
    border-style: none;
    border-color: initial;
    border-image: initial;
    width: auto;
    margin-bottom: 0;
}

/* base container */
div.elfinder {
    padding: 0;
    position: relative;
    display: block;
    visibility: visible;
    font-size: 18px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

/* prevent auto zoom on iOS */
.elfinder-ios input,
.elfinder-ios select,
.elfinder-ios textarea {
    font-size: 16px !important;
}

/* full screen mode */
.elfinder.elfinder-fullscreen > .ui-resizable-handle {
    display: none;
}

.elfinder-font-mono {
    line-height: 2ex;
}

/* in lazy execution status */
.elfinder.elfinder-processing * {
    cursor: progress !important
}

.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after {
    position: absolute;
    top: 0;
    width: 100%;
    height: 3px;
    content: '';
    left: 0;
    background-image: url(../img/progress.gif);
    opacity: .6;
    pointer-events: none;
}

/* for disable select of Touch devices */
.elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]),
.elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    /*-webkit-touch-callout:none;*/
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder .overflow-scrolling-touch {
    -webkit-overflow-scrolling: touch;
}

/* right to left enviroment */
.elfinder-rtl {
    text-align: right;
    direction: rtl;
}

/* nav and cwd container */
.elfinder-workzone {
    padding: 0;
    position: relative;
    overflow: hidden;
}

/* dir/file permissions and symlink markers */
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
    position: absolute;
    width: 16px;
    height: 16px;
    background-image: url(../img/toolbar.png);
    background-repeat: no-repeat;
    background-position: 0 -528px;
}

.elfinder-symlink {
}

/* noaccess */
.elfinder-na .elfinder-perms {
    background-position: 0 -96px;
}

/* read only */
.elfinder-ro .elfinder-perms {
    background-position: 0 -64px;
}

/* write only */
.elfinder-wo .elfinder-perms {
    background-position: 0 -80px;
}

/* volume type group */
.elfinder-group .elfinder-perms {
    background-position: 0 0px;
}

/* locked */
.elfinder-lock {
    background-position: 0 -656px;
}

/* drag helper */
.elfinder-drag-helper {
    top: 0px;
    left: 0px;
    width: 70px;
    height: 60px;
    padding: 0 0 0 25px;
    z-index: 100000;
    will-change: left, top;
}

.elfinder-drag-helper.html5-native {
    position: absolute;
    top: -1000px;
    left: -1000px;
}

/* drag helper status icon (default no-drop) */
.elfinder-drag-helper-icon-status {
    position: absolute;
    width: 16px;
    height: 16px;
    left: 42px;
    top: 60px;
    background: url('../img/toolbar.png') 0 -96px no-repeat;
    display: block;
}

/* show "up-arrow" icon for move item */
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
    background-position: 0 -720px;
}

/* show "plus" icon when ctrl/shift pressed */
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
    background-position: 0 -544px;
}

/* files num in drag helper */
.elfinder-drag-num {
    display: inline-box;
    position: absolute;
    top: 0;
    left: 0;
    width: auto;
    height: 14px;
    text-align: center;
    padding: 1px 3px 1px 3px;

    font-weight: bold;
    color: #fff;
    background-color: red;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* icon in drag helper */
.elfinder-drag-helper .elfinder-cwd-icon {
    margin: 0 0 0 -24px;
    float: left;
}

/* transparent overlay */
.elfinder-overlay {
    position: absolute;
    opacity: .2;
    filter: Alpha(Opacity=20);
}

/* panels under/below cwd (for search field etc) */
.elfinder .elfinder-panel {
    position: relative;
    background-image: none;
    padding: 7px 12px;
}

/* for html5 drag and drop */
[draggable=true] {
    -khtml-user-drag: element;
}

/* for place holder to content editable elements */
.elfinder [contentEditable=true]:empty:not(:focus):before {
    content: attr(data-ph);
}

/* bottom tray */
.elfinder div.elfinder-bottomtray {
    position: fixed;
    bottom: 0;
    max-width: 100%;
    opacity: .8;
}

.elfinder div.elfinder-bottomtray > div {
    top: initial;
    right: initial;
    left: initial;
}

.elfinder.elfinder-ltr div.elfinder-bottomtray {
    left: 0;
}

.elfinder.elfinder-rtl div.elfinder-bottomtray {
    right: 0;
}

/* tooltip */
.elfinder-ui-tooltip,
.elfinder .elfinder-ui-tooltip {
    font-size: 14px;
    padding: 2px 4px;
}

/* progressbar */
.elfinder-ui-progressbar {
    pointer-events: none;
    position: absolute;
    width: 0;
    height: 2px;
    top: 0px;
    border-radius: 2px;
    filter: blur(1px);
}

.elfinder-ltr .elfinder-ui-progressbar {
    left: 0;
}

.elfinder-rtl .elfinder-ui-progressbar {
    right: 0;
}
/* File: /css/contextmenu.css */
/* menu and submenu */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
    position: absolute;
    border: 1px solid #aaa;
    background: #fff;
    color: #555;
    padding: 4px 0;
    top: 0;
    left: 0;
}

/* submenu */
.elfinder .elfinder-contextmenu-sub {
    top: 5px;
}

/* submenu in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub {
    margin-left: -5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub {
    margin-right: -5px;
}

/* menu item */
.elfinder .elfinder-contextmenu-header {
    margin-top: -4px;
    padding: 0 .5em .2ex;
    border: none;
    text-align: center;
}

.elfinder .elfinder-contextmenu-header span {
    font-weight: normal;
    font-size: 0.8em;
    font-weight: bolder;
}

.elfinder .elfinder-contextmenu-item {
    position: relative;
    display: block;
    padding: 4px 30px;
    text-decoration: none;
    white-space: nowrap;
    cursor: default;
}

.elfinder .elfinder-contextmenu-item.ui-state-active {
    border: none;
}

.elfinder .elfinder-contextmenu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: auto;
    right: auto;
    top: 50%;
    margin-top: -8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon {
    left: 2px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon {
    right: 2px;
}

.elfinder-touch .elfinder-contextmenu-item {
    padding: 12px 38px;
}

/* root icon of each volume */
.elfinder-navbar-root-local.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-size: contain;
}

.elfinder-navbar-root-trash.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-size: contain;
}

.elfinder-navbar-root-ftp.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-size: contain;
}

.elfinder-navbar-root-sql.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-size: contain;
}

.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-size: contain;
}

.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-box.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-size: contain;
}

.elfinder-navbar-root-zip.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-size: contain;
}

.elfinder-navbar-root-network.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-size: contain;
}

/* text in item */
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span {
    display: block;
}

/* submenu item in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item {
    padding-left: 12px;
    padding-right: 12px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item {
    text-align: left;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item {
    text-align: right;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 28px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 28px;
}

.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 36px;
}

.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 36px;
}

/* command/submenu icon */
.elfinder .elfinder-contextmenu-extra-icon,
.elfinder .elfinder-contextmenu-arrow,
.elfinder .elfinder-contextmenu-icon {
    position: absolute;
    top: 50%;
    margin-top: -8px;
    overflow: hidden;
}

.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-icon {
    transform-origin: center center;
}

/* command icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon {
    left: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon {
    left: 8px;
}

/* arrow icon */
.elfinder .elfinder-contextmenu-arrow {
    width: 16px;
    height: 16px;
    background: url('../img/arrows-normal.png') 5px 4px no-repeat;
}

/* arrow icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow {
    right: 5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow {
    left: 5px;
    background-position: 0 -10px;
}

/* command extra icon's <a>, <span> tag */
.elfinder .elfinder-contextmenu-extra-icon a,
.elfinder .elfinder-contextmenu-extra-icon span {
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0;
    color: transparent !important;
    text-decoration: none;
    cursor: pointer;
}

/* disable ui border/bg image on hover */
.elfinder .elfinder-contextmenu .ui-state-hover {
    border: 0 solid;
    background-image: none;
}

/* separator */
.elfinder .elfinder-contextmenu-separator {
    height: 0px;
    border-top: 1px solid #ccc;
    margin: 0 1px;
}

/* for CSS style priority to ui-state-disabled - "background-image: none" */
.elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled {
    background-image: url('../img/toolbar.png');
}

/* File: /css/cwd.css */
/******************************************************************/
/*                     CURRENT DIRECTORY STYLES                   */
/******************************************************************/
/* cwd container to avoid selectable on scrollbar */
.elfinder-cwd-wrapper {
    overflow: auto;
    position: relative;
    padding: 2px;
    margin: 0;
}

.elfinder-cwd-wrapper-list {
    padding: 0;
}

/* container */
.elfinder-cwd {
    position: absolute;
    top: 0;
    cursor: default;
    padding: 0;
    margin: 0;
    -ms-touch-action: auto;
    touch-action: auto;
    min-width: 100%;
}

.elfinder-ltr .elfinder-cwd {
    left: 0;
}

.elfinder-rtl .elfinder-cwd {
    right: 0;
}

.elfinder-cwd.elfinder-table-header-sticky {
    position: -webkit-sticky;
    position: -ms-sticky;
    position: sticky;
    top: 0;
    left: auto;
    right: auto;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: -ms-max-content;
    width: max-content;
    height: 0;
    overflow: visible;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid;
    padding-top: 0;
}

.elfinder-cwd.elfinder-table-header-sticky td {
    display: inline-block;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid transparent;
}

/* fixed table header container */
.elfinder-cwd-fixheader .elfinder-cwd {
    position: relative;
}

/* container active on dropenter */
.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

.elfinder-cwd-wrapper-empty .elfinder-cwd:after {
    display: block;
    position: absolute;
    height: auto;
    width: 90%;
    width: calc(100% - 20px);
    position: absolute;
    top: 50%;
    left: 50%;
    -ms-transform: translateY(-50%) translateX(-50%);
    -webkit-transform: translateY(-50%) translateX(-50%);
    transform: translateY(-50%) translateX(-50%);
    line-height: 1.5em;
    text-align: center;
    white-space: pre-wrap;
    opacity: 0.6;
    filter: Alpha(Opacity=60);
    font-weight: bold;
}

.elfinder-cwd-file .elfinder-cwd-select {
    position: absolute;
    top: 0px;
    left: 0px;
    background-color: transparent;
    opacity: .4;
    filter: Alpha(Opacity=40);
}

.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select {
    width: 30px;
    height: 30px;
}

.elfinder-cwd-file.ui-selected .elfinder-cwd-select {
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select {
    left: auto;
    right: 0px;
}

.elfinder .elfinder-cwd-selectall {
    position: absolute;
    width: 30px;
    height: 30px;
    top: 0px;
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall {
    display: none;
}

/************************** ICONS VIEW ********************************/

.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall {
    text-align: right;
    right: 18px;
    left: auto;
}

.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 18px;
}

.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    right: 0px;
}

.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    left: 0px;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover {
    background-color: transparent;
}

/* file container */
.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 90px;
    padding-bottom: 2px;
    cursor: default;
    border: none;
    position: relative;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
    border: none;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: left;
    margin: 0 3px 2px 0;
}

.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: right;
    margin: 0 0 5px 3px;
}

/* remove ui hover class border */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover {
    border: 0 solid;
}

/* icon wrapper to create selected highlight around icon */
.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 52px;
    height: 52px;
    margin: 1px auto 1px auto;
    padding: 2px;
    position: relative;
}

/*** Custom Icon Size size1 - size3 ***/
/* type badge */
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before {
    top: 3px;
    display: block;
}

/* size1 */
.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 112px;
}

.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 74px;
    height: 74px;
}

.elfinder-cwd-size1 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(1.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(1.5);
    transform-origin: top center;
    transform: scale(1.5);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.35) translate(-4px, 15%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.35) translate(-4px, 15%);
    transform-origin: top left;
    transform: scale(1.35) translate(-4px, 15%);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1) translate(10px, -5px);
    -webkit-transform: scale(1) translate(10px, -5px);
    transform: scale(1) translate(10px, -5px);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 72px;
    height: 72px;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
}

/* size2 */
.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 140px;
    height: 134px;
}

.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 98px;
    height: 98px;
}

.elfinder-cwd-size2 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(2);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(2);
    transform-origin: top center;
    transform: scale(2);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.8) translate(-5px, 18%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.8) translate(-5px, 18%);
    transform-origin: top left;
    transform: scale(1.8) translate(-5px, 18%);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.1) translate(0px, 10px);
    -webkit-transform: scale(1.1) translate(0px, 10px);
    transform: scale(1.1) translate(0px, 10px);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 96px;
    height: 96px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* size3 */
.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 174px;
    height: 158px;
}

.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 122px;
    height: 122px;
}

.elfinder-cwd-size3 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(2.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(2.5);
    transform-origin: top center;
    transform: scale(2.5);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(2.25) translate(-6px, 20%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(2.25) translate(-6px, 20%);
    transform-origin: top left;
    transform: scale(2.25) translate(-6px, 20%);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.2) translate(-9px, 22px);
    -webkit-transform: scale(1.2) translate(-9px, 22px);
    transform: scale(1.2) translate(-9px, 22px);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 120px;
    height: 120px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
}

/* file name place */
.elfinder-cwd-view-icons .elfinder-cwd-filename {
    text-align: center;
    max-height: 2.4em;
    line-height: 1.2em;
    white-space: pre-line;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    margin: 3px 1px 0 1px;
    padding: 1px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
    /* for webkit CSS3 */
    word-break: break-word;
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* permissions/symlink markers */
.elfinder-cwd-view-icons .elfinder-perms {
    bottom: 4px;
    right: 2px;
}

.elfinder-cwd-view-icons .elfinder-lock {
    top: -3px;
    right: -2px;
}

.elfinder-cwd-view-icons .elfinder-symlink {
    bottom: 6px;
    left: 0px;
}

/* icon/thumbnail */
.elfinder-cwd-icon {
    display: block;
    width: 48px;
    height: 48px;
    margin: 0 auto;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-position: 0 0;
    background-repeat: no-repeat;
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}

/* volume icon of root in folder */
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-network .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

/* type badge in "icons" view */
.elfinder-cwd-icon:before {
    content: none;
    position: absolute;
    left: 0px;
    top: 5px;
    min-width: 20px;
    max-width: 84px;
    text-align: center;
    padding: 0px 4px 1px;
    border-radius: 4px;
    font-family: Verdana;
    font-size: 10px;
    line-height: 1.3em;
    -webkit-transform: scale(0.9);
    -moz-transform: scale(0.9);
    -ms-transform: scale(0.9);
    -o-transform: scale(0.9);
    transform: scale(0.9);
}

.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    left: -10px;
}

/* addtional type badge name */
.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before {
    content: 'ts'
}

.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before {
    content: 'dash'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before {
    content: 'hls'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before {
    content: 'c++'
}

/* thumbnail image */
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    background-position: center center;
    background-repeat: no-repeat;
    -moz-background-size: contain;
    background-size: contain;
}

/* thumbnail self */
.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself {
    -moz-background-size: cover;
    background-size: cover;
}

/* thumbnail crop*/
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    -moz-background-size: cover;
    background-size: cover;
}

.elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: ' ';
}

.elfinder-cwd-bgurl:after {
    position: relative;
    display: inline-block;
    top: 36px;
    left: -38px;
    width: 48px;
    height: 48px;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-repeat: no-repeat;
    background-size: auto !important;
    opacity: .8;
    filter: Alpha(Opacity=60);
    -webkit-transform-origin: 54px -24px;
    -webkit-transform: scale(.6);
    -moz-transform-origin: 54px -24px;
    -moz-transform: scale(.6);
    -ms-transform-origin: 54px -24px;
    -ms-transform: scale(.6);
    -o-transform-origin: 54px -24px;
    -o-transform: scale(.6);
    transform-origin: 54px -24px;
    transform: scale(.6);
}

/* thumbnail image and draging icon */
.elfinder-cwd-icon.elfinder-cwd-icon-drag {
    width: 48px;
    height: 48px;
}

/* thumbnail image and draging icon overlay none */
.elfinder-cwd-icon.elfinder-cwd-icon-drag:before,
.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,
.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,
.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after {
    content: none;
}

/* "opened folder" icon on dragover */
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 0 -100px;
}

.elfinder-cwd .elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

/* mimetypes icons */
.elfinder-cwd-icon-directory {
    background-position: 0 -50px;
}

.elfinder-cwd-icon-application:after,
.elfinder-cwd-icon-application {
    background-position: 0 -150px;
}

.elfinder-cwd-icon-text:after,
.elfinder-cwd-icon-text {
    background-position: 0 -1350px;
}

.elfinder-cwd-icon-plain:after,
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty:after,
.elfinder-cwd-icon-x-empty {
    background-position: 0 -200px;
}

.elfinder-cwd-icon-image:after,
.elfinder-cwd-icon-vnd-adobe-photoshop:after,
.elfinder-cwd-icon-image,
.elfinder-cwd-icon-vnd-adobe-photoshop {
    background-position: 0 -250px;
}

.elfinder-cwd-icon-postscript:after,
.elfinder-cwd-icon-postscript {
    background-position: 0 -1550px;
}

.elfinder-cwd-icon-audio:after,
.elfinder-cwd-icon-audio {
    background-position: 0 -300px;
}

.elfinder-cwd-icon-video:after,
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
    background-position: 0 -350px;
}

.elfinder-cwd-icon-rtf:after,
.elfinder-cwd-icon-rtfd:after,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
    background-position: 0 -400px;
}

.elfinder-cwd-icon-pdf:after,
.elfinder-cwd-icon-pdf {
    background-position: 0 -450px;
}

.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-ms-excel:after,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after {
    background-position: 0 -1450px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after {
    background-position: 0 -1700px
}

.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after {
    background-position: 0 -1400px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after {
    background-position: 0 -1650px
}

.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-msword:after,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after {
    background-position: 0 -1500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:after {
    background-position: 0 -1750px
}

.elfinder-cwd-icon-vnd-ms-office,
.elfinder-cwd-icon-vnd-ms-office:after {
    background-position: 0 -500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,
.elfinder-cwd-icon-vnd-openofficeorg-extension,
.elfinder-cwd-icon-vnd-openofficeorg-extension:after {
    background-position: 0 -1600px
}

.elfinder-cwd-icon-html:after,
.elfinder-cwd-icon-html {
    background-position: 0 -550px;
}

.elfinder-cwd-icon-css:after,
.elfinder-cwd-icon-css {
    background-position: 0 -600px;
}

.elfinder-cwd-icon-javascript:after,
.elfinder-cwd-icon-x-javascript:after,
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
    background-position: 0 -650px;
}

.elfinder-cwd-icon-x-perl:after,
.elfinder-cwd-icon-x-perl {
    background-position: 0 -700px;
}

.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
    background-position: 0 -750px;
}

.elfinder-cwd-icon-x-ruby:after,
.elfinder-cwd-icon-x-ruby {
    background-position: 0 -800px;
}

.elfinder-cwd-icon-x-sh:after,
.elfinder-cwd-icon-x-shellscript:after,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
    background-position: 0 -850px;
}

.elfinder-cwd-icon-x-c:after,
.elfinder-cwd-icon-x-csrc:after,
.elfinder-cwd-icon-x-chdr:after,
.elfinder-cwd-icon-x-c--:after,
.elfinder-cwd-icon-x-c--src:after,
.elfinder-cwd-icon-x-c--hdr:after,
.elfinder-cwd-icon-x-java:after,
.elfinder-cwd-icon-x-java-source:after,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
    background-position: 0 -900px;
}

.elfinder-cwd-icon-x-php:after,
.elfinder-cwd-icon-x-php {
    background-position: 0 -950px;
}

.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
    background-position: 0 -1000px;
}

.elfinder-cwd-icon-zip:after,
.elfinder-cwd-icon-x-zip:after,
.elfinder-cwd-icon-x-xz:after,
.elfinder-cwd-icon-x-7z-compressed:after,
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed {
    background-position: 0 -1050px;
}

.elfinder-cwd-icon-x-gzip:after,
.elfinder-cwd-icon-x-tar:after,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar {
    background-position: 0 -1100px;
}

.elfinder-cwd-icon-x-bzip:after,
.elfinder-cwd-icon-x-bzip2:after,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2 {
    background-position: 0 -1150px;
}

.elfinder-cwd-icon-x-rar:after,
.elfinder-cwd-icon-x-rar-compressed:after,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
    background-position: 0 -1200px;
}

.elfinder-cwd-icon-x-shockwave-flash:after,
.elfinder-cwd-icon-x-shockwave-flash {
    background-position: 0 -1250px;
}

.elfinder-cwd-icon-group {
    background-position: 0 -1300px;
}

/* textfield inside icon */
.elfinder-cwd-filename input {
    width: 100%;
    border: none;
    margin: 0;
    padding: 0;
}

.elfinder-cwd-view-icons input {
    text-align: center;
}

.elfinder-cwd-view-icons textarea {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
    text-align: center;
    overflow: hidden;
    resize: none;
}

.elfinder-cwd-view-icons {
    text-align: center;
}

/************************************  LIST VIEW ************************************/

/*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/

.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after {
    display: none;
}

.elfinder-cwd table {
    width: 100%;
    border-collapse: separate;
    border: 0 solid;
    margin: 0 0 10px 0;
    border-spacing: 0;
    box-sizing: padding-box;
    padding: 2px;
    position: relative;
}

.elfinder-cwd table td {
    /* fix conflict with Bootstrap CSS */
    box-sizing: content-box;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader {
    position: absolute;
    overflow: hidden;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    content: '';
    position: absolute;
    width: 100%;
    top: 0;
    height: 3px;
    background-color: white;
}

.elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    background-color: #8cafed;
}

.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table {
    table-layout: fixed;
}

.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader {
    position: relative;
}

.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 0px;
    padding-top: 3px;
}

.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: right;
    right: 0px;
    left: auto;
    padding-top: 3px;
}

.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall {
    padding-top: 4px;
}

.elfinder .elfinder-cwd table thead tr {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
}

.elfinder .elfinder-cwd table thead td {
    padding: 4px 14px;
}

.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 14px 4px 22px;
}

.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 22px 4px 14px;
}

.elfinder-touch .elfinder-cwd table thead td,
.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding-top: 8px;
    padding-bottom: 8px;
}

.elfinder .elfinder-cwd table thead td.ui-state-active {
    background: #ebf1f6;
    background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb));
    background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0);
}

.elfinder .elfinder-cwd table td {
    padding: 0 12px;
    white-space: pre;
    overflow: hidden;
    text-align: right;
    cursor: default;
    border: 0 solid;
}

.elfinder .elfinder-cwd table tbody td:first-child {
    position: relative
}

.elfinder .elfinder-cwd table td div {
    box-sizing: content-box;
}

tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 3px;
}

.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select {
    width: 40px;
}

.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 10px;
}

.elfinder-touch .elfinder-cwd tr td {
    padding: 10px 12px;
}

.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td {
    padding: 13px 12px;
}

.elfinder-ltr .elfinder-cwd table td {
    text-align: right;
}

.elfinder-ltr .elfinder-cwd table td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td:first-child {
    text-align: right;
}

.elfinder-odd-row {
    background: #eee;
}

/* filename container */
.elfinder-cwd-view-list .elfinder-cwd-file-wrapper {
    width: 97%;
    position: relative;
}

/* filename container in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-right: 8px;
}

.elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-top: 4px;
    padding-bottom: 4px;
    display: inline-block;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-left: 23px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-right: 23px;
}

/* premissions/symlink marker */
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-symlink {
    margin-top: -6px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-cwd-view-list .elfinder-perms {
    bottom: -4px;
}

.elfinder-cwd-view-list .elfinder-lock {
    top: 0px;
}

.elfinder-cwd-view-list .elfinder-symlink {
    bottom: -4px;
}

/* markers in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms {
    left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms {
    right: -8px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock {
    left: 10px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock {
    right: -10px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink {
    left: -7px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink {
    right: 7px;
}

/* file icon */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url(../img/icons-small.png);
}

/* icon in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon {
    left: 0;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon {
    right: 0;
}

/* type badge, thumbnail image overlay */
.elfinder-cwd-view-list .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-cwd-icon:after {
    content: none;
}

/* table header resize handle */
.elfinder-cwd-view-list thead td .ui-resizable-handle {
    height: 100%;
    top: 6px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle {
    top: -4px;
    margin: 10px;
}

.elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -7px;
}

.elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -7px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -16px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -16px;
}

/* empty message */
.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after {
    margin-top: 0;
}

/* overlay message board */
.elfinder-cwd-message-board {
    position: absolute;
    position: -webkit-sticky;
    position: sticky;
    width: 100%;
    height: calc(100% - 0.01px); /* for Firefox scroll problem */
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    background-color: transparent;
}

/* overlay message board for trash */
.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board {
    background-image: url(../img/trashmesh.png);
}

.elfinder-cwd-message-board .elfinder-cwd-trash {
    position: absolute;
    bottom: 0;
    font-size: 30px;
    width: 100%;
    text-align: right;
    display: none;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash {
    font-size: 20px;
}

.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash {
    display: block;
    opacity: .3;
}

/* overlay message board for expires */
.elfinder-cwd-message-board .elfinder-cwd-expires {
    position: absolute;
    bottom: 0;
    font-size: 24px;
    width: 100%;
    text-align: right;
    opacity: .25;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires {
    font-size: 20px;
}

/* File: /css/dialog.css */
/*********************************************/
/*                DIALOGS STYLES             */
/*********************************************/

/* common dialogs class */
.std42-dialog {
    padding: 0;
    position: absolute;
    left: auto;
    right: auto;
    box-sizing: border-box;
}

.std42-dialog.elfinder-dialog-minimized {
    overFlow: hidden;
    position: relative;
    float: left;
    width: auto;
    cursor: pointer;
}

.elfinder-rtl .std42-dialog.elfinder-dialog-minimized {
    float: right;
}

.std42-dialog input {
    border: 1px solid;
}

/* titlebar */
.std42-dialog .ui-dialog-titlebar {
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    font-weight: normal;
    padding: .2em 1em;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: 0 .5em;
    height: 20px;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: .3em .5em;
}

.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar {
    cursor: default;
}

.std42-dialog .ui-dialog-titlebar .ui-widget-header {
    border: none;
    cursor: pointer;
}

.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    display: inherit;
    word-break: break-all;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    display: list-item;
    display: -moz-inline-box;
    white-space: nowrap;
    word-break: normal;
    overflow: hidden;
    word-wrap: normal;
    overflow-wrap: normal;
    max-width: -webkit-calc(100% - 24px);
    max-width: -moz-calc(100% - 24px);
    max-width: calc(100% - 24px);
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    padding-top: .15em;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    max-width: -webkit-calc(100% - 36px);
    max-width: -moz-calc(100% - 36px);
    max-width: calc(100% - 36px);
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    position: relative;
    float: left;
    top: 10px;
    left: -10px;
    right: 10px;
    width: 20px;
    height: 20px;
    padding: 1px;
    margin: -10px 1px 0 1px;
    background-color: transparent;
    background-image: none;
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    -moz-transform: scale(1.2);
    zoom: 1.2;
    padding-left: 6px;
    padding-right: 6px;
    height: 24px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right {
    float: right;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
    left: 10px;
    right: -10px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    width: 17px;
    height: 17px;
    border-width: 1px;
    opacity: .7;
    filter: Alpha(Opacity=70);
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: .5;
    filter: Alpha(Opacity=50);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select {
    display: none;
}

.elfinder-spinner {
    width: 14px;
    height: 14px;
    background: url("../img/spinner-mini.gif") center center no-repeat;
    margin: 0 5px;
    display: inline-block;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-spinner,
.elfinder-ltr .elfinder-spinner-text {
    float: left;
}

.elfinder-rtl .elfinder-spinner,
.elfinder-rtl .elfinder-spinner-text  {
    float: right;
}



/* resize handle for touch devices */
.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se {
    width: 12px;
    height: 12px;
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
    right: -7px;
    bottom: -7px;
    margin: 3px 7px 7px 3px;
    background-position: -64px -224px;
}

.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar {
    text-align: right;
}

/* content */
.std42-dialog .ui-dialog-content {
    padding: .3em .5em;
}

.elfinder .std42-dialog .ui-dialog-content,
.elfinder .std42-dialog .ui-dialog-content * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}

.elfinder .std42-dialog .ui-dialog-content label {
    border: none;
}

/* buttons */
.std42-dialog .ui-dialog-buttonpane {
    border: 0 solid;
    margin: 0;
    padding: .5em;
    text-align: right;
}

.elfinder-rtl .std42-dialog .ui-dialog-buttonpane {
    text-align: left;
}

.std42-dialog .ui-dialog-buttonpane button {
    margin: .2em 0 0 .4em;
    padding: .2em;
    outline: 0px solid;
}

.std42-dialog .ui-dialog-buttonpane button span {
    padding: 2px 9px;
}

.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
    padding: 2px;
}

.elfinder-dialog .ui-resizable-e,
.elfinder-dialog .ui-resizable-s {
    width: 0;
    height: 0;
}

.std42-dialog .ui-button input {
    cursor: pointer;
}

.std42-dialog select {
    border: 1px solid #ccc;
}

/* error/notify/confirm dialogs icon */
.elfinder-dialog-icon {
    position: absolute;
    width: 32px;
    height: 32px;
    left: 10px;
    top: 50%;
    margin-top: -15px;
    background: url("../img/dialogs.png") 0 0 no-repeat;
}

.elfinder-rtl .elfinder-dialog-icon {
    left: auto;
    right: 10px;
}

/*********************** ERROR DIALOG **************************/

.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 56px;
    min-height: 35px;
}

.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,
.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 0;
    padding-right: 56px;
}

.elfinder-dialog-error .elfinder-err-var {
    word-break: break-all;
}

/*********************** NOTIFY DIALOG **************************/

.elfinder-dialog-notify {
    top : 36px;
    width : 280px;
}

.elfinder-ltr .elfinder-dialog-notify {
    right : 12px;
}

.elfinder-rtl .elfinder-dialog-notify {
    left : 12px;
}

.elfinder-dialog-notify .ui-dialog-titlebar {
    height: 5px;
    overflow: hidden;
}

.elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar {
    height: 10px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    top: 2px;
}

.elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    top: 4px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    left: -18px;
    right: 18px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
    left: 18px;
    right: -18px;
}

.ui-dialog-titlebar .elfinder-ui-progressbar {
    position: absolute;
    top: 17px;
}

.elfinder-touch .ui-dialog-titlebar .elfinder-ui-progressbar {
    top: 26px;
}

.elfinder-dialog-notify.elfinder-titlebar-button-hide .ui-dialog-titlebar-close {
    display: none;
}

.elfinder-dialog-notify.elfinder-dialog-minimized.elfinder-titlebar-button-hide .ui-dialog-titlebar span.elfinder-dialog-title {
    max-width: initial;
}

.elfinder-dialog-notify .ui-dialog-content {
    padding: 0;
}

/* one notification container */
.elfinder-notify {
    border-bottom: 1px solid #ccc;
    position: relative;
    padding: .5em;

    text-align: center;
    overflow: hidden;
}

.elfinder-ltr .elfinder-notify {
    padding-left: 36px;
}

.elfinder-rtl .elfinder-notify {
    padding-right: 36px;
}

.elfinder-notify:last-child {
    border: 0 solid;
}

/* progressbar */
.elfinder-notify-progressbar {
    width: 180px;
    height: 8px;
    border: 1px solid #aaa;
    background: #f5f5f5;
    margin: 5px auto;
    overflow: hidden;
}

.elfinder-notify-progress {
    width: 100%;
    height: 8px;
    background: url(../img/progress.gif) center center repeat-x;
}

.elfinder-notify-progressbar, .elfinder-notify-progress {
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
}

.elfinder-notify-cancel {
    position: relative;
    top: -18px;
    right: calc(-50% + 15px);
}

.elfinder-notify-cancel .ui-icon-close {
    background-position: -80px -128px;
    width: 18px;
    height: 18px;
    border-radius: 9px;
    border: none;
    background-position: -80px -128px;
    cursor: pointer;
}

/* icons */
.elfinder-dialog-icon-open,
.elfinder-dialog-icon-readdir,
.elfinder-dialog-icon-file {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-reload {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-mkdir {
    background-position: 0 -64px;
}

.elfinder-dialog-icon-mkfile {
    background-position: 0 -96px;
}

.elfinder-dialog-icon-copy,
.elfinder-dialog-icon-prepare,
.elfinder-dialog-icon-move {
    background-position: 0 -128px;
}

.elfinder-dialog-icon-upload {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-chunkmerge {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-rm {
    background-position: 0 -192px;
}

.elfinder-dialog-icon-download {
    background-position: 0 -260px;
}

.elfinder-dialog-icon-save {
    background-position: 0 -295px;
}

.elfinder-dialog-icon-rename,
.elfinder-dialog-icon-chkcontent {
    background-position: 0 -330px;
}

.elfinder-dialog-icon-zipdl,
.elfinder-dialog-icon-archive,
.elfinder-dialog-icon-extract {
    background-position: 0 -365px;
}

.elfinder-dialog-icon-search {
    background-position: 0 -402px;
}

.elfinder-dialog-icon-resize,
.elfinder-dialog-icon-loadimg,
.elfinder-dialog-icon-netmount,
.elfinder-dialog-icon-netunmount,
.elfinder-dialog-icon-chmod,
.elfinder-dialog-icon-preupload,
.elfinder-dialog-icon-url,
.elfinder-dialog-icon-dim {
    background-position: 0 -434px;
}

/*********************** CONFIRM DIALOG **************************/

.elfinder-dialog-confirm-applyall,
.elfinder-dialog-confirm-encoding {
    padding: 0 1em;
    margin: 0;
}

.elfinder-ltr .elfinder-dialog-confirm-applyall,
.elfinder-ltr .elfinder-dialog-confirm-encoding {
    text-align: left;
}

.elfinder-rtl .elfinder-dialog-confirm-applyall,
.elfinder-rtl .elfinder-dialog-confirm-encoding {
    text-align: right;
}

.elfinder-dialog-confirm .elfinder-dialog-icon {
    background-position: 0 -32px;
}

.elfinder-dialog-confirm .ui-dialog-buttonset {
    width: auto;
}

/*********************** FILE INFO DIALOG **************************/

.elfinder-info-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-info-title strong {
    display: block;
    padding: .3em 0 .5em 0;
}

.elfinder-info-tb {
    min-width: 200px;
    border: 0 solid;
    margin: 1em .2em 1em .2em;
    width: 100%;
}

.elfinder-info-tb td {
    white-space: pre-wrap;
    padding: 2px;
}

.elfinder-info-tb td.elfinder-info-label {
    white-space: nowrap;
}

.elfinder-info-tb td.elfinder-info-hash {
    display: inline-block;
    word-break: break-all;
    max-width: 32ch;
}

.elfinder-ltr .elfinder-info-tb tr td:first-child {
    text-align: right;
}

.elfinder-ltr .elfinder-info-tb span {
    float: left;
}

.elfinder-rtl .elfinder-info-tb tr td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-info-tb span {
    float: right;
}

.elfinder-info-tb a {
    outline: none;
    text-decoration: underline;
}

.elfinder-info-tb a:hover {
    text-decoration: none;
}

.elfinder-netmount-tb {
    margin: 0 auto;
}

.elfinder-netmount-tb select,
.elfinder-netmount-tb .elfinder-button-icon {
    cursor: pointer;
}

button.elfinder-info-button {
    margin: -3.5px 0;
    cursor: pointer;
}

/*********************** UPLOAD DIALOG **************************/

.elfinder-upload-dropbox {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    padding: 0.5em;
    border: 3px dashed #aaa;
    width: 9999px;
    height: 80px;
    overflow: hidden;
    word-break: keep-all;
}

.elfinder-upload-dropbox.ui-state-hover {
    background: #dfdfdf;
    border: 3px dashed #555;
}

.elfinder-upload-dialog-or {
    margin: .3em 0;
    text-align: center;
}

.elfinder-upload-dialog-wrapper {
    text-align: center;
}

.elfinder-upload-dialog-wrapper .ui-button {
    position: relative;
    overflow: hidden;
}

.elfinder-upload-dialog-wrapper .ui-button form {
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
    opacity: 0;
    filter: Alpha(Opacity=0);
}

.elfinder-upload-dialog-wrapper .ui-button form input {
    padding: 50px 0 0;
    font-size: 3em;
    width: 100%;
}

/* dialog for elFinder itself */
.dialogelfinder .dialogelfinder-drag {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
    font-weight: normal;
    padding: 2px 12px;
    cursor: move;
    position: relative;
    text-align: left;
}

.elfinder-rtl .dialogelfinder-drag {
    text-align: right;
}

.dialogelfinder-drag-close {
    position: absolute;
    top: 50%;
    margin-top: -8px;
}

.elfinder-ltr .dialogelfinder-drag-close {
    right: 12px;
}

.elfinder-rtl .dialogelfinder-drag-close {
    left: 12px;
}

/*********************** RM CONFIRM **************************/
.elfinder-rm-title {
    margin-bottom: .5ex;
}

.elfinder-rm-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-rm-title strong {
    display: block;
    /*word-wrap: break-word;*/
    white-space: pre-wrap;
    word-break: normal;
    overflow: hidden;
    text-overflow: ellipsis;
}

.elfinder-rm-title + br {
    display: none;
}

/* File: /css/fonts.css */
.dialogelfinder .dialogelfinder-drag,
.elfinder-place-drag .elfinder-navbar-dir,
.elfinder-quicklook-preview-text-wrapper,
.elfinder-info-tb {
    font-size: .9em;
}

.std42-dialog .ui-dialog-titlebar {
    font-size: .82em;
}

.elfinder-button-search input {
    font-size: .8em;
}

.std42-dialog .ui-dialog-buttonpane, .elfinder-toast {
    font-size: .76em;
}

.elfinder-contextmenu .elfinder-contextmenu-item span,
.std42-dialog .ui-dialog-content,
.elfinder .elfinder-navbar,
.elfinder-quicklook-info-data,
.elfinder-button-menu-item {
    font-size: .72em;
}

.elfinder-cwd-view-icons .elfinder-cwd-filename,
.elfinder-cwd-view-list td,
.elfinder-quicklook-title,
.elfinder-statusbar div {
    font-size: .7em;
}

.elfinder-upload-dropbox, .elfinder-upload-dialog-or {
    font-size: 1.2em;
}

.elfinder-font-mono {
    font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace;
    font-size: 1.1em;
}

.elfinder-drag-num {
    font-size: 12px;
}

.elfinder-quicklook-title {
    font-weight: normal;
}

/* File: /css/navbar.css */
/*********************************************/
/*              NAVIGATION PANEL             */
/*********************************************/

/* container */
.elfinder .elfinder-navbar {
    /*box-sizing: border-box;*/
    width: 230px;
    padding: 3px 5px;
    background-image: none;
    border-top: 0 solid;
    border-bottom: 0 solid;
    overflow: auto;
    position: relative;
}

.elfinder .elfinder-navdock {
    box-sizing: border-box;
    width: 230px;
    height: auto;
    position: absolute;
    bottom: 0;
    overflow: auto;
}

.elfinder-navdock .ui-resizable-n {
    top: 0;
    height: 20px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar {
    float: left;
    border-left: 0 solid;
}

.elfinder-rtl .elfinder-navbar {
    float: right;
    border-right: 0 solid;
}

.elfinder-ltr .ui-resizable-e {
    margin-left: 10px;
}

/* folders tree container */
.elfinder-tree {
    display: table;
    width: 100%;
    margin: 0 0 .5em 0;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

/* one folder wrapper */
.elfinder-navbar-wrapper, .elfinder-place-wrapper {
}

/* folder */
.elfinder-navbar-dir {
    position: relative;
    display: block;
    white-space: nowrap;
    padding: 3px 12px;
    margin: 0;
    outline: 0px solid;
    border: 1px solid transparent;
    cursor: default;
}

.elfinder-touch .elfinder-navbar-dir {
    padding: 12px 12px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-dir {
    padding-left: 35px;
}

.elfinder-rtl .elfinder-navbar-dir {
    padding-right: 35px;
}

/* arrow before icon */
.elfinder-navbar-arrow {
    width: 12px;
    height: 14px;
    position: absolute;
    display: none;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/arrows-normal.png");
    background-repeat: no-repeat;
    /*	border:1px solid #111;*/
}

.elfinder-ltr .elfinder-navbar-arrow {
    left: 0;
}

.elfinder-rtl .elfinder-navbar-arrow {
    right: 0;
}

.elfinder-touch .elfinder-navbar-arrow {
    -moz-transform-origin: top left;
    -moz-transform: scale(1.4);
    zoom: 1.4;
    margin-bottom: 7px;
}

.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow {
    left: -3px;
    margin-right: 20px;
}

.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow {
    right: -3px;
    margin-left: 20px;
}

.ui-state-active .elfinder-navbar-arrow {
    background-image: url("../img/arrows-active.png");
}

/* collapsed/expanded arrow view */
.elfinder-navbar-collapsed .elfinder-navbar-arrow {
    display: block;
}

.elfinder-subtree-chksubdir .elfinder-navbar-arrow {
    opacity: .25;
    filter: Alpha(Opacity=25);
}

/* arrow ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 4px;
}

.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 -10px;
}

.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow {
    background-position: 0 -21px;
}

/* folder icon */
.elfinder-navbar-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/toolbar.png");
    background-repeat: no-repeat;
    background-position: 0 -16px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-icon {
    left: 14px;
}

.elfinder-rtl .elfinder-navbar-icon {
    right: 14px;
}

/* places icon */
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon {
    background-position: 0 -704px;
}

/* root folder */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-position: 0 0;
    background-size: contain;
}

/* root icon of each volume "\9" for IE8 trick */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
}

.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
}

.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
}

.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
}

.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
}

.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
}

.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
}

.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
}

/* icon in active/hove/dropactive state */
.ui-state-active .elfinder-navbar-icon,
.elfinder-droppable-active .elfinder-navbar-icon,
.ui-state-hover .elfinder-navbar-icon {
    background-position: 0 -32px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-subtree {
    margin-left: 12px;
}

.elfinder-rtl .elfinder-navbar-subtree {
    margin-right: 12px;
}

/* spinner */
.elfinder-tree .elfinder-spinner {
    position: absolute;
    top: 50%;
    margin: -7px 0 0;
}

/* spinner ltr/rtl enviroment */
.elfinder-ltr .elfinder-tree .elfinder-spinner {
    left: 0;
    margin-left: -2px;
}

.elfinder-rtl .elfinder-tree .elfinder-spinner {
    right: 0;
    margin-right: -2px;
}

/* marker */
.elfinder-navbar .elfinder-perms,
.elfinder-navbar .elfinder-lock,
.elfinder-navbar .elfinder-symlink {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

/* permissions marker */
.elfinder-navbar .elfinder-perms {
    bottom: -1px;
    margin-top: -8px;
}

/* locked marker */
.elfinder-navbar .elfinder-lock {
    top: -2px;
}

/* permissions/symlink markers ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar .elfinder-perms {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-perms {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-lock {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-lock {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-symlink {
    left: 8px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-symlink {
    right: 8px;
    transform: scale(0.8);
}

/* navbar input */
.elfinder-navbar input {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
}

/* resizable */
.elfinder-navbar .ui-resizable-handle {
    width: 12px;
    background: transparent url('../img/resize.png') center center no-repeat;
}

.elfinder-nav-handle-icon {
    position: absolute;
    top: 50%;
    margin: -8px 2px 0 2px;
    opacity: .5;
    filter: Alpha(Opacity=50);
}

/* pager button */
.elfinder-navbar-pager {
    width: 100%;
    box-sizing: border-box;
    padding-top: 3px;
    padding-bottom: 3px;
}

.elfinder-touch .elfinder-navbar-pager {
    padding-top: 10px;
    padding-bottom: 10px;
}

.elfinder-places {
    border: none;
    margin: 0;
    padding: 0;
}

.elfinder-places.elfinder-droppable-active {
    /*border:1px solid #8cafed;*/
}

/* navbar swipe handle */
.elfinder-navbar-swipe-handle {
    position: absolute;
    top: 0px;
    height: 100%;
    width: 50px;
    pointer-events: none;
}

.elfinder-ltr .elfinder-navbar-swipe-handle {
    left: 0px;
    background: linear-gradient(to right,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

.elfinder-rtl .elfinder-navbar-swipe-handle {
    right: 0px;
    background: linear-gradient(to left,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

/* File: /css/places.css */
/*********************************************/
/*               PLACES STYLES               */
/*********************************************/
/* root extra icon */
.elfinder-navbar-root .elfinder-places-root-icon {
    position: absolute;
    top: 50%;
    margin-top: -9px;
    cursor: pointer;
}

.elfinder-ltr .elfinder-places-root-icon {
    right: 10px;
}

.elfinder-rtl .elfinder-places-root-icon {
    left: 10px;
}

.elfinder-navbar-expanded .elfinder-places-root-icon {
    display: block;
}

/* dragging helper base */
.elfinder-place-drag {
    font-size: 0.8em;
}

/* File: /css/quicklook.css */
/* quicklook window */
.elfinder-quicklook {
    position: absolute;
    background: url("../img/quicklook-bg.png");
    overflow: hidden;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    border-radius: 7px;
    padding: 20px 0 40px 0;
}

.elfinder-navdock .elfinder-quicklook {
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    border-radius: 0;
    font-size: 90%;
    overflow: auto;
}

.elfinder-quicklook.elfinder-touch {
    padding: 30px 0 40px 0;
}

.elfinder-quicklook .ui-resizable-se {
    width: 14px;
    height: 14px;
    right: 5px;
    bottom: 3px;
    background: url("../img/toolbar.png") 0 -496px no-repeat;
}

.elfinder-quicklook.elfinder-touch .ui-resizable-se {
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
}

/* quicklook fullscreen window */
.elfinder-quicklook.elfinder-quicklook-fullscreen {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: 0;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 0;
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    -webkit-background-clip: padding-box;
    padding: 0;
    background: #000;
    display: block;
}

/* hide titlebar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,
.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle {
    display: none;
}

/* hide preview border in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-preview {
    border: 0 solid;
}

/*.elfinder-quicklook-fullscreen iframe {
	height: 100%;
}*/

.elfinder-quicklook-cover {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
}

.elfinder-quicklook-cover.elfinder-quicklook-coverbg {
    /* background need to catch mouse event over browser plugin (eg PDF preview) */
    background-color: #fff;
    opacity: 0.000001;
    filter: Alpha(Opacity=0.0001);
}

/* quicklook titlebar */
.elfinder-quicklook-titlebar {
    text-align: center;
    background: #777;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 20px;
    -moz-border-radius-topleft: 7px;
    -webkit-border-top-left-radius: 7px;
    border-top-left-radius: 7px;
    -moz-border-radius-topright: 7px;
    -webkit-border-top-right-radius: 7px;
    border-top-right-radius: 7px;
    border: none;
    line-height: 1.2;
}

.elfinder-navdock .elfinder-quicklook-titlebar {
    -moz-border-radius-topleft: 0;
    -webkit-border-top-left-radius: 0;
    border-top-left-radius: 0;
    -moz-border-radius-topright: 0;
    -webkit-border-top-right-radius: 0;
    border-top-right-radius: 0;
    cursor: default;
}

.elfinder-touch .elfinder-quicklook-titlebar {
    height: 30px;
}

/* window title */
.elfinder-quicklook-title {
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
}

.elfinder-touch .elfinder-quicklook-title {
    padding: 8px 0;
}

/* icon "close" in titlebar */
.elfinder-quicklook-titlebar-icon {
    position: absolute;
    left: 4px;
    top: 50%;
    margin-top: -8px;
    height: 16px;
    border: none;
}
.elfinder-touch .elfinder-quicklook-titlebar-icon {
    height: 22px;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    position: relative;
    margin: -9px 3px 0px 0px;
    cursor: pointer;
    border-radius: 10px;
    border: 1px solid;
    opacity: .7;
    filter: Alpha(Opacity=70);
}

.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick {
    padding-left: 1px;
}

.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-top: -5px;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right {
    left: auto;
    right: 4px;
    direction: rtl;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin: -9px 0px 0px 3px;
}

.elfinder-touch .elfinder-quicklook-titlebar .ui-icon {
    -moz-transform-origin: center center;
    -moz-transform: scale(1.2);
    zoom: 1.2;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-right: 10px;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin-left: 10px;
}

/* main part of quicklook window */
.elfinder-quicklook-preview {
    overflow: hidden;
    position: relative;
    border: 0 solid;
    border-left: 1px solid transparent;
    border-right: 1px solid transparent;
    height: 100%;
}

.elfinder-navdock .elfinder-quicklook-preview {
    border-left: 0;
    border-right: 0;
}

.elfinder-quicklook-preview.elfinder-overflow-auto {
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* wrapper for file info/icon */
.elfinder-quicklook-info-wrapper {
    display: table;
    position: absolute;
    width: 100%;
    height: 100%;
    height: calc(100% - 80px);
    left: 0;
    top: 20px;
}

.elfinder-navdock .elfinder-quicklook-info-wrapper {
    height: calc(100% - 20px);
}

/* file info */
.elfinder-quicklook-info {
    display: table-cell;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-quicklook-info {
    padding: 0 12px 0 112px;
}

.elfinder-rtl .elfinder-quicklook-info {
    padding: 0 112px 0 12px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 0 0 80px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 80px 0 0;
}

/* file name in info */
.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child {
    color: #fff;
    font-weight: bold;
    padding-bottom: .5em;
}

/* other data in info */
.elfinder-quicklook-info-data {
    clear: both;
    padding-bottom: .2em;
    color: #fff;
}

.elfinder-quicklook-info-progress {
    width: 0;
    height: 4px;
    border-radius: 2px;
}

/* file icon */
.elfinder-quicklook .elfinder-cwd-icon {
    position: absolute;
    left: 32px;
    top: 50%;
    margin-top: -20px;
}

.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    left: 16px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon {
    left: auto;
    right: 32px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    right: 6px;
}

.elfinder-quicklook .elfinder-cwd-icon:before {
    top: -10px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before {
    left: -20px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before {
    left: -14px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -42px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -12px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before {
    left: auto;
    right: 40px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after {
    left: auto;
    right: 42px;
}

/* image in preview */
.elfinder-quicklook-preview > img,
.elfinder-quicklook-preview > div > canvas {
    display: block;
    margin: auto;
}

/* navigation bar on quicklook window bottom */
.elfinder-quicklook-navbar {
    position: absolute;
    left: 50%;
    bottom: 4px;
    width: 140px;
    height: 32px;
    padding: 0px;
    margin-left: -70px;
    border: 1px solid transparent;
    border-radius: 19px;
    -moz-border-radius: 19px;
    -webkit-border-radius: 19px;
}

/* navigation bar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
    width: 188px;
    margin-left: -94px;
    padding: 5px;
    border: 1px solid #eee;
    background: #000;
    opacity: 0.4;
    filter: Alpha(Opacity=40);
}

/* show close icon in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator {
    display: inline;
}

/* icons in navbar */
.elfinder-quicklook-navbar-icon {
    width: 32px;
    height: 32px;
    margin: 0 7px;
    float: left;
    background: url("../img/quicklook-icons.png") 0 0 no-repeat;

}

/* fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen {
    background-position: 0 -64px;
}

/* exit fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen-off {
    background-position: 0 -96px;
}

/* prev file icon */
.elfinder-quicklook-navbar-icon-prev {
    background-position: 0 0;
}

/* next file icon */
.elfinder-quicklook-navbar-icon-next {
    background-position: 0 -32px;
}

/* close icon */
.elfinder-quicklook-navbar-icon-close {
    background-position: 0 -128px;
    display: none;
}

/* icons separator */
.elfinder-quicklook-navbar-separator {
    width: 1px;
    height: 32px;
    float: left;
    border-left: 1px solid #fff;
    display: none;
}

/* text encoding selector */
.elfinder-quicklook-encoding {
    height: 40px;
}
.elfinder-quicklook-encoding > select {
    color: #fff;
    background: #000;
    border: 0;
    font-size: 12px;
    max-width: 100px;
    display: inline-block;
    position: relative;
    top: 6px;
    left: 5px;
}
.elfinder-navdock .elfinder-quicklook .elfinder-quicklook-encoding {
    display: none;
}


/* text files preview wrapper */
.elfinder-quicklook-preview-text-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* archive files preview wrapper */
.elfinder-quicklook-preview-archive-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    font-size: 90%;
    overflow: auto;
    -webkit-overflow-scrolling: touch
}

/* archive files preview header */
.elfinder-quicklook-preview-archive-wrapper strong {
    padding: 0 5px;
}

/* text preview */
pre.elfinder-quicklook-preview-text,
pre.elfinder-quicklook-preview-text.prettyprint {
    width: auto;
    height: auto;
    margin: 0;
    padding: 3px 9px;
    border: none;
    overflow: visible;
    -o-tab-size: 4;
    -moz-tab-size: 4;
    tab-size: 4;
}

.elfinder-quicklook-preview-charsleft hr {
    border: none;
    border-top: dashed 1px;
}

.elfinder-quicklook-preview-charsleft span {
    font-size: 90%;
    font-style: italic;
    cursor: pointer;
}

/* html/pdf preview */
.elfinder-quicklook-preview-html,
.elfinder-quicklook-preview-pdf,
.elfinder-quicklook-preview-iframe {
    width: 100%;
    height: 100%;
    background: #fff;
    margin: 0;
    border: none;
    display: block;
}

/* swf preview container */
.elfinder-quicklook-preview-flash {
    width: 100%;
    height: 100%;
}

/* audio preview container */
.elfinder-quicklook-preview-audio {
    width: 100%;
    position: absolute;
    bottom: 0;
    left: 0;
}

/* audio preview using embed */
embed.elfinder-quicklook-preview-audio {
    height: 30px;
    background: transparent;
}

/* video preview container */
.elfinder-quicklook-preview-video {
    width: 100%;
    height: 100%;
}

/* video.js error message */
.elfinder-quicklook-preview .vjs-error .vjs-error-display .vjs-modal-dialog-content {
    font-size: 12pt;
    padding: 0;
    color: #fff;
}

/* allow user select */
.elfinder .elfinder-quicklook .elfinder-quicklook-info *,
.elfinder .elfinder-quicklook .elfinder-quicklook-preview * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}

/* File: /css/statusbar.css */
/******************************************************************/
/*                           STATUSBAR STYLES                     */
/******************************************************************/

/* statusbar container */
.elfinder-statusbar {
    display: flex;
    justify-content: space-between;
    cursor: default;
    text-align: center;
    font-weight: normal;
    padding: .2em .5em;
    border-right: 0 solid transparent;
    border-bottom: 0 solid transparent;
    border-left: 0 solid transparent;
}

.elfinder-statusbar:before,
.elfinder-statusbar:after {
    display: none;
}

.elfinder-statusbar span {
    vertical-align: bottom;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
}

.elfinder-statusbar span.elfinder-path-other {
    flex-shrink: 0;
    text-overflow: clip;
    -o-text-overflow: clip;
}

.elfinder-statusbar span.ui-state-hover,
.elfinder-statusbar span.ui-state-active {
    border: none;
}

.elfinder-statusbar span.elfinder-path-cwd {
    cursor: default;
}

/* path in statusbar */
.elfinder-path {
    display: flex;
    order: 1;
    flex-grow: 1;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    max-width: 30%\9;
}

.elfinder-ltr .elfinder-path {
    text-align: left;
    float: left\9;
}

.elfinder-rtl .elfinder-path {
    text-align: right;
    float: right\9;
}

/* path in workzone (case of swipe to navbar close) */
.elfinder-workzone-path {
    position: relative;
}

.elfinder-workzone-path .elfinder-path {
    position: relative;
    font-size: .75em;
    font-weight: normal;
    float: none;
    max-width: none;
    overflow: hidden;
    overflow-x: hidden;
    text-overflow: initial;
    -o-text-overflow: initial;
}

.elfinder-mobile .elfinder-workzone-path .elfinder-path {
    overflow: auto;
    overflow-x: scroll;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path {
    margin-left: 24px;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path {
    margin-right: 24px;
}

.elfinder-workzone-path .elfinder-path span {
    display: inline-block;
    padding: 5px 3px;
}

.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd {
    font-weight: bold;
}

.elfinder-workzone-path .elfinder-path span.ui-state-hover,
.elfinder-workzone-path .elfinder-path span.ui-state-active {
    border: none;
}

.elfinder-workzone-path .elfinder-path-roots {
    position: absolute;
    top: 0;
    width: 24px;
    height: 20px;
    padding: 2px;
    border: none;
    overflow: hidden;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots {
    left: 0;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots {
    right: 0;
}

/* total/selected size in statusbar */
.elfinder-stat-size {
    order: 3;
    flex-grow: 1;
    overflow: hidden;
    white-space: nowrap;
}

.elfinder-ltr .elfinder-stat-size {
    text-align: right;
    float: right\9;
}

.elfinder-rtl .elfinder-stat-size {
    text-align: left;
    float: left\9;
}

/* info of current selected item */
.elfinder-stat-selected {
    order: 2;
    margin: 0 .5em;
    white-space: nowrap;
    overflow: hidden;
}

/* File: /css/toast.css */
/*
 * CSS for Toastr
 * Copyright 2012-2015
 * Authors: John Papa, Hans FjÃ¤llemark, and Tim Ferrell.
 * All Rights Reserved.
 * Use, reproduction, distribution, and modification of this code is subject to the terms and
 * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
 *
 * ARIA Support: Greta Krafsig
 *
 * Project: https://github.com/CodeSeven/toastr
 */

.elfinder .elfinder-toast {
    position: absolute;
    top: 12px;
    right: 12px;
    max-width: 90%;
    cursor: default;
}

.elfinder .elfinder-toast > div {
    position: relative;
    pointer-events: auto;
    overflow: hidden;
    margin: 0 0 6px;
    padding: 8px 16px 8px 50px;
    -moz-border-radius: 3px 3px 3px 3px;
    -webkit-border-radius: 3px 3px 3px 3px;
    border-radius: 3px 3px 3px 3px;
    background-position: 15px center;
    background-repeat: no-repeat;
    -moz-box-shadow: 0 0 12px #999999;
    -webkit-box-shadow: 0 0 12px #999999;
    box-shadow: 0 0 12px #999999;
    color: #FFFFFF;
    opacity: 0.9;
    filter: alpha(opacity=90);
    background-color: #030303;
    text-align: center;
}

.elfinder .elfinder-toast > .toast-info {
    background-color: #2F96B4;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-error {
    background-color: #BD362F;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-success {
    background-color: #51A351;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}

.elfinder .elfinder-toast > .toast-warning {
    background-color: #F89406;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > div button.ui-button {
    background-image: none;
    margin-top: 8px;
    padding: .5em .8em;
}

.elfinder .elfinder-toast > .toast-success button.ui-button {
    background-color: green;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover {
    background-color: #add6ad;
    color: #254b25;
}

.elfinder .elfinder-toast > .toast-info button.ui-button {
    background-color: #046580;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover {
    background-color: #7DC6DB;
    color: #046580;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button {
    background-color: #dd8c1a;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button.ui-state-hover {
    background-color: #e7ae5e;
    color: #422a07;
}

/* File: /css/toolbar.css */
/*********************************************/
/*               TOOLBAR STYLES              */
/*********************************************/
/* toolbar container */
.elfinder-toolbar {
    padding: 4px 0 3px 0;
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    max-height: 50%;
    overflow-y: auto;
}

/* container for button's group */
.elfinder-buttonset {
    margin: 1px 4px;
    float: left;
    background: transparent;
    padding: 0;
    overflow: hidden;
}

/*.elfinder-buttonset:first-child { margin:0; }*/

/* button */
.elfinder .elfinder-button {
    min-width: 16px;
    height: 16px;
    margin: 0;
    padding: 4px;
    float: left;
    overflow: hidden;
    position: relative;
    border: 0 solid;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    line-height: 1;
    cursor: default;
}

.elfinder-rtl .elfinder-button {
    float: right;
}

.elfinder-touch .elfinder-button {
    min-width: 20px;
    height: 20px;
}

.elfinder .ui-icon-search {
    cursor: pointer;
}

/* separator between buttons, required for berder between button with ui color */
.elfinder-toolbar-button-separator {
    float: left;
    padding: 0;
    height: 24px;
    border-top: 0 solid;
    border-right: 0 solid;
    border-bottom: 0 solid;
    width: 0;
}

.elfinder-rtl .elfinder-toolbar-button-separator {
    float: right;
}

.elfinder-touch .elfinder-toolbar-button-separator {
    height: 28px;
}

/* change icon opacity^ not button */
.elfinder .elfinder-button.ui-state-disabled {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,
.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text {
    opacity: .4;
    filter: Alpha(Opacity=40);
}

/* rtl enviroment */
.elfinder-rtl .elfinder-buttonset {
    float: right;
}

/* icon inside button */
.elfinder-button-icon {
    width: 16px;
    height: 16px;
    /*display:block;*/
    display: inline-block;
    background: url('../img/toolbar.png') no-repeat;
}

.elfinder-button-text {
    position: relative;
    display: inline-block;
    top: -4px;
    margin: 0 2px;
    font-size: 12px;
}

.elfinder-touch .elfinder-button-icon {
    transform: scale(1.25);
    transform-origin: top left;
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon {
    transform-origin: top right;
}

.elfinder-touch .elfinder-button-text {
    transform: translate(3px, 3px);
    top: -5px;
}

.elfinder-rtl.elfinder-touch .elfinder-button-text {
    transform: translate(-3px, 3px);
}

.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon {
    transform: scale(2);
    transform-origin: 12px 8px;
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon {
    transform-origin: 4px 8px;
}

/* buttons icons */
.elfinder-button-icon-home {
    background-position: 0 0;
}

.elfinder-button-icon-back {
    background-position: 0 -112px;
}

.elfinder-button-icon-forward {
    background-position: 0 -128px;
}

.elfinder-button-icon-up {
    background-position: 0 -144px;
}

.elfinder-button-icon-dir {
    background-position: 0 -16px;
}

.elfinder-button-icon-opendir {
    background-position: 0 -32px;
}

.elfinder-button-icon-reload {
    background-position: 0 -160px;
}

.elfinder-button-icon-open {
    background-position: 0 -176px;
}

.elfinder-button-icon-mkdir {
    background-position: 0 -192px;
}

.elfinder-button-icon-mkfile {
    background-position: 0 -208px;
}

.elfinder-button-icon-rm {
    background-position: 0 -832px;
}

.elfinder-button-icon-trash {
    background-position: 0 -224px;
}

.elfinder-button-icon-restore {
    background-position: 0 -816px;
}

.elfinder-button-icon-copy {
    background-position: 0 -240px;
}

.elfinder-button-icon-cut {
    background-position: 0 -256px;
}

.elfinder-button-icon-paste {
    background-position: 0 -272px;
}

.elfinder-button-icon-getfile {
    background-position: 0 -288px;
}

.elfinder-button-icon-duplicate {
    background-position: 0 -304px;
}

.elfinder-button-icon-rename {
    background-position: 0 -320px;
}

.elfinder-button-icon-edit {
    background-position: 0 -336px;
}

.elfinder-button-icon-quicklook {
    background-position: 0 -352px;
}

.elfinder-button-icon-upload {
    background-position: 0 -368px;
}

.elfinder-button-icon-download {
    background-position: 0 -384px;
}

.elfinder-button-icon-info {
    background-position: 0 -400px;
}

.elfinder-button-icon-extract {
    background-position: 0 -416px;
}

.elfinder-button-icon-archive {
    background-position: 0 -432px;
}

.elfinder-button-icon-view {
    background-position: 0 -448px;
}

.elfinder-button-icon-view-list {
    background-position: 0 -464px;
}

.elfinder-button-icon-help {
    background-position: 0 -480px;
}

.elfinder-button-icon-resize {
    background-position: 0 -512px;
}

.elfinder-button-icon-link {
    background-position: 0 -528px;
}

.elfinder-button-icon-search {
    background-position: 0 -561px;
}

.elfinder-button-icon-sort {
    background-position: 0 -577px;
}

.elfinder-button-icon-rotate-r {
    background-position: 0 -625px;
}

.elfinder-button-icon-rotate-l {
    background-position: 0 -641px;
}

.elfinder-button-icon-netmount {
    background-position: 0 -688px;
}

.elfinder-button-icon-netunmount {
    background-position: 0 -96px;
}

.elfinder-button-icon-places {
    background-position: 0 -704px;
}

.elfinder-button-icon-chmod {
    background-position: 0 -48px;
}

.elfinder-button-icon-accept {
    background-position: 0 -736px;
}

.elfinder-button-icon-menu {
    background-position: 0 -752px;
}

.elfinder-button-icon-colwidth {
    background-position: 0 -768px;
}

.elfinder-button-icon-fullscreen {
    background-position: 0 -784px;
}

.elfinder-button-icon-unfullscreen {
    background-position: 0 -800px;
}

.elfinder-button-icon-empty {
    background-position: 0 -848px;
}

.elfinder-button-icon-undo {
    background-position: 0 -864px;
}

.elfinder-button-icon-redo {
    background-position: 0 -880px;
}

.elfinder-button-icon-preference {
    background-position: 0 -896px;
}

.elfinder-button-icon-mkdirin {
    background-position: 0 -912px;
}

.elfinder-button-icon-selectall {
    background-position: 0 -928px;
}

.elfinder-button-icon-selectnone {
    background-position: 0 -944px;
}

.elfinder-button-icon-selectinvert {
    background-position: 0 -960px;
}

.elfinder-button-icon-opennew {
    background-position: 0 -976px;
}

.elfinder-button-icon-hide {
    background-position: 0 -992px;
}

.elfinder-button-icon-text {
    background-position: 0 -1008px;
}

/* button icon mirroring for rtl */
.elfinder-rtl .elfinder-button-icon-back,
.elfinder-rtl .elfinder-button-icon-forward,
.elfinder-rtl .elfinder-button-icon-getfile,
.elfinder-rtl .elfinder-button-icon-help,
.elfinder-rtl .elfinder-button-icon-redo,
.elfinder-rtl .elfinder-button-icon-rename,
.elfinder-rtl .elfinder-button-icon-search,
.elfinder-rtl .elfinder-button-icon-undo,
.elfinder-rtl .elfinder-button-icon-view-list,
.elfinder-rtl .ui-icon-search {
    -ms-transform: scale(-1, 1);
    -webkit-transform: scale(-1, 1);
    transform: scale(-1, 1);
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon-back,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-forward,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-getfile,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-help,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-redo,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-rename,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-search,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-undo,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-view-list,
.elfinder-rtl.elfinder-touch .ui-icon-search {
    -ms-transform: scale(-1.25, 1.25) translateX(16px);
    -webkit-transform: scale(-1.25, 1.25) translateX(16px);
    transform: scale(-1.25, 1.25) translateX(16px);
}

/* button with dropdown menu*/
.elfinder .elfinder-menubutton {
    overflow: visible;
}

/* button with spinner icon */
.elfinder-button-icon-spinner {
    background: url("../img/spinner-mini.gif") center center no-repeat;
}

/* menu */
.elfinder-button-menu {
    position: absolute;
    margin-top: 24px;
    padding: 3px 0;
    overflow-y: auto;
}

.elfinder-touch .elfinder-button-menu {
    margin-top: 30px;
}

/* menu item */
.elfinder-button-menu-item {
    white-space: nowrap;
    cursor: default;
    padding: 5px 19px;
    position: relative;
}

.elfinder-touch .elfinder-button-menu-item {
    padding: 12px 19px
}

/* fix hover ui class */
.elfinder-button-menu .ui-state-hover {
    border: 0 solid;
}

.elfinder-button-menu-item-separated {
    border-top: 1px solid #ccc;
}

.elfinder-button-menu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: 2px;
    top: 50%;
    margin-top: -8px;
    display: none;
}

.elfinder-button-menu-item-selected .ui-icon {
    display: block;
}

.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s {
    display: none;
}

.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n {
    display: none;
}

/* hack for upload button */
.elfinder-button form {
    position: absolute;
    top: 0;
    right: 0;
    opacity: 0;
    filter: Alpha(Opacity=0);
    cursor: pointer;
}

.elfinder .elfinder-button form input {
    background: transparent;
    cursor: default;
}

/* search "button" */
.elfinder .elfinder-button-search {
    border: 0 solid;
    background: transparent;
    padding: 0;
    margin: 1px 4px;
    height: auto;
    min-height: 26px;
    width: 70px;
    overflow: visible;
}

.elfinder .elfinder-button-search.ui-state-active {
    width: 220px;
}

/* search "pull down menu" */
.elfinder .elfinder-button-search-menu {
    font-size: 8pt;
    text-align: center;
    width: auto;
    min-width: 180px;
    position: absolute;
    top: 30px;
    padding-right: 5px;
    padding-left: 5px;
}

.elfinder-ltr .elfinder-button-search-menu {
    right: 22px;
    left: auto;
}

.elfinder-rtl .elfinder-button-search-menu {
    right: auto;
    left: 22px;
}

.elfinder-touch .elfinder-button-search-menu {
    top: 34px;
}

.elfinder .elfinder-button-search-menu div {
    margin-left: auto;
    margin-right: auto;
    margin-top: 5px;
    margin-bottom: 5px;
    display: table;
}

.elfinder .elfinder-button-search-menu div .ui-state-hover {
    border: 1px solid;
}

/* ltr/rte enviroment */
.elfinder-ltr .elfinder-button-search {
    float: right;
    margin-right: 10px;
}

.elfinder-rtl .elfinder-button-search {
    float: left;
    margin-left: 10px;
}

.elfinder-rtl .ui-controlgroup > .ui-controlgroup-item {
    float: right;
}

/* search text field */
.elfinder-button-search input[type=text] {
    box-sizing: border-box;
    width: 100%;
    height: 26px;
    padding: 0 20px;
    line-height: 22px;
    border: 0 solid;
    border: 1px solid #aaa;
    -moz-border-radius: 12px;
    -webkit-border-radius: 12px;
    border-radius: 12px;
    outline: 0px solid;
}

.elfinder-button-search input::-ms-clear {
    display: none;
}

.elfinder-touch .elfinder-button-search input {
    height: 30px;
    line-height: 28px;
}

.elfinder-rtl .elfinder-button-search input {
    direction: rtl;
}

/* icons */
.elfinder-button-search .ui-icon {
    position: absolute;
    height: 18px;
    top: 50%;
    margin: -8px 4px 0 4px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-button-search-menu .ui-checkboxradio-icon {
    display: none;
}

/* search/close icons */
.elfinder-ltr .elfinder-button-search .ui-icon-search {
    left: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-search {
    right: 0;
}

.elfinder-ltr .elfinder-button-search .ui-icon-close {
    right: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-close {
    left: 0;
}

/* toolbar swipe handle */
.elfinder-toolbar-swipe-handle {
    position: absolute;
    top: 0px;
    left: 0px;
    height: 50px;
    width: 100%;
    pointer-events: none;
    background: linear-gradient(to bottom,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 2px,
    rgba(216, 223, 230, 0.3) 5px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

                                                                                                                                                                                                             includes/File_manager/lib/css/elfinder.min.css                                                      0000644                 00000273266 15266053003 0015365 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * elFinder - file manager for web
 * Version 2.1.66 (2025-08-28)
 * http://elfinder.org
 * 
 * Copyright 2009-2025, Studio 42
 * Licensed under a 3-clauses BSD license
 */
.elfinder-resize-container{margin-top:.3em}.elfinder-resize-type{float:left;margin-bottom:.4em}.elfinder-resize-control{float:left}.elfinder-resize-control input[type=number]{border:1px solid #aaa;text-align:right;width:4.5em}.elfinder-resize-control input.elfinder-resize-bg{text-align:center;width:5em;direction:ltr}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-top:10px}.elfinder-dialog-resize .elfinder-resize-imgrotate,.elfinder-dialog-resize .elfinder-resize-pallet{cursor:pointer}.elfinder-dialog-resize .elfinder-resize-picking{cursor:crosshair}.elfinder-dialog-resize .elfinder-resize-grid8+button{padding-top:2px;padding-bottom:2px}.elfinder-resize-preview{width:400px;height:400px;padding:10px;background:#fff;border:1px solid #aaa;float:right;position:relative;overflow:hidden;text-align:left;direction:ltr}.elfinder-resize-handle,div.elfinder-cwd-wrapper-list tr.ui-state-default td{position:relative}.elfinder-resize-handle-hline,.elfinder-resize-handle-vline{position:absolute;background-image:url(../img/crop.gif)}.elfinder-resize-handle-hline{width:100%;height:1px!important;background-repeat:repeat-x}.elfinder-resize-handle-vline{width:1px!important;height:100%;background-repeat:repeat-y}.elfinder-resize-handle-hline-top{top:0;left:0}.elfinder-resize-handle-hline-bottom{bottom:0;left:0}.elfinder-resize-handle-vline-left{top:0;left:0}.elfinder-resize-handle-vline-right{top:0;right:0}.elfinder-resize-handle-point{position:absolute;width:8px;height:8px;border:1px solid #777;background:0 0}.elfinder-resize-handle-point-n{top:0;left:50%;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-e,.elfinder-resize-handle-point-ne{top:0;right:0;margin-top:-5px;margin-right:-5px}.elfinder-resize-handle-point-e{top:50%}.elfinder-resize-handle-point-se{bottom:0;right:0;margin-bottom:-5px;margin-right:-5px}.elfinder-resize-handle-point-s,.elfinder-resize-handle-point-sw{bottom:0;left:50%;margin-bottom:-5px;margin-left:-5px}.elfinder-resize-handle-point-sw{left:0}.elfinder-resize-handle-point-nw,.elfinder-resize-handle-point-w{top:50%;left:0;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-nw{top:0}.elfinder-dialog.elfinder-dialog-resize .ui-resizable-e{width:10px;height:100%}.elfinder-dialog.elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-resize-loading{position:absolute;width:200px;height:30px;top:50%;margin-top:-25px;left:50%;margin-left:-100px;text-align:center;background:url(../img/progress.gif) center bottom repeat-x}.elfinder-resize-row{margin-bottom:9px;position:relative}.elfinder-resize-label{float:left;width:80px;padding-top:3px}.elfinder-resize-checkbox-label{border:1px solid transparent}.elfinder-dialog-resize .elfinder-resize-whctrls{margin:-20px 5px 0}.elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls{float:right}.elfinder-help-team div,.elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls{float:left}.elfinder-dialog-resize .ui-resizable-e,.elfinder-dialog-resize .ui-resizable-w{height:100%;width:10px}.elfinder-dialog-resize .ui-resizable-n,.elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-dialog-resize .ui-resizable-e{margin-right:-7px}.elfinder-dialog-resize .ui-resizable-w{margin-left:-7px}.elfinder-dialog-resize .ui-resizable-s{margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-n{margin-top:-7px}.elfinder-dialog-resize .ui-resizable-ne,.elfinder-dialog-resize .ui-resizable-nw,.elfinder-dialog-resize .ui-resizable-se,.elfinder-dialog-resize .ui-resizable-sw{width:10px;height:10px}.elfinder-dialog-resize .ui-resizable-se{background:0 0;bottom:0;right:0;margin-right:-7px;margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-sw{margin-left:-7px;margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-ne{margin-right:-7px;margin-top:-7px}.elfinder-dialog-resize .ui-resizable-nw{margin-left:-7px;margin-top:-7px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-n,.elfinder-touch .elfinder-dialog-resize .ui-resizable-s{height:20px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-e,.elfinder-touch .elfinder-dialog-resize .ui-resizable-w{width:20px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-ne,.elfinder-touch .elfinder-dialog-resize .ui-resizable-nw,.elfinder-touch .elfinder-dialog-resize .ui-resizable-se,.elfinder-touch .elfinder-dialog-resize .ui-resizable-sw{width:30px;height:30px}.elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se{width:30px;height:30px;margin:0}.elfinder-dialog-resize .ui-icon-grip-solid-vertical{position:absolute;top:50%;right:0;margin-top:-8px;margin-right:-11px}.elfinder-dialog-resize .ui-icon-grip-solid-horizontal{position:absolute;left:50%;bottom:0;margin-left:-8px;margin-bottom:-11px}.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset{float:right}.elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-dialog-resize input.elfinder-resize-quality,.elfinder-mobile .elfinder-resize-control input[type=number]{width:3.5em}.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality{width:2.5em}.elfinder-dialog-resize .elfinder-resize-degree button.ui-button{padding:6px 8px}.elfinder-dialog-resize button.ui-button span{padding:0}.elfinder-dialog-resize .elfinder-resize-jpgsize{font-size:90%}.ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider{width:195px;margin:10px 7px;background-color:#fafafa}.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon{display:none}.elfinder-resize-preset-container{box-sizing:border-box;border-radius:5px}.elfinder-file-edit{width:100%;height:100%;margin:0;padding:2px;border:1px solid #ccc;box-sizing:border-box;resize:none}.elfinder-touch .elfinder-file-edit{font-size:16px}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor{background-color:#fff}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor{width:100%;height:300px;max-height:100%;text-align:center}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main{top:0}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header{display:none}.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap{height:calc(100% - 150px)}.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit{padding-bottom:20em;margin-bottom:-20em}.elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding{font-size:12px}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras{margin:0 1em 0 .2em;float:left}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality{padding-top:6px}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select{font-size:12px;}.elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon,.elfinder-edit-onlineconvert-bottom-btn button,.elfinder-edit-onlineconvert-button button,.elfinder-preference dt label{cursor:pointer}.elfinder-edit-spinner{position:absolute;top:50%;text-align:center;width:100%;font-size:16pt}.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner,.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text{float:none}.elfinder-dialog-edit .elfinder-toast>div{width:280px}.elfinder-edit-onlineconvert-button{display:inline-block;width:180px;min-height:30px;vertical-align:top}.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline{-webkit-appearance:none;border-radius:16px;color:#000;text-align:center;padding:8px;background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0%,#c4c4c4 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#c4c4c4 100%)}.elfinder-edit-onlineconvert-button .elfinder-button-icon{margin:0 10px;vertical-align:middle;cursor:pointer}.elfinder-edit-onlineconvert-bottom-btn{text-align:center;margin:10px 0 0}.elfinder-edit-onlineconvert-link{margin-top:1em;text-align:center}.elfinder-edit-onlineconvert-link .elfinder-button-icon{background-image:url(../img/editor-icons.png);background-repeat:no-repeat;background-position:0 -144px;margin-bottom:-3px}.elfinder-edit-onlineconvert-link a,ul.elfinder-help-integrations a{text-decoration:none}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{position:absolute;top:4px;left:0;right:0;margin:auto 0 auto auto}.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{top:7px}.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{margin:auto auto auto 0}.elfinder-help{margin-bottom:.5em;-webkit-overflow-scrolling:touch}.elfinder-help .ui-tabs-panel{overflow:auto;padding:10px}.elfinder-dialog .ui-tabs .ui-tabs-nav li{overflow:hidden}.elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.2em .8em;display:inline-block}.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.5em}.elfinder-dialog .ui-tabs-active a{background:inherit}.elfinder-help-shortcuts{height:auto;padding:10px;margin:0;box-sizing:border-box}.elfinder-help-shortcut{white-space:nowrap;clear:both}.elfinder-help-shortcut-pattern{float:left;width:160px}.elfinder-help-logo{width:100px;height:96px;float:left;margin-right:1em;background:url(../img/logo.png) center center no-repeat}.elfinder-help h3{font-size:1.5em;margin:.2em 0 .3em}.elfinder-help-separator{clear:both;padding:.5em}.elfinder-help-link{display:inline-block;margin-right:12px;padding:2px 0;white-space:nowrap}.elfinder-rtl .elfinder-help-link{margin-right:0;margin-left:12px}.elfinder-help .ui-priority-secondary{font-size:.9em}.elfinder-help .ui-priority-primary{margin-bottom:7px}.elfinder-help-team{clear:both;text-align:right;border-bottom:1px solid #ccc;margin:.5em 0;font-size:.9em}.elfinder-help-license{font-size:.9em}.elfinder-help-disabled{font-weight:700;text-align:center;margin:90px 0}.elfinder-help .elfinder-dont-panic{display:block;border:1px solid transparent;width:200px;height:200px;margin:30px auto;text-decoration:none;text-align:center;position:relative;background:#d90004;-moz-box-shadow:5px 5px 9px #111;-webkit-box-shadow:5px 5px 9px #111;box-shadow:5px 5px 9px #111;background:-moz-radial-gradient(80px 80px,circle farthest-corner,#d90004 35%,#960004 100%);background:-webkit-gradient(radial,80 80,60,80 80,120,from(#d90004),to(#960004));-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;outline:none}.elfinder-help .elfinder-dont-panic span{font-size:3em;font-weight:700;text-align:center;color:#fff;position:absolute;left:0;top:45px}ul.elfinder-help-integrations ul{padding:0;margin:0 1em 1em}ul.elfinder-help-integrations a:hover{text-decoration:underline}.elfinder-help-debug{height:100%;padding:0;margin:0;overflow:none;border:none}.elfinder-help-debug .ui-tabs-panel{padding:0;margin:0;overflow:auto}.elfinder-help-debug fieldset{margin-bottom:10px;border-color:#789;border-radius:10px}.elfinder-help-debug legend{font-size:1.2em;font-weight:700;color:#2e8b57}.elfinder-help-debug dl{margin:0}.elfinder-help-debug dt{color:#789}.elfinder-help-debug dt:before{content:"["}.elfinder-help-debug dt:after{content:"]"}.elfinder-help-debug dd{margin-left:1em}.elfinder-dialog .elfinder-preference .ui-tabs-nav{margin-bottom:1px;height:auto}.elfinder-preference .ui-tabs-panel{padding:10px 10px 0;overflow:auto;box-sizing:border-box;-webkit-overflow-scrolling:touch}.elfinder-preference a.ui-state-hover,.elfinder-preference label.ui-state-hover{border:none}.elfinder-preference dl{width:100%;display:inline-block;margin:.5em 0}.elfinder-preference dt{display:block;width:200px;clear:left;float:left;max-width:50%}.elfinder-rtl .elfinder-preference dt{clear:right;float:right}.elfinder-preference dd{margin-bottom:1em}.elfinder-preference dd input[type=checkbox],.elfinder-preference dd label{white-space:nowrap;display:inline-block;cursor:pointer}.elfinder-preference dt.elfinder-preference-checkboxes{width:100%;max-width:none}.elfinder-preference dd.elfinder-preference-checkboxes{padding-top:3ex}.elfinder-preference select{max-width:100%}.elfinder-preference dd.elfinder-preference-iconSize .ui-slider{width:50%;max-width:100px;display:inline-block;margin:0 10px}.elfinder-preference button{margin:0 16px}.elfinder-preference button+button{margin:0 -10px}.elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball{display:none}.elfinder-preference-theme fieldset{margin-bottom:10px}.elfinder-preference-theme legend a{font-size:1.8em;text-decoration:none;cursor:pointer}.elfinder-preference-theme dt{width:20%;word-break:break-all}.elfinder-preference-theme dt:after{content:" :"}.elfinder-preference-theme dd{margin-inline-start:20%}.elfinder-preference img.elfinder-preference-theme-image{display:block;margin-left:auto;margin-right:auto;max-width:90%;max-height:200px;cursor:pointer}.elfinder-preference-theme-btn,.elfinder-rename-batch-type{text-align:center}.elfinder-preference-theme button.elfinder-preference-theme-default{display:inline;margin:0 10px;font-size:8pt}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before{right:33px;left:auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{position:absolute;bottom:2px;width:16px;height:16px;padding:10px;border:none;overflow:hidden;cursor:pointer}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon,.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{left:2px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon,.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{right:2px}.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before{left:38px}.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before{right:86px;left:auto}.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-rename-batch div{margin:5px 8px}.elfinder-rename-batch .elfinder-rename-batch-name input{width:100%;font-size:1.6em}.elfinder-rename-batch .elfinder-rename-batch-type label{margin:2px;font-size:.9em}.elfinder-rename-batch-preview{padding:0 8px;font-size:1.1em;min-height:4ex}.ui-front{z-index:100}.elfinder .elfinder-cwd table td div,.elfinder-cwd table td,div.elfinder *,div.elfinder :after,div.elfinder :before{box-sizing:content-box}div.elfinder fieldset{display:block;margin-inline-start:2px;margin-inline-end:2px;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;min-inline-size:min-content;border-width:2px;border-style:groove;border-color:threedface;border-image:initial}div.elfinder legend{display:block;padding-inline-start:2px;padding-inline-end:2px;border-width:initial;border-style:none;border-color:initial;border-image:initial;width:auto;margin-bottom:0}div.elfinder{padding:0;position:relative;display:block;visibility:visible;font-size:18px;font-family:Verdana,Arial,Helvetica,sans-serif}.elfinder-ios input,.elfinder-ios select,.elfinder-ios textarea{font-size:16px!important}.elfinder.elfinder-fullscreen>.ui-resizable-handle{display:none}.elfinder-font-mono{line-height:2ex}.elfinder.elfinder-processing *{cursor:progress!important}.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after{position:absolute;top:0;width:100%;height:3px;content:'';left:0;background-image:url(../img/progress.gif);opacity:.6;pointer-events:none}.elfinder :not(input):not(textarea):not(select):not([contenteditable=true]),.elfinder-contextmenu :not(input):not(textarea):not(select):not([contenteditable=true]){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder .overflow-scrolling-touch{-webkit-overflow-scrolling:touch}.elfinder-rtl{text-align:right;direction:rtl}.elfinder-workzone{padding:0;position:relative;overflow:hidden}.elfinder-lock,.elfinder-perms,.elfinder-symlink{position:absolute;width:16px;height:16px;background-image:url(../img/toolbar.png);background-repeat:no-repeat}.elfinder-perms,.elfinder-symlink{background-position:0 -528px}.elfinder-na .elfinder-perms{background-position:0 -96px}.elfinder-ro .elfinder-perms{background-position:0 -64px}.elfinder-wo .elfinder-perms{background-position:0 -80px}.elfinder-group .elfinder-perms{background-position:0 0}.elfinder-lock{background-position:0 -656px}.elfinder-drag-helper{top:0;left:0;width:70px;height:60px;padding:0 0 0 25px;z-index:100000;will-change:left,top}.elfinder-drag-helper.html5-native{position:absolute;top:-1000px;left:-1000px}.elfinder-drag-helper-icon-status{position:absolute;width:16px;height:16px;left:42px;top:60px;background:url(../img/toolbar.png) 0 -96px no-repeat;display:block}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{background-position:0 -720px}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{background-position:0 -544px}.elfinder-drag-num{display:inline-box;position:absolute;top:0;left:0;width:auto;height:14px;text-align:center;padding:1px 3px;font-weight:700;color:#fff;background-color:red;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-drag-helper .elfinder-cwd-icon{margin:0 0 0 -24px;float:left}.elfinder-overlay{position:absolute;opacity:.2;filter:Alpha(Opacity=20)}.elfinder .elfinder-panel{position:relative;background-image:none;padding:7px 12px}[draggable=true]{-khtml-user-drag:element}.elfinder [contentEditable=true]:empty:not(:focus):before{content:attr(data-ph)}.elfinder div.elfinder-bottomtray{position:fixed;bottom:0;max-width:100%;opacity:.8}.elfinder div.elfinder-bottomtray>div{top:initial;right:initial;left:initial}.elfinder.elfinder-ltr div.elfinder-bottomtray{left:0}.elfinder.elfinder-rtl div.elfinder-bottomtray{right:0}.elfinder .elfinder-ui-tooltip,.elfinder-ui-tooltip{font-size:14px;padding:2px 4px}.elfinder-ui-progressbar{pointer-events:none;position:absolute;width:0;height:2px;top:0;border-radius:2px;filter:blur(1px)}.elfinder-ltr .elfinder-ui-progressbar{left:0}.elfinder-rtl .elfinder-ui-progressbar{right:0}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{position:absolute;border:1px solid #aaa;background:#fff;color:#555;padding:4px 0;top:0;left:0}.elfinder .elfinder-contextmenu-sub{top:5px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub{margin-left:-5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub{margin-right:-5px}.elfinder .elfinder-contextmenu-header{margin-top:-4px;padding:0 .5em .2ex;border:none;text-align:center}.elfinder .elfinder-contextmenu-header span{font-size:.8em;font-weight:bolder}.elfinder .elfinder-contextmenu-item{position:relative;display:block;padding:4px 30px;text-decoration:none;white-space:nowrap;cursor:default}.elfinder .elfinder-contextmenu-item.ui-state-active{border:none}.elfinder .elfinder-contextmenu-item .ui-icon{width:16px;height:16px;position:absolute;left:auto;right:auto;top:50%;margin-top:-8px}.elfinder-touch .elfinder-contextmenu-item{padding:12px 38px}.elfinder-navbar-root-local.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_local.svg);background-size:contain}.elfinder-navbar-root-trash.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_trash.svg);background-size:contain}.elfinder-navbar-root-ftp.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_ftp.svg);background-size:contain}.elfinder-navbar-root-sql.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_sql.svg);background-size:contain}.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_dropbox.svg);background-size:contain}.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_googledrive.svg);background-size:contain}.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_onedrive.svg);background-size:contain}.elfinder-navbar-root-box.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_box.svg);background-size:contain}.elfinder-navbar-root-zip.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_zip.svg);background-size:contain}.elfinder-navbar-root-network.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_network.svg);background-size:contain}.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span{display:block}.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item{padding-left:12px;padding-right:12px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item{text-align:left}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item{text-align:right}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:28px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:28px}.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:36px}.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:36px}.elfinder .elfinder-contextmenu-arrow,.elfinder .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-icon{position:absolute;top:50%;margin-top:-8px;overflow:hidden}.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-icon{transform-origin:center center}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon{left:8px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon{right:8px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon{left:8px}.elfinder .elfinder-contextmenu-arrow{width:16px;height:16px;background:url(../img/arrows-normal.png) 5px 4px no-repeat}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow{right:5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow{left:5px;background-position:0 -10px}.elfinder .elfinder-contextmenu-extra-icon a,.elfinder .elfinder-contextmenu-extra-icon span{position:relative;width:100%;height:100%;margin:0;color:transparent!important;text-decoration:none;cursor:pointer}.elfinder .elfinder-contextmenu .ui-state-hover{border:0 solid;background-image:none}.elfinder .elfinder-contextmenu-separator{height:0;border-top:1px solid #ccc;margin:0 1px}.elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled{background-image:url(../img/toolbar.png)}.elfinder-cwd-wrapper{overflow:auto;position:relative;padding:2px;margin:0}.elfinder-cwd-wrapper-list{padding:0}.elfinder-cwd{position:absolute;top:0;cursor:default;padding:0;margin:0;-ms-touch-action:auto;touch-action:auto;min-width:100%}.elfinder-ltr .elfinder-cwd{left:0}.elfinder-rtl .elfinder-cwd{right:0}.elfinder-cwd.elfinder-table-header-sticky{position:-webkit-sticky;position:-ms-sticky;position:sticky;top:0;left:auto;right:auto;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;height:0;overflow:visible}.elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid;padding-top:0}.elfinder-cwd.elfinder-table-header-sticky td{display:inline-block}.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid transparent}.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader,.elfinder-cwd-fixheader .elfinder-cwd{position:relative}.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-wrapper-empty .elfinder-cwd:after{display:block;height:auto;width:90%;width:calc(100% - 20px);position:absolute;top:50%;left:50%;-ms-transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);line-height:1.5em;text-align:center;white-space:pre-wrap;opacity:.6;filter:Alpha(Opacity=60);font-weight:700}.elfinder-cwd-file .elfinder-cwd-select{position:absolute;top:0;left:0;background-color:transparent;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select{width:30px;height:30px}.elfinder .elfinder-cwd-selectall,.elfinder-cwd-file.ui-selected .elfinder-cwd-select{opacity:.8;filter:Alpha(Opacity=80)}.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select{left:auto;right:0}.elfinder .elfinder-cwd-selectall{position:absolute;width:30px;height:30px;top:0}.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall{display:none}.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall{text-align:right;right:18px;left:auto}.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall{text-align:left;right:auto;left:18px}.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{right:0}.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{left:0}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover{background-color:transparent}.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:90px;padding-bottom:2px;cursor:default;border:none;position:relative}.elfinder .std42-dialog .ui-dialog-content label,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active{border:none}.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file{float:left;margin:0 3px 2px 0}.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file{float:right;margin:0 0 5px 3px}.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover{border:0 solid}.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:52px;height:52px;margin:1px auto;padding:2px;position:relative}.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before{top:3px;display:block}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:112px}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:74px;height:74px}.elfinder-cwd-size1 .elfinder-cwd-icon,.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform-origin:top center;-ms-transform:scale(1.5);-webkit-transform-origin:top center;-webkit-transform:scale(1.5);transform-origin:top center;transform:scale(1.5)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.35) translate(-4px,15%);-webkit-transform-origin:top left;-webkit-transform:scale(1.35) translate(-4px,15%);transform-origin:top left;transform:scale(1.35) translate(-4px,15%)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1) translate(10px,-5px);-webkit-transform:scale(1) translate(10px,-5px);transform:scale(1) translate(10px,-5px)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:72px;height:72px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file{width:140px;height:134px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:98px;height:98px}.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2);-webkit-transform:scale(2);transform:scale(2)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.8) translate(-5px,18%);-webkit-transform-origin:top left;-webkit-transform:scale(1.8) translate(-5px,18%);transform-origin:top left;transform:scale(1.8) translate(-5px,18%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.1) translate(0,10px);-webkit-transform:scale(1.1) translate(0,10px);transform:scale(1.1) translate(0,10px)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:96px;height:96px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file{width:174px;height:158px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:122px;height:122px}.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2.5);-webkit-transform:scale(2.5);transform:scale(2.5)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(2.25) translate(-6px,20%);-webkit-transform-origin:top left;-webkit-transform:scale(2.25) translate(-6px,20%);transform-origin:top left;transform:scale(2.25) translate(-6px,20%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.2) translate(-9px,22px);-webkit-transform:scale(1.2) translate(-9px,22px);transform:scale(1.2) translate(-9px,22px)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:120px;height:120px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}.elfinder-cwd-view-icons .elfinder-cwd-filename{text-align:center;max-height:2.4em;line-height:1.2em;white-space:pre-line;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;margin:3px 1px 0;padding:1px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;word-break:break-word;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.elfinder-cwd-view-icons .elfinder-perms{bottom:4px;right:2px}.elfinder-cwd-view-icons .elfinder-lock{top:-3px;right:-2px}.elfinder-cwd-view-icons .elfinder-symlink{bottom:6px;left:0}.elfinder-cwd-icon{display:block;width:48px;height:48px;margin:0 auto;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-position:0 0;background-repeat:no-repeat;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9;background-size:contain}.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-icon:before{content:none;position:absolute;left:0;top:5px;min-width:20px;max-width:84px;text-align:center;padding:0 4px 1px;border-radius:4px;font-family:Verdana;font-size:10px;line-height:1.3em;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:-10px}.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before{content:'ts'}.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before{content:'dash'}.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before{content:'hls'}.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before{content:'c++'}.elfinder-cwd-icon.elfinder-cwd-bgurl{background-position:center center;background-repeat:no-repeat}.elfinder-cwd-icon.elfinder-cwd-bgurl,.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself{-moz-background-size:cover;background-size:cover}.elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:' '}.elfinder-cwd-bgurl:after{position:relative;display:inline-block;top:36px;left:-38px;width:48px;height:48px;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-repeat:no-repeat;background-size:auto!important;opacity:.8;filter:Alpha(Opacity=60);-webkit-transform-origin:54px -24px;-webkit-transform:scale(.6);-moz-transform-origin:54px -24px;-moz-transform:scale(.6);-ms-transform-origin:54px -24px;-ms-transform:scale(.6);-o-transform-origin:54px -24px;-o-transform:scale(.6);transform-origin:54px -24px;transform:scale(.6)}.elfinder-cwd-icon.elfinder-cwd-icon-drag{width:48px;height:48px}.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after,.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:before{content:none}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd .elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application,.elfinder-cwd-icon-application:after{background-position:0 -150px}.elfinder-cwd-icon-text,.elfinder-cwd-icon-text:after{background-position:0 -1350px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-plain:after,.elfinder-cwd-icon-x-empty,.elfinder-cwd-icon-x-empty:after{background-position:0 -200px}.elfinder-cwd-icon-image,.elfinder-cwd-icon-image:after,.elfinder-cwd-icon-vnd-adobe-photoshop,.elfinder-cwd-icon-vnd-adobe-photoshop:after{background-position:0 -250px}.elfinder-cwd-icon-postscript,.elfinder-cwd-icon-postscript:after{background-position:0 -1550px}.elfinder-cwd-icon-audio,.elfinder-cwd-icon-audio:after{background-position:0 -300px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-video:after,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -350px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtf:after,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-rtfd:after{background-position:0 -400px}.elfinder-cwd-icon-pdf,.elfinder-cwd-icon-pdf:after{background-position:0 -450px}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-ms-excel:after,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after{background-position:0 -1450px}.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after{background-position:0 -1700px}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after{background-position:0 -1400px}.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after{background-position:0 -1650px}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-msword:after,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after{background-position:0 -1500px}.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text:after{background-position:0 -1750px}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-ms-office:after{background-position:0 -500px}.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openofficeorg-extension:after{background-position:0 -1600px}.elfinder-cwd-icon-html,.elfinder-cwd-icon-html:after{background-position:0 -550px}.elfinder-cwd-icon-css,.elfinder-cwd-icon-css:after{background-position:0 -600px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-javascript:after,.elfinder-cwd-icon-x-javascript,.elfinder-cwd-icon-x-javascript:after{background-position:0 -650px}.elfinder-cwd-icon-x-perl,.elfinder-cwd-icon-x-perl:after{background-position:0 -700px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -750px}.elfinder-cwd-icon-x-ruby,.elfinder-cwd-icon-x-ruby:after{background-position:0 -800px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-sh:after,.elfinder-cwd-icon-x-shellscript,.elfinder-cwd-icon-x-shellscript:after{background-position:0 -850px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--:after,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--hdr:after,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-c--src:after,.elfinder-cwd-icon-x-c:after,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-chdr:after,.elfinder-cwd-icon-x-csrc,.elfinder-cwd-icon-x-csrc:after,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source,.elfinder-cwd-icon-x-java-source:after,.elfinder-cwd-icon-x-java:after{background-position:0 -900px}.elfinder-cwd-icon-x-php,.elfinder-cwd-icon-x-php:after{background-position:0 -950px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1000px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-7z-compressed:after,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-xz:after,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-x-zip:after,.elfinder-cwd-icon-zip,.elfinder-cwd-icon-zip:after{background-position:0 -1050px}.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-gzip:after,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-tar:after{background-position:0 -1100px}.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-bzip2:after,.elfinder-cwd-icon-x-bzip:after{background-position:0 -1150px}.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-rar-compressed:after,.elfinder-cwd-icon-x-rar:after{background-position:0 -1200px}.elfinder-cwd-icon-x-shockwave-flash,.elfinder-cwd-icon-x-shockwave-flash:after{background-position:0 -1250px}.elfinder-cwd-icon-group{background-position:0 -1300px}.elfinder-cwd-filename input{width:100%;border:none;margin:0;padding:0}.elfinder-cwd-view-icons,.elfinder-cwd-view-icons input{text-align:center}.elfinder-cwd-view-icons textarea{width:100%;border:0 solid;margin:0;padding:0;text-align:center;overflow:hidden;resize:none}.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after,.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select{display:none}.elfinder-cwd table{width:100%;border-collapse:separate;border:0 solid;margin:0 0 10px;border-spacing:0;box-sizing:padding-box;padding:2px;position:relative}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader{position:absolute;overflow:hidden}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{content:'';position:absolute;width:100%;top:0;height:3px;background-color:#fff}.elfinder-droppable-active+.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{background-color:#8cafed}.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table{table-layout:fixed}.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall{text-align:left;right:auto;left:0;padding-top:3px}.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall{text-align:right;right:0;left:auto;padding-top:3px}.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall{padding-top:4px}.elfinder .elfinder-cwd table thead tr{border-left:0 solid;border-top:0 solid;border-right:0 solid}.elfinder .elfinder-cwd table thead td{padding:4px 14px}.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 14px 4px 22px}.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 22px 4px 14px}.elfinder-touch .elfinder-cwd table thead td,.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding-top:8px;padding-bottom:8px}.elfinder .elfinder-cwd table thead td.ui-state-active{background:#ebf1f6;background:-moz-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebf1f6),color-stop(50%,#abd3ee),color-stop(51%,#89c3eb),color-stop(100%,#d5ebfb));background:-webkit-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-o-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-ms-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:linear-gradient(to bottom,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0)}.elfinder .elfinder-cwd table td{padding:0 12px;white-space:pre;overflow:hidden;text-align:right;cursor:default;border:0 solid}.elfinder .elfinder-cwd table tbody td:first-child{position:relative}tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:3px}.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select{width:40px}.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:10px}.elfinder-touch .elfinder-cwd tr td{padding:10px 12px}.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td{padding:13px 12px}.elfinder-ltr .elfinder-cwd table td{text-align:right}.elfinder-ltr .elfinder-cwd table td:first-child{text-align:left}.elfinder-rtl .elfinder-cwd table td{text-align:left}.elfinder-ltr .elfinder-info-tb tr td:first-child,.elfinder-rtl .elfinder-cwd table td:first-child{text-align:right}.elfinder-odd-row{background:#eee}.elfinder-cwd-view-list .elfinder-cwd-file-wrapper{width:97%;position:relative}.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-left:8px}.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-right:8px}.elfinder-cwd-view-list .elfinder-cwd-filename{padding-top:4px;padding-bottom:4px;display:inline-block}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename{padding-left:23px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename{padding-right:23px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{margin-top:-6px;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-cwd-view-list .elfinder-perms{bottom:-4px}.elfinder-cwd-view-list .elfinder-lock{top:0}.elfinder-cwd-view-list .elfinder-symlink{bottom:-4px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms{left:8px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms{right:-8px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock{left:10px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock{right:-10px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink{left:-7px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink{right:7px}.elfinder-cwd-view-list td .elfinder-cwd-icon{width:16px;height:16px;position:absolute;top:50%;margin-top:-8px;background-image:url(../img/icons-small.png)}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon{left:0}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon{right:0}.elfinder-cwd-view-list .elfinder-cwd-icon:after,.elfinder-cwd-view-list .elfinder-cwd-icon:before{content:none}.elfinder-cwd-view-list thead td .ui-resizable-handle{height:100%;top:6px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle{top:-4px;margin:10px}.elfinder-cwd-view-list thead td .ui-resizable-e{right:-7px}.elfinder-cwd-view-list thead td .ui-resizable-w{left:-7px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e{right:-16px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w{left:-16px}.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after{margin-top:0}.elfinder-cwd-message-board{position:-webkit-sticky;position:sticky;width:100%;height:calc(100% - .01px);top:0;left:0;margin:0;padding:0;pointer-events:none;background-color:transparent}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board{background-image:url(../img/trashmesh.png)}.elfinder-cwd-message-board .elfinder-cwd-trash{position:absolute;bottom:0;font-size:30px;width:100%;text-align:right;display:none}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash{font-size:20px}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash{display:block;opacity:.3}.elfinder-cwd-message-board .elfinder-cwd-expires{position:absolute;bottom:0;font-size:24px;width:100%;text-align:right;opacity:.25}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires{font-size:20px}.std42-dialog{padding:0;position:absolute;left:auto;right:auto;box-sizing:border-box}.std42-dialog.elfinder-dialog-minimized{overFlow:hidden;position:relative;float:left;width:auto;cursor:pointer}.elfinder-rtl .std42-dialog.elfinder-dialog-minimized{float:right}.std42-dialog input{border:1px solid}.std42-dialog .ui-dialog-titlebar{border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;font-weight:400;padding:.2em 1em}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:0 .5em;height:20px}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:.3em .5em}.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar{cursor:default}.std42-dialog .ui-dialog-titlebar .ui-widget-header{border:none;cursor:pointer}.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{display:inherit;word-break:break-all}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{display:list-item;display:-moz-inline-box;white-space:nowrap;word-break:normal;overflow:hidden;word-wrap:normal;overflow-wrap:normal;max-width:-webkit-calc(100% - 24px);max-width:-moz-calc(100% - 24px);max-width:calc(100% - 24px)}.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{padding-top:.15em}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{max-width:-webkit-calc(100% - 36px);max-width:-moz-calc(100% - 36px);max-width:calc(100% - 36px)}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{position:relative;float:left;top:10px;left:-10px;right:10px;width:20px;height:20px;padding:1px;margin:-10px 1px 0;background-color:transparent;background-image:none}.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{-moz-transform:scale(1.2);zoom:1.2;padding-left:6px;padding-right:6px;height:24px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right{float:right}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{left:10px;right:-10px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{width:17px;height:17px;border-width:1px;opacity:.7;filter:Alpha(Opacity=70);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:.5;filter:Alpha(Opacity=50)}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:1;filter:Alpha(Opacity=100)}.elfinder-spinner{width:14px;height:14px;background:url(../img/spinner-mini.gif) center center no-repeat;margin:0 5px;display:inline-block;vertical-align:middle}.elfinder-ltr .elfinder-info-tb span,.elfinder-ltr .elfinder-spinner,.elfinder-ltr .elfinder-spinner-text{float:left}.elfinder-rtl .elfinder-info-tb span,.elfinder-rtl .elfinder-spinner,.elfinder-rtl .elfinder-spinner-text{float:right}.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se{width:12px;height:12px;-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5;right:-7px;bottom:-7px;margin:3px 7px 7px 3px;background-position:-64px -224px}.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar{text-align:right}.std42-dialog .ui-dialog-content{padding:.3em .5em}.elfinder .std42-dialog .ui-dialog-content,.elfinder .std42-dialog .ui-dialog-content *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.std42-dialog .ui-dialog-buttonpane{border:0 solid;margin:0;padding:.5em;text-align:right}.elfinder-rtl .std42-dialog .ui-dialog-buttonpane{text-align:left}.std42-dialog .ui-dialog-buttonpane button{margin:.2em 0 0 .4em;padding:.2em;outline:0 solid}.std42-dialog .ui-dialog-buttonpane button span{padding:2px 9px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:2px}.elfinder-dialog .ui-resizable-e,.elfinder-dialog .ui-resizable-s{width:0;height:0}.std42-dialog .ui-button input{cursor:pointer}.std42-dialog select{border:1px solid #ccc}.elfinder-dialog-icon{position:absolute;width:32px;height:32px;left:10px;top:50%;margin-top:-15px;background:url(../img/dialogs.png) 0 0 no-repeat}.elfinder-rtl .elfinder-dialog-icon{left:auto;right:10px}.elfinder-dialog-confirm .ui-dialog-content,.elfinder-dialog-error .ui-dialog-content{padding-left:56px;min-height:35px}.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content,.elfinder-rtl .elfinder-dialog-error .ui-dialog-content{padding-left:0;padding-right:56px}.elfinder-dialog-error .elfinder-err-var{word-break:break-all}.elfinder-dialog-notify{top:36px;width:280px}.elfinder-ltr .elfinder-dialog-notify{right:12px}.elfinder-rtl .elfinder-dialog-notify{left:12px}.elfinder-dialog-notify .ui-dialog-titlebar{height:5px;overflow:hidden}.elfinder.elfinder-touch>.elfinder-dialog-notify .ui-dialog-titlebar{height:10px}.elfinder>.elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button{top:2px;left:-18px;right:18px}.elfinder.elfinder-touch>.elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button{top:4px}.elfinder>.elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{left:18px;right:-18px}.ui-dialog-titlebar .elfinder-ui-progressbar{position:absolute;top:17px}.elfinder-touch .ui-dialog-titlebar .elfinder-ui-progressbar{top:26px}.elfinder-dialog-notify.elfinder-titlebar-button-hide .ui-dialog-titlebar-close,.elfinder-rm-title+br{display:none}.elfinder-dialog-notify.elfinder-dialog-minimized.elfinder-titlebar-button-hide .ui-dialog-titlebar span.elfinder-dialog-title{max-width:initial}.elfinder-dialog-notify .ui-dialog-content{padding:0}.elfinder-notify{border-bottom:1px solid #ccc;position:relative;padding:.5em;text-align:center;overflow:hidden}.elfinder-ltr .elfinder-notify{padding-left:36px}.elfinder-rtl .elfinder-notify{padding-right:36px}.elfinder-notify:last-child{border:0 solid}.elfinder-notify-progressbar{width:180px;height:8px;border:1px solid #aaa;background:#f5f5f5;margin:5px auto;overflow:hidden}.elfinder-notify-progress{width:100%;height:8px;background:url(../img/progress.gif) center center repeat-x}.elfinder-notify-progress,.elfinder-notify-progressbar{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.elfinder-notify-cancel{position:relative;top:-18px;right:calc(-50% + 15px)}.elfinder-notify-cancel .ui-icon-close{width:18px;height:18px;border-radius:9px;border:none;background-position:-80px -128px;cursor:pointer}.elfinder-dialog-icon-file,.elfinder-dialog-icon-open,.elfinder-dialog-icon-readdir,.elfinder-dialog-icon-reload{background-position:0 -225px}.elfinder-dialog-icon-mkdir{background-position:0 -64px}.elfinder-dialog-icon-mkfile{background-position:0 -96px}.elfinder-dialog-icon-copy,.elfinder-dialog-icon-move,.elfinder-dialog-icon-prepare{background-position:0 -128px}.elfinder-dialog-icon-chunkmerge,.elfinder-dialog-icon-upload{background-position:0 -160px}.elfinder-dialog-icon-rm{background-position:0 -192px}.elfinder-dialog-icon-download{background-position:0 -260px}.elfinder-dialog-icon-save{background-position:0 -295px}.elfinder-dialog-icon-chkcontent,.elfinder-dialog-icon-rename{background-position:0 -330px}.elfinder-dialog-icon-archive,.elfinder-dialog-icon-extract,.elfinder-dialog-icon-zipdl{background-position:0 -365px}.elfinder-dialog-icon-search{background-position:0 -402px}.elfinder-dialog-icon-chmod,.elfinder-dialog-icon-dim,.elfinder-dialog-icon-loadimg,.elfinder-dialog-icon-netmount,.elfinder-dialog-icon-netunmount,.elfinder-dialog-icon-preupload,.elfinder-dialog-icon-resize,.elfinder-dialog-icon-url{background-position:0 -434px}.elfinder-dialog-confirm-applyall,.elfinder-dialog-confirm-encoding{padding:0 1em;margin:0}.elfinder-ltr .elfinder-dialog-confirm-applyall,.elfinder-ltr .elfinder-dialog-confirm-encoding{text-align:left}.elfinder-rtl .elfinder-dialog-confirm-applyall,.elfinder-rtl .elfinder-dialog-confirm-encoding{text-align:right}.elfinder-dialog-confirm .elfinder-dialog-icon{background-position:0 -32px}.elfinder-dialog-confirm .ui-dialog-buttonset{width:auto}.elfinder-info-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon,.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon{float:right;margin-right:0;margin-left:1em}.elfinder-info-title strong{display:block;padding:.3em 0 .5em}.elfinder-info-tb{min-width:200px;border:0 solid;margin:1em .2em;width:100%}.elfinder-info-tb td{white-space:pre-wrap;padding:2px}.elfinder-info-tb td.elfinder-info-label{white-space:nowrap}.elfinder-info-tb td.elfinder-info-hash{display:inline-block;word-break:break-all;max-width:32ch}.elfinder-rtl .elfinder-info-tb tr td:first-child{text-align:left}.elfinder-info-tb a{outline:none;text-decoration:underline}.elfinder-info-tb a:hover{text-decoration:none}.elfinder-netmount-tb{margin:0 auto}.elfinder-netmount-tb .elfinder-button-icon,.elfinder-netmount-tb select{cursor:pointer}button.elfinder-info-button{margin:-3.5px 0;cursor:pointer}.elfinder-upload-dropbox{display:table-cell;text-align:center;vertical-align:middle;padding:.5em;border:3px dashed #aaa;width:9999px;height:80px;overflow:hidden;word-break:keep-all}.elfinder-upload-dropbox.ui-state-hover{background:#dfdfdf;border:3px dashed #555}.elfinder-upload-dialog-or{margin:.3em 0;text-align:center}.elfinder-upload-dialog-wrapper{text-align:center}.elfinder-upload-dialog-wrapper .ui-button{position:relative;overflow:hidden}.elfinder-upload-dialog-wrapper .ui-button form{position:absolute;right:0;top:0;width:100%;opacity:0;filter:Alpha(Opacity=0)}.elfinder-upload-dialog-wrapper .ui-button form input{padding:50px 0 0;font-size:3em;width:100%}.dialogelfinder .dialogelfinder-drag{border-left:0 solid;border-top:0 solid;border-right:0 solid;font-weight:400;padding:2px 12px;cursor:move;position:relative;text-align:left}.elfinder-rtl .dialogelfinder-drag{text-align:right}.dialogelfinder-drag-close{position:absolute;top:50%;margin-top:-8px}.elfinder-ltr .dialogelfinder-drag-close{right:12px}.elfinder-rtl .dialogelfinder-drag-close{left:12px}.elfinder-rm-title{margin-bottom:.5ex}.elfinder-rm-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rm-title strong{display:block;white-space:pre-wrap;word-break:normal;overflow:hidden;text-overflow:ellipsis}.dialogelfinder .dialogelfinder-drag,.elfinder-info-tb,.elfinder-place-drag .elfinder-navbar-dir,.elfinder-quicklook-preview-text-wrapper{font-size:.9em}.std42-dialog .ui-dialog-titlebar{font-size:.82em}.elfinder-button-search input{font-size:.8em}.elfinder-toast,.std42-dialog .ui-dialog-buttonpane{font-size:.76em}.elfinder .elfinder-navbar,.elfinder-button-menu-item,.elfinder-contextmenu .elfinder-contextmenu-item span,.elfinder-quicklook-info-data,.std42-dialog .ui-dialog-content{font-size:.72em}.elfinder-cwd-view-icons .elfinder-cwd-filename,.elfinder-cwd-view-list td,.elfinder-quicklook-title,.elfinder-statusbar div{font-size:.7em}.elfinder-upload-dialog-or,.elfinder-upload-dropbox{font-size:1.2em}.elfinder-font-mono{font-family:"Ricty Diminished","Myrica M",Consolas,"Courier New",Courier,Monaco,monospace;font-size:1.1em}.elfinder-drag-num{font-size:12px}.elfinder-quicklook-title{font-weight:400}.elfinder .elfinder-navbar{width:230px;padding:3px 5px;background-image:none;border-top:0 solid;border-bottom:0 solid;overflow:auto;position:relative}.elfinder .elfinder-navdock{box-sizing:border-box;width:230px;height:auto;position:absolute;bottom:0;overflow:auto}.elfinder-navdock .ui-resizable-n{top:0;height:20px}.elfinder-ltr .elfinder-navbar{float:left;border-left:0 solid}.elfinder-rtl .elfinder-navbar{float:right;border-right:0 solid}.elfinder-ltr .ui-resizable-e,.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon{margin-left:10px}.elfinder-tree{display:table;width:100%;margin:0 0 .5em;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elfinder-navbar-dir{position:relative;display:block;white-space:nowrap;padding:3px 12px;margin:0;outline:0 solid;border:1px solid transparent;cursor:default}.elfinder-touch .elfinder-navbar-dir{padding:12px}.elfinder-ltr .elfinder-navbar-dir{padding-left:35px}.elfinder-rtl .elfinder-navbar-dir{padding-right:35px}.elfinder-navbar-arrow,.elfinder-navbar-icon{position:absolute;top:50%;margin-top:-8px;background-repeat:no-repeat}.elfinder-navbar-arrow{display:none;width:12px;height:14px;background-image:url(../img/arrows-normal.png)}.elfinder-ltr .elfinder-navbar-arrow{left:0}.elfinder-rtl .elfinder-navbar-arrow{right:0}.elfinder-touch .elfinder-navbar-arrow{-moz-transform-origin:top left;-moz-transform:scale(1.4);zoom:1.4;margin-bottom:7px}.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow{left:-3px;margin-right:20px}.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow{right:-3px;margin-left:20px}.ui-state-active .elfinder-navbar-arrow{background-image:url(../img/arrows-active.png)}.elfinder-navbar-collapsed .elfinder-navbar-arrow{display:block}.elfinder-subtree-chksubdir .elfinder-navbar-arrow{opacity:.25;filter:Alpha(Opacity=25)}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 4px}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 -10px}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow{background-position:0 -21px}.elfinder-navbar-icon{width:16px;height:16px;background-image:url(../img/toolbar.png);background-position:0 -16px}.elfinder-ltr .elfinder-navbar-icon{left:14px}.elfinder-rtl .elfinder-navbar-icon{right:14px}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon{background-position:0 -704px}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-position:0 0;background-size:contain}.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9}.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9}.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9}.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9}.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9}.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9}.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9}.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.png) \9}.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9}.elfinder-droppable-active .elfinder-navbar-icon,.ui-state-active .elfinder-navbar-icon,.ui-state-hover .elfinder-navbar-icon{background-position:0 -32px}.elfinder-ltr .elfinder-navbar-subtree{margin-left:12px}.elfinder-rtl .elfinder-navbar-subtree{margin-right:12px}.elfinder-tree .elfinder-spinner{position:absolute;top:50%;margin:-7px 0 0}.elfinder-ltr .elfinder-tree .elfinder-spinner{left:0;margin-left:-2px}.elfinder-rtl .elfinder-tree .elfinder-spinner{right:0;margin-right:-2px}.elfinder-navbar .elfinder-lock,.elfinder-navbar .elfinder-perms,.elfinder-navbar .elfinder-symlink{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-navbar .elfinder-perms{bottom:-1px;margin-top:-8px}.elfinder-navbar .elfinder-lock{top:-2px}.elfinder-ltr .elfinder-navbar .elfinder-perms{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-perms{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-lock{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-lock{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-symlink{left:8px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-symlink{right:8px;transform:scale(.8)}.elfinder-navbar input{width:100%;border:0 solid;margin:0;padding:0}.elfinder-navbar .ui-resizable-handle{width:12px;background:url(../img/resize.png) center center no-repeat}.elfinder-nav-handle-icon{position:absolute;top:50%;margin:-8px 2px 0;opacity:.5;filter:Alpha(Opacity=50)}.elfinder-navbar-pager{width:100%;box-sizing:border-box;padding-top:3px;padding-bottom:3px}.elfinder-touch .elfinder-navbar-pager{padding-top:10px;padding-bottom:10px}.elfinder-places{border:none;margin:0;padding:0}.elfinder-navbar-swipe-handle{position:absolute;top:0;height:100%;width:50px;pointer-events:none}.elfinder-ltr .elfinder-navbar-swipe-handle{left:0;background:linear-gradient(to right,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-rtl .elfinder-navbar-swipe-handle{right:0;background:linear-gradient(to left,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-navbar-root .elfinder-places-root-icon{position:absolute;top:50%;margin-top:-9px;cursor:pointer}.elfinder-ltr .elfinder-places-root-icon{right:10px}.elfinder-rtl .elfinder-places-root-icon{left:10px}.elfinder-navbar-expanded .elfinder-places-root-icon{display:block}.elfinder-place-drag{font-size:.8em}.elfinder-quicklook{position:absolute;background:url(../img/quicklook-bg.png);overflow:hidden;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:20px 0 40px}.elfinder-navdock .elfinder-quicklook{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;font-size:90%;overflow:auto}.elfinder-quicklook.elfinder-touch{padding:30px 0 40px}.elfinder-quicklook .ui-resizable-se{width:14px;height:14px;right:5px;bottom:3px;background:url(../img/toolbar.png) 0 -496px no-repeat}.elfinder-quicklook.elfinder-touch .ui-resizable-se{-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5}.elfinder-quicklook.elfinder-quicklook-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;margin:0;box-sizing:border-box;width:100%;height:100%;object-fit:contain;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-background-clip:padding-box;padding:0;background:#000;display:block}.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle{display:none}.elfinder-quicklook-fullscreen .elfinder-quicklook-preview{border:0 solid}.elfinder-quicklook-cover,.elfinder-quicklook-titlebar{width:100%;height:100%;top:0;left:0;position:absolute}.elfinder-quicklook-cover.elfinder-quicklook-coverbg{background-color:#fff;opacity:.000001;filter:Alpha(Opacity=.0001)}.elfinder-quicklook-titlebar{text-align:center;background:#777;height:20px;-moz-border-radius-topleft:7px;-webkit-border-top-left-radius:7px;border-top-left-radius:7px;-moz-border-radius-topright:7px;-webkit-border-top-right-radius:7px;border-top-right-radius:7px;border:none;line-height:1.2}.elfinder-navdock .elfinder-quicklook-titlebar{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;cursor:default}.elfinder-touch .elfinder-quicklook-titlebar{height:30px}.elfinder-quicklook-title{display:inline-block;white-space:nowrap;overflow:hidden}.elfinder-touch .elfinder-quicklook-title{padding:8px 0}.elfinder-quicklook-titlebar-icon{position:absolute;left:4px;top:50%;margin-top:-8px;height:16px;border:none}.elfinder-touch .elfinder-quicklook-titlebar-icon{height:22px}.elfinder-quicklook-titlebar-icon .ui-icon{position:relative;margin:-9px 3px 0 0;cursor:pointer;border-radius:10px;border:1px solid;opacity:.7;filter:Alpha(Opacity=70)}.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick{padding-left:1px}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-top:-5px}.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right{left:auto;right:4px;direction:rtl}.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon{margin:-9px 0 0 3px}.elfinder-touch .elfinder-quicklook-titlebar .ui-icon{-moz-transform-origin:center center;-moz-transform:scale(1.2);zoom:1.2}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-right:10px}.elfinder-quicklook-preview{overflow:hidden;position:relative;border:0 solid;border-left:1px solid transparent;border-right:1px solid transparent;height:100%}.elfinder-navdock .elfinder-quicklook-preview{border-left:0;border-right:0}.elfinder-quicklook-preview.elfinder-overflow-auto{overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-info-wrapper{display:table;position:absolute;width:100%;height:100%;height:calc(100% - 80px);left:0;top:20px}.elfinder-navdock .elfinder-quicklook-info-wrapper{height:calc(100% - 20px)}.elfinder-quicklook-info{display:table-cell;vertical-align:middle}.elfinder-ltr .elfinder-quicklook-info{padding:0 12px 0 112px}.elfinder-rtl .elfinder-quicklook-info{padding:0 112px 0 12px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info{padding:0 0 0 80px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info{padding:0 80px 0 0}.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child{color:#fff;font-weight:700;padding-bottom:.5em}.elfinder-quicklook-info-data{clear:both;padding-bottom:.2em;color:#fff}.elfinder-quicklook-info-progress{width:0;height:4px;border-radius:2px}.elfinder-quicklook .elfinder-cwd-icon{position:absolute;left:32px;top:50%;margin-top:-20px}.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{left:16px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon{left:auto;right:32px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{right:6px}.elfinder-quicklook .elfinder-cwd-icon:before{top:-10px}.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before{left:-20px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before{left:-14px}.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after{left:-42px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after{left:-12px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before{left:auto;right:40px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after{left:auto;right:42px}.elfinder-quicklook-preview>div>canvas,.elfinder-quicklook-preview>img{display:block;margin:auto}.elfinder-quicklook-navbar{position:absolute;left:50%;bottom:4px;width:140px;height:32px;padding:0;margin-left:-70px;border:1px solid transparent;border-radius:19px;-moz-border-radius:19px;-webkit-border-radius:19px}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{width:188px;margin-left:-94px;padding:5px;border:1px solid #eee;background:#000;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator{display:inline}.elfinder-quicklook-navbar-icon{width:32px;height:32px;margin:0 7px;float:left;background:url(../img/quicklook-icons.png) 0 0 no-repeat}.elfinder-quicklook-navbar-icon-fullscreen{background-position:0 -64px}.elfinder-quicklook-navbar-icon-fullscreen-off{background-position:0 -96px}.elfinder-quicklook-navbar-icon-prev{background-position:0 0}.elfinder-quicklook-navbar-icon-next{background-position:0 -32px}.elfinder-quicklook-navbar-icon-close{background-position:0 -128px;display:none}.elfinder-quicklook-navbar-separator{width:1px;height:32px;float:left;border-left:1px solid #fff;display:none}.elfinder-quicklook-encoding{height:40px}.elfinder-quicklook-encoding>select{color:#fff;background:#000;border:0;font-size:12px;max-width:100px;display:inline-block;position:relative;top:6px;left:5px}.elfinder-navdock .elfinder-quicklook .elfinder-quicklook-encoding,.elfinder-statusbar:after,.elfinder-statusbar:before{display:none}.elfinder-quicklook-preview-archive-wrapper,.elfinder-quicklook-preview-text-wrapper{width:100%;height:100%;background:#fff;color:#222;overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-preview-archive-wrapper{font-size:90%}.elfinder-quicklook-preview-archive-wrapper strong{padding:0 5px}pre.elfinder-quicklook-preview-text,pre.elfinder-quicklook-preview-text.prettyprint{width:auto;height:auto;margin:0;padding:3px 9px;border:none;overflow:visible;-o-tab-size:4;-moz-tab-size:4;tab-size:4}.elfinder-quicklook-preview-charsleft hr{border:none;border-top:dashed 1px}.elfinder-quicklook-preview-charsleft span{font-size:90%;font-style:italic;cursor:pointer}.elfinder-quicklook-preview-html,.elfinder-quicklook-preview-iframe,.elfinder-quicklook-preview-pdf{width:100%;height:100%;background:#fff;margin:0;border:none;display:block}.elfinder-quicklook-preview-flash{width:100%;height:100%}.elfinder-quicklook-preview-audio{width:100%;position:absolute;bottom:0;left:0}embed.elfinder-quicklook-preview-audio{height:30px;background:0 0}.elfinder-quicklook-preview-video{width:100%;height:100%}.elfinder-quicklook-preview .vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:12pt;padding:0;color:#fff}.elfinder .elfinder-quicklook .elfinder-quicklook-info *,.elfinder .elfinder-quicklook .elfinder-quicklook-preview *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.elfinder-statusbar{display:flex;justify-content:space-between;cursor:default;text-align:center;font-weight:400;padding:.2em .5em;border-right:0 solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent}.elfinder-path,.elfinder-statusbar span{overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.elfinder-statusbar span{vertical-align:bottom}.elfinder-statusbar span.elfinder-path-other{flex-shrink:0;text-overflow:clip;-o-text-overflow:clip}.elfinder-statusbar span.ui-state-active,.elfinder-statusbar span.ui-state-hover{border:none}.elfinder-statusbar span.elfinder-path-cwd{cursor:default}.elfinder-path{display:flex;order:1;flex-grow:1;cursor:pointer;white-space:nowrap;max-width:30%\9}.elfinder-ltr .elfinder-path{text-align:left;float:left\9}.elfinder-rtl .elfinder-path{text-align:right;float:right\9}.elfinder-workzone-path{position:relative}.elfinder-workzone-path .elfinder-path{position:relative;font-size:.75em;font-weight:400;float:none;max-width:none;overflow:hidden;overflow-x:hidden;text-overflow:initial;-o-text-overflow:initial}.elfinder-mobile .elfinder-workzone-path .elfinder-path{overflow:auto;overflow-x:scroll}.elfinder-ltr .elfinder-workzone-path .elfinder-path{margin-left:24px}.elfinder-rtl .elfinder-workzone-path .elfinder-path{margin-right:24px}.elfinder-workzone-path .elfinder-path span{display:inline-block;padding:5px 3px}.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd{font-weight:700}.elfinder-workzone-path .elfinder-path span.ui-state-active,.elfinder-workzone-path .elfinder-path span.ui-state-hover{border:none}.elfinder-workzone-path .elfinder-path-roots{position:absolute;top:0;width:24px;height:20px;padding:2px;border:none;overflow:hidden}.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots{left:0}.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots{right:0}.elfinder-stat-size{order:3;flex-grow:1;overflow:hidden;white-space:nowrap}.elfinder-ltr .elfinder-stat-size{text-align:right;float:right\9}.elfinder-rtl .elfinder-stat-size{text-align:left;float:left\9}.elfinder-stat-selected{order:2;margin:0 .5em;white-space:nowrap;overflow:hidden}.elfinder .elfinder-toast{position:absolute;top:12px;right:12px;max-width:90%;cursor:default}.elfinder .elfinder-toast>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:8px 16px 8px 50px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.9;filter:alpha(opacity=90);background-color:#030303;text-align:center}.elfinder .elfinder-toast>.toast-info{background-color:#2f96b4;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-error{background-color:#bd362f;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-success{background-color:#51a351;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}.elfinder .elfinder-toast>.toast-warning{background-color:#f89406;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>div button.ui-button{background-image:none;margin-top:8px;padding:.5em .8em}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:green;color:#fff}.elfinder .elfinder-toast>.toast-success button.ui-button.ui-state-hover{background-color:#add6ad;color:#254b25}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#046580;color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button.ui-state-hover{background-color:#7dc6db;color:#046580}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#dd8c1a;color:#fff}.elfinder .elfinder-toast>.toast-warning button.ui-button.ui-state-hover{background-color:#e7ae5e;color:#422a07}.elfinder-toolbar{padding:4px 0 3px;border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;max-height:50%;overflow-y:auto}.elfinder-buttonset{margin:1px 4px;float:left;background:0 0;padding:0;overflow:hidden}.elfinder .elfinder-button{min-width:16px;height:16px;margin:0;padding:4px;float:left;overflow:hidden;position:relative;border:0 solid;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;line-height:1;cursor:default}.elfinder-rtl .elfinder-button{float:right}.elfinder-touch .elfinder-button{min-width:20px;height:20px}.elfinder .ui-icon-search{cursor:pointer}.elfinder-toolbar-button-separator{float:left;padding:0;height:24px;border-top:0 solid;border-right:0 solid;border-bottom:0 solid;width:0}.elfinder-rtl .elfinder-toolbar-button-separator{float:right}.elfinder-touch .elfinder-toolbar-button-separator{height:28px}.elfinder .elfinder-button.ui-state-disabled{opacity:1;filter:Alpha(Opacity=100)}.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text{opacity:.4;filter:Alpha(Opacity=40)}.elfinder-rtl .elfinder-buttonset{float:right}.elfinder-button-icon{width:16px;height:16px;display:inline-block;background:url(../img/toolbar.png) no-repeat}.elfinder-button-text{position:relative;display:inline-block;top:-4px;margin:0 2px;font-size:12px}.elfinder-touch .elfinder-button-icon{transform:scale(1.25);transform-origin:top left}.elfinder-rtl.elfinder-touch .elfinder-button-icon{transform-origin:top right}.elfinder-touch .elfinder-button-text{transform:translate(3px,3px);top:-5px}.elfinder-rtl.elfinder-touch .elfinder-button-text{transform:translate(-3px,3px)}.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon{transform:scale(2);transform-origin:12px 8px}.elfinder-rtl.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon{transform-origin:4px 8px}.elfinder-button-icon-home{background-position:0 0}.elfinder-button-icon-back{background-position:0 -112px}.elfinder-button-icon-forward{background-position:0 -128px}.elfinder-button-icon-up{background-position:0 -144px}.elfinder-button-icon-dir{background-position:0 -16px}.elfinder-button-icon-opendir{background-position:0 -32px}.elfinder-button-icon-reload{background-position:0 -160px}.elfinder-button-icon-open{background-position:0 -176px}.elfinder-button-icon-mkdir{background-position:0 -192px}.elfinder-button-icon-mkfile{background-position:0 -208px}.elfinder-button-icon-rm{background-position:0 -832px}.elfinder-button-icon-trash{background-position:0 -224px}.elfinder-button-icon-restore{background-position:0 -816px}.elfinder-button-icon-copy{background-position:0 -240px}.elfinder-button-icon-cut{background-position:0 -256px}.elfinder-button-icon-paste{background-position:0 -272px}.elfinder-button-icon-getfile{background-position:0 -288px}.elfinder-button-icon-duplicate{background-position:0 -304px}.elfinder-button-icon-rename{background-position:0 -320px}.elfinder-button-icon-edit{background-position:0 -336px}.elfinder-button-icon-quicklook{background-position:0 -352px}.elfinder-button-icon-upload{background-position:0 -368px}.elfinder-button-icon-download{background-position:0 -384px}.elfinder-button-icon-info{background-position:0 -400px}.elfinder-button-icon-extract{background-position:0 -416px}.elfinder-button-icon-archive{background-position:0 -432px}.elfinder-button-icon-view{background-position:0 -448px}.elfinder-button-icon-view-list{background-position:0 -464px}.elfinder-button-icon-help{background-position:0 -480px}.elfinder-button-icon-resize{background-position:0 -512px}.elfinder-button-icon-link{background-position:0 -528px}.elfinder-button-icon-search{background-position:0 -561px}.elfinder-button-icon-sort{background-position:0 -577px}.elfinder-button-icon-rotate-r{background-position:0 -625px}.elfinder-button-icon-rotate-l{background-position:0 -641px}.elfinder-button-icon-netmount{background-position:0 -688px}.elfinder-button-icon-netunmount{background-position:0 -96px}.elfinder-button-icon-places{background-position:0 -704px}.elfinder-button-icon-chmod{background-position:0 -48px}.elfinder-button-icon-accept{background-position:0 -736px}.elfinder-button-icon-menu{background-position:0 -752px}.elfinder-button-icon-colwidth{background-position:0 -768px}.elfinder-button-icon-fullscreen{background-position:0 -784px}.elfinder-button-icon-unfullscreen{background-position:0 -800px}.elfinder-button-icon-empty{background-position:0 -848px}.elfinder-button-icon-undo{background-position:0 -864px}.elfinder-button-icon-redo{background-position:0 -880px}.elfinder-button-icon-preference{background-position:0 -896px}.elfinder-button-icon-mkdirin{background-position:0 -912px}.elfinder-button-icon-selectall{background-position:0 -928px}.elfinder-button-icon-selectnone{background-position:0 -944px}.elfinder-button-icon-selectinvert{background-position:0 -960px}.elfinder-button-icon-opennew{background-position:0 -976px}.elfinder-button-icon-hide{background-position:0 -992px}.elfinder-button-icon-text{background-position:0 -1008px}.elfinder-rtl .elfinder-button-icon-back,.elfinder-rtl .elfinder-button-icon-forward,.elfinder-rtl .elfinder-button-icon-getfile,.elfinder-rtl .elfinder-button-icon-help,.elfinder-rtl .elfinder-button-icon-redo,.elfinder-rtl .elfinder-button-icon-rename,.elfinder-rtl .elfinder-button-icon-search,.elfinder-rtl .elfinder-button-icon-undo,.elfinder-rtl .elfinder-button-icon-view-list,.elfinder-rtl .ui-icon-search{-ms-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scale(-1,1)}.elfinder-rtl.elfinder-touch .elfinder-button-icon-back,.elfinder-rtl.elfinder-touch .elfinder-button-icon-forward,.elfinder-rtl.elfinder-touch .elfinder-button-icon-getfile,.elfinder-rtl.elfinder-touch .elfinder-button-icon-help,.elfinder-rtl.elfinder-touch .elfinder-button-icon-redo,.elfinder-rtl.elfinder-touch .elfinder-button-icon-rename,.elfinder-rtl.elfinder-touch .elfinder-button-icon-search,.elfinder-rtl.elfinder-touch .elfinder-button-icon-undo,.elfinder-rtl.elfinder-touch .elfinder-button-icon-view-list,.elfinder-rtl.elfinder-touch .ui-icon-search{-ms-transform:scale(-1.25,1.25) translateX(16px);-webkit-transform:scale(-1.25,1.25) translateX(16px);transform:scale(-1.25,1.25) translateX(16px)}.elfinder .elfinder-menubutton{overflow:visible}.elfinder-button-icon-spinner{background:url(../img/spinner-mini.gif) center center no-repeat}.elfinder-button-menu{position:absolute;margin-top:24px;padding:3px 0;overflow-y:auto}.elfinder-touch .elfinder-button-menu{margin-top:30px}.elfinder-button-menu-item{white-space:nowrap;cursor:default;padding:5px 19px;position:relative}.elfinder-touch .elfinder-button-menu-item{padding:12px 19px}.elfinder-button-menu .ui-state-hover{border:0 solid}.elfinder-button-menu-item-separated{border-top:1px solid #ccc}.elfinder-button-menu-item .ui-icon{width:16px;height:16px;position:absolute;left:2px;top:50%;margin-top:-8px;display:none}.elfinder-button-menu-item-selected .ui-icon{display:block}.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s,.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n{display:none}.elfinder-button form{position:absolute;top:0;right:0;opacity:0;filter:Alpha(Opacity=0);cursor:pointer}.elfinder .elfinder-button form input{background:0 0;cursor:default}.elfinder .elfinder-button-search{border:0 solid;background:0 0;padding:0;margin:1px 4px;height:auto;min-height:26px;width:70px;overflow:visible}.elfinder .elfinder-button-search.ui-state-active{width:220px}.elfinder .elfinder-button-search-menu{font-size:8pt;text-align:center;width:auto;min-width:180px;position:absolute;top:30px;padding-right:5px;padding-left:5px}.elfinder-ltr .elfinder-button-search-menu{right:22px;left:auto}.elfinder-rtl .elfinder-button-search-menu{right:auto;left:22px}.elfinder-touch .elfinder-button-search-menu{top:34px}.elfinder .elfinder-button-search-menu div{margin:5px auto;display:table}.elfinder .elfinder-button-search-menu div .ui-state-hover{border:1px solid}.elfinder-ltr .elfinder-button-search{float:right;margin-right:10px}.elfinder-rtl .elfinder-button-search{float:left;margin-left:10px}.elfinder-rtl .ui-controlgroup>.ui-controlgroup-item{float:right}.elfinder-button-search input[type=text]{box-sizing:border-box;width:100%;height:26px;padding:0 20px;line-height:22px;border:1px solid #aaa;-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;outline:0 solid}.elfinder-button-search input::-ms-clear{display:none}.elfinder-touch .elfinder-button-search input{height:30px;line-height:28px}.elfinder-rtl .elfinder-button-search input{direction:rtl}.elfinder-button-search .ui-icon{position:absolute;height:18px;top:50%;margin:-8px 4px 0;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-button-search-menu .ui-checkboxradio-icon{display:none}.elfinder-ltr .elfinder-button-search .ui-icon-search{left:0}.elfinder-ltr .elfinder-button-search .ui-icon-close,.elfinder-rtl .elfinder-button-search .ui-icon-search{right:0}.elfinder-rtl .elfinder-button-search .ui-icon-close{left:0}.elfinder-toolbar-swipe-handle{position:absolute;top:0;left:0;height:50px;width:100%;pointer-events:none;background:linear-gradient(to bottom,#dde4eb 0,rgba(221,228,235,.8) 2px,rgba(216,223,230,.3) 5px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}                                                                                                                                                                                                                                                                                                                                          includes/functions.php                                                                              0000644                 00000002554 15266053004 0011102 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

if ( ! function_exists( 'njt_fs_locales' ) ) {
    function njt_fs_locales() {
        return array(
            'English' =>'en',
            'Ø§Ù„Ø¹Ø±Ø¨ÙŠØ©' =>'ar',
            'Ð‘ÑŠÐ»Ð³Ð°Ñ€Ñ�ÐºÐ¸' =>'bg',
            'CatalÃ ' =>'ca',
            'ÄŒeÅ¡tina' =>'cs',
            'Dansk' =>'da',
            'Deutsch' =>'de',
            'Î•Î»Î»Î·Î½Î¹ÎºÎ¬' =>'el',
            'EspaÃ±ol' =>'es',
            'Ù�Ø§Ø±Ø³ÛŒ' =>'fa',
            'FÃ¸royskt' =>'fo',
            'FranÃ§ais' =>'fr',
            'FranÃ§ais (Canada)' =>'fr_CA',
            '×¢×‘×¨×™×ª' =>'he',
            'Hrvatski' =>'hr',
            'Magyar' =>'hu',
            'Bahasa Indonesia' =>'id',
            'Italiano' =>'it',
            'æ—¥æœ¬èªž' =>'ja',
            'í•œêµ­ì–´' =>'ko',
            'Nederlands' => 'nl',
            'Norsk' => 'no',
            'Polski' =>'pl',
            'PortuguÃªs' =>'pt_BR',
            'RomÃ¢nÄƒ' =>'ro',
            'PÑƒÑ�Ñ�ÐºÐ¸Ð¹' =>'ru',
            'à·ƒà·’à¶‚à·„à¶½' =>'si',
            'SlovenÄ�ina' =>'sk',
            'SlovenÅ¡Ä�ina' =>'sl',
            'Srpski' =>'sr',
            'Svenska' =>'sv',
            'TÃ¼rkÃ§e' =>'tr',
            'Ø¦Û‡ÙŠØºÛ‡Ø±Ú†Û•' =>'ug_CN',
            'Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ¸Ð¹' =>'uk',
            'Tiáº¿ng Viá»‡t' =>'vi',
            'ç®€ä½“ä¸­æ–‡' =>'zh_CN',
            'æ­£é«”ä¸­æ–‡' =>'zh_TW',
          );
    }
}
                                                                                                                                                    includes/I18n.php                                                                                   0000644                 00000001060 15266053004 0007600 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
namespace NinjaFileManager;

defined('ABSPATH') || exit;
/**
 * I18n Logic
 */
class I18n {
  protected static $instance = null;

  public static function getInstance() {
    if (null == self::$instance) {
      self::$instance = new self;
    }

    return self::$instance;
  }

  private function __construct() {
    add_action('plugins_loaded', array($this, 'loadPluginTextdomain'));
  }

  public function loadPluginTextdomain() {
    load_plugin_textdomain(
      'filester',
      false,
      NJT_FS_BN_PLUGIN_URL . 'i18n/languages/'
    );
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                includes/Recommended/assets/js/recommended.js                                                       0000644                 00000014533 15266053004 0015341 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jQuery(document).ready(function () {
    const wooActive = window.yayRecommended.woo_active;
    if(wooActive === '') {
        getData('featured');
    } else {
        getData('woocommerce');
    }
    
    jQuery(".yay-recommended-plugins-layout .plugin-install-tab").on("click", function () {
        if(jQuery(this).children().hasClass("current") === false) {
            getData(jQuery(this).attr("data-tab"));
            jQuery( ".yay-recommended-plugins-layout .plugin-install-tab a" ).each(function() {
                if(jQuery(this).hasClass("current") === true) {
                    jQuery(this).removeClass("current");
                }
            });
            jQuery(this).children().addClass("current");
        }
    })
    jQuery('body').on('click', '.yay-recommended-plugins-layout .plugin-action-buttons .activate-now', function() {
        const file = jQuery(this).attr("data-plugin-file");
        activatePlugin(jQuery(this), file);
    });
    jQuery('body').on('click', '.yay-recommended-plugins-layout .plugin-action-buttons .install-now', function() {
        if(!jQuery(this).hasClass("updating-message") ) {
            const plugin = jQuery(this).attr("data-install-url");
            installPlugin(jQuery(this), plugin);
        }
    });
    jQuery('body').on('click', '.yay-recommended-plugins-layout .plugin-action-buttons .update-now', function() {
        if(!jQuery(this).hasClass("updating-message") ) {
            const plugin = jQuery(this).attr("data-plugin");
            updatePlugin(jQuery(this), plugin);
        }
    });
})
function getData(tab) {
    const loadingHtml = '<div class="loading-content"><span class="spinner is-active"></span></div>';
    jQuery(".yay-recommended-plugins-layout #the-list").html(loadingHtml);
    jQuery(".yay-recommended-plugins-layout .plugin-install-tab").addClass("loading-process");
    jQuery.ajax({
        url: yayRecommended.admin_ajax,
        type: "POST",
        data: {
            action: "yay_recommended_get_plugin_data",
            tab: tab,
            nonce: yayRecommended.nonce
        },
        success: function(response) {
            if(response.success === true) {
                const html = response.data.html;
                jQuery( ".yay-recommended-plugins-layout #the-list" ).html(html);
                jQuery(".yay-recommended-plugins-layout .plugin-install-tab").removeClass("loading-process");
            }
        }
    })
}

function activatePlugin(element,file) {
    element.addClass("button-disabled");
    element.attr("disabled", "disabled");
    element.text("Processing...");
    jQuery.ajax({
        url: yayRecommended.admin_ajax,
        type: "POST",
        data: {
            action: "yay_recommended_activate_plugin",
            file: file,
            nonce: yayRecommended.nonce
        },
        success: function(response) {
            if(response.success === true) {
                const pluginStatus =  jQuery(".yay-recommended-plugins-layout .plugin-status-inactive[data-plugin-file='" + file +"']")
                pluginStatus.text("Active");
                pluginStatus.addClass("plugin-status-active");
                pluginStatus.removeClass("plugin-status-inactive");
                element.removeClass("active-now");
                element.text("Activated");
            } else {
                element.removeClass("button-disabled");
                element.prop("disabled", false);
                element.text("Activated");
            }
        },
    })
}

function installPlugin(element,plugin) {
    element.removeClass("button-primary");
    element.addClass("updating-message");
    element.text("Installing...");
    jQuery.ajax({
        url: yayRecommended.admin_ajax,
        type: "POST",
        data: {
            action: "yay_recommended_upgrade_plugin",
            type: 'install',
            plugin: plugin,
            nonce: yayRecommended.nonce
        },
        success: function(response) {
            if(response.success === true) {
                element.removeClass("updating-message");
                element.addClass("updated-message installed button-disabled");
                element.attr("disabled", "disabled");
                element.removeAttr("data-install-url");
                element.text("Installed!");
                setTimeout(() => {
                    const pluginStatus =  jQuery(".yay-recommended-plugins-layout .plugin-status-not-install[data-plugin-url='" + plugin +"']")
                    pluginStatus.text("Active");
                    pluginStatus.addClass("plugin-status-active");
                    pluginStatus.removeClass("plugin-status-not-install");
                    pluginStatus.removeAttr("data-install-url");
                    element.removeClass("install-now updated-message installed");
                    element.text("Activated");
                    element.removeAttr("aria-label");
                }, 500);
                
            } else {
                element.removeClass("updating-message");
                element.addClass("button-primary");
                element.text("Install Now");
            }
        },
    })
}

function updatePlugin(element,plugin) {
    element.addClass("updating-message");
    element.text("Updating...");
    jQuery.ajax({
        url: yayRecommended.admin_ajax,
        type: "POST",
        data: {
            action: "yay_recommended_upgrade_plugin",
            type: "update",
            plugin: plugin,
            nonce: yayRecommended.nonce
        },
        success: function(response) {
            if(response.success === true) {
                element.removeClass("updating-message");
                element.addClass("updated-message button-disabled");
                element.attr("disabled", "disabled");
                element.text("Updated!");
                if(response.data.active === false) {
                    const pluginStatus =  jQuery(".yay-recommended-plugins-layout .plugin-status-inactive[data-plugin-file='" + plugin +"']");
                    pluginStatus.text("Active");
                    pluginStatus.addClass("plugin-status-active");
                    pluginStatus.removeClass("plugin-status-inactive");
                    pluginStatus.removeAttr("data-plugin-file");
                }
            } else {
                element.removeClass("updating-message");
                element.text("Update Now");
            }
        },
    })
}
                                                                                                                                                                     includes/Recommended/views/content.php                                                              0000644                 00000025630 15266053004 0014123 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

$pluginsAllowedTags = array(
	'a'       => array(
		'href'   => array(),
		'title'  => array(),
		'target' => array(),
	),
	'abbr'    => array( 'title' => array() ),
	'acronym' => array( 'title' => array() ),
	'code'    => array(),
	'pre'     => array(),
	'em'      => array(),
	'strong'  => array(),
	'ul'      => array(),
	'ol'      => array(),
	'li'      => array(),
	'p'       => array(),
	'br'      => array(),
);

foreach ( (array) $recommendedPlugins as $recommendedPlugin ) {
	if ( is_object( $recommendedPlugin ) ) {
		$recommendedPlugin = (array) $recommendedPlugin;
	}

		$pluginTitle = wp_kses( $recommendedPlugin['name'], $pluginsAllowedTags );

		// Remove any HTML from the description.
		$description = wp_strip_all_tags( $recommendedPlugin['short_description'] );

		$name = wp_strip_all_tags( $pluginTitle );

		$downloadLink = isset( $recommendedPlugin['download_link'] ) ? $recommendedPlugin['download_link'] : null;

		$compatible_php = true;
		$compatible_wp  = true;
		$tested_wp      = true;

		$actionLinks = array();

		$pluginStatus = '<span class="plugin-status-not-install">Not installed</span>';

	if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) {
		$pluginProVer = $this->check_pro_version_exists( $recommendedPlugin );
		if ( false === $pluginProVer ) {
			if ( 'yaypricing' === $recommendedPlugin['slug'] ) {
				$installStatus = array(
					'status'  => 'install',
					'url'     => $recommendedPlugin['download_link'],
					'version' => '',
					'file'    => $pluginProVer,
				);
			} else {
				$installStatus = install_plugin_install_status( $recommendedPlugin );
			}
		} else {
			$installStatus = array(
				'status'  => 'latest_installed',
				'url'     => false,
				'version' => '',
				'file'    => $pluginProVer,
			);
		}

		switch ( $installStatus['status'] ) {
			case 'install':
				if ( $installStatus['url'] ) {
					if ( $compatible_php && $compatible_wp ) {
						if ( 'yaypricing' === $recommendedPlugin['slug'] ) {
							$actionLinks[] = sprintf(
								'<a href="%s" target="_bank"><button class="button button-primary" data-install-url="%s" aria-label="%s">%s</button></a>',
								esc_attr( $downloadLink ),
								esc_attr( $downloadLink ),
								/* translators: %s: Plugin name and version. */
								esc_attr( sprintf( _x( 'Install %s now', 'plugin', 'ninjateam-whatsapp' ), $name ) ),
								__( 'Install Now', 'ninjateam-whatsapp' )
							);
						} else {
							$actionLinks[] = sprintf(
								'<button class="install-now button button-primary" data-install-url="%s" aria-label="%s">%s</button>',
								esc_attr( $downloadLink ),
								/* translators: %s: Plugin name and version. */
								esc_attr( sprintf( _x( 'Install %s now', 'plugin', 'ninjateam-whatsapp' ), $name ) ),
								__( 'Install Now', 'ninjateam-whatsapp' )
							);
						}
					} else {
						$actionLinks[] = sprintf(
							'<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
							_x( 'Cannot Install', 'plugin', 'ninjateam-whatsapp' )
						);
					}
				}
				$pluginStatus = '<span class="plugin-status-not-install" data-plugin-url="' . esc_attr( $downloadLink ) . '">Not installed</span>';
				break;

			case 'update_available':
				if ( $installStatus['url'] ) {
					if ( $compatible_php && $compatible_wp ) {
						if ( 'yaypricing' === $recommendedPlugin['slug'] ) {
							$actionLinks[] = sprintf(
								'<button class="button aria-button-if-js" data-plugin="%s" data-slug="%s" data-update-url="%s" aria-label="%s" data-name="%s">%s</button>',
								esc_attr( $installStatus['file'] ),
								esc_attr( $recommendedPlugin['slug'] ),
								esc_url( $installStatus['url'] ),
								/* translators: %s: Plugin name and version. */
								esc_attr( sprintf( _x( 'Update %s now', 'plugin', 'ninjateam-whatsapp' ), $name ) ),
								esc_attr( $name ),
								__( 'Update Now', 'ninjateam-whatsapp' )
							);
						} else {
							$actionLinks[] = sprintf(
								'<button class="update-now button aria-button-if-js" data-plugin="%s" data-slug="%s" data-update-url="%s" aria-label="%s" data-name="%s">%s</button>',
								esc_attr( $installStatus['file'] ),
								esc_attr( $recommendedPlugin['slug'] ),
								esc_url( $installStatus['url'] ),
								/* translators: %s: Plugin name and version. */
								esc_attr( sprintf( _x( 'Update %s now', 'plugin', 'ninjateam-whatsapp' ), $name ) ),
								esc_attr( $name ),
								__( 'Update Now', 'ninjateam-whatsapp' )
							);
						}
					} else {
						$actionLinks[] = sprintf(
							'<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
							_x( 'Cannot Update', 'plugin', 'ninjateam-whatsapp' )
						);
					}
				}
				if ( is_plugin_active( $installStatus['file'] ) ) {
					$pluginStatus = '<span class="plugin-status-active">Active</span>';
				} else {
					$pluginStatus = '<span class="plugin-status-inactive" data-plugin-file="' . esc_attr( $installStatus['file'] ) . '">Inactive</span>';
				}
				break;

			case 'latest_installed':
			case 'newer_installed':
				if ( is_plugin_active( $installStatus['file'] ) ) {
					$pluginStatus  = '<span class="plugin-status-active">Active</span>';
					$actionLinks[] = sprintf(
						'<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
						_x( 'Activated', 'plugin', 'ninjateam-whatsapp' )
					);
				} elseif ( current_user_can( 'activate_plugin', $installStatus['file'] ) ) {
					$pluginStatus = '<span class="plugin-status-inactive" data-plugin-file="' . esc_attr( $installStatus['file'] ) . '">Inactive</span>';
					if ( $compatible_php && $compatible_wp ) {
						$buttonText = __( 'Activate', 'ninjateam-whatsapp' );
						/* translators: %s: Plugin name. */
						$buttonLabel = _x( 'Activate %s', 'plugin', 'ninjateam-whatsapp' );
						$activateUrl = add_query_arg(
							array(
								'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $installStatus['file'] ),
								'action'   => 'activate',
								'plugin'   => $installStatus['file'],
							),
							network_admin_url( 'plugins.php' )
						);

						if ( is_network_admin() ) {
							$buttonText = __( 'Network Activate', 'ninjateam-whatsapp' );
							/* translators: %s: Plugin name. */
							$buttonLabel = _x( 'Network Activate %s', 'plugin', 'ninjateam-whatsapp' );
							$activateUrl = add_query_arg( array( 'networkwide' => 1 ), $activateUrl );
						}

						$actionLinks[] = sprintf(
							'<button class="button activate-now" data-plugin-file="%1$s" aria-label="%2$s">%3$s</button>',
							esc_attr( $installStatus['file'] ),
							esc_attr( sprintf( $buttonLabel, $recommendedPlugin['name'] ) ),
							$buttonText
						);
					} else {
						$actionLinks[] = sprintf(
							'<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
							_x( 'Cannot Activate', 'plugin', 'ninjateam-whatsapp' )
						);
					}
				} else {
					$actionLinks[] = sprintf(
						'<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
						_x( 'Installed', 'plugin', 'ninjateam-whatsapp' )
					);
				}
				break;
		}
	}

		$detailsLink = self_admin_url(
			'plugin-install.php?tab=plugin-information&amp;plugin=' . $recommendedPlugin['slug'] .
			'&amp;TB_iframe=true&amp;width=600&amp;height=550'
		);

		$pluginIconUrl = $recommendedPlugin['icon'];

		/**
		 * Filters the install action links for a plugin.
		 *
		 * @since 2.7.0
		 *
		 * @param string[] $actionLinks An array of plugin action links. Defaults are links to Details and Install Now.
		 * @param array    $plugin       The plugin currently being listed.
		 */
		$actionLinks = apply_filters( 'plugin_install_action_links', $actionLinks, $recommendedPlugin );

	?>
	<div class="plugin-card plugin-card-<?php echo sanitize_html_class( $recommendedPlugin['slug'] ); ?>">
		<?php
		if ( ! $compatible_php || ! $compatible_wp ) {
			echo '<div class="notice inline notice-error notice-alt"><p>';
			if ( ! $compatible_php && ! $compatible_wp ) {
				echo esc_html__( 'This plugin doesn&#8217;t work with your versions of WordPress and PHP.', 'ninjateam-whatsapp' );
				if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) {
					printf(
						/* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */
						' ' . esc_html__( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.', 'ninjateam-whatsapp' ),
						esc_url( self_admin_url( 'update-core.php' ) ),
						esc_url( wp_get_update_php_url() )
					);
					wp_update_php_annotation( '</p><p><em>', '</em>' );
				} elseif ( current_user_can( 'update_core' ) ) {
					printf(
						/* translators: %s: URL to WordPress Updates screen. */
						' ' . esc_html__( '<a href="%s">Please update WordPress</a>.', 'ninjateam-whatsapp' ),
						esc_url( self_admin_url( 'update-core.php' ) )
					);
				} elseif ( current_user_can( 'update_php' ) ) {
					printf(
						/* translators: %s: URL to Update PHP page. */
						' ' . esc_html__( '<a href="%s">Learn more about updating PHP</a>.', 'ninjateam-whatsapp' ),
						esc_url( wp_get_update_php_url() )
					);
					wp_update_php_annotation( '</p><p><em>', '</em>' );
				}
			} elseif ( ! $compatible_wp ) {
				echo esc_html__( 'This plugin doesn&#8217;t work with your version of WordPress.', 'ninjateam-whatsapp' );
				if ( current_user_can( 'update_core' ) ) {
					printf(
						/* translators: %s: URL to WordPress Updates screen. */
						' ' . esc_html__( '<a href="%s">Please update WordPress</a>.', 'ninjateam-whatsapp' ),
						esc_url( self_admin_url( 'update-core.php' ) )
					);
				}
			} elseif ( ! $compatible_php ) {
				echo esc_html__( 'This plugin doesn&#8217;t work with your version of PHP.', 'ninjateam-whatsapp' );
				if ( current_user_can( 'update_php' ) ) {
					printf(
						/* translators: %s: URL to Update PHP page. */
						' ' . esc_html__( '<a href="%s">Learn more about updating PHP</a>.', 'ninjateam-whatsapp' ),
						esc_url( wp_get_update_php_url() )
					);
					wp_update_php_annotation( '</p><p><em>', '</em>' );
				}
			}
			echo '</p></div>';
		}
		?>
		<div class="plugin-card-top">
			<div class="name column-name">
				<h3>
					<a href="<?php echo esc_url( $detailsLink ); ?>" class="thickbox open-plugin-details-modal">
					<?php echo wp_kses_post( $pluginTitle ); ?>
					<img src="<?php echo esc_url( $pluginIconUrl ); ?>" class="plugin-icon" alt="" />
					</a>
				</h3>
			</div>
			<div class="desc column-description">
				<p><?php echo wp_kses_post( $description ); ?></p>
			</div>
		</div>
		<div class="plugin-card-bottom">
			<div class="vers column-rating">
				<?php echo sprintf( '<span class="plugin-status" >%s: %s</span>', esc_html( 'Status' ), wp_kses_post( $pluginStatus ) ); ?>
			</div>
			<div class="column-updated">
				<?php
				if ( $actionLinks ) {
					echo '<ul class="plugin-action-buttons"><li>' . wp_kses_post( implode( '</li><li>', $actionLinks ) ) . '</li></ul>';
				}
				?>
			</div>
		</div>
	</div>
<?php } ?>
                                                                                                        includes/Recommended/Recommended.php                                                                0000644                 00000053244 15266053005 0013541 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined( 'ABSPATH' ) || exit;
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';

if ( ! class_exists( 'YayRecommended' ) ) {
	class YayRecommended {

		public $plugin_prefix      = '';
		public $sub_menu_slug      = '';
		public $recommended_plugin = array();

		public function __construct( $plugin_prefix ) {
			$this->plugin_prefix      = $plugin_prefix;
			$this->recommended_plugin = $this->get_recommended_plugins();
			$this->do_hooks();
		}

		public function do_hooks() {
			add_action(
				'init',
				function () {
					add_action( 'admin_menu', array( $this, 'admin_menu' ) );
					add_action( 'admin_footer', array( $this, 'add_global_script_styles' ) );
					add_action( 'wp_ajax_yay_recommended_get_plugin_data', array( $this, 'yay_recommended_get_plugin_data' ) );
					add_action( 'wp_ajax_yay_recommended_activate_plugin', array( $this, 'yay_recommended_activate_plugin' ) );
					add_action( 'wp_ajax_yay_recommended_upgrade_plugin', array( $this, 'yay_recommended_upgrade_plugin' ) );
				}
			);
		}

		private function get_recommended_plugins() {
			$recommended_plugins = array(
				'filebird'          => array(
					'slug'              => 'filebird',
					'name'              => 'FileBird - WordPress Media Library Folders & File Manager',
					'short_description' => 'Organize thousands of WordPress media files in folders / categories at ease.',
					'icon'              => 'https://ps.w.org/filebird/assets/icon-128x128.gif?rev=2299145',
					'download_link'     => 'https://downloads.wordpress.org/plugin/filebird.zip',
					'type'              => array( 'featured' ),
					'version'           => 0,
				),
				'yaymail'           => array(
					'slug'              => 'yaymail',
					'name'              => 'YayMail - WooCommerce Email Customizer',
					'short_description' => 'Customize WooCommerce email templates with live preview & drag and drop email builder.',
					'icon'              => 'https://ps.w.org/yaymail/assets/icon-256x256.gif?rev=2599198',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yaymail.zip',
					'type'              => array( 'featured', 'woocommerce' ),
					'version'           => 0,
				),
				'yaycurrency'       => array(
					'slug'              => 'yaycurrency',
					'name'              => 'YayCurrency - WooCommerce Multi-Currency Switcher',
					'short_description' => 'WooCommerce Multi-Currency made easy, powerful, and flexible.',
					'icon'              => 'https://ps.w.org/yaycurrency/assets/icon-256x256.png?rev=3056587',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yaycurrency.zip',
					'type'              => array( 'featured', 'woocommerce' ),
					'version'           => 0,
				),
				'yayswatches'       => array(
					'slug'              => 'yayswatches',
					'name'              => 'YaySwatches - Variation Swatches for WooCommerce',
					'short_description' => 'Optimize your variable product showcase with color swatches, image swatches, custom images, buttons, and more!',
					'icon'              => 'https://ps.w.org/yayswatches/assets/icon-256x256.png?rev=3056591',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yayswatches.zip',
					'type'              => array( 'woocommerce' ),
					'version'           => 0,
				),
				'yayextra'          => array(
					'slug'              => 'yayextra',
					'name'              => 'YayExtra - WooCommerce Extra Product Options',
					'short_description' => 'Add WooCommerce product options like personal engraving, print-on-demand items, gifts, custom canvas prints, and personalized products.',
					'icon'              => 'https://ps.w.org/yayextra/assets/icon-256x256.png?rev=3056586',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yayextra.zip',
					'type'              => array( 'woocommerce' ),
					'version'           => 0,
				),
				'yaypricing'        => array(
					'slug'              => 'yaypricing',
					'name'              => 'YayPricing - WooCommerce Dynamic Pricing & Discounts',
					'short_description' => 'Offer automatic pricing and discounts to design a powerful marketing strategy for your WooCommerce store.',
					'icon'              => 'https://ps.w.org/yaypricing/assets/icon-256x256.png?rev=3056580',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yaypricing.zip',
					'type'              => array( 'woocommerce' ),
					'version'           => 0,
				),
				'yaysmtp'           => array(
					'slug'              => 'yaysmtp',
					'name'              => 'YaySMTP - Simple WP SMTP Mail',
					'short_description' => 'Send WordPress emails successfully with WP Mail SMTP via your favorite Mailer.',
					'icon'              => 'https://ps.w.org/yaysmtp/assets/icon-256x256.png?rev=3056583',
					'download_link'     => 'https://downloads.wordpress.org/plugin/yaysmtp.zip',
					'type'              => array( 'featured', 'marketing' ),
					'version'           => 0,
				),
				'wp-whatsapp'       => array(
					'slug'              => 'wp-whatsapp',
					'name'              => 'WP Chat App',
					'short_description' => 'Integrate WhatsApp experience directly into your WordPress website.',
					'icon'              => 'https://ps.w.org/wp-whatsapp/assets/icon-256x256.png?rev=2725670',
					'download_link'     => 'https://downloads.wordpress.org/plugin/wp-whatsapp.zip',
					'type'              => array( 'featured' ),
					'version'           => 0,
				),
				'filester'          => array(
					'slug'              => 'filester',
					'name'              => 'Filester - File Manager Pro',
					'short_description' => 'Best WordPress file manager without FTP access. Clean design. No need to upgrade because thisâ€¦',
					'icon'              => 'https://ps.w.org/filester/assets/icon-256x256.gif?rev=2305540',
					'download_link'     => 'https://downloads.wordpress.org/plugin/filester.zip',
					'type'              => array( 'management' ),
					'version'           => 0,
				),
				'cf7-multi-step'    => array(
					'slug'              => 'cf7-multi-step',
					'name'              => 'Multi Step for Contact Form 7',
					'short_description' => 'Break your looooooong form into user-friendly steps.',
					'icon'              => 'https://ps.w.org/cf7-multi-step/assets/icon-256x256.png?rev=1994366',
					'download_link'     => 'https://downloads.wordpress.org/plugin/cf7-multi-step.zip',
					'type'              => array( 'management' ),
					'version'           => 0,
				),
				'cf7-database'      => array(
					'slug'              => 'cf7-database',
					'name'              => 'Database for Contact Form 7',
					'short_description' => 'Automatically save all data submitted via Contact Form 7 to your database.',
					'icon'              => 'https://ps.w.org/cf7-database/assets/icon-128x128.png?rev=1614091',
					'download_link'     => 'https://downloads.wordpress.org/plugin/cf7-database.zip',
					'type'              => array( 'management' ),
					'version'           => 0,
				),
				'wp-duplicate-page' => array(
					'slug'              => 'wp-duplicate-page',
					'name'              => 'WP Duplicate Page',
					'short_description' => 'Clone WordPress page, post, custom post types.',
					'icon'              => 'https://ps.w.org/wp-duplicate-page/assets/icon-256x256.gif?rev=2432962',
					'download_link'     => 'https://downloads.wordpress.org/plugin/wp-duplicate-page.zip',
					'type'              => array( 'management' ),
					'version'           => 0,
				),
				'notibar'           => array(
					'slug'              => 'notibar',
					'name'              => 'Notibar - Notification Bar for WordPress',
					'short_description' => 'Customizer for sticky header, notification bar, alert, promo code, marketing campaign, top banner.',
					'icon'              => 'https://ps.w.org/notibar/assets/icon-256x256.png?rev=2387855',
					'download_link'     => 'https://downloads.wordpress.org/plugin/notibar.zip',
					'type'              => array( 'marketing' ),
					'version'           => 0,
				),
			);
			return $recommended_plugins;
		}

		public function admin_menu() {
			$this->sub_menu_slug = add_submenu_page( 'nta_whatsapp', __( 'Recommended Plugins', 'filebird' ), __( 'Recommended Plugins', 'filebird' ), 'manage_options', 'nta_whatsapp_recommended_plugins', array( $this, 'recommended_plugins_view' ) );
		}

		public function recommended_plugins_view() {
			if ( function_exists( 'WC' ) ) {
				$featured_tab = '<li class="plugin-install-tab plugin-install-featured" data-tab="featured"><a href="#" >Featured</a> </li>';
				$woo_tab      = '<li class="plugin-install-tab plugin-install-woocommerce" data-tab="woocommerce"><a href="#" class="current" aria-current="page">WooCommerce</a> </li>';
			} else {
				$featured_tab = '<li class="plugin-install-tab plugin-install-featured" data-tab="featured"><a href="#" class="current" aria-current="page">Featured</a> </li>';
				$woo_tab      = '<li class="plugin-install-tab plugin-install-woocommerce" data-tab="woocommerce"><a href="#" >WooCommerce</a> </li>';
			}
			?>
			<style>
				.yay-recommended-plugins-layout {
					margin-top: 20px;
				}
				.wrap .notice, .wrap .error, div.updated {
					display: none !important;
				}
				.yay-recommended-plugins-layout-header {
					background: #fff;
					box-sizing: border-box;
					padding: 0;
					z-index: 1001;
				}
				
				.yay-recommended-plugins-header{
					display: flex;
					flex-wrap: wrap;
					justify-content: space-between;
					align-items: center;
					position: relative;
					box-sizing: border-box;
					margin: 12px 0 25px;
					padding: 0 10px;
					width: 100%;
					box-shadow: 0 1px 1px rgb(0 0 0 / 4%);
					border: 1px solid #c3c4c7;
					background: #fff;
					color: #50575e;
					font-size: 13px;
				}
				.yay-recommended-plugins-header-title {
					font-size: 1.2em;
					margin-left: 8px;
				}
				.yay-recommended-plugins-layout .plugin-card .desc, .plugin-card .name {
					margin-right: 0;
				}
				.yay-recommended-plugins-layout .plugin-card-bottom {
					display: flex;
					justify-content: space-between;
					align-items: center;
				}
				.yay-recommended-plugins-layout .plugin-action-buttons,
				.yay-recommended-plugins-layout .plugin-action-buttons li,
				.plugin-card .column-rating, .plugin-card .column-updated {
					margin-bottom: 0;
				}
				.yay-recommended-plugins-layout .loading-process {
					pointer-events: none;
				}
				.yay-recommended-plugins-layout .column-rating {
					min-height: 30px;
					line-height: 30px;
				}
				.yay-recommended-plugins-layout .plugin-status-inactive {
					color: #ff4d4f;
				}
				.yay-recommended-plugins-layout .plugin-status-active {
					color: #52c41a;
				}
				.yay-recommended-plugins-layout .plugin-status-not-install {
					color: #1d2327;
				}
				@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) {
					.yay-recommended-plugins-layout .plugin-card .column-compatibility, 
					.yay-recommended-plugins-layout .plugin-card .column-updated {
						width: calc(100% - 220px);
					}
					.yay-recommended-plugins-layout .plugin-action-buttons li .button,
					.yay-recommended-plugins-layout .plugin-action-buttons {
						margin: 0;
					}
				}
			</style>
			<div class="wrap">
				<div class="yay-recommended-plugins-layout">
					<div class="yay-recommended-plugins-layout-header">
						<div class="wp-filter yay-recommended-plugins-header">
							<h2 class="yay-recommended-plugins-header-title"><?php esc_attr_e( 'Recommended Plugins', 'filebird' ); ?></h2>
							<ul class="filter-links">
								<?php
								echo wp_kses_post( $featured_tab );
								?>
								<li class="plugin-install-tab plugin-install-all" data-tab="all"><a href="#">All</a></li>
								<?php
								echo wp_kses_post( $woo_tab );
								?>
								<li class="plugin-install-tab plugin-install-management" data-tab="management"><a href="#">Management</a> </li>
								<li class="plugin-install-tab plugin-install-marketing" data-tab="marketing"><a href="#">Marketing</a></li>
							</ul>
						</div>
					</div>
					<div class="wp-list-table widefat plugin-install">
						<div id="the-list"></div>
					</div>
				</div>
			</div>
			<?php
		}

		public function add_global_script_styles() {
			$screen = get_current_screen();
			if ( $screen->base !== $this->sub_menu_slug ) {
				return;
			}
			$active_wc = function_exists( 'WC' );
			wp_enqueue_script( 'plugin-install' );
			wp_enqueue_script( 'thickbox' );
			wp_enqueue_style( 'thickbox' );
			wp_register_script( "{$this->plugin_prefix}-yayrecommended", plugin_dir_url( __FILE__ ) . '/assets/js/recommended.js', array( 'jquery' ), '1.0', true );
			wp_localize_script(
				"{$this->plugin_prefix}-yayrecommended",
				'yayRecommended',
				array(
					'nonce'      => wp_create_nonce( 'yay_recommended_nonce' ),
					'admin_ajax' => admin_url( 'admin-ajax.php' ),
					'woo_active' => $active_wc,
				)
			);
			wp_enqueue_script( "{$this->plugin_prefix}-yayrecommended" );
		}

		public function yay_recommended_get_plugin_data() {
			try {
				if ( isset( $_POST['tab'] ) ) {
					$nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
					if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
						wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
					}
					$tab                 = sanitize_text_field( $_POST['tab'] );
					$recommendedPlugins = array();
					$recommended_data    = apply_filters( 'yay_recommended_plugins_excluded', $this->recommended_plugin );
					foreach ( $recommended_data as $key => $plugin ) {
						if ( in_array( $tab, $plugin['type'] ) || 'all' === $tab ) {
							$recommendedPlugins[ $key ] = $plugin;
						}
					}
					ob_start();
					$path = plugin_dir_path( __FILE__ ) . 'views/content.php';
					include $path;
					$html = ob_get_contents();
					ob_end_clean();
					wp_send_json_success(
						array(
							'mess' => __( 'Get data success', 'filebird' ),
							'html' => $html,
						)
					);
				}
			} catch ( \Exception $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error exception.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			} catch ( \Error $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			}
		}

		public function yay_recommended_activate_plugin() {
			try {
				if ( isset( $_POST['file'] ) ) {
					$nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
					if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
						wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
					}
					$file   = sanitize_text_field( $_POST['file'] );
					$result = activate_plugin( $file );

					if ( is_wp_error( $result ) ) {
						wp_send_json_error(
							array(
								'mess' => $result->get_error_message(),
							)
						);
					}
					wp_send_json_success(
						array(
							'mess' => __( 'Activate success', 'filebird' ),
						)
					);
				}
			} catch ( \Exception $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error exception.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			} catch ( \Error $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			}
		}

		public function yay_recommended_upgrade_plugin() {
			try {
				require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
				require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
				require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
				require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
				if ( isset( $_POST['plugin'] ) ) {
					$nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
					if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
						wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
					}
					$plugin   = sanitize_text_field( $_POST['plugin'] );
					$type     = isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : 'install';
					$skin     = new \WP_Ajax_Upgrader_Skin();
					$upgrader = new \Plugin_Upgrader( $skin );
					if ( 'install' === $type ) {
						$result = $upgrader->install( $plugin );
						if ( is_wp_error( $result ) ) {
							wp_send_json_error(
								array(
									'mess' => $result->get_error_message(),
								)
							);
						}
						$args        = array(
							'slug'   => $upgrader->result['destination_name'],
							'fields' => array(
								'short_description' => true,
								'icons'             => true,
								'banners'           => false,
								'added'             => false,
								'reviews'           => false,
								'sections'          => false,
								'requires'          => false,
								'rating'            => false,
								'ratings'           => false,
								'downloaded'        => false,
								'last_updated'      => false,
								'tags'              => false,
								'compatibility'     => false,
								'homepage'          => false,
								'donate_link'       => false,
							),
						);
						$plugin_data = plugins_api( 'plugin_information', $args );
						if ( $plugin_data && ! is_wp_error( $plugin_data ) ) {
							$install_status = install_plugin_install_status( $plugin_data );
							$active_plugin  = activate_plugin( $install_status['file'] );
							if ( is_wp_error( $active_plugin ) ) {
								wp_send_json_error(
									array(
										'mess' => $active_plugin->get_error_message(),
									)
								);
							} else {
								wp_send_json_success(
									array(
										'mess' => __( 'Install success', 'filebird' ),
									)
								);
							}
						} else {
							wp_send_json_error(
								array(
									'mess' => 'Error',
								)
							);
						}
					} else {
						$is_active = is_plugin_active( $plugin );
						$result    = $upgrader->upgrade( $plugin );
						if ( is_wp_error( $result ) ) {
							wp_send_json_error(
								array(
									'mess' => $result->get_error_message(),
								)
							);
						} else {
							activate_plugin( $plugin );
							wp_send_json_success(
								array(
									'mess'   => __( 'Update success', 'filebird' ),
									'active' => $is_active,
								)
							);
						}
					}
				}
			} catch ( \Exception $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error exception.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			} catch ( \Error $ex ) {
				wp_send_json_error(
					array(
						'mess' => __( 'Error.', 'filebird' ),
						array(
							'error' => $ex,
						),
					)
				);
			}
		}

		public function check_pro_version_exists( $plugin_detail ) {
			$exist_pro_ver = false;
			$all_plugin    = get_plugins();
			if ( 'filebird' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'filebird-pro/filebird.php', $all_plugin ) === true ? 'filebird-pro/filebird.php' : false;
			}
			if ( 'yaymail' === $plugin_detail['slug'] ) {
				if ( array_key_exists( 'yaymail-pro/yaymail.php', $all_plugin ) ) {
					$exist_pro_ver = 'yaymail-pro/yaymail.php';
				} elseif ( array_key_exists( 'email-customizer-for-woocommerce/yaymail.php', $all_plugin ) ) {
					$exist_pro_ver = 'email-customizer-for-woocommerce/yaymail.php';
				}
			}
			if ( 'yaycurrency' === $plugin_detail['slug'] ) {
				if ( array_key_exists( 'yaycurrency-pro/yay-currency.php', $all_plugin ) ) {
					$exist_pro_ver = 'yaycurrency-pro/yay-currency.php';
				} elseif ( array_key_exists( 'multi-currency-switcher/yay-currency.php', $all_plugin ) ) {
					$exist_pro_ver = 'multi-currency-switcher/yay-currency.php';
				}
			}
			if ( 'yaysmtp' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'yaysmtp-pro/yay-smtp.php', $all_plugin ) === true ? 'yaysmtp-pro/yay-smtp.php' : false;
			}
			if ( 'yayswatches' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'yayswatches-pro/yay-swatches.php', $all_plugin ) === true ? 'yayswatches-pro/yay-swatches.php' : false;
			}
			if ( 'yayextra' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'yayextra-pro/yayextra.php', $all_plugin ) === true ? 'yayextra-pro/yayextra.php' : false;
			}
			if ( 'yaypricing' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'yaypricing-pro/yaypricing.php', $all_plugin ) === true ? 'yaypricing-pro/yaypricing.php' : false;
			}
			if ( 'cf7-multi-step' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'contact-form-7-multi-step-pro/contact-form-7-multi-step.php', $all_plugin ) === true ? 'contact-form-7-multi-step-pro/contact-form-7-multi-step.php' : false;
			}
			if ( 'cf7-database' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'contact-form-7-database-pro/cf7-database.php', $all_plugin ) === true ? 'contact-form-7-database-pro/cf7-database.php' : false;
			}
			if ( 'wp-whatsapp' === $plugin_detail['slug'] ) {
				$exist_pro_ver = array_key_exists( 'whatsapp-for-wordpress/whatsapp.php', $all_plugin ) === true ? 'whatsapp-for-wordpress/whatsapp.php' : false;
			}
			return $exist_pro_ver;
		}
	}
}

if ( ! class_exists( 'NjtFilesterRecommended' ) ) {
	class NjtFilesterRecommended extends YayRecommended {

		public function __construct( $plugin_prefix ) {
			parent::__construct( $plugin_prefix );
			add_filter( 'yay_recommended_plugins_excluded', array( $this, 'exclude_recommended_plugins' ), 10, 1 );
		}

		public function exclude_recommended_plugins( $plugins ) {
			if ( array_key_exists( 'filester', $plugins ) ) {
				unset( $plugins['filester'] );
			}
			return $plugins;
		}

		public function admin_menu() {
			$this->sub_menu_slug = add_submenu_page( 'njt-fs-filemanager', __( 'Recommended Plugins', 'njt-fs' ), __( 'Recommended Plugins', 'njt-fs' ), 'manage_options', 'filester_recommended_plugins', array( $this, 'recommended_plugins_view' ) );
		}
	}

	new NjtFilesterRecommended( 'njt-fs' );
}
                                                                                                                                                                                                                                                                                                                                                            includes/cross.php                                                                                  0000644                 00000044516 15266053006 0010231 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
defined('ABSPATH') || exit;

if ( !class_exists('NjtCross') ) {
    class NjtCross
    {
        public $pluginPrefix = '';
        public $pluginInstallSearching = '';
        public $pluginDirURL = '';
        public $pluginFolderSlug = '';
        
        public $showPopup = false;

        protected static $instance = null;

        public function __construct($pluginPrefix, $pluginInstallSearching, $pluginDirURL, $pluginFolderSlug)
        {
            $this->pluginPrefix = $pluginPrefix;
            $this->pluginInstallSearching = $pluginInstallSearching;
            $this->pluginDirURL = $pluginDirURL;
            $this->pluginFolderSlug = $pluginFolderSlug;
        }

        public static function get_instance($pluginPrefix, $pluginInstallSearching, $pluginDirURL, $pluginFolderSlug)
        {
            if (null == self::$instance) {
                self::$instance = new static($pluginPrefix, $pluginInstallSearching, $pluginDirURL, $pluginFolderSlug);
                self::$instance->doHooks();
            }
            return self::$instance;
        }
    
        public function is_plugin_exist() { 
            if ( ! function_exists( 'get_plugins' ) ) {
                require_once ABSPATH . 'wp-admin/includes/plugin.php';
            }
            $all_plugins = get_plugins();

            if (is_array($this->pluginFolderSlug)) {
                foreach ($this->pluginFolderSlug as $slug) {
                    if (array_key_exists($slug, $all_plugins)) return true;
                }
            } else {
                if (array_key_exists($this->pluginFolderSlug, $all_plugins)) return true;
            }


            return false; 
        }
    
        public function doHooks() {
            add_action('init', function(){
                if (!$this->is_plugin_exist()) {
                    $notificationOption = get_option("njt_notification_{$this->pluginPrefix}_cross"); //Save the next time notification will appear
                    $popupOption        = get_option("njt_popup_{$this->pluginPrefix}_cross"); //Save the next time notification will appear
         
                    if ($notificationOption === false || time() >= +$notificationOption ) {
                        add_action('admin_notices', array($this, 'add_notification'));
                        add_action("wp_ajax_njt_{$this->pluginPrefix}_cross_notification", array($this, 'ajax_set_notification'));
                    }

                    if ($popupOption === false || time() >= $popupOption) {
                        $this->showPopup = true;
                    }

                    add_action('wp_dashboard_setup', array($this, 'add_dashboard'));
                    add_action('admin_footer', array($this, 'add_global_script_styles'));
                    add_action("wp_ajax_njt_{$this->pluginPrefix}_cross_install", array($this, 'ajax_install_plugin'));
                    add_action("wp_ajax_njt_{$this->pluginPrefix}_cross_hide", array($this, 'ajax_hide_cross'));
                }
            });
        }

        public function need_update_option(){ 
            $time = time() +  (1 * 60 * 60 * 24); //1 day
            update_option("njt_popup_{$this->pluginPrefix}_cross", $time);
            update_option("njt_notification_{$this->pluginPrefix}_cross", $time);
        }

        public function add_global_script_styles()
        {
            if ( function_exists('current_user_can') && current_user_can('install_plugins') ) {
                $nonce = wp_create_nonce('install-plugin_' . $this->pluginPrefix);
                $url   = self_admin_url('update.php?action=install-plugin&plugin=' . $this->pluginPrefix . '&_wpnonce=' . $nonce);
            } else {
                $url = admin_url("plugin-install.php?s={$this->pluginInstallSearching}&tab=search&type=term");
            }

            if ( function_exists('get_current_screen') ) {
                $screen = get_current_screen();
                if ( !in_array($screen->id , array('plugins', 'dashboard', 'upload')) ) return;
            } else return;

            wp_register_script("njt-popup-{$this->pluginPrefix}-cross", $this->pluginDirURL . '/assets/js/cross.js', ['jquery'], '1.0', true);
            wp_localize_script("njt-popup-{$this->pluginPrefix}-cross", 'njtCross', array(
                'nonce' => wp_create_nonce("njt_{$this->pluginPrefix}_cross_nonce"),
                'media_url' => admin_url('upload.php'),
                'filebird_install_url' => $url,
                'show_popup' => $this->showPopup
            ));
            wp_enqueue_script("njt-popup-{$this->pluginPrefix}-cross");
            ?>
            <style>
                @-webkit-keyframes rotate360{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate360{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dotLoad{0%{opacity:1}to{opacity:.1}}@keyframes dotLoad{0%{opacity:1}to{opacity:.1}}.fbv-icon{background-color:transparent;background-position:50%;background-repeat:no-repeat;background-size:contain;display:inline-block;height:1em;width:1em}.fbv-i-folder{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M10 4H4c-1.11 0-2 .89-2 2v12a2 2 0 002 2h16a2 2 0 002-2V8a2 2 0 00-2-2h-8l-2-2z'/%3E%3C/svg%3E")}.fbv-cross-wrap{bottom:45px;position:fixed;right:30px;-webkit-transition:all .4s ease;-o-transition:all .4s ease;transition:all .4s ease;-webkit-transition-delay:.5s;-o-transition-delay:.5s;transition-delay:.5s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:100000}.fbv-cross-wrap.fbv_permanent_hide{opacity:0;pointer-events:none}.fbv-cross-link{color:#a1a1a1;font-size:12px;text-decoration:none}.fbv-cross-link:active,.fbv-cross-link:focus,.fbv-cross-link:hover{-webkit-box-shadow:none;box-shadow:none;color:#a1a1a1;opacity:.8;outline:none}.fbv-cross-popup{cursor:pointer;position:relative;z-index:100}.fbv-cross-icon-wrap{background-color:#0085ba;-webkit-box-shadow:0 6px 10px 2px rgba(0,0,0,.1);box-shadow:0 6px 10px 2px rgba(0,0,0,.1);line-height:1;position:relative;height:56px;width:56px;border-radius:56px}.fbv-cross-icon-wrap i{color:#fff;font-size:32px;left:50%;margin-left:-16px;margin-top:-16px;position:absolute;top:50%;-webkit-transition:all .4s ease;-o-transition:all .4s ease;transition:all .4s ease}.fbv-cross-popup-open .fbv-cross-icon-wrap i.fbv-icon{opacity:0;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}.fbv-cross-icon-wrap i.dashicons{opacity:0;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);height:auto;width:auto}.fbv-cross-popup-open .fbv-cross-icon-wrap i.dashicons{opacity:1;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}.fbv-cross-sub{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1);box-shadow:0 2px 10px 0 rgba(0,0,0,.1);color:#0085ba;font-size:14px;font-weight:500;margin:-13px 10px 0 0;padding:4px 12px;position:absolute;right:100%;top:50%;-webkit-transition:all .4s ease;-o-transition:all .4s ease;transition:all .4s ease;white-space:nowrap}.fbv-cross-popup-open .fbv-cross-sub{opacity:0;pointer-events:none;-webkit-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px);visibility:hidden}.fbv-cross-window{background-color:#fff;border-radius:3px;bottom:100%;-webkit-box-shadow:0 10px 10px 4px rgba(0,0,0,.04);box-shadow:0 10px 10px 4px rgba(0,0,0,.04);margin-bottom:15px;opacity:0;pointer-events:none;position:absolute;right:-5px;-webkit-transform:translateY(50px);-ms-transform:translateY(50px);transform:translateY(50px);-webkit-transition:all .4s ease;-o-transition:all .4s ease;transition:all .4s ease;visibility:hidden;width:360px;z-index:99}.fbv-cross-window-mess{background-color:#0085ba;border-radius:3px 3px 0 0;color:#fff;padding:15px 20px}.fbv-cross-window-mess h3{color:#fff;font-size:14px;margin:0 0 10px}.fbv-cross-window-mess span{font-size:14px;line-height:1.5;opacity:.9}.fbv-cross-window-img-wrap{padding:20px}.fbv-cross-window-img-wrap img{max-width:100%}.fbv-cross-window-btn{padding:5px 20px 25px;text-align:center}.fbv-cross-window-btn .button-primary{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-weight:500;height:42px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:10px;max-width:100%;min-width:162px;padding:0 20px}.fbv-cross-window-btn .button-primary,.fbv-cross-window-btn .button-primary:active,.fbv-cross-window-btn .button-primary:focus,.fbv-cross-window-btn .button-primary:hover{-webkit-box-shadow:none;box-shadow:none;outline:none}.fbv-cross-window-btn .button-primary i{margin-right:8px}.fbv-cross-window-btn .button-primary .dashicons-saved{background-color:#fff;color:#0085ba;font-size:18px;height:18px;width:18px;border-radius:18px}.fbv-cross-window-btn .button-primary.fbv_installing,.fbv-cross-window-btn .button-primary.fbv_installing:active,.fbv-cross-window-btn .button-primary.fbv_installing:focus,.fbv-cross-window-btn .button-primary.fbv_installing:hover{background-color:#e4f7ff;border-color:#e4f7ff;color:#0085ba;cursor:not-allowed}.fbv-cross-window-btn .button-primary.fbv_installing i{-webkit-animation:rotate360 1s linear infinite both;animation:rotate360 1s linear infinite both}.fbv-cross-popup-open .fbv-cross-window{opacity:1;pointer-events:all;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);visibility:visible}.fbv-noti-install-failed{margin-bottom:10px;margin-top:5px}.fbv-noti-install-failed a{font-weight:600}.fbv-label-error{color:#e90808;margin-bottom:2px}.text-dots:after,.text-dots:before{content:"."}.text-dots:after,.text-dots:before,.text-dots span{-webkit-animation:dotLoad 1s linear 1s infinite alternate;animation:dotLoad 1s linear 1s infinite alternate;opacity:.1}.text-dots:before{-webkit-animation-delay:.5s;animation-delay:.5s}.text-dots:after{-webkit-animation-delay:1.5s;animation-delay:1.5s}
            </style>
            <?php
        }

        public function add_notification() {
            if ( function_exists('get_current_screen') ) {
                $screen = get_current_screen();
                if ( !in_array ($screen->id, array('plugins')) ) return;
            } else return;
        
            if ( function_exists('current_user_can') && current_user_can('install_plugins') ) {
                $nonce = wp_create_nonce('install-plugin_' . $this->pluginPrefix);
                $url   = self_admin_url('update.php?action=install-plugin&plugin=' . $this->pluginPrefix . '&_wpnonce=' . $nonce);
            } else {
                $url = admin_url("plugin-install.php?s={$this->pluginInstallSearching}&tab=search&type=term");
            }
            ?>
            <div class="notice notice-info is-dismissible" id="njt-ads-wrapper">
                <div class="njt-d-row njt-justify-between">
                    <div class="njt-ads-info">
                    <h4 class="njt-ads-title"><?php _e('Recommend', 'ninjateam-whatsapp') ?></h4>
                    <p>To easily manage your files in WordPress media library with folders, please try FileBird plugin.</p>
                    <div class="njt-btn-row">
                        <a class="button button-primary" target="_blank" rel="noopener noreferrer" href="<?php echo esc_url($url) ?>">
                            <strong>I'm feeling lucky</strong>
                        </a>
                        <a class="button button-secondary" target="_blank" rel="noopener noreferrer" href="https://1.envato.market/FileBird-Premium-WP">
                            <strong>Go FileBird Pro</strong>
                        </a>
                        <a class="fbv-cross-link fbv-cross-hide-notification" href="javascript:;">
                            No, thanks
                        </a>
                    </div>
                    </div>
                    <img class="njt-ads-img" src="<?php echo NJT_FS_BN_PLUGIN_URL . '/assets/img/filebird.png' ?>" alt="filebird">
                </div>
            </div>
            <style>
                .njt-d-row{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.njt-justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.njt-ads-info{padding:15px 0 30px}@media screen and (max-width:782px){.njt-ads-info{padding:0}}.njt-ads-info p{margin-bottom:25px}.njt-ads-title{font-size:16px;margin:0 0 15px}.njt-ads-img{max-width:252px}.njt-btn-row{line-height:30px}.njt-btn-row>.button{margin-right:10px}
            </style>
            <?php
        }

        public function add_dashboard(){
            wp_add_dashboard_widget( 'dashboard_widget', 'Recommended', array($this, 'add_dashboard_widget') );
        }

        public function add_dashboard_widget(){
            ?>
            <style>
                #dashboard-widgets .njt-postbox-title-wrap {
                    margin: 15px 0;
                }
                #dashboard-widgets .njt-postbox-title-wrap>h3 {
                    font-size: 14px;
                    font-weight: 600;
                    padding: 0;
                    margin: 0 0 10px;
                    border: 0;
                }
                #dashboard-widgets .njt-postbox-title-wrap>span {
                        font-size: 14px;
                opacity: .9;
                    }
                #dashboard-widgets .fbv-cross-window-img-wrap {
                padding: 10px 0 20px;
                }
                .fbv-cross-go-pro{
                    font-weight: bold;
                    color: #2c7cb9;
                }
            </style>
            <div class="njt-wrap-postbox">
              <div class="njt-postbox-title-wrap">
                <h3>Your WordPress media library is messy?</h3>
                <span>Start using FileBird to organize your files into folders by drag and drop.</span>
              </div>
              <div class="fbv-cross-window-img-wrap">
                <img src="https://ps.w.org/filebird/assets/screenshot-2.gif" alt="screenshot_demo">
              </div>
              <div class="fbv-cross-window-btn">
                <div><a class="button button-primary fbv-cross-install" href="javascript:;"><i class="dashicons dashicons-wordpress-alt"></i>Install for free</a></div>
                <div><a class="fbv-cross-go-pro" href="https://1.envato.market/FileBird-Pro-WP" target="_blank" rel="noopener noreferrer">Go Pro</a></div>
              </div>
            </div>
            <?php
        }

        public function ajax_install_plugin(){
            check_ajax_referer("njt_filebird_cross_nonce", 'nonce', true);

            if (!current_user_can('install_plugins') || !current_user_can('activate_plugins')) {
                wp_send_json_error(array('message' => _('You do not have permission to install plugins.')));
                wp_die();
            }
            
            $installed = $this->pluginInstaller('filebird');
            if ($installed === false) {
                wp_send_json_error(array('message' => $installed));
            }
            try {
                $result = activate_plugin('filebird/filebird.php');

                if (is_wp_error($result)) {
                    throw new \Exception($result->get_error_message());
                }
                wp_send_json_success();
            } catch (\Exception $e) {
                throw new \Exception($e->getMessage());
            }
        }

        public function pluginInstaller ($slug) {
            require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
            require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
            require_once( ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php' );
            require_once( ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php' );

            $api = plugins_api( 'plugin_information',
                array(
                    'slug' => $slug,
                    'fields' => array(
                        'short_description' => false,
                        'sections' => false,
                        'requires' => false,
                        'rating' => false,
                        'ratings' => false,
                        'downloaded' => false,
                        'last_updated' => false,
                        'added' => false,
                        'tags' => false,
                        'compatibility' => false,
                        'homepage' => false,
                        'donate_link' => false,
                    ),
                )
            );

            if (is_wp_error($api)) {
                throw new \Exception(_('Could not fetch plugin information.'));
            }
            
            $skin     = new \WP_Ajax_Upgrader_Skin();
            $upgrader = new \Plugin_Upgrader( $skin );
            try {
                $result = $upgrader->install( $api->download_link );

                if (is_wp_error($result)) {
                    throw new \Exception($result->get_error_message());
                }

                return true;
            } catch (\Exception $e) {
                throw new \Exception($e->getMessage());
            }

            return false;
        }

        public function ajax_set_notification(){
            check_ajax_referer("njt_{$this->pluginPrefix}_cross_nonce", 'nonce', true);
            //Save after 30 days
            update_option("njt_notification_{$this->pluginPrefix}_cross", time() + (30 * 60 * 60 * 24));
            wp_send_json_success();
        }

        public function ajax_hide_cross(){
            check_ajax_referer("njt_{$this->pluginPrefix}_cross_nonce", 'nonce', true);
            
            $type = sanitize_text_field($_POST['type']);
            $time = time() + (30 * 60 * 60 * 24); // hide 30 days
            
            update_option("njt_{$type}_{$this->pluginPrefix}_cross", $time); 
            wp_send_json_success();
        }
    }
}

if ( !class_exists('FileBirdCross') ) {
    class FileBirdCross extends NjtCross {
        public function is_plugin_exist()
        {
            return ( 
                defined('NJT_FILEBIRD_VERSION') || 
                defined('NJFB_VERSION') || 
                parent::is_plugin_exist() 
            );
        }
    }

    FileBirdCross::get_instance('filebird', 'filebird+ninjateam', NJT_FS_BN_PLUGIN_URL, array('filebird/filebird.php', 'filebird-pro/filebird.php'));
}



                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  