yyr t 0ururR q_threadmallocqr tr r tr-o r %pchan-o r create %rur xscs qsrisopenforrur$&uQuptop&tuZtpr&uVtpYupYwpruYxpruR BqaltqPutaltstR=Qq_threadgetprocq stsr &uZpRzaq_threadexitsallstatusquZpYpR)LqyieldqRGIq_procsplhiqssrsrxqstrusnrussaus tY pY pY p 0ur & uQ pr & uZ pY pr u(r & uZ pY pssuZprxqrsRWq_procsplxqsrurussxasrrrs&uQprcanexecrs&uZpYpDsrsR)q nrand qs&uZpsYpsuZdpsr&uZp rx qr!s!q!s"sr"ur#&#uZ#p$$t$r$*u>$r$$u$u $r$$(uss!ca)u!ss"waitingr*u"ss#allreadyclr+u#s,tY,pY,pY,p,0ur,&,uQ,pr-&-uZ-pY.pY.p//sr/r//r/s&/uQ/pr0u"s11s1r$enqueue1$r1sY1p22rxQ2p3!sY3pr5u#sY5p&7"suZ7(p8!suQ8p:!s:rx:;rx;qr<s<q=sr=u>!s>t>r>*u>>r>>u>u >r>>Y>(p&?#suQ?(pArxAqrBsBqCsrCurDuDYO)pPrxPqrQsQqRsRuR%ыq%_threadrendezvousR%qs&rR&sSqrSsTrxTqV&suZV;pWsuQW:pYX(pYus]us^tY^ApY^@pY^Vp^0ur^&^uQ^?pr_&_uZ_HpY`>paasZaQpcscud&suZdQperxeggsr'dequeueg'rgsYg>pirxiqrjsjqksuZkcplsuZl_pYlap-lo r pc==(Ch-lo r annel*)~lr xR?;q(_assertl(qrmumYmhppsrpsrpr)altexecp)rR)Lq*_schedq*qrsrrussstsrs*u>srssusu srsssRV5q+chanclosew+q ut,cw,t|qr|s}rx}q},tr~$&~uQ~prxqrsqruru$ruYpYpYpDr &Rps-ir-suQp uZpYpYpr&uQpr&uZpr&uQpYpYpYps rxqrsqYpYpYps u%quZpYpqrsrxqr-s,tYpru$r&uQprrxqrsqruRV5q.chanclosing.qu,tqrsrxq,tr$&uZprusYprrsrxqrsqrsr/runop/rurs,tst0v0tsusrust1nb&1tuQprusYpYpru&1tuQpYpr* x(qrusuQpruru-o( r 0nbERR-o0 r OR: chan-o8 r nel alt -o@ r returnedrur- xrRJqfprintqR)Lqabortqrusqr&uQp&uQp&uQpYpRD+fqrecvq uru0tru/rRD+fqnbrecvq uru0trur/rRD+fqsendq uru0tru/rRD+fqnbsendq uru0trur/rrchannelsizer utszrtr &QKp-oH r %d exp-oP r ected ch-oX r annel wi-o` r th eleme-oh r nts of s-op r ize %d, -ox r got sizerurM xrr rqqRMV=q sendul qu ,tr ur  r ,t 0t  q  R((+q recvul qu,trurr,ts v sq&uRdprEur sRD+fq sendp qu,trurr,tt v tqRoDqrecvp qu$,tr$ur$$r%,tsv%s%%q&%uR%p&u&'s''RMV=qnbsendul+qu-,tr-ur--r.,ttv.t..q..R((+qnbrecvul2qu6,tr6ur66r7,tsv7s77q&7uZ7pr8u8r9s99RD+fqnbsendp=qu?,tr?ur??r@,ttv@t@@q@@RoDqnbrecvpDquH,trHurHHrI,tsvIsIIq&IuZIpJuJKsKKremptyentryOr uOrS &SuZSpSSuZSpYSpS,trS &SuQSpSSuQSpYSpYSpYSpr.string-Sor %d (c--Sor >nentry=-Sor =0 && c--Sor >qentry=-Sor =nil) ||-Sor (c->nen-Sor try && c-Sor ->qentrySrxS(qS,trUuYUpYUpYUpDUrU &UrU-sRUpVVVVVuZVprWWYWprYusextrarZs Z [[,tr[ [ur[R6N`qrealloc[q[,t[\\uZ\p-]or )reallo-]or c channe-]or l entrie]rxRPqsysfatal]q],tr^-s^^^r^ur^s^ur^RXqmemset^qr_-s__c$r(uc-gor s: %rQu-gor euing al-gor t %p on -gor channel rgugrxggtagtggq_threaddebuggqgth,th iiritjjjjjjn'r0unsrtuYtpYtpYt>pDtrt &tRtpru-sus cu suuuuZu=p-vor %pDeque-vor uing alt-vor %p from-vor channelrvuvrxvvvvvqv srw-swwwwury&yuQy9pry$&yuZy:pYy<pzr!_chanfreez!r{Y{p{r"canexec"r0urruruYJpYIpYmpDr &RHpuQZpr&Q[pYcp uQdpYlp-or %pcan -o r rendez a-o(r lt %p chrurxqruYGpr&uZuprr&NupY}pr&uZ|pr&uV|pY}pYp-o0r an %pca-o8r n buffer-o@r alt %p -oHr chan %prur6xqrurur#altexecbuffered#r8ur&uZpr&uTpYp-oPr buffer r-oXr ecv alt -o`r %p chan rurPx sq ss$.safer$srrur3rr rr$s(ut%willreplace&%tuZp/Dr&uZprr&OpYp-ohr %pbuffe-opr r send a-oxr lt %p chrurkx sq sr$srr rur3rr rr$s(u&%tuZpDqur&altcopy&rut'src'trtuQpuQprR4!پq(memmove(qYprurq)rhurrus)otheropr)srus*bu*sts+me+sruYpYpY%pD sr &RpuQ pr&)sQ pYpr-s uQpY$pDrs,nr,sq-nrand-qr,st ss.ir.s&uZ$p*sYp*suQp-or an %pre-or ndez %s -or alt %p c-or han %p a-or lt %pre-or cvsendrurxr&uZ/prxY0prx *s(qt+s s*ss/waiter/sr&uQBpr&uZCpY[pr&uQHpqtrur#r+ss0buf0s sr r&r0s/s sr r&rYipr&uZdpr r&rYipr r&r*s  s-or unlockin-or g the chrurxqr1chanlockr1xqmcsunlockqtsplrtq_procsplxq-or anlockc-or hanlock -or is %ludrurxr1rrqY~pY~pYp*s uq_threadrendezvousquZ}pY|pruru#r s+str&uZpr r&rYpr r&rr1xqrtqrurerrcl6ru61ru6ruO