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:
€]q(cpygments.token
_TokenType
qXCommentqXSingleq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXPreprocq†q…qq}q(hh	]q…qRqh
hubhhXMultiq†q…qq}q(hh	]q …q!Rq"h
hubhhXHashbangq#†q$…q%q&}q'(hh	]q(…q)Rq*h
hubhhhX
SingleLineq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhXDocq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhX	Directiveq;†q<…q=q>}q?(hh	]q@…qARqBh
hubhhX	MultilineqC†qD…qEqF}qG(hh	]qH…qIRqJh
hubhhX
SinglelineqK†qL…qMqN}qO(hh	]qP…qQRqRh
hubhhXPreprocFileqS†qT…qUqV}qW(hh	]qX…qYRqZh
hubhhXSpecialq[†q\…q]q^}q_(hh	]q`…qaRqbh
hube…qcRqdh
h)…qeqf}qg(hh	]qh(hXEscapeqi…qj…qkql}qm(hh	]qn…qoRqph
hfubhXOperatorqq…qr…qsqt}qu(hh	]qv(hhqXDBSqw†qx…qyqz}q{(hh	]q|…q}Rq~h
htubhhqXWordq†q€…qq‚}qƒ(hh	]q„…q…Rq†h
htube…q‡Rqˆh
hfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh	]qŽ(hh‰XTagq†q…q‘q’}q“(hh	]q”…q•Rq–h
hŒubhh‰XEntityq—†q˜…q™qš}q›(hh	]qœhh‰h—hw‡q…qžqŸ}q (hh	]q¡…q¢Rq£h
hšuba…q¤Rq¥h
hŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh	]q«…q¬Rq­h
hŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh	]q³…q´Rqµh
hŒubhh‰XClassq¶†q·…q¸q¹}qº(hh	]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh	]qqÁRqÂh
h¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh	]qȅqÉRqÊh
h¹ube…qËRqÌh
hŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh	]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh	]q؅qÙRqÚh
hÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh	]q߅qàRqáh
hÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh	]qç…qèRqéh
hÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh	]qï…qðRqñh
hÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh	]q÷…qøRqùh
hÐube…qúRqûh
hŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh	]rhh‰hüh͇r…rr}r(hh	]r…rRrh
hÿuba…r	Rr
h
hŒhÍjubhh‰X	Namespacer†r…r
r}r(hh	]r…rRrh
hŒubhh‰XPropertyr†r…rr}r(hh	]r…rRrh
hŒubhh‰XSymbolr†r…rr}r(hh	]r …r!Rr"h
hŒubhh‰XClassesr#†r$…r%r&}r'(hh	]r(…r)Rr*h
hŒubhh‰XPseudor+†r,…r-r.}r/(hh	]r0…r1Rr2h
hŒubhh‰XLabelr3†r4…r5r6}r7(hh	]r8…r9Rr:h
hŒubhh‰hq†r;…r<r=}r>(hh	]r?…r@RrAh
hŒubhh‰XBuiltinrB†rC…rDrE}rF(hh	]rG(hh‰jBj+‡rH…rIrJ}rK(hh	]rL…rMRrNh
jEubhh‰jBXTyperO‡rP…rQrR}rS(hh	]rT…rURrVh
jEube…rWRrXh
hŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh	]r^…r_Rr`h
hŒubhh‰XOtherra†rb…rcrd}re(hh	]rfhh‰jaXMemberrg‡rh…rirj}rk(hh	]rl…rmRrnh
jduba…roRrph
hŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh	]rvhh‰jqhâ‡rw…rxry}rz(hh	]r{…r|Rr}h
jtuba…r~Rrh
hŒhâjyubhh‰jO†r€…rr‚}rƒ(hh	]r„…r…Rr†h
hŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh	]rŒ…rRrŽh
hŒube…rRrh
hfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh	]r–(hj‘ja†r—…r˜r™}rš(hh	]r›…rœRrh
j”ubhj‘XCharrž†rŸ…r r¡}r¢(hh	]r£…r¤Rr¥h
j”ubhj‘XDater¦†r§…r¨r©}rª(hh	]r«…r¬Rr­h
j”ubhj‘XScalarr®†r¯…r°r±}r²(hh	]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh	]r¹…rºRr»h
j±uba…r¼Rr½h
j”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh	]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh	]rÉ…rÊRrËh
jÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
jÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh	]rØ…rÙRrÚh
jÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh	]rß…ràRráh
jÁubhj‘j¾h‡râ…rãrä}rå(hh	]ræ…rçRrèh
jÁubhj‘j¾ja‡ré…rêrë}rì(hh	]rí…rîRrïh
jÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh	]rõ…röRr÷h
jÁubhj‘j¾hi‡rø…rùrú}rû(hh	]rü…rýRrþh
jÁubhj‘j¾XRegexrÿ‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾XMomentr‡r…r	r
}r(hh	]r…r
Rrh
jÁubhj‘j¾XBooleanr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Characterr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh	]r$…r%Rr&h
jÁubhj‘j¾h3‡r'…r(r)}r*(hh	]r+…r,Rr-h
jÁubhj‘j¾h‰‡r.…r/r0}r1(hh	]r2…r3Rr4h
jÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh	]r:…r;Rr<h
jÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh	]rB…rCRrDh
jÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh	]rJ…rKRrLh
jÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh	]rR…rSRrTh
jÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh	]rZ…r[Rr\h
jÁube…r]Rr^h
j”j5j8jðjójžjÖjj"h3j)jEjHhijúj=j@jÄjÇjajëjÿjhjäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh	]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh	]rj…rkRrlh
jbubhj‘j_XDecrm‡rn…rorp}rq(hh	]rr…rsRrth
jbubhj‘j_XRadixru‡rv…rwrx}ry(hh	]rz…r{Rr|h
jbubhj‘j_XOctr}‡r~…rr€}r(hh	]r‚…rƒRr„h
jbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jbubhj‘j_hü‡r…rށr}r(hh	]r‘…r’Rr“h
jbubhj‘j_XHexr”‡r•…r–r—}r˜(hh	]r™…ršRr›h
jbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh	]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh	]r§…r¨Rr©h
jŸuba…rªRr«h
jbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh	]r±…r²Rr³h
jbube…r´Rrµh
j”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·h
hfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh	]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh	]rË…rÌRrÍh
j»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh	]rÓ…rÔRrÕh
j»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh	]rÛ…rÜRrÝh
j»ubhj¸XPromptrÞ†rß…ràrá}râ(hh	]rã…räRråh
j»ubhj¸XDeletedræ†rç…rèré}rê(hh	]rë…rìRríh
j»ubhj¸XInsertedrî†rï…rðrñ}rò(hh	]ró…rôRrõh
j»ubhj¸XHeadingrö†r÷…rørù}rú(hh	]rû…rüRrýh
j»ubhj¸XStrongrþ†rÿ…rr}r(hh	]r…rRrh
j»ubhj¸XEmphr†r…rr	}r
(hh	]r…rRr
h
j»ube…rRrh
hfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh	]r…rRrh
hfubhXKeywordr…r…rr}r(hh	]r(hjh†r…rr}r (hh	]r!…r"Rr#h
jubhjj†r$…r%r&}r'(hh	]r(…r)Rr*h
jubhjjO†r+…r,r-}r.(hh	]r/…r0Rr1h
jubhjXPreProcr2†r3…r4r5}r6(hh	]r7…r8Rr9h
jubhjXControlr:†r;…r<r=}r>(hh	]r?…r@RrAh
jubhjj‡†rB…rCrD}rE(hh	]rF…rGRrHh
jubhjj†rI…rJrK}rL(hh	]rM…rNRrOh
jubhjj+†rP…rQrR}rS(hh	]rT…rURrVh
jubhjXDeclarationrW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jubhjXReservedr_†r`…rarb}rc(hh	]rd…reRrfh
jube…rgRrhh
hfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh	]rm…rnRroh
hfubhXTextrp…rq…rrrs}rt(hh	]ru(hjpXRootrv†rw…rxry}rz(hh	]r{…r|Rr}h
jsubhjpj†r~…rr€}r(hh	]r‚…rƒRr„h
jsubhjpXRagr…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jsubhjpX
Whitespacer†rŽ…rr}r‘(hh	]r’…r“Rr”h
jsubhjpXBeerr•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jsubhjpXPunctuationr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jsube…r¥Rr¦h
hfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh	]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
hfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubh#h&hChFhhhShVhhh[h^h;h>h+h.h3h6hhhKhNububX?// Created by Lionello Lunesu and placed in the public domain.
r¹†rºhX:// This file has been modified from its original version.
r»†r¼hX-// It has been formatted to fit your screen.
r½†r¾jXmoduler¿†rÀjsX rÁ†rÂhŒXphonenorÆrÄj©X;rņrÆjsX     rdžrÈhX// optional
rɆrÊjXimportrˆrÌjsjÁ†rÍhŒXstdrΆrÏj©X.rІrÑhŒXstdiorÒ†rÓj©jņrÔjsX   rÕ†rÖhX// writefln     
r׆rØjXimportrÙ†rÚjsjÁ†rÛhŒXstdr܆rÝj©jІrÞhŒXctyper߆ràj©jņrájsX   râ†rãhX// isdigit     
rä†råjXimportræ†rçjsjÁ†rèhŒXstdré†rêj©jІrëhŒXstreamrì†ríj©jņrîjsX  rï†rðhX// BufferedFile
rñ†ròjsX
ró†rôhX7// Just for readability (imagine char[][][char[]])    
rõ†röjXaliasr÷†røjsjÁ†rùj-Xcharrú†rûj©X[rü†rýj©X]rþ†rÿjsjÁ†rjEXstringr†rj©jņrjsjó†rjXaliasr†rjsjÁ†rjEXstringr†r	j©jü†r
j©jþ†rjsjÁ†rhŒXstringarrayr
†rj©jņrjsjó†rjsjó†rhX6/// Strips non-digit characters from the string (COW)
r†rjEXstringr†rjsjÁ†rhŒX
stripNonDigitr†rj©X(r†rjsjÁ†rjXinr†rjsjÁ†rjEXstringr†r jsjÁ†r!hŒXliner"†r#jsjÁ†r$j©X)r%†r&jsX 
r'†r(j©X{r)†r*jsjó†r+jsX    r,†r-jEXstringr.†r/jsjÁ†r0hŒXretr1†r2j©jņr3jsjó†r4jsX    r5†r6jXforeachr7†r8j©j†r9j-Xuintr:†r;jsjÁ†r<hŒXir=†r>j©X,r?†r@jsjÁ†rAhŒXcrB†rCj©jņrDjsjÁ†rEhŒXlinerF†rGj©j%†rHjsjÁ†rIj©j)†rJjsjó†rKjsX        rL†rMhXB// Error: std.ctype.isdigit at C:\dmd\src\phobos\std\ctype.d(37) 
rN†rOjsX        rP†rQhXM// conflicts with std.stream.isdigit at C:\dmd\src\phobos\std\stream.d(2924)
rR†rSjsX        rT†rUjXifrV†rWjsjÁ†rXj©j†rYj©X!rZ†r[hŒXstdr\†r]j©jІr^hŒXctyper_†r`j©jІrahŒXisdigitrb†rcj©j†rdhŒjB†rej©j%†rfj©j%†rgjsjÁ†rhj©j)†rijsjó†rjjsX            rk†rljXifrm†rnjsjÁ†roj©j†rpj©jZ†rqhŒXretrr†rsj©j%†rtjsjó†rujsX                rv†rwhŒXretrx†ryjsjÁ†rzj©X=r{†r|jsjÁ†r}hŒXliner~†rj©jü†r€jhX0.r†r‚j©jІrƒhŒj=†r„j©jþ†r…j©jņr†jsX
    
        r‡†rˆj©X}r‰†rŠjsX
    
        r‹†rŒjXelser†rŽjsjÁ†rjXifr†r‘jsjÁ†r’j©j†r“hŒXretr”†r•j©j%†r–jsjó†r—jsX            r˜†r™hŒXretrš†r›jsjÁ†rœj©X~=r†ržjsjÁ†rŸhŒjB†r j©jņr¡jsX	    
    r¢†r£j©j‰†r¤jsX	    
    r¥†r¦jXreturnr§†r¨jsjÁ†r©hŒXretrª†r«j©X?r¬†r­hŒXretr®†r¯j©X:r°†r±hŒXliner²†r³j©jņr´jsjó†rµj©j‰†r¶jsjó†r·jsjó†r¸jXunittestr¹†rºjsjÁ†r»j©j)†r¼jsjó†r½jsX    r¾†r¿jXassertrÀ†rÁj©j†rÂjsjÁ†rÃhŒX
