-=[ Mr. Bumblebee ]=-
_Indonesia_

Path : /usr/lib/python2.7/dist-packages/bzrlib/
File Upload :
Current File : //usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyc


:Nc@@sdZddlmZddlZddlZddlZddlmZeede	dZ
e	dZdZiZ
xfeed	eeed	D]=\ZZed
kreekrendjee
e<qWiZdd
ZdZedeDZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$e"Z%e!Z&e'dZ(e'dZ)ej*dkre$Z%e#Z&e)Z(nej+dZ,ej+dZ-d Z.d!Z/d"Z0d#Z1e	d$Z2d%Z3d&Z4d'Z5d(Z6d)Z7d*Z8d+Z9d,Z:ge:D]Ze;e^qZZ<ge<D]Z=d-e=^qyge<D]Z=d.e=^qZ>ege?d	D]Z=d-e=e@e=f^qge?d	D]Z=d.e=e@e=f^qZAeAjBd/e>DeCd0ZDeCd1ZEd2ZFd3ZGd4ZHd5ZId6ZJd7eKfd8YZLd9ZMdS(:s5A collection of function for handling URL operations.i(tabsolute_importN(tlazy_importsr
from posixpath import split as _posix_split
import urlparse

from bzrlib import (
    errors,
    osutils,
    )
