Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

iµµhà;ãód—dZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZddlm
Z
mZmZmZmZmZmZmZmZmZmZmZddlmZddlmZddlmZmZm Z m!Z!erddl"Z"ddl#Z#d	d
l$m%Z%m&Z&m'Z'd	dl(m)Z)m*Z*m+Z+d	dl,m-Z-m.Z.m/Z/m0Z0d	d
l1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUd	dlVmWZWmXZXmYZYd	dlZm[Z[da\ej]e^¦«Z_Gd„de`¦«ZaGd„de`¦«ZbGd„de`¦«Zcd„Zdd„Zee9e=gZfe?e7e8e<gef¢Zge;e5gef¢ZhGd„d¦«Zid„ZjGd„d¦«ZkGd„d¦«Zld„ZmGd „d!¦«Znd"eeod#eeepeoffd$„Zqd%„Zrde2fd&eeod'eeogdfd(eeeogdffd)„ZsGd*„d+¦«Ztd,„Zud-„ZvGd.„d/et¦«ZwGd0„d1ew¦«ZxGd2„d3¦«Zyd#eezfd4„Z{Gd5„d6ew¦«Z|Gd7„d8et¦«Z}e}Z~Gd9„d:¦«ZGd;„d<e`¦«Z€Gd=„d>e¦«ZGd?„d@e¦«Z‚dA„ZƒeZ„GdB„dCew¦«Z…dD„Z†			dYd#edEfdF„Z‡dG„ZˆGdH„dIet¦«Z‰GdJ„dKe‰¦«ZŠeŠZ‹d#ezfdL„ZŒ	dZdMezdNee%dOeezd#eetezffdP„ZdQ„ZŽdRezd#eeezezezffdS„Z		dZdRezdNee%dOeezd#eetezffdT„Zej‘ ’dU¦«e'dVdW¦«gZ“de“fdX„Z”dS)[a1Client side support for the Git protocol.

The Dulwich client supports the following capabilities:

 * thin-pack
 * multi_ack_detailed
 * multi_ack
 * side-band-64k
 * ofs-delta
 * quiet
 * report-status
 * delete-refs
 * shallow

Known capabilities that are not supported:

 * no-progress
 * include-tag
éN)Úclosing)ÚBufferedReaderÚBytesIO)ÚIOÚ
TYPE_CHECKINGÚCallableÚClassVarÚDictÚIterableÚIteratorÚListÚOptionalÚSetÚTupleÚUnion)Úquote)Úunquote)ÚurljoinÚurlparseÚ
urlunparseÚ
urlunsplité)ÚConfigÚapply_instead_ofÚget_xdg_config_home_path)ÚGitProtocolErrorÚNotGitRepositoryÚ
SendPackError)ÚPACK_SPOOL_FILE_MAX_SIZEÚPackChunkGeneratorÚUnpackedObjectÚwrite_pack_from_container)$Ú	_RBUFSIZEÚCAPABILITIES_REFÚCAPABILITY_AGENTÚCAPABILITY_DELETE_REFSÚCAPABILITY_INCLUDE_TAGÚCAPABILITY_MULTI_ACKÚCAPABILITY_MULTI_ACK_DETAILEDÚCAPABILITY_OFS_DELTAÚCAPABILITY_QUIETÚCAPABILITY_REPORT_STATUSÚCAPABILITY_SHALLOWÚCAPABILITY_SIDE_BAND_64KÚCAPABILITY_SYMREFÚCAPABILITY_THIN_PACKÚCOMMAND_DEEPENÚCOMMAND_DONEÚCOMMAND_HAVEÚCOMMAND_SHALLOWÚCOMMAND_UNSHALLOWÚCOMMAND_WANTÚKNOWN_RECEIVE_CAPABILITIESÚKNOWN_UPLOAD_CAPABILITIESÚSIDE_BAND_CHANNEL_DATAÚSIDE_BAND_CHANNEL_FATALÚSIDE_BAND_CHANNEL_PROGRESSÚTCP_GIT_PORTÚZERO_SHAÚHangupExceptionÚ
PktLineParserÚProtocolÚagent_stringÚcapability_agentÚextract_capabilitiesÚextract_capability_namesÚparse_capabilityÚpkt_line)ÚPEELED_TAG_SUFFIXÚ_import_remote_refsÚread_info_refs)ÚRepocó—eZdZdZdd„ZdS)ÚInvalidWantszInvalid wants.ÚreturnNcóB—t |d|z¦«dS)Nz/requested wants not in server provided refs: %r)Ú	ExceptionÚ__init__)ÚselfÚwantss  ú9/usr/local/lib/python3.11/site-packages/dulwich/client.pyrPzInvalidWants.__init__ƒs/€Ý×ÒØÐCÀeÑKñ	
ô	
ð	
ð	
ð	
ó©rMN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rP©rTrSrLrL€s.€€€€€ØÐð
ð
ð
ð
ð
ð
rTrLcó—eZdZdZdd„ZdS)ÚHTTPUnauthorizedz!Raised when authentication fails.rMNcóX—t |d¦«||_||_dS)NzNo valid credentials provided)rOrPÚwww_authenticateÚurl)rQr_r`s   rSrPzHTTPUnauthorized.__init__Œs,€Ý×Ò˜4Ð!@ÑAÔAÐAØ 0ˆÔ؈ŒˆˆrTrUrVr[rTrSr]r]‰s.€€€€€Ø+Ð+ððððððrTr]có—eZdZdZdd„ZdS)ÚHTTPProxyUnauthorizedz'Raised when proxy authentication fails.rMNcóX—t |d¦«||_||_dS)Nz#No valid proxy credentials provided)rOrPÚproxy_authenticater`)rQrdr`s   rSrPzHTTPProxyUnauthorized.__init__•s,€Ý×Ò˜4Ð!FÑGÔGÐGØ"4ˆÔ؈ŒˆˆrTrUrVr[rTrSrbrb’s.€€€€€Ø1Ð1ððððððrTrbcó`—ttj|gggd¦«d¦«dkS)z'Check if a file descriptor is readable.r)ÚlenÚselect)Úfilenos rSÚ_fileno_can_readri›s,€åvŒ}˜f˜X r¨2¨qÑ1Ô1°!Ô4Ñ5Ô5¸Ò9Ð9rTc
ó—ddlm}m}m}| ¦«}| ¦«}|j |ddd||¦«||¦«¦«}|s!t| ¦«¦«‚|j	S)zCWrapper around PeekNamedPipe to check how many bytes are available.r)ÚbyrefÚwindllÚwintypesN)
ÚctypesrkrlrmÚDWORDÚkernel32Ú
PeekNamedPipeÚOSErrorÚGetLastErrorÚvalue)ÚhandlerkrlrmÚc_availÚ	c_messageÚsuccesss       rSÚ_win32_peek_availry s €à.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ànŠnÑÔ€GØ—’Ñ Ô €IØŒo×+Ò+ؐa˜˜u˜u W™~œ~¨u¨u°YÑ/?Ô/?ñô€Gðð/ݐh×+Ò+Ñ-Ô-Ñ.Ô.Ð.ØŒ=ÐrTcó&—eZdZdZdd„Zd„Zd„ZdS)ÚReportStatusParserzEHandle status as reported by servers with 'report-status' capability.rMNcó0—d|_d|_g|_dS©NF)Ú_doneÚ_pack_statusÚ
_ref_statuses©rQs rSrPzReportStatusParser.__init__Às€ØˆŒ
Ø ˆÔØ*,ˆÔÐÐrTc#ó\K—|jdvrt|j¦«‚|jD]„}	| dd¦«\}}n#t$rYŒ)wxYw|dkr3| dd¦«\}}|| d¦«fV—Œf|dkr|dfV—Œst
d|z¦«‚dS)	zÅCheck if there were any errors and, if so, raise exceptions.

        Raises:
          SendPackError: Raised when the server could not unpack
        Returns:
          iterator over refs
        )s	unpack okNó rsngúutf-8sokNzinvalid ref status %r)rrr€ÚsplitÚ
ValueErrorÚdecoder)rQÚstatusÚrestÚrefÚerrors     rSÚcheckzReportStatusParser.checkÅsøèè€ðÔÐ$8Ð8Ð8Ý Ô 1Ñ2Ô2Ð2ØÔ(ð	Ið	IˆFð
Ø%Ÿ|š|¨D°!Ñ4Ô4‘˜˜øÝð
ð
ð
àð
øøøð˜ŠˆØ!ŸZšZ¨¨aÑ0Ô0‘
Uؘ5Ÿ<š<¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0ؘ5’Ø˜DjÐ Ð Ð Ð å&Ð'>ÀÑ'GÑHÔHÐHð	Ið	IsªAÁ
AÁAcóè—|jrtd¦«‚|€	d|_dS|j€| ¦«|_dS| ¦«}|j |¦«dS)z‡Handle a packet.

        Raises:
          GitProtocolError: Raised when packets are received after a flush
          packet.
        z&received more data after status reportNT)r~rrÚstripr€Úappend)rQÚpktÚ
ref_statuss   rSÚ
handle_packetz ReportStatusParser.handle_packetÝsx€ðŒ:ð	MÝ"Ð#KÑLÔLÐL؈;؈DŒJØˆFØÔÐ$Ø #§	¢	¡¤ˆDÔÐÐàŸš™œˆJØÔ×%Ò% jÑ1Ô1Ð1Ð1Ð1rTrU)rWrXrYrZrPrŒr’r[rTrSr{r{½sO€€€€€ØOÐOð-ð-ð-ð-ð
IðIðIð02ð2ð2ð2ð2rTr{có€—d}i}|D]p}| d¦« dd¦«\}}|dkr#t| dd¦«¦«‚|€t	|¦«\}}|||<Œqt|¦«dkrit
¦«fS|ttikri}|t
|¦«fS)Nó
rsERRr„Úreplacer)	Úrstripr…rr‡rCrfÚsetr$r=)Úpkt_seqÚserver_capabilitiesÚrefsrÚsharŠs      rSÚ
read_pkt_refsrœðsрØÐØ
€DàððˆØ—Z’Z Ñ&Ô&×,Ò,¨T°1Ñ5Ô5‰
ˆˆcؐ&Š=ˆ=Ý" 3§:¢:¨g°yÑ#AÔ#AÑBÔBÐBØÐ&Ý)=¸cÑ)BÔ)BÑ&ˆSÐ%؈ˆS‰	ˆ	å
ˆ4y„yA‚~€~Ø•3‘5”5ˆyÐØÕ ¥(Ð+Ò+Ð+؈ؕÐ(Ñ)Ô)Ð)Ð)rTc󘇗eZdZUdZhd£Zeeeed<	d	dd„Z	d„Z
d„Zdefd	„Z
d
„Zdefd„Zd„Zˆfd
„Zdefd„ZˆxZS)ÚFetchPackResultz°Result of a fetch-pack operation.

    Attributes:
      refs: Dictionary with all remote refs
      symrefs: Dictionary with remote symrefs
      agent: User agent string
    >ÚgetÚpopÚcopyÚkeysÚclearÚitemsÚupdateÚvaluesÚpopitemÚfromkeysÚviewkeysÚ	viewitemsÚ
setdefaultÚ
viewvaluesÚ_FORWARDED_ATTRSNrMcóL—||_||_||_||_||_dS©N)ršÚsymrefsÚagentÚnew_shallowÚ
new_unshallow)rQršr°r±r²r³s      rSrPzFetchPackResult.__init__s/€ðˆŒ	؈Œ؈Œ
Ø&ˆÔØ*ˆÔÐÐrTcóH—ddl}| dtd¬¦«dS)Nrz!Use FetchPackResult.refs instead.é©Ú
stacklevel©ÚwarningsÚwarnÚDeprecationWarning©rQr¹s  rSÚ_warn_deprecatedz FetchPackResult._warn_deprecated&s9€Øˆˆˆà
Š
Ø/ÝØð	ñ	
ô	
ð	
ð	
ð	
rTcóʗt|t¦«r| ¦«|j|kS|j|jko|j|jko|j|jkSr¯)Ú
isinstanceÚdictr½ršr°r±©rQÚothers  rSÚ__eq__zFetchPackResult.__eq__/sf€ÝeTÑ"Ô"ð	&Ø×!Ò!Ñ#Ô#Ð#Ø”9 Ò%Ð%àŒI˜œÒ#ð
*Ø” ¤
Ò-ð
*à”
˜eœkÒ)ð	
rTcó<—| ¦«||jvSr¯©r½rš©rQÚnames  rSÚ__contains__zFetchPackResult.__contains__9ó!€Ø×ÒÑÔÐØt”yÐ Ð rTcóD—| ¦«|j|Sr¯rÅrÆs  rSÚ__getitem__zFetchPackResult.__getitem__=ó €Ø×ÒÑÔÐØŒy˜ŒÐrTcóR—| ¦«t|j¦«Sr¯©r½rfršrs rSÚ__len__zFetchPackResult.__len__Aó"€Ø×ÒÑÔÐݐ4”9‰~Œ~ÐrTcóR—| ¦«t|j¦«Sr¯©r½Úiterršrs rSÚ__iter__zFetchPackResult.__iter__Eó"€Ø×ÒÑÔÐݐD”I‰ŒÐrTcóĕ—|t|¦«jvr)| ¦«t|j|¦«St¦« |¦«Sr¯©Útyper­r½ÚgetattrršÚsuperÚ__getattribute__©rQrÇÚ	__class__s  €rSrÛz FetchPackResult.__getattribute__IóSø€Ø•4˜‘:”:Ô.Ð.Ð.Ø×!Ò!Ñ#Ô#Ð#ݘ4œ9 dÑ+Ô+Ð+݉wŒw×'Ò'¨Ñ-Ô-Ð-rTcód—d |jj|j|j|j¦«S)Nz{}({!r}, {!r}, {!r}))ÚformatrÝrWršr°r±rs rSÚ__repr__zFetchPackResult.__repr__Os1€Ø%×,Ò,ØŒNÔ#ØŒIØŒLØŒJñ	
ô
ð	
rT©NNrU©rWrXrYrZr­r	rÚstrÚ__annotations__rPr½rÃÚboolrÈrËÚintrÏrÔrÛráÚ
__classcell__©rÝs@rSržržs ø€€€€€€ððð,ð,ð,Аh˜s 3œxÔ(ððñð$EIð+à	
ð+ð+ð+ð+ð
ð
ð
ð
ð
ð
ð! Dð!ð!ð!ð!ðððð˜ðððððððð.ð.ð.ð.ð.ð
˜#ð
ð
ð
ð
ð
ð
ð
ð
rTržc󔇗eZdZUdZhd£Zeeeed<ddd„Z	d„Z
d„Zdefd	„Z
d
„Zdefd„Zd„Zˆfd
„Zdefd„ZˆxZS)ÚSendPackResultaResult of a upload-pack operation.

    Attributes:
      refs: Dictionary with all remote refs
      agent: User agent string
      ref_status: Optional dictionary mapping ref name to error message (if it
        failed to update), or None if it was updated successfully
    >rŸr r¡r¢r£r¤r¥r¦r§r¨r©rªr«r¬r­NrMcó0—||_||_||_dSr¯)ršr±r‘)rQršr±r‘s    rSrPzSendPackResult.__init__ss€ØˆŒ	؈Œ