stripNonDigitrĆrÅj©j†rÆjÁX"asdf"rdžrÈj©j%†rÉjsjÁ†rÊj©X==rˆrÌjsjÁ†rÍjÁX""rΆrÏjsX  rІrÑj©j%†rÒj©jņrÓjsjó†rÔjsX    rÕ†rÖjXassertr׆rØj©j†rÙjsjÁ†rÚhŒX
stripNonDigitrÛ†rÜj©j†rÝjÁX"\'13-=2 4kop"rÞ†rßj©j%†ràjsjÁ†ráj©X==râ†rãjsX  rä†råjÁX"1324"ræ†rçjsX  rè†réj©j%†rêj©jņrëjsjó†rìj©j‰†ríjsjó†rîjsjó†rïhXG/// Converts a word into a number, ignoring all non alpha characters  
rð†rñjEXstringrò†rójsjÁ†rôhŒX	wordToNumrõ†röj©j†r÷jsjÁ†røjXinrù†rújsjÁ†rûjEXstringrü†rýjsjÁ†rþhŒXwordrÿ†rjsjÁ†rj©j%†rjsjó†rj©j)†rjsjó†rhX*// translation table for the task at hand
r†rjXconstr†r	jsjÁ†r
j-Xcharr†rj©jü†r
jŸX256r†rj©jþ†rjsjÁ†rhŒX	TRANSLATEr†rjsjÁ†rj©j{†rjsX	    
    r†rjÁX""                                "r†rjsX  r†rhX// 0   
r†rjsX    r†rjÁX""                0123456789      "r †r!jsX  r"†r#hX// 32     
r$†r%jsX    r&†r'jÁX"" 57630499617851881234762239     "r(†r)jsX  r*†r+hX	// 64   
r,†r-jsX    r.†r/jÁX"" 57630499617851881234762239     "r0†r1jsjó†r2jsX    r3†r4jÁX""                                "r5†r6jsjó†r7jsX    r8†r9jÁX""                                "r:†r;jsjó†r<jsX    r=†r>jÁX""                                "r?†r@jsX	    
    rA†rBjÁX""                                "rC†rDj©jņrEjsjó†rFjsX    rG†rHjEXstringrI†rJjsjÁ†rKhŒXretrL†rMj©jņrNjsjó†rOjsX    rP†rQjXforeachrR†rSj©j†rThŒjB†rUj©jņrVjsjÁ†rWjXcastrX†rYj©j†rZj-Xubyter[†r\j©jü†r]j©jþ†r^j©j%†r_hŒXwordr`†raj©j%†rbjsjó†rcjsX        rd†rejXifrf†rgjsjÁ†rhj©j†rihŒX	TRANSLATErj†rkj©jü†rlhŒjB†rmj©jþ†rnjsjÁ†roj©X!=rp†rqjsjÁ†rrjÖX' 'rs†rtj©j%†rujsjó†rvjsX            rw†rxhŒXretry†rzjsjÁ†r{j©X~=r|†r}jsjÁ†r~hŒX	TRANSLATEr†r€j©jü†rhŒjB†r‚j©jþ†rƒj©jņr„jsjó†r…jsX    r††r‡jXreturnrˆ†r‰jsjÁ†rŠhŒXretr‹†rŒj©jņrjsjó†rŽj©j‰†rjsjó†rjsjó†r‘jXunittestr’†r“jsjÁ†r”j©j)†r•jsjó†r–jsjÁ†r—hX=// Test wordToNum using the table from the task description.
r˜†r™jsjÁ†ršjXassertr›†rœj©j†rjsjÁ†ržjÁX"01112223334455666777888999"rŸ†r jsjÁ†r¡j©X==r¢†r£jsjó†r¤jsX   r¥†r¦hŒX	wordToNumr§†r¨j©j†r©jÁXG"E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z"rª†r«j©j%†r¬j©j%†r­j©jņr®jsjó†r¯jsjÁ†r°jXassertr±†r²j©j†r³jsjÁ†r´jÁX"01112223334455666777888999"rµ†r¶jsjÁ†r·j©X==r¸†r¹jsX 
   rº†r»hŒX	wordToNumr¼†r½j©j†r¾jÁXG"e | j n q | r w x | d s y | f t | a m | c i v | b k u | l o p | g h z"r¿†rÀj©j%†rÁj©j%†rÂj©jņrÃjsjó†rÄjsjÁ†rÅjXassertrƆrÇj©j†rÈjsjÁ†rÉjÁX"0123456789"rʆrËjsjÁ†rÌj©X==r͆rÎjsX 
   rφrÐhŒX	wordToNumrцrÒj©j†rÓjÁXE"0 |   1   |   2   |   3   |  4  |  5  |   6   |   7   |   8   |   9"rÔ†rÕj©j%†rÖj©j%†r×j©jņrØjsjó†rÙj©j‰†rÚjsjó†rÛjsjó†rÜj-Xvoidr݆rÞjsjÁ†rßhŒXmainrà†ráj©j†râjsjÁ†rãjEXstringrä†råj©jü†ræj©jþ†rçjsjÁ†rèhŒXargsré†rêjsjÁ†rëj©j%†rìjsjó†ríj©j)†rîjsjó†rïjsX    rð†rñhXB// This associative array maps a number to an array of words.    
