PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  4h^c@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd lm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ddlm-Z-ddl.m/Z/ddl.m0Z0ddl.m1Z1ddl.m2Z2ej3j4ej3j5e6Z7ej3j8e7dZ9e:e9j;j<Z=dZ>d fd!YZ?d"fd#YZ@d$e@fd%YZAd&e@fd'YZBgZCd(ejDfd)YZEd*eFfd+YZGd,eGfd-YZHd.eHfd/YZId0eHfd1YZJd2eGfd3YZKd4eGfd5YZLd6eKfd7YZMd8ZNd9ZOd:ZPeQaRd;ZSd<ZTd=fd>YZUd?ZVd@ZWdAZXdBeYfdCYZZdDeZfdEYZ[dFeZfdGYZ\dHeZfdIYZ]dJeZfdKYZ^dS(LiN(t asyncore_25(tprocess_or_group_name(tboolean(tinteger(t name_to_uid(t gid_for_uid(texisting_dirpath(t byte_size(t signal_number(tlist_of_exitcodes(tdict_of_key_value_pairs(t logfile_name(tlist_of_strings(t octal_type(texisting_directory(t logging_level(tcolon_separated_user_group(t inet_address(tInetStreamSocketConfig(tUnixStreamSocketConfig(turl(t Automatic(t auto_restart(tprofile_options(tloggers(tstates(txmlrpc(tpollers version.txtcCs(tjjtjjtjj|S(N(tostpathtnormpathtabspatht expanduser(tv((s6/usr/lib/python2.7/site-packages/supervisor/options.pytnormalize_path8stDummycBseZRS((t__name__t __module__(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR#;stOptionsc BseZejZejZejZeZdZZ ej dZ dZ dZ dZdZdZedZdZdZdZdddddddddd ZdZddddZedZd Zd Zd d Zd ZdZRS(icCs(g|_g|_g|_i|_i|_i|_i|_i|_||_|j d d dd|j |j dd ddt j jt j jtjd}t j j|ddt j j|ddd d d g}||_i|_x.t jjD]\}}||jd |tconfigR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytdefault_configfileps cCs[|jd}|jddkr:|jd|j}n|jj||jddS(sxPrint a long help message to stdout and exit(0). Occurrences of "%s" in are replaced by self.progname. s s%siN(tdoctfindtreplacetprognametstdouttwritetexit(R>tdummyR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR(}s  cCsB|jjdt||jjd|j|jddS(s2Print a brief error message to stderr and exit(2).s Error: %s sFor help, use %s -h iN(tstderrRKtstrRIRL(R>tmsg((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRCsc Cs|dk r|dk r'tdn| rD| rDtdn|rh|jdrhtdn|r|jdrtdn|d}n|r|r|jd|jdkrtd||fqn|r|ddkrtd n|d |d } } | dkr6td nd| } |jj| retd | n||f|j| <|jj|n|r(|ddkrtdn|} | ddkr| d } nd| } |jj| rtd| n||f|j| <|jj|n| rD||f|j| ss&inconsistent short/long options: %r %rit-s&short option should not start with '-'its"short option should be 'x' or 'x:'sduplicate short option key '%s's%long option should not start with '-'is--sduplicate long option key '%s'N(RWRQ(R5t ValueErrortendswithR.thas_keyR,tappendR-R1thasattrtsetattrR+R/R0( R>tnametconfnametshorttlongthandlertdefaulttrequiredRTtenvtkeytrest((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR4s\        cCsE|jj|d}||krAt|||||j|tattrtvaluetpriotcurrent((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt_sets c Cs|dkrtjd}n|dkr8tjd}n|dkr\ddl}|j}n||_||_g|_g|_y4t j |dj |j |j \|_|_Wn)t j k r}|jt|nX|jr|j r|jdt|jnx|jD]\}}|j|\}} | dk ry| |}Wqtk r} |jd||| fqXn|r|dk rt||dk r|jd|n|j||d qqWx|jjD]} |j| \}} tjj| rtj| } | dk rty| | } Wqttk rp} |jd | | | fqtXn|r| dk r|j|| dqqqW|jdkr|j|_n|jdS( sRealize a configuration. Optional arguments: args -- the command line arguments, less the program name (default is sys.argv[1:]) doc -- usage message (default is __main__.__doc__) iiiNRWs*positional arguments are not supported: %ssinvalid value for %s %r: %ss"conflicting command line option %ris'invalid environment value for %s %r: %s(R5R7R8t__main__t__doc__RIRFtoptionstargstgetoptR9R,R-terrorRCROtpositional_args_allowedR.RXtgetattrRmR1tkeysRR<RZR)REtprocess_config( R>RqRFRIRntexctoptRSR^RbRPtenvvarRj((s6/usr/lib/python2.7/site-packages/supervisor/options.pytrealizesX         . !   c Cs(|jr|j|nx{|jD]p\}}|r#|jd}|j}x-|D]%}|dkrjPnt||}qTW|j||dq#q#WxE|jj D]4\}}t||dkrt |||qqWxB|j j D]1\}}t||dkr|j |qqWdS(s}Process configuration data structure. This includes reading config file if necessary, setting defaults etc. t.iN( R)tprocess_config_fileR+tsplitt configrootR5RuRmR/R=R]R0RC( R>tdo_usageR^R_tpartstobjtpartRjtmessage((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRw+s"    cCst|jds9tjjtjj|j|_ny|j|jWn;tk r}|r{|j t |qt|nXdS(Ntread( R\R)RRRR6R?t read_configRXRCRO(R>RRP((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR}Js'cCstjj|S(N(RRRB(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRBXstrcCs t||S(N(topen(R>tfntmode((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR[sc Csg}x|jD]}|j|s.qn|jddd}|j||d}|dkr~td||fny|j|}Wn'tk rtd||fnXi} x<|j|D]+} | |kr|j|| | | tparsert factory_keytsection_prefixt factoriestsectionR^t factory_spectfactorytextrasR@((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt get_plugins^s(   cCs@tjjd|}t|dr/|jS|jtSdS(Nsx=tresolve(t pkg_resourcest EntryPointtparseR\RtloadtFalse(R>tspectep((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRxs N(R$R%R7RNRJRLtwarningsR5tuidtgidR8RIR)t schemadirRR?RttTrueRARER(RCR4RmR{RwR}RBRRR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR&>s@       K C     t ServerOptionscBsleZd9Zd9Zd9Zd9Zd9Zd9Zd9Z d9Z d9Z d:Z e Ze ZejjZdZdZe dde dZdZdZedZdZdZd Zd9d Zd9d Zd Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3d Z4d!Z5d"Z6d#Z7d$Z8d%Z9d&Z:d'Z;d(Z<d)Z=d*Z>d+Z?d,Z@d-ZAd.ZBd/ZCd0ZDd1ZEd2ZFd3ZGd4ZHd5ZIed6ZJd7ZKd8ZLRS(;c Cstj|t|_t|j_|jdddd|j|jdddddddd |jd d d d |jddddtdd|jddddt |jddddt dd|jddddt ddM|jd"d#d$d%t dd&|jd'd(d)d*t dd+|jd,d-d.d/t dd0|jd1d2d3d4tdd5|jd6d7d8d9t dtj|jd:d;d<d=tdd!|jd>d?d@dAtddB|jdCdDdEdCdddd |jdFdGdHdFdddd |jdIdJd@dKtddi|_g|_g|_g|_g|_t|_tj||_dS(NNR!tversiontnodaemonssupervisord.nodaemontnRTiRcituserssupervisord.usersu:suser=tumaskssupervisord.umasksm:sumask=t022t directoryssupervisord.directorysd:s directory=tlogfilessupervisord.logfilesl:slogfile=ssupervisord.logtlogfile_maxbytesssupervisord.logfile_maxbytessy:slogfile_maxbytes=i2itlogfile_backupsssupervisord.logfile_backupssz:slogfile_backups=i tloglevelssupervisord.loglevelse:s loglevel=tinfotpidfilessupervisord.pidfilesj:spidfile=ssupervisord.pidt identifierssupervisord.identifiersi:s identifier=t supervisort childlogdirssupervisord.childlogdirsq:s childlogdir=tminfdsssupervisord.minfdssa:sminfds=tminprocsssupervisord.minprocsRWs minprocs=it nocleanupssupervisord.nocleanupR@t strip_ansissupervisord.strip_ansittRssupervisord.profile_optionssprofile_options=ii (R&RAR#Rt supervisordR4R5RR RRRRRROttempfilet gettempdirtintRt pidhistorytprocess_group_configstparse_criticalstparse_warningst parse_infostSignalReceivertsignal_receiverRtPoller(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAsV                     cCs%|jjdt|jddS(s-Print version to stdout and exit(0). s%s iN(RJRKtVERSIONRL(R>RM((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRsicCstj|||||||S(N(Rt getLogger(R>tfilenametleveltfmttrotatingtmaxbytestbackupsRJ((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCs2tjdkr%|jjdntj|S(NisSupervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.(RtgetuidRtwarnR&RE(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyREs  c Ostj||||jj}|jdk ryt|j}Wn tk rc}|j|nX||_ t ||_ n|j s|j |_ n|j r|j }n |j }t||_ |jr|j}n |j}t||_|j|_d|_|j|_}xLg|D]} | dtjkr | ^q D]} | d} d| |_PqCW|jdkrxmg|D]} | dtjkr~| ^q~D]<} | d} | d} | sd} nd| | f|_qWn|j|_dS(Ntfamilytfiles unix://%sthosttportt localhosts http://%s:%s(R&R{RRRR5RRXRCRRRRRR"Rtrpcinterface_factoriest serverurltserver_configstsockettAF_UNIXtAF_INETR( R>RStkwRRRPRRtsconfigsRDRRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR{sH           #  #   cCs/tj|d||jjj}||_dS(NR(R&RwRRR(R>Rtnew((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRwscsg|_g|_g|_|jj}t|ds|j|sXtd|ny|j|d}Wqt t fk rtd|qXnt |j _ yj|Wn(tjk r}tt|nXtj}i|jd6|d6}|j|j jdrwjddsOtd njdd}t||d }|j}t|d rtjjtjj|j}nd }x|D]}tjj ||}t!j!|} | s |jj"d |qnxdt#| D]V} |jj"d| yj$| Wqtjk rk}tt|qXqWqWnj%} d| krtdni|jd6fd} t&| dd|_'t&| dd|_(| dd} | dkrd|_*nt+| |_*| dd|_,t-| dd|_.t/| dd|_0t1| dd|_2t&| dd|_3t4| d d!|_5t/| d"d#|_6| d$d%|_7t8| d&d'|_9t:j;}t+| d(||_<t8| d)d'|_=t8| d*d'|_>| d+d,}t||d+}t?||_@|jAd-d.|_B|jC|_DxM|jDD]B}x9|jED].}|j@jF}|j|j@||_@qWqW|jG|_Hd|_I|S(/NRscould not find config file %sRscould not read config file %sR?thost_node_nametincludetfiless5.ini file has [include] section, but no files settings include.filesR^R|s No file matches via include "%s"s'Included extra file "%s" during parsingRs..ini file does not include supervisord sectioncs<|jdi}|j||d<j|||S(Nt expansions(Rhtupdatet getdefault(RyRctkwargsR(tcommon_expansionsR(s6/usr/lib/python2.7/site-packages/supervisor/options.pyRhQs  RiRiRRRRRssupervisord.logRt50MBRi RRRssupervisord.pidRRRtfalseRRRt environmentRWssupervisor.rpcinterface_factorys rpcinterface:(JRRRRRR\RBRXRtIOErrortOSErrortUnhosedConfigParserR;Rtreadfpt ConfigParsert ParsingErrorROtplatformtnodeR?Rt has_sectiont has_optionRhtexpandR~RRR6RR^R9tglobR[tsortedRRRRRR5RRRR RRRRRRRRRRRRRRRRRR RRRtprocess_groups_from_parserRtprocess_configstcopytserver_configs_from_parserRR(R>tfpRtwhyRRRtbasetpatternt filenamesRRRhRttempdirt environ_strtgrouptprocRe((RRs6/usr/lib/python2.7/site-packages/supervisor/options.pyRs          $     !       c# sg}j}g}i|jd6fd}xe|D]]}|jds\qAnt|jddd}t||dd}t||dd} g} x|D]} d | } d | } | |kr| |krtd || fn| |kr1| |kr1td || fn| |krF| }n| }|j ||j ||t }| j |qW|j t ||| | qAWx|D]}|jd  s||krqnt|jddd}t||dd} |j ||t }|j t ||| |qWx |D]}|jds_qDn|jddd}t||dd} t||dd}|dkrtd||fn||dd}y|j|}Wn'tk rtd||fnXgt||ddD]}|j^q2}t|}|sotd|nddlm}g}xR|D]J}t||d}|dkrtd||fn|j |qWt||dd}|r td|n|j ||t}|j t||| ||||qDWxe|D]]}|jd sS||kr{qSnt|jddd}t||dd} i|d6}||d d}|dkrd}n t|}||d!d}|dk rGt|}|dks1|d"krGtd#|qGn||d$d}|dk ryt|}Wqtk rtd%|qXn||d&d}|dk ryt|}Wqttfk rtd'|qXn||d(dd)|} | s(td*|ny|j| ||||}!Wn/tk rx}"td+t|"|fnX|j ||t}|j t||| ||!qSW|j |S(,NR?cs?|jdi}|j||d<j||||S(NR(RhRR(RRyRcRR(RR(s6/usr/lib/python2.7/site-packages/supervisor/options.pyRhs  sgroup:RQitprogramstpriorityis program:%ssfcgi-program:%ss-[%s] names unknown program or fcgi-program %ss>[%s] name %s is ambiguous (exists as program and fcgi-program)sprogram:seventlistener:it buffer_sizei s*[%s] section sets invalid buffer_size (%d)tresult_handlers&supervisor.dispatchers:default_handlers!%s cannot be resolved within [%s]teventsRWs&[%s] section requires an "events" line(t EventTypess$Unknown event type %s in [%s] eventstredirect_stderrRsx[%s] section sets redirect_stderr=true but this is not allowed because it will interfere with the eventlistener protocols fcgi-program:t program_nameRtsocket_backlogisInvalid socket_backlog value %st socket_ownersInvalid socket_owner value %st socket_modesInvalid socket_mode value %sRRs%[%s] section requires a "socket" lines%s in [%s] socket(!RR?RRR~R R5RRXR[tprocesses_from_sectiont ProcessConfigtextendtProcessGroupConfigRRtuppertsettsupervisor.eventsR RuRtEventListenerConfigtEventListenerPoolConfigRRR t TypeErrortparse_fcgi_socketROtFastCGIProcessConfigtFastCGIGroupConfigtsort(#R>Rtgroupst all_sectionsthomogeneous_excludeRhRt group_nameRRtgroup_processestprogramtprogram_sectiont fcgi_sectiont processesR t pool_nameRRtxtpool_event_namesR t pool_eventstpool_event_namet pool_eventR tfcgi_expansionst proc_usertproc_uidR RRRt socket_configte((RRs6/usr/lib/python2.7/site-packages/supervisor/options.pyRs                  .                       c CsX|jdr|d}tjj|s=td|nt|}|dkrtj}|dk r||kr|t|f}qn|dkrt dd}nt |d|d|d|S|dk s|dk rtd d nt j d |}|rE|j d } t |j d } t| | d|Std|dS(Nsunix://is+Unix socket path %s is not an absolute patht700itownerRtbacklogs*socket_owner and socket_mode params shoulds' only be used with a Unix domain socketstcp://([^\s:]+):(\d+)$iisBad socket format %s(RRRtisabsRXR"R5RRRRtretmatchRR( R>tsockR/RRR RRtmRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR1s2        cCsey|j||||SWnDtk r`}|jj||j}td|||fnXdS(Ns%s in section %r (file: %r)(t_processes_from_sectionRXtsection_to_fileRhR)(R>RRR!tklassR1R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRTsc.=s|dkrt}ng}t|jddd}tj}i|jd6|d6|d6|d6fd}t||dd } t||d d } t ||d d } t||dd} t||dd} t ||dd}t||dd}t||dd}t||d|}t ||dd}t||dd}t||dd}t||dd}||ddd t }t ||d!d"}t||d#d}t ||d$d"}t||d%d}||d&d}|rc|jjd'krcd}n||d(d}|dkrd}n t|}||d)d}|dk rt|}nt||d*d+d t }|dkr d,|kr td-q n|r'| r'td.nxt|||D]} }!|!ji| d/6|!j|jtt||!d}"||d0d}#i}$xdDD]}%d3|%}&|||&t}'t|'trt|'|!|&}'nt|'}'|'|$|&|d?|$d?d!|d#|d@|$d@dA|$dAd8|$d8d$|d%|dB|$dBdC|$dCd|d|d|d|d|d|d|"d&|}-|j|-q;W|j|S(ENRQiR?R RR!cs?|jdi}|j||d<j||||S(NR(RhRR(RRyRqRR(RR(s6/usr/lib/python2.7/site-packages/supervisor/options.pyRhjs  Rit autostartttruet autorestartt unexpectedt startsecst startretriesit stopsignaltTERMt stopwaitsecsi t stopasgroupRt killasgroupt exitcodess0,2R tnumprocstnumprocs_startiRRWt do_expandtstdout_capture_maxbytest0tstdout_events_enabledtstderr_capture_maxbyteststderr_events_enabledRtAUTORRt process_names%(program_name)ss%(process_num)sD%(process_num) must be present within process_name when numprocs > 1s1Cannot set stopasgroup=true and killasgroup=falset process_numRRJRNs %s_logfiles%s_logfile_backupss%s_logfile_maxbytesRstFor [%s], AUTO logging used for %s without rollover, set maxbytes > 0 to avoid filling up filesystem unintentionallytstderr_logfilespFor [%s], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignoredtcommandRs-program section %s does not specify a commandR^Rtstdout_logfiletstdout_logfile_backupststdout_logfile_maxbyteststderr_logfile_backupststderr_logfile_maxbytes(sstdoutsstderr(R5RRR~RRR?RRRRR RRtstripRRR RXtrangeRR;R RRt isinstancet basestringR RR[R(.R>RRR!R<RR RRhRR=R?RARBRCRERFRGRHR RIRJtenvironment_strtstdout_cmaxbytest stdout_eventststderr_cmaxbytest stderr_eventsRRRRRRRSRRRtlogfilesR@Rtlf_valtbu_keyRtmb_keyRRUtpconfig((RRs6/usr/lib/python2.7/site-packages/supervisor/options.pyR:^s                                   cCs}g}xp|jD]b}|j|r|jdd}t|dkrY|d}nd}|j||fqqW|S(NRQi(RRR~tlenR5R[(R>RtstypeRpRRR^((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt_parse_servernamess cCs|j}||dd}||dd}|dk sE|dk rs|dks]|dkrstd|qsni|d6|d6S(NtusernametpasswordsSection [%s] contains incomplete authentication: If a username or a password is specified, both the username and password must be specified(RR5RX(R>RRRhRlRm((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt_parse_username_and_passwords c Csg}|j|d}x|D]\}}i}|j}|j|j||||dRtconfigstinet_serverdefsR^RRDRhRRtunix_serverdefstsfileRqRr((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs^        "          cCs(|jj|j|jjdS(N(Rtbefore_daemonizet _daemonizetafter_daemonize(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt daemonizeCs  cCsTtj}|dkr8|jjdtjdn|jjd|jrytj|jWn0tk r}|jj d|j|fqX|jjd|jntj dt d|_ t _ t _tj dt dd|_t _t _tj d t dd|_t _t _tjtj|jdS( Nis"supervisord forked; parent exitings#daemonizing the supervisord processscan't chdir into %r: %ssset current directory: %rs /dev/nullitwi(Rtforktloggertblathert_exitRRtchdirRtcriticaltcloseRtstdinR7t __stdin__RJt __stdout__RNt __stderr__tsetsidR(R>tpidterr((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRxHs*           cCstj}y1t|jd}|jd||jWn.ttfk rm|jj d|jnXt |_ |jj d|dS(NR{s%s scould not write pidfile %sssupervisord started with pid %s( RtgetpidRRRKRRRR}RRtunlink_pidfileR(R>Rtf((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt write_pidfile|s  cCsxP|jD]E\}}|dtjkr |jrO|d}|j|qOq q W|jro|j|jn|jjdS(NRR( t httpserversRRtunlink_socketfilest _try_unlinkRRRR(R>RDtservert socketname((s6/usr/lib/python2.7/site-packages/supervisor/options.pytcleanups   cCs)ytj|Wntk r$nXdS(N(RtunlinkR(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs cCsg}xl|jD]a\}}|jxH|jjD]4}t|dd}||kr9|j|q9q9WqWx|D]}|jq|WdS(NR(RRtget_socket_maptvaluesRuR5R[(R>tdispatcher_serversRDRt dispatchertdispatcher_server((s6/usr/lib/python2.7/site-packages/supervisor/options.pytclose_httpserverss   cCs|jjdS(N(R}R(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt close_loggerscCs|jj}tjtj|tjtj|tjtj|tjtj|tjtj|tjtj|dS(N( RtreceivetsignaltSIGTERMtSIGINTtSIGQUITtSIGHUPtSIGCHLDtSIGUSR2(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt setsignalss cCs |jjS(N(Rt get_signal(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCsy|j||_t|_Wntjk r}|jdtjkrZ|j dqd}tj j |jd}|dkr|j d||jdfq|j d|||jdfn't k r}|j |jdnXdS(NisAnother program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.s1Cannot open an HTTP server: socket.error reporteds%s %ss%s errno.%s (%d)(tmake_http_serversRRRRRsRqterrnot EADDRINUSERCt errorcodeRhR5RX(R>RRR(t errorname((s6/usr/lib/python2.7/site-packages/supervisor/options.pytopenhttpserverss  ! cCs8d|||f}|jddd|d|j}|S(Ns %s-%s---%s-tsuffixs.logtprefixtdir(t mktempfileR(R>R^RtchannelRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytget_autochildlog_names   cCs|j}tjd|j}ytj|}Wn(ttfk r\|jj ddSXxt|D]l}|j |rdtj j ||}y|j |Wqttfk r|jj d|qXqdqdWdS(Ns.+?---%s-\S+\.log\.{0,1}\d{0,4}sCould not clear childlog dirsFailed to clean up %r(RR6tcompileRRtlistdirRRR}RR7RR9tremove(R>RtfnreRRtpathname((s6/usr/lib/python2.7/site-packages/supervisor/options.pytclear_autochildlogdirs  cCstjS(N(tasyncoret socket_map(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCsLd}x?t||jD]+}ytj|Wqtk rCqXqWdS(Ni(R\RRRR(R>tstartR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt cleanup_fdss  cCstj||dS(N(Rtkill(R>RR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCsytjdtj\}}Wn}tk r}|jd}|tjtjfkrm|jj d|n|tjkr|jj dnd\}}nX||fS(Niis:waitpid error %r; a process may not be cleaned up properlysEINTR during reap(NN( RtwaitpidtWNOHANGRRqRtECHILDtEINTRR}RR~R5(R>RtstsRxtcode((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs    cCs|dkrdSyt|}WnGtk riytj|}Wntk r[d|SX|d}n-Xytj|}Wntk rd|SXtj}||krdS|dkrdS|d}t td rQ|d}gt j D] }||dkr|d^q}|j d|ytj |WqQtk rMd SXnytj|Wntk rvd SXtj|dS( sDrop privileges to become the specified user, which may be a username or uid. Called for supervisord startup and when spawning subprocesses. Returns None on success or a string error message if privileges could not be dropped.sNo user specified to setuid to!sCan't find username %risCan't find uid %rNis$Can't drop privilege as nonroot userit setgroupss&Could not set groups of effective users(Could not set group id of effective user(R5RRXtpwdtgetpwnamtKeyErrortgetpwuidRRR\tgrptgetgralltinsertRRtsetgidtsetuid(R>RRtpwrect current_uidRtgrprecR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytdrop_privilegessD             cCs|jdkr7tjdkr||jjdq|nE|j|j}|dkro|jjd|jn |j|dS(sSet the uid of the supervisord process. Called during supervisord startup only. No return value. Exits the process via usage() if privileges could not be dropped.isSupervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.sSet uid to user %s succeededN( RR5RRRR[RRRC(R>RP((s6/usr/lib/python2.7/site-packages/supervisor/options.pytset_uid_or_exitMs  c Cs~g}ttdrG|jidd6|jd6tjd6dd6nttdr|jidd6|jd6tjd6dd6nx|D]}|d}|d}|d}|d}|}tj|\}}||kr|d kr||kr|d kr|}ny1tj|||f|j jd t Wqvtj t fk rr|j |t qvXqqWd S( sSet the rlimits of the supervisord process. Called during supervisord startup only. No return value. Exits the process via usage() if any rlimits could not be set.t RLIMIT_NOFILEsThe minimum number of file descriptors required to run this process is %(min_limit)s as per the "minfds" command-line argument or config file setting. The current environment will only allow you to open %(hard)s file descriptors. Either raise the number of usable file descriptors in your environment (see README.rst) or lower the minfds setting in the config file to allow the process to start.RPtmintresourceR^t RLIMIT_NPROCsThe minimum number of available processes required to run this program is %(min_limit)s as per the "minprocs" command-line argument or config file setting. The current environment will only allow you to open %(hard)s processes. Either raise the number of usable processes in your environment (see README.rst) or lower the minprocs setting in the config file to allow the program to start.is)Increased %(name)s limit to %(min_limit)sN(R\RR[RRRRt getrlimitt setrlimitRtlocalsRsRXRC( R>tlimitstlimitt min_limittresRPR^tsoftthard((s6/usr/lib/python2.7/site-packages/supervisor/options.pytset_rlimits_or_exit`s>           c Csd}tj|j|j|dtd|jd|jd|j|_x!|j D]}|jj |qOWx!|j D]}|jj |qsWx!|j D]}|jj|qWdS(Ns&%(asctime)s %(levelname)s %(message)s RRRRJ(RRRRRRRRR}RRRRRR(R>tformatRP((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt make_loggers  cCsddlm}|||S(Ni(R(tsupervisor.httpR(R>RR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCs)ytj|Wntk r$nXdS(N(RRR(R>tfd((s6/usr/lib/python2.7/site-packages/supervisor/options.pytclose_fds cCs tjS(N(RR|(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR|scCstj||S(N(Rtdup2(R>tfrmtto((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCs tjS(N(Rtsetpgrp(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCs tj|S(N(Rtstat(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCstj||S(N(RRK(R>Rtdata((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRKscCstj|||S(N(Rtexecve(R>RR8Re((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCs5dt_tj|||\}}tj||S(N(R5Rt _urandomfdRtmkstempR(R>RRRRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs  cCstj|dS(N(RR(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCstj|dS(N(RR(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRscCstj|dS(N(RR(R>tmask((s6/usr/lib/python2.7/site-packages/supervisor/options.pytsetumaskscCsPdddg}tjjdrLtjd}|rL|jtj}qLn|S(s3Return a list corresponding to $PATH, or a default.s/bins/usr/bins/usr/local/bintPATH(RR<RZR~tpathsep(R>Rtp((s6/usr/lib/python2.7/site-packages/supervisor/options.pytget_paths  cCs tjS(N(RR(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pytget_pidscCs|dkrtd|ntj|tjrHtd|n^tj|tjtdd@s~td|n(tj |tj st d|ndS(Nscan't find command %rscommand at %r is a directoryt111iscommand at %r is not executablesno permission to run command %r( R5tNotFoundRtS_ISDIRtST_MODEt NotExecutabletS_IMODERRtaccesstX_OKt NoPermission(R>RR8tst((s6/usr/lib/python2.7/site-packages/supervisor/options.pytcheck_execv_argss #cCsG|jjdx0|jjD]"}t|dr|jqqWdS(Nssupervisord logreopentreopen(R}RthandlersR\R(R>Rb((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt reopenlogsscCsaytj|d}WnDtk r\}|jdtjtjtjfkrSnd}nX|S(NiiiRWi(RRRRqRt EWOULDBLOCKtEBADFR(R>RRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytreadfds% cCstjj|jpidS(N(RR<RR(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pytprocess_environmentscCstj|dS(N(RR(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRsc Cskidd6dd6dd6dd6dd6dd6}ytj\}}|||d<|dRNtpipesRRRJRR Rtflags((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt make_pipes s0  "   cCs@x9dD]1}|j|}|dk r|j|qqWdS(NRRJRN(sstdinsstdoutsstderr(RhR5R(R>RtfdnameR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytclose_parent_pipes*s  cCs@x9dD]1}|j|}|dk r|j|qqWdS(NRRR (s child_stdins child_stdouts child_stderr(RhR5R(R>RRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytclose_child_pipes0s  N((MR$R%R5Rt sockchownt sockchmodRRRt passwdfileRRRRRRRtSupervisorStatestRUNNINGtmoodRARRRER{RRwRRRRR:RkRnRRzRxRRRRRRRRRRRRRRRRRRRRR|RRRRKRRRRRRRRRRRRRRR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs  .  <  k $ 5  4           9  <                  t ClientOptionscBsVeZdZdZdZdZdZdZdZ dZ dZ dZ dZ RS(ic CsPtj|dtt|_t|j_d|jj_d|jj_d|jj_ d|jj_ d|jj_ d|jj_ ddl m}d|if}|g|_|jddddd d dd |jd d dd|jddddtdd|jdddd|jdddd|jdddddS(NR3Ri(tDefaultControllerPluginRct interactivessupervisorctl.interactivetiRTiitpromptssupervisorctl.promptRssupervisorctl.serverurlss:s serverurl=shttp://localhost:9001Rlssupervisorctl.usernamesu:s username=Rmssupervisorctl.passwordsp:s password=thistoryssupervisorctl.history_filesr:s history_file=(R&RARR#Rt supervisorctlR5RRRRlRmt history_filetsupervisor.supervisorctlRtplugin_factoriesR4R(R>Rtdefault_factory((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRA@s(   cOs,tj||||js(d|_ndS(Ni(R&R{RqR(R>RSR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR{Zs cCs |jj}t|dstjjt||_|j|sXt d|ny|j |d}Wqt t fk rt d|qXnt }|j|_d|_|j||j}d|krt dn|jddd i|jd 6}|jd r;t|d }d |}n||_|jd|j|_|jd|j|_|jd|j|_|jd|jd i|jd 6}|rt|}||_||_nd|_d|_|j|j|dd7_|S(NRscould not find config file %sRscould not read config file %sR!s0.ini file does not include supervisorctl sectionRshttp://localhost:9001RR?sunix://is unix://%sRRlRmR"ssupervisor.ctl_factorys ctlplugin:(RR!R\RRR6R"R?RBRXRRRRR;Rt mysectionRRRRRRRlRmR"R5R$R(R>RRRRRRR"((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR_sL                cCs+tjddtj|j|j|jS(Nshttp://127.0.0.1t transport(t xmlrpclibt ServerProxyRtSupervisorTransportRlRmR(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pytgetServerProxys  N(R$R%RtR5RRRRlRmR"RAR{RR+(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR6s   0RcBsJeZdZdZdZdZeeidZeidZ RS(RcOs,tjj|||i|_i|_dS(N(RtRawConfigParserRAR;R(R>RqR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAs cCs)ddlm}||}|j|S(Ni(tStringIO(R-R(R>tsR-((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt read_strings cKst|tr|g}ng}xv|D]n}|jj}|jtjj||g|t|jt|}x|D]}||j |RRt ok_filenamesRt sections_origtdiffR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs   cCsy|j||}Wn,tjk rD|tkr;qE|}nX|rt|trtt|jj t|j }t ||d||f}n|S(Ns%s.%s( RhRt NoOptionErrort_markerR]R^tdicttlistRR=R(R>RtoptionRcRKRtoptvaltcombined_expansions((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs  ( cKs"|j|j|d|d||S(NRcR(RR&(R>R9RcRR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs( R$R%R&RAR/RR6RRR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs    tConfigcBs>eZdZdZdZdZdZdZRS(cCs|j| S(N(t__eq__(R>tother((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__ne__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__lt__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__le__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__gt__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__ge__scCsd|jt||jfS(Ns<%s instance at %s named %s>(t __class__tidR^(R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt__repr__s(R$R%R?R@RARBRCRF(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR<s      RcBseZdddddddddd d d d d ddddddddddddgZddgZdZdZdZdZd"d Z d!Z RS(#R^RRURRRR=R?RARBRVRLRNRWRXRTRORYRZRPRCRERFRGRHR RRcKse||_x%|jD]}t||||qWx-|jD]"}t|||j|dq;WdS(N(Rptreq_param_namesR]toptional_param_namesRhR5(R>RptparamsR^((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAs  cCs~t|tstSxd|j|jD]R}tt||t||gkrTq$nt||t||kr$tSq$WtS(N(R]RRRGRHRRuR(R>R>R^((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR= s$cCsM|jdk r@|jjd}|dk r@|jtjSn|jjS(s|Return a list corresponding to $PATH that is configured to be set in the process environment, or the system default.RN(RR5RhR~RRRpR(R>R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs  cCss|jj}|jj}|j}|jtkrH|||d|_n|jtkro|||d|_ndS(NRJRN(RpRRR^RVRRT(R>t get_autonametsidR^((s6/usr/lib/python2.7/site-packages/supervisor/options.pytcreate_autochildlogs!s   cCs)ddlm}||}||_|S(Ni(t Subprocess(tsupervisor.processRMR(R>RRMtprocess((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt make_process+s  c Cs|j }|jj|}|d|d|d}}}i}ddlm}ddlm} ddlm} |dk r| j } ||| |||Rt use_stderrRt stdout_fdt stderr_fdtstdin_fdt dispatchersRQRRR tetype((s6/usr/lib/python2.7/site-packages/supervisor/options.pytmake_dispatchers1s        N( R$R%RGRHRAR=RRLR5RPR\(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs"      RcBseZdZRS(c Cst}|jj|}|d|d|d}}}i}ddlm}ddlm} ddlm} ddlm} |dk r||d|||RRVRRWRXRYRZR]RRRQR R[((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR\Ds"      (R$R%R\(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRCsRcBseZddZdZRS(cCsD|dkrtdnddlm}||}||_|S(Ns FastCGI programs require a groupi(tFastCGISubprocess(R5tNotImplementedErrorRNR^R(R>RR^RO((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRP[s    cCsItj||\}}|d}|dk r?||jn||fS(NR(RR\R5R(R>RRZRRY((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR\cs   N(R$R%R5RPR\(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRYs RcBs,eZdZdZdZdZRS(cCs(||_||_||_||_dS(N(RpR^RR(R>RpR^RR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAns   cCsYt|tstS|j|jkr)tS|j|jkr?tS|j|jkrUtStS(N(R]RRR^RRR(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR=tscCs"x|jD]}|jq WdS(N(RRL(R>RD((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt after_setuidscCsddlm}||S(Ni(t ProcessGroup(RNRa(R>Ra((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt make_groups(R$R%RAR=R`Rb(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRms  RcBs,eZdZdZdZdZRS(cCsC||_||_||_||_||_||_||_dS(N(RpR^RRRR*R(R>RpR^RRRR*R((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAs      cCst|tstS|j|jkr|j|jkr|j|jkr|j|jkr|j|jkr|j|jkrt StS(N( R]RRR^RRRR*RR(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR=scCs"x|jD]}|jq WdS(N(RRL(R>RD((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR`scCsddlm}||S(Ni(tEventListenerPool(RNRc(R>Rc((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRbs(R$R%RAR=R`Rb(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs  RcBs#eZdZdZdZRS(cCs&tj|||||||_dS(N(RRAR0(R>RpR^RRR0((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRAscCs9t|tstS|j|jkr)tStj||S(N(R]RRR0RR=(R>R>((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR=s cCsddlm}||S(Ni(tFastCGIProcessGroup(RNRd(R>Rd((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRbs(R$R%RAR=Rb(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs c Cs7t|}t|}yt|d}||kr|rKtdn|jdd|j}t||}|dkrd}n|j||j|}na||krtdn|dkr|j||j}n|j|}|j|}Wn#ttfk r2tdnX|S(sJ Read length bytes from the file named by filename starting at offset trbt BAD_ARGUMENTSiitFAILED( tabsRRXtseekttellRRRR( Rtoffsettlengtht absoffsett abslengthRtsztposR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytreadFiles0          cCs$t}yt|d}|jdd|j}|||krWt}|d}n|||kr||dkrd}n||}n|dkrd}n|dkrd}n|dkrd}n|j||j|}|}|||gSWn!ttfk rd|tgSXdS(s Read length bytes from the file named by filename starting at offset, automatically increasing offset and setting overflow flag if log size has grown beyond (offset + length). If length bytes are not available, as many bytes as are available are returned. ReiiiRWN(RRRiRjRRRR(RRkRltoverflowRRoR((s6/usr/lib/python2.7/site-packages/supervisor/options.pyttailFiles0         cCstj|r6tj|d@}d|}||fStj|rtj|}dt|}ttdrtj|}n |d@}|r|d7}nd|fSd|}d|fSd S( s*Decode the status returned by wait() or waitpid(). Return a tuple (exitstatus, message) where exitstatus is the exit status, or -1 if the process was killed by a signal; and message is a message telling what happened. It is the caller's responsibility to display the message. isexit status %ssterminated by %st WCOREDUMPis (core dumped)is unknown termination cause 0x%04xN(Rt WIFEXITEDt WEXITSTATUSt WIFSIGNALEDtWTERMSIGtsignameR\Rt(RtesRPtsigtiscore((s6/usr/lib/python2.7/site-packages/supervisor/options.pytdecode_wait_status s      cCs-tdkrtntj|p,d|S(sReturn a symbolic name for a signal. Return "signal NNN" if there is no corresponding SIG name in the signal module. s signal %dN(t _signamesR5t_init_signamesRh(R{((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRy(s  cCszi}xgtjjD]V\}}t|dd}|dkrFqn|dr|d r|||((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRA?scCs&||jkr"|jj|ndS(N(RR[(R>R{tframe((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRBscCs(|jr|jjd}nd}|S(Ni(RtpopR5(R>R{((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRFs (R$R%RARR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR>s  cCsy ||SWntk rh}t|j}|jtd||t|dj|fn2tk r}td||t|fnXdS(NsYFormat string %r for %r contains names (%s) which cannot be expanded. Available names: %ss, s.Format string %r for %r is badly formatted: %s(RR8RvRRXROR9t Exception(R.RR^text available((s6/usr/lib/python2.7/site-packages/supervisor/options.pyROs  (cCs)||kr|}nd||f}|S(Ns%s:%s((R!RRR^((s6/usr/lib/python2.7/site-packages/supervisor/options.pyt make_namespec_s  cCsf|jdd}t|dkrO|\}}| sC|dkr\d}q\n ||}}||fS(NRQiit*(R~RiR5(tnamespectnamesR!RR((s6/usr/lib/python2.7/site-packages/supervisor/options.pytsplit_namespecis   tProcessExceptioncBseZdZRS(s@ Specialized exceptions used when attempting to start a process (R$R%Ro(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRwst BadCommandcBseZdZRS(s5 Indicates the command could not be parsed properly. (R$R%Ro(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRzsRcBseZdZRS(s Indicates that the filespec cannot be executed because its path resolves to a file which is not executable, or which is a directory. (R$R%Ro(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyR}sRcBseZdZRS(sR Indicates that the filespec cannot be executed because it could not be found (R$R%Ro(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRsRcBseZdZRS(s Indicates that the file cannot be executed because the supervisor process does not possess the appropriate UNIX filesystem permission to execute the file. (R$R%Ro(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyRs(_RRRrRR7RRRR6R(RRRRRRRRR tsupervisor.medusaRRtsupervisor.datatypesRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRR6t__file__tmydirR9t version_txtRRR[RR"R#R&RRR6R,RtobjectR<RRRRRRRqRsR}R5R~RyRRRRRRRRRRR(((s6/usr/lib/python2.7/site-packages/supervisor/options.pyts                    Ee: L! " (