Ø$ˆŒˆˆrTcóH—ddl}| dtd¬¦«dS)Nrz Use SendPackResult.refs instead.rµr¶r¸r¼s  rSr½zSendPackResult._warn_deprecatedxs9€Øˆˆˆà
Š
Ø.ÝØð	ñ	
ô	
ð	
ð	
ð	
rTcóª—t|t¦«r| ¦«|j|kS|j|jko|j|jkSr¯)r¿rÀr½ršr±rÁs  rSrÃzSendPackResult.__eq__sP€ÝeTÑ"Ô"ð	&Ø×!Ò!Ñ#Ô#Ð#Ø”9 Ò%Ð%ØŒy˜EœJÒ&ÐD¨4¬:¸¼Ò+DÐDrTcó<—| ¦«||jvSr¯rÅrÆs  rSrÈzSendPackResult.__contains__‡rÉrTcóD—| ¦«|j|Sr¯rÅrÆs  rSrËzSendPackResult.__getitem__‹rÌrTcóR—| ¦«t|j¦«Sr¯rÎrs rSrÏzSendPackResult.__len__rÐrTcóR—| ¦«t|j¦«Sr¯rÒrs rSrÔzSendPackResult.__iter__“rÕrTcóĕ—|t|¦«jvr)| ¦«t|j|¦«St¦« |¦«Sr¯r×rÜs  €rSrÛzSendPackResult.__getattribute__—rÞrTcó@—|jj›d|j›d|j›dS)Nú(z, ú))rÝrWršr±rs rSrázSendPackResult.__repr__s*€Ø”.Ô)ÐJÐJ¨D¬IÐJÐJ¸4¼:ÐJÐJÐJÐJrTrârUrãrés@rSrërëXs"ø€€€€€€ððð,ð,ð,Аh˜s 3œxÔ(ððñð"%ð%ð%ð%ð%ð

ð
ð
ðEðEðEð! Dð!ð!ð!ð!ðððð˜ðððððððð.ð.ð.ð.ð.ðK˜#ðKðKðKðKðKðKðKðKrTrëcó°—t¦«}t¦«}|D]´}	| dd¦«\}}n #t$rtd|z¦«‚wxYw|tkr(| | ¦«¦«Œp|tkr(| | ¦«¦«Œ£td|z¦«‚||fS)Nrƒrzunknown command %s)r—r…r†rr4ÚaddrŽr5)r˜r²r³rÚcmdr›s      rSÚ_read_shallow_updatesrú¡sâ€Ý‘%”%€KÝ‘E”E€MØð
?ð
?ˆð	?Ø—y’y  qÑ)Ô)‰HˆCøÝð	?ð	?ð	?Ý"Ð#7¸#Ñ#=Ñ>Ô>Ð>ð	?øøøà•/Ò!Ð!ØOŠO˜CŸIšI™KœKÑ(Ô(Ð(Ð(Ø
Õ%Ò
%Ð
%Ø×Ò˜cŸiši™kœkÑ*Ô*Ð*Ð*å"Ð#7¸#Ñ#=Ñ>Ô>Ð>Ø˜Ð'Ð's	¢<¼Acó"—eZdZdd„Zd„Zd„ZdS)Ú_v1ReceivePackHeaderrMNcóh—g|_g|_| |||¦«|_d|_dSr})ÚwantÚhaveÚ_handle_receive_pack_headÚ_itÚsent_capabilities)rQÚcapabilitiesÚold_refsÚnew_refss    rSrPz_v1ReceivePackHeader.__init__³s7€Ø!#ˆŒ	Ø!#ˆŒ	Ø×1Ò1°,ÀÈ(ÑSÔSˆŒØ!&ˆÔÐÐrTcó—|jSr¯)rrs rSrÔz_v1ReceivePackHeader.__iter__¹s	€ØŒxˆrTc#óK—d„| ¦«D¦«|_|D]Z}t|t¦«st	d|z¦«‚| |t¦«}t|t¦«st	d|›d|›¦«‚| |t¦«}t|t¦«st	d|›d|›¦«‚||krrt d|||¦«|j	r|dz|zdz|zV—n=|dz|zdz|zdzd 
t|¦«¦«zV—d	|_	||jvr%|tkr|j 
|¦«Œ\d
V—d
S)aHandle the head of a 'git-receive-pack' request.

        Args:
          capabilities: List of negotiated capabilities
          old_refs: Old refs, as received from the server
          new_refs: Refs to change

        Returns:
          (have, want) tuple
        có(—g|]}|tk°
|‘ŒSr[©r=©Ú.0Úxs  rSú
<listcomp>zB_v1ReceivePackHeader._handle_receive_pack_head.<locals>.<listcomp>Çs€ÐGÐGÐG˜1¸½hº¸Q¸¸¸rTzrefname is not a bytestring: %rz
old sha1 for z is not a bytestring: z is not a bytestring z Sending updated ref %r: %r -> %rrƒóTN)r¦rÿr¿ÚbytesÚ	TypeErrorrŸr=ÚloggerÚdebugrÚjoinÚsortedrþr)rQrrrÚrefnameÚold_sha1Únew_sha1s       rSrz._v1ReceivePackHeader._handle_receive_pack_head¼sôèè€ðHÐG §¢Ñ 1Ô 1ÐGÑGÔGˆŒ	àð 	+ñ 	+ˆGݘg¥uÑ-Ô-ð
MÝÐ AÀGÑ KÑLÔLÐLØ—|’| G­XÑ6Ô6ˆHݘh­Ñ.Ô.ð
ÝØQ GÐQÐQÀXÐQÐQñôðð —|’| G­XÑ6Ô6ˆHݘh­Ñ.Ô.ð
ÝØP GÐPÐPÀHÐPÐPñôðð˜8Ò#Ð#Ý—’Ø6¸ÀÈ8ñôððÔ)ð2Ø" T™/¨HÑ4°tÑ;¸gÑEÐEÐEÐEÐEð!Øñà"ñ#ðñð"ñ	"ð
 ñ ðŸ)š)¥F¨<Ñ$8Ô$8Ñ9Ô9ñ
:ðððð.2DÔ*ؘtœyÐ(Ð(¨X½Ò-AÐ-AØ”	× Ò  Ñ*Ô*Ð*ù؈
ˆ
ˆ
ˆ
ˆ
rTrU)rWrXrYrPrÔrr[rTrSrürü²sF€€€€€ð'ð'ð'ð'ðððð.ð.ð.ð.ð.rTrür˜rMc#ó^K—|D]'}t|dd…¦«}||dd…fV—Œ(dS)z‚Read per-channel data.

    This requires the side-band-64k capability.

    Args:
      pkt_seq: Sequence of packets to read
    Nr)Úord)r˜rÚchannels   rSÚ_read_side_band64k_datarísPèè€ðððˆÝc˜"˜1˜"”g‘,”,ˆØs˜1˜2˜2”wÐÐÐÐÐððrTcóx—t|t¦«rt|dt¦«sJ‚| tdz|dzdzd t
|¦«¦«zdz¦«|dd…D]%}| tdz|zdz¦«Œ&|dvst|dd¦«rËt|vrtd¦«‚|j
D]%}| tdz|zdz¦«Œ&|C| tdzt|¦« d	¦«zdz¦«| d¦«|%t| ¦«¦«\}}	n*dx}}	n%t#¦«x}}	| d¦«t%|¦«}
|
rÓ| t&dz|
zdz¦«||¦«r“| ¦«}| d¦« d¦«}|dd
krK| |d¦«|ddvrn%|dd
krn)t1d|dz¦«‚t%|¦«}
|
°Ó| t2dz¦«||	fS)a“Handle the head of a 'git-upload-pack' request.

    Args:
      proto: Protocol object to read from
      capabilities: List of negotiated capabilities
      graph_walker: GraphWalker instance to call .ack() on
      wants: List of commits to fetch
      can_read: function that returns a boolean that indicates
    whether there is extra graph data to read on proto
      depth: Depth for request
    rrƒr”rN)rNÚshallowz=server does not support shallow capability required for depthÚasciióACKé)ócontinueócommonóreadyz(%s not in ('continue', 'ready', 'common))r¿ÚlistrÚwrite_pkt_liner6rrrÙr-rrr4r1räÚencoderúÚread_pkt_seqr—Únextr3Ú
read_pkt_liner–r…ÚackÚAssertionErrorr2)
ÚprotorÚgraph_walkerrRÚcan_readÚdepthrþr›r²r³rÿrÚpartss
             rSÚ_handle_upload_pack_headr1ús€õeTÑ"Ô"ÐB¥z°%¸´(½EÑ'BÔ'BÐBÐBÐBØ	×Òݐtјe AœhÑ&¨Ñ-°·	²	½&ÀÑ:NÔ:NÑ0OÔ0OÑOÐRWÑWñôððabb”	ðAðAˆØ
×ҝ\¨DÑ0°4Ñ7¸%Ñ?Ñ@Ô@Ð@Ð@ØIÐÐ¥¨°yÀ$Ñ!GÔ!GÐÝ \Ð1Ð1Ý"ØRñôð
ð Ô'ð	Gð	GˆCØ× Ò ¥°4Ñ!7¸#Ñ!=ÀÑ!EÑFÔFÐFÐFØÐØ× Ò Ý Ñ%­¨E©
¬
×(9Ò(9¸'Ñ(BÔ(BÑBÀUÑJñ
ô
ð
ð	×Ò˜TÑ"Ô"Ð"ØÐÝ+@À×ASÒASÑAUÔAUÑ+VÔ+VÑ(ˆ[˜-˜-à*.Ð.ˆK˜-˜-å&)¡e¤eÐ+ˆmØ
×Ò˜TÑ"Ô"Ð"ݐÑÔ€DØ
ð"Ø
×ҝ\¨DÑ0°4Ñ7¸%Ñ?Ñ@Ô@Ð@ØÐ H H¡J¤JÐØ×%Ò%Ñ'Ô'ˆCØ—J’J˜uÑ%Ô%×+Ò+¨DÑ1Ô1ˆEؐQŒx˜6Ò!Ð!Ø× Ò   q¤Ñ*Ô*Ð*ؘ”8Ð7Ð7Ð7ØØ˜1”X Ò)Ð)Øå(ØBÀUÈ1ÄXÑMñôðõLÑ!Ô!ˆðð"ð 
×ҝ¨Ñ-Ñ.Ô.Ð.Ø˜Ð'Ð'rTrÚ	pack_dataÚprogresscó´—| ¦«}|r£| d¦« d¦«}|ddkr| |d¦«|ddkr| ¦«t|¦«dks
|dd	vrn| ¦«}|°£t|vrm|€d„}t| ¦«¦«D]D\}}	|tkr||	¦«Œ|tkr||	¦«Œ3td|z¦«‚d
S	| |¦«}	|	dkrd
S||	¦«Œ))a_Handle the tail of a 'git-upload-pack' request.

    Args:
      proto: Protocol object to read from
      capabilities: List of negotiated capabilities
      graph_walker: GraphWalker instance to call .ack() on
      pack_data: Function to call with pack data
      progress: Optional progress reporting function
      rbufsize: Read buffer size
    r”rƒrrrsNAKrµr )r#r!r"Ncó—dSr¯r[©rs rSr3z*_handle_upload_pack_tail.<locals>.progressX󀨐rTúInvalid sideband channel %dTrT)
r)r–r…r*Únakrfr.rr'r9r;r+Úread)
r,rr-r2r3Úrbufsizerr0ÚchanÚdatas
          rSÚ_handle_upload_pack_tailr>4s¡€ð$×
Ò
Ñ
Ô
€CØ

ð$Ø—
’
˜5Ñ!Ô!×'Ò'¨Ñ-Ô-ˆØŒ8vÒÐØ×Ò˜U 1œXÑ&Ô&Ð&ؐŒ8vÒÐØ×ÒÑÔÐ݈u‰:Œ:˜Š>ˆ>˜U 1œXð.
ð
ð
ð

Ø×!Ò!Ñ#Ô#ˆðð$õ  <Ð/Ð/ØÐð
ð
ð
õ2°%×2DÒ2DÑ2FÔ2FÑGÔGð	Kð	K‰JˆD$ØÕ-Ò-Ð-ؐ	˜$‘”ØÕ3Ò3Ð3ؐ˜‘”å$Ð%BÀTÑ%IÑJÔJÐJð
	Kð	Kð	Ø—:’:˜hÑ'Ô'ˆDؐsŠ{ˆ{ؐØˆId‰OŒOˆOð		rTc
óX—eZdZdZ				d	d d„Zd„Zed„¦«Z	d!d	ee	e
e	e
egee
eefffd
„Z							d"ded
edeedefd„Z			d#dededeeee
e
fee
gee
fdeee
gdfdee
defd„Zdddœdedeee
gdfdee
fd„Zd„Zed„¦«Zd„Z	d!dede	e
deee
gdfdeee
eeffd„Zd„Z 					d$d„Z!dS)%Ú	GitClientzGit smart server client.TNFrMcóè—||_d|_tt¦«|_|j t
¦«¦«tt¦«|_|j t
¦«¦«|r|j t¦«|s|j 
t¦«|r!|j t¦«dSdS)a6Create a new GitClient instance.

        Args:
          thin_packs: Whether or not thin packs should be retrieved
          report_activity: Optional callback for reporting transport
            activity.
          include_tags: send annotated tags when sending the objects they point
            to
        N)
Ú_report_activityÚ_report_status_parserr—ÚUPLOAD_CAPABILITIESÚ_fetch_capabilitiesrørBÚRECEIVE_CAPABILITIESÚ_send_capabilitiesr+Úremover0r')rQÚ
thin_packsÚreport_activityÚquietÚinclude_tagss     rSrPzGitClient.__init__psæ€ð !0ˆÔØCGˆÔ"Ý#&Õ':Ñ#;Ô#;ˆÔ ØÔ ×$Ò$Õ%5Ñ%7Ô%7Ñ8Ô8Ð8Ý"%Õ&:Ñ";Ô";ˆÔØÔ×#Ò#Õ$4Ñ$6Ô$6Ñ7Ô7Ð7Øð	:ØÔ#×'Ò'Õ(8Ñ9Ô9Ð9Øð	BØÔ$×+Ò+Õ,@ÑAÔAÐAØð	AØÔ$×(Ò(Õ)?Ñ@Ô@Ð@Ð@Ð@ð	Að	ArTcó*—t|j¦«‚)zšRetrieves full url to given path.

        Args:
          path: Repository path (as string)

        Returns:
          Url to path (as string)

        )ÚNotImplementedErrorÚget_url©rQÚpaths  rSrOzGitClient.get_urls€õ" $¤,Ñ/Ô/Ð/rTcó*—t|j¦«‚)z³Create an instance of this client from a urlparse.parsed object.

        Args:
          parsedurl: Result of urlparse()

        Returns:
          A `GitClient` object
        )rNÚfrom_parsedurl©ÚclsÚ	parsedurlÚkwargss   rSrSzGitClient.from_parsedurl™s€õ" #Ô"4Ñ5Ô5Ð5rTÚgenerate_pack_datacó*—t|j¦«‚)apUpload a pack to a remote repository.

        Args:
          path: Repository path (as bytestring)
          update_refs: Function to determine changes to remote refs. Receive
            dict with existing remote refs, returns dict with
            changed refs (name -> sha, where sha=ZERO_SHA for deletions)
          generate_pack_data: Function that can return a tuple
            with number of objects and list of pack data to include
          progress: Optional progress function

        Returns:
          SendPackResult object

        Raises:
          SendPackError: if server rejects the pack data

        )rNÚ	send_pack)rQrQÚupdate_refsrXr3s     rSrZzGitClient.send_pack¥s€õ6" $¤.Ñ1Ô1Ð1rTÚoriginÚmkdirÚbarec
