From 48651d9b1487e9d2f2bffd1676c26ff14b10324b Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Mon, 10 Aug 2020 13:18:17 -0400 Subject: [PATCH 01/21] last commit --- module1-introduction-to-sql/rpg_db_example.py | 18 ++++++++++++++++++ module1-introduction-to-sql/rpq_db.sqlite3 | 0 module1-introduction-to-sql/test_db.sqlite3 | Bin 0 -> 8192 bytes 3 files changed, 18 insertions(+) create mode 100644 module1-introduction-to-sql/rpg_db_example.py create mode 100644 module1-introduction-to-sql/rpq_db.sqlite3 create mode 100644 module1-introduction-to-sql/test_db.sqlite3 diff --git a/module1-introduction-to-sql/rpg_db_example.py b/module1-introduction-to-sql/rpg_db_example.py new file mode 100644 index 00000000..454fae40 --- /dev/null +++ b/module1-introduction-to-sql/rpg_db_example.py @@ -0,0 +1,18 @@ +import sqlite3 + + +def connect_to_db(db_name='rpg_db.sqlite3'): + return sqlite3.connect(db_name) + + +def execute_query(cursor, query): + cursor.execute(query) + return cursor.fetchall() + + +GET_CHARACTERS = 'SELECT * FROM charactercreator_character;' +if __name__ == '__main__': + conn = connect_to_db() + curs = conn.cursor() + results = execute_query(curs, GET_CHARACTERS) + print(results) diff --git a/module1-introduction-to-sql/rpq_db.sqlite3 b/module1-introduction-to-sql/rpq_db.sqlite3 new file mode 100644 index 00000000..e69de29b diff --git a/module1-introduction-to-sql/test_db.sqlite3 b/module1-introduction-to-sql/test_db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..b6166d05e32e58310c082890eb48ff64f6a97933 GIT binary patch literal 8192 zcmeI#u?oU45XSLK5jWAT>x~seL?1w_bnBw_1!9R>uoY@v&j;~sObgE9D*umM!iAfD z+a33L<(;1IZEd}-WFp4MMpZ;is3_DYT|f9V;qCfwF*0AjMq$c~pArs1009ILKmY** z5I_I{1Q0*~fnNnuGmPWdl-{0h&O7_?{T1yFSz2UTq}x2x{!5d_)=tZ-ZIk6 Date: Mon, 10 Aug 2020 16:02:00 -0400 Subject: [PATCH 02/21] last commit --- .../Assignment/buddymove_holidayiq.csv | 250 ++++++++++++++++++ .../Assignment/buddymove_holidayiq.py | 29 ++ .../Assignment/buddymove_holidayiq.sqlite3 | Bin 0 -> 28672 bytes .../Assignment/rpg_db.sqlite3 | Bin 0 -> 253952 bytes .../Assignment/rpg_queries.py | 77 ++++++ module1-introduction-to-sql/rpg_db_example.py | 18 -- module1-introduction-to-sql/rpg_db_notes.py | 140 ++++++++++ module1-introduction-to-sql/rpq_db.sqlite3 | 0 module1-introduction-to-sql/test_db.sqlite3 | Bin 8192 -> 0 bytes 9 files changed, 496 insertions(+), 18 deletions(-) create mode 100644 module1-introduction-to-sql/Assignment/buddymove_holidayiq.csv create mode 100644 module1-introduction-to-sql/Assignment/buddymove_holidayiq.py create mode 100644 module1-introduction-to-sql/Assignment/buddymove_holidayiq.sqlite3 create mode 100644 module1-introduction-to-sql/Assignment/rpg_db.sqlite3 create mode 100644 module1-introduction-to-sql/Assignment/rpg_queries.py delete mode 100644 module1-introduction-to-sql/rpg_db_example.py create mode 100644 module1-introduction-to-sql/rpg_db_notes.py delete mode 100644 module1-introduction-to-sql/rpq_db.sqlite3 delete mode 100644 module1-introduction-to-sql/test_db.sqlite3 diff --git a/module1-introduction-to-sql/Assignment/buddymove_holidayiq.csv b/module1-introduction-to-sql/Assignment/buddymove_holidayiq.csv new file mode 100644 index 00000000..a06f2098 --- /dev/null +++ b/module1-introduction-to-sql/Assignment/buddymove_holidayiq.csv @@ -0,0 +1,250 @@ +User Id,Sports,Religious,Nature,Theatre,Shopping,Picnic +User 1,2,77,79,69,68,95 +User 2,2,62,76,76,69,68 +User 3,2,50,97,87,50,75 +User 4,2,68,77,95,76,61 +User 5,2,98,54,59,95,86 +User 6,3,52,109,93,52,76 +User 7,3,64,85,82,73,69 +User 8,3,54,107,92,54,76 +User 9,3,64,108,64,54,93 +User 10,3,86,76,74,74,103 +User 11,3,107,54,64,103,94 +User 12,3,103,60,63,102,93 +User 13,3,64,82,82,75,69 +User 14,3,93,54,74,103,69 +User 15,3,63,82,81,78,69 +User 16,3,82,79,75,75,82 +User 17,5,59,131,103,54,86 +User 18,5,56,124,108,56,85 +User 19,4,85,67,111,65,72 +User 20,5,114,83,65,114,102 +User 21,4,93,82,79,79,90 +User 22,4,105,52,75,113,78 +User 23,5,69,118,74,66,101 +User 24,4,71,123,64,59,102 +User 25,5,88,94,81,79,91 +User 26,5,83,99,89,74,91 +User 27,5,69,133,74,54,101 +User 28,5,128,53,74,117,105 +User 29,5,74,123,69,61,101 +User 30,5,79,93,118,90,72 +User 31,4,51,115,110,51,84 +User 32,5,69,93,93,81,79 +User 33,4,100,53,86,112,78 +User 34,4,88,69,108,71,77 +User 35,4,93,84,75,84,112 +User 36,4,79,86,110,93,73 +User 37,4,87,72,112,63,71 +User 38,5,65,128,79,56,101 +User 39,4,91,66,110,69,71 +User 40,4,93,79,74,92,90 +User 41,5,59,118,108,63,85 +User 42,5,65,103,90,80,79 +User 43,4,87,89,76,89,111 +User 44,4,93,85,79,85,91 +User 45,5,93,94,79,79,113 +User 46,5,74,130,74,53,101 +User 47,4,118,59,69,119,97 +User 48,4,101,61,76,113,78 +User 49,5,88,99,79,83,114 +User 50,4,74,87,87,79,79 +User 51,14,148,59,104,208,119 +User 52,5,93,89,74,89,93 +User 53,4,79,103,68,103,85 +User 54,4,76,92,111,90,71 +User 55,8,94,140,89,118,92 +User 56,8,108,109,89,89,143 +User 57,6,98,89,133,79,79 +User 58,8,84,118,102,94,90 +User 59,8,138,74,79,143,118 +User 60,6,74,109,103,89,88 +User 61,8,118,104,94,94,118 +User 62,8,94,128,89,128,99 +User 63,8,64,155,118,64,97 +User 64,6,84,108,138,103,79 +User 65,8,108,109,94,99,138 +User 66,6,89,108,128,116,81 +User 67,6,103,79,148,74,79 +User 68,6,103,109,99,89,108 +User 69,8,108,99,94,94,138 +User 70,8,108,109,104,79,133 +User 71,8,138,59,84,138,128 +User 72,8,79,143,113,69,109 +User 73,8,84,153,79,64,113 +User 74,8,74,148,118,64,104 +User 75,8,74,153,118,59,99 +User 76,6,118,64,101,133,92 +User 77,6,69,153,113,59,99 +User 78,6,123,68,89,128,90 +User 79,6,99,104,128,64,78 +User 80,6,124,59,84,143,88 +User 81,6,84,131,128,93,81 +User 82,6,113,64,89,141,86 +User 83,6,118,64,99,134,88 +User 84,8,89,143,84,64,118 +User 85,6,98,89,133,69,79 +User 86,6,98,104,109,91,101 +User 87,8,84,143,74,74,133 +User 88,8,123,64,93,148,90 +User 89,6,84,113,141,98,81 +User 90,6,59,148,125,59,97 +User 91,8,143,69,79,143,123 +User 92,8,94,133,84,125,97 +User 93,8,84,108,113,93,90 +User 94,8,84,138,89,69,123 +User 95,6,84,108,133,98,81 +User 96,6,99,84,138,69,83 +User 97,8,113,94,84,109,128 +User 98,6,148,64,74,138,128 +User 99,8,84,138,113,64,114 +User 100,6,98,79,138,79,79 +User 101,8,133,84,84,133,118 +User 102,6,79,113,106,87,88 +User 103,8,113,104,84,94,148 +User 104,6,69,138,113,79,99 +User 105,6,83,103,98,99,90 +User 106,8,69,143,123,71,97 +User 107,8,118,94,99,99,143 +User 108,6,74,133,99,74,113 +User 109,12,115,94,163,109,92 +User 110,12,123,124,109,114,168 +User 111,12,94,133,157,133,95 +User 112,12,104,123,163,128,89 +User 113,14,99,198,89,74,153 +User 114,14,113,148,99,148,110 +User 115,14,94,163,99,94,153 +User 116,12,133,104,119,129,133 +User 117,14,163,69,94,188,143 +User 118,12,74,158,158,74,119 +User 119,12,123,124,109,129,143 +User 120,12,94,137,148,113,100 +User 121,12,123,129,139,99,143 +User 122,12,89,163,99,79,143 +User 123,14,81,173,143,79,122 +User 124,14,135,84,158,139,92 +User 125,12,108,113,133,114,100 +User 126,14,138,119,119,124,158 +User 127,12,128,122,134,109,120 +User 128,14,79,203,153,69,119 +User 129,12,84,150,128,104,102 +User 130,12,148,69,104,173,138 +User 131,14,133,124,119,124,168 +User 132,12,89,128,148,111,102 +User 133,12,79,183,133,70,113 +User 134,12,96,113,113,99,97 +User 135,14,84,161,153,84,116 +User 136,12,109,135,158,123,92 +User 137,12,133,74,114,175,102 +User 138,14,133,139,124,109,128 +User 139,12,128,124,114,111,126 +User 140,10,97,123,108,119,111 +User 141,12,123,104,104,134,153 +User 142,10,113,89,168,89,89 +User 143,12,109,148,94,133,119 +User 144,10,165,64,94,173,97 +User 145,12,93,123,123,124,100 +User 146,14,143,98,119,163,105 +User 147,12,89,158,89,89,158 +User 148,10,113,111,153,84,97 +User 149,12,138,86,114,158,102 +User 150,12,79,158,148,69,119 +User 151,14,84,178,138,87,116 +User 152,14,84,168,148,80,113 +User 153,14,84,173,143,69,110 +User 154,12,104,130,178,118,92 +User 155,10,99,123,153,128,103 +User 156,12,93,128,118,119,100 +User 157,12,128,119,104,119,173 +User 158,14,94,178,109,69,143 +User 159,12,148,69,104,168,114 +User 160,12,113,114,109,119,143 +User 161,12,153,74,94,163,158 +User 162,22,139,163,114,203,139 +User 163,14,163,99,94,158,143 +User 164,12,89,178,89,79,153 +User 165,12,79,183,104,69,148 +User 166,12,168,69,84,198,133 +User 167,22,128,158,183,158,130 +User 168,22,129,188,109,104,198 +User 169,16,178,74,114,198,129 +User 170,20,143,139,139,139,148 +User 171,20,114,198,124,114,153 +User 172,18,105,158,143,129,133 +User 173,20,120,193,104,148,138 +User 174,20,98,193,163,99,140 +User 175,22,148,174,129,129,153 +User 176,20,183,104,164,193,153 +User 177,18,99,203,129,94,158 +User 178,22,139,178,139,163,144 +User 179,22,90,188,163,109,138 +User 180,18,163,84,129,193,139 +User 181,18,88,178,178,89,140 +User 182,18,114,144,213,133,128 +User 183,22,143,124,208,134,124 +User 184,20,188,94,104,208,158 +User 185,18,99,228,104,84,163 +User 186,18,178,94,114,188,173 +User 187,22,119,198,149,114,168 +User 188,20,114,203,109,84,158 +User 189,18,99,193,158,99,144 +User 190,22,153,139,154,154,183 +User 191,20,162,94,144,198,135 +User 192,18,132,149,139,119,144 +User 193,18,104,193,114,99,173 +User 194,18,99,183,128,114,129 +User 195,20,178,89,154,198,183 +User 196,20,114,243,104,79,173 +User 197,22,133,183,114,183,140 +User 198,22,148,149,154,149,148 +User 199,22,114,213,129,94,178 +User 200,22,188,124,114,183,188 +User 201,25,153,159,129,139,218 +User 202,18,114,153,178,138,124 +User 203,22,184,84,129,233,133 +User 204,18,84,193,188,80,138 +User 205,18,178,129,104,183,163 +User 206,18,114,163,163,148,124 +User 207,16,132,94,178,109,120 +User 208,20,93,183,178,89,140 +User 209,16,137,104,173,109,130 +User 210,18,153,74,114,188,129 +User 211,18,128,114,168,124,124 +User 212,22,114,228,119,99,168 +User 213,22,178,89,114,203,139 +User 214,18,173,84,99,193,158 +User 215,20,168,89,124,183,129 +User 216,18,83,198,163,84,140 +User 217,22,144,173,134,173,149 +User 218,18,198,64,89,203,153 +User 219,20,114,208,114,119,168 +User 220,18,114,183,114,109,178 +User 221,18,114,173,183,128,124 +User 222,18,128,134,188,89,124 +User 223,18,143,154,129,129,178 +User 224,18,128,163,173,133,130 +User 225,18,148,99,139,168,129 +User 226,18,83,218,163,74,140 +User 227,22,120,168,158,144,133 +User 228,22,203,99,104,223,173 +User 229,18,143,139,119,139,203 +User 230,22,153,144,139,144,193 +User 231,18,147,144,129,149,144 +User 232,18,188,74,109,213,168 +User 233,25,158,154,154,154,153 +User 234,25,104,208,168,134,144 +User 235,25,139,153,193,158,134 +User 236,25,84,247,168,109,140 +User 237,25,173,89,124,233,158 +User 238,8,93,119,99,89,138 +User 239,22,124,168,208,148,124 +User 240,18,114,158,178,158,124 +User 241,20,188,94,94,223,153 +User 242,25,114,238,124,104,178 +User 243,18,94,188,148,99,139 +User 244,25,129,318,94,89,188 +User 245,18,139,148,129,129,168 +User 246,22,114,228,104,84,168 +User 247,20,124,178,104,158,174 +User 248,20,133,149,139,144,213 +User 249,20,143,149,139,159,143 diff --git a/module1-introduction-to-sql/Assignment/buddymove_holidayiq.py b/module1-introduction-to-sql/Assignment/buddymove_holidayiq.py new file mode 100644 index 00000000..ceac126a --- /dev/null +++ b/module1-introduction-to-sql/Assignment/buddymove_holidayiq.py @@ -0,0 +1,29 @@ +import pandas as pd +import sqlite3 +df = pd.read_csv("Assignment/buddymove_holidayiq.csv") +df.columns = ['user_id', 'sports', 'religious', 'nature', 'theatre', 'shopping', 'picnic'] +""" +connecting to the database +""" +connection = sqlite3.connect('buddymove_holidayiq.sqlite3') +""" +cursor +""" +cursor = connection.cursor() +""" +insert data into new table +""" +df.to_sql('review', connection, index=False) +cursor.execute('SELECT * FROM review').fetchall() +print(df.shape) +print(df.head) +""" +Count how many rows you have +""" +query = "SELECT COUNT(*) FROM review" +print(cursor.execute(query).fetchall()[0][0]) +""" +How many users who reviewed at least 100 Nature in the category also reviewed at least 100 in the Shopping category? +""" +query2 = "SELECT COUNT(*) FROM review WHERE (Nature) >= 100 AND (Shopping) >= 100" +print(cursor.execute(query2).fetchall()[0][0]) diff --git a/module1-introduction-to-sql/Assignment/buddymove_holidayiq.sqlite3 b/module1-introduction-to-sql/Assignment/buddymove_holidayiq.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..752404da9579d369b4e509b3312d5f8f0f8f77b3 GIT binary patch literal 28672 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 R`2WDj)ri{R{~iDTzX1=mMp^&> literal 0 HcmV?d00001 diff --git a/module1-introduction-to-sql/Assignment/rpg_db.sqlite3 b/module1-introduction-to-sql/Assignment/rpg_db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..837d7f16116f34e53935a4560c69acb17766b29d GIT binary patch literal 253952 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 returns cursor object w/o results (need to fetch the results) +result3 = cursor.execute(query).fetchone() +print("RESULT 3", type(result3), result3) +for row in result3: +print(type(row), row) +""" diff --git a/module1-introduction-to-sql/rpg_db_example.py b/module1-introduction-to-sql/rpg_db_example.py deleted file mode 100644 index 454fae40..00000000 --- a/module1-introduction-to-sql/rpg_db_example.py +++ /dev/null @@ -1,18 +0,0 @@ -import sqlite3 - - -def connect_to_db(db_name='rpg_db.sqlite3'): - return sqlite3.connect(db_name) - - -def execute_query(cursor, query): - cursor.execute(query) - return cursor.fetchall() - - -GET_CHARACTERS = 'SELECT * FROM charactercreator_character;' -if __name__ == '__main__': - conn = connect_to_db() - curs = conn.cursor() - results = execute_query(curs, GET_CHARACTERS) - print(results) diff --git a/module1-introduction-to-sql/rpg_db_notes.py b/module1-introduction-to-sql/rpg_db_notes.py new file mode 100644 index 00000000..d516259b --- /dev/null +++ b/module1-introduction-to-sql/rpg_db_notes.py @@ -0,0 +1,140 @@ +import sqlite3 + +""" +Create a connextion +""" +conn = sqlite3.connect('rpg_db.sqlite3') +""" +Select statement +""" +curs = conn.cursor() +query = 'SELECT * FROM armory_item;' +curs.execute(query) +results = curs.fetchall() +""" +rpg_exmple.py +""" +import sqlite3 + + +def connect_to_db(db_name='rpg_db.sqlite3'): + return sqlite3.connect(db_name) + + +def execute_query(cursor, query): + cursor.execute(query) + return cursor.fetchall() + + +GET_CHARACTERS = """ + SELECT * + FROM charactercreator_character; +""" +if __name__ == '__main__': + conn = connect_to_db() + curs = conn.cursor() + results = execute_query(curs, GET_CHARACTERS) + print(results) +""" +Query log: +""" +SELECT * FROM charactercreator_character; +SELECT COUNT(*) FROM charactercreator_character; +SELECT COUNT(DISTINCT name) FROM charactercreator_character; +""" +Selecting columns: +""" +SELECT character_id, name FROM charactercreator_character; +""" +Limiting rows: +""" +SELECT character_id, name FROM charactercreator_character LIMIT 10; +""" +Filtering rows with confitions: +""" +SELECT character_id, name +FROM charactercreator_character +WHERE character_id > 50; +SELECT character_id, name +FROM charactercreator_character +WHERE character_id > 50 +AND character_id < 55; +""" +Equivalent: +""" +SELECT character_id, name +FROM charactercreator_character +WHERE character_id BETWEEN 51 AND 54; +General theme - often more than one way to do it! +""" +Let's figure out what the duplicate character names are +""" +SELECT name, COUNT(*) +FROM charactercreator_character +GROUP BY name; +""" +Our first business query! +""" +""" +Let's figure out what the duplicate character names are +SELECT - how we choose which columns to get +WHERE - how we set conditions on the rows to be returned +LIMIT - when we only want a certain number of rows +ORDER - when we want to sort the output +JOIN - when we need data from multiple tables combined +""" +""" +A first join +""" +SELECT * FROM charactercreator_character +INNER JOIN charactercreator_fighter +ON character_id = character_ptr_id +WHERE character_id = 1; +""" +Non-inner joins introduce missing values! +""" +SELECT character_id, name, rage FROM charactercreator_character +LEFT JOIN charactercreator_fighter +ON character_id = character_ptr_id; +""" +Explicit inner join: +""" +SELECT character_id, name, rage FROM charactercreator_character +INNER JOIN charactercreator_fighter +ON character_id = character_ptr_id +WHERE character_id BETWEEN 40 and 50; +""" +Equivalent implicit join: +""" +SELECT character_id, name, rage +FROM charactercreator_character, charactercreator_fighter +WHERE character_id = character_ptr_id +AND character_id BETWEEN 40 and 50; +""" +Queries result in tables that can be queried! (Silly example but can be +useful) +""" +SELECT * FROM +(SELECT * FROM charactercreator_character); +""" +Sometimes you need to join >2 tables... +This is where I particularly like implicit joins +""" +SELECT cc.character_id, cc.name, ai.item_id, ai.name +FROM charactercreator_character AS cc, +armory_item AS ai, +charactercreator_character_inventory AS cci +WHERE cc.character_id = cci.character_id +AND ai.item_id = cci.item_id; +""" +Use a subquery to make a temp table to query from +""" +SELECT character_id, COUNT(DISTINCT item_id) FROM +(SELECT cc.character_id, cc.name AS character_name, ai.item_id, ai.name AS +item_name +FROM charactercreator_character AS cc, +armory_item AS ai, +charactercreator_character_inventory AS cci +WHERE cc.character_id = cci.character_id +AND ai.item_id = cci.item_id) +GROUP BY 1 ORDER BY 2 DESC; \ No newline at end of file diff --git a/module1-introduction-to-sql/rpq_db.sqlite3 b/module1-introduction-to-sql/rpq_db.sqlite3 deleted file mode 100644 index e69de29b..00000000 diff --git a/module1-introduction-to-sql/test_db.sqlite3 b/module1-introduction-to-sql/test_db.sqlite3 deleted file mode 100644 index b6166d05e32e58310c082890eb48ff64f6a97933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?oU45XSLK5jWAT>x~seL?1w_bnBw_1!9R>uoY@v&j;~sObgE9D*umM!iAfD z+a33L<(;1IZEd}-WFp4MMpZ;is3_DYT|f9V;qCfwF*0AjMq$c~pArs1009ILKmY** z5I_I{1Q0*~fnNnuGmPWdl-{0h&O7_?{T1yFSz2UTq}x2x{!5d_)=tZ-ZIk6 Date: Mon, 10 Aug 2020 19:02:15 -0400 Subject: [PATCH 03/21] last commit --- module1-introduction-to-sql/Assignment/rpg_queries.py | 1 + 1 file changed, 1 insertion(+) diff --git a/module1-introduction-to-sql/Assignment/rpg_queries.py b/module1-introduction-to-sql/Assignment/rpg_queries.py index 8f2d2cf2..2d3f5521 100644 --- a/module1-introduction-to-sql/Assignment/rpg_queries.py +++ b/module1-introduction-to-sql/Assignment/rpg_queries.py @@ -75,3 +75,4 @@ for row in result3: print(type(row), row) """ + From 1c966a9e7a51af3e705204f2c93c809557edd252 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Tue, 11 Aug 2020 16:45:31 -0400 Subject: [PATCH 04/21] last commit --- module2-sql-for-analysis/Elephant.py | 140 ++++++++++++++++++++++++++ module2-sql-for-analysis/Pipfile | 13 +++ module2-sql-for-analysis/Pipfile.lock | 76 ++++++++++++++ 3 files changed, 229 insertions(+) create mode 100644 module2-sql-for-analysis/Elephant.py create mode 100644 module2-sql-for-analysis/Pipfile create mode 100644 module2-sql-for-analysis/Pipfile.lock diff --git a/module2-sql-for-analysis/Elephant.py b/module2-sql-for-analysis/Elephant.py new file mode 100644 index 00000000..0700b142 --- /dev/null +++ b/module2-sql-for-analysis/Elephant.py @@ -0,0 +1,140 @@ +import psycopg2 +import json + +""" +# Looks similar to sqlite3, but needs auth/host info to connect +# Note - this is sensitive info (particularly password) +# and shouldn't be checked into git! More on how to handle next week +""" +dbname = 'vbmmjeoc' +user = 'vbmmjeoc' # ElephantSQL happens to use same name for db and user +password = 'qiPPfJeCLmtX5-yUZcV27SmlTz75PQka' # Sensitive! Don't share/commit +host = 'isilo.db.elephantsql.com' +# If we make to many connections we get fatel error +pg_conn = psycopg2.connect(dbname=dbname, user=user, + password=password, host=host) +pg_curs = pg_conn.cursor() +""" +# Works the same as SQLite! +# We're connected, but db is empty +# Let's run a simple example to populate (from the tk) +""" +create_table_statement = """ +CREATE TABLE test_table ( + id SERIAL PRIMARY KEY, + name varchar(40) NOT NULL, + data JSONB +); +""" +# NOTE - these types are PostgreSQL specific. This won't work in SQLite! + +pg_curs.execute(create_table_statement) +pg_conn.commit() # "Save" by committing +# We're connected, let's see what is in the db +pg_curs.execute('SELECT * FROM test_table;') +pg_curs.fetchall() +insert_statement = """ +INSERT INTO test_table (name, data) VALUES +( + 'Zaphod Beeblebrox', + '{"key": "value", "key2": true}'::JSONB +) +""" +pg_curs.execute(insert_statement) +pg_conn.commit() +# pg_conn.close() # If we were really done +# Database constraints from the schema are enforced! +# This is good - helps +pg_curs = pg_conn.cursor() +pg_curs.execute('INSERT INTO test_table (name, data) VALUES (null, null);') +# filepath +DB_FILEPATH = "module1-introduction-to-sql/rpg_db.sqlite3" +# !wget https://github.com/John-G-Thomas/DS-Unit-3-Sprint-2-SQL-and-Databases +# /blob/master/module1-introduction-to-sql/rpg_db.sqlite3?raw=true +# !mv 'module1-introduction-to-sql/rpg_db.sqlite3' rpg_db.sqlite3 +# Step 1 - Extract, get data out of SQLite3 +# Let's focus on character data, i.e. charactercreator_character +import sqlite3 + +sl_conn = sqlite3.connect(DB_FILEPATH) +sl_curs = sl_conn.cursor() +get_characters = "SELECT * FROM charactercreator_character;" +sl_curs.execute(get_characters) +characters = sl_curs.fetchall() +len(characters) +# should be 302 +characters[:5] +# [(1, 'Aliquid iste optio reiciendi', 0, 0, 10, 1, 1, 1, 1), +# (2, 'Optio dolorem ex a', 0, 0, 10, 1, 1, 1, 1), +# (3, 'Minus c', 0, 0, 10, 1, 1, 1, 1), +# (4, 'Sit ut repr', 0, 0, 10, 1, 1, 1, 1), +# (5, 'At id recusandae expl', 0, 0, 10, 1, 1, 1, 1)] +# Step 1 complete! We have a list of tuples with all our character data +# NOTE - this is *not* a pandas dataframe +# We don't know types - so, for "Transform" we need to figure that out +# Because our destination (PostgreSQL) needs a schema for this data + +# Step 2 - Transform +# Our goal is to make a schema to define a table that fits this data in Postgres +# We can check the old schema! +# This is an internal meta sort of query, will vary by database flavor +sl_curs.execute('PRAGMA table_info(charactercreator_character);') +sl_curs.fetchall() +# A bunch of integers, and a varchar +# We need to make a create statement for PostgreSQL that captures this +create_character_table = """ +CREATE TABLE charactercreator_character ( + character_id SERIAL PRIMARY KEY, + name VARCHAR(30), + level INT, + exp INT, + hp INT, + strength INT, + intelligence INT, + dexterity INT, + wisdom INT +); +""" + + +# Defining a function to refresh connection and cursor +def refresh_conn_and_cursor(conn, curs): + curs.close() + conn.close() + pg_conn = psycopg2.connect(dbname=dbname, user=user, + password=password, host=host) + pg_curs = pg_conn.cursor() + return pg_conn, pg_curs + + +pg_conn, pg_curs = refresh_conn_and_cursor(pg_conn, pg_curs) +# Execute the create table +pg_curs.execute(create_character_table) +pg_conn.commit() +# PostgreSQL comparison to the SQLite pragma +# We can query tables if we want to check +# This is a clever optional thing, showing postgresql internals +show_tables = """ +SELECT + * +FROM + pg_catalog.pg_tables +WHERE + schemaname != 'pg_catalog' +AND schemaname != 'information_schema'; +""" +pg_curs.execute(show_tables) +pg_curs.fetchall() +# Done with step 2 (transform) +# We didn't really change the data, just made sure we could fit it in our target +# Step 3 - Load! +characters[0] +# We want to put this tuple in a string w/INSERT INTO... +# But we don't want the first field (id) - PostgreSQL generates that +characters[0][1:] +example_insert = """ +INSERT INTO charactercreator_character +(name, level, exp, hp, strength, intelligence, dexterity, wisdom) +VALUES """ + str(characters[0][1:]) + ";" + +print(example_insert) # Not running, just inspecting \ No newline at end of file diff --git a/module2-sql-for-analysis/Pipfile b/module2-sql-for-analysis/Pipfile new file mode 100644 index 00000000..9f8d2a95 --- /dev/null +++ b/module2-sql-for-analysis/Pipfile @@ -0,0 +1,13 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +psycopg2-binary = "*" +psycopg2 = "*" + +[requires] +python_version = "3.8" diff --git a/module2-sql-for-analysis/Pipfile.lock b/module2-sql-for-analysis/Pipfile.lock new file mode 100644 index 00000000..73d20ab2 --- /dev/null +++ b/module2-sql-for-analysis/Pipfile.lock @@ -0,0 +1,76 @@ +{ + "_meta": { + "hash": { + "sha256": "bc4e552b8b827c909724a3855e73d58782e8cf3c7d443fef68d755cd3ec50956" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "psycopg2": { + "hashes": [ + "sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535", + "sha256:2327bf42c1744a434ed8ed0bbaa9168cac7ee5a22a9001f6fc85c33b8a4a14b7", + "sha256:27c633f2d5db0fc27b51f1b08f410715b59fa3802987aec91aeb8f562724e95c", + "sha256:2c0afb40cfb4d53487ee2ebe128649028c9a78d2476d14a67781e45dc287f080", + "sha256:2df2bf1b87305bd95eb3ac666ee1f00a9c83d10927b8144e8e39644218f4cf81", + "sha256:440a3ea2c955e89321a138eb7582aa1d22fe286c7d65e26a2c5411af0a88ae72", + "sha256:6a471d4d2a6f14c97a882e8d3124869bc623f3df6177eefe02994ea41fd45b52", + "sha256:6b306dae53ec7f4f67a10942cf8ac85de930ea90e9903e2df4001f69b7833f7e", + "sha256:a0984ff49e176062fcdc8a5a2a670c9bb1704a2f69548bce8f8a7bad41c661bf", + "sha256:ac5b23d0199c012ad91ed1bbb971b7666da651c6371529b1be8cbe2a7bf3c3a9", + "sha256:acf56d564e443e3dea152efe972b1434058244298a94348fc518d6dd6a9fb0bb", + "sha256:d3b29d717d39d3580efd760a9a46a7418408acebbb784717c90d708c9ed5f055", + "sha256:f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818" + ], + "index": "pypi", + "version": "==2.8.5" + }, + "psycopg2-binary": { + "hashes": [ + "sha256:008da3ab51adc70a5f1cfbbe5db3a22607ab030eb44bcecf517ad11a0c2b3cac", + "sha256:07cf82c870ec2d2ce94d18e70c13323c89f2f2a2628cbf1feee700630be2519a", + "sha256:08507efbe532029adee21b8d4c999170a83760d38249936038bd0602327029b5", + "sha256:107d9be3b614e52a192719c6bf32e8813030020ea1d1215daa86ded9a24d8b04", + "sha256:17a0ea0b0eabf07035e5e0d520dabc7950aeb15a17c6d36128ba99b2721b25b1", + "sha256:3286541b9d85a340ee4ed42732d15fc1bb441dc500c97243a768154ab8505bb5", + "sha256:3939cf75fc89c5e9ed836e228c4a63604dff95ad19aed2bbf71d5d04c15ed5ce", + "sha256:40abc319f7f26c042a11658bf3dd3b0b3bceccf883ec1c565d5c909a90204434", + "sha256:51f7823f1b087d2020d8e8c9e6687473d3d239ba9afc162d9b2ab6e80b53f9f9", + "sha256:6bb2dd006a46a4a4ce95201f836194eb6a1e863f69ee5bab506673e0ca767057", + "sha256:702f09d8f77dc4794651f650828791af82f7c2efd8c91ae79e3d9fe4bb7d4c98", + "sha256:7036ccf715925251fac969f4da9ad37e4b7e211b1e920860148a10c0de963522", + "sha256:7b832d76cc65c092abd9505cc670c4e3421fd136fb6ea5b94efbe4c146572505", + "sha256:8f74e631b67482d504d7e9cf364071fc5d54c28e79a093ff402d5f8f81e23bfa", + "sha256:930315ac53dc65cbf52ab6b6d27422611f5fb461d763c531db229c7e1af6c0b3", + "sha256:96d3038f5bd061401996614f65d27a4ecb62d843eb4f48e212e6d129171a721f", + "sha256:a20299ee0ea2f9cca494396ac472d6e636745652a64a418b39522c120fd0a0a4", + "sha256:a34826d6465c2e2bbe9d0605f944f19d2480589f89863ed5f091943be27c9de4", + "sha256:a69970ee896e21db4c57e398646af9edc71c003bc52a3cc77fb150240fefd266", + "sha256:b9a8b391c2b0321e0cd7ec6b4cfcc3dd6349347bd1207d48bcb752aa6c553a66", + "sha256:ba13346ff6d3eb2dca0b6fa0d8a9d999eff3dcd9b55f3a890f12b0b6362b2b38", + "sha256:bb0608694a91db1e230b4a314e8ed00ad07ed0c518f9a69b83af2717e31291a3", + "sha256:c8830b7d5f16fd79d39b21e3d94f247219036b29b30c8270314c46bf8b732389", + "sha256:cac918cd7c4c498a60f5d2a61d4f0a6091c2c9490d81bc805c963444032d0dab", + "sha256:cc30cb900f42c8a246e2cb76539d9726f407330bc244ca7729c41a44e8d807fb", + "sha256:ccdc6a87f32b491129ada4b87a43b1895cf2c20fdb7f98ad979647506ffc41b6", + "sha256:d1a8b01f6a964fec702d6b6dac1f91f2b9f9fe41b310cbb16c7ef1fac82df06d", + "sha256:e004db88e5a75e5fdab1620fb9f90c9598c2a195a594225ac4ed2a6f1c23e162", + "sha256:eb2f43ae3037f1ef5e19339c41cf56947021ac892f668765cd65f8ab9814192e", + "sha256:fa466306fcf6b39b8a61d003123d442b23707d635a5cb05ac4e1b62cc79105cd" + ], + "index": "pypi", + "version": "==2.8.5" + } + }, + "develop": {} +} From 1318dcd3469f26dec27eb2c6eb75fedf508b8798 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Tue, 11 Aug 2020 16:49:20 -0400 Subject: [PATCH 05/21] last commit --- module2-sql-for-analysis/Elephant.py | 37 +++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/module2-sql-for-analysis/Elephant.py b/module2-sql-for-analysis/Elephant.py index 0700b142..d32b2bac 100644 --- a/module2-sql-for-analysis/Elephant.py +++ b/module2-sql-for-analysis/Elephant.py @@ -137,4 +137,39 @@ def refresh_conn_and_cursor(conn, curs): (name, level, exp, hp, strength, intelligence, dexterity, wisdom) VALUES """ + str(characters[0][1:]) + ";" -print(example_insert) # Not running, just inspecting \ No newline at end of file +print(example_insert) # Not running, just inspecting +# If we ran this, we'd insert the first character +# But we want them all - loops! +for character in characters: + insert_character = """ + INSERT INTO charactercreator_character + (name, level, exp, hp, strength, intelligence, dexterity, wisdom) + VALUES """ + str(character[1:]) + ";" + pg_curs.execute(insert_character) + +# Note - we're executing each character one at a time +# That works, and is simple, but inefficient (lots of roundtrips to database) +# Stretch/afternoon goal - see if you can combine into a single +# insert that does them all at once +pg_conn.commit() +# Let's look at what we've done +pg_curs.execute('SELECT * FROM charactercreator_character LIMIT 5;') +pg_curs.fetchall() +# Ids are different (on first run, now fixed)! +# That's because we had an aborted run +# Let's fix this by deleting the data and DROPping the table +# Other tables are fine, but we'll dump the data *and* schema to rerun +# pg_curs.execute('DROP TABLE charactercreator_character;') +# pg_conn.commit() +pg_curs.execute('SELECT * FROM charactercreator_character;') +pg_characters = pg_curs.fetchall() +# We could do more spot checks, but let's loop and check them all +# TODO/afternoon task - consider making this a more formal test +for character, pg_character in zip(characters, pg_characters): + assert character == pg_character + # No complaints - which means they're all the same! + # Closing out cursor/connection to wrap up + pg_curs.close() + pg_conn.close() + sl_curs.close() + sl_conn.close() From 4a7158c0e577bdfa09b2a7417f22db008b7b1f55 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Tue, 11 Aug 2020 18:46:54 -0400 Subject: [PATCH 06/21] last commit --- module2-sql-for-analysis/Elephant.py | 1 - 1 file changed, 1 deletion(-) diff --git a/module2-sql-for-analysis/Elephant.py b/module2-sql-for-analysis/Elephant.py index d32b2bac..7833e3e4 100644 --- a/module2-sql-for-analysis/Elephant.py +++ b/module2-sql-for-analysis/Elephant.py @@ -1,5 +1,4 @@ import psycopg2 -import json """ # Looks similar to sqlite3, but needs auth/host info to connect From ceb5e4df9f489ca6daeabbdea78ac87c6e8e67ee Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Tue, 11 Aug 2020 19:16:28 -0400 Subject: [PATCH 07/21] assignment --- Pipfile | 12 +++ Pipfile.lock | 98 +++++++++++++++++++++ module2-sql-for-analysis/insert_titanic.py | 74 ++++++++++++++++ titanic.sqlite3 | Bin 0 -> 57344 bytes 4 files changed, 184 insertions(+) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 module2-sql-for-analysis/insert_titanic.py create mode 100644 titanic.sqlite3 diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..c37f8a76 --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +pandas = "*" + +[requires] +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..0b385934 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,98 @@ +{ + "_meta": { + "hash": { + "sha256": "44a2006c840cfcfa4b8855e84f23bc17646a2b9634c870d36836c27d43571d6c" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "numpy": { + "hashes": [ + "sha256:082f8d4dd69b6b688f64f509b91d482362124986d98dc7dc5f5e9f9b9c3bb983", + "sha256:1bc0145999e8cb8aed9d4e65dd8b139adf1919e521177f198529687dbf613065", + "sha256:309cbcfaa103fc9a33ec16d2d62569d541b79f828c382556ff072442226d1968", + "sha256:3673c8b2b29077f1b7b3a848794f8e11f401ba0b71c49fbd26fb40b71788b132", + "sha256:480fdd4dbda4dd6b638d3863da3be82873bba6d32d1fc12ea1b8486ac7b8d129", + "sha256:56ef7f56470c24bb67fb43dae442e946a6ce172f97c69f8d067ff8550cf782ff", + "sha256:5a936fd51049541d86ccdeef2833cc89a18e4d3808fe58a8abeb802665c5af93", + "sha256:5b6885c12784a27e957294b60f97e8b5b4174c7504665333c5e94fbf41ae5d6a", + "sha256:667c07063940e934287993366ad5f56766bc009017b4a0fe91dbd07960d0aba7", + "sha256:7ed448ff4eaffeb01094959b19cbaf998ecdee9ef9932381420d514e446601cd", + "sha256:8343bf67c72e09cfabfab55ad4a43ce3f6bf6e6ced7acf70f45ded9ebb425055", + "sha256:92feb989b47f83ebef246adabc7ff3b9a59ac30601c3f6819f8913458610bdcc", + "sha256:935c27ae2760c21cd7354402546f6be21d3d0c806fffe967f745d5f2de5005a7", + "sha256:aaf42a04b472d12515debc621c31cf16c215e332242e7a9f56403d814c744624", + "sha256:b12e639378c741add21fbffd16ba5ad25c0a1a17cf2b6fe4288feeb65144f35b", + "sha256:b1cca51512299841bf69add3b75361779962f9cee7d9ee3bb446d5982e925b69", + "sha256:b8456987b637232602ceb4d663cb34106f7eb780e247d51a260b84760fd8f491", + "sha256:b9792b0ac0130b277536ab8944e7b754c69560dac0415dd4b2dbd16b902c8954", + "sha256:c9591886fc9cbe5532d5df85cb8e0cc3b44ba8ce4367bd4cf1b93dc19713da72", + "sha256:cf1347450c0b7644ea142712619533553f02ef23f92f781312f6a3553d031fc7", + "sha256:de8b4a9b56255797cbddb93281ed92acbc510fb7b15df3f01bd28f46ebc4edae", + "sha256:e1b1dc0372f530f26a03578ac75d5e51b3868b9b76cd2facba4c9ee0eb252ab1", + "sha256:e45f8e981a0ab47103181773cc0a54e650b2aef8c7b6cd07405d0fa8d869444a", + "sha256:e4f6d3c53911a9d103d8ec9518190e52a8b945bab021745af4939cfc7c0d4a9e", + "sha256:ed8a311493cf5480a2ebc597d1e177231984c818a86875126cfd004241a73c3e", + "sha256:ef71a1d4fd4858596ae80ad1ec76404ad29701f8ca7cdcebc50300178db14dfc" + ], + "markers": "python_version >= '3.6'", + "version": "==1.19.1" + }, + "pandas": { + "hashes": [ + "sha256:0210f8fe19c2667a3817adb6de2c4fd92b1b78e1975ca60c0efa908e0985cbdb", + "sha256:0227e3a6e3a22c0e283a5041f1e3064d78fbde811217668bb966ed05386d8a7e", + "sha256:0bc440493cf9dc5b36d5d46bbd5508f6547ba68b02a28234cd8e81fdce42744d", + "sha256:16504f915f1ae424052f1e9b7cd2d01786f098fbb00fa4e0f69d42b22952d798", + "sha256:182a5aeae319df391c3df4740bb17d5300dcd78034b17732c12e62e6dd79e4a4", + "sha256:35db623487f00d9392d8af44a24516d6cb9f274afaf73cfcfe180b9c54e007d2", + "sha256:40ec0a7f611a3d00d3c666c4cceb9aa3f5bf9fbd81392948a93663064f527203", + "sha256:47a03bfef80d6812c91ed6fae43f04f2fa80a4e1b82b35aa4d9002e39529e0b8", + "sha256:4b21d46728f8a6be537716035b445e7ef3a75dbd30bd31aa1b251323219d853e", + "sha256:4d1a806252001c5db7caecbe1a26e49a6c23421d85a700960f6ba093112f54a1", + "sha256:60e20a4ab4d4fec253557d0fc9a4e4095c37b664f78c72af24860c8adcd07088", + "sha256:9f61cca5262840ff46ef857d4f5f65679b82188709d0e5e086a9123791f721c8", + "sha256:a15835c8409d5edc50b4af93be3377b5dd3eb53517e7f785060df1f06f6da0e2", + "sha256:b39508562ad0bb3f384b0db24da7d68a2608b9ddc85b1d931ccaaa92d5e45273", + "sha256:ed60848caadeacecefd0b1de81b91beff23960032cded0ac1449242b506a3b3f", + "sha256:fc714895b6de6803ac9f661abb316853d0cd657f5d23985222255ad76ccedc25" + ], + "index": "pypi", + "version": "==1.1.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", + "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.8.1" + }, + "pytz": { + "hashes": [ + "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed", + "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048" + ], + "version": "==2020.1" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==1.15.0" + } + }, + "develop": {} +} diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py new file mode 100644 index 00000000..6a60ffc2 --- /dev/null +++ b/module2-sql-for-analysis/insert_titanic.py @@ -0,0 +1,74 @@ +import pandas as pd +import psycopg2 +import sqlite3 + +"""change csv to sqlite""" +df = pd.read_csv("module2-sql-for-analysis/titanic.csv") +df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', + 'Parents/Children Aboard', 'Fare'] +""" +connecting to the database +""" +""" +insert data into new table +""" +df.to_sql('review', connection, index=False) +cursor.execute('SELECT * FROM review').fetchall() +print(df.shape) +print(df.head) +""" +cursor +""" +connection = sqlite3.connect('titanic.sqlite3') +cursor = connection.cursor() +""" +Count how many rows you have +""" +query = "SELECT COUNT(*) FROM review" +print(cursor.execute(query).fetchall()[0][0]) +""" +Connect to the elphant database +""" +dbname = 'vbmmjeoc' +user = 'vbmmjeoc' # ElephantSQL happens to use same name for db and user +password = 'qiPPfJeCLmtX5-yUZcV27SmlTz75PQka' # Sensitive! Don't share/commit +host = 'isilo.db.elephantsql.com' +pg_conn = psycopg2.connect(dbname=dbname, user=user, + password=password, host=host) +DB_FILEPATH = "titanic.sqlite3" +sl_conn = sqlite3.connect(DB_FILEPATH) +sl_curs = sl_conn.cursor() +""" +Query +""" +sl_curs.execute('PRAGMA table_info(review);') +sl_curs.fetchall() + + +# Defining a function to refresh connection and cursor +def refresh_conn_and_cursor(conn, curs): + curs.close() + conn.close() + pg_conn = psycopg2.connect(dbname=dbname, user=user, + password=password, host=host) + pg_curs = pg_conn.cursor() + return pg_conn, pg_curs + + +pg_conn, pg_curs = refresh_conn_and_cursor(pg_conn, pg_curs) +# A bunch of integers, and a varchar +# We need to make a create statement for PostgreSQL that captures this +Passengers = """ +CREATE TABLE "review" ( +survived INT NOT NULL, + pclass INT, + name VARCHAR(40), + sex TEXT, + age REAL, + siblings_Spouses Aboard INT, + parents_Children Aboard INT, + fare REAL +)""" +# Execute the create table +pg_curs.execute(Passengers) +pg_conn.commit() diff --git a/titanic.sqlite3 b/titanic.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..9fb99f75427876236a3bc835ebf428c7703f0fe9 GIT binary patch literal 57344 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 Date: Wed, 12 Aug 2020 12:12:46 -0400 Subject: [PATCH 08/21] last commit --- module2-sql-for-analysis/insert_titanic.py | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py index 6a60ffc2..070f38b1 100644 --- a/module2-sql-for-analysis/insert_titanic.py +++ b/module2-sql-for-analysis/insert_titanic.py @@ -3,7 +3,7 @@ import sqlite3 """change csv to sqlite""" -df = pd.read_csv("module2-sql-for-analysis/titanic.csv") +df = pd.read_csv("titanic.csv") df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', 'Parents/Children Aboard', 'Fare'] """ @@ -13,14 +13,14 @@ insert data into new table """ df.to_sql('review', connection, index=False) -cursor.execute('SELECT * FROM review').fetchall() -print(df.shape) -print(df.head) """ cursor """ connection = sqlite3.connect('titanic.sqlite3') cursor = connection.cursor() +cursor.execute('SELECT * FROM review').fetchall() +print(df.shape) +print(df.head) """ Count how many rows you have """ @@ -58,17 +58,19 @@ def refresh_conn_and_cursor(conn, curs): pg_conn, pg_curs = refresh_conn_and_cursor(pg_conn, pg_curs) # A bunch of integers, and a varchar # We need to make a create statement for PostgreSQL that captures this -Passengers = """ -CREATE TABLE "review" ( -survived INT NOT NULL, - pclass INT, - name VARCHAR(40), - sex TEXT, - age REAL, - siblings_Spouses Aboard INT, - parents_Children Aboard INT, - fare REAL -)""" +create_titanic_table = """ +CREATE TABLE titanic ( + Survived INTEGER, + Pclass INTEGER, + Name VARCHAR(30), + Sex TEXT, + Age REAL, + Siblings_Spouses_Aboard INTEGER, + Parent_Childeren_Aboard INTEGER, + Fare REAL +); +""" # Execute the create table -pg_curs.execute(Passengers) +pg_curs = pg_conn.cursor() +pg_curs.execute(create_titanic_table) pg_conn.commit() From ef3432c7282f21979c3adfde6e3750210237ed59 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Wed, 12 Aug 2020 12:12:50 -0400 Subject: [PATCH 09/21] last commit --- module2-sql-for-analysis/new.py | 116 +++++++++++++++++++++++ module2-sql-for-analysis/titanic.sqlite3 | 0 2 files changed, 116 insertions(+) create mode 100644 module2-sql-for-analysis/new.py create mode 100644 module2-sql-for-analysis/titanic.sqlite3 diff --git a/module2-sql-for-analysis/new.py b/module2-sql-for-analysis/new.py new file mode 100644 index 00000000..01fc8221 --- /dev/null +++ b/module2-sql-for-analysis/new.py @@ -0,0 +1,116 @@ +import pandas as pd +import psycopg2 +import sqlite3 +"""change csv to sqlite""" +df = pd.read_csv("titanic.csv") +df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', + 'Parents/Children Aboard', 'Fare'] +# print(df) +# +# +# Connecting to the Elephant database +conn = psycopg2.connect( + database="put yours here", + user="same as above", + password="gimme dat passwordd", # Sensitive! Don't share/commit + host = 'isilo.db.elephantsql.com' + ) +# print(conn) +# +# +# Connect to database +DB_FILEPATH = "titanic.sqlite3" +connection = sqlite3.connect(DB_FILEPATH) +# Make a Cursor +cursor = connection.cursor() +# +# +Passengers = cursor.execute(""" +DROP TABLE IF EXISTS review; +CREATE TYPE GENDER AS ENUM ('male', 'female'); +CREATE TABLE "passengers" ( + Survived INT NOT NULL, + Pclass INT NOT NULL, + Name VARCHAR(75) NOT NULL, + Sex GENDER NOT NULL, + Age REAL NOT NULL, + Siblings_Spouses_Aboard INT NOT NULL, + Parents_Children_Aboard INT NOT NULL, + Fare REAL NOT NULL +); +""") +# +# +for row in df: + cursor.execute( + """ + INSERT INTO + passengers ( + survived, + name, + pclass, + sex, + age, + siblings_spouse_count, + parents_children_count, + fare + ) + VALUES + ( + %s, + %s, + %s, + %s, + %s, + %s, + %s, + %s + ); + """, + ( + row['Survived'], + row['Name'], + row['Pclass'], + row['Sex'], + row['Age'], + row['Siblings/Spouses Aboard'], + row['Parents/Children Aboard'], + row['Fare'] + ) + ) + print(df) +# +# +# +# +# (((( Remove Blockcode for the lines below ONLY when the above runs properly)))) +# (((( Hopefully, I get a response before 8am from my TL to help with the minor)))) +# (((( pd.read_csv('titanic.csv) error... see error below)))) +# (((( FileNotFoundError: [Errno 2] No such file or directory: 'titanic.csv' )))) +# +# +# +# +# df_to_sql = df.to_sql('review_titanic', conn) +# cursor = conn.cursor() +# ### Count how many rows you have? Hint: 249 +# query = """ +# SELECT COUNT(*) +# FROM review_titanic +# """ +# query2 = """ +# SELECT COUNT(Survived) +# FROM review_titanic +# WHERE Survived = 1 +# AND Fare > AVG(Fare) +# AND Sex = 'female' +# """ +# cursor.execute(query) +# result = cursor.fetchall() +# print("RESULT of Query:", result) #> returns cursor objects w/o results (need to fetch) +# cursor.execute(query2) +# result2 = cursor.fetchall() +# print("RESULT of Query 2:", result2) +# conn.commit() +# curs.close() +# conn.close() \ No newline at end of file diff --git a/module2-sql-for-analysis/titanic.sqlite3 b/module2-sql-for-analysis/titanic.sqlite3 new file mode 100644 index 00000000..e69de29b From a4a2ce8adeea8e2acab1d4075a9fd20335b351cb Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Wed, 12 Aug 2020 15:14:19 -0400 Subject: [PATCH 10/21] last commit --- Pipfile | 3 + Pipfile.lock | 161 ++++++++++++++++++++- module2-sql-for-analysis/insert_titanic.py | 1 + 3 files changed, 162 insertions(+), 3 deletions(-) diff --git a/Pipfile b/Pipfile index c37f8a76..1cab9010 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,9 @@ verify_ssl = true [packages] pandas = "*" +pymongo = "*" +dnspython = "*" +flask-pymongo = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 0b385934..6f61e470 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "44a2006c840cfcfa4b8855e84f23bc17646a2b9634c870d36836c27d43571d6c" + "sha256": "88b136a0a0ecb08311e37d4806b638698dbe3dfb3a596289266c2289ca6761e4" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,93 @@ ] }, "default": { + "click": { + "hashes": [ + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==7.1.2" + }, + "dnspython": { + "hashes": [ + "sha256:044af09374469c3a39eeea1a146e8cac27daec951f1f1f157b1962fc7cb9d1b7", + "sha256:40bb3c24b9d4ec12500f0124288a65df232a3aa749bb0c39734b782873a2544d" + ], + "index": "pypi", + "version": "==2.0.0" + }, + "flask": { + "hashes": [ + "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", + "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.1.2" + }, + "flask-pymongo": { + "hashes": [ + "sha256:620eb02dc8808a5fcb90f26cab6cba9d6bf497b15032ae3ca99df80366e33314", + "sha256:8a9577a2c6d00b49f21cb5a5a8d72561730364a2d745551a85349ab02f86fc73" + ], + "index": "pypi", + "version": "==2.3.0" + }, + "itsdangerous": { + "hashes": [ + "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", + "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", + "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==2.11.2" + }, + "markupsafe": { + "hashes": [ + "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", + "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", + "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", + "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", + "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", + "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", + "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", + "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", + "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", + "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", + "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", + "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", + "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", + "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", + "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", + "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", + "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", + "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", + "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", + "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", + "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", + "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", + "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", + "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", + "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", + "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", + "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", + "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", + "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", + "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", + "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", + "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", + "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.1.1" + }, "numpy": { "hashes": [ "sha256:082f8d4dd69b6b688f64f509b91d482362124986d98dc7dc5f5e9f9b9c3bb983", @@ -70,12 +157,72 @@ "index": "pypi", "version": "==1.1.0" }, + "pymongo": { + "hashes": [ + "sha256:03dc64a9aa7a5d405aea5c56db95835f6a2fa31b3502c5af1760e0e99210be30", + "sha256:05fcc6f9c60e6efe5219fbb5a30258adb3d3e5cbd317068f3d73c09727f2abb6", + "sha256:076a7f2f7c251635cf6116ac8e45eefac77758ee5a77ab7bd2f63999e957613b", + "sha256:137e6fa718c7eff270dbd2fc4b90d94b1a69c9e9eb3f3de9e850a7fd33c822dc", + "sha256:1f865b1d1c191d785106f54df9abdc7d2f45a946b45fd1ea0a641b4f982a2a77", + "sha256:213c445fe7e654621c6309e874627c35354b46ef3ee807f5a1927dc4b30e1a67", + "sha256:25e617daf47d8dfd4e152c880cd0741cbdb48e51f54b8de9ddbfe74ecd87dd16", + "sha256:3d9bb1ba935a90ec4809a8031efd988bdb13cdba05d9e9a3e9bf151bf759ecde", + "sha256:40696a9a53faa7d85aaa6fd7bef1cae08f7882640bad08c350fb59dee7ad069b", + "sha256:421aa1b92c291c429668bd8d8d8ec2bd00f183483a756928e3afbf2b6f941f00", + "sha256:4437300eb3a5e9cc1a73b07d22c77302f872f339caca97e9bf8cf45eca8fa0d2", + "sha256:455f4deb00158d5ec8b1d3092df6abb681b225774ab8a59b3510293b4c8530e3", + "sha256:475a34a0745c456ceffaec4ce86b7e0983478f1b6140890dff7b161e7bcd895b", + "sha256:4797c0080f41eba90404335e5ded3aa66731d303293a675ff097ce4ea3025bb9", + "sha256:4ae23fbbe9eadf61279a26eba866bbf161a6f7e2ffad14a42cf20e9cb8e94166", + "sha256:4b32744901ee9990aa8cd488ec85634f443526def1e5190a407dc107148249d7", + "sha256:50127b13b38e8e586d5e97d342689405edbd74ad0bd891d97ee126a8c7b6e45f", + "sha256:50531caa7b4be1c4ed5e2d5793a4e51cc9bd62a919a6fd3299ef7c902e206eab", + "sha256:63a5387e496a98170ffe638b435c0832c0f2011a6f4ff7a2880f17669fff8c03", + "sha256:68220b81850de8e966d4667d5c325a96c6ac0d6adb3d18935d6e3d325d441f48", + "sha256:689142dc0c150e9cb7c012d84cac2c346d40beb891323afb6caf18ec4caafae0", + "sha256:6a15e2bee5c4188369a87ed6f02de804651152634a46cca91966a11c8abd2550", + "sha256:7122ffe597b531fb065d3314e704a6fe152b81820ca5f38543e70ffcc95ecfd4", + "sha256:7307024b18266b302f4265da84bb1effb5d18999ef35b30d17592959568d5c0a", + "sha256:7a4a6f5b818988a3917ec4baa91d1143242bdfece8d38305020463955961266a", + "sha256:83c5a3ecd96a9f3f11cfe6dfcbcec7323265340eb24cc996acaecea129865a3a", + "sha256:890b0f1e18dbd898aeb0ab9eae1ab159c6bcbe87f0abb065b0044581d8614062", + "sha256:8deda1f7b4c03242f2a8037706d9584e703f3d8c74d6d9cac5833db36fe16c42", + "sha256:8ea13d0348b4c96b437d944d7068d59ed4a6c98aaa6c40d8537a2981313f1c66", + "sha256:91e96bf85b7c07c827d339a386e8a3cf2e90ef098c42595227f729922d0851df", + "sha256:96782ebb3c9e91e174c333208b272ea144ed2a684413afb1038e3b3342230d72", + "sha256:9755c726aa6788f076114dfdc03b92b03ff8860316cca00902cce88bcdb5fedd", + "sha256:9dbab90c348c512e03f146e93a5e2610acec76df391043ecd46b6b775d5397e6", + "sha256:9ee0eef254e340cc11c379f797af3977992a7f2c176f1a658740c94bf677e13c", + "sha256:9fc17fdac8f1973850d42e51e8ba6149d93b1993ed6768a24f352f926dd3d587", + "sha256:a2787319dc69854acdfd6452e6a8ba8f929aeb20843c7f090e04159fc18e6245", + "sha256:b7c522292407fa04d8195032493aac937e253ad9ae524aab43b9d9d242571f03", + "sha256:bd312794f51e37dcf77f013d40650fe4fbb211dd55ef2863839c37480bd44369", + "sha256:c0d660a186e36c526366edf8a64391874fe53cf8b7039224137aee0163c046df", + "sha256:c4869141e20769b65d2d72686e7a7eb141ce9f3168106bed3e7dcced54eb2422", + "sha256:cc4057f692ac35bbe82a0a908d42ce3a281c9e913290fac37d7fa3bd01307dfb", + "sha256:cccf1e7806f12300e3a3b48f219e111000c2538483e85c869c35c1ae591e6ce9", + "sha256:ce208f80f398522e49d9db789065c8ad2cd37b21bd6b23d30053474b7416af11", + "sha256:d0565481dc196986c484a7fb13214fc6402201f7fb55c65fd215b3324962fe6c", + "sha256:d1b3366329c45a474b3bbc9b9c95d4c686e03f35da7fd12bc144626d1f2a7c04", + "sha256:d226e0d4b9192d95079a9a29c04dd81816b1ce8903b8c174a39224fe978547cb", + "sha256:d38b35f6eef4237b1d0d8e845fc1546dad85c55eba447e28c211da8c7ef9697c", + "sha256:d64c98277ea80e4484f1332ab107e8dfd173a7dcf1bdbf10a9cccc97aaab145f", + "sha256:d9de8427a5601799784eb0e7fa1b031aa64086ce04de29df775a8ca37eedac41", + "sha256:e6a15cf8f887d9f578dd49c6fb3a99d53e1d922fdd67a245a67488d77bf56eb2", + "sha256:e8c446882cbb3774cd78c738c9f58220606b702b7c1655f1423357dc51674054", + "sha256:e8d188ee39bd0ffe76603da887706e4e7b471f613625899ddf1e27867dc6a0d3", + "sha256:ef76535776c0708a85258f6dc51d36a2df12633c735f6d197ed7dfcaa7449b99", + "sha256:f6efca006a81e1197b925a7d7b16b8f61980697bb6746587aad8842865233218" + ], + "index": "pypi", + "version": "==3.11.0" + }, "python-dateutil": { "hashes": [ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.1" }, "pytz": { @@ -90,8 +237,16 @@ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.15.0" + }, + "werkzeug": { + "hashes": [ + "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", + "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.0.1" } }, "develop": {} diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py index 070f38b1..270c7b47 100644 --- a/module2-sql-for-analysis/insert_titanic.py +++ b/module2-sql-for-analysis/insert_titanic.py @@ -74,3 +74,4 @@ def refresh_conn_and_cursor(conn, curs): pg_curs = pg_conn.cursor() pg_curs.execute(create_titanic_table) pg_conn.commit() +#pandas - to_records \ No newline at end of file From 0686780148656657210778a5027de32e10a433d2 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Wed, 12 Aug 2020 15:59:27 -0400 Subject: [PATCH 11/21] last commit --- module2-sql-for-analysis/file.py | 6 ++++++ .../Cluster.py | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 module2-sql-for-analysis/file.py create mode 100644 module3-nosql-and-document-oriented-databases/Cluster.py diff --git a/module2-sql-for-analysis/file.py b/module2-sql-for-analysis/file.py new file mode 100644 index 00000000..5da0ed71 --- /dev/null +++ b/module2-sql-for-analysis/file.py @@ -0,0 +1,6 @@ +import pandas as pd +from sqlalchemy import create_engine + +df = pd.read_csv('titanic.csv') +engine = create_engine('postgres://vbmmjeoc:qiPPfJeCLmtX5-yUZcV27SmlTz75PQka@isilo.db.elephantsql.com:5432/vbmmjeoc') +df.to_sql('titanic2', con=engine) \ No newline at end of file diff --git a/module3-nosql-and-document-oriented-databases/Cluster.py b/module3-nosql-and-document-oriented-databases/Cluster.py new file mode 100644 index 00000000..3a54b149 --- /dev/null +++ b/module3-nosql-and-document-oriented-databases/Cluster.py @@ -0,0 +1,18 @@ +# If colab not locally Find out the IP address of this Colab Instance +# !curl ipecho.net/plain +"""first make shell and install pymongo and dnspython""" +import pymongo + +password = 'Aa02155120' # Don't commit/share this! Reset it if it leak +User = 'Aa02155120' +dbname = 'test' +connection = ('mongodb+srv://Aa02155120:' + password + + '@cluster0.nadgn.mongodb.net/' + dbname + + '?retryWrites=true&w=majority') +client = pymongo.MongoClient() +db = client.test +dir(db.test) +# Let's figure out inserting some data +help(db.test.insert) +help(db.test.insert_one) +db.test.count() From bcceffe707226b41aca1eb303cf834220c75c93f Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Wed, 12 Aug 2020 17:26:13 -0400 Subject: [PATCH 12/21] last commit --- module2-sql-for-analysis/file.py | 2 +- module2-sql-for-analysis/insert_titanic.py | 79 +++++++----- module2-sql-for-analysis/new.py | 116 ------------------ module2-sql-for-analysis/titanic.sqlite3 | Bin 0 -> 57344 bytes module2-sql-for-analysis/titanics.sqlite3 | Bin 0 -> 57344 bytes .../Cluster.py | 46 +++++-- 6 files changed, 89 insertions(+), 154 deletions(-) delete mode 100644 module2-sql-for-analysis/new.py create mode 100644 module2-sql-for-analysis/titanics.sqlite3 diff --git a/module2-sql-for-analysis/file.py b/module2-sql-for-analysis/file.py index 5da0ed71..e5c4d2f4 100644 --- a/module2-sql-for-analysis/file.py +++ b/module2-sql-for-analysis/file.py @@ -1,6 +1,6 @@ import pandas as pd from sqlalchemy import create_engine - +#pipenv install sqlalchemy df = pd.read_csv('titanic.csv') engine = create_engine('postgres://vbmmjeoc:qiPPfJeCLmtX5-yUZcV27SmlTz75PQka@isilo.db.elephantsql.com:5432/vbmmjeoc') df.to_sql('titanic2', con=engine) \ No newline at end of file diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py index 270c7b47..af3e0f66 100644 --- a/module2-sql-for-analysis/insert_titanic.py +++ b/module2-sql-for-analysis/insert_titanic.py @@ -7,25 +7,13 @@ df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', 'Parents/Children Aboard', 'Fare'] """ -connecting to the database -""" -""" insert data into new table """ +connection = sqlite3.connect('titanics.sqlite3') df.to_sql('review', connection, index=False) -""" -cursor -""" -connection = sqlite3.connect('titanic.sqlite3') -cursor = connection.cursor() -cursor.execute('SELECT * FROM review').fetchall() -print(df.shape) -print(df.head) -""" -Count how many rows you have -""" -query = "SELECT COUNT(*) FROM review" -print(cursor.execute(query).fetchall()[0][0]) +#DB_FILEPATH = "titanic.sqlite3" +#sl_conn = sqlite3.connect(DB_FILEPATH) +#sl_curs = sl_conn.cursor() """ Connect to the elphant database """ @@ -35,27 +23,24 @@ host = 'isilo.db.elephantsql.com' pg_conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host) -DB_FILEPATH = "titanic.sqlite3" -sl_conn = sqlite3.connect(DB_FILEPATH) -sl_curs = sl_conn.cursor() """ -Query +cursor - check rows """ -sl_curs.execute('PRAGMA table_info(review);') -sl_curs.fetchall() - - +cursor = connection.cursor() +cursor.execute('SELECT * FROM review').fetchall() +print(df.shape) +print(df.head) +cursor.execute('PRAGMA table_info(review);') +cursor.fetchall() # Defining a function to refresh connection and cursor -def refresh_conn_and_cursor(conn, curs): +"""def refresh_conn_and_cursor(conn, curs): curs.close() conn.close() pg_conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host) pg_curs = pg_conn.cursor() return pg_conn, pg_curs - - -pg_conn, pg_curs = refresh_conn_and_cursor(pg_conn, pg_curs) +pg_conn, pg_curs = refresh_conn_and_cursor(pg_conn, pg_curs)""" # A bunch of integers, and a varchar # We need to make a create statement for PostgreSQL that captures this create_titanic_table = """ @@ -70,6 +55,44 @@ def refresh_conn_and_cursor(conn, curs): Fare REAL ); """ +for row in df: + cursor.execute( + """ + INSERT INTO + passengers ( + survived, + name, + pclass, + sex, + age, + siblings_spouse_count, + parents_children_count, + fare + ) + VALUES + ( + %s, + %s, + %s, + %s, + %s, + %s, + %s, + %s + ); + """, + ( + row['Survived'], + row['Name'], + row['Pclass'], + row['Sex'], + row['Age'], + row['Siblings/Spouses Aboard'], + row['Parents/Children Aboard'], + row['Fare'] + ) + ) + print(df) # Execute the create table pg_curs = pg_conn.cursor() pg_curs.execute(create_titanic_table) diff --git a/module2-sql-for-analysis/new.py b/module2-sql-for-analysis/new.py deleted file mode 100644 index 01fc8221..00000000 --- a/module2-sql-for-analysis/new.py +++ /dev/null @@ -1,116 +0,0 @@ -import pandas as pd -import psycopg2 -import sqlite3 -"""change csv to sqlite""" -df = pd.read_csv("titanic.csv") -df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', - 'Parents/Children Aboard', 'Fare'] -# print(df) -# -# -# Connecting to the Elephant database -conn = psycopg2.connect( - database="put yours here", - user="same as above", - password="gimme dat passwordd", # Sensitive! Don't share/commit - host = 'isilo.db.elephantsql.com' - ) -# print(conn) -# -# -# Connect to database -DB_FILEPATH = "titanic.sqlite3" -connection = sqlite3.connect(DB_FILEPATH) -# Make a Cursor -cursor = connection.cursor() -# -# -Passengers = cursor.execute(""" -DROP TABLE IF EXISTS review; -CREATE TYPE GENDER AS ENUM ('male', 'female'); -CREATE TABLE "passengers" ( - Survived INT NOT NULL, - Pclass INT NOT NULL, - Name VARCHAR(75) NOT NULL, - Sex GENDER NOT NULL, - Age REAL NOT NULL, - Siblings_Spouses_Aboard INT NOT NULL, - Parents_Children_Aboard INT NOT NULL, - Fare REAL NOT NULL -); -""") -# -# -for row in df: - cursor.execute( - """ - INSERT INTO - passengers ( - survived, - name, - pclass, - sex, - age, - siblings_spouse_count, - parents_children_count, - fare - ) - VALUES - ( - %s, - %s, - %s, - %s, - %s, - %s, - %s, - %s - ); - """, - ( - row['Survived'], - row['Name'], - row['Pclass'], - row['Sex'], - row['Age'], - row['Siblings/Spouses Aboard'], - row['Parents/Children Aboard'], - row['Fare'] - ) - ) - print(df) -# -# -# -# -# (((( Remove Blockcode for the lines below ONLY when the above runs properly)))) -# (((( Hopefully, I get a response before 8am from my TL to help with the minor)))) -# (((( pd.read_csv('titanic.csv) error... see error below)))) -# (((( FileNotFoundError: [Errno 2] No such file or directory: 'titanic.csv' )))) -# -# -# -# -# df_to_sql = df.to_sql('review_titanic', conn) -# cursor = conn.cursor() -# ### Count how many rows you have? Hint: 249 -# query = """ -# SELECT COUNT(*) -# FROM review_titanic -# """ -# query2 = """ -# SELECT COUNT(Survived) -# FROM review_titanic -# WHERE Survived = 1 -# AND Fare > AVG(Fare) -# AND Sex = 'female' -# """ -# cursor.execute(query) -# result = cursor.fetchall() -# print("RESULT of Query:", result) #> returns cursor objects w/o results (need to fetch) -# cursor.execute(query2) -# result2 = cursor.fetchall() -# print("RESULT of Query 2:", result2) -# conn.commit() -# curs.close() -# conn.close() \ No newline at end of file diff --git a/module2-sql-for-analysis/titanic.sqlite3 b/module2-sql-for-analysis/titanic.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9fb99f75427876236a3bc835ebf428c7703f0fe9 100644 GIT binary patch literal 57344 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 +db.test.count_documents({'x': 1}) +# 1 +# Let's start the afternoon project +rpg_character = (1, "King Bob", 10, 3, 0, 0, 0) +# We need key-value pairs, i.e. a dictionary! +# Lazy way (probably not ideal) +db.test.insert_one({'rpg_character': rpg_character}) +db.test.find_one({'rpg_character': rpg_character}) +# We can do better +# Mongo doesn't force us to have a schema, but +# we *should* try to choose useful/informative key names +rpg_doc = { + 'sql_key': rpg_character[0], + 'name': rpg_character[1], + 'hp': rpg_character[2], + 'level': rpg_character[3] +} +db.test.insert_one(rpg_doc) +list(db.test.find({'level': 3})) +# Make our doc better - annotate type so we can query on it +rpg_doc = { + 'doc_type': 'rpg_character', + 'sql_key': rpg_character[0], + 'name': rpg_character[1], + 'hp': rpg_character[2], + 'level': rpg_character[3] +} +db.test.insert_one(rpg_doc) +list(db.test.find({'doc_type': 'rpg_character'})) \ No newline at end of file From 1a57405a7db2d00323bfea036a45ae7fcf9f2f77 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Wed, 12 Aug 2020 18:51:29 -0400 Subject: [PATCH 13/21] last commit --- .../Cluster.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/module3-nosql-and-document-oriented-databases/Cluster.py b/module3-nosql-and-document-oriented-databases/Cluster.py index 3af72e7f..e2cb2f25 100644 --- a/module3-nosql-and-document-oriented-databases/Cluster.py +++ b/module3-nosql-and-document-oriented-databases/Cluster.py @@ -1,12 +1,21 @@ # If colab not locally Find out the IP address of this Colab Instance # !curl ipecho.net/plain +""" +"How was working with MongoDB different from working with PostgreSQL? What was easier, and what was harder?": +-MongoDB and PostgrSQL biggest difference is hpw the data/information is stored. +-In PostgreSQL there are schemas that are used to connect to individual data tables. MongoDB formats and stores the +all the data formated in documents. The two have unique differences and but in my opinon MongoDB seems simpler/easier +way to store data and PostgreSQL has in my opinion extra steps so its harder. +""" """first make shell and install pymongo and dnspython""" import pymongo + password = 'Aa02155120' # Don't commit/share this! Reset it if it leak User = 'John-Thomas' dbname = 'test' connection = ( - "mongodb+srv://John-Thomas:" + password + "@cluster.y2ftp.mongodb.net/" + dbname + "?retryWrites=true&w=majority") + "mongodb+srv://John-Thomas:" + password + "@cluster.y2ftp.mongodb.net/" + dbname + "?retryWrites=true&w" + "=majority") client = pymongo.MongoClient(connection) db = client.test dir(db.test) @@ -43,4 +52,10 @@ 'level': rpg_character[3] } db.test.insert_one(rpg_doc) -list(db.test.find({'doc_type': 'rpg_character'})) \ No newline at end of file +list(db.test.find({'doc_type': 'rpg_character'})) +# Our goal - copy the charactercreator_character table +get_characters = 'SELECT * FROM charactercreator_character;' +characters = sl_curs.execute(get_characters).fetchall() +characters[:10] +# TODO - come up with a nice document format +# And insert all these into Mongo! From 422ecf159b0b559af3fbcd19f2c34c3aa4892dfa Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Thu, 13 Aug 2020 10:24:50 -0400 Subject: [PATCH 14/21] last commit --- module3-nosql-and-document-oriented-databases/Cluster.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module3-nosql-and-document-oriented-databases/Cluster.py b/module3-nosql-and-document-oriented-databases/Cluster.py index e2cb2f25..1785a96f 100644 --- a/module3-nosql-and-document-oriented-databases/Cluster.py +++ b/module3-nosql-and-document-oriented-databases/Cluster.py @@ -57,5 +57,4 @@ get_characters = 'SELECT * FROM charactercreator_character;' characters = sl_curs.execute(get_characters).fetchall() characters[:10] -# TODO - come up with a nice document format -# And insert all these into Mongo! + From 66459ff2df5e3a3aa81dea7d4240ae50a4380bf4 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Thu, 13 Aug 2020 11:45:43 -0400 Subject: [PATCH 15/21] last commit --- module2-sql-for-analysis/insert_titanic.py | 100 +++++++++++++++--- .../Cluster.py | 2 +- 2 files changed, 86 insertions(+), 16 deletions(-) diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py index af3e0f66..3d24716f 100644 --- a/module2-sql-for-analysis/insert_titanic.py +++ b/module2-sql-for-analysis/insert_titanic.py @@ -1,7 +1,14 @@ import pandas as pd import psycopg2 import sqlite3 +from csv import DictReader +import csv +""" +# DictReader : +# Looks similar to sqlite3, but needs auth/host info to connect +# Note - this is sensitive info (particularly password) +""" """change csv to sqlite""" df = pd.read_csv("titanic.csv") df.columns = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Siblings/Spouses Aboard', @@ -11,9 +18,9 @@ """ connection = sqlite3.connect('titanics.sqlite3') df.to_sql('review', connection, index=False) -#DB_FILEPATH = "titanic.sqlite3" -#sl_conn = sqlite3.connect(DB_FILEPATH) -#sl_curs = sl_conn.cursor() +# DB_FILEPATH = "titanic.sqlite3" +# sl_conn = sqlite3.connect(DB_FILEPATH) +# sl_curs = sl_conn.cursor() """ Connect to the elphant database """ @@ -57,7 +64,7 @@ """ for row in df: cursor.execute( - """ + """ INSERT INTO passengers ( survived, @@ -81,20 +88,83 @@ %s ); """, - ( - row['Survived'], - row['Name'], - row['Pclass'], - row['Sex'], - row['Age'], - row['Siblings/Spouses Aboard'], - row['Parents/Children Aboard'], - row['Fare'] - ) + ( + row['Survived'], + row['Name'], + row['Pclass'], + row['Sex'], + row['Age'], + row['Siblings/Spouses Aboard'], + row['Parents/Children Aboard'], + row['Fare'] + ) ) print(df) # Execute the create table pg_curs = pg_conn.cursor() pg_curs.execute(create_titanic_table) pg_conn.commit() -#pandas - to_records \ No newline at end of file +# pandas to records +pg_curs.execute(""" +CREATE TYPE SEX_SEX AS ENUM ('male', 'female'); +CREATE TABLE abc ( + id SERIAL PRIMARY KEY, + survived BOOLEAN NOT NULL, + pclass INTEGER NOT NULL, + name varchar(255) NOT NULL, + sex SEX_SEX NOT NULL, + age DECIMAL NOT NULL, + siblings_spouse_count INTEGER NOT NULL, + parents_children_count INTEGER NOT NULL, + fare DECIMAL NOT NULL +); +""") +# NOTE - these types are PostgreSQL specific. This won't work in SQLite! +# iterate over each line as a ordered dictionary and print only few column by column name +# https://thispointer.com/python-read-a-csv-file-line-by-line-with-or-without-header/ (Documentation) +# with open('titanic.csv', 'r') as read_obj: +# csv_dict_reader = DictReader(read_obj) +# for row in csv_dict_reader: +# pg_curs.execute( +with open('titanic.csv', newline='') as csvfile: + reader = csv.DictReader(csvfile) + for row in reader: + pg_curs.execute( + """ + INSERT INTO + abc ( + survived, + name, + pclass, + sex, + age, + siblings_spouse_count, + parents_children_count, + fare + ) + VALUES + ( + %s, + %s, + %s, + %s, + %s, + %s, + %s, + %s + ); + """, + ( + row['Survived'], + row['Name'], + row['Pclass'], + row['Sex'], + row['Age'], + row['Siblings/Spouses Aboard'], + row['Parents/Children Aboard'], + row['Fare'] + ) + ) +pg_conn.commit() # "Save" by committing +pg_curs.close() +pg_conn.close() # If we were really done diff --git a/module3-nosql-and-document-oriented-databases/Cluster.py b/module3-nosql-and-document-oriented-databases/Cluster.py index 1785a96f..023c0545 100644 --- a/module3-nosql-and-document-oriented-databases/Cluster.py +++ b/module3-nosql-and-document-oriented-databases/Cluster.py @@ -57,4 +57,4 @@ get_characters = 'SELECT * FROM charactercreator_character;' characters = sl_curs.execute(get_characters).fetchall() characters[:10] - +# worked on first two assignents to review and stufy guide From ba80d2fe62fe967a4209ea2212aebb831424d304 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Thu, 13 Aug 2020 11:45:46 -0400 Subject: [PATCH 16/21] last commit --- ... Sprint 2 SQL and Databases Study Guide.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Unit 3 Sprint 2 SQL and Databases Study Guide.md diff --git a/Unit 3 Sprint 2 SQL and Databases Study Guide.md b/Unit 3 Sprint 2 SQL and Databases Study Guide.md new file mode 100644 index 00000000..b288108a --- /dev/null +++ b/Unit 3 Sprint 2 SQL and Databases Study Guide.md @@ -0,0 +1,118 @@ +# Unit 3 Sprint 2 SQL and Databases Study Guide + +This study guide should reinforce and provide practice for all of the concepts you have seen in the past week. There are a mix of written questions and coding exercises, both are equally important to prepare you for the sprint challenge as well as to be able to speak on these topics comfortably in interviews and on the job. + +If you get stuck or are unsure of something remember the 20 minute rule. If that doesn't help, then research a solution with [google](https://www.google.com) or [StackOverflow](https://www.stackoverflow.com). Only once you have exhausted these methods should you turn to your Team Lead - they won't be there on your SC or during an interview. That being said, don't hesitate to ask for help if you truly are stuck. + +Have fun studying! + +## SQL + +**Concepts:** + +1. What is SQL? +2. What is a RDBMS? +3. What is an ETL pipeline? +4. What is a schema? +5. What does each letter in ACID stand for? Give an explanation for each and why they matter? + - **A** + - **C** + - **I** + - **D** +6. Explain each of the table relationships and give an example for each + - One-to-One + - One-to-Many + - Many-to-Many + +## Syntax +For the following section, give a brief explanation of each of the SQL commands. + +1. **SELECT** - +2. **WHERE** - +3. **LIMIT** - +4. **ORDER** - +5. **JOIN** - +6. **CREATE TABLE** - +7. **INSERT** - +8. **DISTINCT** - +9. **GROUP BY** - +10. **ORDER BY** - +11. **AVG** - +12. **MAX** - +13. **AS** - + +## Starting From Scratch +Create a file named `study_part1.py` and complete the exercise below. The only library you should need to import is `sqlite3`. Don't forget to be PEP8 compliant! +1. Create a new database file call `study_part1.sqlite3` +2. Create a table with the following columns + ``` + student - string + studied - string + grade - int + age - int + sex - string + ``` + +3. Fill the table with the following data + + ``` + 'Lion-O', 'True', 85, 24, 'Male' + 'Cheetara', 'True', 95, 22, 'Female' + 'Mumm-Ra', 'False', 65, 153, 'Male' + 'Snarf', 'False', 70, 15, 'Male' + 'Panthro', 'True', 80, 30, 'Male' + ``` + +4. Save your data. You can check that everything is working so far if you can view the table and data in DBBrowser + +5. Write the following queries to check your work. Querie outputs should be formatted for readability, don't simply print a number to the screen with no explanation, add context. + + ``` + What is the average age? Expected Result - 48.8 + What are the name of the female students? Expected Result - 'Cheetara' + How many students studied? Expected Results - 3 + Return all students and all columns, sorted by student names in alphabetical order. + ``` + +## Query All the Tables! + +### Setup +Before we get started you'll need a few things. +1. Download the [Chinook Database here](https://github.com/bundickm/Study-Guides/blob/master/data/Chinook_Sqlite.sqlite) +2. The schema can be [found here](https://github.com/bundickm/Study-Guides/blob/master/data/Chinook%20Schema.png) +3. Create a file named `study_part2.py` and complete the exercise below. The only library you should need to import is `sqlite3`. Don't forget to be PEP8 compliant! +4. Add a connection to the chinook database so that you can answer the queries below. + +### Queries +**Single Table Queries** +1. Find the average invoice total for each customer, return the details for the first 5 ID's +2. Return all columns in Customer for the first 5 customers residing in the United States +3. Which employee does not report to anyone? +4. Find the number of unique composers +5. How many rows are in the Track table? + +**Joins** + +6. Get the name of all Black Sabbath tracks and the albums they came off of +7. What is the most popular genre by number of tracks? +8. Find all customers that have spent over $45 +9. Find the first and last name, title, and the number of customers each employee has helped. If the customer count is 0 for an employee, it doesn't need to be displayed. Order the employees from most to least customers. +10. Return the first and last name of each employee and who they report to + +## NoSQL + +### Questions of Understanding + +1. What is a document store? + +2. What is a `key:value` pair? What data type in Python uses `key:value` pairs? + +3. Give an example of when it would be best to use a SQL Database and when it would be best to use a NoSQL Database + +4. What are some of the trade-offs between SQL and NoSQL? + +5. What does each letter in BASE stand for? Give an explanation for each and why they matter? + - B + - A + - S + - E From 9feea700eb4c341c4312a6224bd8b83eb1891591 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Thu, 13 Aug 2020 14:15:47 -0400 Subject: [PATCH 17/21] last commit --- .../Assignment/rpg_queries.py | 1 - .../Cluster.py | 2 +- .../lecture.py | 39 ++++++++++++++ .../map_reduce_example.py | 27 ++++++++++ .../queries.py | 0 .../sqlite_demo.py | 51 +++++++++++++++++++ ... Sprint 2 SQL and Databases Study Guide.md | 0 study-guide/study.py | 0 8 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 module4-acid-and-database-scalability-tradeoffs/lecture.py create mode 100644 module4-acid-and-database-scalability-tradeoffs/map_reduce_example.py create mode 100644 module4-acid-and-database-scalability-tradeoffs/queries.py create mode 100644 module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py rename Unit 3 Sprint 2 SQL and Databases Study Guide.md => study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md (100%) create mode 100644 study-guide/study.py diff --git a/module1-introduction-to-sql/Assignment/rpg_queries.py b/module1-introduction-to-sql/Assignment/rpg_queries.py index 2d3f5521..8f2d2cf2 100644 --- a/module1-introduction-to-sql/Assignment/rpg_queries.py +++ b/module1-introduction-to-sql/Assignment/rpg_queries.py @@ -75,4 +75,3 @@ for row in result3: print(type(row), row) """ - diff --git a/module3-nosql-and-document-oriented-databases/Cluster.py b/module3-nosql-and-document-oriented-databases/Cluster.py index 023c0545..bd1c3845 100644 --- a/module3-nosql-and-document-oriented-databases/Cluster.py +++ b/module3-nosql-and-document-oriented-databases/Cluster.py @@ -10,7 +10,7 @@ """first make shell and install pymongo and dnspython""" import pymongo -password = 'Aa02155120' # Don't commit/share this! Reset it if it leak +password = 'placehl'commit/share this! Reset it if it leak User = 'John-Thomas' dbname = 'test' connection = ( diff --git a/module4-acid-and-database-scalability-tradeoffs/lecture.py b/module4-acid-and-database-scalability-tradeoffs/lecture.py new file mode 100644 index 00000000..e8d67250 --- /dev/null +++ b/module4-acid-and-database-scalability-tradeoffs/lecture.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +import itertools +import operator +from collections import Iterable, Callable +from itertools import product + + +def transform_reduce(lhs: Iterable, rhs: Iterable, + transformer: Callable, reducer: Callable): + """ Transform Reduce + Pairwise transform and then reduction across all results. + DocTests: + >>> transform_reduce(range(1, 6), range(1, 6), operator.mul, sum) + 55 + >>> transform_reduce(range(1, 6), range(1, 6), operator.add, product) + 3840 + @param lhs: Left Iterator + @param rhs: Right Iterator + @param transformer: Binary Functor F(x, y) -> Value + @param reducer: Reduction Functor F(Iterable) -> Value + @return: Reduced Value + """ + return reducer(itertools.starmap(transformer, zip(lhs, rhs))) + + +def inner_product(lhs: Iterable, rhs: Iterable): + """ Inner Product + Performs pairwise multiplication across the iterables, + then returns the sum of the products. + DocTests: + >>> inner_product(range(1, 6), range(1, 6)) + 55 + >>> inner_product(range(11), range(11)) + 385 + @param lhs: Left Iterator + @param rhs: Right Iterator + @return: Sum of the products. + """ + return transform_reduce(lhs, rhs, operator.mul, sum) \ No newline at end of file diff --git a/module4-acid-and-database-scalability-tradeoffs/map_reduce_example.py b/module4-acid-and-database-scalability-tradeoffs/map_reduce_example.py new file mode 100644 index 00000000..571011c7 --- /dev/null +++ b/module4-acid-and-database-scalability-tradeoffs/map_reduce_example.py @@ -0,0 +1,27 @@ +from functools import reduce # map is built-in + +my_list = [1, 2, 3, 4] + +""" +We want the sum of squared values (A fairly real statisitcal task!) +Traditional(non-mapreduce approach +""" +ssv_trad = sum([i ** 2 for i in my_list]) +""" +That works fine - but what if we had 40 billion numbers? +We could use a mapreduce approach +To be clear - this ccode still runs on one computer +But mapreduce paradigm *could* be distributed more directly +""" + +squared_values = map(lambda i: i ** 2, my_list) + + +def add_numbers(x1, x2): + return x1 + x2 + + +ssv_mapreduce = reduce(add_numbers, squared_values) + +print('Sum of squared values (trad): ' + str(ssv_trad)) +print('Sum of squared values (map-reduce): ' + str(ssv_mapreduce)) diff --git a/module4-acid-and-database-scalability-tradeoffs/queries.py b/module4-acid-and-database-scalability-tradeoffs/queries.py new file mode 100644 index 00000000..e69de29b diff --git a/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py b/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py new file mode 100644 index 00000000..cf3951d5 --- /dev/null +++ b/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py @@ -0,0 +1,51 @@ +""" +Creating and inserting data with SQlite. +""" +import sqlite3 + + +def create_table(conn): + curs = conn.cursor() + create_statement = """ + CREATE TABLE students ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name CHAR(20), + favorite_number INTEGER, + least_favorite_number INTEGER + ); + """ + curs.execute(create_statement) + curs.close() + conn.commit() + + +def insert_data(conn): + my_data = [ + ('Malven', 7, 12), + ('Dondre', -5, 101), + ('Peggy', 14, 74) + ] + curs = conn.cursor() + for row in my_data: + pass + # Exercise - write an insert statement! + curs.close() + conn.commit() + + +if __name__ == '__main__': + conn = sqlite3.connect('example_db.sqlite3') + create_table(conn) + insert_data(conn) + +""" +Our first business query! +""" +""" +Let's figure out what the duplicate character names are +SELECT - how we choose which columns to get +WHERE - how we set conditions on the rows to be returned +LIMIT - when we only want a certain number of rows +ORDER - when we want to sort the output +JOIN - when we need data from multiple tables combined +""" diff --git a/Unit 3 Sprint 2 SQL and Databases Study Guide.md b/study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md similarity index 100% rename from Unit 3 Sprint 2 SQL and Databases Study Guide.md rename to study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md diff --git a/study-guide/study.py b/study-guide/study.py new file mode 100644 index 00000000..e69de29b From 79b274bfb0419f4600e657f41f96cc089192282c Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Thu, 13 Aug 2020 18:36:24 -0400 Subject: [PATCH 18/21] last commit --- Pipfile | 1 + Pipfile.lock | 21 +- module2-sql-for-analysis/insert_titanic.py | 6 +- .../queries.py | 182 ++++++++++++++++++ .../sqlite_demo.py | 2 +- 5 files changed, 207 insertions(+), 5 deletions(-) diff --git a/Pipfile b/Pipfile index 1cab9010..9e802d78 100644 --- a/Pipfile +++ b/Pipfile @@ -10,6 +10,7 @@ pandas = "*" pymongo = "*" dnspython = "*" flask-pymongo = "*" +psycopg2 = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 6f61e470..d908605a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "88b136a0a0ecb08311e37d4806b638698dbe3dfb3a596289266c2289ca6761e4" + "sha256": "c4c70368d912a4b3331fe0a8258f920b8d57f03b00a6539ea88171be51908794" }, "pipfile-spec": 6, "requires": { @@ -157,6 +157,25 @@ "index": "pypi", "version": "==1.1.0" }, + "psycopg2": { + "hashes": [ + "sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535", + "sha256:2327bf42c1744a434ed8ed0bbaa9168cac7ee5a22a9001f6fc85c33b8a4a14b7", + "sha256:27c633f2d5db0fc27b51f1b08f410715b59fa3802987aec91aeb8f562724e95c", + "sha256:2c0afb40cfb4d53487ee2ebe128649028c9a78d2476d14a67781e45dc287f080", + "sha256:2df2bf1b87305bd95eb3ac666ee1f00a9c83d10927b8144e8e39644218f4cf81", + "sha256:440a3ea2c955e89321a138eb7582aa1d22fe286c7d65e26a2c5411af0a88ae72", + "sha256:6a471d4d2a6f14c97a882e8d3124869bc623f3df6177eefe02994ea41fd45b52", + "sha256:6b306dae53ec7f4f67a10942cf8ac85de930ea90e9903e2df4001f69b7833f7e", + "sha256:a0984ff49e176062fcdc8a5a2a670c9bb1704a2f69548bce8f8a7bad41c661bf", + "sha256:ac5b23d0199c012ad91ed1bbb971b7666da651c6371529b1be8cbe2a7bf3c3a9", + "sha256:acf56d564e443e3dea152efe972b1434058244298a94348fc518d6dd6a9fb0bb", + "sha256:d3b29d717d39d3580efd760a9a46a7418408acebbb784717c90d708c9ed5f055", + "sha256:f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818" + ], + "index": "pypi", + "version": "==2.8.5" + }, "pymongo": { "hashes": [ "sha256:03dc64a9aa7a5d405aea5c56db95835f6a2fa31b3502c5af1760e0e99210be30", diff --git a/module2-sql-for-analysis/insert_titanic.py b/module2-sql-for-analysis/insert_titanic.py index 3d24716f..20fb80e4 100644 --- a/module2-sql-for-analysis/insert_titanic.py +++ b/module2-sql-for-analysis/insert_titanic.py @@ -1,8 +1,8 @@ +import csv +import sqlite3 + import pandas as pd import psycopg2 -import sqlite3 -from csv import DictReader -import csv """ # DictReader : diff --git a/module4-acid-and-database-scalability-tradeoffs/queries.py b/module4-acid-and-database-scalability-tradeoffs/queries.py index e69de29b..ed9d8cee 100644 --- a/module4-acid-and-database-scalability-tradeoffs/queries.py +++ b/module4-acid-and-database-scalability-tradeoffs/queries.py @@ -0,0 +1,182 @@ +import psycopg2 + +dbname = 'vbmmjeoc' +user = 'vbmmjeoc' # ElephantSQL happens to use same name for db and user +password = 'qiPPfJeCLmtX5-yUZcV27SmlTz75PQka' # Sensitive! Don't share/commit +host = 'isilo.db.elephantsql.com' +pg_conn = psycopg2.connect(dbname=dbname, user=user, + password=password, host=host) +c = pg_conn.cursor() +"""Practice queries of the titanic data""" +""" +- How many passengers survived, and how many died? +""" +c.execute(""" + SELECT COUNT(*) || ' died.' + FROM titanic + WHERE Survived = 0; +""") +c.fetchone() +c.execute(""" + SELECT COUNT(*) || ' survived.' + FROM titanic + WHERE Survived = 1; +""") +c.fetchone() + +""" +- How many passengers were in each class? +""" +c.execute(""" + SELECT COUNT(*) || ' passengers in class ' || Pclass + FROM titanic + GROUP BY Pclass +""") +c.fetchall() + +""" +- How many passengers survived/died within each class? +""" +c.execute(""" + SELECT COUNT(*) || ' passengers in class ' || Pclass || (CASE WHEN Survived = 1 THEN ' survived.' ELSE ' died.' END) + FROM titanic + GROUP BY Pclass, Survived +""") +c.fetchall() + +""" +- What was the average age of survivors vs nonsurvivors? +""" +c.execute("""SELECT AVG(Age) || (CASE WHEN Survived = 1 THEN ' was the average age of survivors' ELSE ' was the +average age of nonsurvivors' END) FROM titanic GROUP BY Survived;""") +c.fetchall() + +"""What was the average age of each passenger class?""" +c.execute(""" +SELECT 'Average age of: ' || ( + CASE + WHEN Pclass = 1 THEN 'first class' + WHEN Pclass = 2 THEN 'second class' + WHEN Pclass = 3 THEN 'third class' + END + ) || ':' || AVG(Age) + FROM titanic + GROUP BY Pclass +""") +c.fetchall() + +""" +#- What was the average fare by passenger class? By survival? +""" +c.execute(""" + SELECT 'Average fare of: ' || ( + CASE + WHEN Pclass = 1 THEN 'first class' + WHEN Pclass = 2 THEN 'second class' + WHEN Pclass = 3 THEN 'third class' + END + ) || ': ' || AVG(Fare) + FROM titanic + GROUP BY Pclass +""") +c.fetchall() + +c.execute(""" + SELECT 'Average fare of: ' || ( + CASE + WHEN Survived = 1 THEN 'surivors' + WHEN Survived = 0 THEN 'nonsurvivors' + END + ) || ': ' || AVG(Fare) + FROM titanic + GROUP BY Survived +""") +c.fetchall() +""" +- How many siblings/spouses aboard on average, by passenger class? By survival? +""" +c.execute(""" + SELECT 'Average number of siblings/spouses of: ' || ( + CASE + WHEN Pclass = 1 THEN 'first class' + WHEN Pclass = 2 THEN 'second class' + WHEN Pclass = 3 THEN 'third class' + END + ) || ': ' || AVG(Siblings/Spouses Aboard) + FROM titanic + GROUP BY Pclass +""") +c.fetchall() + +c.execute(""" + SELECT 'Average number of siblings/spouses of: ' || ( + CASE + WHEN Survived = 1 THEN 'surivors' + WHEN Survived = 0 THEN 'nonsurvivors' + END + ) || ': ' || AVG(Siblings/Spouses Aboard) + FROM titanic + GROUP BY Survived +""") +c.fetchall() + +""" +#- How many parents/children aboard on average, by passenger class? By survival? +""" +c.execute(""" + SELECT 'Average number of parents/children of ' || ( + CASE + WHEN Pclass = 1 THEN 'first class' + WHEN Pclass = 2 THEN 'second class' + WHEN Pclass = 3 THEN 'third class' + END + ) || ': ' || AVG(Parents_or_children_aboard) + FROM titanic + GROUP BY Pclass +""") +c.fetchall() + +c.execute(""" + SELECT 'Average number of parents/children of: ' || ( + CASE + WHEN Survived = 1 THEN 'surivors' + WHEN Survived = 0 THEN 'nonsurvivors' + END + ) || ': ' || AVG(Parents_or_children_aboard) + FROM titanic + GROUP BY Survived +""") +c.fetchall() + +"""" +#- Do any passengers have the same name? +""" +c.execute(""" + SELECT * + FROM ( + SELECT COUNT(*) as name_count, Name + FROM titanic + GROUP BY Name + ) AS q + WHERE q.name_count > 1; +""") +c.fetchall() + +""" +- (Bonus! Hard, may require pulling and processing with Python) How many married + couples were aboard the Titanic? Assume that two people (one `Mr.` and one + `Mrs.`) with the same last name and with at least 1 sibling/spouse aboard are + a married couple. +""" +c.execute(""" + SELECT Name + FROM titanic + WHERE ((Name LIKE 'Mr.%') OR (Name LIKE 'Mrs.%')) + AND Siblings_or_spouses_aboard > 0; +""") +names = c.fetchall() +male_last_names = [name.split(" ")[-1] for name, in names if name.startswith("Mr.")] +female_last_names = [name.split(" ")[-1] for name, in names if name.startswith("Mrs.")] + +overlap = set(male_last_names) & set(female_last_names) +"Number married couples:", len(overlap) diff --git a/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py b/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py index cf3951d5..8a845565 100644 --- a/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py +++ b/module4-acid-and-database-scalability-tradeoffs/sqlite_demo.py @@ -27,7 +27,7 @@ def insert_data(conn): ] curs = conn.cursor() for row in my_data: - pass + insert_statement = curs.execute("""INSERT INTO students VALUE (?,?,?), my_data""") # Exercise - write an insert statement! curs.close() conn.commit() From 1c03f43b5f2f3107765bc40e102db515f1e3b092 Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Fri, 14 Aug 2020 09:18:39 -0400 Subject: [PATCH 19/21] study guide --- study-guide/Chinook_Sqlite.sqlite | Bin 0 -> 1067008 bytes ... Sprint 2 SQL and Databases Study Guide.md | 144 ++++++++++-------- study-guide/part1_queries.py | 42 +++++ study-guide/study_part1.py | 36 +++++ study-guide/study_part1.sqlite3 | Bin 0 -> 8192 bytes study-guide/study_part2.py | 131 ++++++++++++++++ 6 files changed, 290 insertions(+), 63 deletions(-) create mode 100644 study-guide/Chinook_Sqlite.sqlite create mode 100644 study-guide/part1_queries.py create mode 100644 study-guide/study_part1.py create mode 100644 study-guide/study_part1.sqlite3 create mode 100644 study-guide/study_part2.py diff --git a/study-guide/Chinook_Sqlite.sqlite b/study-guide/Chinook_Sqlite.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..00a750d94dd063bf2bcadae045db660542a4fafa GIT binary patch literal 1067008 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 z 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

    Efg(A((lIsns(~ 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

  1. ClLUZgBh348P2_0yk zEHuwPMQFZ#s?b69X+j6vrwc8x&k#DqK2zvW`z)cu?6ZXqx6cte!ai5%NPDr+QTBO4 zN89HMEwnEXI>x?G=vezAq2ug}g%;VD2pw-Mk$I_c1o!?+Jofiyt^%&%vB2wjOz>MgHuy91J1fLv zh28(gUH(UME^@kco^_d(wpy)gtXr&mI9plEW0wE#{r|du5D5~VB;P0j<@+R{e47N6 z?~;J>O%hPPM?!0At=5|7p?u4P*3^?)Yo3Gh9TZwqPid`L59J#ww5FccTJr+*eG~FZ z$2j!ehTEX;G~5b(yWtk-TMaiu-)y)E`bGoBbtPY_M_!xcTT9Ts!G$l8+)$6aHn`IS z?HgVA6UmMB$ZL~);|ba~x$qH^o9dC*Ciy-Tv~PCdCnPu5Bd<;JZ7FEq(y$uJcc*A= zxCY8Msc3Du7RvXkXl=L-%D1d&ZMYuFBiFSy+yLbpSfGDDyG0)s@28%@dc9xsBJ=}O zA0{89*6FzBCFqByK5RZrJ*(rI4bYEFeHeX|(uc=KH5<|Xv3b1Kls=q3uGxh66Y~VE zDSg;{QnMNHr{;-TQ~I#^v}Oz9Kbj|LP3iUfW6jHmKQrOqBtJ{(_4};m6|{eD!oNv= zp3>|0dCjY6|H6cSll&s3*YAs(*Mj_iM(D}^o&5h()uR>hvCY>>w)s-kR=$0{|1vOylJ)L_a6d8|@{C>!LlN)4oJkjE-DfU-dzt5ko= z26?Pf{U{scu}bx&Y>>w))rYb{9;?(=lnwG&l}uAM$YYh&m9jw|tE?`R4f0rJb*5~P z$11B6WrI9cSsf`G**uZ9|;vYfseYOu<3_G+j> zD$B{M5qw|duE}MTMedrsg0je6lS?U!+%>s`vdCSNms1wGYw|M6B6m$*N?GKt$xA4U z+%mHk-H`@q%3mR~2hA z|7{*W3HU_gY#xo1HkKPVuuJ!_@r<$2c$3HMd};h_M%c@%H@ld9&EY(>l>823p%#yIB*geXP0G;s5z8 zpL~sfnw`nl*rCMpK8&D_iup2<=h{V~#db;PJiArseETY)3+&}W7ur`dN$_8NJ5SY- zyvSZDOS#xyC3K0sTIf>y8llVVYlSYiuM=8gUoW)OzCq{;`$nN<_Dw=p+Koaj_I#mC z@-v}q@^hhF@(ZDS@=KvY@++ZY@@t_|@*APnf{eXE0RA7txWzT zv?}?t(CXwbLf0gJ6}r|A30-HGxAXP3DQ!3KEkkxm`nz(_cfa zGeAQ-XP|~UXOM<^XRwC$&JYa^&QJ}F&M*y4&TtLQ&Ik=1oUJuJM_C{W+u9v4f3+f(!*#_*tE;t@HJJMcJ9EWxGWQS; z;CaH1Lhc_t|Km!l$koXktvjp-c($;0+%tHU=L`GL`kbHr@s9NY>vuuEV>``%fbx&K z*5(hO9{%60!#mLb@KrXlUE6C$b=>C50bcJnqxx<0MFDX|^ZQV~G-z%95L#s}(^}CA ztv0XFT2X@5B-dzl^!saSo<>}2?xwZfENHviuC4|qgk2xM747xy zmqXi!7ig{P1#K{wYOO$aYd4ys5I45lAKGL(TD=Kc>kowTg-&bpM^HZ8wKk*bZu3PC zamVIQpnU1m+WaY$FMwK`|45c;*j-TMw!5VC>UC+{AI)8x@v5$=L$o%|MsqimyzOo& zSQB=)#skpY9hGmpdkPMP-Mw)RntPxCZudy(UDu;=E}DCy4sQ2M!LP7;HXexPUMPdx zy;6F|_G+Am=H95T+r3k8FYMlp^U=IjH>}uJDZSgbYCH(deY&H$Pf8zSeHsr&b6*e5 zeJg)J*w07UukuHP{VNdmulxz&fJ%e|Dt|^eunOV8%3lx;szx}d@>hg|YY+~u3LzX) zi*QJlfpBO$ghQ)%5HWA;VRZwW)t zBZ2-s|Bugq^?7*v;OnZ--4OJP@D5sC1NvonN3E_2{VKc@^r8rMkGd$8)Nw8R8+CC6 z`$=7#veABVE&LmGNd!AgU6M+n{gT=jpqECl=hUSsoLTD9TKG5WvIusex-8}5b(ht? z1id_heW@-_;owo1*KR=jk_dLHT9U$1q?XifMElYR_O4o*((Ajlb`#pKh+sFXD^hxW zuc(E;q?Sc69z`un>GfS!y9KYmGJFf1gS^Fj0S4Hr%rB?ZRy;s$Kh4$4E{BEh$zFzOuwO^zCnh1Wl)HS|d?`vwm zLHo54{Bo&leZAh-)_#lj>mvB+QrG!#eLqV%|6j@X0o~2_1O1QB0;&_3URpXk+iK|IY^R~CbBBg*&Yc>% zJ9la5;oPmEr*n^nUe3K5dOP=N*vh$ILm%e>wi<#=?XUY8_=vvFgZi`jIS*;*@2t@< zzKD5gX~*047MeO9AZlfIn7xw z3S(T^tYcl-tmEA6^@omkchE4w+DYqaAtILPy?pjKgzn1}q$==PMZ=Bv;hDP7H1p*vH$ny*54dAc^Q zLU((*Hm^eWc)B*PLic((m<1|ypO+W9-_r(y3O(TIv{i*3^t9`xLJxV`^-`fVo_4)d z=wVO0UMlpg7r0)0F$_KDtq^+NTiJI0o2u>n4^E-B^Z&Pa{{K^q|IGzOEERc;azPPG zMP8*`P{dM^S11=0u~g(`$^}I%71=_$popa+n<*C*u~cLe<$@xXifp7@P{dM^4U`Lt zSSs=o<$@xXid0fAC}OEd1?7SwmWue43yN4O;!!RrVyTErxuA%pA`az(B9@AzC>Ip5 zRK%uSP{dM^B;|r4mWm`O7ZkBnBu=@Yh@~Pi$^}I%z7dpiK@p3e3_`h}h{cb}qg+tL zQfe9Hf+ChuS5Ph}VkxzhazPPGsU?&PidafrPPw3nrPO7V3yN4uT}rv2h^5pelnaVj zN?lC3popc^MU)GQSV~<;xuA%p)CH6aidagWPr0CorPO(p3yN4uEv8&h#8T>9$^}I% zrOu&TP{dN<<&+DGSSoxK<$@xX3b#@&C}OE_iE=>^ONEP+4T@MQT%c@F#8TlrWrHG? z3g;*r6tPq|OWB}^rNSA?21P6t=Gtmd#8TlF$_7O&6~2H(~!vS2pJPg3a%R>QNvpfXAHOmD6u2~)o;F{$@ z0Ipfi2XM`D9)L@g2L=!yOWC=A-6%T;uoGnu0B|{ZHh{~?`vdw=b{2rk$@>9%Q+6hx z7iDJvdQx^@Ko8391L#iKy#d`QI~~Ba=V<`0J?{nJ+VfNZ*Pf>Uxb{35z_sT|0M!5X zHJU^J9Jzn+{0~lO_+OCUB+B>ql<)iD$F8IOLjM@8jmS?E{1kS?7x~9(ZA5;W;D@s7 z*ZmjYcd>sQ-hXi;^1}o_+a2*G{vxf7$PW|zsCUGd`p0W+M1GjyC%+@U%s)YEqh5c0 z5Io|`{S&n|>huRlK~9`VvftPy!X=v@`y8ydb#{udBoX9z1&>lSH!tSz1)0K@1K05 zUTz_2;O~V-z1(8bL|pVP(%Pt(S4vulOWws=8})KqlVQZI-X&U_^zyGtD#TZLmuhX& zpR+tkh?jepX>HPnT#P`=`GdTq(5&}GLCqa zcZJp_{dudC3B;?tWm=o`=UtP8&y={vyAti!H0jT~HVGdkajn;a_G_E;=UtbCkCM2q zNq^4uN%$v;>znlQZ%D#7N!-w+mwRIpeo5lSCcV6ylJH3qH#K4YzX?3-|8G6gpYJX3 zc@~dfcqGq-cp`{CyJh^p3cc#xD!I&S-fcp!d$(&chWV1|7(;!@evBc$ zWJJbbU$P`)kT02&G0>N6${65FhGq2k%URb8o-XdI(2Jff?yJyCo-XdI&<0Nz_f=@4 zr;Gb4w8_)OeHGg5>EgZ$ZSiz*Uxi-wZkBa^#k)o5KmA6bH@rLKb>FzV34QC168g^F zUFdsv51}92a%TLaJ6hU)a>oe$?2Z-s#T_T~t2XqknNOTmvYLlbDZ+)T&Mgx&zULj@SXjH zDx6tDmCpV`RnBaoYUco<8fT7Btut4sopYd2FJF(PS4MAN@^xb?U-EUMk1zSU(bt!J z-RS2_zHUtLddpHKdRqxi^7;r(_WBA<@%jl(_4*6#qPyN0fzJaX62YRV&b4XvU)a@WvG$|HA8hAEHSHEB^ExohHh z${}}6ETSB8*Tiv@L++Y5mU75l6UR^vxoct}<&e83j;0)P*ThkjL++Y5l5)sh6Gu=E zxohHZ${}}697Z|hu67^FA$PU6q8xHpyEo;KyV|`dhuqcfNjc=Mb`Q!SceT4y4!Nt{ zjdI9c?XHwV?rL|T9CFuqmU75l<7_A(ca6P3IpnUf^^`;I8hf5{$X#RiP!73k>~6{- zca5D$IpnUf6DWt=HO89-xoeC!3v$;OZx-aPG2Sf5U1Pjikh{isvmkek?MgZ1uCZMx zhuk%`Gv$!G#&)6{a@W|7ltb z02#^+2c#)C4A4Tkp#a{4LjY_E4F<3!Gzh?!&_DoNLIVJ73H1lCCDbo~$QzXF3wS-a z{{KVg|9A7V3jTxozty|yvmkG>dR6@q+Oz6YXpgE-pxvuJhIXsM$QG+>6-Mq@U8*on z$m(2$eA;rOd*F3$)w579x~JBv=b(Ocl2&)7)~Zd=is)pm?tWUUHbX0;Q?$CXv{r3_ zRz;_3b@$g=^)j?Nx|ddWw$`dwpf%BHTHOP*R=o@87|G2<;uJ;G0+- zqx$=IwAY}$V-tIxuvhdD#O33&cl1!i<>Pj% z=wXPrs=~Met55WB#C@vZ<5+#8MQ@Ed!0I2ZMtlDh`~|Cj zRT}YtXiaeb|8vd%qdmaj`^Ap1znc7NNdB>&?^%cYi)Q2 z+LC~;6l-Z%hd7;ppY&H>e!2m_H?d3tK2yt~smx|>Y)+5d* z;77&su6}*K;RUo867Zv91y{eX(C{MKiwPVrv7)QrUu<{@?WF{cmsrWw?=LlMKznNf z$5pJ=)$ea@*ogM45;(46SGoHAS2b)x`|?CatE=C?yaB(1v8xkVv|sJ&_g~$B-@(|5 zL=NpMT>btP4fq|5txRxtj`!O+j{QkwR zF)9&X(}3T-*tG`Em)Nxp_`Qo=XW%@EUDtr$x!Cna4PJk}+f{1=e&=F07`2FRXu$7V z>_(#<;u~GPo;Nn&_bqmlQHS=M8t}UoyVCBce`nA!1XD1htZ7qjs{$}Vs{!H5Z~E=>sjnBqa)(G8a{&F zZFJI_niHJ=lX&Wne~j5b_{qQWPrQtWyv{;7KPHs-<3a^LAyo8}LM7i8YV}h>SNV?6 z>eNV~>r>kZ-I&@|=+@MBLbrSEgzoU_gzog}h3@j&3*GHC2;Ji~3f=293Ek&43*GN^ z5PHDtDD)k&Hz2Lqt^rHKL&`a)zLYtiPgf=_p3vF>O z5PI3UQ0NusBB58E@>;#-l-KHYr@U5gIOVl^(U3qcszbc(nY; zAMt2;SiE?&X3E*C?fmDgtnK_)M%($XjNj<_KgMYJGw1*K*Ry}{NZ&>LWWUAygulPa zj2}iz(3j_D4UXbx4o>4|56y&}|a?Ypu|q zw@m~3&E~d=1!&*4Vh61aE1=sYkcXPvRcxo@hUL)h6UaBs?JIWFal=aJ4vE=XEA)Er z(18B8xnlzPtGQ#v_W1jb4Oc^VN+3@*cd8hvc75aPr zqwkk7)m!8HjI|!u>gnTXY_;AVN)8kDB8>eH@Li-WIQ$U?DFx zCwTfenozCx+e8cbsX5Wp$I--Uy&oo7$WzTpo<5EyRqOpf*+RZ*PWJS1G`U*u=PBlE z_?#(qUqPpuuWPOQ`k%x9*WUHLl!td6{*vqg4MySBKz0`J=5@(R3bi_0tUt}QOFz`M4%yaMmq;_?c- zYm3V(@UE>4<>6ghY0AU9wpu6;@7lVO^6;*$Wt4|^ZCycmc-Pia%EP<1mQWtvwRJh= z;ayvoQNB-LVq2F|ek;HwlG@x|G)p4Kl#qykN<7{A3o2P+%kN={gKY0!WY;d3+?TkA+(QkrqI65 zSwb_MvxR0l=LqfR$Xy}fSxm&{F$rp)2ffgqGRg3SDV`C)8qpFO;@_5X#s;3T5q| zgmU)JLV5cap@RLZP%#w}Dy0me)|4r96+Z$Pca(&er@}&4d*ZW%S9s#HgjagvvxHZ9 z;M@T!Dv^s0q!@@j-`_G*RhPnEaJ1F7nnmAA_ysq%JtG*#X%kEP1n2BenPU| zE>An^K1qq^6aF+Mo=^CXskhtCe;z>IcK-8V{I>Hy{2M+0_c6MM z{<=^9Fop$lfg1gS*+7l%|AX^^{-^nW_;K}SkmrQ?ms@M?Y0xLsTUwov*4opdPpY@I zI)>KTGoWkLJJ1(vQ6~()P>cFuczx{!Xn$C}sx|ea*4mSxk0|6_!EvSI+LNJ=D&${b zzRKvh_7v!2>J6=_U$oYq3jLq{9(=9Ba@W?L34KbvtJSfz)}94@TD_;$32UuA8~Thw zy(-LCH67QU16`+nuhk)~wdX>gRe#XxM6}i}hCZiIzY6p9Psg?AL7!KsV+B`39oL=@ zU9V8j3a*WaUr--ubrR4Q)yG<$B=n`I-fu6}{1NensQ#WCYCc1}F{;1c#v0Vu!<(Y| zdu^&geLcK6s=v?XnlJJCEm8eFw$vbx4!<1L>;H1i*ZBJ@QN7-;)O>^Z)u>+IS8KjS z{9076?`t*RA%5MQqP6CG=o{u#tu;SD-!%8qTBDDvx6EmX->T8a)7$2B#BbN=V33|A0 zN3=f@K3Z$tAn2pvg<9+2Bhq8xGY~&kw-fa7@G)BJ;3v`(;WH6GQMWVn$?#cP>vn;z z4Iitu4!$2f6+RB}Q+4p^=;`p;h@Y<875Ys09IbV`LDz*BX|01FN6&`OMf_~tDCl$H zlZfofJ@M5iXyF*`y;kct0>h?tZVhqO}y;wII@k=orcl1)-7{nW5 zIPPde-B`pM<2deUW8FB!o8tJLrA>9?5pRy;cZoLFO+dUQj^88NQa2It%W?b;(aUv{ z5Wf<~?+?9FHyQD(Vf;?et93Z9=(R9@uj#cqz5ibiUxL@YUWfC9-Uwfc_>DT8C-i1` z3F0^FWtPkIz)X4Lb zrFj0|UwFc@PeZ>Cy}_=N)_16GSrc(z-E@Aj!*^mvJ7>& zDzKGhs4l9&PL`oMs{$KYhU%mW>|+_KqbjhCWvC9Sz%G`dnpJ^KEJHP^0()47YE%Wb zung6p3hZDRs=X?(fn}(ARbc~tJ$}a*uNcrOc4^aMC!2OgzCIEXs$}a@$N%^AzlPG^w0I}~We}`J@HFalUMdj{sy0+nmzGkR0mH+yr_)yIBPsIR?NsGt3m zP=EVrp#kfDrgcxrJ7;a6&vAoDk3dCd4zo3Gp0nLOiRR5YOW##51=E@my^}JUg3E*1`S1ZRda6 z`QLW_^L!@1!Sg@p|IgsTzdX+7GwXfpExyjK=lf|MvhK8Qu&%bU*5&-Poztx2tiyPg z{(Y@U)*jXl)-bCt&(PaoRq|Z^rujWT+2;@D8|FrHo%txw>U#@6`=@9wGcPjFGEX#* zG7mCm@pA#jn!A`I&4Ff5vjaaf*fGiY+4#!%$au$inV%~BB+n;&hjG2J+{hT08Hb?*Dh;K1ziVH;mACp+9o(|Mk#@&@-V&sEAH&Yy%b1sg1ov zMRaOoFH#Ym+Sr3sM5i`>DHYMFjbB1VbZX-lQxToo_(fDir#5~e7161UUqD54YUAfq z5uMujc~sN|*~L^ur#5~r7161UpF>4-YU5{95uMujSyV))Hhv}*(W#A}K}B?G?O9Yr zr`C9dis;lDFH;enT4M_p(Wx~yQxTn7V-pp1rMct|0n~J(qJDrNUQ#*|cx>LIs6?CU|Diw66b_x}Ar*<+Gbfr5)3Q)`_;1$1hy)2Vwm;{JZVIm+#g$aNt6~+T1R2T;! zDvSjvDvSYysW2K~sluK?rg?%Y>=Eeks<3;Yi&SA$pvS4gZh;=F3cCh+j4JFB=)$1? zzq`@(Z$AIWpE2LZ<$t>WAIz94eHor3RfuOr72~8En;ogNt6LnYD670v?voXqa-Xc|l>1~Qr`#uNb;^CRtDJJ5jOUJ(HQ?D|g?N5g zA)XOd=x_UtZgr$au5NRrMy_smq(-jpaHK}A?sTL^uI_TAMy~F5q(-jpaim7Bw)o{9 z{>y&3hyRLS?%}`cmwWiH`Q^U(>wdX!{)S)fo4@Io`{r-?<-Ymbez|Y{nIm=hU|wh0 zYG1fghgV;^QioSxxl)H$U%OI=SKqkhKK!?Cxex!HTkgYu@0R=UKe**S{Ex2m;i<}A zuRo3I+=GSc-33DJ-9v;L+(U&L-NS^M+{1;M-6MoLxJL?gbdM71f>$KcK&m}ukHL-ZRbB92fxAd zU-$o?`P2UYd>(&4jmP1S;_>*ytbSH^tC^qU>GJbDL*{q?s~G_IVDOKM=*_BosEFRI zx|@pV&8oYoh~BKalZxogsynEN-mJQvis;R%+o*`%th$wo=*_BIsEFRIx|xdT&8nNI zh~BI^nTqJms*|XQ-mE&2is;R%6R3#ZtU8{G=*_A{R77u99Y;m-}OB6_oS4HeOwwd<&;d$Vs*QTJxwq@wQ4zClIZn|+;%x;Oh86?Jd+RVt!4 zYduOu^kywil+c^C9;PCCv(_3aqBm^kyyI&gjiryq(dTwRk(DH*4)qMf7H^QB*{4*4mAV=*?QYQW3pb zYZoe_H*4)oMefb=$ljf($lY0n9jVCuS%w{`$Q@dS?WxE;T88bY$X!~7ZK=q8T83?? zxHDiR6?Xz`O~oAnBUEvRpx-+{6}JzxzbbAQXg^ilHqgGRxJ{saRB>dWTdCsKf%aC# z5rOtn#o>YWRK;O|_E5#4fp%BLA%S*N#leAgRmDMpDped9Xjl~o1Zq*Sf3PCx;8Xi+$2hCs#CX{bst_mwq#?@TK1ziKW`< z?f36(@klb&UjAyQ8iZ1*Mj8#c{zjes@;B=19xu!5=bj+c-#t-ifP0eAK=))J9+M(8*gaKfhX)xoxB2C3)$M-yT6KqCzE<7ocaitr<#!dj+wUfHkKbMBUcZOXeSS}& z`~6-*5BR->9`v^oddTl1w8rl%^swJg=n?l^p-0`tLXWxU2|ezfFZ6_afzXrgg+goH zi-ewXFBW>*y+r64_fnyC?qx#Hx|a(*=PnU?-d!rR-n~NT1$UXyi|&;|FQv*`XhW*J zg*K+jTWC|NyoENW%3Ekls=S3>PL;RNE2;7pdNozvLa(LDTj=#vc?-RfDsQ2mDx_}{ z`ME;+Hj!T{!m?JsRwzx;Pz4F`#6d!4MO4VD5Kk}~u82#Usz?Y?MN%kIVGBhoQbMr` zM<`z53MDF}M-xp}NRK9JS4fZMUykSh=NNY@q(>9o!S63i+0h>$w39zjXlH+r&@TR9 zp(`H~WzB%-jh4J~JuPQen{@TL$ z{Lt5x8xenFVLX0_=hD}4Z4Ip13t z#~I5wcFz>SFx95vqI(v0>pp z3WJ{_pySH7p{9lVDGYw5fQ~EQfm#;sn=tqZ13IpJ7aF#3zl6ch8_;p(dr)ParPaka zd_z_K4l!A{Kf>T=5$L!Q_w(>g2e?nd;3pHHJyQ7xXw<^}5e7e}K*yE1zsHDKxDUeM zrxu_+R*Cz3jJS0kVt$5!)=J#(VBv{pX}jhRha ztN#Fvo6TCQaa{b>m!B{@;PVpIINriZvm@eUHIB2eZFWLzSL65!r_9cXQ`I=G!j9Pm zu~UuXDeRhE5xdnmj>4YV4Y5~^<0tH!-4XlMIBvofW)H*_)i_?lm1a-GmDOKBtIS?n ztG|R+o4vJGe+8{Ex6)euHMG|3qqX`QXgjm7*6MGeb!I=U)!#wu&Hh@ezlXLr2WYMS z0oq^=)LQ)`w9y=-wfZM$lQ~#x_0P~|bBNaJU!WZ|W!dy@#c@YY%^|j%z$MjJd|X#w248V+VdFd0)Q&r@^Q+5{4Q2p6^xs1K<6#k*gMuhNz^6V#TSX zhhoL3gyNMEr4ou)MubWzUKvCs6t4_LB^0lWFqKfeGAt^gcx9MWLh;HlsD$E`!5@L* zRp?hLp?DSgg-R%1g?^?IidUhZsD$EG=tnA{coq7AN+@21zNZq3SE28ygyL1`TPmS= z75ausC|=n!R0#vJCaV(Ht_(FvmAG_esEMk?l`BI{P$d+u#;XzvSL0L(g{!fugu>Mr zDskb8>q-2@xN>Ex#79)((iOvpRN~qd!v|F2;uXXDRO0Ft!yl-`MXcDvR6-FewuVY5V#OY!5{g){+o^;iR_uBzp@?Nqq!Nl)(Y>jJ zB35)dl~BZrPNPzXV8x<)QK=a)l}b&3DO73%Or}x;U=o$u19*Y;fC*Hp1B|CqJHR+9 z)dI#+sRqECw>p62W-3(yHc_b(u#rj?fDKgg0WVR>1H4Ej7w`g=9Kd=ir2x-U$p$<} z{8Y1G$byxJ~?_0;>p#xKE$@(itiOY5Aj~rxIV>4 zM+x!hD&78X<1x_){ywJaeCXI{RIB}atyLF5$3;)qTHOOWK8k*De0(*oyYUH8^nd?m z-)mY_ukW;KTzBKsqk283SL3=H-#fk>>$$g^*4ln4bf5UuTHTD+_E$jnjjzz^X0^6o z2AvUKsnyMCZGR{+Uw8XKYlIZ z{arqNxPAZj`txVUuR}cBZPnUdfBpgS>k%K|UZu6Y{`@)d8xYTN_4l6BUVr}F_>E|v z>+0`4x4r)S1LHTL{XkcL?*rTG&z~2+8SV32{k`Y4*PlN>QIGcd4HKaUCE9Ckm;^mI z(V(?qGIT+rQES5#=phO8SL25?OhtTXqFHML@}Kx&i4KSlYe3!;KRnSfIRF1~@BfMJ z;g1k6b5DP3q0#u)39{6K$Op?UsxLi7FY zg%0v}5IWf3QD}j`lh7f))RCiy`cg-Z9_C9OIeNIio4oD_f0WRX{_a9Y`FjW*?e8hH z&>t;yS*q+>U!E$v)=N@l*LrEH>{?%uD!bOpQf1fr%2e64Zb=Q3<)u@@g)*t~aga@w zkAs|3-uro{y!Q)EdG8mU^4>2w<-OnPl=uEsPI>PycglO_YNxzsRygH7v(hQ=nN?1C z&pcRB{@jNu%AdQYqWrlJSCl{Zk&5!?K3Y-!+{Y@)pZj=4`E#GBD1Yvg73I%eTT%Yp zrz*;y`*cP5h`kSmJG^JmLD zc*bm@9V+B1^Z$GX&vz|<-MK=pJmxMHa^(qT7ni^8=G`U4Gl&cEoZ&(|OSllv3ogVn zfeZ26-$G-(2ZeYZX(66DT8QV07UJ2Vg?K(_A)WzRlNCypgp5?HkeRwl$Vx323a73X zQmGX}lv*hiNv#r!rdA8ZQr8H@Q`ZXl?o6QycR!&@ca~680 zCllf)k_pwj^Mu;F^M&|1V?z97F(H1Im=HfbOo*QsCd5w&6XIur3Gq|Fg!s8%Lj0sJ zA%2#Y5I;RjXh5n(XkaQWG$@r38l1`s4N2vMhNkjD!%_vI;i;m~2&cRTTRY`780nPP zU>oOgdEK_o6GGcLPYP}CtQFe9c}i$U=V_sxoM(h~cGd~);yf#~tMgpY|8G10+s=Qh z?fh5PZ}9vN{QrGJkNt1^|7(o9j2n#=M$TAboNt`Y9^~Q1fyNADvazSJqcPm*XLRG) zzp9L+VTFDOea^ELzRCA1Jj*N2|ELuvcC49NVPeOcs1+u5tdUw_V#gG7W2Ce$9LUzh)kQUvnUUUo#ibj!JU?wNyF)P(!8J zfNCo352&KjEI=id_5)N%Hb(uKwSdsy zz8YZE>L>p2NC!Og*NF0rCGVpqu%%4FFG463_?(fu>qkNFp-Z*;-L=;54!xHygRbcq zhHmVDdT?YzhmR4z)ZruOpSv6$*^AfTTfYbNKDu115C1-LU;Unl@24eN{a#w@M?)VV z_~#KG1FYlvG0+DI{&|E)1nandEc79Qe;(oS!8)!V2VFz(&m%lqSjY9_p$`-M^9YX} z)^Ys==p%7gtBblv z4@Ue%yi%)sf!6v3&?nRzI? z{&46s@pf8Wz5k!7KLYW(c%4>P@Bel6Mm2L@#c7!;QSxUH~sz3 z-|uJm=AGsm^J#Mf&kgjx5#@0LKk>|+Us=R=4cA$ntv-Ao@s2#AU@G5Pe6Y39I)$I> z_3zI4@gL9s7oXuuh83UbN`@8R&y@@-&UGN2>BPD6BgC~Hp+d#3LivhagfbO73oWVG zN$9`x8C*ebziJ$K8Ep2BwawkCiOh@hnh@a(LCVxHKxm@TR zXNl0cj@$_lU+l=80P*u2$)MxsJCZ@iFK{G-j$i0V1|7f1kqkP1u_GCD{1T_Ue=l{) z`}cBBT!i>iPh5of6|US95MSoXJpu76Q{oQ9TU@z2AfEOPkTuPw4i?IJbA(Es_zv+_ zPke{?Ri5|`@#UWQ4)LqK@{(70<)y6j7RXXod4~wC_6`-g#yd>tTJLb7|HIx}K)G>k z+uF6Oq@|M7!YXxJ-R`tI?8IRP$IQ&kF=Nb*9mgRjj$?UIdRxwX6CnQ z?$sB@f6g7}zIX5WPZE1%WPYopmI}3N&b_PZwZsyk*Aq*H-bgGH+L}08=*`4(p|=t% zgx*dZBlJ#UrO>;HV};&JtP*-Zah%WxiQ|PnOq?L}QR2jH$3LHGZ#(||p>4;%KlB$o z{{IyIKLhXTyOc8UuD%Lo;9Y%X%D}t&N|b?j^%aR9Tg4X0SD*~Mt1nL(cvoMJGVreI z9m>GFs<$Zv@2cLS47{s)lXygk_vbcc;9Y$I%D}t&h%)f5K0jsPU41^vz`Ob^%D}t& zOv=E!`V=+6yZQ`jf_JrkrzUt;>o;nGceQ?{CU{rt7ixlcwF=Y(?`q|#3EtJpQ4_qY zm8B+lS1UtJ@UB)9HNm@Do2d!j)w+b5;9adv)CBKpZKNi6SLQQQfcU6y26TGW>n3~{S)kD+-?;3oWn&4f7FHsY`Yj6uSjqz(0Q)j@*)YJ*E znwmNSPNJp`fD@^yJ>UdtY6m!;nvMYMLQQP}J5$r)fSsu6Fu;z~bSPj4YB~h4JvAK+ zX#8^=|JZj!eAv(NmMX-DJ@(xYANJUHLwwj{-wp9$k9{}9hduV)5Fhr~cSBjqOvRsP zC^H4nM48Ee&6GJ3a4}^j0X9%(BH$d#VBZa$MH%e7!Fwr#eK)v(GJ4;gPZ_=M9z_|w z@6Mx)-goCxM(?|GD5Lk?*_6@y?kvjaeRn2h^u9ZTGJ4;gP8q%LPNR(8cc)TD@4Hhd zgMByBKpE`2fdQ1kz8mOI8SJ}(ew4w!8|X_J?7M+Jl)=6m=uH{yyMbPm!M+>lNg3?B zfgY5>z8mOH8SJ}(Zj`~k8|X?I?7M+3l)}j_gw(@P-bVq-IUo0a2I8E1l&oP9RPPwW_!TxlxYOqMwwQCTPf23xP>y? z0dA&DJ>VwFv;^EpnL5A?l&J+=Pnk5}I?A;0z;_j8Y5-SKrW$YsWm164DdPez^UnYO zxZ{69pCnd`m-#etve0LVQ-nTGtP%PmajMXliM2vsB~BCiIyqM8o8&m5Z>{WkEHapaxlFbhF=VY@({UzD#P=8G}JJjEj%?|bVq&U>Dkram- zR!MQFVKXTXH9RM}NH2MKZgjEGyr?+T@KI55sNwlhaj4-1QE{l@g;8;+;YCq#sNuy? zaj4-XQE{l@rBQLH;bl>AsNs{6;*7(qlj4lSCnx909GsFoN@z`TzR;=31ww0+3x!Tg zHqZUKWb@pwPd3l}>B;7~KO@;Z_h%-X=l-l@^W2}EY@Yi|66@rXHz(E$H6>TNkhW9grp(id_vNYa3LXSNVu4gG$dR~NE#9@CnOCCR}zwjgl|hWueIBg&1>zB zWb<0PGugb>?n;WU58s^>Umw0FDZV~@Z}LQ$=lhZ;3EiKRBPIMmQjV1HgUM629shj3 zufuCFjJ zX~6Xt=B5T*pJ8rn$OgE7(7d<-*LRo~HE@qK*B3TyhHhxU^&92|4Y8#&=KZV zt+hWuN1AVHt^E-?%6v;}?N89r=G$6pe};}R-_ct83v{gcuGZRLq2tW=wATIx9dEv` zwf1-D1oH!}bp~{z`JvW21)XGmq_xh39%+88wa$W0Hb2o?hkjIZiuoz(DRqA6RP!^f zbp)Meey+7H0G)1rp|#G2&M?2!S{H=QG{4eX7lO{R(XVOFN?n6`w!OF3)V0t#_C8uu z*Fopn`)W;H51nV;ptT15gXTZF{T9@qACRwVy#;^2um=5q<|6Y})Qf7+?`JMHZ$rJf z2K{~J5>xLdOKMtS`cm@_tu>9%W#*k)Yqp0TZQiA|W(VkU^KPv*=*KfxnD?MwQGs0W9!KL-cbw?#c9jQu${r2YuhL&IUM_3fa;!c|%wY{%fR`u3=Y zha*}YY|r5E`VOc^gri!W)>`X3LPv&UTAkgr)^~!A3dglNyKAlQ3>_U#Xm#3Xt?vRI z6HaP%_Rw126*@MIe*fTDXHQ+%cY}@#qu)O`&cX2-99Q2R)5nL=?;jlR;J6KrukV5B z6T;P69UQ;G3H3cuPYl;+b#NR9C)W2uJt>TS|KKENKV8@Nh8`KlaUDF;*WeP8I5uwL#diGjMVUjdyO*2_ILF-X_-$3Ulr^>R;34Ayo1O6c^kUhe6M zA-b+V7CIxWmwQHHsIKc*L1%{ba?eZ*({=rE&{<)<+_MtHbzOfvbaq%T_w2+7UDuxg zofFo}Jtr|z*Yzht=Z5ui&rOWdb^S@ud11ZW^Ae-~6!~8k*_E$7WszO^+EEtSm9>Sk z$gZqsDU0mNdWN#duB@jii|opJin7SA%)yjJc4ZEtEV3(eAZ3wVnFA<`?8@vAWLIW4$|AdpjG!#C zE8}&_BD*qPqb#y3<5kKcyE0y(EV3)(Wy&JEGG3xAvMYm^6xo&WB4v?X881*4*_H7; zWszMO&rufHmBDKR*_FX-1KE|qYXjMp!D|EAmGLBHkzE;2P!`#h@i=9XT^V;%7TJ|? z7iE!M8Fx|^*_CkzWszMOw^J6`m2n$okzEsC7THy}Kv~BNvBG)2c_|=A*#sa<**G9W*%+XSvQfZh z%0>W}P`1j0&{vcV1HPne2=E1EgMiN|YXd%`Yyj{nWeM;JW&MDUDeD7#L|F^)A!SX# z2b5KS_bF=t-lNR1fOjdg62P5J#{k}@%nAT^HZ2EmXVcMut&~{?c!M%a0k2bL3E(x# zECz%rvj`BP%tAnrG7A9QS2Z6Hpv+MKqRc#i|Bvne!w)AV*9$)v+eMO&=VQAHy%1|H z^kQr`p)Il9go0L?osxB$1T2;%Wq-s_5NlDeJwo6K?R@IP{RITdpSXSnsZA`{lRUHwNaaL9B zVg-4%eXJ61z;OYwU8NZm}zby2q{*>Jht2sHf9SsF%}S zsJGKYsE^ZAsISvYsGrkYsK3)kXn@mKXrR+iXpqxiXs|OtXoxdVXs9ztXqYotXt*;( zXoNFVXrwc2+wsp0$hPC3?-I1__^Y7Y=O`zv4uiwVvB@MjV%^h8$I5k+*#|Q&0Ar8 zw0SF>9&O$VXGEK~!kN+Lt#DSfc`KY9ZQcs!M4Pw5xzXmWa9*@|E1Vx~-U=5)o43M- zX!BOMFxtEoE{cCHb9!<73!#niFNHS6zY@A6{@t=f>(dMmRiZ*ZkaIX8z_hDDsVmJkX;3?qa3oUz_pY^ zb``jWa>%X%S5pqzRbWTTA-f9fKsjVrf$b@W>?+VmIb>IXR+K|_6=%X%)s#ba6-ZGI*_Fyr z4%wAzq8zd-wV86ruGA%zLw2P$Q4ZOa+DJKMSL$NQA-hr+Q4ZOax{z|nuG9v~A-hr+ zP!8D@`d9ofSo9NBw$C%P6F&e*@=MdDLVnsNZIj#R+JqFXrSy^z;=`!1E{C$Xh2KK zjsnzCb|j#dvLgU#$`1Fy$3gNi00+rK0URU`0dSB!7{EdDAOHu+0|6W)4*+zfY=1x( z%Ju_vrfgq8C(8B#bfj!=KnJh=$Mt_Z^VPqHs?Mq}_XJK0eX$P zO+CPO0DW1#qdw#Nf0|~MS#=Pu5Ui;@= z`S-W4`s1q(lgh?bf&W+6{{_vsoY@7fxSZJqeQ`On3;N@7W*4MrdwtFm3`9E!aW9Y% z_Y(>uOe80??o;u!3o!jLW%iaQnENg9dkq%Q26u|fIcRX_xSWFqcZth6Xz;*jFZtes zqP>LA@2PX;{HA%?%@+UDltZAeqyZ9g2cFO z$3I^{vhDcyZ#({ZKlqCt|C9K3I>rym;OG9vRf~V*P9Vk?|M9-y#s~i@cLx9a1B1MA z4}lHa6ZE|8{m`{_7$*}r&38HK)9NrjCa}(T1?qKm7#9;*@4FK9`Z|n<37qb`3iauA z7zYzL!*@06GwLw@C2*$i8q{ajVcbjLEFZ?D1Vz zFb*YfA#Fr`VI9Vw1TLaYs4uF+xRb!ebP4K<>oDFVu+h8CJg={fbr@$7*yP=@hwDvs z7+(^&#JdWT>r3h|t|Y*Q0QKg&(NOj&TIR)D){TeetDe+a zhjBWALe*2K3v~xVi&al+tvd)>s(MCi-NDdu)w5db4uMvxp3_=)DD={*=e5=y2EDB6 z1+8@$rxm!o>P6I-*I}Gi;EJj(sIREQIIX~yRWG5wvJT_40#{YNjQXm&_Ry>86s^ft zTI(=Ai>>Aw)cizAt#ufm#a{GO)ckx&t#ufm#b$LaYJS?J);f$+VmEslYJT>l*19gx z8)%)@oLylePO%E7ya&!8NHS$?;84=a`3Lf`zZ(S8oZBk@UD@Ol!JE-9Y;BM z*U&1;!Mlczr5wC#XeH&~T|>uE4&F7if^zV#q2-i=cMTm)Ie6F5GRncbhL%ze-Ziv@ za`3L9#gv104K1P^ylZG7<=|ayhF+eDwHHvXCtyD1dH{~1Tz9}c%5?+GrCe9Q9LjY8 z%%)stz%0sj0?edbN5BlqbpTAKTzkMY%C!SbrQ8vKDU@pqm`u6D0lg`A7@!yB4h8h2 z+#!G-lsg#EopJ{Ox>4>xKv&8g0O&%w{Q;dRw;!Mr<@N=1q})D$4wT#5gTURC+Y4|P z<@N;d9=->F_wY6V-otkX@E*P!;8x1D2HZlqT>&?H=l>HGxBYBEx$SS@`|Rzh4pePb z7uB2ZzBfuuQZv+iwT$n{=RFhTe07N`@SXauSGTMC)MM&d^@@5+ef0nTQ$dvCXM+6O zJ;1zQxky_FGPDst{*fV#XcQuY8_`%q1~uwN#Cz-T#uvykRphXG{K;V{LV5UhC=X8s zP_{MYbH6}&goW}5=S!6Bd??#FU!iP|Q;bM^=WCQ52(NZ6NwCB7lt=6^Pr6PkB&L1L!9klDb%bkqZn|Hk->K)WWT)jSrG~#^W-*(ZVW;I?P zTEARtqyC=eU3r+9!1Q793$)f{wKnSS8`g;Po5*nW9;OeE>-96-ovQ0boL59fs1N@f z?Z3`l^OQ&1<bBXuH(U zltD z6w0IRvL;g=ZI^W<<H2@`d+R&H4hD6CSvA^`^s{P13Ce|nRr6z z*?3aupYa{f#U1&!=i{!>3-OfDi}7lqccKpoy&HW{=)LH}LhnZ(5&9tdsL+Se$AmtL zJ}&fe^a-I)qE8Ba8huLWv*^=8pGTh&`Xc(Q(3jEYguaSCFZ6Zv1)*=EFA9Ad-6Hf| z^d(J^n%DK)rbh|eN~_&h;~&jf_Htrz0fR*2hEp%IB2ghnPMbB~OPOYcf# zT=ZLcb$o2S(8TCDLQ@QdHnb0F8Kes zUVa`ia1M_gSj8g`*M;thy&-gOY^%^y ziRL+dI?+6*&m?3GSxx;y=sZ{u=*9=(qTqzju4rztZvlM|=MF z|7^?uKl^E3zH058LjSzApWOmAKP66U>LTd=c3Nvxzi}<^33`y-QfpMd@1PX=@vVbx(p)@nbrw~783t9Lbe zk*q%ERhZtVIsol!q94TSTaA7stDkudruVB3Li?N7YOM}I2bkAstq%Vw^8W&|Yx6KF zAiFlZPyyMs*_jH+uFVcqKz41mr2?{R^H3@vyADpK0VIBUC_kZC6nN*|i;}0;CCt@yAJ$D1Kx3W?wrQ& zGIa@ZPYZuemo$EtscVq;Uaq^Q@w-gjf<@Hb()eAb?!gl3?rHokQ;%R7b&oWDm#Js4 zg1Tq=dT6iUrCQTBKzj%EeD+S?h`LWu&u5?XO{n_@^?deC-;BCnP|s(-^ew3S2lagR zPv44qKv2);fb?ys2L|#h@HEaVXhcxY=ZG}UCun3)&*#WA&Le14P|xS6^aJ?3(Lp_* zqtiHVpfN!`pJUQEU!bu;J)dLKI8UH)K|P=2(l|e$@j*SGw4{=j1fndzuo|^EoArcAlmN^?XiEKZE(7 z7S!`OE&VL&=|Mf8)6>tPo)OgZIV1f%>X|`3pEJ`hpq>@f^EoU1BI?;eJ)g7FTTssl z>d%>zegpN~p#Ge>>8+^e1@-65OTXzI|LxSN#{d4cKL6ztzW(87fi)k^I>88Tj7#bg z+!UA8C3s0(QkUT7xTG$@rnsao!Ax9ImtZz7sY@^ym((Sgk4x$jEW{;s2^Qm$x&$wa z?=0VYMO>1x;C1m`WZF$p>9Gmk9GxuFZi&7pbZcx!q1$3R3EduR{=7S4n`GLeX!CU% zi=$&@+LEaB*aVkG$IG;3(FsCFN2QM^xI8L-LBZqWcgm|L#P1S1F)n#x@T9n8jKS4$ z$rFPo$0bh;o)VXoF1RNCfc)*LaY^ZdYvYpA1y74hN*7!gmy9g9J}wzq@btK3WWh7y zl9Bxhx7MBUU1bg36>lwccYHUYd*Ztb-J59MZucdnH!pa9vUy8C5^3H~pNvkCzj!J- zRp{yHG@)l=mk2!@+br~4tV!tkSVriDxTLkg7vqxF2Dii|tqr~ue@))^a{Tpe$3I{9 zvF-TxZ#({ZKltzeTK_4I|J}^d#{caVy#H0J-rQDi)4%2#kXGjN=m$byL_ZYzGWwCw zSJ97!zK(t(^iA|rp>Ly~34Is+T%AT_VyVhjxufiyUelkrp|$TSQvq(C(4fWe(az-VoX&vQ=o$$eTiYMcxwHJMy+r zhv>ONog(iDb&I?!)Hfn$qM?!T4Ki(1{6eq&-*)`}HIL8#?WNXxS#aC&@Bi05{=NKv zobjl^<7z*%-nCw}p0ysa?zV2SuCxl)M(Z4Ft#!P$%$jFSwZ>XQ_-WmptV6ARtX-`J ztJ;cKKJ#b3yT^y-R`W&k3G;sQHuGAuVm9$TKu$MT^K%InnlsIb<_NRD*^TcMa)8;! z+`+6h6Q-?xSKp~m)qCo7^@4hW?=EtOx`D4ND)8u`^VE8^TCL>qLvz#=HC7GbE0H>> z!_9BM1Og}=y|wz6ydMUJ$U z?e`Zs(N?z4U*ter*_OY^c{V@SoQhtYZAV5?(TlU~$Y3gZakd>9Bu@oo*O43*kX=WbsDSJ`lA!{!>&T^4 zKz1G3NCjlqkqfDS>^d@q3dpV_%c+3uIt|LpSfb2RllM2YL zBXg;M>^icD3dpV_%cy|tIx>R_<9I3jktI|Z3z$ZQF@Tj+7!8<3g;9X{R2T`ELxm9@ zRB<=WZ~%AH3iKp!gf0Q9CpcR(*HbOZFHLRSw$o2bwQz^k`2fLCuPz}Zyj z=z-au3LOAPP@z4bBNf^K+EL*Mz~NMA3+PIP!vUSV_P@W{$xu6~z0@Imob^$|)C4tC zEmFs-HR^1&QRVr#yiwhy9#+rr)qd~rQTv_x-L&~AuH~b-4IkA<@X_6$kMfCpv@hhN zel;Kc7x1q@g?|lh<6ng*_}5`8|4Mvi{%ra9SEHJLJ$B_^kwf{{q&NSnjOAaKdHgGL zJpbC9!@oKO{`I+ue}x|5U!zy~SLrkUb^6;=zqf7O%0!ks(}h+#lB+~EIC8cZxzL#@ zuWoc^2{k!$g)+_@p`0UUkCD71XOEGJBQO4MeubQ%MlN+`%eP(WEDZQm(6pT;womcV zYC5NBu$*-oe9n3ee&=)zvIZ1=-tk#fnPS#NEoT8z|IYUDW=S&T0=PV7i&eH$Y1qRlYuMANXxPiSRKwoRWg7NzF4wTHbA^WeoU1hK?_90n z0OuMF2RhekILNt9!@47yfux_5SCi2tW)&!|Nh?7|M)HdUsyjF z~7#zHYVCnz&x8yAk?^)n2Q+ z3A)wlpw+zu`li)UtGgNcmNh}Ei~fD%ZEGUxw_Wt_8}C??P`~4%f8Ti5IuiA}F8cS4 z_pHgN-*eHwZ@h0!LH)jq{(atKr=tGAMgP9>p*0Qlhc5c}jgPG9s6TSizi)hO%|QLJ zi~fD%6Kf{wPh9lx8=qRUP=D&8f8Y4bnvME17vm6&&#gJAKX;#meqqhk>S7#%@uf8n z^_MQjAsAm-N1^`8#W)1xYiqve|0fyG7&vY|u(nz+T2EN_Ten-+TbEmTKI=Z$T4$YP z9b+xBW?Pf3G1g!{WAAJoZtZWiv39gtTCP>aDZnr0H|EFYTjopV)8@nG-R8~a)n=I; zzy|Y7bB%eNxs0E&INhAU9$|pl!|Y%lV(w$MHXF?}yNIBv)Q{>*^`UxGy`-LIpK-Uk zSzWEls!457XR-@9j_*Hml$y@IWQ6Lkx~U`70jdpW0ktZ@moEKod}n-Wyu(SrGhPfp zMQ?nUU3CW)z42Xkqz4tf@m+SLI~Be0U3R1!6}|CYcBCs6z42Xkqze_j@m+SLGZnQ* z?nFiHkvme+^T>9j0~I}wY)9Ht(euc5q#YGKk8DSdprYrI?MPcHdLG%1^z;|mBP)B3 zzsMF@*|YsccF4+}$Uu1Wz>}mcYn`329^%vP2D|?E+ z$ktfdll?_@#>zg@Uu0vf>`DG2`(kBJ^cUF{D|>>!$gWt~+B zEwQr4_>1g_l|9;DWJ9d%QT`(PVP%i>7ugOgdxXEpZdlpF{Y5sz${yw~vKLnNP=ArF zu(F5vi|mAzJ=kAlBdlzWHrNL%d!WC_HdxsM{6%)b%I@zkvI$mpKYx)uu(JF5i)?|F z-N#>K2dwPg{vsP-W%u$I+5ak=*Av@cW%uwG+5IZJyT8chSJ~bCMfSeR?&>eH^;LEk zf03Q9vOD{WYcBHLbNckmb4^(wo)zsROn*}Q2y&ugobspxrLTP>%e z=Xvc2&(dMuTaNG-5B0RIzj%nJhx>~MdwQ6^c#x-u`ilp8dWgSxfTsuhi~DP~d%7PL_re$PGVbY3*w0bWgZl3Px zFShn{4}Wo2Puuv5yLh_0zqqrfyZMVddD_}v+|kor{ly(T-Nj$r-qW3_*oZGoQLz=E znu-k`RNdq+Zs)yaCx5Zt(;fZAmY(k5FV=awy?6dU+1O(6e_Q!BfM5Lg?gRMu&IbP8 zxqvYTKtI$rV=?$w;&!|HCq-Hc6hk9le+9fr!;ds=us?Z*(Sq&$ko?Uf=)`k^A@$(r~htoZBM+u#HZ(HNgd8B)KaSjrZ07VgD$gv z)mnr0Ssm@$1NG7ATIh1CTC1bKcZIbb>J@GRdW`P~t?5qCm6raym9ByMSf5_rW9!h4 zs#QL;Z)#Po{+{D}di@+%hjv&U@B0~lcYI6zz7u?U{hUyz*YAneV|e|tQStMfZ_y$|OzYJHuae!7*#^wU$Fp=bE?_neW&d5JpH z_Y0<a){&d!A#pM177Mg`VqcqqRn_r}M0O)aSV|==s(Y z-tpg0?P#bS)gFA`uXd`t8lXn1Nqp_@BF^AX=6il^P#JZpx{mMo^?-U(ZQ)k>BlWfV zg)_&fS;J@it<8PS!_3ZRA9JWV&YZ?A{n6$L=4s}+<|ebqXZkmr_n42G&zY~8@0p+T zdA_njmcwTbJ6Zqms6Xps&IGTrZn5s;vy&~BJP9c1vuzz@bafuk(9L;JLwDyP4LzKP zHS}~I(a_6zR6}p)F%5m3$2IhIp3uuVJY3f`(zviyDSITQrPtUeYkqd0E3K=M@d3omVxCabD9f)_GmSIOh!wU}7KGZP7`AEY|=VJ}CoKG~& zc0ScG$N5adT$ejryx?=5Yic;kwKU9keHs?Hehmv<(y+)4XjtsZhFjtW^^~PJ|7+Is*5iM}|F5tXSTn2% zoW%9Bx>{}jll!;KpUf{g!+XPg!F=4j&%D*VhQ0r0^L&05$Vui3bAdU7o&RvNpV`%H z%TEm1-Q1pif7}eH-_*D26ZJMfSLA8+kh+sc09>we>LPU(d;V2w3HSd`R-@G*)l+p) z2Xp`A&Z=Iy-1~1DKeAJK-+0}4o@f2v{!z*6;+D3&+Y-$ppw_cYa16( ziES>!`Bd_{cx~f6DtTSJws9_%*y%EyLnXGl3};ix>*BSIv#7*om*Gq*d0o7=aR!xO zca77j1iNdjrxNV0v5rb?clkZ1QHlL7!&)k_;bl0LO6+(U)=-HpFT*KRV$aKPGL_i$ zGOVT&yIzKqsKmCH;Y2F2?`1fFN^E@DW!^(2cD|+^+Kx)FzM*<5vGwICEvdxbm!XbI zYmL61!lA z1eMqZGsLL`9~_EN2|hR!r4oE_C_*Ln!Tg>oDzOpfnLnON?1UMPqY_(ThE@Jjt>=l4 z^_S9~uJo5$czTS#RO9Iif2rEjBm-JP@|Vcdh5nM? z(*^#L&(rz-lI7`9{*vkGJby`fI+scYzGx*Cj|Hrw;!40$@BIG{`}{vXTHG#jE_1%y zRpIS#FyzfG{htNfCPoaz5UP2q)-a?z)K0=qceT6o={e+s_{z4gdfKb*Q zD3o&t3FY0vLIrn-P|+PKRC0$2mEGY&6?cTtrS3?f%iK{ym%F2du5k6p2iv&P)z=Q$ z##Qb(dG%^nUxQ*B*SHg8+O_UPq3c|I?T~F;@9OKAY~u!Zvb=hutFJ+^jhkFO&cZfs zc4x?|x43$Ag>BsG>d_Upaht0LGT6rLt{z=s8+W*R#D#6#>FRM7wsDuM$646M-L4)4 zVH@|jdfbL>-0SL5y0&qjyGXw6epipuwT%bdB{JaGxa z%sobkdwGPoUq^_0a)h|=Mu>ZBgt&i3h+v{18Xaac_nY z_hW23{`r@G+wpH3+m3(R>(`Yd<1cmm4^hJnzE9tHHBHS^OZm*(yVL&#YBS#x@G5l^ zkNkUxpZ&MxU*$^w=KgmlnYP6fAGAE56ae!$B&L#Nj-gRZY%3SC#f z1bSNiV(8lXMbK007ed$6FMys>KOcH>J^D*StLxE^8ak;S{i~r9>(TETI-!0x-gkWc zEa-9dGoh>M(XSht7v2H&y!w&Qqry9Ctse!QA4dKhnqNN}^@8xuTIx$pdgRWbWntvT zp=HT|n7*tYd3@;T@E)j-P7cyqe>yht=R)mpHhgKwqVET&sDbQoW zduvS&)mlFlx-z_v*5oj)_2@qj9UI;k^|8s}TI;7nSB3Y}njE23*86c`>xtomP@fn(Q>$$Elfnn1J}GvVR@pCBhYvx$ zI(D{J*>6q`ABy_q*g0Bdzd9v+80u4E=W3PxZcX@b)N5krX_fu*)G+#GLZ`;g$Moj? zc5N8_523ZO3oyNTzdkM84)tlV4O(TtUl(qVdR^?oKgIoj%J8h_8&rm8HD9MPJgfN{ zmEl>hG#V&rLyk3wW$ox zYP?BhcvfR8mElk_zm6wY>E1$yfa)w2R9XReluFA1k5K7oz{6Bp26%`{O92m3 zX$jx~DlG=wPo+fww($!A_flyAfD?}SfV-)56yPo@%>!@>Fc)wKmF56$r_yY|ZB&{C zxRpvX0k=?T2H<8YO$XdWrD=d0sWjDt$Z#r60ZgRQWW00(m5u~lPo+tK>!>sla4nT4 z0Is3Zc)-rHtSm8-8ewUy!O>rHK?Tz$Q% ztxQ*6Z)z*ceOv#n^11pdQ(O66eU&NSt;^L{nc6DgzAx{y-4BF5Aq@qHtQZb>%R9tBLR6=NnR8nZilq0lL$`#r< zl@i(|RV}n@sz#`Fs)f*QskG4Usal~nsXC!OQZ0q{Ow|kRmD)~d?^J`(KB-pQj(=`9 zwjKZ5j(?L=`@iV%|K}S2r_T^Pf1@rS_*Hd5(y!}U_#m}`;8)d#Bw_l7+6$o<68x&V zFsa7}URZk(re8$xtLmbpt?Sy0p%)YUs=7EC)OGDf=thEHRU4BbUDs}cZX)b5tq&_d`ztu1ec7DEqdZFvi{6na=|6h2jzTHcDf9C}1+ z%iExp(4$&g-VVJqq{pFM+VT$6mxUhJ8ilV_m$keT_2r=_w6?qpdPV3-tx@<~bw$g& zQC}H)N^8q|pjU;S*4px3=+&WTw6@gCe@*CF)YnAei`6wP^?JBA^c<#N+fuKG>w?G` z)OCq8reBvv{-Lf9jzE2VqE>4f`G>k8I1=>@i8`%mF192|rC=EQbd)5t&6Ey1y!^=*kp zt?8N2+k?n`)a{Awb)BB|r||z3-RZgmRdlE8_Edp)RgF~9ovy8@qB~t1sG>Vvx1$QY ztE#68ysK(S6?j)wM-_NiRZA6k*Qy(-0`D3*oGS3Hk;AA0?;1IjD)6q6L#P7p8abFM z@UD@Ar~>aAIgl#wu8{+%4DTA*pUUvAk^QI)?;6>c%J8m{eW(oY8rhr5@UD@)s0{C_ z(o}|bRV}Ct@2YC34DYI{sSNL`QdEX_RW6m`U6n&+cvqFAGQ6uwP#NA;v0aCERczPc zT@~APcvr=C9o|*3U59s7Y}esk729=qSH*T6-j(k#P=R2~HQn#uzKUr~7g;7cm^2Yf;0et^%Z+!yc} zmHPlbrE+h;CsghQ_?XH)0UuGh2jD|0cL#hxpLI`A{ahg9H{%=YtiLtV_dk#N)$O}D zn6{}SgpNqH6Ka=|F^{T!O2#~@4k;P)s5+)P$@_SeybzC{7vhoiLOkYPh)3fK?U&kK zX#dm>LIQJFWQ-=v1mO5PM@Kjr&|Cc4|)Nqu1O6P|8 zLR}gb2z6~(DAcWCkx=)B#X>zAmI(E1SSr-3VVO|xhNFf0G%OeD+pt2YU&Ap%{To&a z4M?vR8kjy=Xi&O&O%6^suiYW(<~2Sv-MkfsrJJ|R@U-;EsS#=Ekyj(r(j%`%rKLw+ zjZU8_-!UeAmeAPr*+S#0e-|2GV+c*CQ9=`IOrc3Nme7$kKB37qej&b!M2N2+5#lRH zg!q~fA--Bfh_4e7;wwaiW;dKD#8-s~@%11=d?knwU$Y^^S8E9Ibs9p;YMS>KzBWUq zEq87g;_ESlj!8G~?R*V}OyjFBg!sCPZO1?RzHP_9t+pNiw)%@6|G57DVAY<_0J`(_ zwcbd8U1cmlD;W*Y;@`#t#AQT){cmFe4E2Tj!8ABWlY0OdUo_tZ!1zGl2f*0s-3j2I za`oR2|L*@I<7?569hublrssDe6C1ZeCp5kR9pCsmbX?GIUhq zOVE*xTc9HvU)1Wthek#;o~Bc3--v$e$OO}e=@V*q(b|Z9>&Qg)E^2;;tyUL)me(u#uOpMx z^O!!#S){cQ{nwErBb!hk*|-CAawM;{aYyJB6Mj0vPsG)AEBNBblt%by)~hgms@Xzo zEBNfl)JFaNQyZ_w^l9oNtq%NhWLm3`t{dU6BhwnMK|S5n>v4K3{k_v0;j<&t8?VLd zGt}o=9r)oe8wS{>v7k(sShx^C3VF|+Y{)U%Y{@Ayf+x^AV{ z|Exy%^2n@4{c~e8)u0kuZhf2dcWkS0Au=`R(`FGvqf)$&Q(8a zb&y{~=C*Qm-8e_|X0QGK!`}bjRu|N6kaHQ%@Ps(E6S}DOVxfy`Hwta6-6XWB_7b5> zYBvjQu5A)(s?7*xYO_L|p9$q!-YArBd6Q6~<;_CHmbVCTGA2}Rd7DtBW%GF&=U_68 zlP@8@)>VkFauwq1TZQ<_R-x6^&ELjXv&ytn(se?7<*LxBZgYPVU!^M3`1(|#bx!k{ zF<+A^)A(vsA-)b(h_65u;%iTZ_^MMOzTQ;m+?vOP_!?88^Q*fE{rR@mI{fYx6d$AiFkir3$iZ^A@Tg zyEbp83bJeSCaNI2Ho0d3*|m8CRghhq*HZ=AwRs&?kX@VCQU%$yc@0&NU7J@^1=+QE z6;+U3n^#f=*|m8ERghhqms17VwRss;`XcPTlq$%s%?eeJU7Ka9AiFk8R6%xa7O8^l z+AL57*|nLc3bJc6M-^n(W|k_*uB&(fkzK3Pse-26sIos`cdG0M*o`Xt0$NjLAHc3u*&DD6RrUhxOqD$WJ5gm1z>ZXD1K=K|-2vRA zv>SkXlv)G0M`>38_bBb+f#QCjodMkMvlD>(eRc#KK$RT;`%`6mzjAu^EdjiwbpT${S^zI;8o*210>DdJ1K=gC2Jn)m0KB9wfS1$(?C7=s zebfa8kM_UdUv#|x-@FIl-@pIQzx#jnngQRbUW>i$`5pCI4g9Zq-M9qx>#=vV*1-3w zH;m1w--yBIsyAxjbJbR(3DdX6-qTuhF7!=9_q)HDuytJnzpLIdvZ&umz|X0-YR*Uf zwvp4CfG<^V*Ia=59Rq$?y^{#*x@H6P+3nzS)w6Nt2^I}ZD@5LJA6>5v2zh_HKzi&$oatig5aUuThrI>!-OEt&| z)XT<2nErB1zwhN5)KH(2rPg^fpZ(1K(U-G>_ z@ecuuwX}Mmx1fA$@mIB04}uFA)h2I%#Wo(A7t4BbORrtNJj*ZRK zbv5!RYn8(9jkPK^3)5FskAfbj@Oxt&7n`l?YUE+o@e0S0b$o0NrXOED26}?R@noG4 zo2%<;Yv;)?<=%tvxu3GPQ>lJ=)to6~$FnxWs z-ae-*{O(w%M=!_p)2sFNIYZ(1$2uc=1*V@-t+&sa3co|vnb9jT{mklF-tqs(9sh5I zQV(j^YK2n|300*Y7K)@E5sIcB6^f-Kp|aws$7Na~^@LC|^@5O-dQs?~@f~hzi+o!u z^^#C^>Sdvt)GISLi@Q=bU6PJJr0Tk12R-BU7#-)fVRG5ppZ zsW0W#JyTx^?Uj--{MO#73uM|psSQH=rX=aL_Df09Ywe$sq}MtiB}uP!U}}^6#X%`a zdaZ*~lJr`Kq$KIJ4o!U{?>j6d*9lmMr@oVEZByS19g+G$s9owuq4uetggT^t7V4P# zMW|EiSE0_S--NoPByqL6RvR*{TeTAEUTq5XsJ4W9R{Ml{Rr`f{SCdem>VQz+YFnsZ zbx^2(bx3GHby#R%b(PSd>X^yL|9)x$|KDoE_t%}pciLUePyN`;cjCE4J*b}JyZwEp ze&!KJDRX;sFY|D|d+$(l68GdCW1h-)_{s5oe(&JB`)x7b<$D1AW`+5_ojY0kTJ88Q z!6U4xeAnRPtuw4m)@6L}zK5(Ataq%h_KglP;_wN0YpW*Yo@sM$gahb8n zID_XyQcUv&_j0b9v(J4~ja*3{ZSWnJxf-XJ!#LON%+*MJo3<{_{ap0LOa90*hnLOj zq^qh?&Ty`D4DJs$O_S>IC zdvdj>e$DQYJcO$@x(f74@N4E`@&%Qe(uQ$~?F;ga$sbhfxZs=abD`4K1za4j3%=zj z7yJka?-d@u${)tJvGWQxA^Zy87my3{K>to$@XZRn;uQ4|7yLL3uXx!S$OS*Rf(vUu zy9F2Pb-}F&7yLvF@0EA#tGKuXh3|kWZw~l582pOwIQwz_QogO8S6pSj!msch2f6T@ z=43ATc^6(W+W#XLSLot;vm+OLi$Q*c;uPhAZz1Rv{HSa$_$d`$ahq=?7kmdnE&?s+ zFfLZ>V!ru37i)C!Sg4i@zKI~e&EDSk1sD8a5U*HiJi!G&M8hkd3*F4cZ76~}E8c}o zz6&J35?mSP4P^2i2EF2`aGs0L16-)kE`6E#!5I8Ph_4dnf^Q1x6|bp&Tzrord~x`9 zF22^qXH{Lf_!&i2FMl^)IecG2{+p@~%tibPKgEQLNI&%}7kooWugI#mxzGo?748@r z!GEL=I;(1RWFuE`?5zGBVr{u__3mOkl_+x6LRa2sbFS)jWyWIOu6v-atZuOaQ!`h}dylHA?kG^ewJ-)|LO_Sd6RIx}v=j?Y-mw5IzJA!xvX`)iG)<-|w@i zu2=W+J-OcCXZ`%d$Nr9HwHm~C`D}0Y<>!RX;Jf*+HqS9Ld~eS?%*V`^`QBgO@pFBW zeBb^(`Oe@y`7U8o__?6XNB%>6?7yQX{2%t-15BzaYya(&R#ibabT{2670~3MB3V!| zCln+|&WMVL2q-xxi6+dL5HngisF-t3m@$KqoO8Up-nIIhVP>BB?)>lnIy2flKCa(7 z75Y@w-lx|4?p5cg*}whoW_~j7!MqpM`MYn^YN=iLpMQpY7gb(dbG6!E`39@hymX|> zy;`O)*7fX`7$UNQ>(JdjPQ+ib0COvriDK&D3%qRF0(64oJFZL73-Y>A0s+l4BdB-#D;6qQYrY`y)t%I0xqwsu;oY@uXxoyS#ngJfShyHq9}f7Y>XZl2!B zw^`HN*Hk98g7uMCq%x@usJ5q$NydYGPa5m}qOwONd&$rJy*Ouq5?>u9jih8(_zP4f z>%oB+!|K3d%;wvI)xz(p>>0_1RaZxT<0Z*fRL}jrw>b+L)zwi{#%VCrsYV->9X*DR z9_>fZgq8d(l~&cfPCc%CCaAMgsBAOemfxr>rLyw*baTx$D*H}ud)LMFe=6$#iu&KE zsQ-h;pS%8V@*h(FOYefz|K%MIT>oFfM=q)V2TR8Ff4{%3|2yNR^7{X5&ZPc7jWenL zPv%VO|K5^u{oj)_ssGQHjO+i_oJsxPR5Gsrn{X!e|HQx4|C3N3O8u{{wWo?jssHD2 z!u7wp@>}i}uK(59t8)q0|LSz$Dv|nMoufRLaQ%NbCtUw8Mi;&JN&SDWWL*Du>i-`(lluQF&ZPc-LvG{x{|mW|>;DgssXD$2puGOCgsi;&XZxhQ z{%5PDy#8lfro8@VGpD@%-^YJS>VL7Wr2Zetw`pAeujfqa|D%r-M;}FwKEfP*^f~&- zbo5c{=p)+EN4uksghw4Dk3N1LeQcGZu+;xYABA_z%j5e0X3nJkk4VP#|EH31{XdH{ zssG1G#`XVX$+-TXE*aPV^Es3Hf01Nd|KBJX*Z;S1CiVXk$+-R(hfwPO`}sDh{~wZ! z>;K0jD{r|FLT>rnrnbiM0PRr~6qsQ>kqy6Za z@G(D&)c@r(f$RS*e4Et&<@1T_|L^5CRsR<#&D}rm_44z7|K8XC{#jj7_!D)-ub0&o zhU4l=!}luhagn;-*F<$J8mbM@x@#S@Gu3s8n`sTTnp&xrude*PUwMXW^M1(tBJTsW zL$`nEGicyIo=v^^F6hZHb5u^xuSBwBf(7R#~MbNuq zSQJ6;ieXX&y(@-65%jJYIz`aCVrUdW?~0-RI{)tS2u1jJmxn3Bzq>p{5&qrfL5lG2 zE)P(Ie|Nc`BIsSw_fZ7BEBYvkpm#+dNfGp}=vPq$y({_%ilBEz-%AnnuIPIxg5DK< zH$~99qVJ*zdRO$F6hZHbzJns@UD3Bw1idTzHj1EkMc+!1M!EM#-$D`euIQU7g5DK< z6GhOwqHm-KdRO!f6hZHbzMdlJUD4N31idT9i4;NaiqV!L=v^_|Pz1dz#t9Tb?~2iy zBIsQ)T2TbOD@IF-pm)V+K@s$>7|khy-W8)6MYwlGy$bGKQLln~SJbQE-WByKxOYXp ziefaes8>-0P_Lp8pk75)fO-{G0P0l~0Mx6<2dGz3IR}+GQKS;!LW+a{9Vrq7bRe}5 zm%Gme6d}O*6tMv9DPjW7qlf`Gmm)gg9Exawvnis?LiO;o=!qEs)gLt-p!%bx0aSm~ zRDkM_ngUS$QIi3xKWY*{^+!zvsQ#!40M#Eg9-#W8#sO6K(O7`$J{kj1-AC5|RQJ)< z0M&go8lbw5Mgdy-0iuWnM_F#S5v`ccEMCtAuW~rF1lIvq#Cc+wIXpci2}8-D#J*r%UWHvh6N= ztkB(dd2Mx%JwdkJYfluq&z>Z-)Sg^1|5ce#G5>=`#rzNcS?B*Ct#Y2as!lbvB41ZK zR%@x9tevIm?rvH??Go)uZHzWWo1@kRZ&g?3c}QIeFrz)ERtMkHK2^2*Pud1`Ex-f1 zp;y+c>0!ODeyrY7T@COoy@TFO@25HihU?d;tN+gW9j^H)=l|v_fE#>7GGnp zjTT^IkBwGTW4Db~RpWq-mR{o<`)Ra9mB(+54amQ>S0H{DL9mjt+wAoz9z^mT5Ih0k^dOv)~p}x50L*9<^JEe~zR55#lew z6i0g{;;+FpNBd*M-+~#A_9uvIgISLDr-)vR8iQ6{?pW$e)LfjmDmZSX@;+EiZ9Bpn{+!}ly`BwWIGIY(@HVx@E`&*>jrz72N ze}{C(45T~k?-6(A&E#nRfVeAf7DszE;_kfJ9OXmYlQ#!>`G>nV?^@*LANsz$xyZ{0 z!~VQ^$oJd7ARfq@&rt@$!65e+9xOb7?FVgsafgE3UwEkSAhsW}`9&TMa)06B!b8}8 z*nR==NRayrj}#u}+HHK1@wd-XRW$k(?MOnLELQ&SPLnzAH^z@R9!YyR^Tg?2SAqA0Yh(Uqdmu0|J%Lc1EBDGKdsbRu;GQsUFNkfPA8Mn{T5 zyBZxR3hioKKv8H{<9v!jyBh5&3hio~M^R{3L&;ibS3}8KXjenYT4-0}EQ&z88fQ`j z+SNFNBG9hJ=@fx>HBO@lw5xF{MW9`cQz!!MYP6#Ww5xG4MW9`clPCi1YBZ$?w5xGE zMW9`cCKQ2oHIAbQw5xF}MMmNU9z&6<0F5a!0?>#eR{|PRWH_J!MXmtUr^qlsJ&Ifo zs7sNdfI1Yp3{aaQmjY^0@1pk)D8JiuA~VuJ*Y*K<#rkfZFGa0BWDR0@OZt0jPcM z3{d;rDF;RoMJ@ysQlulGDn&W~s{EJN|I6&DqGcYirwKi1m%GOg*)wF@!}d&}N9=MJ z`cZqfY#4gjU&Ep|9*Gg}%0*5>f@GkSZ;OR8cAPz5R}mDkOze2`QwCM+KZf+VwVya_xF6MY(pp zg`!-$-b_)hT^Cc7YuB47%C+l_6y@6W28wd+dObzCcD;_GT)Qr!DA%qFDay6$0*Z3& zI-jCkyUwF1*RFFZ%C+mY6y@4=4n?_kolQ}$U1w30YuA|+<=S-yMY(pJPEoF1r%{w^ z*Qpfc+I0#=QM(o>^?};em`qXBuEr#aqINYVQWUkTF@d6}U5)V+MeS;gqbS#|V=2nD z>lli1?RpJGxpuvpq8Ffu9Zk{m0i!6|9x#%k=K-#w=(#!2)EjjUKz%4@1JoOS7C^oB zGjpIT<#h%?DX-H3N@tx0P&(^WfYMo~0F=&Z2T(feWPp05CjpesIuW3BR$GA5S#1DH zXPp30I;%B6>8w^c$XDa1WezGSwb%ln)M9ghQj5(1N-Z`8D7APzK<#rAfZFHd0BWC) z1*m;K2B7x2F+lBeqZ}9`DB2KkW$ydGowhtr{q{etJ+Hl~&g%EI_OtrU&tBD7map4- zE&UjE&F)jxdHgO?z5heiFMlTM*QzUfFH!yfQT-|XW&K_KGyQw@8-VTlL4%A!!#C=w z-vP8W&Q!kv>S+vC*9{+QOg9$%<8%Aw*6%C+{qOGpS8VzRB~tt9AC^e%tAA7?wXeRi zL~39C;}WTT^-oHq_SHWvk=j@PtVC*G{qqv3eRJKG@;AOLk=j>ZRU);o{#A+8zWUcC zQv2%Plt}HXe_JB8ul`+$)V})nB~tt9Ka@!AtFJDR+E-swBDJsnW63k}cYi98jv4*u zlILXGFD1_l{aW&Z&~GI#3au@9NoZZE=mdRzsptfKLuvVYwXwAPz1mb-{$6b^Eq|}J zl$O6&TT9E|t8Jy_@74Cw^7m>-Y59A#v$XuZ+ErTqUhOU|f3NnGmcLhfOUvJ@eWm5^ z!T!?n_uxQj`Fn7%wER6dR9gNX94;+?4~~?|dtl_1%6njFrScvada1kzhEe)5zZ-^G z`ihWM`l=9>z9tkXeO)M6`bNe4|KI1{f5JWZ6RVj2>T9}U{s;f>&j0RtEArHTujak4 zdg@l^tyh-=IIIP=Vs&2rf8$jF{&~H?^C9q3xUZ*TYu` zy%8QR^k(=#gx(HcCG<{sq|m$JQ9|#9M+?0lzFO#m@HIjohQ|nf6qcThz{;@n zWCT7AkC$6N2~QCEG(1u0v#@k$1U?T>mTg~zrwDx+7QZvFDlC3y;H$9soq?~z;&%qV z35(wu_%27+4*iFMnfAc!AK5;e|p!g%=6^9KKHIm+!&2J>j)diVJ(w4k@AaS-mhbhT9+vO*pb?hu^`IG+@AaS+mhbf- zh2?ua7zoSvdN3H4@AY6PEZ^(FN@4k44^|G#_j)itEZ^(Fg0OtA2djkN;CCokHT2y-~Sc!zheGZ%zr)jXPy6pv|yh4zAw~Vt(H3Te={w2Er9YX0hFH+ zY=O4;f35+rLiOvv{Xggbm$U!tg}STUf<}5Xy{$S^KzqH5-urhu>;Fn)l~LaRvo&`P zF!VPxD@OB-+01c~H_ylEyv*iKQ{*l3Z|CSVL!25!bB{UI;r@(iK{WT6(;V*0m>xuP zk2&4pevBDGH20V@9PY!I8ANlBIn&|(3w0_DJnt-r`z~e&(cELsc5pr?b54-=Z;pfW zIGNW5(cEKR>)`xN=G-8fdrb997d+3rAewv3c?G|5?w|?DoF7D!k2$|!Ew;~h(2Qg* z2%_1?Tu`tM+ZQ-!N-`G)(ez_3ELe~23mr5knTvvG{xKI7Y{2$K4w{tA>w;(kGOsJx zi0#)o3B>DzXa+K`FWAJngQg|(h9H`P%o_?eWBUybnwQKQgJ=#iZ!Fk??Ke7TVlr`#tzZ{N2Tf1r?ZGw3Z!g%*(LwW*d53im@;eIlaCFcF zW!`C_U&y?(U@x}c>7ZZ8Tw%5G3pT*(vxv@A?Odv3LDF#n`+4j$-hx%^=0#U7G=l!MiqzV(_j_i(>GuO_O5qu1$kt@UBgr zV(_j_jbiYw%{+?1yEcwc4BoYIm}2m*jYAZJcWoS`7`*HJcPIw$TAN2Pc-O|a6oYqd zd_ysK*T&ZrgLiFwMKO5S#wv=zyEeY07`$ua3yQ(JHa@2qyldk#iov@!KBXAEYvU7& z!Mip-rWm|yV*}xqF6p4 zNwLa+1jQ-=;uH%3ViZ%hfb#aEqz>jeh)|3GPf*MPJWeqau$*EB;IaSm^?%i_%38)y zjjBSM>{UXW?XQHk*k22&hEyTdiz=krP=!)* z3aJiOA=SGoq*|DTRG+Gl>P!_co{KUCifVe%#`fq!c zpE-A{AnpjV{@YOnzaKGoxK*)zr^dQOW3|4$hv$(71q}qT>Oa2+!$nCzOl;pxZg%Mh`1@px_ncWA2@eI zh?|3~%QshHeZASOgzZ~`tjqsPKNoYaTY}fIPh+28pIeH2zsCN+e%D5RKx1Fvfa@SX zsIeb#&~=d?(g$;NJ;cNM#T;E9@rXWzqZ`geD^I_Kqgx$O(=X-d)<9GzX65MCL^SlF z9NjWRQ@@;}TMN6{~UmUFJq z+0J=F=Q!`zAwripmk3?zTq<;#bD7XkXQ0Bu^!WkiSl`}1kYG;PfHO@?-G0rTZvCeFvan2l}@y@kE z6P&q16Pj~wb_c|@UG346o+?hwxBq?YqL4U;a%%drZ~K7eHO*xUF$O`4)0o@L2-E3`gDrJyVj>s9Nx7)mE!QO^(hpGcdbvRIJ|3p z62;+N>k}ys?^>Tgad_A2(gJaK*ZMe$!@JhUQXJm3K8E7(uJvmu4)0pOn&R-T_0bfE zcWpMKIJ|4KDaGMko5xce-nH3;;_$A`<0uaA+B}xx@UG2cC=T!1Y)o-@*JdM%!@D*c zQXJm3*?{8kuFd)shj(q(qd2^4vo6KqU7K|%4)5BmO>ubF1tzHlN9A2>ms1?xwKkOE z@UFGXC=TyhyOiSauC+@juH()_D6Ro6rg$D;FvVs722pH!4$N8_gef)=;8Sb@z@ylBfJ?D)0Ec2@0XD_P07@x#4WNW#R|Be1Y&4*lVxs^> z6dMUBq}Ww}suUXms6w$T0R{uku_1sx6uTI(n_`0jyC^mYu=5Ww{}ULy+8Rn=>}snifw8OoKnaXp?R!dK>}uap z0%KSEmJ%4d+BcNI*wwzK1jerR6(ulswN;eB*wwzI1jerR1tlyH`;hV^^JNH;%EZYZS-W)$=Hhv8x@SIL5AanBo|_+98T#>}m%o zjPM;M)8XP7g4+`pex0@04}6>XFx}acLH>v_=SKADBclpKE*o#+Ee@jz+?A5mNmhLiahZ z2&oa| z+zol!Eq6m!xaDrhGj6%x@vK|!cRc5o`yJ1_6Xf|`a3>1A=uQ%P$(=0pvRm#ByyBL- z1FyQ}?!aqqxjXQ>Tka0L;g-7tZ@T5~z*}y)JMgw!?hd@;mb(M*y5;V`dv3Wq@V;B_ z4*X@@f9Nihz53MIBJ`QFRp@hPo6r}|cA+nw9YU*|ofY$6eSuWW|Dahh|AXeAbpE6N z_dmG%R}21cYkumSe{1tr8(Z^M{m=D(bL%E&xTCSoak@JS@iccN;;HUch^M$C5No(6 zBDSfGzDuh-uNg#NrB$;C>t0q(_axk}EO?k>5!St|GWTTUwSq@D7Gd4Xs^zvrUOSY> zu?XvtR&DnbCpdpfq) z4`IE}s$YclNUOek2DUc{VZG04Q1mP3?wN=ULs;*#8Wy3C*lOsWh3$<(SnsnM6`_yV zYUG}c?TtfN@3R^gp^w;V?4E<|$AqxnXB|_7K4R+__grj0HiY#)>)0an5$DdvkL|~W zunub-SA_LS>o~VPwl}e`PHHtNc$0ItJL2&c)=RD93*O?~?Sa_T!n&!|wBT*d-JXce zEM7ltR`3qzZZE{<7S`*m<^}I^?)FA(VPW0QYEkeW=WZXwmKN6Utd<4ubME#IOrT?Du0BA$B-dZQ^Z0#iV>w^aBcZbF5Ckcnu?-19kS-o2uuZ<{Q_xo2P zS33HMWp@j;ExSvoP1zEm6Uy!sYF&1RP^+@rg<6)~Ce)(rR-xu)w+J;WyIH7d*Pqf>KTTc3T}WNMT}WNGT}WNAU1)o$?4P!y zRQ6fhSt_qX+vQv(_uK7^6x!pA658vG7TV`rEwtacM(BVuM(Ch3R_Ks3PUx^RUg(G; z)v})FNVTkMj#SIK?nt$)8zoW?>t>16!@5->^{`GQQV;8a5~+vvV2RYjdZWLx!cQm95aB~&w<7Ah8C>VNa#V z_O9cUVDCCc3HGj|lwj{VLJ9V+pP&SL*N;~e-|a-UFYwl1ib6~9h87~oxhzD@UHW>Q3Bp|{#HuByUyQ233%7}n<)YB zI)4)-;9ci$qy)U{{0)?Vcb&hU67a6`*HHrAb^cmPz`M@>jS}##^M9oTyzBg*DFN>~ z{})QYyDsQV33%7q?UaCbT`-Um@U9CSO2E4=@F@ZBI)6VU*t>p+66{?+ND20?AD{$# z*UKou-u3;IVDEYxRDag0XI;h8Q^+KGzDBo ziQ@r_DA5G4kP^oM7Et0?z z0W&C32QZxywE@#8Q427Y5@moXl&A@qOo-~U~e(f*%*=8u2a|M#`Cn`;^K8)uKux6WRne}3zC&OW){_s)KyADjb1tDS>F zYn($uKRSnnesYco{p{um{o-mus!vzwH`fqSJ-I@v3s*?>-3qBrTOrk3E40ZC390^B zA=Sw&wAIZQ+U6DrZFj2(sg7hJ)r%~ox{!rb|FMwjJQh;DtwO4+RY>)-3aL(3A=Sew zbjbCD4!ge45jV_a<+;^`G`EJ3?$#7C+%h54ttDi+wS~y7BNTA!3I*MILLpcA9h$lT zs8z{rAXM3HD3tFu5-M;T3srHC5vuAQD^%znCsgD%5h`|%7pmqq6)JI?36;9dg>1Kl zkmI%#a@|%!p4(c;cTW%syKRK3yKRM(%Os?HB_ZV`2`TSLNV!Eq${!L^j*yV@fP|Fm zBhQ%E^GLdwe#QtpkA@@p#Qzw-Yp=6^8P+s>oHteF2n>rXZR`)F0X97%6gHbI}mZS^(se~f6sAs2)_@p zu674u`!&|f99{e##2OQ7g#7>S*D;~$Cj6ZVF8kFJLrsuRth$+_%dcZn=y>Fls&3)v zzJxeA)RbdY{7%T4?DFfF5^9F+Q>x;3Le>=b735Px%{f-Z?}V(WF266+LM^a;T2=f` z$WqtsMLs=Li(?V*=X5uPd`74?$0FX(8EzW+%upSUMZBLgUHmS~niZ;x?X!w_KWDkT z?l3!458G!K@qW&BdEH@7s6MvODdPQ{S3{*wFuu71l%Rc|2Kq2x) zRYDxy_YtoP6mhIliKF`g;`M=Ij#VoEA@qNe`>vj%B==oCNlEUz%2Ja1t}>M5zN<7P zx$i1PNoZH=I7&jhTE|in+SNLSlF+VJV@g81T8$_P?P@ioB($s5fRfOzR((oByIS=q z3GHgtr6jbgRfm$$u2yYILc3bEC<*Oql~EGf)v8HJXjiKSC81rd>Xd|bwZfEycC~y; zLc3ZXC81p{my*z~mP1KsSIed(w5wH0NoZHAgp$y%Ry9gOyIRGRgm$%xC<*Oq6;cw~ z)v8KKXjiKWC81rd0!l)=TKSZOcC{)~657?OL`i5@D?~|XS1U+KXjdyhNoZG#C<*Oq zS(Jo!wMOQYwo9HDPSKZO8|Q*Sq-p@5qGTapCnc)_c2KekU^^uX0NW^;57|tz!YI zv2_gK%m42BKevJ`TBeEHUFdkXhtNO2wW-@v?$^xiCDh#QE!4v8Bh=FEE7Z#EC)C>Q zFLZ)CK&Xv7R7kDk3aJ%bA+>fZq*iT()OxLuTB#LMYqUaYbyi6AF9@lQ2B9 zcA+lr9YS5*JB2QCmk4!p?-J_n-YwL_y+^30d#_M0_dcQC?oy#X?)^f2-DN`k+y{jE zyAKKta32yH=sqko$d$D|Yp^S8eb&XUto2z#+~sn=OI%s&vo3XItK3SHqQgoeAa5@=oN4v}pm+`&SsLKIT9q0lIIpwMXd5+PLy3SHw~ETpPe zp|S3>LgU=$gj7u`q^dWeiSCO+liZhtR81zNsxTo{cU8=PZrVm4%>GLn=3;757e~;GzI%l_c z0pc$2e8inzd&C{yd5GJ+a}l?B=OAwNxbJO?$Nh4jc{s0w^?8V&Z+&gu| z=DxkZz2D~^>-#T49r3(hcsT!q^=0TnYRZdhADh73z%qtK#(>J@zBM z4s}8Pb@2v{9{UmBgt{XCrg$SquLcZ{p~&j{h#y4f%J)te?O0SjT@K;{Lnu zi&;N^?={2yeh6{@-4DfEIro|)t`2ek-Rk0PoO>-0*MzwLZcXua&b^k1Kbrh}KYFc^ z|77y>{N$a0{AZIN|FhQy`7b6v?ia5u@?XtX9K90}e>3@ce)CR3zSiXDS?h6M<~oy~ zXPw9WnCne`p7kF0VQw(_c{X_bIc_xhc{Y0d`ED}#c{X|cxoPI;$u0trr+Vx^e zv34CyDb}uoD8<@!Af;Hl4xkik*Z!1Z?b?r0tX=z3inVJWO0jnBO)1u{y(q=nwI`*Z zU9BFJf_AmKQwrME>P9JOSL-55LAzRADFy9nb)girtJRrO(5_Y|Nq<(ocKwJ_tX)5(6l>QHD8<_K zeM+%*eUDPCUEie?Yu9%u#oG04O0jl*i&Csz-=q|4*EcB1+VyoxvUYuqlB``{r6g4A1T>{&55V!1><(x`$!<9?pQGeOfM+S$74Qrt zy8u>DvNPc6|ML1@Il-c3l=my7++Lx7eyehS<$lWV6;ckbkn(he=DI6{=DBYR&3E4s zTHwAbw9tJ|Xp#HA&~@$yLf5+=3fn3LK%0xP}bcb^rX8{=qY!T(9`Z_p%v~Hp=aE!LeIJf zg`RT{2|e!~7J9)wBJ`q{C-jo13BBy;La%s+(5s#)^qOZ0z3!3F8(u)@O)n_)mKPFw z+p8q>j#pXeT`yngJ+DCMeXokp2VPa7552;Q`LDh}D&~LCs+j*l>rXoWTj-NE8P`eJou&t>{@J*lry*YWSSTT-n zW5g;}oTJPBN>wX?Ty+H^7FtP;F8e7(mXb&6cciLA5V6=wb9C81sb*!6t8O905`6?m zm;H@W{VL?Da}d$iM{;!8-*EI%$W<31qN|VQ=(4}z1@|KNioW9Lvd`fM_aXO-zUJt% z-w_USKT5dh8*EoyhltgK2RIge%h6^3qek%HfBEM1vye2~5ddCYXM@>k1XhJ`D&4pHbEriy1 zErpaPCZyajA?1S!DF;mGSMNk2<$4Jzze`9tT|&y^5>oD#kn**Jl%pl2yeuK*VhJhV zN=P|XLdu&GQf`!x@}Gp1<0Pa!CL!g*3hnhe3hnbQ6x#1~5<1{@7CPuv7dqtC5IXGD z6guLSF;SjZOGxu-3+Y}RA;YUHWP0_4EU&&0c@2aDUPGav*GMSjH5RJmbrGuUbrs6@ zE)pv6x(QYBx(ikHdI%MIJ%x(AUP8rQZ=q^lAE6SjuTZJiPssNA3pw5ZA=euy2c;ayv=P#WH~^)jX5U0W|v8s4?_BBkJ6TQ5)w-nI2SrQls#&ru5A zwe>8e;9XmBO2NCfVw8e+ZAB>s@7jt`3f{H#1f|%!ewnAD2-gTBz>|JLl#ol$AQtVx)D8=4& zl2YtlCn&|<^+S|m@A^SXv3LCdrP#Y(Mk)5L@23=d*GnnI-t~QyV(pyld+QN_EPa*w*!wx)5+3r8)u@QK|!AA*C(=ETGi+fccba512=( z^Ky`{)-}!rr~z;e;5AB}4N!|9XXU_}MyWFaQz>-@U<##92TZ2aX@E(TIu$UHQl|hW zP^ukZJf%(sjHA>^fU%T15io{QZ2@yB)dp}arA`3Mp;T+YY)Z8P%%W6Fz)VWD0L-9N zbHH>;H3JNzR8znelsX=8Ii;EahEwV|z)(sZ3%D%z{ohmTlBac1XW$sD{dZjLGq>*l zch?K~`}KdSTR0}Ccc`v66R}=sJjcSZ9KBhH^+OXl7LMcS%|>hxn#i$`AJ@Q}gS=sA z630S*Tv;J>9I46*+y6GN6}kr7YZXG@k*d3p*ADUi)h@i6b8k9goe=L|okD(G9d8D< z*A4Oh{a&xDp?59*Zllm-j)nYwH1g&mZyZ|4u?Xws)Y!WX`7xnI9E-4SPRDq+BR@8D z9mgW9pVP749mtOhUC*%y>*#cxcPH{Dp&K|BVO^e@cuSBUAG(oa5!Tu1c<(OcO+zkz-r*4{GYCxrO*o!~uyyiJH-R~zp^hoG9zlL`i1+(s?@{FKLcG82yvLBA65{NR3b-H714BC=^oT zPDqV3q2}JbLTWS#we*$>sSzZk#*UC0H9~5<2&s`Gq{fJl8XZDvTnMQVA*9BFkQxO- z>hl*m-HQmF;YEec^kPD1d2yk$y@b#?UQ*~>FC}!ImlkU8WrWW6vO*VlPYQMLo)YTl zJuP&hw?e3s_l!_y?^&TP-g81-z2}84@?H??=DjG?-Fr!>hxf8jPwy3>Uf!!hy}j3j z`gpGk_4VEm>gT;F)ZcqcXn^;&&_M4Up+VleLW8~cgf8~p7aHPyAasfMq0pt?M?#l* zD}{!79}8XXeIhi>`&8%(?=zv{-seJBdS3{Q@V*qf%3CEg()&SZl($-Fw6{j+YVSv( zYrLO?#&|zh%zr&d74ttx74ttxf5Q3y$I$=KuG(TsL%SB#q%^c^flFyJ($KC{N@-|UDxoyAD^;U3v?~=;8rqeLC=KmOg_MSNrK*&McBLwmhIXX_ zN<+I+KBb{usWPRZU8xeKS-T#fG;7!WlxFR^kJ7AN_fnd*>mEw8cHK>B)~>rK&DwP* zrJ-G|9h8Q4wYF0l+SS@dX=qn#E2W`bwP}=Q?Yf21tX(%#nzidDO0#y|NNLut8z{}% zbv>n7yRM@&YuB}uX6^bLrCGcFN@>=vzfhXB>(7*C?fMg?S-bv7X=qpNR!XyWT|;Ts zuB$1{+VuxYvv&QS(yU#-qcm&RZz;{%^&3jFcKw>ttX;pN^f3^zt0>(#2Na@oBS4VS z4FLg4HvkZ&>jNxG*8`Z8t_v_IT?e33x;8+gbS*$0rOR?)9ienhz+p<)034!pb-+PN zhjXAUptKK|Olc1{eMxB-@CBtEz~_{<0iRL26!0mfO8}oxx*FhPN*4oGQo0E65v2FEe&Ii0p>B@k2C|wEgHl;&=wG57_x&Bf|JRNJt=2#5|EIgXgU~_um|Zy*?dRwnLcG_!h+`4fN9kVgF!KA%ZXApF z@z49LGw<;BV*8!ug&d1^bM&wtOH0g7$d?rD;pp+-yUXm1{H`K?{9PXZy}QjW*nW2r zKmPyL{@&*u!SgOPyK^k!*Spk5-#OiH_Q3Z0i}>~4@1yUWmYF@VeOVDdewnW$f57a; zv6vtKfNvmw(Cp2zm>>V3kG^wy$n1md4;Ay{AM(+6P7j-XvHjs`-o43wsG{sh>_5Cj(&B- zXlMsVzXoC~w3DM>6EPmz#nCTAOoaIJPWZKuCqw)>C;i&UQz8C*Q+^%f=@5UeX}>P= zOo+!r#;=Dw8{%=0_0iuzPnzf#peOy~ar;x|6pns7#HY=v9Q{)eSC}I?`b`m^F{g3# zPepvz9L3RZhWMO0nxo$w@p*H4ZvJ1ORnPm6)cf}ukE$yIKl|5L08zV(f1+T}?R5;%yX~>TMF5=4}?5?rjnJJ^scFZ>#*Zncg;`S>AS` z+1?JJIo?j8YrS1UbG_X{^SnJm^ZlUE0zV|Q(61!4$geDPou4msy9IaQBg=82ZiqO4hgAa zvyeKv38~|mkUD}1sbiLqI!Xztzf4FSF@)5yLP#AYgw*jtNF5o3)GN`y61^;xR7yT9$^Iz4C74ttx74ttxf5Q3yhtU5SXjke+8E99! zh%(Tw)Ri*OuGEDx(5}>(GSIHni89cxbRlJ+U8y5wpk1j0WuRT@0?I(U()pBucBS@| zfp(?yCUFi(UK)cfEl!11o(Sqf8#4E~RGx>QH(* zpf;ta0cuftDxi$gQvk|QnhdBx=}Ca}11On27Vrk8#{g7| z$~6GhqH;ArwWy2+s1}t`0M(*05};aCt^&MB=@EbzD19a1c}folJV)s(0MAl-7~mO7 zUk+G7>7jt9DSa8>DN0`oc#_hW0J6F7fBgP`^#6XwKdrrR%djr1&vMXzuFux_{<9tQpX+mUex5lF z`p@-ib$$MLNZ_xPf-B9y6Nw45O3C2BHp5X zz_I2Fh_`B=Al{~ZhIqTxm}A*Jh<8~0e%w)ZFY-Gren0LkyASyii{FnWWlNFYW%2uQ zSK0l@@3#2;xVsGN?)p6z^ss(U8P?tPdoAc+{oXRHyX*H^(7*b9WmtFDms&0GJWI>4 z?ylc&wM2e@8P?tPWmYTX%gV6su0LS4M*ct<*4_07trL(x6nKqe>A8px2VUn`dLH5< z0UigBl(t9yXn;SzM@!E~{#bxNzsE{1K)yV{pWpJ*4#*!5@aOkQkFe|UY%Rx0im;MEE77X#!{ibyrQ#f z+$Y=4vs(+bw@(l{-)2-Rv{uvEA)6g?jknKz9Q^>+3_qqV@I5!=m-| zVPVnw`W0buNc7=haY*zl!{U(WBTA*CLBFb0IvVtmrCHg7QKe4`jdsKx(64sH9ni0F z#2wJbIMwBTW1Sj8;Vl)3G#1nngS%J1b z>aRc>A9Y!vNgb?r1sc@GdRV~rQ4aAj8pmR+hXtzp5#%-KbdJR?M?Z>Klg{8+ z>~ZvCh-Gvp$6}wOA4jZ3XK^eJbMzC4wdrh*#nn0bNyIvI4#(me9Q_nxT|)gEs9TJ6 zv_M@yjqUXab#S0waT({nlJe?vsZXef1NHqZ@&<%@IMBd<5_v;HJsfE0L+1n<5$fSU zBOf{^(3nsU2O9g(Ie}vc^>E-AA37&+ETJ9_9P2~h1db!r!-3;`=$b$iLOmR4;zQ2_ zj;F5pyT|*`FM+0X5%Q*mlQ{Y>A~vIL91ACNl=0M@x+8C1IEAB(w-(d`d5glS9A!MV zq@KuI7Ea?RmPFeP@Zlf%FSGQ6Y-WAmDC=2h37Eu=76)mJJyenEjS$J18 zpVR=)IaQBP7Ty&-Oj-7>9-=IJR}WH_y{iW(%ih&8%CdKLKV{jwT1pxAuI{4@dsp{T zhP|tMD8t^>-IQVP>MqK#ceR8v>|NbS8TPL3pbUFg^C$!Fisn)V-W6R-8F*JThcfW4 zXf|cwUC}Jcz`LTEl!13eGbjV^il$Qr-W5%w47@9vN*Q=pG=(zou4po4;9b!q%D}s# ziIjnNMH46k?~2A#2Hq8oqYS(&8cP{?S2Tt)@UG|@$_&Aqc{OD&28^c6V8AHK3<8X# z%)lJz%Cj5*P@ZLffbuN+0hDXl7oc3jJ^N|`Qz%P7+sa4BUv0WP7;g@7TH=?J)(G93VeDRTi}5M|B>C|9*T zK)I^t0hFtHER%}I zncqq1bHB6D7k(F^Fa54UtNe?EzVf>XeeHJ_`o`}e^sV1p=sUl!(D!~np&$H#LaY5j zLTmhsg?{vV3jO5w68hQiBlL^kU+7nVfY5LLV4=1C5TSMcB|_`{ONBQ0mkDk3hYD@- zFBjVE4-?wrUm>*BA1<`bzfx$sKSF4Sf0fWqf27bZf0WQ}f3(mZ|7xMV{xw4T{4qlN z{jov^{Bc4D{qaJF{0Tyb{fRXXR($PXS z{HRb(KPFV>$AxP738C74QmBrf5>hHxsGcvLaZb_7Hl<~Sl!_Hn`c+6NS0SZYg_K$q zQaV*gDO4e)O@*5JFA6C?Lr6IsLdx?HQZ9&)@zX~;J+cH+z%n;hX^T$MCc^{ z9ifx`cZJ&d?+Kmazb|yE|AEkH{)a-R`yUCN;ja`r)BjlLEdLXsv;9wn&hbAJI@kYP z=sf=mq4xflLg)Ldgf8&E66)Z8E!5HfM(9HSTcJ+=cS4>0?}fVfKL~a8R|{R_uMz6z z|0vYm|4FEa|Fcj}{}-WN{;xv4{ojQ8_-lpw`s;-H`Rj%H`x}G?_#1@=`kRCX`J06X z`&)!A_O}WR@wW+G;%^ta)ZZa=nSZU&P=Bt_<^DXOVgCI8?(hGK`L72974ttBsF?r3 z!2i+w|6}-n>|GtCEPGc6D9hf}e#)|UwU4swUG1eTdsllX%ih&)%CdL0i?Zxp?W8Pw zS34-n-qm)>vUjzOvg}=Lr7U|_TPVxk)n>}FceRPK>|Jf7EPGcQD9hf}ddjkQwT`mv zU9F`odsk~H%ih&*lx6Q~HD%#l(GQe`cSXNa7Ty*8LRolM^gU(aUD0=xg?B|iQ()lZaV@9Ia&vUl|jW!by>nzHO&eMMRJu2xZ&y{j)N%ih%&lx6SgbIP)J^%-T^ zyZV%}>|K3AS@y0zrYyWGZ9HY!yIM(E_O3plEPGe)QI@@{cPY!>)mxNh@9Is;vUl}5 zW!bxWg|h5jy-Zp5u3n%ldsoj>_EeZy&rtRhz|)j%2Y8CICj&mB>`8zRDSIN|eaf~4 zyhGVGfVU}o0^kkGwg$XL*;as8Dcch85@lNeUZiYuz;l#s26&dTO#v$?dpzJt$~MV? zHj}c)<)C0NWse0^r|dB~$XAbQ3^+{LM!2azWg7x6rfdV;q+VD394N0iTMv+-Y+XQ_ zvULC{%GL%XDO(GWpllf+PT87(7-ee!qLi%;h)^~Rcp~@xKS&GaX|?{nzW`KgfN~|E zzh3{-g2rfLqA^o-11N=-_ZvvOj-qNbx1@Rhv z565s-#4-9_j^RSYvHCua;UdIw`hJdKUT+<*A3#1nTn%x8evo6h1aYE%h-0`Eagu(R zW7tNVtRLYRb`Yl+c^tz$9;TZ2A)gxN_jQ`N6#29;zpvBH`;ku%^ZPo(T!wr`nBUi# z<^#xQhWUM+Wj=^}R+!({+2%vYXNUQHontHG9edNac^ii{dYW23ckhH;_M+qhKC z(FMj-<2GZN5mo)TudCVkt+CeFsUG3#`FRiPdD>2Gt@f?9QhQxnp+&W2s>5)BHdPy~ zU8?#GJE~tDw^B!+>RO>@=IzbfnD@Lo6VYdRZi4EwC@#n1otQ@QTO={T&o~=AB?~J$McUUu7t;SwJua_f~(~BP>eBA z`Q7|7^;nFX%GXz3qZnhd@@WO9DaLrNw5xcqVjNp4J()jUJ@(Sv^HiEyxuxQk;EtsW z6=R%Ks$Z~5-5-HXiQxW~`YFa*d9bFrQQaq&+aCC)Qe(x7!OQbMQTO3-)3vCJVmwcv zR&iL}=f&K8=#HXYYCG1j>FUsziZO2WUV84m#oX0DEO|unu-yH%7ehnTWB(ua-UCdE zYFqoCs-9V0p?esZX;N3{F=tUxf(ewILCGkX#Y8Y7=A5%4A_7KG%ybSUl_<$T4x$o_ zAWAU6xBFddyyt)Kx##}x{qA>yj?a0{`&)ZD(Op%0zwh2vbv>yr<&er36^<@q*NRir zFR0&10bMJ3wS~f4i_N2T^+f&Y;uA|g3>>9iWDs~q)klh(;05c|8LS@j6u3pCrD{JL zJf?nI)sCG(yP!dtYM+Jnj{+gZf4N~`2h>k;pI46`SA2|Kwg{s1s3F#R_1D4;)+mv|=m*2=vn9>M=|3n2~``RQm|f=4%)pg0ZgS$(2<%pKqfWyLRZIe13H z(W)K$f9aPE)&3g5vAm4*p^9<5Ds$_uRs3-A@nx;b7OCg12VY(`TeUw4R`;P%jN@k6 z)OwqAy+z6K+9>rymD>6s{bKzpbr*mK^cU4#0CMUc0CUx<{x<6R{~zn$=tt_i_3A*W z9#N}x9NpA@3p7>t?rWv340KV)fPUI`bqpA;eHeH`8?TNB>R6!745YNUHbor|-qXGe ztkLca{HTozY|+#fTl-(l0c*InOZ_0|*upI%#cg_K@rMdesvM?xO_A;MVy`I1fg^Nf z_&)W+;-D7lRMt+lZ^2`Bg}SSD9I&i?-aD#&Rk7VF@lI3B2fiKpEsFUd^`LvLVm<&3 zckfcXsQ7rZms{KbKPa;CrSqYBO&oxXr>uKadminboO1O8+Qn@>e6s37_?Qz+)jL=* zA5ZQtovL_j@!@5=DoDM|gGDCaRQpB%yCV%uAJI9YzC!Ltto3!(PAC1yJE7vfy|4IO`+je=;!<#v*qe&EKYA-vsTh5h z{Yjle)N{G-s}2>vpI?fP4}Daj`ozEv@Jq4bin0HP>x4(D{TpMm@J*Fxsdnxk``1la z>UaFto&OK25v*jHYV0bcMy*1ZH-11!jZ}q(MMFZvqhX;D(Q=`Y(Kvgt3aN3UkQy-x zsj;Ha9nt-S)c8r;k4KLYdLnwP(38>Qgr17_5*iadL+I(~nL=Zuy@j5M_7NHv?JM+b zw4c!UsH{o|J{KJzZ4;scg(gM^2~CQgCG>psY@rvTgN0s<4iS1Odc4rf(G!GTi8d3O z9BnQ%CE7yh)o4qh*P$iL#gSbHPo+4r>)&(liX*!Ywxl?+>tG9tBfAbZr+B+!aH^J6$B|vDHP>-u*TLf{j_f+vl;X&)gU3-E z*>&((iX*!Y9z$_t*TE(fM|Q22mdBA@t2O6wWY=mjdK}rcTBROGcCD7L$B|vDb?tFv z*J{Cg9ND#62_Hvx9Xy!g$gYD2Q5@N|T2voLb{#x`;>fOp`%@g*b#On5BfAb(QykfK zFh+4?*Fm4+$gYDP#gSbHU5X>S4muP^b{&jT9NBfSF~yNxs}mgJ$gb5H5b=ZX{WPFB zvg=@diX*!YMktQ#T6>=2$gZ_X6i0TgO{6%oYi$C>kzH%gQ5@N|HlE_huC-?=j_g_+ zM{#7=+B51pS;hC##!|cy;Ax6C#Jg8fyaAw+;`IUbC>{aSrFa#fg5s5cIux%5D5rQ` zK$zkcfDpy&0Bnkv11yS%0Vc&mfXgXv11_Vu1-O*rCg2i^8-Sq{4+1WxcrgPpf)`P| z3~-^k>KEVwiU$A&#dScC;u?S`UIHkiX*UB(Y1&PI08P6QpwqM)02)mj4Je^$*B62I z(X>%T2&w6n>(HVm9j*oZ_OIRl8&%N-JeDyc(S<_wqq6eEXb_c^Cq~1ltUNIqMP=oQ z(KsqAPmE}EnLO8tek9~ZW#x(CMP=oQ;YVfVi4lv+$`hkHDl1Qn{i3q+#MnP7D^H9A zqO$VDI4~+JPmF`2vhu_@I4Uboj6GF^-Gwl4mrH?iM;ex<}}Q=+8pUqQ3|= zkNzsuBKn(9%jjOA6QlctPI5|wPIfe*Q&d<~s;M-=IMoRVwQ@>@T03Pzr#U2ax)T&? z;}}A19aE^CV+pl)#MK!c9C39TS?f)jWT{y!t!T%cD0yS6Do+x}y9ruA?_XS6V#3y0ZLmuA?_WS6PR! zmLI_yy&0o?>*%e}wHCkb+VZ2hj@|}cXYuQX3Srl_g!HpI_e`EAsJpOYFb5+65qxYfy!a9~UdO!3_ z>p0fv1JF%YQ`YE%(9PEItkH*{TdWgUqnM)#Znc`B-Wuf`|0}CG>aU`YLcg{+yZ<`+ z80v4VmaNgoq2F33vPPePepkx5|94T$bp^jK&7uAKD5esF+e$Hg5!@CXgZAyEnC}d3 zk77D9_(SP*wEqyryhU(F=?v66qR&8oESbG|TVX-_NCU@VJ`o@|V)NsB5;@UrXns{Kp_P)1tA?m%Am{0h9f7n<0A=>vqlz?{)-a-j@*Wk^RfOievLnKXF zcfF1h>|L*=1bf$OD8b(KYD%zoy^0d-U9Y4Bd)JYaVDCDD66{@vQ-ZzgFiNm@y@C?( zuKJ~vfOpj|p#;3EK9myhuKLB4fOpj|q6ECFejz2`UG)nn0q?4xPYHNe{X9y*yXxms z0^U_WhvM+A`Vfl4yXu1}4)3a;O>uZv{Va;ZyXu1|4)3ZDq&U2*K7iuzu6lop!@KJJ zD1J@R#Oi%1el?&E#jgVNrudab2%b;zk%03kJ_2wq#fJmb=NSf2pXUmI`aG8d)aSVj zpgzx~0QGq;0jSS26reuO#Q^nrE&`~}b0I)|o(ll#^PCS*pXWTlnG`=4a0bQC0raBy z5I|3g4+iw0_}PH&6h8~ljpBm7{Qw;)-WSk;;(Y+^Dc&2< zj^bwm+EV-sK%3(DzrWV}zjOb;4#gf{UFWZOCBWwYxL#jt@?Ty5ujrtQ$2sHh(mkxv zjnE@Xe`bwhzScO>ItjJ%)X<}>lUbviphsJ$utqmSm7jz*+0W$m{S4?)`vsxO^+OLV z#awLB`=dUn^heg{TIj*0Ke0yFK@Tb2$r{DHt#N4SF4QU$fF4%5oAv+EzpIILDqdfu z2hd}zR;*FXgB!Ba0eT!wW{vXaY)Vs5t5gAcJiW>q5SILS~M2kLg#8LahAV0A2Ld+SWrdd*lJ8`{C@%~}uR zr(zm{x}(*HwI0S%#cTw1C#x@Oy_SE7{y)jN>*ti@+;t-*Id}bxlAOD4pd{z6>nVx8 zE3}J}=)1JrDapC(I!bcxx|WihyRM-m=dP{9}Lm!`%n=(|FDD1p99Q{x)+U16OP=(|GuD8YT#ijg@1-}O8txbK=o3GTZl zQiA)g36$Wz>p4nr-!+~R+;=@o3GTbbQG)xfXDGpa*H}t$-}N*lxbGT6iC*Z$o}xrg zz)VW?0L-97cffQ?bORJ9(G`%VL>EAg5}g5AN^}BbDA5s+rbGuoiW2PsNlLT>Bq-4q z5T`^Nz%)vn4tSRmrvcufL~Fp?lxPKbixQ^--lW7SfHx>{GT?PeoCKIki4y^@QKBW_ zRZ6q~Orb<`z+_4^1H3|s696w$;&{MIlxSK6O^pqYL(7wtI2P~(C5{0+PKhRf$0%_$ z;L&3L-(B7I^Pl|ApNrJ>y*B>G`+pik9a)WHT;j-T6ys7yR-+h~IkFnXxZIJ|DF1_J zT;a(26=Rqq>sO57PE*NgM>w)(#2D$wni1nlN7jrOS2?m~#JJj#H6z9~j;t9mu61P1 zh;f}GYetMwj;t9mu6Jb3h%wrcH6z9ij;t9mZggbLh;fr6YetNl9a%GC+~UZZ5#v@z z){GdpIkINNxZRO8BgP$$tQj%xbUMnv=q^Xrj2L%2vS!4%$B{K7#=TBgdE9+YH=+BT z?m`bZJ%k=~dI~+{$XXxcVMo^b7>_uz*2j3%=`D|Y%;_WaxYJkY38$aXlTLr3r#4$G|m|;^sF;PXuNZd&~whYLKB?xgeE%Y3r%t^5PIIZQ0N8c zBB2+Zi-lfth6=sxTq5*}bE(i|=L(@I&M=`@o#8^SIU|IoIwOT%cditA!?{Z6P3LN% zx14K)-gd4PddIm==v`-&&@|_Ip|~?zDB;{7lyq*a-Tzho|F@4AwfnzOyZ@`LW%bj z{ZRcFy@lRd@2L0G`|IcEL-i5*D0S}8z51i-?4e2e6m%fq}#p*nQ7JS~Hc1+Egf7+pZwSTRe^M0)npZ%xR z4eb7p=l{U~h99O+ibf~=a16nB_!0UP^&_#Pp^wsX))<2C@J-coQBSO%2%S(p0s34u z0^IQUY6QFCXR8tThR0PS2o66}jes~jwi>~4_~~i{%Hc89WAOZ&s&8bC!Qh2&4)W)_ zIp(4LmLLpj_?DQD`qm%}YWUVz4E1e67}W4>v1-(}2Vqddx5xHFeMb<+G<-*Ff7Evd zVMxPw#tuMzR}e-td{^v1)OQDAK*M*(4nloTkU!Twv4c_H8-(Eu-y1sw^?gAY&G3D( zLs8#POIc%wK_8%Htg*wP57I}hu_K@l(Z{T@BccD@-{mn{f#*FIgAoruPAgGA9)kf7 zKS8TdKM{lR4nIiamqqvc@{GRwEw>Kcn%-d8YDGv_BJrZ&#ZIa)R(UoqwKju{QYoxN77C;b(RJ`JavP z>pWYHoFF`2_K&>4*ihgo~y@-SMF7BUHjiZ;Wtp+KD1?CW9U+^5p;>y5W3iF0A1wOhkoc` zd(;+sRj3zu*k82y9`-YBo>v#`b3N>bTA?luQ(B?X*DaG&1^Ir^(^y3*19;1X|o!QKt0>Mh_x;bXWHyWBT>I+Ud-AE z`?dDIITZE#b#a)}-fwgj>JQ9ISnJ|&r+v`qYSeQ~?C;u~x;X4ru}O;BcSvMVD*Nn}@sO-W=|hDAwaSB6PRWLJhkNn}?>kdnx* z45B2mE2E5($gYf1N+P>50+d8{W$2Vdc4cUkM0RDUABD54eU#+vYA+>`T?K!mBxhH@ zQWDvfuD&{CSGxM@kX`BOt3!6BtFP{;Vu+=yukJ{I`s$7VsITsDfcokV1E{a=P=NaC z4gsjI?qGoW>J9>^ukJvA`sxlSf_5(@_b)=YFD3UYLhu(#Rs(*fWDKx}l0INJB|U(O zmR-P3N;-g_C>aI(NXf>49h7VY_<@oQ0oy6r0I-dc^#R{gG6MLHl2w3jDOm~lhLZIF zUsJL!;44a20Jc)H4qyu<%K@7y83t^kWC-vjC2hbL#s0r%$)_die;fYEGr+%+|5?XI zBu%l7i%6PcHH}D`@?ZS*_=sdJ)(H{GTC8Rf$y%)D5y@Jt77@u>tdvnPL4>{Vx1C^ti?JtB3X;oDsm&IE>`QvO+u$dZWcN{a*I%#$gM(cBew~)i`*{M zK5~aphsd2m9V2%Mb&A|Aq|P)IQr904>KeIEs9WTIq3-n$73xu6R)tzU>mM#{z3Lw! zbVhy2S*Pu>B^{+3fsWrfPLSAp6^Q6!q=P9AH zoH0UYJ5LJ@cE$<~ah?%6#~CMduJf$WdCqvD^PT5}E^sCYUFb{{y2zO%bg?U`q&3u) zRMNV{l~mHY)Rk1yy3CbS(z@K0RMNV_l~mGFXZOnM4Rs(1Ctx>L|lGgREq>|QXS5isq23Jx^>qb{nN$Vz8 zQc3G(S5isq7FSY9>sD7%N$WQEvfBM$H){8P^&Qmi|Hhwn|Ht~@3a#Nk`Wj$0X<$tj z$VuRTe*LfCum1I)-2c-UUav#Z=M-n_pd&2!L}Nrfd(3qH{pSr566QK*E! zH44rh`1^GIPS#5JUt_w%^$h(kw9lx7KQ?AKT+h_+M*GZ4_-A9L!}Tov9<xKGbXkS=)Agjamhx+5FKdd~6)!}-P^)Bi~&P&k6)-+b5&KuAbR-V;) z6S~qWusUx+S6S0powuQ@tr@J&JJ2=OOjd{goolUGsMk9D?_6iiM!nAAf9HDZ6V&US zInWK(r>xFg=x5e)R%ae`qlK8%*yzkh{ker)()iq2fcgt-6|1ul`lYq{58?k)>|Jl7 z6nobjDaGFP21>Da9Zf0ruGdqFz3V7Sv3I?WQtVx?r4)PDYbeFu^=eA7cfE>I>|L*< z6uhf3l2Y)l#t2HmyBfnO1@CGMqZGWWaRsH|U5(2r1@CHHMk#n#<5Eh&yBe2J3f|Qi zN-20(<6=s|yBZf!3f|SYkW%oj#s!pucQwwZ6uhf(9;M)2jdLjl?`oVwDR@_72&Ld% zjlq^hcT?BoJ6GNR_ZoE<;QQ2-`u=hE0sb%V|7)ZjanMG_5eIE#9dXb`&JhP~ZyfhIpU!IF7Kgwe0ksZ9C7KzUR~N$KQ5$tZXwlI3#r~&NcG1; zss|QY=sYI$q4T(q>R*KxJ1+|@ab6Kx>P!||=1dX#$az)hW9K!YPn@YjpE|D#EqC4! zTH(AYw9iL8=ICF(QbLI)DeojdBa6(@=3x(9h z%Y-&Li-a~ii-op0ON6#MONG92ONG96%Y?phN$6W=qtJKG=R)5*UkGh;z7*Q-Y!dpx z*(|if*&_6#vsLIP=PRL|&euY_oNt77JKqWIalRM&+1V!ai?dzmSLX+z-<%yndz~MJ z_BlT>nI+CnAQY0rmgw^S>(j39qBB+so>fLccEA z$y(l#RX*=GCA(06Q{IWyCFr*$m>)J&PlWor63h=9sy{;geF^4=4b>~5-d6G@tHZjz zWD{!DLqUHi+05#&?kL%UTJ=`YA4|5fI;=mHe1%%|T+p2*U$Z)_yGp)6t$H!&ZVU6> z#_kIC>#9#f`yLDP-o~Da$y__%Lw~mT-}Q6F6t10Z&|fV6_x)1wD%Z|-=&u(4JAbWU zKd<^iwEt%DzxTHa_Vub~MEhQg|J{2l*x##u67Bme{`c>zV4tsg&0@P*V&Qu*ODf>^ zi+w2CH4EQ|sa3%Do2o}eyKdooG4%@ge^d3ZXb)KUe#}4xasV^n>_K~}h40BMtw0`N zmO4M9z0CTSwF0?-S?2tLno78x%3E>m{0a@0;CnTL<*m7PeuEk%_+Cw;{4}ney->3R z->YespZwHSXyISW_8s619m(uXA);W}hceRF48s60!Olf#m>ugHHyIN;a z8s60!L}_?eYapfJU9AC>X7BnTrP;eKq%?ci1(as*I-k<)UFT7nz3W^`vv-|CY4)xk zP@28#`;=zy`W~g(yUwOGd)HZ{LaL%|n@MT*t}`gj-gP>q*}E1f&E7RnY4)x;O0##( zQkuPMhEnWZ)0ATGnxYhY*CeIbyCx{b-Zf4s_O8Um0C0GLFn^8phnbsk^>rOpLBN2zlF z<0&-+@GPYU1IAJ6Y``;=ItwtCQiA|bQ)(b!45bDDo}yHLz>}2f2Y7-~eF2YCst@2X zO7#XjN~tpek5K9iz{8a41$c;3Jpm6=st4c!N_7X^PpNKz`zX~Fa4)600PdkwXTaT* z>IArpQXK(zQmO;s4obBL+)k->0QIf51>8!hHh^0wbvoeYf9>&q@rWs2Mja!C$oW+$ z==>&RID3WEb)AJQw?xQxHKCBJ3x(Z)(BI=d%AIBMZgrfGgeshmh3Yz=2-R~w6{>WW z3spHQgd)yLq594$p$5)sp@z;Hp+?SHp~lWSp{TQ7$Z<9Zxz1-oo*NYMT|+45nnKmC zCA6Pw3+?ZQgbr}SLI=9#LI=5ZgbsEqgbs1*3LWa!6FSVT6gu3k5<0?-2p#Fx7dpyq zAf&Fs-Af4wht z-oSsn8(7V1fPeG<<_Ve(zjH!)XI2;U;$|}~fVx?E7gje0ZLYzWo6XC+a_wSX+-#vC zM=)EIcSE~6{zF@8@a1L`i+!Q$anSzn>tihThpHdK-;cG}7pmR}^>G&aLDeUrZfda) zR6P^w<1O}oYWqa}_xg9WEbor@Q@tGYL@mf#-hdSYxx>avy(V0Djzw$tjdmJeigkA}9l*pI6|8FdGXeYonG zQFpZ1f2;l(bth{dt9u-@vyI%!RDCt-F1E(%9uMtm^Y*OzZPeXt-j2Ju%}{r@dHe0| zHb>pV=IyqJ+X8h@o441VZcEg??BE~6|HHeQrIdzuH3O7}cQtiN!@HUqrQu!85=ygo z-A8Hmu6rrX-t{+1vv>WK((GM-p)`BfpDE4Wbq}T4yY8kmd)EY|;a!bglxFX`lhW*6 zf1)&d*B>d(-gO71*}MKgY4)z$Db3z>8>QL1eotxkuHR9bz3aD>hIchxO2fOF4yEB; z%_ybeUCqXnhIcg^Q5xRWY)EN%SF-`7;a$!8l!kXTBb0`BHLEBM?`l?38s62cM`?Ih zvo59KUCjzg!@HVwC=KswmQ$L&>sCs$cilp1_O6>L&E9nrrP;fFNon@3Ur?I8>*tha z@4AuF>|H;jG<(+#lxFX`p3?BH+Pjp7ch%mZG`y?!Hl^WRwYMmJTG7O6Z&JE7;0;Q* z0=!P?Qvp*ceG1?;N}mjPmC`2xrcnAsz+_6d1iV7&7J!#2-5l@|rJDg>r1S}Z7btyv z5sY<|ZVFgS>Ei%vD19toHKmUMtfF)iz)DIV4Ol_xqX5e(eI(#hN*@9EgwlrtKBn|x zfR8ABC}0_-4*@Kt^ud57ls*Wsn9>IV7E$_uB7{`fw0{x8YTMWkpf-u>B3KtuItI9q z(mvpV;`kr;|M@$w|1VisGOHvNAax#aXmh^-*j7E(u%}xJlhX?6JUq zIsb1J{BPOISb1M&POY3Tv#Hh{?iKRaJKbSIce%rb?si8A-Q$iFy4Sr@=sx!m>A~*IDQ(uZz$audC40 zUN@n!UU#8qydFa1yq-eOdcB0kduIqe=bb4u!RswF(d#2L$?GfhyjQcP{ROXPP5X=9 z0Qu`nUd@{Jm%W-b?XP$>YuYD!HEY_Zc!T8`uX;m-Uh^f3u%`NwMOd%x6f zZ~Br&Sa11~MObh9l0{hW_>x6f@A@(iZ%y-M9^Q)kG7oPhe3^&0lD^EtTPa`W;jOeU z^YB*2mw9+A>&ra6HQlS(4rX{Y+rdn)W;>YW)ocf|y_)UdJ+Edvc;Bnp4nFW|wu3od z&2})?8!g|)Jnsgf`QD8}3%r|z7J4@eedygHw8*bO|D{~K2A{%`zQ_y6`<%Mx|(&tB@P-KXeHwSM|x z+BJGiYopg!s{qf{Luy4}OLaE*ZtXkm3vHFU^7jW?PJ2h2tX2j-p;idqqF<=49&o*W zhyIYdYv}X(R6U{3(C4drhOSdr{P;ot^?%;WvzPzp{C_@%>QDF!gdXze3q9`76S~iz zEA*&8N9Ym%1EB}}_l2JKCksvTUlE$rW7R+J8=Hj6YuJDgRlaC;f3kk9m2ahrOK8gI-qXelH_*ua_3O$4d#_?Info@)AOK zHjva>e<9LN+Fp#b7kVkuLFna(jEnSFA~G)0Cr4ylq)&;+xJZ9BBI6?cwTO(1^r;aU z7wNA@WL#9d$*;Wfn-Lio>2F13T%^Apk#Uj!PDI8<`nwSs7wOX?GA`2N5g8ZhiHMAg z^khWFMS3bSP~IaQ86=d6oF$Zv$hb()MPyv0=OZ#M(hHGu!9^etN({+7i+`+%AG&{AKv#vJ0#FVWdN-L9RfW9 z{r>XIKP^^s1u(w;*S}lumnvRY=r30Q^1h6GGp})eoUg;VbKc#K_JYRwaiPw0T)RI& zr)!)aPp{zTO?R1~T*Ly9g-h#)aHO{@$%j>do8t2}*I{dtx%j>fKw?6j_jdSlA75wj=;bOg;IaA}@du9dyduO`5-ffn~ zx%aFJe%>sX=QU<)oO{o%I|To(*)Gp#yr*&Q{a(F6Xn)V;d5!lq&cENUcNW^;cX@u} z1C4X=4_uz#n4@tHKF8(xjky}<;B#Hh(dTKLgU@q0N1ty`!0XKqFJ*N(KVM)^M7_Y{ z{CuH33H3sc^Yahw=TU#?aeltYegX9&kMr}z_KT<&mtV;0agM&kehKxG@{3r#GU!tK zW!CbGSv`U-vtMDY!=H1R7exJ$J(;x*f6k9Q1NF!D6xKTYc|Z0{)SuX|vex0x{fTFx z{?vYrwPF>kXG53UQ&}rkvwA#Vvci5H^@@r$tX>$p(td-rV(q{9{J)y%;C|Rta~wiy zc0)+r%3kOU_avb+-IIlSyQc{CaZeTM>$Vc==e8F5d%Q<~_cVF80q*HS1Kl=4gWR@4 zXSp(hHqUlt1Z@s>Wdv;wab*N;p5w|0+C0~l5wv-pD28{|DM za&Hv6*p*z$9O_CgWnSV+E@fWoN-kwy=1MMQUhYaRWnSS*E@cjL@08aY?%pLd!o6E) zq?>^G;Wsk9n6XZpggb6^CTr`l!HOIK(Sk0&1g|+*?TK`kK{~NXYzuFG|g!}&=V*Wpaxohh(%3$u=x|A}QyS6T& z4Cbz_p_IYgwRJINFn1mLg)*4C4tJpp=B`5vD1*6c^8(6X?%F(`GMKwI&!Y_HuFZ2P zgSl(-9Liws+8ja|%w3y?B!?%GuUWXxTgohgI4YqJw&Fn4WsqzvY+%?^~o+_l-BGMKwI z+ffE{*JfMFVD8#%LmA9no2OF-bJyl+l)>D!*_tw#yEa=<26NZusg%LowRs9D!*^)AtyEa=;26NYDbIM@u+H6J{%w3x&P{u1xVw=ZP#sxH` zi~~51GEu;>lxYk&hBA!+O(@e4a5QBa0FI(eeZY~Fi2#nEOcmg8%2Walqf9-(p_Hi$ zID|44fP*Ph2XGK&$^i#bCJZ=$G9keJl(7N(QN{vPQ^o|uC}RM8$^-!(WvB?oH!cIN*# zft~+<=KswX-4!yvdC6TV^s>83=oNRh&}4Uw&=hyA(5vn`q1W8?LQ~xhLa)1@3BBQN z6ne&8Bs9)l{5RU3b(hFr$Gb~~o^zK8O>jRFn&^HkG|Bx$=y~^3p%>icLVw?X<(uy3 z^1g4mUkJVJekt^hyGiI>ceBtmcZ*Qm-71uDzY`yGlW!vA*3=3A(c`Hsa!%xB@sd@gAh{bgOJJ{gjC`nG~eAPq|yZ; zl`9CTL_tVp2||m#QlTYYnb1;?gj6OVq*4GO<@<${(-->GvxSy>A)yssSZJkJF0{(4 zBedFcgw}Yj&|1$ETIcyf>%ExJ2Cuqy|5qJI?f!3=|8|tC-Tw{qPqqIK)D9{6EBF4s zPF?@!9_FpK>wim2{XOpct>yv#UH<}wgfhms5=UjtSH`5Ah1Wx z03dg@bgxY@=d?8MbZCip8gkElUTf%HuNCw+?^Nio-YL*uypy3ndnZBncqc-4R(}Ou zWxvT{9d{rHZQLhPJ0^gKxF> zQGe_4yuo+&Td2P)-^}XqyutVO+o-=U-@@wgyumj69n{;(x3YRXf3V$t7xngX{(ZK4 zJdf~$Jq_(Ylz+|Y@qEG#JC1rs`8TW{udn~nPN4p={99I!*V+GMCsF@Y{vE5w>+N^i zDbzd5zi0KDLwDI}*79wv9EWE3JI%VNq^%E%z@2a<@ zEWE4UhO+RkdTYwUyXq%X7T#5FNm=%;w^Ek9>n)UJ?|L(3*}L9ES@y0sQkK2z4U}c? zI-0WVU9YDsd)HBvW$$_&W!bx4OIh}=*HD(d>(!KH?|Kzw;a#;yDGTo!Cd#sRy^^x* zT}Ku-tfCbkL0NcLb2w$;UCm*Xg?BZtpe%dW%PGs=^)kw`cfFLd>|Iq}!`@ZpHSAqg zUc=t?BFeCLy^u2Su3?prTwi=s>k-O~0z6Ea>i`c?=32mml(`1*0A;QQ+)tUS0QXVm zO2EC8840+DG9v(YQ)W2eF3Jo8+)0@$0C!O4a=`7BxeRa{WiAEWN|{Rlw@_v%;AYBP z47iCh7Xfah%!Pm(D02Z|G-b{QTu+(v0HY{#F5o)KoCCO)GD85@P-ZaTYRa4qxQa4o z0j{LXAizk<3MzuU*f&>z`N!{}e_rm->j z`|)9n1MK5t=$Gsh!e^rWgxEZ2voQK!yIJgM)Xl>fKiJJ<=&$S+Vf4p#i`ZEFy=AyJ zYivIB#Bd+h*aGND;l8Y~h0v43SRY`Y9D4@!DPfFL>{DXs_v}-{7{A!3#?ar{t-|Q< z?N+gIczo+{Ki1fX(9^>GS!0W!r-v~fuuqRYi@Hr1<089F4E?0tHjMFs-8MEJe{UBa zz#3Z&Z6C&X%5EP+e`R+FWBg!uh&_kDcMN0PWp|9B|FS!U2co@GYzee;co1uBDYQ!% z<2AcW4E>wkHH`6x-8D7=fA1E?_`~iNn~1u5_$=1gGH8!5#(j2=82UrIXSgled&bZo z+P%UUuh_j}lhA%f_-xkLN6<6FgIQxALwkoYp0Rt!o=4p$+>SM-4tr|*>Kh)y8v6v= zFO2by-7oe6>i*&OtTBwo>;Yknf9wIV7tua2+<`TQ@tHj+d=BbCu}`6Ah0kS;Er*^R z?#LR$_{|<1#<2|Ah|q-{CAH zbeR9H(Bb|xp(A{myA2)b%iL|~C|~AoLr42EcN=Qr%iL|~7+>aYL&y3ucl&pFkK=rq z9}YG3Wqvqxyf5>^p%Z+W9}YG1Wqvr++?V;`Pzzt?heIuWnI8_F=)Wi5!Abr?p_Ba& zg--D$#|)k7OO6?81T4-?8p+6v|BOPUwTHrtuTGh)-T#f+{a3=26_hi2hIr$4U7nk3fvmFH}Gg+Y+#Z;G%zLbb|9^v6PQ_CpR2b}_x)@g*r0b* zcmC`d*rp$&?)`b_|76{L?Q{Mi-#~HT7%q=}2@S_ShnlgCP%HKs)Q)X{hGOfB8rtn6 z7z+nI7?^OG3xg8cQI3IaXh(y!c-)Wrt*qr3;D&x|unzT4`faS`Fmj=v8u07x)Ne=o z&hnM44e-99U3yp4yP|hOck3`}p*?yR)O(`mLx0v=vNnJL4E>__K>dr`6Z)&(jJ0Y8 z^f$dbt8+PYuZ{tDXm4W}ozOlV1MASfCYy~LCPB?GK4#boUxwNa zUkVL{FM)=`S3t|d!~YQZUyie@l`76GrW)o7%5iqJoN~PG;#11;x{FUJ$Jy1#l;iB` zBT}ZU_^f4=T%1lre z*_9cmEV3(e8fB4PneS2-*_HVYWszN(Z&Mc8mH8HBkzJW@QWn{j`37Z?U74>_7TJ|K zm9ogL%-1N3?8?wfzDSI;DKFXd1xRi(;|e+D0^HHLZ27M|J~J%KmRw@|EM{{gVcRQ>S;#F-jW|nzWU!gA2_f`<$Hha z{-0`wk6lf1j!#I<@-dleo2P7wOZYbLbQYc90QYaz7TYbm5=K!wy?l#rT* z5>oR|LTcto==X2@-+l$__h05OeyxA|1p}TqV=GkU@vB(jDqpC)N>;5{b*ieRt)gl_ zp}JM_D_HfaY3s0v{LxkTSrFZm$r_I$S-Xj9g$z!Y7%Kt zyZ@^Rq}u)8Fl+aJ3%plWad)duA@pR#ihQv{9^8`$6k!*Rxjb53Q$-X018^TB+T@T7^`>s?u&m zt-5(=M7xQ#3e%caeeGt{s>_Eq&~9O^f_t|bYPX_R-9NOEb{lIIrWviq8q$X1Pyp>w z?GDzeBcYClw4pdGK<#RGu~r=o^|ZTLtC|$uy5;lF>xVI0SsX8*Ifh9>D;CBiq@@NA zXs*WGpj92lT%@H&5@_BJ352y@7*mdx8djire*_WM{$T_xmKtNA`2ge%)&XJUE0!8? zp!vWqe+>T*?;1Xea`3L(8a{$@@UG#*DF^QwK8$kkuHi!|2k#m_gmUn%;e#m$ z?;1Xca`3L<11ZPrE?%V^ue+E+IbL@$nR2}D;uXsAx{H@7$LlU$q8zWgc#(4OuGR~b z<8>F$Q;yeNOrjjTt2L2w@UGSb%E7x@&ruHE)f!JZcvtIL%E7x@<0uF3YCS_acvovI z<=|bdrzr>TYK@^BysPyT<=|bdCn*Q-YCSJ?az_HbrrZ&LuPApoU@PSg18kw(p@7YlI|Q(aat8yxq})M(FDQ3l5yC;r z9e|e4DYrjhBjxr3d`7uyzy`|20P88|1J+T_1FWT-3s^%r2e6uQ(IRLnkZKH2fm9=a z3ZxnWR3Oy=paQA-02N3@04k8G0;oW$60m@B^#JoJR~ImkautBNl&ez&b5(Kt-&NW5 zlD%r(PrZN2yMSf_@BOF#e~tIBc)YdVBSP!EM}^jVj|pw?9vAw|dqQZV_oUED?*XAz z-h)D`y@!PUci!W3?I5y zZ??YmCQ93P-Xx*#z2}9tc`pcU_hc^E`oVii+IDy^3;pQ5BJ`6tS!ky>MQE4zs?cul zHK9G;RH2`}*M)xZ-VplLdsFB)?=7Ld-rGX^ymy%F67O9h&6_5qdvT#Fyn@g$Z@SQM zZ-&qaZ>G>lZ}n=5Ujym>;`d-H`xdkcha z@D>W)=zS=3leb9dW^b|3E#4BLTfL=1w|UEiZudSCy2JZe=uYnwp}V|Kh3@v23*Fx3Tm)(bu2ZK&P}p?0d5m4{k(9^S)gD24j9u;Fl*icB9!7bLUF|C< zkFl%%809f`)gPuj#;*E3)-K9p>}u_#JjSlpPn5^l)%ub07`s|KD37tL^#kQGcD1%s9%EN)8|5)}wZ5l3 z#;(?Pl*icB`j+w-yIS8+9%EPQYszEnYJEj{j9sm*l*icB+Cq7ZU9HWO$Jo`{M0t!| ztuHB$v8(k30Y0L98DJUZO94wM z9{?<&ybf4Qc@40L@+AN@@V*(K2HrOT)WG{jfEsw;08j(((Ev5@z8)}#a-#qrQ0_Xw z`;@yD@E+x^0nDb{)qq))y9zLqa#sRoP;Mk(I^{+HY|0G>Sd<$EFe!Hhz@Xga0OeUO z0}$md1>pSu{#x^rf9%!&{~DQ62eCi#5jfeOh7c6l zpVmR3WPj=-c(Rv=5E$9Z>+t7T?jwM*SA-B8*(>Vs^H%u$yp<}%h3K=1;5W{KI_Kdcoo{WR$zIMz13&^DtI;8zpB789{Vew_3Pj@X#cw6 zBvzmGn@}6n-}v32--Zy-{=VIO7eWH~`}XvG2+`l~+u61dGC#X!``aEu*!TN(`9laP zpIx)P?g(|p`_yd5KZd%XuGzkS3Ux(Yv)%6u@#j+eLvj4yNpnj6DV_g+dH)alF>j-I zna91)g`V(!5PH(vA@r2@qtF=dC!wdkokC;1T|&=zyM@MidxZWT@A0fBE7|Swo~&fI zpYvoTyFJ0%E1zYew@+x2Un2CpuL-^2>q0O30il=tQlXdqGND&|5}ND>g{Jt1(5t>F z^qOx8P4#V|*Zq*t8-7^mO}|{|Ex(S?+kS=6JAPfEcl~-o)BH-IxL+ld@FPM=zrIk) zZy=QR8wzFoMnYM?u~5$YLMZQjDOB(_2~GDl3(fGh2+j1i3eEDq5}NIOE%cuEjnMnv zw?ZFy-wDm}z89M7Z4;X3Z5NvFM}-#nj?hBi75dQkgckX}&|+WKHrPviS=(SQ_4kv% zF7x*n`p7>(=wtstA=L*7sa{7&^)o`MXAx3;iID0&gj9b~yZ`HkUAzAqcJ2Oe*niUf zzo|Z?MBTyTI{g;?9{mw@508oZWc@8YrS9S}S6`y9&^M_2cx=;m2TB5lx?fkrKrC>G ze(`@bX4i-Owd-~NH|Ef5ANmLQ28!cOePcCziN2~DzC~Xgz<5_*T=g>kz9fM0uD+z| z71T=u81L#!t0tpf7QlE{Usg2*^+y4WclD2|UPb+J0OMW#B#ai_?baep!P+wj34(c@l_(pwA z)w`(I2H+?4wN=wluM5Cu>g%fFsMiPJKlSxh3Dg?`@TK~OswC>q0`RN)XH_ZG8v_Ga ztJ2WV0|QyBGSDvqgIKGw&@TgLu~y}vn*wLER;kEC{T`bGgITKze~A3Afb7a%N(E$B z_7W-}yRsKk0oj$khziKA><_7c?8;t91!PzD0xBT8vgcC)*_EB80VE6I4KUWyh(2?8=@-1!PzDyHr4SWxqoOWLNgvR6urRzeNRPSN5A! zKz3!nK?P)2_UlwYc4bec0#M|NeuPkCfl_Is2^c4g0|{3ZAjW>J19U?$}+2F#%R zMS$s)zYtKM`~`qK<yu2Ln_9d^X@A%AW;LN$?=R z1C$>KP?7KezZ!MPJrtv-w`m1@*M!zQNBIk+T!^Ce0A}U zf9>mk{M*$({xbgyT^`$0JkEtWRieKso_~(Ia~ap2E79*1&qhakmol!qRHFYWo|}&L zu4Ppqp}&x+^CqrGn#*L^F|uZ7fE^Jwo^#&y3+^l!y;=+WN4jO+fD=;w-O z)T4bs8P@|U(ccx%uSNU7GOhvJ92s3aQjqNaeIbU;8HssZ3T# zrT9WB*B4SrzmUqtg;W|Yr1Ebem3RxOj9X}9o-QyHBr@ zV|foXmm#FmVj-0i3#o)yNM*x9Disz|^Cm*OeL2_1-s7JlZ9n^`3jN}@68hC|E%cjz zn$TYVbfJBI8>Uc+-&RQT+X?A@d!c~eL8#R4C{*Tm5+c8|P|)upWcXc$On-oo4HK z{h>mQ{7Zxy`XsEP{kuAxdQz`KU(Q32jHRF?|yuAvGlz`KU(PyyaGR89qW*HD-W@UEc{ z72sV%HWlDqLlza_T|*`n*t_nc0(;k;RABG=6BXFI{zwJ(t~;o}-t`A6uy@@~1@^An zsKDO!dn&MZ{f-LkUB9IQd)IHM0Ph+yr~vO83Q_^yHAGZ^cMX+M0p2xKN(Fe=P=E^X zt|4_gRJ)>y4QW(p3n-yN8`#=?R5%^5mkOr={!e@79cM+6_WSAXndc1MRTDUKIKVJN z6$TI`2?&ZrMNo3i8Ob?k5Cc&}L2}L+MR!+McRHbKLO@UybIxJ+eRbLBt$OO2&%OJ( z;l1~M?s{Kk_~-Yno?*^8-KVOb-}6*e{~bzNBK!?XS|I!tN}4151xlJB{25A`B3y!! zn-RW*k|qdWK*>!ApF_!w2%kYoV}wtkq!Gd=P;vvp$57G`;Ug$%fbb!d)JOOLO0GwE zA4=*Wyay$95#EK8ItcGTNo|C;p`;eVTTpTx!kbWXEy6`8sfq9glw5=GI+WBvxBw;9 z5nh9ms}Wv>lB*ETL&=p0=b+>Ygjasv^*{Dv5ykNArNS>MsyS6iwOjUb;n#HRbm2Ed zX9~Y1I$KD!TlPvJ)o$6jLYh0k&KJ_$fuH0xUM-~g3GB5(nxDWf6w>?z_Il9)de3hZ zmBxJ+i%R3ZH;YQ+zPE}>*(WmLNM4zQ!A^JRhj_8Z@d7>}VuM&NgevRns^aY}C(ytSJn|_1n zyYxk(KcwFz`eXVnBDHA{k=iDRNNo&6^h5eRBDDz+k=llcNNoT_^q2H=L~7F?qQ4ac zM1QYR8i%Vbe(0Fm+{cjK)`v)K=tHEo@*z^2_z-2Lvx(HkM?`At9wN0V5|P@shbWaS zr3%R%bS#~Ifv937@+Z7fm0fhKa{76q!YaFos#Ly~s39rdbC6(Hw*S`3wWhZ?2QLpqxD{aiKYz zDoh@G8ef4wpC(QIdOBZ;?dj6wt!ME2u{}eYeDzGe3fnWK$y3kbCht5;n*8)^Zt~8v zWfuP49B%T?b0lDUE;o7QxiW$6d3=pgnTuVfZZ=EVS5$dZ&aE*{{#F0wjYp% zsH^!wqp}L>gB<4pum@!kwjbh$jml!wHT;NCSrv6HKWbD8)Q9;o)OGwg>UwVe-+E!L z(*`~Yk8cofqi)PL-x4F&^8y*`JMy z38;IRsTb@K6S2LQ{q+~&|9$kX?qTrJyRzHCNAJqof{)&nwE-W!E4vMR^scNm_~>2P zt>B|~Ww(Hj-j%fiAH6GU2|jvP)&hL=uB2jHQ=LnwU>jB-qn5(eDtpNYVgs!+AG0F@5-8hkKUEt1U`CKb|d)cU0GxB(Yvxn z;G=hCH-L}cl{Ew(y(?<~K6+PHAAIz#?0WFgyRv%VqjzO>!AI}P>VS{lmDL6xy(_B) zK6+Pn9r);7*|p%KcV#ufNAJq60Uy09s{uZGS5_T-^sek`@X@=ntH4L^%B}<-y(_x{ zeDtoY8u;j4nFJrbD-+$ z;7f$f;0uIJ;8#W12!1ib2Jnjz)`MRKVIBB|2oHl_89|-rN(kyaS42?fIgOysa|Hx- zo>K_wJQpCS^PEIb=eazBI?wqC>OAKmsPmkQpw4p+f;!I}L7iu&!I}=fhcFF%7hx*+ zCrNr;BM7fpw;sRuNcdi)j^s^-3|V zBCyUC)69MAe0mxE-&fP**R9vmE9lsT^h%=F)Atj-kzPe~G5rA1o9Wd=Z>1k3dOQ6P z(L3oiMDM2861|sxnCSiVI-(EK>xn*0Zy@?8y^-kS^d_QD(wm7sO>ZIkEWMTJ^Hk}3 z{vuWSp1(}3D(nB3aR>bue{}lhmG%E@>pyk>Z*FI2s4yzeu4oIphF#ZgY`3u6+MVs* z_F#L||LMwr|9j8=FaA1~{rUgJ8PI;vKAt#jG}RULk;ECJscxu`Ce9j7bw@psc*SU{ z2kK*qb4F7=Q6Ep7H=62&`m4mNMpL~}f1P;EXsQqDZxR=bruw2jk$Bx`svqi;i8qX< z`lJ3fanWdM0P0hTH;twSqCTB?%V=s4>hBWh-|gR}24lM<@s82d5L7?$uF=#`)FAPm z(bO>1F!8?86wXJqqr?Z;j#B9N?Ktrvw&N7~efwnMBW#~cq2ITkNqmg$XHw|*?Pn98 zVEfq=`hENNiBGZp`xN?p`?QJN%krnv=zA7ME5! zt}UiHS^TKFWjs6oMx zL=96JL^q@?qDCp3sBy|6x-peWbW+Pv@hyR z)S*HTqK?U@i8`fE5p}LwT7BzMwe)jzE!s~%?Utk%o_9}{*4%m&kWb(}i{{er^(ri_ zoAoXz{g(782DUNSL^M(q5{(ir(P%;bgpU!qbZo3h5see2*K)idm%}HB(rZ3Zlz!exf?N}y zEK2K>Qv{Utf3=rmS^v-GW&J;!Uxxkv7m@!DFn7&2L4dhyz77J+UGs+_z}z)o3jyY? z`5Fi?cg-Jy0CU&;K?pE+%~wN!xoiFa1em+#t02JKHNPJM%w6-95Mb__uYdq^*L*ny zn7ii7Ai&%;UkU-{uK5xOFn7)Gg8*~a{9Xt!cg^pC0CU&;ZU``U%@;#}xodtG1em+# ziy*+kU5Uu30be7wA98dV)V6p$GW$5W0gu7oi*Ya}c_MKO3P7__Gi? zgFh3Y6ZkU_I)XnPp#%8S5ZZ%36`>vYQxNU|e=a;EzD~4fuB={2Kh>2)_b<7{cS=4@Gzk z{2>S@z#ok8DENaA9sz$K!g25iARGg~Kf+P)`ym|B_y3{l!QVgMXMg|KwSVfP{D=Rv z|6%*s-;9dMsQcO9jfyF#2iQN1im9jv*^frWG}J>p!>E{!dYD^A#SGLV+%_s^q8{ar zQ85ek7|%2+W}_bGSw_Vi)JHfN6?0J^ z#|8RdwU*b^rPXt5@%MiXUmLAr^f!P$S3koRk3RwE`}LD-vHc{V?_}zEw%GnHpzmbr zskYdD3eXob^=w;gKMm-MnR>!4wtolcYxQ$(v0Vb@eW|D2V%rDvzST2tu^oUp-|ES? z*bV`Gw0{0Awj)5F&eT(Iu^j{YXckv|2HPhAeZGDoF1DY6Z;ck2>-sEwiEZ_CT-4vg zS4OL#FJ{jH`fjG4l#9oo2lVy&dAZnr0X{Zb@g(Yt@Qu-;PN*-rt&HY*MhngBopRBi zvr~BtkE@xgs4u&>8qG83OU+xw_G#Cg&(nEk9*3I6ipS5mw;9dLHCkvs-&wZ}w$J9} z87(x|{S~(@wqME1H(F@U>pA!KpLzU0O;8nwPZv}l;xh!*c=$}g$R*7ZR14y>MX6(( zBT8py&J|VY_vQ&sG+$6{iT@O@u|Slg*Ig)zi57{fM0W{6v{*=@yG1pkd&Ct)_lhft z?h~bROP7eN>DW?H>Oq%@QvbSKTth!yA!-t>6s5CA?-!;1b(N?^KYc*dCR#1(5IrdB z5u|6Rj2Xi5?aWh}MaQMC--vL>oj0qK)DXqD|rkqRrw~qAj8$(N@ujXq#wH zv|Zdpv_srXv{SSq+9g^N?G}xR_J~`E_KMa-`$Ti1{h|fY0nvu&plC*PNZdwrSTrR% zBAO5#6*m$c6K#o(i*`um_#L7XlIuC53sI)%N|YtK5rODVln^Ex;(FPlCmky%dJ(yz zH<2g$5HZo0h>LziIif#Nt{70(|5XTA*8j74S^v-Gmtp_^Mfm?vdsmkYgHU@{mkowc zdsmkYf>3)`mkoqadso-10ipJ;u2&sG?Ok2(Y6!J=b-k+~)ZW$gu7pr~SJ%4&LhW5$ zuNs8fySko)PUvcn)ZSG+>gxb5hUS$Zh zcXho=5NPk}dKDqi-qrQe5NPk}vPU7%-qmG~K%l*=%Z@{!y{pTPL7=^>%Z@^zy{pTP zK%l*=%ML@Jy{pR(L7=^>%ML=Iy{pR(K%l*=%l1Q{y{pUiL7=^>%l1N`y{pUiK%l*= z%XUMcy{pT1L7=^>%XUJby{pT1K%l*=%eF(Hy{pT%L7=^>%eF$Gy{pT%K%l*=%Qi!x zy{pSqQbv1M*Q)@5_O7m%fLZH2?>y?KLc zL2w}Gtbv_?ppyc1uZEzbf^4onUdd!9P}iabg1Umu5!4lIhM=x;Qv~$|xEVoRrX~pL zyKxhOx?VRTsIN_91a*}gA#8P(W4_${zc-w>(>}->E>ucN>7Bg3QE>ou1aEItsBW)* zK9V;uDh{HK;vI~N2z4}XXjB|R9m6{s6*1~qeuGhQ7?@!FZJcFm6goDQ?dFXq+NjaEr@YHj0@c3j8{kAtb2lEb| zdP)u+pW>mf^`_*Y|Mk=}bMW|7?>VD6n1}Gx6LhdW&3oQx4(1~~^*kMHPxoFhnuB=> zPd!}++cUfujpocZT5R6OOz$OZ&&*k1wAj3lS>7pZ&&pY7wAj3l+1|_8o}IJEXt8-8 zbG*~oR?p@^o$Fz~!c$M^!S+1wtkGigdh*~c@1xA`N?=(Jr4+V znTPokZ&`WFUwP{3KzMw)hj|ijdHJcPU2NXR3J>!=-iq?mbpQX^?*Fas6Jii~nexJ{ zjZ}9NF@%m4h@nI&F^s5!7*3QH^NA{o1w@s^LZZrI5z$Za8inF6dbKKIF;S7Yo2Xda zLsV7VOC-d7L{cmvswS2aT_H^ETLm*>IUT!7nEJH}dBjROR$bgrR70#Hx<))hR8y=a zx>g(|x=tJ;swEyKsx6)+sv~|+R9Bd4zU$Q!>*(0^;yI%F;t`?-Vm(nq@hH&^;(4M* zVgpfQaf0YZv61K|@d8m3VXE)0ce8kjjx`mVh?ciQ0;7M7N9I5Zxip5VaF$iQ0=Nh&qVvL>LZ>e>MQn?^?wyfmi2#SjLQ1I zcNzBoUxxoj@5+^3NAJp&T}SWAm0d^g%9UM5@5&1xMDNP;AVlxVlMteJ<+%`|cje_F zMDNOTAVlxV^C3j<$~lDSU3obO(YtaNLiDcOgAlzdXAq)yWsgCK-j!{D5WOpV976Q2 zY$$~2UD*%_(Yvw%5E}2Qk{8Cisw2j`_J`1T*Ip1B@7f(g<6XN!XuNAD2#t4b2O)Y_ z?+ysHcXhqnAk^N~^;$uwy{qfBgiw1|b+d#}dso+M0-^SU!5h zsJ*M})qzlZSJ$fzq4ut>cMXKvySm;u2(@>0y)h7K@9KJ^Ak^N~^+rIby{qdDhfsT0 z*HfQedso*}Ng3^3U9TU6+Pk`59|*N~b-kVtYVYcLT_Dun)%7|5Q0LNf@jM`#RTJ%ol3)$Erdk~ts$&}a0`Tm2rVG2jL;OqN(eVXSP`KSglU8Z5LQ5_2Vn}K7K8-| zH6cuDVC#S8_y7LlHHu{hhzmpmMG4U$v6pDDc%5j7*he%}_(a3Rej=3-Ai7f=Ao?j@ zV}uCl)kcbgM59DRG+G=Y8Y5z&vEne1$|4Y{{DC1hK)gXTP&`01NUSCrEFL5pA}$gQ z6>ky^6Auv$7vB-xDgHn-Li~|P?RHC~_PHfeJKPefy={rquC_#KKU*TTGc%Fe!pUNwicJ5G|7_qUEvz z(F&O+S}7|MshtvtR>{glYIg*p)v^ka+7W^1Az4hcMph+SD@9rVS9g-K{_nD~{_nEO zu>b!e;{Qm;uAX}qA|1PW?iq-5?CQCvA=0s{=ROOOj$J)Bf=I`%o*P1>V^_}&Akwj` zm$(Ze9lLsor4Z@Z)l1BSNXM>T))x@z*wxGW79t(HdRgBSeZuNXM>TW($aP?CLqQAkwj`=S+u4$F80;9wHsPdd?V#bnNOm z!ywYJtLF@cNXM?8(-$HgyLwJ{h;;1gWqbvZj$OTsPax8<=K)v8!ia zghGqA=0s{XL}Io*wwQ$A=0s{XDxvUV^@ABL>RmB;Sgc$ z%GN=Iu`7ERB8*+xT8J=qWosb9*p)p55yr0UL5MJRWvd~=*p)p15yq};6+{@jvil*z z*p;n>2xC{a0wRoE*>Z?5c4f;T!q}Cmt7BqU^$yFcx9YO{Aj(I$7ot3bdmze1xErDz zgvAhX1a*}e!Xk(~goO~f2n!%8hcF+aYy|ZMNFdCG2oUB#l!Y)GqD%yJDIJ8F5ZMSb zAhHnD#mzvN2H`@4sSqwem;&K^gvk)jLzo2NT!e`b&Ow*};cNtDLuMf;pEVOf`H>k2 z%5Y6bP{w2$f^uF{5tKujf}kweWCUeZCLt&)zsciM7zZVBDG%=(Oxl$XrGu& zv|mgiIv}PJ9Td}u4vFbRhs6w{BVs1eQ8A0?n3zp;T+AVQM9d|6RLmn%bB>ABY-1ud z&)5(zCq5u@#rs5_c#nvQcZs<8kSIrdOq44=CCU?@6XlDKh{}skh?3$nq5|;+kq}=J zN%0j?HSsmk72+GBE5)}&!{rr3cgib~)Bq`K61^#F5WOX@A^J$xBKkzuCi+U&F=Q=~ zR}n3f?TEgYHxpfwO%2(Z@@gVaRwq)=MI%yAN;BkimvxEy%6deD<@H3vWPPGBvH{U} z*^p?uyn$$zY-A|2g=|dJTHZ+1PTo}3|J4notpBUIMP>c}a_s-Vi1Al9)f=UXAx zu`5@zzG5A_a=sa29lLV1)-cwwE9V;_*0C$+8z9!PE9dJW*0C$&!ywkNE8{~U*0C$& zLm<|%E8~M9*0C$&gCN$iE8_zp*0C$&10dG1E93nk*0C$&{UFw{E8~43*0C$&eIVAc zE91Q(*0C$&y&%@HE8{&O*0C$&JwQ#~(a;@Y9lJ8#4PqU;GTs$p9lJ8Mb}iPiE90FZ z*0C$&ogmh+E8`s@*0C$&9U#)NE931U(y=S!%Gc=Fm8rFTk&a!NT0R)**p;ajfsu|~ znOdP3>DZO2Wq*;5U71=(80pxRsbz?fj$N5rH5lpGm8qqQk&a!NT67rc*p;bOjFFCA znOaa7>DZO2#e$KJU71>a80pxRsilh11cZqYjYpUO(KrNUrp6+SgJ=xGScpa=D0?*u zVKhV|5k^5Y0%0UXcOr~{XgI=gh=w5?gJ>wiQHX{h9D!&s!eNL8Asm8eAi_b21|S@O zs6WDfi25PygQzdUUWoc2?188^!fuFqA?$*vC&EsMdLZn8s5`=Th`J$cgQzRQR*1SF zY=NjV!e)p%A#8%EBf>_AIv{L-s6E1Zh}tRetYtsz`@b^yvaN|_+%xiaqOpzF;_3~bPH8l{(`-r;BB}6^sQlg%68Bs5}oT#^4LDWaC zBeV~EDdu|(sgaaW8_kj7mxK2aKXrN$9y+?5(yq;Xejw2{VLsR2kD zccsQ8Y21|>rlfIKYUGl}U8%uL8h53}H)-6J8uFxZS85cL#$Bm_Q5tup#!6}2l^Q;! zaaU?YmGkL6ub1tKHpmV{8)ZkLO|lcwW@-Ew<6C4GI<{4ICE6yt5p9>GX840y@OaI)wP79~4)7h@!^mYb2qnt^$aArA+oTbic zyP~tf+2I_p^URL@cDD1JbH;hy&T!syK6AcvE~&Rr_U|V=1A0C9+SsVkIJK{ zM6*6eg}U4N(5Pr^RQ5*QV>?EZI8UCdmAs}c`=IW%vyCQk zzPw)FXWFta>OSi)Mn!X@vLEVx3-<}&YVEIS%l@bbY;IKGI(u~<24MT3^=G4^nNc|q z^^olvP2#+Ku2u`1wj6|d*!tdRa=cN|)TkVcdc^w9sAytT4naL?eQH$PXjBeGJ!a<^ z6>W{mVW`L1BSw?Be+5@-kWE_-*Z2PxcE&&V|G{bm_~-uLS&aau|F=~mz(4hWr-m8< zRR7n#UyT8sP48Euz$DZA)hMu9_kJ}79H8ExN4-DW^nNu8l=c3fu8KbL*YT*R71#NwI5x)Lnq~4;6`oOP`q?y_ zVS8F~lu=R1sKj+Je7f}mwx=gezfpTfn6@d!eNInt=8XjI~QEI!lv3fnW2 zrXQ<)CQMt-K%HgVMw53M6%~w1T%W~fTYtdz?4;?>YEKH&ma|ajSnnGZX8cm_0o!u{ z*C+A0$}pQVs*#^Q}upMbfC8hq}P}K==RV*76K%xwY2XW*x9j zSWjEeT4$__)<@Pi)+MzoEVC=9eSvG*4eVy>-rx0K@uUE!p3}r>?R0YbIK!NA&I}bb zEO*vA+ti40!g<cYzosXPv)Hrb>JJYi4d|UnzO^nLc$!$d2<#wVSatD#R@DcJ6 zqLK1ZA{54V%ictLWFMlvvM`$cbLPQ7UK%zr(5Yb^dnCOTcLUdFPB|0XD z5gnJqkyQRtt|!_cHxO-<8;Lf_O+=gJW}+=}3(;1&mFSmpSw_hd_=$4(X!#h?82LES zSotfWaq`zhAfGGi|CyE=>3LcIFYEvR!(sUs-v4#|Z$L(r;rvP6T|ai- za?Uv~IHB`|bKKeIY*qK*70zO3wu1UE8|ke zw;7*gyq$4Ak?Le zq8!A!gq5E)9AaI<%Fk*Eu`XfdXElOYm$34)CPA!ASov8F#JYr)pZO1nbqOm!L)8p* z2`fKiLsqOxSXO>kR;(&mR(@tytO{6GzLOQJ`jwS$XU3|0RW2W5UA)RmybZA~Ugae& zLad8dd5H@U>*7^j;#G)s@hUHI9%5a*%1fMsSQoGI%KZSbE?(u8Q$NzhtGse&AlAjJ zylhpg)Wxg3>~#?9;#FSu8i;lADlhw?tXLJVth@#g>)KTwuMV-UUFGV+q^@1%>cXV1 zUFGV+q^@1%>cXV1UFGV+q^@1%>cXV1UFGV+q^@1%>cXV1UFGV+q^@1%>cXV1UFGV+ zq^@1%>cXV1UFGV+q^@1%>cXV1UFGV+q^@1%>cXV1UFGV+q^@1%>cXV1UFGV+q^@1% z>cXV1UFGV+q^@1%>cXV1UFE96WPArgdx&pGXa{jy1v#oP8Mi^05AkgX^B``GFc;!m z5#~UA3&L!OTOrJXxFy0&h+81cfVerrbcmZFOoO;7!c>TFMwkL|6NJeS--MvPI5#3p zgt#%n1c)0UjEDFJgmDlzL>LQk1B5XU*GCu)@%0F!Ag+fn65_fDBOtD$fb-)J*G4!7 zaV>Z#N1h4wOgjlI?0 zZ$D~3rTX(}`wja;`)m78j^%hxO7;3{occ~vr;XFa>FW%4CMb`;*jeeUQ`x;k&f`vr za`vyNQREXfn*2#+4?Eed?Iw0TySkmU%UM6#Mb`J$m)85%1?!X*s~*4CdeYi#J!mbl z=BqbxdHloRtGwN#nunCnE>?35W!J4%j;KzxY@*uL5{42Rs{zrvYFR`)hwb~)iQ{#mOm1elm9T3HC+CksHOZHQ6u?RqDk^EM2`Hkq0E2CONKIb$UhNn zkUto6mLO`p!td5zX0@}z3u=2 literal 0 HcmV?d00001 diff --git a/study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md b/study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md index b288108a..edce1f11 100644 --- a/study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md +++ b/study-guide/Unit 3 Sprint 2 SQL and Databases Study Guide.md @@ -1,78 +1,83 @@ # Unit 3 Sprint 2 SQL and Databases Study Guide -This study guide should reinforce and provide practice for all of the concepts you have seen in the past week. There are a mix of written questions and coding exercises, both are equally important to prepare you for the sprint challenge as well as to be able to speak on these topics comfortably in interviews and on the job. - -If you get stuck or are unsure of something remember the 20 minute rule. If that doesn't help, then research a solution with [google](https://www.google.com) or [StackOverflow](https://www.stackoverflow.com). Only once you have exhausted these methods should you turn to your Team Lead - they won't be there on your SC or during an interview. That being said, don't hesitate to ask for help if you truly are stuck. +This study guide should reinforce and provide practice for all of the concepts you have seen in the past week. +There are a mix of written questions and coding exercises, both are equally important to prepare you for the sprint challenge +as well as to be able to speak on these topics comfortably in interviews and on the job. +If you get stuck or are unsure of something remember the 20 minute rule. +If that doesn't help, then research a solution with google and stackoverflow. Only once you have exausted these methods should you turn to your Team Lead - +they won't be there on your SC or during an interview. That being said, don't hesitate to ask for help if you truly are stuck. Have fun studying! +# SQL -## SQL - -**Concepts:** - +## Questions of understanding 1. What is SQL? + SQL is a programming language use to manage relational databases. + It's an industry standard that makes it easy to query information from tables. 2. What is a RDBMS? -3. What is an ETL pipeline? + Relational Database management systems store data ina tabular format as opposed to a file format which enables there to be connection between peices of data. +3. What is the ETL pipeline? + A process by extracting data from one system, tranforming it, and loading into a place where it can be accessed like a data-warehouse or data-lake. 4. What is a schema? + Scheme refers to the relationship between objects in a database. Schema offers a means ot separate database objects from database users. 5. What does each letter in ACID stand for? Give an explanation for each and why they matter? - - **A** - - **C** - - **I** - - **D** + - Atomicity: guarantee that transactions happen or they don't. + - Consistency: gurantees transactions are never half finished and that the constraints are never violated + - Isolation: transactions cannot read data from other transactions that aren't yet completed. All transactions are executed sequentially rather than simultaneously. + - Durability: once a transaction has been completed it is gauranteed to be recorded. 6. Explain each of the table relationships and give an example for each - - One-to-One - - One-to-Many - - Many-to-Many + - One-to-One + A relationship between two talbes where both tables are associated by one matching row. RPG characters are associated by character_id. + - One-to-Many + A relationship between two tables where a row form one table can have multiple matching rows in a the other table. + In an rpg, the Item_id table would have multipel relationships to a character_inventory that has weapons, healing items, and misc items. + - Many-to-Many + There exist many relationships between tables. Customers could purchase multiple products and products can be purcahsed by multiple customers. ## Syntax For the following section, give a brief explanation of each of the SQL commands. -1. **SELECT** - -2. **WHERE** - -3. **LIMIT** - -4. **ORDER** - -5. **JOIN** - -6. **CREATE TABLE** - -7. **INSERT** - -8. **DISTINCT** - -9. **GROUP BY** - -10. **ORDER BY** - -11. **AVG** - -12. **MAX** - -13. **AS** - +1. **SELECT** - pick the columns from a table +2. **WHERE** - filter by integer, strings, or other conditions(x>30) +3. **LIMIT** - include only x number of rows +5. **JOIN** - Joins two tables together on a column or completely +6. **CREATE TABLE** - new table +7. **INSERT** - insert a row or new data into a table +8. **DISTINCT** - select only the +9. **GROUP BY** - organize the selected data by a column(Date, money, customer) +10. **ORDER BY** - sort the data by a column(date, most recent customer) +11. **AVG** - return the avg of a selected column/data +12. **MAX** - return the max value +13. **AS** - relabled a column as something else. ## Starting From Scratch Create a file named `study_part1.py` and complete the exercise below. The only library you should need to import is `sqlite3`. Don't forget to be PEP8 compliant! 1. Create a new database file call `study_part1.sqlite3` 2. Create a table with the following columns - ``` - student - string - studied - string - grade - int - age - int - sex - string - ``` +``` + student - string + studied - string + grade - int + age - int + sex - string + ``` 3. Fill the table with the following data - - ``` - 'Lion-O', 'True', 85, 24, 'Male' - 'Cheetara', 'True', 95, 22, 'Female' - 'Mumm-Ra', 'False', 65, 153, 'Male' - 'Snarf', 'False', 70, 15, 'Male' - 'Panthro', 'True', 80, 30, 'Male' - ``` - +``` + 'Lion-O', 'True', 85, 24, 'Male' + 'Cheetara', 'True', 95, 22, 'Female' + 'Mumm-Ra', 'False', 65, 153, 'Male' + 'Snarf', 'False', 70, 15, 'Male' + 'Panthro', 'True', 80, 30, 'Male' + ``` 4. Save your data. You can check that everything is working so far if you can view the table and data in DBBrowser - 5. Write the following queries to check your work. Querie outputs should be formatted for readability, don't simply print a number to the screen with no explanation, add context. - - ``` - What is the average age? Expected Result - 48.8 - What are the name of the female students? Expected Result - 'Cheetara' - How many students studied? Expected Results - 3 - Return all students and all columns, sorted by student names in alphabetical order. - ``` +``` +What is the average age? Expected Result - 48.8 +What are the name of the female students? Expected Result - 'Cheetara' +How many students studied? Expected Results - 3 +Return all students and all columns, sorted by student names in alphabetical order. +``` ## Query All the Tables! @@ -96,23 +101,36 @@ Before we get started you'll need a few things. 6. Get the name of all Black Sabbath tracks and the albums they came off of 7. What is the most popular genre by number of tracks? 8. Find all customers that have spent over $45 -9. Find the first and last name, title, and the number of customers each employee has helped. If the customer count is 0 for an employee, it doesn't need to be displayed. Order the employees from most to least customers. +9. Find the first and last name, title, and the number of customers each employee has helped. +If the customer count is 0 for an employee, it doesn't need to be displayed. Order the employees from most to least customers. 10. Return the first and last name of each employee and who they report to -## NoSQL - -### Questions of Understanding +# NoSQL +## Questions of Understanding 1. What is a document store? - -2. What is a `key:value` pair? What data type in Python uses `key:value` pairs? - + A document oriented database is a program that stores and retreives information. + It is a subset of the key-value store which is a NoSQL concept. +2. What is a key:value pair? What datatype in Python uses Key:Value pairs? + A key:value pair is a method for storing data by which a key serves a unique identifier for a piece of data. + A dictionary is a common key-value pair used in python. 3. Give an example of when it would be best to use a SQL Database and when it would be best to use a NoSQL Database 4. What are some of the trade-offs between SQL and NoSQL? +One of the primary trade-offs between SQL and NoSQL is the scalability of these data structures. +NoSQL scales vertically, meaning that if a network has a small number of nodes/endpoints then it may benefit from a NoSQL structure. This would be helpful for large entities that may only have to connect with a few networks. NoSQL also doesn't provide the ability to perform joins across tables, lacks standardized interfaces, and doesn't have the network effects that SQL like databases maintains. + +SQL databases scale horizontally where there are a large number of nodes. +This is helpful for a network where many devices each act as their own node and need to be able to query data. 5. What does each letter in BASE stand for? Give an explanation for each and why they matter? - - B - - A - - S - - E + - Basically: refers to data availability. If a node in the database fails then part of the data will be inaccessible, + however, the data layer/database will say operational. AKA the database works most of the time. + This is helpful if you have a system that is critical by nature, such as a government database. + - Available: + - Soft state: Stores of data don't have to be mutually consistent at every point in time. The state of the database will change over time. + This means you could have data with multiple writes that do not match entirely. + - Eventual consistency: data should always be consistent with regards to how many changes are performed. However, this doesn't happen immediately. + + Example. Social media doesn't immediately update the state of the social network (Twitter, Facebook, etc) because nobody is checking it. + It is more important to provide quick responses than to make sure everyone's state is updated. \ No newline at end of file diff --git a/study-guide/part1_queries.py b/study-guide/part1_queries.py new file mode 100644 index 00000000..acdbf17f --- /dev/null +++ b/study-guide/part1_queries.py @@ -0,0 +1,42 @@ +import sqlite3 + + +conn = sqlite3.connect('study_part1.sqlite3') +curs = conn.cursor() + +query1 = """ +SELECT AVG(age) +FROM example; +""" + +query2 = """ +SELECT student +FROM example +WHERE sex='Female'; +""" + +query3 = """ +SELECT COUNT(studied) +FROM example +WHERE studied='True'; +""" + +query4 = """ +SELECT * +FROM example +ORDER BY student DESC; +""" + +queries = [query1, query2, query3, query4] + + +def exe_query(query): + records = curs.execute(query).fetchall() + return f'{records} \n' + + +if __name__ == "__main__": + for query in queries: + print(exe_query(query)) + curs.close() + conn.close() diff --git a/study-guide/study_part1.py b/study-guide/study_part1.py new file mode 100644 index 00000000..19c10d7a --- /dev/null +++ b/study-guide/study_part1.py @@ -0,0 +1,36 @@ +import sqlite3 + + +conn = sqlite3.connect('study_part1.sqlite3') +curs = conn.cursor() + + +query = """ +DROP TABLE IF EXISTS example; +CREATE TABLE example ( + student VARCHAR(10), + studied VARCHAR(5), + grade INTEGER, + age INTEGER, + sex VARCHAR(6) +); +INSERT INTO example ( + student, + studied, + grade, + age, + sex +) +VALUES +('Lion-O', 'True', 85, 24, 'Male'), +('Cheetara', 'True', 95, 22, 'Female'), +('Mumm-Ra', 'False', 65, 153, 'Male'), +('Snarf', 'False', 70, 15, 'Male'), +('Panthro', 'True', 80, 30, 'Male'); +""" + + +if __name__ == "__main__": + curs.executescript(query) + conn.commit() + conn.close() diff --git a/study-guide/study_part1.sqlite3 b/study-guide/study_part1.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..4dca0d34b661b95217a5cbd9d73993278fd4135b GIT binary patch literal 8192 zcmeI#&q~8E90%~ETPqAkylizACC3e%D56)bqf=q(?5bDESoR0jPPzv{CKs6=-x}sz>fkR`KPUbFEd^(a9vY1>&Zm%J3nlk`(br|ueOr~BiYM>!{z!Q6+Ou>uA<;9 z2*0+9!HQd=Zym`2emw^-z2!K3SM( m({i@-U6saAN+nWZF1s%`Wo)jaPQ`quHJT*#Ym?k=m@^+5RaprD literal 0 HcmV?d00001 diff --git a/study-guide/study_part2.py b/study-guide/study_part2.py new file mode 100644 index 00000000..68d75e89 --- /dev/null +++ b/study-guide/study_part2.py @@ -0,0 +1,131 @@ +import sqlite3 + +DB_FILEPATH = 'data/Review_Chinook_Sqlite.sqlite' + +conn = sqlite3.connect(DB_FILEPATH) +curs = conn.cursor() +print(type(conn)) + +# queries the avg invoice +print("---------------") +query = """ +SELECT I.customerID, AVG(I.Total) AS Spent +FROM Invoice I +GROUP BY I.customerID +ORDER BY I.customerID +LIMIT 5; +""" +curs.execute(query) +result = curs.fetchall() +print("Average Customer Invoice:", result) + +# query for customers in the USA +print("---------------") +query = """SELECT * +FROM Customer C +WHERE C.Country = "USA" +LIMIT 5; +""" +curs.execute(query) +result = curs.fetchall() +print("Customers in the U.S:", result) + +# query for employee with no boss +print("---------------") +query = """ SELECT E.FirstName, E.LastName, +E.Employeeid, E.ReportsTo +FROM Employee E +WHERE E.ReportsTo is NULL +""" +curs.execute(query) +result = curs.fetchall() +print("The Founder has no boss:", result) + +# query for number of unique composers +print("---------------") +query = """ SELECT Count(DISTINCT t.Composer) +FROM Track t +""" +curs.execute(query) +result = curs.fetchall() +print("Number of Unique Composers:", result) + +print("---------------") +query = """ SELECT Count(DISTINCT t.TrackId) +FROM Track t +""" +curs.execute(query) +result = curs.fetchall() +print("Number of unique Tracks:", result) + +# JOINS + +# query for all black sbbath tracks +print("---------------") +query = """ +SELECT Album.AlbumId, Artist.Name, Album.Title, Track.Name +FROM Artist +LEFT JOIN Album ON Artist.ArtistID = Album.ArtistID +LEFT JOIN Track on Track.AlbumId = Album.AlbumId +WHERE Artist.Name = "Black Sabbath" +ORDER BY Album.AlbumID +""" +curs.execute(query) +result = curs.fetchall() +print("Black Sabbath Tracks:", result) + +# query for most popular genre by num of tracks +print("---------------") +query = """ +SELECT Count(t.GenreId) as MostTracks, G.Name +FROM Genre G +JOIN Track t ON G.GenreId = t.GenreId +GROUP By t.GenreId +ORDER BY MostTracks DESC +LIMIT 1; +""" +curs.execute(query) +result = curs.fetchall() +print("Most popular genre:", result) + +# query for customers that spent over $45 +print("---------------") +query = """ +SELECT Sum(I.Total) as Spent, I.CustomerId +FROM Invoice I +GROUP BY 2 + HAVING Spent > 45 +""" +curs.execute(query) +result = curs.fetchall() +print("Customers who spend over $45:", result) + +# 9. Find the first and last name, title, +# and the number of customers each employee +# has helped. If the customer count is 0 for +# an employee, it doesn't need to be displayed. +# Order the employees from most to least customers. + +# query for Employee Customer-Help Count +print("---------------") +query = """ +SELECT E.EmployeeId, E.FirstName, E.LastName, E. Title, +COUNT(C.SupportRepId) as HelpCount +FROM Employee E +JOIN Customer C on E.EmployeeId = C.SupportRepId +GROUP By E.EmployeeId +ORDER BY HelpCount DESC; +""" +curs.execute(query) +result = curs.fetchall() +print("Employee-Customer Help Count:", result) + +# query for Organization Chart +print("---------------") +query = """ +SELECT E.EmployeeId, E.FirstName, E.LastName, E.ReportsTo +FROM Employee E +""" +curs.execute(query) +result = curs.fetchall() +print("Company Org Chart:", result) From d75cb961032780ef7b1ad9f740a0ac50fc1dc1dc Mon Sep 17 00:00:00 2001 From: John-G-Thomas Date: Fri, 14 Aug 2020 11:01:26 -0400 Subject: [PATCH 20/21] study guide --- study-guide/study.py | 0 study-guide/study_part2.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 study-guide/study.py diff --git a/study-guide/study.py b/study-guide/study.py deleted file mode 100644 index e69de29b..00000000 diff --git a/study-guide/study_part2.py b/study-guide/study_part2.py index 68d75e89..afcf8d24 100644 --- a/study-guide/study_part2.py +++ b/study-guide/study_part2.py @@ -1,6 +1,6 @@ import sqlite3 -DB_FILEPATH = 'data/Review_Chinook_Sqlite.sqlite' +DB_FILEPATH = 'Chinook_Sqlite.sqlite' conn = sqlite3.connect(DB_FILEPATH) curs = conn.cursor() From 63996452fa705f1f032a94e4809bf5a7a692df2a Mon Sep 17 00:00:00 2001 From: John Thomas <66141394+John-G-Thomas@users.noreply.github.com> Date: Thu, 10 Sep 2020 14:01:28 -0400 Subject: [PATCH 21/21] Created using Colaboratory --- .../LS_DS17_424_Deploy_Lecture.ipynb | 1350 +++++++++++++++++ 1 file changed, 1350 insertions(+) create mode 100644 module4-Deploy/LS_DS17_424_Deploy_Lecture.ipynb diff --git a/module4-Deploy/LS_DS17_424_Deploy_Lecture.ipynb b/module4-Deploy/LS_DS17_424_Deploy_Lecture.ipynb new file mode 100644 index 00000000..e94e13b9 --- /dev/null +++ b/module4-Deploy/LS_DS17_424_Deploy_Lecture.ipynb @@ -0,0 +1,1350 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "LS_DS17_424_Deploy_Lecture.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "display_name": "U4-S2-NNF-DS10", + "language": "python", + "name": "u4-s2-nnf-ds10" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "toc-autonumbering": false, + "toc-showmarkdowntxt": false + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HJzTIkYAsLxw" + }, + "source": [ + "Lambda School Data Science\n", + "\n", + "*Unit 4, Sprint 2, Module 4*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "YCf3jDMVQHuI" + }, + "source": [ + "# Neural Network Frameworks (Prepare)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "GR0XBF5HQHuI" + }, + "source": [ + "## Learning Objectives\n", + "* Part 1: Implement Regularization Strategies\n", + "* Part 2: Deploy a Keras Model\n", + "* Part 3: Write a Custom Callback Function (Optional)\n", + "\n", + "Today's class will also focus heavily on Callback objects. We will use a variety of callbacks to monitor and manipulate our models based on data that our model produces at the end of an epoch.\n", + "\n", + "> A callback is an object that can perform actions at various stages of training (e.g. at the start or end of an epoch, before or after a single batch, etc). -- [Keras Documentation](https://keras.io/api/callbacks/)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "TWuoXZCCKCI7" + }, + "source": [ + "# Regularization Strategies (Learn)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E3aMJZuPQHur", + "colab_type": "text" + }, + "source": [ + "## Overview\n", + "\n", + "Neural Networks are highly parameterized models and can be easily overfit to the training data. The most salient way to combat this problem is with regularization strategies. \n", + "\n", + "![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Regularization.svg/1920px-Regularization.svg.png)\n", + "\n", + "There are four common ways of regularization in neural networks which we cover briefly. Here's a quick summary of how to apply them: \n", + "\n", + "1. Always use EarlyStopping. This strategy will prevent your weights from being updated well past the point of their peak usefulness.\n", + "2. Use EarlyStopping, Weight Decay and Dropout\n", + "3. Use EarlyStopping, Weight Constraint and Dropout\n", + "4. Also think about the architecture (number of layers, neurons) - determines number of parameters, which is the basis of overfitting - but even \"small\" neural nets can be complicated and overfit!\n", + "\n", + "Weight Decay and Weigh Constraint accomplish similar purposes - preventing over fitting the parameters by regularizing the values. The mechanics are just slightly different. That's why you would not necessary want to apply them together." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3FFhK0tLQHus", + "colab_type": "text" + }, + "source": [ + "## Follow Along" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RO74ukb-QHus", + "colab_type": "text" + }, + "source": [ + "### Early Stopping" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xgQR_iCHSF1x", + "colab_type": "code", + "colab": {} + }, + "source": [ + "%load_ext tensorboard" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "f1GTvVzE6Wzo", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 176 + }, + "outputId": "c8740bf9-3ed0-4b53-e163-0e7acd7ed926" + }, + "source": [ + "from tensorflow.keras.datasets import fashion_mnist\n", + "\n", + "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", + "32768/29515 [=================================] - 0s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", + "26427392/26421880 [==============================] - 1s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", + "8192/5148 [===============================================] - 0s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", + "4423680/4422102 [==============================] - 0s 0us/step\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lMl1AMzo6btD", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "4c3c18b9-47e1-417a-d663-49c61ec3583f" + }, + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.title(y_train[3])\n", + "plt.imshow(X_train[3]);" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7lKoNb426oU9", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X_train, X_test = X_train / 255., X_test / 255." + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "54VH_2Id66DI", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "4dbdd57a-753d-44a5-9be2-6ef32c9c67bf" + }, + "source": [ + "28 * 28 # Same feature size as MNIST" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "784" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AY1HomhxQHus", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 332 + }, + "outputId": "f82fc317-c7eb-4881-88a5-5af652c4badc" + }, + "source": [ + "from tensorflow.keras.callbacks import EarlyStopping, TensorBoard\n", + "from tensorflow.keras.layers import Flatten, Dense\n", + "from tensorflow.keras.layers import ReLU\n", + "import tensorflow as tf\n", + "import os\n", + "\n", + "logdir = os.path.join(\"logs\", \"EarlyStopping-Loss\")\n", + "\n", + "tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)\n", + "stop = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=3)\n", + "\n", + "model = tf.keras.Sequential([\n", + " Flatten(input_shape=(28,28)), # Treats as 784x1\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(10, activation='softmax')\n", + "])\n", + "\n", + "model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam',\n", + " metrics=['accuracy'])\n", + "\n", + "model.fit(X_train, y_train, epochs=99, \n", + " validation_data=(X_test,y_test),\n", + " callbacks=[tensorboard_callback, stop])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/99\n", + " 1/1875 [..............................] - ETA: 0s - loss: 2.3222 - accuracy: 0.0938WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/summary_ops_v2.py:1277: stop (from tensorflow.python.eager.profiler) is deprecated and will be removed after 2020-07-01.\n", + "Instructions for updating:\n", + "use `tf.profiler.experimental.stop` instead.\n", + "WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0090s vs `on_train_batch_end` time: 0.0378s). Check your callbacks.\n", + "1875/1875 [==============================] - 8s 4ms/step - loss: 0.4772 - accuracy: 0.8264 - val_loss: 0.4049 - val_accuracy: 0.8542\n", + "Epoch 2/99\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.3530 - accuracy: 0.8712 - val_loss: 0.3626 - val_accuracy: 0.8705\n", + "Epoch 3/99\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.3232 - accuracy: 0.8810 - val_loss: 0.3439 - val_accuracy: 0.8739\n", + "Epoch 4/99\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.2999 - accuracy: 0.8884 - val_loss: 0.3391 - val_accuracy: 0.8770\n", + "Epoch 5/99\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.2832 - accuracy: 0.8958 - val_loss: 0.3431 - val_accuracy: 0.8748\n", + "Epoch 6/99\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.2698 - accuracy: 0.8993 - val_loss: 0.3691 - val_accuracy: 0.8666\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y7ScqKUzQHuv", + "colab_type": "text" + }, + "source": [ + "### Weight Decay\n", + "\n", + "```python\n", + "Dense(64, input_dim=64,\n", + " kernel_regularizer=regularizers.l2(0.01),\n", + " activity_regularizer=regularizers.l1(0.01)))\n", + "```" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "eQuacT-JQHuv", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 315 + }, + "outputId": "0585c005-7dd2-4b78-ee2a-332012df74db" + }, + "source": [ + "from tensorflow.keras import regularizers\n", + "\n", + "logdir = os.path.join(\"logs\", \"EarlyStopping+L2_WeightDecay\")\n", + "tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)\n", + "\n", + "stop = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=3)\n", + "\n", + "model = tf.keras.Sequential([\n", + " Flatten(input_shape=(28,28)),\n", + " Dense(512, kernel_regularizer=regularizers.l2(0.01)),\n", + " ReLU(negative_slope=.01),\n", + " Dense(512, kernel_regularizer=regularizers.l2(0.01)),\n", + " ReLU(negative_slope=.01),\n", + " Dense(512, kernel_regularizer=regularizers.l2(0.01)),\n", + " ReLU(negative_slope=.01),\n", + " Dense(10, activation='softmax')\n", + "])\n", + "\n", + "model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam',\n", + " metrics=['accuracy'])\n", + "\n", + "model.fit(X_train, y_train, epochs=99, \n", + " validation_data=(X_test,y_test),\n", + " callbacks=[tensorboard_callback, stop])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/99\n", + " 2/1875 [..............................] - ETA: 1:18 - loss: 18.4687 - accuracy: 0.1406WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0214s vs `on_train_batch_end` time: 0.0621s). Check your callbacks.\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 1.3285 - accuracy: 0.7711 - val_loss: 0.7866 - val_accuracy: 0.7929\n", + "Epoch 2/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.7080 - accuracy: 0.8140 - val_loss: 0.7133 - val_accuracy: 0.8133\n", + "Epoch 3/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.6513 - accuracy: 0.8271 - val_loss: 0.6695 - val_accuracy: 0.8193\n", + "Epoch 4/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.6232 - accuracy: 0.8348 - val_loss: 0.6118 - val_accuracy: 0.8383\n", + "Epoch 5/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.6262 - accuracy: 0.8385 - val_loss: 0.6249 - val_accuracy: 0.8274\n", + "Epoch 6/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.5992 - accuracy: 0.8393 - val_loss: 1.4221 - val_accuracy: 0.8022\n", + "Epoch 7/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.6106 - accuracy: 0.8411 - val_loss: 0.6147 - val_accuracy: 0.8258\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CWgfqejzAu8y", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 434 + }, + "outputId": "9072ec5a-2410-4619-9d95-e127dc0959b1" + }, + "source": [ + "model.summary()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"sequential_2\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_2 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_8 (Dense) (None, 512) 401920 \n", + "_________________________________________________________________\n", + "re_lu_6 (ReLU) (None, 512) 0 \n", + "_________________________________________________________________\n", + "dense_9 (Dense) (None, 512) 262656 \n", + "_________________________________________________________________\n", + "re_lu_7 (ReLU) (None, 512) 0 \n", + "_________________________________________________________________\n", + "dense_10 (Dense) (None, 512) 262656 \n", + "_________________________________________________________________\n", + "re_lu_8 (ReLU) (None, 512) 0 \n", + "_________________________________________________________________\n", + "dense_11 (Dense) (None, 10) 5130 \n", + "=================================================================\n", + "Total params: 932,362\n", + "Trainable params: 932,362\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xO1LvbaPA1jB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 822 + }, + "outputId": "3bfbb247-44f0-4cf3-f888-40dc8b49960f" + }, + "source": [ + "%tensorboard --logdir logs" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "\n", + " (async () => {\n", + " const url = await google.colab.kernel.proxyPort(6006, {\"cache\": true});\n", + " const iframe = document.createElement('iframe');\n", + " iframe.src = url;\n", + " iframe.setAttribute('width', '100%');\n", + " iframe.setAttribute('height', '800');\n", + " iframe.setAttribute('frameborder', 0);\n", + " document.body.appendChild(iframe);\n", + " })();\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aCJ1aUIfQHuy", + "colab_type": "text" + }, + "source": [ + "### Weight Constraint\n", + "\n", + "```python\n", + "tf.keras.constraints.MaxNorm(\n", + " max_value=2, axis=0\n", + ")\n", + "```" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gbXBxr1QQHuy", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 384 + }, + "outputId": "edb54eb4-b3e6-4777-c366-2f20f25ae0bf" + }, + "source": [ + "from tensorflow.keras.constraints import MaxNorm\n", + "\n", + "wc = MaxNorm(max_value=2)\n", + "\n", + "logdir = os.path.join(\"logs\", \"EarlyStopping+WeightConstraint\")\n", + "\n", + "tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)\n", + "stop = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=3)\n", + "\n", + "model = tf.keras.Sequential([\n", + " Flatten(input_shape=(28,28)),\n", + " Dense(512, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dense(512, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dense(512, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dense(10, activation='softmax')\n", + "])\n", + "\n", + "model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam', metrics=['accuracy'])\n", + "\n", + "model.fit(X_train, y_train, epochs=99, \n", + " validation_data=(X_test,y_test),\n", + " callbacks=[tensorboard_callback, stop])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/99\n", + " 2/1875 [..............................] - ETA: 1:29 - loss: 2.2771 - accuracy: 0.2031WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0236s vs `on_train_batch_end` time: 0.0721s). Check your callbacks.\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.4696 - accuracy: 0.8282 - val_loss: 0.4013 - val_accuracy: 0.8521\n", + "Epoch 2/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.3519 - accuracy: 0.8718 - val_loss: 0.3834 - val_accuracy: 0.8634\n", + "Epoch 3/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.3234 - accuracy: 0.8805 - val_loss: 0.3729 - val_accuracy: 0.8625\n", + "Epoch 4/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.3084 - accuracy: 0.8839 - val_loss: 0.3509 - val_accuracy: 0.8752\n", + "Epoch 5/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.3001 - accuracy: 0.8895 - val_loss: 0.3555 - val_accuracy: 0.8752\n", + "Epoch 6/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.2905 - accuracy: 0.8911 - val_loss: 0.3274 - val_accuracy: 0.8834\n", + "Epoch 7/99\n", + "1875/1875 [==============================] - 37s 20ms/step - loss: 0.2827 - accuracy: 0.8932 - val_loss: 0.3833 - val_accuracy: 0.8702\n", + "Epoch 8/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.2805 - accuracy: 0.8956 - val_loss: 0.3692 - val_accuracy: 0.8737\n", + "Epoch 9/99\n", + "1875/1875 [==============================] - 38s 20ms/step - loss: 0.2764 - accuracy: 0.8961 - val_loss: 0.3446 - val_accuracy: 0.8797\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9-xMnXMsQHu0", + "colab_type": "text" + }, + "source": [ + "### Dropout" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "MCRL8SmgQHu0", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 384 + }, + "outputId": "ba44f4f3-5df9-4f5d-e827-688fc2e5f497" + }, + "source": [ + "from tensorflow.keras.layers import Dropout\n", + "\n", + "from tensorflow.keras.constraints import MaxNorm\n", + "\n", + "wc = MaxNorm(max_value=2)\n", + "\n", + "logdir = os.path.join(\"logs\", \"EarlyStopping+WeightConstraint+Dropout\")\n", + "\n", + "tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)\n", + "stop = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=3)\n", + "\n", + "model = tf.keras.Sequential([\n", + " Flatten(input_shape=(28,28)),\n", + " Dense(256, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dropout(.2),\n", + " Dense(256, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dropout(.2),\n", + " Dense(256, kernel_constraint=wc),\n", + " ReLU(negative_slope=.01),\n", + " Dropout(.2),\n", + " Dense(10, activation='softmax')\n", + "])\n", + "\n", + "model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam', metrics=['accuracy'])\n", + "\n", + "model.fit(X_train, y_train, epochs=99, \n", + " validation_data=(X_test,y_test),\n", + " callbacks=[tensorboard_callback, stop])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/99\n", + " 2/1875 [..............................] - ETA: 1:12 - loss: 2.3910 - accuracy: 0.1406WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0125s vs `on_train_batch_end` time: 0.0644s). Check your callbacks.\n", + "1875/1875 [==============================] - 16s 9ms/step - loss: 0.5304 - accuracy: 0.8086 - val_loss: 0.4292 - val_accuracy: 0.8452\n", + "Epoch 2/99\n", + "1875/1875 [==============================] - 16s 9ms/step - loss: 0.4056 - accuracy: 0.8515 - val_loss: 0.4088 - val_accuracy: 0.8538\n", + "Epoch 3/99\n", + "1875/1875 [==============================] - 16s 8ms/step - loss: 0.3785 - accuracy: 0.8622 - val_loss: 0.3968 - val_accuracy: 0.8599\n", + "Epoch 4/99\n", + "1875/1875 [==============================] - 16s 8ms/step - loss: 0.3701 - accuracy: 0.8658 - val_loss: 0.3854 - val_accuracy: 0.8672\n", + "Epoch 5/99\n", + "1875/1875 [==============================] - 16s 8ms/step - loss: 0.3597 - accuracy: 0.8697 - val_loss: 0.3679 - val_accuracy: 0.8662\n", + "Epoch 6/99\n", + "1875/1875 [==============================] - 16s 8ms/step - loss: 0.3551 - accuracy: 0.8687 - val_loss: 0.3558 - val_accuracy: 0.8671\n", + "Epoch 7/99\n", + "1875/1875 [==============================] - 16s 8ms/step - loss: 0.3518 - accuracy: 0.8701 - val_loss: 0.3685 - val_accuracy: 0.8669\n", + "Epoch 8/99\n", + "1875/1875 [==============================] - 16s 9ms/step - loss: 0.3496 - accuracy: 0.8709 - val_loss: 0.3617 - val_accuracy: 0.8636\n", + "Epoch 9/99\n", + "1875/1875 [==============================] - 17s 9ms/step - loss: 0.3482 - accuracy: 0.8709 - val_loss: 0.3571 - val_accuracy: 0.8739\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "RFAkmZbVQHu2", + "colab_type": "code", + "colab": {} + }, + "source": [ + "%tensorboard --logdir logs" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HbV6zsdQQHu4", + "colab_type": "text" + }, + "source": [ + "## Challenge\n", + "\n", + "You will apply regularization strategies inside your neural network today, as you try to avoid overfitting it. \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3MXbzdBdURod", + "colab_type": "text" + }, + "source": [ + "# Deploy (Learn)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "11LJtU9MUVD5", + "colab_type": "text" + }, + "source": [ + "## Overview\n", + "\n", + "You've built a dope image classification model, but it's just sitting your Jupyter Notebook. What now? Well you deploy to some down stream application. TensorFlow supports three ways of deploying it's models: \n", + "\n", + "- In-Browser with TensorFlow.js\n", + "- API with TensorFlow Serving (TFX) or another Framework\n", + "- On-Device with TensorFlow Lite\n", + "\n", + "You are already familiar with deploying a model as an API from Unit 3, so we will focus on deploying a model in browser. Both methods rely on the same core idea: save your weights and architecture information, load those parameters into application, and perform inference. \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IHca-4H2UU8p", + "colab_type": "text" + }, + "source": [ + "## Follow Along" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LgqQfelzZTL1", + "colab_type": "text" + }, + "source": [ + "### Train Your Model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Neds_0D2ZR9g", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 173 + }, + "outputId": "8ba2a1b0-7fe3-410b-d092-ca08fa40237a" + }, + "source": [ + "import tensorflow as tf\n", + "\n", + "cpoint = tf.keras.callbacks.ModelCheckpoint(\"weights_best.h5\",\n", + " verbose=1, \n", + " save_weights_only=True)\n", + "\n", + "def create_model():\n", + " model = tf.keras.Sequential([\n", + " Flatten(input_shape=(28,28)),\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(128),\n", + " ReLU(negative_slope=.01),\n", + " Dense(10, activation='softmax')\n", + " ])\n", + "\n", + " model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam',\n", + " metrics=['accuracy'])\n", + "\n", + " return model\n", + "\n", + "model = create_model()\n", + "\n", + "model.fit(X_train, y_train, epochs=2, \n", + " validation_data=(X_test,y_test),\n", + " verbose=2,\n", + " callbacks=[cpoint])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/2\n", + "\n", + "Epoch 00001: saving model to weights_best.h5\n", + "1875/1875 - 7s - loss: 0.4755 - accuracy: 0.8271 - val_loss: 0.4480 - val_accuracy: 0.8377\n", + "Epoch 2/2\n", + "\n", + "Epoch 00002: saving model to weights_best.h5\n", + "1875/1875 - 7s - loss: 0.3519 - accuracy: 0.8697 - val_loss: 0.3781 - val_accuracy: 0.8651\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "50dK2VnuHMZm", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "42c5c5d2-1002-40b8-8b20-6548d91a0744" + }, + "source": [ + "model.evaluate(X_test, y_test)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 [==============================] - 0s 1ms/step - loss: 0.3781 - accuracy: 0.8651\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0.37806665897369385, 0.8651000261306763]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SVSTU7UJZYI1", + "colab_type": "text" + }, + "source": [ + "### Load Exported Model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IfePv6zXHQoq", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 434 + }, + "outputId": "d135edab-7f32-441f-efd2-4809f971687e" + }, + "source": [ + "m = create_model() # Start with same architecture\n", + "m.load_weights('./weights_best.h5') # Load instead of train\n", + "m.summary()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"sequential_7\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_7 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_28 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "re_lu_21 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_29 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "re_lu_22 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_30 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "re_lu_23 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_31 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 134,794\n", + "Trainable params: 134,794\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "os-eSxMbHb3s", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "e1418c04-737e-4de6-a9e6-16faad1479ae" + }, + "source": [ + "m.evaluate(X_test, y_test)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 [==============================] - 0s 1ms/step - loss: 0.3781 - accuracy: 0.8651\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0.37806665897369385, 0.8651000261306763]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "kI8KHA87UUU1", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 332 + }, + "outputId": "13a47563-4f39-40ef-9b61-778842a04826" + }, + "source": [ + "# Save entire model\n", + "# i.e. both weights and architecture\n", + "# Create and train a new model instance.\n", + "model = create_model()\n", + "model.fit(X_train, y_train, epochs=5)\n", + "\n", + "# Save the entire model as a SavedModel.\n", + "!mkdir -p saved_model\n", + "model.save('saved_model/my_model') " + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.4682 - accuracy: 0.8295\n", + "Epoch 2/5\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.3516 - accuracy: 0.8712\n", + "Epoch 3/5\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.3194 - accuracy: 0.8826\n", + "Epoch 4/5\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.2973 - accuracy: 0.8898\n", + "Epoch 5/5\n", + "1875/1875 [==============================] - 7s 4ms/step - loss: 0.2816 - accuracy: 0.8960\n", + "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", + "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Layer.updates (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", + "INFO:tensorflow:Assets written to: saved_model/my_model/assets\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bZrXFdjDIMa_", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "5ea4092a-78ca-4e1c-9cca-7be2932b2cbb" + }, + "source": [ + "model.evaluate(X_test, y_test)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 [==============================] - 0s 1ms/step - loss: 0.3514 - accuracy: 0.8700\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0.35136768221855164, 0.8700000047683716]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aTgNxYlrH2N9", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 434 + }, + "outputId": "674f4c48-1bc1-4981-844f-550ad5971ce3" + }, + "source": [ + "# Load it back fresh, including weights and architecture\n", + "\n", + "new_model = tf.keras.models.load_model('saved_model/my_model')\n", + "new_model.summary()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"sequential_8\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_8 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_32 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "re_lu_24 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_33 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "re_lu_25 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_34 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "re_lu_26 (ReLU) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_35 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 134,794\n", + "Trainable params: 134,794\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HaV3wafoItlT", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 156 + }, + "outputId": "82e4b0ce-0a23-472b-853c-2a980c18be02" + }, + "source": [ + "!ls -alh # Half a meg for a model" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "total 572K\n", + "drwxr-xr-x 1 root root 4.0K Sep 10 17:46 .\n", + "drwxr-xr-x 1 root root 4.0K Sep 10 16:41 ..\n", + "drwxr-xr-x 1 root root 4.0K Aug 31 16:13 .config\n", + "drwxr-xr-x 6 root root 4.0K Sep 10 17:26 logs\n", + "drwxr-xr-x 1 root root 4.0K Aug 27 16:39 sample_data\n", + "drwxr-xr-x 3 root root 4.0K Sep 10 17:46 saved_model\n", + "-rw-r--r-- 1 root root 547K Sep 10 17:41 weights_best.h5\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "DFTk1TWNKuKf", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# One way to reduce size - reduce architecture! (# of layers, neurons)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "8OMhZb7zKFoL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "f0481a28-b88f-4500-bb9c-8af6b688cc90" + }, + "source": [ + "float(3.1415926535897932384626) # It loses some numbers!" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 31 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dkn9dRYHKWzs", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "ba3d7fa4-b90b-427f-e187-8012bafbc30d" + }, + "source": [ + "# Floating point numbers are stored at a certain precision\n", + "# in number of bits - e.g. 16, 32, etc.\n", + "# Above that precision, numbers are rounded off\n", + "\n", + "# When you train, you want full precision! Training is sensitive...\n", + "# But at the very end, it may be okay to reduce\n", + "\n", + "# Another way to reduce size - go from e.g. 32 bit numbers\n", + "# to 16 or 8 bit numbers\n", + "# Basically truncate/round numbers\n", + "float(3.14159)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3.14159" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CtoVzoMOLC5U", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Keep same number of parameters, but less info/detail per parameter" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d6mAg8tpZdzd", + "colab_type": "text" + }, + "source": [ + "### Move Weights to Web Application\n", + "\n", + "Not all models are small enough to work well in-browser. Many neural networks are deploy as micro-service APIs. Micro-service APIs are the architecture you studied during Unit 3. " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0Iz_yr_7ZmGc", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Stretch - https://www.tensorflow.org/js" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9i7OMOhzc6WT", + "colab_type": "text" + }, + "source": [ + "## Challenge\n", + "\n", + "You will be expected to be able to export your model weights and architecutre on the assignment." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rXnXxPCZiAb2", + "colab_type": "text" + }, + "source": [ + "# Custom Callbacks (Learn)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z6vO6xbkiFGb", + "colab_type": "text" + }, + "source": [ + "## Overview\n", + "\n", + "Custom callbacks all you to access data at any point during the training: on batch end, on epoch end, on epoch start, on batch start. Our use case today is a simple one. Let's stop training once we reach a benchmark accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lCocRF5CiYG_", + "colab_type": "text" + }, + "source": [ + "## Follow Along" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gmtMJBBriD2Q", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bOisQxYlibOi", + "colab_type": "text" + }, + "source": [ + "## Challenge\n", + "\n", + "Experiment with improving our custom callback function. " + ] + } + ] +} \ No newline at end of file