§
    Öu•c6D  ã                   ón   — d Z ddlmZmZ ddlZddlmZ ddlm	Z	 ddl
ZddlZddlZ G d„ de¦  «        ZdS )a/  
Complete implementation of the XDG Desktop Entry Specification
http://standards.freedesktop.org/desktop-entry-spec/

Not supported:
- Encoding: Legacy Mixed
- Does not check exec parameters
- Does not check URL's
- Does not completly validate deprecated/kde items
- Does not completly check categories
é    )ÚIniFileÚis_asciiN)ÚParsingError)Úwhichc                   ób  — e Zd ZdZdZd;d„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;dS )<ÚDesktopEntryz+Class to parse and validate Desktop EntriesúDesktop EntryNc                 óÎ   — t          ¦   «         | _        |r6t          j                             |¦  «        r|                      |¦  «         dS |r|                      |¦  «         dS dS )z¼Create a new DesktopEntry.
        
        If filename exists, it will be parsed as a desktop entry file. If not,
        or if filename is None, a blank DesktopEntry is created.
        N)ÚdictÚcontentÚosÚpathÚexistsÚparseÚnew)ÚselfÚfilenames     ú2/usr/lib/python3/dist-packages/xdg/DesktopEntry.pyÚ__init__zDesktopEntry.__init__   sn   € õ ‘v”vˆŒØð 	�œŸš xÑ0Ô0ð 	Ø�JŠJ�xÑ Ô Ð Ð Ð Øð 	Ø�HŠH�XÑÔÐÐÐð	ð 	ó    c                 ó*   — |                       ¦   «         S ©N)ÚgetName©r   s    r   Ú__str__zDesktopEntry.__str__&   s   € Ø�|Š|‰~Œ~Ðr   c                 ó6   — t          j        | |ddg¦  «         dS )z×Parse a desktop entry file.
        
        This can raise :class:`~xdg.Exceptions.ParsingError`,
        :class:`~xdg.Exceptions.DuplicateGroupError` or
        :class:`~xdg.Exceptions.DuplicateKeyError`.
        r	   úKDE Desktop EntryN)r   r   )r   Úfiles     r   r   zDesktopEntry.parse)   s$   € õ 	Œ�d˜D ?Ð4GÐ"HÑIÔIÐIÐIÐIr   c                 óN   — |                       dd¬¦  «        }t          |¦  «        S )zíLooks in the PATH for the executable given in the TryExec field.
        
        Returns the full path to the executable if it is found, None if not.
        Raises :class:`~xdg.Exceptions.NoKeyError` if TryExec is not present.
        ÚTryExecT)Ústrict)Úgetr   )r   Útryexecs     r   ÚfindTryExeczDesktopEntry.findTryExec2   s%   € ð —(’(˜9¨T�(Ñ2Ô2ˆÝ�W‰~Œ~Ðr   c                 ó,   — |                       d¦  «        S )NÚType©r"   r   s    r   ÚgetTypezDesktopEntry.getType<   ó   € Ø�xŠx˜ÑÔÐr   c                 ó0   — |                       dd¬¦  «        S )z)deprecated, use getVersionString instead ÚVersionÚnumeric©Útyper'   r   s    r   Ú
getVersionzDesktopEntry.getVersion>   s   € à�xŠx˜	¨	ˆxÑ2Ô2Ð2r   c                 ó,   — |                       d¦  «        S )Nr+   r'   r   s    r   ÚgetVersionStringzDesktopEntry.getVersionStringA   ó   € Ø�xŠx˜	Ñ"Ô"Ð"r   c                 ó0   — |                       dd¬¦  «        S )NÚNameT©Úlocaler'   r   s    r   r   zDesktopEntry.getNameC   ó   € Ø�xŠx˜ tˆxÑ,Ô,Ð,r   c                 ó0   — |                       dd¬¦  «        S )NÚGenericNameTr5   r'   r   s    r   ÚgetGenericNamezDesktopEntry.getGenericNameE   ó   € Ø�xŠx˜¨dˆxÑ3Ô3Ð3r   c                 ó0   — |                       dd¬¦  «        S )NÚ	NoDisplayÚbooleanr-   r'   r   s    r   ÚgetNoDisplayzDesktopEntry.getNoDisplayG   s   € Ø�xŠx˜¨)ˆxÑ4Ô4Ð4r   c                 ó0   — |                       dd¬¦  «        S )NÚCommentTr5   r'   r   s    r   Ú
getCommentzDesktopEntry.getCommentI   s   € Ø�xŠx˜	¨$ˆxÑ/Ô/Ð/r   c                 ó0   — |                       dd¬¦  «        S )NÚIconTr5   r'   r   s    r   ÚgetIconzDesktopEntry.getIconK   r7   r   c                 ó0   — |                       dd¬¦  «        S )NÚHiddenr>   r-   r'   r   s    r   Ú	getHiddenzDesktopEntry.getHiddenM   s   € Ø�xŠx˜ yˆxÑ1Ô1Ð1r   c                 ó0   — |                       dd¬¦  «        S )NÚ
OnlyShowInT©Úlistr'   r   s    r   ÚgetOnlyShowInzDesktopEntry.getOnlyShowInO   ó   € Ø�xŠx˜¨4ˆxÑ0Ô0Ð0r   c                 ó0   — |                       dd¬¦  «        S )NÚ	NotShowInTrK   r'   r   s    r   ÚgetNotShowInzDesktopEntry.getNotShowInQ   ó   € Ø�xŠx˜¨$ˆxÑ/Ô/Ð/r   c                 ó,   — |                       d¦  «        S )Nr    r'   r   s    r   Ú
getTryExeczDesktopEntry.getTryExecS   r2   r   c                 ó,   — |                       d¦  «        S )NÚExecr'   r   s    r   ÚgetExeczDesktopEntry.getExecU   r)   r   c                 ó,   — |                       d¦  «        S )NÚPathr'   r   s    r   ÚgetPathzDesktopEntry.getPathW   r)   r   c                 ó0   — |                       dd¬¦  «        S )NÚTerminalr>   r-   r'   r   s    r   ÚgetTerminalzDesktopEntry.getTerminalY   ó   € Ø�xŠx˜
¨ˆxÑ3Ô3Ð3r   c                 ó2   — |                       ddd¬¦  «        S )z%deprecated, use getMimeTypes instead ÚMimeTypeTÚregex)rL   r.   r'   r   s    r   ÚgetMimeTypezDesktopEntry.getMimeType[   s   € à�xŠx˜
¨°GˆxÑ<Ô<Ð<r   c                 ó0   — |                       dd¬¦  «        S )Nr`   TrK   r'   r   s    r   ÚgetMimeTypeszDesktopEntry.getMimeTypes^   s   € Ø�xŠx˜
¨ˆxÑ.Ô.Ð.r   c                 ó0   — |                       dd¬¦  «        S )NÚ
CategoriesTrK   r'   r   s    r   ÚgetCategorieszDesktopEntry.getCategories`   rN   r   c                 ó0   — |                       dd¬¦  «        S )NÚStartupNotifyr>   r-   r'   r   s    r   ÚgetStartupNotifyzDesktopEntry.getStartupNotifyb   s   € Ø�xŠx˜¨iˆxÑ8Ô8Ð8r   c                 ó,   — |                       d¦  «        S )NÚStartupWMClassr'   r   s    r   ÚgetStartupWMClasszDesktopEntry.getStartupWMClassd   s   € Ø�xŠxÐ(Ñ)Ô)Ð)r   c                 ó,   — |                       d¦  «        S )NÚURLr'   r   s    r   ÚgetURLzDesktopEntry.getURLf   ó   € Ø�xŠx˜‰ŒÐr   c                 ó0   — |                       dd¬¦  «        S )NÚServiceTypesTrK   r'   r   s    r   ÚgetServiceTypeszDesktopEntry.getServiceTypesk   s   € Ø�xŠx˜¨TˆxÑ2Ô2Ð2r   c                 ó,   — |                       d¦  «        S )NÚDocPathr'   r   s    r   Ú
getDocPathzDesktopEntry.getDocPathm   r2   r   c                 ó2   — |                       ddd¬¦  «        S )NÚKeywordsT)rL   r6   r'   r   s    r   ÚgetKeywordszDesktopEntry.getKeywordso   s   € Ø�xŠx˜
¨°dˆxÑ;Ô;Ð;r   c                 ó,   — |                       d¦  «        S )NÚInitialPreferencer'   r   s    r   ÚgetInitialPreferencez!DesktopEntry.getInitialPreferenceq   s   € Ø�xŠxÐ+Ñ,Ô,Ð,r   c                 ó,   — |                       d¦  «        S )NÚDevr'   r   s    r   ÚgetDevzDesktopEntry.getDevs   rq   r   c                 ó,   — |                       d¦  «        S )NÚFSTyper'   r   s    r   Ú	getFSTypezDesktopEntry.getFSTypeu   s   € Ø�xŠx˜Ñ!Ô!Ð!r   c                 ó,   — |                       d¦  «        S )NÚ
MountPointr'   r   s    r   ÚgetMountPointzDesktopEntry.getMountPointw   ó   € Ø�xŠx˜Ñ%Ô%Ð%r   c                 ó0   — |                       dd¬¦  «        S )NÚReadOnlyr>   r-   r'   r   s    r   ÚgetReadonlyzDesktopEntry.getReadonlyy   r^   r   c                 ó0   — |                       dd¬¦  «        S )NÚUnmountIconTr5   r'   r   s    r   ÚgetUnmountIconzDesktopEntry.getUnmountIcon{   r;   r   c                 ó0   — |                       dd¬¦  «        S )NÚMiniIconTr5   r'   r   s    r   ÚgetMiniIconzDesktopEntry.getMiniIcon€   s   € Ø�xŠx˜
¨4ˆxÑ0Ô0Ð0r   c                 ó,   — |                       d¦  «        S )NÚTerminalOptionsr'   r   s    r   ÚgetTerminalOptionszDesktopEntry.getTerminalOptions‚   s   € Ø�xŠxÐ)Ñ*Ô*Ð*r   c                 ó,   — |                       d¦  «        S )NÚ
DefaultAppr'   r   s    r   ÚgetDefaultAppzDesktopEntry.getDefaultApp„   r‡   r   c                 ó0   — |                       dd¬¦  «        S )NÚ	ProtocolsTrK   r'   r   s    r   ÚgetProtocolszDesktopEntry.getProtocols†   rR   r   c                 ó0   — |                       dd¬¦  «        S )NÚ
ExtensionsTrK   r'   r   s    r   ÚgetExtensionszDesktopEntry.getExtensionsˆ   rN   r   c                 ó,   — |                       d¦  «        S )NÚBinaryPatternr'   r   s    r   ÚgetBinaryPatternzDesktopEntry.getBinaryPatternŠ   s   € Ø�xŠx˜Ñ(Ô(Ð(r   c                 ó,   — |                       d¦  «        S )NÚ	MapNotifyr'   r   s    r   ÚgetMapNotifyzDesktopEntry.getMapNotifyŒ   s   € Ø�xŠx˜Ñ$Ô$Ð$r   c                 ó,   — |                       d¦  «        S )NÚEncodingr'   r   s    r   ÚgetEncodingzDesktopEntry.getEncodingŽ   s   € Ø�xŠx˜
Ñ#Ô#Ð#r   c                 ó0   — |                       dd¬¦  «        S )NÚSwallowTitleTr5   r'   r   s    r   ÚgetSwallowTitlezDesktopEntry.getSwallowTitle�   s   € Ø�xŠx˜¨tˆxÑ4Ô4Ð4r   c                 ó,   — |                       d¦  «        S )NÚSwallowExecr'   r   s    r   ÚgetSwallowExeczDesktopEntry.getSwallowExec’   s   € Ø�xŠx˜Ñ&Ô&Ð&r   c                 ó0   — |                       dd¬¦  «        S )NÚ	SortOrderTrK   r'   r   s    r   ÚgetSortOrderzDesktopEntry.getSortOrder”   rR   r   c                 ó0   — |                       dd¬¦  «        S )NÚFilePatternra   r-   r'   r   s    r   ÚgetFilePatternzDesktopEntry.getFilePattern–   s   € Ø�xŠx˜¨GˆxÑ4Ô4Ð4r   c                 ó0   — |                       dd¬¦  «        S )NÚActionsTrK   r'   r   s    r   Ú
getActionszDesktopEntry.getActions˜   s   € Ø�xŠx˜	¨ˆxÑ-Ô-Ð-r   c                 ój  — t           j                             |¦  «        d         dk    rd}n<t           j                             |¦  «        d         dk    rd}nt          d|¦  «        ‚t	          ¦   «         | _        |                      | j        ¦  «         |                      d|¦  «         || _	        dS )	a$  Make this instance into a new, blank desktop entry.
        
        If filename has a .desktop extension, Type is set to Application. If it
        has a .directory extension, Type is Directory. Other extensions will
        cause :class:`~xdg.Exceptions.ParsingError` to be raised.
        é   ú.desktopÚApplicationú
