From c82045cdcf149cc78c7d99825038e39551c99db1 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 2 Mar 2016 20:59:17 -0500 Subject: [PATCH 01/20] testing git by adding names to readme --- README.md | 3 +++ README.md~ | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 README.md~ diff --git a/README.md b/README.md index 61ec120..8b272b2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. + +Nathan +John diff --git a/README.md~ b/README.md~ new file mode 100644 index 0000000..61ec120 --- /dev/null +++ b/README.md~ @@ -0,0 +1,2 @@ +# InteractiveProgramming +This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. From 08d3128ee5827c5f3575fa1203bb7379e6422c7e Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 2 Mar 2016 21:00:25 -0500 Subject: [PATCH 02/20] removed duplicate readme --- README.md~ | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 README.md~ diff --git a/README.md~ b/README.md~ deleted file mode 100644 index 61ec120..0000000 --- a/README.md~ +++ /dev/null @@ -1,2 +0,0 @@ -# InteractiveProgramming -This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. From b0a895948d888d6883de0ce6485f6c98248d7329 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 2 Mar 2016 21:06:42 -0500 Subject: [PATCH 03/20] added a sandbox folder for experimentation, also added a openCV test that filters for red --- sandbox/webcamCaptureTest.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sandbox/webcamCaptureTest.py diff --git a/sandbox/webcamCaptureTest.py b/sandbox/webcamCaptureTest.py new file mode 100644 index 0000000..4683ce9 --- /dev/null +++ b/sandbox/webcamCaptureTest.py @@ -0,0 +1,36 @@ +import numpy as np +import cv2 + +#make color filter function +def rbgcvt(image): + boundaries = [([0, 0, 50], [50, 50, 255])] + for (lower, upper) in boundaries: + # create NumPy arrays from the boundaries + lower = np.array(lower, dtype = "uint8") + upper = np.array(upper, dtype = "uint8") + + # find the colors within the specified boundaries and apply + # the mask + mask = cv2.inRange(image, lower, upper) + output = cv2.bitwise_and(image, image, mask = mask) + + return output + +cap = cv2.VideoCapture(0) + +while(True): + # Capture frame-by-frame + ret, frame = cap.read() + detection = rbgcvt(frame) + + # Our operations on the frame come here + # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + # Display the resulting frame + cv2.imshow('frame',detection) + if cv2.waitKey(1) & 0xFF == ord('q'): + break + +# When everything done, release the capture +cap.release() +cv2.destroyAllWindows() From 801d11bff1ef48c756fd12a423ecfdca793d2076 Mon Sep 17 00:00:00 2001 From: John Moreland Date: Wed, 2 Mar 2016 22:15:27 -0500 Subject: [PATCH 04/20] adding facetracking test code --- sandbox/webcamFaceTrackingTest.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sandbox/webcamFaceTrackingTest.py diff --git a/sandbox/webcamFaceTrackingTest.py b/sandbox/webcamFaceTrackingTest.py new file mode 100644 index 0000000..0df8985 --- /dev/null +++ b/sandbox/webcamFaceTrackingTest.py @@ -0,0 +1,31 @@ +import numpy as np +import cv2 + +face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') + +def face_track(img): + + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + + faces = face_cascade.detectMultiScale(gray, 1.3, 5) + for (x,y,w,h) in faces: + cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) + + return img + + +cap = cv2.VideoCapture(0) + +while(True): + # Capture frame-by-frame + ret, frame = cap.read() + detection = face_track(frame) + + # Display the resulting frame + cv2.imshow('frame',detection) + if cv2.waitKey(1) & 0xFF == ord('q'): + break + +# When everything done, release the capture +cap.release() +cv2.destroyAllWindows() \ No newline at end of file From a25b21640acbfc00ccfb348be9d81a1b587f3be4 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 2 Mar 2016 23:10:53 -0500 Subject: [PATCH 05/20] added a file for playing around with average positions of a mask. Can currently do vertical position. --- sandbox/avgMask.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sandbox/avgMask.py diff --git a/sandbox/avgMask.py b/sandbox/avgMask.py new file mode 100644 index 0000000..01916bb --- /dev/null +++ b/sandbox/avgMask.py @@ -0,0 +1,52 @@ +import numpy as np +import cv2 + +# set full length numpy arrays +np.set_printoptions(threshold=np.nan) + +#make color filter function +def rbgcvt(image): + lower = [0, 0, 100] + upper = [50, 50, 255] + lower = np.array(lower, dtype = "uint8") + upper = np.array(upper, dtype = "uint8") + + # find the colors within the specified boundaries and apply + # the mask + mask = cv2.inRange(image, lower, upper) + output = cv2.bitwise_and(image, image, mask = mask) + + return mask + +cap = cv2.VideoCapture(0) + +# Capture frame-by-frame +ret, frame = cap.read() +detection = rbgcvt(frame) + +def vertical(image): + #find average vertical location + #first find number of successes in each line + numberLine = [] + for line in image: + counter = 0 + for value in line: + if value == 255: + counter += 1 + numberLine.append(counter) + #next compute the average vertical distance using distance and weight + numerator = 0 + for i in range(len(numberLine)): + numerator += (i+1) * numberLine[i] + denominator = np.sum(numberLine) + vertPos = int(numerator / denominator) + return vertPos + +#next find horizontal positon + +# Our operations on the frame come here +# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + +# Display the resulting frame + +# When everything done, release the capture From b528cc4c9be6a35876ec29b3f38a04025ebbbebc Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 3 Mar 2016 00:17:49 -0500 Subject: [PATCH 06/20] added average horizontal. Added picture of frame for visual confirmation. --- sandbox/avgMask.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sandbox/avgMask.py b/sandbox/avgMask.py index 01916bb..05b7ae4 100644 --- a/sandbox/avgMask.py +++ b/sandbox/avgMask.py @@ -16,14 +16,16 @@ def rbgcvt(image): mask = cv2.inRange(image, lower, upper) output = cv2.bitwise_and(image, image, mask = mask) - return mask + return mask cap = cv2.VideoCapture(0) + # Capture frame-by-frame ret, frame = cap.read() detection = rbgcvt(frame) +cap.release() def vertical(image): #find average vertical location #first find number of successes in each line @@ -43,7 +45,24 @@ def vertical(image): return vertPos #next find horizontal positon +def horizontal(image): + #first find number of success for vertical line + numberVertLine = [] + total = 0 + for i in range(len(image[0])): + counter = 0 + for line in image: + if line[i] == 255: + counter += 1 + total += 1 + numberVertLine.append(counter*(i+1)) + + + return np.sum(numberVertLine)/total +print (horizontal(detection)/640., vertical(detection)/480.) +cv2.imshow("image", detection) +cv2.waitKey(0) # Our operations on the frame come here # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) From de484843266ac89b6b3fe0c998ea00185eb9f6e0 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 3 Mar 2016 17:33:27 -0500 Subject: [PATCH 07/20] added video capture with mask + avg locations of mask --- sandbox/avgMask.py | 50 +++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/sandbox/avgMask.py b/sandbox/avgMask.py index 05b7ae4..87c5fa0 100644 --- a/sandbox/avgMask.py +++ b/sandbox/avgMask.py @@ -1,31 +1,25 @@ import numpy as np import cv2 -# set full length numpy arrays -np.set_printoptions(threshold=np.nan) +# # set full length numpy arrays +# np.set_printoptions(threshold=np.nan) + + #make color filter function def rbgcvt(image): lower = [0, 0, 100] - upper = [50, 50, 255] + upper = [100, 100, 255] lower = np.array(lower, dtype = "uint8") upper = np.array(upper, dtype = "uint8") # find the colors within the specified boundaries and apply # the mask mask = cv2.inRange(image, lower, upper) - output = cv2.bitwise_and(image, image, mask = mask) + #output = cv2.bitwise_and(image, image, mask = mask) return mask -cap = cv2.VideoCapture(0) - - -# Capture frame-by-frame -ret, frame = cap.read() -detection = rbgcvt(frame) - -cap.release() def vertical(image): #find average vertical location #first find number of successes in each line @@ -59,13 +53,33 @@ def horizontal(image): return np.sum(numberVertLine)/total + +#create capture object +cap = cv2.VideoCapture(0) + +while(True): + # Capture frame-by-frame + ret, frame = cap.read() + detection = rbgcvt(frame) + + # Our operations on the frame come here + # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + # Display the resulting frame + cv2.imshow('frame',detection) + print (horizontal(detection)/640., vertical(detection)/480.) + + if cv2.waitKey(1) & 0xFF == ord('q'): + break + print (horizontal(detection)/640., vertical(detection)/480.) -cv2.imshow("image", detection) -cv2.waitKey(0) -# Our operations on the frame come here -# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +# cv2.imshow("image", detection) +# cv2.waitKey(0) +# # Our operations on the frame come here +# # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -# Display the resulting frame +# # Display the resulting frame -# When everything done, release the capture +# # When everything done, release the capture +cap.release() From 3ab3adce6b0179d0cdd60e0e773d4e6ed28dae80 Mon Sep 17 00:00:00 2001 From: John Moreland Date: Sat, 5 Mar 2016 15:50:17 -0500 Subject: [PATCH 08/20] adding some elementary test files --- sandbox/TicTacToeTest.py | 65 ++++++++++++++++++++++++++++++++++++++++ sandbox/pygameTest1.py | 48 +++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 sandbox/TicTacToeTest.py create mode 100644 sandbox/pygameTest1.py diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py new file mode 100644 index 0000000..f6b958d --- /dev/null +++ b/sandbox/TicTacToeTest.py @@ -0,0 +1,65 @@ +import sys, pygame +pygame.init() + +size = width, height = 1280, 920 +black = 0, 0, 0 + +screen = pygame.display.set_mode(size) + +left_third = width/3.0 +right_third = 2.0 * (left_third) +top_third = height/3.0 +bottom_third = 2.0 * (top_third) + +# Initializing the game state +cell_states = dict() +for i in range(3): + for j in range(3): + cell_states[(i,j)] = 0 + +def print_game_state(i,j): + """ Prints game state as a matrix""" + for i in range(3): + for j in range(3): + print cell_states.get((i,j)), + print "" + +def find_third(pos): + #determine which third the click was in (veritcal rectangles) + if pos[0] < left_third: + j = 0 + elif left_third <= pos[0] and pos[0] <= right_third: + j = 1 + elif right_third <= pos[0]: + j = 2 + + #determine which third the click was in (horizontal rectangles) + if pos[1] < top_third: + i = 0 + elif top_third <= pos[1] and pos[1] <= bottom_third: + i = 1 + elif bottom_third <= pos[1]: + i = 2 + return (i , j) + + +while True: + for event in pygame.event.get(): + + if event.type == pygame.QUIT: sys.exit() + + #control loop + if event.type == pygame.MOUSEBUTTONUP: + pos = pygame.mouse.get_pos() + + + #update clicked cell + cell_states[find_third(pos)] = 1 + + print_game_state(i,j) + + screen.fill(black) + # screen.blit(ball, ballrect) + pygame.display.flip() + + diff --git a/sandbox/pygameTest1.py b/sandbox/pygameTest1.py new file mode 100644 index 0000000..9cd8700 --- /dev/null +++ b/sandbox/pygameTest1.py @@ -0,0 +1,48 @@ +import sys, pygame +pygame.init() + +size = width, height = 1280, 920 +speed = [1, 2] +black = 0, 0, 0 + +screen = pygame.display.set_mode(size) + +ball = pygame.image.load("ball.png") +ballrect = ball.get_rect() + +while 1: + for event in pygame.event.get(): + if event.type == pygame.QUIT: sys.exit() + if event.type == pygame.MOUSEBUTTONUP: + pos = pygame.mouse.get_pos() + print pos [0] + # print ballrect.left, pos[0], ballrect.right + # print ballrect.bottom, pos[1], ballrect.top + if ballrect.left < pos[0] and pos[0] < ballrect.right: + print "true" + if ballrect.bottom > pos[1] and pos[1] > ballrect.top: + print "true" + speed = [0,0] + + + ballrect = ballrect.move(speed) + if ballrect.left < 0: + speed[0] = -speed[0]*.99 + if abs(speed[0]) < 2: + speed[0] += 2 + if ballrect.right > width: + speed[0] = -speed[0]*.99 + if abs(speed[0]) < 2: + speed[0] -= 2 + if ballrect.top < 0: + speed[1] = -speed[1]*.99 + if abs(speed[0]) < 2: + speed[0] += 2 + if ballrect.bottom > height: + speed[1] = -speed[1]*.99 + if abs(speed[0]) < 2: + speed[0] -= 2 + + screen.fill(black) + screen.blit(ball, ballrect) + pygame.display.flip() \ No newline at end of file From 9d368cb1447f33763d04d6c0f70281cda6739330 Mon Sep 17 00:00:00 2001 From: John Moreland Date: Sat, 5 Mar 2016 16:18:00 -0500 Subject: [PATCH 09/20] added basic logic --- sandbox/TicTacToeTest.py | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py index f6b958d..1d74106 100644 --- a/sandbox/TicTacToeTest.py +++ b/sandbox/TicTacToeTest.py @@ -25,6 +25,7 @@ def print_game_state(i,j): print "" def find_third(pos): + """ Finds which box was clicked in """ #determine which third the click was in (veritcal rectangles) if pos[0] < left_third: j = 0 @@ -42,6 +43,35 @@ def find_third(pos): i = 2 return (i , j) +def check_for_win(cell_states): + #check verticals + for j in range(3): + if ( cell_states.get((0,j)) == cell_states.get((1,j)) + == cell_states.get((2,j)) != 0) : + print "you win" + #check horizontals + for i in range(3): + if ( cell_states.get((i, 0)) == cell_states.get((i, 1)) + == cell_states.get((i ,2)) != 0) : + print "you win" + #check diagonals + if (cell_states.get((0, 0)) == cell_states.get((1, 1)) + == cell_states.get((2,2)) != 0) : + print "you win 1" + elif (cell_states.get((2, 0)) == cell_states.get((1, 1)) + == cell_states.get((0, 2)) != 0) : + print "you win 2" + +#Creating borders +left = pygame.Rect((left_third-5.0), 0, 10, height) +pygame.draw.rect(screen, (200,200,200) , left) +right = pygame.Rect((right_third-5.0), 0, 10, height) +pygame.draw.rect(screen, (200,200,200) , right) +top = pygame.Rect(0, (top_third-5.0), width, 10) +pygame.draw.rect(screen, (200,200,200) , top) +bottom = pygame.Rect(0, (bottom_third-5.0), width, 10) +pygame.draw.rect(screen, (200,200,200) , bottom) + while True: for event in pygame.event.get(): @@ -52,13 +82,14 @@ def find_third(pos): if event.type == pygame.MOUSEBUTTONUP: pos = pygame.mouse.get_pos() - #update clicked cell - cell_states[find_third(pos)] = 1 - + if cell_states[find_third(pos)] == 0: + cell_states[find_third(pos)] = 1 print_game_state(i,j) - screen.fill(black) + check_for_win (cell_states) + + # screen.fill(black) # screen.blit(ball, ballrect) pygame.display.flip() From 1ee6b25045bd85beb7fb99eded75379b5881b4c5 Mon Sep 17 00:00:00 2001 From: John Moreland Date: Sat, 5 Mar 2016 16:51:06 -0500 Subject: [PATCH 10/20] added a GUI --- sandbox/TicTacToeTest.py | 73 ++++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py index 1d74106..05d0323 100644 --- a/sandbox/TicTacToeTest.py +++ b/sandbox/TicTacToeTest.py @@ -1,22 +1,6 @@ import sys, pygame pygame.init() -size = width, height = 1280, 920 -black = 0, 0, 0 - -screen = pygame.display.set_mode(size) - -left_third = width/3.0 -right_third = 2.0 * (left_third) -top_third = height/3.0 -bottom_third = 2.0 * (top_third) - -# Initializing the game state -cell_states = dict() -for i in range(3): - for j in range(3): - cell_states[(i,j)] = 0 - def print_game_state(i,j): """ Prints game state as a matrix""" for i in range(3): @@ -48,19 +32,45 @@ def check_for_win(cell_states): for j in range(3): if ( cell_states.get((0,j)) == cell_states.get((1,j)) == cell_states.get((2,j)) != 0) : - print "you win" + declare_winner(cell_states.get((0,j))) #check horizontals for i in range(3): if ( cell_states.get((i, 0)) == cell_states.get((i, 1)) == cell_states.get((i ,2)) != 0) : - print "you win" + declare_winner(cell_states.get((i, 0))) #check diagonals if (cell_states.get((0, 0)) == cell_states.get((1, 1)) == cell_states.get((2,2)) != 0) : - print "you win 1" + declare_winner(cell_states.get((1, 1))) elif (cell_states.get((2, 0)) == cell_states.get((1, 1)) == cell_states.get((0, 2)) != 0) : - print "you win 2" + declare_winner(cell_states.get((1, 1))) + +def declare_winner(int): + if int == 1: + print "Player 1 wins" + elif int == -1: + print "Player 2 wins" + + +size = width, height = 1280, 920 +black = 0, 0, 0 +red = 200, 0, 0 +blue = 0, 0, 200 + +screen = pygame.display.set_mode(size) + +# Initializing the game state +cell_states = dict() +for i in range(3): + for j in range(3): + cell_states[(i,j)] = 0 + +#Find the screen's "thirds" +left_third = width/3.0 +right_third = 2.0 * (left_third) +top_third = height/3.0 +bottom_third = 2.0 * (top_third) #Creating borders left = pygame.Rect((left_third-5.0), 0, 10, height) @@ -72,6 +82,18 @@ def check_for_win(cell_states): bottom = pygame.Rect(0, (bottom_third-5.0), width, 10) pygame.draw.rect(screen, (200,200,200) , bottom) +rect_widths = (width-20)/3.0 +rect_heights = (height-20)/3.0 +rect_x_pos = [0, left_third+5, right_third+5] +rect_y_pos = [0, top_third+5, bottom_third+5] + +#creates a dictionary of rectangles +rect_dict = dict() +for i in range(len(rect_x_pos)): + for j in range(len(rect_y_pos)): + rect_dict[(j,i)] = pygame.Rect(rect_x_pos[i], rect_y_pos[j], rect_widths, rect_heights) + +turn = 0 #initialize the turn while True: for event in pygame.event.get(): @@ -83,8 +105,17 @@ def check_for_win(cell_states): pos = pygame.mouse.get_pos() #update clicked cell - if cell_states[find_third(pos)] == 0: + if cell_states[find_third(pos)] == 0 and (turn % 2 == 0) : cell_states[find_third(pos)] = 1 + update_rectangle = rect_dict.get(find_third(pos)) + pygame.draw.rect(screen, blue, update_rectangle) + turn +=1 + elif cell_states[find_third(pos)] == 0 and (turn % 2 != 0) : + cell_states[find_third(pos)] = -1 + update_rectangle = rect_dict.get(find_third(pos)) + pygame.draw.rect(screen, red, update_rectangle) + turn +=1 + print_game_state(i,j) check_for_win (cell_states) From 774c2782a4c252611d93ed48a5267ec5f272802e Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 5 Mar 2016 19:50:08 -0500 Subject: [PATCH 11/20] got a working tracker for green roly poly ball --- sandbox/trackingOpencv.py | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sandbox/trackingOpencv.py diff --git a/sandbox/trackingOpencv.py b/sandbox/trackingOpencv.py new file mode 100644 index 0000000..846e3f6 --- /dev/null +++ b/sandbox/trackingOpencv.py @@ -0,0 +1,63 @@ +import cv2 +import numpy as np + +cap = cv2.VideoCapture(0) + +# take first frame of the video +ret, frame = cap.read() + +# define range of green color in HSV +lower_blue = np.array([50,75,50]) +upper_blue = np.array([75,150,200]) + +# setup initial location of window +r,h,c,w = 200,200,200,200 # simply hardcoded the values +track_window = (c,r,w,h) + +# set up the ROI for tracking +roi = frame[r:r+h, c:c+w] +hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) + +# Threshold the HSV image to get only blue colors +mask = cv2.inRange(hsv_roi, lower_blue, upper_blue) + +roi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180]) +cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) + +# Setup the termination criteria, either 10 iteration or move by atleast 1 pt +term_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ) + +while(1): + + # Take each frame + ret, frame = cap.read() + frame = cv2.flip(frame,1) + + # Convert BGR to HSV + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1) + + ret, track_window = cv2.meanShift(dst, track_window, term_crit) + + #draw it on frame + x,y,w,h = track_window + img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) + + # define range of green color in HSV + lower_blue = np.array([50,75,50]) + upper_blue = np.array([75,150,200]) + + # Threshold the HSV image to get only blue colors + mask = cv2.inRange(hsv, lower_blue, upper_blue) + + # Bitwise-AND mask and original image + res = cv2.bitwise_and(frame,frame, mask= mask) + + cv2.imshow('frame',frame) + cv2.imshow('mask',mask) + cv2.imshow('res',res) + k = cv2.waitKey(5) & 0xFF + if k == 27: + break + +cv2.destroyAllWindows() From ef8e9b9b380a48602932da1a7d0960a7f406291c Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 5 Mar 2016 20:52:13 -0500 Subject: [PATCH 12/20] made a grid function to determine position --- sandbox/trackingOpencv.py | 40 +++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/sandbox/trackingOpencv.py b/sandbox/trackingOpencv.py index 846e3f6..d59a2fb 100644 --- a/sandbox/trackingOpencv.py +++ b/sandbox/trackingOpencv.py @@ -1,6 +1,26 @@ import cv2 import numpy as np +def grid(x,y): + x = x/640. + y = y/480. + + if x < .33: + x_return = 0 + elif x < .66: + x_return = 1 + else: + x_return = 2 + + if y < .33: + y_return = 0 + elif y < .66: + y_return = 1 + else: + y_return = 2 + + return x_return, y_return + cap = cv2.VideoCapture(0) # take first frame of the video @@ -11,7 +31,7 @@ upper_blue = np.array([75,150,200]) # setup initial location of window -r,h,c,w = 200,200,200,200 # simply hardcoded the values +r,h,c,w = 0,120,0,120 # simply hardcoded the values track_window = (c,r,w,h) # set up the ROI for tracking @@ -37,21 +57,21 @@ hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1) + # Threshold the HSV image to get only blue colors + + mask = cv2.inRange(hsv, lower_blue, upper_blue) + + # Bitwise-AND mask and original image + res = cv2.bitwise_and(frame,frame, mask= mask) + ret, track_window = cv2.meanShift(dst, track_window, term_crit) #draw it on frame x,y,w,h = track_window - img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) - - # define range of green color in HSV - lower_blue = np.array([50,75,50]) - upper_blue = np.array([75,150,200]) - # Threshold the HSV image to get only blue colors - mask = cv2.inRange(hsv, lower_blue, upper_blue) + print grid(x+(w/2), y+(h/2)) - # Bitwise-AND mask and original image - res = cv2.bitwise_and(frame,frame, mask= mask) + img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) cv2.imshow('frame',frame) cv2.imshow('mask',mask) From 3bfa9d4dbae5dcf5f63ac7862a48b32c263fc2d7 Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 5 Mar 2016 20:56:08 -0500 Subject: [PATCH 13/20] moved starting rectangle to center --- sandbox/trackingOpencv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sandbox/trackingOpencv.py b/sandbox/trackingOpencv.py index d59a2fb..ad749f7 100644 --- a/sandbox/trackingOpencv.py +++ b/sandbox/trackingOpencv.py @@ -31,7 +31,7 @@ def grid(x,y): upper_blue = np.array([75,150,200]) # setup initial location of window -r,h,c,w = 0,120,0,120 # simply hardcoded the values +r,h,c,w = 200,120,260,120 # simply hardcoded the values track_window = (c,r,w,h) # set up the ROI for tracking From 7011fe80d62efc8a3bcf4b913d27368eb7017bdb Mon Sep 17 00:00:00 2001 From: nathan Date: Tue, 8 Mar 2016 21:35:11 -0500 Subject: [PATCH 14/20] integrated openCV and TicTacToe in TicTacToeTest.py --- sandbox/TicTacToeTest.py | 66 +++++++++++++++++++++++++++++++++++- sandbox/maskOpenCV.py | 31 +++++++++++++++++ sandbox/trackOpenCV.py | 47 +++++++++++++++++++++++++ sandbox/trackingOpencv.py | 2 +- sandbox/webcamCaptureTest.py | 2 +- 5 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 sandbox/maskOpenCV.py create mode 100644 sandbox/trackOpenCV.py diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py index 05d0323..9aeaa85 100644 --- a/sandbox/TicTacToeTest.py +++ b/sandbox/TicTacToeTest.py @@ -1,4 +1,34 @@ import sys, pygame +import cv2 +import numpy as np +from time import time + +cap = cv2.VideoCapture(0) + +# take first frame of the video +ret, frame = cap.read() + +# define range of green color in HSV +lower_blue = np.array([50,75,50]) +upper_blue = np.array([75,150,200]) + +# setup initial location of window +r,h,c,w = 200,120,260,120 # simply hardcoded the values +track_window = (c,r,w,h) + +# set up the ROI for tracking +roi = frame[r:r+h, c:c+w] +hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) + +# Threshold the HSV image to get only blue colors +mask = cv2.inRange(hsv_roi, lower_blue, upper_blue) + +roi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180]) +cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) + +# Setup the termination criteria, either 10 iteration or move by atleast 1 pt +term_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ) + pygame.init() def print_game_state(i,j): @@ -96,13 +126,44 @@ def declare_winner(int): turn = 0 #initialize the turn while True: + # Take each frame + ret, frame = cap.read() + frame = cv2.flip(frame,1) + + # Convert BGR to HSV + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1) + + # Threshold the HSV image to get only blue colors + + # mask = cv2.inRange(hsv, lower_blue, upper_blue) + + # Bitwise-AND mask and original image + # res = cv2.bitwise_and(frame,frame, mask= mask) + + ret, track_window = cv2.meanShift(dst, track_window, term_crit) + + # #draw it on frame + x,y,w,h = track_window + + img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) + + cv2.imshow('frame',frame) + # cv2.imshow('mask',mask) + # cv2.imshow('res',res) + k = cv2.waitKey(5) & 0xFF + if k == 27: + break + for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() #control loop + if event.type == pygame.MOUSEBUTTONUP: - pos = pygame.mouse.get_pos() + pos = (2*(x+(w/2)), 2*(y+(h/2))) + print pos #update clicked cell if cell_states[find_third(pos)] == 0 and (turn % 2 == 0) : @@ -124,4 +185,7 @@ def declare_winner(int): # screen.blit(ball, ballrect) pygame.display.flip() +#close opencv windows +cv2.destroyAllWindows() + diff --git a/sandbox/maskOpenCV.py b/sandbox/maskOpenCV.py new file mode 100644 index 0000000..e417742 --- /dev/null +++ b/sandbox/maskOpenCV.py @@ -0,0 +1,31 @@ +import cv2 +import numpy as np + +cap = cv2.VideoCapture(0) + +while(1): + + # Take each frame + _, frame = cap.read() + + # Convert BGR to HSV + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + + # define range of blue color in HSV + lower_blue = np.array([110,50,50]) + upper_blue = np.array([130,255,255]) + + # Threshold the HSV image to get only blue colors + mask = cv2.inRange(hsv, lower_blue, upper_blue) + + # Bitwise-AND mask and original image + res = cv2.bitwise_and(frame,frame, mask= mask) + + cv2.imshow('frame',frame) + cv2.imshow('mask',mask) + cv2.imshow('res',res) + k = cv2.waitKey(5) & 0xFF + if k == 27: + break + +cv2.destroyAllWindows() diff --git a/sandbox/trackOpenCV.py b/sandbox/trackOpenCV.py new file mode 100644 index 0000000..6f67394 --- /dev/null +++ b/sandbox/trackOpenCV.py @@ -0,0 +1,47 @@ +import numpy as np +import cv2 + +cap = cv2.VideoCapture(0) + +# take first frame of the video +ret,frame = cap.read() + +# setup initial location of window +r,h,c,w = 0,200,0,200 # simply hardcoded the values +track_window = (c,r,w,h) + +# set up the ROI for tracking +roi = frame[r:r+h, c:c+w] +hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) +mask = cv2.inRange(hsv_roi, np.array((100., 50.,50.)), np.array((130.,100.,100.))) +roi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180]) +cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) + +# Setup the termination criteria, either 10 iteration or move by atleast 1 pt +term_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ) + +while(1): + ret ,frame = cap.read() + frame = cv2.flip(frame,1) + if ret == True: + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1) + + # apply meanshift to get the new location + ret, track_window = cv2.meanShift(dst, track_window, term_crit) + + # Draw it on image + x,y,w,h = track_window + img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) + cv2.imshow('img2',frame) + + k = cv2.waitKey(60) & 0xff + if k == 27: + break + else: + cv2.imwrite(chr(k)+".jpg",img2) + else: + break + +cv2.destroyAllWindows() +cap.release() diff --git a/sandbox/trackingOpencv.py b/sandbox/trackingOpencv.py index ad749f7..c24ba39 100644 --- a/sandbox/trackingOpencv.py +++ b/sandbox/trackingOpencv.py @@ -69,7 +69,7 @@ def grid(x,y): #draw it on frame x,y,w,h = track_window - print grid(x+(w/2), y+(h/2)) + print (x+(w/2), y+(h/2)) img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) diff --git a/sandbox/webcamCaptureTest.py b/sandbox/webcamCaptureTest.py index 4683ce9..0e80b48 100644 --- a/sandbox/webcamCaptureTest.py +++ b/sandbox/webcamCaptureTest.py @@ -14,7 +14,7 @@ def rbgcvt(image): mask = cv2.inRange(image, lower, upper) output = cv2.bitwise_and(image, image, mask = mask) - return output + return mask cap = cv2.VideoCapture(0) From 6afe48ddb4c0d918d7fdc2757f9d996e9b3ce23c Mon Sep 17 00:00:00 2001 From: John Moreland Date: Wed, 9 Mar 2016 20:38:27 -0500 Subject: [PATCH 15/20] updates --- sandbox/TicTacToeTest.py | 2 +- sandbox/pygameTest1 | 2 ++ sandbox/webcamCaptureTest.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 sandbox/pygameTest1 diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py index 05d0323..52acacc 100644 --- a/sandbox/TicTacToeTest.py +++ b/sandbox/TicTacToeTest.py @@ -119,7 +119,7 @@ def declare_winner(int): print_game_state(i,j) check_for_win (cell_states) - + # screen.fill(black) # screen.blit(ball, ballrect) pygame.display.flip() diff --git a/sandbox/pygameTest1 b/sandbox/pygameTest1 new file mode 100644 index 0000000..2699237 --- /dev/null +++ b/sandbox/pygameTest1 @@ -0,0 +1,2 @@ +import sys, pygame +pygame.init() \ No newline at end of file diff --git a/sandbox/webcamCaptureTest.py b/sandbox/webcamCaptureTest.py index 4683ce9..9db8a44 100644 --- a/sandbox/webcamCaptureTest.py +++ b/sandbox/webcamCaptureTest.py @@ -3,7 +3,7 @@ #make color filter function def rbgcvt(image): - boundaries = [([0, 0, 50], [50, 50, 255])] + boundaries = [([0, 0, 50], [100, 100, 255])] for (lower, upper) in boundaries: # create NumPy arrays from the boundaries lower = np.array(lower, dtype = "uint8") From ba82751a3f9ee5da6fc55cf758226421060b7ce7 Mon Sep 17 00:00:00 2001 From: John Moreland Date: Wed, 9 Mar 2016 21:07:19 -0500 Subject: [PATCH 16/20] added an AI --- sandbox/TicTacToeTest.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/sandbox/TicTacToeTest.py b/sandbox/TicTacToeTest.py index 8c19dc6..de211df 100644 --- a/sandbox/TicTacToeTest.py +++ b/sandbox/TicTacToeTest.py @@ -1,6 +1,7 @@ import sys, pygame import cv2 import numpy as np +import random from time import time cap = cv2.VideoCapture(0) @@ -57,6 +58,12 @@ def find_third(pos): i = 2 return (i , j) +def generate_random_cell(): + i = random.randint(0,2) + j = random.randint(0,2) + # print i,j + return (i , j) + def check_for_win(cell_states): #check verticals for j in range(3): @@ -136,7 +143,7 @@ def declare_winner(int): # Threshold the HSV image to get only blue colors - # mask = cv2.inRange(hsv, lower_blue, upper_blue) + mask = cv2.inRange(hsv, lower_blue, upper_blue) # Bitwise-AND mask and original image # res = cv2.bitwise_and(frame,frame, mask= mask) @@ -149,7 +156,7 @@ def declare_winner(int): img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2) cv2.imshow('frame',frame) - # cv2.imshow('mask',mask) + cv2.imshow('mask',mask) # cv2.imshow('res',res) k = cv2.waitKey(5) & 0xFF if k == 27: @@ -162,27 +169,32 @@ def declare_winner(int): #control loop if event.type == pygame.MOUSEBUTTONUP: - pos = (2*(x+(w/2)), 2*(y+(h/2))) - print pos + pos = (2*(x+(w/2)), 2*(y+(h/2))) #green ball location + # print pos #update clicked cell if cell_states[find_third(pos)] == 0 and (turn % 2 == 0) : + #user input cell_states[find_third(pos)] = 1 update_rectangle = rect_dict.get(find_third(pos)) pygame.draw.rect(screen, blue, update_rectangle) turn +=1 - elif cell_states[find_third(pos)] == 0 and (turn % 2 != 0) : - cell_states[find_third(pos)] = -1 - update_rectangle = rect_dict.get(find_third(pos)) + check_for_win (cell_states) + + #AI turn + random_cell = generate_random_cell() + cell_states[random_cell] = -1 + print cell_states + update_rectangle = rect_dict.get(random_cell) pygame.draw.rect(screen, red, update_rectangle) + turn +=1 - print_game_state(i,j) + # print_game_state(i,j) check_for_win (cell_states) - # screen.fill(black) - # screen.blit(ball, ballrect) + pygame.display.flip() #close opencv windows From 1119d1f8ec9ddd961cebbbe2f892f285c6806e86 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 9 Mar 2016 21:21:55 -0500 Subject: [PATCH 17/20] play the game on a timer --- sandbox/.TicTacToeTest.py.swp | Bin 0 -> 20480 bytes sandbox/TicTacToeTest.py | 49 +++++++++++++++++++--------------- 2 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 sandbox/.TicTacToeTest.py.swp diff --git a/sandbox/.TicTacToeTest.py.swp b/sandbox/.TicTacToeTest.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..fd187e2829f3a59a6b994ad2bf98e71cfdd99010 GIT binary patch literal 20480 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 t + 3: + print "hello" + t = time() + pos = (2*(x+(w/2)), 2*(y+(h/2))) #green ball location + # print pos + + #update clicked cell + if cell_states[find_third(pos)] == 0 and (turn % 2 == 0) : + #user input + cell_states[find_third(pos)] = 1 + update_rectangle = rect_dict.get(find_third(pos)) + pygame.draw.rect(screen, blue, update_rectangle) + turn +=1 + check_for_win (cell_states) - #AI turn - random_cell = generate_random_cell() - cell_states[random_cell] = -1 - print cell_states - update_rectangle = rect_dict.get(random_cell) - pygame.draw.rect(screen, red, update_rectangle) + #AI turn + random_cell = generate_random_cell() + cell_states[random_cell] = -1 + print cell_states + update_rectangle = rect_dict.get(random_cell) + pygame.draw.rect(screen, red, update_rectangle) - turn +=1 + turn +=1 - # print_game_state(i,j) + # print_game_state(i,j) - check_for_win (cell_states) - + check_for_win (cell_states) pygame.display.flip() From d7c2e10430eaa207eb52338e439e0b4f0d325a3c Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 9 Mar 2016 21:54:13 -0500 Subject: [PATCH 18/20] Finalized project --- ProjectWriteupReflection.pdf | Bin 0 -> 158063 bytes README.md | 2 ++ README.md~ | 5 +++++ sandbox/TicTacToeTest.py => TicTacToeTest.py | 2 -- sandbox/.TicTacToeTest.py.swp | Bin 20480 -> 20480 bytes 5 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 ProjectWriteupReflection.pdf create mode 100644 README.md~ rename sandbox/TicTacToeTest.py => TicTacToeTest.py (99%) diff --git a/ProjectWriteupReflection.pdf b/ProjectWriteupReflection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9a30b85acc2624d62a9308d5a1f3a142e0a73171 GIT binary patch literal 158063 zcmeFZ2T)U68z>qJDp-&%h=BAOq<2suARR)7073{DkQ#as3q`s>=uLspiN)@U|M$Oh=gr)A-^{xw%(&M6*7|zcd#|;&OlmT+Ts%Ml0;c*Osiy?| zbPwokO)Uw;#p$?};5IN52e>=TjE)C)MaLr`{6LV8j{6Cn0i6&(AMTou&XA5@e@ zeGQyN>3D^H(sTZ0C;tDm4Y#}uoq@O+zW@)EUx>$4*o>E#kKa_pOwi1fPY`Ni!oy=` zZVr?DpU*Hn_W;7t0cK)N;F<_EHG4W`@znI`Q(=7ixV6_KvUCyl%(2IWjFdsqFGnUH zF&;g-on1%5NMm(tNPtYHYVu+(o9R>2<8mgl=eI5~Y%&6f-`-F-cj<4M|KB+G+>(Dp zshWue3_-^u^2@ltTrF+lX!6|F;xExB^cRf(>URw~f%72$9UX%IZnmdSpI%H|xWRej z2C>bJ$2Zgf=6r8tD0Qja@u=?Hk!fUSeo6V{<@G?yJ9T{5ct18j6MOJrmUDoF)9h)f zz1QcbV-HAJ0f6rmIO4S7{iTgEF5pZa+n$Hj1Kgh=4lX3Z zdme4L0L9JxQ*AH|Ve8}o#Tnu}WmGe zy5FAA<)P#GlkIu7{Bq5?yZ+*r^T~gx{}}FwP=h&0+gjV%+MH{Lt1Gzlvvtt0GlBk0 zO=mb12A0DK@e{1+U}A$Xw{@__(fBi&Wu!I#NaZImxWzL^I*|vsVGSo!$DdW;ry73< z^M~ZzI&d>wQQ#3gpZYrnMELpndHxaxXJ5~z0JjxnXmB*w+RUF@d-$85#G2>L3-y71t~c>)jcL!s=Ex-*Dm>7d3fmpJ>VkIg-b*i z&YA)D&c(#La4zp3zsnac;sm{P4IejbcpGr>!letBFI^$LaTTY-#Y=z-7cX5V!n;Cz zpNHg;`c-;O6Z>#dGICx4u$IHC$h4y3-sx);{DP(k#|Y$yhCT+q#~P_6GmP5M*Ny#5 z(lT$Fm_ZwxW-uQiCmi{^IKCGz{gwGo@;FYoK^Y>PXcsSBCcJV5_b+Z5&ZHNKE?vfP z#=Am7&ddKu9jsyh>O;{6sY!Th!!#M6rbBNZy+8!hW9dx>1fz`U*4ZfF1`ZF0MFfxn z4Dbgj)*6F9n3$$<#CK(_W1Kng%f^=EnK9_QcQMy7L6!;S#N}=B+QTm#qfJrEi8>ls zWEEzQP^+wOFJowHul|v2B8Pd#-6qHMv<{)JRL8PZCqbT3twG?N7a~hR2d$ZzAA#Sa~PEJ=TP|;65um(yCEoH&89YVGCxze?9Yhj(uddE#g{RaAI}`>w!bX zJ?3@GJtxSs!060=HS{2Z5pVYQz!H>PD$-~>J0`JCeR}4;zI6-QlAPa(%P3!8Bh5=? zO@MSZvu5tgx*c}Ve{hE0QRXwVK+EXGC>{AhwVXwkswLLifg?T)Qxf0m3xrE1THo|5 z6}k2gQr2%xs?Je)%d*vzSqI(h+-W`3>+%-?b%iK_Pn;h*5p?9cJ( z9Me$bB!@UO>^c6!ML7jdmK_{g+d2NLzEGsD>N#2{4qxOF>K^OIf7t$G3D59jyAjDNI*px8hw`j_HO09?owo~H4tT?D0&+R-#)`g6-A7UFKFe7f zu?U`4QFX#}#-T08q($|;M7|BwRicd8QS4Mn911%&X^E1gM~8;4o-}G72bNS&A{Cn8 z;9>rQG{l;E`q$;dldhZKphDTGlI%MorHSRK71R48J-Lu7G<8L*c-p-MCbEG@PrJ~l zZv<|mNzyH5XMoQyKTbN1Cw}!($y;0;8gk)#{W(pcX3qDp^?KEd&hMj=nC>6S#oEKS z^RKPTrYCE-!ZSuzQE<_PY?ll}y(N!s?Zy6Fj%WQoWUiH23JDrk2(ERZ20LuS{*Omx zg_%EqRpk{vQ`wU)*TgI7vS= z@9BbzEm*7|a4|HO}%cW92Wa!2KhC9sZFX@qWpcVtk(=$PK#c!=rY zc2juPPNw-9qD)jWtYm1%)@C(LCsiE@b9szR9hl$1g42!JfWmD=CYd^4^FNe-0Ha}W z0?nBPkxroi5L5Kz5syy=x}v-!)1`k5GNzK2o-?M98yGKNQF~|ypU%Wwg%69peq zoM!cSt9Pi-8jR%28bQ^vmKGn{4A~zT_kaAl6z{lfFjQTUFWx%36y^GuGL4COu~X55 zKVDI!$@`k=p$qPYSZ$y3&lHmG(}{J}YVBbpN&)N4`^`alMv)_OGkG*=FrO=_tT@vHj6NnsBYifeCv;~l8*QFV)t0b{kZ=zsug|wz=VU56u&FKs-iuFV4m>*smg*!6)KO3vyTW{d3z>c>fimZ`xFmP({vG{6 zXusw+H^1%i7n~b{FBU}e(V^9>Mu*0-6SZuOE-^f(5#u)U=E#zUnoZ-;#ua)2W~XAE zyZ7AltgQ?n>Q15ry9I}qn<1j?N%D^>N=uj~5PCDiOc?Mv(hSXMm56zuQCYVNkz$$s#B?=DXwM31jy6(Z{;cVVR&)e`W7JKBa}v_ihgV zkg8u{>oxR79Gx~Tish3is5$t>JuT`XFFgYwKaIoV9h2AJ=R=e4t+KWp^igIYd^>&n z&{g?gYSd7D=wz=QXedO&K5(bA{`GO@S0{rdP3ZgO>W_Nb6{=?d_qd+CRjn4M8zxY$ z{a|%Xx_=@(4^t^kHc^(>)Wf#W+7BgGz6xW;h*F z%tsD2zlW$1SbXEqwDdN9*F4zRFxa=3Hfcy?QYuW+iKZI4iCd7rz}%g;lu zZ`%8NfPCkJ)YMVGH3PS{0=ScNvZ`XG8cIrfhAdulERlTAwV;k#>|v9;g>l0RjTM@> z;SFQt(T%=7+j~v#^NkhK>ag{+24jg>T71QP;L=chw!Ia*ox^yy>HeOH;FY`ot^{n& zaXCoeKB=WT6JMNp)YF58me41pn%45=o8Pkk=EGvsHu~Wo_{u+a_!W2m+wG8<;k138 zB|ax#k2D#qMF-)nAzTN_Yb`L&8jHf_%fFMz*XvhKQ7X7we_ow4671@g@4&coyq@1o zM9;GCEc@Et^|w8_@ezqkJ=mH`)@i)L@$V^Nk?fnreL`AqMBCNV@_FM!CIkYGQV{G* zq#w0qvxjUXVDE`B$%HHL)Fn`B{Y&5q3OR-14Lw58s+;GP2ZIl9O6`^+h*qdi8l;vrzq zNHv2_Hh<6S0+;of&n7x1kxD zaAoEuu7va7tX>~1lZZ|sqn+b1kQ?WN3kIp~kY`eX%O*AKGs$kCF~R|UxY8qij&PCi zSJ`VU9<+hok=0~kZ4e+`Doahk$V2^U7{_r0g>aSX_V4Qd`)1&?`d9empHEu<4*%B^ z*q?BstmT+eR)|`ff*Q&$HTSW=gB;eH^rMN)=B?lLQRTN}7q0&M-Q#~boY=i({E3FI zf))z_JWEz9K}|JCUD*!%)vZ>gN>4lP4Djs;|EOp$D=pZ*J(FUX*{&7^;4 zTrxWQo=Ruwl7_E7v5K0fHv6O9gKOY5m!}nng6p(fC$iCaB5}hBi?DhIuuHUKe=dHd z@-FAxfs!?90p!L$NUphE`{spV_X@2T=JOe#W0yj5!QI{1&q!+EFt`Nr`1wGlmxapR z4SQr266*JKNx9o0v9hDAJM<`7mu262LTc_X@MLZ03~;mN3_v)b;z*7-vdRJ%)qG$r zTV69MP;@G9>z4OR0~zTKC0!LZ_!2@1!g6I{ITmJYdMfAqwN@AQB~ybc=iYex8F~9J zQEu=bbs0suY6qL>Wse@-Q}C$l-gDS&`V2(B)!I?aRIt>tP_Un9C0`IfP;OgyF$rt3 zIRiB9l6v)U3Y%_iA4{q8Xx`6QI?UtFMyvMTMnoS^v)pSw*45jNO-y1~_b^H180*8L`=fBDFvJ|<#cGve6uaZ0{@3w!ZN3q#wCI&r;gNP@tH`2}1Ti-QLx^@owuXaR zcC~L9WQZbEs%CH}LCXW2saQ*82N$A&t)7as*CjB_noU{@(l^!$tMc z8+$C@s>alBoPca%a3b`c{wSlNbO}3n@!?19$F}JhoaDZ3=L2;=h9q>(FJG^DL5JO3 zHf&BFn>QuSnth-2I3m1JeeM;Fb#G`&6R_wEz&#-Ac*`j~GWGD~$EDhzgIYf%i>8Cl zSxJjt75PQ+4%Wlvls2ny;;^X+xOtAo_Z|@(oJ5J6yYX`>j^a-t0xA|nC`E-PPTQJ* z=YAlp-3{|IJU1i5FKWh!Kcvudk^0#43+WdYFHT~dSpR`0`CEuRoW3asFH)1=bMo!O zCih=_NV=3{X7(L-?a8~2^Rv}g4w~F*oZK=KS0&mzz9cv3VmGRBVTjo!^}vJup)gMJ zmEa`2m3x6_fFVO%h_RLtV;a}$n|6s(E~Vh?^x}P<{Z9s|3m?hxUr?TF9-EN5_S;N9 z^#v6^eJ)z~Q&jTO7{uq`ggHb1k~fW2mHRF)(s~A9DZY?}Q{$`xN2at{v+-KlQCF?D z{THcW(7fT(94t;+zW3D%?HyHIp{3r331K+Dddcbkngis|3r;A^T2>{fICqwt<_L!_ z^dxn<@D0v}S5m?w?G2c$YW)#*6&6QQ>N>@OmB-9=xV-Zjw8k${Zttj&h(H@3CIlbT zs=H+0mCQY-E;9-G((k})BblBrx@JRi28dZ=;mU!gxb%e4%f%Xn` z{JSkpV&9IOe6MC(>Iq3Gby2Vzs0>Zu+>MNCW+I4866v)&?eAu)Nm=6$Q?WSt?1}Bi z-8K-kB4R@$G(MhB$G=-s8O{{fhQJ#JGWtWFaIb<2jClmt^>-A|6Bz^9Lt2&sCpD70 zZXq1M5QTT^5OHn@n#7)?*n`&HGQ|(HcZA&U;#r2~>kTA) z&iIzns27R1_{&W0Kj$+1!HA@@d)BPs7w{K>j)}7N9R}>R@$VK6yiaTYn{+qUWR)l~ z`A+90?SE6XH8680+I-{kA*sFN^)F*c{KO1dejfH%@`23`UnS)Oqn{GC{lcuZ4*xFK zdUL|hg@O6{f0|L^ry2iKG@Nd7KXs%0797j{SI-Im68g%zv{?9msCxGgpZ>2_N6={2 zK*YM74E@Ylr_eGF3u=1b3aeX4oRhK)d$E$hW%bcrz<1TRrDb3Zc#l#R>w<4n9#s`% zvgwc*L&DUONUeJYU>(9JwWzyVx={+yY6;X(#UzFOYGS$AtVjM681!VUnAcJ=$I4ZJ zTa4ycLmpmkW;WoZIkaJE=*y0WN2>2?7&K(Nef`~( zhEy{!r!8fazX5L-{chlQon@8f29<5EpcbIN8q+?(mEicWocM{GirsC$nwIqc1I6>u zFeW75iCn^1^oLbUyvrEQhz}F@p2NAZG?XDca$?ViYaPhi(v{=Hba@P7x8Z6k6}2EB zQ9>YM^jff}n1mt_ioGH$%Wz<1|MpZTG0eJgL1lOEJfwMfd1yPggXOkruw!Vqj(;a?&aJI%8j&#kvo^K2H+yq*pU*x=7b+}1PnGcSb9(2qX~ulJZH<2>BLf4` zaiQ?}Y>D#gi4%3_S^XF89ySyrwO;2rcq8~HNqNq=^<37~3dsEb zNn*a6yztXK**e-~0=bPqu#ZEeCw_1tL3XJ^Y=Qx1BP)I>gNw+^zI|n=$a1F4{zS)O zu6c}Kv_RCcN+|GMc1=py8)Kea1N+L{gYunJ^V0Ye(zz=~BO6d@1Bcl?{l^t$3?K;vwFkJ(VE5~bru43!8zJa7Og4iSh>UO+7o>EkkU26~0>=7?- zPJo(NLuL8%@)y;7Tv6AsVaS?cFUw{<^AyXK)%^UqP_<}#NDgS*H>UXUaPhT*K`p)X_JCRQHcOV|VQX*T%ySrXtM?`V!dJ5p{ zd|grS1siePOKs{@C7Gd5yZuTxLG;?*CPxQ0E5DDMmOlS-Q1kP}o~>_1i`!h10jbMq-P89&<^cHU{y2X3f74$0RyVia=$tTN;JGWG z;$%CM9CU~{18}`N{jcD}nCG-B_8!pAyZex9o~-~$vHux^Kl#4!!yLBFNr{Jj8S&OV ze(#x(d&K2&aB#vb!?bjYF*<$WEgw$Er(NlM47}_NxJdCQ;@@_zQT_P%tUP{RDYYlIa6u6X@XB z8K6C7*~?!(^V{L@8Gujq{Tbj4z+AXZG4NGFM9wb(B-NL51`vtfpTG)I*DmE2Ok^&5 z`9=&Pk~)dOOEwTm=!b95CDIXZTW^cp_u!a7R zgy;0ku2CsqnlE&D{w zVqeDs6*+TtpXv^iwc!bG^<3(A$;){e`*BO%Rh3D|b-%~@+m^Ir>|nYa(%6Ki-ZjB9 zApcHCdLkBDdt;tg8T&Cd#52SBn&9!}9Shq>2)OkDD1InAr zzeesQzwJCp_&Huu%CzO761!^F*@@W8BolxxXImrz8)!R!Ii zpo$Ui9Dh~I3{-*b>dN>2m{#AZTU5bCNd_X)baJOsczGiWaQWrmX4b8_AKWiUN+-6)7IKu1a=l4+ zjQdj#p8Nk-=xp`VGXOMbj7Dv;aY}mr!G+C{za{>c!Am=W#zRtU2eZEl#HHDB;}NUL zo}NYC``kKv`aia}50&1!#iKFh({>CW0kyhQB``A zwVa^c6w5|*Ld2?yn@)4fw`Obv1e?_RzQd#4&ExE|6i_$!vgJVwx9QXP(4&Q z1K>8;3Ygc6^{uIvLO*EFqeYR~j<-WZ6ohBTKI^~Wq*c7?oWa~n0u=C%6OeUAS(H~l zlD#`v=Db8S7h@#Vsb8ILbscw*;hWUS;IUu#;GG(=S^LJapN>_aaP6cG#DPOkwGf3j+6t|TF5?W}p~8p9g`O<*=P z2l~=LN`@W`Q*Qv}fl6r$(W6TZ>Yy{g4A8Zy!P4soZ)LZOYeay0^fn~uhb!_~$ZdRQ zq^&q{gH}@^!zEqx)^t09y(AeXLY|QjQ&qth${_A3olj&%AmFEirvs#W^{^9*N69oG z?@V^hBIa3`1F6ZzbqSMjv*gFwq@K4!?Xlz(ZFu{guy->(TGVd%#W&0{gv&=EBXG}V zL#^NiYBy3((F)RT@edh?9f79&oy>B;#t4{w8})UA4%Y#$2V=_nmy?BU8F+v+8YHD| zJ7um*5uVq|5{S$bD5`VVrNXC@7*<*r;XdvRy zTdaMZqnvEL*?7{Tt-r!dzm-r+;>uRD-Q!0nxQXPAp|31Ux{{f(-A2;Gu1Xk2JfavT z5HZq~QLcjwzc0ScMv-i!(IszUma*+>{ZV?b#>>}LU~V&+Yj+DY_ATaet4$Efv(nzA z#sT7?=xW!ar!^Ax@|B}&&F)^}QB^|MP*NCND(UWF3{4I7QB~NqzIRPZcUUF5vaY>% za*k8?+m(pG)VDdJEjO7SUeN?xeE2u%3jkboIEtyqAGLL}-X3K38mtd==U(hNE|dPR zPzS@0-bF2|VXU^(cK5gM0QOg2{w?u;4PH3B%e_pCJl>L$hMhpSUTxVFuAtW!7Ixxp z$Nc$(BHpDxH?~nh^c8Ro@-NiC>(Nsqi%&7j+F>9ReAG-;u51ct2twD`_&l@VJ zpY|Rmu^VAOsxo}Cr)_o2BS1y#qjfxXsLp2~X4u$0$3J`|QYdQRr}5w&_;ywi^|w zHSz+c5q8+KXjM!^y3I@|f#4!be4VcA5889M$z^hjtsgn^r%x~w+Uk_u`Xex20ej{#GT#x z()e~9^Q^}{A7rc5AyDpS9cluB;8!wRO*2|{^BUB`M0py44Uh-Jw?M)Rl+0@Q_R`bs z-W9JN?nC`~1N-6(UqEU8u{Dpw$z;kjbU%d>CMS> zt=Rm)9C>-k6!b%HU;oex;|Um*Nscn;j9KSBk>z+saY|vNJ53g|z`-Zl=~N0&FL~29 zGNZdHzA!_YFm=Gkb#R|Vd?m+|f~1ePM-UWTLK?%@$L%jZ)s~6u6*XBy&Co-{EvQw^ zwp<}wGwg4XtpReu2{X~+ps@))3@6*2QrWU63F)$WZjdnLQ%VL|RdF{8HrU22XH2yl zrJi`=Bxh9j6NQQy12)c0AY|BFIDly=pq{RntIjq6k{RWn47%S#IXxr6hw_8AYit# zeu%jFt8qn|!2Y5pTnz}>bK##38D!&2aZ$=!Hq@28qZZ9GCpS6zO>TzN_-AP#kNsI1 z(EpT%F|2@Wbz-DF(#1%$BJ-FKOL?8!U07NBsLq`J;(^eM zRHZ$dKAz5e=QDuD5|;|27RB3?*JySAuAJEY(iD&yZdW98?s=IGl6Q^*tg+d$xv!jz zh2<@lRe2;9WLEFq8A~GYI~M1`pgBiST48VR9Y11g5mJmU08@RG?ffxc3jG9g=* zQ7|Q)9{!ZoDo5%=LCj8Z3xsG2#FhA*K%njt=e{t-eJb@FvboP?%DePy5)Uy-ps2X0 znoCcCqxw`uX5IPPUD^)P76fUo`$OI+R_4PQ+# zbV6?0oS-0$j0XRhQEy@}-d0#Ks|=Q@K%emfy@EU6FA&;Dy*@Q&(1H2bB(jb>X@75K zSYkpPKmNI4M1B@F!mx5#;ATlel85$OVyo_^y{xGgeOfEL>|l1dEZ)+|dZWM5`_s{w zVd;u533dN$QxNS;Q)*T!dnig;OYK4w0PybbZq|VRpRa3CIJRtWRb4(SpB=ib>=odj~A$;zvcmL`(dUnOvNvRox+reCuz(qn`P z3&iVTEO+fHTJfU1#i{YeC~lZ)q0Ic0 z+&Ltv5>-mZ{&mQHk%59$6*+y}y9((oTt-?g4kzIaxR|BfYHN$%q>@71gQ^XbEvx#a zfQj-!JH=qv$&7dnBf}A)jeAm6rBlm`y54==B+(RTaNxnHq{`Qv;2Q;jtY?5K{-fGw zUWSFkhOQ#$E&im)W6AYx-a~sq@_p!)>S8JXaf_n>FI)wi+NWHemEme5j-3vU!Pd@e z{6JROl&SJ=Uf$pD>=ZGgpD4p~ot5OgrTCiuM?@#%*!)M0>mneX`@!5qPZyS5{rcb* zK}&eT^-?C+!VB=+1E)!Kz0ByB=xd>OAQ#vS7!Tu|JqRAei9UZb#pOxlm_mbFzcIxN z3fI=bM^Luc&a|=l4ykX>YC{N^V|e+~9&WylU0&ko$;#mQB%>UOXxDQ6w8C^rI+w{s z8?kY<+3;Sb+Ds?&82jW~I6wOVz3*Mu6;_GXghCK_UL6)gKO8EP<9CsL#L`ikx@*ox z1nGJFq^4-A0UngfkI$TPF`F*tVg(EC?Y0p_X)o`#n8%T|HIh`MN=9&@@H$L?ozd#%;8yZZUE8i8`@u#jHk^HR}!6O@>Y_ z>f~+fNYY8oNF6Z|l_iqs6+PIvj!Gm_B<-#V|1wDOdAm`Y;I{H+gMh5f8v`=%yi={? zaZ9E3f+Un`xdKBVVv(t+4M)A*oF3&8s$r00f3Zh_50tP-Tzi^Kojw^9K&0;A7HORv z7%iSYsJxTP<1!QU2@d&0Zmv08(;W*}XrDo= zMX%qPIs?4=*eK5Xbnk;HsyzG*aB0=r!JPMy-s@D!wdU@}tQ^+Bv~0BjO#tj6fbnl@ z7QltO(qkhj<45$Q1lVHSU_UeUG!b{_Fq8VPU<;k0nC-HF*vtPiyn%imEuQh1nWc}EwAcy6xz%{0~4Yt5*P2j>x1UNC7 z%B&sROVXrTbIRIg4HjS!esSC zp`93ogu}W)wg|g+Mfsbh$cWE19o!;c_L^`XSG&ma7qKI;cSI1DBHiN0FD_g04qC5d zX_TThzqiF_-nyk)j#q{h-`*r+8{%ntE0AUQI>7$s=JJJ(Z7#2@`YATxtL-uw?c7cK}9A(IuB!1;7**d-QoXX6rDG%aiK`ZlNKG0x_q0 zf#q*epSEoSh@1-3q=yoVULW?WWz2n*4X)VcFw#RY&2)H<#P(+!;%+CdqtiaF3f1s+ z#Q=Qex$@wv0s~u^`F>H`4~m$^tz582jU5!FZ(UPomOH`}6G;ND>T!?bQ<52vU|ytj zYxP{Ilm~K6yW=xun+`N9LtT-WvhI;d>!POpd8V^;?^!)-DBD1D=@CE|IEe|Z@c>?8< zWIE^}8+pwws1PD9{&aW`bq0{P4zt9SrXn`3;iwI&wShB$o^^}+@G)T}x;>?tHF=T^ z+B)^|?Rj;|QS1MwIvIwWCb_VQv)uc3%!VuCeOk{tfxOwunS(W9?%HchWi7W7SYm!LE1*s@w#PTaWx>RPe|X3?_z_7q!V4=TwSOEURV)HwA-@@9qsp z-Sy>)EziYhrq=J7Ju$ee;CVk+Epp{MY&VVtx|zz~T=s0_^ON9F%S}tcp)$d3C(^~v zv;{VKSVU46>2_ZOHk1UzJ8Zxw>yv1a4W57ugXnMUfU4QlDl>Jcd8&qqqs;DvQx3|E zgl)nLa-YSm>J_u)E0nCJoxiau%p9AS7w3vb*^=So9)H+76`7w$Fu%Qi=8ol~!5#%#lNkbYv9X5zWlwN$xzngvFAH$UY^xG8MRMGPiJZ9PpgIcnOv z5jxZi3U}gZdnH>zw$!1NXUA+2L7Yj4jpo&9l`$lMHs4-ow_756Ci}ssa=%So^GJ^F zX&TJE7y}zs{vf0-4!jgJ(*!c5w@#1xP={xxzaQ=}4B6_Gx;@X+j6Trx-Qk`493Fbv zoh{prv5?X=sAZartChe3)Iu8^SJQ$buL`&Ui~6Ly^)@I_;I;49_Ge`uY}Kb-$XAz8 z7zbmX^*PSG5*5YBwi~hY9ieS(2~%Ng&N1>?`!VX!o=;|Fj?CKG{QE!}`U7;ucJtOu zjjz6nu&0mGXy;PG$BDO|E~Z;xoAk|OB{b)gT`M<=z!KBW`PAX`&9=}Ro{Q-tu}R|n zo?FmmX<}<+j(I+BhbpgVfG6?l3}l#)62j@)$z@|Ahqs~28oBJ&p}9Her_UA;6zP(# zZI(jjzaU6;$9d!1Qb0k0gr0drrT_=5=^jKhuS7-6)yy=Ck0%4(0>SC_T#z^ap z#-`y&sYMD>A9!ZT4&Z$c zApV<&0o;&S%(vQom3|M5ZE`l>TK=&{ueXZ#Trur`gO)_BzBviye(omief0P*F zv`4c(;Z5xJyF>l-*zn+K(g z63&MD2Y<;f%NerDNjb3>G@AKA?BP)$i~HJ?IjmPg5>GJjNb=)!#i(Vf1g=s$&!OPU zQAxNhz%f}d;}MLqY@_D)$K<=%)}$vO=9EntTCKv~3BR2;&+7BPSJ^&11IR5G)z;Q7 zyKjGW9UMz|0vS%bDFx2$)y@WW5}^VV62CDHS+WGT>{4VBl3N^`SZ>;xa%onY*HZ1+ zvX2-^rw*{?p$4@jlLS)d(Sii`o z;7J2L)vGi`)s@-$=-P?(RBIb1TdgJ}iqfRifPzHoqG^(mzITcbI;%0zex}gBzI<}N z<9TMW4)-Z3ZsRG^<5m7j>KULJSkK3uNn&=|6MW#K& zmv0At&Z(@oqK=HWaF905n98iKDX%6p=H}BMS$#Ba2~3`sN{hs7LYD=Nj5HW!9!K!T zvKJqOGVOks$*v;RQFjK!mcA=Zn++-oeUx|o$u_LG=az&8Zu{Nr;Leh7wu3x>%B>;Y zeFr&|u_6CSX`Qp%9`0R99XtYCm}g_|TLrmB*FXbA%0O$)-IS3Hx^{Zz-T=U*N-xZ$&#F*O*}+nza6+0B_{J$HwEfql`Ds080T%qollq& zvpEzzKmaSzTzZo3UIr z)bfmtyLqeLDilV`YKxG1z94Fwx;V7IM_)q=WO{M&+pg0qNOaj@V0kD^ormX|L9+Zd z`=f_9K|_)bYela}tZ%bw*-4kae;icEnj@W6c+pY!0Yz+~E}i~9=N2b+ z)SX|wpzPt+auY{SxOPQMmNUJn+V;4oLhIF%*RMa%Mr@X}y6``(9ud;nKa&BFycg&WUW$q zVl{5~_6<01cAHJ`NY5Sqb||P!vDQ??ExS*OWD3e*i8h;9Qa4nMdz)lwr`&BXV;R$H zJlN885YQdO!NZqINi{6M!rAR$;gg<1Db9dfXPLK+2!7I+R?oatyMT40H)nbl;I~~w zwm3An)Jpt0?XmI!Z^($9XUL_>F5&(Gpgpy~BNTQ$X4E#+%7ZY@3PJBw=;_ZJ2ia0r z4Ch~zDQLS8+E@hNSfS=MP)TLh+$s)n#T3o3aTAe{Wck)U-;VEGS&^{Az#6tV1eIiC zn5q9RAo$sPLF@u%paC*<5m(>+XwZW{F#MA#duhEqj);qxly zigd^qT)$C?ifZ%MdtQO1zHl+pP@0>=PyIPLIW6&Q{8WUzbBO$qqKLq1wr;ldy77jf za9)9~c_rF-*Z?csT<7SuS|E4wIAC?lwB?^SyT7bEwfd0_6!%TM3GA`aIK6ybF$rP5 zS8xW@sN$x%Pb^IVs;o18hDm00FwstI z7|n;dS)~lTX7OF}xs49H*t&p+!h}RBN_qsyCH4)Tp~sqYU7?0h$|a5=<#*iQuIdCA zTq$}KDgsn@18N=~zAU2OB`(mMs$OJt9jMJzmiRjNLS0ZBw)P?US#g?=1VWa1Sub$H zkX~`L*;oHaP+*Pz;}j}*Zz^%Xna>G0eT$tdcDc(Y32#!{N5|At#R5?(q&2yNrdeJJ zV`%CpfWtc3>M0{0tOevI)qbP2IgitI1aaU zGmtuPE2U?#Iz|}|D5Xtg3D%ZTKc>_q8F&2Ei7ApOFcJ$!ykP8k(iaSEAaWhhK(Q@> zleO4wF$}GUs@y2BCoOu)O*8+RDI1C&2@}DH?Sq8m2Rh;$1IfwQq4@Q8B?b%D1(iz+ z3A9(Yt;GdFNdr*vtaWEbFtc{);~&-&^YT-^9qsYRKZ0q%WzQt|ck;XIBDihu=(0J}dk_5F@XjX$da|_Yq^sQ!BSI95>0w zH*CYiF=v1gF;vDE^Zd~9$+1p$MU;x@LO6PVcF<>Ij_@CGfbvQCo; zIvj=xxAC~Hn-`lqu3BmKO?{|ulu)L~sIr{ujP!r7Lb<})C1>GWN3pAQx1u#kr=tKr z!7{?rL7zSDOF_0y{?xW@U=Q5Gl`92K_Uuhm$9jLrZr@yBzwwNj`BnwxO>?n$)QtB8 zW`Sq@^(_66zEfVzEl~aj&{I_;FSu{xm9ej$GdVhp1ekwHkQu?4nuWiM(UrbR(1Ig?Z2<*G(xB=3ST7z z8}Arj$oVGcqM6Vmw7p3rzUW@Ft&ErGFyr1SRvksjYXbp8CG8>fK*`O08DkcelDv_c_)<6nNN1mYm%eL?hFK}s@Q6ooL`(yDvl>Asghh=wrgbgD@v6^Cqt(C=*LcJac- z@!1>yb*{?q#`;T5{*=uk+;9D>lEnSLTEbsf)#gX> zf`jSvh3?{y)18VvjWNn`2U5Y#L~k?k>+dRnnawZCB6e&1dNxsjA5C?N&&N|M>rztd zA2xK(*!;NVG7|e>XGr|X9uwHZFZfwI1TR8Ss7aC5pLUFrW-3_RSIAOxsFFy~-RVy4 z9z^<%iJg2*7SY35Gcqv&M;m0f9HAiTqUNjO_(uaT5S>2if;XjJJ3;(6S~q!8TkV;) z8$4tTeFmPaG!^U%bk~R{{NzTuOm6gc)lDC`Z$?mPxM?)i_#!_Soa^GELQ{Vh@v25; zbugWN-^Ow7FLeI8RPY=jT!iT>m;bU{U9x0Y(3Z0>bUWD<9D4W6`{8=?4bNx5$CwJ} z;Z0b3Xj|LSxMm;_v@q-*ioHn`m|&$|boQRbs+<`nZfrVa9GZ>pyNqN!(%qRAXUSm+ zl%{NXJ6sVtx|X_l#`I)6;LvaTvT9 zqE)ma2vuWsNx7LzTq{a(-`jtZA2BWq6`gQ(*_qkg%NPt@Bi6U} zi*3%vDKuG+eC$@B!sSCl7C4$R`7f`Em#Ff6N7mGLly!m$`d1AZ$FHb6M+__IKfUiQ zPMzW~xy|H6PH2m}ov@8Qh!662Q?-pHet;;9K)39wZt0mAD@Wr6Mo2YDvoqBeWlv&m zCgqc9#)|F|IIz)v{ccv3vG^cxNQ_{y-bD}MmiA4SgkatnP*oKMgO;(XQy@T32k)S##aUl{TcV3t>dR-9ACIKG}}IXc~C*; zWS}4a_0b+Mmt(y#lP@9~e>qQHE6SS5t6jc!wRxymA@j+6sM-TxxuR(;syPMUU;y?h zPZ8DiopP%?TUq?`s)-M^Iir-{*Xpe_Dd{LSZ*J&@aGNx6CrCM>CWYg`>%7Pp#C~Am z^z&%w98Ki&+r#1U&8lgaCod3ZvfD4h=hXa>bzIBO6eVs_ykiayyh8}$oc8P3gSfSE18 z%H~{8v-z#ZMiips_Cb+H#)^PYtJcHXdn%fN)aK@|440!dB>Mp-1WrfAxGt@|Xy3oe zztUXvB>3+ti1(@Wgh4y~RwSi?V^K?~+moJ0BEWT?vwaoKZ5is!`0yX1eV0vxMj^sk zS8TsBECbS)KKT4*+Ri!j-DcPD>T2!NfLuLwX}IM5ZnCnlyd}7a8)4gg(Isj`6=Bc( zyu$68{(8QLWG6k%uGnh`AXfHzuaZm$kAEdeRAUE$;Bbvi{mxN}O9=~9v}p#(dp(0< z?~kDjmTSKbEMYqFOO49>4TAP>QlOr4CzaT8qzyQ9_>o(NZn`D95_Y7`6)c2hWR!WX zpp55>x-QpWl3y7&(p@qMdxxq1mc|9;g6O7M|E+2gs)lZ?*k$oro{q6?VZ>$VwVqyC$VAkK=K15v@>cB|Q2#Iv40+eS?eQ7WbW;*+}9nup}xEl(U@1jdfn)1-Ta2D2X%m zM>Q=-@<@QE9p1vjted*U;iKIe7UkHG8GVZqB zL1kOkq4v^}-E}w}UJTlg)+NUKm>Z6Alh(#3=N?WbB`kE~1%=)_-GnTk%lL#n4^DcDWnrB1G^@vzON_4&RjW@dg?-myi>^FUB|xLR$_8V`^vkik z`YXeQVQ|^VbF|^Yz%N)MJ(pGGWeObROIHsD2>5Yh5g*yv1>C!*wLaC`vk`k6Nu)V~C!s^NCmF|e8DtB7> zY@OWxyGSB#sslCvO7eU&oj>z~W?5iWdF;b3Dr{NsEIjL2HDcG|q#52LtdJoo4A)#@ zJ+Xbb9>s15*NGZrBA^@&tA~{4Br|zLfD)=6NQ}k4@feM`&*w>x9DVeAd^U7Z=|tGAvhpgRefv3QU;#I_&=!W2F# z3Y^?d*_Ihmeu>wB-8x>JQQtHSG>`9kTrMN&*EA6@J?=Obwuwrki0EVqIp(zl^%`xp zxEiYveXJoFo*8-ra@k{2c%3nU4b-8+B19s9y*b4)zX;t_Aa1Sk`aGZSX=g&=bOH-j z+0}vQ&85{HTCwq!A%i4uCFdXx+9Gf#{p1@Ap3e{|*3~u;6)hMT(j8scC~yMw=4+P1 z3!X^(GBrNmn4xuV3kqX8`g4j+2htJwWBL;s?Jn70ZUif0u4R1q+!!+H!s_>xp|Sp-6=5V2IDx+2 zK33I;OEyoJMF;akO9^A?ex@%KQeNO^fV%`U*lq=x$?0DNSBIkdP&qzBF~OOWzqb@ z-LV0^bQ9~W=u1snAF~APX=xXvS1f7`T0EOGYxLeyH`GMpL%M}A;AdoidKxNoo5-m; zr=@$jz)|gekJuX(_7mvGp}0FOnOpH2KN<7X zx(R(yg0XbEx>D4r=jb8tg90H1TpXUNoG{@PdcxpfJD4Bu`$-7uPoj{ z-rC>+hn?MTdu&PggaqeYKk@l-V#0Aw{e)NEkBmQd9_ zQYlBqy`-A*L&H8(bqFQOTHSM>CFLx`Mp5iV7-*6J?TCxVEJo{zrA0QPbaM1<9vMEU zI1BgcOI0Od`pe(WAR(*IMv5B88T61-zV^Y(_pAlW z2IA_fw_hMt{n_&I+=l|V_O3w4VBpd+{|Nf-wLHP8k%dtmVQQkFzk!<8iGLqF0VXPd zHXo23lNru3Qf&O?7|@~Fg(2MHQx|UB`+!&wE0G$gS)x00ulzOJ!zWFyMIct(!=btI zn&?e@xLC0_lQTT>lWsA6vI@FDacO(|XP-#2b#QXufk5@p8=Xf8*$*SKaU1vic%~Xj-ZnGDQ)7UR!l;DSipr|M+*0<+Yyr zKcJvbto|86w=ai8ySB~h{KD{)+qb6wPI^@u$mqMR5uy5rka#QHz*)}YQZ(w^X%Fo; zveFO?Q8UWYFncsrEd$IgS+DUqX2U~_Y`AoC5-iR=(sB$jp#dX*w+MM|srZkeeDHUB zjV^6J+iERGIv5R&Sjg~_WFe}R2k0lba^s{^%jqvNaeMK^%(OxzT!b3zL@at5g)_u8 zHktw=D%8Ne((cJi6$yR_O03EDqeFA{S{ij>fB38)6U!$U2JB``d>ZY<5x5ThGqt^A z{iP>e^ffMr zNV&&lMYug69vxp#{^qWbrb&lfiC#Q~XDK2an$)IL9X+k|XC+|daQe$k{u zBeJd7`BA*QHm!12cziC6uj0g?VBu}9_nkzqUbtfqekvbpa+3BIvDe+*ekWH-gS-w> z3FudMP;wh`u{K--O&1Gfc+NteP{9ttU`vGm^+9mPeuVtlX+q&-`#p%-+Q?gzfD}#O zTRpFgCf}=HG$Va_h$%fcY;1BznTEcT$zS-1Q&cUjRB>LWfZBsIGDK!E)of}uF=8jo zB{zMC)cJw+DSw`vYcJ>lDiD`@`zO8|;Te-ogw6MFW-uoJQf>p^O7)?m2TZ%i)SG|M zN05XU^#S+cs-aV<07e1VkK)sF?P*AZIW?*7H?xK%*uJVze=pUux=`Nx%}=(j=Or45 zRu*V&W&ZdJarOZ4h}az$ou&z-AtOAjUet=Rbw}JtZLphg+?uo)v{1zEr?YK>66T3I zv6mhxLB*@ew#Mgjp6-1&UDdS?GiZM88ok)UDti@MQ;B^Et?#N3)07~O zY!)ea=9hgoEBn1FO+j)j;z;I3!P>feq3r1XV)RrxG9soivN%K7fMxeEJ`fQ)&mG!f zVQ%n7lbdj=zd3z1qyCxiRK<&R^FdV$t^lNF8*|?xv{6Ec@T^Bdf44oTKW%K3kg^Xq zYm+dw0#C?wM?QFH+PjkG%CRV++5eNvmKEUGDB$E>qu*;_MM9NCJ|+bwA$vYD84#RD zrxvk?A#$}o38rH%I?k08M{~vm)9xbK-0TR#JwUKA2zIXvSKmp;v8DV`wu=2bnb{J!EBcua1gLJZeq-V7q`m9wW~AAs(rFaPNBPw5@2S%5v+s5+JOW8U)=Y)$ z_4>7)HVYrkYIh_e7iUy`lKR%+&pv?%k8fw4%=#I|eopKWN;tXEoOvVFY}lSxds+xHF&aE??f}5)hMk6pH_O zWYjLF3@dgzEFR(z_nrTbHV(!3Fxz>!`@1DN(AmPR!nns=wycidc=Af*=#)ndJdT4E z1(bD~w7u{yTGun(&)wQYUWDGi1b4=?B3FOM#^V2rjin>^>$5iS)^V36bS#_1Lgn;i zre#PQ_5k?eEuR6*fsX2^+?#i3NC0@c66uFcdW`{=^YF!(CQzPqfWF&}`%?Cm!FL3P zr?O)6rv}Kym|9HR@CGo%;w!^G^Ylw-|4}ItKnm0%S-4}(f9F&X8swYkvPR?Q1Wd3V zM=$eokwv|CD?8qMUjcq)FreK3Tq^alvH&ttB66nOZFm3#*b}hsW^w^auC{@1PvPC7 zogdq^f%Q-+rtK3%(3zWXN#n$Dpyz(23UjV@yCXjr2rx`o_8F-OdGq|TqqcORf8J{m zTe5x{a?x8#QZbGTYP`&5F=$(7Wb%|C0pm&4@Dx{ z@rtn$Z0-1ScNTkC2ZV%=Awn6-Ah#dftmqx0dhIjfCF?A{J(&{H*wJ^g+U ze!!TT>C(K~!I?*?zh3&{a^>O%|AJx*@5XdHHt?rg_JYg(v>A9HJ*NM;#Q{` z*)FxwLZk+^gc@!DRGFno98q}XPoF*L*m~gpiT-Aa`-e8fuT!tGDqyiD(urGUY8xdL zg$fyNeR9H1iUf647Q`=;rBa`aToVk0G|~rj-RH9GNKCz{$I^1Ha7*6_WO{kcAXw^XFh&4Ea0)d zSI!emYQ@! zQ;Nph!+h!xpA;`+#I_!67Fb&Fc6BcA@lJgtBzS!{x%+l?avA=Ewndq)8-iho_ zF_Eay+l`14+efNDgsSRr_I9a;?!_U+(08vmScZNAHZxxJm@YJY(|u1Y^--hxqyDu$ z8u5*oTugrcT!A)H^z};!HKBtY{BToTKbDZP>JVlxUU5Evmu&CauD`oq3Zx z-fXz5i^uHGBkh0gv2l16N3J$EqjEtCbH+jItd-m`MsM9_?)i>rLnn<>6cB)Z7tF0< zMEw>`_p=CnyI2?2`G86Z?1-jQ$XS3hzaZcWB zsbvd6y#KPW4XM7Ig8g04t4PXe-30^ z;S0#DIsUG6Q&uD6Ok?|1h4uE`%-!673PC)Ql%NV1)1d7P^+Ofctt-}4#}LJDeXb0D zWeB>H@Rh;OYdePTpAygP#7q2AqDT8m(A;t1WQd!{CF$vD_qT4<O!Xt3Gvo^!6{)eE@T5)00C;0oQw|^V6-$(r)eFpO#fB5@Q5C2nW zzJp$GhAD`t`wsrgn0@QhbM-4j^VOb^MrGfwxIcuL9p^tL%I({r{dc1Ne>_oDv9o~! zCC;6}K4wSRqH>4jLQV55;HZecOPSC) zW7Vh?C#`>!^}|Eg%He93);EF*k1>-oZUW~}`ex(b)O7rvHSzhS=X#5=xzZK|-NpEi z^3G_ipIVgg`uYiA$>5*QulVhyvY}@c6GJ}5&5r~AQMy!lwtj{gn3%L#i+mfV?r$%3 zR!T`33?#yL-~3T}=Vmd!=nbfEW{x>A&mY=h5(VRGC5SWjFi<;yW} zbxdbyfG_JqDpa^Je@yyCz0)vrz929rlxsXmU#D4+Pu2hhli=(m5RSDk_#Zov;~*gMpwTKnGke1C z-Mh9^cw5t7P_DHKe0)zYXAl2GY@VG83T8YH_x@vT{G+tt?V-1W{9UQKl|JV&-@4P? z{pl-1t=d1^&rSc)%OCrlTB6XJALego3-rxzzy5}Nb@cp=`|g3p*8QJ*WsP{W)aRm!2x)?FP|B#;(eafbdfl;_ys%o7p|LkJ5@Fwmx|&VT zRa<01C%(H06&_hV?*W7~wRf$<4;69+6ahYf;uvs~Zu6xPJPrktJmF#cg_Ps?E+Ra- zBfp3srToJ6;H-MR!Fy`CctyGXB}QqWP7h3~Se)#0JyVwyN(K_QJQZk@<|FG)p-pDG zr$&FS>?W1mF@8&?ZJJN*&^1Dp4DjJ`7LY?|*gei`SkH<;bSyxfwVHVpaV zdZ}lRZ{XFhUIE^_f9D-066LWR_l(j8(&Y_o4Cu|H8A{=wC343nti0AVyqXR|$W8{o z8v^wjy}y4@dl;Y7#tL~Uqk?szIv&%Bz!~G>Zg&=$rpWB1i6hP!;RuK+ji6BsDNaEv zDaWbGP#g5&&=%i}z1iKK#3@YF^xlt;=Di=zpB}LjaZltbe9D2vX#wsXew+<=r7igG zlBBM*ss;%FMIKIAj%DnK?r^wZyVGuv%XfvN^RXRu#U7&3k~|_&dedaX1$^4eTV}0( zNssE5c7=!1Ow|^5TVrPUn3=BK1*B~t4DxDmcLPTNd^Z+TxPJZg+qzRqAKzr(-h&7B zRO6_o^E|Q>tt%m+qeu_s&#nXhJ|cexl|UjbL=WM2o<_FKw69bQX!5#K>^ zt-T|z+ooYw17MP?W3I5wiq}Rd$|tERT9NLS_N@-=g(a12kbBWd9g}+ObxKd#ilUaw z5R79k*pw4D`HTEoqtz`r^!(!n{ujji?`yE?x^=|Gr^>?g{3*cYfiZ`Jx(P>j#G_IC zjM`F4V;AqSW>Y52s2`3VQXLFccE{b5&~=mYCGyvgDzfGmW{SrQo@I0$4envk0ecM( zZKnsOg(5`ayAcge9ynn+-k1E}dnE$r)GNh+hdFMj-mYOvk**6l_DH#(fO&770Q+n& z-j;~z2Md^y-r8ZWg=rGBWNzc$&n6;xAvL1Iw6eGP0cden@9~G+8og+{87oB&|}JQQ0Z^ zmbd^hCUL({h%E#u_MI>~u78S?5bf$$^*SRg+46#qZOv3i_~j)s&Q8tQsICl>l=PUXz`@xXLM6_aQM!Sd~?uJ4atZkQvw}*6@kat$+4;Zi* z2$TIE}L!b$y(IQoq%iC;-)$9Jv3KPDLpE4>+P3-!L`z=FZv%jDUhT=i#`8brUnX3>QQV@| z(lmUN)YR$mmyE6>7S9;`!ma+D*ZE)T7~coRynH}?8Gsv64^R)?k~@h)oUUg-qm6%M z7})X;u5stQ7+#XN^-prxZ}jzdM2LMO|C=n;jR+5`xWt6Rq$za7wpIu`N*?Xa9}P|4 z(@pnoJX1*@`5QLX0vH>LA-HPiNs54Jk%@+MM~VNDbaeh>;RrNek2I{;Dcuz*ucw@8 zhE#u7(6Ztf4>75o-Y$X1b{fM%YDXRP2v=yM1nXdB*T%uEfRh_-K3itCD@X(?W6~Zu9Xu?>T{Z`Ymb>W zRp=zptQ)(XIICBg@glL{c9j2};yb_Mc$gn=5^|HBp)hsU`4ubLa?3{51SEVbL^QOk8Q1cd5Hj2bNpa=xk=?&SLAMVdq^RgR>H~xshwW# zZHrL@@|rTrK(Y3hmadFlc2mZWP{aZ~#)P|vZC+t zca0V%g{j~E%D@65`?oPB2HSTM*`TN#@_IgXZHbYx9rB7mn>S(2p%ZI$lkGE^u%=`7 zPo@Rxv%j~=y-$@gG!VQ>QyJ0a5$D9RwMT?2B+D2P33<6n&y%Rz;6>dnODzDnju87e zY&|$laD!YA;7+w*cHZAIszK6lvAQ{;RV0K%D=FXHr9lat`%bH|M4kUhOG^W)pvy%x z{QErGFtipB5lcY0f-wCL8sWmJv0Y>m3S?qvWsEZ}GH-~AHlP1x-E!2!KLzxLFfp8j z8}4%_k`Wxncas|P2W0fyt(hZB{dBNkk2u~OOG1Cns9(H-g&(tcL0#V!`%Zu(@Ltn}*ez9LF0zG~&tbToD9U#XSljc@5*pz;< z?;m=wFJInWK$BH@G&$Za+Oi?nlvx!MKol|HsY(IwV$?AvFEh2XAPJ{Y`fC*ml9y`3 zDhZ6eW{dPQq7DX~ks8)S!FSrKLoA^DTxUzshiOFv&DwZh#kTo8f18SOZpg=ea2=NS zE>fMJ${q9Ye7vVr@Q!Cba9+5lBrmdv!gqZHv&){!qfAMFh01>c&gK#I8ZB%&zbHNa z@j%;cHu1Cbq1Q&U5FtBoyNWoeKa3MWQ}WN(V~Tx#Wvg1+Sdn}n;R6Ch zrKn;BP@+ZCdF8@;n+^$$kwK?>YW#3uh;3kR1>F+{3oKh$(4;B-xq`Ly#mp6*^{T?knH9Nj1eUVeUyV?-V>SWP^o)XS>7U+Sly{DvxO=dOdM(S>*G{H8O6Y)i0 zot9+`S&4_5Xg-dwg7rjDxz%p3x&izZ_IVO| z<2c@k2mcK-tHH@@6{6c9|< z{me@bH~5ud_ip3A>Z*Sy^F2A{{-Ra&<`cq?99mJ$rxx{ zl2BY<&W=wX?bohflPq4V@kGf_Ef;N(!nUv02phze47x{)d8ch=k_nQMrH+L znWko4O$ca;;&H`q3FdW6{GS$>XO_#w0+uZ>) z(?jULGDOPo{ET`s1gozpGr3F6D8HL^S7xy?X(VWWfD>6YwYnrX!!~}B?op4(0-Wld zi#t`^EQ&SvZ)XDRi2wZ_w%%vCzKA-zQY?wLHis6hwPCr0WGiDYCD9)MDeZN|)EN>w z5-Z@!sYL&=54uzl4ZojzyPA-k%Rec7mm+mgyX zOj5l~zkWv44tqqRnsY~!*7Xn|%$wabWi#*2TYg0;hmh|3tF|kT3gjeIgS3_2>G_1S z8Q^Ns1RUR7Vg_w&hG1NkU6P1##jAp%0x{yLjoCtmE|TG|`iMc|%G>*p)3lm|Igq>n zr@Qhp|AGiK=d*X8Y%QKE;wy360X zFEN63a!<~z1nye0zRcZNGAvIuCH_L;OvK1=uPtIcrATc3)=y;|O4ejoyQInDiMs>5 zwCuI}0WqZ;2?$3stMx&Q-IuDL4mr-Wuo{;Ww&$wqxyI*g0};Ep6En*BukcdG&2xU# z+1$pNPQCn0iT*(x;8?o*$S+vSDja*B_IraI*K&*TZ0?Y^A=z~|HqNvao#H8L*XR449->}_e8 zzAkQB7Yv?-4)OF=dS2F0ludju*mxo*Qskf?&kehy=4$fVGJoJ^@b-5SaTRCn1TJV< zA&7Iu_<7uxt41w#&3TCg$jiL$&yy(CzXq_(WHZZHlgnHso=1Z|bPkV}6nGb?ZHxGw z4ZgaAG1?WL+Sc`cWD~Spm_OcUFd0~NqV0thIFB^ZpQwBz^>|`^=P@<5;g-5cI!n}QhFTy;K`Hk`wQ`Z&_LuO)ypPyD`RgUAb zqZCPG5b$~)?ko!vNON>w5;1{&;u;Hge8KtYyQyaQd&)5>d+F$_wW+<;b-;yL znNH(hN+k0+i`*P=@9V9&9xC5uj9&w(8Z#k^93X6pzN7m!q$#^RY&1)9688%Fbrocm z=Anlih++ElUK+*>B_;)8^!J$6!`-%tS0V|MkW$ z5MzKZp7B=NGAHkO%9>?f*k?VSVYkbLK-eGb{z#R*Wfey0Q%rugCv65*0QK_pF$Y=Q zc8PFXGG@(Yi{@AUZSD%Yjzo%cj;GsvsgYPFN`L#VisQO zBX-vL&9`0M0kZ--fH!o-oYPw%VLGo*%uiqHi0HkhOUH3o#Y5u<7zti3STK6wk(9_j3j@q$# zaokE#Fn=IDu1=wD>1evc_E;yWR^p$a>u+gGWQ)cm0soscc5|*LKFhhN&6!H|Dv8l2Um5Imk2q`m z4Lxdd&-(-d=`nGcip`X)tIl^~akto|JWC&s^;W+q&b{j9`QX9JxSJ*wq^b+Ets6?< z8dt{sGV6}63E!vg{&>CT>)TEW=V?MlVe-Camenm^ss=UPj zKpo0}!d5z6UH-tn!_ij;{rYGl*G+}Wi=ue_Q)}-MVf8CpDr*XCV(P@i+jC~Jy{ALf z#fPH7Pm(+e$v_7#uomSYMtV<)V2grut>w;dsBHAX6kOfS(D#lL9jUS5u+I$1k?f9c*({WTAyxCY#t@TA?4(11i3 z*JxQ~*ioZ-y7szx?}s(mOgC8PB-G_1E&b-ghJtgqhD=N*fVQC85!U;ZOeda$BDhxX z9XO8CG5JyCE5n}KLCCa0hA5OpwvVYYv(I}nGkxR`VDQw!u%3uBlY;sR+$&yS4AV`S z`v=XOi__;>NYBEubT;Lrb@Q&6OcBJ;{WC+$yI?ea9V zP{e1@EF5n^Ino48*jyw1&JT5J>-`U7^UY zDSU@nHLsd|4V+T?hjRrnnT|Tm3mJkl!|GkV>mR-{Y~a=jOr^wh-}<{5<=j+n_Lj;! zqjZic-sbT&)`fRd(4sLT;g*Frbm(Y7>w&9}XhPg~Y9;UeO(e4B0b%fzAdH!;-qx^q zRTb)horv9D;=Hg6Xs~t{xVS=SRQr;Vz12E^QsXkwAgS(|m(SY?uZ_tBACw3P4c#eC z)%^K=4Vh}Gozsp7r3bs`r>LH)iG);5!)Tp20rvd;jf(Ws0Z_^-kpz&jd*Wsa&&6^( zcG6-J3(7M>lmL{3E%evnZAFsy+9lS!VsD`C{z5~F3m>|zl zGkI}!DzUv~@{9`#fLJKegNW6HTOXC&GcZHO8Q+AMPXl>(aj#{?RY#6W59k$0d?YpFgMZnwo-VQ{$q;pk7ec*sjcyg?u z(ojKW{?M6M-408CiZLJzaL*%A&B$-A`HC;EDqQmWRvqCTwMRzD+`EMaJfHkwFiCg7 zxlopjMB{a?RC03Lnjk6Tq$b*3?oI{nau@{bvW=6G$CzAjw+DxP@BB->ihtE4aOsF6 zb*VNEDSpQEQsT;{E%MpFG|Ml8C@7aIV_y11*7xllAyK1#y{jNGYtMDLZGwutG zzVG=m#ZB{qXaA>2tP#9LlLW_iDhz+R_1Ayb!$0eOxDz-Y*y8_1ckv&BeyW9XpbZ|q zYhgWUlGMc;osN=~Rf_1;33N&YBj9%3 zWK{#@Si%SgmYTudvsbcoKHr%yJ1Qf6##=&uJ2)3V?a^T-hBHn%9EvAaRaM|EC)O&B zM$KX}q)$$7A9hahdn=%{6H97ARcJ{L3p|w!?G1;Ms(Qp@=}i z0p4x>>X-}{EDqKdz0`0+#ZUYzgV0?o8LP&cDs}Q|o=sP@@-u4(^mpJx^-Fbb)qGtQg#Zw1O zR;=?lji+;3^vsQb@1J?y^P`ZEok#7=)^(XYTDiBeQoO6!Zs7KyfG z3T+oTEI)Al%HUD96mP662g%RLJ}ygu?ekWlP)-WmCPoe#$Y%7GvUqo1kDMTNF-I8%b=}=l3?u&D%c>K-=Rr>lh`yK(-s?nuqh89 z4p0<9>ptE!_t3@LyiyCwhixNchohr~ervgZs^JK*s8%q;JqhKI{Mpzr=|#g>?T)oT zXEiKT|DbR`Y;;L>jv{j}#{2~mO7_a+9%ONUD_&SgBqte?aRr9N_cskYe!B8D*0pRa zG^-y$6n^UCjY8BlkJTI0HD*r3uQyxThxOT0&{;9p1X*Dk4r`qSE(`K0R zwr~XRHiFEjgH%`Z=G&14nnPD@R`n#qwnJnuJf*x!1$dbd4&857prKGhnLF3trH!o0 z$px<|d8H+;pgVL-(pQu;_-x+e)2b@P5>_oi9)JW(d*#)%VLJ#gXLC6WN8c7C!_&g4 zlVeEKEsEMWu0g%Mt+&d;gjX`fAlPbzJ1fT50g`Fv5&2Tp?P7V*KqlN$_1C_{dHZ>- zIA4$h$_AL6C5yR0JtB|##4tLJ-Zx>8_uNsv zB!2yLE|ki%81>a7vVbv9d?mC7{h|OhO><0b%_}87u0scTHy#PA3KkK5u-T z<^s(^pUsnU+`~CG_7k0}sgvxZhk8kk&_53!R-4(YWz$oeW)~%CH;<+TKf!VWjj>=1 zAZd1CKT8=Z_X*d!w76Dvc+T_ArJ)F7Pz01a?}MYTQZ5oVkR^GsDB( zeRr`^^~4A%_6I_cE=A{fkZ7-_g+ND|Rc%FEa`qk`Qu|*;l7g2)z+nCO6YG?n>ywZc09PZE86Z`~lTy zlIKaMtmzML?N~nK_;3zFSAQA|h1HDl^4(M_rW$bii8I|nxym;H1ox~3M^vZKFvoZF zzz?DD53L)FKE<8`#awj;x59u($D&>~gtx1(>Z#OWM671FO1EfL{+_{AmHcdoNKs!^ z4+bMI=>ww2**$|MZ0NThRJxAI25Nh3!ewO9_Q{Sl11wc_HNMv}@{xuq*6jU*G3ru? zvk5yW@Udo%MBEJzxUY0Y+%vURTs3YAzb>MhiPa{6M3%h5ElDPc> zjT~aJd*4NZ_6{A;u~?j(okH1Dy(ZkyeB((`Ok_EhOF?j#)-feJz@CL+)SMwF>(T1K zD3?+RrAn6HYDY>%22~%_H4hg%?G;hM2yRLz)G=)9E^qXjy#t-|CS*ilUO&yfw2i&o z6Q8E#?WROA?-BN#edo)umpJXwYw$`bW8kxL4m_LUlTXm?d4ecTrxB{y;Q7;^JQAS@ zkYsn#Fmruk*tvo4BqydAM4Ri`d5-drA;h)jdlU;7X>8#JZ{t{0?iR#406)pyl$ywt zV8Y*DorC}-aCETV^Z$pv_l|4wYX8S+t-ESP1=+2#r)&tTqJV%2k}!lYRAdtn!k%@Y zm8n1o5CTF-LI^`v*q|UFAS+>pB_MZuEIr8KsG)Dm@9`Zo;=Z zV`U}F9?JWfKTDin)r$!c9~EB>F?*DcHz;$BaO$A+Ds1fxHOx&|(g#diqsDnxD-Lzz zvemwkT8r`2H!VvH1~+$rFr`W$Xc79lVS&PsjZfT|pD)RxLK%5weopDxaGXbse^I4O%4lZZ*S9U{7s};T zozK>%O!c_*L%bRGr{)w>PNKq{MGc7>x8GbmV`H%uKmMlPrQrT#VtJgn%UbdX{d_#1 zPd2p|rt9gJ6ytDp@Mca=;&OxDeUE!?c{)`}l-7Bv_^H<@VXemN&1nH=j61+$Cw^F+ zpD1d14Dy~0@OEC-t3IW^D5QxQJ^G0AMee8%(JxP(o#1sf@~a}Gvvi8#0re}WuzSK; zM5hmI2B=^GvC9y4|gv9_0gMS@tnwK?T@mpVUwc*1pio}H$l@7Mu9ygcD^EGLM1X2OOd(c#rn zO_MA=J$p45scE096fcz!Kk+!tTc;=ebUFN;YY=eONvZIWV4Yu&8yIENH=~b zvoHYF^7Y}scLBH^oxva+^i_MfNxWkba$mg^f2$R{@U3$Sn5#9nHr~H;P)PQio49%N zWip>e&EAQ}56h=2yJq_6-WLMeocU9i({z6Yu6Q^q)-ALtKt; zwNkfld9PFKKYvadi9H^sdDQ3hl%u7D`mOFO`ppr+@V1h*G@%2@P9@)Uy4lRXnQWA9 zI4{`8$$OT5k=!#KZ&Oh)dV90L>S`nyIt*#an-2|yn)X&n3mj2WZIj58x1ctskoH)6 zr+o|aUgzYt)OL~<%O$ygR=_JD{#L;MNgkPB74V1i8O$~;=CN+>c260cEW9bhA={Sw zW&xmRt;6@OZ`MYJ6+H$qFT6b)K&nu_&oqB@W(N7~>!P~b`L3nAe(Tj$N#-%pC8zUC zkFrujR+-S-+uq;a1{7@#QcKZ+F-Yw2sJ4lVL4sEXu+hLsrO7;DlD#rR+P7DIrnsA9 z?--;bs)Ty3i{fy4uWwob0=LBn zz}_vcz|L+B1r&ty!|NhfOB`!@6Q5ghFDv^)wbp<}0>fI%-`*HTa&)I;u1l_RrfOZH zO?`VKL%o<^xP(HG)2C2|pDmu+Z$>v%w?J1U)a(;oYHi83ZiB10UYfb#jDSY}j+}vr>jY3{B zJF0HiayByg79vz#S*YQyLr3!v^$v}d`9gi%V7{W)-68Dzibiy`t*OfU&`T1aDmq@c zI!Q4EkQ0tQFm|jlT{Zz@8+!eITga8ZK}k`fR8vl%Pe9w0-R))683^~d9Aq@--R8R` z0-CS08u~N~Q zjGNG*h9-paDcp?v5A!6^-gk1gwq&J9!p(kEL~pN1-m&+R_s(W{Nj1U}9p2Dc|)DK(m!4Bq}4c z(5~z1m;j7O1wYr@D>&*y?l?JMso`<&X-E#<`!*@i$!R+=f-Q1jytAuo&8}&7B zx5DhtQsqXjptLOnxCxi z7~l+%w%EsS(G=yY$+8oEIRel2R7*}WbK4Mh#c(a$N|+niMkN2bYtzY164h& zBbNpAX0*TEzB#O|4j8!_n? z^M~!fbDibya`s8)(+nf$OB|4svwl#euV}1!+o?2*lt{Oi?1~h*reD&1^zywtr_>rR z2eZ?d{SB%YTDw+a*~X5m+E?hq>vamF@Vr7|GA$OH;S~F>^iZVvmu8R{0g;!9Lv&;2i!|1NuZ_Ih(@+wlBYD``qWC*QfTz|I^L3t1Q6b zjTF3b&FjW?Y=5K7gv0y_TGM~*+1TE@+Twlonla4Wx^Y%6IQU?zx5Q9uUj3-WEC09K zz5Sxehblsg{xTws$O9=%d4n{e!&u+z4lDAfgo z);v7~QV)zu^6%+a3YVx)Ik!Zi858*oPef$ICfqH6B+g9=QyMzHuCbVCgX~Z~u*n^e zxLjhHh&gf!h1VAW#96JIsrqkZ#41p@dR@Ycf&qmt5u(v@C{KcTkB~k&qP5Adwqd_z zGxh^pr{SIzs%NForBhB1OoE$4(Cq|~X`ZS|4iGLhTb-S5k-S$~0j`N`PctnrJLKC<;L#P|(} zzhXeE2~EYQUmGOTn)Ws2sv*?x6-@_&ZB5M@AtzWi0o23TrC@1v<;B3bIM*#4E2UYH zQ>7*`-=Nw%NX)wOh;+U<1(#8S9+gip=hd`+M8XzRN0ah)WhpL0to+Ppq!(*KC>Q<4DKS}B)#1t%}dIl0pn`^O%2}11Kz`!7&G)Hxi zwF4_-mtxuz?*}x4iYKV-_EDE!nFNH!w${bU;0=!j<@Awz3Ns##TPAf=KQ)H)RZ{`S z;Bt@-rsxpvJN`hMZI5n=RZX&Pvhxg2xw#JlIJ{n!uT}RW{ooZlU`BDXlgQ~pBjk?W zDnHSgVRt+xY~6M#CH)HEVt_dupIo|?70^~@F;BN$N-Lzc7RH6Ws@7&EcC>9AGeM0y{T z;Tk*M#=5X)_3Vf1FEDY?~9go0Q2h1eQ7V>}5Z& z4Rf-5HM2WdgK!>Tcy5jLC-r*t#lKW{Aj#riFFjEUSMj&eYC_lM3n9f@Ad+zEISZo~Y*f0(CA)-t2 zGM#TioB2Pm?FyNZ^}U|e%I^vjSrrP3#^F49!Sf`wtE|B4c-G+g?F!!?@!d?=M|+yy7l z5)lbHz;eX*U)=cIoXYma@F$O!|EH^=_egaSto*3TBk3j?S(arWX%JVyY=DA+x~uue z+=Zpiemp55hiD0&+nq$j435`NxL@k2SytT=Av8y$pdfG3@!*jQ34~@jC^2@Q?TUF+ zX&=FhrX3DIh*TwFINldioj`(=Q`ll_LL`Z6$l4Rsbgy~mN(%p|V1eXhSB|Nj^5LxI zd0X=Y#u;g`g|=9zYW~=@+*L(ua!Llpuh{i|Yplq7d8nOSYoX_atPtKtuwDL?w5RvF zo1#{`*7CUAr4Z5Im#~#v{@%sL zH&ES5<<(|U5}mTaC8WZcl$@OA%d{vun{1_{c=@uPAbhzpt2E`Cm{k?L zbXLa0n;Wvzp)ut+p?GVRPyT8z%%z(M_CrWH z9=>!o_7WHp&^Ft-Pt}jqcZTWGlZG-Y6`PfSc;_>vsmw6Ojv*+s6eMMUyWH0RyWR zo^N}q=TN|f+4v2O5Y7DMpt8V_pb=^B5cLd$7AuD=jpI3OS#d#CRr$vcOWw>ay*Dd8 z-K#8 zG5KO2*w`3@Q#JI^+}N_%`<1VBh8>TxUzm2VNZ0XiBiM9AJDFl7O&*C1QPUqMX{K}z zb*|pFoVC~v*vpN!cn!~_NERnhWSt+b8=8k3@X066ndcj&+TP5b=i7yD&pHE3fsVdh z<7W`tZ-Vn-CcLJW5i*h2k?aag*t6jbu~x&lk+4^dPu)yz4^&|n-t=`uURBh{wcQmf z2xYBn+V+K`hg><7^sGCrNul6_hc#a%FxbA5{0tudMiKkmuItj%!@f2o8wg`gh6i60 zd+J{Dscw$THGDGrARtp|DQRWGH8!qqKTpi>ljiCF!wuE)O3(OscB{H$`RH04;62e+ z<1Q(eK*lQa>3L3kr`HloC;VV9!N>&=HPOF9i~vsxSLCjxJ#IWF-2ood&jc?p_fj1>4a&aH(&2xK8}>!|E<4h*4&q zaT_r}lB+GU%8x5-;(~{-l%!##M+B|smW=dGo*JrYuM2cu*HvSUmt_yh+iLvy3=q?5 z@O=6lGpLm1YZkcRLTYY(@s{RC9cu)Jt%U7e=l!-ti2H{xj(&cW|Elz>DjBGZ*f&V~ zS^Fu?{QAYppn*kyu|gT0r!sn1U-Xa>hLMKRR8zM7FW9bpju!Kia)|I-o@|tdU-}J& zF|uu!Bj1oYPcw7r5uQ56|8joI@G;woZ)RV7j{5J)zW7Zb>2>OL)il+eglTC&=sc|b zS52o3iFsb2QXTu!C(OPeOiL^4^@EyU-^gSpH^c^#=h%$E_?*XO!jw>9CLKV@naluqXjsKS6nw8*t8UlJ$h$(Us<2x3@vsNRLsxR$&a zRKe5cQs^ELZ$M-i&jxh|%Qk9#Yf-+kwDx8aJ%pPou~g>wUGAKHMK|*z!r(TodHOvj zm?H^O%E|7ADpBcBkd$NIjcJX6w6$)hQHg+El?NdF+28m^khu-rAQbGetXtdf)*nuQ zWV3zq{4*&08%2git405iNwaP&nN-&j%XtsQzGA_?;$3|VC}u*?#?6c8ut~Fh`Tb|; z{qNKemJb!Ir4aW7c8viA@Bqa^Zm{*W^vyU`psFtVP3q{JJtuGNPgC8OgT^GAq9v35 z(r`+I&1LNU?(!@kdMVRXto2mPO+g9}ezkE3IznHDV70?(x`iM(QqNScu%dFF z>v1$E7;qh^YM>Fz`$}8bTQ#jORBV=&f0yM#@?u=Xm)hAV<+C>AICbMroV~(-#DrMm zR-L77jm$$PYz-Z4qAx7jHNM5Ys`+I`G%yvvMyN8#`GIBZ{Nyvt_rG!{%}mHvOBp#W zn`&Rya?V}@h0v>?j#z54H9i3(irVzLYi$}8EM+>*=cllu^oQ*BrH9prJvv>ap%INX z+V!bis<$-`UgOS;36Uj*Eg3Q7dI~HVyR;ZWUQ=spUSQ+{&i!ey_lD#CQfHrPZNPDwF^7=flaU$bIPxHRTMXAnK0E8=PKMAU^<{C4$r2|5S{wkf^oZEvYbd@`<+>9 z2T9(XC>Qye-hsB*_};r_Fp%fZbK*?-<`rIEW|if;HFMkXhOXVZ#T$1plBTK6pl56r zH$F4g|3=ZrDe)Zp9E-W|eFHYiMq%;%GW(T;W{QMn=>FU(U;;QCNHsNKvts+|htJSE zKD90rda7h}X^58dzsbp;O0+0ovW{~fpF_OC+;6%Es<9U)dvBB!@0O$Z(75!YKH%6D z@*0J)aY7%+)xnuyukco9TG+A!TheFgk}92#0TtwPniqUNnbEx5p5}um#z5@k7 z4+Hkq9$e;5^4nmI{K?Uj=h$^pL)_(?#?e<@x;6Hyufy_oO!_~t>3v|Ex?2xgC>@JH zUEEUpz@~KYkcL7v7VsanI%}=>1s9W|u{G@yKjQL5z}1dN;yMo=%GP;lN2qX2Ge7@v zAMkO`t^Jullm6z<&*u*E%-GN|{lIo&FFP)~)dZWQRQH%;EWD?WA}w-QxMi*(s~9)J7wyS@Xp)@^t-2179a>vB@8Kx3$Uvi-9`x%CEQNp zNu}TvFCfxZg@B9q81omrS5}<~;(fEHa}@B$o70YkZT30RK%r!tTS87MeiV?bkyL4v zfca6umoIT*4YtJ;}-M*YYVD%x|B8qOGn(TzdG;Y z!^ZX>vf4YIF&t?^R@grJno&AW2bso45P9E^*qryXTcqvdmleaSjU4Icj8yPPVrFKg zhyyd&x-eXUl-BdMt|7i3^&O4LdosHs`3-|RfnmEY)nP=NJD99ZH^Qp7Qs+%`4MT&C zx|K8{%=g5IhR8%6*-dv~k>y=u9=mGp8594mE5w!2e`A+I4wcvy3W2(DRt6e1hGmg9 z9KE)txqM;Bk*!%gyuw6JZB^^#r& z;j?zkxAcCk9KB>OkVS0XLPdF}3+|f@`}JA=Jkrsho1@&45E@q?z;Kr(2R}KHxBF`g z0!afh-Ye-5AK0#p2^()2REH7DoAsBz*DPCwJ-4CLwa)B4WenY@`PlOFf4Aj72Nx$T z_uI7*yyL7SU4!4ni1l~cVwYyS}7tj3YwmOp6e5p!2XH;cm zw1eku1+z|8#Hy#HMk!i6rQPMUGYIS4P z(vU}wbySympSDeJUKhBsMPx;bJ3$GRnd8q{(`r~5i`+h;Hs|g0bhd_B_6r|vmVdI| z!NTr7z5L~0*rWh;cO^EbCieZV^2FXtMuFXq7I35Pc@Q7p?ZAb9aOB^V_Ws6+@n4e* zesftp=lBmkZcxLFULPCOtwn$lPz!ymxZz0{T*=ESEfuhwnT>23Y)3Y>c{w!{e3^4@ zQ5m%iioUi9|5f80aun)8I)ZRXn04hganT0JMLs%BnMe<`Sg&V>G5g}T(&@6G=Bu4Y zUsi#J3Am)_=IL$Ckb_;e!P2z7d1o!c-qYV|3Oq70e5tmKCv4Vsre9p)96QQ7Q>(Hx zVuWRdyst{%F3sA*Z|RLw$nTYDMv&!@bj|xSGPRuW4{W|A={+oozdi1!weG6FYqS#E zfXBY|=t#r=#p_;-p*4)!*MhfBJgeQX?%bu4!yvoo7s7`>u#M!2tZI?9j;A5-)&T<3 zQFEIs0vCVRj^DK|lutuuU#R!0mh#~8jOM-HHRJcK+W`dH9N3{VLOqIUT_O8_*YDrJ z*zjJdKDJ5e*%@=}e71G;cMZ|}t$FY1bbp?|Vfrr&lTg;^Y++(D)|kHFekxi#Xz}5) zRX|Htxk!8Z?^wv7p;GzXZ0oVP8h2&s^P-d6V9(Y-Kp2J@-6#A|;Bq2VTe7 zxGC^B9Gtj4{}F>f{Vi}~u2+YS=*bY0gc`>0lyjkL>uS=5Ee0%Y zKx6m}U9n1L>Zt@=(Z;x!9=dUtXWpg8FbL~&_IkUjgrgqcj*905%a%IZ&$4$;%-QA4@zn#lF=Qc4?mr2xC%*oDYrA2LV&kb{w*x*hh&jjvuk}(iy zNq8P$$rCr}qf1&gl-a6i6FB}QRD($!6Ak)wJMkWJ%O>)iO$_ob0V|FWH5tL0e*a(Sm`9m)?(F*0xwBrUNY@DK zm?!UFk9ih5y0%$UIKrG>%zsXay-Cx~(OLcph7%=Q?5Og_7 zE>Ji^O0_GWq|ey*wTQ%%Pbpps>XnxQL9vlH~Zj3~a#$DMBx9~J+W zyw<+V*cS&&)Bw((;M_I*N$+%2t#%-HuBodek?+7VYwfb{!PyIQ?Ep2jcw*nQiuoBUo;0Sm?+L6ziWvz327yZP^PoBuzKy7${0x%qC3hZS{C@e@(^ zYE`KMj;s}X&aRT(n}@#%rVym!r-1nMy^x#QA$&d5wOIPO(5_hiUaUS!x}*$HN0w&=`I2n9yRDf@0DMAOOSPYmLJ0ywNIe znRy;)Vk^(!!Z7aLu-!oPn4@^*5GPJ=TWKA6dXG!oYpWBR@P-v#MM^TQJNo1?W!JFN zYxh4IKkzQFbe#ASfscoZZ>Qh6xV-p0xBM&IU&lmx;D*f;d_uHqqJ^SBh%(UFnKYj6 zcSV~?Zx8sn&MO=RYCrHb2Uqq;;`KY=l^I<JW z!6?UbX^yoGHnqjQ30Sl0`9sV9{O1>|cK!qlR*vT|z=fLL{1u{9adr3{15D%z0`W=S ztP!{b*3X-2yKkk&g)$z^1IxtY`WJLt4Bbf)h*EJGqwaibm2B}|t4T5GzPNgan0Z|e zMT=$ES4xEXf>Q@l2WWT7=Q$p6)?;m{1XkQG^O8!5>pm`fy+)fLI%C;cxKF0ja`(z58N<3=@ml6;rJ#z{3`kl5%Dc_nI^qL#NzJ&B9i1 zeKpE`eXm1vpTlZUN#qB%k{SMhC#A5g-qitUSC7;6A*eBdoZ~yx8R+i`ENc-GyR(?& z6-7K!El$9B7rni`kuY)jjcQ`w-mmB2Z)yH4iwuph6%Upr5AW7V0*3ALEb-^S{-flh zNWJplqe0Iqi8Goq_O3bdCGc^ei6Oj!6c@7h%fA$@ay!|9I#VfA>{<%4){} z`>A8hR6m%Nhd@;;f4XaM(7`ggv>==MrGifo{p78Kzpd*8)YE^PuRYwtrq|VLhsvWu zXO@u7YQHhulix&aXVLVtPg4EV%@esoAa`f-Y9p@<{H5ONN%3esgK&#{_Urmi^Da@FoG-OjNJBGFNZ=5&u zvDq@9qAZN#-c*lVuB2)t#D`1J$o_9rc3(9eo7jBP!gckH?M|(AHm}9@5TyUUTdNTgyIL!wkjDTjxp&+`)O8ZU5&C96kli zAMSlT?*4CPOYy7FicK@h_;qLd&%tpf(HUzj#hQ2l#X>JMz1=Be!BgmLqYe|#idxnI=gTX_Iy%C2!|ly@ zxiS~GU`!q56+^TE3#k8r(i`NSfsVm`soEN#kJSIz_l#)?T|MQAn<1Ezh} zuoc5Mr6K%CpP9K~V6+}IFl+LR(5|U?l3}2XoS}N+oyERv%Xy_9GIdvJiyPKX$`i8e zJ5}JLW09TRqyi`DmrNcG@Nygx?PyPqBw_Y(IE|c3Zl{rABM-9Fk?xb8VaJX-iE#Jz zdt_oP@roiZwT<#L@ts;#M@b~PE~V(fsYc?Bu^JB6yh39 zA2Ridu>^zU>O))!3O??1^X?w{-25D-$|g^x)wNihy%}A6+!XkJIv~Y=WfZln%GxVw zHO^=3a)l-DqZQA9W^5yeE^V;_(aIg{bO`4E%2%n--^cfdedm7o#F!oKu6y8ZnG#r7 z>?7jI&0K5(RT@WOy74uY&(=|{eo|QE%X9xcd4Gb)uebi*KmQ8Fzg+BNR{Vg1!ZW)oq29L?tQ|;?!;V%tV@0=S zY9ZE9oAHk;CVQoVF{j{-nE~>lMK9)Rduvb>MU;$w-t3qS)~K5k>`8E%NLjcsS+Czx z)~G)DJiNH-l27KW86ez%wLI`8yZibfPoc%>FPqtoG%AdExv$Pv#xa9N4*J#-E%PJu zZi@9|g$`;-L!vg}u9}w)8&&wWLahw2dsIMQa%=Qi2v)G#%PTST5GGXOapbFF9g|+p z$J&GFsBH#gD+cfEgPZB$yFEK#oSI{T=WK7hrDAmAM1+$2tde)h$TLbV!5m?s%O}{! zh`O14M?c`CToAlijR#vJQ8AAd0Rs*4MlQe0+J*+RydFJq^U_rsSyT&#k8=))h(7}~ z4A2owl%Hzb0A3|>CucfG!`y;h9OQ3?Gaqf#lxSgOmcI>N3pqG)bTP~+OxJcAq8Y68 z-2ddjXybSle~Vms;l~g zRh|4k$bUtvy8pD9pbv5lAx6pLW5B0>lrf@gO`5MpF~hYHeRy%7$+|-j_((A7jk$no znK4Cy7Cp=3m_~KlOg8mbn4o5(a8f3^-j|2aZ){MwT5m=`TZkmNf6ruRW}XBUfq4Q= z9zJ!N*ezAbG$8@{`5Ug&mOW2Cy4<*I&sE}W_jdevGthQ`KodLSd)fhi#79VU(EvOi zU+4l=wsRooVJ$DIr|a;_AN0$lBhHP_Ncb<@dGl?&jc(ML{=1i{Irg$Zz(mr9O6`z| zkFTw5YDJaRPS)`Qe(1vSqM?hYmoV;=)5LxE1#Y3B+A{LEzw$o(OFsL1QTpc)op`Pk z7?gr_{J{3bt_qJC8qSUM#)#dLLvjwDdDA;Dg|1nlaV>y}u3{9}t?Oft6nmF7F=9C3 zRh}z82BqR*`{G&_J@d>gPHMih>8Vs~qFOk6eG5|tPfjb?v__Z zTy-)H54;lf|)L z6Lkl*t7~9l^(-w+qCP8rSL>~Qg(;Iaost0sC;jbx$8Hkmj{&v7WDn;-7p3QM(3K^k z$isN&_41(MJG=0=H%G(E$`Zk3CXv1sl4sxDQ(#z^inL)52v~IAG$xniftset(FT4d zR?6Vj8Pp6>#8bB*lOO`Do0l%`zID4?rB_#2NLHR3Yw4PkR04XWnRwUGQArmNayTdA z0fcA{_X{9MpPh%5y-!l}*G%M^PP0W6dk@WC1Fi(!5G5waSQia;wc-LOd`rYsM_zWE|KN z7pwd*QR@{ffdsjdo{uq~w8)5ja>EYfV~i&mpSkMdyob8(f5uiJv?$j6`FrtEr(K6l zBfAp4*=)0o=|ICOq0l}pGAZl>k}7Sr$yy!M zU-TUe)|y}mu)raqs-nsrXj?Ri8H~7b2NIfc3w`AWHj8gR!f-e-5Y|40o@(E(-(3>r zXwgyfE!pF!ubgvRtO?}1AO0Mw&zAfx?>+~QX49aU`>f*F2eu|8gz-5!@HW) zk^V(vk8h9yccYX|T~0m2wwl7$AscsGkViNn8G!gydtGSvNHf2cKr%monPJKJ=J~TS zMz4#9%!6~4V>fS?Nkmq{98O{%wPfotWD&D?OO^W7g2Oi&D7iC3lq`I8#u?r<qhMMqY2N_m;(XLleqFyus2_ukE)4r=Z_0JDAhJ*(H8+H$FrXLVY^{`!)n zc8ng=kHp;Nj0~o5t?^#Zt8UxMdCAYr!OtSWa23u+m1<##^TNNSo^I2VKx#5RYzIkM{5@ zxSLNI*hP2YvwEo`n8Nb#p8iZ&iEFmCY3coFs|o|2E|`IWzgU=yA#d_p8re1I60}km zQ5@(HYr}o%Sw7R}wP*{Jl!HA)c-bt~Bv#rewt9ASR-=t{-c^cjP6Z^C1Trh*>o8yh zcd3ogsA{_crOlrG2AATU~xF;2zz9zi%Nq) zcPT`SSsJfB1bZ?d!FS4-%7^UsK^r>4awv~5E(~@O-lE6fU@Y(fTIaBsF0l5PbTF{a z&ifdF8GFge7hbuaPa78wn~B&8Ew%}_JkH5w{GeB;d*v~~04Ky-mL?%dv(y`2Cjm;2 z-KwcM+l8^W!~*yu9}qx`7u!9w)jg44m9r*2DbIcQIU_IkDUI&6(EP&URmG!f2z>xG zglF_A)nufJ*Ak(}DcW{yF_B;G_`VTC$9W|WOA@7IUd^0@(SG=j=_6s8xLlKNXq?mi z;Qb^g-vBmzmd909bB1}T7@&E-kZRq5#6T!A9&Ru+ZABWP-*I7&8VpZ1Om|hVt?ayN zUeigm8m@1})}#g+h?fp$_l7&FG#Y$k>{1Z;E){yc!~gF485ZCD-+lf*6Z|Y*AxO-q zmF;Z5Vm_l4tLGtD+$xdv=&Q=7vwl$DwP_6m=jNU7-0F%}S)M2?33dWnHB;I);FvJ6 zXYiHwcPxv?sHF^>lmbr`vnZNUSsaa5+K6_cyUrS0!l1IU>uRGO&}LDI<}V6g2DBJz zsl{?B>!s_9#};|omiI7R_~o?rWI_D&y^7}9D)V|E&TGB((+*2l7HfeB2r z!dt6|$whqs#o?d&5fVEbZ^`t@T^H%{RWrqA4|nHTH+S_bnX|WBn8(MskncTI#&!lB zhQE8$(eEe4bj`2=R}?&Rtu!d}MDUD!XJtxv6bToY8J^-2&Ww+{=k9uJv4MH9&%>iC z`O?*LGLcGkro@%iq^(WS^v!a!CX=wEwX5T`>hFE@wLh>y3VT*6sUt_F%;deotz|Fv zmSu?5K5ji@(zhIC>2cOSktzE^b=`ABzAe~PWm5$xd?996+L-@BPO$X8G`#M3q}U^`&#s9%DvF2fVLqVi^&#pUqQ zI4V+FERWftmWEe@YH&0CG=wC?m6m+~`xQkY#sR~_3q^6`Rn5hZmk+f1xicS=cx*GB zw?gk$NVpg*n3R-6ovJMJx(~q-72c+beC@ZO)`GuJoa3juhIF~p^vnh<2Ha*5PEA|b z9r0ND*&6h*;>4fqPB2}kS%mj)sU+mD1*k_ z#21=TXh9ZX^98v&6=x!!Ls1fgGQGL7MRka+(&$8>>cp!aKniv8}#!wSyX=z?-c@LHw312{r25IBBmqQ|n0@3AIT)c;K9PM5!>_ z7h*qk(M?T&gwiQ2Q*@o{$b;iMiW;v_oa_CkY7UEV^x5!OSolwSGvBf-O4W2mjt{vq z=StPuR7XtE?Y-e|L`~@~Vr9x>4b`JY0Y3OB^{kD%-D|E@{DU(qZj$^}K6ITUCDsP4 zO^PW(6sXZ??iY6Udehp4#g>wTGtT(=>58D@R?a|BlkNPml`=c-#QZ1|&$@cB*VuJ% z8uxwcZ42m|Wv1)MdB^Px=i|#d71#2Nj?`eC8_lxbmzU$w!_{J5{tg0eB<}pek$o3? z-AZQn&pMFtRx$YaC zL@Wj{9~B2d^^B+h_=>uVNpXR==bdcCl?8FIkt`&_S+UX6s`JOFzCN>V2BUnCdK?ig zx?%v1nwV8-!5R}lFjYODk`#T~;qym6!{&ch^vf1X>RDDAyt8EZwOmq*Cx+wJ+U4$a zuIH~W*PJvx>#NmgKk~Jjz^r`F_&hE}YterUGVEb;MM={#&jZ%;;` zNaJC?_Y>Wj?^v!u7BTnuVpo%48^%2wyRkQjXu*?}hgjt7o;|YLbx@wvgJ>;n^S?9) zTsiOk&0JV+^Tp%MTW>s?VsK$oYZ~|dKqqM|n(rzr_{?0;ek=O7(I4N+_Z6#MvUS{m zQ)g9QX>xIyn`nRda!BG1pw{Py_XHP$NrJepajFfsSFk{8*++bCk42yQ!1ic* zTjDd=_|;Vey+`BL6UQ`um-20M$X*E#9Tf3i^W7b+!k&R{iTn7K!K-E`CG7&1n&row z*ZQ4ExW4Gx8bT{Gnrr1r1O}8S6y9dcKGH#wN!J>3c*^ee*Z*u2JRK z_DsiH#MtfXLqj1fz$01DTyyp$6^MhfZhF!4;ZUZgrdtX_p`~MRy z&0k3QEipo?YYR85ttZVmwvmA?k;`ehqmCM&Hhmr!@ zgM1uS%#_+butg2DEQ!4&0@j1k$%A#To}WLEsy?Dzv(U+0ubBSLT+*H?)-*AZ7uXh< zr?1*!RW#HVd_qgRdo8^NRZ+C87Jc=GTxd9EUMq}yU7jpH>usZzrd>XXIy`()p%dt)n41r zRF1Bc{UQ)Eqrp=V`r69E8&P5}HenTV%EGJj_Uoh~gt5Y`+ctNPV$~z$hC(GP z7W={POY`>gZ`v;?w&%0#m>*;49GofcrDo{W>O7j7g@IVBTr2&%epa@J=(Y#A;#SPo zg$p;jPgCr9f+dEuQD`e|2^8Epc-N(KHRHLkUoz8_HU9eFLqnp?n1d*c>P3m^` zL=w9hvIJLy(bEY`aeZ+ESqsAgere2w;e3~F{Rx4IFpH=HGYv^Uf9VrkEsya&V05Xt zk4TM5qwsQSQ34Tws8|{~r}xc}LJe@9Q;T8GI)VBoo<=~N*K=$qZv)rGGRFJCZ0 zUmy1$I}p5gljVP3^8=gX&&!5=G7O~kN-=p1RH|iI2GG*p636RQ%=^hl`9Ht)XDf@p zxc{YfIxDQrk5`LU0i8h(|L-dvD(b>d184Y)FH%8X#Dc!zmd^)Ch!yq88j1@Fnm=_6^ofuMr}H6U4y@mK~O!P4M^p2?cpIJa90?CLCdE3Pww9>aXR#kF9_0 zEomn@+*5ETyDLNSu#smAX~^*268p@IkG*BJM6XG&IGTUu2CaHA_5HiTW=(ms$~(6l zT!?+KevXb6gPhEZ~`sc_9(|zXWw>&Oik`5}g+I3&@Kt5STtbWCGX^QX>?*-}w8lJR*bRx5H zk1}1j=i4p0tq++JbXmEjI!XZ-@IZxBtZJ*Qp`2mltRQr*59>+jr_d!%=omLGC1PQR z)R&C28KU}&Q(W?bx2|5kbnLpx)pm%c%pp+ssErAI3*bX&l?Ac;dsziY>%VJKi1(kU z0wRqDV3<0B4`>W%fX(ZC#;C7p=Vmv3Kc$#t7|d;KLx}#mw-BduN75haY5N zjj^3R>imfsoog%${;L^b&Ny9cUSNoj@=WCs`2XSU&4ZfC_IBZZPj}mjVmkmrK>M`F z6egJ`(bFhkf(eq400{&U8Il;rgi*AQf&-H+B%p+V5JCtL5J(79@Q4C3Lna_V5Rf6v zAcJCKe>v}c?_2ku`&HfhRee>vDydzSO4iQaYyH;qdxkVw$KU6exs66fL8~o#|5R@> z@k+VY`)+^@iJB`33CAA<&CzT$OwW9}XK|%zm{_{Ru(O3qECp{n_9FKRPo5TM+xZ7s zQIh}wb|1rD4bBw)CTXHWOQu%nU^wDj3(n|8)y>TpZA|BVZ1ea3d~l;>)Hv)dGRG(y(-?%YqJ?UIK6u$LYP6{hWVdPt;MGG`pmgCuQ((3xugYTVE(29_@a4-W^ zyZwrJ%HYyj-zyNI+Vkel?|*1+KHOtaX4Ro#w#f_+2>?njK{@Ct4NoNU< z9AaxyK*k}`9q+J&QSh>yGrsWiznNjt|9s%!AH+=n7#kz`d?h3TOB7AGbsuNhhG-6z z%nPgv-sgCZ(og_w|sW8h@7DH$7rb0xlgx2^Kz#MI|$u z9alAL-})tE920hn*M}m`6IAO@V)Z9cQg`T6NYtWBc82&6yw7$GYF<`4bxNgHlo$Gh zgEnB_9@lqA)gsp`#{=|-83^mFxUdsBXU-LzG0(e`GG%6FuWociLs=8lD&Z={*dsWr zVWrgTnQA9|2=xMx34!y>@pev~F*rtLWo6OVDZAPZ-pZo^iNki_%3yhW{H-S>RUGm6!D_NYhFL3P?QcOmuZ z5M%3uRU+5ThhI8r(D`Qrz)nra`+2;03EyL?`BY;T)ZmA#b{sZfs9)IdSi+d-p0ycT zxlm@Wwhi=TqAF)SW?7s5ub-~k92@AL>2MQ-2t29F* z%*6V<6)|*PktQv^POA(Qz~kN(r4CKa_`2sqzj8fK`_ZK8rYj!!*_TmleBdf4?_>pP zTFSwSJj=_iv}gua(|4pG04a!mQt*WT#%xVh^oF2#=3BB91fW!9d8~=^wStBU%8@=pXi0Zpn^R;8ig=YUO?#7z}dYzY5 zB|TD!llU22g0Ko4ogfOU^M(Wm%5`T3bUD zd2H3tO)?2vQMtyeKV>NDJrGFDb~&E$wmvE<4(4~K@whq%$~r4(``(llO5u#WnE)Tp zADg(Jb4&1T*u=ez(VvFQ`0Klu@_w4wSC_`&O>fo>9OPT5I?Dx$EUuA1+$%~Y41E_i z@Q>)k8kl#Fo_H{J8<>;BwE$j+v4BqxU2MJDdMjJ)#&5Zd;(i8dBO^hHrWG!Uey0{6 z*}1Ocv%E=3%!{SaAwv&8fqjQ9KRx=F^GSW0a-8Om^^d|MHM^Wv^D@-uOz#`}`V;bpAshW?@2g|1dtDn8iNWt?Xtn-#T((1EO(2)G!81rCb+`sSPW^Lp{{5k^Yd%oKJ_}Ta`nyk4sd5C za&J0?;dOAVy(zl^tMe$c#2;HXwksx7;oD9mYe{sLa?JCl-Uovct=5Ct93`GbSs9XU zPh6)V^qO-;4I#S+LsiFDwUKOqQZhLNSl8AwE9$tFr+z*7_7;$r#R907b+w^e8+T={ zPYZwKa8TJrLIm4IM$Jz5!>+Db4X9rWe*f-!2lvYiM-v-N8vT&n>aGB5qSY9EAQ8{yDrx=lqlAU zMXvq{Un?#QKXP~Dg$JE>|3DY(_P${PY1YZ>&`|!3J#U7_S|ZZ9`Xz#nQb|Zm$UTwu z$obG5s8xJF_(}4Wck+PWs5t|^L~;?BSV7DtidX{%ph)cc2N>$dupDW=p$BUreHDB% z?1J6K8;vZQ*0R3&=1^V}GhDL*msJqgMkt$Mtvk-td6_rTj%K9?sdu3J-A_QK0)J1{ z1#$2M#5v7#Ffp1^Yn1bDnxjITjSz2Igio(0S_j z1DLm0Sc%SJCX%e(%BsrpmSy|2eMmsx-fzFRA}HB&1p`ZJ_&R+?x-Pd$iTHs3$bBU! zLNNyZ?abPuW6-cubtwKF5taD{17-t>d11h)_#6k@Bcl>3w(i)GcH^U5w1yu%U*}+Z zSEp&b&U)Z(E^^RNz$NX0;qSCPgz0rwr@CgoH^1KY;0CL1;zt^evgBHt{E}wtX5t_l zdt_F2dwBs_#x8f^XxqMNce6;l!^=6;%Q|jmd`F{vPZ{MQVBX5qQF8X_Fo z^)Z+iK2q5@oad!#V=hBs#_E1nqz2w*R6nq*l3OmD(81Qjk^zm#rbxnPp_}p<6g15d z%13!tz>8ThTD+)InjWB<^I7-L_i0h=7e>EXcS_v4gF|XjjhY_@|imM5t3{^GUB4)f{U^rwVZ3Heo~`jdXx zyuflMza+bh>B$5l^q?iaA%|?cP4lo*MJG?RK(>tztQ0G3{32^k zN&B{})|^Mg^l+q#iGD}^JpA5KyHcrJY&K!zR~+Cp<8?IO!KVl*<@ce#j7eBvuCMT0 zs)Z*5N}N#{R-4rTUHI^Viutq9)7ir!xKcS6K5D;*eBrX>DYmS@=W(>7mF*EY2Npb6 zy~TxkpAZR#xgT)#7sOzMH@7DI-814{p4NOcmXF@&mRq|^f)&;vqEKTy4q~q*! znuNJGiy|VL0FyGf+x&zrw#aw}Wsw1H9QUq(DuFnX8z1W=uHv1Tv5@KjcW*K0>oAz- z93N8Zm0x8L=+Kkk*>s__=1tGzmgAn#QjS7E7FzFmEnzjgXt~k~oJZMKvO(|esx;{f zS#Blq6UmWH4ZQq-i$4Gz2domCC#*9m(WQ$qd-ux~8FC0}ag$XZb!;#_XK`jJZvLV3 zmm$^mD&cR1>{LK8}b7{fP=)NZm*2-Nr z{dQi9C$S*MCKr&tcZCPE4cBog*!ks%vy1!LzrOQV4klWj4;yH#=ec|FYZ@wooUC*H zXr=Y;g+M)n1?hBkAqj(ii+&81NNi6v>0zFdMZF_1ihP9Zu^@3rgh zs>Q9tre75vkAo7U5}F}D@n_Z16P^t4T!!fH>lK6W>xG#P8|gK(sn(E!5$Z%Vi1(Vo z!dm~)*c@Xmsy6gYUXp+u-%lSkv;*0J4bSeGTx++NzO=45{ZPCHlv_?2f}=$yVMYR$ zo#|yn(Ic2u&8g-$r8RsqZWCQcjwQd6_QqcVY#e+}13hUP^gN-j^!tAu;b?zk2EVjj zQdMp%6k@x8SZisz1L{L)$1ZngtEzIxBm-AP4k;BrP1LF%4|qe0@Aa1S<*$GTl#Im2 z;bmj8;RC`)JkmW5H^{c{|7Ml5f0yPEldBc*X8x;jU~im{d~4BV zli?f*v($ab8U*$G5JH}MeJ{&=<|af_fx9PQCDi-LwgY^b&%lpw3l*rXxH_U`9{>2; z#lFV_9|OY;yBAlv@#kou#sJc-4Pc|L^1|a%<0EhzYWMGDI!b?g`QOKpj)6rEr^oni z1`eTT>bR0i*%^Gchq__=kKuTDV_j`+Z8FYRh7m**bmpATiY&z+!EF*RbG-)o!|D4Ck z8CjrSF12D~)l{nu#)XYp*U9#l^rq%f=e4zoa zpquUL0c@N(J!;co*FE*G(!z;TgLzd0NFqMrKsV*bM3?gqw^3v!3iO8e=H9ivp#eyi zgEr|jgHPPwET)zRz62U>%$J$HE7Xej80mAG2{K&T;i+*~2y)|i@fV)ZPIvKFEP9suHIGVTowr>}d^;$zIzn{3y32HDOd4k@ zeYNi%=;3r8BqHhd@b-SVo5VWMxd`aB#m%rD^{Lc%NFa;GdDQ;RoL`IrI}%sax<;{0 zXCB0dRLOU}P$?CaD=({T7JHa9tD(8nRFJbC|J)`cz0zi_I@VIEe4;JZ3n)|mk27xbX33f{`cA5Elmymk^B2TGr2pFGrGH$?4Kdqhn2RP z-29+zY+9^lDpBts?-c)#C+;YyJ(gV}iTlIUI!0}eUsdSpJG2Irl*z#{t&hq2T^DY~ z7c0Q}k1%ub*L<9a1dfS4l|TSmysBUsc2{xq%T>nUVJ2B+C3#6p53fEc)t<1~1ah3Y z_tw6I+1HO?sRkTN&i+OIM51cZpb+ni>L)J^=IhSo`van|Q&#zrb2xj+C|qP@ohM-@ zLI3(r2vDov;jU>zEtmiV!lm@(dhP|Cf?Kh#0AwpAj$TqpTQ`MFI)sCA_74w&rp?`> z@1;#;^v;)c6Lj0!>`MZeGI>lMp)@-nGPcZ%Z50lru&VZqf9qT8G1fWbyN( zLYWNKN{98($@2cwCfYjI*$~8B0o?DF-!DPA!40{ftfL<7>CakSMGszT$ez*JiJ7*;)rbgly0WsNLjqJ>7 zEVJ3q1(5x!8qOro_yB>4W7Wy%@T{}JXFrY3{PkTeP3`gQ>qp<7uarqb@zzZ$`mhQp z54RES`}QP-6L5>=k-@FLGCkX9%e4!)oV?T2 zhf$OIO-A=DNm0>7<=z90dpQm55M;j*YqaC_2pI?UKy9BVmBVOE9422NZyCLmG(o;S0}#k{QhQ^NxsaX9g7j}k|| zsFtf1ogZ6VWdNo|?sQq@v^=7T)!}3nbbio}MqS5G9=B`dn0FlMvv{Iah#X_U8b_$z zo5Sp~Vd1tLxG5=aWO9gww46`xK6)Yx2GN@|x@cILUE7SH-!5g9xw>x2Fm(n- zRLSk59)Mh1yeG4-rqtO>p4NT!h(yT>82--Hcx1odS*9ih@W(_H$Z?!0&PMzY{Km4g zIyz#snRbSKx_ES#1QS9;MPLSPViD}QG!%ASZWEQ2MY-A%qVZ&Y{2Nypu=6Q2tg6fj zMF7;)^JKlNCVJ58_uZs=#&ciQ?E9{rB%C}{J5uRv^3JnN2l&4fJpWz!{2#sfImz+f zwA$-}M*`Q8u?w%)nI8-L2QqIv{_#J+$@imcHw&}wIhajbZDzXU*6muZkbL^*a5Q@| z&C0;&+-~vb)+!g5ug*d%!^Vk(OEHXV;Y890VO!gsXwkE3Po_P^;LUcIdY=uvzPe)7 zm;K(eq5~E;@l@^eru#!R$OVmZ$@798j`LW046JK!!fEOY5dICeTWdYi!*A+rW&T-e zGKLshlrY@~d1@O3CVXfs4`bbAF$NM(q1w#T2;qGuj?XO+p2GJKYfwS=h^b%MFa|{) zUf1<@y*5agqbEU_#$UoE=?uMTx6j&|n4J^u53f0I?In=3)wjd-3i>ZuUxR0?7T#ya zhL%Wrm$p5Fo?c#?s{Sk*?Ood`W%QxmAVWJiOK~+1FXUIX+k$w7qz7CDfg~`p)KXXm~&rDj};7h;mCVM_wpG;q)-g8i+~_T{7@Y|dC}87zTFEi0_meVA> znW9jJVAY`+p4piJfLf?&ywRF&!>q=PUR!E3VE`~+iyUA76j=AB!e{9dck94PrOpB- z+m5;>`trq0n&2f>wSPujCI@KZa)#0?>{|c&?kf}$^r2UNdSJ~;DGzaIyaL}md8MBL zAU6y$f18Gd#|PEtxjixoVaWdFKuEk+lT%9JukaHeAw2^HL!JQ!ec*f`D5z}x-RJo- zsC$Yg((MN@Td1WlsVF=H?x&z5?bpB{79#^^bi6} zMp5rEM^m$8OVeMEU>GhPls1&#Y+}<v?3Rp?fBV=%n|z)O&sN%8E(@+suM>m@^|A#yEP}k%8O5^&x^cs>f#0MPzTk^2q7_#YZZ@{E!H+3$;q85ic$1znJAQlrkY--@*jM)I zZb5uJqQbQHeLBp7`Aj(d>)ezJR3Z;BX-)L3`~{>alCQe_m?&=Auvjy?<1*A0q3kjGwx=2L_*Ph0TK5O{X`7Q zZWx+Lie@`djQFzG_N$xM>r?D}y_kNEf3Dg_`8MQEE^)$tJ?M6gdC>mbW40>FossKr z^~U0GlMOi0S_?H)F$r8%iPpmdD!HiZTh0ev_;zkFm2o$zvqwl%n<1G+u~6>Tl6Gb-q2pn5E`o!ht!y`jYr4TlJ|9|Pm1-2#U?sHW0G@dS40L99xXj>`JWMx&TNY+M#v=#k79+Sgh#va8C`9n%@OBrSQP?QF<}A?qIB z7*Dai8dmh zJZ)$uEgP@+S*e0yIXg))cU&_UCe8+jI0Y&_r@k{kDNaBi9IPhrkt%z(;tcHN!xd(} znkJ1BKXg*JHD_U%qCZFrveEs}l=U$^Y+*vr-lIX-``&-CeCOc`+Owj?z%v6|vhhVL z6$dB@tJKCr#UA&wa)OYEUyd^PUB_%(+>@)0U^5#%7*5lZQD;)4$T`b# zk^g)qvT`s4=Nx?ls|H$ypl}6SH^!UlOdNw7n{3=dzI6?j?PlIYY3P(SYPfuYoZw4X8kMxzNDC4F*^)HTVbpx&8~{l zqujEl5Ra6L^F(r4!Wm_kR5~!s{e*YtMfxvIHdp`i(m&&hv1t1(`A9nof!zYO2-Ey< zciw+$m2q2&01h<`ERE8+k5idd7v7K2i5PezoSh}$KK%!}Bb`k_DACTL%BDIyGx6Q= zLJscS@xAvL# z-g@Z{&C!}cOY|OoKxG}WYfvOvhdjFUt0pn*Sv++15QSvVwai00Jj5TiF^Iv`Yq1O+_1t2>v+hVQ2Ml5@Y}BX_Bi) zEw@3)H_5OctXDMdqda;Rp}yA+EKC^Fti49%e1YZCa8Nw#^_6nqGjh=B`BRTZhE@K& zRl&xQ5}>J1oo1mbGddpK9ux8X{?>u9E^_Y|k86b~*ZSs8E-s3LLX^%wa)p^CBM>$P zyBF?ir6yE7EUr@E*{7VZ(`@u6UDfX-Jl3QW^W`ox?&c(8unKmIXsoS-o3=Ur^s4N9 zO>^$27fHW()M1B3z`^?|@sgBN8jbC(9SxU~C5i!BiqEIMGAK8C?^*2x(D8=l#d^ga zMQA^I4)@L8tcMMFW-yXhra~EZ?d|=DThpH;Q$6RDhnkQ}VIKCQSMgA5r3oq1%Jn5e z6`8XZwr2Esz;1DqjAJ;NMc1da#(oL=>pOhzs@d0n|3Y$@N~gA7Y-L3n>W{6{w#f1+ zAU9CaFWOv7XguY&lvQB>l?rGIgI;Y|rD%M2JU;qkI&xt`LlCACZEgc#+jpNws!V|q zO$mbtO?lAlo!loXjbZ~CqR7#yTXoOwLYas-&T75h?dNyxpZ{#S(%T();CawaA)L!k zVHCUomsozi%7aL#G*^RjvpIX&-EQyvYIrf$HhC!!h{5%OLQG!i#~DFaXYxtVRI5AaWCmA27mc|*?hfk^qi$Hw^!j7Vm@Lnowiz_7 z(oj&j$l0vwZ*n5W>H6 z=`r+{8}aK045FGj?k9z@Bk}CLSOZo=d3LYAYkF)2fBv1Q8sA(oM$J_{g{oX^VCIKg zZ+sm%cJ_G&hI{WA=ZZ@;rmAOj30^;%ENvN2|e6}4u(Sn&i#QR*+4A)MQlocOTue)#w2t*Wz-`T$ z9{Wcojpd6VRT;usXka+GcD5Pp)&gmniJ!@``rvXqVS80EVhDSMEwZk-HXMrbNI@Hd zkzvUn=amLiOj5zVg-L2(q6QA!GIl8H0XGV!USd^lTUMz0IT-l%S5^>vV(1ji2}t|7 zn)JZRq5r@N*&2V0kZ47W#42xpDavn%fz^k2G>PDhnBezC`8H z;cc7Xax@-Rw#p8Ow1PmCL2u>=NWQQXsJ&PRhRDA@+Qr>lL!?KnkWAZaiFDTm{ z)_B$DgUj=)VwHL2JaC!r=PQxfEBNt#%tLb4L|N&pS^cR`ZiQao<3=aShd6}ah58fT zaIsY)1QW{%g|^6Dvae^(g7hn)4n2}tt>r@*YTNy(WvSe~p%B->m`1sS9w*i&A%i_v zQ7Ix3R;Dzz>bbM80TgOmdh{V~vMf>NZP(`Q{f~o>Gu*Cte|O@45GD_Ns`om^sTpbd zRI<2=CC{p_t!_*_!f4PnS0%6_%-Bt=A22I`S{WbB0uVmcbuDh_mjH)Cg@_zl#V(Cp%^k(Sp z*RT64k5jiGU+#FvH#FKnP0kM-1`e2iS4ob>cpzgeEk8pO#KLeTp&zaue>HJSR z=#ib?l^-nAl3cpKx-(f=RC<6W6^o!4*c=LXieQ~F%OY%B3bAz4Vgk4I*=cC^m@E7A zi5=onf?5FsM#CZgo(Drr*KSg~BRikJ!RBeVj`9F{qqw0AV^F?>!6rdCt%{Ch%)(vQRz}=d@Ri{$DeTPx)kE0^ zBR0i*gExCTcokTTggw4HVKDOu^2mrivfD>e8C_v;1-KLkRj3z`y`pyur zdUSvyppUn*t|@fejJ!UY%E(0GD5#Hkb&mHAOi@2IJ1>&F4Ni}TgE zm`+R)0Xf%}P6Fp}^q}2V#zF-xBD>-zm4=A)V8P6N%ec7EZ=iDOwE=~E9nKkD(p)^= zxD9zZ0&L9UHn1WVVUYFoyb>Xvr+e9HOi5FbHzKcZif&>fY54fz*zMEopmQ^=E8`KL zFH{+(y8pO`dGIpfv1H9EZD|icDWE$IH7BY|JU1(LYx+XN4T#u!LF5F;AjD9+IM%39 zv=cP|FJM8Xj1|5cH4aL)cO02Nt>cQYwF~3a9IBF}z}2XW-)??$gB0KEp;dY>Ng_rK zLKAYbsuA|vVFZ&v5)f8o|3|XU^AgeUR%Bea~`;){c6SrqOXpSZxjn$={Zj{hT z_m`g2(;|xUg!tk{cU^hj zonQ3L#m?KCe|`7Mo6weo*>4z9OqQ&^9~)!EDcN>ZbX`h|G+C}uM>*vTp!d5x@@%K! zgN>8*&4eP(klchgmg+^qyKsdliq9bXsW07m{h|LE<(Y~DfuV_HzlA2NzCH+)yvC-O zWJx`z4nq1E&Cn!ma=vd)^ug^JT|O7>P;z@^!tY`gA2aV+UjgtUmdPiFVE4u*$`;wX zXZl7;_lC_)Ppxh5Zd?iOf4;r+*LR@A%k^Y#hABj_fE61PjKe5xEK;IF_p^_@Km%vn zw_1_!vblR)+9MLc0a7yQgA=K)7=DHq0iWUNB_m4q7@GcC)T8XZG%)Jp_qDBIqiEk@fx7yB(2ujl{0 zbS&8r0zosuo7Y@pKgo|mc_1`5kBw=I>1-|sZ39ZR~;Yh{&;V-x1x z=#%L2@&486z9CwRek6+zg8IbGK8f5ovuB;bTp07H5wDb^mzt2T6=Cw%g<>1^J-wpB zcmc#9*!0AJ-urZEuxK}azkBfsKYDCkkP^-#z<3|h9YXNsV zpOy2Ak35=}vm0weG}!`>h=yryZm!Hd^T>QvPAnFJ^yuI88AyCc1zc=*$Hu(I5{wo* z`g^Wbpi0IKI-;&4e1ARY0>2-gHFK^d_!OZ&3~kJ=IOHd6PF`qh0XpmRM@`YTERYMR zG!J$cdG==6lX>C%F4~&fcVRNTPLI9&4-v@$-R;S8=^#~M#S8~r22rKR$x~HFBKcT= zj=z%###yfHwC$#D_>Q z@|U?h$Vr$kv~&^?PG_v3Lom`QVVs;$UQV8U>$se2E;U^{tBtsjkvHjABP2?x4wc@h zm7`Qbq+uF54PBnIdXfw)Sl+eJZ!tM)nED|RJ4R%0DWM<|S|l>1vb@<~42K{vT&&K0 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 NnUIdoPht)oh)A7HRn?7(iBU9rc%y-SV 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