ó>—ddlm}
m}m}|rt	j|¦«	d}
|st
j|¦«}
|€d}n%|rtd¦«‚t
j	|¦«}
t|ttf¦«r| 
d¦«}n(| |¦« 
d¦«}|
€J‚|™|
 ¦«}| d| 
d¦«fd|¦«| d| 
d¦«fd	d
| 
d¦«zdz¦«| ¦«d|z}| ||
||	¬
¦«}|t'|
j||j|¬¦«|j d¦«}|j d¦«}||r|s
||
jd<|}nc||
j| 
d¦«|¦«|
|
j| 
d¦«|||¦«}|r||
j||¦«}nd}|r||
 ¦«n@#t.$r3|
|
 ¦«|rddl}| |¦«‚wxYw|
S)zClone a repository.r)Ú_set_default_branchÚ	_set_headÚ_set_origin_headNTz"checkout and bare are incompatibler„sremotesurlsfetchs+refs/heads/*:refs/remotes/s/*sclone: from ©r3r/)ÚmessagesHEADr)ršr`rarbÚosr]rJÚinitr†Ú	init_barer¿ÚLocalGitClientÚSubprocessGitClientr&rOÚ
get_configr—Ú
write_to_pathÚfetchrHr°rŸÚreset_indexÚ
BaseExceptionÚcloseÚshutilÚrmtree)rQrQÚtarget_pathr]r^r\ÚcheckoutÚbranchr3r/r`rarbÚtargetÚencoded_pathÚ
target_configÚref_messageÚresultÚorigin_headÚ
origin_shaÚheadÚhead_refrps                       rSÚclonezGitClient.cloneÂs€ð	KÐJÐJÐJÐJÐJÐJÐJÐJÐJàð	"ÝŒH[Ñ!Ô!Ð!ð@	؈FØð
5Ýœ ;Ñ/Ô/ØÐ#Ø#HøàðKÝ$Ð%IÑJÔJÐJÝœ¨Ñ4Ô4õ˜$¥Õ1DÐ EÑFÔFð
BØ#Ÿ{š{¨7Ñ3Ô3à#Ÿ|š|¨DÑ1Ô1×8Ò8¸ÑAÔAàÐ%Ð%Ð%ØÐ!Ø &× 1Ò 1Ñ 3Ô 3
Ø×!Ò! 9¨f¯mªm¸GÑ.DÔ.DÐ"EÀvÈ|Ñ\Ô\Ð\Ø×!Ò!Ø §
¢
¨gÑ 6Ô 6Ð7ØØ2°V·]²]À7Ñ5KÔ5KÑKÈeÑSñôðð
×+Ò+Ñ-Ô-Ð-à)¨LÑ8ˆKØ—Z’Z  f°xÀuZÑMÔMˆFØÐ!Ý# F¤K°¸¼ÈkÐZÑZÔZÐZà œ.×,Ò,¨WÑ5Ô5ˆKØœŸš¨Ñ1Ô1ˆJ؈~ *ˆ~°[ˆ~à'1”˜GÑ$Ø!à Ð  ¤¨f¯mªm¸GÑ.DÔ.DÀkÑRÔRÐRØ.Ð.Ø”KØ—M’M 'Ñ*Ô*ØØØñôðð Ø$˜9 V¤[°(¸KÑHÔHDDàDàð
%˜DÐ,Ø×"Ò"Ñ$Ô$Ð$øøÝð	ð	ð	ØÐ!Ø—’‘”Øð
+ؐ


à—
’
˜kÑ*Ô*Ð*Øð	øøøðˆ
s¢H:IÉ=JrQruÚdetermine_wantsr3r/c	óà‡‡‡
—|€‰jj}t|jvr:ddlm}|tdt‰jdd¦«¬¦«Š
ˆ
ˆˆfd„}ˆ
fd„}n‰j ¦«\Š
}}	| 	||‰ 
¦«‰
j‰|¬	¦«}	|¦«n#t$r|¦«‚wxYw‰ 
|	j|	j¦«|	S)
aFetch into a target repository.

        Args:
          path: Path to fetch from (as bytestring)
          target: Target repository to fetch into
          determine_wants: Optional function to determine what refs to fetch.
            Receives dictionary of name->sha, should return
            list of shas to fetch. Defaults to all shas.
          progress: Optional progress function
          depth: Depth to fetch at

        Returns:
          Dictionary with all remote refs (not just those fetched)

        Nr)ÚSpooledTemporaryFilez	incoming-rQ)Úmax_sizeÚprefixÚdircóƕ—‰ ¦«r7‰ d¦«‰j ‰jd‰¬¦«‰ ¦«dS)Nr©r3)ÚtellÚseekÚobject_storeÚ
add_thin_packr:ro)Úfr3rus€€€rSÚcommitzGitClient.fetch.<locals>.commit;sTø€Ø—6’6‘8”8ðWØ—F’F˜1‘I”IIØÔ'×5Ò5°a´f¸dÈXÐ5ÑVÔVÐVØ—’‘	”				rTcó0•—‰ ¦«dSr¯©ro)r‹s€rSÚabortzGitClient.fetch.<locals>.abortAsø€Ø—’‘	”				rTrc)r‰Údetermine_wants_allr0rEÚtempfilerrrÙÚadd_packÚ
fetch_packÚget_graph_walkerÚwriternÚupdate_shallowr²r³)rQrQrurr3r/rrŒrryr‹s  ` `     @rSrlzGitClient.fetchs_øøø€ð2Ð"Ø$Ô1ÔEˆOÝ 4Ô#;Ð;Ð;Ø5Ð5Ð5Ð5Ð5Ð5à/Ð/Ý1Ø"ݘFÔ/°¸Ñ>Ô>ðñôˆAð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð &Ô2×;Ò;Ñ=Ô=ÑˆAˆvuð
	Ø—_’_ØØØ×'Ò'Ñ)Ô)Ø”Ø!Øð
%ñôˆFð
ˆF‰HŒHˆHˆHøõ	ð	ð	ð	ØˆE‰GŒGˆGØð	øøøð
	×Ò˜fÔ0°&Ô2FÑGÔGÐG؈
sÁ82B5Â5Crccó*—t|j¦«‚)áRetrieve a pack from a git smart server.

        Args:
          path: Remote path to fetch from
          determine_wants: Function determine what refs
            to fetch. Receives dictionary of name->sha, should return
            list of shas to fetch.
          graph_walker: Object with next() and ack().
          pack_data: Callback called for each bit of data in the pack
          progress: Callback for progress reports (strings)
          depth: Shallow fetch depth

        Returns:
          FetchPackResult object

        )rNr“)rQrQrr-r2r3r/s       rSr“zGitClient.fetch_packWs€õ4" $¤/Ñ2Ô2Ð2rTcó*—t|j¦«‚)zŠRetrieve the current refs from a git smart server.

        Args:
          path: Path to the repo to fetch from. (as bytestring)
        )rNÚget_refsrPs  rSršzGitClient.get_refsss€õ" $¤-Ñ0Ô0Ð0rTcóX—td„| ¦«D¦«¦«S)Nc3ó,K—|]}|tkV—ŒdSr¯r	)rr›s  rSú	<genexpr>z.GitClient._should_send_pack.<locals>.<genexpr>~s&èè€Ð@Ð@ s3(’?Ð@Ð@Ð@Ð@Ð@Ð@rT)Úanyr¦)rs rSÚ_should_send_packzGitClient._should_send_pack{s+€õÐ@Ð@¨h¯oªoÑ.?Ô.?Ð@Ñ@Ô@Ñ@Ô@Ð@rTcó˜—|j|z}d}|D]!}t|¦«\}}|tkr|}Œ"t|¦«tz
||fSr¯)rGrEr%rDr7)rQr™Únegotiated_capabilitiesr±Ú
capabilityÚkÚvs       rSÚ$_negotiate_receive_pack_capabilitiesz.GitClient._negotiate_receive_pack_capabilities€sh€Ø"&Ô"9Ð<OÑ"OÐØˆØ-ð	ð	ˆJÝ# JÑ/Ô/‰DˆAˆqØÕ$Ò$Ð$ؐøÝ	!Ð"5Ñ	6Ô	6Õ9SÑ	SÐ	Sà&¨Ð-Ð-rTr,rcóL—t|vrª|€d„}t|vr"|j€J‚t|jj¦«}t| ¦«¦«D]W\}}|tkrt|vr| |¦«Œ/|tkr||¦«ŒFtd|z¦«‚nCt|vr:|jsJ‚| ¦«D]}|j |¦«Œ|j&t|j ¦«¦«SdS)aƒHandle the tail of a 'git-receive-pack' request.

        Args:
          proto: Protocol object to read from
          capabilities: List of negotiated capabilities
          progress: Optional progress reporting function

        Returns:
          dict mapping ref name to:
            error message if the ref failed to update
            None if it was updated successfully
        Ncó—dSr¯r[r6s rSr3z5GitClient._handle_receive_pack_tail.<locals>.progress s€ØDrTr8)
r.r,rCr?r’rr'r9Úparser;r+rÀrŒ)rQr,rr3Úpktline_parserr<r=rs        rSÚ_handle_receive_pack_tailz#GitClient._handle_receive_pack_tail‹s[€õ$$ |Ð3Ð3ØÐðððõ(¨<Ð7Ð7ØÔ1Ð=Ð=Ð=Ý!.¨tÔ/IÔ/WÑ!XÔ!XÝ5°e×6HÒ6HÑ6JÔ6JÑKÔKð
Oð
O‘
dØÕ1Ò1Ð1Ý/°<Ð?Ð?Ø&×,Ò,¨TÑ2Ô2Ð2øØÕ7Ò7Ð7ؐH˜T‘N”NNNå(Ð)FÈÑ)MÑNÔNÐNð
Oõ(¨<Ð7Ð7ØÔ1Ð1Ð1Ð1Ø ×-Ò-Ñ/Ô/ðBðBCØÔ.×<Ò<¸SÑAÔAÐAÐAØÔ%Ð1ݘÔ2×8Ò8Ñ:Ô:Ñ;Ô;Ð;àˆtrTcóð—t|¦«tz
i}d}|D]J}t|¦«\}}|tkr| dd¦«\}}|||<|t
kr|}ŒK|j|z}	|	||fS)Nó:r)rDr8rEr/r…r%rE)
rQr™r°r±r¢r£r¤ÚsrcÚdstr¡s
          rSÚ#_negotiate_upload_pack_capabilitiesz-GitClient._negotiate_upload_pack_capabilities¸s›€Ý	!Ð"5Ñ	6Ô	6Õ9RÑ	RÐ	RàˆØˆØ-ð	ð	ˆJÝ# JÑ/Ô/‰DˆAˆqØÕ%Ò%Ð%ØŸWšW T¨1Ñ-Ô-‘
cØ"˜‘ØÕ$Ò$Ð$ؐøà"&Ô":Ð=PÑ"PÐØ'¨°%Ð8Ð8rTc	ó*—t|j¦«‚)z*Retrieve an archive of the specified tree.)rNÚarchive)	rQrQÚ
committishÚ
write_datar3Úwrite_errorràÚsubdirsrƒs	         rSr±zGitClient.archiveÈs€õ" $¤,Ñ/Ô/Ð/rT)TNFFrUr¯)TFr\NNNN©NNN©NNNNN)"rWrXrYrZrPrOÚclassmethodrSrrrrærrçrr!rZrrärJr~r
r
ržrlr“ršÚstaticmethodrŸr¥r@rªr¯r±r[rTrSr@r@msü€€€€€Ø"Ð"ðØØØðAð
ð
AðAðAðAð:
0ð
0ð
0ðð	6ð	6ñ„[ð	6ð$ð2ð2ð%Ø
ŒZ˜˜Uœ TÐ*¨E°#°xÀÔ7OÐ2OÔ,PÐPô
ð	2ð2ð2ð2ðBØØ (ØØØØðSðSðð	Sð
ðSð˜”
ð
Sð
ðSðSðSðSðv
Ø6:Ø#ð>ð>àð>ðð>ð"Ød˜5 %˜<Ô(¨(°3¬-Ð8¸$¸u¼+ÐEÔFô
ð	>ð˜8 U G¨T MÔ2Ô3ð>ð˜Œ}ð>ð
ð>ð>ð>ð>ðN7;Ø#ð3ð3ð3àð3ð˜8 U G¨T MÔ2Ô3ð3ð˜Œ}ð3ð3ð3ð3ð81ð1ð1ððAðAñ„\ðAð	.ð	.ð	.ð7;ð	+ð+àð+ð˜%”jð+ð˜8 U G¨T MÔ2Ô3ð	+ð

$u˜h sœmÐ+Ô,Ô	-ð+ð+ð+ð+ðZ9ð9ð9ð*ØØØØð0ð0ð0ð0ð0ð0rTr@có„—t|¦«d„| ¦«D¦«z
}|rt|¦«‚dS)z‰Check that a set of wants is valid.

    Args:
      wants: Set of object SHAs to fetch
      refs: Refs dictionary to check against
    cóL—h|]!\}}| t¦«°|’Œ"Sr[)ÚendswithrG)rr£r¤s   rSú	<setcomp>zcheck_wants.<locals>.<setcomp>Þs>€ðððÙˆq!¨A¯JªJÕ7HÑ,IÔ,IðØ	ðððrTN)r—r¤rL)rRršÚmissings   rSÚcheck_wantsr¿×sZ€õ%‰jŒjððØŸ
š
™œðñôñ€Gðð$ݘ7Ñ#Ô#Ð#ð$ð$rTcó$—|€t¦«Sd„| ¦«D¦«}|D]Q}| d¦«r:t|t	d¦«d… dd¦«¦«cSŒRt|¦«S)Ncó8—g|]}| d¦«‘ŒS)r”)r–)rÚlines  rSr
z-_remote_error_from_stderr.<locals>.<listcomp>ès$€Ð?Ð?Ð? DˆT[Š[˜Ñ
Ô
Ð?Ð?Ð?rTsERROR: r„r•)r>Ú	readlinesÚ
startswithrrfr‡)ÚstderrÚlinesrÂs   rSÚ_remote_error_from_stderrrÇås¡€Ø
€~ÝÑ Ô Ð Ø?Ð?¨F×,<Ò,<Ñ,>Ô,>Ð?Ñ?Ô?€EØðXðXˆØ?Š?˜:Ñ&Ô&ð	XÝ# D­¨Z©¬Ð):Ð):Ô$;×$BÒ$BÀ7ÈIÑ$VÔ$VÑWÔWÐWÐWÐWð	Xå˜5Ñ!Ô!Ð!rTcó^‡—eZdZdZdZefdˆfd„
Zd„Zdd„Z		d
d„Zd	„Z						dd
„Z
ˆxZS)ÚTraditionalGitClientzTraditional Git client.r„rMNcóH•—||_t¦«jdi|¤ŽdS©Nr[)Ú_remote_path_encodingrÚrP)rQÚ
path_encodingrWrÝs   €rSrPzTraditionalGitClient.__init__ôs.ø€Ø%2ˆÔ"؍‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"rTcƒóK—t‚)aïCreate a connection to the server.

        This method is abstract - concrete implementations should
        implement their own variant which connects to the server and
        returns an initialized Protocol object with the service ready
        for use and a can_read function which may be used to see if
        reads would block.

        Args:
          cmd: The git service name to which we should connect.
          path: The path we should pass to the service. (as bytestirng)
        )rN)rQrùrQs   rSÚ_connectzTraditionalGitClient._connectøsèè€õ"Ð!rTcó’—| d|¦«\}}}|5	t| ¦«¦«\}}	n"#t$r}
t	|¦«|
‚d}
~
wwxYw| |	¦«\}}t|vrt¦«|_|j}
	|t|¦«¦«x}}n$#t$r| d¦«‚wxYwt| 
¦«¦« t| 
¦«¦«¦«r3| d¦«t||i¬¦«cddd¦«St |	vrgt|¦«}| 
¦«D]C\}}|t"kr3t|vr'|
j d|zdz¦«d|
_||=ŒD|€3| d¦«t||i¬¦«cddd¦«St+|¦«dkr[|rY| d¦«|
"t|
 ¦«¦«}nd}t|||¬¦«cddd¦«St/|||¦«}|D]}| |¦«Œ||j|jt4|v|¬¦«\}}| |¦«r*t9|||¬	¦«D]}| |¦«Œ| |||¦«}t|||¬¦«cddd¦«S#1swxYwYdS)
auUpload a pack to a remote repository.

        Args:
          path: Repository path (as bytestring)
          update_refs: Function to determine changes to remote refs.
            Receive dict with existing remote refs, returns dict with
            changed refs (name -> sha, where sha=ZERO_SHA for deletions)
          generate_pack_data: Function that can return a tuple with
            number of objects and pack data to upload.
          progress: Optional callback called with progress updates

        Returns:
          SendPackResult

        Raises:
          SendPackError: if server rejects the pack data

        sreceive-packN©r±r‘sng s& remote does not support deleting refsFr)Ú	ofs_deltar3r†)rÏrœr'r>rÇr¥r,r{rCrÀrnr%r—r¤Úissubsetrër&r=r€rÚ_ref_status_okrfrŒrürÿrþr*rŸr r•rª)rQrQr[rXr3r,Úunused_can_readrÅrr™Úexcr¡r±Úreport_status_parserrÚ
orig_new_refsrŠr›r‘Úheader_handlerrÚpack_data_countr2Úchunks                        rSrZzTraditionalGitClient.send_packsÆ€ð&*.¯ª°ÈÑ)MÔ)MÑ&ˆˆ Ø
ðG	PðG	Pð
AÝ0=¸e×>PÒ>PÑ>RÔ>RÑ0SÔ0SÑ-Ð-Ð-øÝ"ð
Að
Að
AÝ/°Ñ7Ô7¸SÐ@øøøøð
Aøøøð
×9Ò9Ð:MÑNÔNñ
Ø'Øå'Ð+BÐBÐBÝ-?Ñ-AÔ-AÔ*Ø#'Ô#=Ð ð
Ø+6¨;µt¸H±~´~Ñ+FÔ+FÐF˜=˜=øÝ ð
ð
ð
Ø×$Ò$ TÑ*Ô*Ð*Øð
øøøõ8—>’>Ñ#Ô#Ñ$Ô$×-Ò-­c°(·.².Ñ2BÔ2BÑ.CÔ.CÑDÔDð
LØ×$Ò$ TÑ*Ô*Ð*Ý% h°eÈÐKÑKÔKð+G	PðG	PðG	PðG	PñG	PôG	PðG	PðG	Põ.&Ð-@Ð@Ð@å 
Ñ.Ô.Ø -× 3Ò 3Ñ 5Ô 5ð*ð*‘HC˜Øh’Ý3Ð7NÐNÐNØ0Ô>×EÒEØ &¨¡Ð/XÑ XñôððCHÐ0Ô?Ø$ S˜MøàÐØ×$Ò$ TÑ*Ô*Ð*Ý% h°eÈÐKÑKÔKðKG	PðG	PðG	PðG	PñG	PôG	PðG	PðG	PõN8‰}Œ} Ò!Ð! mÐ!à×$Ò$ TÑ*Ô*Ð*Ø'Ð3Ý!%Ð&:×&@Ò&@Ñ&BÔ&BÑ!CÔ!CJJà!%JÝ% h°eÈ
ÐSÑSÔSð]G	PðG	PðG	PðG	PñG	PôG	PðG	PðG	Põ`2Ø'¨°8ñôˆNð&ð
*ð
*Ø×$Ò$ SÑ)Ô)Ð)Ð)à);Ð);ØÔ#ØÔ#Ý/Ð3JÐJØ!ð	*ñ*ô*Ñ&ˆO˜Yð×%Ò% hÑ/Ô/ð
'Ý/Ø# Y¸ðñôð'ð'Eð—K’K Ñ&Ô&Ð&Ð&à×7Ò7ØÐ.°ñôˆJõ" (°%ÀJÐOÑOÔOðOG	PðG	PðG	PðG	PñG	PôG	PðG	PðG	PðG	PðG	PðG	PðG	PøøøðG	PðG	PðG	PðG	PðG	PðG	PsbL<Ÿ$AÁL<Á
A#ÁAÁA#Á#>L<Â"B=Â<L<Â=!CÃA<L<Å'BL<ÈA!L<É:B5L<Ì<MÍMc	ó—| d|¦«\}}}	|5	t| ¦«¦«\}
}n"#t$r}t	|	¦«|‚d}~wwxYw| |¦«\}
}}|
€2| d¦«t|
||¦«cddd¦«S	|||
|¬¦«}n||
¦«}n$#t$r| d¦«‚wxYw|d„|D¦«}|s2| d¦«t|
||¦«cddd¦«St||
||||¬¦«\}}t||
|||¦«t|
||||¦«cddd¦«S#1swxYwYdS)r˜óupload-packN©r/có(—g|]}|tk¯
|‘ŒSr[r	©rÚcids  rSr
z3TraditionalGitClient.fetch_pack.<locals>.<listcomp>–s€ÐAÐAÐA °½²°˜°°°rT)rÏrœr'r>rÇr¯r%ržrnr1r>)rQrQrr-r2r3r/r,r.rÅršr™rÖr¡r°r±rRr²r³s                   rSr“zTraditionalGitClient.fetch_packds³€ð2#'§-¢-°ÀÑ"EÔ"Eшˆx˜Ø
ð+	Uð+	Uð
AÝ,9¸%×:LÒ:LÑ:NÔ:NÑ,OÔ,OÑ)Ð)Ð)øÝ"ð
Að
Að
AÝ/°Ñ7Ô7¸SÐ@øøøøð
Aøøøð×8Ò8Ð9LÑMÔMñ	
Ø'ØØðˆ|Ø×$Ò$ TÑ*Ô*Ð*Ý& t¨W°eÑ<Ô<ð+	Uð+	Uð+	Uð+	Uñ+	Uô+	Uð+	Uð+	Uð
ØÐ$Ø+˜O¨D¸Ð>Ñ>Ô>EEà+˜O¨DÑ1Ô1EøøÝ ð
ð
ð
Ø×$Ò$ TÑ*Ô*Ð*Øð
øøøðÐ ØAÐA¨ÐAÑAÔAØð
=Ø×$Ò$ TÑ*Ô*Ð*Ý& t¨W°eÑ<Ô<ð7+	Uð+	Uð+	Uð+	Uñ+	Uô+	Uð+	Uð+	Uõ8,DØØ'ØØØØð
,ñ,ô,Ñ(ˆ[˜-õ
%ØØ'ØØØñ
ô
ð
õ# 4¨°%¸ÀmÑTÔTðW+	Uð+	Uð+	Uð+	Uñ+	Uô+	Uð+	Uð+	Uð+	Uð+	Uð+	Uð+	Uøøøð+	Uð+	Uð+	Uð+	Uð+	Uð+	UsSFŸ$AÁFÁ
A#ÁAÁA#Á#AFÂ4CÃFÃ!C1Ã18FÄ6=FÆFÆFcó,—| d|¦«\}}}|5	t| ¦«¦«\}}n"#t$r}t	|¦«|‚d}~wwxYw| d¦«|cddd¦«S#1swxYwYdS)ú2Retrieve the current refs from a git smart server.rÝN)rÏrœr'r>rÇr%)rQrQr,Ú_rÅršrÖs       rSršzTraditionalGitClient.get_refs«s÷€ð Ÿ=š=¨¸Ñ>Ô>шˆq&Ø
ð	ð	ð
AÝ'¨×(:Ò(:Ñ(<Ô(<Ñ=Ô=‘aaøÝ"ð
Að
Að
AÝ/°Ñ7Ô7¸SÐ@øøøøð
Aøøøà× Ò  Ñ&Ô&Ð&Øð
	ð	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	s4B	Ÿ$AÁB	Á
A#ÁAÁA#Á#B	Â	B
ÂB
c	ó>—| d|¦«\}	}
}|	5||	 d|z¦«|	 d|z¦«||D]}|	 d|z¦«Œ||	 d|z¦«|	 d¦«	|	 ¦«}
n"#t$r}t	|¦«|‚d}~wwxYw|
dks|
dkr	ddd¦«dS|
dks|
dkrne|
 d	¦«r>t