.directoryÚ	DirectoryzUnknown extensionr&   N)
r   r   Úsplitextr   r   r   ÚaddGroupÚdefaultGroupÚsetr   )r   r   r.   s      r   r   zDesktopEntry.new�   s¢   € õ Œ7×Ò˜HÑ%Ô% aÔ(¨JÒ6Ð6Ø ˆDˆDÝŒW×Ò˜hÑ'Ô'¨Ô*¨lÒ:Ð:ØˆDˆDåÐ2°HÑ=Ô=Ð=å‘v”vˆŒØ�Š�dÔ'Ñ(Ô(Ð(Ø�Š�˜ÑÔÐØ ˆŒˆˆr   c                 ó   — | j         dk    r| j                             d¦  «         | j        dk    r| j                             d¦  «         n0| j        dk    r%| j        dk    r| j                             d¦  «         	 | j        | j                  d         | _        n*# t          $ r | j                             d	¦  «         Y nw xY w	 | j        | j                  d
         | _        d S # t          $ r | j                             d¦  «         Y d S w xY w)Nr   z([KDE Desktop Entry]-Header is deprecatedz.kdelnkz$File extension .kdelnk is deprecatedr·   r¹   zUnknown File extensionr&   zKey 'Type' is missingr4   zKey 'Name' is missing)	r½   ÚwarningsÚappendÚfileExtensionr   r.   ÚKeyErrorÚerrorsÚnamer   s    r   ÚcheckExtraszDesktopEntry.checkExtras²   s3  € àÔÐ 3Ò3Ð3ØŒM× Ò Ð!KÑLÔLÐLð Ô Ò*Ð*ØŒM× Ò Ð!GÑHÔHÐHÐHØÔ :Ò-Ð-°$Ô2DÈÒ2TÐ2TØŒM× Ò Ð!9Ñ:Ô:Ð:ð	8Øœ TÔ%6Ô7¸Ô?ˆDŒIˆIøÝð 	8ð 	8ð 	8ØŒK×ÒÐ6Ñ7Ô7Ð7Ð7Ð7ð	8øøøð	8Øœ TÔ%6Ô7¸Ô?ˆDŒIˆIˆIøÝð 	8ð 	8ð 	8ØŒK×ÒÐ6Ñ7Ô7Ð7Ð7Ð7Ð7ð	8øøøs$   Á=B Â$CÃCÃC% Ã%$DÄDc                 óD  — || j         k    sXt          j        d|¦  «        sCt          j        d|¦  «        rt          |¦  «        s| j                             d|z  ¦  «         d S d| j        |         v r+d| j        |         v r| j                             d¦  «         d S d S d S )Nz^Desktop Action [a-zA-Z0-9-]+$z^X-zInvalid Group name: %srJ   rP   z;Group may either have OnlyShowIn or NotShowIn, but not both)r½   ÚreÚmatchr   rÄ   rÁ   r   )r   Úgroups     r   Ú
checkGroupzDesktopEntry.checkGroupÉ   s¼   € à˜Ô*Ò*Ð*ÝŒ8Ð4°eÑ<Ô<ð +åŒH�U˜EÑ"Ô"ð +å'/°¡¤ð +ð ŒK×ÒÐ7¸%Ñ?Ñ@Ô@Ð@Ð@Ð@ð  ¤¨UÔ 3Ð3Ð3¸+ÈÌÐV[ÔI\Ð:\Ð:\Ø”×"Ò"Ð#`ÑaÔaÐaÐaÐað 4Ð3Ð:\Ð:\r   c                 óÆ  — |dk    �r>|dk    s|dk    s|dk    r| j                              d|z  ¦  «         nP|dk    r| j                              d¦  «         n/|dk    s)|d	k    s#|d
k    s| j                             d|z  ¦  «         | j        dk    r$|d
k    s| j                              d|z  ¦  «         n+| j        dk    r |d
k    r| j                              d¦  «         |dk    r)d| j        |         vr| j                              d¦  «         |d	k    r+d| j        |         vr| j                              d¦  «         d S d S d S |dk    r|                      ||¦  «         d S t          j        dt          j	        j
        z   dz   |¦  «        rd S t          j        dt          j	        j
        z   dz   |¦  «        rd S |dk    r|                      ||d¬¦  «         d S t          j        dt          j	        j
        z   dz   |¦  «        rd S t          j        dt          j	        j
        z   dz   |¦  «        r|                      ||¦  «         d S |dk    r|                      ||d¬¦  «         d S |dk    r/|                      ||d¬ ¦  «         |                      |¦  «         d S |d!k    r/|                      ||d¬ ¦  «         |                      |¦  «         d S |d"k    r.|                      ||¦  «         |                      |d¦  «         d S |dk    r.|                      ||¦  «         |                      |d¦  «         d S |d#k    r.|                      ||¦  «         |                      |d¦  «         d S |d$k    r0|                      ||d¬¦  «         |                      |d¦  «         d S |d%k    r0|                      ||d¬ ¦  «         |                      |d¦  «         d S |dk    r0|                      ||d¬ ¦  «         |                      |d¦  «         d S |d&k    rC|                      ||¦  «         |                      |d¦  «         |                      |¦  «         d S t          j        d't          j	        j
        z   dz   |¦  «        r1|                      ||d(d¬)¦  «         |                      |d¦  «         d S |d*k    r0|                      ||d¬¦  «         |                      |d¦  «         d S |d+k    r|                      |d¦  «         d S |dk    r.|                      ||¦  «         |                      |d¦  «         d S |d,k    r7|                      ||d¬ ¦  «         | j                              d-|z  ¦  «         d S |d.k    r5|                      ||¦  «         | j                              d-|z  ¦  «         d S |d/k    r7|                      ||d0¬¦  «         | j                              d-|z  ¦  «         d S |d1k    rK|                      ||¦  «         |                      |d¦  «         | j                              d-|z  ¦  «         d S |d2k    rK|                      ||¦  «         |                      |d¦  «         | j                              d-|z  ¦  «         d S |d3k    rK|                      ||¦  «         |                      |d¦  «         | j                              d-|z  ¦  «         d S |d4k    rM|                      ||d¬¦  «         |                      |d¦  «         | j                              d-|z  ¦  «         d S t          j        d5t          j	        j
        z   dz   |¦  «        rK|                      ||¦  «         |                      |d¦  «         | j                              d-|z  ¦  «         d S |d6k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S t          j        d8t          j	        j
        z   dz   |¦  «        r5|                      ||¦  «         | j                              d7|z  ¦  «         d S |d9k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S |d:k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S |d;k    r7|                      ||d¬ ¦  «         | j                              d7|z  ¦  «         d S |d<k    r7|                      ||d¬ ¦  «         | j                              d7|z  ¦  «         d S |d=k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S |d>k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S t          j        d?t          j	        j
        z   dz   |¦  «        r| j                              d7|z  ¦  «         d S |d@k    r5|                      ||¦  «         | j                              d7|z  ¦  «         d S |dAk    r8|                      ||dBd¬)¦  «         | j                              d7|z  ¦  «         d S |dCk    r7|                      ||d¬ ¦  «         | j                              d7|z  ¦  «         d S t          j        dD|¦  «        rd S | j                             dE|z  ¦  «         d S )FNr&   ÚServiceTypeÚServiceÚFSDevicezType=%s is a KDE extensionr`   zType=MimeType is deprecatedr¸   ÚLinkrº   zGValue of key 'Type' must be Application, Link or Directory, but is '%s'r¹   z.File extension is .directory, but Type is '%s'r·   z>Files with Type=Directory should have the extension .directoryrV   z!Type=Application needs 'Exec' keyro   zType=Link needs 'URL' keyr+   z^Nameú$z^GenericNamer=   r>   r-   z^Commentz^IconrG   rJ   TrK   rP   r    rY   r\   r³   rf   z	^KeywordsÚlocalestring)r.   rL   ri   rl   rs   zKey '%s' is a KDE extensionrv   r|   r,   r   r‚   r…   r‰   z^UnmountIconr¤   zKey '%s' is deprecatedz	^MiniIconr’   r•   r˜   r›   rž   r¡   z^SwallowTitlerª   r°   ra   r­   z^X-[a-zA-Z0-9-]+zInvalid key: %s)rÀ   rÁ   rÄ   rÂ   r   Ú
checkValuerÈ   rÉ   ÚxdgÚLocalera   ÚcheckOnlyShowInÚ	checkTypeÚcheckCategories)r   ÚkeyÚvaluerÊ   s       r   ÚcheckKeyzDesktopEntry.checkKeyÔ   sÛ  € à�&Š=‰=Ø˜Ò%Ð%¨°)Ò);Ð);¸uÈ
Ò?RÐ?RØ”×$Ò$Ð%AÀCÑ%GÑHÔHÐHÐHØ˜*Ò$Ð$Ø”×$Ò$Ð%BÑCÔCÐCÐCØ˜}Ò,Ð,°¸²°À5ÈKÒCWÐCWØ”×"Ò"Ð#lÐotÑ#tÑuÔuÐuàÔ! \Ò1Ð1¸%À;Ò:NÐ:NØ”×$Ò$Ð%UÐX]Ñ%]Ñ^Ô^Ð^Ð^ØÔ# zÒ1Ð1°e¸{Ò6JÐ6JØ”×$Ò$Ð%eÑfÔfÐfà˜Ò%Ð%Ø ¤¨eÔ!4Ð4Ð4Ø”M×(Ò(Ð)LÑMÔMÐMØ˜ŠˆØ ¤¨UÔ 3Ð3Ð3Ø”M×(Ò(Ð)DÑEÔEÐEÐEÐEð ˆØ3Ð3ð �IÒÐØ�OŠO˜C Ñ'Ô'Ð'Ð'Ð'åŒX�g�cœjÔ.Ñ.¨sÑ2°CÑ8Ô8ð a	8ØˆDåŒX�n¥S¤ZÔ%5Ñ5°cÑ9¸3Ñ?Ô?ð ^	8ØˆDà�KÒÐØ�OŠO˜C ¨YˆOÑ7Ô7Ð7Ð7Ð7åŒX�j¥¤Ô!1Ñ1°#Ñ5°sÑ;Ô;ð X	8ØˆDåŒX�g�cœjÔ.Ñ.¨sÑ2°CÑ8Ô8ð U	8Ø�OŠO˜C Ñ'Ô'Ð'Ð'Ð'à�HŠ_ˆ_Ø�OŠO˜C ¨YˆOÑ7Ô7Ð7Ð7Ð7à�LÒ Ð Ø�OŠO˜C ¨TˆOÑ2Ô2Ð2Ø× Ò  Ñ'Ô'Ð'Ð'Ð'à�KÒÐØ�OŠO˜C ¨TˆOÑ2Ô2Ð2Ø× Ò  Ñ'Ô'Ð'Ð'Ð'à�IÒÐØ�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�FŠ]ˆ]Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�FŠ]ˆ]Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�JÒÐØ�OŠO˜C ¨YˆOÑ7Ô7Ð7Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�IÒÐØ�OŠO˜C ¨TˆOÑ2Ô2Ð2Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�JÒÐØ�OŠO˜C ¨TˆOÑ2Ô2Ð2Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�LÒ Ð Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 Ñ.Ô.Ð.Ø× Ò  Ñ'Ô'Ð'Ð'Ð'åŒX�k¥#¤*Ô"2Ñ2°3Ñ6¸Ñ<Ô<ð j	8Ø�OŠO˜C ¨^À$ˆOÑGÔGÐGØ�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�OÒ#Ð#Ø�OŠO˜C ¨YˆOÑ7Ô7Ð7Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.àÐ$Ò$Ð$Ø�NŠN˜3 Ñ.Ô.Ð.Ð.Ð.à�EŠ\ˆ\Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 Ñ&Ô&Ð&Ð&Ð&ð �NÒ"Ð"Ø�OŠO˜C ¨TˆOÑ2Ô2Ð2ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEà�IÒÐØ�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEàÐ'Ò'Ð'Ø�OŠO˜C ¨YˆOÑ7Ô7Ð7ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEà�EŠ\ˆ\Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 
Ñ+Ô+Ð+ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEà�HŠ_ˆ_Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 
Ñ+Ô+Ð+ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEà�LÒ Ð Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 
Ñ+Ô+Ð+ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEà�JÒÐØ�OŠO˜C ¨YˆOÑ7Ô7Ð7Ø�NŠN˜3 
Ñ+Ô+Ð+ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEåŒX�n¥S¤ZÔ%5Ñ5°cÑ9¸3Ñ?Ô?ð :	8Ø�OŠO˜C Ñ'Ô'Ð'Ø�NŠN˜3 
Ñ+Ô+Ð+ØŒM× Ò Ð!>ÀÑ!DÑEÔEÐEÐEÐEð �JÒÐØ�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@åŒX�k¥#¤*Ô"2Ñ2°3Ñ6¸Ñ<Ô<ð 0	8Ø�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@àÐ%Ò%Ð%Ø�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�LÒ Ð Ø�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�KÒÐØ�OŠO˜C ¨TˆOÑ2Ô2Ð2ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�LÒ Ð Ø�OŠO˜C ¨TˆOÑ2Ô2Ð2ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�OÒ#Ð#Ø�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�KÒÐØ�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@åŒX�o¥c¤jÔ&6Ñ6°sÑ:¸CÑ@Ô@ð 	8ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�MÒ!Ð!Ø�OŠO˜C Ñ'Ô'Ð'ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�MÒ!Ð!Ø�OŠO˜C ¨W¸4ˆOÑ@Ô@Ð@ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@à�KÒÐØ�OŠO˜C ¨TˆOÑ2Ô2Ð2ØŒM× Ò Ð!9¸CÑ!?Ñ@Ô@Ð@Ð@Ð@õ ŒXÐ(¨#Ñ.Ô.ð 	8ØˆDð ŒK×ÒÐ0°3Ñ6Ñ7Ô7Ð7Ð7Ð7r   c                 óz   — |                       ¦   «         |k    s"| j                             d|›d|›�¦  «         d S d S )NzKey 'z' only allowed in Type=)r(   rÄ   rÁ   )r   rÙ   r.   s      r   r×   zDesktopEntry.checkType�  sG   € Ø�|Š|‰~Œ~ Ò%Ð%ØŒK×ÒÐÀSÀSÀSÈ$È$ÐOÑPÔPÐPÐPÐPð &Ð%r   c                 ó    — |                       |¦  «        }g d¢}|D ]1}||vr+|dd…         dk    r| j                             d|z  ¦  «         Œ2d S )N)
ÚGNOMEÚKDEÚLXDEÚMATEÚRazorÚROXÚTDEÚUnityÚXFCEÚOldr   é   úX-z)'%s' is not a registered OnlyShowIn value)ÚgetListrÄ   rÁ   )r   rÚ   ÚvaluesÚvalidÚitems        r   rÖ   zDesktopEntry.checkOnlyShowIn”  s|   € Ø—’˜eÑ$Ô$ˆð ð  ð  ˆàð 	Xð 	XˆDØ˜5Ð Ð  T¨!¨A¨#¤Y°$Ò%6Ð%6Ø”×"Ò"Ð#NÐQUÑ#UÑVÔVÐVøð	Xð 	Xr   c                 ó,  ‡— |                       |¦  «        }g d¢Št          ˆfd„|D ¦   «         ¦  «        s| j                             d¦  «         g d¢}|‰z   }|D ]8}||vr2|                     d¦  «        s| j                             d|z  ¦  «         Œ9d S )N)Ú
AudioVideoÚAudioÚVideoÚDevelopmentÚ	EducationÚGameÚGraphicsÚNetworkÚOfficeÚScienceÚSettingsÚSystemÚUtilityc              3   ó    •K  — | ]}|‰v V — Œ	d S r   © )Ú.0rí   Úmains     €r   ú	<genexpr>z/DesktopEntry.checkCategories.<locals>.<genexpr>   s'   øè è € Ð3Ð3 D�4˜4�<Ð3Ð3Ð3Ð3Ð3Ð3r   zMissing main category)~ÚBuildingÚDebuggerÚIDEÚGUIDesignerÚ	ProfilingÚRevisionControlÚTranslationÚCalendarÚContactManagementÚDatabaseÚ
DictionaryÚChartÚEmailÚFinanceÚ	FlowChartÚPDAÚProjectManagementÚPresentationÚSpreadsheetÚWordProcessorÚ
2DGraphicsÚVectorGraphicsÚRasterGraphicsÚ
3DGraphicsÚScanningÚOCRÚPhotographyÚ
PublishingÚViewerÚ	TextToolsÚDesktopSettingsÚHardwareSettingsÚPrintingÚPackageManagerÚDialupÚInstantMessagingÚChatÚ	IRCClientÚFeedÚFileTransferÚHamRadioÚNewsÚP2PÚRemoteAccessÚ	TelephonyÚTelephonyToolsÚVideoConferenceÚ
WebBrowserÚWebDevelopmentÚMidiÚMixerÚ	SequencerÚTunerÚTVÚAudioVideoEditingÚPlayerÚRecorderÚDiscBurningÚ
ActionGameÚAdventureGameÚ
ArcadeGameÚ	BoardGameÚ
BlocksGameÚCardGameÚKidsGameÚ	LogicGameÚRolePlayingÚShooterÚ
SimulationÚ
SportsGameÚStrategyGameÚArtÚConstructionÚMusicÚ	LanguagesÚArtificialIntelligenceÚ	AstronomyÚBiologyÚ	ChemistryÚComputerScienceÚDataVisualizationÚEconomyÚElectricityÚ	GeographyÚGeologyÚ
GeoscienceÚHistoryÚ
HumanitiesÚImageProcessingÚ
LiteratureÚMapsÚMathÚNumericalAnalysisÚMedicalSoftwareÚPhysicsÚRoboticsÚSpiritualityÚSportsÚParallelComputingÚ	AmusementÚ	ArchivingÚCompressionÚElectronicsÚEmulatorÚEngineeringÚ	FileToolsÚFileManagerÚTerminalEmulatorÚ
FilesystemÚMonitorÚSecurityÚAccessibilityÚ
CalculatorÚClockÚ
TextEditorÚDocumentationÚAdultÚCorerß   rÞ   ræ   ÚGTKÚQtÚMotifÚJavaÚConsoleOnlyré   z!'%s' is not a registered Category)rê   ÚanyrÄ   rÁ   Ú
startswith)r   rÚ   rë   Ú
additionalÚallcategoriesrí   rÿ   s         @r   rØ   zDesktopEntry.checkCategoriesœ  sØ   ø€ Ø—’˜eÑ$Ô$ˆð að  að  aˆÝÐ3Ð3Ð3Ð3¨FÐ3Ñ3Ô3Ñ3Ô3ð 	8ØŒK×ÒÐ6Ñ7Ô7Ð7ð cð  cð  cˆ
Ø" TÑ)ˆàð 	Pð 	PˆDØ˜=Ð(Ð(°·²ÀÑ1FÔ1FÐ(Ø”×"Ò"Ð#FÈÑ#MÑNÔNÐNøð	Pð 	Pr   c                 ó`   — t          j        dt          ¦  «         |                      |¦  «        S )z`Deprecated alias for checkCategories - only exists for backwards
        compatibility.
        z1checkCategorie is deprecated, use checkCategories)rÀ   ÚwarnÚDeprecationWarningrØ   )r   rÚ   s     r   ÚcheckCategoriezDesktopEntry.checkCategorieª  s5   € õ 	ŒÐIÝ<Nñ	Pô 	Pð 	Pà×#Ò# EÑ*Ô*Ð*r   r   )<Ú__name__Ú
__module__Ú__qualname__Ú__doc__r½   r   r   r   r$   r(   r/   r1   r   r:   r?   rB   rE   rH   rM   rQ   rT   rW   rZ   r]   rb   rd   rg   rj   rm   rp   rt   rw   rz   r}   r€   rƒ   r†   rŠ   r�   r�   r“   r–   r™   rœ   rŸ   r¢   r¥   r¨   r«   r®   r±   r´   r   rÆ   rË   rÛ   r×   rÖ   rØ   rƒ  rý   r   r   r   r      sp  € € € € € Ø1Ð1à"€Lð
ð 
ð 
ð 
ðð ð ðJð Jð Jðð ð ð ð  ð  ð3ð 3ð 3ð#ð #ð #ð-ð -ð -ð4ð 4ð 4ð5ð 5ð 5ð0ð 0ð 0ð-ð -ð -ð2ð 2ð 2ð1ð 1ð 1ð0ð 0ð 0ð#ð #ð #ð ð  ð  ð ð  ð  ð4ð 4ð 4ð=ð =ð =ð/ð /ð /ð1ð 1ð 1ð9ð 9ð 9ð*ð *ð *ðð ð ð
3ð 3ð 3ð#ð #ð #ð<ð <ð <ð-ð -ð -ðð ð ð"ð "ð "ð&ð &ð &ð4ð 4ð 4ð4ð 4ð 4ð
1ð 1ð 1ð+ð +ð +ð&ð &ð &ð0ð 0ð 0ð1ð 1ð 1ð)ð )ð )ð%ð %ð %ð$ð $ð $ð5ð 5ð 5ð'ð 'ð 'ð0ð 0ð 0ð5ð 5ð 5ð.ð .ð .ð
!ð !ð !ð*8ð 8ð 8ð.	bð 	bð 	bðz8ð z8ð z8ðxQð Qð QðXð Xð XðPð Pð Pð+ð +ð +ð +ð +r   r   )r‡  Úxdg.IniFiler   r   Ú
xdg.LocalerÔ   Úxdg.Exceptionsr   Úxdg.utilr   Úos.pathr   rÈ   rÀ   r   rý   r   r   ú<module>r�     s²   ðð
ð 
ð *Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€ð[+ð [+ð [+ð [+ð [+�7ñ [+ô [+ð [+ð [+ð [+r   