From bb71f4c68a567703ce1dc261a4931272e6531e65 Mon Sep 17 00:00:00 2001 From: mirunici007 Date: Sat, 12 Apr 2025 16:45:39 +0300 Subject: [PATCH 1/2] erori de sintaxa si logica corectate si reguli de clean-coding aplicate --- .vscode/tasks.json | 28 ++++ example1.c | 327 +++++++++++++++++++++++++-------------------- example1.exe | Bin 0 -> 35630 bytes example2.c | 268 +++++++++++++++++++++---------------- example2.exe | Bin 0 -> 35136 bytes 5 files changed, 361 insertions(+), 262 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 example1.exe create mode 100644 example2.exe diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..a6d8aad --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc.exe build active file", + "command": "C:\\MinGW\\bin\\gcc.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/example1.c b/example1.c index 2bfeeed..9ed8598 100644 --- a/example1.c +++ b/example1.c @@ -1,148 +1,179 @@ -/*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*/*/* /*Determinati daca exista sau nu drum direct intre doua restaurante dintr-o retea de tip graf*/ - - #include - #include - - typedef struct Node{ - int data; - struct Node *next;} - /// pentru simplitate, folosim int uri pt a numi restaurantel/locatiile - /// ex: 1 - restaurantul 1 si tot asa - - NODE; - - - typedef struct g - { - int v; - int *vis; - struct Node **alst; - } - GPH; - - typedef struct s{int t;int scap;int *arr;} STK; - - NODE *create_node(int v){ - NODE *nn=malloc(sizeof(NODE)); - nn->data=v; - nn->next=NULL; - return nn;} - - void add_edge(GPH *g,int src,int dest) - { - NODE *nn=create_node(dest); - nn->next=g->alst[src]; - g->alst[src]=nn; - nn=create_node(src); - nn->next=g->alst[dest]; - g->alst[dest]=nn; - } - - GPH *create_g(int v) - { - int i; - GPH *g=malloc(sizeof(GPH)); - g->v=v; - g->alst=malloc(sizeof(NODE *)); - g->vis=malloc(sizeof(int) *v); - - for (int i=0;ialst[i]=NULL; - g->vis[i]=0; - }/*/*/* - return g; - } - - STK *create_s(int scap) - { - STK *s=malloc(sizeof(STK)); - s->arr=malloc(scap*sizeof(int)); - s->t = -1; - s->scap=scap; - - return s; - } - - void push(int pshd,STK *s) - { - s->t=s->t+1; - s->arr[s->t]=pshd; - } - - void DFS(GPH *g,STK *s,int v_nr) - { - N0DE *adj_list=g->alst[v_nr]; - NODE *aux=adj_list; - g->vis[v_nr]=1; - printf("%d ",v_nr); - push(v_nr,s); - while (aux != NULL){ - int con_ver=aux->data;if (g->vis[con_ver]==0) - DFS(*g,*s,*con_ver); - aux=aux->next; - } - } - - void insert_edges(GPH *g,int edg_nr,int nrv) - { - int src,dest,i; - printf("adauga %d munchii (de la 1 la %d)\n",edg_nr,nrv); - for (i=0;ivis[i] = 0; - } - }/*/*/* - - void canbe(GPH *g, int nrv, STK *s1, STK *s2)// 0 sau 1 daca poate fi sau nu ajuns - { - int *canbe = calloc(5, sizeof(int)); - for (int i = 0; i < nrv; i++) // aici i tine loc de numar adica de restaurant{for (int j = 0; j < 5; j++) - { - DFS(g, s1, i); - wipe(g, nrv); - DFS(g, s2, j); - for (int j = 0; j < nrv && !ans; j++) - for (int i = 0; i < nrv && !ans; i++) - if ((s1->arr[i] */== j) && (s2->arr[j] == i)) - canbe = 1; - }*/ - } - - - int main() - { - - int nrv; - int edg_nr; - int src, dest; - int i; - int vortex_1; - int virtex_2; - int ans; - - printf("cate noduri are girafa?"); - scanf("%d", &nrv); - - printf("cate muchii are giraful?"); - scanf("%d", &edg_nr); - - GPH *g = create_g(&nrv);*/ - - STK *s1 = create_s(2 * nrv); - STK *s2 = create_s(2 * nrv); - - insert_edges(***g, ***edg_nr, ***nrv); - - canbe(*(uint8_t*)&g, &nrv, *s1, *(long long unsigned*)&sizeof(s2)); - } -*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/ \ No newline at end of file +///Determinati daca exista sau nu drum direct intre doua restaurante dintr-o retea de tip graf +#include +#include + +typedef struct ListaRestaurante +{ + int restaurant_id; /// pentru simplitate, folosim variabile de tip int pentru a numi restaurantele/locatiile + struct ListaRestaurante *next; +}RESTAURANT; + +typedef struct LantRestaurante +{ + int nr_noduri; + int *vizitate; + RESTAURANT **lista; +}RESTAURANT_GRAF; + +typedef struct stiva +{ + int top; + int capacitate_max; + int *elemente_stiva; +} STIVA; + +RESTAURANT *creeazaNod(int numar_restaurant) +{ + RESTAURANT *nod = malloc(sizeof(RESTAURANT)); + + nod->restaurant_id = numar_restaurant; + nod->next = NULL; + + return nod; +} + +void adaugaLaturi(RESTAURANT_GRAF *graf,int plecare,int destinatie) +{ + RESTAURANT *nod = creeazaNod(destinatie); + + nod->next = graf->lista[plecare - 1]; + graf->lista[plecare - 1] = nod; + + nod = creeazaNod(plecare); + + nod->next = graf->lista[destinatie - 1]; + graf->lista[destinatie - 1] = nod; +} + +RESTAURANT_GRAF *creeazaGraf(int nr_noduri) +{ + int contor; + RESTAURANT_GRAF *graf_rest = malloc(sizeof(RESTAURANT_GRAF)); + + graf_rest->nr_noduri = nr_noduri; + graf_rest->lista = malloc(sizeof(RESTAURANT *)*nr_noduri); + graf_rest->vizitate = malloc(sizeof(int) * nr_noduri); + + for (contor = 0; contor < nr_noduri; contor++) + { + graf_rest->lista[contor] = NULL; + graf_rest->vizitate[contor] = 0; + } + + return graf_rest; +} + +STIVA *creeazaStiva(int capacitate_stiva) +{ + STIVA *stiva = malloc(sizeof(STIVA)); + stiva->elemente_stiva = malloc(capacitate_stiva*sizeof(int)); + stiva->top = -1; + stiva->capacitate_max = capacitate_stiva; + + return stiva; +} + +void adaugaElement(int restaurant_id,STIVA *stiva_rest) +{ + stiva_rest->top = stiva_rest->top + 1; + stiva_rest->elemente_stiva[stiva_rest->top] = restaurant_id; +} + +int parcurgeNoduri(RESTAURANT_GRAF *graf_rest,STIVA *stiva_rest,int id_inceput,int *drum,int nod_sfarsit) +{ + RESTAURANT *noduri_vecine = graf_rest->lista[id_inceput]; + RESTAURANT *lista_auxiliara = noduri_vecine; + + graf_rest->vizitate[id_inceput] = 1; + adaugaElement(id_inceput + 1, stiva_rest); + drum[stiva_rest->top] = id_inceput + 1; + + if (id_inceput == nod_sfarsit) + { + return 1; + } + + while (lista_auxiliara != NULL) + { + int nod_vecin = lista_auxiliara->restaurant_id; + if (graf_rest->vizitate[nod_vecin - 1] == 0) + { + if (parcurgeNoduri(graf_rest, stiva_rest, nod_vecin - 1, drum, nod_sfarsit)) + { + return 1; + } + } + lista_auxiliara = lista_auxiliara->next; + } + + graf_rest->vizitate[id_inceput] = 0; + stiva_rest->top--; + + return 0; +} + +void adaugaMuchii(RESTAURANT_GRAF *graf_rest,int numar_muchii,int nr_noduri) +{ + int plecare, destinatie, contor; + printf("Adauga nodul de plecare si nodul de sosire pentru fiecare dintre cele %d munchii (notate de la 1 la %d):\n", numar_muchii, nr_noduri); + for (contor = 0; contor < numar_muchii ; contor++) + { + scanf("%d%d", &plecare, &destinatie); + adaugaLaturi(graf_rest, plecare, destinatie); + } +} + +void stergeRestauranteVizitate(RESTAURANT_GRAF *graf_rest, int nr_noduri) +{ + for (int contor=0; contor < nr_noduri; contor++) + { + graf_rest->vizitate[contor] = 0; + } +} + +void existaDrum(RESTAURANT_GRAF *graf_rest, int nr_noduri, STIVA *stiva, int nod_start, int nod_final) +{ + int *drum = malloc(nr_noduri * sizeof(int)); + + if (parcurgeNoduri(graf_rest, stiva, nod_start - 1, drum, nod_final - 1)) + { + printf("Drumul parcurs: "); + for (int i = 0; i <= stiva->top; i++) + { + printf("%d ", drum[i]); + } + printf("\n"); + } + else + { + printf("Nu exista drum intre restaurantele %d si %d.\n", nod_start, nod_final); + } + + free(drum); +} + + +int main() +{ + int nr_noduri; + int numar_muchii; + int plecare, destinatie; + + printf("Cate noduri are graficul? "); + scanf("%d", &nr_noduri); + + printf("Cate muchii are graficul? "); + scanf("%d", &numar_muchii); + + RESTAURANT_GRAF *graf_rest = creeazaGraf(nr_noduri); + + STIVA *stiva = creeazaStiva(2 * nr_noduri); + + adaugaMuchii(graf_rest, numar_muchii, nr_noduri); + + printf("Introduceti nodul de plecare si nodul de sosire al drumului de cautat(notate de la 1 la %d): ", nr_noduri); + scanf("%d%d", &plecare, &destinatie); + + existaDrum(graf_rest, nr_noduri, stiva, plecare, destinatie); + return 0; +} diff --git a/example1.exe b/example1.exe new file mode 100644 index 0000000000000000000000000000000000000000..260f39be072bd079c414799d9e720a146f48bfd3 GIT binary patch literal 35630 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 Sj?$XtJL{r#kz21k`};ozByk1+ literal 0 HcmV?d00001 diff --git a/example2.c b/example2.c index 0e67b95..eac982f 100644 --- a/example2.c +++ b/example2.c @@ -1,176 +1,216 @@ /*parcurgerge graf cu DFS/BFS*/ - -//Imi cer scuze in avans - #include - #include + typedef struct Node { -int data; -struct Node *next; + int data; + struct Node *next; } NODE; -typedef struct Graph{ int vertices;int *visited;struct Node **adjacency_lists;} GPH; -/// utils - NODE *create_node(int v){ NODE *new_node = malloc(sizeof(NODE)); new_node->data = v; new_node->next = NULL;return new_node;} -GPH *create_graph(int vertices) + +typedef struct Graphx +{ + int vertices; + int *visited; + NODE **adjacency; +} GRAPH; + +NODE *create_node(int value) { - int i; - GPH *graph = malloc(sizeof(GPH)); - graph->vertices = vertices;graph->adjacency_lists = malloc(vertices * sizeof(NODE *)); + NODE *new_node = malloc(sizeof(NODE)); + new_node->data = value; + new_node->next = NULL; + return new_node; +} +GRAPH *create_graph(int vertices) +{ + GRAPH *graph = malloc(sizeof(GRAPH)); + graph->vertices = vertices + 1; + graph->adjacency = malloc((vertices + 1) * sizeof(NODE *)); + graph->visited = malloc(sizeof(int) * (vertices + 1)); - graph->visited = malloc(sizeof(int) * vertices); - for (int i = 0; i < vertices; i++) + for (int i = 0; i < graph->vertices; i++) { - graph->adjacency_lists[i] = NULL; + graph->adjacency[i] = NULL; graph->visited[i] = 0; - } return graph; + } + + return graph; } -void add_edge(GPH *graph, int src, int dest) -{ - NODE *new_node = create_node(dest); - new_node->next = graph->adjacency_lists[src]; - graph->adjacency_lists[src] = new_node; +void add_edge(GRAPH *graph, int source, int destination) +{ + NODE *new_node = create_node(destination); - new_node = create_node(src); + new_node->next = graph->adjacency[source]; + graph->adjacency[source] = new_node; - new_node->next = graph->adjacency_lists[dest]; - graph->adjacency_lists[dest] = new_node; + new_node = create_node(source); + new_node->next = graph->adjacency[destination]; + graph->adjacency[destination] = new_node; } -int *insedg(int nr_of_vertices, int nr_of_edges, GPH *graph){ int src, dest, i; printf("adauga %d muchii (de la 1 la %d)\n", nr_of_edges, nr_of_vertices); - for (i = 0; i < nr_of_edges; i++){scanf("%d%d", &src, *&dest);add_edge(graph, src, dest);}} -/// bfs utils -int is_empty(NODE *queue) +void *insert_edges(int nr_of_vertices, int nr_of_edges, GRAPH *graph) { - return - queue == NULL; + int source, destination; + printf("Adauga %d muchii (de la 1 la %d)\n", nr_of_edges, nr_of_vertices); + for (int i = 0; i < nr_of_edges; i++) + { + scanf("%d%d", &source, &destination); + add_edge(graph, source, destination); + } } +int is_empty(NODE *queue) +{ + return queue == NULL; +} - - - - - -void enqueue(NODE ***queue, int data) +void enqueue(NODE **queue, int data) { NODE *new_node = create_node(data); - if (is_empty(*queue)) *queue = new_node; -else + if (is_empty(*queue)) + { + *queue = new_node; + } + else + { + NODE *temp = *queue; + while (temp->next) + { + temp = temp->next; + } + temp->next = new_node; + } +} + +int dequeue(NODE **queue) { + int data = (*queue)->data; NODE *temp = *queue; - while (temp->next) - {temp = temp->next;}temp->next = new_node;}} -int dequeue(NODE -**queue) -{ int data = (*queue)->data;NODE *temp = *queue;*queue = (*queue)->next;return data; + *queue = (*queue)->next; + free(temp); + + return data; } -void print_graph(GPH *graph) +void print_graph(GRAPH *graph) { - int i; for (i = 0; i < graph->vertices; (i<<2) += 1) + for (int i = 1; i < graph->vertices; i++) { - NODE *temp = graph->adjacency_lists[i<<2]; - - while (temp) { - printf("%d ", temp->data); - temp = *(temp->next)->data; - }printf("\n"); + printf("Nodul %d",i); + NODE *temp = graph->adjacency[i]; + while (temp) + { + printf("%d ", temp->data); + temp = temp->next; + } + printf("\n"); } } void print_queue(NODE *queue) { -while (queue != NULL) -{printf("%d ", queue->data);queue = *(queue->next)->next;}} - + printf("The queue: "); + while (queue != NULL) + { + printf("%d ", queue->data); + queue = queue->next; + } +} -void wipe_visited_list(GPH *graph, int nr_of_vertices) +void wipe_visited(GRAPH *graph) { -for (int i = 0; -i < nr_of_vertices; - i++) -{ -graph->visited[i] = 0;}} -// parcurgeri -void DFS(GPH *graph, int vertex_nr) -{ - NODE *adj_list = graph->adjacency_lists[vertex_nr]; -NODE *temp = adj_list; - -graph->visited[vertex_nr] = 1; -printf("%d->", vertex_nr); + for (int i = 0; i < graph->vertices; i++) + { + graph->visited[i] = 0; + } +} -while (temp != NULL) +void DFS(GRAPH *graph, int vertex_nr) { - int connected_vertex = temp->data; + NODE *adj_list = graph->adjacency[vertex_nr]; + NODE *temp = adj_list; + + graph->visited[vertex_nr] = 1; + printf("%d", vertex_nr); - if (graph->visited[connected_vertex] == 0) + while (temp != NULL) { - DFS(graph, connected_vertex); -} -temp = temp->next; -} + int connected_vertex = temp->data; + if (graph->visited[connected_vertex] == 0) + { + printf("->"); + DFS(graph, connected_vertex); + } + temp = temp->next; + } } -void BFS(GPH *graph, int start) +void BFS(GRAPH *graph, int start) { -NODE *queue = NULL; + NODE *queue = NULL; -graph->visited[start] = 1; -enqueue(&queue, start); + graph->visited[start] = 1; + enqueue(&queue, start); + int first=1; while (!is_empty(queue)) { -int current = dequeue(&queue); -printf("%d ", current); - -NODE *temp = graph->adjacency_lists[current]; - - while (temp) - { + int current = dequeue(&queue); + if (!first) + { + printf("->"); + } + printf("%d", current); + first=0; + NODE *temp = graph->adjacency[current]; + + while (temp) + { int adj_vertex = temp->data; - if (graph->visited[adj_vertex] == 0) { - graph->visited[adj_vertex] = 1; - enqueue(&*queue, adj_vertex); + graph->visited[adj_vertex] = 1; + enqueue(&queue, adj_vertex); } - temp = temp->next; -} + temp = temp->next; + } } } int main() { - int nr_of_vertices; int nr_of_edges; - int src, dest; - - - - int i;int starting_vertex;int *adj_matrix; - printf("cate noduri are graful?"); - scanf("%d", &(*nr_of_vertices)); - printf("cate muchii are graful?"); - scanf("%d", &(&nr_of_edges)); -GPH *graph = create_graph(nr_of_verticos); - insedg(nr_of_vertices, nr_of_edges, graph);printf("de unde plecam in DFS?"); - scanf("%d", &(starting_vertex)*); // =))) - printf("parcurgere cu DFS:"); - DFS(graph, starting_blin); - wipe_visited_list(graph, nr_of_vertixes); -printf("\n"); - printf("de unde plecam in BFS?"); + int starting_vertex; + + printf("Cate noduri are graful?" ); + scanf("%d", &nr_of_vertices); + + printf("Cate muchii are graful? "); + scanf("%d", &nr_of_edges); + + GRAPH *graph = create_graph(nr_of_vertices); + insert_edges(nr_of_vertices, nr_of_edges, graph); + + printf("De unde plecam in DFS?"); + scanf("%d", &starting_vertex); + + printf("Parcurgere cu DFS:"); + DFS(graph, starting_vertex); + + wipe_visited(graph); + printf("\n"); + + printf("De unde plecam in BFS?"); scanf("%d", &starting_vertex); -printf("parcurgere cu BFS:"); + + printf("Parcurgere cu BFS:"); BFS(graph, starting_vertex); -return - 0; -} + + return 0; +} \ No newline at end of file diff --git a/example2.exe b/example2.exe new file mode 100644 index 0000000000000000000000000000000000000000..6b981340e4f5cf7b4413d8bf5490e3a459e7b437 GIT binary patch literal 35136 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 Date: Sat, 12 Apr 2025 19:16:52 +0300 Subject: [PATCH 2/2] eliminare executabile --- example1.exe | Bin 35630 -> 0 bytes example2.exe | Bin 35136 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 example1.exe delete mode 100644 example2.exe diff --git a/example1.exe b/example1.exe deleted file mode 100644 index 260f39be072bd079c414799d9e720a146f48bfd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35630 zcmeHw4}4qIeeb!FY$>*5%ftx*94b-;9GW!w4*=jNM=SIu~A2BchE7Ch(v1_ zFD`K^ssmoe{8Bml{>ZySte>$NiLq16DwRqm2U`xN2An3wW-r6lj`7 zD=xqh0{G{TF`h2Q9DKUnnKMojj2HA$_^PulZ);Y<0HP>BzDy+x%(94yUi$?ccltHx&n7LR7o% zFG|hN-(3Il#M_qL*PUo}@*;Y|;-q3Tw`3_}6K_iu2VO;J@^HoE`?%J>JT*IUtoj8D zn@(TLHa`YknZ5ave^bRJGv6ixxl&bm7=&l%ah&-EiO*~pXI>f+@8_OXJ-9XV>$d0L_b9aGds@ggC zV`5zqxkqq4N!qd=J25tc!XqQ`tf!7Jrx6PfW(RgULGJq+Z-pk#Zkld&uHktlBDWv1 zKrNC-HcXt7Kw3jifZ{T+){vodzqkwuIJW8N49YWD$=&lycfhW>Z;~g4ZgQxgn>6}o zjr93d`yr(Y>|*n);t0>=j^3#^w<1sMz0#_^GE-*id78h!4lW(OfiDn}~i}Pf_#pYkd&8a1bDokFAzJ2?hcO2F1J5fZU zbUaT#XZ}JZi6qa!UMfMv1REErN@ov|Z9qyX6P8@Y6Y=8F8NpuzHeSJdP%fst=d<|V zYn!s;dcwt90NlNJl{_OmUY>(y=4!)0N~~$KQ>9TSrVKIShC&%+6zQ6 zWxZu&#<)?1{Sqp4G@)WfH3z1n5VN`8v6JcNviL7dw;efUqFC-D0));@1#GZLL5DTe za>9F_`*IBlQ)15ZWSk(7am-@GCcNh*B;?~>+y0k8&o`xvn*uMYk-b+TOn_5h!ub;z zdCkw`hAbsF3E#piSvDPj<}z}9S(caq!D0#a+onu2cZfV_Ry}JM{#FvMW(TYlgcE$I zgbY)(qNGh#Ip=10>=aqmq)1{FGOgD>@q$DV+duAIp1JE8s#B*Q;T|}T=D~ZGM+)6% z_4!1NOJml1b~=CrEl1sif-0)2Qz0jrk6S7Slo4)3ixOz%n$JM!eAZ=w%@dzE&oaNO zYF8~6hH;NTGd%JPA*!pX5TYGWB0w2vMeUl)mZObSGV_LM?^$A*M#jSiuzZDB`oMxD zP;r2PI_p02&-3%Sd@b95WJWDv_7mO<6!n?qs)-kL#bd&I0U37TZEEkPjFHX?EN#c_nF07l2*ZGxhy+}EaPo8 zIFAwMqu>+?uxHsu@A><_2MRg`HWvrw%#|X0;4;b{^2bT;575XM%HFe-OJ`7<)P(%x z+{9Ve+(r!X!2TAouLe6B;RZ!Tr5jigFwm>$evzQp>FIAmW0qu~z2gE}jaKI-3QLCx zIUXo@@3p) zdtZXCNowhIMx3U>>C_8+JhHL(WYU`TzJxOAoc8|kxQX|}=(G61B!aSzMd~*pYvC>$MUJ3hn3!KwaUg;lCFu`eJ>4c@ z80vjR%6{UNis$d2pL!4enmkMO1IfPwtkMgEGiv&0Gru|=AaU4OY_u_RY$^>KKXG#6 zyAnk!!OSUuZ5u^+W)k!&dojp^p9(b|hzy=s~+;snRQaW9OTT!g+6$cs-!PNJ@_fExu z70@9aQ8cLXCo{jA_{8kW^rDF$W4!%6caMZ#?@C_|r^y)L~49mDA) zi6j;K9U>#XL55HPdWURz;dB*cfEb7zmsT3A-9X|Pj~!<_VB%>ff-vejy-{{ja{P27 z41liZDRkuY4N!^8IfVF_?BKz^sTVLMbFjeY4)%Sne)darUvc0xED6>huJ}9+?q5TI z_c9fquRr|OaVc${I4QmLEl0X&@i<6t9Umve^iQZNR7P@u3 zb%a~wdeVssLha9Z#pgHEW!EaQ8ln2blP~WrdWO1hF6V;fWYVG{61n{!F>q6kLw2-M zSsK}`!lYnuW`33<(->Bub6rYQ^w6g#j+Gtd^)EM+RK|-m-^i{AT#KxJZ$7P4~z0Mbrji|t(qj}$(J+d@&}}cYG5$+ z`bU-dQV{`27dvx+k|5@z&WX3p=_;_gw@vBGF@H_>OdPA?3U0qsjpv!FaTi-lKU2q#yl6ZZB*-2w)+8rJBstAJ+1c z{K4&q!&{MnxqH#`W>;*&EloLIORpWA$(pC2wFCq}Q^)6;afb{p!%V`K^;o7Fob$8U z+ijDtWxlU!`4#4HV1^a9-+A+AA;~UEg`#H4jDT~> zW0`vs8?rl`4%ktF0#$z)MM^1; zs?pQ>6-c%&y-QYoH{c3a{9_C%rQ3pEe6P$pHIG+{@B#5e1KVJ;c4KmV+K1^ z6LztwrDXY;Sv9^~`IFLBR0w56_A#|^9UYue{FT1{L=kz8{F9@SJ*q$3`3(wJ<^?4Q zLIC`jlfp2h22q}D}h;}``)HSnq_l>XG7D--Wn(qDprT@e1Md-c%AYl7w^%Bk4%(*C_Pf~hpU`i1oPH+;*5QbS1wwam)eds(9vhe7wRvC{j}~QA<{d znve}zvSuamHuERBqyCitk`sig08}ZCz!OOBh#9W$bQ=1pR3TAkTaeqYVv<3%WoBl6 zRV(TWU0up`6TjXX*i4V*r~S^dsl8I1eFbXqx9kNo9+Rs zzNk9$sMl<#l6Sx9Hh*Z}ug3%NSpU$#fSi&eyVtL+uZ_gxOqP?;p;#&%P0E9Kj~kU^ zqk{>ck?2A=%y37-nW3;_G!ey3Ov6%%R1DBqbTpmJI0j>aBN9U} z>KKT|qmES($4F*$U^o_Y)Zo2wI2|Qj@vx(wepW?R-&n#{MOH;vYcex}h{nRnflM-W zqXVdeb!8mUJuo`#h=7c@&7?OO1&~RGN7G6KuxM4JwuE^|JK39zImlAHuO5sIWa2lI zGC>{5a8vTA%m>Ag8;GWLiMvFC!|({VHxr}e41_aC*+tUlfG@v$m5aS_h4CEMVNJ@t zdd=tkAYszAx!T3n;rt--zYZBSJ^JgZt6i)!HafJM77(OkBT>g-I2O+&qbLau$JSUf zoe9Tp%|w%XIUyQx3?`DuU`PMnbTs7%ryb!)1Z5!QST#nq#o_23y?ZpVd(<(Oie@4S zl#h5~Ae@dRfFu*?#6TkM*cDBt2;k-9(lY(AG|KosD!M3BjJ10_H#%xyar?H~L~_XC zNhVUMwLl#$nOHosc75IYy1K><^=s=_J2uv?udVwv$>?IpDgO7e<=-mJAI9@%w2AqFoB`Jyb8bm@@itftE9ZTl&@QgfTaengKs8YPr2*fatmMbv>(9$ zaI7NX`Z2fSOMZ6bVNU@c28Ksl{2)GhOd8Q)7fT1(O6lkT?;%{t)=5*#;v(;Z<_U}G z-jbv4^s9E@DvDU;)qf73rt*806OI<%WeE(Kg|n1^rWcx+%*U zh`s~o&3K2NHP9c*(f0%YBhXv)^!qgZ2Z6r?I;A(4#)w9L4)80WOO%(Y4^01@)Bif) zuOFMAkK?M*MFOe;UBD@QYkq!%o}SS3S3_?V=r8K&rf=o+Zvy=xXceumR8mUo-L zOL6Z%jxvbnKsmeG9x^{@nJDVvnRkL`UrVX^21yrg!@H!5>2)f4kG(iQZzX@+LFL!f zQC3toX*Q8Mn@K)eZn>B|;bhli-=3eZ$CY)J+jpQ$J8;{8^Eu!>xRSlRUL;D&ZEh%R zE#>9D52UxjLptcVSUg0h^DKBh#E5Fuiz?Vrx)ZT6dWXo%RrPnYvi+dRU0ya}24|$C zysYggB0f$MFd-MZrBv1e&_VU-0G-f7Zl>d6Hc`DNn})%=6IV*37ALB{uiO#f4ZvOe z*Hd1Glyf5()eTDfBalsz?5&D_QsvcM<&N(1YHzv2qxi~Q%G;QS!S*`%>6-Ir06ZS} z(^rZJJIWn<43enHj4zcuM%S0-=bs~4c;q(t&Qp3je!ZnJZXF@Flt%dd#nVjbrSmE1 zx`lKZ(u{Tp&?cO(fPPk?Pf|WSgnY0+Xz`R+O%!>{1AXPKp7Ov*NqH4qVn@D|xlh0~ z-=an}QtkrH)WR?DK>-W=(E;60;oR|8^YcHYa(h>~?IDWiL9@HuK7n}ZOrI`+=A+Pj z9GXv*qggY(mj|_wf9SYa9#eUs^g3tf=keJ5!{a}&2LfYS;u_Lu=MkRKVF6&9?!gjU z9rheBKd^<4F9JV|^M^S99_M+S#Yx7N;k+K_CY*gZ$8e70{5_ms#`!!>I%aV_h4Y*e zzJO~P8jEV2YjEC((~om2&O345g)@!wKAgXW^S5yx#Q6oBU&Z+>&SN;gi}O{Sr*Qrh zCmsJk**eQw@eCs!^(15I*g!ZQj1JJemHh+r;^{^*A7;xX@19sXkW36<{>#ErTQVB; z$NH1uFRG!kzRyC)xp~I9ONyThvJET z#@0)N(G>hRx{I;xpbbUSBjMO+I60JJdx*DR##1GEB)o_EL|Gn_W$?z5a5Z~Sga_#x z2F89DA!w4rV`Fl9?--CDFnItEpdJ{xPErgmX=uuBR zPvq{8?pfQQ(rZBf*EmN~y9SbJH5M51;qieyaO!Hj&B6KM@t@NJ(u|8$<80pPVwQ2& ze@-X-Crvet^G!VM7XG_@m5W`k^FUyENs*O5NF{SV-Ql}Lk<|1_gyl>aR_>DYjC zA5Llf^H)>;Q(3S`?OnYNPyG$z4TfXwNIEkb-8>W>jV5CQ2;!~W@a9-!bCYB3kov!S zy<@F<4))W#5RA~)idT=0wS%LHwRlfAaQ9kz34?JRMxbT2wd=(HRB~V)-cYXPFHF`6 z8RfFRc7UxLPK-p?-5rgkhu3k<(#!UL0If(KODCE1$|4FNG=TV}@7u^MOOf0k zPDPpYDks{C*hNUu>B)`N>NT0u@XMAm43dIijB!sB;3LiZ?W<; z8C+B%V`x3VOapeZpNDoaQ^dX%(!~}^VTobTZF=-_!I;{cl2N9T%=BgzAvWTDR55{w zpvCdRmzmyQHUYR)PNeYej+vH9SN{V1rSk6BCLKjmL(D)6B9%T1N7vGQG## zhlv2Q+#xNy6=Ok2MR- zQW;MmDn+V@hgflCW;B_I$Dq<7Yj9hN#EnI`y_ah~}Zz zA6M|FibdQzZ>%7{Sc*myn0F72GV4zky-EIJ<~s<_=>l_#HCTUSdz18J#EWm4URN{g zsjEl_D-xkMi)cl#h1n=Zy5$AYjD`^Rm!VCjM+k|eJdjA?Nz066{i*F9JVGqO%XMZw zvsl;`kA|7`EDu=FCd3BQ@-9qBt^dFwn*t3aMp0v}KjUCo5tebJvAP5^X6w%vKM0+6 z0pZ0uv;KlJIg28(T`|nJt-s_PHAN$dT`4%_y!A~aVG{-SA^0mEbQQ%>|7gWZ3Z8k3 zYiK2ws0`1>63qHf9P8j>{c&V(7>Rg?gMMoM73AH;pM^OAj-=2bA^v~n(2kpYhlUIIX@@Cs&KG17Rp)){ls=6JZo^W_5^g4e|Fw?KL922H}BWgjb4i9m1)5@RZ2< zQ2{i-G-LraS=S1rS*k*ec<5)nP5_&vDnv;@jR0H%K*3)vfL3T72@}Wl0_YF`I6fu- zzf=V?iDQib0s;WXS^ZB_v z10x!WwpbOomPo@!k`TIqC~+h$Ix;Y}msxL+uJ}4C)fh+cl#P&;grub^v_la&9lkp{ zDjRaGSs1iO;lMJqg}81MT>If@s!6CvAn0@N+g11cI1_eYWaEdqX6 zg$J?njafYceMDmBccIEgDWYbPH^>%d-i3P(Qscxy6EkO3keU!>3}Jo(_r;bkK}l(B zPjiz}DBGlKzsm{KehUJ10SdKUT1EI$EJ50iTD@JK?dY*Jsi0TB2$#vo6%6=&A<`5?FPoEB zW!wDjb{CiTJ4{Yu6wt11s6&g&=@^yJyy&iU@hWfff-ga+~+}Z{SFVBD=yGo;X2ST#D zy_Z#Mkb7&lua*2Rw{`c(?$*{GwnC!@{oUJSAMzbPog3CuPOz&lLT+Xs(I`SK*yZj3 ziZ1E)@bci$c$91jhI-%=3Sont*yuF4X}@CsJAa9H`i@wzJa1b8_^XC zvNamH9i^#9v}{2+NS;7N^Ru-Y2Z6m^sz?3ZC{id2zD|_C+KX`oL)|E~D%(0ETfptv zg1k|3kkX#xtTS?kwgop=3J$ie^tQFIjT$V#?1y!Sd%LVE(3)kQwx(@qbQB=HeaZN z8Xwl8k=*`m?(IRj4V@mkNF-lI4PYLPK~zX;8~olb)~XSL9lo|uJ@abFZC+|Q`a(F3b+bnPE@rAt1rxAI()mblZ^|@sf z?OQZTS2r~#0k^NmjoylF(J1N&g2pIfEa2A>6&r8mO$X~Nq;&Yin50W1DG4I?v2G0( zW!~Sd^wL2V&}dZJ`aB)&E$mh!h!oYa9u1>(i0VMi91Cg`Q8bmRfN4?4$B7hL1el65QqvD5FIVaI=eq+2>WWEsELPG|lYIre$PR=^kj$ zO%^c$V^+Uu8Krxf97*6QLWZWrSb!j7o*R_~|Hxo;bO4-pnHGoeVQ#VIdi*ZMH#PDA z9xvra*>y$5wkwd(u5MAvSS5xvl+0GTm?}MVF;}+G#Znpc(Y2_um0yc1(d7ULV(9Ae zcek{7k@o_yRo*IY7D02DtOQCbL;j%L-W_Ujqd0QO(n=r3?0q6oR_XV)yU{Rk(&9>e zABgcIn&(h=fQT41A`nCwMAfITy|N9Rjxu_$tfa27&DVqaO~lJY>iT#$%2hAn9Q?Mb z62p0ovb3_ZQ?X{5qLY+y*2@(D#aaN%VSGrFy+TLN30+y)=?-oY{8#a~v~V>KbKNT{ zF~}q?*@F@iL|1V&Gv9_R<1?@o$Rb|8w=nZ!+?PiB_h{cujf81FZo7=Qh|<)MN4rj; zrFJD7X-Jp1 z!|lfycaaVYV(zuQrN`IW?!|;iWB<;|u!y7m7wh2m zZhtEW%NGFUfWJ40qN`~M^@!x#b=a0JKdUr^J5ho)nc$Y~Z)q4dfC_b+FIlB@Cs_hkU`@Mw3uUL2nO|h`EeL^0-?C>Xq@d{ z>K?AtAzPX-Y0((accG`kq(y_aG-H;c1>K#kZSKzcI?PQpu%#6?)nihU2d!t0d}ssa z9(i01m|p0h5ZCq5d}uu;7aG@XG`_6I>>>|ZkJ*F<(WCS0be#{gCKpxjrV7a)a8Sd} ztSLRj8}wun?*RDgNVz|e8I90_IqSYfOZht`E*TpgNYFdQ0fnI+fTec&m!bmRAOTQh!d$4T!KWj@mP`_MPYtYlqf z065TA8vmdwNNLlek|J~9S{GY>4+U?a;0^>oJU)O2q)KKlu9Pm5%;i^=uPR@H zCx+-Wq*b;hrDoezHaq$|larN}-h?1ta9zuMOYp8}iDb5wmfl$U@zRZ@5&-N*WVVT* zZ%H#fVyu7+v09huC@4#k^ULB@H^_%~x!q%Bes_8zC;BvTG3OIw)PdRJ!g8 zAzog@4XL1oDRv92xv7-m(=4j2fognz#4h8u7HO0vimf~bvbD+pzyV7Q3c*JPFS{HH z$->K*vg>eJ-oV-^K9EhzKY-(ZLqtYkhne~CD@pH_FUBwbLI^K2rAsftz$5g**wDHd zjWXE4-XXkguMP5zQdp6RR*{$=m86v`w{NK%+Pr;x-MX7rt~5zdPdlWUStmu1AEACN zhq`D(Tl#@!H=epI$#8@35 z?&%%9xTBZuXebfDIt6+)xt6~N#b@a$V0a@=PQ)Fi4|KN{Du{rfSnjeO0Tj!j{`gv2 z978k&RoVarKJa0OB<<6Itl4i@K$)`M}YADEJ%Z zflHQieT`U`tK<4=`v0)xiq?_2gO2sJc+v9V@$cz@+Y$K;nkI=kl(m2 zA}gOL*wJ_iDOvfr!I491mA`O6DMK^K%+j@>>DQJrrv8-y;-OZ|EMbt5chvGVZQ_fx z_pzVQkc5&*-2)c%rTei{$!P6>oan!c#7LU!;W|FUe=&f;6;b2(W1MxWg=EwM2Q_Y| zR34_LLP(K?KLVY9v7D1t|3(7=JT6)>m3OEq%~>cdJZShE$eqMV8q87zzobz+)W7pU z2&Ks^xizBh?hV|JgF)~V)-ctp3GfN8M)!ni3Q>YR-K&QZNppHdKN*9PpO}pSBJ@g%Qr9qEsGyUZiVNV(EJO&;L zJOK1?*}oi@;Gwwa+v>d1tNc|FC-ey)QtAqi&p>h(TSxO8#Qj3Ymw?;L)m)abij;DG zEQhFR7kbE^=b*;uLp9%N6r|N$V}xqH*MR3zHa`ckQ@Pm5;=cwmQ=wX@+B3s>$Q~*| zD7d;qjcW}s5f@ozJZkZmRGfXSx6x{Bk~S~Y+6W#uNne`B?@ZS<7@ zwOnQiCg&Zs#N&2zJs0C4k=IES28mip$h$zs4ail<1UrhS;88vH1ot7uz6SJ_B$_)^ zk8J`XJm$#J^fz^+8PhnU=2;#WX}%ss{~EnOu5a1_^kVt0)}1GyUDTaFGU%Xy_zOAC zMp{&jrVM-v(nS5K0cms<@SG~(p`8>AQccuTD~QrpP9Pr9st;n36Io$Awm^aostxFu z@oOxHM59f{>A(ybJXG2WkEp_fW&u3+;1|Z}4mAgtqr)T${H&vjTeS{~FHMN2fF+j~ z!yt*gDC8mJ9>pFsiO}P~uL9ssJ;oIX)et-ns<7djRd~<@fu|Y2Mm=ip`8p`V&)RHE zRivi9HJ5gkqFsNTX{S7;oD_Nb1w0xnY+ET$$IV(6HytbB!3w=Ro@WbqXcrx$p05`094O%VLIKZs0nfpFo~GZ}sgx`1a>0nhRRp6d&EstS0P74X;#c!~>nXiREIY18?9q>*MFMxMXVM;a~pNYfAV zkw%t}G#$=I8ZYFRjixW=^E3qVdGu0BPyLVJDVWtpM~VPFZFG5j764wx{t$=@ zYY=E8vtVDT%)2*n9_qiinBnKw+3(OiC1;^jhfraJ&*f|;d#DF5U5H*&B8w*;1f^k&C473U<+^`?O9+k(0y&lBY4o~sk+@XvI&Vc8o z93m^*Fhp_)>3JVK^j8_lX58Xff!nlVp+MFW5eJ0?vI$7FlFI_w0%V8cAA#HkL~UCH zk^&MpX#OOSFB|N66o^{mgw#_&UN`X2=UZyaCV2i92pu%S7szQKYO5uX_klczj3XZk zH=c)Pd^Z~|02)Jd*bo{uK_el6?zijp@Vjq7RW<{U^by4PjDWG z4tW*`ff~=NoJWj*g`T+rA9C4m|sFdWiciAT_v> zu&{6upIo_gnwJAPXwb8gcntn&2J#aFPX~}zLtK48)Lu`-H3CHKi3GA2h?YBuh5ZhY zzMLLee4)$hg_fsZ0uLQpeg8TTr@^bofT*)J5!d&CJeRXs)RZvSL+aGJ9N}68Lc~+J z4RFn>$9_gc93n5ULIB?hbcP~8Gz;GcPuzf%z*vU?Sq9{>TuMP=AEgB0&|=>Jgl2e} z=9>$6ZUti3r3)V!?&4~6QZjh7RNw=%IBnf?Kqn=>ET%aVc}sX~REbL~bq^2%qJ}&M z#9>Iqp8|QbagZ_s=@5PGp7o>1YQMS(aCQW+pMhS-0Xr1;@LJHPO3 z{m;MyA)SA|qey8UdmV^cc7)CU8^~h@dwv1r5ku_rK-6bDLW=%|8?^~q>*u704F+T* z5Mzr(TQ=@AXxR)0CDCJtQf{;kAp03km>`EE5}3j#DN(7^C*x8 zgEyW6au6=3axXmp7eFWnwQ_h8h_UYc5J;;b_8$YG!lC(@;i1=o9D*ewtTs9<{t^JI zjYRu1L+CKVqeEE5tpxes2T)1<{mJMql@iD9a_T+*TLNkTIfLd#S>%DG-?21*e2;cD z#rPds{9rna9p1;7ye&4`iD&zIsNioA435%35vw?~g|;F>1=l- z)@+COg}V|FCWrZ-HSp7l^;nM5j=vO;3k0#1NLXd`#-k(n>jq2~f0$q>3ME`p=;`Et zPk^CJM)8GukM@@dw#N3w=&v0x8N0q=;UWEb1Ed9Ctnyw4_799@WOWHT_Z1~Il8|Xf zJ8ba~p*0~!h%Xc2(B4rQ&*!<63+qrJn2uv9BFRud-i@WnJR8!(Nu)R;-yPk{H5O8n zQT`#lo`FlsSVB&{T|c&Pfz()(7O}|6mi@>MzQ;bI`@bqJc}0xMiz1)P*0vsZr&p#= zO=Omr>oVU&hChL=g-dxcsugQzni?B7G{Vf-2)6c9ilEplP&V!^=&ElbAN2HMku>57 z1iihjv?Sl(?NOH{s#?@N{E#c*bePtKCevh;Zqr3q11Zz5X;g$4id5L9>=p-&Jl7W6?8#viBHAZLvEiay zKa$vjdsT9MaLibWmkA|mRiEf>#Xy`E!-fY?QBWUZ11WMP|At>q43fPAcjJrYkrA{R zg#>(D5=~;e2cq!JUgT7!AKS&Gqa(8NryV#AH9bx9%3NNdnh_FP01=}iHM8|wM9TR& zp%yFMwvnowvgM;%%CvkCm5AEFcsdoq7DzJwjKx6C(R{xhipa1ZCwFFksTY5!Wf=QO z%Hn+ltKA(9-(8C$w7{QkA=uj?i)z&3ZTEF?&xpdOZd)nKcx9{i$;In~QWJAIH5?6( z=`%{dm!?*bv6rX1qo}KyQ9APwC1Yqy4W(KMC#!p2l88sQnJHC>oQxssl%XrH^w`fN zkusDBo^EAbi;VAf!rX~!;pfFPjIBjz|0UrkWn)ijs`*~5*dGRCW9kEl?$>Q|$}@}W z&uu=cI3T};@ZpOY)#i(PnhLkbCVkUD?L7AplfByBuRLzvEU9`8d!8CsU&C=|%d{;` zMeeJDGz&AdLt>_{dV3&ex#)2sQQA;dR4dvJN6kI`{;Z(uSAV0N>e~m}tOiXV_Ovqk zRwRC*4Q4e@E3*JhRn;gb-5yM`5HvLQ8+C}~%mD=#f$T5a0PP^^U zU$w%XX`)jhFDMSt`fy&el%YD3J}`WDDt)&+LPM-vtAOQayQ6z#e7l9+s5JcUXmT_f z#|Qiv6&i}Nt|TcBlBtE}UQ^ZNx>ulRowTgfcUyv1m@;m2ZhzlgE*dMdA(J8)87lou zNZVsst3Ma*!Y^Iz7HW*SaSOMHd8P8=O`h7hz-yY5b1su9HKNtQs6aOuB@EwUQZ-hq Sj?$XtJL{r#kz21k`};ozByk1+ diff --git a/example2.exe b/example2.exe deleted file mode 100644 index 6b981340e4f5cf7b4413d8bf5490e3a459e7b437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35136 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