rò†rójsX    rô†rõhŒXstringarrayrö†r÷j©jü†røjEXstringrù†rúj©jþ†rûjsX    rü†rýhŒX	num2wordsrþ†rÿj©jņrjsjó†rjsjó†rjsX    r†rjXforeachr†rj©j†rjEXstringr†r	jsjÁ†r
hŒXwordr†rj©jņr
jsjÁ†rjXnewr†rjsjÁ†rhŒXBufferedFiler†rj©j†rjÁX"dictionary.txt"r†rjsjÁ†rj©j%†rjsjÁ†rj©j%†rjsjó†rjsX        r†rhŒX	num2wordsr†rj©jü†r jsjÁ†r!hŒX	wordToNumr"†r#j©j†r$hŒXwordr%†r&j©j%†r'jsjÁ†r(j©jþ†r)jsjÁ†r*j©X~=r+†r,jsjÁ†r-hŒXwordr.†r/j©jІr0hŒXdupr1†r2j©jņr3jsX        r4†r5hX// must dup
r6†r7jsjó†r8jsX    r9†r:hX0/// Finds all alternatives for the given number
r;†r<jsX    r=†r>hX:/// (should have been stripped from non-digit characters)
r?†r@jsX    rA†rBhŒXstringarrayrC†rDjsjÁ†rEhŒX
_FindWordsrF†rGj©j†rHjsjÁ†rIjEXstringrJ†rKjsjÁ†rLhŒXnumbersrM†rNj©j?†rOjsjÁ†rPj-XboolrQ†rRjsjÁ†rShŒXdigitokrT†rUjsjÁ†rVj©j%†rWjsjó†rXjsX    rY†rZjXinr[†r\jsjÁ†r]j©j)†r^jsjó†r_jsX        r`†rajXassertrb†rcj©j†rdhŒXnumbersre†rfj©jІrghŒXlengthrh†rijsjÁ†rjj©X>rk†rljsX  rm†rnjŸX0ro†rpj©j%†rqj©jņrrjsX	    
    rs†rtj©j‰†rujsX	    
    rv†rwjXoutrx†ryj©j†rzhŒXresultr{†r|j©j%†r}jsjÁ†r~j©j)†rjsjó†r€jsX        r†r‚jXforeachrƒ†r„jsjÁ†r…j©j†r†hŒXar‡†rˆj©jņr‰jsjÁ†rŠhŒXresultr‹†rŒj©j%†rjsjó†rŽjsX            r†rjXassertr‘†r’j©j†r“jsjÁ†r”hŒX	wordToNumr•†r–j©j†r—hŒj‡†r˜j©j%†r™jsjÁ†ršj©X==r›†rœjsjÁ†rhŒXnumbersrž†rŸjsjÁ†r j©j%†r¡j©jņr¢jsjó†r£jsX    r¤†r¥j©j‰†r¦jsX	    
    r§†r¨jXbodyr©†rªjsjÁ†r«j©j)†r¬jsjó†r­jsX        r®†r¯hŒXstringarrayr°†r±jsjÁ†r²hŒXretr³†r´j©jņrµjsjó†r¶jsX        r·†r¸j-Xboolr¹†rºjsjÁ†r»hŒX	foundwordr¼†r½jsjÁ†r¾j©j{†r¿jsjÁ†rÀjDXfalserÁ†rÂj©jņrÃjsjó†rÄjsX        rņrÆjXforrdžrÈjsjÁ†rÉj©j†rÊj-XuintrˆrÌjsjÁ†rÍhŒXtrΆrÏj©j{†rÐjŸX1rцrÒj©jņrÓjsjÁ†rÔhŒjΆrÕj©X<=rÖ†r×hŒXnumbersr؆rÙj©jІrÚhŒXlengthrÛ†rÜj©jņrÝjsjÁ†rÞj©X++r߆ràhŒjΆráj©j%†râjsjÁ†rãj©j)†räjsjó†råjsX            ræ†rçjXautorè†réjsjÁ†rêhŒXalternativesrë†rìjsjÁ†ríj©j{†rîjsjÁ†rïhŒXnumbersrð†rñj©jü†ròjhX0.ró†rôj©jІrõhŒjΆröj©jþ†r÷jsjÁ†røjXinrù†rújsjÁ†rûhŒX	num2wordsrü†rýj©jņrþjsjó†rÿjsX            r†rjXifr†rjsjÁ†rj©j†rj©jZ†rhŒXalternativesr†rj©j%†r	jsjó†r
jsX                r†rjXcontinuer
†rj©jņrjsjó†rjsX            r†rhŒX	foundwordr†rjsjÁ†rj©j{†rjsjÁ†rjDXtruer†rj©jņrjsjó†rjsX            r†rjXifr†rjsjÁ†r j©j†r!hŒXnumbersr"†r#j©jІr$hŒXlengthr%†r&jsjÁ†r'j©jk†r(jsX  r)†r*hŒjΆr+j©j%†r,jsjÁ†r-j©j)†r.jsjó†r/jsX                r0†r1hX?// Combine all current alternatives with all alternatives     
r2†r3jsX                r4†r5hXA// of the rest (next piece can start with a digit)              
r6†r7jsX                r8†r9jXforeachr:†r;jsjÁ†r<j©j†r=hŒXa2r>†r?j©jņr@jsjÁ†rAhŒX
_FindWordsrB†rCj©j†rDjsjÁ†rEhŒXnumbersrF†rGj©jü†rHhŒjΆrIj©X..rJ†rKj©X$rL†rMj©jþ†rNj©j?†rOjsjÁ†rPjDXtruerQ†rRjsX     rS†rTj©j%†rUjsjÁ†rVj©j%†rWjsjó†rXjsX                    rY†rZjXforeachr[†r\j©j†r]hŒXa1r^†r_j©jņr`jsjÁ†raj©X*rb†rchŒXalternativesrd†rej©j%†rfjsjó†rgjsX                       rh†rihŒXretrj†rkjsjÁ†rlj©X~=rm†rnjsjÁ†rohŒXa1rp†rqjsjÁ†rrj©X~rs†rtjsjÁ†rujÁX" "rv†rwjsjÁ†rxj©js†ryjsjÁ†rzhŒXa2r{†r|j©jņr}jsjó†r~jsX            r†r€j©j‰†rjsjó†r‚jsX            rƒ†r„jXelser…†r†jsX    
                r‡†rˆhŒXretr‰†rŠjsjÁ†r‹j©X~=rŒ†rjsjÁ†rŽj©jb†rhŒXalternativesr†r‘j©jņr’jsX    r“†r”hX// append these alternatives