cC@st|d|dS(stReturn the last component of a URL.

    :param url: The URL in question
    :param exclude_trailing_slash: If the url looks like "path/to/foo/"
        ignore the final slash and return 'foo' rather than ''
    :return: Just the final component of the URL. This can return ''
        if you don't exclude_trailing_slash, or if you are at the
        root of the URL.
    texclude_trailing_slashi(tsplit(turlR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytbasename%s
cC@st|d|dS(s4Return the parent directory of the given path.

    :param url: Relative or absolute URL
    :param exclude_trailing_slash: Remove a final slash
        (treat http://host/foo/ as http://host/foo, but
        http://host/ stays http://host/)
    :return: Everything in the URL except the last path chunk
    Ri(R(RR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytdirname2ssAABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-iis%{0:02X}t/cC@s|s%|dkr!tdn|S|tf}yt|\}}Wnftk
rtj}|jg|D]}||f^qn|j}t|}||ft|<nX|j	|s|Sdj
t||S(squote('abc def') -> 'abc%20def'

    Each part of a URL, e.g. the path info, the query, etc., has a
    different set of reserved characters that must be quoted.

    RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists
    the following reserved characters.

    reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                  "$" | ","

    Each of these characters is reserved in some component of a URL,
    but not necessarily in all of them.

    By default, the quote function is intended for quoting the path
    section of a URL.  Thus, it will not encode '/'.  This character
    is reserved, but in typical usage the quote function is being
    called on a path where the existing slash characters are used as
    reserved characters.
    sNone object cannot be quotedtN(tNonet	TypeErrortalways_safet
_safe_quoterstKeyErrort	_safe_maptcopytupdatet__getitem__trstriptjointmap(tstsafetcachekeytquotertsafe_maptc((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytquoteMs 
&	
t0123456789ABCDEFabcdefcc@s?|]5}tD](}||tt||dfVq
qdS(iN(t_hexdigtchrtint(t.0tatb((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pys	<genexpr>vscC@s|jd}t|dkr%|S|d}x|dD]{}y|t|d |d7}Wq:tk
r|d|7}q:tk
r|tt|d d|d7}q:Xq:W|S(s"unquote('abc%20def') -> 'abc def'.t%iiii(Rtlent	_hextochrR
tUnicodeDecodeErrortunichrR(Rtrestitem((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytunquoteys


-cC@s7t|tr!|jd}ntt|ddS(s!Escape relpath to be a valid url.sutf-8Rs/~(t
isinstancetunicodetencodetstrR(trelpath((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytescapescC@skt|tkr+td|tfntjt|}tjt|}ttj||S(sCompute just the relative sub-portion of a url

    This assumes that both paths are already fully specified file:// URLs.
    sVLength of base (%r) must equal or exceed the platform minimum url length (which is %d)(R$tMIN_ABS_FILEURL_LENGTHt
ValueErrortosutilstnormpathtlocal_path_from_urlR0R/(tbasetpath((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytfile_relpathscC@stj|}|sdS|jd}|jd}|jd}|dkrbt|dfSt|||jdfS(sFind the scheme separator (://) and the first path separator

    This is just a helper functions for other path utilities.
    It could probably be replaced by urlparse
    tschemeR7RiN(NN(t_url_scheme_retmatchR	tgrouptfindR$tstart(RtmR9R7tfirst_path_slash((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_find_scheme_and_separatorscC@stj|dk	S(s,Tests whether a URL is in actual fact a URL.N(R:R;R	(R((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytis_urlscG@s|s
|St|\}}|dkr=|dkr=d}n|dkrXt|}n||}x|D]}t|\}}|dkr|dkrd}n|dkrt|}n|dk	r|}||}|}|}qit||}qiW|| |S(sCreate a URL by joining sections.

    This will normalize '..', assuming that paths are absolute
    (it assumes no symlinks in either path)

    If any of *args is an absolute URL, it will be treated correctly.
    Example:
        join('http://foo', 'http://bar') => 'http://bar'
        join('http://foo', 'bar') => 'http://foo/bar'
        join('http://foo', 'bar', '../baz') => 'http://foo/baz'
    iN(RAR	R$tjoinpath(R6targst
scheme_endt
path_startR7targtarg_scheme_endtarg_path_start((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRs*	

	
	cG@s|jd}t|dkr>|ddkr>|jnx|D]}|jdrcg}nxv|jdD]e}|dkrqsqs|dkr|dgkrtjd||n|jqs|j|qsWqEW|dgkrdSdj|SdS(	sJoin URL path segments to a URL path segment.

    This is somewhat like osutils.joinpath, but intended for URLs.

    XXX: this duplicates some normalisation logic, and also duplicates a lot of
    path handling logic that already exists in some Transport implementations.
    We really should try to have exactly one place in the code base responsible
    for combining paths of URLs.
    RiiRt.s..sCannot go above rootN(RR$tpopt
startswithterrorstInvalidURLJointappendR(R6RDR7RGtchunk((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRCs$
"

		
cC@szt|d}d}|j|r<|t|d}n4|jds`tj|dn|td}t|S(s8Convert a url like file:///path/to/foo into /path/to/fooisfile://localhost/isfile:///s8local urls must start with file:/// or file://localhost/sfile://(tsplit_segment_parameters_rawRLR$RMt
InvalidURLtunescape(Rtfile_localhost_prefixR7((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_posix_local_path_from_urlscC@sdttj|S(sConvert a local path like ./foo into a URL like file:///path/to/foo

    This also handles transforming escaping unicode characters, etc.
    sfile://(R0R3t_posix_abspath(R7((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_posix_local_path_to_urlscC@s|jds$tj|dnt|d}|td}|jds|ddkss|dd	krtj|d
nt|S|dkrdSt|dks|ddks|d
d	ks|ddkrtj|dn|djdt|dS(s=Convert a url like file:///C:/path/to/foo into C:/path/to/foosfile://sJlocal urls must start with file:///, UNC path urls must start with file://isfile:s///iRis|:s.Win32 UNC path urls have form file://HOST/pathit4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZiisGWin32 file urls start with file:///x:/, where x is a valid drive letteru:(RLRMRRRQR$RStupper(Rt	win32_url((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_win32_local_path_from_urls"
cC@sf|dkrdStj|}|jdr<dt|Sdt|djdt|dS(sConvert a local path like ./foo into a URL like file:///C:/path/to/foo

    This also handles transforming escaping unicode characters, etc.
    Rsfile:///s//sfile:it:i(R3t_win32_abspathRLR0R.RY(R7t
win32_path((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_win32_local_path_to_url9ssfile:///sfile:///C:/twin32s)^(?P<scheme>[^:/]{2,}):(//)?(?P<path>.*)$s(%[0-9a-fA-F]{2})cC@sO|jdd}tt|d}|tkr8|S|jdjSdS(stre.sub callback to convert hex-escapes to plain characters (if safe).

    e.g. '%7E' will be converted to '~'.
    iiiN(R<RRt_url_dont_escape_charactersRY(tmatchobjt
hex_digitstchar((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_unescape_safe_chars_s
c	C@set|\}}|dkr(t|S|| }||}t|tsx3|D]+}|tkrRtj|d|qRqRWtj	t
|}t|dj|St
|}x}tt|D]i}||tkr||jd}djg||jdD]}dt|^q||<qqWdj|}tj	t
|}t||S(sIMake sure that a path string is in fully normalized URL form.

    This handles URLs which have unicode characters, spaces,
    special characters, etc.

    It has two basic modes of operation, depending on whether the
    supplied string starts with a url specifier (scheme://) or not.
    If it does not have a specifier it is considered a local path,
    and will be converted into a file:/// url. Non-ascii characters
    will be encoded using utf-8.
    If it does have a url specifier, it will be treated as a "hybrid"
    URL. Basically, a URL that should have URL special characters already
    escaped (like +?&# etc), but may have unicode characters, etc
    which would not be valid in a real URL.

    :param url: Either a hybrid URL or a local path
    :return: A normalized URL which only includes 7-bit ASCII characters.
    s7URLs can only contain specific safe characters (not %r)Rsutf-8s%%%02XN(RAR	tlocal_path_to_urlR+R,t_url_safe_charactersRMRRt_url_hex_escapes_retsubReR.RtlisttxrangeR$R-tord(	RRERFtprefixR7Rt
path_charstitchars((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt
normalize_urlls*



>cC@st|\}}|d
kr"|St|\}}|d
krD|S|| }|| }||krh|Stjdkr|dkr||d|d!}||d|d!}||kr|Sn||d}	||d}
|	jdr|	d }	n|	jd}|
jd}|dgkr.g}n|dgkrFg}ng}
x:t||D])\}}||krxPn|
j|q\Wt|
}g||D]}d^q}
|
j	||dj
|
pd	S(sReturn a path to other from base.

    If other is unrelated to base, return other. Else return a relative path.
    This assumes no symlinks as part of the url.
    R`sfile://iiRiRs..RJN(RAR	tsystplatformtendswithRtzipROR$textendR(R6tothertdummytbase_first_slashtother_first_slashtbase_schemetother_schemet
base_drivetother_drivet	base_patht
other_patht
base_sectionstother_sectionstoutput_sectionsR"tot	match_lentx((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytrelative_urlsD


		cC@spt|dks2|ddks2|ddkrKtj||dn||dd!7}|d}||fS(s<On win32 the drive letter needs to be added to the url base.iis:|iRs(win32 file:/// paths need a drive letteri(R$RMRR(turl_baseR7((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_win32_extract_drive_letters2

cC@st|\}}|dkrc|dkrV|rL|jdrL|d }nt|S|dfSn|| }||}tjdkr|jdrt||\}}n|rt|dkr|jdr|d }nt|\}}|||fS(sfSplit a URL into its parent directory and a child directory.

    :param url: A relative or absolute URL
    :param exclude_trailing_slash: Strip off a final '/' if it is part
        of the path (but not if it is part of the protocol specification)

    :return: (parent_url, child_dir).  child_dir may be the empty string if we're at
        the root.
    RiRR`sfile:///iN(	RAR	Rtt_posix_splitRrRsRLRR$(RRt
scheme_locR@RR7theadttail((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRs





'
cC@s`t|}|jd|jdd}|dkrA|gfS|| ||djdfS(sSplit the subsegment of the last segment of a URL.

    :param url: A relative or absolute URL
    :return: (url, subsegments)
    t,Rii(tstrip_trailing_slashR=trfindR(Rtlurlt
segment_start((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRQs
	
cC@sUt|\}}i}x0|D](}|jdd\}}|||<qW||fS(sSplit the segment parameters of the last segment of a URL.

    :param url: A relative or absolute URL
    :return: (url, segment_parameters)
    t=i(RQR(Rtbase_urltsubsegmentst
parameterst
subsegmenttkeytvalue((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytsplit_segment_parameterss
cG@sx|s
|SxW|D]O}t|tk	r<td|nd|krtjd||qqWdj|f|S(sCreate a new URL by adding subsegments to an existing one. 

    This adds the specified subsegments to the last path in the specified
    base URL. The subsegments should be bytestrings.

    :note: You probably want to use join_segment_parameters instead.
    s!Subsegment %r is not a bytestringRs, exists in subsegments(ttypeR.R
RMRNR(R6RR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytjoin_segment_parameters_raw s
	cC@st|\}}i}|j|x|jD]\}}t|tk	rctd|nt|tk	rtd||fnd|krtjd||n|||<q2Wt|gt	|j