40QClb3EeEft~R51e^H~7)*YclXMCx<1=luV^d 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 8b272b2..a806895 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. +To play tic tac toe, just run TicTacToeTest.py. Moves update every three seconds. Use a green object to track properly. + Nathan John diff --git a/README.md~ b/README.md~ new file mode 100644 index 0000000..8b272b2 --- /dev/null +++ b/README.md~ @@ -0,0 +1,5 @@ +# InteractiveProgramming +This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. + +Nathan +John diff --git a/sandbox/TicTacToeTest.py b/TicTacToeTest.py similarity index 99% rename from sandbox/TicTacToeTest.py rename to TicTacToeTest.py index ee41437..5caed82 100644 --- a/sandbox/TicTacToeTest.py +++ b/TicTacToeTest.py @@ -173,7 +173,6 @@ def declare_winner(int): #control loop if time() > t + 3: - print "hello" t = time() pos = (2*(x+(w/2)), 2*(y+(h/2))) #green ball location # print pos @@ -190,7 +189,6 @@ def declare_winner(int): #AI turn random_cell = generate_random_cell() cell_states[random_cell] = -1 - print cell_states update_rectangle = rect_dict.get(random_cell) pygame.draw.rect(screen, red, update_rectangle) diff --git a/sandbox/.TicTacToeTest.py.swp b/sandbox/.TicTacToeTest.py.swp index fd187e2829f3a59a6b994ad2bf98e71cfdd99010..6795c915b119e928d145194e7c1946a871f8be0a 100644 GIT binary patch delta 228 zcmZozz}T>WQ8dXQ%+puFT+f672m}}y%Ix>;S}KKzxUT zfnfm<&j;czAnpX>Od!qxVizEG24YPh)&OE5ApQlk{U;EET=9sVVRO7;Gn*I#Lvops lUP@|lNl|{KV@^(ZW?o8u`Q{_$T8x`{EOnSR`&n-i0RW@MFTwx- delta 231 zcmXBNzY76z9LDj_8T^*}mQyC@Hiqle$&V}h6-sgorIaGq`H`LSC){Ma(WLYp`~w)- z4HBc3-BaH6nx5fVdBVyQq`qdEb-AeOghV2Cdsw@@WQanGH$|R~b^S!gz<+GHOuH`i z2vG)JVWKNsU=I#hkcD@MXa^gZ!4x`>1A=FeXbU!s!GbmvKnD@x@Wt~7?r?@vfOs#z k_VZ*ZD!7drbE}mUSIe@G$!IzsISW}C4s3g(aML&>ehDuvFaQ7m From e785a04c0d114d98f77ac59c4a4a3f44192aeeaf Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 9 Mar 2016 21:58:10 -0500 Subject: [PATCH 19/20] added comments to clarify program --- TicTacToeTest.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/TicTacToeTest.py b/TicTacToeTest.py index 5caed82..23f79c5 100644 --- a/TicTacToeTest.py +++ b/TicTacToeTest.py @@ -60,12 +60,18 @@ def find_third(pos): return (i , j) def generate_random_cell(): + """ + generate_random_cell generates a random cell to be used by the computer player + """ i = random.randint(0,2) j = random.randint(0,2) # print i,j return (i , j) def check_for_win(cell_states): + """ + Takes the game state dictionary and checks to see if there is a winner. Calls declare_winner if there is a winner. + """ #check verticals for j in range(3): if ( cell_states.get((0,j)) == cell_states.get((1,j)) @@ -85,6 +91,9 @@ def check_for_win(cell_states): declare_winner(cell_states.get((1, 1))) def declare_winner(int): + """ + declare_winner determines which player wins the game and prints to the console + """ if int == 1: print "Player 1 wins" elif int == -1: @@ -133,9 +142,10 @@ def declare_winner(int): turn = 0 #initialize the turn -t = time() +t = time() #capture the current time. Will update gamestate when the time is at least three seconds later -while True: + +while True: #main control loop # Take each frame ret, frame = cap.read() frame = cv2.flip(frame,1) From 042fd8f4561c0ebb723be63be744ba6e07e511e0 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 9 Mar 2016 22:01:41 -0500 Subject: [PATCH 20/20] cleaned up readme file --- README.md~ | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 README.md~ diff --git a/README.md~ b/README.md~ deleted file mode 100644 index 8b272b2..0000000 --- a/README.md~ +++ /dev/null @@ -1,5 +0,0 @@ -# InteractiveProgramming -This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. - -Nathan -John