r•†r–jsX        r—†r˜j©j‰†r™jsjó†ršjsX        r›†rœhX;// Try to keep 1 digit, only if we're allowed and no other
r†ržjsX        rŸ†r hX// alternatives were found
r¡†r¢jsX        r£†r¤hXC// Testing "ret.length" makes more sense than testing "foundword",
r¥†r¦jsX        r§†r¨hX7// but the other implementations seem to do just this.
r©†rªjsX        r«†r¬jXifr­†r®jsjÁ†r¯j©j†r°hŒXdigitokr±†r²jsjÁ†r³j©X&&r´†rµjsjÁ†r¶j©jZ†r·hŒX	foundwordr¸†r¹j©j%†rºjsjÁ†r»j©j)†r¼jsjÁ†r½hX//ret.length == 0  
r¾†r¿jsX            rÀ†rÁjXifr†rÃj©j†rÄhŒXnumbersrņrÆj©jІrÇhŒXlengthrȆrÉjsjÁ†rÊj©jk†rËjsX  r̆rÍjŸjцrÎj©j%†rÏjsjÁ†rÐj©j)†rÑjsjó†rÒjsX                rÓ†rÔhX:// Combine 1 digit with all altenatives from the rest    
rÕ†rÖjsX                r׆rØhX5// (next piece can not start with a digit)          
rÙ†rÚjsX                rÛ†rÜjXforeachr݆rÞjsjÁ†rßj©j†ràhŒj‡†ráj©jņrâjsjÁ†rãhŒX
_FindWordsrä†råj©j†ræjsjÁ†rçhŒXnumbersrè†réj©jü†rêjhX1.rë†rìj©jІríj©jL†rîj©jþ†rïj©j?†rðjsjÁ†rñjDXfalserò†rójsjÁ†rôj©j%†rõjsjÁ†röj©j%†r÷jsjó†røjsX                    rù†rúhŒXretrû†rüjsjÁ†rýj©X~=rþ†rÿjsjÁ†rhŒXnumbersr†rj©jü†rjhX0.r†rjhX.1r†rj©jþ†rjsjÁ†r	j©js†r
jsjÁ†rjÁX" "r†r
jsjÁ†rj©js†rjsjÁ†rhŒj‡†rj©jņrjsjó†rjsX            r†rj©j‰†rjsX    
            r†rjXelser†rjsX    
                r†rhŒXretr†rjsjÁ†rj©X~=r †r!jsjÁ†r"hŒXnumbersr#†r$j©jü†r%jhX0.r&†r'jhX.1r(†r)j©jþ†r*j©jņr+jsX    r,†r-hX'// just append this digit             