|
d
d… d¦« dd
¦«¦«‚td|
z¦«‚|	 ¦«}|td¦«‚t|	 ¦«¦«D][\}}|tkr||¦«Œ|tkr||¦«Œ3|tkr||¦«ŒJtd|z¦«‚	ddd¦«dS#1swxYwYdS)Nsupload-archivesargument --format=s	argument sargument --prefix=sNACK
sNACKsACK
rsERR ér”r„r•zinvalid response %rzexpected pkt tailr8)rÏr%r)r>rÇrÄrr–r‡r+rr'r9r;r:)rQrQr²r³r3r´ràrµrƒr,r.rÅÚsubdirrrÖÚretr<r=s                  rSr±zTraditionalGitClient.archive·s€ð#'§-¢-Ð0AÀ4Ñ"HÔ"Hшˆx˜Ø
ð!	Oð!	OØÐ!Ø×$Ò$Ð%:¸VÑ%CÑDÔDÐDØ× Ò  °
Ñ!:Ñ;Ô;Ð;ØÐ"Ø%ð@ð@FØ×(Ò(¨¸Ñ)>Ñ?Ô?Ð?Ð?ØÐ!Ø×$Ò$Ð%:¸VÑ%CÑDÔDÐDØ× Ò  Ñ&Ô&Ð&ð
AØ×)Ò)Ñ+Ô+øÝ"ð
Að
Að
AÝ/°Ñ7Ô7¸SÐ@øøøøð
AøøøàiÒР3¨'¢> >Øð!	Oð!	Oð!	Oñ!	Oô!	Oð!	Oð!	Oð!	Oð ˜’ C¨6¢M MØØ—’ Ñ(Ô(ð
BÝ& s¨1¨2¨2¤w§~¢~°eÑ'<Ô'<×'CÒ'CÀGÈYÑ'WÔ'WÑXÔXÐXå$Ð%:¸SÑ%@ÑAÔAÐAØ×%Ò%Ñ'Ô'ˆC؈Ý$Ð%8Ñ9Ô9Ð9Ý5°e×6HÒ6HÑ6JÔ6JÑKÔKð
Oð
O‘
dØÕ1Ò1Ð1ؐJ˜tÑ$Ô$Ð$Ð$ØÕ7Ò7Ð7ؐH˜T‘N”NNNØÕ4Ò4Ð4ؐK Ñ%Ô%Ð%Ð%å(Ð)FÈÑ)MÑNÔNÐNð
Oð3!	Oð!	Oð!	Oñ!	Oô!	Oð!	Oð!	Oð!	Oð!	Oð!	Oð!	Oð!	Oøøøð!	Oð!	Oð!	Oð!	Oð!	Oð!	Os=BHÂB4Â3HÂ4
CÂ>CÃCÃHÃ0DHÈHÈHrUr¯râr·)rWrXrYrZÚDEFAULT_ENCODINGrPrÏrZr“ršr±rèrés@rSrÉrÉïsÞø€€€€€Ø!Ð!àÐà%5ð#ð#ð#ð#ð#ð#ð#ð
"ð
"ð
"ð[Pð[Pð[Pð[PðFØðEUðEUðEUðEUðN
ð
ð
ð"ØØØØð-Oð-Oð-Oð-Oð-Oð-Oð-Oð-OrTrÉcóH‡—eZdZdZdd	ˆfd„
Zed„¦«Zd„Zd„ZˆxZ	S)
ÚTCPGitClientz8A Git Client that works over TCP directly (i.e. git://).NrMcóh•—|€t}||_||_t¦«jdi|¤ŽdSrË)r<Ú_hostÚ_portrÚrP)rQÚhostÚportrWrÝs    €rSrPzTCPGitClient.__init__ês>ø€Øˆ<݈D؈Œ
؈Œ
؍‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"rTcó,—||jfd|ji|¤ŽS)Nrð)ÚhostnamerðrTs   rSrSzTCPGitClient.from_parsedurlñs$€àˆs9Ô%ÐEÐE¨I¬NÐE¸fÐEÐEÐErTcó€—|j}|j|jtkr
|d|jzz
}td||ddf¦«S)Nú:%dÚgitÚ)rírîr<r©rQrQÚnetlocs   rSrOzTCPGitClient.get_urlõsG€Ø”ˆØŒ:Ð! d¤jµLÒ&@Ð&@Øe˜dœjÑ(Ñ(ˆFݘ5 &¨$°°BÐ7Ñ8Ô8Ð8rTcó܇‡
‡—t|t¦«st|¦«‚t|t¦«s| |j¦«}tj|j|jt
j	t
j
¦«}dŠ
td|jz¦«}|D]‘\}}}}}	tj|||¦«Š
‰
 t
j
t
jd¦«	‰
 |	¦«n1#t$r$}
|
}‰
‰
 ¦«dŠ
Yd}
~
ŒŠd}
~
wwxYw‰
€|‚‰
 dd¦«Š‰
 dd¦«Šˆˆ
