~Eerrcl-;>cA-;>hA-;>aA-;>nA-;>nA-;>eA-;>lA-;> A-;>wA-; >aA-; >sA-; > A-; >cA-; >lA-;>oA-;>sA-;>eA-;>dA~>_chanfree> A~@cp@ pT&AXchanlockp>DpSL3ϝ=semlock=p@pS>p>DpSL3ϝ=semunlock=LpN= chaninit = A~@ elemcntp @ ~@ elemsizep @ p@ & AU8<& AQ9 .string-; > chaninitpApSp> DpSp SL.r= _threaddebug =pAL=chancreate=Ap @ p @ & AUU<& ASU %pchan-; > create %pApSp> DpS~?cp ?p S =p?~>isopenfor>A~@cp@ pQ & AOy<~@op&@AXxDpS=p? ~@altsp@ p TQpAPQ~?npA?~?apA?p@ WDpS=p?pSLW=_procsplx=p ?p APOp A p ? p  S~? xap   ?p R p  S >p  ? & AO !canexec !>p  ? & AX DpS=p?pS=p ? p?pAPOpR&AXp% ? &%AO%&enqueue'&>p' ? W'DO( D p0  Op1>Dp1S1=p2?p2S2=p3?p3APOp4#? 4@ p4*A=4 p4 4A4A 4 p4 4W45<&5%?AO55Dp7S7=p8?p8S8=p9?p9APOp:A:WE6DpFSF=pG?pGSG=aH? pH SpHASL%ы='_threadrendezvousH'=~?(rpH(?I=pI?pJ>DpJSJ=&L(?AXLL<&M?AOMKD p[  Qp]  ?p] S~>)dequeue])>p] ? W]ODp_S_=p`?p`S`=&a?AXaw<&b?AXbr pc==(Ch-b; > annel*)~pb> DpbSL?;=*_assertb*=pcAcWc}+altexecf+>L)L=,_schedg,=ph?phAPOpi? i@ pi*A=i pi iAiA i pi iiLV5=-chanclosem-=Ar=pr?ps>DpsSs=~@.cps.@ ptR&tAOtDpvSv=pw?pwSw=pxAxpzARpA WDpS=p?pS=WDpS=p/? p.@ Wp>DpS=p?pS=pALV5=0chanclosing0= A=p?p>DpS=p.@ pP&AXDpS=p?pS=p?~>1runop1>@Ap@p?p.@p?~@vp@p?pA?pA?~@nb& @AO * DpS*=pA&?AO 0nbERR-;0 > OR: chan-;8 > nel alt -;@ > returnedpApSp>- DpSp SLJ=fprint=L)L=abort=pAa? p S=p &AO<&AO<&AOLD+f=nbrecv=ApA p Sp.@ p Sp@ p SpA p  S1>LD+f=send=ApA p Sp.@ p Sp@ p SpA S1>LD+f=nbsend=ApA p Sp.@ p Sp@ p SpA p  S1>~> channelsize >Ap.@ ~@ szp @ p Q& Oq<-;H > %d exp-;P > ected ch-;X > annel wi-;` > th eleme-;h > nts of s-;p > ize %d, -;x > got sizepApSp>M DpSp Sp Qp S==LMV== sendul =Ap.@pSpApS >p.@ p Sa@ p S=L((+= recvul = Ap.@pSpApS >p .@ p  S~? va  ? p  S =& AP p.@ p S~@va@ p S=LoD=recvp= Ap.@pSpApS >p.@ p S~?va? p S=&APp$.@ p$ S~@va$@ p$ S$=$$L((+=nbrecvul(= Ap,.@p,Sp,Ap,S, >p-.@ p- S~?va-? p- S-=&-AX-p6.@ p6 S~@va6@ p6 S6=66LoD=nbrecvp:= Ap>.@p>Sp>Ap>S> >p?.@ p? S~?va?? p? S?=&?AX?emptyentryE>ApE.@ pIR&IAXI.string-I;> %d (c--I;> >nentry=-I;> =0 && c--I;> >qentry=-I;> =nil) ||-I;> (c->nen-I;> try && c-I;> ->qentrypI>DpISI*=pI.@ pKA WK  )reallo-S;> c channe-S;> l entriepS>DpSSLP=sysfatalS=pS.@ pTQpT/? aT OpTSpTASpT?TApTSLX=memsetT=pU/?UUY&>A~@ apY @ -];> s: %rQu-];> euing al-];> t %p on -];> channel p]Ap]Sp]>Dp]Sp] Sp]Pp] S~=!_threaddebug]!=p] @ p^.@ p^ Qp_Q p_ S_>p_ @ p_ p`Rp`Oa` Op` O`d)>Apd @ piTpjA WjR %pDeque-l;> uing alt-l;> %p from-l;> channelplAplSpl>DplSpl SplTpl Sl!=pl"? pmRpm/? am OpmAOpoR&oAOoo#_chanfreep#>qWqO<q~>$canexecv$>Apv @p{V p}Vp}A}p~A W~ %pcan -; > rendez a-;(> lt %p chpApSp>DpSpSp  S!=pAW} an %pca-;8> n buffer-;@> alt %p -;H> chan %ppApSp>6DpSpSp  S!=pApA~>%altexecbuffered%> Ap @ pR pR&AX buffer r-;X> ecv alt -;`> %p chan pApSp>PDpSp Sp "?p  S!=p"?~?&.safep&?pUpA pU p &?2&?p p U p &?|&?p p&?a U  Ap ~@'willreplace&'@AX %pbuffe-;p> r send a-;x> lt %p chpApSp>kDpSp Sp "?p  S!=p"?p&?pUpU  pA pU p &?2&?p p U p &?|&?p p&?a U  Ap &'@AX (altcopy(> A~@)srcp)@ p @ ~@*dstp*@ & AO!<& AO,altexec,>8Ap @pV pVpA  ~?-otheropp -?pA~?.bpA.?pV~?/mep/?pA W2 an %pre-;> ndez %s -;> alt %p c-;> han %p a-;> lt %pre-;> cvsendpApSp>DpSpV & AXeDWfDpSp Sp Sp.?pS!=p @ p/? p"? p.?pO ~?waiterp ?pP&AOxp p/?pS~?bufp ?p Sp"?p OpS(>p?pSp?pSp"?p OpS(>WWp.?pOp"? p O-;> unlockin-;> g the chpApSp>DpS!=~>chanlockp>DpS~=semunlock=~@splp@pS~=_procsplx=-;> anlockc-;> hanlock -;> is %ludpApSp>DpSp>pS!=Wp"? p/? p p @pO&AXWp>DpS=p@pS=pA~> errcl5 >A5>A5>AI