r.†r/jsX        r0†r1j©j‰†r2jsX
    
        r3†r4jXreturnr5†r6jsjÁ†r7hŒXretr8†r9j©jņr:jsjó†r;jsX    r<†r=j©j‰†r>jsjó†r?jsjó†r@jsX    rA†rBhX9/// (This function was inlined in the original program) 
rC†rDjsX    rE†rFhX7/// Finds all alternatives for the given phone number 
rG†rHjsX    rI†rJhX/// Returns: array of strings 
rK†rLjsX    rM†rNhŒXstringarrayrO†rPjsjÁ†rQhŒX	FindWordsrR†rSj©j†rTjsjÁ†rUjEXstringrV†rWjsjÁ†rXhŒXphone_numberrY†rZjsjÁ†r[j©j%†r\jsjó†r]jsX    r^†r_j©j)†r`jsjó†rajsX        rb†rcjXifrd†rejsjÁ†rfj©j†rgj©jZ†rhhŒXphone_numberri†rjj©jІrkhŒXlengthrl†rmj©j%†rnjsjó†rojsX            rp†rqjXreturnrr†rsjsjÁ†rtjDXnullru†rvj©jņrwjsjó†rxjsX        ry†rzhX=// Strip the non-digit characters from the phone number, and
r{†r|jsX        r}†r~hX@// pass it to the recursive function (leading digit is allowed)
r†r€jsX        r†r‚jXreturnrƒ†r„jsjÁ†r…hŒX
_FindWordsr††r‡j©j†rˆjsjÁ†r‰hŒX
stripNonDigitrІr‹j©j†rŒhŒXphone_numberr†rŽj©j%†rj©j?†rjsjÁ†r‘jDXtruer’†r“jsjÁ†r”j©j%†r•j©jņr–jsX	    
    r—†r˜j©j‰†r™jsX    
    
    rš†r›hX// Read the phone numbers     
rœ†rjsX    rž†rŸjXforeachr †r¡j©j†r¢jEXstringr£†r¤jsjÁ†r¥hŒXphoner¦†r§j©jņr¨jsjÁ†r©jXnewrª†r«jsjÁ†r¬hŒXBufferedFiler­†r®j©j†r¯jÁX"input.txt"r°†r±jsX   r²†r³j©j%†r´jsjÁ†rµj©j%†r¶jsjó†r·jsX        r¸†r¹jXforeachrº†r»j©j†r¼hŒXalternativer½†r¾j©jņr¿jsjÁ†rÀhŒX	FindWordsrÁ†rÂj©j†rÃjsjÁ†rÄhŒXphonerņrÆjsjÁ†rÇj©j%†rÈjsjÁ†rÉj©j%†rÊjsjó†rËjsX            r̆rÍhŒXwriteflnrΆrÏj©j†rÐhŒXphonerцrÒj©j?†rÓjsjÁ†rÔjÁX": "rÕ†rÖj©j?†r×jsjÁ†rØhŒXalternativerÙ†rÚjsjÁ†rÛj©j%†rÜj©jņrÝjsjó†rÞj©j‰†rßjsjó†ràe.