ˆfd„}t%‰j‰j||j¬¦«}| d	¦«r
|dd…}| d
|z|d|j d¦«z¦«|ˆ
fd
„dfS)Nzno address found for %srÚrbéÿÿÿÿÚwbrc󀕗‰ ¦«‰ ¦«‰ ¦«dSr¯rŽ)ÚrfileÚsÚwfiles€€€rSroz$TCPGitClient._connect.<locals>.closes.ø€ØKŠK‰MŒMˆMØKŠK‰MŒMˆMØ
GŠG‰IŒIˆIˆIˆIrT©rJs/~ógit-shost=rcó"•—t‰¦«Sr¯)ri)rÿs€rSú<lambda>z'TCPGitClient._connect.<locals>.<lambda>&sø€Õ.¨qÑ1Ô1€rT)r¿rrr&rÌÚsocketÚgetaddrinforírîÚ	AF_UNSPECÚSOCK_STREAMrrÚ
setsockoptÚIPPROTO_TCPÚTCP_NODELAYÚconnectroÚmakefiler@r:r•rBrÄÚsend_cmd)rQrùrQÚ	sockaddrsÚerrÚfamilyÚsocktyper,Ú	canonnameÚsockaddrÚerorþrÿrs            @@@rSrÏzTCPGitClient._connectûsøøø€Ý˜#uÑ%Ô%ð	!ݘC‘.”.Ð ݘ$¥Ñ&Ô&ð	;Ø—;’;˜tÔ9Ñ:Ô:ˆDÝÔ&ØŒJ˜œ
¥FÔ$4µfÔ6Hñ
ô
ˆ	ð
ˆÝÐ/°$´*Ñ<Ñ=Ô=ˆØ<Eð
	ð
	Ñ8ˆFH˜e Y°Ý”
˜f h°Ñ6Ô6ˆAØ
LŠLÔ+­VÔ-?ÀÑCÔCÐCð
Ø—	’	˜(Ñ#Ô#Ð#ؐøÝð
ð
ð
ؐؐ=Ø—G’G‘I”IIؐøøøøð	
øøøð

ˆ9؈Ià—
’
˜4 Ñ$Ô$ˆà—
’
˜4 Ñ#Ô#ˆð	ð	ð	ð	ð	ð	ð	õ
ØŒJØŒKØØ Ô1ð	
ñ
ô
ˆð?Š?˜5Ñ!Ô!ð	ؘ˜˜”8ˆDà
Šw ‘} d¨H°t´z×7HÒ7HÈÑ7QÔ7QÑ,QÑRÔRÐRØÐ1Ð1Ð1Ð1°4Ð7Ð7sÃ1DÄ
D6ÄD1Ä1D6r¯rU)
rWrXrYrZrPr¸rSrOrÏrèrés@rSrërëçs„ø€€€€€ØBÐBð#ð#ð#ð#ð#ð#ð#ððFðFñ„[ðFð9ð9ð9ð+8ð+8ð+8ð+8ð+8ð+8ð+8rTrëcó<—eZdZdZdd„Zed„¦«Zd„Zd„ZdS)	ÚSubprocessWrapperz:A socket-like object that talks to a subprocess via pipes.rMNcór—||_t|j¦«j|_|jj|_dSr¯)ÚprocrÚstdoutr:Ústdinr•)rQrs  rSrPzSubprocessWrapper.__init__,s-€ØˆŒ	Ý" 4¤;Ñ/Ô/Ô4ˆŒ	Ø”ZÔ%ˆŒ
ˆ
ˆ
rTcó—|jjSr¯)rrÅrs rSrÅzSubprocessWrapper.stderr1s
€àŒyÔÐrTcóø—tjdkr@ddlm}||jj ¦«¦«}t|¦«dkSt|jj ¦«¦«S)NÚwin32r)Ú
get_osfhandle)	ÚsysÚplatformÚmsvcrtrrrrhryri)rQrrus   rSr.zSubprocessWrapper.can_read5ss€ÝŒ<˜7Ò"Ð"Ø,Ð,Ð,Ð,Ð,Ð,à"] 4¤9Ô#3×#:Ò#:Ñ#<Ô#<Ñ=Ô=ˆFÝ$ VÑ,Ô,°Ò1Ð1å# D¤IÔ$4×$;Ò$;Ñ$=Ô$=Ñ>Ô>Ð>rTcó—|jj ¦«|jj ¦«|jjr|jj ¦«|j ¦«dSr¯)rrrorrÅÚwaitrs rSrozSubprocessWrapper.close>sk€ØŒ	Œ×ÒÑÔÐØŒ	Ô×ÒÑ Ô Ð ØŒ9Ôð	%ØŒIÔ×"Ò"Ñ$Ô$Ð$ØŒ	ŠÑÔÐÐÐrTrU)	rWrXrYrZrPÚpropertyrÅr.ror[rTrSrr)sg€€€€€ØDÐDð&ð&ð&ð&ð
ð ð ñ„Xð ð?ð?ð?ðððððrTrcó—tjdkrM	ddl}ddl}	| d¦«\}}|gS#|j$rgd¢cYSwxYw#t$rgd¢cYSwxYwdgS)z3Find command to run for system Git (usually C Git).rrNrõ)rùz/crõ)r r!Ú
pywintypesÚwin32apiÚFindExecutabler‹ÚImportError)r'r(rˆrõs    rSÚfind_git_commandr+Fs´€å
„|wÒÐð
	,ØÐÐÐØˆOˆOˆOð
,Ø&×5Ò5°eÑ<Ô<‘˜ØuøØÔ#ð
,ð
,ð
,Ø+Ð+Ð+Ð+Ð+Ð+ð
,øøøøõ
ð	(ð	(ð	(Ø'Ð'Ð'Ð'Ð'Ð'ð	(øøøðˆwˆs ’A
›6¶AÁAÁ
AÁAcó2—eZdZdZed„¦«ZdZd„ZdS)riz5Git client that talks to a server using a subprocess.có—|di|¤ŽSrËr[rTs   rSrSz"SubprocessGitClient.from_parsedurl[ó€àˆsˆ}ˆ}Vˆ}ˆ}ÐrTNcóü—t|t¦«st|¦«‚t|t¦«r| |j¦«}|j€t
¦«}g|¢| d¦«‘|‘}tj|dtj	tj	tj	¬¦«}t|¦«}t|j|j
|j|j¬¦«|j|jfS)Nrr©ÚbufsizerrrÅr)r¿rrr‡rÌÚgit_commandr+Ú
subprocessÚPopenÚPIPErr@r:r•rorBr.rÅ)rQÚservicerQr2ÚargvÚpÚpws       rSrÏzSubprocessGitClient._connectasô€Ý˜'¥5Ñ)Ô)ð	%ݘGÑ$Ô$Ð$ݐdEÑ"Ô"ð	;Ø—;’;˜tÔ9Ñ:Ô:ˆDØÔÐ#Ý*Ñ,Ô,ˆKØ<Ð<˜gŸnšn¨WÑ5Ô5Ð<°tÐ<ˆÝÔØØÝ”/Ý”?Ý”?ð
ñ
ô
ˆõ˜qÑ
!Ô
!ˆåØ”Ø”Ø”Ø $Ô 5ð	
ñ
ô
ð
ŒKØ
ŒHð	
ð		
rT)rWrXrYrZr¸rSr2rÏr[rTrSririXsI€€€€€Ø?Ð?àððñ„[ðð€Kð
ð
ð
ð
ð
rTricóŒ—eZdZdZ	ddeeddfd„Zd„Zed„¦«Z	ed	„¦«Z
dd
„Zdd„Z		dde
fd„Zd
„ZdS)rhz'Git Client that just uses a local Repo.TNÚconfigrMcó—||_dS)zÜCreate a new LocalGitClient instance.

        Args:
          thin_packs: Whether or not thin packs should be retrieved
          report_activity: Optional callback for reporting transport
            activity.
        N)rB)rQrIrJr;s    rSrPzLocalGitClient.__init__€s€ð!0ˆÔÐÐrTcó*—tdd|ddf¦«S)NÚfilerö)rrPs  rSrOzLocalGitClient.get_urls€Ý˜6 2 t¨R°Ð4Ñ5Ô5Ð5rTcó—|di|¤ŽSrËr[rTs   rSrSzLocalGitClient.from_parsedurlr.rTcóŒ—t|t¦«stj|¦«}t	t|¦«¦«Sr¯)r¿räreÚfsdecoderrJ)rUrQs  rSÚ
_open_repozLocalGitClient._open_repo”s7€å˜$¥Ñ$Ô$ð	%Ý”;˜tÑ$Ô$ˆDÝ•t˜D‘z”zÑ"Ô"Ð"rTcó
—|sd„}| |¦«5}| ¦«}|t|¦«¦«}d„| ¦«D¦«}g}	| ¦«D]-\}
}||vr$||	vr |t
kr|	 |¦«Œ.|	spt| ¦«¦« t| ¦«¦«¦«rt|i¬¦«cddd¦«S|j
j|||	d¬¦«Ži}| ¦«D]Ž\}
}| |
t
¦«}
|t
kr5|j
 |
