Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.09 KB | None | 0 0
  1. /*
  2. MAIN FILE FOR THIS PROJECT
  3. */
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <stddef.h>
  7. #include "list.c"
  8.  
  9.  
  10. typedef int bool;
  11. #define true 1
  12. #define false 0
  13.  
  14. const int STRING_SIZE = 25; //max size of the name of the string
  15. const int NUM_TABLES = 8; //number of tables to store
  16.  
  17. //structure to hold a Drink object
  18. struct Drink{
  19. char name[25]; //name of the drink
  20. float price; //price of 1 of said Drink - currently int for testing purposes but will change to float/double at some point
  21. };
  22.  
  23. //structure to hold a Table object
  24. struct Table{
  25. int tableNumber; //table number
  26. struct Drink theOrder[25]; //list of drinks ordered by table
  27. };
  28.  
  29. struct Table tables[8]; //stores each table object - ordered 1 to NUM_TABLES
  30.  
  31. int addToOrder(int p);
  32.  
  33. //function declarations
  34. void loadDrinks(int i); //load the drinks into an array
  35. void printList(int); //print the current list of drinks
  36. void writeDrinks(int); // this is a method that is to add drinks
  37.  
  38. struct Drink drinkList[30]; //array to store drinks
  39.  
  40. void initList(); //initialise the list
  41. void initTables();
  42. void typeMenu(int); //print the menu for which type of drink to view
  43. void viewOrders(); //print the menu for which type of drink to view
  44. void processOrder(); //print the orders
  45.  
  46. //main class for the project
  47. int main(){
  48.  
  49. //initialise the table objects
  50. initTables();
  51.  
  52. //set what the list/queue will hold
  53. set_list(sizeof(struct Table));
  54.  
  55. //constantly loop
  56. for(;;){
  57.  
  58. //print menu
  59. printf("\n------------------------------------------");
  60. printf("\n----------------MAIN MENU-----------------");
  61. printf("\n------------------------------------------");
  62. printf("\n1.. View drink list/Make an Order");
  63. printf("\n2.. View current Orders - *BARTENDER ONLY*");
  64. printf("\n3.. Add a drink to the menu");
  65. printf("\n------------------------------------------");
  66. printf("\n0.. Quit");
  67. printf("\n------------------------------------------");
  68. printf("\nYOUR SELECTION: ");
  69.  
  70. //get option
  71. int i;
  72. scanf("%i", &i);
  73. getchar();
  74. printf("\n------------------------------------------\n");
  75.  
  76. //perform the necessary actions based on the users input
  77. if(i == 0){
  78. break; //exit
  79.  
  80. }else if(i == 1){
  81. printf("TABLE NUMBER: ");
  82.  
  83. //get option
  84. int p;
  85. scanf("%i", &p);
  86. typeMenu(p); //print the new menu
  87.  
  88. }else if (i == 2){
  89. char pass;
  90.  
  91. //constantly loop
  92. for(;;){
  93. //get the password
  94. printf("Enter the password to continue: ");
  95. scanf("%s", &pass);
  96.  
  97. //if the user input is 0, quit
  98. if (strcmp("0",&pass) == 0){
  99. break;
  100.  
  101. //if they input the correct password, success!!! - start the new menu for viewing orders
  102. }else if (strcmp("9672",&pass) == 0){
  103. printf("SUCCESS!");
  104. viewOrders();
  105. break;
  106. }
  107.  
  108. }
  109. }
  110. else if( i == 3){
  111. int v = prompt();
  112. writeDrinks(v);
  113. }
  114. }
  115. return 0;
  116. }
  117.  
  118. //menu for the type of drink they wish to view
  119. void typeMenu(int p){
  120. for(;;){
  121.  
  122. //re-initialise the list of drinks - i.e. make the list blank
  123. initList();
  124.  
  125. //print menu
  126. printf("\n------------------------------------------");
  127. printf("\n----------------DRINK MENU----------------");
  128. printf("\n------------------------------------------");
  129. printf("\n1.. Alcoholic drinks");
  130. printf("\n2.. Soft drinks");
  131. printf("\n3.. Hot drinks");
  132. printf("\n------------------------------------------");
  133. printf("\n0.. Return to Menu");
  134. printf("\n------------------------------------------");
  135. printf("\nYOUR SELECTION: ");
  136.  
  137. //get option
  138. int i;
  139. scanf("%i", &i);
  140.  
  141. printf("\n------------------------------------------");
  142.  
  143. //quit if necessary
  144. if(i == 0){
  145. break;
  146. }
  147.  
  148. //load the drinks
  149. loadDrinks(i);
  150.  
  151. //print the list
  152. printList(p);
  153.  
  154. }
  155. }
  156.  
  157. /*
  158. OVERVIEW: load the drinks from a text file to an array
  159. PARAMETERS: int type - user option relating to type of drink to load
  160. */
  161. void loadDrinks(int type){
  162.  
  163. //the file reader
  164. FILE *ifp;
  165.  
  166. //mode - what to do to file - in this case, "r" for read
  167. char *mode = "r";
  168.  
  169. //based on 'type', open the appropriate file
  170. if(type == 1){
  171. ifp = fopen("alc.txt", mode);
  172. }else if(type == 2){
  173. ifp = fopen("soft.txt", mode);
  174. }else{
  175. ifp = fopen("hot.txt", mode);
  176. }
  177.  
  178.  
  179. //start at pos 0 - i.e. array element 0
  180. int i = 0;
  181.  
  182. //if the file cannot be opened, display an error message
  183. if (ifp == NULL) {
  184. fprintf(stderr, "Can't open input file\n");
  185.  
  186. //otherwise,
  187. }else{
  188. char name[20]; //One extra for null char.
  189. float price;
  190.  
  191. //scan for a string and a double - reading into name and price
  192. while (fscanf(ifp, " %s %f", name, &price) != EOF) {
  193.  
  194. int currEl = 0;
  195.  
  196. //reset the spaces,
  197. for(currEl = 0; currEl < strlen(name); currEl++){
  198. if(name[currEl] == '_'){
  199. name[currEl] = ' ';
  200. }
  201. }
  202.  
  203. //declare a new Drink object
  204. struct Drink newDrink;
  205.  
  206. //if the element is not blank...
  207. if(name != ""){
  208.  
  209. //set the name of the Drink object
  210. memcpy(newDrink.name, name, STRING_SIZE-1);
  211. newDrink.name[STRING_SIZE-1] = '\0'; //null char at end - escape char
  212.  
  213. //set the proce of the Drink object
  214. newDrink.price = price;
  215.  
  216. //set current array item to be equal to the Drink object
  217. drinkList[i] = newDrink;
  218.  
  219. //increment counter
  220. i++;
  221. }
  222. }
  223.  
  224. }
  225.  
  226. //close the file
  227. fclose(ifp);
  228.  
  229. };
  230.  
  231. /*
  232. OVERVIEW: print the list of drinks
  233. PARAMETERS: none
  234. */
  235. void printList(int p){
  236.  
  237. //start at pos 0, i.e. array element 0
  238. int i = 0;
  239.  
  240. printf("\n----------------DRINK LIST----------------\n"); //title
  241.  
  242. //loop from 0 to 30 - i.e. through the list
  243. for (i; i < 30; i++){
  244.  
  245. if(strlen(drinkList[i].name)!=0){
  246. //print the current element
  247. printf("%i.... £%.2f ---- %s\n",(i+1), drinkList[i].price, drinkList[i].name); //%type is a placeholder, format in way required
  248. //then separate values to go into placeholders using commas
  249. }
  250. else {
  251. break;
  252. }
  253. }
  254. printf("0. To exit\n");
  255. printf("------------------------------------------\n");
  256. printf("YOUR SELECTION: ");
  257.  
  258. //get option
  259. int drinkNum;
  260. for (;;){
  261.  
  262. //get option from user
  263. if ((scanf("%i", &drinkNum) && drinkNum <= i)){
  264. break;
  265. }
  266.  
  267. //if out of range, tell user
  268. else
  269. printf("Bad Selection\n");
  270. printf("YOUR SELECTION: ");
  271. }
  272.  
  273. //if the user chooses to quit, return out of function
  274. if (drinkNum == 0){
  275. return;
  276. }
  277.  
  278. printf("\nQUANTITY: ");
  279. //get option
  280. int q;
  281. scanf("%i", &q);
  282. printf("\n------------------------------------------");
  283.  
  284. //loop from 0 to quantity, adding to the order each time
  285. int loop = 0;
  286. for (loop; loop < q && loop < STRING_SIZE ; loop++){
  287. int posToAdd = addToOrder(p);
  288. tables[p].theOrder[posToAdd] = drinkList[drinkNum-1];
  289. }
  290.  
  291. //check if the table already has an order waiting
  292. if(list_search(p, offsetof(struct Table, tableNumber) == 1))
  293. {
  294. printf("\nAdded to existing order");
  295.  
  296. }
  297. //if not, add the table to the queue
  298. else{
  299. list_add(&tables[p-1]);
  300. }
  301.  
  302. };
  303.  
  304. //initialise the list = i.e. reset all elements
  305. void initList(){
  306. int i = 0;
  307. for(i; i < 30; i++){
  308. strcpy(drinkList[i].name, "");
  309. drinkList[i].price = 0;
  310. }
  311. }
  312.  
  313. int prompt()
  314. {
  315. //print menu
  316. printf("\n------------------------------------------");
  317. printf("\n--WHICH TYPE OF DRINK DO YOU WANT TO ADD--");
  318. printf("\n------------------------------------------");
  319. printf("\n1.. Alcoholic drinks");
  320. printf("\n2.. Soft drinks");
  321. printf("\n3.. Hot drinks");
  322. printf("\n------------------------------------------");
  323. printf("\n0.. Return to Menu");
  324. printf("\n------------------------------------------");
  325. printf("\nYOUR SELECTION: ");
  326.  
  327. //get option
  328. int i;
  329. scanf("%i", &i);
  330. getchar();
  331. printf("\n------------------------------------------");
  332.  
  333. return i;
  334. }
  335.  
  336. void viewOrders(){
  337.  
  338. for(;;){
  339.  
  340. //print menu
  341. printf("\n------------------------------------------");
  342. printf("\n----------------ORDER MENU----------------");
  343. printf("\n------------------------------------------");
  344.  
  345. //print all table numbers that are waiting
  346. list_print(offsetof(struct Table, tableNumber));
  347.  
  348. processOrder();
  349.  
  350. printf("\n1... Process order\n");
  351. printf("0... Return to Menu\n");
  352. printf("\n------------------------------------------\n");
  353. printf("YOUR SELECTION: ");
  354.  
  355. //get option
  356. int p;
  357. scanf("%i", &p);
  358.  
  359. printf("\n------------------------------------------");
  360.  
  361. //quit if necessary
  362. if(p == 0){
  363. break;
  364. }
  365. //remove the top member of the queue
  366. if (p == 1){
  367. int toPop = peak(offsetof(struct Table, tableNumber));
  368.  
  369. int iDelete;
  370.  
  371. //clear the top one
  372. for (iDelete = 0; iDelete < STRING_SIZE; iDelete++){
  373. memcpy(tables[toPop].theOrder[iDelete].name, "", STRING_SIZE - 1);
  374. tables[toPop].theOrder[iDelete].name[STRING_SIZE - 1] = '\0'; //null char at end - escape char
  375. tables[toPop].theOrder[iDelete].price = 0;
  376. }
  377. list_pop();
  378. }
  379. }
  380.  
  381. }
  382.  
  383. //print the order
  384. void processOrder(){
  385.  
  386. int i, j;
  387. bool done = 0;
  388. float totalPrice = 0;
  389.  
  390. //loop through all the tables
  391. for (i = 0; i < NUM_TABLES; i ++){
  392.  
  393. totalPrice = 0;
  394. done = 0;
  395.  
  396. //if the table is not empty, print the order for that table
  397. if(strcmp("", tables[i].theOrder[0].name)!=0){
  398. printf("\n-----------------");
  399. printf("\n-----TABLE %i-----", i);
  400. printf("\n-----------------");
  401.  
  402. //printing the order
  403. for (j = 0; j < STRING_SIZE ; j++){
  404. if(strcmp("", tables[i].theOrder[j].name)!=0){
  405. printf("\n%s --- £%.2f",tables[i].theOrder[j].name, tables[i].theOrder[j].price); //print
  406. totalPrice += tables[i].theOrder[j].price; //add the price to the total price
  407. done = 1;
  408. }
  409. }
  410. printf("\nTOTAL PRICE: £%.2f\n", totalPrice);
  411. printf("-----------------\n");
  412. }
  413. }
  414. }
  415.  
  416. //work out where to add the new element
  417. int addToOrder(int p){
  418. int pos = 0;
  419.  
  420. while (strcmp("",tables[p].theOrder[pos].name) != 0)
  421. {
  422. pos++;
  423. }
  424. return pos;
  425. }
  426.  
  427.  
  428. //initialise the tables - make them blank other than a suitable table number
  429. void initTables(){
  430. int i = 0;
  431. for(i; i < NUM_TABLES; i++){
  432. tables[i].tableNumber = (i+1);
  433. }
  434. }
  435.  
  436. //write new drinks to the file list
  437. void writeDrinks(int type)
  438. {
  439. //the file reader
  440. FILE *ifp;
  441.  
  442. //mode - what to do to file - in this case, "r" for read
  443. char *mode = "a";
  444.  
  445. //based on 'type', open the appropriate file
  446. if(type == 1){
  447. ifp = fopen("alc.txt", mode);
  448. }else if(type == 2){
  449. ifp = fopen("soft.txt", mode);
  450. }else if(type == 3){
  451. ifp = fopen("hot.txt", mode);
  452. }else{
  453. return;
  454. }
  455.  
  456.  
  457. //get the name of the drink
  458. printf("\nENTER NAME: ");
  459. //printf("\n(put '_' instead of space): ");
  460. char name[40];
  461. //scanf("%s", name);
  462.  
  463. scanf("%[^\n]%*c", name);
  464.  
  465. //get the price of the drink
  466. printf("ENTER PRICE: ");
  467. float p_val;
  468. scanf("%f", &p_val);
  469.  
  470. //replace spaces with '_'
  471. int i ;
  472. for(i = 0; i < strlen(name); ++i){
  473. if(name[i] == ' '){
  474. name[i] = '_';
  475. }
  476. }
  477.  
  478. //print to the file
  479. fprintf(ifp, "%s %f\n", name, p_val);
  480.  
  481. //close file
  482. fclose(ifp);
  483. }
  484.  
  485.  
  486. //since we couldn't include a GUI for the C version, we decided to include an ASCII representation of our Java bartender, Barry! Here he is...
  487.  
  488. /*
  489.  
  490. `.:##'
  491. :@@@@@@@@@@@@@@@@@@@+
  492. .+@@@@##+++++++++++++++++++@@@,
  493. @@@@++++++++++++++++++++++++++++#@@@:`
  494. ;@@#++++++++++++++++++++++++++++++++++++@@@#.
  495. .@@#+++++++++++++++++++++++++++++++++++++++++++#@@'
  496. #@@+++++++++++++++++++++++++++++++++++++++++++++++++#@@+
  497. `@@+++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@,
  498. .@@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@+
  499. ,@@@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@@`
  500. @@#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@#
  501. ;@#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@+
  502. .@@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@#
  503. ;@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@.
  504. `@@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@.
  505. @@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@#
  506. @#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@'
  507. ,@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@
  508. #@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@
  509. @@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@
  510. '@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@,
  511. #@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@
  512. :@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@++++++++++++++++++++++++++++++@@
  513. '@+++++++++++++++++++++++++++++++++++++++#@@+++++++++++++++##.@+++++#@;.`@++++++++@+```.+#++++++++++++++++@
  514. #@++++++++++++++++++++++++++++++++++++++@..@+++++++++++++#'``#+#@@:`````++++##@@'.````````.#+++++++++++++++@
  515. `@++++++++++++++++++++++++++#@@+++++++@:``#+++++#@#++++##.``#@:``````````..`````````````````,+++++++++++++++@#
  516. @@++++++++++++++++++++++++@,+++++++@;````@+++@'`:+##:.```````````````````````````````````````#++++++++++++++@@
  517. `@+++++++++++++++++++++++@.`#+++#@:``````;,``````.`````````````````````````````````````````````@++++++++++++++@
  518. +@++++++++++++++++++++##```:@#.````````````````````````````````````````````````````````````````+++++++++++++++@
  519. @@++++++++++++++++++@;`````````````````````````````````````````````````````````````````````````.++++++++++++++@
  520. @+++++++++++++++++@.````````````````````````````````````````````````````````````````````````````@+++++++++++++@,
  521. @++++++++++++++++'``````````````````````````````````````````````````````````````````````````````:+++++++++++++@:
  522. +@+++++++++++++++:````````````````````````````````````````````````````````````````````````````````#++++++++++++@:
  523. @#++++++++++++++'`````````````````````````````````````````````````````````````````````````````````#++++++++++++@:
  524. @++++++++++++++@```````````````````````````````````````````````````````````````````````````````````#+++++++++++@:
  525. @++++++++++++++#````````````````````````````````````````````````````````+@@@@######@@@+````````````@+++++++++++@,
  526. @++++++++++++++;``````````.+@@@@@@@@@@@@;````````````````````````````:@@+++++++++++++++@#``````````.+++++++++++@
  527. @++++++++++++++,````````#@#++++++++++++++@@`````````````````````````#@+++++#@@@@@@@@@#++#@``````````@+++++++++#@
  528. @+++++++++++++#````````@#+++++####@@@@#++++@```````````````````````;@++@@#,``````````.@@#@@`````````'+++++++++@@
  529. @+++++++++++++@```````@#+#@@#',...`````:@@#+@``````````````````````@#@#`````````````````'@@``````````#++++++++@@
  530. @+++++++++++++'``````'@@@;````````````````:@@'`````````````````````@@````````````````````:@``````````#++++++++@@
  531. ,@+++++++++++++.``````:@+````````...`````````@+``````````````````````````````+@@@@@#:`````````````````@++++++++@@
  532. ,@++++++++++++#``````````````'@@;,`,'@@:``````````````````````````````````;@' ,@@```````````````#++++++++@@
  533. ,@++++++++++++@````````````+@. ;@:```````````````````````````````@; @+``````````````#+++++++@@
  534. ,@++++++++++++#```````````@' @#````````````````````````````.@ #@`````````````@+++++++@:
  535. ,@++++++++++++,``````````@, #@```````````````````````````@ #+````````````;+++++++@.
  536. ,@++++++++++++``````````#+ @:`````````````````````````@: @`````````````#++++++@@@#
  537. ,@+++++++++++@``````````@ `@`````````````````````````@ +#````````````@+++++@#``:@#
  538. ,@++++++++++++`````````;@ . @````````````````````````:@ `@@@ `@````````````;+++++@;````@@
  539. :@@+@#+++++++++#``````````+' @@@@@ @.```````````````````````;+ @@@@@ @`````````````#++++@;`````@:
  540. @@```#@+++++++++@``````````++ @@@@@ @.```````````````````````;@ @@@@+ `@`````````````@++++@,`````#@
  541. @@`````@+++++++++.``````````:@ `@@@ @`````````````````````````@ `, '#`````````````#++++@.`````+@
  542. .@``````+@+++++++@````````````@ .@`````````````````````````@, @.`````````````.++++@.`````.@
  543. @#``````.@+++++++'````````````+# @.``````````````````````````@ +#```````````````@+++@.``````@
  544. @#```````@++++++#``````````````@' @+```````````````````````````:@ ;@````````````````.#++@```````@
  545. @#```````;@+++++#```````````````@@ @'`````````````````````````````.@. @#``````````````````;#+@``````:@
  546. @#````````@++++@`````````````````:@; #@``````````````````````'``````````+@: `#@.`````````````````````;@``````@#
  547. #@````````@@#+@````````````````````.@@@+;#@@#``````.@````````````````@````````````,@@@@@@@'````````````````````````@;`````#@
  548. @.```````:@```````````````````````````````````````.@````````````````@`````````````````````````````````````````````@.````@@
  549. '@```````,@````````````````````````````````````````@.`````````````:@.`````````````````````````````````````````````@```;@#
  550. #@```````@:````````````````````````````````````````@#``````````;@@``````````````````````````````````````````````'@`'@#
  551. @@``````;@`````````````````````````````````````````,@@@@@@@@@@,````````````````````````````````````````````````@@@,
  552. #@,`````@.```````````````````````````````````````````````````````````````````````````````````````````````````;@
  553. @@@@#;@````````````````````````````````````````````````````````````````````````````````````````````````````#@
  554. `,@@```````````````````````````````````````````````````````````````````````````````````````````````````@`
  555. @``````````````````````````````````````````````````````````````````````````````````````````````````'@
  556. @,````````````````````````````````````````````````````````````````@,```````````````````````````````@+
  557. ;@``````````````````````````````,@````````````````````````````````,@.``````````````````````````````@
  558. @.````````````````````````````.@:`````````````````````````````,@@'`@`````````````````````````````'@
  559. '@````````````````````````````@`;@@@'.`````````````````````;@@@: :@@````````````````````````````@:
  560. @#``````````````````````````@@ ,@ `;@@@@#':.````````:@@@'@ '@.:@.@.``````````````````````````+@
  561. @,````````````````````````,@@@@@@+;#@ @`'+@+++@+',+# @ :@@@@;`;,``````````````````````````@;
  562. '@````````````````````````@+,@@@@@@@@@@@@@',:@:`,@;,:@#:#@@@@@@#`````````````````````````````,@
  563. @````````````````````````@.`;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@``````````````````````````````@'
  564. +@```````````````````````:```'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@``````````````````````````````.@
  565. @'```````````````````````````.@@@@@@@@@@@@@@@@@@@@@@@@@@@@'```````````````````````````````@+
  566. .@``````````````````````````````@@@@@@@@@@@@@@@@@@@@@@@@#````````````````````````````````,@
  567. :@```````````````````````````````#@' @+ @: @' @, @@``````````````````````````````````@#
  568. ;@````````````````````````````````:@@# @. @: ,@@#```````````````````````````````````;@
  569. '@.`````````````````````````````````,#@@@##@@@:``````````````````````````````````````@,
  570. .@'````````````````````````````````````````````````````````````````````````````````#@@`
  571. @@#`````````````````````````````````,@@+''@@`````````````````````````````````````+@##@@+
  572. +@@@@'````````````````````````````````````````````````````````````````````````````@@######@@'
  573. '@@###@ @#``````````````````````````````````````````````````````````````````````````@@@#########@@#`
  574. :@@######@ +@.```````````````````````````````````````````````````````````````````````@@ @############@@@.
  575. +@@#########@ `@'````````````````````````````````````````````````````````````````````,@@` @###############@@@.
  576. +@@############@ '@'````````````````````````````````````````````````````````````````,@@ @ @##################@@#
  577. #@@###############@ '@#`````````````````````````````````````````````````````````````@@ ## @#####################@@
  578. :@@##################@` .@@:````````````````````````````````````````````````````````@@` @` .@#######################@#
  579. ;@@####################@# #@;```````````````````````````````````````````````````:@@ .@ .@########################@@#,
  580. +@@#######################@` :@@'`````````````````````````````````````````````'@@; @' +@########################@@`@@,
  581. @@@#########################@@ `#@@,`````````````````````````````````````;@@#` `@ @#########################@` #@@
  582. @@;;@#########################@+@ ;@@+.```````````````````````````.'@@@#` @# @#########################@ ,@@`
  583. ,@@. @@########################@,@' `:#@@+;;````````````.:'@@@@@#;@. .@ ;@#########################@ `@#
  584. @@ @#########################@ @; @;,+@@@@@@@@@@+;..``````@; @. @#########################@: '@:
  585. `@' @#########################@ @, @````````````````````,@: ## @#########################@ @:
  586. `@@` ,@########################@` @` ;@``````````````````:@ .@ ,@########################@# @'
  587. ,@` @########################@+ `@: ,: @+@@```````````````@@@ .@# @` @#########################@ @;
  588. '@` #@########################@ @# @#@@ #@ `@@#:`````````@@` '@ :@@@# +@ `@#########################@ @:
  589. +@` ;@########################@` '@ @###@@ ;@ .#@@@@@@@@` .@:@@###@# ;@ @#########################@, `@.
  590. @@ @########################@# .@; @#####@@ '@ ## @' ;@@#####@# @ @#########################@ `@`
  591. @# @#########################@ @@ @#######@@` @; @' .@@########@# @, #@#########################@ ;@
  592. @' @#########################@: .@, @#########@@# @@@@@@@@@@@':#`'@@##########@# @' @#########################@@ @@
  593. @' @##########################@ @@: @############@@###########@@@@############@# @+ .@#########################@@ @.
  594. @@ @##########################@@ ;@@############@@##############@############@# @: +@#########################@+ +@
  595. :@ @###########################@. @############@@@############@@############@#,@, @##########################@: @`
  596. `@ @@###########################@ @############@@@############@@############@@' `@##########################@, @#
  597. @+ @@###########################@. @############@@@############@@############@# :@##########################@ .@
  598. @# @@############################@ @#############@@############@@############@# @@##########################@ @:
  599. ,@ @#############################@; @#############@@###########@@@############@# `@##########################@# ,@
  600. @: @##############################@` @###########@@@@@@@@@@@@@@@@.@@@##########@# @@##########################@# @#
  601. :@ @@##############################@ @#######@@#: :@``````@` .@@########@# ,@###########################@# ,@
  602. @, ,@##############################@. @###@@+, :@``..``@ .#@@@@##@# @############################@# @.
  603. @ @###############################@ @@@; :@`....`@ :@@+ :@############################@# @'
  604. +@ @###############################@: . :@`....`@ @#############################@# @'
  605. @# @################################@ :@``````@ '@#############################@# @#
  606. @` @#################################@ :@``````@ @##############################@# #@
  607. .@ #@################################@# :@``````@ '@##############################@# #@
  608. +@ :@#################################@. :@```.``@ @###############################@# #@
  609. @# `@##################################@ :@.....`@ @################################@' #@
  610. @: `@###################################@ :@.....`@ '@################################@` #@
  611. @ `@###################################@' :@`..```@ @#################################@ #@
  612. .@ `@####################################@ :@``````@ @##################################@ #@
  613. '@ `@#####################################@ :@``````@ @@##################################@ #@
  614. @, `@######################################@ :@``````@ .@###################################@ +@
  615. @, `@#######################################@ :@`...``@ @####################################@ ;@
  616. @, `@#######################################@@ ,@.....`@ @#####################################@ ;@
  617. @: `@########################################@+ @'....``@ +@#####################################@ ;@
  618. @, `@#########################################@` @.`````'@ `@######################################@ ;@
  619. @, @##########################################@ @``````@: @#######################################@ ;@
  620. @, @##########################################@@ @``````@, #@#######################################@ ;@
  621. @, @###########################################@; @``````@, '@########################################@ ;@
  622. @, @############################################@` @``...`@, ,@#########################################@ '@
  623. @, @#############################################@ @`....`@, `@##########################################@ @:
  624. @, @##############################################@ @`....`@, @###########################################@ ,@
  625. #@ @##############################################@' @``````@, @@###########################################@ @#
  626. .@ @###############################################@. @``````@, #@###########################################@# @
  627. `@ @################################################@. @``````@ .@@############################################@, @#
  628. @: @#################################################@` @``````@ #@##############################################@ @`
  629. @@ @##################################################@` @``..``@ @@###############################################@ '@
  630. .@ @###################################################@ @`....`@ @################################################@# @`
  631. @' @####################################################@ @`....`@ ,@#################################################@+ '@
  632. ,@ :@####################################################@. @``````@'@##################################################@+ @,
  633. @; #@#####################################################@ @``````@@###################################################@+ '@
  634. '@ @#######################################################@ @`````,@####################################################@+ @.
  635. @ @########################################################@;@````:@#####################################################@+ #@
  636. @@ @##########################################################@```+@######################################################@+ @`
  637. .@ @###########################################################@@@########################################################@. +@
  638. ;@ @###########################################################@##########################################################@ @`
  639. @@ @##########################################################@###########################################################@ #@
  640. @: `@#########################################################@############################################################@ .@
  641. :@ +@########################################################@#############################################################@ @:
  642. @# @#########################################################@#############################################################@ +@
  643. `@. @########################################################@##############################################################@ ;@
  644. ;@ `@########################################################@#####+#######################################################@' +@`
  645. #@ .@########################################################@###@@##@@####################################################@' '@
  646. @@ .@########################################################@##@+;;;:@@###################################################@` ,@
  647. @# .@########################################################@##@;;;;;@####################################################@ .@`
  648. @+ .@########################################################@##@@+';@@####################################################@ :@.
  649. @+ .@########################################################@#############################################################@ '@`
  650. @' .@########################################################@#############################################################@ .@'
  651. `@: .@########################################################@#############################################################@ .@`
  652. `@. .@########################################################@#############################################################@ `@,
  653. .@ .@########################################################@#############################################################@ `@.
  654. ;@ ,@########################################################@#############################################################@ `@,
  655. :@` #@########################################################@#############################################################@ :@`
  656. ,@. @########################################################@@##@@@@@######################################################@; '@
  657. `@; @########################################################@##@''''@@#####################################################@' @@
  658. @# @########################################################@##@''''#@#####################################################@+ .@+
  659. @@` :@########################################################@##@+'''@#######################################################@ @@`
  660. `@# @########################################################@###@@@@#######################################################@@@+
  661. '@'@########################################################@##############################################################@@
  662. ;@########################################################@##############################################################@@
  663. @########################################################@##############################################################@@
  664. @########################################################@##############################################################@@
  665. ,@########################################################@##############################################################@@
  666. +@#######################################################@@##############################################################@@
  667. @########################################################@@####@#+#@@####################################################@@
  668. @########################################################@@###@+''''@#####################################################@
  669. @########################################################@@###@#''''@#####################################################@
  670. @#########################################################@####@@@@@@#####################################################@
  671.  
  672. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement