home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / languages / progs / cweb / c / common next >
Encoding:
Text File  |  1994-02-20  |  17.0 KB  |  621 lines

  1. #include <stdarg.h>
  2. #define variant empty
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7. #include <limits.h>
  8. #include "common.h"
  9. #define max_bytes 50000L
  10. #define max_names 3000
  11. #define max_sections 10000
  12. #define hash_size 353
  13. #define buf_size 100
  14. #define longest_name 400
  15. #define long_buf_size (buf_size+longest_name)
  16. #define local static
  17. #define array_size(a)((int)(sizeof(a)/sizeof(a[0])))
  18. #define false (boolean)0
  19. #define true (boolean)1
  20. #define ctangle 0
  21. #define cweave 1
  22. #define and_and 04
  23. #define lt_lt 020
  24. #define gt_gt 021
  25. #define plus_plus 013
  26. #define minus_minus 01
  27. #define minus_gt 031
  28. #define not_eq 032
  29. #define lt_eq 034
  30. #define gt_eq 035
  31. #define eq_eq 036
  32. #define or_or 037
  33. #define find_char (loc<=limit||get_line())
  34. #define including_header_file (saved_include_depth>0)
  35. #define spotless 0
  36. #define harmless_message 1
  37. #define error_message 2
  38. #define fatal_message 3
  39. #define mark_harmless if(history==spotless)history=harmless_message;else
  40. #define mark_error history=error_message
  41. #define overflow(t)fatal("\n! Sorry, %s capacity exceeded",t)
  42. #define confusion(s)fatal("\n! This can't happen: %s",s)
  43. #define show_banner flags['b']
  44. #define show_progress flags['p']
  45. #define show_stats flags['s']
  46. #define show_happiness flags['h']
  47. #define C_plus_plus flags['+']
  48. #define update_terminal fflush(stdout)
  49. #define new_line putchar('\n')
  50. #define term_write(string,leng)printf("%.*s",(int)(leng),string)
  51. #define buffer_end (&buffer[buf_size-2])
  52. #define max_include_depth 10
  53. #define lines_match  \
  54. (change_limit-change_buffer==limit-buffer \
  55. &&strncmp(buffer,change_buffer,limit-buffer)==0)
  56. #define byte_mem_end (&byte_mem[max_bytes])
  57. #define name_dir_end (&name_dir[max_names])
  58. #define update_terminal fflush(stdout)
  59. /*12:*//*8:*/
  60. #line 122 "common.inc"
  61. boolean names_match(name_pointer,char*,int,int);
  62. void init_id_name(name_pointer,int);
  63. void init_module_name(name_pointer);/*:8*//*16:*/
  64. #line 102 "w.common"
  65. int program,phase;/*:16*//*20:*/
  66. #line 144 "w.common"
  67. char buffer[long_buf_size];
  68. char*loc=buffer;
  69.  
  70. char*limit=buffer;/*:20*//*23:*/
  71. #line 220 "w.common"
  72. int include_depth;
  73. int saved_include_depth=0;
  74. struct f file[max_include_depth];
  75. struct f change;
  76. local char alt_web_file_name[max_file_name_length];
  77. boolean input_has_ended;
  78. boolean changing;
  79. boolean web_file_open=false;
  80. boolean print_where=false;/*:23*//*26:*/
  81. #line 295 "w.common"
  82. local boolean saved_changing;
  83. local char*saved_change_limit;/*:26*//*29:*/
  84. #line 348 "w.common"
  85. local char change_buffer[buf_size];
  86. local char*change_limit;/*:29*//*41:*/
  87. #line 532 "w.common"
  88. sixteen_bits section_count;
  89. eight_bits changed_section[(max_sections+7)/8];/*:41*//*49:*/
  90. #line 688 "w.common"
  91. char byte_mem[max_bytes];
  92. char*byte_ptr= &byte_mem[0];
  93. name_info name_dir[max_names];
  94. name_pointer name_ptr= &name_dir[0];/*:49*//*53:*/
  95. #line 747 "w.common"
  96. struct empty{char comforter;};/*:53*//*55:*/
  97. #line 770 "w.common"
  98. name_pointer hash[hash_size];/*:55*//*62:*/
  99. #line 860 "w.common"
  100. name_pointer root=NULL;/*:62*//*69:*/
  101. #line 1004 "w.common"
  102. char mod_text[longest_name+1];
  103. char*id_first;
  104. char*id_loc;/*:69*//*75:*/
  105. #line 1098 "w.common"
  106. int history=spotless;/*:75*//*82:*/
  107. #line 1198 "w.common"
  108. int argc;
  109. char* *argv;
  110. boolean flags[UCHAR_MAX+1];
  111. char C_file_name[max_file_name_length];
  112. local char tex_file_name[max_file_name_length];
  113. local boolean change_file_explicit;/*:82*//*93:*/
  114. #line 1322 "w.common"
  115. FILE*C_file;
  116. FILE*tex_file;/*:93*//*97:*/
  117. #line 1359 "w.common"
  118. local boolean term_line_empty=true;/*:97*//*63:*/
  119. #line 868 "w.common"
  120. local enum mod_comparison
  121. {less,
  122.  
  123. equal,
  124. greater,
  125.  
  126. prefix,
  127. extension
  128. }web_strcmp(char*,char*,char*,char*);
  129. local name_pointer make_mod_node(char*,int);/*:63*//*85:*/
  130. #line 1226 "w.common"
  131. local void scan_args(void);/*:85*//*:12*//*18:*/
  132. #line 112 "w.common"
  133. void common_init(void)
  134. {/*50:*/
  135. #line 696 "w.common"
  136. name_begin(name_ptr)=byte_ptr;/*:50*//*56:*/
  137. #line 778 "w.common"
  138. {int i=hash_size;do hash[--i]=NULL;while(i>0);}/*:56*//*71:*/
  139. #line 1033 "w.common"
  140. mod_text[0]=' ';/*:71*//*83:*/
  141. #line 1209 "w.common"
  142. show_banner=show_happiness=show_progress=true;/*:83*/
  143. #line 115 "w.common"
  144. scan_args();
  145. }/*:18*//*21:*/
  146. #line 157 "w.common"
  147. local boolean input_ln(FILE*f)
  148.  
  149. {register int c;
  150. register char*k=limit=buffer;
  151. while((c=getc(f))!='\n'&&c!=EOF)
  152. if(k<=buffer_end){*k++=c;if(!isspace(c))limit=k;}
  153. if(k>buffer_end)
  154. {loc=buffer;
  155. err_print("! Input line too long");
  156. if(limit>buffer_end)limit=buffer_end;
  157. }
  158. return c!=EOF||limit>buffer;
  159. }/*:21*//*24:*/
  160. #line 245 "w.common"
  161. void push_input_file(boolean at_h)
  162. {char delim=' ';
  163. while(loc<limit&&(isspace(*loc)))++loc;
  164. if(*loc!='<')
  165. {if(*loc=='"')delim= *loc++;
  166. if(loc>=limit)err_print("! Include file name not given");
  167.  
  168. else if(++include_depth>=max_include_depth)
  169. {--include_depth;
  170. err_print("! Too many nested includes");
  171. }
  172. else
  173. {/*25:*/
  174. #line 37 "ch.common"
  175. {
  176. char*k=cur_file_name,*dot_pos,*colon_pos;
  177. while(!(*loc==delim||(delim==' '?isspace(*loc):loc==limit)))
  178. if(k== &cur_file_name[max_file_name_length-1])
  179. {
  180. err_print("! Include file name truncated");break;}
  181.  
  182. else
  183. *k++= *loc++;
  184. *k='\0';
  185.  
  186.  
  187.  
  188.  
  189. dot_pos=strrchr(cur_file_name,'.');
  190. colon_pos=strrchr(cur_file_name,':');
  191. if((dot_pos[2]=='\0')||(dot_pos[3]=='\0')){
  192. char temp[max_file_name_length];
  193. *dot_pos='\0';
  194. if(colon_pos==NULL)
  195. sprintf(temp,"%s.%s",dot_pos+1,cur_file_name);
  196. else{
  197. *colon_pos='\0';
  198. sprintf(temp,"%s:%s.%s",cur_file_name,dot_pos+1,
  199. colon_pos+1);
  200. }
  201. strcpy(cur_file_name,temp);
  202. }
  203. }/*:25*/
  204. #line 8 "ch.common"
  205. if((cur_file=fopen(cur_file_name,"r"))==NULL)
  206. {char temp[max_file_name_length+3];
  207.  
  208.  
  209.  
  210. if(strchr(cur_file_name,':')==NULL){
  211. sprintf(temp,"C:%s",cur_file_name);
  212. cur_file=fopen(temp,"r");
  213. }
  214. if(cur_file==NULL){
  215. --include_depth;
  216. err_print("! Cannot open include file");
  217.  
  218. }
  219. }
  220. #line 263 "w.common"
  221. else
  222. {cur_line=0;print_where=true;/*27:*/
  223. #line 299 "w.common"
  224. if(at_h)
  225. {saved_changing=changing;changing=false;
  226. saved_change_limit=change_limit;change_limit=change_buffer;
  227. saved_include_depth=include_depth;
  228. }/*:27*/
  229. #line 266 "w.common"
  230. }
  231. }
  232. }
  233. loc= &limit[1];
  234. }/*:24*//*28:*/
  235. #line 315 "w.common"
  236. local boolean get_web_line(void)
  237. {do
  238. if(++cur_line,input_ln(cur_file))
  239. {loc=buffer;*limit=' ';
  240. if(*buffer!='@'||tolower(buffer[1])!='i')return true;
  241. loc+=2;print_where=true;push_input_file(false);
  242. }
  243. else if(include_depth==0)
  244. {input_has_ended=true;web_file_open=false;return false;}
  245. else
  246. {fclose(cur_file);print_where=true;
  247. if(include_depth-- ==saved_include_depth)
  248. {changing=saved_changing;change_limit=saved_change_limit;
  249. saved_include_depth=0;
  250. if(changing)return false;
  251. }
  252. }
  253. while(true);
  254. }/*:28*//*30:*/
  255. #line 361 "w.common"
  256. local void prime_the_change_buffer(void)
  257. {change_limit=change_buffer;/*31:*/
  258. #line 377 "w.common"
  259. while(true)
  260. {if(++change_line,!input_ln(change_file))return;
  261. if(limit<buffer+2||buffer[0]!='@')continue;
  262. buffer[1]=tolower(buffer[1]);/*32:*/
  263. #line 394 "w.common"
  264. {if(buffer[1]=='i')
  265. {loc=buffer+2;err_print("! No includes allowed in change file");}
  266. }/*:32*/
  267. #line 382 "w.common"
  268. if(buffer[1]=='x')break;
  269. if(buffer[1]=='y'||buffer[1]=='z')
  270. {loc=buffer+2;
  271. err_print("! Where is the matching @x?");
  272. }
  273. }/*:31*//*33:*/
  274. #line 405 "w.common"
  275. do
  276. if(++change_line,!input_ln(change_file))
  277. {err_print("! Change file ended after @x");return;}
  278. while(limit==buffer);/*:33*//*34:*/
  279. #line 411 "w.common"
  280. {change_limit=change_buffer-buffer+limit;
  281. strncpy(change_buffer,buffer,limit-buffer);
  282. }/*:34*/
  283. #line 367 "w.common"
  284. }/*:30*//*35:*/
  285. #line 429 "w.common"
  286. local void check_change(void)
  287.  
  288. {int n=0;
  289. if(!lines_match)return;
  290. print_where=true;
  291. do
  292. {changing=true;
  293. if(++change_line,!input_ln(change_file))
  294. {err_print("! Change file ended before @y");
  295.  
  296. change_limit=change_buffer;changing=false;
  297. return;
  298. }
  299. if(limit>buffer+1&&buffer[0]=='@')
  300. {buffer[1]=tolower(buffer[1]);/*32:*/
  301. #line 394 "w.common"
  302. {if(buffer[1]=='i')
  303. {loc=buffer+2;err_print("! No includes allowed in change file");}
  304. }/*:32*//*36:*/
  305. #line 461 "w.common"
  306. if(buffer[1]=='x'||buffer[1]=='z')
  307. {loc=buffer+2;err_print("! Where is the matching @y?");}
  308.  
  309. else if(buffer[1]=='y')
  310. {if(n>0)
  311. {loc=buffer+2;
  312. print("\n! Hmm... %d of the preceding lines failed to match",n);
  313.  
  314. err_print("");
  315. }
  316. return;
  317. }/*:36*/
  318. #line 447 "w.common"
  319. }/*34:*/
  320. #line 411 "w.common"
  321. {change_limit=change_buffer-buffer+limit;
  322. strncpy(change_buffer,buffer,limit-buffer);
  323. }/*:34*/
  324. #line 449 "w.common"
  325. changing=false;
  326. if(!get_web_line())
  327. {err_print("! CWEB file ended during a change");return;}
  328.  
  329. if(!lines_match)++n;
  330. }while(true);
  331. }/*:35*//*38:*/
  332. #line 487 "w.common"
  333. void reset_input(void)
  334. {boolean no_change_file=false;/*39:*/
  335. #line 504 "w.common"
  336. if((web_file=fopen(web_file_name,"r"))==NULL)
  337. {if((web_file=fopen(alt_web_file_name,"r"))==NULL)
  338. fatal("! Cannot open \"%s\" as input file",web_file_name);
  339.  
  340. strcpy(web_file_name,alt_web_file_name);
  341. }
  342. web_file_open=true;
  343. if((change_file=fopen(change_file_name,"r"))==NULL)
  344. {if(change_file_explicit)
  345. fatal("! Cannot open \"%s\" as change file",change_file_name);
  346.  
  347. no_change_file=true;
  348. }/*:39*/
  349. #line 490 "w.common"
  350. cur_line=0;change_line=0;include_depth=0;
  351. if(no_change_file)change_limit=change_buffer;
  352.  
  353. else{changing=true;prime_the_change_buffer();}
  354. changing=false;
  355. limit=buffer;loc=buffer+1;buffer[0]=' ';input_has_ended=false;
  356. }/*:38*//*42:*/
  357. #line 549 "w.common"
  358. boolean get_line(void)
  359. {
  360. restart:
  361. if(changing)mark_section_as_changed(section_count);
  362. else/*43:*/
  363. #line 573 "w.common"
  364. {if(get_web_line()
  365. &&change_limit>change_buffer
  366. &&limit-buffer==change_limit-change_buffer
  367. &&buffer[0]==change_buffer[0]
  368. )check_change();
  369. }/*:43*/
  370. #line 554 "w.common"
  371. if(changing)
  372. {/*44:*/
  373. #line 588 "w.common"
  374. {if(++change_line,!input_ln(change_file))
  375. {err_print("! Change file ended without @z");
  376. buffer[0]='@';buffer[1]='z';limit=buffer+2;
  377. }
  378. loc=buffer;*limit=' ';
  379. if(limit>buffer+1&&buffer[0]=='@')
  380. {buffer[1]=tolower(buffer[1]);/*32:*/
  381. #line 394 "w.common"
  382. {if(buffer[1]=='i')
  383. {loc=buffer+2;err_print("! No includes allowed in change file");}
  384. }/*:32*/
  385. #line 595 "w.common"
  386. if(buffer[1]=='x'||buffer[1]=='y')
  387. {loc=buffer+2;err_print("! Where is the matching @z?");}
  388.  
  389. else if(buffer[1]=='z')
  390. {prime_the_change_buffer();changing=false;print_where=true;}
  391. }
  392. }/*:44*/
  393. #line 556 "w.common"
  394. if(!changing)
  395. {mark_section_as_changed(section_count);goto restart;}
  396. }
  397. return!input_has_ended;
  398. }/*:42*//*46:*/
  399. #line 620 "w.common"
  400. void check_complete(void)
  401. {if(change_limit!=change_buffer)
  402. {int l=(int)(change_limit-change_buffer);
  403. strncpy(buffer,change_buffer,l);limit= &buffer[l];
  404. changing=true;loc=buffer;web_file_open=true;
  405.  
  406. err_print("! Change file entry did not match");
  407.  
  408. }
  409. }/*:46*//*57:*/
  410. #line 791 "w.common"
  411. name_pointer id_lookup(char*first,char*last,int ilk)
  412.  
  413. {int h;
  414. int l;
  415.  
  416. if(last==NULL)last=first+(l=(int)strlen(first));
  417. else l=(int)(last-first);/*58:*/
  418. #line 814 "w.common"
  419. {char*p=first;
  420. h= *p;while(++p<last)h=((h<<1)+ *p)%hash_size;
  421. }/*:58*//*59:*/
  422. #line 824 "w.common"
  423. {name_pointer p=hash[h];
  424. while(p!=NULL&&!names_match(p,first,l,ilk))p=p->link;
  425. if(p==NULL)
  426. {p=name_ptr;/*60:*/
  427. #line 841 "w.common"
  428. {if(byte_ptr+l>byte_mem_end)overflow("byte memory");
  429. if(++name_ptr>=name_dir_end)overflow("name");
  430. strncpy(byte_ptr,first,l);name_bt)
  431. fchar r*p53:ir[max_fige_fnerchange_buffer(e mcta
  432. {l1,lowed t_g_f13stdoffer;equ ff;purishashlocal v8:*&&bulocal v8y'):*while;
  433. bo?3 ;
  434. boo;chauffer+2;[max_filofht;/*:2ed_cposfile?"r=ruannopre'@*:9 "w.common"
  435. }xplbylimit=rgs,"rhar*ce,<ster;);
  436. ele;/*
  437. in;c mlimit<buffer[0]=xpln
  438. if(ch[max_bboolean isspn_r=sge_fipeht/*3t_l=true;
  439. lonclud;píimit==bor_ss=buffer_eª n_file(c!=*:2'psage
  440. t=cer!inpu*:34}; spdel““““;/*:2e;/*:2e;
  441. #define sh{in{in{=true=true=={c{c{{r hile=file=fi
  442. #define sh
  443. #define sh
  444. //*7r bfer);fer);ff(chan %sE*_po_po_local d iLLsh_sh_ss']
  445. #deseseslimit=climit=cllyte_pcur_filecur_filecc()oryoryostrch)%)%)savenclncln m m 
  446. &
  447. &
  448. r*r*rryte_meyte_meye_lime_limeearmarmaile_nang,ctale le ls",s",ss*:plplpemp)emp)eeelse
  449. {!:1namenamename)k=8*//[max_filot l#line #line #change_ludiudiuct ect ecy'y'yyalse;alse;aadefinenclnnclnnnflags[flags[ff,l);,l);,change_change_cegse;
  450. se;
  451. ss boz"96change_buffer)change_buffer)c2662662limit=rlimit=rl(char*//*85*//*85**s 1s 1sempempeanginanginaaC:C:CCr fr frr
  452. #line 49
  453. #line 49
  454. void)void)v+=+=+first, trp<[max_bb5*/5*/5returncw,l);,=truhow````t_g_']
  455. #dfile(;}/À(*l_lim-- fer)fer)f0 "w.ŒŒŒ#l#l#file_nafile_naffincludestr;ÐÐÐgi
  456. {lgisemp,"emp,"ee' ';' ';''#line 6lowed tgegegged_cfafafclu¶¶¶39439433
  457. iffer+2ffer+2ffile_efile_efless)))p_lim-_lim-_<=b_di_di__#define#defin#defin##38:38:33e me met_ººººon"
  458. lon"
  459. lochanging)ory=alse;
  460. else
  461. else
  462. +(l=(il=(illif(buffpusiciiciire=trre=trrs_mas_massectio')drn:*/
  463. #li:*/
  464. #li:;}
  465. };}
  466. };"w.com41141144
  467. in;
  468. in;
  469. f(kf(kffincludname_b“void)
  470. {void)
  471. {vv");}");}"yte_pyte_pyt)t)t4
  472. 4
  473. 4");
  474. }
  475. (strmaxchanchancnamesnamesnn=false=false==eeeee29z';z';zz");}
  476. ");}
  477. "_name,);
  478.  
  479. s}
  480. l}
  481. l}5:*5:*53*co95959nn! I
  482. inhas_)==N(k)
  483. {-return!return!rstrcpfile
  484. #line 5
  485. #line 5
  486. 33:file)void chvoid chvv
  487. {eb_(pstrnstrnsshou12it)return;
  488. 1]==_hainput(
  489. #define byy
  490. y
  491. yyte_pyp==iciciªfer[fer[fname_po_mess_mess_['hst;=buf=buf==r_filr_filrrwhile(while(wwJoryoryood_:*   ththtur_fiur_fiu++cits )
  492. {-r;}
  493.  
  494.  file e file e ;wh;wh;dir[dir[ddinabuffer+2;4054054ytesytesyyfer);_file_n315al(oc=boc=bo:*/
  495. #:*/
  496. #:299E*_get_get_gcommon"
  497. >0emNUaveaveaush1]==ritritrfshowshowss enncs",c=buffe=buffe==;
  498. bo;
  499. bo;;#i++i_se_se__inteinteiicommon"common"c'bC:C:C9:*
  500. {lhanging)hanging)h,"
  501. if(ch[717177m 5:*5C:C:CC("! W("! W(;/*;/*;; u,
  502. g,
  503. g,'<y')y')yest_est_e-c-c-->bname(```uffer[0/
  504. #lin 7]
  505. ]
  506. ]#define#define##line(vname_ptlus_lus_ll_inin")n")n)
  507. i)
  508. i))222vavav(trutrut moan)local d1]==m|m|m%s",%s",%%inter equb_le/e/echan"! N;n;n;\"w.commdate2;ere 12=chane(*r*,harmn;
  509. fil361‘÷2:*/
  510. prinprinpdeddeddrsrsrwièanging=tnpunpunline63ur_febe 12buffer_
  511. err
  512. err
  513. an)cmem[b_lmmon"
  514. {sh*k+*k+*puŒclude fspaer,er,ee;
  515. }/*_plu_plu__)(l)(l)No uffeuffeuge_[0]change_lineg.uffer[0/ritritrurn[1]16=buffe=onfinterinteri8:*/34:34:33−ommon"
  516.  
  517. #define eNo issme ';i';i''oc=booc=booname_ncludencludename,a29z29z22=st=st==' ';*loc[me=tre_na/*:5/*:5/
  518. f
  519. c
  520. c
  521. ,"r,"r,,9*ar_prSochange_luchange_luc((((((conconcc554void)void)vv_maine m/
  522. #line 59fope\imit='imit='ie=0e=0ee63d_sss_pr8*8*8u filelee <e <eeuffer[1]ine 10emNemNeetrtrt>bu4
  523. change_c_fi is t⇦ompompopy(w
  524. v
  525. v
  526. */ŷ=tr{i{i{{flags[fs_mass_masss*/*/
  527. #lineclucluc‰n")//*7b.n!armarmaa' ';
  528. ' ';
  529. '22*/
  530. #line 2*/
  531. #line 2*s])s])sÜf(bufile"local
  532. #line 44
  533. #line 44
  534. eakeakee n1 "w38:38:33;
  535. }/*_;
  536. }/*_;;
  537. {p=#i#i##e(cs;ean 7 "c#define na29929922efine nclud42*õ_end)62int("!k_sk_sk>00;
  538. 0;
  539. 0kuory=ac!=trtrt4054oc=boo,inp
  540. #line 49py(bpen(t))l))l)inesinesidel“intf(f))l)pt1]==_hangibuffebuffeb_prinen gre==NUL==NUL==,p,p,bbbbn!#de#de##/
  541. #line 59iciiciiiaxaxaa fl fl  ingingii2:*/
  542. pbuffer+2030300m|{/34:0000±±±w_lz')
  543. z')
  544. z}/returreturr/*3=to=to=)
  545. {loc)
  546. {loc))ncs90 37]ot=asd_td_tdmi W W includeweb_file_web_file_wg)g)guffer[1]uffer[1]ues 
  547. }
  548. ittbuffer[0]=3*/
  549. 3*/
  550. 33es 
  551. int_poze oid roid ro=bo=bo=anging=t/change_buffestrlstrlssTTTT
  552. v
  553. f12121+'+'+':122:mit;_mess_angeangea*//*9*//*9*|||NUL6:*e e efferif(buif(buiiit(it(i}
  554. }
  555. }ame_line le v+ch+ch++ if( if(  "w.spa+3pl_hastdouffer;lext[ext[e]);limit;/aceaceayyboolean gboolean gb·46464
  556. #define er
  557. #define er
  558. 0Line 10eine 10eiioid ro*//*34#def&&bu&&bu&
  559. v
  560.  
  561. v
  562.  
  563. C_fiC_fiC¿°°°t ht ht&&&&web_fi_mess__mess__return;2;
  564. }Inreturncler fr file:*/
  565. #line 3:*/
  566. #line 3:"
  567. l"
  568. l""h(h(h7*/re=trr*//*69buffer_chchcc..l=(iununuuvoid)'tereereeeot ot o lie(e(e29z229z22?"r?"r??Ü;pdurl l l){uffer[0]uffer[0]uu:*/
  569. #line 2");
  570. burn;}urn;}uint c/\ l++ci(++ci(+_plu_bo62i62i67*/r7*/r7d d77);/^^^#53:t hm[m[mm.commohahah xt)
  571. {-r;\n'777763n"
  572. }" ended ended os+b'ÄÄÄÄ_messne (þ='"ommon_']
  573. urn[ [max_(te(te(41)))pth pth pinainaileey?y?y2452452hange Wncmncmnereee;
  574. l5file_ef*/
  575. #line 2,char*return;2return;2rrolo the the /
  576. #line 3/
  577. #line 3/ar*,{chaid_maral bal baano_decpy[36e+e+ed iL  p==ip==ipc;ic;iccitchange_linchange_lincc! I=true;pi}
  578. c33egL; "w.common"
  579. if61616Ä,tel(88'\0''\0''Æ I
  580. #define c
  581. #define c
  582. ! Carmin.common.common..ptrptrpe=te=teeion(py(py(p{l();}sectlt;/*;en en e0];100tdotdot:*/
  583. #line 39_end)6linee "e 12be 12be33e;/*2hashluffer[1]=uffer[1]=u,',',nge_del“ilchange_buffechange_buffecbuf_e (bÇ*1bytbytbs tIncbuffer;buffer;bst;=6*/
  584. efine verr <36178ranamennamenn93if(++n 5 5 yn;
  585. imitimiti@y}/'\(cur_220by"
  586. {igrEO*//*3*//*3*f(btrue;lh>\et_ooloolo_di_]=='>0e_>0e_>>8 "w.cange_l33e
  587. er€€€buffer+20€eelse;:*/
  588. #line 6ëëë?local
  589. local
  590. lmplbuffer;
  591. hereherehpy(py(pangangaa 42*/
  592. #l1:*/____utchr(hr(hbuffer_*/
  593. #line 2nr*kr*krnnULULU56t)
  594. t)
  595. tt(buf;
  596. }/*:4es 
  597. ies 
  598. ie("\("\(3*ng,ng,nn:1:8mleuffer[1]=u
  599. b
  600. b
  601. =2le[le[lme,me,m000000g ine&&_end7 "c7 "c77change_lichange_lic/
  602. #line clommon"
  603.  
  604. mon"
  605. mon"
  606. m[0[0[*/
  607. #line 213ofh&&l;/*2h;
  608. }
  609. w;
  610. }
  611. w;;t);gbyten(cn(cnn=false=30,
  612. c end end file %sWhe,file)file)fr_er_er_ln0];1ŷr"))"w.com"w.com"
  613. #li
  614. c0;
  615. i0;
  616. i0l=(ihingtrue;
  617. ]]]4 rint("! =false=rr_prrr_prrrThh[¾¾¾¾size0 "w.buffer[0change_cchange_cc[0f "
  618. i4 "w.comer