D]}d|^qS(sHCreate a new URL by adding segment parameters to an existing one.

    The parameters of the last segment in the URL will be updated; if a
    parameter with the same key already exists it will be overwritten.

    :param url: A URL, as string
    :param parameters: Dictionary of parameters, keys and values as bytestrings
    s$parameter key %r is not a bytestrings-parameter value %r for %s is not a bytestringRs= exists in parameter keys%s=%s(RRt	iteritemsRR.R
RMRNRtsortedtitems(RRR6texisting_parameterstnew_parametersRRR)((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytjoin_segment_parameters3s	
cC@s"t|tkr|d S|SdS(s$Strip slashes after the drive letteriN(R$tWIN32_MIN_ABS_FILEURL_LENGTH(R((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt!_win32_strip_local_trailing_slashMscC@s|jds|Stjdkr;|jdr;t|St|\}}|dkra|d S|dks|t|dkr|S|d S(sStrip trailing slash, except for root paths.

    The definition of 'root path' is platform-dependent.
    This assumes that all URLs are valid netloc urls, such that they
    form:
    scheme://host/path
    It searches for ://, and then refuses to remove the next '/'.
    It can also handle relative paths
    Examples:
        path/to/foo       => path/to/foo
        path/to/foo/      => path/to/foo
        http://host/path/ => http://host/path
        http://host/path  => http://host/path
        http://host/      => http://host/
        file:///          => file:///
        file:///foo/      => file:///foo
        # This is unique on win32 platforms, and is the only URL
        # format which does it differently.
        file:///c|/       => file:///c:/
    RR`sfile://iiN(RtRrRsRLRRAR	R$(RRR@((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRUs
"cC@syt|}Wn,tk
r>}tj|d|fnXt|}y|jd}Wn,tk
r}tj|d|fnX|S(sRUnescape relpath from url format.

    This returns a Unicode path from a URL
    s!URL was not a plain ASCII url: %ssutf-8s%Unable to encode the URL as utf-8: %s(R.tUnicodeErrorRMRRR*tdecode(Rtetunquotedtunicode_path((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRS~ss;/?:@&=+$,#s%02xs%02Xcc@s|]}|d|fVqdS(R#N((R thex((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pys	<genexpr>ssBabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~sSabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-!~*'()/;?:@&=+$,%#c
C@s|dkrtdn|jdrcy!t|}|j||SWqctk
r_|SXn|jd}x4tdt|D]}||jd}xtdt|D]}||}yt	|d |d||<Wqt
k
rd|||<qtk
r;tt
|d d|d||<qXqWdj|}y|jd	}	Wntk
ruqXy|	j|Wntk
rqX|	||<qWd
j|S(sDecode what you can for a URL, so that we get a nice looking path.

    This will turn file:// urls into local paths, and try to decode
    any portions of a http:// style url that it can.

    Any sections of the URL which can't be represented in the encoding or
    need to stay as escapes are left alone.

    :param url: A 7-bit ASCII URL
    :param encoding: The final output encoding

    :return: A unicode string which can be safely encoded into the
         specified encoding.
    s0you cannot specify None for the display encodingsfile://RiR#iiRsutf-8u/N(R	R2RLR5R-RRRkR$t_hex_display_mapR
R&R'RRRtUnicodeEncodeError(
RtencodingR7R(Rotescaped_chunkstjR)t	unescapedtdecoded((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytunescape_for_displays>




-

cC@su|jddks-|jtjdkrFtjj|jdS|jd}|dkrm||dS|SdS(sDerive a TO_LOCATION given a FROM_LOCATION.

    The normal case is a FROM_LOCATION of http://foo/bar => bar.
    The Right Thing for some logical destinations may differ though
    because no / may be present at all. In that case, the result is
    the full name without the scheme indicator, e.g. lp:foo-bar => foo-bar.
    This latter case also applies when a Windows drive
    is used without a path, e.g. c:foo-bar => foo-bar.
    If no /, path separator or : is found, the from_location is returned.
    Ris/\R\iN(R=tostsepR7RR(t
from_locationR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytderive_to_locations-cC@stjd||kS(Ns/foo(R3tpathjoin(R((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_is_absolutescC@st|\}}|dk	r"|St|r2|Stj|}tj|}|d |d krytj||nt|dt|d|S(sConvert a relative path from an old base URL to a new base URL.

    The result will be a relative path.
    Absolute paths and full URLs are returned unaltered.
    iN(RAR	RturlparseRMtInvalidRebaseURLstdetermine_relative_pathR(Rtold_basetnew_baseR9t	separatort
old_parsedt
new_parsed((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt
rebase_urls
c
C@stj|}tj|}d}xCtt||D]"\}\}}||kr:Pq:q:W|d7}||}||}dgt||}	t|	dkrdStj|	S(s4Determine a relative path from from_path to to_path.iis..iRJ(R3t	splitpatht	enumerateRuR$R(
t	from_pathtto_patht
from_segmentstto_segmentstcounttfrom_elementt
to_elementtunique_fromt	unique_totsegments((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyRs


tURLcB@s\eZdZdZdZdZedZdZe	dZ
ddZRS(	sParsed URL.cC@s||_||_t|j|_||_|jdk	rQt|j|_n	d|_||_|jdk	rt|j|_n	d|_||_	t
jt||_
t|j
|_dS(N(R9tquoted_hostR*thosttquoted_userR	tusertquoted_passwordtpasswordtportRhRiRetquoted_pathR7(tselfR9RRRRR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt__init__0s							cC@sjt||joi|j|jkoi|j|jkoi|j|jkoi|j|jkoi|j|jkS(N(R+t	__class__R9RRRR7(RRw((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt__eq__CscC@s5d|jj|j|j|j|j|j|jfS(Ns<%s(%r, %r, %r, %r, %r, %r)>(Rt__name__R9RRRRR(R((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt__repr__Ks	cC@st|tr%tjd|n|jd}tj|dt\}}}}}}d
}}	}
}d|kr|jdd\}}
d|kr|j	dd\}}	qn|}
d|
krF|
ddko|
d	d
krF|
jdd\}
}yt
|}WqFtk
rBtjd||fqFXn|
dkr|
ddkr|
d	d
kr|
dd	!}
n||||	|
||S(sRCreate a URL object from a string.

        :param url: URL as bytestring
        sshould be ascii:
%rsutf-8tallow_fragmentst@iR\it[it]s!invalid port number %s in url:
%sRN(R+R,RMRRR-RtFalseR	trsplitRRR2(tclsRR9tnetlocR7tparamstquerytfragmentRRRR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytfrom_stringQs('-
	,cC@s|j}d|kr"d|}n|jdk	rGd|j|f}n|jdk	rld||jf}ntj|j||jdddfS(NR\s[%s]s%s@%ss%s:%d(RRR	RRt
urlunparseR9R(RR((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt__str__qs	
cC@s1t|ts!tj|ntjt|}|jdrKg}n|jd}t	|dkr|ddkr|d }nxv|jdD]e}|dkrt	|dkrqn|j
q|dkrqq|dkr|j|qqWdj|}|jds-d|}n|S(slTransform a Transport-relative path to a remote absolute path.

        This does not handle substitution of ~ but does handle '..' and '.'
        components.

        Examples::

            t._combine_paths('/home/sarah', 'project/foo')
                => '/home/sarah/project/foo'
            t._combine_paths('/home/sarah', '../../etc')
                => '/etc'
            t._combine_paths('/home/sarah', '/etc')
                => '/etc'

        :param base_path: base path
        :param relpath: relative url string for relative part of remote path.
        :return: urlencoded string for final path.
        RiiRs..RJ(
R+R.RMRRRhRiReRLRR$RKROR(RR/t
base_partstpR7((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt_combine_pathss*	"


cC@s|dk	rKt|jd}|j|j|}t|dd}n	|j}|j|j|j	|j
|j|j|S(sReturn a new URL for a path relative to this URL.

        :param offset: A relative path, already urlencoded
        :return: `URL` instance
        sutf-8Rs/~N(
R	RSR-RR7RRRR9RRRR(RtoffsettrelativeR7((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pytclones	N(
Rt
__module__t__doc__RRRtclassmethodRRtstaticmethodRR	R(((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyR-s			 	-cC@s7tj|}|j|j|j|j|j|jfS(s"Extract the server address, the credentials and the path from the url.

    user, password, host and path should be quoted if they contain reserved
    chars.

    :param url: an quoted url
    :return: (scheme, user, password, host, port, path) tuple, all fields
        are unquoted.
    (RRR9RRRRR7(Rt
parsed_url((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt	parse_urls
(NRt
__future__RRtreRrtbzrlib.lazy_importRtglobalstTrueRRRRRuRkR.t	bytearrayRoRtformatRRRtdictR%R*R0R8RARBRRCRURWR[R_RfR5R$R1RRstcompileR:RhReRqRRRRQRRRRRRSt_no_decode_charsRlt_no_decode_ordsRt_no_decode_hextrangeRRRtsetRaRgRRRRRtobjectRR(((s3/usr/lib/python2.7/dist-packages/bzrlib/urlutils.pyt<module>s	
45(	
							$	"		
				
	-	4	(						)	/3			:				

Copyright © 2017 || Recoded By Mr.Bumblebee