From 5612350063d4ea17d9f7155cced3d09b5f517e7e Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 13:17:36 +0200 Subject: [PATCH 01/89] main file for the serendipity app --- serendipity/main.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 serendipity/main.py diff --git a/serendipity/main.py b/serendipity/main.py new file mode 100644 index 0000000..e55c202 --- /dev/null +++ b/serendipity/main.py @@ -0,0 +1,15 @@ +"""This is a simple hello world app""" + +___name___ = "serendipity" +___license___ = "MIT" +___dependencies___ = ["sleep", "app"] +___categories___ = ["EMF", "Other"] + +import ugfx, os, time, sleep, app + + +# initialize screen +ugfx.init() +ugfx.clear() + +ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) From aab6260dbf46643bdd54673123dd17814d7a5dff Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 13:48:41 +0200 Subject: [PATCH 02/89] a test image :) --- serendipity/main.py | 7 +++++-- serendipity/screen.png | Bin 0 -> 176082 bytes 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 serendipity/screen.png diff --git a/serendipity/main.py b/serendipity/main.py index e55c202..b9e1a3d 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -1,4 +1,4 @@ -"""This is a simple hello world app""" +"""Happy accidents or unplanned, fortunate discoveries.""" ___name___ = "serendipity" ___license___ = "MIT" @@ -12,4 +12,7 @@ import ugfx, os, time, sleep, app ugfx.init() ugfx.clear() -ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) +#ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) + +def draw_furniture(): + ugfx.display_image( 0, 0, "serendipity/main.png" ) diff --git a/serendipity/screen.png b/serendipity/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc2b25d7f11b0884e6b160e32b09863efebb8be GIT binary patch literal 176082 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

D9HeW0c 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%0A^8we*`@F(g~LU9C72wV2x%3frTA4O3S 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 Q$^ZZW07*qoM6N<$f?90Dy8r+H literal 0 HcmV?d00001 From 9d80d34ae69663b316e26624997e164d5dcdc031 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 13:52:42 +0200 Subject: [PATCH 03/89] exit on button --- serendipity/main.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/serendipity/main.py b/serendipity/main.py index b9e1a3d..5bf9e8b 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -2,11 +2,11 @@ ___name___ = "serendipity" ___license___ = "MIT" -___dependencies___ = ["sleep", "app"] +___dependencies___ = ["sleep", "app", "ugfx_helper"] ___categories___ = ["EMF", "Other"] -import ugfx, os, time, sleep, app - +import ugfx_helper, ugfx, os, time, sleep, app +from tilda import Buttons # initialize screen ugfx.init() @@ -14,5 +14,19 @@ ugfx.clear() #ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) -def draw_furniture(): +def show_screen(): ugfx.display_image( 0, 0, "serendipity/main.png" ) + + +show_screen() + +while True: + + sleep.wfi() + + if Buttons.is_pressed( Buttons.BTN_Menu ) or \ + Buttons.is_pressed( Buttons.BTN_B ) or \ + Buttons.is_pressed( Buttons.JOY_Center): + break + +ugfx.clear() \ No newline at end of file From 7c27c018cfb31b406fa068056f843eb2a4f4491a Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 13:20:43 +0100 Subject: [PATCH 04/89] update test --- serendipity/main.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/serendipity/main.py b/serendipity/main.py index 5bf9e8b..37b0238 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -2,31 +2,14 @@ ___name___ = "serendipity" ___license___ = "MIT" -___dependencies___ = ["sleep", "app", "ugfx_helper"] +___dependencies___ = ["sleep", "app"] ___categories___ = ["EMF", "Other"] -import ugfx_helper, ugfx, os, time, sleep, app -from tilda import Buttons +import ugfx, os, time, sleep, app + # initialize screen ugfx.init() ugfx.clear() -#ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) - -def show_screen(): - ugfx.display_image( 0, 0, "serendipity/main.png" ) - - -show_screen() - -while True: - - sleep.wfi() - - if Buttons.is_pressed( Buttons.BTN_Menu ) or \ - Buttons.is_pressed( Buttons.BTN_B ) or \ - Buttons.is_pressed( Buttons.JOY_Center): - break - -ugfx.clear() \ No newline at end of file +ugfx.text(5, 5, "[test]", ugfx.BLACK) From b5666b1341a16e198c755330a72fb4f0f3d62e36 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 13:36:31 +0100 Subject: [PATCH 05/89] Revert "update test" This reverts commit 7c27c018cfb31b406fa068056f843eb2a4f4491a. --- serendipity/main.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/serendipity/main.py b/serendipity/main.py index 37b0238..5bf9e8b 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -2,14 +2,31 @@ ___name___ = "serendipity" ___license___ = "MIT" -___dependencies___ = ["sleep", "app"] +___dependencies___ = ["sleep", "app", "ugfx_helper"] ___categories___ = ["EMF", "Other"] -import ugfx, os, time, sleep, app - +import ugfx_helper, ugfx, os, time, sleep, app +from tilda import Buttons # initialize screen ugfx.init() ugfx.clear() -ugfx.text(5, 5, "[test]", ugfx.BLACK) +#ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) + +def show_screen(): + ugfx.display_image( 0, 0, "serendipity/main.png" ) + + +show_screen() + +while True: + + sleep.wfi() + + if Buttons.is_pressed( Buttons.BTN_Menu ) or \ + Buttons.is_pressed( Buttons.BTN_B ) or \ + Buttons.is_pressed( Buttons.JOY_Center): + break + +ugfx.clear() \ No newline at end of file From 95008d4323ce45e2b5f3bf2daa4e2289e2b04a20 Mon Sep 17 00:00:00 2001 From: Skylar MacDonald Date: Sun, 2 Sep 2018 19:43:06 +0100 Subject: [PATCH 06/89] Add torch magic --- emfcampqueer_home/main.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/emfcampqueer_home/main.py b/emfcampqueer_home/main.py index 742eca4..3813e44 100644 --- a/emfcampqueer_home/main.py +++ b/emfcampqueer_home/main.py @@ -12,6 +12,12 @@ ___bootstrapped___ = False import ugfx from homescreen import * import time +from tilda import Buttons +from machine import Pin +from machine import Neopix + +torch = Pin(Pin.GPIO_FET) +neo = Neopix() # Padding for name intro_height = 30 @@ -26,6 +32,8 @@ logo_width = 56 # Maximum length of name before downscaling max_name = 8 +torch_on = False + # Background stuff init() ugfx.clear(ugfx.html_color(0x800080)) @@ -82,4 +90,13 @@ while True: if value_battery: text += "Battery: %s%%" % int(value_battery) status.text(text) + if Buttons.is_pressed(Buttons.BTN_Star): + if torch_on: + torch_on = False + torch.off() + neo.display([0,0]) + else: + torch_on = True + torch.on() + neo.display([0xffffff,0xffffff]) sleep_or_exit(0.5) From 5a0a0f9d4b460a70a3b65918b4a9a53e64211b72 Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 20:19:06 +0100 Subject: [PATCH 07/89] Removed "Hi I'm" --- pride/main.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pride/main.py b/pride/main.py index 240fa44..f0954ee 100644 --- a/pride/main.py +++ b/pride/main.py @@ -37,15 +37,11 @@ for num, colour in enumerate(colours): width_loc = int(num * colour_width) ugfx.area(width_loc, 0, int(colour_width), 320, ugfx.html_color(colour)) -# Message to display -prefix_message = "Hi I'm" ugfx.set_default_font(ugfx.FONT_NAME) # Calc center of screen center = (int(ugfx.width() / 2), int(ugfx.height() / 2)) -# Can't use label since the background covers the flag -ugfx.text(50, center[1] + name_height, prefix_message, ugfx.WHITE) # Process name given_name = homescreen.name("Set your name in the settings app") From f1ff8bef600082b21e91e0490818a4b3f5b20296 Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 20:20:01 +0100 Subject: [PATCH 08/89] Changed center to center_width --- pride/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pride/main.py b/pride/main.py index f0954ee..de41fd0 100644 --- a/pride/main.py +++ b/pride/main.py @@ -40,8 +40,8 @@ for num, colour in enumerate(colours): ugfx.set_default_font(ugfx.FONT_NAME) -# Calc center of screen -center = (int(ugfx.width() / 2), int(ugfx.height() / 2)) +# Calc width center of screen +center_width = int(ugfx.width() / 2) # Process name given_name = homescreen.name("Set your name in the settings app") @@ -64,7 +64,7 @@ while True: wifi_strength_value = homescreen.wifi_strength() if wifi_strength_value: wifi_message = 'WiFi: %s%%' % int(wifi_strength_value) - wifi_text = ugfx.text(center[0], ugfx.height() - info_height, wifi_message, ugfx.BLACK) + wifi_text = ugfx.text(center_width, ugfx.height() - info_height, wifi_message, ugfx.BLACK) battery_value = homescreen.battery() if battery_value: From d5998a9f063945d586c59dc65e33303207e93e49 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 20:20:03 +0100 Subject: [PATCH 09/89] nyan cat animation --- nyan/main.py | 40 ++++++++++++++++++++++++++++++++++++++++ shared/nyan/0.png | Bin 0 -> 843 bytes shared/nyan/1.png | Bin 0 -> 766 bytes shared/nyan/10.png | Bin 0 -> 756 bytes shared/nyan/11.png | Bin 0 -> 773 bytes shared/nyan/2.png | Bin 0 -> 755 bytes shared/nyan/3.png | Bin 0 -> 766 bytes shared/nyan/4.png | Bin 0 -> 756 bytes shared/nyan/5.png | Bin 0 -> 773 bytes shared/nyan/6.png | Bin 0 -> 773 bytes shared/nyan/7.png | Bin 0 -> 766 bytes shared/nyan/8.png | Bin 0 -> 755 bytes shared/nyan/9.png | Bin 0 -> 766 bytes 13 files changed, 40 insertions(+) create mode 100644 nyan/main.py create mode 100644 shared/nyan/0.png create mode 100644 shared/nyan/1.png create mode 100644 shared/nyan/10.png create mode 100644 shared/nyan/11.png create mode 100644 shared/nyan/2.png create mode 100644 shared/nyan/3.png create mode 100644 shared/nyan/4.png create mode 100644 shared/nyan/5.png create mode 100644 shared/nyan/6.png create mode 100644 shared/nyan/7.png create mode 100644 shared/nyan/8.png create mode 100644 shared/nyan/9.png diff --git a/nyan/main.py b/nyan/main.py new file mode 100644 index 0000000..6e5f2a3 --- /dev/null +++ b/nyan/main.py @@ -0,0 +1,40 @@ +"""Nyan Cat Animation!""" + +___name___ = "serendipity" +___license___ = "MIT" +___dependencies___ = ["sleep", "app", "ugfx_helper", + "shared/nyan/0.png", + "shared/nyan/1.png", + "shared/nyan/2.png", + "shared/nyan/3.png", + "shared/nyan/4.png", + "shared/nyan/5.png", + "shared/nyan/6.png", + "shared/nyan/7.png", + "shared/nyan/8.png", + "shared/nyan/9.png", + "shared/nyan/10.png", + "shared/nyan/11.png"] + +___categories___ = ["EMF", "Other"] + +import ugfx_helper, os, wifi, ugfx, http, time, sleep, app +from tilda import Buttons + +# initialize screen +ugfx_helper.init() +ugfx.clear(ugfx.BLACK) + +ugfx.backlight(100) + +n = 0 +while True: + ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) + n = (n+2) % 12 + sleep.sleep_ms(10) + + if Buttons.is_pressed(Buttons.BTN_B): + break + +ugfx.clear() +app.restart_to_default() \ No newline at end of file diff --git a/shared/nyan/0.png b/shared/nyan/0.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9128c463ab74e46df804ef7cebd2ad38380c42 GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>D)I2y4PD-Wv_KUNQM8f8Du|`$>ND1_ybG z1+@upW)-RaK6cEafvKfv{^EbK~*2y+A*6mRbYjdhTnrsrT%w@7go- zNPMVg+&|m#-1jFbzck}5nc4Ql{Wxv@W2pw$t}Ef;%ViA`4)DoH?NMI7@_})}fz55s zH_aB#*GubSTedmgOwT9X`TJdo2nM!2GCy`~-Tb(h<$C)5WpkGqvejJZpSWuMJqG4^ zoIcU)>$fW8WL<6gsg`};@+Ho6=7fL0R1ywMKG>8S zE5a9F^L*REry}g)4UGESVt$tGuXfCH+jHV=`0MMp<2Gz|IKpD^fc>yZ-z(uyEr%_e#D`N4j{M|1^1DBq{n_sMrJ9V)aU5q} zweY5;yFTt{+fVO0cI-dc(ed7a zfw@kvLOG8=PWh-n1EW9JYR`mM6HU#R&h!dbkK&rc#Ku$6x*@ps+F6}U&usPQo(CG{ zi}o=IEp!bmbq$O{j0~(y4Xlg} owGE7{3=BF1bDdB$D zkvYzEkGXE$s#RWl*ThfFkugX(z_U&F-HDH31&k6OVh{H{iJa|wQLG}f#diIZV+Y$$ zFY^DA&MfgE>0!?kZ~lxOk-ojV*FAANaMtx{>czI3GZKKh_8#8inPqX=cNP2PkE;)! zwLZ}Bo-xffJ4p8P7p@Anh`DLv2O6HYCkLN@^da-buCrl&$C!){A7Tn`VAL1Bw(;u5 zUs5~wd*ldm$=_gmD99=CL8f38f9rv-EXtwlw>;hO>bU0bFfO?}mJ)xe?B*}cw9aIE z@sg3PCVR)1=BqAz=7xtaz84PBY|dS{LB+eo{RTtA0pr6;4Cj0bRy{n!@&99c!mha* zKc4PB>z>yC>xOm00e+_Mf9@44IRD@AtYCfL%V|I#I6atirL(D;SC8YK_EcsB)2MlJ>gH2zq{P%uj6?>rJI-mL* zwSCExzRYKl_@I0sR)#$@DQuJ6WCrFq^B#p0Eq@rIP6^LR$=_Z8jC9o!*NBpo#FA92 zqVq{=tYG7q-sBK_mWnj=DnCpb1AvZrIGp!Q0hMzuH{{b~H Nc)I$ztaD0e0sy|>Glu{G literal 0 HcmV?d00001 diff --git a/shared/nyan/10.png b/shared/nyan/10.png new file mode 100644 index 0000000000000000000000000000000000000000..187ed6142c9c84a280e465681ccd3200ec6d1a3b GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>Dp1!W^k2smc zjO0Bg*-QmWpYe2Y45_&F_Ev6DlYszR!p_FoFIgS*1KzTR>}ZTxV86p@{e1;%-)TB3 zD?$%`|JypbpMCDlmKCc-n-uuH+{{@F5)RaFOg{VX*PAy#OcM??=(FxAoIEACsOa&h zlTUdhJ}i2upZjUmy6k;h!k;gY1*&GWF{@Nro_Tkdqj`T29AYlfNwYKihWU zd`9Lv#u@XEJh^7Nw@=uJ>vHdgIcFHy{#493;$i7^XlhyB?tOEf#JWC^GI%iaz}{Nz zy>otqEkAffT0weKGuP=Y@9iTLf|w*e^d#J_ULI5?#`^8l&808A`Vvc@W+*>gmbvfh zs%^aUpU7(g?P1FK^}&+yUP=9dfYX}tEmzy`-gvB=S-n#yQrLun%|_YcdP2Fo8e8=~ zuIkgA{@*Vz?P%G}$o6NS!GC_2zYnb%p1yk?D|MhDo$0hy;*Bp4Yna~TcF!qNV3+#G zb+o(iZSs3Dg9oh#XUc5sZ@;v!*)!6TfjLgV=hn~new}M&8W{D(&bDdI9oMtGQMszv zl9_E!#*fq6f2`EtvNCbsY0M{KkifogyTwr*y{*^I{cLW1nP^(AMosyQc3s(|JpsS4GC1D_?n3r0XePm8t#koz39E&cjpWtvxo#R!ha`?qTAoP%`+s z*5k&tRndOmKZQhW@Ho&A&$N8a)>P(KJCZF6BN*8B*xYD4tp2<>de4csYm8$GZroHz zVv_g}VW7LfYN~Mi*{jm}sbL=vU+MpOcJ%?apuKf=D|JrWzb{K-ySDEfx5S4hiBX}y z7ezgM@=JGDNkaMa57!Ju?f3J(L`Tk=IS$Hbc4Au)bJ=I+!@kf^X@_&b0bvy2DbX(!#y+qcZiIL~W z)erMb7aTN*_4{D9&bm!VE8#$cI?L+g2Qv4n26(#tYp>Hi#JM->K!Z3N_xRdP`(kYX@0FtpG$u+%j$3NbRUGBvO=HqDmpF540E6%ve^Z-0=Y9qriGuJ4Yv(?hGkNk} z|J3V}1`k{h>+d_MUm81m`q|Z9JAOwV<*e)X6g=|N z02TTM^zmfcWbJzKK>?GvL1Wx+T7Zy8z3`!q26%RcK~(z-QviOh`t z`#gE|Ogt5J2K_503#W3|u;18oc0B`|P2>-wE&1G6J<~*DnAvQiZ-^Ky^jrEaYc{(u z@7ue34EihoyMJu(=wRac;rC%yotk`J-iM&GKEG=!KAcp1u>AGcSGlFu4mrV`5+8gM zHMw?pHJ9%9o%~^&{hWvGKc99@vb$Fl(K$23{v104^E|;dwI9?ty6?|wOZaDD_~Ehp zbaUChoo_@99vnS%jy-C!(;Q~WU&pt$%$586jET)gct?t@p+TfBSGUCn#Z6X1(Hxl? zWqTr6nIt}lBz%2tpgMnH{jw$R6GWEIWoG25s4UnpEjj2&$bklN-rL^Dj9W`zbqe+OO2Vs}kNeFfylY$S(5N>u)MP&>+rRJ?W%b`ySm7hq&0^JvnwT z-Sj2*-#iB9I9(mjeZI|&vu~E{&Q~{Q$}^jqb*atrMgpV6hf9gOJftFKxvpZr{B8Ha zv(^V1uCrg>Q1nXGl+}iLjsIrugah5J>z#j_gK z-ri+Pl&bxgUe?Ir!6os*r@(&>&voWCA-0zXJn9NtpRU)Fj^^XHqpg4Y;;3LbWp&gb%$o@0?{bYZ8?rPG~l z@%6WAJj+YA`yXhS&$?{4>tC4@7v!(Yyt`_+Hs(NsJlpZb4|=Y2wzXcIQ}AAI^1U}% zKb}O&zI4)PJ9LiM;K9>FFLe#PmsGLaIseyds%!Riy-}>tz?jb=mg4(&|B-!{S$Qg6 z7pz%j_3?_*TOkV$g9qsiyDRuExvWWHW@BXABl<)9inUP9lTPM$z(`juag8WRNi0dV zN-jzTQVd20h8DU8mbwN;Aw~vPrUq8VhS~;3Rt5$gg1Js88glbfGSez?YxwDN^&e0J NgQu&X%Q~loCICURF@^vD literal 0 HcmV?d00001 diff --git a/shared/nyan/4.png b/shared/nyan/4.png new file mode 100644 index 0000000000000000000000000000000000000000..187ed6142c9c84a280e465681ccd3200ec6d1a3b GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>Dp1!W^k2smc zjO0Bg*-QmWpYe2Y45_&F_Ev6DlYszR!p_FoFIgS*1KzTR>}ZTxV86p@{e1;%-)TB3 zD?$%`|JypbpMCDlmKCc-n-uuH+{{@F5)RaFOg{VX*PAy#OcM??=(FxAoIEACsOa&h zlTUdhJ}i2upZjUmy6k;h!k;gY1*&GWF{@Nro_Tkdqj`T29AYlfNwYKihWU zd`9Lv#u@XEJh^7Nw@=uJ>vHdgIcFHy{#493;$i7^XlhyB?tOEf#JWC^GI%iaz}{Nz zy>otqEkAffT0weKGuP=Y@9iTLf|w*e^d#J_ULI5?#`^8l&808A`Vvc@W+*>gmbvfh zs%^aUpU7(g?P1FK^}&+yUP=9dfYX}tEmzy`-gvB=S-n#yQrLun%|_YcdP2Fo8e8=~ zuIkgA{@*Vz?P%G}$o6NS!GC_2zYnb%p1yk?D|MhDo$0hy;*Bp4Yna~TcF!qNV3+#G zb+o(iZSs3Dg9oh#XUc5sZ@;v!*)!6TfjLgV=hn~new}M&8W{D(&bDdI9oMtGQMszv zl9_E!#*fq6f2`EtvNCbsY0M{KkifogyTwr*y{*^I{cLW1nP^(AMosyQc3s(|JpsS4GC1D_?n3r0XePm8t#koz39E&cjpWtvxo#R!ha`?qTAoP%`+s z*5k&tRndOmKZQhW@Ho&A&$N8a)>P(KJCZF6BN*8B*xYD4tp2<>de4csYm8$GZroHz zVv_g}VW7LfYN~Mi*{jm}sbL=vU+MpOcJ%?apuKf=D|JrWzb{K-ySDEfx5S4hiBX}y z7ezgM@=JGDNkaMa57!Ju?f3J(L`Tk=IS$Hbc4Au)bJ=I+!@kf^X@_&b0bvy2DbX(!#y+qcZiIL~W z)erMb7aTN*_4{D9&bm!VE8#$cI?L+g2Qv4n26(#tYp>Hi#JM->K!Z3N_xRdP`(kYX@0FtpG$u+%j$3NbRUGBvO=HqDp1!W^k2smc zjO0Bg*-QmW-}Q8H45_&F_Lg_vVFeM^fOK}YQsyNSt@1AMK6xyAMEZpScLw{ty28II z6^zXPuI#^OUDWeXz?uS?a zwbX;lbUC^i3v53y8a!w{uuSaaySU?=oriuh%-C*3b-cg%Lox%5ED z;6drZLz>S6WUpWL5Z^gBxv;?7k=CD5F6B!uGe~^sN_g6QwkJj4 z**@`Y(}bngWo_zjkz?lhG5_Gq&-DuT>|?AA?*Com4Rn)NLYz9w>GTN0AFG*bxZd=o zZxhtID3p0?vj+q7zu+HhSM5{&kQ#I2RbiL=lD}-i+6f05wzI!K^7&x)k|X?MnsezTTp|*jMm4QKrV6GF2hTQy= Z%(P0}8h-j*{Rh;*;OXk;vd$@?2>{^$JO2Ox literal 0 HcmV?d00001 diff --git a/shared/nyan/7.png b/shared/nyan/7.png new file mode 100644 index 0000000000000000000000000000000000000000..73ce179b7e91cb615ba17334074a8717d8ad3672 GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>D zkvYzEkGXE$s#RWl*ThfFkugX(z_U&F-HDH31&k6OVh{H{iJa|wQLG}f#diIZV+Y$$ zFY^DA&MfgE>0!?kZ~lxOk-ojV*FAANaMtx{>czI3GZKKh_8#8inPqX=cNP2PkE;)! zwLZ}Bo-xffJ4p8P7p@Anh`DLv2O6HYCkLN@^da-buCrl&$C!){A7Tn`VAL1Bw(;u5 zUs5~wd*ldm$=_gmD99=CL8f38f9rv-EXtwlw>;hO>bU0bFfO?}mJ)xe?B*}cw9aIE z@sg3PCVR)1=BqAz=7xtaz84PBY|dS{LB+eo{RTtA0pr6;4Cj0bRy{n!@&99c!mha* zKc4PB>z>yC>xOm00e+_Mf9@44IRD@AtYCfL%V|I#I6atirL(D;SC8YK_EcsB)2MlJ>gH2zq{P%uj6?>rJI-mL* zwSCExzRYKl_@I0sR)#$@DQuJ6WCrFq^B#p0Eq@rIP6^LR$=_Z8jC9o!*NBpo#FA92 zqVq{=tYG7q-sBK_mWnj=DnCpb1AvZrIGp!Q0hMzuH{{b~H Nc)I$ztaD0e0sy|>Glu{G literal 0 HcmV?d00001 diff --git a/shared/nyan/8.png b/shared/nyan/8.png new file mode 100644 index 0000000000000000000000000000000000000000..04db1813924395a2a29a5056c4d4c95ea2e09c06 GIT binary patch literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>DmpF540E6%ve^Z-0=Y9qriGuJ4Yv(?hGkNk} z|J3V}1`k{h>+d_MUm81m`q|Z9JAOwV<*e)X6g=|N z02TTM^zmfcWbJzKK>?GvL1Wx+T7Zy8z3`!q26%RcK~(z-QviOh`t z`#gE|Ogt5J2K_503#W3|u;18oc0B`|P2>-wE&1G6J<~*DnAvQiZ-^Ky^jrEaYc{(u z@7ue34EihoyMJu(=wRac;rC%yotk`J-iM&GKEG=!KAcp1u>AGcSGlFu4mrV`5+8gM zHMw?pHJ9%9o%~^&{hWvGKc99@vb$Fl(K$23{v104^E|;dwI9?ty6?|wOZaDD_~Ehp zbaUChoo_@99vnS%jy-C!(;Q~WU&pt$%$586jET)gct?t@p+TfBSGUCn#Z6X1(Hxl? zWqTr6nIt}lBz%2tpgMnH{jw$R6GWEIWoG25s4UnpEjj2&$bklN-rL^Dj9W`zbqe+OO2Vs}kNeFfylY$S(5N>u)MP&>+rRJ?W%b`ySm7hq&0^JvnwT z-Sj2*-#iB9I9(mjeZI|&vu~E{&Q~{Q$}^jqb*atrMgpV6hf9gOJftFKxvpZr{B8Ha zv(^V1uCrg>Q1nXGl+}iLjsIrugah5J>z#j_gK z-ri+Pl&bxgUe?Ir!6os*r@(&>&voWCA-0zXJn9NtpRU)Fj^^XHqpg4Y;;3LbWp&gb%$o@0?{bYZ8?rPG~l z@%6WAJj+YA`yXhS&$?{4>tC4@7v!(Yyt`_+Hs(NsJlpZb4|=Y2wzXcIQ}AAI^1U}% zKb}O&zI4)PJ9LiM;K9>FFLe#PmsGLaIseyds%!Riy-}>tz?jb=mg4(&|B-!{S$Qg6 z7pz%j_3?_*TOkV$g9qsiyDRuExvWWHW@BXABl<)9inUP9lTPM$z(`juag8WRNi0dV zN-jzTQVd20h8DU8mbwN;Aw~vPrUq8VhS~;3Rt5$gg1Js88glbfGSez?YxwDN^&e0J NgQu&X%Q~loCICURF@^vD literal 0 HcmV?d00001 From 2f93b6ee0b6d73f5f427f5776cf3ad98818805cf Mon Sep 17 00:00:00 2001 From: Anthony Mann Date: Sun, 2 Sep 2018 20:20:27 +0100 Subject: [PATCH 10/89] Initial Aerospace badge initial commit! --- home_aerospace/aerospace-logo.png | Bin 0 -> 14482 bytes home_aerospace/main.py | 126 ++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 home_aerospace/aerospace-logo.png create mode 100644 home_aerospace/main.py diff --git a/home_aerospace/aerospace-logo.png b/home_aerospace/aerospace-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f5374669184cf6d7cd630926d792435647c8f464 GIT binary patch literal 14482 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 -intro_width: + # intro_position_left -= 1 + # intro_object.x( + # intro_position_left + # ) + # else: + # intro_object.x(0) + # intro_position_left = 0 + + ledChange() + + sleep_or_exit(0.05) From ea236d4c7bf9ca10566c5aae8739b15cbcfbc8c0 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 20:42:58 +0100 Subject: [PATCH 11/89] local images --- serendipity/main.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/serendipity/main.py b/serendipity/main.py index 5bf9e8b..6dd0bea 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -2,31 +2,29 @@ ___name___ = "serendipity" ___license___ = "MIT" -___dependencies___ = ["sleep", "app", "ugfx_helper"] +___dependencies___ = ["sleep", "app", "ugfx_helper", "serendipity/world.png", "serendipity/sun.png"] ___categories___ = ["EMF", "Other"] -import ugfx_helper, ugfx, os, time, sleep, app +import ugfx_helper, os, wifi, ugfx, http, time, sleep, app from tilda import Buttons # initialize screen -ugfx.init() -ugfx.clear() +ugfx_helper.init() +ugfx.clear(ugfx.BLACK) #ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) -def show_screen(): - ugfx.display_image( 0, 0, "serendipity/main.png" ) +sun = ugfx.Image("serendipity/seresun.png") +sun = ugfx.Image("serendipity/world.png") - -show_screen() - -while True: - - sleep.wfi() +ugfx.backlight(100) - if Buttons.is_pressed( Buttons.BTN_Menu ) or \ - Buttons.is_pressed( Buttons.BTN_B ) or \ - Buttons.is_pressed( Buttons.JOY_Center): - break - -ugfx.clear() \ No newline at end of file +n = 0 +while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): + + ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) + n = (n+1) % 12 + sleep.sleep_ms(10) + +ugfx.clear() +app.restart_to_default() \ No newline at end of file From bd9214ca4f24d98127e74d7a2e3a3a3ce09e3437 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 20:44:32 +0100 Subject: [PATCH 12/89] better categories corrected the name --- nyan/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nyan/main.py b/nyan/main.py index 6e5f2a3..34cfde5 100644 --- a/nyan/main.py +++ b/nyan/main.py @@ -1,6 +1,6 @@ """Nyan Cat Animation!""" -___name___ = "serendipity" +___name___ = "nyan" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "ugfx_helper", "shared/nyan/0.png", @@ -16,7 +16,7 @@ ___dependencies___ = ["sleep", "app", "ugfx_helper", "shared/nyan/10.png", "shared/nyan/11.png"] -___categories___ = ["EMF", "Other"] +___categories___ = ["FUN", "Homescreens"] import ugfx_helper, os, wifi, ugfx, http, time, sleep, app from tilda import Buttons From 0bbf655cc2477d775498c176933a7c95d55a4194 Mon Sep 17 00:00:00 2001 From: Tim Jacobs Date: Sun, 2 Sep 2018 21:28:04 +0100 Subject: [PATCH 13/89] simple bf interpreter --- bf-interpreter/main.py | 208 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 bf-interpreter/main.py diff --git a/bf-interpreter/main.py b/bf-interpreter/main.py new file mode 100644 index 0000000..65cd66a --- /dev/null +++ b/bf-interpreter/main.py @@ -0,0 +1,208 @@ +"""Simple brainfuck interpreter. + +Runs very slowly... prints sierpinski triangle""" + +___name___ = "bf interpreter" +___license___ = "MIT" +___dependencies___ = ["sleep", "app"] +___categories___ = ["Other"] + +import ugfx, os, time, sleep, app +from tilda import Buttons +from time import sleep_ms + +# initialize screen +ugfx.init() +ugfx.clear() + +ugfx.set_default_font(ugfx.FONT_TITLE) + + +Prog=""" + +>-[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>++[-]->>>>+>>>+>>>+>>>+>>>+> + >>+>>>+>>>+>>>++[-<+]-<<<<+<<++++[->++++++++<]<++[------>+<]>++<<+[--->++<]>++ +<<-[--->+<]>------<+[-<+]-<[>>+[->+]-<[-]<<[-]+++[>[-]++++++++++.[-]+++[>+[>>+<< +-]>>[<<++[-<+]->++[->+]->-]<<+[-<+]->-[-[-[-[-[-[-[-[->>>]>>>]>>>]>>>]>>>]>>>]>> +>]>>>]>>>>>>>>>>>>>>>>>>>>> > > > > > > > > > > > > >>>>>>>>>>[+[-<+]-<<<<<<.>>> +>>>>]>[+[-<+]-<<<< <<<.>>>>>>>>]>[+[- +<+]-<<<<<<<<.>>> tic tac toe >>>>>>]+[-<+]-<< +<<<.>>>-]<-]+++ to play: type a number (1 to 9) to +++++++.[-]<<<< +<<[<<<<<<<<<<<+ place an X at that grid location [--->++<]>+++.[ +->+++++++<]>.++ ++++.-[---->+<] +>+++.---[->+++<] [ http://mitxela.com/ ] >.+++[->++++<]>+ +.+++++.-[->+++++<] >.[--->+<]>-.+[-<+ +]-<[-]>>>>]<[<<<<<<<++++[++++>---<]>+.[++++>---<]>-.+++[->+++<]>++.+[--->+<]>+.+ +[---->+<]>+++.[--->+<]>-.[-]+[-<+]-<[-]>>>>]<[<<<<<<<<<<+[--->++<]>+++.[->++++++ ++<]>.++++++.-[---->+<]>+++.++++++[->++<]>.+[--->+<]>.++++.++++[->+++<]>.--[--->+ +<]>.[--->+<]>-.+[-<+]-<[-]>>>>]<+[-<+]-<[>>->>>>>>+[-<<<<[-]<<[-]>>>>-[>>[-]+<<+ +<[-]<[-]<[-]<[-]-[----->+<]>---<,>[-<->]<[>>+>+<<<-]>>[<<+>>-]+++++++++[->-[<<]> +]>>-]<<<<[-]>>>>[-]+<<<<<<[>>+>+<<<-]>>[<<+>>-]>>]>>-<<<[-]<<[<->-]<-[-[-[-[-[-[ +-[-[->>>]>>>]>>>]>>>]>>>]>>>]>>>]>>>]]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +>[->++[-<+]->>>>>[>>>[>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>>>>[> +>>[>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>>>>>>>>>>>>>[>>>[>>>[+[- +<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<[-] +++[->+]->]]]+[-<+]->>>>>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+ +[-<+]->>>>>>>>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>> +>[>>>>>>>>>>>>[>>>>>>>>>>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>[>> +>>>>[>>>>>>[+[-<+]-<<<<<<<<<[-]++[->+]->]]]+[-<+]-<<<<<<<<<-[++[->+]-<<<<<<<<<<[ +-]++[->+]->>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->]+[-<+]->>>>>>>[+[-<+]-<<<<<<<<<<[-]+ +[->+]->]+[-<+]->>>>>>>>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->]+[-<+]->>>>>>>>>>>>>[+[-< ++]-<<<<<<<<<<[-]+[->+]->]+[-<+]->>>>>>>>>>>>>>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->]+[ +-<+]->>>>>>>>>>>>>>>>>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->]+[-<+]->>>>>>>>>>>>>>>>>>> +>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->]+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>>[+[-<+]-<<<<<<< +<<<[-]+[->+]->]+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>>>>>[+[-<+]-<<<<<<<<<<[-]+[->+]->] ++[-<+]-<<[-]>[-]+>>>>>>[>>>[>>[+[-<+]-<[-]<[-]++++[->+]->]]]>+[-<+]->>>>>[>>[>>> +>[+[-<+]-<[-]<[-]+++[->+]->]]]>+[-<+]->>>>[>>>>[>>>[+[-<+]-<[-]<[-]++[->+]->]]]> ++[-<+]->>>>>>>>>>>>>>[>>>[>>[+[-<+]-<[-]<[-]+++++++[->+]->]]]>+[-<+]->>>>>>>>>>> +>>>[>>[>>>>[+[-<+]-<[-]<[-]++++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>[>>>>[>>>[+[-<+] +-<[-]<[-]+++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>>[>>>[>>[+[-<+]-<[-]<[-]++ +++++++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>>[>>[>>>>[+[-<+]-<[-]<[-]+++++++ +++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>[>>>>[>>>[+[-<+]-<[-]<[-]++++++++[->+] +->]]]>+[-<+]->>>>>[>>>>>>>>>[>>>>>>>>[+[-<+]-<[-]<[-]++++++++[->+]->]]]>+[-<+]-> +>>>>[>>>>>>>>[>>>>>>>>>>[+[-<+]-<[-]<[-]+++++[->+]->]]]>+[-<+]->>>>[>>>>>>>>>>[> +>>>>>>>>[+[-<+]-<[-]<[-]++[->+]->]]]>+[-<+]->>>>>>>>[>>>>>>>>>[>>>>>>>>[+[-<+]-< +[-]<[-]+++++++++[->+]->]]]>+[-<+]->>>>>>>>[>>>>>>>>[>>>>>>>>>>[+[-<+]-<[-]<[-]++ +++++[->+]->]]]>+[-<+]->>>>>>>[>>>>>>>>>>[>>>>>>>>>[+[-<+]-<[-]<[-]+++[->+]->]]]> ++[-<+]->>>>>>>>>>>[>>>>>>>>>[>>>>>>>>[+[-<+]-<[-]<[-]++++++++++[->+]->]]]>+[-<+] +->>>>>>>>>>>[>>>>>>>>[>>>>>>>>>>[+[-<+]-<[-]<[-]+++++++[->+]->]]]>+[-<+]->>>>>>> +>>>[>>>>>>>>>>[>>>>>>>>>[+[-<+]-<[-]<[-]++++[->+]->]]]>+[-<+]->>>>>[>>>>>>>>>>>> +[>>>>>>>>>>>[+[-<+]-<[-]<[-]++++++++++[->+]->]]]>+[-<+]->>>>[>>>>>>>>>>>>>[>>>>> +>>>>>>>[+[-<+]-<[-]<[-]++[->+]->]]]>+[-<+]->>>>>>>>>>>[>>>>>>[>>>>>[+[-<+]-<[-]< +[-]++++++++[->+]->]]]>+[-<+]->>>>>>>>>>[>>>>>>>[>>>>>>[+[-<+]-<[-]<[-]++++[->+]- +>]]]>+[-<+]->>>>>>[>>>[>[+[-<+]-<[-]<[-]++++[->+]->]]]>+[-<+]->>>>>>[>[>>>>>[+[- +<+]-<[-]<[-]+++[->+]->]]]>+[-<+]->>>>[>>>>>[>>>[+[-<+]-<[-]<[-]++[->+]->]]]>+[-< ++]->>>>>>>>>>>>>>>[>>>[>[+[-<+]-<[-]<[-]+++++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>> +[>[>>>>>[+[-<+]-<[-]<[-]++++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>[>>>>>[>>>[+[-<+]-< +[-]<[-]+++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>[>>>[>[+[-<+]-<[-]<[-]++++ +++++++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>[>[>>>>>[+[-<+]-<[-]<[-]++++++++ ++[->+]->]]]>+[-<+]->>>>>>>>>>>>>>>>>>>>>>[>>>>>[>>>[+[-<+]-<[-]<[-]++++++++[->+] +->]]]>+[-<+]->>>>>>[>>>>>>>>>[>>>>>>>[+[-<+]-<[-]<[-]++++++++[->+]->]]]>+[-<+]-> +>>>>>[>>>>>>>[>>>>>>>>>>>[+[-<+]-<[-]<[-]+++++[->+]->]]]>+[-<+]->>>>[>>>>>>>>>>> +[>>>>>>>>>[+[-<+]-<[-]<[-]++[->+]->]]]>+[-<+]->>>>>>>>>[>>>>>>>>>[>>>>>>>[+[-<+] +-<[-]<[-]+++++++++[->+]->]]]>+[-<+]->>>>>>>>>[>>>>>>>[>>>>>>>>>>>[+[-<+]-<[-]<[- +]++++++[->+]->]]]>+[-<+]->>>>>>>[>>>>>>>>>>>[>>>>>>>>>[+[-<+]-<[-]<[-]+++[->+]-> +]]]>+[-<+]->>>>>>>>>>>>[>>>>>>>>>[>>>>>>>[+[-<+]-<[-]<[-]++++++++++[->+]->]]]>+[ +-<+]->>>>>>>>>>>>[>>>>>>>[>>>>>>>>>>>[+[-<+]-<[-]<[-]+++++++[->+]->]]]>+[-<+]->> +>>>>>>>>[>>>>>>>>>>>[>>>>>>>>>[+[-<+]-<[-]<[-]++++[->+]->]]]>+[-<+]->>>>>>[>>>>> +>>>>>>>[>>>>>>>>>>[+[-<+]-<[-]<[-]++++++++++[->+]->]]]>+[-<+]->>>>[>>>>>>>>>>>>> +>[>>>>>>>>>>>>[+[-<+]-<[-]<[-]++[->+]->]]]>+[-<+]->>>>>>>>>>>>[>>>>>>[>>>>[+[-<+ +]-<[-]<[-]++++++++[->+]->]]]>+[-<+]->>>>>>>>>>[>>>>>>>>[>>>>>>[+[-<+]-<[-]<[-]++ +++[->+]->]]]>+[-<+]-<[>>+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>>>>>[+[-<+]-<[-]<[-]+++++ ++++++[->+]->]+[-<+]->>>>>>>>>>>>>>>>>>>>>>[+[-<+]-<[-]<[-]++++++++[->+]->]+[-<+] +->>>>>>>>>>[+[-<+]-<[-]<[-]++++[->+]->]+[-<+]->>>>[+[-<+]-<[-]<[-]++[->+]->]+[-< ++]->>>>>>>>>>>>>>>>>>>>>>>>>[+[-<+]-<[-]<[-]+++++++++[->+]->]+[-<+]->>>>>>>>>>>> +>>>>>>>[+[-<+]-<[-]<[-]+++++++[->+]->]+[-<+]->>>>>>>>>>>>>[+[-<+]-<[-]<[-]+++++[ +->+]->]+[-<+]->>>>>>>[+[-<+]-<[-]<[-]+++[->+]->]+[-<+]->>>>>>>>>>>>>>>>[+[-<+]-< +[-]<[-]++++++[->+]->]+[-<+]->]>>+[-<+]-<<<<[+[->+]->>>>>>>>>>>>>>>>>[+[-<+]-<[-] +<[-]++[->+]->]+[-<+]->]>>>>+[-<+]-<<[>>>+[-<+]-<[-]<[+[-<+]->++[->+]-<<-]+[-<+]- +>-[-[-[-[-[-[-[-[->>>]>>>]>>>]>>>]>>>]>>>]>>>]>>>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +>>>>>>>>>>>>>->>++[-<+]->]>>>>+[-<+]-<<[-]>>>+[-<+]-<<<<[-]>>>>>+[-<+]->>>>>>[>> +>[>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>>>>>[>>>[>>>[+[-<+]-<<< +<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>>>>>>>>>>>>>>[>>>[>>>[+[-<+]-<<<<<<<<<< +<[-]++[->+]->]]]+[-<+]->>>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]-> +]]]+[-<+]->>>>>>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]->]]]+[-<+]- +>>>>>>>>>>>>[>>>>>>>>>[>>>>>>>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>[ +>>>>>>>>>>>>[>>>>>>>>>>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]->]]]+[-<+]->>>>>>>>>>>>[> + >>>>>[>>>>>>[+[-<+]-<<<<<<<<<<<[-]++[->+]->]]]+[-<+]-<[-]]++[->+]->]+[-<+]-<+[ + -<+]-<]>>+[->+]->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+[-[-]<+]-<+[-[-]<+]-<+>] +""" + + + +# Hello World +#Prog="++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++." + +# Sierpinski +Prog=""" +++++++++[>+>++++<<-]>++>>+<[-[>>+<<-]+>>]>+[ + -<<<[ + ->[+[-]+>++>>>-<<]<[<]>>++++++[<<+++++>>-]+<<++.[-]<< + ]>.>+[>>]>+ +]""" + + + + +buf="" +def output(t): + global buf + buf+=t + buf=buf[-(16*80):] + ugfx.clear() + lines=buf.split("\n") + lines=lines[-16:] + for i,v in enumerate(lines): + ugfx.text(5,i*20+5, v+" ", ugfx.BLACK) + +lastpushed=0 +def pushed(n): + global Tape, TP, waiting + if (waiting): + output(n+" \n") + Tape[TP]=ord(n) + waiting=False + + + +Buttons.enable_interrupt(Buttons.BTN_1, lambda button_id:pushed("1"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_2, lambda button_id:pushed("2"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_3, lambda button_id:pushed("3"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_4, lambda button_id:pushed("4"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_5, lambda button_id:pushed("5"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_6, lambda button_id:pushed("6"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_7, lambda button_id:pushed("7"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_8, lambda button_id:pushed("8"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_9, lambda button_id:pushed("9"), on_press=True, on_release=False) +Buttons.enable_interrupt(Buttons.BTN_0, lambda button_id:pushed("0"), on_press=True, on_release=False) + + + +output("Loading...") + + + + +waiting=False +Prog+='\0' +Tape=[0]*256 +PP=-1 +TP=0 +while True: + if (waiting): + sleep_ms(200) + else: + PP=PP+1 + if (PP>=len(Prog)): + waiting=True + output("END!") + elif (Prog[PP]=="+"): + Tape[TP]=Tape[TP]+1 + elif (Prog[PP] =="-"): + Tape[TP]=Tape[TP]-1 + elif (Prog[PP] ==">"): + TP=TP+1 + elif (Prog[PP] =="<"): + TP=TP-1 + elif (Prog[PP] =="."): + output(chr(Tape[TP])) + elif (Prog[PP] ==","): + waiting=True + elif (Prog[PP] =="["): + if (Tape[TP]==0): + depth=1 + while (depth>0): + PP=PP+1 + if (Prog[PP]=="]"): + depth = depth - 1 + if (Prog[PP]=="["): + depth = depth + 1 + elif (Prog[PP] =="]"): + if (Tape[TP]!=0): + depth=1 + while (depth>0): + PP=PP-1 + if (Prog[PP]=="]"): + depth = depth + 1 + if (Prog[PP]=="["): + depth = depth - 1 + From 61935998baaa89be776da9db4864d19bff4468c1 Mon Sep 17 00:00:00 2001 From: Chris Hemingway Date: Sun, 2 Sep 2018 21:28:54 +0100 Subject: [PATCH 14/89] Add app to use badge as bluetooth speaker --- bluetooth_speaker/main.py | 141 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 bluetooth_speaker/main.py diff --git a/bluetooth_speaker/main.py b/bluetooth_speaker/main.py new file mode 100644 index 0000000..32c8c17 --- /dev/null +++ b/bluetooth_speaker/main.py @@ -0,0 +1,141 @@ +"""App to use the badge as a (handset profile only) bluetooth speaker""" + +___name___ = "Bluetooth Speaker" +___license___ = "MIT" +___dependencies___ = ["ugfx_helper", "sim800", "dialogs", "buttons", "app"] +___categories___ = ["Sound"] + + +import ugfx_helper, ugfx +import app +import sim800 +from dialogs import * +import buttons + +BLUETOOTH_NAME = "BadgeSpeaker" + +g_paired = False + + +def pairing_dialog(scan_timeout_s=10): + ''' Show BLE devices to pair with and connect. Returns True if paired, False if failed ''' + waiting_message = WaitingMessage("Scanning for bluetooth devices for %s seconds"%scan_timeout_s, "Scanning") + + + devices = sim800.btscan(int(scan_timeout_s * 1000)) + + waiting_message.destroy() + + # List format is [id, name, addr, rssi]. FIXME: Only returns 1 item? + try: + devices_prompts = [{'title': v[1], 'id': v[0]} for v in devices] + except TypeError: #Only one device found. #TODO: Not very neat + devices_prompts = [{'title':devices[1] ,'id':devices[0]},] + + #TODO: Fix non printable chars in device names + + option = prompt_option(devices_prompts, title="Devices Found", select_text="Select", none_text="Rescan") + + if option: + sim800.btpair(option['id']) + passcode = sim800.btparingpasscode() + correct_passcode = prompt_boolean(passcode, title="Started connection from other device?", font=FONT_MEDIUM_BOLD) + + if correct_passcode: + sim800.btpairconfirm() #TODO: 4 number passcodes? + return True + + else: + sim800.btpairreject() + return False + else: + return False + + +def pairing_callback(param): + ''' Callback for incoming pairing request ''' + global g_paired + accept = prompt_boolean("Accept pairing request from %s"%param, title="Incoming pairing") + if accept: + sim800.btpairconfirm(0000) + # Check if we did pair + if len(sim800.btpaired()) > 1: + g_paired = True + else: + sim800.btpairreject() + + +def set_simple_pairing(): + ''' Set pairing mode to 4 digit pin, default 0000 ''' + sim800.command("AT+BTPAIRCFG=1,0000", 1000, "OK") # TODO: Error checking? + + +#Initialise +ugfx_helper.init() +ugfx.init() +ugfx.clear() + +ugfx.text(5,5, "Powering Up SIM800", ugfx.BLACK) +sim800.poweron() +ugfx.clear() + +ugfx.text(5,5, "Enabling Bluetooth", ugfx.BLACK) +sim800.btpoweron() +sim800.btname(BLUETOOTH_NAME) +sim800.poweroff() +sim800.poweron() +sim800.btpoweron() # Needs a full cycle to have an effect +sim800.btvisible(True) + +# Set pairing mode +set_simple_pairing() + +ugfx.text(5,20, "Addr: %s " % sim800.btaddress(), ugfx.BLACK) +ugfx.text(5,35, "Name: %s " % sim800.btname(), ugfx.BLACK) +ugfx.clear() + +# Register pairings callback +sim800.registercallback("+BTPAIRING:", pairing_callback) + +clear_pairing = prompt_boolean("Delete all bluetooth pairings?",title="Clear Pairings?", true_text="Yes", false_text="No") + +if clear_pairing: + sim800.btunpair(0) #0 = clear every pairing + +# Start main loop +ugfx.clear() +ugfx.Label(5,5, 220, 200, "Connect to %s \n Passcode = 0000 \n Press menu to exit" % BLUETOOTH_NAME) + +connected = True + +while(True): + + # Check for pairing button + if (buttons.is_triggered(buttons.Buttons.BTN_1)): + pairing_dialog() + + # Check for exit button + if (buttons.is_triggered(buttons.Buttons.BTN_Menu)): + sim800.btpoweroff() + app.restart_to_default() + + num_connections = len(sim800.btconnected()) + + if (connected == False) and (num_connections > 0): # Gained connection + ugfx.area(0,220,240,320, ugfx.BLACK) #Blank bottom of screen + print(sim800.btconnected()) + sim800.speakervolume(100) + sim800.btvoicevolume(100) + ugfx.set_default_font(ugfx.FONT_TITLE) + ugfx.text(5,230,"CONNECTED!", ugfx.GREEN) + ugfx.set_default_font(ugfx.FONT_SMALL) + connected = True + + elif (connected == True) and (num_connections == 0): # Lost connection + ugfx.area(0,220,240,320, ugfx.BLACK) #Blank bottom of screen + ugfx.set_default_font(ugfx.FONT_TITLE) + ugfx.text(5,230,"DISCONNECTED", ugfx.RED) + ugfx.set_default_font(ugfx.FONT_SMALL) + connected = False + + sleep.wfi() \ No newline at end of file From df307c85f1049dc4985a5372de99a6d2af8dacfc Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 21:35:18 +0100 Subject: [PATCH 15/89] serendipity! --- serendipity/main.py | 20 +++++++++++--------- serendipity/screen.png | Bin 176082 -> 0 bytes serendipity/sun.png | Bin 0 -> 22260 bytes serendipity/world.png | Bin 0 -> 50866 bytes 4 files changed, 11 insertions(+), 9 deletions(-) delete mode 100644 serendipity/screen.png create mode 100644 serendipity/sun.png create mode 100644 serendipity/world.png diff --git a/serendipity/main.py b/serendipity/main.py index 6dd0bea..2b8be23 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -2,7 +2,7 @@ ___name___ = "serendipity" ___license___ = "MIT" -___dependencies___ = ["sleep", "app", "ugfx_helper", "serendipity/world.png", "serendipity/sun.png"] +___dependencies___ = ["sleep", "app", "ugfx_helper"] ___categories___ = ["EMF", "Other"] import ugfx_helper, os, wifi, ugfx, http, time, sleep, app @@ -12,19 +12,21 @@ from tilda import Buttons ugfx_helper.init() ugfx.clear(ugfx.BLACK) -#ugfx.text(5, 5, "[work in progress]", ugfx.BLACK) - -sun = ugfx.Image("serendipity/seresun.png") -sun = ugfx.Image("serendipity/world.png") +img = [ugfx.Image("serendipity/sun.png"), + ugfx.Image("serendipity/world.png")] ugfx.backlight(100) n = 0 -while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): +ugfx.display_image( 0, 0, img[n] ) + +while True: - ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) - n = (n+1) % 12 - sleep.sleep_ms(10) + if Buttons.is_pressed(Buttons.BTN_B): + break + elif Buttons.is_pressed(Buttons.BTN_A): + n = (n+1) % 2 + ugfx.display_image( 0, 0, img[n] ) ugfx.clear() app.restart_to_default() \ No newline at end of file diff --git a/serendipity/screen.png b/serendipity/screen.png deleted file mode 100644 index ccc2b25d7f11b0884e6b160e32b09863efebb8be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176082 zcmX_HWk40twx*<8q#LB9Te?e1y1TnOq*J<6T0~lq?vOmBfOLa&NyFRRci;1moSHK; zd+qhrI#J4s(rCzp$WTyFXtFXAD&YT9C@5$VM0oI5@ZOm!c<{kmP0LM7L7val(Vp4Z z%+bW0*~{Juybc8=AnfI2Y-(%nMs8wmY3(3LdD7ZRNp5W>NU6!Cz^dRRZf<2QZ7P;>SJsA-i%UM2wA|34;;YW+|8KW%ihkxmCs9%@;}Gr1Ao6f%|c23pSQT#3Q~%` zd?C4(f-rq| z|ND&NXy?_6ng_WI!ot+81 zgUQv~!Ohr<$-$NCf0=2~twBynG4Ef4>D>9?Sn< zA9(QpcgWlU+!hyb{dvSjCs0u2P_h!DYF;@%+P!o1X8qUh1wG6Cs|{vs+-*gzL~+Hm zKA{d64H|XL*E;8jVDl^Pj8Vfyq;D(aBtZJ|hc0M``~*%E4!!Iw4!vZFi7@bcC{Yn> z7BrENLPO#H=;)s4`!2UEdI#qCI%=ltV0#Ij?5TeH+nTri(^0yu@!A{d6Asi~OVv{f z4E?q>8K=7eB9_1BbDE0OV9#d9$>zO~iX10g7JQZkRKO`I#sm}@gN=G-w`0GoB zynn~1w^b+Qrgwg1y&bmLqigTQY-FItq{I=rSW$~pyz+Pg^Gge?|2(w9S=C+Z#`x^R zX5qx>(I$R<3WH2jmyOjj&)m1%$EA?NsaTbbiC%kNx4A)-yxOY{Z0zzRU|LFp;HNa_ z_F71nH@!*YP9(4C=MzxwuMDzFnL^9HbP|56<}(iL54PomQ~5MQO^zj|d#d${mRw?< z7O6*i*oj227^m+tL&x{Ma9mB;$$>%sv8xcaAZf3-)G5t_5vs~(ag5ay1jygNMW}c5 zl1>IUR)`aDVlY`ThEd$?P!Aa&D%5dRbgeF(T zljUJVTFK+fz-)ZA-OGxbq3*z#@^prQp@aJpR8BOxbT`=?7OF}S7mNfsAp8hvfNDG< z53L%Qa8;CxLS4fs*hzz`6^ELWzz~np5ow}I!6N69fa+W~rhkjQ;I56gj$+VagkIze zCCe$q)JA2dE-8D_3w|A6SrLgUbzbNL*?GA(A6>ffhlbhyY( z9U<}YyDf+cv}uvk$Mg85vaQyML*}*i@3M5EOi2-Odd8@j1z)qTw$MJdb4!|rNQ$E1 zGGv&Q<7y1okinFDPu_DH!!7xAkhS|GL4Ql45H0Yp$ z5^+wdACJfUh3Fh&3B~@1NvB6{(v>J%&B*U|VC57zj>e$s@A z>7E11TbjpM?4E_SVLW7PNdFbY{Yfuj5rq~dj|r|vGt|4*J542N#KO8kXAf~Iikd~} z8D{aPqvif7Hn+YT+reCWd}g`!-Tl2acXpo%n~5_l1zh87cO4_)XZWnrkId<8sIRA4 z>6rD0M@LaF+ZHoUwgikWqfM7XZdXNDPM-{FTd$X_Db3Th=I+0*tWrS#eKR?8{m{Og zv#Ga<9AqGeNS#q1SFOpYdwNfN;o0cy@p`^rqN`p|32VS;sZLkmgm7~q?=4>RSigWXJt#oOKdTwc%D_5C_@vU%lKaki7LPyrKVc^A{u(|w!Hj1}UQ8k_ln zH!R-`JM;7!yRsdRO?zMAnJjXL8yhWhH|ya-JQGyT?+&Ujs-N$wsgq?Db9lSQcveSK zH4VZJTFANd=K3R<;JT(Q>U9kTUl(3A_Dg2<>;80@tdM5m_Ff+J!Lwu|X-{uqdB{;j z#GNklg*?_(65+3o)Q^`!n14f#4}5lubPIJ3?~VgHh&KFadM5efE&nS047eR(4KbM4 zihZ4TbYZYEjWYL#aH56$kd46&Zpiq589yjiuETvnDSk3l<|mb4`I`%oS;$y!Ht}_Qi6-kbV8Yu?CH1M z$lm`jI`mHc|J=I%aK*~#ADHp~?yJ}mbr#(G+w3yaahQ8z_VqZEQ^)o1cZJOGrZHF@ zVS|1!{V?Ve$ghZQnT1X|auZ*Vc+X185csA1O_wRQ(&dh$^*+Z_s`tB<8{Q5mwcMSr zF@~)=Fv;2pKG9+vsM2rsS`Wi(I_*JeUJobIsx^5vlFnjjVgduX0Q+!ZVFAiwR~XCe zpG&W+^K3uV(XvyfXYY0k^o3quVfy0bN+7q*>U~^&RL6;jUkt^V?>bb>#~aU!oc{4E z%6gcGu(@lYO})x&t+wor{Ld)N+yfj@6Mq-^D{hwfF*;EZ4D32uceSAsd#2gRO1q!Y!8X2BtVV?-b9zjb5;eBK)r_hPee>;3HUSwKZT1*D zFK^_ocd-gRau`gwan5f;@n2mtBwFe2eF6nZ*pivzR7qV21ty)}GrVc~&??v3=R$w| z_HWa~Ig#2h=!;Fzy|YU4MzQ*(AM$D{bjn>kBoS9A#8bM{_kM}L!_)UUb70=r{`zWJ zMa|K$XXpMY*!$9-$LDF|QP=CcZp2|DU&P7DtMgY%e6ZJoi-PU;LBCoMvEKhgZ)-wd z@qadPdXvimH+4N(TxSsx-Z>#p5I-nOlPqwzXDWl_4;w-(#3x0W2PY!E#?M?@YU(Z2 zvFma^PksNdZD@FM`@2p@u}DPHsuWARM;r@*Y6t4?~M z{FwUvmVg!v97Wi1D=2+p(YY&0$$?kIfB2Vwy~*Rx=Dju;@TA$eG{~F0Z`J&M$o1RZ zHPRr}n1c39vDLEnJ-_O~Rn#@*wu$S+{nN4SIQ3PIxd-lpJ9AYBe!B23(Ks}MWzu|c z3U6F*o}e$~q^Flx#voZ>&b#V1c1o`(iC~L*g33AY(pQZNRCM$@(?Rravkaa0t(_n0 z7bK=r&b}E`C(BS%2D;AwSV8}>c!U@v01=<&Od6tAkt6&pHDle&nvs>YF+`i+SI20# zIKZhO0O@5#HL2CQjO~XfgwcttF)q`a(_gcVgCPxGEwwhmmzo(g_^Ek)feU-7#TaBg zFzNo9{#D%OT8o2-EEnfkSED|5ROpo8ACkIE;&2B_e@vB)Kipz+*tPga7RidO3T*lD zab?&@Dp7D%_M5HDrBxv($&vkq0bzW;EQ5PeT{X|kuJ{Iy_)^rBp{}@3?HRw8(e|?7 zr>Bz-q73IcgXK0e`5L)N2O!CnGUn_gQV%ozvK7$NWdR?B8>*6)QN!p{OwY364) zoAItAOg~xq`9IJki%xR_gb5Ra9;rJOARBa+rB33^W{S1?7}E90j9s>VftoZPEMrDy zrm2TV8t9CMhGfYc(^gpnpb&bf;stu<=ka~7kNYnKG^!28)HU@b*)zds@&^urW z@mqYa)pft;DmeaqTJ~oYa|tA!=Te};jWN!m={PZ6WRBaM*mwJ7Q7e?D#=veNX7%a0xDIsFo_}zS3D6toT6)Utrv(a>XpK_c?XmE`ZabJ^n%G zU^c>!&tfom zp!DT{&)?tQD{pXSM(q++VS3Mv4+{(FgbOvqjZdNeck!~r=6wKXRRTq*>9|GxO@~tJ z@<8K}RUQHYLS}Zhv5!yI=3u<*s{gffcMBS$eha6GPJMlS+tqJf-Z=3B<+bf}!=3XH zma^&niPcq%JV;+30G*_c4k2_Bp)oje_wcoti z_3krqMis}3k*5in97*zrsOrS0xG~1Ku}d~<6;4{6K3qU9rYfpy99M;Yf7kA9aXD+5@3(FdNUAMW>9^x%@UZ&W&1lpt^}u$8>jGizBXjJ)wAAamO<#I8$)U! z7Tg`aTq(II`$acC65>IMOnG*8cCn&a9oChacna*YX=@YcGW2H0pDQ{HsbA*~u-N-I z&tCoVt4fonIrWd1pp2`^AAc)e_01Z-V2oPAW|b#|OW&$#|IGrVR4SuXmM<5q^?D04 zC=s9b4iW#?Vn*5;Zj4+17VOeIS}P@FDZoJiW6`O^1)!r?_PYGzf*mgCLfP3=$wT10 zc>%nK_=8m>Vb7GGQJUtgWqe1;OhFOZZ_-qiG@v)PJzr~@g6xf|P}aFLSiO8nFwTD> z5ZzCysyZEQwHqyPeTV{5Po}omo)>fuvz6IDw zlan7iPQzG~nbR}#@+^#u$Ul`Z)@sFS8Z3x*Xcf=e)E@_5C8n5liS@5u`-7HQbueYe zJ+vE5{N5#0n$$bgUf4I|1510#>ht63ZVw8JnT17o>N`ynZQRYx%_XN^G-~XqS7&|e zl%XbRn|GEHH5~h-C~oH*`1CyoK0#j4g&*Gf@U66cu*rMW7ieB!vnp>`%0PjINRbKZ!RDPT+f)C1zfZtzU7b@0B;Dty+!~ zH{E^h&Q8EZ8-YPqtW2lOfL7;weITEgWj2)b_N7k&04ke~a$EHhs7kOqF*t5HV1C(y zLT6D*Yu==w_HzQCZs*hLh}s_iEslSEhNhBcKDkeaC&rgMz={e`w9!5pvI~@E+vU`U7vM>B zJhNlUl$VlVqsBe+64)>}^2nAe>AAf8fxK?Ia)piE+W*HSZN*@N@EiU*UzpRRO@r53 z5W>yxpB-=ZzZH<`RL@au&A81*c(f|eBzHI31BoYEu4dxp#hZYga%qGQzhK85+zE?- ze!9)_O#3wWd_(rKLNf%ZF`+<)nqP#r0?e1?yB9d@h>4F{b2f+pc1TCxJZLijl|JoWk+0$vn(C)?M)fN32ALg_# zQ@!zXQc&b_<+BHs2t#T#)bZYA(ZkK4@J`45@n+o!^JX0XaU|k&rVc}Hq={|oEFwfz zuT!UzT}Vi=Y?>lhvB*~L#GN?8jfUXzYV^2}W6amf&%=XzibJ(r&FpHq))WDp5u;& zBI#B?p21qFQXnDZ0uVwsKJE|c%-dU0&ZVWLpf`i}94-+@nI+Yl(%zgY9d8toJ<{3E zRrOzxFr>;AJGgVeE;im~cis}Mcx|Gkp)+kho&*X9J`4uR4c5w*a^U-*8q!fM7V_2D zFM^gXxlVMUAqsIGGOu&fu~%^}Ip97(!$V1kVmAaPth5-_5P8%q_F}He_%R#>+!twaz^_M= zm7a10egBb%u6YKYT+g>$xxADfYOb4rc>Sc&#tiRGbhf_7zJ@u66V7f3rR3RZDym9q=GuEG2{A^~Wigm-&w9M&L26BRepb0;RQ_eK& z6(ihtkZB$27hiT?JNpX{2Xg<&^Roi@4d0|v2yGy;b#W`upu=QBTxHMkUTA!;&U`6w z)&HfVzx|MQYTNmApy$;6iZff`&3cOB+5&n<=$xT%E}7r8ub$^JT1M75Ag{K+zfTmAJgRH6(`?IAkAK+a8>{mFf;tqX6$hL))d zWgq{Z*v&gq5)6|lUP|K{yX{Ch$CL!w^03h@_AjE%OM}0nw}CuIdab0|56`L4>*=3# zh7+ZhQ<)y{$z!C4)gRIeCbMXs)GRe#^-e@K5^g7=? zT)oC6YrgB%I|~}|_J1Ge$(LF2=;ja#cW=fE_DsDE8I_l3pU~{_ zWHPVxAUyQmRQEXYi$eLGJE*E8DCzEyv>&zkA5Iv!W$Cx>=}=JJ8EL-gHAR)EShGEK zUH?1*ZQ!$Qete@8IF=X^aWfH7y^|IHfXvcS@GZ94CiTF$q6vS?H&Jg-413EfhI4&Zkd|D;sa_E&sV zy#inhUpA7TEzN=*D#TfqMzzl^M9v+3s4cDxQ{Y8EFFUv%&a(ki4Hgy_MGvLm>&ogX zV)2F9VY(=YypZb9p*(G|MDq zn>BEH%4%wAnliFY$D)o1$cmAL1-$s&4BzPZ)OVhyO_nF@PcLp(ks3q!?$E8LXJAO( z-$Ep}0>FK&bhueMZYVv}St+`16lRg;?f$huZ_O?Y)~jSfa~JktzrL2xnr1#lJN^v)%&DkMwpQ z%;Am}f5rp-oIGanVtdl3kNjA)4~I{$v7V+0INxlgTmJU@r$)u3-Ry1U>K)U{N@sqE zW2bn%!7iYFMJnY^*Z$W)rE~{AbUvlD`(CS5jGz7P;JIn-d_)G#cRiR(FYuA;n@TJV zR=AOqQ-W>PJ$|NN9AIcbw%vpX-@pR#w0Cd-suXmrvF;Fr+w;{2%Rfil4L&h|EirdK zxHLK}M+cR<5cbL*6YcHJ^zn-IWIJ{Y6^Kh~bq2r^@i=Te-Jj5s@+g-$P&ey^tCWkB zO_yp^D>I}z36|sBilnGg=E6ZVpA^IsaD@WX6ELi>(Pk=cjfXDs9ttXP8)P7WiFmn&}98x{3mvfSH!H@=KgQTEKf{du6}jJ27#?f?8j5ON~u zaHCHBS?KB zZ5oCp@$~;=oiv{Tcn8!46eYNe^XOvxt7_MS%Aa7@WaQ2&KR~Re+aWpLtgB zv2s{pPUOd~{eg=4W$BtxI#eqz-Sqr)&!&(JR6wr06x%1DI+>fduwOoUx`#OC5fjuA z5J&vJXRh;~yWX7n(VqrzqE5gHblT1Jbm_g~aT(*9lVEO`pyL5f++>k7PzXRp4-5`A z1FmevN%&$cTwY&u00<*!Lnjj&c7A>$?VRjcRU%w&L7P~A0T7ydewz};GdG%q3r+i%f=G^d^E8V_1^d#Wgmr>a94O#P3 z5$H*WiU<`8g=%zCp)~mr4sMUoi~`C~y+w_d@`+P@Jd*Aq(?M1=*wqWKhsnV`Lw1=C zt+k{N%s@~9k_T$(=Za4Z&}CC4AKnaRgkNC(izC@q%}^To}Og*{%WBMKi@(Ynq6r%_1)h9*Y`83Xk`_7DhJny z3Paqi&FlEV+kK_L=uKW!3=C;p7v+CpZ{BH4SaIGgKmw!yCb4K5bc<+j>d%>P52u3C z3dMXev}~)IX`(-z3b0Hq*ftPeuLcS`cHGhc@^Ak9^tj};`S~T90~SPsj=7apB&Z;U zRAj^ZKXbh9e{qPo?bb}m?(sXSDZ8@9XaGv6S7=_`LIU$NJ&%j^7+sdpc{WghK*AgShwqeO`pnwOw*D{{;_5&0?iNWybAx@Y|lpX~HsE4yA zS<2i(l}yQLu0I;d66~dv4u6N&4SsDq^WhGG;G{K(Rz%#=$0gb&kSw>czw=?ux9xmt ziq_{5Z`$`G%r>TAFK56_8UQ|n9q&Jl<@XnCRE3k%5LTJ>8! zCT+BTWHTW*3)s$m-<{R;bh%av7+&?i>cr$R^{P?;2A$Su$YuH1Sd!d;^-n@#As5W) z8TuX9AB)3Ro2}>?ACe+z_vUedPxAoG1-|^-hHSbNxuxed*oTK*B^MyZlNq-%K~PgG zO-7MECQ&;Pl@Vo4*mkx<+VObgc=2!1vEE{gklSHNrhdW9%q$e>9SPZ`f;(W7D+!#z zVF=xj0~p>Vds=^fMW30GL!CNS<9B;&;~XLxUxp3+&1y6|Wk=U)EDn<|a*bUfSy37* z{iUx0ySQ9UY?>2PKCsp@GYLq2FR@;F*{<-jw??H-|IH0Au!%}l%9ZJGaGQ|vY%5D8 zn>*uG>o>uf3-6*B-U#LeK1uFaRP>F)WwFZ8$P<3X6&LSCMP)QTym3xrCfb>aN-o}% zbt`zOat_WPoY7FkL`0j>@2UV9kb0#C$9B;{X1PCQ{t|72*2Aq=6E&92BQ1Mg@M^J6 zt+IULjZGE}*gUb=NW zqjvAWa-k|T4}!GIedZxsDkr17aQIK9B96I*XNvJhsH-f7*5nafpm@c~C4kv=juC4x z-D$3UIA069dVM<)AtV8;5feKi;CzaOy95dYloS+1%Ob~$m;AjsAuTZ98A>G`=XA1s zz1G6q`F!#WE0)Zw7@;C6>6t3`79OM!nVIV^Zb49BD_Jk=e2e=#Dk`e)d<{uVx{V3) zG?_U$#afI>ilt50dHE^~SChiLT|hc%b@;s>Nw4l})YqsIh;I#W!wb_3nw)%-(`kd| z`Ml?l)7YDJF|KK9*BF^eQ!bG-e8{+1)k+lM}FX915*SiC}qsTx=|O<>q-q%;GfSB zx&t#hQz9DJ{7@bzD`NmB$6oT4&U?>i#eOPk(~nkWB`V$5{$Mq3M=gcKo0pV|Rth^i z$wpL|yQPYPFoVt53AUjhy2&1(U#RAsz9)%_96UUHiX~0vKqHg8T8HCn=VR z^G7Dc^qYuMr>SL-?r;c!@Pb&-MV_f9<;Nd;fz`o@RGB%upOa{4hCU26!dRMT9eLH4 zc#wWh_c$`LO~dCaL$A}-<1#gdvxEFc`L(LV7t!Peuig?u>T&G%X0cKG=RdzZ?;Qep{RG8< z_a29It9QSDzBIm@C?!_5_fZGlTj$>26(bTSKRR@5g8l*Uy!dLVl zKr4DUt{MT6XaBl*gjItMqPXQq8q=`VZ;eUS0c$=h$J^OFmrBvLyK>bsultf!t)pO_x5hJDTZ1906)5 zjY*yIVlpJci8vxLF_8}S2k`UwfM-D!AzL;rH~fL-R3BrR6`#;xIPm_Du+vHVwTsyy zo#9RU>Sk%SP-XCQ#c<$v>x6N$8T?|2X@wnzH&gqJgGzZ_7Xor6Q+^^SNpYsh;}%U@ zbsx0bclS@=t*I7RvNKQ9Z z^Y3tgFpZ6iD?H$PF@r%SZ@1F+KH33W3{ZBk0-#5RB-1J-Dbg&od2>u%fKLHwHf5u| z<>GBo3j2aqoAOuoCNw1xcs{K;r89rNE85JfK>oS2YI~Y%92{?z}U)6koccj~A zgJkjS8a?>yU_9j|Yv{P?XF0FWe`LhQ3#;<`3fg93cX?-Les$oH?F*BMib4W`)bpj% zbKeu}{mq?lK(b1Cs4@O`ty&o6v+k_YNuUIFg|6R&A}G?@Wu>A|lv!(LPBRCrwH!v8 zI9mziLb37j$?xcjCKkBXyboOQAK%=0$CC+xlnS&lXqH^X2;kdEh)RIb zCJ;hTudXUpYEUK0h#1j3a%Tf-ugZvfo4a~TA|)+d{}rFGn~R8f@`&8|~IXh#nt2r&*;((5xv&8z>_~JZSu~x+lJ?rVfq6SzNX-uyG2^ zhOrwpqG7VQF_JWju@`@AtDRSso<*d_LQGF+!&})nFQXOGzlUF*Q z)ffkK9goC$IFa`SvS@zox;6z>*jMSO7wS{Kc}w9&>%G?^C6pg;QtsMJ{Q5P6;K@r0 zQ0Mj{xpKflZ?-V=tom_)&GU_njY_Pk^CqSfYDZjDycSat<4rC`HCF=mw^_m=v*_k# zWHGCh5q~#6kAyV5LFp+6?F=bY;m8pzF>xyxNGhTmaMojb1gG~=(`KVqOz~@9ogfI; zz0*p2)1Lu~V)-=icuZ^MknCvKdHU4}CV>!RDk-iH7dK zq=X{G$2S5IFlv14>F~Si8oLE{s5^w=zD=6uoDDS~$UsQqal9nktoITWGw?ocjD6Sr z8TS+DULeK5pk33&I6plO^249%M?zY~To{F-6+4p!62Ah89|_qDjqC}PTD8HQcNLu* zFOuS=IX&M-JP%}D%o%5V!vOZ(OA;eiAR<5-|B3GM^9Ops-J-siha0mB2#f-S{^G{f zF#`TG3N#@Y3^`nCPTtKAB%S8ObLw4bF)|i#cx4e}0p!vPZL7S6$3^{%JTv$sn#Ovk(VCg;~fW`qhH6I`z$7i_2`^qlO? z0*&?@Y+Pf1xor1OG}k}B%uWFEsMS^bxoHD405fUtUI<&3A=|jL&;+8ofC|Pt6w7*V zW~isGctMi}BR$Q30SL#Q<(~LOs2FC>+K%u3t*9>5ar|OkM#W0Eh7uSdgEN2|A$m4XuM-#!#8Q6H_Il8as42a$uPMRrtNk zc^J%@7ZF-+?Q7FMY?=?@>0h!5!|^tU3?IPE+jyx$cFH<=W}&0VKL7TU5Lmgu8)-v{ zWVv*m29vj8etA;u{iiZ%@2Vci!&E*Vefffv!SAmK zL)aHXm^C$#x*3%CgraWx7_skkF8NdCB-y5xhY$;@EZ*lzLeu*hdVcIVT|t~TVN*v{ zlpFo@Nk8B!!t1hEY3<&iW-PV?N-GTU*AKmnp7{g8N!D2bIT#Zxhfb=q(7riX>RC0j zHq7n-`LANG;W!L$I4g&HY_h^xIPK;ru#_Z!`_se9c6oj@|1`tRBZeqY-Z+ZnnTVMc zzKi0ghg!h>1v@Xk3qgR>PePe~MjD~n>ABJ=N5+W?%a@{q5KbL_w$zkRigLi6XX(=> zuUdtAqwqgofU7V0gH(F_S_}7;PwLQ+EML_Iv$-3bOg6paiVoZGTsm2{eVq`ycvb9dU=3Cd!n2 zg^$86R|^N+M|Jqsgbl;1RcF>sX94_B ze`$&-_j9enNS?0m!=?w)nlpsUc5c&64N8tXyG*AX7N(b#fY2Zu^;+cot%_AshgyFr z4E6EBL6Jcv8ylAbL!QVqn#vHTLIp{)V+$4!oZ?7bp;|MrT7eB1)um8tyNmuJ5J31m z@3Q|^&wD#{3q^Zp$6}9{;bGdN_i~6l{m;ptLP=y!afzXAiaNfy*KauXn0he(PA>bW zonQK`o!&1;)}kaReQU1?RZbQ13A$Y7&LV=@+Yj{w=^gv)ONNUJwL@$FT2wdxXk1JB1;8du9j; z*M@#rB#V^EkS~KHTfqrZbMCcv zKW(YlqZXZu?o>*WHjY&}rWx+(s>GH?y-=0z_F94teDT@dzy(z$j++;qwtESXYGZL^ zqF(us2$sgu78npxI$9y2y$c1U2ox_+|84*N*d8voruQPOf+>z@K+?cm9dQYIR%sL# zj!rW4Zovn=W2qKQHt}BhYeysKI%W-a+|Sdz#-W`0ky(>$`;6XOyyg=1qP(svizGT0V5 zCE~r`bzAckvbmu#W3qqfpn;J-pHWmyWH<558UEjG!quh=ILML#n>-E{7dtU*p;F~) zg;av!($c}idgi}R-0Va!WBS>~v~Vyn|C$)1l}u3L(|8kw7Yr96HnBWa;ewqEj>Xs|jF3Fu=w9j)|Ozx1usmnw>EzV<_*ih^HvE?)I`f7ps z9WX)K9?pSd*`8I<4gGY>ziRxYa}>lNaBu}tVK7pRCV%_Z=S2#rxk?g86QIQ3)_;<&kk}-rp!L zPHUlnl-&WdLQBQXGy}nK)guIQ(I%26L?)}g_-ur zk+ehG$REWT4-3vgDAVBABZuLto~pnhz!#jUOl%FN2I=311rIl%qI8Ba7Xdf?*XJY| zYB2u?9H2i(xGmO6G9|1gwO?yAxpNC5a-tPTpu4aRvrHuTRQ_JlG3z%UA4!XGs7a{iB{}K zRh^mhAzWzs!MYp$n+>5K+1!=df*jSMIGlKCce0k1MwzL8f)OutN0?j*GxZn%@(gI(Z51H%2&nMQM{jZ&{XGYbjiZD|xNuS@7wZ#s<%=8S%OJjagJVPIX zkPm57cG`W(^wHZwHVs)~jZg`G`|C~IRVUxB@hKS?R;+$b$it3t&RERC=#YFkO1Ima zWHa9TV%sz|i1%f1bXt$J9lpW=e!^Ddz#)d>+C=28DpAWVwf@bT^*2Zdd7b9yNe`Rj z+PQhnV&ue-MLpDv&6`HSQ}Rt(B{0i@U$qQh{#QAshE-@?XaYtFj;I9BNPM(2G@2;fQOCJ%WGBQ>U~mu!CpH~z1UE{Uc<1!5AeSTt#5;ge-P0!A<{9@n4%fYLG zUlTOTN1FcAB>SGGUe8J(SeIopi&N1Mc7J3w`urabnE7rr&IB6QO;*N-Q% z_)(xW*qCyeBtP|oDJxE#ExSOyLPe(JX590M79wzkvJ!YE`I0=o%&Td79&X)~t8O8` zl^TJ)$r>*|L%K^topva%`>1l$q+-%aN|=;^C631?Fjul%tFB$pwMZ@)g{8Tjr?*Ps zKq#~NNyO*epNvCB4oQ$}xu3XocSiXh3punA6Ka=M7ut`vHs;7_g+$PW8NCKy^RNC7 z*M@`x@QWTs%m}6t6B854ZyGnv5TNN%J#A?K`M}nD&o3BZH z<9TXLbOpJ>^es8Hp_QlO$0*m^lcWKdZB;Z9TUO&~RmSY1!WGc@vA!0bFD%I~k^XEbaM zW=hu^h+*j*E_1l!{H$^CTy!{=zcpON-wA1V3~aVMBKp@rBvN#pTOku2Gelwjkx)A> zs)l4UszzXa+jH;%IxgchG#xyXc6dftoJjXkPa?Yb*D;OnDimiUys`-N*SEGqf)__8 zcM<8@sp@o`i#&zOQKR3}Sx(w_^ISW2b51A}-^|*CeVL;<7pMN$m};3t(=s8OgsPN; zD8IO@K|QeMG#yGEDPBlUe%{Sid31AMbLqq@Esp2p#{Bd8U?pnV5n5;;ZUsVoSDZij zkD-@n!SRf=@qIYrzLl6KbNZtC*!fj;VD7~(#Ia~yoOGQIo%D_%|HrxzTGP4pC`74f zD7>v_*}=1w#;wU)e{MPToglR(nTAM%PUWi4<723M^;PYvr(Xu{rrEk00ARXHr-5i^CjKQ_lr(VZHUDX_?&1hGCAdR z71~C+KK!Y?P;wF{!x}0|3ENCvLpF)rooZxC%*?_w3mZ--ORgM8uXKPNW^kPk<68uRSq$}&|eviq>oCIK!5W%wlVq^>Hqz#fK^}~!DhGKlkoM(w60LJ<)0HQ%Y0>j&v#}suvu;n zV`5`$Un2_U^I~PB#hCBNq$o15i~czLE~ij}OaZTeQA~M$H^akCke%~KLq4n2_!r6f zy+`ZkB$6dn~IdLd1Vhe`Hbj3{r=Ckg_^9JuPNR&x689 zNP7E%+ld1AQ0Pl0COoSs;0!pel$p3#sT-|p>uQl&L^0nYj&-@a-I1_xoJh8`BW$yN z6~5D-Mjc{Isc1cRW?|*J`%`vHT104p`1Q!&05RxbhyBTHQA(A8<6qbp3Z z_T|}G@dX3*0iB%{Atp)G1VOo*h5cV-kdhVRWh6kngWvHz25G~!G zG6i#*{rd$o5M=tWb<%;+rP*<(j!q`n_rBn#ZUhO5kc<0l=MQ4ekAbw0a7;*QqNisr3rq&LyFpFFu8W^ z8e`*=+lO+LW^y!aVE3@0vrAZqn{G4(4~7UV?7WtZhm?3 zes9ipw)^yKUqkF%S0V4}vm%rp^Kl>Rk zzx*<%Po3c4%napfi7|Z=D{mr_n9%E@B@sdjYIkmM`-2ZD3Fx=BD5#i zOjIiT(I5Y(q)H%llU%XL($W(1Gc(ldo8&Bmm!3J#?e~Ad{p;^Ds~tkL*9jAg)R46N z1S}WnjA53hD9jwAJZpi<)AJM|A?Elm*{-oxN?{I? zmVTRCsw>j%5Ry`C3+%30AIbj(wd?WdL<_OAAizitE`$2Whu+8bb%xjeBw-ppKN_#z zPc!TXmcV{Nq}|sSd;ULsJgR9&KWFdt+wC^Mu7+_+?G&XCK?((iVW8t6h|NDZMWqU{8u!CDNqpgtP^ z{Um80mV519REbCjK+GUyon2VViqzGJ29lW{y=x6&SKamKrrKU~k%H2)VELe2FC8pw zs$$gOc`399?tOSIZIFdD`m!A0Q>dNn9ZkyZg7Z%rqdw$*=5DoG-R@{V%r_n~R~Uw| zU8FG-Vj;vf_!P$(H&Zxhrzylvu|XKb^n3mYfAXj$uyYR&&BofEml5+7wh!Ln!IY>J zq+poblV(-v+lRACGyGvVaY_wKrYbH{G7yIO$l&amr zW*tPIP__xxIERm)=YRd*|B{K5PxF;O_P+_YR>HIVf5NFl3q`aD&A11Vt>=HYJa)X(UmM zNEL!Ci^v*m;%uGOw%M7gjIKOPGwmc%NRgrmHHgA0QW6ZqqUU*(%jJydEuY8KB~h3W zmDx^iuzAzLwUcd{lx%}#`j0&b@~Cj`H9Pm3i$aL)mXJfT`{CRUNzsrPnntBkVXRW2)$L%p4wjw6at!>O&8pX?vDGGxQo6o}Wd!t`Hjdt> z7PP=AW0xoShc`Z;BOU(PcmIgF*$MohM^P&PH6(w$~c0QB#N@@8)94YJOEa0C&Fh*Eu)ETd*@;A=G;$MhA8Q%DLVRl z$iqC$D$3%5gBGop$=22uhGlLyecMjfkjCJ;+OE&rk2-emJ@55Z_xiBAOy*CK*!M|z z!za5a55B4)&{DB2*ogo&NbpxE5+yNogCvcKQeh>)P5 zBc^k>MGXs$V%sO}v|y`4yC1U_dUVa0Eh}a@f@i<*Ii7j;98tYSuv(+9jd6E%i(mZW zXSDq~k34yh>O_uwUPnt{rZCOKv_Y%A!OwoWLMLotm&;5YKF+f*Jk6QMo?&wKD281k z6*j3D6o)7uS4n#PI;J~LDkV)X;mZ96fAXC_LYgjekeaDff+mN!(=f!T1{iW?F%Az= zegD(?!GQYq;={o5$^4uh1C*>HW6u~;oG1acd-o`miWF>zG?qkBLa)9)hB~ZF}UNwei~d??mWG- z;dUPH=kJcr&(81Noez}C$_0lO&ai*bXlP~_Dl<$oLp9@QyU>0ZMhN_@8MSS@`>ff{ zV@-QFj<9#^2Sz;%MISxf_X8XE{{5#NLZ#?rRblBMxj#`F34&B)*>0)SKq?ZImGJ47 zNxod-7=@#Te1c(-0oEWwNF2uvu%MWPpkjzW$}J@R=|F zF80_IdTtENJYKBRjWm>$=(>g>6#Z@+%QYC!nGp3cHJjD-4UAl#Tx9~pfN~(oTs;km zG&0UNWRfwy2!MD{`h#_l%R4`sFq6>-N z%?k2!j)Q9!2K>r{qUZs*u~XbU09g>oWVo@i4tP=wG^SFJh^*+|>th-=-F9zK=bE*y z&+9`+dEy~xe)j)*y}q5GG3@6%?1s?ob}Ubn1Sne1zrwRzyfHbCbxPe~Z zWbLhYDZ~=*c8#L!G838jI^2E#J?6DG9kYj_1l_d8+RY0*cK8&%u#af?;MzE@fnzy* zaN#4aUAs=Z9g?>tGZPMJe*>dfChByFOi5%GF`Xi6&^AS;G3Am#rU^yYqTXtQ5p(tO zhnzlr0^QKighW>YB?kLQK%z3MB!yjOvsA-MDw*{M9!}^sx;iu|)sDzY2HH@F!PAPA z4D1;CtO5Zd%`~VYqcmZl`O}27A0iA5M`pE@DhP;FN}^Jv(y}*h$B;Aa3PYePg(Tj- zo)DS$ouq;!O-a+3AnefhLuQX3;Qsyl8DmD^Wm!w6hHaZDv9pQ9p1khSSlh5`qa-^_ zlp2&9Duqf02bMNK=LG}Wl&t4&DOX_S{xa{r{~qtW_YQ08>l6wFW@l%qluA7L_!G>{ z%~39vh@*^+WXLYEvcAS&e($d{P%BPoH=9JB&-nN_=N>!HiPNVTpPtD8xIvbW6j@F8 z5RFK+As9CR_R^uS3@KpZEPH#XeMg0lPv--V3grVP^ry&YA00vs^sXAL`M@g5Hk}4S zk*0B0xRS?Bu+eXc|p~3nf=`|jf$ASO%G}Wf{8p1Y7vE&&kp(6vCfVwSNIVu6Cb+e9mwPvFGd=MXDT15#@AJ{cn;5Rk z}ZZ9)=@C;MO&f+>Y%{XhSmY`$lkTV61tvc1bjiD)ey#}?V%Y60g z-=bm$pe&FX2}CHe{P|ENS%@)BFf=hxhP&NWeQ3fdrLYFADfa^?hTh8%HC6-1HWdT> zQDhnyp$6p-37Sd=v8fbIDatvAu-_v_k*Jh@9Ai2*rBVSUG&;R5h%Cr02Md~M;sHTP z5@!CN5J;huk`>hlVMq{${NM*a$|{n=5X*5W7V{WJo?Na#p^#&JYjqn*Wqa%H54yxs zL6V{?iA+ILGCL)8oo>H}v`jQ1>4iRqZ6Y;Ev)3YLSp3z$|8v%sSMXKBMC08i2wYkA7zxfU8%{ssL$A3s6m!o33$S7jt z?lM;|U*XF8@9~qr{~=%h?ss_Xxu*y8FN&P$kOVP?Gzg;vEQ>&8ixdwUwF@Bj16)%B zl^|8->1Rdhl2qIAi!-e^Izu~CmbtMbw6S~4>Ag{fz58fCA6SU24m&#xQtLw~6AEX_2A!lM%ZRX7d>hIRD%sjb#nYZ7+h3(Gq z`3YpohBw-pul0|hg5SVS{sFXqq4b&i!W5{9q0JtHB@w`l+NYd^3 z&jew(;Br7+GK}LvWv{WFZ1k+FLCJP z5yB+S(g3{>6=iKSj~zM6<7-cH<<erK43$_mnjLKl*R417u$JU_Bd z5A%UX1$dVxmsuPk6@o+#g;ygT>^qGVjTDE3B=T@Hi!}0>DL9mL$>!>Pa%GoPTIj+> zMG_Tiq+y@?x9_la<=1$3-=koIa=;fp<>>;=R*gyBXKu=6y%o_)9F`gz^b7-0DRBCc zle~A~eJFMom0e&HqFeESu~CuWgCM?{(;U>s)&8H|X9fTJr{aH;0lr5@~>D5f9g47~az~RGKw{ zAG)LiyEgNIrPLoVksb&Oe4<;J`Mg3T1HmT?CkeF!2&t4`{ru+`N^$zcaWvE5>f$0> zwHlMtQxx+#q9n~2{RW$6sDU%u%>nwYNt9F|1xcEj8U4tk=k@u_XJ4e-Y4Ot^{+Q3b z_$;wXk?0tvO`*|khTd16h!qdLeB^T!X%(kZy_`dr|Q!1Tf||&4}bi3 ze01>=^9!>X*OWB)@BZummNOAu3W6Vs>F*z~EkALzr zbjRhZ-};X@bo@A^pmlqgx=E5Kyj0+80>^bIPt9>$nlzhzuDpJM(~q2FY;26{Z-21e zf9JJVe@V4c;Q1F{V6EPyGC9G-c$LldbsWbU#G6x6A(4B0-E9z2h>Y2BaDWbfG$D}! z(l{9ieRlQ@yw&aVd>G#z4Y9$H%wc!M(r_eF;`u&Gx50#P;Mbc1ROsWXn55mJs-^U| zR*-Q-saWJQ=g)BY&Jsb;Ayj=F<>QDvW@PXefBI)!dgTX<+dZB?Get8BF(+mS@7|@o z(WBh6m^o0UkP3ctWsQw@ZqpKyv@*}kxyPBDtYFPoSgNgZZS^h(51!yNU;Z7UBqC02 z`aK=g7`<+v`)gbL%@5z;(9tpMG-31Bo6K5YBHFr6W$qY}ktap(kc$`P}Ef z#K!s>vy&4zj>Y3=&tjT7TU#4E`N%PDUHXu>|L*&oIQKYHjziy%a0WbIx|z8siXl3} zHucQzGkJ%C6$a^_0~}xnD;Wt@sRzSW`vGfv!%xE`kXT3(O+)Dd25hC8N{NZk`yDC; zhvmiFT>1Di;lQ%0OiYqbBbv+ixcSiqo_qPT(DliQfTg7y+_?A}zF((9$eWkeIC}C3 zkDguNv1iNNul;d~U;PEMQ&T+g(lg8* zIl#3mS1D8`aEjC1yuHD#kFSxKIsTLX{0}J?bpHI${~a&A_%v(RUgNkKc+-a0% zAxy~+{`No6Yi@Gv@kglGihI}JW6nJZMF%6%ND_fAZCuwSOp~mSl%*qvfG|7y^nuO{ z!^zznN)RIBX--s@<12t9j8G&vhK}XhXb3hoYK)IhW=xYoNFw6Q1kfavu`1}9X=GUz z7)C|}A4b&IHz`%h^u2)AR)*4U)M^--PT={t?m5CVK$<2wJCB}9Vjxxt)6-K_^Uv_= z&wk7|zx-LAIQs}|OIKN1y2p_tM=>3VlSU-cA{E+5@>vGi3zclsiDv%3K;&&=uTQU8 zr&7!@-7k|X6)WP3jW9=>mgOb03^5dvfeW@-{F0ZyvWMU2+3(_gzy?b?S}8hBxZ^jjQ0 zegZr4xcb%`ym0<3dcQ%ZQRn{kONitSZYiQXUZLHJxpc2iP+8~9*{7J8yp7grAR-5( z#^J|LbNA*wLf_!%xo0qQ^F(ohuzea&>~$JBu8gn z*Qp*389Q(csGtmqohzY}@uv$VkVxw!VE*uO5yoI)*RcliNgp# z2uX!N#UYK&EiPTT#Ia*1vR=TthOQe(O{X3DE`@X_n9VQ4z$ zbcu9J;aUZJDT#$3O^3*97H`Wk2vW8K!3sK22AUKsi=^J*=AApd`Ky2Ao!|Th$8pem zEu1JM>2>kjZAvpauwB~SEsB*YQqzdSkR8nPD75TR7bjy1n72(eW^0-J1|JDzJMs@qPl# zPQK$q{fJ20gyWF{c5x=%bMe`}T4v}LLsy;axQ^^}hm7u~ddFgR)=>om2o18m2 z#rv18)9Fg)7ml)YZNtmwpF~9wr;Z%p%U}CCxv@#!ed|>&UBAh zn=7}-g(*!OD)Xm^J9QSXTxPbI;+PJGl~E6CT9<<9GnSVmu0b=&TCt{@g|68MG9Or= z1~^d`!hN8ie>k!GRg?s2oB=GBjwS_hnqX-X4T0C|^6&rbPm!92DK(B9IzW^t`o52D zf#KNrDrKYH#&ul`%S1_mW4oBTK@w(!?V6@xJ2|{wf16c9N{KMCj)^kOC}9PI6hkEu zDnW|^P9K=1dG7}6H!hKEEP;^Rey_*O`~oK)e~u(JP(mVwBp&P;G#zbFZKcV~Iv`0i z6W_2Y8#=4E?r`NFU*YcC@8GuEoIZ2_qt~OezDo7jF=nbIydWS6A|?w3);E{2b1s%+ zkcI)Fm!(bSOo7yGnw#q^FE8U3@>HfK$X7~8+oaKJU}*`iP{iE^y;hebNGavUD2^FK znt>1y`dt>PMQW>eQE9}4ZF1$!H@NcV8x*3DQV<}TE!0+vx*rofvPHkyAT5^BbxBH= zj+dqq?YDLmesFwJuJyx`J4RoBF#aykg`T+@N@mKIOot$TM^yt76@>O6YXIAt@tVuD>s4&sLTVOK;1dghVcKM|ez_B78)W0@Dizyt-yz$^UX3h7#&s(+9o@{z zox0sF1QA8o#ndHnufuasJb~l7)LTtd6e4v4!_+b`DDQIO>?5>VT`u3eK^O$MmW^#X zl*?5d%f&Kmkb*FdiGl#v&2oY@UB?SOI-L%}FtBZhDA7m)A1Niagq#%g*H@^0e1&-9 zKBc&a*J;!5)@k(WEXE0yvoE4+Cc-e$6a?vx@{wZ5jxTEg1$qDgAOJ~3K~#r{o5bBd z8?_p>>o@7Itf6;%SaFO&%(G8DMs;qIsIh^jxdg2q8|y9R4J{PI`4`_6~taz)NR`8+2d zIfGRwQy@hcI=#h3rirOm^DJMyz}mZSk!#oKt<|U$^0Zc0n4g-bTW=Hj9;JMqdXgXp zoMkBzNixWuOLm#i`}wb<8g@So{jkim{gY+(5$YuCCV|Y%L_^ak7y_*y684%%zeP?9 zFqKcey@7OG3@eZCH92-)gD412ZcItsYDQ$2#k~GDz4YU-}C`JlM z0-xII7I&AHsOAe4%O!lzBk+85cR=#4Wkh0yi3yxsf#Uc$hSab%1IsYbkt9*pecrZh znvFW+laqLHNGhP?^>OnKItry}B!e_cDKa`y<$L)3Iz>FTZr`MR_Zp6hD47D&h>12= zxY_J-V)8KBgh8QPL1;ROQp9A%8L7&W#?=5y6<&xLr8vUm7jM0b>hvh*UHV=F-O<=+ z*BI+=(Qfs5?~M!GzOslD8QiRvIsV+^oO$V4(sqk}vxx`-YRfAGoes5?RlKX0nbvi5 z612NZjGsIKwne)c_8>_=R<*Y6!#aHBQF z`wbxkqzaV`(C@*uEGaRPn4sIFUAs>~SJ*@(ev^_T@Qnna$E>$E@O@ajdYjk(_8-ye zHz?XLHamw_%yH(0FLLmS&+ylO{(p0Gg_Ea_aiTbZUMyo2$0$}0Qs}$rzE8T* z!e6O@DG{!q9XILu7KT+uQov!1qBDtZr}TmtzZ;Pn4nO+de?SIZ($J(I=&WyUU}!oU zn{7xp=ykw#O0?^3ER}Hig9}viDf2Tnk)bF$8lkC?cQsr`$FMZ|0R$1Gu|h{fsAM3U z!(^9XDy0|->fY{fyFrIIj?oP>YaXWSSei~}V}t9Ludw*>$GrRQyFB*f6MXfX-=I<| z)A0H|-MWR- ztP^)TjF|?V)fKc#mFChS{`wm4z3~qHjV+8Iz>FhoO<@`-x{OdFCY6Fzf#x`Te0z~x zvBIfG&R|*&%`imd^eh#1n8flB!QGXaH`o)SEksA(w_h6W==(=s8JyyDP zIFouV=`Ll8yy%}t!3&E}m&uD^AGlIyU! zzD#Z+Pn!;vxk=1?mD%YNC@m$F5xMdNp#m>XNR+{|&p*d!o_vHtIgcOvShhyBT17|a zCx81R-hTB>^f=+{@dG@0{v5iDxP0|}-udVr#j3;Pbdkcig_Rn_i6H9t@q-v81%~0G z2BEuzEc0%d!aU%G))6u*Y1>JfP+8B??a2pS6R0F1><0)b&<&k1=+bSi6NPQQ_=T4U z5;%C^5Uq}n04iw@;!Xtr`PKd#xd8fT;bdk zkJI-9grRe5=_c)Zom`>7_{<^lC7spUCbzGCMABSm&WgG9#xFQt(#hE-aifK!2?{xf zR=ZEP(_s1fWfHT%WU+)}m`Kw?2ooU(hKQb(M{5X_k@>@69AOzYNeo6Tm?@4!caz5Q zDz$sdxK@s`RicPZ80rK{VJCU6zV<4cD=Rct*Dz4z6GgnSPP5q{UoJA9bHQ~;8V%n2 z`7da8+N{?$vC{;4ZCum9^Rhlgahh=H^=N+zVb&Stkq z>`2yoKF@#d8Kw^%rlS;^VG$3RFT_abM}U%&0RtCFIymXm-8tREzTw074bFHn|7<7M zS*ZsJ`+@CV#I|jdB*}KKC^ShTvPO9+I%yhHa$R~`OT@hvQLl@PeB7Kv$~c>e!^ihl zxOV#vvvUhPdwv#EFVb$ch&-S9*`th&Rp|D8Hk(Uqv{tEi6Drj?%<3@?o%=j!5JeGr zJ)pOGljhPDuDny2%6~-4)cd~K_?9%XEA%|04GnK!Zu7+R#tfb{r5420lG#I zr);cjQpwxcQsd^8E1Y}k8Je4$Y;M%}<8OV9bn_0&AH0GW_Gm{QQ}cUj#mlNm~N*GSWR2e()4~woSQ4RUx!_3@L7WmPSZa0A zv>XS{p67+He3gEp=%*36u`zm`7D5v{NpvIs4#%j_?$xqG&HUTIs{MxRW>r+%B!|N@ zKnT(#v+jhRaV&Q_Eh?oF<=I*4H;b4NY&5sHaAgr64Kr8b^b^nX)cJGBIA-z6M;Knh za-&b94&`Er*~tkO=4Qajn1aol*SK@>H?;0v#ZfV3yNuUr zaref@q&<&LZIfGx$K+fEJr0O0jb6jWv275Fpp%fZY$i^h#YjS=VG^i>S6}%#Kl)iBd3@4B>GP4an{LcTz+-^ULUQl+ph z8zEDquHpAHR5gr39LM0mkp*h&YaBjyf`$1bRLV2-yCMJPU;i6)kuoptI)oP7KlUi$p+@XQM@P_7nOx^bC!YmI~B6*Osa=gu-~ z8!a@qh_WqeUI(fU)dQ1^FH916O{}PofBzo0fBhSR)f$GL(5TnB`q6dPRyJsLyBt1t z6wNW&Xl&8#^;lh7quuJ``w3%{GgK$1@#2t5AgTWWzy0g~nRj1(jd8=| zsZ%GItBer`K5+tlOtkVOT6K=du8`)cIK?ujj~(OenR6UEe4H>AT=?h;@4Wi~>l+O; zp^?uQu*~d`4}$>PG;nPj?Z5n!fAO!f;sAx;>k)+knywKi38{iyA&(yfBof-8PicIT zPCr6394t3aFG(?TIgXurlxlSb$0`zg3HKM5`1wEljNkvxcX;V@FLUY2b?khJa;Z!q zS0ITKk}$?J40Nd@Qdn78qt(i~?9CpSr(CVl4Lmg0BA<7u*VYJpAE{d`96E%XFOsGa z)uPK-$>zDo&v5_t$JEzXDdzJSx{c>YT=?i3UKsPi#VxwtCbjw&&A!L+N6w%OgH%dP z*Ck34ganBqNd!b8IoHOv48kCwRo|kuwSlR?2CNiJrLavM+qIB7gi@iqIZ|{YFQD7* z((n7k3OZiE%2tC~yG3f+Bv%X%(??t3>3JJ8j9?fo_<&7=2x?RTS=9xWo z7-bmb$`uUTArTsWtO%6E$`zSdILzenlN@~V86N-q7g;#{2)@vW3==b-XKiDhLMcz2 zgxfu92NeSdB<_F_W&axSoyVg-@P3Iv4-?>i9A>f20ZILkls*k39I0hV{CJOHZ{46M743eTTX*izYkADg&NH{L!1(kO zdd|Vlw;qKBs-g)Oe)@$noo`+*vxVDWz z(rvegD0EgqWY`wvN)gZN({8sIAJ0-6)6mDX3h0)N7snJU6%s$BpC}UD<@VYd3sV!M zVMI}Y^7~wQ`*lpe$MWJLF%g=yDCP?2QiFs+Wsivv5{bmHERGyIib_&61a2WuFZ2kCp1W8Dzv5w{xw>O^?BsZCqIFg7=%TE7*A+!Y|+@-f*?k>461gK@$wY;v9XNITWM^rZqV9j z5cfjj&5%f@cyUN#=@cernV*^D@X6y;t5xROZPu6W<9B-WI(-s7!7An$pPAvnu_KfZ z9-wgWAk~FK#8RUj1Q>3f07Wt&YRK}-N9csJfD%Jwdf0?~N5c*QCx8b@@P}8~{+oxG z*Fx-WCO$NyEyF}h6iF0PDHizX$|e5vPya2Z@;H9-QI1ScP$`sIm_N+K!Xe6)3QG9& zyERs~*4ga#m@UrXwE|KrhdWUq^dc@?y~GW_MKm|h=f3exWUh)~mr!9!ed`t*Yc=L8 zIlSf?VHncx_*9E!CZ=a7mCLMduA^*&a%F;E-zNz*s<|pv+o5sqHifcLQD_t#7sEB_``wJG@W33Ws};s3r&xURZ9KU`qIGc$ zNvbLOiH}t-Ff}{R%=}TVUb#tQeUq_bm9eA8QA*Jd17Zmib8{R%d6Kh_J&tX=-2V6$ zH?Q7cYjuNuvq^hvgR*PU*A+5var&wAJn`H!l*?s;u1~YJLEQC-gDg$eEVx*u0`^!L zy;#6EO`3i{DmA3z;3W}BKcG-9Wj%I8Rvx)sJ;d%R)BWPWqmTCz6bxV6DcIj%fRiNI zZVTgi9)@9H+ctzTW!L4+H{axMe)LPgjMY1W!las>nt{n~A8t-)5*LZ3K| z)XTW#9FIT!1fo@^xw1&Vv5X;NGy-%HqRD`MC#1f$j^FE(D?~_X)9Cc6j7?%24z*g1 zZa-pdyvng-$FOaiAN}BmJpJ_3y!670+9tH1swPdxq@=Z>AmG+o|&|04hA|MEZa&;R9r!|9`kY2905`BhEA*3=e-XvuzsV?@mYBO{9|ZBqG`}>HmMYCI?V>QjG3Ps zBk69jzVtEDwvnX?Ow9olv4BVFsaEsMW(-P6M9)vTldL$T6}Bj89sK5P^tjE{D-9CU zq);qTs+3t;xD}XJVm7#x~Fk zwnVp*qHE%NAnXUJ3zapd$t*Rg8iwuC?4@j*<5ROp z8MAcrIxqh1^StrK8~lTR_+`HIr7uyfj?ri|$ma^^mN^_|82(VUn@M44Y?CmK@w;6t z4ZiWmf5gQ%Ugm%JufN8^Or6AwaI+;&FZ>k0`CGrkg_mDsu2!O&w^{PrgpJ!wl?*sB z!@w;u_Q;PhJ~@sT1S!geVUmcHr&o$$9a^ch!6JzX27S8i4zY|#1em5y97Z@!ktmiZ zVdCbqNEDIZ#t?#7Mwphx`6r*`R{2e?y?vWjyTPHcI;En^%P%ZZ&ZVX%TZ6nMiQ_(- zx35y3n4pl)6Ke*E(nv5!h9*f%p)W{;POJ$6VW3xSoKl(D#RU$j6z(U*fY#`18iPR( zEtjEKt&v@v-$jztbsfz#7z_c2b_L$CNE{QhnhvOE!vK{?G{Z!*9Ad*HmI;YeC`}*? zYp5_OYNJp($OJJmsp@W$DgAjz^;a>f`rQ5Au7d7w#MrCIBSqc&{BbL-MM6cf@(hLGa$A}fmONa-cn=Zn(3H%<35;S`q zUVrr!UVrsvCdS727r*}N%*;;h@$F-OijIlyI&9p! z!AnnnkN@_Uf1ZNZcf^kr5FAoRb|>he>32J=QmZWyau1@GNHLan=XOW& z@u<|auls^sxSGvE6GAAI;e z|K{KQ4v+lUIgZ@7z<8}jy;`AAE`zX0V!^-*&}G6{F$)6|Ezzk}>#QdmXtgnn+9C4O zN0^#DLMC4zmJyMyqvvz1HyV_)Io!!H23HOIP-iSNjUyDts|7x|@qLt%7`nhNX0YOf zdZ~h@>Abh}9y@oIxqoqvBl8m^frl_-@>Q2wF^gZwK(5U7i#Pe-fB%2w-M@W>`(`Kj z+~ZG@$t48+K8fGMax<8Q!nJgIoi0XhlGw-)CLWfp@!o~EdF{2=$mjF?%s>9wl(aAO zQ34FhM4}NPQ9^*Br!KToAQOS(Wa#(%tV}?OYgmn8T<6tmswwKAX_^GR+cc= zCZ0Wt-)d4joZ=swxe|-_J-}MO!P=F}1YW>{kDn(yF+pG&6bcm*B~hBf8+Kb|+zgQ) zfuSMd6yQ7v0)Fi5If5WydF3{Pofc*`4`!Ztn1~SwGL}G3LPQi`Yl@p!E-{@mQ8Hj_ z1D-gYqm(g;{ebbQ3FfEA==S^AIwUg0)^)s~Pj7pJVtp22X4r*_8A|XzcXA}a_bAsV zWo{sytj?^lctjnT6?c!ujL*wRgAu)X&U)_9zz%W>@WNizU1|J{k?bj%kO=MZ~WPR z;)|dEEI;}Ar|9O&)G8WMIn-)(R2UFPE#g5y-pOZw%6J6)^ROCe|x~2uf9Y!pJRM#lCC%4 z&dMs=s~cp5z;z4^Q{dVTSP9*(NAK!Q>gCgP`pbCj9qP3z{;^{e9f4*TjEz-@dbbGu z9!}1}PduWyN2zGD6|~VTosE^7{NU;Du)e;|lTSX$6Hk1GFp2TJ0psKKlc1R3;ET8yK|=utq>+M!;^^Y)9+(piQF7Qqk_p<)bTdi@rr zV`Eq*QJm61=5jeST*7`EOM^tI6xeQ0_Vr%D90}vS^RR!P#)gCX%ny3+z?f1afezjb2-~QoXT8?^V7}Jf8#BL5e^6dmmdRDH^9~70Kmt+*-cFr=K{_ zXFmTF@4oXU&;Iax{O)i6HkERjFMa8&jE~Q=aKxe4Y-5-SwfZEhc9ENF4aV~}6DN+d zJ{9x9%~f7`_RrB>m$Q#Qid6_Oi$&&+97XApd?AM_0zme>3S84S#+V% zZnwGi;bo*LFl>ub!J_24I2nOb5s79JM2bEd*~Fw|+2l=^{Gn-bpNhF&%&~UkGS_c@ zKx-}J=v2YFBVp=-wXorH{A#ol4{ICCr3$MM%m%sEA{K`N3Sv12U^g9@)MIoD^ zKj;n{jE2-Tzz7ma|8M@gU;Up)2#1LT*K!bvM2|wUBHJ+m9JW-_x0N@67ApE!}FE1llLsjIy_>QmSE-viQjHN89O|7=nMZ zOQfc$lpbd94Mx{L9wG9eX`#{C>^tRquI=x-Rt^2YDJEaWyRY{$OlX>*)ooKMm&xZ# z#8E^kljFhT$C#h2LF{qy!aF?k+z;8<+CUQ#CD%a=y4?EkJ&1htM6$KL&DCqS*y*-e zI5yAu&ppAR#c7(|4u#q{cD76`EsEJZu2i&FZb5ek(~xLcmwZ0U{NyC_Gt(erR#$ew zgwqcmXJ&egYSAHM8DugR%Cy+-4^Wvrv&SC7$V}i^6=b03Hd+t_xFW%j0V?tlB=kHF zKhbE1g8Je~wg)l);Sc_ZIPmxvzx?wo)XNwu#uN(MG6}+vFbL6Yi}YV5c4c$)Ff=8H zP5mi=xFDSlF@%QleKg;rR>@LwY@(iz=S5^I z*>t@C&l}(cA=)4yJ28!G8aRed$bMemdj)w{*zd7k_gc+Q1~yND$wma=`>o!=R&IX` zD)zBR?o|d&=Rm7`kVXAi2q^-~Rg7dGg19oQFUCI94G~-mysH5TPk-(AP-NE19Amb0H6btk>b{Gs=G#U-2CdbK_#t1d& zC(!S9xpr-vjdjRmpi+fnZUMbqLbpSX)$G%7oIi0u* z=*C`_ice5rm42EwL!T< zYwJy3dHNOp;;+90+uP(ch{6uKrE~v@8AvQCV3T2Xhhai+hu|RWkyEH|RV!0VgVx+TY01_!vcT6)hOf&*-K)q6> zb8CzBTenauA=Yf(zj2+3#Zx?V?kxA+e}W6QmdK5b)9$x0l)>8i7XS8l{yqQvSALbx z{Mac>qYpB~)UrJB&>8-Z-}!g+yFEVl`fP23Z9}dMuf5UY)ES4l#aVm|E?in= zaW2oNJ~d4g1-$m=OV*jDwE%aY?I#nmG2K-zQ)FCt3HA$FLXmMb{vSBBCHdMkaYDiy8H~ zeQTN4#{1+;g6voZt&k%!BomWGzVb6aMe_MCaOK4}`1W&D~F2m?SgPVN z;|`^2h5z!O{!=`!$$QT|gABW9zK3Nx2tOi7dNfyVlgX6Gj=Pj|6?)Mg7+^qGDUMkR zsWT!86JQx;iuRi%7y`=q9CopU*K4x2vrR98C!Tzg*e$cTILGGN5+ZDoH!GM~gDW3g z=YRPh{}sRbOTWaYA3TO?uF`8?Bk%`ARB;O9{G*@vB7gX2-{jH9K1E@CjIH%Gve_&_ z5MWp)LIcw>P(l#P05qL2>JoVkRxiKD+O@05P7A%;#oJh?yRt&u3VH0*6jsJXm=@iz z&pRL7=7Xy~Zq-BR8kwSCY;p$8vT!Vu6DKD4;N}M1ZkLM}FLG}7ex#I`dP+E!jIzV( zuHdHe>we+9cWC{SEtME{Bc;5*x~^l}7GW3?MJctY+B3MFD(zi-ZV)Nt3~5Pd)P%EF zA?_XHyZ4+9%7E|t-p3^Ge$;hPf^2l7Ne!+V8jE3VTsP?US`=~xEai~&2khLw#nOit zX|23NsgR&&Vv180WTrr-R44Q;;(#SY= zknzb$x?#xF;UgH1$p9!VoIoZ4?KmRbS!d9Tz?Xj9 zhKdqm37LGETy27SF~`R84JyZuqq!OM>;#W}_9xIw1!BXbJ~e~i>k@|%fAV|(CqMhy zhd5SDXkB`V#+}QEU=vM;NEF%bNgjOcGaMhUaq+cR`NGfr9Bm~C;{;tdaor4|A0T~+ zB18~Ua5eOxN4$26txNCHSy`r*afx~@)^Fd$5jy7{y^kP_$yZ9W27L@n&YypfuYdDh zTCEo4Y6&3}PS&B@X(PjkypzLG8|3UP2d4!OgRP^d1lb@MuLugmh4 zt3=H%rXMkp%Q5J#p;;QDJje9e&rv@0IG1iTi4p@T4f3|dA4#z+JIofxY2ul?bQ&6doQ=2-3 zER~7v43Tb;BnAS>?aLSFUVn>1woU)-cQKJvlQ3nJ*95&_g%h zuY8p_>*9q_&}@v@#ugSy(8JONc|9Rsx=!!*WtLulk&>Z^20dI|BML)SR^aSIRfKEd z=3PQUG*gkcOkzAr8IWF&oLRvTU>Sl4fo0fi-CSqfsnA_*W1VqOmX2lIZM{fi+mA-H zsbKDh-91?E_bTGu*Mq?TMS`xGyTso8ejlY2*=%-?f{ZZ9?lz7<+O@V)$ z$JDG3Qv3tY{vJjBq?^^f>)#PLXe?Q>L?-U`5p4PEP?N%CqC2Db~Y+Ee1 zH2&lpe?-9?@X!NCc<8}LxNl~b?FY~D(lbwU*}qNwk)srB#n#q3u47UkD=~FwkvHFa z9nDHW1Q;qJYo;UvzKqk~S~u|%MQ9o%hE0%2OkE7)HVGo7Cs5*ERLVpmr62|(&BDx- z$V{0y#S+EfD2b&oGZv1WBi1Y;WsqPXrH-B$yz}a-lwFu9D$25fG3etOHW3bCl2FfU z#9@<+G}&C*rZjgPO*2w*ZzoGm>FE9dF$i%I58L#JJ1eYRc!fLfyiCPZ=$fGBTKI!D zzSl(vDAr0yP0(sL$mFt^wm}pJXi70whMaBDY3z{1uzcqxu5d6Sjg4D9rsk&@n?6M7 zg+xh$Ynntu619V+TB2$DA!YVH-}`!RY?`{Kit+Jr5*gtQQchskbumqo!C=5(Fu=0x z0~Kd?pGxhE!4(Ie$3g2yQQm`^F#fLX_FePGd~Za~wLiHg5lFJOL)LZ(2PtRr*yJSP z#u!`IY=mwhm5q+X_dJx)5z3&^=wjMA9(n9D7=ty|H@2}b$rfsaA>7)!gq5$MXA3Nz zxSwoo62r84>)rQwNBPYOTbM@-VF|m24S3i15Pz-|M1ThuBF# zcgFDglI`^^F2C_Q^VNj!zxNW){K=p5)aSm$e0`dgnOW|9@D}gA-bbG=Ge23U9dsy8 z&QLyin516hw%?{;JD8qF)-Y)fB07mlZY+aq=Ln@hqG4GUfgcV3ulIy*Xc)TEAkl}J zP8}&Vkb*=hd`)0EIZVePBNAdOO~6D^LK1>PM^i(L;YjlCyB8^EvuL&niALBBZx8al*y%~JDh&#JhowCN}r-B&>LG6H3L&5G`4PW>E=aRtJg5QYvgP}91Z9N z5v5XvhzQG0LBQiU#t#Nmt7G*0eG;KC4VQkaf!_xmn`*I!7c6sUsY!PmDp@den5<7> z7fbAPyVOU?BQ@$$O4rB|E7)72{n+)<+U?zk5^(3v9jdi5hN;o(^$5cd$8m5R2Tjum z!*Ev>QYE;Xlo~bJ>~pn8Kj=_lk|AWyK^;{;YBR>(^B-+H+U_9!;JttAeAHEkyVNT8 zZX=XRyW(11;vm2_OnTvfb{LUp7K!E{w1^~;1YUr&ER>$1(ca{NGiRAQ{vaj$0hCqX z+T|;3?euBwbO|IJJF>_`y+*B^XJcoB|NQko=C7ZAmRL6^R;oO9_E8p&9L2Fq#8MDy zSwf)^CD8AAOqPoHGUgBe;Q!{t$y1y49kW!U=$4r|`7rL(F=Vz# zFzjiUafs0FdWNa>O+Pa*fU8He|Lg6P8Ux84PM3<@4C_xWFN5|GpbYT*O z5kcRlvDKhZkTlvY@;QlV3IZA8g((PF*9*`ySyr~Xbi;&FZ499xgTjq_OciuGH*RqI z(j~T*Z_(>+Afhgg>Z6Mo-2^WT>GWF&&A_%zbQ9LrR+yVxpwsE#`#$-6o>)m*tsY8& zVWjZ23x^h&t^2gLTNLd)SuLG$-fA?NID8ac|48TZfh#S294y2K3GP1Yh2q$eBQ)9# z27>|FY!*!zY;SMl`#zOQW!J4fXnSpV^Y|n;_LHpf$7P83o%cQN@5d?X$6n(n)Ugjt znn|!Vi+<$ex*06fBJe#blT(=f1MFOSomR7ji$K$h=z5kQfOa?HsVBaGp0Cjf2V`dM z!@s%3`qm0JuU{vZai|p?bbp86|2O}NcP?E;WQu(1OzUwEJH+JMJC^*Ics@$e((c>m39Voh=4#5ldy z4q>9Rwk+9MS!1~wV@`}=7pjaOIfXNIl%{Z~9Dan$*LSGSJVJY0(D8c2oj zr#eO7$P)QrkE#r)H1^&5KSy8)CD1VuN}ys88oS_b36Lm|8Yw%vE(Ar}A z(mQOvcagByp^!6iEQtF)eXm8SlqZvOX|+0_>BtC*MOa%47#kZ8U*yuo3nYU!@4osxA8L|Xb(|+p%@OJuTA@dfBqWwi zdwYwFQ{@l-_}}xx=bmLJ*`ZJ`5PtP5{OnhLlJ5E){^n2rAI=|NWMSbbZ@+($Z(X|1 zSAXum;K}pndFlE87tB1x0+cf@rjcW=mS?M0q`A|gI$p=D&r)1Gi7eIeL&^NnM|tPf zt5~H4a?=r=tyKmhBww5%ajFcYNuYEjY0Igh2{f4|vBZ#`Z?p`7i9U3NEz?TT8Kfj8 zK_@~O>BNxIHDWY0z|zx3hGd9Fs97dfCX3}{@Ph`fn?p&DI1xCGgP{oqp(M0)KD@ok z&5b5s{JF0%cla1O3PU7loo(KE=C8>1T8!x)%8__shuDvSm~1x7`qnmM<0-CI97~cU zW@0kKrS}J1x^$a``G_D0XmxvRZ-rPE)a!LzH;YsOmTl2#HP8){R4aM;9kM3*t^&VvrGEHFV2l)B--dsMZ9)0gN zdlmYi&vxJYn0=38-u>I84)>tjOaFIXioh7l1WO4*Vd7S&uyup5u}Lr1=|+-`cF5%7 zNkpbh?BofRKuL>y{SZ@g>pc3{S)!d~>aIq`H3<4W{O)b?`3ZC^RvQftKQxE%`uxSW zzQgza^jlOaWolyu*0#5J>-*p5%MU$Bf9WdaL5oQ$Oo=WnH{ye(HU9MX|1aE1kthjS z-dJIAe1ftq5y603HcM`Pmip{GbEnR5^s&bY^A$WCbi-h>oFiw|Y4=Q~PMpQAZ*hFO zN})DJwlYC;5TltkDh%;`pE!xgSmr*PF><2~G#!P8&_GuSN=67N(N&BTQ3|i3CuzW( znCO~`E)o(Hu`bdZs-t6R8BRa+FjrpqD`co6m5xvu5^0ho&I(rr+;kI|gx_U>PPVk=(j*i?vOOxV=U7RKjN;`wUX) zm`0j#6T$?2)S;X*8LFWRV`?e3vO*x`kWzK;kUK*f7!7>i-?dnN5TxhR^ZBc9f0wWS z(H|pGxK^HD_{YD*`Nz)_`3Zp+lg;O_43q7~4wX`w?vQCQlgSWJ zGuU2d=guA8e(pJvMhn~P(7gE}HM78z4=wW6r4>GS^Bs(^gC(;>gOKXn6j3|GA1E@# z8qbh(JV^S5pIUY05+OEO0_J8na+J{ zpWrAN(GbK<3GlrxW)fowg{7sIQK^U|j7efhA`8=Y!G=(W0g6aVNR&aMOU^uUj@SO` zFW6XXQK-7TYuNtyh>*K8_4ARRl?j ziQDRSxqM@bOE;lffDbQ0Hq&BkYz$rLxK4%#Pd!Mx-A2k33TPxKmStcV8onPQgiaI$ z5GyuT*Xeg9C-0kMJr->Dy5uSqLa9iCAk8ulD?e%WUPB1EN6_JJKUUffsg#D=gEJL| zA)c2~f_k2Z@B1t*E#dniZ@uw0Pe1+aE<)qs!-qLEGe@J*LI}b5_&8EZo_p?Z>2x|g z_0&^j-5iEt;QNDA=s&^zP1`S1Els`skpd36mxZ3r6DPxvX-IS?6Hv&MsX?a1XDP_v zkPuvHASD`lno(8)DdXM!iy@AXsBdBySYu> z)%pC{!#r|)g8%&OKPEenjJc;+xzQ)*C~=pT)d-X%krAef$y?yW z5mwO03IcXkZgcC#Wg_3h)*Tk+9z?lWveOmJqQgK+G`EOm+XOAi$)cpj}{4%7<`rR_S+jw zoT~HGF&7cUJpc3^3b_e{vIzWujB66aF}CfJ%{Tz`2Lq&vF-@IjyTRJp3S;9{3XY2< zbo!kx)k=BuOZhN<>k@>gqE8@?ZW>%+JqbnkEYi3#_fJ@!WII z@%ZD9^ZCy|MHB^iUVm72vj1)c9xf&KSk>XP(DuHsrM=I?8E_I-bJ?7icTcZU`ZUL!z(gyFMFqdlQ?Le0d`6Y59r$8rmFn=LMU_Xj-k)E97y zRU*SmG120HVyOsmOt00zb!yb^`!SSNpr5#OSC>eVCb7^6Ri930he2zLiBgrvPS2Bf zmq}!ULz5NaM6t8d;0J&HOc=+*Ch;W;px5f1IEZxo;ffphbEY?djcN(l*xy`Yo z_jBglS@KhpMA;GznIP>V6VnTE8Hwuk!BpW{Xq|_pkJOiAa;Ba_HitQjBh?nIr}{f)7U161%{m`5+#F~ASGlw4HyZ`Awa^>bLwAZfUXcEiN zDVJT`ynzTBXu8LEE`wPd!`s@Rld%~r-(oIjF=1(FDyCS@qN#vdsm#*q4wmDxy}pJ> z6s^@2u7ojN)unp;2$QGIkS*s42LbE1Ra{?qC(`$RgRp$Fa*ZXr{*c#ug_}KTN^*S^w}|90ZAy$V`FS+%e94`ZFZM zUgg*e=66AePYX4~TS=YgadznkgRQD3_{avJSuS#2L(54L|DAhzGmJ(GmN)t#*5%cRd6h zh;}>2My_q-N4wX#cP#N8wug%V03ZNKL_t&&6Ix23_CN{kzvg>;un)ew*zCVCq#B*v zy>X1Zg3)}Juu?C;a0v{FZ4UTwb%U|PM_7E|G=T)9pxbStIbb^`hL*)oOq%_erK`)l z_WZMa@X8A$%{x@gfTI(W%+(7xrli|xB1!1?TDY2yt2uZ(0a;8=&d$b);q_R!$e8}bC^g~lvu7hrBxY+`AGhk|Zo=&^L z_Szb8lu#~Lv2%iMrby&w$d8TF9QY_LmkPS34Xr?$(cKluQKCwz1F_3TR_LdH`ltEy zr#}ryHa9nU>7|$0*w{cRMHq&drpXgeJVBvQU~FuRYPHJoLp^+HNB6 zqi}y*zyBj``|JUKlV6-I3fxY@>YgwE=RL*hfcr8m8A_{ee(k@Uc5o##~eR2 z%~PK_&%=vj9INM3)N~eW5`n+ELW6hFk}MO)9>S9rxGob9 zoMdcq8W~1t!T>8rWLWqZC_95h;phg<^(Az_jTQ9Kl|)z?-M&xL+d)X1jGO29{2>;~ z0xwC3x)R-hJ9pMGO?cq`3C1dA3{7WqbCVZe+CtMTbj?Oefx_m-%?4Mly^r6ACm*kZ zHUt${HldW{N@bivfy6XX${0ev0I1z=EWvPCYp=U}k5KOIw(4{`SeAvR!SwVr{eB>Fx-MV->7U})e(l$gQc|nc*xA`ZO3A5H4=@-E@O__CryihQuc!ODbA>SUNvsS~ zr7?MWP`Ph*cccb)`!V)&8tL*b*xhbN8ADo6aWKrzuJVad*Hm)%j<84h?z+|rv8U84 z_U+@774`0M4^ni+_1nu_yR*z!fBqMU5i}YtUVQEa-g@gbwpw>+bQ%;Z(>!|aGyKCZ z{v;(Q%S6UvzMLi8ypHIvvHZb%Y^>iPls@AVCC26^xPEPez!>M~k^3pc9W2M7)9O(@ zyg<$}(G5vqJPVGCu*ZmFi>H71EUjjr$L>3VLz^HB5L%2ANmQ&Mx-Ihd7}cYT)aK5z z)rwi)Y;yDJWp3VlAJ6j$hWV1`o_mgCN9Qn&l#EXoNy<;HB(ao)Q9NXp(@;VUXZJy< z1jCSENr|06Yhw%5A5gL!jJQX?)55j%w3J|^ci(=}BO@i{OpZa%XXAq_NLip+}uP6 zF?5^f_}bULMn0b>3`6?;{%#v(yWPgNZSwh)j> zy)OPJ@v+zPjwY1$y3wQS_-Oz2-B!(e*GHN?)ZO<##m66wy+QHZ%P+Ip zYVo_j_j{}@-C@w`aA;zZO0~dGfB7p+&(APEHi@HIY2!E-$?L z0jG`}XUYhP{4Pm0j}kUz1N?zUXT3$geT!%+Pp;l!YT+>T#c3YAZ;GhjrPuH9=DY9H z^gFzN^*wY=rKQ_AB1s|)VeBTV5(S!;#=t^L5jk`fp(%;s2pxy?VMY=?OfZ!|MT#(t zaU6?S2rzU+-bD`rM6ZwGc@&kv8^i>+*I2)FmHCMoA_Llbf+8f;LQDll(8G@tOgB#) zr=^N^yNOUSDjZ;I5=|w10tZy}FwLKCdq97n+RY7I zPYwlMkpdp1uCr$7A4C5$tP`6ip68LtWROzwzylBP%rnn${``4<@fUxQYPCuf1;ZL> zD!_3Z;=1odQFboVsCrJ`)+os)aV`v(# z>*D(ZEGw-gUcY{wS6+IRX0yrm_V(`i9X)!KM;>{EqeqVt$1zGN3?r?{20=hRpJy-_ zu(q~Fq9kD$((CnTHk%9v16*p4&vLk+sMW;CAx%R2cZQNs%3m{Kyz)4v8h9p>r*7Q;7+H{`1ly2I!R&Dp&!Qd zg-NUz(KL;Lk)hXW^Y&}6)9<&b9iKr)9V|`96Glp%8z_WwvF$w4tzu+~xS1SY91XfP#CKeVsbow@fNK&np$z^g#DG5V`FcgMvfTp7hgD8=^M0DCvW+WPh5(1?g zh{T{!tP+JO1xQZQFbxXxcDBmhtFb7j*~bx zfr_xQc3PZBbev2EVP=T>eTZSu>0;>?-9e0_bVQP%8FpH}B*8M$UTf3R*y{Lf_Xp&1 z6++Jk4V0!Mb(3Pbz~-Gz-h6GDxha#9Q@|1?n``TAY_(Z9I!CEgrrlUYgaM|lBW#Pr z&LA>HYKM-nYC7n;gVYYT3_^^?`ow;p@MBh5gSJSLRQS%FJI8PQ#&2-y)F~Dh7x4!D zk7Tj$U3=fxvv~}aGH1-q&T!-UO(rHL7({WZXrA}~k@luPl4a+a-|sAUi!CE^sjRHM ztGcS2y|CGAk|ISlNvWxYGaeffMiOip0|N#mjz<#g4~8%w2H+oH*v0@u8!~JdmJQ8# zAbUXB7z&b2&1h!0Q%!dDR$Xh?l2y59tamw!Kb#wpdo=~0L?SY8+_?9~Ip;m^d*0=F z@FE~_v|252j=^AnwH4q0{`a|l{W{mKUE|7?EA)E3ndaTu+2LE?`W8R}2xyb*r{2{v^yu-ZD>9~r_LpiC?kz!|ci#Tg= zzSYLBKEdgEp1bxO-?{!n{?>E9#&GC}8VwMNy!50=f}4yGI%l+cn;-qvzu*_X@EmUZ zn6Z>}nu`b>5harK{)G188D#SmW!z!m+>2B$1DBz-VuV0vO^kOqESIl5UuVySEI=Uy zx~@hu&exvjnoY7cPP_mED5=n6<-l8%2H))sXGk*v+aa#v6C>@A=La#f=^$*7M&KI0pKEu|e;`Y7ABofZfEz{L0 z_wU}J8t?LnkFU^ZN6fW7X<3m!TI2k)mobeN4|2=ZmtG@}x(rK;Y-Z%n&=7%YCOB?u z=7Xs))$;57VPD|1?H!%QeWNJi^y$;Q{`%`IEG#gYOzP{+cC3el_-MLfzo@W2IH0yR z*12@?0uLWPq}6J%yR%KVGl$fQs;VgSoFqxe^PGSFCx1c|Mf}Hq??1s9L#Nf6fvXRP zLr$Mr;bSkpz@PoupYex(_=n8(x_sp;U%`cR4*vL`{ZsNh=d(ZiIWAtjNSem8dgbvr zY+I5fp(qNrx3~HF*Z+II{`If((n~M#o4@&+EX*%58Rs*NytBJYqtU=xOHmXgNy?cs zfpK7adz)6PRcqd`7?ov7k|Z@&_=LGuyVl%t2A><~NhQ_*UZa&lH=8WY_mGP{(!392 z15#7v6Nm&+q%l%5+$|UvTQuTzXkDVw$+&a-9?!n`33etHq8Q;FRq4odhA;!Z`KSLU z&t1L1T(5y{^cW94qj8CBM5NsX=1=ulzI2VadzP`t$mY*d=_Z51;(ZOw?tPttYrt1C z;q*csnOA$;lKo_KVSZQy>OcMcuYOI60FWiClI_QkU>3ly!84rUNt_?5wR(O(tjoRl~^ox>gZi#c}F4N!IWq#olt6Lik@*%hG+~vvrhuA^EN;l*3`SZjY#?=U! zc+Q+(CW<`LR1CJ(m``FMKZmN(g-tBhDvW($yNVnVN(xpo*FE8`W zZ+?>(Uwo0b-g=8a`lCPMH-6(cc;k&XSYBQZ`Qi0qHr+=@QA8ZaD5X$J@%rmuAc`Ws z@r`e=ySvM$Ui%czIeNVwlgWg+?%YiK2X0_bzu%`QikYczj6tb7t+MX3aD53X3duB5 zAw-B2IP3A&gHSkQ$=id4nW2KOnpQ#}ox~$)bbIv9o@3|! z9k!qJK}IBTgQ{>C3szVx7J~unkj5Y+#3G^LD;86UPb9^-!YM&2EJ8u$97+jfCGkat z&>A0U;_e)aXIB_Mxr=rZ4K%ezMNwd!&r5_?Bw0+_Y_T;lTR*LjoDsbqaoq+ z`8h7Gtk6h2qcTS&4h7`ng7IWRNz-)p~_i<86I-L$>QJnbMV5%Ri*wI=cyra`-u(P#A6h*xC z*FWOj_ur>9maVNVKJ}ST^YFv_+`W63%2(Xd6xbo~(KDcp%`S~6$&slx) zgfvZAT3)6sOG;z-xi5Ty{&2{D`;Y%IXV0GHzx;zgAc_J<*4o+{i}Uj}?65;?MV2=4 z-eXLKtsF@d)9(-Y5B|=-&q8mWuYdjPyz}g z&3AwJL%#HjU*Wk|Kf}iTF8THvy=Fv~W$5-iGHqeJWYd7p^mKCdyA93&DW43m4M&q3MR)@|a8b zr_A59m1T*n4Az!3lb9d<=tumsfBq-@`fvUQKlg<%V2opT&?n8BJbb*$xpU_cQnKCO zWipxY!Ht_NE}mj{cbiV9O{>*nFc`44wMCL7WLd^|Jm!rz-k>Z?UViyy%Ccl}aS`Vn z%gf6FbJ{z~qN=S3jkPu~P3nYZvq`hrW@l%I*I$2~KmYST=THCiPf631n>TMFq+~o9 zQB)QEexJc$KpZDL`|PuP@{^zB>eZ{HX^Jt1@i?E=N^7ktim;^;jyjimim&BrjqXE{ zjdT>oU~u@jiHc&3tdOS7XMXeVp=?RsAD}OIo4XOG;PNLw&x7^HGCMkm8PD!u!Z|N(6>$W1JmB%o_bGNZ=xB+?Vui2S*EBjxXf|5(dM%a~7wD!jE#XP6 zBeIU7n6NP(uw4|~UEg7AIG~v}@dg??p%tgZS~K>Za-m1>+6!EJ?Pn?DCc8$U8*`K< zbg=Z6L`O_D?o5aeXFDA$#QU5Kb%4GsL;0Y!wyq?~YbTCjKQ7O4anS?Es*>0{67Tqj z|HbdK+-=f{1+ny8Jb#u+UJz#)9!Wl$FxP4!ooBeSgOCC%B&D^OykMy}Pf?bPMmclc z9#vJbxwB1cu8ESK!C;##jfkYLeG`%kr_ZwaWSvH{NtC2GCzwnMDr3-Ep`{0Fh@>OY zf=I(~xXXw4AMg+V(LW+-v}kqa@LtgCbrAxF!y)I-pW`#1{TZw={L4T4CZ@8ioIXdp z6^cC4GzBln^9gYrQQ8{Z$P0W;(l&KSSZhPRumCFrUPm~oFhW9Xi*3iLzIC| zF)AYMbXi)O@ zLdF=O@pU2t))FT%Uik1!?XaprvP4bk=bfD)Lkc`ngl&Zs0;R$+CBtg$okJ;!cMh!- z&RX^|9rj&2Y=dgEYMQ|}&aGRiDtTv}2O6b_{lq)sV}!)Z;FMHFU&)D==xM9Pq9NSq)t4mmL> zF9Xn;j4@84;{>G@I71>K_9d;vG2C6HnTGu2l?&(ToI1ta>2p+QFpexrD61T)Kqw2+ zacXIqE6-l#fBmCB#(T{(m#@<8E`Sr{c|oI@Fqw=IIz5nlGW}Ibp|l{571sMeaPB>o z^*A4(X3H`-x^xti7ZsHYKoq5y7^#?)hQYW1713ySdFS2tIe+OHR#zYMzy0wa^E+St z9g-yF$=Vvd#RZJ_6s18%F%<$QB8+vx`qG*tQfL9=!7kR60bHSuZ~!%Ny~0afuR&qV zPg=|mJG7>MYvIG*&IuSBLps+(VcFQ-Wt8WfUb(>K*EEw!!Pfgffy&q1AkdJSNJ_j` zG?SPoPd0Gl39>2~ZEmpj_%Xd#KS%50W#;-5w%6|dvlBiJCv2e6JtrRP7tMSvR;pgNZH<4NBIne!q}3DsmR(1 z@yZexU;7Nv%4K#7k4jS_nX)^~X*6141>e_khcmLK#}wjZA66YNKCT^KEU-VR|M0z; zX?m>$8;>9It^e!);A3ZdT%J!EZLiXdQ*=3CZgGkAoh=%TMI!A;gy-Im-{k(|2VDNd zCop1}EJ1d&rnD#- z1CEJz$Sk7}p2>E>^3qwhx3|eU^IW?6JpbeW^gr`>ZG$&{@yo%BZz~oS=E?I3p0Ge0 zAC!!ehGwj>lOe)eoVOG>8c9I033bze6gX7ynujtXBn}}Q_&uJh!wc2)*kK`-(>P-}xa~ zX<0}cBuet*x36>W`j7eX2k+55)n#oEyr>EVBBH&#!r7N!p`7co?jesGSg(yw2AveKHbIzeeU7h1WI6r&c|10-Ro}V@W|FB?wR9ImDdDCBOEjQnPhYx=8 zL*k-Oxx2yXZkx}3`cn|a#LXtntc9rxa28>5?!EUGk3YCh#|`M2O}dP5CdX?@+|1~- z+RSB5+EUT21oIP*ezZk-Yn9@`IusQ~N!F>j!-Q2i!DkaB+Xy)XQQ)Lsx^W6n{oi46|;dsLOctDGk($f%-2}|+t4!3^tecWW1mtMR|+)T); z5-%b|r18!$9&KYreKJ?ju?2BC=EvXsGw!|lCgaUb7CK!T-43~yOkzpYh|u{6s!%QE zj71AY7RUHWjvWoqRmFTG;r@+xdH2m9v9tDwL^_tcEhLtSHDt|Zi0Mj!^o~qNv?2|Y zA(^d1Ub5f-03ZNKL_t(|=ZD|n;jQ=h%qL%_)l5-|!U_*M!q-d=NBT?zc9Gz=5=dW1 zH3%F+%6k+cY7$EH99}paz6KERIIBQvqBvo5dzZzfQ@r%@EByQ~`~r)o76Y_Y09S&V z%x`u-92(HxqVOp1kRq7G(${FNK7=7%T~Xxgxkn9KB)kpta9>f({&?_l`RM@K$xt+p z2sy>hd8`Y2z{*RciV%rLYDG5JWFgU%ttP8)HJQABo2_w0S4o<>MJgIpyAvM2^&Y2M zi+ujeUj`4W#RM_mC65*3NuO$%lSVNz(iFBN?JTnL(yJswVMit9ox6;!r9z_-c;l%` zPbD-;XryuoscB{z=hP{hNy2DS;w#0{$~h_-(RXnEwa@X~FZ?3<$^|Bs#rsCRHrErN zj?2}h=eRlt_ovmahtE4nJ0CWC{-)Yn2tnl_mrXw081hnKdGO!??cH@AY;3SA6h3Y9 z;!Cg4Ys|6s_B$k_CnRZx&&Q}Fqa_rBa!jNpPCBp?S`9^0NqF#xt@qxgy7@M8cL#Pi z88s7xuV|cJ#`WefF5rg?myzm>qMVS~F`3C(y?2AHNB8NZlJ3eP=Fwa9@4QRdYSWE& z$$J(X&k@H9U?Z>=EoJc376CoQ_qRx-BO0u-dHXgW{NP_v7N21L;uWGs3-8ra!|wrZ zw_fmS`pu9eVfF+-fRL{CSp)zeUjqnOXOYOjq19**$1yLy+#%KxqtO7RgQFMZK5uy7 zCz61&W(I61#GXsjcmlel2-$r>?Dy)-nNfuX-^fp+efQ5Z_4j}Ox4%ZMjDly+1TV7_ zv*c+f1y)KXuA)+c#=-*K#U-5a^tX2@CnYM18RR)dSuq+6d9wPLOi0?NmyoTPN_j-2 zYDP6lr`174DWjsK^x%bLaek4xcAL?5pRJ7zvLr#r5rgqC;5UhsD9-Q>#^VV^USN$O zRuOZ}4&CkoM#T(;X8EO8c=?xp8F}^s_bZ2Mbn#x-$QreG&j*vMj;137L}IVV{cvW? zY-Kzq-Lbyl?7YLB{r^V;yDDdG^#T30Rkj~}NH5VSS5OSLh_K{EAIdSCk3K}?1BQM7`jdG#B z5b&l#*EyF;03tw1TOlw63J{A$v>J4}b2QQ>J4>h7dG7}O)rUx-XiE_i1J*aV{_TH< z@rLe;*Jv)xGbwV6h{y}an3z&%$};T9ED1Rgi_g76*&i_&jo4a$$ed6lzJaX_rV0p| z);KEb>bpiZH=?el-;&kDVH3OxponT^L)Zy^lJIQ+VdT}gza&kCr=(CiV_V} zgCV2gfYKC1S`+ICtrXTvoQUu$Mn)NFV-AF*G8U;MOUsLRX}Npr1I%R1LbHt>jgi(O zy~i4h(h+IaLh6*tMHDh-(+XBz`6SQ0{sod}o?+Z*P(>+9#Ap=C%i7p*bw}FZ{R3Pb zdroD1Km#8uSjY6`)Et82vSto`;OP6uhYm!|BVnECg@&_bQoo^%Hy=esgU^LgL+1Kf$|}(MpA(- zNt1|HqlHwGt<6magCS9rhJtz_pq@bjffrNNSMw%_P_t`=#G>l|6<+C(3{?ADm|jJM zJ-OPKu6x*o{;2Jiwlai;B#uZb;wj>T50hFz?H~X@E>Nik9W!*6apdSNHfU$haHf}_ zPB+QkNpY)dFvv-*B>(UMH@DVVy?39Nzwiab!ZKuYqz#Qp8hER*rC>a`4V!)81vr}Ar@g=T)=}U0#G#lQLWi4Va zaDxfWw8=y|Y`qF1LMA}ypQ#W7elKl991^Tq_*U)_Y#$K1x*TyoRL!)m_^@yuxa^?? zVSgA&2tky@w3n86@zq!Ppct@n_a2nVtZqg zQwwd(q|b&ckU|p0hRT=ZgB%%I;z$xFV2#6S7m8P$W`PvDzKz-Z30v>K!^k{gS=-=~ zC@O@J7#Y!-YcVVxwu1TjOFUkGOxB1vwXn=~f16^m#s@q9id~g5_xL_}B}tMlQY56~ z4b1vOu7Bq?U;5coJp0T!wkAV-bDl=KMbv0Auof9B7Il22kAep`IE<#5O+utc;-|Cm zP_=fe*=zP93(4O27(t>EdfoIRttRskL>|)+&|%<*X+g+zik(zmdfa!IJ*N<;-~RpI z{+je2M?7EcjB$1#QM`#76GK`CoVOe5? zW|)_(Z|qRyC7mQAbAsW{IyxE<$q5k#Z7^1U~&^LS&IPH&N_v^Z;N zWlbjIA;MRPGRF)DLj{6;JhjZwU`~2a(?BOh{!$Nw}@#%HcKlt6ReocFY z^b+sD34sw{r3hw<?7X2M;w;hP=(nqnt*G7)6Ru4Mf}_?Jm(f`wXp>^9+RI(Qr&5 zCE81RrKfoKglaJ2?yXxO1=sM? zkpg^p!1g-!`17XDiNk|<+%=~4uG9N_@A1-t5G2hu?d~$2-ZE*{B2E&Tt&}8_2xUnd zDaLt>PiW08A(Dt&AFlFfW0U!XW#XubvIm3%tlZpst&%x2fV}CpR`NQYzA)p>TM+kAO_MW~9A<$ExGwN8d zKjvYC2b{&$52I>?e?N0_1uboCK~WmAxWU{DFY=j7&v50@Lmu3`!S4MJDIc$r`;uxh zV7Dr1Y^|}jxr%Mip&A*ZexLa)q7!8l+w1h#`zRNY8`v-gnY0-co}@R=^Dn>5#aCV- zJH5g<$=Grgq#0JJkQ6@kU%(7$BdnJD1V*R>-*M{6Je&!2Tn8T>@TWPx4iC)J+Oc`B z1V>`OG_+f77A{?**f_?LhF zU9Oy4q7iB48wm^TCXJ+lcNK%YVmKc0{kQKj^00Vjj^{tI%#-`~`CtCzueov>-uTjM z^b63&qXZ}su$jDfls2cZ@WGuADJ=ZV7hb?R!<+BlAomr|UOG=DL-@t!Ipbl8kV7Jw zAyteuCA~!`RZP}iVDa2DEM5K>sxgNpBGS4}K|MOzk8>P8&EtRM{A0B9)4aY%$7_#D z_3&KSf6wFQ#?zkjxceU#V(&fTt@r=hPY)iJ?gKY>wq_^rA(kb>CLTZavN@Vbj4yIT zF(GmlDGucfF3+*W2t~t?6iG@MB@}T?p&}|NF|!a+2;xfwdg{&fA&hWRX93K` zjeR|Q{OY@(74X1y|>le ze;#W}Y&pUgBOcwm#rro3+C7PmQ|4Og?ne*rA4~I-f zLslO>U~6rMPriJCrZp^dnrLE-@dy$gZ}oZq!-woR!3&>zohzUE8P2@;Nt!Dc7`lXE zCDBQTNp4tdHIDSHm&X&XP0yKPEuSQa!W|Xh<4p3Cn%}1cPBPQ?-~WhQogj15*TAWK zG`VBij__C>?_}{|rGk*eFR9THRfwqxf%lTZa7+?Q(pD2^3i|mNiKNl%kY)>viUDq+ zL)vK5a~h{Iauc$;A~B{LWlTmxw$|2o|ARX`SzqV;+&t|@%EHPDS1(^>{?aqF7EdvD zmWh{;HL*f6m=q+GYh=(@lO*)30f+=F0c`}*weatk@FV}sCjmFCyaL10_Ii%jdsej z%Zo(K7EyZ+i(pa|!S~Q^F@NPE8<}SF;X~GP%R?m??|O8HRnlB zUnE_=K$*-@j0|{5EG1qY-|xrm8TbFnnkwfw?KR)+nPKp~xH zK5Nm=8c-UnHDoI*JpZ}Ra`~letSoeCC7QX#W#UsSZ0ruXH<_Tb7CKESyr6Pnf9Pv| zpSoy>sSpcMXW{G<;QbwQxKlpLghm|I!231rN$ohZ=&6gv^gSuCXf`U3lM%6Qkm?2r zAPqPwEF}+CAFy)f0_9k;KAdpo@(aA$Z18TP*tvC`-ndVr(LgoMVzp&EA2G})Bx#%Z zxg`>rasKoLG@d)R-)C)WlV-!wo=@qxiqY0Ot*#_F)g{SJgH{+RDOCzlgQz{v%P)O` z)%zcE^X==*Nlzvfr@M3LJXwc$IYV9DN^COiZXG z(hBX|iD(sjeSf^!x}OH-I3YfK)x+BEqXhJ6@s6%Ut)cLeMxc44${l=UA zM6J88Nk5I9dZ^=*zE8lw%NeT)FxZ%rD|s zSJ{4epN(7ZvHRc_i;ZArZac-qIC||CqrsS>s7N}C^hJzm&-2Qc|2=w_ud!nl&DMeO0x<^)19SwQFk5xfz3<@O5@dJpm_WL6k&9X@Xat%2gOw;Y3If zQMn}&66riil%fzbGHmA@QJUbSXHpdqNv!gezCuQts+kS4Sr)j+71Q?EzrXPMiX_K??I%sZjE^PjVuP0OOiBn49ysyJG;FS-YuihZ7 zph=8IQ04`ZQh|Hddz2OwWr>%bwAEl|I6!3yMhPZWLDFn78Votrp2tioZ~-vRJ4Ze# z(FCkvQOR4YW*Mm5@yb+B;*qZ6!E1y10-z*_^tp@l%II`105y4i~A#k5AKF3J`GGsycoMC7OYT!E~G zAc}Ooz&N}Ng5`wAVZjNMkLyL}e zRKTeOuMZ=&I!CAgDcy>Nst;e-C+_?;)xg7pLQXT;Co3%z^93qe8X+oB+qWx1b-s z#*`HOX^Z^R+RO|6QJQ9o+jI274p}E|OCjnk(Hi52ppo$s;WY(5;1wwa2)qiBy^yl$ zX5MY-CDKZy7f9+P6X~(B4@v4s1hzIO-7K6daCjd~N(kqM;uII++y3O0aynr9HR(wv z?*6~kKFZC*6JUD%6NUGf_OyM|;p;t3vmCjuRFq{Xm-AkeR~9EcI*RdHQW-~*HE}*T z5{)w$=WC)ZjYSeCI#7Q&PgOW7X>dw_4&duk@IN`t@AZbln!sx4JSK|kI$VL05h#W8 z3Tr&2aYz~A>hPrZA@UJQKB@gL$7sbv-~Va-w!a;x@t(HVJmS5so6_opdrti-Q-6m$ z@{ABl43B)LkI=gN-`BX4)4ujM2{`Lu3hP<_;Oh$tkCG~wB()%WAJ9Ie4`z@dWO{)B z8Kl+8;M5V`6A6Xz!NH|GXd70T$O)YElv-frG`HB-6-9>!?PM!L)Ixk*J8bSAHocBq z=g{9rR@RRY)~EINVIkf-zW4s&Px~NMA8q9Du(uWoz$A6b&uc_nk%s^E06yYko@T74BUInZxfG7+T!r+|2c!N+1VLieH z!%sR-tZcBHgv5*BWAF%!RdvFTnmO~QOplr=8$s=BQQ_I0RC^@lweRKdcRONroRCy= zTwfjc-hO}2fxfDb9p}(IEWpQ^$g{1BKA388Sa_#(E`O6f{Qjo*J6@jFf@xdh+s?8f z>W4n%FyF__{r7L+)MMBf@osU>YKtc5)a{i#$$% zXDi=f0p7EOMBPW?(71@Y-=|U`W?J`nO>i)d=$Un5eP@Xe+_plIW>Ii%1>n{LI!3%{~-{u1^0pwx(J2`}(!Mj_?G9v2cpWXi{7M-XqQTq`rA17HB)28>Ya!+$&2|#%f@{4QhXlCk2x%Yn^d!~+?`PDy(hI1|7OnR)bOT-gKNV0((AcxpOp58z@XUZf)O+*V8%fX*K?uUH^7T12 zJ?OzsJigPS+5&LW1uv)w&NyV)TN~>!9;{8!DhkhGZHRX(jTaWH8iN^$(ivU`qOK_%k@o`Y z9Ksu>;X7yRG1NiWN*5AdwE$tuAdE6lwg${_fl(eI9Nq@2PdkZlpq)V5Fc&?N!U>Ed zjFSwDz!afFh2(ye6M?)yfSqDt$>1N+aY8Yffb%rd1R)g8R!9}bMJa)^j=8xxcKW*r zC1^An4927IeG6tR9M-xSHLJC@_NPd^4-T?v(#C#Y%ajM|I6um?6!EzEIdhWzG^W?I zh2rM`!WBMOvld8)*TL~%U4X|_FjW_TsL}Ps%xn~1g+WB%YHcFjzCbwjV8}f)af({t zrss%Rt`!ha8EU?d3hohtnJW5hR zk|JcF8F99%S8f|{nd%igQVJ;v9#(Gx7L%>;){#g>7AX`JRZ$VS08nmSg)a(XDZv;73rFHAw2q0az}Nzp zPjD7ol9ELUl?zEQN=0=>o5$J$V{3C!2l6#7b^ZN4)|NOE7!_u?*>&l-R2sQ?E4CN-m7jiTs)`F+^5o(f@EBxZt6!O-(0)m)f&urc7Pv)TVUkmS)-9G#2q&+Jz>vZQFqlkdeX*`lRFx2_lv1S!oDwGgx z4Yp8mn7~OC_JUJ~pK%s%EYgHT1dKttuu3bXh`oh;46%YyjvS4G7hec`6*!0xj&hO* z3#QicN=u?B3M;yGB#kEH(Fh>WgG?s$`+cHL6MrDKzqdue2a6)@Slx7*}-&SWwnP1701GaS!tv}cWp8QJ?x6W7~5zaREV)bH0n2oP_- z_t$YMmF&MU;s^qrd4)5$pf)k4m$J=>%07bGu3%(e~>d2w*n zQ8g}++b7nC_Z2|{)YqIkuBIzk4L^GLvr~beJ?sC++MC8mmR)y#zkBc7Vvoqky{fYI zuCDH`W^e4KNKuDMuw#7`R0w zO(2dLk4D6!0eW;m;7j)Q_UQF`=(}9{G@d7CH^S8DYkIBX@q|XLLY8G%ttnS4gnqza zG(=}PjaHNHK?kHLym|^Mpzjq^0)d(2Xl-WKQCk605JqK!N{RW!WmnMzK0&!cxm+fy zlnJYKD3`EldZ!PeBvL4Zk{BdLNQRTxab}f|7x*9*X`Z`1wUAijBXQFUfw`+uDui`L z*hLWL5;A3G+1N7><={_sTSc+ZP`n=~lEmS}GkqRlC09x{FL43vnp*cX zW5&4<4B!vc6NTtG^XTpI^^kZ!ge+v!auP$X2m1kWb; zLOKA10dkGVG_u$$l4eZ0efGC^>Fpno498?iLXyXf?U11CprO@jm0GRl9P8)iXE#H$ z*+fd0b+arZO;bvx68+JbO1;iFj;U9xXlv>0?w|snX06U(JVK`#D)8}y!woA$@wM9v zr*YzfMoMS5X$<4hi1A=d9LH>|-$E&$!1D=Ip+jS=+jEyA7S~p>z90-s1d;nddKfE6 zt)*P4I)^@sbHFr~ROc?c_#s-Au*%0nIF(TCwjjznkk1s{GYw*0$RbTS-<~xnQ}j@+ zxkJzwxOuV=Gu}EB82LMmZ#+L@Fq*J@JCX-o{>)vknhm9Ez2d+};E+El|b-n?-X*1>U zH_f4P`a{d+dmp86>3sUN`0&?REc{@Meq;yy!)pG+C*Z^0-~X56hjrgQgS(NWAhVgv zg2Li?()sl&XR+#!6GD@?tgkiW@tFQWmtnV0mL!aO19YB~Ok#ALQjQ`P+Vdy91LtpwsGx(2s-fTa3&yfj@kOfh|WC)Wx;c??(Q|F5-d&kQ#3 z$${^^bA{c#eU3j`AqYxntqJ^qSbGFs8533z1ZZLCCqCMEROZ@fuf*%`z0Ehi{W3rE zxi2Bhb(CL0OYKT?feRp;lbIA-EKowbMxGy4@yql0z^Ff%HTZ%cpt`K_lf+q&<_TvW zf0%K`pgPry$iqX=Ml~um_)vxl* zGtcn5zx%tatgH|O0sVfTAaG@Lp6A5zgg^Py|AQ}n@rzXIHGbv(`x%W!gkeOfR6RJo15c{U;N_i9y`o8m^SgIbiq4(gAZpj-FyEYzK6YgfAAwB;La?K z9}Mv6F{Nlt%N9rew@y=wkLDduf#3K3?Ek-Gii5uUci;VXMA00ZAgsp2AV`tqcsfTU zIg`PF;odHT?tnMf_wWgb%4Hg@CJRd|1eFp&wSr%YoGx(SfhWnVAw!T!*DugUBBhT~ z&Oj^`0TUfl77>HNfR|psNW0xemf8s4Cyf)7S0YzFo{HRjH5d3%ao&U?Gm_048+>qe z1H6cX!2}hSQGo-qWVt~q@LbCXPkKmYQNAQM8JRI;E@@ye#6}TkDbnVIWj8{Rl?bn7 zP$t79BPy+sQge}`?xd2YDdX{&NgQ+I`gQg?2i&-E1EmzzN`+>#Nqc^tR%4DJOAt6n zW-cKUmQ0F5memQRYvD4hz>OfMw}dHJXU<>90XR(&#BPdVFicBsGfPaSn2tyb&wck< zzVel?@P~i+hperwad2=@coYYCo*Ts}-=lM|&#(R3ukq9;e~f0c$&DK~SX*1eT4vSL z6Hh$BlTSX$8*jY9(@#Im*T4RCKKt3v&VtukJL^)%vFn>8Nis88kD>_Q_wR!9eiRme z7Qkmr!dO)SizvnfMoP5sFjA2ir*k`ny(w#uCUcM0qO4a)?YOxdxb&~NGxHM4tuU5* zHu1`kk%BB{V~4WyG#A_AKQNPdI~>ne5c*~J_sn#duW$}<(!n^3S(^0Ro+8g(vq>t5 zf{;KeY_8pm*7ZCQXrvh(ImmI*D=~M9*?QkoAkD}SXfwMdwbiJXF{V5gsM!hvqPg1QS%!Nxq9D;3`dj#MXgb1e}A7+IV7IMkWG00ub$!f>LQV{G|E1e zK+^4Y34;LNQy7yv@8VRFW;vecGwcm%G#UWB|Ni?7Mt#noKaXE3(>v%A28wY%p;9T) zJ?OE#v_Kr^gi#qK+??7|iZHa;phPS1Sv|5wXKxoNp|iKg?OW?y+`LJv(Zs|lkDR=Z zMyZ0|XcAN+0^f-QWWGZCAzC`@yta<_VXbos!MJ(y6y;^Cz(|D>5k?4%)fnp(qLq;J zhXa-t=Q+5&M=h*Ssni*EdvrP-YSjuyR#y;MN~MV5aDX5B1!Yx{=NX^>{O4VhPD+Nu zA?@}&S(eW_(9=?RFc@&*!UamD5?}k;*BA^2{Q9r|I=xWSgQFkL^ zv`G*~Agy(;krr#+zFu03RIU|oGVL(hLJ;^q3X3#3@u-6&M@c8Et0dSgB^$@2@q|m4 zKOh|qxN_+t%D~V3#HVT0>*zG4ymEwLP{CGeZa-2kQ%W_7wG7fBB6UCt{D9#wrqP@y z*Mj+l6-=&?K(008-hidKd4!TANkTaYxpe6g@4odW^-7hJ@1u;nIqLN$aU4^rM)(4x z$mtFDF*c?@95d_>n453W?d|Zug|nPFdz>uK*+1B(Qms-cM@*6!C82Y$OQqUkluQUQ zG} z9;L|~Wnb(@M;w%`(3J`PrFg)_WEriKfvS} z)oRsE5weUd&s`=A1FF?(0gQ23dwPdYQB>C2892k?927wi5Cj3ojveD?fA(kj#y7sf z=H@0lJ3Dl{T~=3DdEkKu0B3Uk&_fSmjNvn%`3ztA%2)XP-~WAn^;dtDhaP%p*4Uhu z@x$Q|Yn?-iQi?3g@N(g~6>B=frRdz@%3di|0b8?Rr+lOWgDM1xbbKT=OO3{H=%@JB z0+AvQ@pIkWw-Ch>9s++h*wxd4m2pvexVk+&-E!e=+zMr!orV<(X)Rb)!1@H^fs>Ib zl}iX?N#oefSFHvT<|{eb_<+&DkWR19q&H-+->0{Kz-TaLZf>6ag9FZ-d4R+i27ZM~ zdzs37oAD$ewUSC$W->|W^(PqIh{vzgNUQ*)8~J1zi7_OT0hMZ%+~$}(C-M~Kz{i-F z+gm#vJ$jTlPI&j7*Eo0IaTew)Y;Rtr6jfMVU1E24mrkd{zxg+R!nyPJ^YG&zqgt=h zYBt%~+hu8Om2W=%EjIQx`SfRgf`d^HD`1ihnX9+Cacdn5tgfuktj;k>wF^S4*&XfT z$BL_)AF$KeMc#JZFP-x7kPw${h6h+j-kcl5*lt+?fpqzswI>&g%p`DDO zR%?=shU95VxfD@tv{5o-b!nMo&|xy@v$MU&_RbDhHgBN3fJS4Ea=pQs`yZrIujAFK zq(U&tQgRK_52%&`OlF+JZh@&cMH151U^By@yGO;JBOmp7{@L%6juYN^?QL`pCr_T{ z)mL9zpu~~NYeV<1j zd4xuz;ShDob+vbPwh=9AEzOm+5x9#W>NUQmM?! z`Z#vuE-&X$SFhk+GRwTh&|7Gn1>&95?O=w=b^3%USVj)4Zq>A%?`~kED{qC{3?n23 zqDLZ)LfU(k0}HgZxzp78a1?WX2Y)M=mGTIIvW~UXELRZ1Vn+ivr^Qh9Jv<>%#==2| z{>C+~UAfB6&Mrnv8uc~{^K%?Oev;uNMB7Hv9)uX|NB3FgU6nDlxLrLj{ow%`Y+hs=}@XfSWgoA9$^rWrbCR;T)p}} z^UHG#Cq2?^%*w(d7)`krlBOxmr6$6{I5*^2ydZEKZzIXQu(Y(q z($W&$Zg=*(dc7X=^Yi3+&dr-QId|?HtyYWMw{P>UZ+(l8fBfT|K7D%jH?u5bFc@I1 zrCcu4Y&P+%6ez2UeeTq#si1JlVn1jtPT9gT?efh6YihsZWIBrG)+_{_x6%}r=me>- zRyb&#l_(>SxQ>A|o^w(wL^_q5DJnCgZh>Z&7X4ICJI< zBJ_CSwU^l1+v4m)=eV|cjo03Ng9jeCpYOf=J%U=m>+ikJ{%D_1p8X`g40-YUe~YgJ zUVQFls`Uz&-?~h@GS8DAdx~_B@$`58f-Bc9Q!Q8c!~f-vICu7bNCd}@o#kMAgR&nm z?DsK2z zE3z!5Txl?jCwLM+Ei9P;E9?J${VUwPUne4NwBp>tUsbQRNvH+6s*nnm}2^c))l6!=G{U)tCAG|MvHo zWEsjcr2P(0Jo*5SJn{%PHg2=9(57>+&tx*f3*4463<9#O=#Wp-Fn2drrva?B>+t)& zkLP(asVE@?=g*%f3`2Hyc4iH$DS~T#eVzIFIZm8dV{dN;PZ*Qain}7CC{<%ODxLsLzs1`wJoehVWHFq2w(wQ_VY+=$YG49d2 z4z$8Ckt71=yX2s9b}CP0WucJaFw3G?AlwfNIT%?0N{SKGG|PgR?MIBXXenI)3*~}W z6!tLMAWe?UGfL9pdjgS->8)Sm%3H5-_3by!XU|h=&oefX z&Tz~#-+PglUVoGG7anE#$T4#5By^1t_(9+pIY2px$l`>9&OSmL(m3JI{`WuO`jx9Z z`mv9ZOkys+_b$&p`y3}vp5Wqp7x~lw^G~VHwRr!^Rd)CGSzbB9&Gilb`mg_*gKm$N zl_Tu$?Q`YI6;7T!MWs^a`04*twmLZh7D_{k8k9wq(v$A%Ihn{9+V+s;PQ3m_IPZUK=CX*sVM=UHX zFc|b1jYd=|6$j#JwRrBi=h)rdMM{U#6GG5xweWqPZnsO4Bvh*vHwTteyrsh)&PGK_ zg3#HW&ToNkF~z7wYU{Y2n7iPO4v;=otaSCV5yf!&um+H_STt7X!Va=n;iTgXPx->r zPTH)zFJjpUXN3vM88%y24R|I4V~|=Cd5TH5Lw{$Jz1!<--?&aZ=(5nNbK=2sR8OBL zk19k_i8Kt+UVsn^FA%gs!9V=`ukgzEU+3Td+pp3N8+`n!Phd?>B`P6ugGw}hno+Ao zbh~4=E?q%NNvTxg`_Ddy9|Zhozx)LV6z^SspRYgr7aYHEmi=Lun+JRR!kP2@*r$Gm zix=PJFTVKdo|9~sk zukrVO`E!I}IBUlI(wBa5HgBv}otopd&Feh$&;!`OP%f1i560|l?QwkV1f`N=KINI^ z{CyXA@cxhSSKs*?mKw`ct5x={?C_oMe8-J~Ou&PSXLz(~NBWZG zg&K=%OB~r+W&74T2c13MfBQ8qY0ZW64-hn)cyW$tw9rANXtrixGSbdA@4xyAfA6P0 zNxXBLuvX{hrMEeL_B4sHm{ee_N59`EDwoKz%+Xw@sIzHBcn{WL8o<+L5-=k(OpiRz zX8|5Xk<<f_H9ij$60Z@qM34r9_e>lu9KI4h{hLt>5}BCX)&0&Yk0>mtNx4S6}7W zv12^>FODCWsiojHs z!mp;F5+YI4xt1;5&4m*LP*Q-+u}-UF7Q|Ls$MaNjrs8p!_v_|?1!BeZCY=tG)dW@( z=nOAQ@$#6hYaej=oj191@m&@4ZNEVkCIM_enptHxZ;E5+cPHTRSTN@kPSiiyi!aS!=pW?}^7ILY!vXJKexJ)9d_b?)qgt(z#1mGQR**{Z z?6;rckG}fvSY25m&vNoKBTydoat*W~%X0F(pnFP}1yk$xv>8r{soHF^a{L&JtE&jl zV-!!=x_z6SgMIb~19B|YD5Md3luUv@>2mG07kK5n-=bX(c<{bcj0b%h^*Tq7uaORi zy!ZNBO!|FH7Sm`nW?&M}^ROmES&gSNLX+W}4BuubG}2^Xb4+H*Q;n~D!l+W{jJX7) zq+~GYGFPvnlbB@EXQ|z0IOvnbDN(tE3PVPdl&D-~G#ue6pD6HYL;?4oIF8K5oIiP# zrDm1eH?DDeV}ok7My)kRnrb{PJhX6frBmXxu*GLWfDEQguRANxG*wDLinCmqa)K4p zV7oIopFK+9)&RHGx)UXY1Ds387j}GL=c1>rB{Pn)-i*`S1SKzv7So_>cL$-~X5V!5{nq^Ye?Sz~?)!JkP;!pVOasl%7nfA6uk#e32+9 z@!7xs3tYTf(_UO5^dl;j3cm8V^8O_@Zf@`=fBf(Gt^fQVb9Qx=YNf*8zWfT4R+IW84?e%rGZ(d`2Ym=4bE8KVd z7_Ip#*c8#bNnka}Xa{8`oLp`*ztCpu#h19gzDbr@vPzwCdx7Jta}10iXtl65CGfzH zV@jdI?(ZRlW|AfJCo%QK1vDXnXp_l^Bv&L@j32s0kWJ9pgl5HO+~20`DMDXkhkGnk zeMWIcmJ6~V#D)>0%;I@ftj@7<%$%q2k{*q`2i-1}y>))>W2gC-|MUOK$>S%fwvQmg zDxPZ=sSkrFy9_r4hu?*WaziHPlO$XNtcYp-LqT2k2R_rtnVyEW)8e=Qj#xnyl}KVu zoTUU(;Y(SN#Vx)xELK8>qaNfMUkLX1_qqAOC3e?ul20bI=NhaWIl}6R)2R6c5)rbW zd!#ZXsDzLw2%`%Sh?|xb;uBa4{mFP8Be&qevA3# z1?FlEEE=8Xlu8lhav5KF{G%^_nSQ^IClxCzD>Q0#@+_y<>(QQ{XOP5qsd&j^p>tC- zR}~p+@s%RaQpRaawb5jpW|YzlUxrSbs_4QyJu-dwcsVE-v!-KmUtZ zs|kXLAn-`@)Tw%isbY!iI83p)wPvfh{&(Psj;;lPP@GshNmODBkiK&CN@*2= z7xHI+_UCwk&$$QA({8uP;)M6FT;{=tFSwbpfvM5D5E7{ZrduVa_@U8OJ4&Ijh1{${ zNRKm*J;CaU6C7-BvvYHu-5Xa)Zr|X(<4Y_r)Ht?0$GOvOE??ZGUj9Cx{h6O5>F#m; z(pAc(8q!!s`!PwD;E#GNG+N}@n89E`ASHf0#!(*TRG-ob6 z?SFe#~hBN0b&|F+$kS63~O|?`-NI^ax zptCE?;l2hOrPq;Ha{$AKl*Tk`Qo;M~`xJb%k;{qFk$@>P_&=SR;%5wZIriW_nIjB8Ip#0uutI zAoP6vs>eg;&hxp?eug(*d!6C_J}*4`EI)PsWB7rGzdI&Q#?-ZBu390q0f~}aIDdg& zzfW#7m3j^3ONNs%sWAwl$)z{bFqs7~({pRE#-eowo{v@~a%nhq|3j##iVRD{S%$RQ zxxLS#tB|?D@Y0LV<5we2Eu3NPgOePLdxT*?quFL-V}oj?>6A-m*HjeO+`%)Wuv`EY z?pACO!V&c<)`U%Nh4>&-@sv4)NJ&t-MhVNgYA1$KhEvDQ+R%=uuAJ0OPr!Y#%(UkL)!L4nc|I65a46%UC=F@xR#p0ET;(A&Ji`o*`1yIb`4cd5?Jv3+}=vd!4M z{6399xsJCZ;{V+u@Gt}D&QSZqDSG$5=A({j^K0rjFlBFxLjA+UIiUnRfzdI>W(b)g zl_4-tF*)1UuJgt_@3PU^qqVfeeHR|&$kC&Cfuh=Kk;W7D;{=mvWK_rVLk!Aw4Si8a z)w+d9PVHBU_m^c3=pU&Nf#l4YGraix3w-yx-{r|C9^=IE6Kt-pGw2NvN>Fb$2!hDX z0)3BeuSXDtNG#n^52+O8Y6W8qz0r`!uK?2NY8PxRcMjbR8%2R@mUsar=}OqgAOASD zW{aQ{6^pNNGj?|cX3Q^(rBW;Lm(TnK8yg$^{LlY9Cr=-z-|w@xzr)hX66wTn7frJW z-08nKP8<+NcuoqoxW>j9a+48xiag7(MmVi3DY3>?Q(C}&f57cdhYOEC&Tg+qSg+Gu zS?1@z@JpOLdmmY^kH}5Y%fK~1jXMw8Sd;>Z!#O+6DyMYf7F%Z$KgnXSilEwJ?Y{HO z&(E=Q^L=h#gZ|zvtZzAe=04huEw*oM^7OZE6G{kt@WLkhZ@`Vqn6b9qks-mct1^UH0c%w-$ z`3T=LM1dgJFi#5J9s^B48w89483rp=u#Q_*fK~aRO|P ztC`O-mpIfYbMFaIk{dT}^56px(B0eT+kf>84?X@cKmC(G#UzR8dm6jkMB=oOtWpfE zWs+x%G**Rv!6FfZEsGMFtQ|ujz52utO zk;2Y4JGPiSSfMfARN_crm4g_Xf_~_Eig(_9m*vGJj;=)>&xI(`?Q$>UHs@ zk5v+3oW8h3xh-A6?KQdEs)<5N+*$iL*#}`Iepn*2f{C$Yd5*G@QhSLLwKA)#i`>3? zk*n{%ik5Kx!SkFtvdZq}235a|@JiVF5}p2-ci(-NciwrKQE!9AR)ys#gYFHEG<-I1 z-lWuM5(G^K-EFF2m9Si8{rz`%^Ob@c#9Z;<|8Kxs@UX^MfF@Zo2 z4_sg1aDW}gc+M{9l#p-$k3n$0D9}GFpg)R5^usc+q#(dk7^FFbGFib&lGY$hjxd^l zl#*`=MaH;$z~=QU>|VYC8+$A?+MIjv0_`(rpgGR~i}pNJDWX3bqdcF;3mmZ_7X^#O zEkah`*}r3*2Gim9Tx-;6FD~%XtAES#!XlsfPd`T(_)Kg@X}-b!U_hx>agr!fGA`s) zl=T>=6a2u@#H2NMJf@10P+E&GC9*I|JM1q!JHIx?*wmq!gdmU>QS#7PMv`Sj)Bc5Z z4MJ;#+cy?a)G#XH*K5p`D^x0FbZ!WwAP7RzBt`_`UF}_TXYs@mqjbQ=)yrJH)FC`|l;bN6$a1nQW`4Pjv5M}bhblz`QNa3*O`d!41)4{j zOvblRlWm5#FCvU!*zcjoW5V3fE|rOZV6aOgn5Q?MaP{>qZf@_gdFvV%)>?QrrCO;o zH^0DKtBTH2Og6z2no_MsVltA6VQbVU^s0E(3ZcUF8V*Zkepm*ca)hTR_V9DvAp0ZZ z^G6=afTuGgkO_}m3Ni^f7NkLt*sx2GE5sh?e^Yxh#ZBy1C9iKaBx6-aRI*+ zV1*zE0_x2g!{LzKUWaDAffSbUXyoRwlOdre@RTLbQsRlGS}FsA@py!gmP(}p2$I2o ziWlM+YK}8om_r#f@O*?x@iMQNqq|KAY{e;Ddrr&u4h0HCLQk8rXJ09>j z!7F+SV?7|3cSB?kf5ZjL=1x#K`CK8Kys(f8ztFADvJ54h;DObaG)WllAMl_2_@^0l z_GtPc6(R8}Rj1ApIU_j-9x70EXr{ePp+HJk8QB8gY^+oF5JDm)1YwmdiHS2qVl*C> z2t|q_H836wsjHOs;sScKf*g+s@(f?+oVakBb0_cP*3Avlq(?QftbcHc@4tAF?GquV zPpmK+@6%}2$*e_1H3p+GuYLb*I{O*zg%V1KmueVh;uOy=oml>JS*z^tr-dQD}70*fJu_+XV+GUCkJ#!eFB}b&}*Wj8$@eV&u`J;KBql92GnGnY@ zaU9cV)G=C+8y~DUTV(Ggh{K(Z@)Ss*l-vI=uP!h#FPB-p^C*=keuHQw=g)?fV_hQmI?VISMuXQ5i6 zT#BINgP(Ks+4(ex3^es&(m(Us00yKdiZz@jbJ>ExpHeA8AUvF?tZ*-iBXnNskc}x*Jz|U zqtS%@UXMw4pV0TH)@#IBN-h**5wLppEbWu`^XQNN6k)wiH@Aq*jq6ta;2>jm82y7K zw961;hD13Wv>z43Klpl!v?*nBgtQD&<7kah2_p?QONhv5$`pUNN49x`+wZ>4-sMY# zc}g=1i4j!qJInm(`-v8hVP%!nZ(zbEu?WbtM1_&lM;30+You|SOhBkSWNz@L8qhYs zOGQw4PLoQg!g*1cLzRcblVD9Y^G?QChfXujeLz`INYY-P{(gsSG;s}^EN46#F_;V) z$%L^^(AvxbXS!{fqI`lNpjN9Tk&Oi?nN1(w!&_VX!=Ws1*r^IU(1 z7}Cj@@$pYI!E9I;F}@b)vkeM6ETC3L~o3D&=|&q~p(KMgL%H zuS2O?qgt!uMIi>~gJiG;s!z@4&lU~2Tg;~cJoVp2xbvS|r&FzzPoP}sZMBBnZAn5Q z2xNwcdzjH4um08l!%|t$3NmbekKyJzlg=&?;8#jywK}Ih{gY5xWc2nGZrs>rG|3rG zV#e8ou}%m|0e%oUmRsf#$O^S`n|j4#aBvA@dL&8Apx39{*=I5s5=ftVrB0UQ42Bc5 zkhE7;SUGi)^4uK8QzSYk5Fu!%S9W*-x4Dxj)>vdzqBgg{+>sNskDsP8e+0rR2_9l& z^SV{`qXT$G_W6Mk)17A4y?f@vpMTiCc~&CY98bhZPoRZQtRXi7Ur8d7Q_9E4gWIgX z@jUw7C(07aXqwe3wpQnsr|1P$jvPPFu`>@N%L^Ej zbm69F5V@JTF!)O0E6;&ZjKP|ma#SKoCXNDDl+d2%L;{S?5m`duIjPh1i3bh7p z4HB0bC*!=xR6bMlb!#1aS_n&?8+>0OrH9s2p?6ne%REQs`JJYfF`zYQjVbh`jmZmv zcy}XYS;lZUWH=m>rYSp}Jper4r(CU2uGT3xYSfxd%JmwlvEVC|7dRs{;jV%5LzL$; zjx(%Kc%rBtremx^5JDTb5KO@}21{z(%`S`s0+m9aey7L!^=n9zaq7qtt%|@5cGp8pvTVMHr;NY%o?IfnNp=pwb>vnMMUK?rAkB) zl~930HsN__Bgt}?`KINnD9~v_2*%?vxiyad7`W`ItwCo_jILA)L0F8o7^~5_anw(w zBZLU$=$i(#$-xSgHyzg*JiHkU_V6{E`YcaNZ)5UVg)o(cAxkJ(LppW=Js6J|jK=f_ z11A|{HO)qga;-{hZl2~`i%O+}^gXn7E{7tBFj6sqt`)E4k!6x!Oq zdjS7nV5+}U0N)um-6^f7t9dSRyt+qk)W=gL0vVvgBR&6_vby}ik}w@(xVlqzM))e5Cr zm1?U&eQu7hR$(w1BSIe)1z6>gTPOBruwW%+zfKnG8CxX`L$ub6MiU0ZAy4RW`P1CzNyVFwI$-w0Js*DkL=Frl*8%7nP4bnoAXIPyfJVogF z2v0fPGn2!xi!v!w4`*WxNs=%gk4fW%ot+(q!y*0t5S=EJ%T*Q@+AJ+CQEj%MQo=}u zD1agY*R2mcAK&-s4f@EypJi}kWnmf*HqY<{ghDz95fv+=s-*X+=WK2BllVu5|QU$M4r`H=J{Rk13uu75Q7AB)Ko)?g(PO(NBcqk!$^d9(d0N;(oQg=13?gaMTLH%J4w zI1^Nw3rvy}KMatbA~l-SSfr;AegF!51!*!trx_lSk{{p;iAgeak`j*-@_0gbzsJ_b zCY??PAq4aD^UN*GF}J#aiag5YGGV!d=Z9!(m?Rl-o)tRDj+o&tf)iMGWs-nY&IIeV z)@bX3EDS?}ARvjeLT6jd#w^x452Y-PQ6j_Q_D)l!h9pU5WpBM+r&g=E%vWU3*)_yN zs1j2TD+>i(w6Hf3Fc}R&3Y2hVtddT4*l10jr_?JRm<+4IT8%GU87#EHra6IBWJydm zNf{3Z3=al$_IB9Y+oL<|N>M-<22QUm3PDJ`FhD4eNtTjm$1#_M zrAg#VOdJ=@!i-4dsC*3ZK4!GX-i=Gd{Vlv~Ow|+EBx7*UMaL;b6%Kr#t<17?|6|<$ ziO-@N$JiZ1?p5%@3Z6BPWuOyheJdqGDRSW`v2v*KtU-zlUxBCG0%U;PNOJ3e3NX@h zHmn$=1X(;!>%y$9pyWDCzzo)cAB1E^&unaF4MvR9!QR@qZuubr>=0~!_Y(Tv@7>!8 zg+tj`3XHX67y`fS9Pg4bHEAe~JB)6=4dpV96Nq`cFpe|A>CQ5l_zG|^>BySV90Yf2X@UQ zCmbKh!hSY41k!muPu&PbZphM@WISP+(9$9LrdJ36lD4hZpJdfP>$fP7UlKD~-n`Gq4 z5KR34^7f`*mR)I?-*4|T-+78LBWEd7Ih3Rlr4nK)iouOBG|+(C#u&TXZR~Elm+|li z;BWrw#TPHTz1()UjTdg3YAB$9DwPUUB~_JDQYuq9Mvf5~bKJP&xo6zlANIL7BU33A zlYO*qD&oc+&amIJ-~GJL`#ji|@c>J*oJpJ$RGJ9sp|rWaTBle-p>lJRb^XAMO_d+2 z$`})Lg}`<^(p-^eMF88T?FgMC(+sh_eqTT7Sny;3=h?^oQB43oMoXVX?0EY1haWRG z7Z#*N@1^CE=p0mvD`G0TkDu)F;h+91bZ-rMn~;Q*yb`U>0=8FSG)_^m;^=ed8D^3X zA3P!n8Z4Z>Nc+S|{8k$!Z2F@iN*ST;z%QE;N1Ws2Ic?8{UZ2fJ8{B(vpWWSEgk>|g zFi(47kw&MDTMlqaWpIicfY4ZuhvT`73#${LD8m#6Y07Y|Jle-gxc@L-Kf zrG(>n42OO8_YWA4hk(SkB|Ce&MNev(dc97o)uh#GQLEJmN*-C3;kxFtr@h7oAs5B0 zXmqWml%NVFQf+2qm1P8;i^_6zUI1ar7_)1wv6Z4Cr@m3fsBM3D#~l044#VM)6Q@qo zXtih;DYsiHp`=BBFrs^~$NhV&%(dzqTUw-9uRtD=Y~16)jrZAlc!Q&zGE1Erp44=A zb{O{tSe8o~rR?-lRDFpHKlqbW&Rk@uTn0`BuQ7+hB_57xSQb{6V&|rrB6n9J|_9JY|$0)ggV`+R_ATW&|x#ckJ1r*w}#Zu^3=fWma z!YpwLA2Cscwxt!e%D?vvoM(^MR8I%w;aT{T{y!buPb{tvn7Yth2L;--Ylt*`GkYs9(V5C;pUB7bh|w& zwJIwsE41epXt rL&0>TLZgZL@~WGNVIf6$q{+^elj8+D*vWjGk$QXFIsAi&Ba- zGcI~z7}D$Y=ytp8_qvQmBjX9Aa!#B$MyJzZZmx~*`vot$m^3t`+N@8t)}(1XTg%&p zfp`+dNO@>>*9N3f3amV(Dg;)Z&OEZvnq)F&(CafEkGXNT}}NpQ3Z_ z73eGx3zvyqA}U%jtFDijgxGmzD6Ilg+aj@SBHJbtHjc1xY=KlMc{V|lU`xogAj@(} zu?s4MeS&kn+iEPzL2VK^- z*4f_Q;?Dg?R7y*-2{Mw6H--EV6>PtO_v(^;k}h{6!h^|7QxrI}&B z$%5~krzW6MWy&wxP&C;51JY+l?u(!3r&ejIw;ebjx;MkEB=9lNFH|vbLI}A71 z*|>F$cz1)6NRa6W%Sups!t#*?n(Y>AYisQ7>{IqjIM__Qd7k^}f5fD|j9spi*&Zpj zX^&MJRE94lmd+7{w{tEenY2*SF&gAxf=_7>8PjHf$K(EEk;P-oNg;(h`^(g0JJ&`0 z36rH}S%&Yph&%(O3a~Y!>RO0L>-V(e$<+7hHo{K~U?D(1!-4)2wvW|_Q8>bYIyr@) zcM%*m86FX(Y=ju>u=f66uzCGGD)E3I3n`17#rb*sBga^~|B!<)WR&GZ(!sB`@k<@* z^+isf{Ve!(^6`YVjYr&ku*yV596f!UN^=gsb_~a_26ea-oWN?#wx3 z4{95d2vW@0V_IvLmzO!%KVUo_Q}TSuLB$}|lZZ6WupOt+AvZxhwTHC?SUSVCOaQ5L z!elt4zq`%;-WG%20r4cH)u^#N*JPkfVQwdF@QlJa*J69mNaWyWZ}WAbED;y#H6v&Ax0^ZXu_~>gxGG}x=p=a zXL)&*r9(1mSSW=}iW3Mc}(&{|7kJWJp^0!K1j5I1LoS1h58C;20`10W48yeb`-4%x2$dE9PH4fQ#{8EO({>Y%F39O`=NS*%o=0 z;Yo`un&8_G=$xx>zlqp+@KEPg{>0k#aG*_7!M|<*A8rDF#_prAi@}#6$Pr{r2{vGyjT*3|aSn5>ik3(_+?RFclT%kU{0E@>+x*>Nq4%i+kg4Plu zXft>GB=bj(V+Dcf9ExHr+cQC{by4oInOd`G0k&&q!!(_y#2#*8r;%kDnKt$sIx`?m zxm-qT&GqZoxpe6g`+K{bIdg^=UU-2{r-SEMGumUKGa0=W(~MV{xZtgLYA)G6lY=kZIyjJu5#l*>j| zb`pmqd4^>lWNC~}Q!J6=NP%M+=8~1hgpanFbho+s-k%fLAq(Z4 zGGmsSKJo4j+Yi?fR)7_>*i9s9ZGpKLUZi#MIjYCb(v4kmyMnOn;^ys`8=lr=Ns8xK zMS5Ilo=+#X;-)tPE&rMUER>!FFv2V#rrd9>HF=g%_C2D>gp%WugoaNpRL&p&KmQW@ z>9y`(wh`fPV^d5Gsf1a>X@yN{NbOkUSoozTgCxby14^9}ESwCkh~pHbpj0gxCH}(X{PN|?T)A?Ea=FawufNXxT!%`ff@N8Z z$77Ntp4E5}7P(hqduxwMsf3lMJlxvhyTA7qzy1&Z0sFlJ+KmQUYi``U$v5A5o1g!M zzlU3@kSYsdy9E|en3@X0iEZ@|5@px%;k`0 z8R0NQWrkzzy8%%$;oP}%oIm>l2L}giY;17n)@`;oHtBRaEFW2<9QY_SlVk#E0*;X} zj^YT{F3Kp=v8SbRbkN$=T`kv$76?d{QRm1|2-_x*lKR3t^}u5DUW4A|77sQb;AcJD zm3h+9fO07yOf33Q&PW6_7f-Q#?(?YTJo~AGvI_KGXj2Nyiljx$g0?DV0GonB>x9R_ zETS^)p*HL`VCuG1+G?!QsVOvJ}HdUmGCj;1=$B(at|F*Z;Y>zOLMN#~h z=-F{gAVc8#6?)NtOgl82i+EPf{IJWT!9JVY_n2$d2={l{+T5XMA0QF9UVyJP{jg7` zRi)Cb61jqLo?`nooN5^xk4!0qqmU#s&>+{Qh%PKsC!TuVNLkFfNuki;8{Mlg8k43e zx31r2b#;|WrNS4!@C6nY7L2z|*)#)aJ+)jh5~Abrm`qDX2P4j&ex8HfUDod1<4gbd z|G`|V&j0v7{P+Cm7k-4BlZYEPZm_oTh~a3=tDk+5m1D>0%rD|ekZLMpS_txCq2!dS z{@C!^yrfVbnOR7$ztAWkOa={aP&K+Y|TpyZ*_$AbO_eVy*RKnuk%46&rZu`Q%y zp^E^PS{Wr7TQceI6885IaY#GxsmdBEia0npzz*s}RM7PnZh3*U(qS)_IH^ae*&1WPN%~p z41vc+&RJ?Yg>2iVR`MxXIh(gX;?kRc!u#L+D*x3#`c*ETSmgA4gS8tUVkIM9fB8Ir z|L1<1T?L*ztoBwq*b#Ra~D`DN>~oSwfJH=&j#kvb#o*3<=T@ z!XbH*V3(^*oGR|hX_j7mo$9Fz#D0tJM03y!$x=<8#z->k!aYPQVzXc+T?%nFGEfFe&k)2(PRS2&gkXR30loFR1WcH(I0QuO z-T#R7n^%ydAr%xQkzrYaVV)EECF0gHul&?6AQn&2O?+%`9w}>B1ZbU;>jA=k+)igY zLJa9b2!YBJrBZ1IO8K^_g|4oy^4{eSkhaBz7eB-Er%uk$X2&r_`!EdgJ$Gickt7Me zYiO5Y7&6%1;MzNHaR2&;eD=i`Ie+Ff?_c^hu9P&Z70y2Y9JcH7XzdZ#Zr-Ldzs%g? z3QH?1j3+5}xrQ#+$t;gtSY*ORNw=`cDXx)LSi;EPPoK-D0Ss8SB+paw{Hd~GaoJqg zD_Rc=4B${taHbVFkYp)3S4JU1+C>S-qm*M3Ttkn=6cw+B-4iIFHA!cvS@e+k^zn0LvH@XAG3S=D%EUE%gV`Mjx;{!nq6C??NreTL4`Rx$ zGl45ripUEwcgNImXX9KvwFdqkGxe z#Kwc$T8odXTm!&jzs$-z;Vd6w0itTw4-PLUgXERZ8Sp%A^mG?UZ4{ApfXB!PPY4yzxboyqb)Vr!43_X<4DEsu#c$KNm}#Np8pKbeg97|v1&wl zjZ_6RD~ogw_HfD?>6p@oS6E++MkA6aE__-ev+j*!eBWnxcbBh!{p%!2!fUU+#>rF9 z70v(82J3V| zcX9j@7hik@+wm#QFLUIj*HGmalT2V&>R6>JgD^JLMx}5qkOiVJyC!C_0!SR&@S~@7 zTVU3zXIU15!GNWuC3d^}xUM_vPnJ?Ljwh6AC89Jj9W@$kX`?euHc4qT8YEF#+^lo< z_V&1O`v&_5dmKM?l2=}O8Ik7XX-1|r(y|b?LzKkiS`(B@0EE#PTUvO&V|<*I+23-! zkGT5|AN}d?VTCfaL{GG)4>vgB%CljIAGH6)7{?U&Ye4~ZSBxrT%_IUFo`qvdqb3v z1l1~*G_*=7@)=bRA&THNkMVF!;QEyOk`b-TO^>Z@*+^hvX^Bz)fZzG;-=!^@GdIwdcsw zgleg3Y*-5wOyBnyk3($BMrdLBanYzWMPOV#{A5V9`X1f8SMbQGRsy8!U^kk03&*fK zE3__rp4@MfSXGkT!bZ}pmGC@?osQ_#%aBbN?d=lw_OZ#SmIEBmBgr+nu!_=-EQl3` zh+&DGX5)Sa>2^)rV&4*)vZDyfBhN5`nO$abunnC~PrZI~_`&%m;n~TJ~4m zrpWeTg!}OC!h%etW(JlDsZ&If67O%)UBAnbnoYA_!uNf0D`hn7GRkdIyNvLB5~s!s zpZgKSq(^%HE=y-Fk`4EW!T~mdiY;(54N*i1!Gw%38q(J`VVYtGVpgM^`UquNMnCG) zY&HqQF?pWx&;Hr}f>MfK{N-Py(P*F*1eG#Tlzi&(Pcw|^3}+Xr7Pf7pq|Ih8B;M&W z8iiCVbyk)asaC6`VMMRjBaIW>AYlE@edbo4Nxk00LNFOe#L0xf^Qn}4;%H2FcLx;?xOC}V9^AUh zV0Vq9E6W7sfc1wDd4F$@e9}W(7Nt^!bLU?~3X5=7$Ac8VpXP)iUVzAz&GQLo@=d&l-Z=$#fbmd_&0<8$+p_!Ns36Ey?t6jo4(8- z;M29TDfOA3j0lD;#j^pbr?-!#&idIq{PgxoHw5#$Mmi3|VGqx;XjKE!QJacL~Je|%wgWO>R1&h-Zqd8Fif_53 zqmaSoF4gvNte}cz3392BuBnaMw#|4Fk!2Yr-}v~(lZbY^&FbnZZ@u*vXU?4A{KX42 z8V#!TI=x=sm`hpCGmmd}{5)pWNGY*wi+a6o$RVv7qElzE{g5z>Xtf%wtgJw#0&&E# zNn{-6!ZEpj2}fF#@2qjg4mi59Y--Q(m`AJE>5V4LpFU48e+)|r@+37RlUbR=KwF3K zDznZ+l4-;9^<59o5{wVJ+`o65`>VHDe{hHAPM_ev{!e}l*AYy{BeE>v2hN>fe}A8w zcka>~j2TTLCcE2U`BWNh8tp~eji%|SaV>O?A#!LVzkBldDHhsuY^*=zgAYDnetzCK zH7G?m91;X&unh8Q1Z5RunW>jcL7K*l`+Y|J0dvhcGAl!P9zqs8WgLb%96NH7+^RAj zOwf6TCv$9(b1>egzrT*1W`x@jqm7i&c#NcKrILx(l~7jrXus7 zzI|G0Rx42;hKDZ7Gvem(_dH%}LoNjNRQciXo1XZRPYm4YH|fXU{j39;p`4HN{pqF< z2;q|C7G(?kJZA7{mEDgnA;t&P1IuuCEt^E!M8ct8+oNm;D5r!Y9VSsiXJLg0``e5r z2}jy<^n1JHgCR@HM+sxa?j$Gd4pHL-ZDk1Q6BVAwp0pW{LrSGGX`0eI=u@xNaFBd( z={>&j)?e_;zx>P8n~g#ZL$k59Nwe8Bk}3H!j``3wJpA???$Rle zI5XWpL10d)pCRiC9gP`;TO9q&tLQMKJN|vf!y(r84v36XWd~2Bl%yhyLefcy?UfO( zgGdZ4WO&a{UB?2Yo@5D*0LK$}!hv`~7LRBI7Uxf{@Dty6o-`VB<=wYfoNH1q`*bQ5 zKKkGi^?IFu=j98yL50oz9*MB&hA|6sOwG3#LDqw zEUYZ@;QktyuYSatGiRta>P#jR+(PYAYmLqfxM)eRr6A5z!f{AHOgS<)N0d*j1Tb3Wy&R&n&q>7aKPr>n#IGWn zrDB%Vh7_ZffdB=ChuCxmetc%12nH=5Pp4)?9Qyft44&z+Yh_AJdR8I;t*}wp+Oj^D zb3gq7&-(cUmd#|eUfX0yrKqes}T@s{1$*)d=a_NV3`)AV^-T2h4q zrIf~1V3cGiyNq;gVp|fXIY}H9vOeJCaBJ-$ixnR|>Jf(nq#CnOpXc=Hvk2cc%LGf& zu9dMWCH5vciUh~C$diu)BGa;m5>N^}l6Z`YGo&T3Rf<$G4jGQjxqt04+iUj;dwb+t zk{vS88R4Lh?96lN@?{$BMf`e`>cSF1txDO2a;JgS8xf{s(%iUJ`lSG&B}tkJ;5>mmu&^+R$u`;rx^prO}pTkZZQbF_sM)MO6uW z$0Gvj)e4U9V3mC`WwEop&CZ>V=xy9(p{%)Z@;G^`&TxN^Nq>(tNf475AyafbM&t=n zXGpCIrBpp5&Y%@ys=xg`uKy=(CI+4jem(vEX~uf^&kBv5nFa7O%S4~HBcJrTPdb2S zl0~FNu3cPP;EIg#phvX*fYNA>R#2moD;{pFGk5Ad$IqUmmpk0Mf0y?^x<+UD2rpcC z3BNi|5ClZ2!z4}cYc-Tk7*1lO1o|WTA3B!=}^>yav=gCyg=H@2la@iEtzsGi%OD=>!9#Zklv~jf; z!lc%s;3AhSABz-MCB&lvYI48_SFiE#%DcGH20!w-mpHvVM|ZG|a@q`gJB+1Ab?GEt zC1xB(XxpRe)J%=NFkuJCp8_nCJVBvMi<>QQq#(><*6!Zo(T!`&m0b28-sYv}PZJOK zu~mXfBTg>1=I{YwSFFh^{mkS`I&8Tc}c<-1d;RgY5)hX|kkHxU_6s z-(eiZL}5sp=NvzMigLZija#=^d-RCcUVDvPrJ%Htj}Zc`GVY7>PlE!-%W^I7aj)RY*(@(fxp|nxxoY6<0`WR8Hfge9#;73A` zV`Jx9e-A3gr>D`6cfA0}wcs%Q=jr!OUoV6(KEP5Fr!gu|ae<&HEm=B4qB;Na1-80l zu3dSL)UQ)pTw!tfB$Z~1vTtMCnr^pCt?W{6*4e$cMIOfZ>{;mHk<5hZ}aYlAEL9Iix)3&^5jW&c6O-LYq-A0!Tvs85YVhQ7>~zT zmd%u0H*MB`T4vj|jnZVM%%z`dSt+e&4gXoDh~w0#EZP#!7LaSwB&Jk$m|t!)-t%ZJ zw3x4*Ba@QeBt`pGTBpx4|NI50&XGD*;xwTW1g0%gWoVr}Mu=xSm=)lOBuO%S*Fokv zlPDn~QSG(~SEOfjc70a<=

D9HeW0c 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%0A^8we*`@F(g~LU9C72wV2x%3frTA4O3S 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 Q$^ZZW07*qoM6N<$f?90Dy8r+H diff --git a/serendipity/sun.png b/serendipity/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..c0cc961e0ac2e6d2f318434c567644d9a62ef171 GIT binary patch literal 22260 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 Y1J;y3uv911j{pDw07*qoM6N<$f_ntUYybcN literal 0 HcmV?d00001 From 0e4664e99fdc64993f9c25e562b8d58e0fca72cd Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 21:35:49 +0100 Subject: [PATCH 16/89] correct category --- serendipity/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serendipity/main.py b/serendipity/main.py index 2b8be23..29836be 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -3,7 +3,7 @@ ___name___ = "serendipity" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "ugfx_helper"] -___categories___ = ["EMF", "Other"] +___categories___ = ["EMF", "Villages"] import ugfx_helper, os, wifi, ugfx, http, time, sleep, app from tilda import Buttons From 17d40f9c62dcbef9af892b18c37f8dd7729ac66c Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 21:53:11 +0100 Subject: [PATCH 17/89] Sectioned code into functions --- pride/main.py | 57 +++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/pride/main.py b/pride/main.py index de41fd0..6c30413 100644 --- a/pride/main.py +++ b/pride/main.py @@ -28,37 +28,38 @@ max_name = 8 # Orientation for other people to see ugfx.orientation(90) -# Pride flag colours -colours = [0xE70000, 0xFF8C00, 0xFFEF00, 0x00811F, 0x0044FF, 0x760089] -# Draw each "band" of colour in the flag -colour_width = ugfx.width() / len(colours) -for num, colour in enumerate(colours): - width_loc = int(num * colour_width) - ugfx.area(width_loc, 0, int(colour_width), 320, ugfx.html_color(colour)) +def draw_flag(): + # Pride flag colours + colours = [0xE70000, 0xFF8C00, 0xFFEF00, 0x00811F, 0x0044FF, 0x760089] + + # Draw each "band" of colour in the flag + colour_width = ugfx.width() / len(colours) + for num, colour in enumerate(colours): + width_loc = int(num * colour_width) + ugfx.area(width_loc, 0, int(colour_width), 320, ugfx.html_color(colour)) -ugfx.set_default_font(ugfx.FONT_NAME) - -# Calc width center of screen -center_width = int(ugfx.width() / 2) - -# Process name -given_name = homescreen.name("Set your name in the settings app") -if len(given_name) <= max_name: +def draw_name(): ugfx.set_default_font(ugfx.FONT_NAME) -else: - ugfx.set_default_font(ugfx.FONT_MEDIUM_BOLD) -# Draw name -ugfx.Label(0, ugfx.height() - name_height, ugfx.width(), name_height, given_name, justification=ugfx.Label.CENTER) + + # Process name + given_name = homescreen.name("Set your name in the settings app") + if len(given_name) <= max_name: + ugfx.set_default_font(ugfx.FONT_NAME) + else: + ugfx.set_default_font(ugfx.FONT_MEDIUM_BOLD) + # Draw name + ugfx.Label(0, ugfx.height() - name_height, ugfx.width(), name_height, given_name, justification=ugfx.Label.CENTER) -# Draw for the user to see -ugfx.orientation(270) -ugfx.set_default_font(ugfx.FONT_SMALL) +def draw_user_info(): + # Draw for the user to see + ugfx.orientation(270) + # Calc width center of screen + center_width = int(ugfx.width() / 2) + ugfx.set_default_font(ugfx.FONT_SMALL) -# WiFi/Battery update loop -while True: ugfx.area(0, ugfx.height() - info_height, ugfx.width(), info_height, ugfx.WHITE) wifi_strength_value = homescreen.wifi_strength() @@ -71,6 +72,14 @@ while True: battery_message = 'Battery: %s%%' % int(battery_value) battery_text = ugfx.text(0, ugfx.height() - info_height, battery_message, ugfx.BLACK) + +draw_flag() +draw_name() + +# WiFi/Battery update loop +while True: + draw_user_info() + homescreen.sleep_or_exit(1.5) restart_to_default() From 1cad3553037192032205fe0892b62efbbcdd1df9 Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 21:53:42 +0100 Subject: [PATCH 18/89] Removed unecessary variable assignment. --- pride/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pride/main.py b/pride/main.py index 6c30413..4fed2cd 100644 --- a/pride/main.py +++ b/pride/main.py @@ -65,12 +65,12 @@ def draw_user_info(): wifi_strength_value = homescreen.wifi_strength() if wifi_strength_value: wifi_message = 'WiFi: %s%%' % int(wifi_strength_value) - wifi_text = ugfx.text(center_width, ugfx.height() - info_height, wifi_message, ugfx.BLACK) + ugfx.text(center_width, ugfx.height() - info_height, wifi_message, ugfx.BLACK) battery_value = homescreen.battery() if battery_value: battery_message = 'Battery: %s%%' % int(battery_value) - battery_text = ugfx.text(0, ugfx.height() - info_height, battery_message, ugfx.BLACK) + ugfx.text(0, ugfx.height() - info_height, battery_message, ugfx.BLACK) draw_flag() From 9e7768f9f580d76a219aa640e466b2a97db4a8cf Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 22:01:52 +0100 Subject: [PATCH 19/89] rotate the acreen with the A button --- nyan/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nyan/main.py b/nyan/main.py index 34cfde5..bef5e85 100644 --- a/nyan/main.py +++ b/nyan/main.py @@ -1,4 +1,4 @@ -"""Nyan Cat Animation!""" +"""Nyan Cat Animation! Rotate the screen with 'A'.""" ___name___ = "nyan" ___license___ = "MIT" @@ -28,6 +28,7 @@ ugfx.clear(ugfx.BLACK) ugfx.backlight(100) n = 0 +r = 90 while True: ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) n = (n+2) % 12 @@ -35,6 +36,10 @@ while True: if Buttons.is_pressed(Buttons.BTN_B): break + elif Buttons.is_pressed(Buttons.BTN_A): + r = (r + 180) % 360 + ugfx.clear(ugfx.BLACK) + ugfx.orientation(r) ugfx.clear() app.restart_to_default() \ No newline at end of file From 599c504110894e386d2eb4ceff6a515e5c1680e9 Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 22:04:10 +0100 Subject: [PATCH 20/89] Fixed name orientation --- pride/main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pride/main.py b/pride/main.py index 4fed2cd..10ba428 100644 --- a/pride/main.py +++ b/pride/main.py @@ -41,6 +41,9 @@ def draw_flag(): def draw_name(): + # Orientation for other people to see + ugfx.orientation(90) + ugfx.set_default_font(ugfx.FONT_NAME) # Process name From 4d046a9c6c10d7fd7b244f7ef49fd7722a4f937a Mon Sep 17 00:00:00 2001 From: Calantha Date: Sun, 2 Sep 2018 22:13:41 +0100 Subject: [PATCH 21/89] First Commit --- cards_against_emf/cards.json | 4272 ++++++++++++++++++++++++++++++++++ cards_against_emf/main.py | 58 + 2 files changed, 4330 insertions(+) create mode 100644 cards_against_emf/cards.json create mode 100644 cards_against_emf/main.py diff --git a/cards_against_emf/cards.json b/cards_against_emf/cards.json new file mode 100644 index 0000000..2711b2a --- /dev/null +++ b/cards_against_emf/cards.json @@ -0,0 +1,4272 @@ +{ + "blackCards": [ + { + "text": "Why can't I sleep at night?", + "pick": 1 + }, + { + "text": "I got 99 problems but _ ain't one.", + "pick": 1 + }, + { + "text": "What's a girl's best friend?", + "pick": 1 + }, + { + "text": "What's that smell?", + "pick": 1 + }, + { + "text": "This is the way the world ends / This is the way the world ends / Not with a bang but with _.", + "pick": 1 + }, + { + "text": "What is Batman's guilty pleasure?", + "pick": 1 + }, + { + "text": "TSA guidelines now prohibit _ on airplanes.", + "pick": 1 + }, + { + "text": "What ended my last relationship?", + "pick": 1 + }, + { + "text": "MTV's new reality show features eight washed-up celebrities living with _.", + "pick": 1 + }, + { + "text": "I drink to forget _.", + "pick": 1 + }, + { + "text": "I'm sorry, Professor, but I couldn't complete my homework because of _.", + "pick": 1 + }, + { + "text": "Alternative medicine is now embracing the curative powers of _.", + "pick": 1 + }, + { + "text": "What's that sound?", + "pick": 1 + }, + { + "text": "What's the next Happy Meal® toy?", + "pick": 1 + }, + { + "text": "It's a pity that kids these days are all getting involved with _.", + "pick": 1 + }, + { + "text": "In the new Disney Channel Original Movie, Hannah Montana struggles with _ for the first time.", + "pick": 1 + }, + { + "text": "_. That's how I want to die.", + "pick": 1 + }, + { + "text": "What does Dick Cheney prefer?", + "pick": 1 + }, + { + "text": "What's the most emo?", + "pick": 1 + }, + { + "text": "Instead of coal, Santa now gives the bad children _.", + "pick": 1 + }, + { + "text": "Next from J.K. Rowling: Harry Potter and the Chamber of _.", + "pick": 1 + }, + { + "text": "A romantic, candlelit dinner would be incomplete without _.", + "pick": 1 + }, + { + "text": "White people like _.", + "pick": 1 + }, + { + "text": "_. Betcha can't have just one!", + "pick": 1 + }, + { + "text": "War!

What is it good for?", + "pick": 1 + }, + { + "text": "BILLY MAYS HERE FOR _.", + "pick": 1 + }, + { + "text": "_. High five, bro.", + "pick": 1 + }, + { + "text": "During sex, I like to think about _.", + "pick": 1 + }, + { + "text": "What did I bring back from Mexico?", + "pick": 1 + }, + { + "text": "What are my parents hiding from me?", + "pick": 1 + }, + { + "text": "What will always get you laid?", + "pick": 1 + }, + { + "text": "What would grandma find disturbing, yet oddly charming?", + "pick": 1 + }, + { + "text": "What did the U.S. airdrop to the children of Afghanistan?", + "pick": 1 + }, + { + "text": "What helps Obama unwind?", + "pick": 1 + }, + { + "text": "What's there a ton of in heaven?", + "pick": 1 + }, + { + "text": "Major League Baseball has banned _ for giving players an unfair advantage.", + "pick": 1 + }, + { + "text": "When I am a billionaire, I shall erect a 50-foot statue to commemorate _.", + "pick": 1 + }, + { + "text": "What's the new fad diet?", + "pick": 1 + }, + { + "text": "When I am the President of the United States, I will create the Department of _.", + "pick": 1 + }, + { + "text": "_. It's a trap!", + "pick": 1 + }, + { + "text": "How am I maintaining my relationship status?", + "pick": 1 + }, + { + "text": "What will I bring back in time to convince people that I am a powerful wizard?", + "pick": 1 + }, + { + "text": "While the United States raced the Soviet Union to the moon, the Mexican government funneled millions of pesos into research on _.", + "pick": 1 + }, + { + "text": "Coming to Broadway this season, _: The Musical.", + "pick": 1 + }, + { + "text": "What's my secret power?", + "pick": 1 + }, + { + "text": "What gives me uncontrollable gas?", + "pick": 1 + }, + { + "text": "But before I kill you, Mr. Bond, I must show you _.", + "pick": 1 + }, + { + "text": "What never fails to liven up the party?", + "pick": 1 + }, + { + "text": "What am I giving up for Lent?", + "pick": 1 + }, + { + "text": "What do old people smell like? ", + "pick": 1 + }, + { + "text": "The class field trip was completely ruined by _.", + "pick": 1 + }, + { + "text": "When Pharaoh remained unmoved, Moses called down a plague of _.", + "pick": 1 + }, + { + "text": "I do not know with which weapons World War III will be fought, but World War IV will be fought with _.", + "pick": 1 + }, + { + "text": "What's Teach for America using to inspire inner city students to succeed?", + "pick": 1 + }, + { + "text": "In Michael Jackson's final moments, he thought about _.", + "pick": 1 + }, + { + "text": "Why do I hurt all over?", + "pick": 1 + }, + { + "text": "Studies show that lab rats navigate mazes 50% faster after being exposed to _.", + "pick": 1 + }, + { + "text": "Why am I sticky?", + "pick": 1 + }, + { + "text": "What's my anti-drug?", + "pick": 1 + }, + { + "text": "And the Academy Award for _ goes to _.", + "pick": 2 + }, + { + "text": "For my next trick, I will pull _ out of _.", + "pick": 2 + }, + { + "text": "_: Good to the last drop.", + "pick": 1 + }, + { + "text": "What did Vin Diesel eat for dinner?", + "pick": 1 + }, + { + "text": "_: kid-tested, mother-approved.", + "pick": 1 + }, + { + "text": "What gets better with age?", + "pick": 1 + }, + { + "text": "I never truly understood _ until I encountered _.", + "pick": 2 + }, + { + "text": "Rumor has it that Vladimir Putin's favorite delicacy is _ stuffed with _.", + "pick": 2 + }, + { + "text": "Lifetime® presents _, the story of _.", + "pick": 2 + }, + { + "text": "Make a haiku.", + "pick": 3 + }, + { + "text": "In M. Night Shyamalan's new movie, Bruce Willis discovers that _ had really been _ all along.", + "pick": 2 + }, + { + "text": "_ is a slippery slope that leads to _.", + "pick": 2 + }, + { + "text": "In a world ravaged by _, our only solace is _.", + "pick": 2 + }, + { + "text": "That's right, I killed _. How, you ask? _.", + "pick": 2 + }, + { + "text": "When I was tripping on acid, _ turned into _.", + "pick": 2 + }, + { + "text": "_ + _ = _.", + "pick": 3 + }, + { + "text": "What's the next superhero/sidekick duo?", + "pick": 2 + }, + { + "text": "Dear Abby,

I'm having some trouble with _ and would like your advice.", + "pick": 1 + }, + { + "text": "After the earthquake, Sean Penn brought _ to the people of Haiti.", + "pick": 1 + }, + { + "text": "In L.A. County Jail, word is you can trade 200 cigarettes for _.", + "pick": 1 + }, + { + "text": "Maybe she's born with it. Maybe it's _.", + "pick": 1 + }, + { + "text": "Life for American Indians was forever changed when the White Man introduced them to _.", + "pick": 1 + }, + { + "text": "Next on ESPN2, the World Series of _.", + "pick": 1 + }, + { + "text": "Step 1: _. Step 2: _. Step 3: Profit.", + "pick": 2 + }, + { + "text": "Here is the church
Here is the steeple
Open the doors
And there is _.", + "pick": 1 + }, + { + "text": "How did I lose my virginity?", + "pick": 1 + }, + { + "text": "During his childhood, Salvador Dalí produced hundreds of paintings of _.", + "pick": 1 + }, + { + "text": "In 1,000 years, when paper money is a distant memory, how will we pay for goods and services?", + "pick": 1 + }, + { + "text": "What don't you want to find in your Kung Pao chicken?", + "pick": 1 + }, + { + "text": "The Smithsonian Museum of Natural History has just opened an exhibit on _.", + "pick": 1 + }, + { + "text": "Daddy, why is Mommy crying?", + "pick": 1 + }, + { + "text": "What brought the orgy to a grinding halt?", + "pick": 1 + }, + { + "text": "When I pooped, what came out of my butt?", + "pick": 1 + }, + { + "text": "In the distant future, historians will agree that _ marked the beginning of America's decline.", + "pick": 1 + }, + { + "text": "What's the gift that keeps on giving?", + "pick": 1 + }, + { + "text": "This season on Man vs. Wild, Bear Grylls must survive in the depths of the Amazon with only _ and his wits.", + "pick": 1 + }, + { + "text": "Michael Bay's new three-hour action epic pits _ against _.", + "pick": 2 + }, + { + "text": "And I would have gotten away with it, too, if it hadn't been for _!", + "pick": 1 + }, + { + "text": "In a pinch, _ can be a suitable substitute for _.", + "pick": 2 + }, + { + "text": "What has been making life difficult at the nudist colony?", + "pick": 1 + }, + { + "text": "Science will never explain the origin of _.", + "pick": 1 + }, + { + "text": "In Rome, there are whisperings that the Vatican has a secret room devoted to _.", + "pick": 1 + }, + { + "text": "I learned the hard way that you can't cheer up a grieving friend with _.", + "pick": 1 + }, + { + "text": "When all else fails, I can always masturbate to _.", + "pick": 1 + }, + { + "text": "An international tribunal has found _ guilty of _.", + "pick": 2 + }, + { + "text": "In its new tourism campaign, Detroit proudly proclaims that it has finally eliminated _.", + "pick": 1 + }, + { + "text": "In his new self-produced album, Kanye West raps over the sounds of _.", + "pick": 1 + }, + { + "text": "The socialist governments of Scandinavia have declared that access to _ is a basic human right.", + "pick": 1 + }, + { + "text": "He who controls _ controls the world.", + "pick": 1 + }, + { + "text": "Dear Sir or Madam, We regret to inform you that the Office of _ has denied your request for _.", + "pick": 2 + }, + { + "text": "The CIA now interrogates enemy agents by repeatedly subjecting them to _.", + "pick": 1 + }, + { + "text": "_ would be woefully incomplete without _.", + "pick": 2 + }, + { + "text": "During his midlife crisis, my dad got really into _.", + "pick": 1 + }, + { + "text": "Before I run for president, I must destroy all evidence of my involvement with _.", + "pick": 1 + }, + { + "text": "My new favorite porn star is Joey \"_\" McGee.", + "pick": 1 + }, + { + "text": "In his newest and most difficult stunt, David Blaine must escape from _.", + "pick": 1 + }, + { + "text": "This is your captain speaking. Fasten your seatbelts and prepare for _.", + "pick": 1 + }, + { + "text": "My mom freaked out when she looked at my browser history and found _.com/_.", + "pick": 2 + }, + { + "text": "The Five Stages of Grief: denial, anger, bargaining, _, acceptance.", + "pick": 1 + }, + { + "text": "Members of New York's social elite are paying thousands of dollars just to experience _.", + "pick": 1 + }, + { + "text": "I went from _ to _, all thanks to _.", + "pick": 3 + }, + { + "text": "Little Miss Muffet Sat on a tuffet, Eating her curds and _.", + "pick": 1 + }, + { + "text": "This month's Cosmo: \"Spice up your sex life by bringing _ into the bedroom.\"", + "pick": 1 + }, + { + "text": "If God didn't want us to enjoy _, he wouldn't have given us _.", + "pick": 2 + }, + { + "text": "My country, 'tis of thee, sweet land of _.", + "pick": 1 + }, + { + "text": "After months of debate, the Occupy Wall Street General Assembly could only agree on \"More _!\"", + "pick": 1 + }, + { + "text": "I spent my whole life working toward _, only to have it ruined by _.", + "pick": 2 + }, + { + "text": "Next time on Dr. Phil: How to talk to your child about _.", + "pick": 1 + }, + { + "text": "Only two things in life are certain: death and _.", + "pick": 1 + }, + { + "text": "Everyone down on the ground! We don't want to hurt anyone. We're just here for _.", + "pick": 1 + }, + { + "text": "The healing process began when I joined a support group for victims of _.", + "pick": 1 + }, + { + "text": "The votes are in, and the new high school mascot is _.", + "pick": 1 + }, + { + "text": "Charades was ruined for me forever when my mom had to act out _.", + "pick": 1 + }, + { + "text": "Before _, all we had was _.", + "pick": 2 + }, + { + "text": "Tonight on 20/20: What you don't know about _ could kill you.", + "pick": 1 + }, + { + "text": "You haven't truly lived until you've experienced _ and _ at the same time.", + "pick": 2 + }, + { + "text": "Hey baby, come back to my place and I'll show you _.", + "pick": 1 + }, + { + "text": "My gym teacher got fired for adding _ to the obstacle course.", + "pick": 1 + }, + { + "text": "Finally! A service that delivers _ right to your door.", + "pick": 1 + }, + { + "text": "To prepare for his upcoming role, Daniel Day-Lewis immersed himself in the world of _.", + "pick": 1 + }, + { + "text": "My life is ruled by a vicious cycle of _ and _.", + "pick": 2 + }, + { + "text": "During high school, I never really fit in until I found _ club.", + "pick": 1 + }, + { + "text": "Money can't buy me love, but it can buy me _.", + "pick": 1 + }, + { + "text": "Listen, son. If you want to get involved with _, I won't stop you. Just steer clear of _.", + "pick": 2 + }, + { + "text": "A successful job interview begins with a firm handshake and ends with _.", + "pick": 1 + }, + { + "text": "Call the law offices of Goldstein & Goldstein, because no one should have to tolerate _ in the workplace.", + "pick": 1 + }, + { + "text": "Lovin' you is easy 'cause you're _.", + "pick": 1 + }, + { + "text": "The blind date was going horribly until we discovered our shared interest in _.", + "pick": 1 + }, + { + "text": "What left this stain on my couch?", + "pick": 1 + }, + { + "text": "Turns out that _-Man was neither the hero we needed nor wanted.", + "pick": 1 + }, + { + "text": "After months of practice with _, I think I'm finally ready for _.", + "pick": 2 + }, + { + "text": "In the seventh circle of Hell, sinners must endure _ for all eternity.", + "pick": 1 + }, + { + "text": "As part of his daily regimen, Anderson Cooper sets aside 15 minutes for _.", + "pick": 1 + }, + { + "text": "When you get right down to it, _ is just _.", + "pick": 2 + }, + { + "text": "Having problems with _? Try _!", + "pick": 2 + }, + { + "text": "And what did you bring for show and tell?", + "pick": 1 + }, + { + "text": "I'm not like the rest of you. I'm too rich and busy for _.", + "pick": 1 + }, + { + "text": "With enough time and pressure, _ will turn into _.", + "pick": 2 + }, + { + "text": "_: Hours of fun. Easy to use. Perfect for _!", + "pick": 2 + }, + { + "text": "_. Awesome in theory, kind of a mess in practice.", + "pick": 1 + }, + { + "text": "As part of his contract, Prince won't perform without _ in his dressing room.", + "pick": 1 + }, + { + "text": "Man, this is bullshit. Fuck _.", + "pick": 1 + }, + { + "text": "Dear Leader Kim Jong-un,
our village praises your infinite wisdom with a humble offering of _.", + "pick": 1 + }, + { + "text": "_ may pass, but _ will last forever.", + "pick": 2 + }, + { + "text": "She's up all night for good fun.
I'm up all night for _.", + "pick": 1 + }, + { + "text": "Alright, bros. Our frat house is condemned, and all the hot slampieces are over at Gamma Phi. The time has come to commence Operation _.", + "pick": 1 + }, + { + "text": "The Japanese have developed a smaller, more efficient version of _.", + "pick": 1 + }, + { + "text": "In return for my soul, the Devil promised me _, but all I got was _.", + "pick": 2 + }, + { + "text": "You guys, I saw this crazy movie last night. It opens on _, and then there's some stuff about _, and then it ends with _.", + "pick": 3 + }, + { + "text": "_ will never be the same after _.", + "pick": 2 + }, + { + "text": "Wes Anderson's new film tells the story of a precocious child coming to terms with _.", + "pick": 1 + }, + { + "text": "In the beginning, there was _.
And the Lord said, \"Let there be _.\"", + "pick": 2 + }, + { + "text": "What's fun until it gets weird?", + "pick": 1 + }, + { + "text": "We never did find _, but along the way we sure learned a lot about _.", + "pick": 2 + }, + { + "text": "You've seen the bearded lady!
You've seen the ring of fire!
Now, ladies and gentlemen, feast your eyes upon _!", + "pick": 1 + }, + { + "text": "How am I compensating for my tiny penis?", + "pick": 1 + }, + { + "text": "I'm sorry, sir, but we don't allow _ at the country club.", + "pick": 1 + }, + { + "text": "2 AM in the city that never sleeps. The door swings open and she walks in, legs up to here. Something in her eyes tells me she's looking for _.", + "pick": 1 + }, + { + "text": "As king, how will I keep the peasants in line?", + "pick": 1 + }, + { + "text": "Oprah's book of the month is \"_ For _: A Story of Hope.\"", + "pick": 2 + }, + { + "text": "Do not fuck with me! I am literally _ right now.", + "pick": 1 + }, + { + "text": "Adventure.
Romance.
_.

From Paramount Pictures, \"_.\"", + "pick": 2 + }, + { + "text": "I am become _, destroyer of _!", + "pick": 2 + }, + { + "text": "It lurks in the night. It hungers for flesh. This summer, no one is safe from _.", + "pick": 1 + }, + { + "text": "If you can't handle _, you'd better stay away from _.", + "pick": 2 + }, + { + "text": "This is the prime of my life. I'm young, hot, and full of _.", + "pick": 1 + }, + { + "text": "I'm pretty sure I'm high right now, because I'm absolutely mesmerized by _.", + "pick": 1 + }, + { + "text": "This year's hottest album is \"_\" by _.", + "pick": 2 + }, + { + "text": "Every step towards _ gets me a little closer to _.", + "pick": 2 + }, + { + "text": "Forget everything you know about _, because now we've supercharged it with _!", + "pick": 2 + }, + { + "text": "Honey, I have a new role-play I want to try tonight! You can be _, and I'll be _.", + "pick": 2 + }, + { + "text": "Do the Dew ® with our most extreme flavor yet! Get ready for Mountain Dew _!", + "pick": 1 + }, + { + "text": "Armani suit: $1,000. Dinner for two at that swanky restaurant: $300. The look on her face when you surprise her with _: priceless.", + "pick": 1 + }, + { + "text": "In his new action comedy, Jackie Chan must fend off ninjas while also dealing with _.", + "pick": 1 + }, + { + "text": "Well what do you have to say for yourself, Casey? This is the third time you've been sent to the principal's office for _.", + "pick": 1 + }, + { + "text": "Here at the Academy for Gifted Children, we allow students to explore _ at their own pace.", + "pick": 1 + }, + { + "text": "Heed my voice, mortals! I am the god of _, and I will not tolerate _!", + "pick": 2 + }, + { + "text": "I don't mean to brag, but they call me the Michael Jordan of _.", + "pick": 1 + }, + { + "text": "Why am I broke?", + "pick": 1 + }, + { + "text": "Help me doctor, I've got _ in my butt!", + "pick": 1 + }, + { + "text": "Hi MTV! My name is Kendra, I live in Malibu, I'm into _, and I love to have a good time.", + "pick": 1 + }, + { + "text": "Patient presents with _. Likely a result of _.", + "pick": 2 + }, + { + "text": "Life's pretty tough in the fast lane. That's why I never leave the house without _.", + "pick": 1 + }, + { + "text": "What's making things awkward in the sauna?", + "pick": 1 + }, + { + "text": "Get ready for the movie of the summer! One cop plays by the book. The other's only interested in one thing: _.", + "pick": 1 + }, + { + "text": "Having the worst day EVER. #_", + "pick": 1 + }, + { + "text": "In his farewell address, George Washington famously warned Americans about the dangers of _.", + "pick": 1 + }, + { + "text": "Don't forget! Beginning this week, Casual Friday will officially become \"_ Friday.\"", + "pick": 1 + }, + { + "text": "What killed my boner?", + "pick": 1 + }, + { + "text": "Yo' mama so fat she _!", + "pick": 1 + }, + { + "text": "Well if _ is good enough for _, it's good enough for me.", + "pick": 2 + }, + { + "text": "Hi, this is Jim from accounting. We noticed a $1,200 charge labeled \"_\". Can you explain?", + "pick": 1 + }, + { + "text": "Do you lack energy? Does it sometimes feel like the whole world is _? Zoloft.®", + "pick": 1 + }, + { + "text": "WHOOO! God damn I love _!", + "pick": 1 + }, + { + "text": "Now in bookstores: \"The Audacity of _\", by Barack Obama.", + "pick": 1 + }, + { + "text": "And today's soup is Cream of _.", + "pick": 1 + }, + { + "pick": 1, + "text": "I work my ass off all day for this family, and this is what I come home to? _!?" + }, + { + "pick": 1, + "text": "I have a strict policy. First date, dinner. Second date, kiss. Third date, _." + }, + { + "pick": 1, + "text": "When I was a kid, we used to play Cowboys and _." + }, + { + "pick": 1, + "text": "This is America. If you don't work hard, you don't succeed. I don't care if you're black, white, purple, or _." + }, + { + "pick": 1, + "text": "You Won't Believe These 15 Hilarious _ Bloopers!" + }, + { + "pick": 1, + "text": "James is a lonely boy. But when he discovers a secret door in his attic, he meets a magical new friend: _." + }, + { + "pick": 1, + "text": "Don't worry kid. It gets better. I've been living with _ for 20 years." + }, + { + "pick": 1, + "text": "My grandfather worked his way up from nothing. When he came to this country, all he had was the shoes on his feet and _." + }, + { + "pick": 1, + "text": "Behind every powerful man is _." + }, + { + "pick": 1, + "text": "You are not alone. Millions of Americans struggle with _ every day." + }, + { + "pick": 1, + "text": "Come to Dubai, where you can relax in our world famous spas, experience the nightlife, or simply enjoy _ by the poolside." + }, + { + "pick": 1, + "text": "\"This is madness.\" \"No, THIS IS _!\"" + }, + { + "pick": 1, + "text": "Listen Gary, I like you. But if you want that corner office, you're going to have to show me _." + }, + { + "pick": 1, + "text": "I went to the desert and ate of the peyote cactus. Turns out my spirit animal is _." + }, + { + "pick": 1, + "text": "And would you like those buffalo wings mild, hot, or _?" + }, + { + "pick": 1, + "text": "The six things I could never do without: oxygen, Facebook, chocolate, Netflix, friends, and _ LOL!" + }, + { + "pick": 1, + "text": "Why won't you make love to me anymore? Is it _?" + }, + { + "pick": 1, + "text": "Puberty is a time of change. You might notice hair growing in new places. You might develop an interest in _. This is normal." + }, + { + "pick": 1, + "text": "I'm sorry, Mrs. Chen, but there was nothing we could do. At 4:15 this morning, your son succumbed to _." + }, + { + "pick": 1, + "text": "I'm Miss Tennessee, and if I could make the world better by changing one thing, I would get rid of _." + }, + { + "pick": 1, + "text": "Tonight we will have sex. And afterwards, If you'd like, a little bit of _." + }, + { + "pick": 1, + "text": "Everybody join hands and close your eyes. Do you sense that? That's the presence of _ in this room." + }, + { + "pick": 1, + "text": "To become a true Yanomamo warrior, you must prove that you can withstand _ without crying out." + }, + { + "pick": 1, + "text": "Y'all ready to get this thing started? I'm Nick Cannon, and this is America's Got _." + }, + { + "pick": 1, + "text": "If you had to describe the Card Czar, using only one of the cards in your hand, which one would it be?" + }, + { + "pick": 2, + "text": "_ be all like _." + }, + { + "pick": 1, + "text": "Art isn't just a painting in a stuffy museum. Art is alive. Art is _." + }, + { + "pick": 1, + "text": "As reparations for slavery, all African Americans will receive _." + }, + { + "pick": 1, + "text": "As Teddy Roosevelt said, the four manly virtues are honor, temperance, industry, and _." + }, + { + "pick": 1, + "text": "Best you go back where you came from, now. We don't take too kindly to _ in these parts." + }, + { + "pick": 1, + "text": "CNN breaking news! Scientists discover _." + }, + { + "pick": 1, + "text": "Coming to Red Lobster® this month, _." + }, + { + "pick": 1, + "text": "Congratulations! You have been selected for our summer internship program. While we are unable to offer a salary, we can offer you _." + }, + { + "pick": 1, + "text": "Dance like there's nobody watching, love like you'll never be hurt, and live like you're _." + }, + { + "pick": 1, + "text": "Errbody in the club _." + }, + { + "pick": 1, + "text": "Feeling so grateful! #amazing #mylife #_." + }, + { + "pick": 1, + "text": "Girls just wanna have _." + }, + { + "pick": 1, + "text": "Google Calendar alert: _ in 10 minutes." + }, + { + "pick": 1, + "text": "I don't believe in God. I believe in _." + }, + { + "pick": 1, + "text": "I got rhythm, I've got music, I've got _. Who could ask for anything more?" + }, + { + "pick": 1, + "text": "I may not be much to look at, but I fuck like _." + }, + { + "pick": 1, + "text": "I tell you, it was a non-stop fuckfest. When it was over, my asshole looked like _." + }, + { + "pick": 1, + "text": "I'll take the BBQ bacon burger with friend egg and fuck it how about _." + }, + { + "pick": 1, + "text": "I'm sorry, sir, but your insurance plan doesn't cover injuries caused by _." + }, + { + "pick": 1, + "text": "I've had a horrible vision, father. I saw mountains crumbling, stars falling from the sky. I saw _." + }, + { + "pick": 1, + "text": "If at first you don't succeed, try _." + }, + { + "pick": 1, + "text": "In the 1950s, psychologists prescribed _ as a cure for homosexually." + }, + { + "pick": 1, + "text": "LSD + _ = really bad time." + }, + { + "pick": 1, + "text": "\"Mom's to-do list:
- Buy Groceries.
- Clean up _.
- Soccer Practice.\"" + }, + { + "pick": 1, + "text": "Most Americans would not vote for a candidate who is openly _." + }, + { + "pick": 1, + "text": "No, no, no, no, no, no, NO! I will NOT let _ ruin this wedding." + }, + { + "pick": 1, + "text": "Oh no! Siri, how do I fix _?" + }, + { + "pick": 1, + "text": "One more thing. Watch out for Big Mike. They say he killed a man with _." + }, + { + "pick": 1, + "text": "Ooo, daddy like _." + }, + { + "pick": 1, + "text": "Poor Brandon, still living in his parent's basement. I heard he never got over _." + }, + { + "pick": 1, + "text": "Run, run, as fast as you can! You can't catch me, I'm _!" + }, + { + "pick": 1, + "text": "She's a lady in the streets, _ in the sheets." + }, + { + "pick": 1, + "text": "She's just one of the guys, you know? She likes beer, and football, and _." + }, + { + "pick": 1, + "text": "Son, take it from someone who's been around the block a few times. Nothin' puts her in the mood like _." + }, + { + "pick": 1, + "text": "Summer lovin', had me a blast. _, happened so fast." + }, + { + "pick": 1, + "text": "\"The top Google auto-complete results for \"Barack Obama\":
- Barack Obama Height.
- Barack Obama net worth.
- Barack Obama _.\"" + }, + { + "pick": 1, + "text": "Then the princess kissed the frog, and all of a sudden the frog was _!" + }, + { + "pick": 1, + "text": "There is no God. It's just _ and then you die." + }, + { + "pick": 1, + "text": "This Friday at the Liquid Lunge, it's _ Night! Ladies drink free." + }, + { + "pick": 1, + "text": "We do not shake with our left hands in this country. That is the hand we use for _." + }, + { + "pick": 1, + "text": "Well if _ is a crime, then lock me up!" + }, + { + "pick": 1, + "text": "Well, shit. My eyes ain't so good, but I'll eat my own boot if that ain't _!" + }, + { + "pick": 1, + "text": "What are all those whales singing about?" + }, + { + "pick": 1, + "text": "What sucks balls?" + }, + { + "pick": 1, + "text": "What totally destroyed my asshole?" + }, + { + "pick": 1, + "text": "What turned me into a Republican?" + }, + { + "pick": 1, + "text": "What will end racism once and for all?" + }, + { + "pick": 1, + "text": "What's a total waste of Hillary Clinton's time?" + }, + { + "pick": 1, + "text": "What's about to take dance floor to the next level?" + }, + { + "pick": 1, + "text": "What's the gayest?" + }, + { + "pick": 1, + "text": "What's the most problematic?" + }, + { + "pick": 1, + "text": "Why am I laughing and crying and taking off my clothes?" + }, + { + "pick": 1, + "text": "With a one-time gift of just $10, you can save this child from _." + }, + { + "pick": 1, + "text": "You know who else liked _? Hitler." + }, + { + "pick": 1, + "text": "You won't believe what's in my pussy. It's _." + }, + { + "text": "Siskel and Ebert have panned _ as \"poorly conceived\" and \"sloppily executed.\"", + "pick": 1 + }, + { + "text": "Up next on Nickelodeon: \"Clarissa Explains _.\"", + "pick": 1 + }, + { + "text": "Believe it or not, Jim Carrey can do a dead-on impression of _.", + "pick": 1 + }, + { + "text": "It's Morphin' Time! Mastadon! Pterodactyl! Triceratops! Sabertooth Tiger! _!", + "pick": 1 + }, + { + "text": "I'm a bitch, I'm a lover, I'm a child, I'm _.", + "pick": 1 + }, + { + "text": "How did Stella get her groove back?", + "pick": 1 + }, + { + "text": "Tonight on SNICK: \"Are You Afraid of _?\"", + "pick": 1 + }, + { + "pick": 1, + "text": "And in the end, the dragon was not evil; he just wanted _." + }, + { + "pick": 2, + "text": "Critics are raving about HBO's new Game of Thrones spin-off, \"_ of _.\"" + }, + { + "pick": 1, + "text": "Having tired of poetry and music, the immortal elves now fill their days with _." + }, + { + "pick": 1, + "text": "Legend tells of a princess who has been asleep for a thousand years and can only be awoken by _." + }, + { + "pick": 1, + "text": "Who blasphemes and bubbles at the center of all infinity, whose name no lips dare speak aloud, and who gnaws hungrily in inconceivable, unlighted chambers beyond time?" + }, + { + "pick": 1, + "text": "Your father was a powerful wizard, Harry. Before he died, he left you something very precious: _." + }, + { + "pick": 1, + "text": "I'm Bobby Flay, and if you can't stand _, get out of the kitchen!" + }, + { + "pick": 1, + "text": "It's not delivery. It's _." + }, + { + "pick": 1, + "text": "Aw babe, your burps smell like _!" + }, + { + "pick": 1, + "text": "Don't miss Rachel Ray's hit new show, Cooking with _." + }, + { + "pick": 1, + "text": "Excuse me, waiter. Could take this back? This soup tastes like _." + }, + { + "pick": 1, + "text": "Now on Netflix: Jiro Dreams of _." + }, + { + "pick": 2, + "text": "In line with our predictions, we find a robust correlation between _ and _ (p>.05)." + }, + { + "pick": 1, + "text": "In what's being hailed as a major breakthrough, scientists have synthesized _ in the lab." + }, + { + "pick": 1, + "text": "A study published in Nature this week found that _ is good for you in small doses." + }, + { + "pick": 2, + "text": "In an attempt to recreate conditions just after the Big Bang, physicists at the LHC are observing collisions between _ and _." + }, + { + "pick": 1, + "text": "What really killed the dinosaurs?" + }, + { + "pick": 1, + "text": "Hey there, Young Scientists! Put on your labcoats and strap on your safety goggles, because today we're learning about _!" + }, + { + "pick": 2, + "text": "Today on MythBusters, we found out how long _ can withstand _." + } + ], + "whiteCards": [ + "Coat hanger abortions.", + "Man meat.", + "Autocannibalism.", + "Vigorous jazz hands.", + "Flightless birds.", + "Pictures of boobs.", + "Doing the right thing.", + "The violation of our most basic human rights.", + "Viagra®.", + "Self-loathing.", + "Spectacular abs.", + "A balanced breakfast.", + "Roofies.", + "Concealing a boner.", + "Amputees.", + "The Big Bang.", + "Former President George W. Bush.", + "The Rev. Dr. Martin Luther King, Jr.", + "Smegma.", + "Being marginalized.", + "Cuddling.", + "Laying an egg.", + "The Pope.", + "Aaron Burr.", + "Genital piercings.", + "Fingering.", + "A bleached asshole.", + "Horse meat.", + "Fear itself.", + "Science.", + "Elderly Japanese men.", + "Stranger danger.", + "The terrorists.", + "Praying the gay away.", + "Same-sex ice dancing.", + "Ethnic cleansing.", + "Cheating in the Special Olympics.", + "German dungeon porn.", + "Bingeing and purging.", + "Making a pouty face.", + "William Shatner.", + "Heteronormativity.", + "Nickelback.", + "Tom Cruise.", + "The profoundly handicapped.", + "The placenta.", + "Chainsaws for hands.", + "Arnold Schwarzenegger.", + "An icepick lobotomy.", + "Goblins.", + "Object permanence.", + "Dying.", + "Foreskin.", + "A falcon with a cap on its head.", + "Hormone injections.", + "Dying of dysentery.", + "Sexy pillow fights.", + "The invisible hand.", + "A really cool hat.", + "Sean Penn.", + "Heartwarming orphans.", + "The clitoris.", + "The Three-Fifths compromise.", + "A sad handjob.", + "Men.", + "Historically black colleges.", + "A micropenis.", + "Raptor attacks.", + "Agriculture.", + "Vikings.", + "Pretending to care.", + "The Underground Railroad.", + "My humps.", + "Being a dick to children.", + "Geese.", + "Bling.", + "Sniffing glue.", + "The South.", + "An Oedipus complex.", + "Eating all of the cookies before the AIDS bake-sale.", + "Sexting.", + "YOU MUST CONSTRUCT ADDITIONAL PYLONS.", + "Mutually-assured destruction.", + "Sunshine and rainbows.", + "Count Chocula.", + "Sharing needles.", + "Being rich.", + "Skeletor.", + "A sausage festival.", + "Michael Jackson.", + "Emotions.", + "Farting and walking away.", + "The Chinese gymnastics team.", + "Necrophilia.", + "Spontaneous human combustion.", + "Yeast.", + "Leaving an awkward voicemail.", + "Dick Cheney.", + "White people.", + "Penis envy.", + "Teaching a robot to love.", + "Sperm whales.", + "Scrubbing under the folds.", + "Panda sex.", + "Whipping it out.", + "Catapults.", + "Masturbation.", + "Natural selection.", + "Opposable thumbs.", + "A sassy black woman.", + "AIDS.", + "The KKK.", + "Figgy pudding.", + "Seppuku.", + "Gandhi.", + "Preteens.", + "Toni Morrison's vagina.", + "Five-Dollar Footlongs™.", + "Land mines.", + "A sea of troubles.", + "A zesty breakfast burrito.", + "Christopher Walken.", + "Friction.", + "Balls.", + "Dental dams.", + "A can of whoop-ass.", + "A tiny horse.", + "Waiting 'til marriage.", + "Authentic Mexican cuisine.", + "Genghis Khan.", + "Old-people smell.", + "Feeding Rosie O'Donnell.", + "Pixelated bukkake.", + "Friends with benefits.", + "The token minority.", + "The Tempur-Pedic® Swedish Sleep System™.", + "A thermonuclear detonation.", + "Take-backsies.", + "The Rapture.", + "A cooler full of organs.", + "Sweet, sweet vengeance.", + "RoboCop.", + "Keanu Reeves.", + "Drinking alone.", + "Giving 110%.", + "Flesh-eating bacteria.", + "The American Dream.", + "Taking off your shirt.", + "Me time.", + "A murder most foul.", + "The inevitable heat death of the universe.", + "The folly of man.", + "That thing that electrocutes your abs.", + "Cards Against Humanity.", + "Fiery poops.", + "Poor people.", + "Edible underpants.", + "Britney Spears at 55.", + "All-you-can-eat shrimp for $4.99.", + "Pooping back and forth. Forever.", + "Fancy Feast®.", + "Jewish fraternities.", + "Being a motherfucking sorcerer.", + "Pulling out.", + "Picking up girls at the abortion clinic.", + "The homosexual agenda.", + "The Holy Bible.", + "Passive-agression.", + "Ronald Reagan.", + "Vehicular manslaughter.", + "Nipple blades.", + "Assless chaps.", + "Full frontal nudity.", + "Hulk Hogan.", + "Daddy issues.", + "The hardworking Mexican.", + "Natalie Portman.", + "Waking up half-naked in a Denny's parking lot.", + "God.", + "Sean Connery.", + "Saxophone solos.", + "Gloryholes.", + "The World of Warcraft.", + "Homeless people.", + "Scalping.", + "Darth Vader.", + "Eating the last known bison.", + "Guys who don't call.", + "Hot Pockets®.", + "A time travel paradox.", + "The milk man.", + "Testicular torsion.", + "Dropping a chandelier on your enemies and riding the rope up.", + "World peace.", + "A salty surprise.", + "Poorly-timed Holocaust jokes.", + "Smallpox blankets.", + "Licking things to claim them as your own.", + "The heart of a child.", + "Robert Downey, Jr.", + "Lockjaw.", + "Eugenics.", + "A good sniff.", + "Friendly fire.", + "The taint; the grundle; the fleshy fun-bridge.", + "Wearing underwear inside-out to avoid doing laundry.", + "Hurricane Katrina.", + "Free samples.", + "Jerking off into a pool of children's tears.", + "A foul mouth.", + "The glass ceiling.", + "Republicans.", + "Explosions.", + "Michelle Obama's arms.", + "Getting really high.", + "Attitude.", + "Sarah Palin.", + "The Übermensch.", + "Altar boys.", + "My soul.", + "My sex life.", + "Pedophiles.", + "72 virgins.", + "Pabst Blue Ribbon.", + "Domino's™ Oreo™ Dessert Pizza.", + "A snapping turtle biting the tip of your penis.", + "The Blood of Christ.", + "Half-assed foreplay.", + "My collection of high-tech sex toys.", + "A middle-aged man on roller skates.", + "Bitches.", + "Bill Nye the Science Guy.", + "Italians.", + "A windmill full of corpses.", + "Adderall™.", + "Crippling debt.", + "A stray pube.", + "Prancing.", + "Passing a kidney stone.", + "A brain tumor.", + "Leprosy.", + "Puppies!", + "Bees?", + "Frolicking.", + "Repression.", + "Road head.", + "A bag of magic beans.", + "An asymmetric boob job.", + "Dead parents.", + "Public ridicule.", + "A mating display.", + "A mime having a stroke.", + "Stephen Hawking talking dirty.", + "African children.", + "Mouth herpes.", + "Overcompensation.", + "Riding off into the sunset.", + "Being on fire.", + "Tangled Slinkys.", + "Civilian casualties.", + "Auschwitz.", + "My genitals.", + "Not reciprocating oral sex.", + "Lactation.", + "Being fabulous.", + "Shaquille O'Neal's acting career.", + "My relationship status.", + "Asians who aren't good at math.", + "Alcoholism.", + "Incest.", + "Grave robbing.", + "Hope.", + "8 oz. of sweet Mexican black-tar heroin.", + "Kids with ass cancer.", + "Winking at old people.", + "The Jews.", + "Justin Bieber.", + "Doin' it in the butt.", + "A lifetime of sadness.", + "The Hamburglar.", + "Swooping.", + "Classist undertones.", + "New Age music.", + "Not giving a shit about the Third World.", + "The Kool-Aid Man.", + "A hot mess.", + "Tentacle porn.", + "Lumberjack fantasies.", + "The gays.", + "Scientology.", + "Estrogen.", + "GoGurt®.", + "Judge Judy.", + "Dick fingers.", + "Racism.", + "Surprise sex!", + "Police brutality.", + "Passable transvestites.", + "The Virginia Tech Massacre.", + "When you fart and a little bit comes out.", + "Oompa-Loompas.", + "A fetus.", + "Obesity.", + "Tasteful sideboob.", + "Hot people.", + "BATMAN!!!", + "Black people.", + "A gassy antelope.", + "Sexual tension.", + "Third base.", + "Racially-biased SAT questions.", + "Porn stars.", + "A Super Soaker™ full of cat pee.", + "Muhammed (Praise Be Unto Him).", + "Puberty.", + "A disappointing birthday party.", + "An erection that lasts longer than four hours.", + "White privilege.", + "Getting so angry that you pop a boner.", + "Wifely duties.", + "Two midgets shitting into a bucket.", + "Queefing.", + "Wiping her butt.", + "Golden showers.", + "Barack Obama.", + "Nazis.", + "A robust mongoloid.", + "An M. Night Shyamalan plot twist.", + "Getting drunk on mouthwash.", + "Lunchables™.", + "Women in yogurt commercials.", + "John Wilkes Booth.", + "Powerful thighs.", + "Mr. Clean, right behind you.", + "Multiple stab wounds.", + "Cybernetic enhancements.", + "Serfdom.", + "Kanye West.", + "Women's suffrage.", + "Children on leashes.", + "Harry Potter erotica.", + "The Dance of the Sugar Plum Fairy.", + "Lance Armstrong's missing testicle.", + "Parting the Red Sea.", + "The Amish.", + "Dead babies.", + "Child beauty pageants.", + "AXE Body Spray.", + "Centaurs.", + "Copping a feel.", + "Grandma.", + "Famine.", + "The Trail of Tears.", + "The miracle of childbirth.", + "Finger painting.", + "A monkey smoking a cigar.", + "The Make-A-Wish® Foundation.", + "Anal beads.", + "The Force.", + "Kamikaze pilots.", + "Dry heaving.", + "Active listening.", + "Ghosts.", + "The Hustle.", + "Peeing a little bit.", + "Another goddamn vampire movie.", + "Shapeshifters.", + "The Care Bear Stare.", + "Hot cheese.", + "A mopey zoo lion.", + "A defective condom.", + "Teenage pregnancy.", + "A Bop It™.", + "Expecting a burp and vomiting on the floor.", + "Horrifying laser hair removal accidents.", + "Boogers.", + "Unfathomable stupidity.", + "Breaking out into song and dance.", + "Soup that is too hot.", + "Morgan Freeman's voice.", + "Getting naked and watching Nickelodeon.", + "MechaHitler.", + "Flying sex snakes.", + "The true meaning of Christmas.", + "My inner demons.", + "Pac-Man uncontrollably guzzling cum.", + "My vagina.", + "A homoerotic volleyball montage.", + "Actually taking candy from a baby.", + "Crystal meth.", + "Exactly what you'd expect.", + "Natural male enhancement.", + "Passive-aggressive Post-it notes.", + "Inappropriate yodeling.", + "Lady Gaga.", + "The Little Engine That Could.", + "Vigilante justice.", + "A death ray.", + "Poor life choices.", + "A gentle caress of the inner thigh.", + "Embryonic stem cells.", + "Nicolas Cage.", + "Firing a rifle into the air while balls deep in a squealing hog.", + "Switching to Geico®.", + "The chronic.", + "Erectile dysfunction.", + "Home video of Oprah sobbing into a Lean Cuisine®.", + "A bucket of fish heads.", + "50,000 volts straight to the nipples.", + "Being fat and stupid.", + "Hospice care.", + "A pyramid of severed heads.", + "Getting married, having a few kids, buying some stuff, retiring to Florida, and dying.", + "A subscription to Men's Fitness.", + "Crucifixion.", + "A micropig wearing a tiny raincoat and booties.", + "Some god-damn peace and quiet.", + "Used panties.", + "A tribe of warrior women.", + "The penny whistle solo from \"My Heart Will Go On.\"", + "An oversized lollipop.", + "Helplessly giggling at the mention of Hutus and Tutsis.", + "Not wearing pants.", + "Consensual sex.", + "Her Majesty, Queen Elizabeth II.", + "Funky fresh rhymes.", + "The art of seduction.", + "The Devil himself.", + "Advice from a wise, old black man.", + "Destroying the evidence.", + "The light of a billion suns.", + "Wet dreams.", + "Synergistic management solutions.", + "Growing a pair.", + "Silence.", + "An M16 assault rifle.", + "Poopy diapers.", + "A live studio audience.", + "The Great Depression.", + "A spastic nerd.", + "Rush Limbaugh's soft, shitty body.", + "Tickling Sean Hannity, even after he tells you to stop.", + "Stalin.", + "Brown people.", + "Rehab.", + "Capturing Newt Gingrich and forcing him to dance in a monkey suit.", + "Battlefield amputations.", + "An uppercut.", + "Shiny objects.", + "An ugly face.", + "Menstrual rage.", + "A bitch slap.", + "One trillion dollars.", + "Chunks of dead prostitute.", + "The entire Mormon Tabernacle Choir.", + "The female orgasm.", + "Extremely tight pants.", + "The Boy Scouts of America.", + "Stormtroopers.", + "Throwing a virgin into a volcano.", + "Getting in her pants, politely.", + "Gladiatorial combat.", + "Good grammar.", + "Hipsters.", + "Gandalf.", + "Genetically engineered super-soldiers.", + "George Clooney's musk.", + "Getting abducted by Peter Pan.", + "Eating an albino.", + "Enormous Scandinavian women.", + "Fabricating statistics.", + "Finding a skeleton.", + "Suicidal thoughts.", + "Dancing with a broom.", + "Deflowering the princess.", + "Dorito breath.", + "One thousand Slim Jims.", + "My machete.", + "Overpowering your father.", + "Ominous background music.", + "Media coverage.", + "Making the penises kiss.", + "Moral ambiguity.", + "Medieval Times® Dinner & Tournament.", + "Mad hacky-sack skills.", + "Just the tip.", + "Literally eating shit.", + "Leveling up.", + "Insatiable bloodlust.", + "Historical revisionism.", + "Jean-Claude Van Damme.", + "Jafar.", + "The boners of the elderly.", + "The economy.", + "Statistically validated stereotypes.", + "Sudden Poop Explosion Disease.", + "Slow motion.", + "Space muffins.", + "Sexual humiliation.", + "Sexy Siamese twins.", + "Santa Claus.", + "Scrotum tickling.", + "Ripping into a man's chest and pulling out his still-beating heart.", + "Ryan Gosling riding in on a white horse.", + "Quivering jowls.", + "Revenge fucking.", + "Pistol-whipping a hostage.", + "Quiche.", + "Zeus's sexual appetites.", + "Words, words, words.", + "Tripping balls.", + "Being a busy adult with many important things to do.", + "The four arms of Vishnu.", + "The shambling corpse of Larry King.", + "The hiccups.", + "The harsh light of day.", + "The Gulags.", + "The Fanta® girls.", + "A big black dick.", + "A beached whale.", + "A low standard of living.", + "A nuanced critique.", + "A bloody pacifier.", + "A crappy little hand.", + "Shaft.", + "Being a dinosaur.", + "Beating your wives.", + "Neil Patrick Harris.", + "Coughing into a vagina.", + "Carnies.", + "Nubile slave boys.", + "Bosnian chicken farmers.", + "A web of lies.", + "A rival dojo.", + "A passionate Latino lover.", + "Panty raids.", + "Appreciative snapping.", + "Apologizing.", + "Clams.", + "A woman scorned.", + "Being awesome at sex.", + "Spring break!", + "Another shot of morphine.", + "Dining with cardboard cutouts of the cast of \"Friends.\"", + "A soulful rendition of \"Ol' Man River.\"", + "Making a friend.", + "A sweaty, panting leather daddy.", + "Intimacy problems.", + "The new Radiohead album.", + "Pretty Pretty Princess Dress-Up Board Game®.", + "A man in yoga pants with a ponytail and feather earrings.", + "An army of skeletons.", + "A squadron of moles wearing aviator goggles.", + "Beefin' over turf.", + "The Google.", + "Bullshit.", + "A sweet spaceship.", + "A 55-gallon drum of lube.", + "Special musical guest, Cher.", + "The human body.", + "Mild autism.", + "Nunchuck moves.", + "Whipping a disobedient slave.", + "An ether-soaked rag.", + "Oncoming traffic.", + "A dollop of sour cream.", + "A slightly shittier parallel universe.", + "My first kill.", + "Boris the Soviet Love Hammer.", + "The grey nutrient broth that sustains Mitt Romney.", + "Tiny nipples.", + "Power.", + "Death by Steven Seagal.", + "A Burmese tiger pit.", + "Basic human decency.", + "Grandpa's ashes.", + "One Ring to rule them all.", + "The day the birds attacked.", + "Fetal alcohol syndrome.", + "Graphic violence, adult language, and some sexual content.", + "A bigger, blacker dick.", + "The mere concept of Applebee's®.", + "A sad fat dragon with no friends.", + "A piñata full of scorpions.", + "Existing.", + "Hillary Clinton's death stare.", + "Catastrophic urethral trauma.", + "Double penetration.", + "Daddy's belt.", + "Swiftly achieving orgasm.", + "Mooing.", + "Rising from the grave.", + "Subduing a grizzly bear and making her your wife.", + "Some really fucked-up shit.", + "Weapons-grade plutonium.", + "All of this blood.", + "Scrotal frostbite.", + "Taking a man's eyes and balls out and putting his eyes where his balls go and then his balls in the eye holes.", + "The mixing of the races.", + "Pumping out a baby every nine months.", + "Tongue.", + "Loki, the trickster god.", + "Whining like a little bitch.", + "Wearing an octopus for a hat.", + "An unhinged ferris wheel rolling toward the sea.", + "Finding Waldo.", + "Upgrading homeless people to mobile hotspots.", + "A magic hippie love cloud.", + "Fuck Mountain.", + "Living in a trashcan.", + "The corporations.", + "Getting hilariously gang-banged by the Blue Man Group.", + "Jeff Goldblum.", + "Survivor's guilt.", + "Me.", + "All my friends dying.", + "Shutting the fuck up.", + "An ass disaster.", + "Some kind of bird-man.", + "The entire Internet.", + "Going around punching people.", + "A boo-boo.", + "Indescribable loneliness.", + "Having sex on top of a pizza.", + "Chugging a lava lamp.", + "Warm, velvety muppet sex.", + "Running naked through a mall, pissing and shitting everywhere.", + "Nothing.", + "Samuel L. Jackson.", + "Self-flagellation.", + "The systematic destruction of an entire people and their way of life.", + "The Quesadilla Explosion Salad™ from Chili's®.", + "Reverse cowgirl.", + "Vietnam flashbacks.", + "Actually getting shot, for real.", + "Not having sex.", + "Cock.", + "Dying alone and in pain.", + "A cop who is also a dog.", + "The way white people is.", + "Gay aliens.", + "The primal, ball-slapping sex your parents are having right now.", + "A cat video so cute that your eyes roll back and your spine slides out of your anus.", + "A lamprey swimming up the toilet and latching onto your taint.", + "Slapping a racist old lady.", + "A black male in his early 20s, last seen wearing a hoodie.", + "Jumping out at people.", + "Three months in the hole.", + "Blood farts.", + "The Land of Chocolate.", + "A botched circumcision.", + "My manservant, Claude.", + "Vomiting mid-blowjob.", + "Letting everyone down.", + "Having shotguns for legs.", + "Bill Clinton, naked on a bearskin rug with a saxophone.", + "Mufasa's death scene.", + "The Harlem Globetrotters.", + "Demonic possession.", + "Fisting.", + "The thin veneer of situational causality that underlies porn.", + "Girls that always be textin'.", + "Blowing some dudes in an alley.", + "A spontaneous conga line.", + "A vagina that leads to another dimension.", + "Disco fever.", + "Getting your dick stuck in a Chinese finger trap with another dick.", + "Drinking ten 5-hour ENERGYs® to get fifty continuous hours of energy.", + "Sneezing, farting, and coming at the same time.", + "Some douche with an acoustic guitar.", + "Spending lots of money.", + "Putting an entire peanut butter and jelly sandwich into the VCR.", + "An unstoppable wave of fire ants.", + "A greased-up Matthew McConaughey.", + "Flying robots that kill people.", + "Unlimited soup, salad, and breadsticks.", + "Crying into the pages of Sylvia Plath.", + "The moist, demanding chasm of his mouth.", + "Filling every orifice with butterscotch pudding.", + "An all-midget production of Shakespeare's Richard III.", + "Screaming like a maniac.", + "Not contributing to society in any meaningful way.", + "A pile of squirming bodies.", + "Buying the right pants to be cool.", + "Roland the Farter, flatulist to the king.", + "That ass.", + "A surprising amount of hair.", + "Eating Tom Selleck's mustache to gain his powers.", + "Velcro™.", + "A PowerPoint presentation.", + "Crazy opium eyes.", + "10 Incredible Facts About the Anus.", + "An interracial handshake.", + "Moderate-to-severe joint pain.", + "Finally finishing off the Indians.", + "Sugar madness.", + "Actual mutants with medical conditions and no superpowers.", + "The secret formula for ultimate female satisfaction.", + "The complex geopolitical quagmire that is the Middle East.", + "Fucking a corpse back to life.", + "Neil Diamond's Greatest Hits.", + "Calculating every mannerism so as not to suggest homosexuality.", + "Whatever a McRib® is made of.", + "No clothes on, penis in vagina.", + "All the single ladies.", + "Whispering all sexy.", + "How awesome I am.", + "Ass to mouth.", + "Smoking crack, for instance.", + "Falling into the toilet.", + "A dance move that's just sex.", + "The size of my penis.", + "Some sort of Asian.", + "A hopeless amount of spiders.", + "Party Mexicans.", + "Drinking responsibly.", + "The safe word.", + "Angelheaded hipsters burning for the ancient heavenly connection to the starry dynamo in the machinery of night.", + "Bouncing up and down.", + "Jizz.", + "Ambiguous sarcasm.", + "A shiny rock that proves I love you.", + "Dem titties.", + "My worthless son.", + "Exploding pigeons.", + "A Ugandan warlord.", + "My sex dungeon.", + "A kiss on the lips.", + "Child Protective Services.", + "A Native American who solves crimes by going into the spirit world.", + "Doo-doo.", + "The peaceful and nonthreatening rise of China.", + "Sports.", + "A fart.", + "Unquestioning obedience.", + "Three consecutive seconds of happiness.", + "Grammar nazis who are also regular Nazis.", + "Snorting coke off a clown's boner.", + "Africa.", + "Depression.", + "A horse with no legs.", + "The euphoric rush of strangling a drifter.", + "Khakis.", + "Interspecies marriage.", + "A gender identity that can only be conveyed through slam poetry.", + "Almost giving money to a homeless person.", + "Stuff a child's face with Fun Dip® until he starts having fun.", + "What Jesus would do.", + "A for-real lizard that spits blood from its eyes.", + "Blackula.", + "The tiniest shred of evidence that God is real.", + "My dad's dumb fucking face.", + "Prince Ali,
fabulous he,
Ali Ababwa.", + "A manhole.", + "A sex goblin with a carnival penis.", + "A bunch of idiots playing a card game instead of interacting like normal humans.", + "A sex comet from Neptune that plunges the Earth into eternal sexiness.", + "Sharks with legs.", + "Injecting speed into one arm and horse tranquilizer into the other.", + "Lots and lots of abortions.", + "Seeing things from Hitler's perspective", + "Too much cocaine.", + "Doing the right stuff to her nipples.", + "Giant sperm from outer space.", + "Oil!", + "Ennui.", + "A powered exoskeleton.", + "A disappointing salad.", + "Mom's new boyfriend.", + "Unrelenting genital punishment.", + "Denzel.", + "The swim team, all at once.", + "The eight gay warlocks who dictate the rules of fashion.", + "Being nine years old.", + "The unbelievable world of mushrooms.", + "The Abercrombie & Fitch lifestyle.", + "Vegetarian options.", + "My first period.", + "Having been dead for a while.", + "Backwards knees.", + "Being paralyzed from the neck down.", + "Seeing my village burned and my family slaughtered before my eyes.", + "A zero-risk way to make $2,000 from home.", + "A crazy little thing called love.", + "Ancient Athenian boy-fucking", + "Out-of-this-world bazongas.", + "The ghost of Marlon Brando.", + "The basic suffering that pervades all of existence.", + "Being worshipped as the one true God.", + "Figuring out how to have sex with a dolphin.", + "All these decorative pillows.", + "A mouthful of potato salad.", + "Russian super-tuberculosis.", + "A reason not to commit suicide.", + "Going to a high school reunion on ketamine.", + "The passage of time.", + "Child support payments.", + "Changing a person's mind with logic and facts.", + "My boyfriend's stupid penis.", + "The tiger that killed my father.", + "Genghis Khan's DNA.", + "Boring vaginal sex.", + "40 acres and a mule.", + "A whole new kind of porn.", + "Slowly easing down onto a cucumber.", + "Wearing glasses and sounding smart.", + "AIDS monkeys.", + "A team of lawyers.", + "Getting drive-by shot.", + "Not believing in giraffes.", + "Anal fissures like you wouldn't believe.", + "A giant powdery manbaby.", + "Cutting off a flamingo's legs with garden shears.", + "P.F. Chang himself.", + "An uninterrupted history of imperialism and exploitation.", + "A one-way ticket to Gary, Indiana.", + "Daddy's credit card.", + "September 11th, 2001.", + "An unforgettable quinceañera.", + "Deez nuts.", + "Social justice warriors with flamethrowers of compassion.", + "Some shit-hot guitar licks.", + "Butt stuff.", + "Blackface.", + "Blowjobs for everyone.", + "Getting eaten alive by Guy Fieri.", + "Western standards of beauty.", + "Ejaculating live bees and the bees are angry.", + "My dead son's baseball glove.", + "Getting caught by the police and going to jail.", + "A face full of horse cum.", + "Free ice cream, yo.", + "The white half of Barack Obama.", + "The black half of Barack Obama.", + "An inability to form meaningful relationships.", + "A bass drop so huge it tears the starry vault asunder to reveal the face of God.", + "Growing up chained to a radiator in perpetual darkness.", + "Shitting all over the floor like a bad, bad girl.", + "A buttload of candy.", + "Sucking all the milk out of a yak.", + "Bullets.", + "A man who is so cool that he rides on a motorcycle.", + "Sudden penis loss.", + "Getting all offended.", + "Crying and shitting and eating spaghetti.", + "One unforgettable night of passion.", + "Being popular and good at sports.", + "Filling a man's anus with concrete.", + "Two whales fucking the shit out of eachother.", + "Cool, relateable cancer teens.", + "The amount of gay I am.", + "A possible Muslim.", + "Unsheathing my massive horse cock.", + "A bowl of gourds.", + "The male gaze.", + "The power of the Dark Side.", + "Ripping a dog in half.", + "A constant need for validation.", + "Meaningless sex.", + "Such a big boy.", + "Throwing stones at a man until he dies.", + "Cancer.", + "Like a million alligators.", + "Eating together like a god damn family for once.", + "Cute boys.", + "Pussy.", + "Being a terrible mother.", + "Never having sex again.", + "A pizza guy who fucked up.", + "A whole lotta woman.", + "The all-new Nissan Pathfinder with 0.9% APR financing!", + "A peyote-fueled vision quest.", + "Kale.", + "Breastfeeding a ten year old.", + "Crippling social anxiety.", + "Immortality cream.", + "Texas.", + "Teaching a girl how to handjob the penis.", + "A turd.", + "Shapes and colors.", + "Whatever you wish, mother.", + "The haunting stare of an Iraqi child.", + "Robots who just want to party.", + "A self-microwaving burrito.", + "Forgetting grandma's first name.", + "Our new Buffalo Chicken Dippers®!", + "Treasures beyond your wildest dreams.", + "Getting shot out of a cannon.", + "The sweet song of sword against and the braying of mighty war beasts.", + "Walking into a glass door.", + "The color \"puce\".", + "Every ounce of charisma left in Mick Jagger's tired body.", + "The eighth graders.", + "Setting my balls on fire and cartwheeling to Ohio.", + "The dentist.", + "Gwyneth Paltrow's opinions.", + "Turning the rivers red with the blood of infidels.", + "Rabies.", + "Important news about Taylor Swift.", + "Ejaculating inside another man's wife.", + "Owls, the perfect predator.", + "Being John Malkovich.", + "Bathing in moonsblood and dancing around the ancient oak.", + "An oppressed people with a vibrant culture.", + "An overwhelming variety of cheeses.", + "Reading the entire End-User License Agreement.", + "Morpheus.", + "Peeing into a girl's butt to make a baby.", + "Generally having no idea of what's going on.", + "No longer finding any Cards Against Humanity card funny.", + "10 football players with erections barreling towards you at full speed.", + "10,000 shrieking teenage girls.", + "A big ol' plate of fettuccine alfredo.", + "A big, beautiful mouth packed to the brim with sparkling teeth.", + "A black friend.", + "A burrito that's just sour cream.", + "A cheerfulness that belies a deep-seated self-loathing.", + "A cold and indifferent universe.", + "A creature made of penises that must constantly arouse itself to survive.", + "A creepy child singing a nursery rhyme.", + "A dolphin that learns to talk and becomes the Dead of Harvard Law School.", + "A duffel bag full of lizards.", + "A finger up the butt.", + "A genetic predisposition for alcoholism.", + "A gun that shoots cobras.", + "A hug.", + "A long business meeting with no obvious purpose.", + "A man in a suit with perfect hair who tells you beautiful lies.", + "A man with the head of a goat and the body of a goat.", + "A massive collection of child pornography.", + "A medium horchata.", + "A negative body image that is totally justified.", + "A slowly encroaching circle of wolves.", + "A strong horse and enough rations for thirty days.", + "A terrified fat child who won't come out of the bushes.", + "A tiny fireman who puts out tiny fires.", + "A weird guy who says weird stuff and weirds me out.", + "A woman's right to choose.", + "A woman's perspective.", + "Aborting the shit out of a fetus.", + "Albert Einstein but if he had a huge muscles and a rhinoceros cock.", + "All these people I've killed.", + "An arrangement wherein I give a person money they have sex with me.", + "An empowered woman.", + "An incurable homosexual.", + "An old dog full of tumors.", + "An older man.", + "An X-Man whose power is that he has sex with dogs and children.", + "Anal.", + "Antidepressants.", + "Art.", + "Assassinating the president.", + "Awesome pictures of planets and stuff.", + "Bad emotions I don't want.", + "Becoming the President of the United States.", + "Being sexually attracted to children.", + "Being turned into sausages.", + "Beyoncé.", + "Big, smart money boys tap-tapping on their keyboards.", + "Blossoming into a beautiful young woman.", + "Breastfeeding in public like a radiant earth goddess.", + "Brunch.", + "Catching a live salmon in your mouth.", + "Child labor.", + "China.", + "Chipotle.", + "Chris Hemsworth.", + "Comprehensive immigration reform.", + "Condoleezza Rice.", + "Consensual, nonreproductive incest.", + "Content.", + "Crazy anal orgasms.", + "Creamy slices of real, California avocado.", + "Critical thinking.", + "Crushing the patriarchy.", + "Daddy going away forever.", + "Defeating a gorilla in single combat.", + "Denying the Holocaust.", + "Dis bitch.", + "Discovering that what I really want in life is to kill people and have sex with their corpses.", + "Doing a somersault and barfing.", + "Dominating a man by peeing on his eldest son.", + "Doritos and a Fruit Roll-Up.", + "Dropping dead in a Sbarro's bathroom and not being found for 72 hours.", + "Dumpster juice.", + "Eating ass.", + "Eating people.", + "Eating too many Cinnabons and then vomiting and then eating the vomit.", + "Ejaculating at the apex of a cartwheel.", + "Esmeralda, my most beautiful daughter.", + "Eternal screaming madness.", + "Every man's ultimate fantasy: a perfectly cylindrical vagina.", + "Everything.", + "Exploring each other's buttholes.", + "Facilitating dialogue and deconstructing binaries.", + "Falling into a pit of waffles.", + "Farting a huge shit out of my pussy.", + "Farting all over my face with your tight little asshole.", + "Feeling the emotion of anger.", + "Feminism.", + "Film roles for actresses over 40.", + "Finding a nice elevator to poop in.", + "Forty-five minutes of finger blasting.", + "Founding a major world religion.", + "Fucking me good and taking me to Red Lobster®.", + "Fucking my therapist.", + "Gary.", + "Gay thoughts.", + "Gayle from HR.", + "Gazpacho.", + "Getting aborted.", + "Getting blasted in the face by a t-shirt cannon.", + "Getting eaten out by a dog.", + "Getting high with mom.", + "Getting killed and dragged up a tree by a leopard.", + "Getting laid like all the time.", + "Getting naked too soon.", + "Getting pegged.", + "Getting the Dorito crumbs out of my purse.", + "Getting this party started!", + "Getting trapped in a conversation about Ayn Rand.", + "Going around pulling people's tampons out.", + "Going to bed at a reasonable hour.", + "Gregor, my largest son.", + "Grunting for ten minutes and then peeing sand.", + "Guns.", + "Happy daddies with happy sandals.", + "Hating Jews.", + "Having a vagina.", + "Having an awesome time drinking and driving.", + "Having sex with a beautiful person.", + "Having sex with a man and then eating his head.", + "Having sex with your mom.", + "Holding the proper political beliefs of my time to attract a mate.", + "Homework.", + "Hot lettuce.", + "How good lead paint taste.", + "How great my ass looks in these jeans.", + "How sad it will be when Morgan Freeman dies.", + "How strange it is to be anything at all.", + "Huge big balls full of jizz.", + "Informing you that I am a registered sex offender.", + "ISIS.", + "It being too late to stop having sex with a horse.", + "Jason, the teen mayor.", + "Jazz.", + "Just now finding out about the Armenian Genocide.", + "Late-stage dementia.", + "Libertarians.", + "Loud, scary thunder.", + "Making out and stuff.", + "Math.", + "Meatloaf, the food.", + "Meatloaf, the man.", + "Menopause.", + "Mental illness.", + "Microaggressions.", + "Misogyny.", + "Mixing M&Ms and Skittles like some kind of psychopath.", + "Mommy and daddy fighting all the time.", + "Moon people.", + "Muchin' puss.", + "My brother's hot friends.", + "My dog dying.", + "My huge penis and substantial fortune.", + "Objectifying women.", + "One of them big-city Jew lawyers.", + "One of those \"blow jobs\" I've been hearing so much about.", + "Onions.", + "Opening your mouth to talk and a big penis fops out.", + "Our baby.", + "Out-of-control teenage blowjob parties.", + "Overthrowing the democratically-elected government of Chile.", + "Participating.", + "Period poops.", + "Picking up a glass of water and taking a sip and being the president.", + "Playing my asshole like a trumpet.", + "Plowing that ass like a New England corn farmer.", + "Political correctness.", + "Pooping in a leotard and hoping no one notices.", + "Pooping in the potty.", + "Prematurely ejaculating like a total loser.", + "Pretending to be one of the guys but actually being the spider god.", + "Putting more black people in jail.", + "Quacking like a duck in lieu of a cogent argument.", + "Quinoa.", + "Raising three kids on minimum wage.", + "Reaching an age where barbecue chips are better than sex.", + "Regurgitating a half-digested sparrow.", + "Restoring Germany to its former glory.", + "Rock-hard tits and a huge vagina.", + "Rolling so hard.", + "Rubbing my bush all over your bald head.", + "Salsa Night at Dave's Cantina.", + "Scissoring, if that's a thing.", + "Seizing control of the means of production.", + "Self-identifying as a DJ.", + "Showing all the boys my pussy.", + "Slamming a dunk.", + "Smashing my balls at the moment of climax.", + "Some of that good dick.", + "Some real spicy shrimps.", + "Starting a shitty podcast.", + "Straight blazin' 24/7.", + "Sucking each other's penises for hours on end.", + "Sudden and unwanted slam poetry.", + "Swearing praise upon the Sultan's hideous daughters.", + "Systems and policies designed to preserve centuries-old power structures.", + "Tables.", + "Taking the form of a falcon.", + "Tender chunks of all-white-meat chicken.", + "That bitch, Stacy.", + "The amount of baby carrots I can fit up my ass.", + "The best, deepest quotes from The Dark Knight.", + "The body of a 46-year-old man.", + "The bond between a woman and her horse.", + "The chicken from Popeyes®.", + "The clown that followed me home from the grocery store.", + "The fear and hatred in men's hearts.", + "The feeling of going to McDonald's as a 6-year-old.", + "The flaming wreckage of the International Space Station.", + "The full blown marginalization of ugly people.", + "The full force of the American military.", + "The government.", + "The graceful path of an autumn leaf as it falls to its earthen cradle.", + "The hottest MILF in Dallas.", + "The LGBT community.", + "The lived experience of African Americans.", + "The mysterious fog rolling into town.", + "The ol' penis-in-the-popcorn surprise.", + "The Rwandan Genocide.", + "The secret to truly resilient hair.", + "The sweet, forbidden meat of the monkey.", + "The wind.", + "Thinking about what eating even is.", + "Three hours of nonstop penetration.", + "Tiny, rancid girl farts.", + "Trees.", + "Trevor, the world's greatest boyfriend.", + "Turning 32.", + "Twenty bucks.", + "Twenty cheerleaders laughing at your tiny penis.", + "Twisting my cock and balls into a balloon poodle.", + "Two beautiful pig sisters.", + "Two shitty kids and a garbage husband.", + "Waking up inside of a tornado.", + "Watching a hot person eat.", + "Watching you die.", + "Water.", + "When the big truck goes \"Toot! Toot!\"", + "Who really did 9/11.", + "Whomsoever let the dogs out.", + "Whooping your ass at Mario Kart.", + "Working so hard to have muscles and then having them.", + "You.", + "Several Michael Keatons.", + "A bus that will explode if it goes under 50 miles per hour.", + "Sucking the President's dick.", + "Sunny D! Alright!", + "A mulatto, an albino, a mosquito, and my libido.", + "Log™.", + "Jerking off to a 10-second RealMedia clip.", + "The Y2K bug.", + "Deregulating the mortgage market.", + "Stabbing the shit out of a Capri Sun.", + "Wearing Nicolas Cage's face.", + "Freeing Willy.", + "Kurt Cobain's death.", + "The Great Cornholio.", + "Liking big butts and not being able to lie about it.", + "Yelling \"girl power!\" and doing a high kick.", + "Pure Moods, Vol. 1.", + "Pizza in the morning, pizza in the evening, pizza at supper time.", + "Pamela Anderson's boobs running in slow motion.", + "Getting caught up in the CROSSFIRE™.", + "Angels interfering in an otherwise fair baseball game.", + "Cool 90s up-in-the-front hair.", + "Patti Mayonnaise.", + "The biggest, blackest dick.", + "A box within a box.", + "A boxing match with a giant box.", + "A box.", + "Pandora's vagina.", + "Former President George W. Box.", + "Being a motherfucking box.", + "A falcon with a box on its head.", + "Two midgets shitting into a box.", + "A box without hinges, key, or lid, yet golden treasure inside is hid.", + "The J15 Patriot Assault Box.", + "An alternate universe in which boxes store things inside of people.", + "A box that is conscious and wishes it weren't a box.", + "Something that looks like a box but turns out to be a crate.", + "A man-shaped box.", + "A box-shaped man.", + "Boxing up my feelings.", + "A world without boxes.", + "The Boxcar Children.", + "An outbreak of smallbox.", + "A box of biscuits, a box of mixed biscuits, and a biscuit mixer.", + "A CGI dragon.", + "A dwarf who won't leave you alone until you compare penis sizes.", + "A gay sorcerer who turns everyone gay.", + "A ghoul.", + "A Hitachi Magic Wand.", + "A magical kingdom with dragons and elves and no black people.", + "A mysterious, floating orb.", + "A weed elemental who gets everyone high.", + "Accidentally conjuring a legless horse that can't stop ejaculating.", + "Bathing naked in a moonlit grove.", + "Dinosaurs who wear armor and you ride them and they kick ass.", + "Eternal darkness.", + "Freaky, pan-dimensional sex with a demigod.", + "Gender equality.", + "Going on an epic adventure and learning a valuable lesson about friendship.", + "Handcuffing a wizard to a radiator and dousing him with kerosene.", + "Hodor.", + "How hot Orlando Bloom was in Lord of the Rings.", + "Kneeing a wizard in the balls.", + "Make-believe stories for autistic white men,", + "Reading The Hobbit under the covers while mom and dad scream at each other downstairs.", + "Shitting in a wizard's spell book and jizzing in his hat.", + "Shooting a wizard with a gun.", + "The all-seeing Eye of Sauron.", + "The card game Neil Gaiman wrote: \"Three elves at a time.\"", + "True love's kiss.", + "A sobering quantity of chili cheese fries.", + "Going vegetarian and feeling so great all the time.", + "Kale farts.", + "Licking the cake batter off of grandma's fingers.", + "Real cheese flavor.", + "Swishing the wine around and sniffing it like a big fancy man.", + "The Dial-A-Slice Apple Divider from Williams-Sonoma.", + "What to do with all of this chocolate on my penis.", + "A belly full of hard-boiled eggs.", + "A joyless vegan patty.", + "A table for one at The Cheesecake Factory.", + "Being emotionally and physically dominated by Gordon Ramsay.", + "Kevin Bacon Bits.", + "Not knowing what to believe anymore about butter.", + "Soup that's better than pussy.", + "Sucking down thousands of pounds of krill every day.", + "A Mexican child trapped inside of a burrito.", + "Clamping down on a gazelle's jugular and tasting its warm life waters.", + "Committing suicide at the Old Country Buffet.", + "Father's forbidden chocolates.", + "Jizz Twinkies.", + "The Hellman's Mayonnaise Corporation.", + "The hot dog I put in my vagina ten days ago.", + "The inaudible screams of carrots.", + "A supermassive black hole.", + "Reconciling quantum theory with general relativity.", + "Electroejaculating a capuchin monkey.", + "Insufficient serotonin.", + "Evolving a labyrinthine vagina.", + "Getting really worried about global warming for a few seconds.", + "Infinity.", + "Oxytocin release via manual stimulation of the nipples.", + "Uranus.", + "Being knowledgeable in a narrow domain that nobody understands or cares about.", + "Achieving reproductive success.", + "Slowly evaporating.", + "The quiet majesty of the sea turtle.", + "A 0.7 waist-to-hip ratio.", + "Fun and interesting facts about rocks.", + "Photosynthesis.", + "Developing secondary sex characteristics.", + "Failing the Turing test.", + "Explosive decompression.", + "Driving into a tornado to learn about tornadoes.", + "David Attenborough watching us mate.", + "3.7 billion years of evolution.", + "The Sun engulfing the Earth." + ], + "Base": { + "name": "Base Set", + "black": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "white": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459 + ] + }, + "CAHe1": { + "name": "The First Expansion", + "black": [ + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "white": [ + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539 + ], + "icon": 1 + }, + "CAHe2": { + "name": "The Second Expansion", + "black": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 + ], + "white": [ + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614 + ], + "icon": 2 + }, + "CAHe3": { + "name": "The Third Expansion", + "black": [ + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159 + ], + "white": [ + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689 + ], + "icon": 3 + }, + "CAHe4": { + "name": "The Fourth Expansion", + "black": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189 + ], + "white": [ + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759 + ], + "icon": 4 + }, + "CAHe5": { + "name": "The Fifth Expansion", + "black": [ + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "white": [ + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834 + ], + "icon": 5 + }, + "CAHe6": { + "name": "The Sixth Expansion", + "black": [ + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "white": [ + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909 + ], + "icon": 6 + }, + "greenbox": { + "name": "Green Box Expansion", + "black": [ + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294 + ], + "white": [ + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154 + ], + "icon": "square" + }, + "90s": { + "name": "90s Nostalgia Pack", + "black": [ + 295, + 296, + 297, + 298, + 299, + 300, + 301 + ], + "white": [ + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177 + ], + "icon": "birthday-cake" + }, + "Box": { + "name": "Box Expansion", + "black": [], + "white": [ + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198 + ], + "icon": "cube" + }, + "fantasy": { + "name": "Fantasy Pack", + "black": [ + 302, + 303, + 304, + 305, + 306, + 307 + ], + "white": [ + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224 + ], + "icon": "magic" + }, + "food": { + "name": "Food Pack", + "black": [ + 308, + 309, + 310, + 311, + 312, + 313 + ], + "white": [ + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248 + ], + "icon": "cutlery" + }, + "science": { + "name": "Science Pack", + "black": [ + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "white": [ + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271 + ], + "icon": "flask" + }, + "order": [ + "Base", + "CAHe1", + "CAHe2", + "CAHe3", + "CAHe4", + "CAHe5", + "CAHe6", + "greenbox", + "90s", + "Box", + "fantasy", + "food", + "science" + ] +} \ No newline at end of file diff --git a/cards_against_emf/main.py b/cards_against_emf/main.py new file mode 100644 index 0000000..75b0c21 --- /dev/null +++ b/cards_against_emf/main.py @@ -0,0 +1,58 @@ +''' Random card generator, includes Base Set, The First Expansion, The Second Expansion, The Third Expansion, The Fourth Expansion, The Fifth Expansion, The Sixth Expansion, Green Box Expansion, 90s Nostalgia Pack, Box Expansion, Fantasy Pack, Food Pack, Science Pack and World Wide Web Pack ''' + +___name___ = "Cards Against EMF" +___license___ = ["MIT"] +___dependencies___ = ["random", "ugfx_helper", "sleep"] +___categories___ = ["Games"] +___bootstrapped___ = False # Whether or not apps get downloaded on first install. Defaults to "False", mostly likely you won't have to use this at all. + +import ugfx, json, random + +from tilda import Buttons +from app import restart_to_default + +ugfx.init() +ugfx.clear() +ugfx.text(10, 10, "CARDS AGAINST EMF", ugfx.BLACK) +ugfx.text(10, 40, "A for a question", ugfx.BLACK) +ugfx.text(10, 60, "B for an answer", ugfx.BLACK) +ugfx.text(10, 80, "MENU to exit", ugfx.BLACK) + +b=ugfx.Style() +b.set_background(ugfx.BLACK) +b.set_enabled([ugfx.WHITE, ugfx.BLACK, ugfx.BLACK, ugfx.BLACK]) # sets the style for when something is enabled +w=ugfx.Style() +w.set_background(ugfx.WHITE) + +with open("cards_against_emf/cards.json") as data: + d = json.load(data) + +def get_black(): + x = random.randint(1, 320) + ugfx.clear(ugfx.html_color(0x000000)) + text = str(d["blackCards"][x]["text"]) + ugfx.Label(0, 0, 240, 400, text, style=b) + +def get_white(): + y = random.randint(1, 1271) + ugfx.clear(ugfx.html_color(0xffffff)) + text = str(d["whiteCards"][y]) + ugfx.Label(0, 0, 240, 400, text, style=w) + +Buttons.enable_interrupt( + Buttons.BTN_A, + lambda button_id:get_black(), + on_press=True, + on_release=False) + +Buttons.enable_interrupt( + Buttons.BTN_B, + lambda button_id:get_white(), + on_press=True, + on_release=False) + +Buttons.enable_interrupt( + Buttons.BTN_Menu, + lambda button_id:restart_to_default(), + on_press=True, + on_release=False) \ No newline at end of file From ceb3f06b7c7d8b7a2ef81ded8800dc7d6d948394 Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 2 Sep 2018 22:15:05 +0100 Subject: [PATCH 22/89] Speedlauncher app --- speedlauncher/main.py | 118 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 speedlauncher/main.py diff --git a/speedlauncher/main.py b/speedlauncher/main.py new file mode 100644 index 0000000..5b8bda9 --- /dev/null +++ b/speedlauncher/main.py @@ -0,0 +1,118 @@ +"""Launcher for apps currently installed""" + +___name___ = "Launcher" +___license___ = "MIT" +___categories___ = ["System"] +___dependencies___ = ["app", "ugfx_helper"] +___launchable___ = False +___bootstrapped___ = False + +import ugfx_helper, ugfx, math, buttons +from app import * +from tilda import Buttons + +APPS_PER_PAGE = 12 +EMF_PURPLE = 0x800080 + +ugfx_helper.init() +ugfx.clear(ugfx.html_color(EMF_PURPLE)) + +ugfx.set_default_font(ugfx.FONT_SMALL) +style = ugfx.Style() +style.set_enabled([ugfx.WHITE, ugfx.html_color(EMF_PURPLE), ugfx.html_color(EMF_PURPLE), ugfx.html_color(EMF_PURPLE)]) +style.set_background(ugfx.html_color(EMF_PURPLE)) +ugfx.set_default_style(style) + +loadMsg = ugfx.Label(0, 90, ugfx.width(), 20, "Loading apps...", justification=ugfx.Label.CENTER) + +# Load apps in a colourList +all_apps = [{"title": a.title, "app": a} for a in get_apps()] + +# Sort apps by alphabetical order +all_apps.sort(key=lambda a: a['title']) +total_pages = math.ceil(len(all_apps) / APPS_PER_PAGE) + +ugfx.clear(ugfx.html_color(EMF_PURPLE)) + +keypad = [ + Buttons.BTN_1, + Buttons.BTN_2, + Buttons.BTN_3, + Buttons.BTN_4, + Buttons.BTN_5, + Buttons.BTN_6, + Buttons.BTN_7, + Buttons.BTN_8, + Buttons.BTN_9, + Buttons.BTN_Star, + Buttons.BTN_0, + Buttons.BTN_Hash +] + +keypadLabels = [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "*", + "0", + "#" +] + +def showPage(): + global current_page + # avoid out of bounds errors + current_page = max(1, min(current_page, total_pages)) + + start = (current_page - 1) * APPS_PER_PAGE + end = start + APPS_PER_PAGE + apps_on_current_page = all_apps[start:end] + + # Refresh page + ugfx.clear(ugfx.html_color(EMF_PURPLE)) + + # Write current page number and arrows + ugfx.Label(0, 20, ugfx.width(), 20, "Page {} of {}".format(current_page, total_pages), justification=ugfx.Label.CENTER) + + if current_page > 1: + ugfx.fill_polygon(10, 16, [[0, 10], [15, 20], [15, 0]], ugfx.WHITE) + + if current_page < total_pages: + ugfx.fill_polygon(ugfx.width() - 30, 16, [[0, 0], [15, 10], [0, 20]], ugfx.WHITE) + + # Write app numbers and names + i = 0 + yOffset = 45 + xOffset = 0 + for a in apps_on_current_page: + # xOffset = (i % 3) * 8 # offset lines to match the physical layout of the keypad + ugfx.area(20 + xOffset, yOffset + 2, 20, 20, ugfx.WHITE) + ugfx.text(23 + xOffset, yOffset + 3, keypadLabels[i] + " ", EMF_PURPLE) + + ugfx.Label(46 + xOffset, yOffset + 3, ugfx.width(), 20, a['title'], justification=ugfx.Label.LEFT) + yOffset = yOffset + 22 + i = i + 1 + + while True: + for key in keypad: + keyIndex = keypad.index(key) + if buttons.is_pressed(key) and (keyIndex < len(apps_on_current_page)): + apps_on_current_page[keyIndex]['app'].boot() + break + + if buttons.is_triggered(Buttons.JOY_Right) and (current_page is not total_pages): + current_page = current_page + 1 + return + if buttons.is_triggered(Buttons.JOY_Left) and (current_page is not 1): + current_page = current_page - 1 + return + +current_page = 1 + +while True: + showPage() From 5f720bb2df59cf0bf78e0b7af95514286b9cc6ef Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 2 Sep 2018 22:17:28 +0100 Subject: [PATCH 23/89] Unique name --- speedlauncher/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/speedlauncher/main.py b/speedlauncher/main.py index 5b8bda9..f56174c 100644 --- a/speedlauncher/main.py +++ b/speedlauncher/main.py @@ -1,7 +1,7 @@ """Launcher for apps currently installed""" -___name___ = "Launcher" -___license___ = "MIT" +___name___ = "Speed Launcher" +___license___ = "WTFPL" ___categories___ = ["System"] ___dependencies___ = ["app", "ugfx_helper"] ___launchable___ = False From e20e2c8295605c7ad5b438e9b6b0292de3dd7809 Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 2 Sep 2018 22:23:26 +0100 Subject: [PATCH 24/89] removed FUN --- nyan/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nyan/main.py b/nyan/main.py index bef5e85..3e13445 100644 --- a/nyan/main.py +++ b/nyan/main.py @@ -16,7 +16,7 @@ ___dependencies___ = ["sleep", "app", "ugfx_helper", "shared/nyan/10.png", "shared/nyan/11.png"] -___categories___ = ["FUN", "Homescreens"] +___categories___ = ["Homescreens", "Other"] import ugfx_helper, os, wifi, ugfx, http, time, sleep, app from tilda import Buttons From 6fa8e86097b6ad0512906dc3c774940d13c614a8 Mon Sep 17 00:00:00 2001 From: Matt Mets Date: Sun, 2 Sep 2018 22:27:35 +0100 Subject: [PATCH 25/89] Pong! --- pong/main.py | 220 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 pong/main.py diff --git a/pong/main.py b/pong/main.py new file mode 100644 index 0000000..1c1ef7b --- /dev/null +++ b/pong/main.py @@ -0,0 +1,220 @@ +"""Pong!""" + +___name___ = "Pong" +___license___ = "WTFPL" +___categories___ = ["Games"] +___dependencies___ = ["dialogs", "app", "ugfx_helper", "random", "sleep", "buttons"] + +import math, ugfx, ugfx_helper, random, sleep, buttons, time +from tilda import Buttons + +ugfx_helper.init() + +SCREEN_WIDTH = ugfx.width() +SCREEN_HEIGHT = ugfx.height() + +bgColor = ugfx.BLACK +ballColor = ugfx.html_color(0x00FF00) +paddleColor = ugfx.html_color(0x00FF00) +netColor = ugfx.html_color(0x00FF00) + +class Paddle(): + height = 6 + width = 60 + + moveSpeed = 4 + + needsRedraw = True + + def __init__(self, type): + self.type = type + + self.x = SCREEN_WIDTH/2 + self.previousX = self.x + + if type == 0: + self.y = self.height/2 + else: + self.y = SCREEN_HEIGHT - (self.height/2) + + def draw(self): + if self.needsRedraw: + ugfx.area(int(self.previousX-self.width/2),int(self.y-self.height/2),int(self.width),int(self.height),bgColor) + self.needsRedraw = False + + ugfx.area(int(self.x-self.width/2),int(self.y-self.height/2),int(self.width),int(self.height),paddleColor) + + def update(self): + if self.type == 1: + if Buttons.is_pressed(Buttons.BTN_Hash): + self.needsRedraw = True + self.previousX = self.x + self.x += self.moveSpeed + + if Buttons.is_pressed(Buttons.BTN_Star): + self.needsRedraw = True + self.previousX = self.x + self.x -= self.moveSpeed + if self.type == 0: + if Buttons.is_pressed(Buttons.BTN_3): + self.needsRedraw = True + self.previousX = self.x + self.x += self.moveSpeed + if Buttons.is_pressed(Buttons.BTN_1): + self.needsRedraw = True + self.previousX = self.x + self.x -= self.moveSpeed + + if self.x + self.width/2 > SCREEN_WIDTH: + self.x = SCREEN_WIDTH - self.width/2 + + if self.x -self.width/2 < 0: + self.x = self.width/2 + +class Ball(): + size = 10 + + x = 0 + y = 0 + + yDeathOffset = 5+3 + + def __init__(self): + self.x = random.randint(30,SCREEN_WIDTH-30) + + self.y = SCREEN_HEIGHT/2 + + self.vX = 3 + + if random.randrange(2) == 1: + self.vY = 3 + else: + self.vY = -3 + + self.previousX = self.x + self.previousY = self.y + + self.dead = False + + def draw(self): + ugfx.area(int(self.previousX-self.size/2),int(self.previousY-self.size/2),int(self.size),int(self.size),bgColor) + ugfx.area(int(self.x-self.size/2),int(self.y-self.size/2),int(self.size),int(self.size),ballColor) + + def update(self, topPaddle, bottomPaddle): + self.previousX = self.x + self.previousY = self.y + + self.x += self.vX + self.y += self.vY + + if self.x > SCREEN_WIDTH: + self.x = SCREEN_WIDTH + self.vX = -self.vX + + if self.x < 0: + self.x = 0 + self.vX = -self.vX + + if self.y > (SCREEN_HEIGHT - self.yDeathOffset): + if (self.x > (bottomPaddle.x - bottomPaddle.width/2)) and (self.x < (bottomPaddle.x + bottomPaddle.width/2)): + self.y = SCREEN_HEIGHT - self.yDeathOffset + self.vY = -self.vY + bottomPaddle.needsRedraw = True + else: + self.dead = True + + + if self.y < self.yDeathOffset: + if (self.x > (topPaddle.x - topPaddle.width/2)) and (self.x < (topPaddle.x + topPaddle.width/2)): + self.y = self.yDeathOffset + self.vY = -self.vY + topPaddle.needsRedraw = True + else: + self.dead = True + + def isDead(self): + return self.dead + +def one_round(): + ball = Ball() + topPaddle = Paddle(0) + bottomPaddle = Paddle(1) + + ugfx.clear(bgColor) + ugfx.backlight(100) + + ugfx.set_default_font(ugfx.FONT_TITLE) + + while True: + topPaddle.update() + bottomPaddle.update() + ball.update(topPaddle, bottomPaddle) + + if ball.isDead(): + if(ball.y > SCREEN_HEIGHT/2): + return [1,0] + else: + return [0,1] + + topPaddle.draw() + bottomPaddle.draw() + ball.draw() + + #draw the net + for i in range(0,7): + ugfx.area(int(i*2*SCREEN_WIDTH/13), int(SCREEN_HEIGHT/2-1), int(SCREEN_WIDTH/13), 3, netColor) + + ugfx.orientation(0) + ugfx.text(130, 0, "%d " % (points[0]),netColor) + ugfx.text(170, 0, "%d " % (points[1]),netColor) + ugfx.orientation(270) + + time.sleep_ms(1) + +minScore = 9 + +points = [0,0] +playing = 1 +while playing: + points[0] = 0 + points[1] = 0 + + while (points[0] < minScore) and (points[1] < minScore): + score = one_round() + + points[0] = points[0] + score[0] + points[1] = points[1] + score[1] + + ugfx.area(0,0,ugfx.width(),ugfx.height(),0) + + ugfx.orientation(90) + ugfx.set_default_font(ugfx.FONT_TITLE) + ugfx.text(30, 138, "GAME ",ballColor) + ugfx.text(30, 158, "OVER ",ballColor) + + ugfx.set_default_font(ugfx.FONT_SMALL) + ugfx.text(70, 220, "Score: %d - %d " % (points[0], points[1]), ballColor) + ugfx.text(36, 260, "Press A to play again ", ballColor) + ugfx.text(40, 280, "Press MENU to quit " , ballColor) + + ugfx.orientation(270) + ugfx.set_default_font(ugfx.FONT_TITLE) + ugfx.text(30, 138, "GAME ",ballColor) + ugfx.text(30, 158, "OVER ",ballColor) + + ugfx.set_default_font(ugfx.FONT_SMALL) + ugfx.text(70, 220, "Score: %d - %d " % (points[1], points[0]), ballColor) + ugfx.text(36, 260, "Press A to play again ", ballColor) + ugfx.text(40, 280, "Press MENU to quit ", ballColor) + + while True: + sleep.wfi() + if buttons.is_triggered(Buttons.BTN_A): + break + + if buttons.is_triggered(Buttons.BTN_Menu): + playing = 0 + break + +app.restart_to_default() + From 9b916093e43e192c0f4f2bc7a8b5cab817eebea8 Mon Sep 17 00:00:00 2001 From: "mjt@mjturner.co.uk" Date: Sun, 2 Sep 2018 23:06:18 +0100 Subject: [PATCH 26/89] Orbs Game --- orbs/main.py | 144 ++++++++++++++++++++++++++++++ orbs/umqtt/robust.py | 43 +++++++++ orbs/umqtt/simple.py | 204 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 391 insertions(+) create mode 100644 orbs/main.py create mode 100644 orbs/umqtt/robust.py create mode 100644 orbs/umqtt/simple.py diff --git a/orbs/main.py b/orbs/main.py new file mode 100644 index 0000000..1fe5929 --- /dev/null +++ b/orbs/main.py @@ -0,0 +1,144 @@ +___name___ = "Orbs Game" +___license___ = "MIT" +___dependencies___ = ["app", "dialogs", "sim800", "ugfx_helper"] +___categories___ = ["Games"] +___bootstrapped___ = True + +from app import * +from dialogs import * +import utime +import ugfx +import ugfx_helper +from orbs.umqtt.simple import MQTTClient +import network +from machine import mem32 +wlan=network.WLAN() +if not wlan.isconnected(): + import wifi + wifi.connect() + +ugfx_helper.init() +ugfx.clear() +broker='151.216.207.139' +mqtt_username='orbs' +mqtt_password='orbs123' +scoretext="" + +MACAddress=str(mem32[0x400fef20]) + str(mem32[0x400fef24]) + str(mem32[0x400fef28]) + str(mem32[0x400fef2C]) +regOK=False +regFAILED=False + +def mqtt_connect(): + client = MQTTClient(MACAddress,broker, user=mqtt_username, password=mqtt_password) + client.set_callback(sub_cb) + connected=False + try: + client.connect() + connected=True + except Exception as err: + connected=False + if (connected): + return client + else: + return False + +def sub_cb(topic,msg): + global regOK + global regFAILED + global scoretext + try: + (t1,t2,t3,targetBadge,messageType)=topic.decode('utf-8').split('/') + strmsg=msg.decode('utf-8') + if messageType=="regok": + regOK=True + if messageType=="regerror": + regFAILED=True + if messageType=="scores": + scoretext=msg + except: + return + + +def update_token(token): + lb=open("token.txt","w") + lb.write(token) + lb.close() + +def do_gettoken(): + notice("Enter your RFID token ID digits only. Get it right!", title="Orbs Game") + token=prompt_text("Enter token:") + if len(token)==8 or len(token)==14 or len(token)==20: + return token + else: + notice("Invalid token", title="Orbs Game") + return "" + +def do_register(client): + playername=prompt_text("Enter name:") + playername=playername.replace(",",".") + regOK==False + regFAILED==False + if len(playername)>3: + client.publish("/registration/from/" + MACAddress + "/name",mytoken + "," + playername) + notice("Name request sent") + client.check_msg() + if regOK==True: + notice("Registration completed") + if regFAILED==True: + notice("Registration failed") + else: + notice("Name too short") + +def get_token(): + try: + lb=open("token.txt","r") + token=lb.readline() + lb.close() + if token=="": + token=do_gettoken() + except: + token="" + if token=="": + token=do_gettoken() + return token + +def do_showscores(client): + client.publish("/registration/from/" + MACAddress + "/score",mytoken) + notice("Requested scores") + client.check_msg() + if len(scoretext)>0: + (playername,playerscore,rank,redscore,greenscore,bluescore)=scoretext.decode('utf-8').split(',') + notice("Player: " + playername + chr(13) + "Score: " + playerscore + chr(13) + "Rank: " + rank) + notice("Red Score: " + redscore + chr(13) + "Green Score: " + greenscore + chr(13) + "Blue Score: " + bluescore) + else: + notice("Failed to get scores") + +mqttclient=mqtt_connect() +while (not mqttclient): + utime.sleep(2) + mqttclient=mqtt_connect() +mqttclient.subscribe(topic='/badge/to/' + MACAddress + '/#') +#mqttclient.subscribe(topic='/scoreboard/to/all/#') +mytoken=get_token() +if len(mytoken)==0: + notice("Token required",title="Orbs Game") + try: + mqttclient.close() + except: + restart_to_default() + restart_to_default() +update_token(mytoken) + + +menuset = [] +menuset.append({ "title" : "Register", "index" : 1 }) +menuset.append({ "title" : "Scores", "index" : 2 }) + +while True: + selection = prompt_option(menuset, text="Orbs Game", select_text="Select", none_text="Exit") + if (not selection): + restart_to_default() + elif (selection["index"]==1): + do_register(mqttclient) + elif (selection["index"]==2): + do_showscores(mqttclient) diff --git a/orbs/umqtt/robust.py b/orbs/umqtt/robust.py new file mode 100644 index 0000000..7ee40e0 --- /dev/null +++ b/orbs/umqtt/robust.py @@ -0,0 +1,43 @@ +import utime +from . import simple + +class MQTTClient(simple.MQTTClient): + + DELAY = 2 + DEBUG = False + + def delay(self, i): + utime.sleep(self.DELAY) + + def log(self, in_reconnect, e): + if self.DEBUG: + if in_reconnect: + print("mqtt reconnect: %r" % e) + else: + print("mqtt: %r" % e) + + def reconnect(self): + i = 0 + while 1: + try: + return super().connect(False) + except OSError as e: + self.log(True, e) + i += 1 + self.delay(i) + + def publish(self, topic, msg, retain=False, qos=0): + while 1: + try: + return super().publish(topic, msg, retain, qos) + except OSError as e: + self.log(False, e) + self.reconnect() + + def wait_msg(self): + while 1: + try: + return super().wait_msg() + except OSError as e: + self.log(False, e) + self.reconnect() diff --git a/orbs/umqtt/simple.py b/orbs/umqtt/simple.py new file mode 100644 index 0000000..8216fa5 --- /dev/null +++ b/orbs/umqtt/simple.py @@ -0,0 +1,204 @@ +import usocket as socket +import ustruct as struct +from ubinascii import hexlify + +class MQTTException(Exception): + pass + +class MQTTClient: + + def __init__(self, client_id, server, port=0, user=None, password=None, keepalive=0, + ssl=False, ssl_params={}): + if port == 0: + port = 8883 if ssl else 1883 + self.client_id = client_id + self.sock = None + self.server = server + self.port = port + self.ssl = ssl + self.ssl_params = ssl_params + self.pid = 0 + self.cb = None + self.user = user + self.pswd = password + self.keepalive = keepalive + self.lw_topic = None + self.lw_msg = None + self.lw_qos = 0 + self.lw_retain = False + + def _send_str(self, s): + self.sock.write(struct.pack("!H", len(s))) + self.sock.write(s) + + def _recv_len(self): + n = 0 + sh = 0 + while 1: + b = self.sock.read(1)[0] + n |= (b & 0x7f) << sh + if not b & 0x80: + return n + sh += 7 + + def set_callback(self, f): + self.cb = f + + def set_last_will(self, topic, msg, retain=False, qos=0): + assert 0 <= qos <= 2 + assert topic + self.lw_topic = topic + self.lw_msg = msg + self.lw_qos = qos + self.lw_retain = retain + + def connect(self, clean_session=True): + self.sock = socket.socket() + addr = socket.getaddrinfo(self.server, self.port)[0][-1] + self.sock.connect(addr) + if self.ssl: + import ussl + self.sock = ussl.wrap_socket(self.sock, **self.ssl_params) + premsg = bytearray(b"\x10\0\0\0\0\0") + msg = bytearray(b"\x04MQTT\x04\x02\0\0") + + sz = 10 + 2 + len(self.client_id) + msg[6] = clean_session << 1 + if self.user is not None: + sz += 2 + len(self.user) + 2 + len(self.pswd) + msg[6] |= 0xC0 + if self.keepalive: + assert self.keepalive < 65536 + msg[7] |= self.keepalive >> 8 + msg[8] |= self.keepalive & 0x00FF + if self.lw_topic: + sz += 2 + len(self.lw_topic) + 2 + len(self.lw_msg) + msg[6] |= 0x4 | (self.lw_qos & 0x1) << 3 | (self.lw_qos & 0x2) << 3 + msg[6] |= self.lw_retain << 5 + + i = 1 + while sz > 0x7f: + premsg[i] = (sz & 0x7f) | 0x80 + sz >>= 7 + i += 1 + premsg[i] = sz + + self.sock.write(premsg, i + 2) + self.sock.write(msg) + #print(hex(len(msg)), hexlify(msg, ":")) + self._send_str(self.client_id) + if self.lw_topic: + self._send_str(self.lw_topic) + self._send_str(self.lw_msg) + if self.user is not None: + self._send_str(self.user) + self._send_str(self.pswd) + resp = self.sock.read(4) + assert resp[0] == 0x20 and resp[1] == 0x02 + if resp[3] != 0: + raise MQTTException(resp[3]) + return resp[2] & 1 + + def disconnect(self): + self.sock.write(b"\xe0\0") + self.sock.close() + + def ping(self): + self.sock.write(b"\xc0\0") + + def publish(self, topic, msg, retain=False, qos=0): + pkt = bytearray(b"\x30\0\0\0") + pkt[0] |= qos << 1 | retain + sz = 2 + len(topic) + len(msg) + if qos > 0: + sz += 2 + assert sz < 2097152 + i = 1 + while sz > 0x7f: + pkt[i] = (sz & 0x7f) | 0x80 + sz >>= 7 + i += 1 + pkt[i] = sz + #print(hex(len(pkt)), hexlify(pkt, ":")) + self.sock.write(pkt, i + 1) + self._send_str(topic) + if qos > 0: + self.pid += 1 + pid = self.pid + struct.pack_into("!H", pkt, 0, pid) + self.sock.write(pkt, 2) + self.sock.write(msg) + if qos == 1: + while 1: + op = self.wait_msg() + if op == 0x40: + sz = self.sock.read(1) + assert sz == b"\x02" + rcv_pid = self.sock.read(2) + rcv_pid = rcv_pid[0] << 8 | rcv_pid[1] + if pid == rcv_pid: + return + elif qos == 2: + assert 0 + + def subscribe(self, topic, qos=0): + assert self.cb is not None, "Subscribe callback is not set" + pkt = bytearray(b"\x82\0\0\0") + self.pid += 1 + struct.pack_into("!BH", pkt, 1, 2 + 2 + len(topic) + 1, self.pid) + #print(hex(len(pkt)), hexlify(pkt, ":")) + self.sock.write(pkt) + self._send_str(topic) + self.sock.write(qos.to_bytes(1, "little")) + while 1: + op = self.wait_msg() + if op == 0x90: + resp = self.sock.read(4) + #print(resp) + assert resp[1] == pkt[2] and resp[2] == pkt[3] + if resp[3] == 0x80: + raise MQTTException(resp[3]) + return + + # Wait for a single incoming MQTT message and process it. + # Subscribed messages are delivered to a callback previously + # set by .set_callback() method. Other (internal) MQTT + # messages processed internally. + def wait_msg(self): + res = self.sock.read(1) + self.sock.setblocking(True) + if res is None: + return None + if res == b"": + raise OSError(-1) + if res == b"\xd0": # PINGRESP + sz = self.sock.read(1)[0] + assert sz == 0 + return None + op = res[0] + if op & 0xf0 != 0x30: + return op + sz = self._recv_len() + topic_len = self.sock.read(2) + topic_len = (topic_len[0] << 8) | topic_len[1] + topic = self.sock.read(topic_len) + sz -= topic_len + 2 + if op & 6: + pid = self.sock.read(2) + pid = pid[0] << 8 | pid[1] + sz -= 2 + msg = self.sock.read(sz) + self.cb(topic, msg) + if op & 6 == 2: + pkt = bytearray(b"\x40\x02\0\0") + struct.pack_into("!H", pkt, 2, pid) + self.sock.write(pkt) + elif op & 6 == 4: + assert 0 + + # Checks whether a pending message from server is available. + # If not, returns immediately with None. Otherwise, does + # the same processing as wait_msg. + def check_msg(self): + self.sock.setblocking(False) + return self.wait_msg() From f2f352bed7817a6f8cbd86bc31fe39f26d1fceda Mon Sep 17 00:00:00 2001 From: "mjt@mjturner.co.uk" Date: Sun, 2 Sep 2018 23:17:14 +0100 Subject: [PATCH 27/89] Orbs Game --- orbs/main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/orbs/main.py b/orbs/main.py index 1fe5929..6ea7332 100644 --- a/orbs/main.py +++ b/orbs/main.py @@ -1,3 +1,6 @@ +""" +Orbs Game: Set your name and see the scores +""" ___name___ = "Orbs Game" ___license___ = "MIT" ___dependencies___ = ["app", "dialogs", "sim800", "ugfx_helper"] From 4ff0aa12f534804e1983c1475133bd4d23857a0d Mon Sep 17 00:00:00 2001 From: "mjt@mjturner.co.uk" Date: Sun, 2 Sep 2018 23:26:02 +0100 Subject: [PATCH 28/89] Orbs Game --- orbs/main.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/orbs/main.py b/orbs/main.py index 6ea7332..8b52d9a 100644 --- a/orbs/main.py +++ b/orbs/main.py @@ -15,10 +15,8 @@ import ugfx_helper from orbs.umqtt.simple import MQTTClient import network from machine import mem32 -wlan=network.WLAN() -if not wlan.isconnected(): - import wifi - wifi.connect() +import wifi +wifi.connect() ugfx_helper.init() ugfx.clear() From f19cffd3071fdf04cd65abc59d1d7213837804c4 Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 23:36:19 +0100 Subject: [PATCH 29/89] Added a selection of flags the user can switch between. --- pride/main.py | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/pride/main.py b/pride/main.py index 10ba428..ac45e3d 100644 --- a/pride/main.py +++ b/pride/main.py @@ -7,12 +7,14 @@ background is the pride flag. ___name___ = "Pride" ___license___ = "MIT" ___categories___ = ["Homescreens"] -___dependencies___ = ["homescreen", "app"] +___dependencies___ = ["homescreen", "app", "buttons"] from app import restart_to_default import ugfx import homescreen +from tilda import Buttons +import buttons homescreen.init() @@ -25,13 +27,19 @@ info_height = 20 # Maximum length of name before downscaling max_name = 8 -# Orientation for other people to see -ugfx.orientation(90) +flags = { + 'LGBT': [0xE70000, 0xFF8C00, 0xFFEF00, 0x00811F, 0x0044FF, 0x760089], + 'Non-Binary': [0xFFF433, 0xFFFFFF, 0x9B59D0, 0x000000], + 'Trans': [0x5BCEFA, 0xF5A9B8, 0xFFFFFF, 0xF5A9B8, 0x5BCEFA], + 'Asexual': [0x000000, 0xA3A3A3, 0xFFFFFF, 0x800080], + 'Bisexual': [0xFF0080, 0xFF0080, 0xA349A4, 0x0000FF, 0x0000FF], + 'Pansexual': [0xFF218E, 0xFCD800, 0x0194FC] +} -def draw_flag(): - # Pride flag colours - colours = [0xE70000, 0xFF8C00, 0xFFEF00, 0x00811F, 0x0044FF, 0x760089] +def draw_flag(colours): + # Orientation for other people to see + ugfx.orientation(90) # Draw each "band" of colour in the flag colour_width = ugfx.width() / len(colours) @@ -76,13 +84,36 @@ def draw_user_info(): ugfx.text(0, ugfx.height() - info_height, battery_message, ugfx.BLACK) -draw_flag() -draw_name() +# Set variables for WiFi/Battery loop +selection_change = True +flag_names = list(flags.keys()) +selection = flag_names.index('LGBT') # WiFi/Battery update loop +draw_name() while True: - draw_user_info() + # Buttons will cycle when it reaches either side of the list + if buttons.is_pressed(Buttons.JOY_Left): + if selection > 0: + selection -= 1 + else: + selection = len(flags) - 1 + selection_change = True + elif buttons.is_pressed(Buttons.JOY_Right): + if selection < len(flags) - 1: + selection += 1 + else: + selection = 0 + selection_change = True + + # Only triggers if the selection has changed + if selection_change: + draw_flag(flags[flag_names[selection]]) + selection_change = False + + # Redraw time-sensitive info on each iteration + draw_user_info() homescreen.sleep_or_exit(1.5) restart_to_default() From 229f09acd4a84988494bdb4e100761ee6394e12d Mon Sep 17 00:00:00 2001 From: MisguidedEmails Date: Sun, 2 Sep 2018 23:42:55 +0100 Subject: [PATCH 30/89] Only render the flag where it's visible. We now don't have to re-render the name on each flag change. --- pride/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pride/main.py b/pride/main.py index ac45e3d..3caefaa 100644 --- a/pride/main.py +++ b/pride/main.py @@ -45,7 +45,8 @@ def draw_flag(colours): colour_width = ugfx.width() / len(colours) for num, colour in enumerate(colours): width_loc = int(num * colour_width) - ugfx.area(width_loc, 0, int(colour_width), 320, ugfx.html_color(colour)) + flag_height = ugfx.height() - (name_height + info_height) + ugfx.area(width_loc, info_height, int(colour_width), flag_height, ugfx.html_color(colour)) def draw_name(): From 4fb521ece9c2edad78980335045f77d14956738c Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Mon, 3 Sep 2018 02:48:27 +0100 Subject: [PATCH 31/89] start with the correct rotation --- nyan/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nyan/main.py b/nyan/main.py index 3e13445..da0dba8 100644 --- a/nyan/main.py +++ b/nyan/main.py @@ -28,7 +28,7 @@ ugfx.clear(ugfx.BLACK) ugfx.backlight(100) n = 0 -r = 90 +r = 270 while True: ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) n = (n+2) % 12 From dd019601c50d8353b6ee11c3d8d8dff0a2030e32 Mon Sep 17 00:00:00 2001 From: Steveis Date: Mon, 3 Sep 2018 08:35:26 +0100 Subject: [PATCH 32/89] Add pybcdc.inf to root as per readme.txt --- pybcdc.inf | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 pybcdc.inf diff --git a/pybcdc.inf b/pybcdc.inf new file mode 100644 index 0000000..2b8c09a --- /dev/null +++ b/pybcdc.inf @@ -0,0 +1,92 @@ +; Windows USB CDC ACM Setup File +; Based on INF files which were: +; Copyright (c) 2000 Microsoft Corporation +; Copyright (C) 2007 Microchip Technology Inc. +; Likely to be covered by the MLPL as found at: +; . + +[Version] +Signature="$Windows NT$" +Class=Ports +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Provider=%MFGNAME% +LayoutFile=layout.inf +DriverVer=03/11/2010,5.1.2600.3 + +[Manufacturer] +%MFGNAME%=DeviceList, NTamd64 + +[DestinationDirs] +DefaultDestDir=12 + +;--------------------------------------------------------------------- +; Windows 2000/XP/Server2003/Vista/Server2008/7 - 32bit Sections + +[DriverInstall.nt] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.nt +AddReg=DriverInstall.nt.AddReg + +[DriverCopyFiles.nt] +usbser.sys,,,0x20 + +[DriverInstall.nt.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.nt.Services] +AddService=usbser, 0x00000002, DriverService.nt + +[DriverService.nt] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\usbser.sys + +;--------------------------------------------------------------------- +; Windows XP/Server2003/Vista/Server2008/7 - 64bit Sections + +[DriverInstall.NTamd64] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.NTamd64 +AddReg=DriverInstall.NTamd64.AddReg + +[DriverCopyFiles.NTamd64] +usbser.sys,,,0x20 + +[DriverInstall.NTamd64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTamd64.Services] +AddService=usbser, 0x00000002, DriverService.NTamd64 + +[DriverService.NTamd64] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\usbser.sys + +;--------------------------------------------------------------------- +; Vendor and Product ID Definitions + +[SourceDisksFiles] +[SourceDisksNames] +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_f055&PID_9800&MI_00, USB\VID_f055&PID_9800&MI_01 + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_f055&PID_9800&MI_00, USB\VID_f055&PID_9800&MI_01 + +;--------------------------------------------------------------------- +; String Definitions + +[Strings] +MFGFILENAME="pybcdc" +MFGNAME="Micro Python" +DESCRIPTION="Pyboard USB Comm Port" +SERVICE="USB Serial Driver" From fc65172eafcc740342740be671f155c39c34fd48 Mon Sep 17 00:00:00 2001 From: Jake Walker Date: Mon, 3 Sep 2018 14:59:37 +0100 Subject: [PATCH 33/89] Add ___title___ to all apps --- 3dspin/main.py | 2 +- LED_Party/main.py | 2 +- avatar/main.py | 2 +- badgesimulator/main.py | 2 +- basic_clock/main.py | 3 ++- beer/main.py | 2 +- breakout/main.py | 2 +- btscan/main.py | 2 +- custom_image_home/main.py | 2 +- dowsingrod/main.py | 2 +- emfcampqueer_home/main.py | 2 +- enby/main.py | 2 +- game-of-life/main.py | 2 +- hello_world/main.py | 2 +- holland/main.py | 6 +++--- home_default/main.py | 2 +- home_ham/main.py | 2 +- home_stratum0/main.py | 2 +- home_trans/main.py | 2 +- launcher/main.py | 2 +- lobstervision/main.py | 2 +- lucky_melody_machine/main.py | 2 +- mario/main.py | 2 +- mass_storage/main.py | 2 +- memobadge/main.py | 2 +- party/main.py | 2 +- phone/main.py | 2 +- pride/main.py | 2 +- review_helper/main.py | 2 +- screendisco/main.py | 2 +- sequencer/main.py | 2 +- settings/main.py | 2 +- sms/main.py | 2 +- snake/main.py | 2 +- sponsors/main.py | 2 +- square_home/main.py | 2 +- star_wars/main.py | 2 +- stories/main.py | 2 +- synth/main.py | 2 +- sysinfo/main.py | 2 +- tildatorch/main.py | 2 +- tildr/main.py | 2 +- tinda/main.py | 2 +- warm_and_wet/main.py | 2 +- 44 files changed, 47 insertions(+), 46 deletions(-) diff --git a/3dspin/main.py b/3dspin/main.py index 4cff9f8..268fd12 100644 --- a/3dspin/main.py +++ b/3dspin/main.py @@ -1,6 +1,6 @@ """3d rotating polyhedra. 2016 badge competition winner, ported for 2018!""" -___name___ = "3D Spin" +___title___ = "3D Spin" ___license___ = "MIT" ___categories___ = ["Demo"] ___dependencies___ = ["app", "ugfx_helper", "random", "sleep", "buttons"] diff --git a/LED_Party/main.py b/LED_Party/main.py index a6c508d..e144681 100644 --- a/LED_Party/main.py +++ b/LED_Party/main.py @@ -1,6 +1,6 @@ """ starts an LED party on your badge """ -___name___ = "LED Party (Party Party)" +___title___ = "LED Party (Party Party)" ___license___ = "MIT" ___dependencies___ = ["wifi", "http", "ugfx_helper", "sleep"] ___categories___ = ["LEDs"] diff --git a/avatar/main.py b/avatar/main.py index e88fe6a..ddf021f 100644 --- a/avatar/main.py +++ b/avatar/main.py @@ -1,6 +1,6 @@ """A simple homescreen diplaying an avatar from an url and the user's name""" -___name___ = "Avatar Homescreen" +___title___ = "Avatar Homescreen" ___license___ = "WTFPL" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "wifi", "http", "sleep", "app", "buttons"] diff --git a/badgesimulator/main.py b/badgesimulator/main.py index ccfc8a4..33b0bd7 100644 --- a/badgesimulator/main.py +++ b/badgesimulator/main.py @@ -1,6 +1,6 @@ """This app creates a real EMF badge experience""" -___name___ = "EMF 2018 badge simulator" +___title___ = "EMF 2018 badge simulator" ___license___ = "MIT" ___categories___ = ["EMF"] ___dependencies___ = ["sleep", "app"] diff --git a/basic_clock/main.py b/basic_clock/main.py index 7d2b8b4..3ed86b6 100644 --- a/basic_clock/main.py +++ b/basic_clock/main.py @@ -1,5 +1,6 @@ """An NTP time app""" -___name___ = "NTP time" + +___title___ = "NTP time" ___license___ = "MIT" ___dependencies___ = ["ntp", "wifi", "app"] ___categories___ = ["EMF"] diff --git a/beer/main.py b/beer/main.py index 92c3d4f..78c894d 100644 --- a/beer/main.py +++ b/beer/main.py @@ -2,7 +2,7 @@ Get up to date information on what's in stock at The Robot Arms! """ -___name___ = "beer" +___title___ = "beer" ___license___ = "MIT" ___dependencies___ = ["app", "sleep", "wifi", "http", "ugfx_helper"] ___categories___ = ["EMF"] diff --git a/breakout/main.py b/breakout/main.py index 5829ec4..ae76d63 100644 --- a/breakout/main.py +++ b/breakout/main.py @@ -1,6 +1,6 @@ """Breakout!""" -___name___ = "Breakout" +___title___ = "Breakout" ___license___ = "MIT" ___categories___ = ["Games"] ___dependencies___ = ["app", "ugfx_helper", "random", "buttons"] diff --git a/btscan/main.py b/btscan/main.py index 787e227..bf72955 100644 --- a/btscan/main.py +++ b/btscan/main.py @@ -1,6 +1,6 @@ """Scan for and display nearby bluetooth devices""" -___name___ = "Bluetooth Scan" +___title___ = "Bluetooth Scan" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "sim800"] ___categories___ = ["Other", "System"] diff --git a/custom_image_home/main.py b/custom_image_home/main.py index b6f475a..a4877cb 100644 --- a/custom_image_home/main.py +++ b/custom_image_home/main.py @@ -3,7 +3,7 @@ Clone of the default homescreen for the Tilda Mk4. Shows the EMF homescreen and a picture loaded on the badge alternately. """ -___name___ = "Custom Image Home" +___title___ = "Custom Image Home" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "shared/logo.png", "shared/sponsors.png"] diff --git a/dowsingrod/main.py b/dowsingrod/main.py index 2305417..e2cc1cc 100644 --- a/dowsingrod/main.py +++ b/dowsingrod/main.py @@ -1,6 +1,6 @@ """This is a dowsing rod for WiFi APs""" -___name___ = "Dowsing Rod" +___title___ = "Dowsing Rod" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "wifi", "sim800"] ___categories___ = ["EMF", "System"] diff --git a/emfcampqueer_home/main.py b/emfcampqueer_home/main.py index 742eca4..5e6340e 100644 --- a/emfcampqueer_home/main.py +++ b/emfcampqueer_home/main.py @@ -2,7 +2,7 @@ emfcampqueer theme by ganbariley """ -___name___ = "EMFCamp Rainbow Homescreen" +___title___ = "EMFCamp Rainbow Homescreen" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen"] diff --git a/enby/main.py b/enby/main.py index de07335..a68cca3 100644 --- a/enby/main.py +++ b/enby/main.py @@ -4,7 +4,7 @@ Similar to the default homescreen, but the background is the enby flag. Based on Pride Flag Homescreen by marekventur """ -___name___ = "Enby" +___title___ = "Enby" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "app"] diff --git a/game-of-life/main.py b/game-of-life/main.py index 7af9a36..b3bb903 100644 --- a/game-of-life/main.py +++ b/game-of-life/main.py @@ -1,6 +1,6 @@ """Game of Life""" -___name___ = "Conway game of life" +___title___ = "Conway game of life" ___license___ = "MIT" ___categories___ = ["Games"] ___dependencies___ = ["app", "ugfx_helper", "random", "sleep", "buttons"] diff --git a/hello_world/main.py b/hello_world/main.py index 7cdd174..3afdddd 100644 --- a/hello_world/main.py +++ b/hello_world/main.py @@ -1,6 +1,6 @@ """This is a simple hello world app""" -___name___ = "Hello World" +___title___ = "Hello World" ___license___ = "MIT" ___dependencies___ = ["sleep", "app"] ___categories___ = ["EMF"] diff --git a/holland/main.py b/holland/main.py index dedb8d0..86a3552 100644 --- a/holland/main.py +++ b/holland/main.py @@ -1,6 +1,6 @@ -"""Camp Holland app -""" -___name___ = "Holland" +"""Camp Holland app""" + +___title___ = "Holland" ___license___ = "MIT" ___dependencies___ = ["app", "sim800", "ugfx_helper"] ___categories___ = ["Villages"] diff --git a/home_default/main.py b/home_default/main.py index e358791..263aa4d 100644 --- a/home_default/main.py +++ b/home_default/main.py @@ -5,7 +5,7 @@ It gets automatically installed when a badge is newly activated or reset. """ -___name___ = "Homescreen (Default)" +___title___ = "Homescreen (Default)" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "shared/logo.png", "shared/sponsors.png"] diff --git a/home_ham/main.py b/home_ham/main.py index 69dfadb..e471545 100644 --- a/home_ham/main.py +++ b/home_ham/main.py @@ -3,7 +3,7 @@ This is a modified version of the default homescreen that allows you to set a callsign """ -___name___ = "Amateur Radio Homescreen" +___title___ = "Amateur Radio Homescreen" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen"] diff --git a/home_stratum0/main.py b/home_stratum0/main.py index c39f74b..053fbbd 100644 --- a/home_stratum0/main.py +++ b/home_stratum0/main.py @@ -3,7 +3,7 @@ This is the Stratum 0 flavored homescreen for the Tilda Mk4. """ -___name___ = "Homescreen (Stratum 0)" +___title___ = "Homescreen (Stratum 0)" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen"] diff --git a/home_trans/main.py b/home_trans/main.py index 1b2bead..fe3fcbe 100644 --- a/home_trans/main.py +++ b/home_trans/main.py @@ -5,7 +5,7 @@ Press 0 to go back to normal or 8 to show the flag. Hold * to activate all LEDs for use as a torch. """ -___name___ = "Homescreen (Trans)" +___title___ = "Homescreen (Trans)" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "shared/logo.png"] diff --git a/launcher/main.py b/launcher/main.py index 1fa4585..a5fe98e 100644 --- a/launcher/main.py +++ b/launcher/main.py @@ -1,6 +1,6 @@ """Launcher for apps currently installed""" -___name___ = "Launcher" +___title___ = "Launcher" ___license___ = "MIT" ___categories___ = ["System"] ___dependencies___ = ["dialogs", "app", "ugfx_helper"] diff --git a/lobstervision/main.py b/lobstervision/main.py index 947132c..811c9ce 100644 --- a/lobstervision/main.py +++ b/lobstervision/main.py @@ -1,6 +1,6 @@ """View images from the EMF 2018 time-lapse camera """ -___name___ = "Lobster Vision" +___title___ = "Lobster Vision" ___license___ = "MIT" ___dependencies___ = ["app", "dialogs", "wifi", "buttons", "http", "ugfx_helper"] ___categories___ = ["Other"] diff --git a/lucky_melody_machine/main.py b/lucky_melody_machine/main.py index a98e1b1..6200ab1 100644 --- a/lucky_melody_machine/main.py +++ b/lucky_melody_machine/main.py @@ -2,7 +2,7 @@ Learn your personal lucky melody. """ -___name___ = "lucky_melody_machine" +___title___ = "Lucky Melody Machine" ___license___ = "WTFPL" ___dependencies___ = ["app", "buttons", "dialogs", "speaker", "sleep", "ugfx_helper"] ___categories___ = ["Sound"] diff --git a/mario/main.py b/mario/main.py index 2dcd37d..92d8173 100644 --- a/mario/main.py +++ b/mario/main.py @@ -5,7 +5,7 @@ Gracefully reboot into main menu on Menu Press. Replay Track when user pushes a button. """ -___name___ = "Mario Theme" +___title___ = "Mario Theme" ___license___ = "" ___categories___ = ["Sound"] ___dependencies___ = ["speaker", "buttons", "ugfx_helper", "app", "wifi", "http", "sleep" ] diff --git a/mass_storage/main.py b/mass_storage/main.py index aa88772..0cee259 100644 --- a/mass_storage/main.py +++ b/mass_storage/main.py @@ -1,6 +1,6 @@ """Enables mass storage mode in a safe way""" -___name___ = "Mass Storage Enabler" +___title___ = "Mass Storage Enabler" ___license___ = "MIT" ___dependencies___ = ["dialogs", "ugfx_helper"] ___categories___ = ["EMF"] diff --git a/memobadge/main.py b/memobadge/main.py index fe79a11..c797f72 100644 --- a/memobadge/main.py +++ b/memobadge/main.py @@ -1,6 +1,6 @@ """This app tests all the onboard sensors and system info""" -___name___ = "Memobadge" +___title___ = "Memobadge" ___license___ = "MIT" ___dependencies___ = ["app", "sim800", "sleep", "ugfx_helper"] ___categories___ = ["Sound"] diff --git a/party/main.py b/party/main.py index b6c7687..708e5a6 100644 --- a/party/main.py +++ b/party/main.py @@ -2,7 +2,7 @@ ''' ___author___ = 'Skybound - ECS' -___name___ = 'Party' +___title___ = 'Party' ___license___ = 'MIT' ___categories___ = ['LEDs'] ___bootstrapped___ = False diff --git a/phone/main.py b/phone/main.py index d6087bf..137766b 100644 --- a/phone/main.py +++ b/phone/main.py @@ -1,6 +1,6 @@ """Phone app for baic calling functions """ -___name___ = "Phone" +___title___ = "Phone" ___license___ = "MIT" ___dependencies___ = ["app", "dialogs", "sim800", "ugfx_helper"] ___categories___ = ["System"] diff --git a/pride/main.py b/pride/main.py index 240fa44..96515b8 100644 --- a/pride/main.py +++ b/pride/main.py @@ -4,7 +4,7 @@ Similar to the default homescreen, but the background is the pride flag. """ -___name___ = "Pride" +___title___ = "Pride" ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "app"] diff --git a/review_helper/main.py b/review_helper/main.py index 8a799dc..db21e2a 100644 --- a/review_helper/main.py +++ b/review_helper/main.py @@ -1,6 +1,6 @@ """Helps to test incoming PRs""" -___name___ = "PR Review Helper" +___title___ = "PR Review Helper" ___license___ = "MIT" ___categories___ = ["System"] ___dependencies___ = ["dialogs", "app", "ugfx_helper", "badge_store", "http", "stack_nav", "wifi"] diff --git a/screendisco/main.py b/screendisco/main.py index 0615914..2bb8a70 100644 --- a/screendisco/main.py +++ b/screendisco/main.py @@ -1,7 +1,7 @@ """ Flashes random colours on your screen "" By Pez (@Pezmc) """ -___name___ = "Screen Party" +___title___ = "Screen Party" ___license___ = "MIT" ___dependencies___ = ["ugfx_helper", "sleep", "random"] ___categories___ = ["Homescreens"] diff --git a/sequencer/main.py b/sequencer/main.py index 987b95d..b9746d3 100644 --- a/sequencer/main.py +++ b/sequencer/main.py @@ -3,7 +3,7 @@ Annoy your friends! Annoy your enemies! Annoy yourself! Maybe (maybe) make music! """ -___name___ = "Sequencer" +___title___ = "Sequencer" ___license___ = "MIT" ___categories___ = ["Sound"] ___dependencies___ = ["speaker", "buttons", "ugfx_helper", "app", "shared/sequencer_info.png"] diff --git a/settings/main.py b/settings/main.py index d7b80a4..ab344e2 100644 --- a/settings/main.py +++ b/settings/main.py @@ -11,7 +11,7 @@ Todo: """ -___name___ = "Settings" +___title___ = "Settings" ___license___ = "MIT" ___dependencies___ = ["dialogs", "ugfx_helper", "database", "app", "stack_nav", "wifi"] ___categories___ = ["System"] diff --git a/sms/main.py b/sms/main.py index ba61523..c1e0211 100644 --- a/sms/main.py +++ b/sms/main.py @@ -1,6 +1,6 @@ """SMS app for reading and sending messages """ -___name___ = "SMS" +___title___ = "SMS" ___license___ = "MIT" ___dependencies___ = ["app", "dialogs", "sim800", "ugfx_helper"] ___categories___ = ["System"] diff --git a/snake/main.py b/snake/main.py index 13761e8..6454cad 100644 --- a/snake/main.py +++ b/snake/main.py @@ -1,6 +1,6 @@ """Snake!""" -___name___ = "Snake" +___title___ = "Snake" ___license___ = "MIT" ___categories___ = ["Games"] ___dependencies___ = ["dialogs", "app", "ugfx_helper", "random", "sleep", "buttons"] diff --git a/sponsors/main.py b/sponsors/main.py index 759aec8..5f8a5b1 100644 --- a/sponsors/main.py +++ b/sponsors/main.py @@ -1,6 +1,6 @@ """A big "thank you" to all our Sponsors who made this year's badge possible!""" -___name___ = "Sponsors" +___title___ = "Sponsors" ___license___ = "MIT" ___dependencies___ = ["wifi", "http", "ugfx_helper", "sleep", "app"] ___categories___ = ["EMF"] diff --git a/square_home/main.py b/square_home/main.py index 0a50b29..f948086 100644 --- a/square_home/main.py +++ b/square_home/main.py @@ -1,6 +1,6 @@ """A home screen with squares that spin""" -___name___ = "Squares home" +___title___ = "Squares home" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "ugfx_helper", "buttons", "homescreen"] ___categories___ = ["Homescreens"] diff --git a/star_wars/main.py b/star_wars/main.py index a5a4ade..55209c8 100644 --- a/star_wars/main.py +++ b/star_wars/main.py @@ -3,7 +3,7 @@ Will play music, maybe """ -___name___ = "Play Music" +___title___ = "Star Wars Music" ___license___ = "MIT" ___categories___ = ["Sound"] ___dependencies___ = ["speaker", "shared/sw.png", "buttons"] diff --git a/stories/main.py b/stories/main.py index d019bd6..84445bf 100755 --- a/stories/main.py +++ b/stories/main.py @@ -1,6 +1,6 @@ """Read stories from twentythreemillionstories.org""" -___name___ = "twenty-three million stories" +___title___ = "twenty-three million stories" ___license___ = "MIT" ___categories___ = ["Other"] ___dependencies___ = [ "app", "dialogs", "http", "ugfx_helper", "sleep" ] diff --git a/synth/main.py b/synth/main.py index d73a822..8dfae8c 100644 --- a/synth/main.py +++ b/synth/main.py @@ -3,7 +3,7 @@ Todo: fix this, it doesn't work at at the moment """ -___name___ = "Synthesizers" +___title___ = "Synthesizers" ___license___ = "MIT" ___categories___ = ["Sound"] ___dependencies___ = ["speaker", "buttons", "ugfx_helper", "app"] diff --git a/sysinfo/main.py b/sysinfo/main.py index 54e53c4..e07584a 100644 --- a/sysinfo/main.py +++ b/sysinfo/main.py @@ -1,6 +1,6 @@ """This app tests all the onboard sensors and system info""" -___name___ = "System Info" +___title___ = "System Info" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "sim800"] ___categories___ = ["EMF", "System"] diff --git a/tildatorch/main.py b/tildatorch/main.py index 73bbcd2..5837bdd 100644 --- a/tildatorch/main.py +++ b/tildatorch/main.py @@ -1,6 +1,6 @@ """This app goes with the Torch Tutorial""" -___name___ = "Tilda Torch" +___title___ = "Tilda Torch" ___license___ = "MIT" ___dependencies___ = ["sleep", "app"] ___categories___ = ["EMF"] diff --git a/tildr/main.py b/tildr/main.py index 521095b..5006d31 100644 --- a/tildr/main.py +++ b/tildr/main.py @@ -1,6 +1,6 @@ """ Tildr Dating """ -___name___ = "Tildr Dating" +___title___ = "Tildr Dating" ___license___ = "MIT" ___dependencies___ = ["wifi", "http", "ugfx_helper", "sleep", "dialogs", "sim800", "database"] ___categories___ = ["Other"] diff --git a/tinda/main.py b/tinda/main.py index 7095b8c..b1bac7e 100644 --- a/tinda/main.py +++ b/tinda/main.py @@ -1,7 +1,7 @@ """ TiNDA: A dating app for TiLDA. Find your perfect EMF match! """ -___name___ = "tinda" +___title___ = "TiNDA" ___license___ = "WTFPL" ___dependencies___ = ["app", "buttons", "database", "dialogs", "http", "sleep", "ugfx_helper"] ___categories___ = ["Other", "EMF"] diff --git a/warm_and_wet/main.py b/warm_and_wet/main.py index 40fa4d3..6665c35 100644 --- a/warm_and_wet/main.py +++ b/warm_and_wet/main.py @@ -1,6 +1,6 @@ """ """ -___name___ = "my_app" +___title___ = "Warm and Wet" ___license___ = "MIT" ___dependencies___ = ["dialogs", "ugfx_helper", "app", "sleep"] ___categories___ = ["Other"] From db33131b1d008c239f6d45cdf5de29fa98820da1 Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Mon, 3 Sep 2018 21:34:32 +0100 Subject: [PATCH 34/89] make menu items numbered --- lib/dialogs.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/dialogs.py b/lib/dialogs.py index 86626b0..c32f201 100644 --- a/lib/dialogs.py +++ b/lib/dialogs.py @@ -182,11 +182,20 @@ def prompt_option(options, index=0, text = None, title=None, select_text="OK", n options_list = ugfx.List(5, list_y, ugfx.width() - 25, 260 - list_y, parent = window) options_list.disable_draw() + optnum = 1 for option in options: if isinstance(option, dict) and option["title"]: - options_list.add_item(option["title"]) + title = option["title"] else: - options_list.add_item(str(option)) + title = str(option) + + if optnum < 11: + # mod 10 to make 10th item numbered 0 + options_list.add_item("{}: {}".format((optnum % 10),title)) + else: + options_list.add_item(" {}".format(title)) + optnum = optnum + 1 + options_list.enable_draw() options_list.selected_index(index) From 736da656bc2784a0943f8108578a30f38325e4f9 Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Mon, 3 Sep 2018 23:16:04 +0100 Subject: [PATCH 35/89] Use system random instead of homebrew random --- lib/random.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/random.py b/lib/random.py index d072333..e0e2ec8 100644 --- a/lib/random.py +++ b/lib/random.py @@ -5,33 +5,32 @@ Warning! Don't use this for anything important, it's probably biased ___license___ = "MIT" -# todo: simplify this by using "urandom" -import os +try: + import urandom as sysrand +except ImportError: + import random as sysrand -_bigrand_bytes = 10 -_bigrand_max = pow(256, _bigrand_bytes) +# arbitrary: max is 32-bit +_bigrand_max = pow(2, 32) def _bigrand(): """generates a random number between 0 (incl) and _bigrand_max (excl)""" - base = 0 - for b in os.urandom(_bigrand_bytes): - base = (base << 8) + b - return base + return int(sysrand.getrandbits(32)) def random(): """Return the next random floating point number in the range [0.0, 1.0).""" - return _bigrand() / _bigrand_max + return sysrand.random() def randrange(start, stop=None): """Return a randomly selected element from range(start, stop)""" if stop is None: stop = start start = 0 - return start + (_bigrand() * (stop - start) // _bigrand_max) + return sysrand.randrange(start, stop) def randint(start, stop): """Return a random integer N such that a <= N <= b.""" - return randrange(start, stop + 1) + return sysrand.randint(start, stop) def shuffle(seq): """Shuffle the sequence x in place.""" From 6bad9c700f2c919041079780830c1a94962e8870 Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Mon, 3 Sep 2018 23:40:01 +0100 Subject: [PATCH 36/89] remove unreferenced _bigrand() function --- lib/random.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/random.py b/lib/random.py index e0e2ec8..76c324e 100644 --- a/lib/random.py +++ b/lib/random.py @@ -10,13 +10,6 @@ try: except ImportError: import random as sysrand -# arbitrary: max is 32-bit -_bigrand_max = pow(2, 32) - -def _bigrand(): - """generates a random number between 0 (incl) and _bigrand_max (excl)""" - return int(sysrand.getrandbits(32)) - def random(): """Return the next random floating point number in the range [0.0, 1.0).""" return sysrand.random() From f969b16afc8c443ff7c199bd55e092c0e5f26c44 Mon Sep 17 00:00:00 2001 From: Catalin Ursachi Date: Mon, 3 Sep 2018 23:43:00 +0100 Subject: [PATCH 37/89] Add warning prompt to mass_storage --- mass_storage/main.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/mass_storage/main.py b/mass_storage/main.py index aa88772..336ba11 100644 --- a/mass_storage/main.py +++ b/mass_storage/main.py @@ -11,12 +11,18 @@ import ugfx, tilda, ugfx_helper, dialogs, app, time ugfx_helper.init() ugfx.clear() -print("enabling USB storage...") -tilda.storage_enable_usb() -time.sleep(1) -print("DONE") -with dialogs.WaitingMessage(title="Mass Storage Enabled", text="You can now use the badge like a USB key.\nPlease safely eject afterwards. This app will close automatically."): - print("Waiting for USB mass storage to be unmounted...") - tilda.storage_disable_usb() +user_agreed = dialogs.prompt_boolean("Note: enabling mass storage is slightly risky, as the badge may end up factory " + "resetting even if you safely eject it. Do you want to continue?") + +if user_agreed: + print("enabling USB storage...") + tilda.storage_enable_usb() + time.sleep(1) print("DONE") + with dialogs.WaitingMessage(title="Mass Storage Enabled", text="You can now use the badge like a USB key.\nPlease safely eject afterwards. This app will close automatically."): + print("Waiting for USB mass storage to be unmounted...") + tilda.storage_disable_usb() + print("DONE") + app.restart_to_default() +else: app.restart_to_default() From ab1e6ad2bd3be01bb5f0a1026c5caff460221ed1 Mon Sep 17 00:00:00 2001 From: Catalin Ursachi Date: Tue, 4 Sep 2018 02:06:57 +0100 Subject: [PATCH 38/89] TILDR-1073 - Fix profile initialization --- tildr/profile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tildr/profile.py b/tildr/profile.py index f4d0fac..5692d0a 100644 --- a/tildr/profile.py +++ b/tildr/profile.py @@ -4,7 +4,7 @@ import database, ujson, sim800, dialogs, http def get_profile(): profile_json = database.get("tildr_profile") if profile_json is None: - return {} + return None profile = ujson.loads(profile_json) return profile From 1891ef659fc0455e29a1f2e76faa07363194d258 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 17:08:01 +0100 Subject: [PATCH 39/89] Improve installing status Also makes long app names not overflow title. --- badge_store/main.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index 0fa0a47..ec30904 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -58,11 +58,19 @@ def show_app(a): install = prompt_boolean(app_info["description"], title=a, true_text="Install", false_text="Back") if install: - with WaitingMessage(title="Installing %s" % a, text="Please wait...") as message: + app_text = "App:\n" + try: + app_text += app_info["title"] + '\n' + except: + pass + finally: + app_text += a + '\n\n' + + with WaitingMessage(title="Installing App...", text="%sGetting ready..." % app_text) as message: installers = store.install(_get_current_apps() + [a]) n = len(installers) for i, installer in enumerate(installers): - message.text = "%s (%s/%s)" % (installer.path, i + 1, n) + message.text = "%s%s (%s/%s)" % (app_text + "Downloading files...\n\n", installer.path, i + 1, n) installer.download() app.uncache_apps() From 85cbc6cb847af2be48fa216af1b8775029224352 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 18:28:12 +0100 Subject: [PATCH 40/89] Post install launch and back --- badge_store/main.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index ec30904..e950134 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -13,6 +13,7 @@ ___bootstrapped___ = True import ugfx_helper, os, database, wifi, app, ospath from dialogs import * from lib.badge_store import BadgeStore +from app import * ### VIEWS ### @@ -46,11 +47,11 @@ def show_apps(c): option = prompt_option(menu_items, none_text="Back", title=title) if option: - show_app(option["app"]) + show_app(option["app"],c) else: return -def show_app(a): +def show_app(a,c): clear() with WaitingMessage(): app_info = store.get_app(a) @@ -74,7 +75,16 @@ def show_app(a): installer.download() app.uncache_apps() - notice("App %s has been successfully installed" % a, title=title, close_text="Back") + launch = prompt_boolean( + "%sSuccessfully installed.\n\nPress A to launch the app.\n\nPress B to list more \"%s\" apps." % (app_text, c), title="Install Success!", true_text="Launch", false_text="Back") + if (launch): + for app_obj in get_apps(): + if app_obj.name == a: + app_obj.boot() + else: + show_apps(c) + + def show_update(): clear() From 5c3188ac8b2cdc0d05b8e9a5e6bea0304be8aa5e Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 19:25:50 +0100 Subject: [PATCH 41/89] Improve install menu dialogues. --- badge_store/main.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index e950134..e1a8aaf 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -30,10 +30,10 @@ def clear(): def show_categories(): clear() - with WaitingMessage(): + with WaitingMessage(title=title, text="Loading categories..."): menu_items = [{"title": c, "category": c} for c in store.get_categories()] - option = prompt_option(menu_items, none_text="Back", text="Categories", title=title) + option = prompt_option(menu_items, none_text="Back", title="Install: Categories") if option: show_apps(option["category"]) @@ -44,7 +44,7 @@ def show_apps(c): clear() menu_items = [{"title": a, "app": a} for a in store.get_apps(c)] - option = prompt_option(menu_items, none_text="Back", title=title) + option = prompt_option(menu_items, none_text="Back", title="Install: " + c) if option: show_app(option["app"],c) @@ -53,10 +53,17 @@ def show_apps(c): def show_app(a,c): clear() - with WaitingMessage(): + with WaitingMessage(title=title, text="Loading app description..."): app_info = store.get_app(a) - install = prompt_boolean(app_info["description"], title=a, true_text="Install", false_text="Back") + app_text = "App:\n" + try: + app_text += app_info["title"] + '\n' + except: + pass + finally: + app_text += a + '\n\nDescription:\n' + app_info["description"].strip() + install = prompt_boolean(app_text , title="Install App", true_text="Install", false_text="Back") if install: app_text = "App:\n" From e46aed13c2541ae4d3e604573da24f4745f9f4e1 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 19:30:47 +0100 Subject: [PATCH 42/89] Category back to all cats. --- badge_store/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index e1a8aaf..28cf469 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -49,7 +49,7 @@ def show_apps(c): if option: show_app(option["app"],c) else: - return + show_categories() def show_app(a,c): clear() From 15f63daf489887f279bb59a310df38cd41dba9fe Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 20:10:02 +0100 Subject: [PATCH 43/89] Nicer update dialogs. --- badge_store/main.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index 28cf469..a4bfeca 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -95,16 +95,17 @@ def show_app(a,c): def show_update(): clear() - update = prompt_boolean("Do you want to update all apps on this badge?", title="Update", true_text="OK", false_text="Back") + update = prompt_boolean("Do you want to update all apps on this badge?", title="Update all Apps", true_text="OK", false_text="Back") if update: clear() - with WaitingMessage(title=title, text="Please wait...") as message: + with WaitingMessage(title=title, text="Getting updates...") as message: + update_text = "Downloading files:" installers = store.install(_get_current_apps()) n = len(installers) for i, installer in enumerate(installers): - message.text = "%s (%s/%s)" % (installer.path, i + 1, n) + message.text = "%s\n\n%s (%s/%s)" % (update_text, installer.path, i + 1, n) installer.download() - notice("Your badge has been successfully updated", title=title, close_text="Back") + notice("Your badge has been successfully updated.", title="Update Success!", close_text="Back") def show_remove(): clear() From 93897d240506104f5337ec149e8bec309a8124af Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Tue, 4 Sep 2018 21:27:30 +0100 Subject: [PATCH 44/89] Better remove app titles --- badge_store/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index a4bfeca..2588cb3 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -109,11 +109,11 @@ def show_update(): def show_remove(): clear() - app_to_remove = prompt_option(_get_current_apps(), none_text="Back", text="Select App to remove") + app_to_remove = prompt_option(_get_current_apps(), title="Remove App...", none_text="Back", text="Select an App to remove.") if app_to_remove: ospath.recursive_rmdir(app_to_remove) app.uncache_apps() - notice("%s has been removed" % app_to_remove, title=title, close_text="Back") + notice("%s has been removed." % app_to_remove, title="Remove Success!", close_text="Back") def main_menu(): while True: From b33e075f5dbd685df8dc5e36581642704b50b47d Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Wed, 5 Sep 2018 00:38:49 +0100 Subject: [PATCH 45/89] Improve Remove App messages. --- badge_store/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index 2588cb3..01ab64d 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -113,7 +113,12 @@ def show_remove(): if app_to_remove: ospath.recursive_rmdir(app_to_remove) app.uncache_apps() - notice("%s has been removed." % app_to_remove, title="Remove Success!", close_text="Back") + app_text = "App \"" + app_to_remove + "\"" + try: + app_text += " (" + app_info["title"] + ')' + except: + pass + notice("%s has been removed." % app_text, title="Remove Success!", close_text="Back") def main_menu(): while True: From 900c711ede7f5643adfee6e887fa5bd6f4395e09 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Wed, 5 Sep 2018 00:39:54 +0100 Subject: [PATCH 46/89] Fix alignments of dialogs. --- lib/dialogs.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/dialogs.py b/lib/dialogs.py index 86626b0..1d7be4e 100644 --- a/lib/dialogs.py +++ b/lib/dialogs.py @@ -41,8 +41,8 @@ def prompt_boolean(text, title="TiLDA", true_text="Yes", false_text="No", font=F window = ugfx.Container(5, 5, width, height) window.show() ugfx.set_default_font(font) - window.text(5, 10, title, TILDA_COLOR) - window.line(0, 30, width, 30, ugfx.BLACK) + window.text(5, 5, title, TILDA_COLOR) + window.line(0, 25, width, 25, ugfx.BLACK) if false_text: true_text = "A: " + true_text @@ -51,9 +51,9 @@ def prompt_boolean(text, title="TiLDA", true_text="Yes", false_text="No", font=F ugfx.set_default_font(font) label = ugfx.Label(5, 30, width - 10, height - 80, text = text, parent=window) ugfx.set_default_font(FONT_MEDIUM_BOLD) - button_yes = ugfx.Button(5, height - 40, width // 2 - 15 if false_text else width - 15, 30 , true_text, parent=window) - button_no = ugfx.Button(width // 2 + 5, height - 40, width // 2 - 15, 30 , false_text, parent=window) if false_text else None - + button_yes = ugfx.Button(5, height - 40, width // 2 - 10 if false_text else width - 15, 30 , true_text, parent=window) + button_no = ugfx.Button(width // 2, height - 40, width // 2 - 10, 30 , false_text, parent=window) if false_text else None + try: #button_yes.attach_input(ugfx.BTN_A,0) # todo: re-enable once working #if button_no: button_no.attach_input(ugfx.BTN_B,0) @@ -166,10 +166,11 @@ def prompt_option(options, index=0, text = None, title=None, select_text="OK", n ugfx.set_default_font(FONT_SMALL) window = ugfx.Container(5, 5, ugfx.width() - 10, ugfx.height() - 10) window.show() + list_y = 30 if title: - window.text(5, 10, title, TILDA_COLOR) + window.text(5, 5, title, TILDA_COLOR) window.line(0, 25, ugfx.width() - 10, 25, ugfx.BLACK) list_y = 30 if text: @@ -179,7 +180,7 @@ def prompt_option(options, index=0, text = None, title=None, select_text="OK", n else: window.text(5, 10, text, ugfx.BLACK) - options_list = ugfx.List(5, list_y, ugfx.width() - 25, 260 - list_y, parent = window) + options_list = ugfx.List(5, list_y, ugfx.width() - 24, 265 - list_y, parent = window) options_list.disable_draw() for option in options: @@ -195,7 +196,7 @@ def prompt_option(options, index=0, text = None, title=None, select_text="OK", n none_text = "B: " + none_text button_select = ugfx.Button(5, ugfx.height() - 50, 105 if none_text else 200, 30 , select_text, parent=window) - button_none = ugfx.Button(117, ugfx.height() - 50, 105, 30 , none_text, parent=window) if none_text else None + button_none = ugfx.Button(116, ugfx.height() - 50, 105, 30 , none_text, parent=window) if none_text else None try: while True: @@ -260,8 +261,8 @@ class WaitingMessage: def __init__(self, text="Please Wait...", title="TiLDA"): self.window = ugfx.Container(30, 30, ugfx.width() - 60, ugfx.height() - 60) self.window.show() - self.window.text(5, 10, title, TILDA_COLOR) - self.window.line(0, 30, ugfx.width() - 60, 30, ugfx.BLACK) + self.window.text(5, 5, title, TILDA_COLOR) + self.window.line(0, 25, ugfx.width() - 60, 25, ugfx.BLACK) self.label = ugfx.Label(5, 40, self.window.width() - 10, ugfx.height() - 40, text = text, parent=self.window) # Indicator to show something is going on From efab551165c46f1571f7fcf775ed84c8573bfca0 Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Wed, 5 Sep 2018 15:37:37 +0100 Subject: [PATCH 47/89] deleted unneeded --- lib/random.py | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 lib/random.py diff --git a/lib/random.py b/lib/random.py deleted file mode 100644 index e0e2ec8..0000000 --- a/lib/random.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Library to generate random numbers - -Warning! Don't use this for anything important, it's probably biased -""" - -___license___ = "MIT" - -try: - import urandom as sysrand -except ImportError: - import random as sysrand - -# arbitrary: max is 32-bit -_bigrand_max = pow(2, 32) - -def _bigrand(): - """generates a random number between 0 (incl) and _bigrand_max (excl)""" - return int(sysrand.getrandbits(32)) - -def random(): - """Return the next random floating point number in the range [0.0, 1.0).""" - return sysrand.random() - -def randrange(start, stop=None): - """Return a randomly selected element from range(start, stop)""" - if stop is None: - stop = start - start = 0 - return sysrand.randrange(start, stop) - -def randint(start, stop): - """Return a random integer N such that a <= N <= b.""" - return sysrand.randint(start, stop) - -def shuffle(seq): - """Shuffle the sequence x in place.""" - l = len(seq) - for i in range(l): - j = randrange(l) - seq[i], seq[j] = seq[j], seq[i] From 9de689638888699c47841138ab700b7680c681de Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Wed, 5 Sep 2018 15:38:11 +0100 Subject: [PATCH 48/89] removed random dependency, added app import --- snake/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snake/main.py b/snake/main.py index 13761e8..9a29891 100644 --- a/snake/main.py +++ b/snake/main.py @@ -3,9 +3,9 @@ ___name___ = "Snake" ___license___ = "MIT" ___categories___ = ["Games"] -___dependencies___ = ["dialogs", "app", "ugfx_helper", "random", "sleep", "buttons"] +___dependencies___ = ["dialogs", "app", "ugfx_helper", "sleep", "buttons"] -import math, ugfx, ugfx_helper, random, sleep, buttons +import app, math, ugfx, ugfx_helper, random, sleep, buttons from tilda import Buttons ugfx_helper.init() From 2e9aa2e345aaab0d16c57edde206dbb7270179b0 Mon Sep 17 00:00:00 2001 From: Paco Hope Date: Wed, 5 Sep 2018 15:38:33 +0100 Subject: [PATCH 49/89] Removed dependency on random --- 3dspin/main.py | 2 +- breakout/main.py | 2 +- game-of-life/main.py | 2 +- lib/homescreen.py | 2 +- lib/test_random.py | 2 +- screendisco/main.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/3dspin/main.py b/3dspin/main.py index 4cff9f8..dd4ab78 100644 --- a/3dspin/main.py +++ b/3dspin/main.py @@ -3,7 +3,7 @@ ___name___ = "3D Spin" ___license___ = "MIT" ___categories___ = ["Demo"] -___dependencies___ = ["app", "ugfx_helper", "random", "sleep", "buttons"] +___dependencies___ = ["app", "ugfx_helper", "sleep", "buttons"] import ugfx from tilda import Buttons diff --git a/breakout/main.py b/breakout/main.py index 5829ec4..ed5447b 100644 --- a/breakout/main.py +++ b/breakout/main.py @@ -3,7 +3,7 @@ ___name___ = "Breakout" ___license___ = "MIT" ___categories___ = ["Games"] -___dependencies___ = ["app", "ugfx_helper", "random", "buttons"] +___dependencies___ = ["app", "ugfx_helper", "buttons"] from tilda import Buttons import ugfx, ugfx_helper, dialogs diff --git a/game-of-life/main.py b/game-of-life/main.py index 7af9a36..bb577b4 100644 --- a/game-of-life/main.py +++ b/game-of-life/main.py @@ -3,7 +3,7 @@ ___name___ = "Conway game of life" ___license___ = "MIT" ___categories___ = ["Games"] -___dependencies___ = ["app", "ugfx_helper", "random", "sleep", "buttons"] +___dependencies___ = ["app", "ugfx_helper", "sleep", "buttons"] import app, ugfx, ugfx_helper, buttons, sleep, time, random from tilda import Buttons diff --git a/lib/homescreen.py b/lib/homescreen.py index 8702735..5afa460 100644 --- a/lib/homescreen.py +++ b/lib/homescreen.py @@ -17,7 +17,7 @@ They also *may*: """ ___license___ = "MIT" -___dependencies___ = ["database", "buttons", "random", "app", "sleep", "ugfx_helper", "wifi", "sim800"] +___dependencies___ = ["database", "buttons", "app", "sleep", "ugfx_helper", "wifi", "sim800"] import database, ugfx, random, buttons, tilda, sleep, ugfx_helper, wifi, time, sim800 from app import App diff --git a/lib/test_random.py b/lib/test_random.py index 5402caa..6c60dad 100644 --- a/lib/test_random.py +++ b/lib/test_random.py @@ -1,7 +1,7 @@ """Tests for random lib""" ___license___ = "MIT" -___dependencies___ = ["upip:unittest", "random"] +___dependencies___ = ["upip:unittest"] import unittest from random import * diff --git a/screendisco/main.py b/screendisco/main.py index 0615914..5fa8dce 100644 --- a/screendisco/main.py +++ b/screendisco/main.py @@ -3,7 +3,7 @@ """ ___name___ = "Screen Party" ___license___ = "MIT" -___dependencies___ = ["ugfx_helper", "sleep", "random"] +___dependencies___ = ["ugfx_helper", "sleep"] ___categories___ = ["Homescreens"] ___bootstrapped___ = False From a1bbd70282593eb88b37f6ebb6e5a5c197bd9238 Mon Sep 17 00:00:00 2001 From: Phil Crump Date: Wed, 5 Sep 2018 18:11:53 +0100 Subject: [PATCH 50/89] lib/ntp: Remove onsite NTP server. NTP pool is now primary. --- lib/ntp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ntp.py b/lib/ntp.py index 1c0fbdf..702ad41 100644 --- a/lib/ntp.py +++ b/lib/ntp.py @@ -12,7 +12,7 @@ import machine # (date(2000, 1, 1) - date(1900, 1, 1)).days * 24*60*60 NTP_DELTA = 3155673600 # With Mk3 Firmware an IP address string works 5%, hangs at socket.socket(..) 95%, could be a bug in 2016 upython? -NTP_HOSTS = ["ntp-gps.emf.camp", "0.emfbadge.pool.ntp.org", "1.emfbadge.pool.ntp.org", "2.emfbadge.pool.ntp.org", "3.emfbadge.pool.ntp.org"] +NTP_HOSTS = ["0.emfbadge.pool.ntp.org", "1.emfbadge.pool.ntp.org", "2.emfbadge.pool.ntp.org", "3.emfbadge.pool.ntp.org"] NTP_PORT = 123 def get_NTP_time(): From 6e4eb3290505e148f4e2625591210b3c3ace9e6f Mon Sep 17 00:00:00 2001 From: Illlin <34010016+Illlin@users.noreply.github.com> Date: Wed, 5 Sep 2018 19:32:27 +0100 Subject: [PATCH 51/89] Added DevRant for the TiLDA-Mk4 DevRant text only client for the TiLDA-Mk4. Only supports viewing posts --- DevRant/main.py | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 DevRant/main.py diff --git a/DevRant/main.py b/DevRant/main.py new file mode 100644 index 0000000..51292ab --- /dev/null +++ b/DevRant/main.py @@ -0,0 +1,82 @@ +"""DevRant Client for TiLDA-MK4 +""" +___name___ = "DevRant" +___license___ = "MIT" +___dependencies___ = ["app", "wifi", "http", "homescreen", "utime", "ugfx_helper", "dialogs"] +___categories___ = ["Other"] +___launchable___ = True + +import ugfx, wifi, http, json, utime, ugfx_helper, dialogs, app + +char_ln = 25 +ln_pg = 19 + +def loop(): + skip = 0 + while True: + ugfx.clear(ugfx.html_color(0x544c6d)) + data= json.loads(http.get("https://devrant.com/api/devrant/rants?app=3&sort=top&range=day&limit=1&skip="+str(skip)).raise_for_status().content)["rants"][0] + + text=data["text"].split(" ") + screens = [[]] + line = "" + screen = 0 + for word in text: + if len(line+word)+1 >= char_ln: + if len(screens[screen]) >= ln_pg: + screen+=1 + screens.append([]) + screens[screen].append(line) + line=word + else: + line = line + " " + word + if len(screens[screen]) < ln_pg: + screens[screen].append(line) + else: + screens.append([line]) + + + hold=True + page = 0 + while hold: + ugfx.clear(ugfx.html_color(0x544c6d)) + ugfx.area(0,0,240,35,ugfx.html_color(0x41476d)) + ugfx.text(5,5,str(data["score"])+"++ " + data["user_username"] + ":",ugfx.BLACK) + + ugfx.text(5,20,"Page: " + str(page+1) + "/" + str(len(screens)),ugfx.BLACK) + count = 0 + for line in screens[page]: + ugfx.text(5,35+count*15,line,ugfx.BLACK) + count+=1 + hold_btn = True + while hold_btn: + if tilda.Buttons.is_pressed(tilda.Buttons.BTN_Menu): + return + if tilda.Buttons.is_pressed(tilda.Buttons.BTN_A): + skip += 1 + hold_btn = False + hold = False + while tilda.Buttons.is_pressed(tilda.Buttons.BTN_A): + utime.sleep_ms(10) + if tilda.Buttons.is_pressed(tilda.Buttons.JOY_Right): + if page < len(screens)-1: + page += 1 + hold_btn = False + while tilda.Buttons.is_pressed(tilda.Buttons.JOY_Right): + utime.sleep_ms(10) + if tilda.Buttons.is_pressed(tilda.Buttons.JOY_Left): + if page > 0: + page -= 1 + hold_btn = False + while tilda.Buttons.is_pressed(tilda.Buttons.JOY_Left): + utime.sleep_ms(10) + + +ugfx_helper.init() +ugfx.clear() +ugfx.text(5,5, "DevRant for the TiLDA Mk4", ugfx.BLACK) +ugfx.text(5, 40, "Connecting To WIFI", ugfx.BLACK) +wifi.connect() +ugfx.text(5, 40, "Connecting To WIFI", ugfx.WHITE) +loop() +app.restart_to_default() From 24c8935cd03bb25657f52660bc968a89b6e6deb6 Mon Sep 17 00:00:00 2001 From: Illlin <34010016+Illlin@users.noreply.github.com> Date: Wed, 5 Sep 2018 19:41:57 +0100 Subject: [PATCH 52/89] Fixed dependency error --- DevRant/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DevRant/main.py b/DevRant/main.py index 51292ab..f029ab8 100644 --- a/DevRant/main.py +++ b/DevRant/main.py @@ -2,7 +2,7 @@ """ ___name___ = "DevRant" ___license___ = "MIT" -___dependencies___ = ["app", "wifi", "http", "homescreen", "utime", "ugfx_helper", "dialogs"] +___dependencies___ = ["app", "wifi", "http", "homescreen", "ugfx_helper", "dialogs"] ___categories___ = ["Other"] ___launchable___ = True From e941220c41c8d421578206029501dd487190f166 Mon Sep 17 00:00:00 2001 From: Illlin <34010016+Illlin@users.noreply.github.com> Date: Wed, 5 Sep 2018 19:49:39 +0100 Subject: [PATCH 53/89] Done more dependency changeing --- DevRant/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DevRant/main.py b/DevRant/main.py index f029ab8..00920aa 100644 --- a/DevRant/main.py +++ b/DevRant/main.py @@ -2,7 +2,7 @@ """ ___name___ = "DevRant" ___license___ = "MIT" -___dependencies___ = ["app", "wifi", "http", "homescreen", "ugfx_helper", "dialogs"] +___dependencies___ = ["app", "wifi", "http", "ugfx_helper"] ___categories___ = ["Other"] ___launchable___ = True From 29cf7896dcaf1c51914c1d732a9d6b08836ed6b0 Mon Sep 17 00:00:00 2001 From: mallyhubz Date: Thu, 6 Sep 2018 00:22:41 +0100 Subject: [PATCH 54/89] nyan cat homescreen --- cmd.exe.lnk | Bin 0 -> 1244 bytes nyan_home/frame_0_delay-0.07s.gif | Bin 0 -> 4341 bytes nyan_home/frame_10_delay-0.07s.gif | Bin 0 -> 4383 bytes nyan_home/frame_11_delay-0.07s.gif | Bin 0 -> 4265 bytes nyan_home/frame_1_delay-0.07s.gif | Bin 0 -> 4088 bytes nyan_home/frame_2_delay-0.07s.gif | Bin 0 -> 4321 bytes nyan_home/frame_3_delay-0.07s.gif | Bin 0 -> 4272 bytes nyan_home/frame_4_delay-0.07s.gif | Bin 0 -> 4242 bytes nyan_home/frame_5_delay-0.07s.gif | Bin 0 -> 4458 bytes nyan_home/frame_6_delay-0.07s.gif | Bin 0 -> 4464 bytes nyan_home/frame_7_delay-0.07s.gif | Bin 0 -> 4500 bytes nyan_home/frame_8_delay-0.07s.gif | Bin 0 -> 4467 bytes nyan_home/frame_9_delay-0.07s.gif | Bin 0 -> 4857 bytes nyan_home/main.py | 104 +++++++++++++++++++++++++++++ tilda_tools.bat | 2 + 15 files changed, 106 insertions(+) create mode 100644 cmd.exe.lnk create mode 100644 nyan_home/frame_0_delay-0.07s.gif create mode 100644 nyan_home/frame_10_delay-0.07s.gif create mode 100644 nyan_home/frame_11_delay-0.07s.gif create mode 100644 nyan_home/frame_1_delay-0.07s.gif create mode 100644 nyan_home/frame_2_delay-0.07s.gif create mode 100644 nyan_home/frame_3_delay-0.07s.gif create mode 100644 nyan_home/frame_4_delay-0.07s.gif create mode 100644 nyan_home/frame_5_delay-0.07s.gif create mode 100644 nyan_home/frame_6_delay-0.07s.gif create mode 100644 nyan_home/frame_7_delay-0.07s.gif create mode 100644 nyan_home/frame_8_delay-0.07s.gif create mode 100644 nyan_home/frame_9_delay-0.07s.gif create mode 100644 nyan_home/main.py create mode 100644 tilda_tools.bat diff --git a/cmd.exe.lnk b/cmd.exe.lnk new file mode 100644 index 0000000000000000000000000000000000000000..e92d25531ab9d5e78e8d3e0fc585195c7c308948 GIT binary patch literal 1244 zcmah}ZAg<*6h1S9`9W=HVp6#xrxCqve$*5MbAHU)rZMs(CMesYmG35Qq5e_`0zdi@ z5?E14&g@4;i%KXJgZ>s;6e)#eL6L|UL_z)NId^XJBk*3HbMAZ2xzD}#+;d+u5h;>m zAc-b~q_RFzk_O}Y$75F(rd})7YLa3_q#_g_k$H+_O0W7@IjQ+x;8xvyr=Dx79~Q6i2bNINoEvbelaAVgi|Qkg3tBVpR9Dg=)x6 z9&(bGTFD1%3Y}bL-D@!gRb*@T`CW2OHc{~kUiL9>u{s`dpJ0m$Z~QFTs2zNMa*<3q zgy~qlnl+BzV>XRy$RRr=SDS0aeodq7Vcy|$iI8eRsf=W4@QqgC0H2d2@U{WGU!tSH z4uAt$9{{*j0L-xoxNxF9O$ALz<#ML%;j`JpTOlo3sDSKL3S9YklC7W}4uk_rE(`w1KQ^{7zPz(5_s^|mV8f^KZaNL}T_ zzbBIdzEgV&VR!OU=>R8n?FDKmi;N;Ut4k()`CXX9#B<%XWus<;@#){BK5f7JQifer zI}`KW+K@#(kOyRoQ8pb$jTq1mLFb|8!JP5yAK6B(u z>o_2Gy1;#GwvZGje);lBWXbLsLXZ=G>u6<&U&e)N_mDyLH?D`4Nn0h}$a zm;a^QzV34D>kh*l`2a5xOp#0OUTiiEn~J1BVO#G`*iUnS37EH*cKo^aS$)2<)8qBH HR~6kqg>e0$ literal 0 HcmV?d00001 diff --git a/nyan_home/frame_0_delay-0.07s.gif b/nyan_home/frame_0_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..3cd1b49db829a62cd595e7f00bec26b1ffb0451f GIT binary patch literal 4341 zcmV^O>3Dwut`Am;ce4{=~4Sp5XF{>HeAi|EKBB(ADSY>;C@!0000000000 z00000EC2ui0Pq0Z000L6z=Uu}EE%Zp{=g3Qlp7_cZsX8xVgGQvRR7-saUtW#Kn>aIhmT4EXp~o#?jJ% zr-!A6r_VzuBlcQ9=oLO_71D1uMs)M+5l4=7&@6a*eR3p<$n4Nf$DTgIW4qz*>Whix` z9KduRv4!dYi{HV87qQjacNX9Tl?!pkiFT$J$))o;<$N`^Y}$=%79E}rXwId}4_S1a zy!sqrboZqzD)w;D7`cXyAbeCaBv# z9)$@ZW}0xuNu~rJ0uaLtc;>0+o_zM{=bwNE8mI?#!stktawe+innkwprlOFJNhgSR z%3$fGm}aW!rkr-_>8G8}KT8-32q3|+PeR!#4L9K6?6c5DEA6z@R%+ZYo#w+i+iqBen_dk>e6fQ!3f7o@V)s0urC<^ zM=UY9lcM`6vk7Oc@w}koDuBM=PAu}skXCHx!k4Ct@y0B-OoI&RYU(k_W{_<2&1ae% z>#Z%rTLK9{mmseRK$BoX&&_T+v%?|d>@>+bqYN|B?v^kD30Dt&^$15Jtu&z@GhOr3 zWKSHm%v87gbJ1F3-F3@2d<{U@506py-2k7hY1-^sjWr2vbB%P|GJ{PszllOH!QzZJ z?)c-7M-G9_kymcH-ZW&Mxw|%WZo|eVlpwm$@!Bx@+b(PVGR%gHjX0c>PoTl$1!ACDW?Ys95aPPlQFTLK_!fQj( zf+sINyvw)Vd>D$#uKoJA?@n^|?B~vX>ENS2{{7|8eK;AGHy;208t9(@2RH%v0kC%S z^WF#+7{2>CFn@Gw!vQBq!3tUsfpt2WrMd?%6L`=BpSzz8K1f0kmX3t-g5drTz`_=` z5DFKJp$umzzYNBTgASyZ2`*&6zA+GR@lv7d5+EZA!H|YXOkxESm_r=`fB*uBq5ud0 zfF7=EZ9q$*rI<&A0R-TSU<|+jj;O>knsIteY~s*(7%!_W5Qya4qWQXbAu^u-@s4<; zT^iNME)t%g0S*YHARBN36!y`Oab%tT0AK(Y0#cBWbm94kkjF~magTho!Gs#%f);r4 zlP+k$ghH4wAySA1o&01AIvF+qj8O@ejAa=ysYXo(;A0L@r79gTHxQ8$VWylA3v~I( zkAdiwNsy&7X-LZ^YO+qbBxVbEDF9z;Oo(9wz%Zq0Ojj;Jdl?9)ILArOa+>p;%aoou zHPFl)J`+UIB&H}O^vi<r^s z#efa%g+r<#@?Gx)Ksim{)Y(#+TJ@?my(tpu zRLwAY6^tL-=}dcSF&R`8X;@V14T}0yRWd+-YIPR`;n~(=Ms*429Onc!fYrYGbpr*= zt6&E^PLpXUtUO)hPm$+05~!7}b#1|0t*Jbbeo>>5Z9z(vU{Hek^|My(tY}ADP{U>j zv13&%MS;4t$3}>*k$r1~;@YnKNyw-t-E0y-%iG@i_O~vTC_Gs}+~N|Kml7fX1{5mR z;Hq|m$@5%XAzN4DM&`QMjSM7>n_11?RSCciuXxAX0pV)Xsi0*4fr%#6-10uxtbF9$ zYcbp1Rkl(@oUAWYkGTZ$`uD$mHE%vSI-xJ3*10}iZG4G3U)pSZ_&R{puD8 z0M4+6Un*eqep0;@IXmP4;2)RutR37k(w>P+Fx$DlVlG0N_xxEZODN4JMJ|>VtmWhN?3oc_ z@tqfK*9b{<%zTctRWZP35P=BL(xhe-F_h(b5e;ZuK9~*vZdqqWo0^zVjN&AR@L396 z;MK5>wXA1N>seD^&lj*j1uD?ZxkWJm3Z5(M@Ra1$6}7bofcPIbc(>9LW=!cLHi{YmD0*QuM7G$S7W?ILhH+Z4FD*ezb|ubchsVCT1` zE978vPqf7A`r8Od$2TfAJhIJ5grHll-@IpG?<3m+Kl8WM1u8aQ z)K^!6)&QUsfEiSKTqkq**MRt^e-h?Z#8z_uIplwBrD+j1fETDg8-;-ar-0U1e>PWk zXjg(?7j_P4f&;LEEVzQ=HX-~sJ{I^?^Hd@1_elk)N;P;&^T&WV=YaQyfw zh80k8+LwlIIEEkag5uXQCcr>K#f19fZY}@=eAtJ47;+D%N`5$qFyMtk0EQK?0w}PE zjM#{d_=u1gi7T*%4VVIvc!`eaN){4>2vdheqgG8wh<_M}PbG?dXov}bc8Q1rDbR|p z_=>O?i?SGtC@_g8c#GLq0V*(yy!eX$DBwyi2!j-;F`fuCpqPiMw1=Vyh@{v8rpSk= zcyo%_i_}<+mNRb zk8cQ%wAhFVpou`HIxDj-B=lGp52|HkrWw` zvlxdevNM>{F2%z@p=K}xNr>o`QyLh1n{-k;m`~`4iWb?DF8Pu$`HC1>Ry;#g^^<(a zNR9;gNf1_&ANC=oMoiQMA}Yy{>PQ4JnUqSolozRw8o5Ord6PX8l7om|;Rk}KmuU(3 zNh^7jL%@_^8I~|PlR#FJCuThV4a737q=)6`R&|0(!Utl(S8nH4l%~j%VwsnE$&FV-vD$jY(tol}}vQm`kvin3qK?*luiA)Kdkw^pxFd>lSmw(BR;2ECc$&XUv z0SLeVhWS)Www~;{p1Z`DP+*NHAOiGRpZ0m5_?e&i83NI_12?dUOsSs&dY>Q=BHn2$ zwW244l4#8+ni3M9)rbQBAuyp7TA>ztp%{9hA`k-7nFas3jY_$p89JgA3IbxZf~E(Q zA9J7xYAZ9NXbtK~vv0SE;X zX^9~aq)>XF9GVCpik(dgq)}R*CJJ<18bt#T14bIAm|{3E8l&OIoJo+SY8s?Zx~6Ul zr3HEb15lGPMhq|bY+NM!jpmRB! z$T_K$S|VSNsF<3mntG!J3L$hVSq4{|qB^RiT40wYs-cRTsQOg^aH*U6s<4WwohqA0 z6@Ha^tGH@JUJ$GQyxOa9s)>qbT(;VRMFg3Vd0)hutjbEP6H;`M$pFaOf{*#E&^jS4 z=&HV&t=ejzv#Mwa_@G44U?Der5dsF=2~B`_rbQsG!gp?Cu&wZ_t=;-mwmKo}nw3JC zLFU?ECuOVm3S0U5WAD1H8v3Rd3a|6puP-Q7{Hm1#`vvC;u!^a#;fk-i!fS0E|Nv`y;(3@`u#5(Wb@09hzVPS>hLkhN0V zv{iex8H=O;CMrp2o3<>ZO~2tVk`w?!JD^0X3Py{g3lIQmtF{JUsYwtbGB*ZAgds_= zw-)lZHfy#BfFn#W9#{Y!M4$i&5Vrz4x57}jH@X0c`vfkVs@VjtNI)UDxoTjrx44;_ zNU)u(D!Nl}w5p2)?13Cb61g`@xvOEh1B$s&u(=_k1R>J8Q$V;Hk_5UdA-)R*NvpHP zTLkfue)N$Zk$b#2n|?F^y*%3}Ou!&eJGcx22LZCZ+G`+gkhhW)2Key~MIgQ{WB~Y4 z0O*^xaWN2z>jVlg5Z3!2_Itnho4@iq5cyjL_<_Gw0Dtx10OqS7i?E|RzyjG}zy*N7 jCx8wb{&B#G@WAyO9uk}dEC9j(;Q*V!0u?M4K>z?dx=S%0 literal 0 HcmV?d00001 diff --git a/nyan_home/frame_10_delay-0.07s.gif b/nyan_home/frame_10_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bd6bb76cdf532a8b693cf9c4669948b1ff23677 GIT binary patch literal 4383 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 ZC!E4BTqM{~!842m=g|l2F%Lli06V2gKE?n5 literal 0 HcmV?d00001 diff --git a/nyan_home/frame_11_delay-0.07s.gif b/nyan_home/frame_11_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ae2a33c0b9245393ca4a519871673bf53c44483 GIT binary patch literal 4265 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 LSh4#LK>z?dw^$hW literal 0 HcmV?d00001 diff --git a/nyan_home/frame_1_delay-0.07s.gif b/nyan_home/frame_1_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..c241da5a81c38a9ef6a9ad6fbcc8b9529d8818d4 GIT binary patch literal 4088 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 P4*b9d5FEiw5d;7`UNS_& literal 0 HcmV?d00001 diff --git a/nyan_home/frame_3_delay-0.07s.gif b/nyan_home/frame_3_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..5671518d1e6492d6dbf95d48af625605f42eaa3c GIT binary patch literal 4272 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 literal 0 HcmV?d00001 diff --git a/nyan_home/frame_5_delay-0.07s.gif b/nyan_home/frame_5_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..be68cdda94ad26776cfda860fc530d47cfe5825b GIT binary patch literal 4458 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 C=#5kW literal 0 HcmV?d00001 diff --git a/nyan_home/frame_7_delay-0.07s.gif b/nyan_home/frame_7_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..7674493a29f58915552306a3d4873ad44efd4a4e GIT binary patch literal 4500 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 literal 0 HcmV?d00001 diff --git a/nyan_home/frame_8_delay-0.07s.gif b/nyan_home/frame_8_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef75ebf964337398f09ad0742582355cb1ab01c6 GIT binary patch literal 4467 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 F06SlPrMUnA literal 0 HcmV?d00001 diff --git a/nyan_home/frame_9_delay-0.07s.gif b/nyan_home/frame_9_delay-0.07s.gif new file mode 100644 index 0000000000000000000000000000000000000000..71aa5a0ad3dd852952f6a500c5598587e2e26ab5 GIT binary patch literal 4857 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 11: + i = 0 + + if bkl: + force_backlight() + continue + + if ext: + break + +machine.reset() \ No newline at end of file diff --git a/tilda_tools.bat b/tilda_tools.bat new file mode 100644 index 0000000..0d0e351 --- /dev/null +++ b/tilda_tools.bat @@ -0,0 +1,2 @@ +@echo off +python %CD%/.development\tilda_tools.py %* \ No newline at end of file From 15314555429f874ebcfc23291d9f69216c920870 Mon Sep 17 00:00:00 2001 From: mallyhubz Date: Thu, 6 Sep 2018 00:34:43 +0100 Subject: [PATCH 55/89] fixed dependency metadata --- .gitignore | 2 ++ nyan_home/main.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7613256..7505e99 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ __pycache__ wifi*.json config.json +cmd.exe.lnk +tilda_tools.bat \ No newline at end of file diff --git a/nyan_home/main.py b/nyan_home/main.py index 8da6574..04e808f 100644 --- a/nyan_home/main.py +++ b/nyan_home/main.py @@ -2,7 +2,7 @@ """ ___name___ = "Nyan" ___license___ = "MIT" -___dependencies___ = ["app", "homescreen", "ugfx_helper", "machine"] +___dependencies___ = ["app", "homescreen", "ugfx_helper"] ___categories___ = ["Homescreens"] ___bootstrapped___ = False From e9415827b7ecb28de3daf319fb5ad5acdf4fcaac Mon Sep 17 00:00:00 2001 From: mallyhubz Date: Thu, 6 Sep 2018 01:00:33 +0100 Subject: [PATCH 56/89] fixed menu long press --- cmd.exe.lnk | Bin 1244 -> 1288 bytes nyan_home/main.py | 28 ++-------------------------- tilda_tools.bat | 2 +- 3 files changed, 3 insertions(+), 27 deletions(-) diff --git a/cmd.exe.lnk b/cmd.exe.lnk index e92d25531ab9d5e78e8d3e0fc585195c7c308948..277074e49b1870c03e08bb74c2c8b11de9b7f2a2 100644 GIT binary patch delta 93 zcmcb^*}*kIgmLyp(H)F}iVS){7=s`uC$SitN-;PySOG;t8HyQF8H#{p3_~tMB0~;? i0z(EvDMJ!N6;Q;NA)CR3L6^aip#TVrH%l=cVgdk!I1;7+ delta 95 zcmeC+y2Cj^gmLml(H)GwY7D*%Rtzx=u0YxiNc%EmGng>wGB`360AVqZmCKL_q)Ql5 O8HxzWZ+2rk!~_7rdJ~`k diff --git a/nyan_home/main.py b/nyan_home/main.py index 04e808f..f52d216 100644 --- a/nyan_home/main.py +++ b/nyan_home/main.py @@ -44,25 +44,7 @@ ugfx.clear() ugfx.orientation(180) force_backlight() -Buttons.enable_interrupt( - Buttons.BTN_A, - cbButtonA, - on_press=True, - on_release=False); -Buttons.enable_interrupt( - Buttons.BTN_B, - cbButtonB, - on_press=True, - on_release=False); - -def cbButtonA(button_id): - global bkl - bkl = True - -def cbButtonB(button_id): - global ext - ext = False #everything from here onwards is unknown # Colour stuff @@ -93,12 +75,6 @@ while True: i = i + 1 if i > 11: i = 0 + sleep_or_exit(0.5) - if bkl: - force_backlight() - continue - - if ext: - break - -machine.reset() \ No newline at end of file +app.restart_to_default() \ No newline at end of file diff --git a/tilda_tools.bat b/tilda_tools.bat index 0d0e351..76c731f 100644 --- a/tilda_tools.bat +++ b/tilda_tools.bat @@ -1,2 +1,2 @@ @echo off -python %CD%/.development\tilda_tools.py %* \ No newline at end of file +python "%CD%/.development\tilda_tools.py" %* \ No newline at end of file From 7ac28fc73e5035d5282c92fecb15a30f38e87dc0 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Fri, 7 Sep 2018 14:41:42 +0100 Subject: [PATCH 57/89] Initial version of a Catan game board generator If you have 3D printed your own version of Settlers of Catan, with 3D terrain and little sheep and grain siloes and everything, it is fairly difficult to properly randomise the tile selection during the game setup. I assume most EMF-goers have encountered this problem, so this app provides a solution! --- settlers/main.py | 187 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 settlers/main.py diff --git a/settlers/main.py b/settlers/main.py new file mode 100644 index 0000000..5dc7372 --- /dev/null +++ b/settlers/main.py @@ -0,0 +1,187 @@ +"""Settlers of Catan game board generator""" + +___name___ = "settlers" +___license___ = "MIT" +___dependencies___ = ["ugfx_helper", "sleep"] +___categories___ = ["Games"] +___bootstrapped___ = False + +import random, ugfx, ugfx_helper, math, time, buttons +from app import App, restart_to_default +from tilda import Buttons + +ugfx_helper.init() +ugfx.clear(ugfx.BLACK) + +""" +This was an experiment in drawing hexagons. Some notes: + +Screen coords are x,y values that locate pixels on the physical display: + +0,0 → → 240,0 + ↓ ↓ +0,320 → 240,320 + +Hex coords are x,y,z values that locate the relative positions of hexagons: + + 0,1,-1 +-1,1,0 ↖ ↑ ↗ 1,0,-1 + 0,0,0 +-1,0,1 ↙ ↓ ↘ 1,-1,0 + 0,-1,1 + +Converting between the two systems can be done by multiplying the x and y +coordinates against a matrix. When converting to hex coords, the z value +can be computed from the new x and y values because x + y + z must always +equal zero. + +""" + +class Hex: + # Constant matrix used to convert from hex coords to screen coords + matrix = [3.0 * 0.5, 0.0, math.sqrt(3.0) * 0.5, math.sqrt(3.0)] + + # The screen coordinate to use as the origin for hex coordinates, + # the centre of hex 0,0,0 will be at this coordinate + origin = [math.ceil(ugfx.width() / 2), math.ceil(ugfx.height() / 2)] + + # Size in pixels of the hex, from the centre point to each corner + size = 22 + + # Possible kinds of resource and the colour it should be rendered + kinds = { + 0: ugfx.html_color(0xd4e157), # Sheep + 1: ugfx.html_color(0xffc107), # Wheat + 2: ugfx.html_color(0x993300), # Wood + 3: ugfx.html_color(0xff0000), # Brick + 4: ugfx.html_color(0x757575), # Ore + 5: ugfx.html_color(0xffee55), # Desert (nothing) + } + + # Transformations for how to get to the neighbouring hexes + directions = { + 0: [-1, 1, 0], # South West + 1: [0, 1, -1], # South + 2: [1, 0, -1], # South East + 3: [1, -1, 0], # North East + 4: [0, -1, 1], # North + 5: [-1, 0, 1], # North West + } + + def __init__(self, coords, kind, number, robber): + """Create a new hex at the given hex coordinates, of the given kind of resource""" + # Validate coords + assert len(coords) == 3, 'Invalid number of hexagon coordinates' + assert coords[0] + coords[1] + coords[2] == 0, 'Invalid hexagon coordinate values' + self.coords = coords + + # The kind of resource hosted by this hex + self.kind = kind + + # The dice roll required to win this resource + self.number = number + + # Whether this hex contains the robber + self.robber = robber + + # Compute the screen coordinates of the centre of the hex + self.centre = Hex.to_screen_coords(self.coords[0], self.coords[1]) + + # Generate screen coordinates for each of the corners of the hex + self.corners = [] + for i in range(0, 6): + angle = 2.0 * math.pi * (0 - i) / 6 + offset = [Hex.size * math.cos(angle), Hex.size * math.sin(angle)] + self.corners.append([round(self.centre[0] + offset[0]), round(self.centre[1] + offset[1])]) + + @staticmethod + def to_screen_coords(x, y): + """Returns screen coordinates computed from the given hex coordinates""" + newX = (Hex.matrix[0] * x + Hex.matrix[1] * y) * Hex.size + newY = (Hex.matrix[2] * x + Hex.matrix[3] * y) * Hex.size + return [newX + Hex.origin[0], newY + Hex.origin[1]] + + @staticmethod + def get_neighbouring_hex_coords(coords, direction): + return [a + b for a, b in zip(coords, Hex.directions[direction])] + + def draw(self): + """Draw the hexagon to the screen""" + ugfx.fill_polygon(0, 0, self.corners, Hex.kinds[self.kind]) + text_offset = Hex.size * 0.5 + if self.robber: + ugfx.text(round(self.centre[0] - text_offset), round(self.centre[1] - text_offset), "Rb ", ugfx.BLACK) + else: + if self.kind != 5: + ugfx.text(round(self.centre[0] - text_offset), round(self.centre[1] - text_offset), "{} ".format(self.number), ugfx.BLACK) + + def clear(self): + ugfx.fill_polygon(0, 0, self.corners, ugfx.BLACK) + + +def board_setup(resources, numbers): + """Generate a random game board""" + + # Two rings of hexes around the centre + radius = 2 + # Choose a starting hex on the outermost ring of hexes + choice = random.randrange(0, 6) + coords = [0, 0, 0] + for i in range(radius): + coords = [a + b for a, b in zip(coords, Hex.directions[choice])] + + # Copy lists so we can edit them with impunity + r_copy = resources.copy() + n_copy = numbers.copy() + + hexes = [] + while radius > 0: + # From the starting hex, go radius hexes in each of the 6 directions + for i in list(range((choice + 2) % 6, 6)) + list(range(0, (choice + 2) % 6)): + for j in range(radius): + # The resources are picked at random from the list + resource = r_copy.pop(random.randrange(0, len(r_copy))) + # But the dice roll numbers are picked in order, unless it's + # the desert in which case that is always 7 + if resource == 5: + number = 7 + else: + number = n_copy.pop(0) + hexes.append(Hex(coords, resource, number, number == 7)) + coords = Hex.get_neighbouring_hex_coords(coords, i) + + # Go into the next ring of hexes (opposite direction of starting choice) + coords = Hex.get_neighbouring_hex_coords(coords, (choice + 3) % 6) + radius = radius - 1 + resource = r_copy.pop() + if resource == 5: + number = 7 + else: + number = n_copy.pop(0) + hexes.append(Hex(coords, resource, number, number == 7)) + return hexes + + +# List of resources (pre-randomised to combat the not-very random number +# generator) and dice rolls (these have a strict order) for 2-4 player games +resources = [4, 0, 1, 4, 4, 2, 5, 3, 2, 1, 2, 2, 1, 0, 3, 0, 3, 1, 0] +numbers = [5, 2, 6, 3, 8, 10, 9, 12, 11, 4, 8, 10, 9, 4, 5, 6, 3, 11] + +def draw(): + hexes = board_setup(resources, numbers) + for h in hexes: + h.clear() + time.sleep_ms(100) + h.draw() + +ugfx.text(5, 5, 'Press A to generate another ', ugfx.WHITE) +draw() + +# Main Loop +while True: + if buttons.is_triggered(tilda.Buttons.BTN_A): + draw() + elif buttons.is_triggered(tilda.Buttons.BTN_Menu): + break + time.sleep_ms(5) +restart_to_default() From d185a9c92c540dffeffff8a6254b80f913603c23 Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Fri, 7 Sep 2018 20:38:08 +0100 Subject: [PATCH 58/89] Remove EMF category --- serendipity/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serendipity/main.py b/serendipity/main.py index 29836be..05c5f65 100644 --- a/serendipity/main.py +++ b/serendipity/main.py @@ -3,7 +3,7 @@ ___name___ = "serendipity" ___license___ = "MIT" ___dependencies___ = ["sleep", "app", "ugfx_helper"] -___categories___ = ["EMF", "Villages"] +___categories___ = ["Villages"] import ugfx_helper, os, wifi, ugfx, http, time, sleep, app from tilda import Buttons From 7835018432e5697f493cce9e699a997b8742c907 Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Fri, 7 Sep 2018 21:29:14 +0100 Subject: [PATCH 59/89] Remove lib/random dependency from pong --- pong/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pong/main.py b/pong/main.py index 1c1ef7b..a960adf 100644 --- a/pong/main.py +++ b/pong/main.py @@ -3,7 +3,7 @@ ___name___ = "Pong" ___license___ = "WTFPL" ___categories___ = ["Games"] -___dependencies___ = ["dialogs", "app", "ugfx_helper", "random", "sleep", "buttons"] +___dependencies___ = ["dialogs", "app", "ugfx_helper", "sleep", "buttons"] import math, ugfx, ugfx_helper, random, sleep, buttons, time from tilda import Buttons From ce478e2aa2c386c71a0fb6d5a12cecaa2e9b1ef1 Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Sat, 8 Sep 2018 11:05:09 +0100 Subject: [PATCH 60/89] Show badge firmware version in sysinfo app --- sysinfo/main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sysinfo/main.py b/sysinfo/main.py index e07584a..1c32baf 100644 --- a/sysinfo/main.py +++ b/sysinfo/main.py @@ -9,6 +9,7 @@ ___bootstrapped___ = True #import ugfx, os, time, sleep, app, sim800 import ugfx, app, sim800 +import os from tilda import Buttons from tilda import Sensors from machine import ADC @@ -38,6 +39,8 @@ else: ugfx.Label(5, 185, 240, 15, simversion) +ugfx.Label(5, 215, 240, 30, "Badge firmware version:\n{}".format(os.uname().version)) + ugfx.Label(5, 300, 240, 15, "** Hold A or B or MENU to exit **") From 49d0356991f221ca55a54d0a139e6a9c7015ae1d Mon Sep 17 00:00:00 2001 From: Heinrich Mellmann Date: Sun, 9 Sep 2018 11:14:18 +0200 Subject: [PATCH 61/89] removed unnecessary images show every frame --- nyan/main.py | 10 ++-------- shared/nyan/10.png | Bin 756 -> 0 bytes shared/nyan/11.png | Bin 773 -> 0 bytes shared/nyan/6.png | Bin 773 -> 0 bytes shared/nyan/7.png | Bin 766 -> 0 bytes shared/nyan/8.png | Bin 755 -> 0 bytes shared/nyan/9.png | Bin 766 -> 0 bytes 7 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 shared/nyan/10.png delete mode 100644 shared/nyan/11.png delete mode 100644 shared/nyan/6.png delete mode 100644 shared/nyan/7.png delete mode 100644 shared/nyan/8.png delete mode 100644 shared/nyan/9.png diff --git a/nyan/main.py b/nyan/main.py index da0dba8..3efca5c 100644 --- a/nyan/main.py +++ b/nyan/main.py @@ -8,13 +8,7 @@ ___dependencies___ = ["sleep", "app", "ugfx_helper", "shared/nyan/2.png", "shared/nyan/3.png", "shared/nyan/4.png", - "shared/nyan/5.png", - "shared/nyan/6.png", - "shared/nyan/7.png", - "shared/nyan/8.png", - "shared/nyan/9.png", - "shared/nyan/10.png", - "shared/nyan/11.png"] + "shared/nyan/5.png"] ___categories___ = ["Homescreens", "Other"] @@ -31,7 +25,7 @@ n = 0 r = 270 while True: ugfx.display_image( 0, 90, "shared/nyan/{}.png".format(n) ) - n = (n+2) % 12 + n = (n+1) % 6 sleep.sleep_ms(10) if Buttons.is_pressed(Buttons.BTN_B): diff --git a/shared/nyan/10.png b/shared/nyan/10.png deleted file mode 100644 index 187ed6142c9c84a280e465681ccd3200ec6d1a3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>Dp1!W^k2smc zjO0Bg*-QmWpYe2Y45_&F_Ev6DlYszR!p_FoFIgS*1KzTR>}ZTxV86p@{e1;%-)TB3 zD?$%`|JypbpMCDlmKCc-n-uuH+{{@F5)RaFOg{VX*PAy#OcM??=(FxAoIEACsOa&h zlTUdhJ}i2upZjUmy6k;h!k;gY1*&GWF{@Nro_Tkdqj`T29AYlfNwYKihWU zd`9Lv#u@XEJh^7Nw@=uJ>vHdgIcFHy{#493;$i7^XlhyB?tOEf#JWC^GI%iaz}{Nz zy>otqEkAffT0weKGuP=Y@9iTLf|w*e^d#J_ULI5?#`^8l&808A`Vvc@W+*>gmbvfh zs%^aUpU7(g?P1FK^}&+yUP=9dfYX}tEmzy`-gvB=S-n#yQrLun%|_YcdP2Fo8e8=~ zuIkgA{@*Vz?P%G}$o6NS!GC_2zYnb%p1yk?D|MhDo$0hy;*Bp4Yna~TcF!qNV3+#G zb+o(iZSs3Dg9oh#XUc5sZ@;v!*)!6TfjLgV=hn~new}M&8W{D(&bDdI9oMtGQMszv zl9_E!#*fq6f2`EtvNCbsY0M{KkifogyTwr*y{*^I{cLW1nP^(AMosyQc3s(|JpsS4GC1D_?n3r0XePm8t#koz39E&cjpWtvxo#R!ha`?qTAoP%`+s z*5k&tRndOmKZQhW@Ho&A&$N8a)>P(KJCZF6BN*8B*xYD4tp2<>de4csYm8$GZroHz zVv_g}VW7LfYN~Mi*{jm}sbL=vU+MpOcJ%?apuKf=D|JrWzb{K-ySDEfx5S4hiBX}y z7ezgM@=JGDNkaMa57!Ju?f3J(L`Tk=IS$Hbc4Au)bJ=I+!@kf^X@_&b0bvy2DbX(!#y+qcZiIL~W z)erMb7aTN*_4{D9&bm!VE8#$cI?L+g2Qv4n26(#tYp>Hi#JM->K!Z3N_xRdP`(kYX@0FtpG$u+%j$3NbRUGBvO=HqDp1!W^k2smc zjO0Bg*-QmW-}Q8H45_&F_Lg_vVFeM^fOK}YQsyNSt@1AMK6xyAMEZpScLw{ty28II z6^zXPuI#^OUDWeXz?uS?a zwbX;lbUC^i3v53y8a!w{uuSaaySU?=oriuh%-C*3b-cg%Lox%5ED z;6drZLz>S6WUpWL5Z^gBxv;?7k=CD5F6B!uGe~^sN_g6QwkJj4 z**@`Y(}bngWo_zjkz?lhG5_Gq&-DuT>|?AA?*Com4Rn)NLYz9w>GTN0AFG*bxZd=o zZxhtID3p0?vj+q7zu+HhSM5{&kQ#I2RbiL=lD}-i+6f05wzI!K^7&x)k|X?MnsezTTp|*jMm4QKrV6GF2hTQy= Z%(P0}8h-j*{Rh;*;OXk;vd$@?2>{^$JO2Ox diff --git a/shared/nyan/7.png b/shared/nyan/7.png deleted file mode 100644 index 73ce179b7e91cb615ba17334074a8717d8ad3672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>D zkvYzEkGXE$s#RWl*ThfFkugX(z_U&F-HDH31&k6OVh{H{iJa|wQLG}f#diIZV+Y$$ zFY^DA&MfgE>0!?kZ~lxOk-ojV*FAANaMtx{>czI3GZKKh_8#8inPqX=cNP2PkE;)! zwLZ}Bo-xffJ4p8P7p@Anh`DLv2O6HYCkLN@^da-buCrl&$C!){A7Tn`VAL1Bw(;u5 zUs5~wd*ldm$=_gmD99=CL8f38f9rv-EXtwlw>;hO>bU0bFfO?}mJ)xe?B*}cw9aIE z@sg3PCVR)1=BqAz=7xtaz84PBY|dS{LB+eo{RTtA0pr6;4Cj0bRy{n!@&99c!mha* zKc4PB>z>yC>xOm00e+_Mf9@44IRD@AtYCfL%V|I#I6atirL(D;SC8YK_EcsB)2MlJ>gH2zq{P%uj6?>rJI-mL* zwSCExzRYKl_@I0sR)#$@DQuJ6WCrFq^B#p0Eq@rIP6^LR$=_Z8jC9o!*NBpo#FA92 zqVq{=tYG7q-sBK_mWnj=DnCpb1AvZrIGp!Q0hMzuH{{b~H Nc)I$ztaD0e0sy|>Glu{G diff --git a/shared/nyan/8.png b/shared/nyan/8.png deleted file mode 100644 index 04db1813924395a2a29a5056c4d4c95ea2e09c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^AAooY3p0?6m)rRkNU@|l`Z_W&Z0zU$lgJ9>DmpF540E6%ve^Z-0=Y9qriGuJ4Yv(?hGkNk} z|J3V}1`k{h>+d_MUm81m`q|Z9JAOwV<*e)X6g=|N z02TTM^zmfcWbJzKK>?GvL1Wx+T7Zy8z3`!q26%RcK~(z-QviOh`t z`#gE|Ogt5J2K_503#W3|u;18oc0B`|P2>-wE&1G6J<~*DnAvQiZ-^Ky^jrEaYc{(u z@7ue34EihoyMJu(=wRac;rC%yotk`J-iM&GKEG=!KAcp1u>AGcSGlFu4mrV`5+8gM zHMw?pHJ9%9o%~^&{hWvGKc99@vb$Fl(K$23{v104^E|;dwI9?ty6?|wOZaDD_~Ehp zbaUChoo_@99vnS%jy-C!(;Q~WU&pt$%$586jET)gct?t@p+TfBSGUCn#Z6X1(Hxl? zWqTr6nIt}lBz%2tpgMnH{jw$R6GWEIWoG25s4UnpEjj2&$bklN-rL^Dj9W`zbqe+OO2Vs}kNeFfylY$S(5N>u)MP&>+rRJ?W%b`ySm7hq&0^JvnwT z-Sj2*-#iB9I9(mjeZI|&vu~E{&Q~{Q$}^jqb*atrMgpV6hf9gOJftFKxvpZr{B8Ha zv(^V1uCrg>Q1nXGl+}iLjsIrugah5J>z#j_gK z-ri+Pl&bxgUe?Ir!6os*r@(&>&voWCA-0zXJn9NtpRU)Fj^^XHqpg4Y;;3LbWp&gb%$o@0?{bYZ8?rPG~l z@%6WAJj+YA`yXhS&$?{4>tC4@7v!(Yyt`_+Hs(NsJlpZb4|=Y2wzXcIQ}AAI^1U}% zKb}O&zI4)PJ9LiM;K9>FFLe#PmsGLaIseyds%!Riy-}>tz?jb=mg4(&|B-!{S$Qg6 z7pz%j_3?_*TOkV$g9qsiyDRuExvWWHW@BXABl<)9inUP9lTPM$z(`juag8WRNi0dV zN-jzTQVd20h8DU8mbwN;Aw~vPrUq8VhS~;3Rt5$gg1Js88glbfGSez?YxwDN^&e0J NgQu&X%Q~loCICURF@^vD From bc0fa1f8cb8b638e2d83081b9a435eae641dd8b4 Mon Sep 17 00:00:00 2001 From: Filip Wieland Date: Sun, 9 Sep 2018 13:14:30 +0100 Subject: [PATCH 62/89] Trains - Initial commit --- trains/main.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 trains/main.py diff --git a/trains/main.py b/trains/main.py new file mode 100644 index 0000000..5685313 --- /dev/null +++ b/trains/main.py @@ -0,0 +1,56 @@ +"""Mini train departure board for your badge + +Configurable with which station you want to monitor +""" +___title___ = "trains" +___license___ = "MIT" +___dependencies___ = ["app", "sleep", "wifi", "http", "ugfx_helper"] +___categories___ = ["Homescreens", "Other"] + +# Config + +STATION_CODE = "DEP" +API_URL = "https://huxley.apphb.com/all/{}?expand=true&accessToken=D102521A-06C6-44C9-8693-7A0394C757EF" + +import wifi +import ugfx +import http +import ujson +import app +import sleep +from tilda import Buttons, LED + + +# initialize screen +ugfx.init() +ugfx.clear() + +# initial screen +ugfx.text(5, 5, "Will monitor station:", ugfx.BLACK) +ugfx.text(200, 5, STATION_CODE, ugfx.BLUE) + +def get_trains(): + global station_data + + LED(LED.RED).on() # Red for total get_trains + try: + station_json = http.get(API_URL.format(STATION_CODE)).raise_for_status().content + LED(LED.GREEN).on() # Green for parsing + station_data = ujson.loads(station_json) + except: + print('oh poop') + + LED(LED.RED).off() + LED(LED.GREEN).off() + +get_trains() +ugfx.text(5, 20, station_data['locationName'], ugfx.RED) + +# waiting until a button has been pressed +while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): + sleep.wfi() + + +# closing +ugfx.clear() +app.restart_to_default() From c6342ff214baad8d7e4a58dec7918065f63a042a Mon Sep 17 00:00:00 2001 From: Rob Berwick Date: Sun, 9 Sep 2018 16:18:37 +0100 Subject: [PATCH 63/89] Add Horse Praise and Melon Worship app --- praise_horse_worship_melon/horse.gif | Bin 0 -> 28566 bytes praise_horse_worship_melon/loading.gif | Bin 0 -> 15721 bytes praise_horse_worship_melon/main.py | 58 +++++++++++++++++++++++++ praise_horse_worship_melon/melon.gif | Bin 0 -> 31395 bytes 4 files changed, 58 insertions(+) create mode 100644 praise_horse_worship_melon/horse.gif create mode 100644 praise_horse_worship_melon/loading.gif create mode 100644 praise_horse_worship_melon/main.py create mode 100644 praise_horse_worship_melon/melon.gif diff --git a/praise_horse_worship_melon/horse.gif b/praise_horse_worship_melon/horse.gif new file mode 100644 index 0000000000000000000000000000000000000000..217d97675d0fae22eb11d6aa8985886c616d3ed9 GIT binary patch literal 28566 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 literal 0 HcmV?d00001 From d72cdc92725d70f429024951a2b490a040d977b6 Mon Sep 17 00:00:00 2001 From: Thomas Lake Date: Sun, 9 Sep 2018 18:30:52 +0100 Subject: [PATCH 64/89] Optionally limit sync to bootstrapped apps tilda_tools sync # Syncs everything, as before tilda_tools --bootstrapped-apps sync # Removes any apps not marked as bootstrapped in their main.py Fixes #123 --- .development/tilda_tools.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.development/tilda_tools.py b/.development/tilda_tools.py index 15f1fa9..6b7ea8f 100755 --- a/.development/tilda_tools.py +++ b/.development/tilda_tools.py @@ -61,6 +61,7 @@ def main(): cmd_parser.add_argument('-b', '--baudrate', default=115200, help='the baud rate of the serial device') cmd_parser.add_argument('-v', '--verbose', action='store_true', help='adds more output') cmd_parser.add_argument('--skip-wifi', action='store_true', help='does not sync wifi.json') + cmd_parser.add_argument('--bootstrapped-apps', action='store_true', help='[Sync] only bootstrapped apps by default') cmd_parser.add_argument('--print_resources', action='store_true', help='prints resources in json') cmd_parser.add_argument('--boot', help='defines which app to boot into after reboot') cmd_parser.add_argument('--run', help='like run, but after a sync') @@ -120,6 +121,13 @@ def main(): pyboard_util.hard_reset(args) if command == "sync": + if args.bootstrapped_apps: + for k,val in list(resources.items()): + if val.get("type", None) == "app" and not val.get("bootstrapped", False): + if args.verbose: + print("Removing app '{0}' from sync list".format(k)) + del resources[k] + if args.clean: sync.clean(args) paths = args.paths if len(args.paths) else None From dbb8515fb82ef8793fc3d764b483f74877d30156 Mon Sep 17 00:00:00 2001 From: Thomas Lake Date: Sun, 9 Sep 2018 18:45:11 +0100 Subject: [PATCH 65/89] Don't remove paths explicitly specified on command line --- .development/tilda_tools.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.development/tilda_tools.py b/.development/tilda_tools.py index 6b7ea8f..44424f3 100755 --- a/.development/tilda_tools.py +++ b/.development/tilda_tools.py @@ -121,16 +121,17 @@ def main(): pyboard_util.hard_reset(args) if command == "sync": + paths = args.paths if len(args.paths) else None if args.bootstrapped_apps: for k,val in list(resources.items()): - if val.get("type", None) == "app" and not val.get("bootstrapped", False): - if args.verbose: - print("Removing app '{0}' from sync list".format(k)) - del resources[k] + if val.get("type", None) == "app": + if not k in paths and not val.get("bootstrapped", False): + if args.verbose: + print("Removing app '{0}' from sync list".format(k)) + del resources[k] if args.clean: sync.clean(args) - paths = args.paths if len(args.paths) else None synced_resources = sync.sync(args, paths, resources, args.verbose, args.skip_wifi) if (command in ["reset", "sync"]) or run_tests: From bdae1dba3b45e6670318343971a98721bdeb128b Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Sun, 9 Sep 2018 21:01:24 +0100 Subject: [PATCH 66/89] =?UTF-8?q?Allow=20=E2=80=98z=E2=80=99=20key=20to=20?= =?UTF-8?q?be=20typed=20on=20keypad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit oops. --- lib/dialogs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dialogs.py b/lib/dialogs.py index c32f201..eecebd1 100644 --- a/lib/dialogs.py +++ b/lib/dialogs.py @@ -129,7 +129,7 @@ def handle_keypad(edit, numeric): buttons.Buttons.BTN_6: ["m", "n", "o", "6"], buttons.Buttons.BTN_7: ["p", "q", "r", "s", "7"], buttons.Buttons.BTN_8: ["t", "u", "v", "8"], - buttons.Buttons.BTN_9: ["w", "x", "y", "9"], + buttons.Buttons.BTN_9: ["w", "x", "y", "z", "9"], buttons.Buttons.BTN_Hash: ["#"], buttons.Buttons.BTN_Star: ["*", "+"], } From 49125fc3d26b115fabb5cf145bf670da77ecd767 Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Mon, 10 Sep 2018 13:36:12 +0100 Subject: [PATCH 67/89] Fix badge store app installation when custom apps are present MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #85. See also #57, though doesn’t fix ‘update all apps’ functionality. --- badge_store/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index 0fa0a47..8a16d80 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -59,7 +59,7 @@ def show_app(a): if install: with WaitingMessage(title="Installing %s" % a, text="Please wait...") as message: - installers = store.install(_get_current_apps() + [a]) + installers = store.install([a]) n = len(installers) for i, installer in enumerate(installers): message.text = "%s (%s/%s)" % (installer.path, i + 1, n) From 1ee0067f231ec4ac3fb2fef5b64dbf897a835884 Mon Sep 17 00:00:00 2001 From: Dave Arter Date: Mon, 10 Sep 2018 14:11:46 +0100 Subject: [PATCH 68/89] Call /update instead of /install on the backend when updating apps The badge has no way of knowing whether an installed app came from the badge store or local development, so simply requests all installed apps when doing an update. The default /install path on the backend will return a 404 if any of the requested apps aren't in the repo. This commit calls /update instead, which doesn't 404 if an app is missing. Depends on emfcamp/Mk4-Backend#2 Fixes #57 --- badge_store/main.py | 2 +- lib/badge_store.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index 8a16d80..5b53447 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -74,7 +74,7 @@ def show_update(): if update: clear() with WaitingMessage(title=title, text="Please wait...") as message: - installers = store.install(_get_current_apps()) + installers = store.update(_get_current_apps()) n = len(installers) for i, installer in enumerate(installers): message.text = "%s (%s/%s)" % (installer.path, i + 1, n) diff --git a/lib/badge_store.py b/lib/badge_store.py index 4be17c6..2eaa026 100644 --- a/lib/badge_store.py +++ b/lib/badge_store.py @@ -34,6 +34,9 @@ class BadgeStore: def install(self, apps): return self._create_installers(self._call("install", {"apps": ",".join(apps)})) + def update(self, apps): + return self._create_installers(self._call("update", {"apps": ",".join(apps)})) + def bootstrap(self): return self._create_installers(self._call("bootstrap")) From 76463fe172b218c9d86230efae8527a455a04093 Mon Sep 17 00:00:00 2001 From: Sam Machin Date: Tue, 11 Sep 2018 08:15:27 +0100 Subject: [PATCH 69/89] Update sim800.py Added functions to setup and connect GPRS data, starting a TCP server and callback handler for server data --- lib/sim800.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/sim800.py b/lib/sim800.py index ebd3da5..1c26ff8 100644 --- a/lib/sim800.py +++ b/lib/sim800.py @@ -25,6 +25,7 @@ dirtybuffer = False # Flag if the buffer could have residual end of reresponsesp # A list of callback functions callbacks = [] +server_callback = None # Globals for remembering callback data clip = "" @@ -105,6 +106,12 @@ def processcallbacks(line): # Check for Bluetooth pairing request if line.startswith("+BTPAIRING:"): btpairing = line[11:].strip() + # Handle TCP Server Data + if line.startswith("+RECEIVE"): + dlen = int(line.split(",")[2].rstrip(":")) + payload = uart.read(dlen) + if server_callback: + micropython.schedule(server_callback, payload) # Check for app callbacks for entry in callbacks: if line.startswith(entry[0]): @@ -847,7 +854,21 @@ def callbuttonpressed_internal(nullparam=None): def endbuttonpressed_internal(nullparam=None): hangup() +#GPRS and TCP server functions +def setup_gprs(): + sim800.command("AT+CIPSHUT", response_timeout=60000, custom_endofdata="SHUT OK") + sim800.command("AT+CGATT?", response_timeout=10000) + sim800.command("AT+CIPMUX=1", response_timeout=10000) + +def connect_gprs(apn): + sim800.command("AT+CSTT=\""+apn+"\"", response_timeout=10000) + sim800.command("AT+CIICR", response_timeout=10000) + sim800.command("AT+CIFSR") + +def start_server(port): + sim800.command("AT+CIPSERVER=1,"+port, response_timeout=10000) + sim800.registercallback('+RECEIVE', handle_data) # Startup... # Start turning on the SIM800 asynchronously From 1a4b656270dd65306948a236e7b4808603db53f5 Mon Sep 17 00:00:00 2001 From: Emily Date: Tue, 11 Sep 2018 18:22:32 +0100 Subject: [PATCH 70/89] + Added function to exit app --- holland/main.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/holland/main.py b/holland/main.py index 1fcfacb..a2efdce 100644 --- a/holland/main.py +++ b/holland/main.py @@ -98,6 +98,9 @@ freq = { "B": 4938, "C2": 5322, } + +def cbButtonMenu(button_id): + restart_to_default() def cbButtonCall(button_id): sim800.speakervolume(100) @@ -155,6 +158,12 @@ def cbButtonHash(button_id): global vip vip = False ugfx.display_image(0, 0, "holland/brenno.png") + +Buttons.enable_interrupt( + Buttons.BTN_Menu, + cbButtonMenu, + on_press=True, + on_release=False); Buttons.enable_interrupt( Buttons.BTN_Call, From a19445f862fcff09cbf8829c9ea8d5c1cad851e3 Mon Sep 17 00:00:00 2001 From: Sam Machin Date: Tue, 11 Sep 2018 19:04:26 +0100 Subject: [PATCH 71/89] Update sim800.py Added GPRS support, `setup_gprs()` will prepare the sim800 for data, `connect_gprs("hologram")` will connect to the hologram APN Also added a function to start a tcp server on the SIM 800 using `start_server(4010)` to listen on port 4010, the payload will be a binary object passed to whatever is defined as `server_callback` --- lib/sim800.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/sim800.py b/lib/sim800.py index 1c26ff8..8db26f5 100644 --- a/lib/sim800.py +++ b/lib/sim800.py @@ -108,10 +108,10 @@ def processcallbacks(line): btpairing = line[11:].strip() # Handle TCP Server Data if line.startswith("+RECEIVE"): - dlen = int(line.split(",")[2].rstrip(":")) + dlen = int(line.split(",")[2].rstrip(":"))+1 payload = uart.read(dlen) if server_callback: - micropython.schedule(server_callback, payload) + micropython.schedule(server_callback, payload[1:]) # Check for app callbacks for entry in callbacks: if line.startswith(entry[0]): @@ -857,18 +857,18 @@ def endbuttonpressed_internal(nullparam=None): #GPRS and TCP server functions def setup_gprs(): - sim800.command("AT+CIPSHUT", response_timeout=60000, custom_endofdata="SHUT OK") - sim800.command("AT+CGATT?", response_timeout=10000) - sim800.command("AT+CIPMUX=1", response_timeout=10000) + command("AT+CIPSHUT", response_timeout=60000, custom_endofdata="SHUT OK") + command("AT+CGATT?", response_timeout=10000) + command("AT+CIPMUX=1", response_timeout=10000) def connect_gprs(apn): - sim800.command("AT+CSTT=\""+apn+"\"", response_timeout=10000) - sim800.command("AT+CIICR", response_timeout=10000) - sim800.command("AT+CIFSR") + command("AT+CSTT=\""+apn+"\"", response_timeout=10000) + command("AT+CIICR", response_timeout=10000) + command("AT+CIFSR") def start_server(port): - sim800.command("AT+CIPSERVER=1,"+port, response_timeout=10000) - sim800.registercallback('+RECEIVE', handle_data) + command("AT+CIPSERVER=1,"+port, response_timeout=10000) + # Startup... # Start turning on the SIM800 asynchronously From edb57cbe3bb05125e29f6bbd0535982c82222cb6 Mon Sep 17 00:00:00 2001 From: Thomas Lake Date: Sun, 9 Sep 2018 16:05:17 +0100 Subject: [PATCH 72/89] Allow default launcher selection This allows e.g. speedlauncher to be used with any of the homescreen apps --- launcher/main.py | 2 +- lib/homescreen.py | 8 +++++++- settings/main.py | 7 +++++++ speedlauncher/main.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/launcher/main.py b/launcher/main.py index a5fe98e..d2498a1 100644 --- a/launcher/main.py +++ b/launcher/main.py @@ -2,7 +2,7 @@ ___title___ = "Launcher" ___license___ = "MIT" -___categories___ = ["System"] +___categories___ = ["System", "Launcher"] ___dependencies___ = ["dialogs", "app", "ugfx_helper"] ___launchable___ = False ___bootstrapped___ = True diff --git a/lib/homescreen.py b/lib/homescreen.py index 5afa460..19bf903 100644 --- a/lib/homescreen.py +++ b/lib/homescreen.py @@ -51,7 +51,13 @@ def sleep_or_exit(interval = 0.5): # todo: do this better - check button multiple times and sleep for only a short while if buttons.is_triggered(tilda.Buttons.BTN_Menu): clean_up() - App("launcher").boot() + launcher = "launcher" + try: + with open("default_launcher.txt", "r") as dl: + launcher=dl.readline() + except OSError: + pass + App(launcher).boot() sleep.sleep(interval) diff --git a/settings/main.py b/settings/main.py index ab344e2..f0bcdfe 100644 --- a/settings/main.py +++ b/settings/main.py @@ -33,12 +33,19 @@ def settings_startup_app(state): def settings_wifi(state): wifi.choose_wifi() +def settings_launcher(state): + apps = app.get_apps("Launcher") + selection = prompt_option([{"title": a.title, "app": a} for a in apps], text="Select App:", none_text="Back", title="Set default launcher") + if selection: + app.write_launch_file(selection["app"].name, "default_launcher.txt") + def settings_main(state): return selection({ "Homescreen Name": change_database_string("Set your name", "homescreen.name"), "Homescreen Callsign": change_database_string("Set your callsign", "homescreen.callsign"), "Wifi": settings_wifi, "Startup app": settings_startup_app, + "Default Launcher": settings_launcher, "Badge Store": settings_badge_store }, none_text="Exit") diff --git a/speedlauncher/main.py b/speedlauncher/main.py index f56174c..a78725d 100644 --- a/speedlauncher/main.py +++ b/speedlauncher/main.py @@ -2,7 +2,7 @@ ___name___ = "Speed Launcher" ___license___ = "WTFPL" -___categories___ = ["System"] +___categories___ = ["System", "Launcher"] ___dependencies___ = ["app", "ugfx_helper"] ___launchable___ = False ___bootstrapped___ = False From fade33fd3d90e551a57ef74519852fa8095f35cb Mon Sep 17 00:00:00 2001 From: Molive Date: Wed, 12 Sep 2018 22:17:02 +0100 Subject: [PATCH 73/89] Add Arp music synth --- soundsarecool/main.py | 97 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 soundsarecool/main.py diff --git a/soundsarecool/main.py b/soundsarecool/main.py new file mode 100644 index 0000000..fea225a --- /dev/null +++ b/soundsarecool/main.py @@ -0,0 +1,97 @@ +''' +A small N channel music player a la 8088 MPH +(Demo is only two channels) + +By Molive^SLP +''' + +___name___ = "Arp Music Player" +___title___ = "Arp Music Player" +___license___ = "WTFPL" +___dependencies___ = ["ugfx_helper", "speaker"] +___categories___ = ["Demo","Sound"] + +import speaker +import utime + +from app import restart_to_default +from tilda import Buttons + +channels = [ #Supports up to n simultaneous channels. + #Each channel will loop it's data independently from the others + [ #and channels do not need the same length of data in them. + ('F4',2), #No. of channels is decided on startup, and all channels are running at any one time. + ('D#4',2), + ('D4',2), + ('C#4',1), + ('D#4',1), + ], + + ##[ + ##('A#3',4), + ##], + + ##[ + ##('C4',4), + ##], + + [ + ('F5',0.125), + ('G#5',0.25), + ('F5',0.125), + ('A#5',0.25), + ('F5',0.125), + ('C6',0.25), + ('F5',0.125), + ('A#5',0.25), + ('F5',0.25), + ('G#5',0.25), + ], + + ] + +def prt(s): + ugfx.clear() + ugfx.text(5,5,str(s),0) + +import ugfx +ugfx.init() + +prt("RUNNING SOUND TEST") + +utime.sleep(1) + +prt("Use menu to reboot") + +speaker.enabled(True) + +channel_waits = [ #Add more of these to increase the max channel count + [-1,utime.ticks_ms()], + [-1,utime.ticks_ms()], + [-1,utime.ticks_ms()], + [-1,utime.ticks_ms()], + ] + +current_channel = 0 + +while True: #Main awesome loop which handles all music channels. Can handle and arbitrary amount, but lags at high numbers. + for channel in channels: + ##print(channel_waits[current_channel][1]) #Uncomment some of these for more debug info :P + if channel_waits[current_channel][1] == 0 or channel_waits[current_channel][1] <= utime.ticks_ms(): + print("CHANGING CHANNEL "+str(current_channel)) + channel_waits[current_channel][0] += 1 + if channel_waits[current_channel][0] == len(channel): + channel_waits[current_channel][0] = 0 + channel_waits[current_channel][1] += (channels[current_channel][channel_waits[current_channel][0]][1]*1000.0) + speaker.note(channel[channel_waits[current_channel][0]][0]) + ##print(channel[channel_waits[current_channel][0]]) + if Buttons.is_pressed(Buttons.BTN_Menu): + print("BAIL BAIL BAIL") + restart_to_default() + current_channel += 1 + if current_channel == len(channels): + current_channel = 0 + ##print(current_channel) + utime.sleep(0.03) #Decrease this for more accurate but weirder arps. Comment it out for insane madness + +restart_to_default() \ No newline at end of file From f160547e7d40f64a608d400276f2b49ed3b1688d Mon Sep 17 00:00:00 2001 From: Filip Wieland Date: Wed, 12 Sep 2018 22:26:48 +0100 Subject: [PATCH 74/89] Departure board for Deptford --- trains/main.py | 86 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 15 deletions(-) diff --git a/trains/main.py b/trains/main.py index 5685313..d5a0ffc 100644 --- a/trains/main.py +++ b/trains/main.py @@ -20,17 +20,23 @@ import app import sleep from tilda import Buttons, LED - -# initialize screen -ugfx.init() -ugfx.clear() - -# initial screen -ugfx.text(5, 5, "Will monitor station:", ugfx.BLACK) -ugfx.text(200, 5, STATION_CODE, ugfx.BLUE) - +def init(): + # initialize screen + ugfx.init() + ugfx.clear() + ugfx.orientation(90) + ugfx.backlight(50) + + # ensure wifi connection + if not wifi.is_connected(): + wifi.connect(show_wait_message=True) + + # show initial screen + ugfx.text(5, 5, "Will monitor station:", ugfx.BLACK) + ugfx.text(200, 5, STATION_CODE, ugfx.BLUE) + def get_trains(): - global station_data + station_data = None LED(LED.RED).on() # Red for total get_trains try: @@ -38,17 +44,67 @@ def get_trains(): LED(LED.GREEN).on() # Green for parsing station_data = ujson.loads(station_json) except: - print('oh poop') + print('Fuck') LED(LED.RED).off() LED(LED.GREEN).off() + return station_data -get_trains() -ugfx.text(5, 20, station_data['locationName'], ugfx.RED) +def get_time(station_data): + return ':'.join(station_data['generatedAt'].split('T')[1].split(':')[0:2]) -# waiting until a button has been pressed +def is_red(service): + return service['isCancelled'] or service['etd'] != 'On time' + +def get_arrival(service): + if service['isCancelled']: + return 'CANX' + + if service['eta'] == 'On time': + return service['sta'] + + return service['eta'] + +def get_title(name, has_error): + if has_error: + return 'ERR ' + name + + return name + +def show_trains(station_data, has_error): + ugfx.clear() + ugfx.area(0, 0, 240, 25, + ugfx.RED if has_error else ugfx.GRAY) + title = get_title(station_data['locationName'], has_error) + ugfx.text(5, 5, title, + ugfx.WHITE if has_error else ugfx.BLACK) + ugfx.text(195, 5, get_time(station_data), ugfx.BLUE) + names = ugfx.Container(0, 25, 190, 295) + names.show() + for idx, service in enumerate(station_data['trainServices']): + names.text(5, 15 * idx, service['destination'][0]['locationName'], ugfx.BLACK) + ugfx.text(195, 25 + (15 * idx), get_arrival(service), ugfx.RED if is_red(service) else ugfx.BLUE) + +def show_error(): + ugfx.clear() + ugfx.text(5, 5, 'Error :(', ugfx.RED) + +init() +station_data = None +has_error = False while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): - sleep.wfi() + new_station_data = get_trains() + if new_station_data == None: + has_error = True + else: + station_data = new_station_data + has_error = False + + if station_data == None: + show_error() + else: + show_trains(station_data, has_error) + sleep.sleep_ms(30 * 1000) # closing From 098a07e0a4c04f4dd87ecb87236729aa8acc76fb Mon Sep 17 00:00:00 2001 From: Sam Machin Date: Fri, 14 Sep 2018 08:00:41 +0100 Subject: [PATCH 75/89] Update sim800.py Few more tweaks to GPRS handling after real world testing with an app --- lib/sim800.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/sim800.py b/lib/sim800.py index 8db26f5..cb5c53a 100644 --- a/lib/sim800.py +++ b/lib/sim800.py @@ -866,8 +866,16 @@ def connect_gprs(apn): command("AT+CIICR", response_timeout=10000) command("AT+CIFSR") -def start_server(port): - command("AT+CIPSERVER=1,"+port, response_timeout=10000) +def stop_gprs(): + command("AT+CIPSHUT", response_timeout=60000, custom_endofdata="SHUT OK") + +def start_server(port, callback): + global server_callback + server_callback = callback + command("AT+CIPSERVER=1,"+str(port), response_timeout=10000) + +def stop_server(): + command("AT+CIPSERVER=0", response_timeout=10000) # Startup... From 912cc34269b529e4e817eb402105b67deaecb51f Mon Sep 17 00:00:00 2001 From: Sam Machin Date: Fri, 14 Sep 2018 08:02:55 +0100 Subject: [PATCH 76/89] Create main.py Sample application for using Hologram with GPRS --- hologram_demo/main.py | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 hologram_demo/main.py diff --git a/hologram_demo/main.py b/hologram_demo/main.py new file mode 100644 index 0000000..25bcfbe --- /dev/null +++ b/hologram_demo/main.py @@ -0,0 +1,51 @@ +"""This app connects to the Hologram service via GPRS displays recieved data on the screen and sets the neopixles""" + +___title___ = "Hologram Demo" +___license___ = "MIT" +___dependencies___ = ["app", "sim800"] +___categories___ = ["EMF", "System"] +___bootstrapped___ = False + +#import ugfx, os, time, sleep, app, sim800 + +import ugfx, app, sim800 +import os +from tilda import Buttons +from time import sleep +from machine import Neopix + + +n = Neopix() + +ugfx.init() +ugfx.clear() +ugfx.set_default_font(ugfx.FONT_FIXED) + + +def callback(data): + payload=data.decode("utf-8") + ugfx.Label(5, 100, 240, 15, payload) + colour = int(payload) + n.display([colour,colour]) + +print('Launching Hologram Demo') +ugfx.Label(5, 20, 240, 15, "Starting....") +sim800.setup_gprs() +ugfx.Label(5, 20, 240, 15, "GPRS Ready") +sim800.connect_gprs('hologram') +ugfx.Label(5, 40, 240, 15, "GPRS Connected") +sim800.start_server(4010, callback) +ugfx.Label(5, 60, 240, 15, "Server Started") + + +ugfx.Label(5, 300, 240, 15, "** Hold A or B or MENU to exit **") + + +while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): + sleep(2) + +ugfx.clear() +ugfx.Label(5, 20, 240, 15, "Stopping....") +sim800.stop_server() +sim800.stop_gprs() +app.restart_to_default() From 6683e2bc8d3e285e28c45df1ec13d904a95158e2 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Fri, 14 Sep 2018 23:26:48 +0100 Subject: [PATCH 77/89] Tidy up with .format() --- badge_store/main.py | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/badge_store/main.py b/badge_store/main.py index 01ab64d..48e85cb 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -56,24 +56,15 @@ def show_app(a,c): with WaitingMessage(title=title, text="Loading app description..."): app_info = store.get_app(a) - app_text = "App:\n" - try: - app_text += app_info["title"] + '\n' - except: - pass - finally: - app_text += a + '\n\nDescription:\n' + app_info["description"].strip() + + # Try to get the 'title' key from app_info, falling back to the value of a if not present + name = app_info.get("title", a) + desc = app_info["description"].strip() + app_text = """App:\n{}\n\nDescription:\n{}""".format(name, desc) install = prompt_boolean(app_text , title="Install App", true_text="Install", false_text="Back") if install: - app_text = "App:\n" - try: - app_text += app_info["title"] + '\n' - except: - pass - finally: - app_text += a + '\n\n' - + app_text = "App:\n{}\n\n".format(name) with WaitingMessage(title="Installing App...", text="%sGetting ready..." % app_text) as message: installers = store.install(_get_current_apps() + [a]) n = len(installers) @@ -113,12 +104,9 @@ def show_remove(): if app_to_remove: ospath.recursive_rmdir(app_to_remove) app.uncache_apps() - app_text = "App \"" + app_to_remove + "\"" - try: - app_text += " (" + app_info["title"] + ')' - except: - pass - notice("%s has been removed." % app_text, title="Remove Success!", close_text="Back") + + app_text = """App:\n{}""".format(app_to_remove) + notice("\"%s\"\n\nThe app has now been removed." % app_text, title="Remove Success!", close_text="Back") def main_menu(): while True: From 4a6271de0731a163e143bbefdb51f94323fee152 Mon Sep 17 00:00:00 2001 From: Kimball Johnson Date: Sat, 15 Sep 2018 09:53:09 +0100 Subject: [PATCH 78/89] Add homescreen for PyCon --- home_pycon/main.py | 93 +++++++++++++++++++++++++++++++++++ home_pycon/python_single.png | Bin 0 -> 963 bytes 2 files changed, 93 insertions(+) create mode 100644 home_pycon/main.py create mode 100644 home_pycon/python_single.png diff --git a/home_pycon/main.py b/home_pycon/main.py new file mode 100644 index 0000000..bad3158 --- /dev/null +++ b/home_pycon/main.py @@ -0,0 +1,93 @@ +"""Default homescreen + +This is the default homescreen for the Tilda Mk4. +It gets automatically installed when a badge is +newly activated or reset. +""" + +___title___ = "Homescreen (PyCon)" +___license___ = "MIT" +___categories___ = ["Homescreens"] +___dependencies___ = ["homescreen"] +___launchable___ = False +___bootstrapped___ = True + +import ugfx +from homescreen import * +import time +from tilda import Buttons + +init() + +# Padding for name +intro_height = 30 +intro_text = "Hi! I'm" +name_height = 60 +status_height = 20 +info_height = 30 +logo_path = "home_pycon/python_single.png" +logo_height = 82 +logo_width = 55 + +# Maximum length of name before downscaling +max_name = 8 + +# Background stuff +bg_color = 0xfecb2f +ugfx.clear(ugfx.html_color(bg_color)) + +# Colour stuff +style = ugfx.Style() +style.set_enabled([ugfx.BLACK, ugfx.html_color(bg_color), ugfx.html_color(bg_color), ugfx.html_color(bg_color)]) +style.set_background(ugfx.html_color(bg_color)) +ugfx.set_default_style(style) + +# Draw for people to see +ugfx.orientation(90) + +# Logo stuff +ugfx.display_image( + int((ugfx.width() - logo_width) / 2), + int((ugfx.height() - logo_height) / 2), + logo_path +) + + + + +# Draw introduction +ugfx.set_default_font(ugfx.FONT_TITLE) +ugfx.Label(0, ugfx.height() - name_height - intro_height, ugfx.width(), intro_height, intro_text, justification=ugfx.Label.CENTER) +# Process name +name_setting = name("Set your name in the settings app") +if len(name_setting) <= max_name: + ugfx.set_default_font(ugfx.FONT_NAME) +else: + ugfx.set_default_font(ugfx.FONT_MEDIUM_BOLD) +# Draw name +ugfx.Label(0, ugfx.height() - name_height, ugfx.width(), name_height, name_setting, justification=ugfx.Label.CENTER) + + + +# Draw for wearer to see +ugfx.orientation(270) +# Title +ugfx.set_default_font(ugfx.FONT_TITLE) +ugfx.Label(0, ugfx.height() - info_height * 2, ugfx.width(), info_height, "TiLDA Mk4", justification=ugfx.Label.CENTER) +# info +ugfx.Label(0, ugfx.height() - info_height, ugfx.width(), info_height, "Long Press MENU", justification=ugfx.Label.CENTER) + +ugfx.set_default_font(ugfx.FONT_SMALL) +status = ugfx.Label(0, ugfx.height() - info_height * 2 - status_height, ugfx.width(), status_height, "", justification=ugfx.Label.CENTER) + +# update loop +while True: + text = ""; + value_wifi_strength = wifi_strength() + value_battery = battery() + if value_wifi_strength: + text += "Wi-Fi: %s%%, " % int(value_wifi_strength) + if value_battery: + text += "Battery: %s%%" % int(value_battery) + status.text(text) + sleep_or_exit(0.5) diff --git a/home_pycon/python_single.png b/home_pycon/python_single.png new file mode 100644 index 0000000000000000000000000000000000000000..1eaae1ce92c48eb8ec84bf65f3e2d4ac7f0734dc GIT binary patch literal 963 zcmeAS@N?(olHy`uVBq!ia0vp^=0F_8!3HEhJn~r&q*#ibJVQ8upoSx*1IXtr@Q5sC zVBk9f!i-b3`J{n@k|nMYCBgY=CFO}lsSM@i<$9TU*~Q6;1*v-ZMd`EO*+?-kFgtj< zIEGZrc{|%bCnQv)eSh)&*IN|k+Iy`LS|O;SxTGzCBXOzFg)s4~9@Ruor$y2c4hSGIE8hWqoSso6f@_wR>mn8KCF+3T9BG{Ys=-CmU;;tqQCB4;9FmO z^6#|g^NQcU_kOp>e6vL2vL(hFk9h3y_1e-{>DX(hf66I=aRSpvhsO;JC#!=k7jXD6 zR4VAdu>$d+BuJ@89o0YN~Z}1#CH-$08D0OlBrr5X3o1~hb zUYZ$UBz~W1Q}6EUYxW7$g?)K!9V@FYx6g)k-q z`(M9YHn$No+2-NBbnk(0yRRGFy*uTM*gvO?UZoOK8}a-nAC^sB6C*M|L|%W|&Dt+E z?Df0FOyq!l;+oXUQLL8|s}`g{HKyPJMGMxT*BdHk9L!_=bZ z$)_xJ@5Np`beenC@)+?(+1KLjxt|~HW$#+EDsq$5hhLY{ovOohdLGYgFrWHJ(#lxw zLeTCEHJZT{h?kiW?5D?AvvAh^K9;dohO&)SM&r$uAa9(dncFkVqumdK II;Vst0KFE#jsO4v literal 0 HcmV?d00001 From 268ef625f23f10575f7503537cddc48426fcc05a Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sat, 15 Sep 2018 15:52:59 +0100 Subject: [PATCH 79/89] Allow scrolling of labels by \n --- lib/dialogs.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/dialogs.py b/lib/dialogs.py index c53c597..34eff86 100644 --- a/lib/dialogs.py +++ b/lib/dialogs.py @@ -49,11 +49,23 @@ def prompt_boolean(text, title="TiLDA", true_text="Yes", false_text="No", font=F false_text = "B: " + false_text ugfx.set_default_font(font) - label = ugfx.Label(5, 30, width - 10, height - 80, text = text, parent=window) + label = ugfx.Label(5, 30, width - 10, height - 80, text = text, parent=window, justification=4) + ugfx.set_default_font(FONT_MEDIUM_BOLD) button_yes = ugfx.Button(5, height - 40, width // 2 - 10 if false_text else width - 15, 30 , true_text, parent=window) button_no = ugfx.Button(width // 2, height - 40, width // 2 - 10, 30 , false_text, parent=window) if false_text else None - + + # Find newlines in label text to scroll. + def find_all(a_str, sub): + start = 0 + while True: + start = a_str.find(sub, start) + if start == -1: return + yield start + 1 # Trap: \n becomes a single character, not 2. + start += len(sub) # use start += 1 to find overlapping matches + new_line_pos = [0] + list(find_all(text, '\n')) + text_scroll_offset = 0 + try: #button_yes.attach_input(ugfx.BTN_A,0) # todo: re-enable once working #if button_no: button_no.attach_input(ugfx.BTN_B,0) @@ -64,6 +76,16 @@ def prompt_boolean(text, title="TiLDA", true_text="Yes", false_text="No", font=F sleep.wfi() if buttons.is_triggered(buttons.Buttons.BTN_A): return True if buttons.is_triggered(buttons.Buttons.BTN_B): return False + # Allow scrolling by new lines. + if buttons.is_triggered(buttons.Buttons.JOY_Down): + if text_scroll_offset < len(new_line_pos)-1: + text_scroll_offset = text_scroll_offset + 1 + label.text(text[new_line_pos[text_scroll_offset]:]) + + if buttons.is_triggered(buttons.Buttons.JOY_Up): + if (text_scroll_offset > 0): + text_scroll_offset=text_scroll_offset - 1 + label.text(text[new_line_pos[text_scroll_offset]:]) finally: window.hide() @@ -166,7 +188,7 @@ def prompt_option(options, index=0, text = None, title=None, select_text="OK", n ugfx.set_default_font(FONT_SMALL) window = ugfx.Container(5, 5, ugfx.width() - 10, ugfx.height() - 10) window.show() - + list_y = 30 if title: From d5c64f4de76c7ad2b34acb2fa20f1dacbb9113d3 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sat, 15 Sep 2018 15:59:37 +0100 Subject: [PATCH 80/89] Back from Install page to category --- badge_store/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index fbf8d29..5708631 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -81,7 +81,8 @@ def show_app(a,c): app_obj.boot() else: show_apps(c) - + else: + show_apps(c) def show_update(): From 7316522b0eec8b2c5476f5d925efce6843d4c52d Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sat, 15 Sep 2018 16:01:31 +0100 Subject: [PATCH 81/89] Give updating dialog a nice title --- badge_store/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badge_store/main.py b/badge_store/main.py index 5708631..5c158c1 100644 --- a/badge_store/main.py +++ b/badge_store/main.py @@ -90,7 +90,7 @@ def show_update(): update = prompt_boolean("Do you want to update all apps on this badge?", title="Update all Apps", true_text="OK", false_text="Back") if update: clear() - with WaitingMessage(title=title, text="Getting updates...") as message: + with WaitingMessage(title="Updating Apps...", text="Getting updates...") as message: update_text = "Downloading files:" installers = store.install(_get_current_apps()) n = len(installers) From 484f7c4063bb25edfc9fcd29ff23814eba15e1d3 Mon Sep 17 00:00:00 2001 From: Matthew Stratford Date: Sat, 15 Sep 2018 16:08:32 +0100 Subject: [PATCH 82/89] Fix right-alignment (clipping) on WaitingMessage --- lib/dialogs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dialogs.py b/lib/dialogs.py index 34eff86..9599aec 100644 --- a/lib/dialogs.py +++ b/lib/dialogs.py @@ -294,7 +294,7 @@ class WaitingMessage: self.window.show() self.window.text(5, 5, title, TILDA_COLOR) self.window.line(0, 25, ugfx.width() - 60, 25, ugfx.BLACK) - self.label = ugfx.Label(5, 40, self.window.width() - 10, ugfx.height() - 40, text = text, parent=self.window) + self.label = ugfx.Label(5, 40, self.window.width() - 15, ugfx.height() - 40, text = text, parent=self.window) # Indicator to show something is going on #self.indicator = ugfx.Label(ugfx.width() - 100, 0, 20, 20, text = "...", parent=self.window) From e86d5955a3fa290548e1b6ed02091c1c3785a68e Mon Sep 17 00:00:00 2001 From: Filip Wieland Date: Sat, 15 Sep 2018 22:20:20 +0100 Subject: [PATCH 83/89] Settings screen, spit and polish --- trains/api.py | 23 ++++++ trains/departure_screen.py | 110 +++++++++++++++++++++++++++ trains/main.py | 150 ++++++++++++++++--------------------- trains/screen.py | 28 +++++++ trains/settings_screen.py | 19 +++++ trains/splash.gif | Bin 0 -> 25760 bytes trains/utils.py | 19 +++++ 7 files changed, 264 insertions(+), 85 deletions(-) create mode 100644 trains/api.py create mode 100644 trains/departure_screen.py create mode 100644 trains/screen.py create mode 100644 trains/settings_screen.py create mode 100644 trains/splash.gif create mode 100644 trains/utils.py diff --git a/trains/api.py b/trains/api.py new file mode 100644 index 0000000..4da4eaf --- /dev/null +++ b/trains/api.py @@ -0,0 +1,23 @@ +import http +import ujson +from tilda import LED + +API_URL = "https://huxley.apphb.com/all/{}?expand=true&accessToken=D102521A-06C6-44C9-8693-7A0394C757EF" + +def get_trains(station_code='LBG'): + print('trains/api: Getting trains for {}'.format(station_code)) + station_data = None + + LED(LED.RED).on() # Red for total get_trains + try: + station_json = http.get(API_URL.format( + station_code)).raise_for_status().content + LED(LED.GREEN).on() # Green for parsing + station_data = ujson.loads(station_json) + except Exception as e: + print('Error:') + print(e) + + LED(LED.RED).off() + LED(LED.GREEN).off() + return station_data diff --git a/trains/departure_screen.py b/trains/departure_screen.py new file mode 100644 index 0000000..2d50dde --- /dev/null +++ b/trains/departure_screen.py @@ -0,0 +1,110 @@ +import sleep +import ugfx +import database +from time import time +from homescreen import time_as_string +from tilda import Buttons +from trains.screen import Screen, S_CONTINUE, S_TO_SETTINGS +from trains.api import get_trains +from trains.utils import get_departure, get_title, is_red + +UPDATE_INTERVAL_SECS = 30 + +class DepartureScreen(Screen): + def __init__(self): + self.station_data = None + self.has_error = False + self.last_update = 0 + self.should_redraw = True + + self._names = None + self._old_names = None + + def enter(self): + self.next_state = S_CONTINUE + self.station_code = database.get('trains.station_code', 'LBG') + self.last_update = 0 + Buttons.enable_interrupt( + Buttons.BTN_A, + lambda t: self.set_next_state(S_TO_SETTINGS), + on_press=True, + on_release=False + ) + + def set_next_state(self, s): + self.next_state = s + + def update(self): + now = time() + if self.last_update < (now - UPDATE_INTERVAL_SECS): + print('trains/departure_screen: Updating data') + new_station_data = get_trains(self.station_code) + if new_station_data == None: + self.has_error = True + self.should_redraw = True + else: + self.station_data = new_station_data + self.has_error = False + self.should_redraw = True + self.last_update = now + + def tick(self): + self.update() + + if self.should_redraw: + if self.station_data == None: + self.show_error() + else: + self.show_trains() + else: + self._destroy_old_names() + + sleep.sleep_ms(500) + + return self.next_state + + def _get_names_container(self): + if self._names != None: + self._names.hide() + self._old_names = self._names + names = ugfx.Container(0, 25, 190, 295) + self._names = names + return names + + def _destroy_old_names(self): + if self._old_names != None: + self._old_names.destroy() + self._old_names = None + def _destroy_names(self): + if self._names != None: + self._names.destroy() + self._names = None + + def show_trains(self): + ugfx.clear() + ugfx.area(0, 0, 240, 25, ugfx.RED if self.has_error else ugfx.GRAY) + title = get_title(self.station_data['locationName'], self.has_error) + ugfx.text(5, 5, title, ugfx.WHITE if self.has_error else ugfx.BLACK) + ugfx.text(195, 5, time_as_string(), ugfx.BLUE) + + names = self._get_names_container() + names.show() + row_num = 0 + for service in self.station_data['trainServices']: + departure = get_departure(service) + if departure: + names.text(5, 15 * row_num, service['destination'][0]['locationName'], ugfx.BLACK) + ugfx.text(195, 25 + (15 * row_num), departure,ugfx.RED if is_red(service) else ugfx.BLUE) + row_num += 1 + + self.should_redraw = False + + def show_error(self): + ugfx.clear() + ugfx.text(5, 5, 'Error :(', ugfx.RED) + self.should_redraw = False + + def exit(self): + self._destroy_old_names() + self._destroy_names() + Buttons.disable_all_interrupt() diff --git a/trains/main.py b/trains/main.py index d5a0ffc..0d681e6 100644 --- a/trains/main.py +++ b/trains/main.py @@ -6,107 +6,87 @@ ___title___ = "trains" ___license___ = "MIT" ___dependencies___ = ["app", "sleep", "wifi", "http", "ugfx_helper"] ___categories___ = ["Homescreens", "Other"] +___bootstrapped___ = False -# Config - -STATION_CODE = "DEP" -API_URL = "https://huxley.apphb.com/all/{}?expand=true&accessToken=D102521A-06C6-44C9-8693-7A0394C757EF" +import database import wifi import ugfx -import http -import ujson import app import sleep +import ntp from tilda import Buttons, LED +from trains import api +from trains import screen +from trains.departure_screen import DepartureScreen +from trains.settings_screen import SettingsScreen + +def init_screen(orientation): + # initialize screen + ugfx.clear() + ugfx.orientation(orientation) + ugfx.backlight(50) + # show initial screen + # photo credit: https://www.flickr.com/photos/remedy451/8061918891 + ugfx.display_image(0, 0, 'trains/splash.gif', 90) + def init(): - # initialize screen + print('trains/main: Init') ugfx.init() - ugfx.clear() - ugfx.orientation(90) - ugfx.backlight(50) - + ntp.set_NTP_time() # ensure wifi connection if not wifi.is_connected(): - wifi.connect(show_wait_message=True) - - # show initial screen - ugfx.text(5, 5, "Will monitor station:", ugfx.BLACK) - ugfx.text(200, 5, STATION_CODE, ugfx.BLUE) - -def get_trains(): - station_data = None + wifi.connect(show_wait_message=False) - LED(LED.RED).on() # Red for total get_trains - try: - station_json = http.get(API_URL.format(STATION_CODE)).raise_for_status().content - LED(LED.GREEN).on() # Green for parsing - station_data = ujson.loads(station_json) - except: - print('Fuck') - LED(LED.RED).off() - LED(LED.GREEN).off() - return station_data - -def get_time(station_data): - return ':'.join(station_data['generatedAt'].split('T')[1].split(':')[0:2]) - -def is_red(service): - return service['isCancelled'] or service['etd'] != 'On time' - -def get_arrival(service): - if service['isCancelled']: - return 'CANX' - - if service['eta'] == 'On time': - return service['sta'] - - return service['eta'] - -def get_title(name, has_error): - if has_error: - return 'ERR ' + name - - return name - -def show_trains(station_data, has_error): +def exit(): + print('trains/main: Exit') ugfx.clear() - ugfx.area(0, 0, 240, 25, - ugfx.RED if has_error else ugfx.GRAY) - title = get_title(station_data['locationName'], has_error) - ugfx.text(5, 5, title, - ugfx.WHITE if has_error else ugfx.BLACK) - ugfx.text(195, 5, get_time(station_data), ugfx.BLUE) - names = ugfx.Container(0, 25, 190, 295) - names.show() - for idx, service in enumerate(station_data['trainServices']): - names.text(5, 15 * idx, service['destination'][0]['locationName'], ugfx.BLACK) - ugfx.text(195, 25 + (15 * idx), get_arrival(service), ugfx.RED if is_red(service) else ugfx.BLUE) + app.restart_to_default() -def show_error(): - ugfx.clear() - ugfx.text(5, 5, 'Error :(', ugfx.RED) + +app_screens = { + screen.SETTINGS: SettingsScreen(), + screen.DEPARTURES: DepartureScreen() +} + + +def get_initial_screen(): + station_code = database.get('trains.station_code', None) + if station_code == None: + return app_screens[screen.SETTINGS] + return app_screens[screen.DEPARTURES] + + +def run_screen(instance): + print('trains/main: Starting screen {}'.format(instance)) + instance.enter() + + is_running = True + next_screen_name = None + while is_running: + status, value = instance.tick() + + if status == screen.SWITCH_SCREEN: + is_running = False + next_screen_name = value + elif status == screen.EXIT_APP: + is_running = False + + print('trains/main: Stopping screen {} (next = {})'.format(instance, next_screen_name)) + instance.exit() + return next_screen_name init() -station_data = None -has_error = False -while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)): - new_station_data = get_trains() - if new_station_data == None: - has_error = True - else: - station_data = new_station_data - has_error = False - - if station_data == None: - show_error() - else: - show_trains(station_data, has_error) - sleep.sleep_ms(30 * 1000) +current_screen = get_initial_screen() +is_app_running = True +while is_app_running: + init_screen(current_screen.orientation()) + next_screen_name = run_screen(current_screen) - -# closing -ugfx.clear() -app.restart_to_default() + if next_screen_name != None: + current_screen = app_screens[next_screen_name] + else: + is_app_running = False + exit() diff --git a/trains/screen.py b/trains/screen.py new file mode 100644 index 0000000..54752c5 --- /dev/null +++ b/trains/screen.py @@ -0,0 +1,28 @@ +CONTINUE = 1 +SWITCH_SCREEN = 2 +EXIT_APP = 3 + +DEPARTURES = 10 +SETTINGS = 11 + +S_CONTINUE = (CONTINUE, None) +S_TO_SETTINGS = (SWITCH_SCREEN, SETTINGS) +S_TO_TRAINS = (SWITCH_SCREEN, DEPARTURES) +S_EXIT = (EXIT_APP, None) + + +class Screen(): + def __init__(self): + pass + + def orientation(self): + return 90 + + def enter(self): + pass + + def tick(self): + return S_CONTINUE + + def exit(self): + pass diff --git a/trains/settings_screen.py b/trains/settings_screen.py new file mode 100644 index 0000000..42f6421 --- /dev/null +++ b/trains/settings_screen.py @@ -0,0 +1,19 @@ +import database +import ugfx +from dialogs import prompt_text +from trains.screen import Screen, S_CONTINUE, S_TO_TRAINS + +class SettingsScreen(Screen): + def __init__(self): + self.next_state = S_TO_TRAINS + + def orientation(self): + return 270 + + def tick(self): + with database.Database() as db: + crs = prompt_text('Enter your station\'s CRS code', db.get('trains.station_code', '')) + db.set('trains.station_code', crs) + + return self.next_state + \ No newline at end of file diff --git a/trains/splash.gif b/trains/splash.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3d64b0d5d8c678a94f9de796ba642bee8cbe973 GIT binary patch literal 25760 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 Date: Sat, 15 Sep 2018 22:28:38 +0100 Subject: [PATCH 84/89] Bottom label, quit with MENU --- trains/bottom.gif | Bin 0 -> 1831 bytes trains/departure_screen.py | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 trains/bottom.gif diff --git a/trains/bottom.gif b/trains/bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..3966ce80fe6824d89411adc9ca683ef75c1aa719 GIT binary patch literal 1831 zcmdthiC@xp1HkbwKM+aTqo(y}Vj<%xBUouRkMtR279MNNr=D%rHcXe=;Ui|V!xEC^ zRcdKzr6ppTr3u!;4h;bX!~@MMMFmg5`#$k`+Q0F9UhjY5bJ*vQt4q)numU3ju=!W< z-|1p&y4WU2yd_9%ds2c4me_?zwuVTy{Z@lLRbzju1{YfMWmqjftaf{N?e^2s9cQEt zXQVsNN(tv=#0VKFLbf|nzUMQB+%Zb-6jitPe4X?8x_!}gUtdtTTu`|Fu5gP{xPNxB z-s4ie=jHl;UT*m2N&_Xf;lR~Kud9vTagB%Knhvv?sH`U6>q@_Pr9WHwEn9iyk7nA9 z=I;|)0uoz}Cbb+({`f=6$G}^y$5UH>NpGXyZVS58elnvyII}$@v*WkB9ijI+!m>KT zvpdf{_!RN*Q)EsT<5Ac7$6e8nyD#K*$8fqY=BqAqRaXjBR||Wt752mx^~4wV{_(so zp`Rc~sr>%5^8VW|`!oL>$b3C;_w~R%!C+R!V0Oje{WpUT z-V8l_JCyrw=+XP3N0q~mD~CB%!}%XZxWbV_k+w*reJa)#OSI2wbS1UAQmO8RR9`03 z^JIFyTwh){`cg6aXZ`5whA~0ISViO5+oth%%JKKg@yeEos+I|1>qK?ygs5#&+%_p` zpRDbel6{(zcTLxIO)I*m>s8YYs+q=~8D;NGbKgvhdiJAcwpBCR)<4%iFxNRa*F8Mn zqh09LF7)XZ)Vc+YesN%Qad2#LXnbj8Vo5u>q@P+In^_*8S(%t!nfz>SWomwPdVY0r zd2MNBZF$A8ylPlkGpw!|)(q!eCuBU1IKli& z-yAAGzb3_c?`f5c&y}WOy^=9L&efu-E6Khe(~ zUfoWaroR_-vfMoGV)9R!lhDS-7?$7k_#w#op!a=;>_~O>1)tu1>i&(^;95lGTlJ|{ zQ(!i{w9F03Gxv#I3$eK9KCh2Y{Bf##X)^lPw{#w z+2+bp2;mF5tn|2}Q__qh4`J_7=(}FcLIgVN;!BUgD{`;60BuY0%Z`R1`8=zNWm%`yyMLvY$}khVi95A9iu}0U_na7kKGL z;2e}m3A+hnqMqSn6kANm7F=>c4iFl@B4U+jK_`Q<*##meS%UgJUn9ILio>?rTwtHD zd*i)kr8&*6a(60otsCV)mSCO?+}CW2dKGm?Y+ zlvMO+{n*A#U19ENH(FA{_P5$1PHJG`{b0_e6eRq~PBrNXiXD#^ytS+3cd18+nhGltQK5 z6Ytn}Wu*djo%L=Ix_+7_Mz{r;a=}uh-v;x-D{FWQwUL9VW#1 z7dS{MvEU9F88dbi`Zvshq(_0H4222g`4w%@<$09kZ!SzMcons{9^}=g44%* zILIcUrGd>e4;DS*scDznEvd_m#!SQfWSl!BMA)Xoyi_=|>40sk0855?Ma=hpn(s|m wju5_j6X7NY{Zl|Oj>tru36r2>WL|e@Fe`JutI;-Wn;5rcI+5y6B?GYke-QNt&;S4c literal 0 HcmV?d00001 diff --git a/trains/departure_screen.py b/trains/departure_screen.py index 2d50dde..3657975 100644 --- a/trains/departure_screen.py +++ b/trains/departure_screen.py @@ -4,7 +4,7 @@ import database from time import time from homescreen import time_as_string from tilda import Buttons -from trains.screen import Screen, S_CONTINUE, S_TO_SETTINGS +from trains.screen import Screen, S_CONTINUE, S_TO_SETTINGS, S_EXIT from trains.api import get_trains from trains.utils import get_departure, get_title, is_red @@ -30,6 +30,12 @@ class DepartureScreen(Screen): on_press=True, on_release=False ) + Buttons.enable_interrupt( + Buttons.BTN_Menu, + lambda t: self.set_next_state(S_EXIT), + on_press=True, + on_release=False + ) def set_next_state(self, s): self.next_state = s @@ -97,6 +103,7 @@ class DepartureScreen(Screen): ugfx.text(195, 25 + (15 * row_num), departure,ugfx.RED if is_red(service) else ugfx.BLUE) row_num += 1 + ugfx.display_image(0, 300, 'trains/bottom.gif') self.should_redraw = False def show_error(self): From ff7c10636e0695c708526a59976c2dbdbc2ec75a Mon Sep 17 00:00:00 2001 From: Filip Wieland Date: Sat, 15 Sep 2018 23:01:29 +0100 Subject: [PATCH 85/89] Show wifi wait message --- trains/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trains/main.py b/trains/main.py index 0d681e6..422c45a 100644 --- a/trains/main.py +++ b/trains/main.py @@ -37,7 +37,7 @@ def init(): ntp.set_NTP_time() # ensure wifi connection if not wifi.is_connected(): - wifi.connect(show_wait_message=False) + wifi.connect(show_wait_message=True) def exit(): From f14fb67fd925ef11ff90f5faac253012e4cb6a42 Mon Sep 17 00:00:00 2001 From: Filip Wieland Date: Sun, 16 Sep 2018 12:16:15 +0100 Subject: [PATCH 86/89] Fix database.py docstring --- lib/database.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/database.py b/lib/database.py index 55d7871..0d30169 100644 --- a/lib/database.py +++ b/lib/database.py @@ -6,7 +6,7 @@ Values can be anything json can store, including a dict Usage: import database -with database.open() as db: +with database.Database() as db: print(db.get("hello", "default")) db.set("foo", "world") db.delete("bar") From 7ab2c9e18aca265c6bdb6e48069878d47e5a0a24 Mon Sep 17 00:00:00 2001 From: Marek Ventur Date: Sun, 16 Sep 2018 16:26:27 +0100 Subject: [PATCH 87/89] clarify "brainfuck" --- bf-interpreter/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bf-interpreter/main.py b/bf-interpreter/main.py index 65cd66a..c409026 100644 --- a/bf-interpreter/main.py +++ b/bf-interpreter/main.py @@ -1,4 +1,4 @@ -"""Simple brainfuck interpreter. +"""Simple brainfuck (an esoteric programming language) interpreter. Runs very slowly... prints sierpinski triangle""" From 49036697e6572b458c581d232e0c7173c97af8f0 Mon Sep 17 00:00:00 2001 From: Marek Ventur Date: Sun, 16 Sep 2018 16:27:36 +0100 Subject: [PATCH 88/89] don't bootstrap this app --- home_aerospace/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/home_aerospace/main.py b/home_aerospace/main.py index 9764bd7..2a661e3 100644 --- a/home_aerospace/main.py +++ b/home_aerospace/main.py @@ -8,7 +8,6 @@ ___license___ = "MIT" ___categories___ = ["Homescreens"] ___dependencies___ = ["homescreen", "wifi", "http", "ugfx_helper", "sleep"] ___launchable___ = False -___bootstrapped___ = True import ugfx, random, time, wifi, http, math from tilda import LED, Buttons From ce621a704b4b5d25532a365a32db92fb00265332 Mon Sep 17 00:00:00 2001 From: Marek Ventur Date: Sun, 16 Sep 2018 17:48:21 +0100 Subject: [PATCH 89/89] use native dependency for random --- cards_against_emf/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cards_against_emf/main.py b/cards_against_emf/main.py index 75b0c21..9118018 100644 --- a/cards_against_emf/main.py +++ b/cards_against_emf/main.py @@ -2,7 +2,7 @@ ___name___ = "Cards Against EMF" ___license___ = ["MIT"] -___dependencies___ = ["random", "ugfx_helper", "sleep"] +___dependencies___ = ["ugfx_helper", "sleep"] ___categories___ = ["Games"] ___bootstrapped___ = False # Whether or not apps get downloaded on first install. Defaults to "False", mostly likely you won't have to use this at all. @@ -55,4 +55,4 @@ Buttons.enable_interrupt( Buttons.BTN_Menu, lambda button_id:restart_to_default(), on_press=True, - on_release=False) \ No newline at end of file + on_release=False)