|
|¦«sd|
›d|›}||¦«|||
<Œ`|j
 |
|
¦«s|d	|
z¦«d
||
<Œ	ddd¦«n#1swxYwYt||¬¦«S)a Upload a pack to a remote repository.

        Args:
          path: Repository path (as bytestring)
          update_refs: Function to determine changes to remote refs.
            Receive dict with existing remote refs, returns dict with
            changed refs (name -> sha, where sha=ZERO_SHA for deletions)
            with number of items and pack data to upload.
          progress: Optional progress function

        Returns:
          SendPackResult

        Raises:
          SendPackError: if server rejects the pack data

        có—dSr¯r[r6s rSr3z*LocalGitClient.send_pack.<locals>.progress®r7rTcó(—g|]}|tk¯
|‘ŒSr[r	)rÚsha1s  rSr
z,LocalGitClient.send_pack.<locals>.<listcomp>µs"€ÐKÐKÐK˜T¸$Å(Ò:JÐ:JDÐ:JÐ:JÐ:JrT)r‘NT©rÒzunable to set z to zunable to remove %szunable to remove)rBršrÀr¦r¤r=rr—rÓrër‰Ú
add_pack_datarŸršÚ
set_if_equalsÚremove_if_equals)rQrQr[rXr3rurrrÿrþrrr‘rÚmsgs               rSrZzLocalGitClient.send_packšs¼€ð$ð	ð
ð
ð
ð_Š_˜TÑ
"Ô
"ð!	A fØ—’Ñ(Ô(ˆHØ"{¥4¨¡>¤>Ñ2Ô2ˆHàKÐK X§_¢_Ñ%6Ô%6ÐKÑKÔKˆD؈DØ%-§^¢^Ñ%5Ô%5ð
*ð
*Ñ!˜à DÐ(Ð(Ø ¨Ð,Ð,Ø ¥HÒ,Ð,à—K’K Ñ)Ô)Ð)øàð
?C §¢Ñ 0Ô 0Ñ1Ô1×:Ò:½3¸x¿~º~Ñ?OÔ?OÑ;PÔ;PÑQÔQð
?Ý% h¸2Ð>Ñ>Ô>ð!	Að!	Að!	Að!	Añ!	Aô!	Að!	Að!	Að"
.ˆFÔÔ-Ø#Ð# D¨$¸$Ð?Ñ?Ô?ð
ð
ðˆJà%-§^¢^Ñ%5Ô%5ð

Að

AÑ!˜Ø#Ÿ<š<¨µÑ:Ô:ØxÒ'Ð'Ø!œ;×4Ò4°W¸hÈÑQÔQð2ØF¨wÐFÐF¸HÐFÐF˜Ø ˜ ™
œ
˜
Ø.1˜
 7Ñ+øà!œ;×7Ò7¸ÀÑJÔJðAØ ˜Ð!6¸Ñ!@ÑAÔAÐAØ.@˜
 7Ñ+øð

Að/!	Að!	Að!	Añ!	Aô!	Að!	Að!	Að!	Að!	Að!	Að!	Aøøøð!	Að!	Að!	Að!	AõF˜h°:Ð>Ñ>Ô>Ð>s›C4G)ÄCG)Ç)G-Ç0G-cóú—| |¦«5}| ||||¬¦«}t||j ¦«t¦«¦«cddd¦«S#1swxYwYdS)aäFetch into a target repository.

        Args:
          path: Path to fetch from (as bytestring)
          target: Target repository to fetch into
          determine_wants: Optional function determine what refs
            to fetch. Receives dictionary of name->sha, should return
            list of shas to fetch. Defaults to all shas.
          progress: Optional progress function
          depth: Shallow fetch depth

        Returns:
          FetchPackResult object

        )rr3r/N)rBrlržršÚget_symrefsrA)rQrQrurr3r/Úrršs        rSrlzLocalGitClient.fetchÖsрð _Š_˜TÑ
"Ô
"ð	O aØ—7’7ØØ /Ø!Øð	ñôˆDõ# 4¨¬×);Ò);Ñ)=Ô)=½|¹~¼~ÑNÔNð	Oð	Oð	Oð	Oñ	Oô	Oð	Oð	Oð	Oð	Oð	Oð	Oøøøð	Oð	Oð	Oð	Oð	Oð	Os–A
A0Á0A4Á7A4cóÚ—| |¦«5}| ||||¬¦«}| ¦«}	t|¦«}
|j ¦«}t
¦«}|
€td||¦«cddd¦«St||j	|
|	¬¦«t| 
¦«||¦«cddd¦«S#1swxYwYdS)r˜rcN)Úother_haves)rBÚfind_missing_objectsÚget_remote_hasr$ršrMrAržr"r‰rš)
rQrQrr-r2r3r/rNÚmissing_objectsrPÚ
object_idsr°r±s
             rSr“zLocalGitClient.fetch_packïsm€ð2_Š_˜TÑ
"Ô
"ð	A aØ×4Ò4Ø ¸Èð5ñôˆOð*×8Ò8Ñ:Ô:ˆKݘoÑ.Ô.ˆJØ”f×(Ò(Ñ*Ô*ˆGÝ ‘N”NˆEðÐ!Ý& t¨W°eÑ<Ô<ð	Að	Að	Að	Añ	Aô	Að	Að	Aõ
&ؘ1œ>¨:À;ð
ñ
ô
ð
õ# 1§:¢:¡<¤<°¸%Ñ@Ô@ð!	Að	Að	Að	Añ	Aô	Að	Að	Að	Að	Að	Að	Aøøøð	Að	Að	Að	Að	Að	As–A6C Â:C à C$Ã'C$cóˆ—| |¦«5}| ¦«cddd¦«S#1swxYwYdS)rãN)rBrš)rQrQrus   rSršzLocalGitClient.get_refss‚€à
_Š_˜TÑ
"Ô
"ð	% fØ—?’?Ñ$Ô$ð	%ð	%ð	%ð	%ñ	%ô	%ð	%ð	%ð	%ð	%ð	%ð	%øøøð	%ð	%ð	%ð	%ð	%ð	%s–7·;¾;)TNNr¯r¶râ)rWrXrYrZrrrPrOr¸rSrBrZrlržr“ršr[rTrSrhrh}s€€€€€Ø1Ð1ðQUð
0ð
0Ø=EÀfÔ=Mð
0à	
ð
0ð
0ð
0ð
0ð6ð6ð6ðððñ„[ððð#ð#ñ„[ð#ð
:?ð:?ð:?ð:?ðxOðOðOðOð>Øð)Að)Að
ð)Að)Að)Að)AðV%ð%ð%ð%ð%rTrhcó$—eZdZdZ					dd„ZdS)Ú	SSHVendorz!A client side SSH implementation.Ncó*—t|j¦«‚)aóConnect to an SSH server.

        Run a command remotely and return a file-like object for interaction
        with the remote command.

        Args:
          host: Host name
          command: Command to run (as argv array)
          username: Optional ame of user to log in as
          port: Optional SSH port to use
          password: Optional ssh password for login or private key
          key_filename: Optional path to private keyfile
          ssh_command: Optional SSH command
        )rNÚrun_command)rQrïÚcommandÚusernamerðÚpasswordÚkey_filenameÚssh_commands        rSrYzSSHVendor.run_command's€õ0" $Ô"2Ñ3Ô3Ð3rTr·©rWrXrYrZrYr[rTrSrWrW$s?€€€€€Ø+Ð+ðØ
ØØØð4ð4ð4ð4ð4ð4rTrWcó$‡—eZdZdZdˆfd„ZˆxZS)ÚStrangeHostnamez,Refusing to connect to strange SSH hostname.rMNcóJ•—t¦« |¦«dSr¯)rÚrP)rQròrÝs  €rSrPzStrangeHostname.__init__Es!ø€Ý
‰Œ×Ò˜Ñ"Ô"Ð"Ð"Ð"rTrU)rWrXrYrZrPrèrés@rSraraBsCø€€€€€Ø6Ð6ð#ð#ð#ð#ð#ð#ð#ð#ð#ð#rTracó$—eZdZdZ					dd„ZdS)ÚSubprocessSSHVendorz6SSH vendor that shells out to the local 'ssh' command.Ncó>—|td¦«‚|r.ddl}g| |tjdk¬¦«¢d‘}	nddg}	|r$|	 dt
|¦«g¦«|r$|	 dt
|¦«g¦«|r|›d	|›}| d
¦«rt|¬¦«‚|	 	|¦«tjg|	¢|‘dtjtjtj¬¦«}
t|
¦«S)
Nz6Setting password not supported by SubprocessSSHVendor.rr©Úposixz-xÚsshz-pú-iú@ú-©ròr0)rNÚshlexr…r r!ÚextendrärÄrarr3r4r5r)rQrïrZr[rðr\r]r^rmÚargsrs           rSrYzSubprocessSSHVendor.run_commandLsG€ðÐÝ%ØHñôð
ðð	!ØˆLˆLˆLàSU—[’[ µC´LÀGÒ4K[ÑLÔLÐSÈdÐSˆDˆDà˜4=ˆDàð	+ØKŠK˜s 4™yœyÐ)Ñ*Ô*Ð*àð	3ØKŠK˜s <Ñ0Ô0Ð1Ñ2Ô2Ð2àð	(ØÐ'Ð' Ð'Ð'ˆD؏?Š?˜3ÑÔð	1Ý!¨4Ð0Ñ0Ô0Ð0ØŠDÑÔÐåÔØˆdÐGÐØÝ”/Ý”?Ý”?ð
ñ
ô
ˆõ! Ñ&Ô&Ð&rTr·r_r[rTrSrdrdIs?€€€€€Ø@Ð@ðØ
ØØØð)'ð)'ð)'ð)'ð)'ð)'rTrdcó$—eZdZdZ					dd„ZdS)ÚPLinkSSHVendorz8SSH vendor that shells out to the local 'plink' command.NcóÄ—|r.ddl}g| |tjdk¬¦«¢d‘}	ntjdkrddg}	nddg}	|=ddl}
|
 d¦«|	 dt|¦«g¦«|r$|	 d	t|¦«g¦«|r$|	 d
t|¦«g¦«|r|›d|›}| d¦«rt|¬
¦«‚|	 
|¦«tjg|	¢|‘dtj
tj
tj
¬¦«}t|¦«S)Nrrrfz-sshz	plink.exeÚplinkzHInvoking PLink with a password exposes the password in the process list.z-pwz-Prirjrkrlr0)rmr…r r!r¹rºrnrärÄrarr3r4r5r)rQrïrZr[rðr\r]r^rmror¹rs            rSrYzPLinkSSHVendor.run_command{s€ðð	%ØˆLˆLˆLàUU—[’[ µC´LÀGÒ4K[ÑLÔLÐUÈfÐUˆDˆDÝ
Œ\˜WÒ
$Ð
$Ø Ð(ˆDˆDà˜VÐ$ˆDàÐØˆOˆOˆOàMŠMð ñ
ô
ð
ð
KŠK˜¥ H¡
¤
Ð.Ñ/Ô/Ð/àð	+ØKŠK˜s 4™yœyÐ)Ñ*Ô*Ð*àð	3ØKŠK˜s <Ñ0Ô0Ð1Ñ2Ô2Ð2àð	(ØÐ'Ð' Ð'Ð'ˆD؏?Š?˜3ÑÔð	1Ý!¨4Ð0Ñ0Ô0Ð0ØŠDÑÔÐåÔØˆdÐGÐØÝ”/Ý”?Ý”?ð
ñ
ô
ˆõ! Ñ&Ô&Ð&rTr·r_r[rTrSrqrqxs?€€€€€ØBÐBðØ
ØØØð/'ð/'ð/'ð/'ð/'ð/'rTrqcó\—ddl}| dt¦«ddlm}|di|¤ŽS)NrzDParamikoSSHVendor has been moved to dulwich.contrib.paramiko_vendor.r)ÚParamikoSSHVendorr[)r¹rºr»Úcontrib.paramiko_vendorru)rWr¹rus   rSruru­sR€Ø€O€O€Oà‡M‚MØNÝñôðð;Ð:Ð:Ð:Ð:Ð:àÐÐ&Ð&˜vÐ&Ð&Ð&rTcóZ‡—eZdZ							d	d	ˆfd„
Zd„Zed„¦«Zd„Zd„ZˆxZ	S)
ÚSSHGitClientNrMc	óR•—||_||_||_||_||_|p<t
j dt
j d¦«¦«|_t¦«j
di|	¤Ži|_|	||_dSt¦«|_dS)NÚGIT_SSH_COMMANDÚGIT_SSHr[)rïrðr[r\r]reÚenvironrŸr^rÚrPÚalternative_pathsÚ
ssh_vendorÚget_ssh_vendor)rQrïrðr[Úvendorr;r\r]r^rWrÝs          €rSrPzSSHGitClient.__init__¾s¤ø€ðˆŒ	؈Œ	Ø ˆŒ
Ø ˆŒ
Ø(ˆÔØ&ð
­"¬*¯.ª.ØrœzŸ~š~¨iÑ8Ô8ñ+
ô+
ˆÔð	‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø57ˆÔØÐØ$ˆDŒOˆOˆOå,Ñ.Ô.ˆDŒOˆOˆOrTcó¤—|j}|j
|d|jzz
}|jt|jd¦«dz|z}t	d||ddf¦«S)Nrôz@/:rjrhrö)rïrðr[Úurlquoterr÷s   rSrOzSSHGitClient.get_urlÙs^€Ø”ˆØŒ9Ð Øe˜dœiÑ'Ñ'ˆFàŒ=Ð$ݘdœm¨UÑ3Ô3°cÑ9¸FÑBˆFå˜5 &¨$°°BÐ7Ñ8Ô8Ð8rTcó8—|d|j|j|jdœ|¤ŽS)N)rïrðr[r[)ròrðr[rTs   rSrSzSSHGitClient.from_parsedurlãs;€àˆsð
ØÔ#Ø”ØÔ'ð
ð
ðð	
ð
ð	
rTcóp—|j |d|z¦«}t|t¦«sJ‚|S)Nr)r}rŸr¿r)rQrùs  rSÚ
_get_cmd_pathzSSHGitClient._get_cmd_pathìs9€ØÔ$×(Ò(¨¨g¸©mÑ<Ô<ˆÝ˜#uÑ%Ô%Ð%Ð%Ð%؈
rTcó„—t|t¦«st|¦«‚t|t¦«r| |j¦«}| d¦«r
|dd…}| |¦« |j¦«dz|zdz}i}|j
|j|d<|j
|j|d<|j	
|j	|d<|j
j|j|f|j
|jdœ|¤Ž}t|j|j|j|j¬	¦«|jt+|d
d¦«fS)Nz/~rz 'ú'r\r]r^)rðr[rrÅ)r¿rrr‡rÌrÄr…r\r]r^r~rYrïrðr[r@r:r•rorBr.rÙ)rQrùrQr7rWÚcons      rSrÏzSSHGitClient._connectñsp€Ý˜#uÑ%Ô%ð	!ݘC‘.”.Ð ݐdEÑ"Ô"ð	;Ø—;’;˜tÔ9Ñ:Ô:ˆD؏?Š?˜4Ñ Ô ð	ؘ˜˜”8ˆDà×Ò˜sÑ#Ô#×*Ò*¨4Ô+EÑFÔFØñ
àñ
ðñ
ð	
ðˆØŒ=Ð$Ø!%¤ˆF:ÑØÔÐ(Ø%)Ô%6ˆF>Ñ"àÔÐ'Ø$(Ô$4ˆF=Ñ!Ø)ˆdŒoÔ)ØŒItð
Ø"&¤)°d´mð
ð
ØGMð
ð
ˆõ
ؔؔ	Ø”	Ø $Ô 5ð	
ñ
ô
ð
ŒLÝC˜ 4Ñ(Ô(ð	
ð		
rT)NNNNNNNrU)
rWrXrYrPrOr¸rSr…rÏrèrés@rSrxrx½s¦ø€€€€€ðØØØØØØð/ð
ð/ð/ð/ð/ð/ð/ð69ð9ð9ðð
ð
ñ„[ð
ðððð
!
ð!
ð!
ð!
ð!
ð!
ð!
rTrxcóZ—dd d„tjD¦«¦«zS)Nzgit/dulwich/%sú.có,—g|]}t|¦«‘ŒSr[)rär
s  rSr
z-default_user_agent_string.<locals>.<listcomp>s€Ð'LÐ'LÐ'L°1­¨A©¬Ð'LÐ'LÐ'LrT)rÚdulwichÚ__version__r[rTrSÚdefault_user_agent_stringrŽs-€ð˜cŸhšhÐ'LÐ'L½Ô8KÐ'LÑ'LÔ'LÑMÔMÑMÐMrT)zurllib3.ProxyManagerzurllib3.PoolManagercó’—dx}}dx}}|€(dD]%}	tj |	¦«}|rnŒ&|rt|¦«rd}|¦|€(	| dd¦«}n#t$rYnwxYw	| dd¦«}n#t$rYnwxYw	| dd¦«}n#t$rd}YnwxYw	| dd¦«}n#t$rd}YnwxYw|€t
¦«}d	|i}
d
|i}|durd|d<n|d
urd|d<nd|d<| |¦«ddl}|z|€|j	}t|t¦«s| ¦«}t|¦«}
|
j#|j|
j›d|
jpd›¬¦«}ni}||f||
dœ|¤Ž}n|€|j}|dd|
i|¤Ž}|S)a¾Return urllib3 connection pool manager.

    Honour detected proxy configurations.

    Args:
      config: `dulwich.config.ConfigDict` instance with Git configuration.
      override_kwargs: Additional arguments for `urllib3.ProxyManager`

    Returns:
      Either pool_manager_cls (defaults to `urllib3.ProxyManager`) instance for
      proxy configurations, proxy_manager_cls
      (defaults to `urllib3.PoolManager`) instance otherwise

    N)Úhttps_proxyÚ
http_proxyÚ	all_proxyshttpsproxys	useragents	sslVerifyTs	sslCAInfoz
User-agentÚca_certsÚ
CERT_REQUIREDÚ	cert_reqsFÚ	CERT_NONErú:rö)Úproxy_basic_auth)Ú
proxy_headersÚheadersršr[)rer|rŸÚcheck_for_proxy_bypassÚKeyErrorÚget_booleanrŽr¥Úurllib3ÚProxyManagerr¿rär‡rr[Úmake_headersr\ÚPoolManager)r;Úpool_manager_clsÚproxy_manager_clsÚbase_urlÚoverride_kwargsÚproxy_serverÚ
user_agentr“Ú
ssl_verifyÚ	proxynameršrWržÚproxy_server_urlr™Úmanagers                rSÚdefault_urllib3_managerr¬sá€ð*!%Ð$€L:Ø Ð €HˆzàÐØCð	ð	ˆIÝœ:Ÿ>š>¨)Ñ4Ô4ˆLØð
ؐð
ðð Ý! (Ñ+Ô+ð	 ؈Là
ÐØÐð
Ø%Ÿzšz¨'°8Ñ<Ô<øÝð
ð
ð
ؐð
øøøð	ØŸš G¨\Ñ:Ô:ˆJˆJøÝð	ð	ð	ØˆDð	øøøð	Ø×+Ò+¨G°\ÑBÔBˆJˆJøÝð	ð	ð	؈JˆJˆJð	øøøð	Ø—z’z '¨<Ñ8Ô8ˆHˆHøÝð	ð	ð	؈HˆHˆHð	øøøðÐÝ.Ñ0Ô0ˆ
à˜ZÐ(€Gð	Hð€FðTÐÐØ-ˆˆ{ÑÐØ	uÐ	Ð	Ø)ˆˆ{ÑÐð.ˆˆ{Ñà
‡M‚M/Ñ"Ô"Ð"à€N€N€NàÐØÐ$Ø 'Ô 4Ðݘ,­Ñ,Ô,ð	1Ø'×.Ò.Ñ0Ô0ˆLÝ# LÑ1Ô1ÐØÔ$Ð0Ø0˜GÔ0Ø$4Ô$=Ð!aÐ!aÐ@PÔ@YÐ@_Ð]_Ð!aÐ!aðñôˆMˆMðˆMØ#Ð#Øð
Ø(5¸wð
ð
ØJPð
ð
ˆˆðÐ#Ø&Ô2ÐØ"Ð"Ð=Ð=¨7Ð=°fÐ=Ð=ˆà€NsHÁA"Á"
A/Á.A/Á3B
Â

BÂBÂB2Â2CÃCÃCÃC+Ã*C+cóV—|r%tj d¦«}|rt|¦«}|j}|rëddl}	| |¦«}n#t$rd}YnwxYw| d¦«}|D]¦}| 	¦«}|rŽ| 
¦«}| d¦«}|r4	| |d¬¦«}n#t$rd}YnwxYw|r||vrdS|dkrdS||krdSd|z}| 
|¦«rdSŒ§dS)	NÚno_proxyrú,rŠF)ÚstrictTÚ*)rer|rŸrròÚ	ipaddressÚ
ip_addressr†r…rŽÚlowerÚlstripÚ
ip_networkr¼)	r¤Úno_proxy_strÚ
parsed_urlròr²Úhostname_ipÚno_proxy_valuesÚno_proxy_valueÚno_proxy_value_networks	         rSr›r›~sÁ€àñ0(Ý”z—~’~ jÑ1Ô1ˆØñ.	(õ" (Ñ+Ô+ˆJØ!Ô*ˆHàð(
(Ø Ð Ð Ð ð'Ø"+×"6Ò"6°xÑ"@Ô"@KKøÝ!ð'ð'ð'Ø"&KKKð'øøøð#/×"4Ò"4°SÑ"9Ô"9Ø&5ð(ð(NØ%3×%9Ò%9Ñ%;Ô%;NØ%ð(Ø)7×)=Ò)=Ñ)?Ô)?˜Ø)7×)>Ò)>Øñ*ô*˜ð'ð0ð>Ø9B×9MÒ9MØ$2¸5ð:Nñ:"ô:"Ð 6Ð 6øõ$.ð>ð>ð>Ø9=Ð 6Ð 6Ð 6ð>øøøà5ð0à#.Ð2HÐ#HÐ#HØ+/¨4¨4à)¨SÒ0Ð0à#' 4 4Ø# ~Ò5Ð5Ø#' 4 4à .Ñ0ð'ð$×,Ò,¨^Ñ<Ô<ð(Ø#' 4 4øØˆ5s$ÁAÁA(Á'A(ÃCÃC-Ã,C-cóx—eZdZdZddd„Zdd„Zd„Zd„Zdd	„Z		dd
„Z	d„Z
d„Zd
„Ze
d„¦«Zdefd„ZdS)ÚAbstractHttpGitClientzºAbstract base class for HTTP Git Clients.

    This is agonistic of the actual HTTP implementation.

    Subclasses should provide an implementation of the
    _http_request method.
    FrMNcór—| d¦«dz|_||_tj|fi|¤ŽdS©Nú/)r–Ú	_base_urlÚdumbr@rP)rQr¤rÃrWs    rSrPzAbstractHttpGitClient.__init__½s@€Ø!Ÿš¨Ñ-Ô-°Ñ3ˆŒØˆŒ	ÝÔ˜4Ð*Ð* 6Ð*Ð*Ð*Ð*Ð*rTcó*—t|j¦«‚)aÎPerform HTTP request.

        Args:
          url: Request URL.
          headers: Optional custom headers to override defaults.
          data: Request data.

        Returns:
          Tuple (response, read), where response is an urllib3
          response object with additional content_type and
          redirect_location properties, and read is a consumable read
          method for the response data.

        Raises:
          GitProtocolError
        )rNÚ
_http_request)rQr`ršr=s    rSrÅz#AbstractHttpGitClient._http_requestÂs€õ"" $Ô"4Ñ5Ô5Ð5rTcó—|ddksJ‚d}ddi}|jdur|d| d¦«zz
}t||¦«}| ||¦«\}}|jrb|j |¦«st
d	|›d
|j›d|›¦«‚t||jdt|¦«…¦«}	|jdup|j 	d¦«|_|js¿t|d¦«}	t| ¦«¦«\}	n"#t$r}
t
d
¦«|
‚d}
~
wwxYw|	 d¦«d|zkrt
d|	z¦«‚gt| ¦«¦«¢|‘R| ¦«St#|¦«t%¦«|f| ¦«S#| ¦«wxYw)NrûrÁz	info/refsÚAcceptz*/*Tz?service=%srzRedirected from URL z to URL z	 without zapplication/x-git-z%unexpected number of packets receivedr”s
# service=z*unexpected first line %r from smart server)rÃr‡rrÅÚredirect_locationr¼rrfÚcontent_typerÄr@r$r'r†r–rœrorIr—)rQr6r¤Útailršr`Úrespr:r,rrÖs           rSÚ_discover_referencesz*AbstractHttpGitClient._discover_referencesÕsD€Ø˜Œ|˜sÒ"Ð"Ð"Ð"؈ؘUÐ#ˆØŒ9˜DÐ Ð ØM G§N¢N°7Ñ$;Ô$;Ñ;Ñ;ˆDݐh Ñ%Ô%ˆØ×'Ò'¨¨WÑ5Ô5‰
ˆˆdàÔ!ð	JàÔ)×2Ò2°4Ñ8Ô8ð
Ý&Ø_¨3Ð_Ð_¸Ô8NÐ_Ð_ÐY]Ð_Ð_ñôðõ˜s DÔ$:¸<½cÀ$¹i¼i¸Z¸<Ô$HÑIÔIˆHð	ØÔ)¨TÐ1ð¸Ô9J×9UÒ9UØ$ñ:ô:ð6ˆDŒIð”9ð
=Ý   tÑ,Ô,ðÝ  ×!3Ò!3Ñ!5Ô!5Ñ6Ô6‘ESSøÝ!ðððÝ*Ø?ñôàðøøøøðøøøð—:’:˜eÑ$Ô$¨¸Ñ)@ÒAÐAÝ*ØDÀsÑJñôððH u×'9Ò'9Ñ';Ô';Ñ<Ô<ÐG¸hÐGÐGð
JŠJ‰LŒLˆLˆLõ& dÑ+Ô+­S©U¬U°HÐ<àJŠJ‰LŒLˆLˆLøˆDJŠJ‰LŒLˆLˆLøøøs8ÃAG-Ä
#D1Ä0G-Ä1
EÄ;EÅEÅAG-Æ;G-Ç-Hcór—|ddksJ‚t||¦«}d|z}d|z|dœ}t|t¦«rtt	|¦«¦«|d<| |||¦«\}}|j d¦«d|krtd	|jz¦«‚||fS)
z‰Send a 'smart' HTTP request.

        This is a simple wrapper around _http_request that sets
        a couple of extra headers.
        rûrÁzapplication/x-%s-resultzapplication/x-%s-request)úContent-TyperÇzContent-Lengthú;rz$Invalid content-type from server: %s)	rr¿rrärfrÅrÉr…r)rQr6r`r=Úresult_content_typeršrËr:s        rSÚ_smart_requestz$AbstractHttpGitClient._smart_requestýs׀ð2Œw˜#Š~ˆ~ˆ~ˆ~ݐc˜7Ñ#Ô#ˆØ7¸'ÑAÐà6¸Ñ@Ø)ð
ð
ˆõdEÑ"Ô"ð	7Ý(+­C°©I¬I©¬ˆGÐ$Ñ%Ø×'Ò'¨¨W°dÑ;Ô;‰
ˆˆdØÔ×"Ò" 3Ñ'Ô'¨Ô*Ð.AÒAÐAÝ"Ø6¸Ô9JÑJñôð
ðTˆzÐrTc󒇇‡
‡‡—‰ |¦«}‰ d|¦«\Š}}‰ |¦«\Š
}‰
 t	¦«¦«t
‰
vrt
¦«‰_|t‰¦«¦«Š‰€t‰|i¬¦«St‰ ¦«¦« t‰ ¦«¦«¦«rt‰|i¬¦«S‰j
rt‰j¦«‚ˆˆ
ˆˆˆfd„}‰ d||¦«¬¦«\}	}
	t#|
d¦«}‰ |‰
|¦«}t‰||¬¦«|	 ¦«S#|	 ¦«wxYw)acUpload a pack to a remote repository.

        Args:
          path: Repository path (as bytestring)
          update_refs: Function to determine changes to remote refs.
            Receives dict with existing remote refs, returns dict with
            changed refs (name -> sha, where sha=ZERO_SHA for deletions)
          generate_pack_data: Function that can return a tuple
            with number of elements and pack data to upload.
          progress: Optional progress function

        Returns:
          SendPackResult

        Raises:
          SendPackError: if server rejects the pack data

        sgit-receive-packNrÑc3óø•K—t‰‰‰¦«}|D]}t|¦«V—Œ‰|j|jt‰v¬¦«\}}‰ ‰¦«rt
||¦«Ed{V—†dSdS)NrG)rürFrÿrþr*rŸr )	rÙrrÚr2rXr¡rrrQs	    €€€€€rSÚbody_generatorz7AbstractHttpGitClient.send_pack.<locals>.body_generator<sÁøèè€Ý1Ø'¨°8ñôˆNð&ð
$ð
$Ý˜s‘m”mÐ#Ð#Ð#Ð#Ø);Ð);ØÔ#ØÔ#Ý/Ð3JÐJð*ñ*ô*Ñ&ˆO˜Yð
×%Ò% hÑ/Ô/ð
JÝ-¨o¸yÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIð
Jð
JrTzgit-receive-pack©r=)Ú_get_urlrÌr¥rørBr,r{rCrÀrër—r¤rÓrÃrNr“rÑr@rªro)rQrQr[rXr3r`r™r±rÔrËr:Ú
resp_protor‘r¡rrs`  `         @@@rSrZzAbstractHttpGitClient.send_packsïøøøøø€ð&mŠm˜DÑ!Ô!ˆØ-1×-FÒ-FØ ñ.
ô.
Ñ*ˆÐ% sð
×5Ò5Ð6IÑJÔJñ	
Ø#Øà×#Ò#Õ$4Ñ$6Ô$6Ñ7Ô7Ð7å#Ð'>Ð>Ð>Ý);Ñ)=Ô)=ˆDÔ&à;t H™~œ~Ñ.Ô.ˆØÐå! (°%ÀBÐGÑGÔGÐG݈x~Š~ÑÔÑ Ô ×)Ò)­#¨h¯nªnÑ.>Ô.>Ñ*?Ô*?Ñ@Ô@ð	HÝ! (°%ÀBÐGÑGÔGÐGØŒ9ð	7Ý% d¤oÑ6Ô6Ð6ð	Jð	Jð	Jð	Jð	Jð	Jð	Jð	Jð	Jð×(Ò(Ð);¸SÀ~À~ÑGWÔGWÐ(ÑXÔX‰
ˆˆdð	Ý! $¨Ñ-Ô-ˆJØ×7Ò7ØÐ3°XñôˆJõ" (°%ÀJÐOÑOÔOàJŠJ‰LŒLˆLˆLøˆDJŠJ‰LŒLˆLˆLøøøsÅ#8F0Æ0Gcó(—| |¦«}| d|¦«\}}	}| |	¦«\}
}}||||¬¦«}
n||¦«}
|
d„|
D¦«}
|
st|||¦«S|jrt|j¦«‚t¦«}td|j	¦«}t||
||
d|¬¦«\}}| d|| ¦«¬¦«\}}	t|d¦«}|€&|€$t| ¦«¦«\}}t||
|||¦«t|||||¦«| ¦«S#| ¦«wxYw)a¼Retrieve a pack from a git smart server.

        Args:
          path: Path to fetch from
          determine_wants: Callback that returns list of commits to fetch
          graph_walker: Object with next() and ack().
          pack_data: Callback called for each bit of data in the pack
          progress: Callback for progress reports (strings)
          depth: Depth for request

        Returns:
          FetchPackResult object

        ógit-upload-packNrÞcó(—g|]}|tk¯
|‘ŒSr[r	ràs  rSr
z4AbstractHttpGitClient.fetch_pack.<locals>.<listcomp>ys€Ð=Ð=Ð=˜S¨SµHª_¨_S¨_¨_¨_rT)r.r/zgit-upload-packrÕ)rÖrÌr¯ržrÃrNr“rr@r•r1rÑÚgetvaluerúr'r>ro)rQrQrr-r2r3r/r`ršr™r¡r°r±rRÚreq_dataÚ	req_protor²r³rËr:r×s                     rSr“z AbstractHttpGitClient.fetch_packTsä€ð.mŠm˜DÑ!Ô!ˆØ)-×)BÒ)BØ ñ*
ô*
Ñ&ˆÐ! 3ð
×4Ò4Ð5HÑIÔIñ		
Ø#ØØàÐØ#O D°Ð6Ñ6Ô6ˆEˆEà#O DÑ)Ô)ˆEØÐØ=Ð= EÐ=Ñ=Ô=ˆEØð	9Ý" 4¨°%Ñ8Ô8Ð8ØŒ9ð	7Ý% d¤oÑ6Ô6Ð6Ý‘9”9ˆÝ˜T 8¤>Ñ2Ô2ˆ	Ý'?ØØ#ØØØØð
(
ñ(
ô(
Ñ$ˆmð×(Ò(Ø˜s¨×):Ò):Ñ)<Ô)<ð)ñ
ô
‰
ˆˆdð	Ý! $¨Ñ-Ô-ˆJØÐ" }Ð'<Ý/DØ×+Ò+Ñ-Ô-ñ0ô0Ñ,˜mõ
%ØØ'ØØØñ
ô
ð
õ# 4¨°%¸ÀmÑTÔTàJŠJ‰LŒLˆLˆLøˆDJŠJ‰LŒLˆLˆLøøøs
Ä	AE;Å;Fcód—| |¦«}| d|¦«\}}}|S)rãrÙ)rÖrÌ)rQrQr`ršräs     rSršzAbstractHttpGitClient.get_refsœs4€àmŠm˜DÑ!Ô!ˆØ×.Ò.Ð/AÀ3ÑGÔG‰
ˆˆaØˆrTcóR—| |¦« d¦«SrÀ)rÖr–rPs  rSrOzAbstractHttpGitClient.get_url¢s"€Ø}Š}˜TÑ"Ô"×)Ò)¨#Ñ.Ô.Ð.rTcóX—t|j|¦« d¦«dzSrÀ)rrÂr–rPs  rSrÖzAbstractHttpGitClient._get_url¥s'€Ýt”~ tÑ,Ô,×3Ò3°CÑ8Ô8¸3Ñ>Ð>rTcóš—|j}|t|¦«|d<|j}|t|¦«|d<|t|¦«fi|¤ŽS)Nr\r[)r\Ú
urlunquoter[r)rUrVrWr\r[s     rSrSz$AbstractHttpGitClient.from_parsedurl¨sb€àÔ%ˆØÐÝ!+¨HÑ!5Ô!5ˆF:ÑØÔ%ˆØÐÝ!+¨HÑ!5Ô!5ˆF:Ñ؈s•:˜iÑ(Ô(Ð3Ð3¨FÐ3Ð3Ð3rTcóP—t|¦«j›d|j›d|j›dS)Nrõz, dumb=rö)rØrWrÂrÃrs rSrázAbstractHttpGitClient.__repr__²s.€Ýt‘*”*Ô%ÐOÐO¨¬ÐOÐOÀÄÐOÐOÐOÐOrT)FrUrâr¯)rWrXrYrZrPrÅrÌrÑrZr“ršrOrÖr¸rSrärár[rTrSr¾r¾´s
€€€€€ððð+ð+ð+ð+ð+ð
6ð6ð6ð6ð&&ð&ð&ðPððð,?ð?ð?ð?ðNØðFðFðFðFðPððð/ð/ð/ð?ð?ð?ðð4ð4ñ„[ð4ðP˜#ðPðPðPðPðPðPrTr¾có<‡—eZdZ					d	dˆfd„
Zd„Zdd„ZˆxZS)	ÚUrllib3HttpGitClientNrMcó<•—||_||_|€t||¬¦«|_n||_|G|›d|pd›}ddl}	|	j |¬¦«}
|jj |
¦«||_	t¦«jd||dœ|¤ŽdS)N)r¤r—rör)Ú
basic_auth)r¤rÃr[)Ú	_usernameÚ	_passwordr¬Úpool_managerÚurllib3.utilÚutilr ršr¥r;rÚrP)rQr¤rÃrêr;r[r\rWÚcredentialsržrçrÝs           €rSrPzUrllib3HttpGitClient.__init__·sÇø€ð"ˆŒØ!ˆŒàÐÝ 7¸ÈÐ RÑ RÔ RˆDÔÐà ,ˆDÔàÐð&Ð8Ð8¨¨°BÐ8Ð8ˆKØÐÐÐà œ×2Ò2¸kÐ2ÑJÔJˆJØÔÔ%×,Ò,¨ZÑ8Ô8Ð8àˆŒà‰ŒÔÐ@ (°Ð@Ð@¸Ð@Ð@Ð@Ð@Ð@rTcó¬—t|t¦«s| d¦«}t|j|¦« d¦«dzS)Nr„rÁ)r¿rär‡rrÂr–rPs  rSrÖzUrllib3HttpGitClient._get_urlÖsL€Ý˜$¥Ñ$Ô$ð	(ð—;’;˜wÑ'Ô'ˆDݐt”~ tÑ,Ô,×3Ò3°CÑ8Ô8¸3Ñ>Ð>rTcóŽ—ddl}|jj ¦«}|| |¦«d|d<	|€|j d||d¬¦«}n|j d|||d¬¦«}n4#|jj$r"}tt|¦«¦«|‚d}~wwxYw|j
d	krt‚|j
d
kr(t|j 
d¦«|¦«‚|j
dkr(t|j 
d
¦«|¦«‚|j
dkrtd|j
|fz¦«‚|j 
d¦«|_	| ¦«}||kr|nd|_n)#t$$r| ¦«|_YnwxYw||jfS)Nrzno-cacheÚPragmaÚGETF)ršÚpreload_contentÚPOST)ršÚbodyròi”i‘zWWW-Authenticatei—zProxy-AuthenticateéÈzunexpected http resp %d for %srÎrö)Úurllib3.exceptionsrêršr¡r¥ÚrequestÚ
exceptionsÚ	HTTPErrorrrärˆrr]rŸrbrÉÚgeturlrÈÚAttributeErrorÚget_redirect_locationr:)	rQr`ršr=ržÚreq_headersrËrÚresp_urls	         rSrÅz"Urllib3HttpGitClient._http_requestÝs€Ø!Ð!Ð!Ð!àÔ'Ô/×4Ò4Ñ6Ô6ˆØÐØ×Ò˜wÑ'Ô'Ð'Ø *ˆHÑð
	2؈|ØÔ(×0Ò0ؘ3¨ÀUð1ñôðÔ(×0Ò0ؘC¨¸4ÐQVð1ñôøøðÔ!Ô+ð	2ð	2ð	2Ý"¥3 q¡6¤6Ñ*Ô*°Ð1øøøøð	2øøøðŒ;˜#ÒÐÝ"Ð"ØŒ;˜#ÒÐÝ" 4¤<×#3Ò#3Ð4FÑ#GÔ#GÈÑMÔMÐMØŒ;˜#ÒÐÝ'¨¬×(8Ò(8Ð9MÑ(NÔ(NÐPSÑTÔTÐTØŒ;˜#ÒÐÝ"Ø0°D´KÀÐ3EÑEñôð
ð!œL×,Ò,¨^Ñ<Ô<ˆÔð	IØ—{’{‘}”}ˆHð
2:¸S²° X XÀbˆDÔ"Ð"øõ	ð	Bð	Bð	Bà%)×%?Ò%?Ñ%AÔ%AˆDÔ"Ð"Ð"ð	Bøøøð
T”YˆÐs+ÁABÂB2ÂB-Â-B2Å1FÆ#F;Æ:F;r·rUrâ)rWrXrYrPrÖrÅrèrés@rSrårå¶s‚ø€€€€€ðØØØØðAð
ðAðAðAðAðAðAð>?ð?ð?ð(ð(ð(ð(ð(ð(ð(ð(rTråcóp—tjdkstjdksJ‚|jdksJ‚|\}}}}}}|dks|sd}nU|rDt|¦«dkr1|d ¦«r|dd…d	vr|d
d…}ntd¦«‚t€ddl	mat||z¦«S)
zVConvert a file: URL to a path.

    https://datatracker.ietf.org/doc/html/rfc8089
    rÚntr>Ú	localhoströr rr)r—z:/Nz%Non-local file URLs are not supported)Úurl2pathname)
r r!rerÇÚschemerfÚisalpharNrÚurllib.request)ÚparsedrärørQs    rSÚ_win32_url_to_pathr	sí€õ
Œ<˜7Ò"Ð"¥b¤g°¢o o oÐ5ØŒ=˜FÒ"Ð"Ð"Ð"à%Ñ€A€vˆtQ˜˜1à
ÒРFÐØˆˆàð	Kå‰KŒK˜1ÒÐØ1ŒI×ÒÑÔð
à1Q3ŒK˜;Ð&Ð&𘘘”ˆˆå!Ð"IÑJÔJÐJõÐØ/Ð/Ð/Ð/Ð/Ð/ݘ ™
Ñ&Ô&Ð&rTr`r;Ú	operationcóR—|t|||dk¬¦«}t|f||dœ|¤ŽS)ažObtain a git client from a URL.

    Args:
      url: URL to open (a unicode string)
      config: Optional config object
      operation: Kind of operation that'll be performed; "pull" or "push"
      thin_packs: Whether or not thin packs should be retrieved
      report_activity: Optional callback for reporting transport
        activity.

    Returns:
      Tuple with client instance and relative path.

    NÚpush©r
©r;r)rÚ _get_transport_and_path_from_url)r`r;rrWs    rSÚget_transport_and_path_from_urlr(	sO€ð"Ðݘv s°)¸vÒ2EÐGÑGÔGˆå+ØðØ iððØ39ðððrTcóà—t|¦«}|jdkrtj|fi|¤Ž|jfS|jdvrtj|fi|¤Ž|jfS|jdvrt
j|fd|i|¤Ž|jfS|jdkrTtjdkstj
dkrtd	i|¤Žt|¦«fStj|fi|¤Ž|jfStd|jz¦«‚)
Nrõ)zgit+sshrh)ÚhttpÚhttpsr;r>rrzunknown scheme '%s'r[)rrrërSrQrxÚ
HttpGitClientr r!rerÇÚdefault_local_git_client_clsrr†)r`r;rrWrs     rSr
r
A	s%€Ý
c‰]Œ]€FØ
„}˜ÒÐÝÔ+¨FÐ=Ð=°fÐ=Ð=¸v¼{ÐKÐKØ	ŒÐ,Ð	,Ð	,ÝÔ*¨6Ð<Ð<°VÐ<Ð<¸f¼kÐIÐIØ	ŒÐ+Ð	+Ð	+åÔ(¨ÐIÐI¸ÐIÀ&ÐIÐIØŒKð
ð	
ð
Œ˜&Ò	 Ð	 ÝŒ<˜7Ò"Ð"¥b¤g°¢o oÝ/Ð9Ð9°&Ð9Ð9Õ;MÈfÑ;UÔ;UÐUÐUå(Ô7¸ÐIÐIÀ&ÐIÐIØŒKð
ð	
õ
Ð*¨V¬]Ñ:Ñ
;Ô
;Ð;rTÚlocationcóò—d|vr d|vr| dd¦«\}}d}nOd|vr<| dd¦«\}}d|vr| dd¦«\}}nd}|}ntd¦«‚|||fS)zParse a rsync-style URL.r—rjrNznot a valid rsync-style URL)r…Úrsplitr†)rrïrQÚuserÚ	user_hosts     rSÚparse_rsync_urlrW	s¡€à
ˆh€€˜3 hÐ.Ð.à—~’~ c¨1Ñ-Ô-‰ˆˆt؈ˆØ	ˆˆà"Ÿ.š.¨¨aÑ0Ô0‰ˆ	4ؐ)ÐÐØ"×)Ò)¨#¨qÑ1Ô1‰JˆD$$àˆD؈DˆDåÐ6Ñ7Ô7Ð7Ø$˜ÐÐrTcó†—|t|||dk¬¦«}	t|f||dœ|¤ŽS#t$rYnwxYwtjdkr6|d ¦«r|dd…d	krt
di|¤Ž|fS	t|¦«\}}}t|fd
|i|¤Ž|fS#t$rt
di|¤Ž|fcYSwxYw)a›Obtain a git client from a URL.

    Args:
      location: URL or path (a string)
      config: Optional config object
      operation: Kind of operation that'll be performed; "pull" or "push"
      thin_packs: Whether or not thin packs should be retrieved
      report_activity: Optional callback for reporting transport
        activity.

    Returns:
      Tuple with client instance and relative path.

    Nr
rrrrrrµz:\r[r[)	rr
r†r r!rrrrx)rr;rrWr[ròrQs       rSÚget_transport_and_pathrj	sA€ð(ÐÝ# F¨H¸IÈÒ<OÐQÑQÔQˆð
Ý/Øð
Ø#¨yð
ð
Ø<Bð
ð
ð	
øõð
ð
ð
Øˆð
øøøõ„|wÒР8¨A¤;×#6Ò#6Ñ#8Ô#8иXÀaÈÀc¼]ÈeÒ=SÐ=Så+Ð5Ð5¨fÐ5Ð5°xÐ?Ð?ðIÝ%4°XÑ%>Ô%>Ñ"ˆ8˜Tõ
˜HÐBÐB¨xÐB¸6ÐBÐBÀDÐHÐHøõ	ð@ð@ð@å+Ð5Ð5¨fÐ5Ð5°xÐ?Ð?Ð?Ð?ð@øøøsš*ª
7¶7ÂB%Â%CÂ?Cz~/.git-credentialsrõrícóR—|D]£}	t|d¦«5}|D]d}t| ¦«¦«}|j|kr6|j|kr+||j|kr|j|jfccddd¦«cSŒe	ddd¦«n#1swxYwYŒ”#t$rYŒ wxYwdS)Nrú)ÚopenrrŽrròr[r\ÚFileNotFoundError)rròr[ÚfnamesÚfnamer‹rÂÚparsed_lines        rSÚget_credentials_from_storer"œ	sc€ðð
ð
ˆð	ݐe˜TÑ"Ô"ð
J aØðJðJDÝ"*¨4¯:ª:©<¬<Ñ"8Ô"8Kà#Ô*¨fÒ4Ð4Ø'Ô0°HÒ<Ð<Ø%Ð-°Ô1EÈÒ1QÐ1Qà*Ô3°[Ô5IÐIÐIÐIð
Jð
Jð
Jð
Jñ
Jô
Jð
Jð
Jð
Jð
JøðJð
Jð
Jð
Jñ
Jô
Jð
Jð
Jð
Jð
Jð
Jð
Jøøøð
Jð
Jð
Jð
Jøøõ!ð	ð	ð	àˆHð	øøøð
ð
sA†B–ABÁ.BÁ=BÁ?BÂB	ÂBÂB	ÂBÂ
B$Â#B$r¶râ)•rZÚloggingrergrr3r Ú
contextlibrÚiorrÚtypingrrrr	r
rrr
rrrrÚurllib.parserr‚rrârrrrržrŒr;rrrÚerrorsrrrÚpackrr r!r"Úprotocolr#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFršrGrHrIÚreporJrÚ	getLoggerrWrrOrLr]rbriryÚCOMMON_CAPABILITIESrDrFr{rœržrërúrürrçrr1r>r@r¿rÇrÉrërrär+rirhrrWrardrqrurrxrŽr¬r›r¾rårrrr
rrrQÚ
expanduserÚDEFAULT_GIT_CREDENTIALS_PATHSr"r[rTrSú<module>r0s
ðð*ðð(€€€Ø	€	€	€	Ø
€
€
€
Ø
€
€
€
ØÐÐÐØ
€
€
€
ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð
ð+Ð*Ð*Ð*Ð*Ð*Ø.Ð.Ð.Ð.Ð.Ð.ØBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBàðØ€N€N€Nà€€€àFÐFÐFÐFÐFÐFÐFÐFÐFÐFØEÐEÐEÐEÐEÐEÐEÐEÐEÐEððððððððððððð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ð%ðLIÐHÐHÐHÐHÐHÐHÐHÐHÐHØÐÐÐÐÐð€ð
ˆÔ	˜8Ñ	$Ô	$€ð
ð
ð
ð
ð
9ñ
ô
ð
ðððððyñôðððððð˜Iñôðð:ð:ð:ð
ððð,Ð-EÐFÐàØØ!Øð	ð
ðÐðØðððÐð02ð02ð02ð02ð02ñ02ô02ð02ðf*ð*ð*ð&R
ðR
ðR
ðR
ðR
ñR
ôR
ðR
ðjFKðFKðFKðFKðFKñFKôFKðFKðR(ð(ð(ð"8ð8ð8ð8ð8ñ8ô8ð8ðv
 X¨e¤_ð
¸À%ÈÈUÈ
ÔBSÔ9Tð
ð
ð
ð
ð7(ð7(ð7(ð~37Ø
ð
3ð3àe”*ð3𘘠˜
Ô&ð	3ð
x  ¨ 
Ô.Ô/ð3ð3ð3ð3ðrg0ðg0ðg0ðg0ðg0ñg0ôg0ðg0ðT$ð$ð$ð"ð"ð"ðuOðuOðuOðuOðuO˜9ñuOôuOðuOðp?8ð?8ð?8ð?8ð?8Ð'ñ?8ô?8ð?8ðDððððñôðð:˜$˜sœ)ððððð$"
ð"
ð"
ð"
ð"
Ð.ñ"
ô"
ð"
ðJ`%ð`%ð`%ð`%ð`%Yñ`%ô`%ð`%ðH .Ðð4ð4ð4ð4ð4ñ4ô4ð4ð<#ð#ð#ð#ð#iñ#ô#ð#ð,'ð,'ð,'ð,'ð,'˜)ñ,'ô,'ð,'ð^2'ð2'ð2'ð2'ð2'Yñ2'ô2'ð2'ðj	'ð	'ð	'ð%€ðU
ðU
ðU
ðU
ðU
Ð'ñU
ôU
ðU
ðpNðNðNðØØ
ð	`ð`ðÐ8Ô9ð
`ð`ð`ð`ðF3ð3ð3ðlPðPðPðPðP˜IñPôPðPðDOðOðOðOðOÐ0ñOôOðOðd%€
ð' #ð'ð'ð'ð'ð<KOððØ	ðؘvÔ&ðØ:BÀ3¼-ðà
ˆ9cˆ>Ôððððð2<ð<ð<ð,˜cð e¨H°S¬M¸3ÀÐ,CÔ&Dððððð* $Ø#ð)Ið)IØð)IàVÔð)Ið˜Œ}ð)Ið
ˆ9cˆ>Ôð)Ið)Ið)Ið)IðZ„G×ÒÐ+Ñ,Ô,ØÐ˜U MÑ2Ô2ð!Ðð $Ð,IððððððrT