From fa01a99d02138f1a2e4feeaa93c7291d7affc6a6 Mon Sep 17 00:00:00 2001 From: Ondrej Zjevik Date: Thu, 4 Oct 2018 23:15:48 -0400 Subject: [PATCH 01/17] Initial commit --- .gitignore | 0 .htaccess | 0 DEembedq.php | 0 OEAembedq.php | 0 actions.php | 0 admin/.DS_Store | Bin admin/FCMsetup.php | 0 admin/actions.php | 0 admin/addcourse.php | 0 admin/addremoveteachers.php | 0 admin/admin.php | 0 admin/admin2.php | 0 admin/approvepending.php | 0 admin/approvepending2.php | 0 admin/bbexport-generate.php | 0 admin/bbexport-templates.php | 0 admin/calendarfeed.php | 0 admin/canvascalexport.php | 0 admin/ccexport-generate.php | 0 admin/ccexport.php | 0 admin/coursebrowser.css | 0 admin/coursebrowser.php | 0 admin/diagonetime.php | 0 admin/diagsetup.php | 0 admin/exportitems.php | 0 admin/exportitems2.php | 0 admin/exportlib.php | 0 admin/externaltools.php | 0 admin/federatedapi.php | 0 admin/federationpull.php | 0 admin/forms.php | 0 admin/hidefromcourselist.php | 0 admin/import/.htaccess | 0 admin/importitems.php | 0 admin/importitems2.php | 0 admin/importitemsfuncs.php | 0 admin/importlib.php | 0 admin/importstu.php | 0 admin/itemexportfields.php | 0 admin/jsonexport.php | 0 admin/listdiag.php | 0 admin/ltioutcomeservice.php | 0 admin/ltiuserprefs.php | 0 admin/modcourseorder.php | 0 admin/processltiqueue.php | 0 admin/pushoutchg.php | 0 admin/transfercourse.php | 0 admin/unhidefromcourselist.php | 0 admin/unittests.php | 0 admin/userdetails.php | 0 admin/userlti.php | 0 assessment/asidutil.php | 0 assessment/catscores.php | 0 assessment/checkint.php | 0 assessment/displayq2.php | 0 assessment/eqnhelper.html | 0 assessment/eqnhelperbasic.html | 0 assessment/font/Symbola.eot | Bin assessment/font/Symbola.otf | Bin assessment/font/Symbola.svg | 0 assessment/font/Symbola.ttf | Bin assessment/font/Symbola.woff | Bin assessment/font/Symbola2.eot | Bin assessment/font/Symbola2.svg | 0 assessment/font/Symbola2.ttf | Bin assessment/font/Symbola2.woff | Bin assessment/header.php | 0 assessment/interpret5.php | 0 assessment/libs/JSXG.html | 0 assessment/libs/JSXG.php | 0 assessment/libs/Viewer.class | Bin assessment/libs/acct.html | 0 assessment/libs/acct.php | 0 assessment/libs/calculus.html | 0 assessment/libs/calculus.php | 0 assessment/libs/chemistry.html | 0 assessment/libs/chemistry.php | 0 assessment/libs/chgbase.html | 0 assessment/libs/chgbase.php | 0 assessment/libs/construct2.html | 0 assessment/libs/construct2.php | 0 assessment/libs/crypto.html | 0 assessment/libs/crypto.php | 0 assessment/libs/expressInstall.swf | Bin assessment/libs/finance.html | 0 assessment/libs/finance.php | 0 assessment/libs/fractions.html | 0 assessment/libs/fractions.php | 0 assessment/libs/functioneval.html | 0 assessment/libs/functioneval.php | 0 assessment/libs/geogebra.html | 0 assessment/libs/geogebra.php | 0 assessment/libs/geom.php | 0 assessment/libs/graphtheory.html | 0 assessment/libs/graphtheory.php | 0 assessment/libs/ineq.html | 0 assessment/libs/ineq.php | 0 assessment/libs/interval.html | 0 assessment/libs/interval.php | 0 assessment/libs/interval_ext.html | 0 assessment/libs/interval_ext.php | 0 assessment/libs/libhelp.php | 0 assessment/libs/lineutil.html | 0 assessment/libs/lineutil.php | 0 assessment/libs/matrix.html | 0 assessment/libs/matrix.php | 0 assessment/libs/normalcurve.html | 0 assessment/libs/normalcurve.php | 0 assessment/libs/plot3d.html | 0 assessment/libs/plot3d.php | 0 assessment/libs/poly3.html | 0 assessment/libs/poly3.php | 0 assessment/libs/polys.html | 0 assessment/libs/polys.php | 0 assessment/libs/polys2.html | 0 assessment/libs/polys2.php | 0 assessment/libs/primes.html | 0 assessment/libs/primes.php | 0 assessment/libs/radicals.html | 0 assessment/libs/radicals.php | 0 assessment/libs/sagecell.html | 0 assessment/libs/sagecell.php | 0 assessment/libs/sagecellframe.html | 0 assessment/libs/simplex.html | 0 assessment/libs/simplex.php | 0 assessment/libs/socchoice.html | 0 assessment/libs/socchoice.php | 0 assessment/libs/solvers.html | 0 assessment/libs/solvers.php | 0 assessment/libs/stats.html | 0 assessment/libs/stats.php | 0 assessment/libs/timedate.php | 0 assessment/libs/vector.html | 0 assessment/libs/vector.php | 0 assessment/libs/viewer3d.swf | Bin assessment/libs/virtmanip.html | 0 assessment/libs/virtmanip.php | 0 assessment/macros.php | 0 assessment/mathphp2.php | 0 assessment/mathquill.css | 0 assessment/mathquilled.html | 0 assessment/mathtest.css | 0 assessment/print.css | 0 assessment/printtest.php | 0 assessment/qimages/Thumbs.db | Bin assessment/showsoln.php | 0 assessment/showtest.php | 0 assessment/testutil.php | 0 assessment/watchvid.php | 0 bltilaunch.php | 0 calcqtimes.php | 0 canvas.php | 0 canvasnav.php | 0 changelog.html | 0 checkbrowser.php | 0 codeception.yml | 0 composer.json | 0 composer.lock | 0 config.php.dist | 0 course/addassessment.php | 0 course/addblock.php | 0 course/addcalendar.php | 0 course/adddrillassess.php | 0 course/addforum.php | 0 course/addgrades.php | 0 course/addinlinetext.php | 0 course/addlinkedtext.php | 0 course/addoutcomes.php | 0 course/addquestions.css | 0 course/addquestions.php | 0 course/addquestionssave.php | 0 course/addrubric.php | 0 course/addvideotimes.php | 0 course/addwiki.php | 0 course/assessendmsg.php | 0 course/categorize.php | 0 course/chgassessments.php | 0 course/chgblocks.php | 0 course/chgforums.php | 0 course/chgoffline.php | 0 course/claimbadge.php | 0 course/contentstats.php | 0 course/convertintro.php | 0 course/copyitems.php | 0 course/copyoneitem.php | 0 course/course.php | 0 course/coursemap.php | 0 course/coursereports.php | 0 course/courseshowitems.php | 0 course/coursetolibrary.php | 0 course/definebadges.php | 0 course/deleteassessment.php | 0 course/deleteblock.php | 0 course/deletedrillassess.php | 0 course/deleteforum.php | 0 course/deleteinlinetext.php | 0 course/deletelinkedtext.php | 0 course/deletewiki.php | 0 course/delitembyid.php | 0 course/drillassess.php | 0 course/editsnippets.php | 0 course/edittoolscores.php | 0 course/embedhelper.php | 0 course/enrollfromothercourse.php | 0 course/exception.php | 0 course/exportcalfeed.php | 0 course/files/.gitignore | 0 course/gb-aidexport.php | 0 course/gb-export.php | 0 course/gb-itemanalysis.php | 0 course/gb-itemanalysisdetail.php | 0 course/gb-itemresults.php | 0 course/gb-testing.php | 0 course/gb-viewasid.php | 0 course/gb-viewdrill.php | 0 course/gbcomments.php | 0 course/gbsettings.php | 0 course/gbtable2.php | 0 course/getblockitems.php | 0 course/getblockitemspublic.php | 0 course/gradeallq.php | 0 course/gradebook.php | 0 course/improvoerassess.php | 0 course/isolateassessbygroup.php | 0 course/isolateassessgrade.php | 0 course/latepasses.php | 0 course/libtree.css | 0 course/libtree.php | 0 course/libtree2.php | 0 course/listusers.php | 0 course/lockstu.php | 0 course/logingrid.php | 0 course/managecalitems.php | 0 course/managelibs.php | 0 course/manageqset.php | 0 course/managestugrps.php | 0 course/managetutors.php | 0 course/masschgdates.php | 0 course/massexception.php | 0 course/masssend.php | 0 course/mergeassess.php | 0 course/moddataset.php | 0 course/modquestion.php | 0 course/modquestiongrid.php | 0 course/modtutorialq.php | 0 course/moveitem.php | 0 course/outcomemap.php | 0 course/outcomereport.php | 0 course/outcometable.php | 0 course/printlayout.php | 0 course/printlayoutbare.php | 0 course/printlayoutword.php | 0 course/printtest.php | 0 course/public.php | 0 course/quickdrill.php | 0 course/rectrack.php | 0 course/redeemlatepass.php | 0 course/redeemlatepassforum.php | 0 course/report-commonstu.php | 0 course/report-weeklylab.php | 0 course/reviewlibrary.php | 0 course/savebrokenqflag.php | 0 course/savecalendardrag.php | 0 course/savelibassignflag.php | 0 course/savequickreorder.php | 0 course/sendmsgmodal.php | 0 course/showcalendar.php | 0 course/showfeedback.php | 0 course/showfeedbackall.php | 0 course/showlicense.php | 0 course/showlinkedtext.php | 0 course/showlinkedtextpublic.php | 0 course/showstugroup.php | 0 course/solver.css | 0 course/testquestion.php | 0 course/timeshift.php | 0 course/treereader.php | 0 course/unenroll.php | 0 course/uploadgrades.php | 0 course/uploadmultgrades.php | 0 course/verifybadge.php | 0 course/viewactionlog.php | 0 course/viewemails.php | 0 course/viewforumgrade.php | 0 course/viewloginlog.php | 0 course/viewsource.php | 0 csrfp/index.php | 0 csrfp/js/index.php | 0 csrfp/js/simplecsrfprotector.js | 0 csrfp/licence.md | 0 csrfp/log/.gitignore | 0 csrfp/log/.htaccess | 0 csrfp/log/index.php | 0 csrfp/simplecsrfp.php | 0 diag/index.php | 0 directaccess.php | 0 docs/AccessingOnlineHomeworkinWAMAP.doc | Bin docs/GettingStarted.pdf | Bin docs/administration.html | 0 docs/asciimathref.html | 0 docs/commontasks.html | 0 docs/diagnostics.html | 0 docs/docs.css | 0 docs/docs.php | 0 docs/gettingstarted.html | 0 docs/introquestionwriting.html | 0 docs/langquickref.doc | Bin docs/managing.html | 0 docs/morequestions.html | 0 docs/questionoddities.html | 0 embedq.php | 0 filestore/.gitignore | 0 filter/basiclti/blti_util.php | 0 filter/basiclti/post.php | 0 filter/filter.php | 0 filter/graph/FreeSerifItalic.ttf | Bin filter/graph/asciisvgimg.php | 0 filter/graph/imgs/.gitignore | 0 filter/graph/sscrtotext.php | 0 filter/graph/svgimg.php | 0 filter/math/ASCIIMath2TeX.php | 0 firebase-messaging-sw.php | 0 footer.php | 0 forms.php | 0 forums/embeddone.php | 0 forums/flaggedthreads.php | 0 forums/forums.css | 0 forums/forums.php | 0 forums/listlikes.php | 0 forums/listviews.php | 0 forums/newthreads.php | 0 forums/posthandler.php | 0 forums/posts.php | 0 forums/postsbyname.php | 0 forums/recordlikes.php | 0 forums/savetagged.php | 0 forums/thread.php | 0 gethomemenu.php | 0 getpostlist.php | 0 handheld.css | 0 header.php | 0 help.html | 0 help.php | 0 i18n/de.po | 0 i18n/extractjsfrompo.php | 0 i18n/getjsmessages.php | 0 i18n/i18n.php | 0 i18n/locale/de/LC_MESSAGES/imathas.mo | Bin i18n/locale/de/messages.js | 0 i18n/messages.js | 0 i18n/messages.po | 0 i18n/notes.txt | 0 i18n/translating.md | 0 iconfonts/caledit.css | 0 iconfonts/font_contents.html | 0 iconfonts/fonts/addquestions.eot | Bin iconfonts/fonts/addquestions.svg | 0 iconfonts/fonts/addquestions.ttf | Bin iconfonts/fonts/addquestions.woff | Bin iconfonts/fonts/caledit.eot | Bin iconfonts/fonts/caledit.svg | 0 iconfonts/fonts/caledit.ttf | Bin iconfonts/fonts/caledit.woff | Bin iconfonts/fonts/imathas.eot | Bin iconfonts/fonts/imathas.svg | 0 iconfonts/fonts/imathas.ttf | Bin iconfonts/fonts/imathas.woff | Bin iconfonts/imathasfont.css | 0 iconfonts/imathasfontie7.css | 0 iconfonts/selection.json | 0 iconfonts/style.css | 0 imas.css | 0 imascore.css | 0 imathasltiplan.txt | 0 img/1day.png | Bin img/assess.png | Bin img/assess_tiny.png | Bin img/assess_tiny_no.png | Bin img/badge.php | 0 img/badgebase.png | Bin img/blank.gif | Bin img/cal.gif | Bin img/cc.png | Bin img/collapse.gif | Bin img/doc.png | Bin img/doc_tiny.png | Bin img/drill.png | Bin img/drill_tiny.png | Bin img/emptycircle.png | Bin img/expand.gif | Bin img/extlink.png | Bin img/flagempty.gif | Bin img/flagfilled.gif | Bin img/folder.gif | Bin img/folder.png | Bin img/folder2.gif | Bin img/folder_tiny.png | Bin img/folder_tree.png | Bin img/folder_tree_tiny.png | Bin img/forum.png | Bin img/forum_tiny.png | Bin img/fullcircle.png | Bin img/gchk.gif | Bin img/gears.png | Bin img/gearsdd.png | Bin img/graph.gif | Bin img/halfcircle.png | Bin img/help.gif | Bin img/html.png | Bin img/html_tiny.png | Bin img/html_tiny_no.png | Bin img/image.png | Bin img/inline.png | Bin img/inline_tiny.png | Bin img/liked.png | Bin img/likedgray.png | Bin img/lock.png | Bin img/maple.png | Bin img/mathml.gif | Bin img/mathnb.png | Bin img/menu.png | Bin img/mq_cursor_sprites.png | Bin img/mq_cursor_sprites2.png | Bin img/normalcurve.gif | Bin img/noview.png | Bin img/orgx.gif | Bin img/pdf.png | Bin img/pen.cur | Bin img/pendown.cur | Bin img/ppt.png | Bin img/q_emptybox.gif | Bin img/q_fullbox.gif | Bin img/q_halfbox.gif | Bin img/redx.gif | Bin img/ruler.jpg | Bin img/screens.jpg | Bin img/simplebg.png | Bin img/sound.png | Bin img/swap.gif | Bin img/te_blank.gif | Bin img/te_blue_arrow.png | Bin img/te_blue_empty_arrow.png | Bin img/te_green_check.png | Bin img/te_red_ex.png | Bin img/te_red_redo.png | Bin img/te_yellow_check.png | Bin img/te_yellow_redo.png | Bin img/time.png | Bin img/tinyarrow.gif | Bin img/tpabs.gif | Bin img/tpcirc.gif | Bin img/tpcirc.png | Bin img/tpcos.png | Bin img/tpdot.gif | Bin img/tpellipse.png | Bin img/tpexp.png | Bin img/tphorizhyper.png | Bin img/tphorizparab.png | Bin img/tpineq.gif | Bin img/tpineqdash.gif | Bin img/tpineqparab.gif | Bin img/tpineqparabdash.gif | Bin img/tpline.gif | Bin img/tpline2.gif | Bin img/tpline3.gif | Bin img/tplog.png | Bin img/tpodot.gif | Bin img/tpparab.gif | Bin img/tpparab.png | Bin img/tprat.png | Bin img/tpsin.png | Bin img/tpsqrt.png | Bin img/tpvec.gif | Bin img/tpverthyper.png | Bin img/typing.jpg | Bin img/updating.gif | Bin img/uppointer.gif | Bin img/video.png | Bin img/video_tiny.png | Bin img/video_tiny_no.png | Bin img/vidicons.png | Bin img/web.png | Bin img/wiki.png | Bin img/wiki_tiny.png | Bin img/xls.png | Bin img/ychk.gif | Bin img/zip.png | Bin includes/AWSSNSutil.php | 0 includes/DEutil.php | 0 includes/FCM.php | 0 includes/JSON.php | 0 includes/JWT.php | 0 includes/OAuth.php | 0 includes/S3.php | 0 includes/calendardata.php | 0 includes/calendardisp.php | 0 includes/copyiteminc.php | 0 includes/coursecopylist.php | 0 includes/diff.php | 0 includes/email.php | 0 includes/exceptionfuncs.php | 0 includes/filehandler.php | 0 includes/htmLawed.php | 0 includes/htmlutil.php | 0 includes/loaditemshowdata.php | 0 includes/ltioauthstore.php | 0 includes/ltioutcomes.php | 0 includes/mailses.php | 0 includes/newusercommon.php | 0 includes/parsedatetime.php | 0 includes/password.php | 0 includes/report-commonstu-funcs.php | 0 includes/rubric.php | 0 includes/safeunserialize.php | 0 includes/sanitize.php | 0 includes/session.php | 0 includes/stugroups.php | 0 includes/tar.class.php | 0 includes/unenroll.php | 0 includes/updateassess.php | 0 includes/updateptsposs.php | 0 includes/userpics.php | 0 includes/userprefs.php | 0 includes/userutils.php | 0 index.php | 0 info/answerimgs/103.gif | Bin info/answerimgs/12.gif | Bin info/answerimgs/1oxtxp1.gif | Bin info/answerimgs/23.gif | Bin info/answerimgs/24.gif | Bin info/answerimgs/2o5m3.gif | Bin info/answerimgs/2pxo3mx.gif | Bin info/answerimgs/3s.gif | Bin info/answerimgs/3txp7.gif | Bin info/answerimgs/513.gif | Bin info/answerimgs/53x.gif | Bin info/answerimgs/arcsinx.gif | Bin info/answerimgs/arctan1.gif | Bin info/answerimgs/f1.gif | Bin info/answerimgs/f2.gif | Bin info/answerimgs/f3.gif | Bin info/answerimgs/lnoln.gif | Bin info/answerimgs/log100.gif | Bin info/answerimgs/m3xs.gif | Bin info/answerimgs/s4.gif | Bin info/answerimgs/sinpi.gif | Bin info/answerimgs/sinpio3x.gif | Bin info/answerimgs/sxm5.gif | Bin info/enteringanswers.php | 0 infoheader.php.dist | 0 infopages.css | 0 init.php | 0 init_without_validate.php | 0 install.php | 0 installexamples.php | 0 javascript/3dviewer.js | 0 javascript/AMhelpers.js | 0 javascript/AMtoMQ.js | 0 javascript/ASCIIMathML.js | 0 javascript/ASCIIMathML_min.js | 0 javascript/ASCIIMathMLwFallback.js | 0 javascript/ASCIIMathTeXImg.js | 0 javascript/ASCIIMathTeXImg_min.js | 0 javascript/ASCIIsvg.js | 0 javascript/ASCIIsvg_min.js | 0 javascript/CalendarPopup.js | 0 javascript/ColorPicker2.js | 0 javascript/DatePicker.js | 0 javascript/MQbundle_min.js | 0 javascript/a11ytree.js | 0 javascript/addgrades.js | 0 javascript/addqsort.js | 0 javascript/addquestions.js | 0 javascript/assessment_min.js | 0 javascript/codemirror/LICENSE | 0 javascript/codemirror/codemirror-compressed.js | 0 javascript/codemirror/codemirror_min.css | 0 javascript/codemirror/imathas.js | 0 javascript/colorpicker.js | 0 javascript/confirmsubmit.js | 0 javascript/copyitemslist.js | 0 javascript/course.js | 0 javascript/coursebrowserprops.js.dist | 0 javascript/cpimages/blank.gif | Bin javascript/cpimages/cp_arrows.gif | Bin javascript/cpimages/cp_color_slider.png | Bin javascript/cpimages/cp_cur_color_background.png | Bin javascript/cpimages/cp_horizontal_picker.png | Bin javascript/cpimages/cp_lg_background.png | Bin javascript/cpimages/cp_lg_overlay.png | Bin javascript/cpimages/cp_mini_icon.png | Bin javascript/cpimages/cp_web_safe.gif | Bin javascript/d.svg | 0 javascript/diag.js | 0 javascript/drawing.js | 0 javascript/eqnhelper.js | 0 javascript/eqntips.js | 0 javascript/excanvas.js | 0 javascript/excanvas_min.js | 0 javascript/fuse.min.js | 0 javascript/gb-scoretools.js | 0 javascript/general.js | 0 javascript/gradebook.js | 0 javascript/iframeSizer_contentWindow_min.js | 0 javascript/jquery-sortable.js | 0 javascript/jquery.min.js | 0 javascript/jquery.validate.min.js | 0 javascript/jqvalidatei18n/messages_ar.min.js | 0 javascript/jqvalidatei18n/messages_az.min.js | 0 javascript/jqvalidatei18n/messages_bg.min.js | 0 javascript/jqvalidatei18n/messages_bn_BD.min.js | 0 javascript/jqvalidatei18n/messages_ca.min.js | 0 javascript/jqvalidatei18n/messages_cs.min.js | 0 javascript/jqvalidatei18n/messages_da.min.js | 0 javascript/jqvalidatei18n/messages_de.min.js | 0 javascript/jqvalidatei18n/messages_el.min.js | 0 javascript/jqvalidatei18n/messages_es.min.js | 0 javascript/jqvalidatei18n/messages_es_AR.min.js | 0 javascript/jqvalidatei18n/messages_es_PE.min.js | 0 javascript/jqvalidatei18n/messages_et.min.js | 0 javascript/jqvalidatei18n/messages_eu.min.js | 0 javascript/jqvalidatei18n/messages_fa.min.js | 0 javascript/jqvalidatei18n/messages_fi.min.js | 0 javascript/jqvalidatei18n/messages_fr.min.js | 0 javascript/jqvalidatei18n/messages_ge.min.js | 0 javascript/jqvalidatei18n/messages_gl.min.js | 0 javascript/jqvalidatei18n/messages_he.min.js | 0 javascript/jqvalidatei18n/messages_hr.min.js | 0 javascript/jqvalidatei18n/messages_hu.min.js | 0 javascript/jqvalidatei18n/messages_hy_AM.min.js | 0 javascript/jqvalidatei18n/messages_id.min.js | 0 javascript/jqvalidatei18n/messages_is.min.js | 0 javascript/jqvalidatei18n/messages_it.min.js | 0 javascript/jqvalidatei18n/messages_ja.min.js | 0 javascript/jqvalidatei18n/messages_ka.min.js | 0 javascript/jqvalidatei18n/messages_kk.min.js | 0 javascript/jqvalidatei18n/messages_ko.min.js | 0 javascript/jqvalidatei18n/messages_lt.min.js | 0 javascript/jqvalidatei18n/messages_lv.min.js | 0 javascript/jqvalidatei18n/messages_mk.min.js | 0 javascript/jqvalidatei18n/messages_my.min.js | 0 javascript/jqvalidatei18n/messages_nl.min.js | 0 javascript/jqvalidatei18n/messages_no.min.js | 0 javascript/jqvalidatei18n/messages_pl.min.js | 0 javascript/jqvalidatei18n/messages_pt_BR.min.js | 0 javascript/jqvalidatei18n/messages_pt_PT.min.js | 0 javascript/jqvalidatei18n/messages_ro.min.js | 0 javascript/jqvalidatei18n/messages_ru.min.js | 0 javascript/jqvalidatei18n/messages_si.min.js | 0 javascript/jqvalidatei18n/messages_sk.min.js | 0 javascript/jqvalidatei18n/messages_sl.min.js | 0 javascript/jqvalidatei18n/messages_sr.min.js | 0 javascript/jqvalidatei18n/messages_sr_lat.min.js | 0 javascript/jqvalidatei18n/messages_sv.min.js | 0 javascript/jqvalidatei18n/messages_th.min.js | 0 javascript/jqvalidatei18n/messages_tj.min.js | 0 javascript/jqvalidatei18n/messages_tr.min.js | 0 javascript/jqvalidatei18n/messages_uk.min.js | 0 javascript/jqvalidatei18n/messages_ur.min.js | 0 javascript/jqvalidatei18n/messages_vi.min.js | 0 javascript/jqvalidatei18n/messages_zh.min.js | 0 javascript/jqvalidatei18n/messages_zh_TW.min.js | 0 javascript/jstz_min.js | 0 javascript/junkflag.js | 0 javascript/libtree.js | 0 javascript/libtree2.js | 0 javascript/livepoll.js | 0 javascript/masschgdates.js | 0 javascript/mathgraphcheck.js | 0 javascript/mathjax/InputToDataAttr.js | 0 javascript/mathjax/InputToDataAttrCDN.js | 0 javascript/mathjs.js | 0 javascript/mathquill.js | 0 javascript/mathquill_min.js | 0 javascript/mathquilled.js | 0 javascript/md5.js | 0 javascript/md5_min.js | 0 javascript/mootools.js | 0 javascript/moveitem.js | 0 javascript/msg.js | 0 javascript/nested1.js | 0 javascript/pngbehavior.htc | 0 javascript/posts.js | 0 javascript/rubric.js | 0 javascript/solver.js | 0 javascript/solversagecell.html | 0 javascript/tablescroller.js | 0 javascript/tablescroller2.js | 0 javascript/tablesorter.js | 0 javascript/testmathjs.html | 0 javascript/thread.js | 0 javascript/validateform.js | 0 javascript/viewwiki.js | 0 javascript/ytapi.js | 0 katex/README.md | 0 katex/auto-render.js | 0 katex/fonts/KaTeX_AMS-Regular.eot | Bin katex/fonts/KaTeX_AMS-Regular.ttf | Bin katex/fonts/KaTeX_AMS-Regular.woff | Bin katex/fonts/KaTeX_AMS-Regular.woff2 | Bin katex/fonts/KaTeX_Caligraphic-Bold.eot | Bin katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin katex/fonts/KaTeX_Caligraphic-Regular.eot | Bin katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin katex/fonts/KaTeX_Caligraphic-Regular.woff | Bin katex/fonts/KaTeX_Caligraphic-Regular.woff2 | Bin katex/fonts/KaTeX_Fraktur-Bold.eot | Bin katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin katex/fonts/KaTeX_Fraktur-Bold.woff | Bin katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin katex/fonts/KaTeX_Fraktur-Regular.eot | Bin katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin katex/fonts/KaTeX_Fraktur-Regular.woff | Bin katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin katex/fonts/KaTeX_Main-Bold.eot | Bin katex/fonts/KaTeX_Main-Bold.ttf | Bin katex/fonts/KaTeX_Main-Bold.woff | Bin katex/fonts/KaTeX_Main-Bold.woff2 | Bin katex/fonts/KaTeX_Main-Italic.eot | Bin katex/fonts/KaTeX_Main-Italic.ttf | Bin katex/fonts/KaTeX_Main-Italic.woff | Bin katex/fonts/KaTeX_Main-Italic.woff2 | Bin katex/fonts/KaTeX_Main-Regular.eot | Bin katex/fonts/KaTeX_Main-Regular.ttf | Bin katex/fonts/KaTeX_Main-Regular.woff | Bin katex/fonts/KaTeX_Main-Regular.woff2 | Bin katex/fonts/KaTeX_Math-BoldItalic.eot | Bin katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin katex/fonts/KaTeX_Math-BoldItalic.woff | Bin katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin katex/fonts/KaTeX_Math-Italic.eot | Bin katex/fonts/KaTeX_Math-Italic.ttf | Bin katex/fonts/KaTeX_Math-Italic.woff | Bin katex/fonts/KaTeX_Math-Italic.woff2 | Bin katex/fonts/KaTeX_Math-Regular.eot | Bin katex/fonts/KaTeX_Math-Regular.ttf | Bin katex/fonts/KaTeX_Math-Regular.woff | Bin katex/fonts/KaTeX_Math-Regular.woff2 | Bin katex/fonts/KaTeX_SansSerif-Bold.eot | Bin katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin katex/fonts/KaTeX_SansSerif-Bold.woff | Bin katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin katex/fonts/KaTeX_SansSerif-Italic.eot | Bin katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin katex/fonts/KaTeX_SansSerif-Italic.woff | Bin katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin katex/fonts/KaTeX_SansSerif-Regular.eot | Bin katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin katex/fonts/KaTeX_SansSerif-Regular.woff | Bin katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin katex/fonts/KaTeX_Script-Regular.eot | Bin katex/fonts/KaTeX_Script-Regular.ttf | Bin katex/fonts/KaTeX_Script-Regular.woff | Bin katex/fonts/KaTeX_Script-Regular.woff2 | Bin katex/fonts/KaTeX_Size1-Regular.eot | Bin katex/fonts/KaTeX_Size1-Regular.ttf | Bin katex/fonts/KaTeX_Size1-Regular.woff | Bin katex/fonts/KaTeX_Size1-Regular.woff2 | Bin katex/fonts/KaTeX_Size2-Regular.eot | Bin katex/fonts/KaTeX_Size2-Regular.ttf | Bin katex/fonts/KaTeX_Size2-Regular.woff | Bin katex/fonts/KaTeX_Size2-Regular.woff2 | Bin katex/fonts/KaTeX_Size3-Regular.eot | Bin katex/fonts/KaTeX_Size3-Regular.ttf | Bin katex/fonts/KaTeX_Size3-Regular.woff | Bin katex/fonts/KaTeX_Size3-Regular.woff2 | Bin katex/fonts/KaTeX_Size4-Regular.eot | Bin katex/fonts/KaTeX_Size4-Regular.ttf | Bin katex/fonts/KaTeX_Size4-Regular.woff | Bin katex/fonts/KaTeX_Size4-Regular.woff2 | Bin katex/fonts/KaTeX_Typewriter-Regular.eot | Bin katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin katex/fonts/KaTeX_Typewriter-Regular.woff | Bin katex/fonts/KaTeX_Typewriter-Regular.woff2 | Bin katex/katex.min.css | 0 katex/katex.min.js | 0 katex/test.html | 0 license.txt | 0 loginpage.php.dist | 0 ltihome.php | 0 ltisessionsetup.php | 0 migrations/.htaccess | 0 migrations/120_rollback_available_bug.php | 0 migrations/121_add_userprefs.php | 0 migrations/123_config_basesiteurl.php | 0 migrations/124_rewrite_s3.php | 0 migrations/125_db_sessions.php | 0 migrations/126_federation.php | 0 migrations/127_add_indices.php | 0 migrations/128_add_indices_2.php | 0 migrations/129_add_indices_3.php | 0 migrations/130_acct_taskrights.php | 0 migrations/132_expand_gbmode.php | 0 migrations/133_add_indices_4.php | 0 migrations/134_add_user_jsondata.php | 0 migrations/135_add_course_jsondata.php | 0 migrations/137_add_forcepwreset.php | 0 migrations/138_loginformat_warning.php | 0 migrations/139_new_instr_req.php | 0 migrations/141_add_lticourse_copiedfrom.php | 0 migrations/142_assess_ptspossible.php | 0 migrations/143_dates_by_lti.php | 0 migrations/144_assess_reqscoretype.php | 0 migrations/146_add_course_startenddates.php | 0 migrations/147_bugfix_datesbylti.php | 0 migrations/148_add_contextlabel.php | 0 migrations/149_expand_latepassnum.php | 0 migrations/150_add_indices_5.php | 0 migrations/151_add_indices_6.php | 0 migrations/152_add_cleanupdate.php | 0 migrations/153_add_LPcutoff.php | 0 migrations/154_add_ltiqueue.php | 0 migrations/155_add_assess_extrefs.php | 0 migrations/156_add_dbschema_details.php | 0 migrations/157_expand_namefields.php | 0 migrations/readme.md | 0 migrator.php | 0 msgs/allstumsglist.php | 0 msgs/msghistory.php | 0 msgs/msglist.php | 0 msgs/newmsglist.php | 0 msgs/savetagged.php | 0 msgs/sentlist.php | 0 msgs/viewmsg.php | 0 multiembedq.php | 0 newinstructor.php.dist | 0 pdochanges.md | 0 phpunit.xml | 0 plannedchanges.html | 0 readme.html | 0 setupdb.php | 0 tests/.htaccess | 0 tests/README.md | 0 tests/_data/.gitkeep | 0 tests/_support/AcceptanceTester.php | 0 tests/_support/FunctionalTester.php | 0 tests/_support/Helper/Acceptance.php | 0 tests/_support/Helper/Functional.php | 0 tests/_support/Helper/Unit.php | 0 tests/_support/UnitTester.php | 0 tests/acceptance.suite.yml | 0 tests/acceptance/AdminLoginCest.php | 0 tests/functional.suite.yml | 0 tests/functional/.gitkeep | 0 tests/unit.suite.yml | 0 tests/unit/sanitizeTest.php | 0 themes/angelish.css | 0 themes/angelishmore.css | 0 themes/default.css | 0 themes/facebookish.css | 0 themes/highcontrast.css | 0 themes/highcontrast_dark.css | 0 themes/howtotheme.md | 0 themes/modern.css | 0 themes/oea.css | 0 tinymce4/demo.html | 0 tinymce4/file_manager.php | 0 tinymce4/file_manager/file_small.png | Bin tinymce4/file_manager/lang/lang_eng.php | 0 tinymce4/file_manager/styles.css | 0 tinymce4/file_manager/x.png | Bin tinymce4/getsnippets.php | 0 tinymce4/license.txt | 0 tinymce4/maketinymcebundle.php | 0 tinymce4/plugins/advlist/plugin.min.js | 0 tinymce4/plugins/anchor/plugin.min.js | 0 tinymce4/plugins/asciimath/amcharmap.css | 0 tinymce4/plugins/asciimath/amcharmap.htm | 0 tinymce4/plugins/asciimath/img/charmapsprite.png | Bin tinymce4/plugins/asciimath/img/ed_mathformula.gif | Bin tinymce4/plugins/asciimath/img/ed_mathformula2.gif | Bin .../plugins/asciimath/js/ASCIIMathMLwFallback.js | 0 tinymce4/plugins/asciimath/langs/en.js | 0 tinymce4/plugins/asciimath/plugin.min.js | 0 tinymce4/plugins/asciimathjax/amcharmap.htm | 0 .../plugins/asciimathjax/img/ed_mathformula.gif | Bin .../plugins/asciimathjax/img/ed_mathformula2.gif | Bin .../plugins/asciimathjax/js/ASCIIMathMLwFallback.js | 0 tinymce4/plugins/asciimathjax/langs/en.js | 0 tinymce4/plugins/asciimathjax/plugin.min.js | 0 tinymce4/plugins/asciisvg/asciisvgdlg.htm | 0 tinymce4/plugins/asciisvg/img/ed_asciisvg.gif | Bin tinymce4/plugins/asciisvg/js/asciisvgdlg.js | 0 tinymce4/plugins/asciisvg/js/d.svg | 0 tinymce4/plugins/asciisvg/langs/en.js | 0 tinymce4/plugins/asciisvg/plugin.min.js | 0 tinymce4/plugins/asciisvg2/asciisvgdlg.htm | 0 tinymce4/plugins/asciisvg2/img/ed_asciisvg.gif | Bin tinymce4/plugins/asciisvg2/js/ASCIIsvg.js | 0 tinymce4/plugins/asciisvg2/js/asciisvgdlg.js | 0 tinymce4/plugins/asciisvg2/js/d.svg | 0 tinymce4/plugins/asciisvg2/langs/en.js | 0 tinymce4/plugins/asciisvg2/plugin.min.js | 0 tinymce4/plugins/attach/ed_attach.gif | Bin tinymce4/plugins/attach/plugin.min.js | 0 tinymce4/plugins/autolink/plugin.js | 0 tinymce4/plugins/autolink/plugin.min.js | 0 tinymce4/plugins/charmap/plugin.min.js | 0 tinymce4/plugins/code/plugin.min.js | 0 tinymce4/plugins/colorpicker/plugin.min.js | 0 tinymce4/plugins/contextmenu/plugin.min.js | 0 tinymce4/plugins/hr/plugin.js | 0 tinymce4/plugins/hr/plugin.min.js | 0 tinymce4/plugins/image/plugin.min.js | 0 tinymce4/plugins/imagetools/config/bolt/atomic.js | 0 tinymce4/plugins/imagetools/config/bolt/browser.js | 0 tinymce4/plugins/imagetools/config/bolt/demo.js | 0 tinymce4/plugins/imagetools/config/bolt/prod.js | 0 tinymce4/plugins/imagetools/plugin.js | 0 tinymce4/plugins/imagetools/plugin.min.js | 0 tinymce4/plugins/imagetools/src/demo/html/demo.html | 0 tinymce4/plugins/imagetools/src/demo/js/Demo.js | 0 tinymce4/plugins/imagetools/src/main/js/CropRect.js | 0 tinymce4/plugins/imagetools/src/main/js/Dialog.js | 0 .../plugins/imagetools/src/main/js/ImagePanel.js | 0 tinymce4/plugins/imagetools/src/main/js/Plugin.js | 0 .../plugins/imagetools/src/main/js/UndoStack.js | 0 tinymce4/plugins/link/plugin.js | 0 tinymce4/plugins/link/plugin.min.js | 0 tinymce4/plugins/lists/plugin.min.js | 0 tinymce4/plugins/media/plugin.min.js | 0 tinymce4/plugins/paste/plugin.min.js | 0 tinymce4/plugins/rollups/plugin.min.js | 0 tinymce4/plugins/searchreplace/plugin.min.js | 0 tinymce4/plugins/snippet/plugin.js | 0 tinymce4/plugins/table/plugin.min.js | 0 tinymce4/plugins/textcolor/plugin.min.js | 0 tinymce4/skins/lightgray/content.inline.min.css | 0 tinymce4/skins/lightgray/content.min.css | 0 tinymce4/skins/lightgray/fonts/tinymce-small.eot | Bin tinymce4/skins/lightgray/fonts/tinymce-small.json | 0 tinymce4/skins/lightgray/fonts/tinymce-small.svg | 0 tinymce4/skins/lightgray/fonts/tinymce-small.ttf | Bin tinymce4/skins/lightgray/fonts/tinymce-small.woff | Bin tinymce4/skins/lightgray/fonts/tinymce.eot | Bin tinymce4/skins/lightgray/fonts/tinymce.json | 0 tinymce4/skins/lightgray/fonts/tinymce.svg | 0 tinymce4/skins/lightgray/fonts/tinymce.ttf | Bin tinymce4/skins/lightgray/fonts/tinymce.woff | Bin tinymce4/skins/lightgray/img/anchor.gif | Bin tinymce4/skins/lightgray/img/loader.gif | Bin tinymce4/skins/lightgray/img/object.gif | Bin tinymce4/skins/lightgray/img/trans.gif | Bin tinymce4/skins/lightgray/skin.ie7.min.css | 0 tinymce4/skins/lightgray/skin.min - Copy.css | 0 tinymce4/skins/lightgray/skin.min.css | 0 tinymce4/themes/modern/theme.min.js | 0 tinymce4/tinymce.min.js | 0 tinymce4/tinymce_bundled.js | 0 tinymce4/to_add_imagetools.txt | 0 tinymce4/upload_handler.php | 0 upgrade.php | 0 upgrade.txt | 0 util/batchanon.php | 0 util/batchcreateinstr.php | 0 util/blocksearch.php | 0 util/copystudata.php | 0 util/coursetolibs.php | 0 util/delwronglibs.php | 0 util/getqcnt.php | 0 util/getstucnt.php | 0 util/getstucntdet.php | 0 util/itemsearch.php | 0 util/listdeprecated.php | 0 util/listextref.php | 0 util/listnewteachers.php | 0 util/listwronglibs.php | 0 util/makeconditional.php | 0 util/makeminjs.php | 0 util/mbx.php | 0 util/mbxfilter.php | 0 util/mergescores.php | 0 util/mergestus.php | 0 util/mergeteachers.php | 0 util/ptx.php | 0 util/replaceurls.php | 0 util/replacevids.php | 0 util/rescoreassess.php | 0 util/rescuecourse.php | 0 util/runcoursecleanup.php | 0 util/tagcoursecleanup.php | 0 util/updatedeprecated.php | 0 util/updateextref.php | 0 util/updatewronglibs.php | 0 util/utils.php | 0 validate.php | 0 vendor/.gitignore | 0 vendor/.htaccess | 0 wamaphome.css | 0 wikis/editwiki.php | 0 wikis/viewwiki.php | 0 wikis/viewwikipublic.php | 0 wikis/wikirev.php | 0 995 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .htaccess mode change 100644 => 100755 DEembedq.php mode change 100644 => 100755 OEAembedq.php mode change 100644 => 100755 actions.php mode change 100644 => 100755 admin/.DS_Store mode change 100644 => 100755 admin/FCMsetup.php mode change 100644 => 100755 admin/actions.php mode change 100644 => 100755 admin/addcourse.php mode change 100644 => 100755 admin/addremoveteachers.php mode change 100644 => 100755 admin/admin.php mode change 100644 => 100755 admin/admin2.php mode change 100644 => 100755 admin/approvepending.php mode change 100644 => 100755 admin/approvepending2.php mode change 100644 => 100755 admin/bbexport-generate.php mode change 100644 => 100755 admin/bbexport-templates.php mode change 100644 => 100755 admin/calendarfeed.php mode change 100644 => 100755 admin/canvascalexport.php mode change 100644 => 100755 admin/ccexport-generate.php mode change 100644 => 100755 admin/ccexport.php mode change 100644 => 100755 admin/coursebrowser.css mode change 100644 => 100755 admin/coursebrowser.php mode change 100644 => 100755 admin/diagonetime.php mode change 100644 => 100755 admin/diagsetup.php mode change 100644 => 100755 admin/exportitems.php mode change 100644 => 100755 admin/exportitems2.php mode change 100644 => 100755 admin/exportlib.php mode change 100644 => 100755 admin/externaltools.php mode change 100644 => 100755 admin/federatedapi.php mode change 100644 => 100755 admin/federationpull.php mode change 100644 => 100755 admin/forms.php mode change 100644 => 100755 admin/hidefromcourselist.php mode change 100644 => 100755 admin/import/.htaccess mode change 100644 => 100755 admin/importitems.php mode change 100644 => 100755 admin/importitems2.php mode change 100644 => 100755 admin/importitemsfuncs.php mode change 100644 => 100755 admin/importlib.php mode change 100644 => 100755 admin/importstu.php mode change 100644 => 100755 admin/itemexportfields.php mode change 100644 => 100755 admin/jsonexport.php mode change 100644 => 100755 admin/listdiag.php mode change 100644 => 100755 admin/ltioutcomeservice.php mode change 100644 => 100755 admin/ltiuserprefs.php mode change 100644 => 100755 admin/modcourseorder.php mode change 100644 => 100755 admin/processltiqueue.php mode change 100644 => 100755 admin/pushoutchg.php mode change 100644 => 100755 admin/transfercourse.php mode change 100644 => 100755 admin/unhidefromcourselist.php mode change 100644 => 100755 admin/unittests.php mode change 100644 => 100755 admin/userdetails.php mode change 100644 => 100755 admin/userlti.php mode change 100644 => 100755 assessment/asidutil.php mode change 100644 => 100755 assessment/catscores.php mode change 100644 => 100755 assessment/checkint.php mode change 100644 => 100755 assessment/displayq2.php mode change 100644 => 100755 assessment/eqnhelper.html mode change 100644 => 100755 assessment/eqnhelperbasic.html mode change 100644 => 100755 assessment/font/Symbola.eot mode change 100644 => 100755 assessment/font/Symbola.otf mode change 100644 => 100755 assessment/font/Symbola.svg mode change 100644 => 100755 assessment/font/Symbola.ttf mode change 100644 => 100755 assessment/font/Symbola.woff mode change 100644 => 100755 assessment/font/Symbola2.eot mode change 100644 => 100755 assessment/font/Symbola2.svg mode change 100644 => 100755 assessment/font/Symbola2.ttf mode change 100644 => 100755 assessment/font/Symbola2.woff mode change 100644 => 100755 assessment/header.php mode change 100644 => 100755 assessment/interpret5.php mode change 100644 => 100755 assessment/libs/JSXG.html mode change 100644 => 100755 assessment/libs/JSXG.php mode change 100644 => 100755 assessment/libs/Viewer.class mode change 100644 => 100755 assessment/libs/acct.html mode change 100644 => 100755 assessment/libs/acct.php mode change 100644 => 100755 assessment/libs/calculus.html mode change 100644 => 100755 assessment/libs/calculus.php mode change 100644 => 100755 assessment/libs/chemistry.html mode change 100644 => 100755 assessment/libs/chemistry.php mode change 100644 => 100755 assessment/libs/chgbase.html mode change 100644 => 100755 assessment/libs/chgbase.php mode change 100644 => 100755 assessment/libs/construct2.html mode change 100644 => 100755 assessment/libs/construct2.php mode change 100644 => 100755 assessment/libs/crypto.html mode change 100644 => 100755 assessment/libs/crypto.php mode change 100644 => 100755 assessment/libs/expressInstall.swf mode change 100644 => 100755 assessment/libs/finance.html mode change 100644 => 100755 assessment/libs/finance.php mode change 100644 => 100755 assessment/libs/fractions.html mode change 100644 => 100755 assessment/libs/fractions.php mode change 100644 => 100755 assessment/libs/functioneval.html mode change 100644 => 100755 assessment/libs/functioneval.php mode change 100644 => 100755 assessment/libs/geogebra.html mode change 100644 => 100755 assessment/libs/geogebra.php mode change 100644 => 100755 assessment/libs/geom.php mode change 100644 => 100755 assessment/libs/graphtheory.html mode change 100644 => 100755 assessment/libs/graphtheory.php mode change 100644 => 100755 assessment/libs/ineq.html mode change 100644 => 100755 assessment/libs/ineq.php mode change 100644 => 100755 assessment/libs/interval.html mode change 100644 => 100755 assessment/libs/interval.php mode change 100644 => 100755 assessment/libs/interval_ext.html mode change 100644 => 100755 assessment/libs/interval_ext.php mode change 100644 => 100755 assessment/libs/libhelp.php mode change 100644 => 100755 assessment/libs/lineutil.html mode change 100644 => 100755 assessment/libs/lineutil.php mode change 100644 => 100755 assessment/libs/matrix.html mode change 100644 => 100755 assessment/libs/matrix.php mode change 100644 => 100755 assessment/libs/normalcurve.html mode change 100644 => 100755 assessment/libs/normalcurve.php mode change 100644 => 100755 assessment/libs/plot3d.html mode change 100644 => 100755 assessment/libs/plot3d.php mode change 100644 => 100755 assessment/libs/poly3.html mode change 100644 => 100755 assessment/libs/poly3.php mode change 100644 => 100755 assessment/libs/polys.html mode change 100644 => 100755 assessment/libs/polys.php mode change 100644 => 100755 assessment/libs/polys2.html mode change 100644 => 100755 assessment/libs/polys2.php mode change 100644 => 100755 assessment/libs/primes.html mode change 100644 => 100755 assessment/libs/primes.php mode change 100644 => 100755 assessment/libs/radicals.html mode change 100644 => 100755 assessment/libs/radicals.php mode change 100644 => 100755 assessment/libs/sagecell.html mode change 100644 => 100755 assessment/libs/sagecell.php mode change 100644 => 100755 assessment/libs/sagecellframe.html mode change 100644 => 100755 assessment/libs/simplex.html mode change 100644 => 100755 assessment/libs/simplex.php mode change 100644 => 100755 assessment/libs/socchoice.html mode change 100644 => 100755 assessment/libs/socchoice.php mode change 100644 => 100755 assessment/libs/solvers.html mode change 100644 => 100755 assessment/libs/solvers.php mode change 100644 => 100755 assessment/libs/stats.html mode change 100644 => 100755 assessment/libs/stats.php mode change 100644 => 100755 assessment/libs/timedate.php mode change 100644 => 100755 assessment/libs/vector.html mode change 100644 => 100755 assessment/libs/vector.php mode change 100644 => 100755 assessment/libs/viewer3d.swf mode change 100644 => 100755 assessment/libs/virtmanip.html mode change 100644 => 100755 assessment/libs/virtmanip.php mode change 100644 => 100755 assessment/macros.php mode change 100644 => 100755 assessment/mathphp2.php mode change 100644 => 100755 assessment/mathquill.css mode change 100644 => 100755 assessment/mathquilled.html mode change 100644 => 100755 assessment/mathtest.css mode change 100644 => 100755 assessment/print.css mode change 100644 => 100755 assessment/printtest.php mode change 100644 => 100755 assessment/qimages/Thumbs.db mode change 100644 => 100755 assessment/showsoln.php mode change 100644 => 100755 assessment/showtest.php mode change 100644 => 100755 assessment/testutil.php mode change 100644 => 100755 assessment/watchvid.php mode change 100644 => 100755 bltilaunch.php mode change 100644 => 100755 calcqtimes.php mode change 100644 => 100755 canvas.php mode change 100644 => 100755 canvasnav.php mode change 100644 => 100755 changelog.html mode change 100644 => 100755 checkbrowser.php mode change 100644 => 100755 codeception.yml mode change 100644 => 100755 composer.json mode change 100644 => 100755 composer.lock mode change 100644 => 100755 config.php.dist mode change 100644 => 100755 course/addassessment.php mode change 100644 => 100755 course/addblock.php mode change 100644 => 100755 course/addcalendar.php mode change 100644 => 100755 course/adddrillassess.php mode change 100644 => 100755 course/addforum.php mode change 100644 => 100755 course/addgrades.php mode change 100644 => 100755 course/addinlinetext.php mode change 100644 => 100755 course/addlinkedtext.php mode change 100644 => 100755 course/addoutcomes.php mode change 100644 => 100755 course/addquestions.css mode change 100644 => 100755 course/addquestions.php mode change 100644 => 100755 course/addquestionssave.php mode change 100644 => 100755 course/addrubric.php mode change 100644 => 100755 course/addvideotimes.php mode change 100644 => 100755 course/addwiki.php mode change 100644 => 100755 course/assessendmsg.php mode change 100644 => 100755 course/categorize.php mode change 100644 => 100755 course/chgassessments.php mode change 100644 => 100755 course/chgblocks.php mode change 100644 => 100755 course/chgforums.php mode change 100644 => 100755 course/chgoffline.php mode change 100644 => 100755 course/claimbadge.php mode change 100644 => 100755 course/contentstats.php mode change 100644 => 100755 course/convertintro.php mode change 100644 => 100755 course/copyitems.php mode change 100644 => 100755 course/copyoneitem.php mode change 100644 => 100755 course/course.php mode change 100644 => 100755 course/coursemap.php mode change 100644 => 100755 course/coursereports.php mode change 100644 => 100755 course/courseshowitems.php mode change 100644 => 100755 course/coursetolibrary.php mode change 100644 => 100755 course/definebadges.php mode change 100644 => 100755 course/deleteassessment.php mode change 100644 => 100755 course/deleteblock.php mode change 100644 => 100755 course/deletedrillassess.php mode change 100644 => 100755 course/deleteforum.php mode change 100644 => 100755 course/deleteinlinetext.php mode change 100644 => 100755 course/deletelinkedtext.php mode change 100644 => 100755 course/deletewiki.php mode change 100644 => 100755 course/delitembyid.php mode change 100644 => 100755 course/drillassess.php mode change 100644 => 100755 course/editsnippets.php mode change 100644 => 100755 course/edittoolscores.php mode change 100644 => 100755 course/embedhelper.php mode change 100644 => 100755 course/enrollfromothercourse.php mode change 100644 => 100755 course/exception.php mode change 100644 => 100755 course/exportcalfeed.php mode change 100644 => 100755 course/files/.gitignore mode change 100644 => 100755 course/gb-aidexport.php mode change 100644 => 100755 course/gb-export.php mode change 100644 => 100755 course/gb-itemanalysis.php mode change 100644 => 100755 course/gb-itemanalysisdetail.php mode change 100644 => 100755 course/gb-itemresults.php mode change 100644 => 100755 course/gb-testing.php mode change 100644 => 100755 course/gb-viewasid.php mode change 100644 => 100755 course/gb-viewdrill.php mode change 100644 => 100755 course/gbcomments.php mode change 100644 => 100755 course/gbsettings.php mode change 100644 => 100755 course/gbtable2.php mode change 100644 => 100755 course/getblockitems.php mode change 100644 => 100755 course/getblockitemspublic.php mode change 100644 => 100755 course/gradeallq.php mode change 100644 => 100755 course/gradebook.php mode change 100644 => 100755 course/improvoerassess.php mode change 100644 => 100755 course/isolateassessbygroup.php mode change 100644 => 100755 course/isolateassessgrade.php mode change 100644 => 100755 course/latepasses.php mode change 100644 => 100755 course/libtree.css mode change 100644 => 100755 course/libtree.php mode change 100644 => 100755 course/libtree2.php mode change 100644 => 100755 course/listusers.php mode change 100644 => 100755 course/lockstu.php mode change 100644 => 100755 course/logingrid.php mode change 100644 => 100755 course/managecalitems.php mode change 100644 => 100755 course/managelibs.php mode change 100644 => 100755 course/manageqset.php mode change 100644 => 100755 course/managestugrps.php mode change 100644 => 100755 course/managetutors.php mode change 100644 => 100755 course/masschgdates.php mode change 100644 => 100755 course/massexception.php mode change 100644 => 100755 course/masssend.php mode change 100644 => 100755 course/mergeassess.php mode change 100644 => 100755 course/moddataset.php mode change 100644 => 100755 course/modquestion.php mode change 100644 => 100755 course/modquestiongrid.php mode change 100644 => 100755 course/modtutorialq.php mode change 100644 => 100755 course/moveitem.php mode change 100644 => 100755 course/outcomemap.php mode change 100644 => 100755 course/outcomereport.php mode change 100644 => 100755 course/outcometable.php mode change 100644 => 100755 course/printlayout.php mode change 100644 => 100755 course/printlayoutbare.php mode change 100644 => 100755 course/printlayoutword.php mode change 100644 => 100755 course/printtest.php mode change 100644 => 100755 course/public.php mode change 100644 => 100755 course/quickdrill.php mode change 100644 => 100755 course/rectrack.php mode change 100644 => 100755 course/redeemlatepass.php mode change 100644 => 100755 course/redeemlatepassforum.php mode change 100644 => 100755 course/report-commonstu.php mode change 100644 => 100755 course/report-weeklylab.php mode change 100644 => 100755 course/reviewlibrary.php mode change 100644 => 100755 course/savebrokenqflag.php mode change 100644 => 100755 course/savecalendardrag.php mode change 100644 => 100755 course/savelibassignflag.php mode change 100644 => 100755 course/savequickreorder.php mode change 100644 => 100755 course/sendmsgmodal.php mode change 100644 => 100755 course/showcalendar.php mode change 100644 => 100755 course/showfeedback.php mode change 100644 => 100755 course/showfeedbackall.php mode change 100644 => 100755 course/showlicense.php mode change 100644 => 100755 course/showlinkedtext.php mode change 100644 => 100755 course/showlinkedtextpublic.php mode change 100644 => 100755 course/showstugroup.php mode change 100644 => 100755 course/solver.css mode change 100644 => 100755 course/testquestion.php mode change 100644 => 100755 course/timeshift.php mode change 100644 => 100755 course/treereader.php mode change 100644 => 100755 course/unenroll.php mode change 100644 => 100755 course/uploadgrades.php mode change 100644 => 100755 course/uploadmultgrades.php mode change 100644 => 100755 course/verifybadge.php mode change 100644 => 100755 course/viewactionlog.php mode change 100644 => 100755 course/viewemails.php mode change 100644 => 100755 course/viewforumgrade.php mode change 100644 => 100755 course/viewloginlog.php mode change 100644 => 100755 course/viewsource.php mode change 100644 => 100755 csrfp/index.php mode change 100644 => 100755 csrfp/js/index.php mode change 100644 => 100755 csrfp/js/simplecsrfprotector.js mode change 100644 => 100755 csrfp/licence.md mode change 100644 => 100755 csrfp/log/.gitignore mode change 100644 => 100755 csrfp/log/.htaccess mode change 100644 => 100755 csrfp/log/index.php mode change 100644 => 100755 csrfp/simplecsrfp.php mode change 100644 => 100755 diag/index.php mode change 100644 => 100755 directaccess.php mode change 100644 => 100755 docs/AccessingOnlineHomeworkinWAMAP.doc mode change 100644 => 100755 docs/GettingStarted.pdf mode change 100644 => 100755 docs/administration.html mode change 100644 => 100755 docs/asciimathref.html mode change 100644 => 100755 docs/commontasks.html mode change 100644 => 100755 docs/diagnostics.html mode change 100644 => 100755 docs/docs.css mode change 100644 => 100755 docs/docs.php mode change 100644 => 100755 docs/gettingstarted.html mode change 100644 => 100755 docs/introquestionwriting.html mode change 100644 => 100755 docs/langquickref.doc mode change 100644 => 100755 docs/managing.html mode change 100644 => 100755 docs/morequestions.html mode change 100644 => 100755 docs/questionoddities.html mode change 100644 => 100755 embedq.php mode change 100644 => 100755 filestore/.gitignore mode change 100644 => 100755 filter/basiclti/blti_util.php mode change 100644 => 100755 filter/basiclti/post.php mode change 100644 => 100755 filter/filter.php mode change 100644 => 100755 filter/graph/FreeSerifItalic.ttf mode change 100644 => 100755 filter/graph/asciisvgimg.php mode change 100644 => 100755 filter/graph/imgs/.gitignore mode change 100644 => 100755 filter/graph/sscrtotext.php mode change 100644 => 100755 filter/graph/svgimg.php mode change 100644 => 100755 filter/math/ASCIIMath2TeX.php mode change 100644 => 100755 firebase-messaging-sw.php mode change 100644 => 100755 footer.php mode change 100644 => 100755 forms.php mode change 100644 => 100755 forums/embeddone.php mode change 100644 => 100755 forums/flaggedthreads.php mode change 100644 => 100755 forums/forums.css mode change 100644 => 100755 forums/forums.php mode change 100644 => 100755 forums/listlikes.php mode change 100644 => 100755 forums/listviews.php mode change 100644 => 100755 forums/newthreads.php mode change 100644 => 100755 forums/posthandler.php mode change 100644 => 100755 forums/posts.php mode change 100644 => 100755 forums/postsbyname.php mode change 100644 => 100755 forums/recordlikes.php mode change 100644 => 100755 forums/savetagged.php mode change 100644 => 100755 forums/thread.php mode change 100644 => 100755 gethomemenu.php mode change 100644 => 100755 getpostlist.php mode change 100644 => 100755 handheld.css mode change 100644 => 100755 header.php mode change 100644 => 100755 help.html mode change 100644 => 100755 help.php mode change 100644 => 100755 i18n/de.po mode change 100644 => 100755 i18n/extractjsfrompo.php mode change 100644 => 100755 i18n/getjsmessages.php mode change 100644 => 100755 i18n/i18n.php mode change 100644 => 100755 i18n/locale/de/LC_MESSAGES/imathas.mo mode change 100644 => 100755 i18n/locale/de/messages.js mode change 100644 => 100755 i18n/messages.js mode change 100644 => 100755 i18n/messages.po mode change 100644 => 100755 i18n/notes.txt mode change 100644 => 100755 i18n/translating.md mode change 100644 => 100755 iconfonts/caledit.css mode change 100644 => 100755 iconfonts/font_contents.html mode change 100644 => 100755 iconfonts/fonts/addquestions.eot mode change 100644 => 100755 iconfonts/fonts/addquestions.svg mode change 100644 => 100755 iconfonts/fonts/addquestions.ttf mode change 100644 => 100755 iconfonts/fonts/addquestions.woff mode change 100644 => 100755 iconfonts/fonts/caledit.eot mode change 100644 => 100755 iconfonts/fonts/caledit.svg mode change 100644 => 100755 iconfonts/fonts/caledit.ttf mode change 100644 => 100755 iconfonts/fonts/caledit.woff mode change 100644 => 100755 iconfonts/fonts/imathas.eot mode change 100644 => 100755 iconfonts/fonts/imathas.svg mode change 100644 => 100755 iconfonts/fonts/imathas.ttf mode change 100644 => 100755 iconfonts/fonts/imathas.woff mode change 100644 => 100755 iconfonts/imathasfont.css mode change 100644 => 100755 iconfonts/imathasfontie7.css mode change 100644 => 100755 iconfonts/selection.json mode change 100644 => 100755 iconfonts/style.css mode change 100644 => 100755 imas.css mode change 100644 => 100755 imascore.css mode change 100644 => 100755 imathasltiplan.txt mode change 100644 => 100755 img/1day.png mode change 100644 => 100755 img/assess.png mode change 100644 => 100755 img/assess_tiny.png mode change 100644 => 100755 img/assess_tiny_no.png mode change 100644 => 100755 img/badge.php mode change 100644 => 100755 img/badgebase.png mode change 100644 => 100755 img/blank.gif mode change 100644 => 100755 img/cal.gif mode change 100644 => 100755 img/cc.png mode change 100644 => 100755 img/collapse.gif mode change 100644 => 100755 img/doc.png mode change 100644 => 100755 img/doc_tiny.png mode change 100644 => 100755 img/drill.png mode change 100644 => 100755 img/drill_tiny.png mode change 100644 => 100755 img/emptycircle.png mode change 100644 => 100755 img/expand.gif mode change 100644 => 100755 img/extlink.png mode change 100644 => 100755 img/flagempty.gif mode change 100644 => 100755 img/flagfilled.gif mode change 100644 => 100755 img/folder.gif mode change 100644 => 100755 img/folder.png mode change 100644 => 100755 img/folder2.gif mode change 100644 => 100755 img/folder_tiny.png mode change 100644 => 100755 img/folder_tree.png mode change 100644 => 100755 img/folder_tree_tiny.png mode change 100644 => 100755 img/forum.png mode change 100644 => 100755 img/forum_tiny.png mode change 100644 => 100755 img/fullcircle.png mode change 100644 => 100755 img/gchk.gif mode change 100644 => 100755 img/gears.png mode change 100644 => 100755 img/gearsdd.png mode change 100644 => 100755 img/graph.gif mode change 100644 => 100755 img/halfcircle.png mode change 100644 => 100755 img/help.gif mode change 100644 => 100755 img/html.png mode change 100644 => 100755 img/html_tiny.png mode change 100644 => 100755 img/html_tiny_no.png mode change 100644 => 100755 img/image.png mode change 100644 => 100755 img/inline.png mode change 100644 => 100755 img/inline_tiny.png mode change 100644 => 100755 img/liked.png mode change 100644 => 100755 img/likedgray.png mode change 100644 => 100755 img/lock.png mode change 100644 => 100755 img/maple.png mode change 100644 => 100755 img/mathml.gif mode change 100644 => 100755 img/mathnb.png mode change 100644 => 100755 img/menu.png mode change 100644 => 100755 img/mq_cursor_sprites.png mode change 100644 => 100755 img/mq_cursor_sprites2.png mode change 100644 => 100755 img/normalcurve.gif mode change 100644 => 100755 img/noview.png mode change 100644 => 100755 img/orgx.gif mode change 100644 => 100755 img/pdf.png mode change 100644 => 100755 img/pen.cur mode change 100644 => 100755 img/pendown.cur mode change 100644 => 100755 img/ppt.png mode change 100644 => 100755 img/q_emptybox.gif mode change 100644 => 100755 img/q_fullbox.gif mode change 100644 => 100755 img/q_halfbox.gif mode change 100644 => 100755 img/redx.gif mode change 100644 => 100755 img/ruler.jpg mode change 100644 => 100755 img/screens.jpg mode change 100644 => 100755 img/simplebg.png mode change 100644 => 100755 img/sound.png mode change 100644 => 100755 img/swap.gif mode change 100644 => 100755 img/te_blank.gif mode change 100644 => 100755 img/te_blue_arrow.png mode change 100644 => 100755 img/te_blue_empty_arrow.png mode change 100644 => 100755 img/te_green_check.png mode change 100644 => 100755 img/te_red_ex.png mode change 100644 => 100755 img/te_red_redo.png mode change 100644 => 100755 img/te_yellow_check.png mode change 100644 => 100755 img/te_yellow_redo.png mode change 100644 => 100755 img/time.png mode change 100644 => 100755 img/tinyarrow.gif mode change 100644 => 100755 img/tpabs.gif mode change 100644 => 100755 img/tpcirc.gif mode change 100644 => 100755 img/tpcirc.png mode change 100644 => 100755 img/tpcos.png mode change 100644 => 100755 img/tpdot.gif mode change 100644 => 100755 img/tpellipse.png mode change 100644 => 100755 img/tpexp.png mode change 100644 => 100755 img/tphorizhyper.png mode change 100644 => 100755 img/tphorizparab.png mode change 100644 => 100755 img/tpineq.gif mode change 100644 => 100755 img/tpineqdash.gif mode change 100644 => 100755 img/tpineqparab.gif mode change 100644 => 100755 img/tpineqparabdash.gif mode change 100644 => 100755 img/tpline.gif mode change 100644 => 100755 img/tpline2.gif mode change 100644 => 100755 img/tpline3.gif mode change 100644 => 100755 img/tplog.png mode change 100644 => 100755 img/tpodot.gif mode change 100644 => 100755 img/tpparab.gif mode change 100644 => 100755 img/tpparab.png mode change 100644 => 100755 img/tprat.png mode change 100644 => 100755 img/tpsin.png mode change 100644 => 100755 img/tpsqrt.png mode change 100644 => 100755 img/tpvec.gif mode change 100644 => 100755 img/tpverthyper.png mode change 100644 => 100755 img/typing.jpg mode change 100644 => 100755 img/updating.gif mode change 100644 => 100755 img/uppointer.gif mode change 100644 => 100755 img/video.png mode change 100644 => 100755 img/video_tiny.png mode change 100644 => 100755 img/video_tiny_no.png mode change 100644 => 100755 img/vidicons.png mode change 100644 => 100755 img/web.png mode change 100644 => 100755 img/wiki.png mode change 100644 => 100755 img/wiki_tiny.png mode change 100644 => 100755 img/xls.png mode change 100644 => 100755 img/ychk.gif mode change 100644 => 100755 img/zip.png mode change 100644 => 100755 includes/AWSSNSutil.php mode change 100644 => 100755 includes/DEutil.php mode change 100644 => 100755 includes/FCM.php mode change 100644 => 100755 includes/JSON.php mode change 100644 => 100755 includes/JWT.php mode change 100644 => 100755 includes/OAuth.php mode change 100644 => 100755 includes/S3.php mode change 100644 => 100755 includes/calendardata.php mode change 100644 => 100755 includes/calendardisp.php mode change 100644 => 100755 includes/copyiteminc.php mode change 100644 => 100755 includes/coursecopylist.php mode change 100644 => 100755 includes/diff.php mode change 100644 => 100755 includes/email.php mode change 100644 => 100755 includes/exceptionfuncs.php mode change 100644 => 100755 includes/filehandler.php mode change 100644 => 100755 includes/htmLawed.php mode change 100644 => 100755 includes/htmlutil.php mode change 100644 => 100755 includes/loaditemshowdata.php mode change 100644 => 100755 includes/ltioauthstore.php mode change 100644 => 100755 includes/ltioutcomes.php mode change 100644 => 100755 includes/mailses.php mode change 100644 => 100755 includes/newusercommon.php mode change 100644 => 100755 includes/parsedatetime.php mode change 100644 => 100755 includes/password.php mode change 100644 => 100755 includes/report-commonstu-funcs.php mode change 100644 => 100755 includes/rubric.php mode change 100644 => 100755 includes/safeunserialize.php mode change 100644 => 100755 includes/sanitize.php mode change 100644 => 100755 includes/session.php mode change 100644 => 100755 includes/stugroups.php mode change 100644 => 100755 includes/tar.class.php mode change 100644 => 100755 includes/unenroll.php mode change 100644 => 100755 includes/updateassess.php mode change 100644 => 100755 includes/updateptsposs.php mode change 100644 => 100755 includes/userpics.php mode change 100644 => 100755 includes/userprefs.php mode change 100644 => 100755 includes/userutils.php mode change 100644 => 100755 index.php mode change 100644 => 100755 info/answerimgs/103.gif mode change 100644 => 100755 info/answerimgs/12.gif mode change 100644 => 100755 info/answerimgs/1oxtxp1.gif mode change 100644 => 100755 info/answerimgs/23.gif mode change 100644 => 100755 info/answerimgs/24.gif mode change 100644 => 100755 info/answerimgs/2o5m3.gif mode change 100644 => 100755 info/answerimgs/2pxo3mx.gif mode change 100644 => 100755 info/answerimgs/3s.gif mode change 100644 => 100755 info/answerimgs/3txp7.gif mode change 100644 => 100755 info/answerimgs/513.gif mode change 100644 => 100755 info/answerimgs/53x.gif mode change 100644 => 100755 info/answerimgs/arcsinx.gif mode change 100644 => 100755 info/answerimgs/arctan1.gif mode change 100644 => 100755 info/answerimgs/f1.gif mode change 100644 => 100755 info/answerimgs/f2.gif mode change 100644 => 100755 info/answerimgs/f3.gif mode change 100644 => 100755 info/answerimgs/lnoln.gif mode change 100644 => 100755 info/answerimgs/log100.gif mode change 100644 => 100755 info/answerimgs/m3xs.gif mode change 100644 => 100755 info/answerimgs/s4.gif mode change 100644 => 100755 info/answerimgs/sinpi.gif mode change 100644 => 100755 info/answerimgs/sinpio3x.gif mode change 100644 => 100755 info/answerimgs/sxm5.gif mode change 100644 => 100755 info/enteringanswers.php mode change 100644 => 100755 infoheader.php.dist mode change 100644 => 100755 infopages.css mode change 100644 => 100755 init.php mode change 100644 => 100755 init_without_validate.php mode change 100644 => 100755 install.php mode change 100644 => 100755 installexamples.php mode change 100644 => 100755 javascript/3dviewer.js mode change 100644 => 100755 javascript/AMhelpers.js mode change 100644 => 100755 javascript/AMtoMQ.js mode change 100644 => 100755 javascript/ASCIIMathML.js mode change 100644 => 100755 javascript/ASCIIMathML_min.js mode change 100644 => 100755 javascript/ASCIIMathMLwFallback.js mode change 100644 => 100755 javascript/ASCIIMathTeXImg.js mode change 100644 => 100755 javascript/ASCIIMathTeXImg_min.js mode change 100644 => 100755 javascript/ASCIIsvg.js mode change 100644 => 100755 javascript/ASCIIsvg_min.js mode change 100644 => 100755 javascript/CalendarPopup.js mode change 100644 => 100755 javascript/ColorPicker2.js mode change 100644 => 100755 javascript/DatePicker.js mode change 100644 => 100755 javascript/MQbundle_min.js mode change 100644 => 100755 javascript/a11ytree.js mode change 100644 => 100755 javascript/addgrades.js mode change 100644 => 100755 javascript/addqsort.js mode change 100644 => 100755 javascript/addquestions.js mode change 100644 => 100755 javascript/assessment_min.js mode change 100644 => 100755 javascript/codemirror/LICENSE mode change 100644 => 100755 javascript/codemirror/codemirror-compressed.js mode change 100644 => 100755 javascript/codemirror/codemirror_min.css mode change 100644 => 100755 javascript/codemirror/imathas.js mode change 100644 => 100755 javascript/colorpicker.js mode change 100644 => 100755 javascript/confirmsubmit.js mode change 100644 => 100755 javascript/copyitemslist.js mode change 100644 => 100755 javascript/course.js mode change 100644 => 100755 javascript/coursebrowserprops.js.dist mode change 100644 => 100755 javascript/cpimages/blank.gif mode change 100644 => 100755 javascript/cpimages/cp_arrows.gif mode change 100644 => 100755 javascript/cpimages/cp_color_slider.png mode change 100644 => 100755 javascript/cpimages/cp_cur_color_background.png mode change 100644 => 100755 javascript/cpimages/cp_horizontal_picker.png mode change 100644 => 100755 javascript/cpimages/cp_lg_background.png mode change 100644 => 100755 javascript/cpimages/cp_lg_overlay.png mode change 100644 => 100755 javascript/cpimages/cp_mini_icon.png mode change 100644 => 100755 javascript/cpimages/cp_web_safe.gif mode change 100644 => 100755 javascript/d.svg mode change 100644 => 100755 javascript/diag.js mode change 100644 => 100755 javascript/drawing.js mode change 100644 => 100755 javascript/eqnhelper.js mode change 100644 => 100755 javascript/eqntips.js mode change 100644 => 100755 javascript/excanvas.js mode change 100644 => 100755 javascript/excanvas_min.js mode change 100644 => 100755 javascript/fuse.min.js mode change 100644 => 100755 javascript/gb-scoretools.js mode change 100644 => 100755 javascript/general.js mode change 100644 => 100755 javascript/gradebook.js mode change 100644 => 100755 javascript/iframeSizer_contentWindow_min.js mode change 100644 => 100755 javascript/jquery-sortable.js mode change 100644 => 100755 javascript/jquery.min.js mode change 100644 => 100755 javascript/jquery.validate.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ar.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_az.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_bg.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_bn_BD.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ca.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_cs.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_da.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_de.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_el.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_es.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_es_AR.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_es_PE.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_et.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_eu.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_fa.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_fi.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_fr.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ge.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_gl.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_he.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_hr.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_hu.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_hy_AM.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_id.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_is.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_it.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ja.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ka.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_kk.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ko.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_lt.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_lv.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_mk.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_my.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_nl.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_no.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_pl.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_pt_BR.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_pt_PT.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ro.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ru.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_si.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_sk.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_sl.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_sr.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_sr_lat.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_sv.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_th.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_tj.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_tr.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_uk.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_ur.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_vi.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_zh.min.js mode change 100644 => 100755 javascript/jqvalidatei18n/messages_zh_TW.min.js mode change 100644 => 100755 javascript/jstz_min.js mode change 100644 => 100755 javascript/junkflag.js mode change 100644 => 100755 javascript/libtree.js mode change 100644 => 100755 javascript/libtree2.js mode change 100644 => 100755 javascript/livepoll.js mode change 100644 => 100755 javascript/masschgdates.js mode change 100644 => 100755 javascript/mathgraphcheck.js mode change 100644 => 100755 javascript/mathjax/InputToDataAttr.js mode change 100644 => 100755 javascript/mathjax/InputToDataAttrCDN.js mode change 100644 => 100755 javascript/mathjs.js mode change 100644 => 100755 javascript/mathquill.js mode change 100644 => 100755 javascript/mathquill_min.js mode change 100644 => 100755 javascript/mathquilled.js mode change 100644 => 100755 javascript/md5.js mode change 100644 => 100755 javascript/md5_min.js mode change 100644 => 100755 javascript/mootools.js mode change 100644 => 100755 javascript/moveitem.js mode change 100644 => 100755 javascript/msg.js mode change 100644 => 100755 javascript/nested1.js mode change 100644 => 100755 javascript/pngbehavior.htc mode change 100644 => 100755 javascript/posts.js mode change 100644 => 100755 javascript/rubric.js mode change 100644 => 100755 javascript/solver.js mode change 100644 => 100755 javascript/solversagecell.html mode change 100644 => 100755 javascript/tablescroller.js mode change 100644 => 100755 javascript/tablescroller2.js mode change 100644 => 100755 javascript/tablesorter.js mode change 100644 => 100755 javascript/testmathjs.html mode change 100644 => 100755 javascript/thread.js mode change 100644 => 100755 javascript/validateform.js mode change 100644 => 100755 javascript/viewwiki.js mode change 100644 => 100755 javascript/ytapi.js mode change 100644 => 100755 katex/README.md mode change 100644 => 100755 katex/auto-render.js mode change 100644 => 100755 katex/fonts/KaTeX_AMS-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_AMS-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_AMS-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_AMS-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Bold.eot mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Bold.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Bold.woff mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Bold.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Caligraphic-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Bold.eot mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Bold.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Bold.woff mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Bold.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Fraktur-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Main-Bold.eot mode change 100644 => 100755 katex/fonts/KaTeX_Main-Bold.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Main-Bold.woff mode change 100644 => 100755 katex/fonts/KaTeX_Main-Bold.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Main-Italic.eot mode change 100644 => 100755 katex/fonts/KaTeX_Main-Italic.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Main-Italic.woff mode change 100644 => 100755 katex/fonts/KaTeX_Main-Italic.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Main-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Main-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Main-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Main-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Math-BoldItalic.eot mode change 100644 => 100755 katex/fonts/KaTeX_Math-BoldItalic.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Math-BoldItalic.woff mode change 100644 => 100755 katex/fonts/KaTeX_Math-BoldItalic.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Math-Italic.eot mode change 100644 => 100755 katex/fonts/KaTeX_Math-Italic.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Math-Italic.woff mode change 100644 => 100755 katex/fonts/KaTeX_Math-Italic.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Math-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Math-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Math-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Math-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Bold.eot mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Bold.ttf mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Bold.woff mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Bold.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Italic.eot mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Italic.ttf mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Italic.woff mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Italic.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_SansSerif-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Script-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Script-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Script-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Script-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Size1-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Size1-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Size1-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Size1-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Size2-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Size2-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Size2-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Size2-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Size3-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Size3-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Size3-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Size3-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Size4-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Size4-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Size4-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Size4-Regular.woff2 mode change 100644 => 100755 katex/fonts/KaTeX_Typewriter-Regular.eot mode change 100644 => 100755 katex/fonts/KaTeX_Typewriter-Regular.ttf mode change 100644 => 100755 katex/fonts/KaTeX_Typewriter-Regular.woff mode change 100644 => 100755 katex/fonts/KaTeX_Typewriter-Regular.woff2 mode change 100644 => 100755 katex/katex.min.css mode change 100644 => 100755 katex/katex.min.js mode change 100644 => 100755 katex/test.html mode change 100644 => 100755 license.txt mode change 100644 => 100755 loginpage.php.dist mode change 100644 => 100755 ltihome.php mode change 100644 => 100755 ltisessionsetup.php mode change 100644 => 100755 migrations/.htaccess mode change 100644 => 100755 migrations/120_rollback_available_bug.php mode change 100644 => 100755 migrations/121_add_userprefs.php mode change 100644 => 100755 migrations/123_config_basesiteurl.php mode change 100644 => 100755 migrations/124_rewrite_s3.php mode change 100644 => 100755 migrations/125_db_sessions.php mode change 100644 => 100755 migrations/126_federation.php mode change 100644 => 100755 migrations/127_add_indices.php mode change 100644 => 100755 migrations/128_add_indices_2.php mode change 100644 => 100755 migrations/129_add_indices_3.php mode change 100644 => 100755 migrations/130_acct_taskrights.php mode change 100644 => 100755 migrations/132_expand_gbmode.php mode change 100644 => 100755 migrations/133_add_indices_4.php mode change 100644 => 100755 migrations/134_add_user_jsondata.php mode change 100644 => 100755 migrations/135_add_course_jsondata.php mode change 100644 => 100755 migrations/137_add_forcepwreset.php mode change 100644 => 100755 migrations/138_loginformat_warning.php mode change 100644 => 100755 migrations/139_new_instr_req.php mode change 100644 => 100755 migrations/141_add_lticourse_copiedfrom.php mode change 100644 => 100755 migrations/142_assess_ptspossible.php mode change 100644 => 100755 migrations/143_dates_by_lti.php mode change 100644 => 100755 migrations/144_assess_reqscoretype.php mode change 100644 => 100755 migrations/146_add_course_startenddates.php mode change 100644 => 100755 migrations/147_bugfix_datesbylti.php mode change 100644 => 100755 migrations/148_add_contextlabel.php mode change 100644 => 100755 migrations/149_expand_latepassnum.php mode change 100644 => 100755 migrations/150_add_indices_5.php mode change 100644 => 100755 migrations/151_add_indices_6.php mode change 100644 => 100755 migrations/152_add_cleanupdate.php mode change 100644 => 100755 migrations/153_add_LPcutoff.php mode change 100644 => 100755 migrations/154_add_ltiqueue.php mode change 100644 => 100755 migrations/155_add_assess_extrefs.php mode change 100644 => 100755 migrations/156_add_dbschema_details.php mode change 100644 => 100755 migrations/157_expand_namefields.php mode change 100644 => 100755 migrations/readme.md mode change 100644 => 100755 migrator.php mode change 100644 => 100755 msgs/allstumsglist.php mode change 100644 => 100755 msgs/msghistory.php mode change 100644 => 100755 msgs/msglist.php mode change 100644 => 100755 msgs/newmsglist.php mode change 100644 => 100755 msgs/savetagged.php mode change 100644 => 100755 msgs/sentlist.php mode change 100644 => 100755 msgs/viewmsg.php mode change 100644 => 100755 multiembedq.php mode change 100644 => 100755 newinstructor.php.dist mode change 100644 => 100755 pdochanges.md mode change 100644 => 100755 phpunit.xml mode change 100644 => 100755 plannedchanges.html mode change 100644 => 100755 readme.html mode change 100644 => 100755 setupdb.php mode change 100644 => 100755 tests/.htaccess mode change 100644 => 100755 tests/README.md mode change 100644 => 100755 tests/_data/.gitkeep mode change 100644 => 100755 tests/_support/AcceptanceTester.php mode change 100644 => 100755 tests/_support/FunctionalTester.php mode change 100644 => 100755 tests/_support/Helper/Acceptance.php mode change 100644 => 100755 tests/_support/Helper/Functional.php mode change 100644 => 100755 tests/_support/Helper/Unit.php mode change 100644 => 100755 tests/_support/UnitTester.php mode change 100644 => 100755 tests/acceptance.suite.yml mode change 100644 => 100755 tests/acceptance/AdminLoginCest.php mode change 100644 => 100755 tests/functional.suite.yml mode change 100644 => 100755 tests/functional/.gitkeep mode change 100644 => 100755 tests/unit.suite.yml mode change 100644 => 100755 tests/unit/sanitizeTest.php mode change 100644 => 100755 themes/angelish.css mode change 100644 => 100755 themes/angelishmore.css mode change 100644 => 100755 themes/default.css mode change 100644 => 100755 themes/facebookish.css mode change 100644 => 100755 themes/highcontrast.css mode change 100644 => 100755 themes/highcontrast_dark.css mode change 100644 => 100755 themes/howtotheme.md mode change 100644 => 100755 themes/modern.css mode change 100644 => 100755 themes/oea.css mode change 100644 => 100755 tinymce4/demo.html mode change 100644 => 100755 tinymce4/file_manager.php mode change 100644 => 100755 tinymce4/file_manager/file_small.png mode change 100644 => 100755 tinymce4/file_manager/lang/lang_eng.php mode change 100644 => 100755 tinymce4/file_manager/styles.css mode change 100644 => 100755 tinymce4/file_manager/x.png mode change 100644 => 100755 tinymce4/getsnippets.php mode change 100644 => 100755 tinymce4/license.txt mode change 100644 => 100755 tinymce4/maketinymcebundle.php mode change 100644 => 100755 tinymce4/plugins/advlist/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/anchor/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/asciimath/amcharmap.css mode change 100644 => 100755 tinymce4/plugins/asciimath/amcharmap.htm mode change 100644 => 100755 tinymce4/plugins/asciimath/img/charmapsprite.png mode change 100644 => 100755 tinymce4/plugins/asciimath/img/ed_mathformula.gif mode change 100644 => 100755 tinymce4/plugins/asciimath/img/ed_mathformula2.gif mode change 100644 => 100755 tinymce4/plugins/asciimath/js/ASCIIMathMLwFallback.js mode change 100644 => 100755 tinymce4/plugins/asciimath/langs/en.js mode change 100644 => 100755 tinymce4/plugins/asciimath/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/asciimathjax/amcharmap.htm mode change 100644 => 100755 tinymce4/plugins/asciimathjax/img/ed_mathformula.gif mode change 100644 => 100755 tinymce4/plugins/asciimathjax/img/ed_mathformula2.gif mode change 100644 => 100755 tinymce4/plugins/asciimathjax/js/ASCIIMathMLwFallback.js mode change 100644 => 100755 tinymce4/plugins/asciimathjax/langs/en.js mode change 100644 => 100755 tinymce4/plugins/asciimathjax/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/asciisvg/asciisvgdlg.htm mode change 100644 => 100755 tinymce4/plugins/asciisvg/img/ed_asciisvg.gif mode change 100644 => 100755 tinymce4/plugins/asciisvg/js/asciisvgdlg.js mode change 100644 => 100755 tinymce4/plugins/asciisvg/js/d.svg mode change 100644 => 100755 tinymce4/plugins/asciisvg/langs/en.js mode change 100644 => 100755 tinymce4/plugins/asciisvg/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/asciisvg2/asciisvgdlg.htm mode change 100644 => 100755 tinymce4/plugins/asciisvg2/img/ed_asciisvg.gif mode change 100644 => 100755 tinymce4/plugins/asciisvg2/js/ASCIIsvg.js mode change 100644 => 100755 tinymce4/plugins/asciisvg2/js/asciisvgdlg.js mode change 100644 => 100755 tinymce4/plugins/asciisvg2/js/d.svg mode change 100644 => 100755 tinymce4/plugins/asciisvg2/langs/en.js mode change 100644 => 100755 tinymce4/plugins/asciisvg2/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/attach/ed_attach.gif mode change 100644 => 100755 tinymce4/plugins/attach/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/autolink/plugin.js mode change 100644 => 100755 tinymce4/plugins/autolink/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/charmap/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/code/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/colorpicker/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/contextmenu/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/hr/plugin.js mode change 100644 => 100755 tinymce4/plugins/hr/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/image/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/imagetools/config/bolt/atomic.js mode change 100644 => 100755 tinymce4/plugins/imagetools/config/bolt/browser.js mode change 100644 => 100755 tinymce4/plugins/imagetools/config/bolt/demo.js mode change 100644 => 100755 tinymce4/plugins/imagetools/config/bolt/prod.js mode change 100644 => 100755 tinymce4/plugins/imagetools/plugin.js mode change 100644 => 100755 tinymce4/plugins/imagetools/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/demo/html/demo.html mode change 100644 => 100755 tinymce4/plugins/imagetools/src/demo/js/Demo.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/main/js/CropRect.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/main/js/Dialog.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/main/js/ImagePanel.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/main/js/Plugin.js mode change 100644 => 100755 tinymce4/plugins/imagetools/src/main/js/UndoStack.js mode change 100644 => 100755 tinymce4/plugins/link/plugin.js mode change 100644 => 100755 tinymce4/plugins/link/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/lists/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/media/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/paste/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/rollups/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/searchreplace/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/snippet/plugin.js mode change 100644 => 100755 tinymce4/plugins/table/plugin.min.js mode change 100644 => 100755 tinymce4/plugins/textcolor/plugin.min.js mode change 100644 => 100755 tinymce4/skins/lightgray/content.inline.min.css mode change 100644 => 100755 tinymce4/skins/lightgray/content.min.css mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce-small.eot mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce-small.json mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce-small.svg mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce-small.ttf mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce-small.woff mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce.eot mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce.json mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce.svg mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce.ttf mode change 100644 => 100755 tinymce4/skins/lightgray/fonts/tinymce.woff mode change 100644 => 100755 tinymce4/skins/lightgray/img/anchor.gif mode change 100644 => 100755 tinymce4/skins/lightgray/img/loader.gif mode change 100644 => 100755 tinymce4/skins/lightgray/img/object.gif mode change 100644 => 100755 tinymce4/skins/lightgray/img/trans.gif mode change 100644 => 100755 tinymce4/skins/lightgray/skin.ie7.min.css mode change 100644 => 100755 tinymce4/skins/lightgray/skin.min - Copy.css mode change 100644 => 100755 tinymce4/skins/lightgray/skin.min.css mode change 100644 => 100755 tinymce4/themes/modern/theme.min.js mode change 100644 => 100755 tinymce4/tinymce.min.js mode change 100644 => 100755 tinymce4/tinymce_bundled.js mode change 100644 => 100755 tinymce4/to_add_imagetools.txt mode change 100644 => 100755 tinymce4/upload_handler.php mode change 100644 => 100755 upgrade.php mode change 100644 => 100755 upgrade.txt mode change 100644 => 100755 util/batchanon.php mode change 100644 => 100755 util/batchcreateinstr.php mode change 100644 => 100755 util/blocksearch.php mode change 100644 => 100755 util/copystudata.php mode change 100644 => 100755 util/coursetolibs.php mode change 100644 => 100755 util/delwronglibs.php mode change 100644 => 100755 util/getqcnt.php mode change 100644 => 100755 util/getstucnt.php mode change 100644 => 100755 util/getstucntdet.php mode change 100644 => 100755 util/itemsearch.php mode change 100644 => 100755 util/listdeprecated.php mode change 100644 => 100755 util/listextref.php mode change 100644 => 100755 util/listnewteachers.php mode change 100644 => 100755 util/listwronglibs.php mode change 100644 => 100755 util/makeconditional.php mode change 100644 => 100755 util/makeminjs.php mode change 100644 => 100755 util/mbx.php mode change 100644 => 100755 util/mbxfilter.php mode change 100644 => 100755 util/mergescores.php mode change 100644 => 100755 util/mergestus.php mode change 100644 => 100755 util/mergeteachers.php mode change 100644 => 100755 util/ptx.php mode change 100644 => 100755 util/replaceurls.php mode change 100644 => 100755 util/replacevids.php mode change 100644 => 100755 util/rescoreassess.php mode change 100644 => 100755 util/rescuecourse.php mode change 100644 => 100755 util/runcoursecleanup.php mode change 100644 => 100755 util/tagcoursecleanup.php mode change 100644 => 100755 util/updatedeprecated.php mode change 100644 => 100755 util/updateextref.php mode change 100644 => 100755 util/updatewronglibs.php mode change 100644 => 100755 util/utils.php mode change 100644 => 100755 validate.php mode change 100644 => 100755 vendor/.gitignore mode change 100644 => 100755 vendor/.htaccess mode change 100644 => 100755 wamaphome.css mode change 100644 => 100755 wikis/editwiki.php mode change 100644 => 100755 wikis/viewwiki.php mode change 100644 => 100755 wikis/viewwikipublic.php mode change 100644 => 100755 wikis/wikirev.php diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.htaccess b/.htaccess old mode 100644 new mode 100755 diff --git a/DEembedq.php b/DEembedq.php old mode 100644 new mode 100755 diff --git a/OEAembedq.php b/OEAembedq.php old mode 100644 new mode 100755 diff --git a/actions.php b/actions.php old mode 100644 new mode 100755 diff --git a/admin/.DS_Store b/admin/.DS_Store old mode 100644 new mode 100755 diff --git a/admin/FCMsetup.php b/admin/FCMsetup.php old mode 100644 new mode 100755 diff --git a/admin/actions.php b/admin/actions.php old mode 100644 new mode 100755 diff --git a/admin/addcourse.php b/admin/addcourse.php old mode 100644 new mode 100755 diff --git a/admin/addremoveteachers.php b/admin/addremoveteachers.php old mode 100644 new mode 100755 diff --git a/admin/admin.php b/admin/admin.php old mode 100644 new mode 100755 diff --git a/admin/admin2.php b/admin/admin2.php old mode 100644 new mode 100755 diff --git a/admin/approvepending.php b/admin/approvepending.php old mode 100644 new mode 100755 diff --git a/admin/approvepending2.php b/admin/approvepending2.php old mode 100644 new mode 100755 diff --git a/admin/bbexport-generate.php b/admin/bbexport-generate.php old mode 100644 new mode 100755 diff --git a/admin/bbexport-templates.php b/admin/bbexport-templates.php old mode 100644 new mode 100755 diff --git a/admin/calendarfeed.php b/admin/calendarfeed.php old mode 100644 new mode 100755 diff --git a/admin/canvascalexport.php b/admin/canvascalexport.php old mode 100644 new mode 100755 diff --git a/admin/ccexport-generate.php b/admin/ccexport-generate.php old mode 100644 new mode 100755 diff --git a/admin/ccexport.php b/admin/ccexport.php old mode 100644 new mode 100755 diff --git a/admin/coursebrowser.css b/admin/coursebrowser.css old mode 100644 new mode 100755 diff --git a/admin/coursebrowser.php b/admin/coursebrowser.php old mode 100644 new mode 100755 diff --git a/admin/diagonetime.php b/admin/diagonetime.php old mode 100644 new mode 100755 diff --git a/admin/diagsetup.php b/admin/diagsetup.php old mode 100644 new mode 100755 diff --git a/admin/exportitems.php b/admin/exportitems.php old mode 100644 new mode 100755 diff --git a/admin/exportitems2.php b/admin/exportitems2.php old mode 100644 new mode 100755 diff --git a/admin/exportlib.php b/admin/exportlib.php old mode 100644 new mode 100755 diff --git a/admin/externaltools.php b/admin/externaltools.php old mode 100644 new mode 100755 diff --git a/admin/federatedapi.php b/admin/federatedapi.php old mode 100644 new mode 100755 diff --git a/admin/federationpull.php b/admin/federationpull.php old mode 100644 new mode 100755 diff --git a/admin/forms.php b/admin/forms.php old mode 100644 new mode 100755 diff --git a/admin/hidefromcourselist.php b/admin/hidefromcourselist.php old mode 100644 new mode 100755 diff --git a/admin/import/.htaccess b/admin/import/.htaccess old mode 100644 new mode 100755 diff --git a/admin/importitems.php b/admin/importitems.php old mode 100644 new mode 100755 diff --git a/admin/importitems2.php b/admin/importitems2.php old mode 100644 new mode 100755 diff --git a/admin/importitemsfuncs.php b/admin/importitemsfuncs.php old mode 100644 new mode 100755 diff --git a/admin/importlib.php b/admin/importlib.php old mode 100644 new mode 100755 diff --git a/admin/importstu.php b/admin/importstu.php old mode 100644 new mode 100755 diff --git a/admin/itemexportfields.php b/admin/itemexportfields.php old mode 100644 new mode 100755 diff --git a/admin/jsonexport.php b/admin/jsonexport.php old mode 100644 new mode 100755 diff --git a/admin/listdiag.php b/admin/listdiag.php old mode 100644 new mode 100755 diff --git a/admin/ltioutcomeservice.php b/admin/ltioutcomeservice.php old mode 100644 new mode 100755 diff --git a/admin/ltiuserprefs.php b/admin/ltiuserprefs.php old mode 100644 new mode 100755 diff --git a/admin/modcourseorder.php b/admin/modcourseorder.php old mode 100644 new mode 100755 diff --git a/admin/processltiqueue.php b/admin/processltiqueue.php old mode 100644 new mode 100755 diff --git a/admin/pushoutchg.php b/admin/pushoutchg.php old mode 100644 new mode 100755 diff --git a/admin/transfercourse.php b/admin/transfercourse.php old mode 100644 new mode 100755 diff --git a/admin/unhidefromcourselist.php b/admin/unhidefromcourselist.php old mode 100644 new mode 100755 diff --git a/admin/unittests.php b/admin/unittests.php old mode 100644 new mode 100755 diff --git a/admin/userdetails.php b/admin/userdetails.php old mode 100644 new mode 100755 diff --git a/admin/userlti.php b/admin/userlti.php old mode 100644 new mode 100755 diff --git a/assessment/asidutil.php b/assessment/asidutil.php old mode 100644 new mode 100755 diff --git a/assessment/catscores.php b/assessment/catscores.php old mode 100644 new mode 100755 diff --git a/assessment/checkint.php b/assessment/checkint.php old mode 100644 new mode 100755 diff --git a/assessment/displayq2.php b/assessment/displayq2.php old mode 100644 new mode 100755 diff --git a/assessment/eqnhelper.html b/assessment/eqnhelper.html old mode 100644 new mode 100755 diff --git a/assessment/eqnhelperbasic.html b/assessment/eqnhelperbasic.html old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola.eot b/assessment/font/Symbola.eot old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola.otf b/assessment/font/Symbola.otf old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola.svg b/assessment/font/Symbola.svg old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola.ttf b/assessment/font/Symbola.ttf old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola.woff b/assessment/font/Symbola.woff old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola2.eot b/assessment/font/Symbola2.eot old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola2.svg b/assessment/font/Symbola2.svg old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola2.ttf b/assessment/font/Symbola2.ttf old mode 100644 new mode 100755 diff --git a/assessment/font/Symbola2.woff b/assessment/font/Symbola2.woff old mode 100644 new mode 100755 diff --git a/assessment/header.php b/assessment/header.php old mode 100644 new mode 100755 diff --git a/assessment/interpret5.php b/assessment/interpret5.php old mode 100644 new mode 100755 diff --git a/assessment/libs/JSXG.html b/assessment/libs/JSXG.html old mode 100644 new mode 100755 diff --git a/assessment/libs/JSXG.php b/assessment/libs/JSXG.php old mode 100644 new mode 100755 diff --git a/assessment/libs/Viewer.class b/assessment/libs/Viewer.class old mode 100644 new mode 100755 diff --git a/assessment/libs/acct.html b/assessment/libs/acct.html old mode 100644 new mode 100755 diff --git a/assessment/libs/acct.php b/assessment/libs/acct.php old mode 100644 new mode 100755 diff --git a/assessment/libs/calculus.html b/assessment/libs/calculus.html old mode 100644 new mode 100755 diff --git a/assessment/libs/calculus.php b/assessment/libs/calculus.php old mode 100644 new mode 100755 diff --git a/assessment/libs/chemistry.html b/assessment/libs/chemistry.html old mode 100644 new mode 100755 diff --git a/assessment/libs/chemistry.php b/assessment/libs/chemistry.php old mode 100644 new mode 100755 diff --git a/assessment/libs/chgbase.html b/assessment/libs/chgbase.html old mode 100644 new mode 100755 diff --git a/assessment/libs/chgbase.php b/assessment/libs/chgbase.php old mode 100644 new mode 100755 diff --git a/assessment/libs/construct2.html b/assessment/libs/construct2.html old mode 100644 new mode 100755 diff --git a/assessment/libs/construct2.php b/assessment/libs/construct2.php old mode 100644 new mode 100755 diff --git a/assessment/libs/crypto.html b/assessment/libs/crypto.html old mode 100644 new mode 100755 diff --git a/assessment/libs/crypto.php b/assessment/libs/crypto.php old mode 100644 new mode 100755 diff --git a/assessment/libs/expressInstall.swf b/assessment/libs/expressInstall.swf old mode 100644 new mode 100755 diff --git a/assessment/libs/finance.html b/assessment/libs/finance.html old mode 100644 new mode 100755 diff --git a/assessment/libs/finance.php b/assessment/libs/finance.php old mode 100644 new mode 100755 diff --git a/assessment/libs/fractions.html b/assessment/libs/fractions.html old mode 100644 new mode 100755 diff --git a/assessment/libs/fractions.php b/assessment/libs/fractions.php old mode 100644 new mode 100755 diff --git a/assessment/libs/functioneval.html b/assessment/libs/functioneval.html old mode 100644 new mode 100755 diff --git a/assessment/libs/functioneval.php b/assessment/libs/functioneval.php old mode 100644 new mode 100755 diff --git a/assessment/libs/geogebra.html b/assessment/libs/geogebra.html old mode 100644 new mode 100755 diff --git a/assessment/libs/geogebra.php b/assessment/libs/geogebra.php old mode 100644 new mode 100755 diff --git a/assessment/libs/geom.php b/assessment/libs/geom.php old mode 100644 new mode 100755 diff --git a/assessment/libs/graphtheory.html b/assessment/libs/graphtheory.html old mode 100644 new mode 100755 diff --git a/assessment/libs/graphtheory.php b/assessment/libs/graphtheory.php old mode 100644 new mode 100755 diff --git a/assessment/libs/ineq.html b/assessment/libs/ineq.html old mode 100644 new mode 100755 diff --git a/assessment/libs/ineq.php b/assessment/libs/ineq.php old mode 100644 new mode 100755 diff --git a/assessment/libs/interval.html b/assessment/libs/interval.html old mode 100644 new mode 100755 diff --git a/assessment/libs/interval.php b/assessment/libs/interval.php old mode 100644 new mode 100755 diff --git a/assessment/libs/interval_ext.html b/assessment/libs/interval_ext.html old mode 100644 new mode 100755 diff --git a/assessment/libs/interval_ext.php b/assessment/libs/interval_ext.php old mode 100644 new mode 100755 diff --git a/assessment/libs/libhelp.php b/assessment/libs/libhelp.php old mode 100644 new mode 100755 diff --git a/assessment/libs/lineutil.html b/assessment/libs/lineutil.html old mode 100644 new mode 100755 diff --git a/assessment/libs/lineutil.php b/assessment/libs/lineutil.php old mode 100644 new mode 100755 diff --git a/assessment/libs/matrix.html b/assessment/libs/matrix.html old mode 100644 new mode 100755 diff --git a/assessment/libs/matrix.php b/assessment/libs/matrix.php old mode 100644 new mode 100755 diff --git a/assessment/libs/normalcurve.html b/assessment/libs/normalcurve.html old mode 100644 new mode 100755 diff --git a/assessment/libs/normalcurve.php b/assessment/libs/normalcurve.php old mode 100644 new mode 100755 diff --git a/assessment/libs/plot3d.html b/assessment/libs/plot3d.html old mode 100644 new mode 100755 diff --git a/assessment/libs/plot3d.php b/assessment/libs/plot3d.php old mode 100644 new mode 100755 diff --git a/assessment/libs/poly3.html b/assessment/libs/poly3.html old mode 100644 new mode 100755 diff --git a/assessment/libs/poly3.php b/assessment/libs/poly3.php old mode 100644 new mode 100755 diff --git a/assessment/libs/polys.html b/assessment/libs/polys.html old mode 100644 new mode 100755 diff --git a/assessment/libs/polys.php b/assessment/libs/polys.php old mode 100644 new mode 100755 diff --git a/assessment/libs/polys2.html b/assessment/libs/polys2.html old mode 100644 new mode 100755 diff --git a/assessment/libs/polys2.php b/assessment/libs/polys2.php old mode 100644 new mode 100755 diff --git a/assessment/libs/primes.html b/assessment/libs/primes.html old mode 100644 new mode 100755 diff --git a/assessment/libs/primes.php b/assessment/libs/primes.php old mode 100644 new mode 100755 diff --git a/assessment/libs/radicals.html b/assessment/libs/radicals.html old mode 100644 new mode 100755 diff --git a/assessment/libs/radicals.php b/assessment/libs/radicals.php old mode 100644 new mode 100755 diff --git a/assessment/libs/sagecell.html b/assessment/libs/sagecell.html old mode 100644 new mode 100755 diff --git a/assessment/libs/sagecell.php b/assessment/libs/sagecell.php old mode 100644 new mode 100755 diff --git a/assessment/libs/sagecellframe.html b/assessment/libs/sagecellframe.html old mode 100644 new mode 100755 diff --git a/assessment/libs/simplex.html b/assessment/libs/simplex.html old mode 100644 new mode 100755 diff --git a/assessment/libs/simplex.php b/assessment/libs/simplex.php old mode 100644 new mode 100755 diff --git a/assessment/libs/socchoice.html b/assessment/libs/socchoice.html old mode 100644 new mode 100755 diff --git a/assessment/libs/socchoice.php b/assessment/libs/socchoice.php old mode 100644 new mode 100755 diff --git a/assessment/libs/solvers.html b/assessment/libs/solvers.html old mode 100644 new mode 100755 diff --git a/assessment/libs/solvers.php b/assessment/libs/solvers.php old mode 100644 new mode 100755 diff --git a/assessment/libs/stats.html b/assessment/libs/stats.html old mode 100644 new mode 100755 diff --git a/assessment/libs/stats.php b/assessment/libs/stats.php old mode 100644 new mode 100755 diff --git a/assessment/libs/timedate.php b/assessment/libs/timedate.php old mode 100644 new mode 100755 diff --git a/assessment/libs/vector.html b/assessment/libs/vector.html old mode 100644 new mode 100755 diff --git a/assessment/libs/vector.php b/assessment/libs/vector.php old mode 100644 new mode 100755 diff --git a/assessment/libs/viewer3d.swf b/assessment/libs/viewer3d.swf old mode 100644 new mode 100755 diff --git a/assessment/libs/virtmanip.html b/assessment/libs/virtmanip.html old mode 100644 new mode 100755 diff --git a/assessment/libs/virtmanip.php b/assessment/libs/virtmanip.php old mode 100644 new mode 100755 diff --git a/assessment/macros.php b/assessment/macros.php old mode 100644 new mode 100755 diff --git a/assessment/mathphp2.php b/assessment/mathphp2.php old mode 100644 new mode 100755 diff --git a/assessment/mathquill.css b/assessment/mathquill.css old mode 100644 new mode 100755 diff --git a/assessment/mathquilled.html b/assessment/mathquilled.html old mode 100644 new mode 100755 diff --git a/assessment/mathtest.css b/assessment/mathtest.css old mode 100644 new mode 100755 diff --git a/assessment/print.css b/assessment/print.css old mode 100644 new mode 100755 diff --git a/assessment/printtest.php b/assessment/printtest.php old mode 100644 new mode 100755 diff --git a/assessment/qimages/Thumbs.db b/assessment/qimages/Thumbs.db old mode 100644 new mode 100755 diff --git a/assessment/showsoln.php b/assessment/showsoln.php old mode 100644 new mode 100755 diff --git a/assessment/showtest.php b/assessment/showtest.php old mode 100644 new mode 100755 diff --git a/assessment/testutil.php b/assessment/testutil.php old mode 100644 new mode 100755 diff --git a/assessment/watchvid.php b/assessment/watchvid.php old mode 100644 new mode 100755 diff --git a/bltilaunch.php b/bltilaunch.php old mode 100644 new mode 100755 diff --git a/calcqtimes.php b/calcqtimes.php old mode 100644 new mode 100755 diff --git a/canvas.php b/canvas.php old mode 100644 new mode 100755 diff --git a/canvasnav.php b/canvasnav.php old mode 100644 new mode 100755 diff --git a/changelog.html b/changelog.html old mode 100644 new mode 100755 diff --git a/checkbrowser.php b/checkbrowser.php old mode 100644 new mode 100755 diff --git a/codeception.yml b/codeception.yml old mode 100644 new mode 100755 diff --git a/composer.json b/composer.json old mode 100644 new mode 100755 diff --git a/composer.lock b/composer.lock old mode 100644 new mode 100755 diff --git a/config.php.dist b/config.php.dist old mode 100644 new mode 100755 diff --git a/course/addassessment.php b/course/addassessment.php old mode 100644 new mode 100755 diff --git a/course/addblock.php b/course/addblock.php old mode 100644 new mode 100755 diff --git a/course/addcalendar.php b/course/addcalendar.php old mode 100644 new mode 100755 diff --git a/course/adddrillassess.php b/course/adddrillassess.php old mode 100644 new mode 100755 diff --git a/course/addforum.php b/course/addforum.php old mode 100644 new mode 100755 diff --git a/course/addgrades.php b/course/addgrades.php old mode 100644 new mode 100755 diff --git a/course/addinlinetext.php b/course/addinlinetext.php old mode 100644 new mode 100755 diff --git a/course/addlinkedtext.php b/course/addlinkedtext.php old mode 100644 new mode 100755 diff --git a/course/addoutcomes.php b/course/addoutcomes.php old mode 100644 new mode 100755 diff --git a/course/addquestions.css b/course/addquestions.css old mode 100644 new mode 100755 diff --git a/course/addquestions.php b/course/addquestions.php old mode 100644 new mode 100755 diff --git a/course/addquestionssave.php b/course/addquestionssave.php old mode 100644 new mode 100755 diff --git a/course/addrubric.php b/course/addrubric.php old mode 100644 new mode 100755 diff --git a/course/addvideotimes.php b/course/addvideotimes.php old mode 100644 new mode 100755 diff --git a/course/addwiki.php b/course/addwiki.php old mode 100644 new mode 100755 diff --git a/course/assessendmsg.php b/course/assessendmsg.php old mode 100644 new mode 100755 diff --git a/course/categorize.php b/course/categorize.php old mode 100644 new mode 100755 diff --git a/course/chgassessments.php b/course/chgassessments.php old mode 100644 new mode 100755 diff --git a/course/chgblocks.php b/course/chgblocks.php old mode 100644 new mode 100755 diff --git a/course/chgforums.php b/course/chgforums.php old mode 100644 new mode 100755 diff --git a/course/chgoffline.php b/course/chgoffline.php old mode 100644 new mode 100755 diff --git a/course/claimbadge.php b/course/claimbadge.php old mode 100644 new mode 100755 diff --git a/course/contentstats.php b/course/contentstats.php old mode 100644 new mode 100755 diff --git a/course/convertintro.php b/course/convertintro.php old mode 100644 new mode 100755 diff --git a/course/copyitems.php b/course/copyitems.php old mode 100644 new mode 100755 diff --git a/course/copyoneitem.php b/course/copyoneitem.php old mode 100644 new mode 100755 diff --git a/course/course.php b/course/course.php old mode 100644 new mode 100755 diff --git a/course/coursemap.php b/course/coursemap.php old mode 100644 new mode 100755 diff --git a/course/coursereports.php b/course/coursereports.php old mode 100644 new mode 100755 diff --git a/course/courseshowitems.php b/course/courseshowitems.php old mode 100644 new mode 100755 diff --git a/course/coursetolibrary.php b/course/coursetolibrary.php old mode 100644 new mode 100755 diff --git a/course/definebadges.php b/course/definebadges.php old mode 100644 new mode 100755 diff --git a/course/deleteassessment.php b/course/deleteassessment.php old mode 100644 new mode 100755 diff --git a/course/deleteblock.php b/course/deleteblock.php old mode 100644 new mode 100755 diff --git a/course/deletedrillassess.php b/course/deletedrillassess.php old mode 100644 new mode 100755 diff --git a/course/deleteforum.php b/course/deleteforum.php old mode 100644 new mode 100755 diff --git a/course/deleteinlinetext.php b/course/deleteinlinetext.php old mode 100644 new mode 100755 diff --git a/course/deletelinkedtext.php b/course/deletelinkedtext.php old mode 100644 new mode 100755 diff --git a/course/deletewiki.php b/course/deletewiki.php old mode 100644 new mode 100755 diff --git a/course/delitembyid.php b/course/delitembyid.php old mode 100644 new mode 100755 diff --git a/course/drillassess.php b/course/drillassess.php old mode 100644 new mode 100755 diff --git a/course/editsnippets.php b/course/editsnippets.php old mode 100644 new mode 100755 diff --git a/course/edittoolscores.php b/course/edittoolscores.php old mode 100644 new mode 100755 diff --git a/course/embedhelper.php b/course/embedhelper.php old mode 100644 new mode 100755 diff --git a/course/enrollfromothercourse.php b/course/enrollfromothercourse.php old mode 100644 new mode 100755 diff --git a/course/exception.php b/course/exception.php old mode 100644 new mode 100755 diff --git a/course/exportcalfeed.php b/course/exportcalfeed.php old mode 100644 new mode 100755 diff --git a/course/files/.gitignore b/course/files/.gitignore old mode 100644 new mode 100755 diff --git a/course/gb-aidexport.php b/course/gb-aidexport.php old mode 100644 new mode 100755 diff --git a/course/gb-export.php b/course/gb-export.php old mode 100644 new mode 100755 diff --git a/course/gb-itemanalysis.php b/course/gb-itemanalysis.php old mode 100644 new mode 100755 diff --git a/course/gb-itemanalysisdetail.php b/course/gb-itemanalysisdetail.php old mode 100644 new mode 100755 diff --git a/course/gb-itemresults.php b/course/gb-itemresults.php old mode 100644 new mode 100755 diff --git a/course/gb-testing.php b/course/gb-testing.php old mode 100644 new mode 100755 diff --git a/course/gb-viewasid.php b/course/gb-viewasid.php old mode 100644 new mode 100755 diff --git a/course/gb-viewdrill.php b/course/gb-viewdrill.php old mode 100644 new mode 100755 diff --git a/course/gbcomments.php b/course/gbcomments.php old mode 100644 new mode 100755 diff --git a/course/gbsettings.php b/course/gbsettings.php old mode 100644 new mode 100755 diff --git a/course/gbtable2.php b/course/gbtable2.php old mode 100644 new mode 100755 diff --git a/course/getblockitems.php b/course/getblockitems.php old mode 100644 new mode 100755 diff --git a/course/getblockitemspublic.php b/course/getblockitemspublic.php old mode 100644 new mode 100755 diff --git a/course/gradeallq.php b/course/gradeallq.php old mode 100644 new mode 100755 diff --git a/course/gradebook.php b/course/gradebook.php old mode 100644 new mode 100755 diff --git a/course/improvoerassess.php b/course/improvoerassess.php old mode 100644 new mode 100755 diff --git a/course/isolateassessbygroup.php b/course/isolateassessbygroup.php old mode 100644 new mode 100755 diff --git a/course/isolateassessgrade.php b/course/isolateassessgrade.php old mode 100644 new mode 100755 diff --git a/course/latepasses.php b/course/latepasses.php old mode 100644 new mode 100755 diff --git a/course/libtree.css b/course/libtree.css old mode 100644 new mode 100755 diff --git a/course/libtree.php b/course/libtree.php old mode 100644 new mode 100755 diff --git a/course/libtree2.php b/course/libtree2.php old mode 100644 new mode 100755 diff --git a/course/listusers.php b/course/listusers.php old mode 100644 new mode 100755 diff --git a/course/lockstu.php b/course/lockstu.php old mode 100644 new mode 100755 diff --git a/course/logingrid.php b/course/logingrid.php old mode 100644 new mode 100755 diff --git a/course/managecalitems.php b/course/managecalitems.php old mode 100644 new mode 100755 diff --git a/course/managelibs.php b/course/managelibs.php old mode 100644 new mode 100755 diff --git a/course/manageqset.php b/course/manageqset.php old mode 100644 new mode 100755 diff --git a/course/managestugrps.php b/course/managestugrps.php old mode 100644 new mode 100755 diff --git a/course/managetutors.php b/course/managetutors.php old mode 100644 new mode 100755 diff --git a/course/masschgdates.php b/course/masschgdates.php old mode 100644 new mode 100755 diff --git a/course/massexception.php b/course/massexception.php old mode 100644 new mode 100755 diff --git a/course/masssend.php b/course/masssend.php old mode 100644 new mode 100755 diff --git a/course/mergeassess.php b/course/mergeassess.php old mode 100644 new mode 100755 diff --git a/course/moddataset.php b/course/moddataset.php old mode 100644 new mode 100755 diff --git a/course/modquestion.php b/course/modquestion.php old mode 100644 new mode 100755 diff --git a/course/modquestiongrid.php b/course/modquestiongrid.php old mode 100644 new mode 100755 diff --git a/course/modtutorialq.php b/course/modtutorialq.php old mode 100644 new mode 100755 diff --git a/course/moveitem.php b/course/moveitem.php old mode 100644 new mode 100755 diff --git a/course/outcomemap.php b/course/outcomemap.php old mode 100644 new mode 100755 diff --git a/course/outcomereport.php b/course/outcomereport.php old mode 100644 new mode 100755 diff --git a/course/outcometable.php b/course/outcometable.php old mode 100644 new mode 100755 diff --git a/course/printlayout.php b/course/printlayout.php old mode 100644 new mode 100755 diff --git a/course/printlayoutbare.php b/course/printlayoutbare.php old mode 100644 new mode 100755 diff --git a/course/printlayoutword.php b/course/printlayoutword.php old mode 100644 new mode 100755 diff --git a/course/printtest.php b/course/printtest.php old mode 100644 new mode 100755 diff --git a/course/public.php b/course/public.php old mode 100644 new mode 100755 diff --git a/course/quickdrill.php b/course/quickdrill.php old mode 100644 new mode 100755 diff --git a/course/rectrack.php b/course/rectrack.php old mode 100644 new mode 100755 diff --git a/course/redeemlatepass.php b/course/redeemlatepass.php old mode 100644 new mode 100755 diff --git a/course/redeemlatepassforum.php b/course/redeemlatepassforum.php old mode 100644 new mode 100755 diff --git a/course/report-commonstu.php b/course/report-commonstu.php old mode 100644 new mode 100755 diff --git a/course/report-weeklylab.php b/course/report-weeklylab.php old mode 100644 new mode 100755 diff --git a/course/reviewlibrary.php b/course/reviewlibrary.php old mode 100644 new mode 100755 diff --git a/course/savebrokenqflag.php b/course/savebrokenqflag.php old mode 100644 new mode 100755 diff --git a/course/savecalendardrag.php b/course/savecalendardrag.php old mode 100644 new mode 100755 diff --git a/course/savelibassignflag.php b/course/savelibassignflag.php old mode 100644 new mode 100755 diff --git a/course/savequickreorder.php b/course/savequickreorder.php old mode 100644 new mode 100755 diff --git a/course/sendmsgmodal.php b/course/sendmsgmodal.php old mode 100644 new mode 100755 diff --git a/course/showcalendar.php b/course/showcalendar.php old mode 100644 new mode 100755 diff --git a/course/showfeedback.php b/course/showfeedback.php old mode 100644 new mode 100755 diff --git a/course/showfeedbackall.php b/course/showfeedbackall.php old mode 100644 new mode 100755 diff --git a/course/showlicense.php b/course/showlicense.php old mode 100644 new mode 100755 diff --git a/course/showlinkedtext.php b/course/showlinkedtext.php old mode 100644 new mode 100755 diff --git a/course/showlinkedtextpublic.php b/course/showlinkedtextpublic.php old mode 100644 new mode 100755 diff --git a/course/showstugroup.php b/course/showstugroup.php old mode 100644 new mode 100755 diff --git a/course/solver.css b/course/solver.css old mode 100644 new mode 100755 diff --git a/course/testquestion.php b/course/testquestion.php old mode 100644 new mode 100755 diff --git a/course/timeshift.php b/course/timeshift.php old mode 100644 new mode 100755 diff --git a/course/treereader.php b/course/treereader.php old mode 100644 new mode 100755 diff --git a/course/unenroll.php b/course/unenroll.php old mode 100644 new mode 100755 diff --git a/course/uploadgrades.php b/course/uploadgrades.php old mode 100644 new mode 100755 diff --git a/course/uploadmultgrades.php b/course/uploadmultgrades.php old mode 100644 new mode 100755 diff --git a/course/verifybadge.php b/course/verifybadge.php old mode 100644 new mode 100755 diff --git a/course/viewactionlog.php b/course/viewactionlog.php old mode 100644 new mode 100755 diff --git a/course/viewemails.php b/course/viewemails.php old mode 100644 new mode 100755 diff --git a/course/viewforumgrade.php b/course/viewforumgrade.php old mode 100644 new mode 100755 diff --git a/course/viewloginlog.php b/course/viewloginlog.php old mode 100644 new mode 100755 diff --git a/course/viewsource.php b/course/viewsource.php old mode 100644 new mode 100755 diff --git a/csrfp/index.php b/csrfp/index.php old mode 100644 new mode 100755 diff --git a/csrfp/js/index.php b/csrfp/js/index.php old mode 100644 new mode 100755 diff --git a/csrfp/js/simplecsrfprotector.js b/csrfp/js/simplecsrfprotector.js old mode 100644 new mode 100755 diff --git a/csrfp/licence.md b/csrfp/licence.md old mode 100644 new mode 100755 diff --git a/csrfp/log/.gitignore b/csrfp/log/.gitignore old mode 100644 new mode 100755 diff --git a/csrfp/log/.htaccess b/csrfp/log/.htaccess old mode 100644 new mode 100755 diff --git a/csrfp/log/index.php b/csrfp/log/index.php old mode 100644 new mode 100755 diff --git a/csrfp/simplecsrfp.php b/csrfp/simplecsrfp.php old mode 100644 new mode 100755 diff --git a/diag/index.php b/diag/index.php old mode 100644 new mode 100755 diff --git a/directaccess.php b/directaccess.php old mode 100644 new mode 100755 diff --git a/docs/AccessingOnlineHomeworkinWAMAP.doc b/docs/AccessingOnlineHomeworkinWAMAP.doc old mode 100644 new mode 100755 diff --git a/docs/GettingStarted.pdf b/docs/GettingStarted.pdf old mode 100644 new mode 100755 diff --git a/docs/administration.html b/docs/administration.html old mode 100644 new mode 100755 diff --git a/docs/asciimathref.html b/docs/asciimathref.html old mode 100644 new mode 100755 diff --git a/docs/commontasks.html b/docs/commontasks.html old mode 100644 new mode 100755 diff --git a/docs/diagnostics.html b/docs/diagnostics.html old mode 100644 new mode 100755 diff --git a/docs/docs.css b/docs/docs.css old mode 100644 new mode 100755 diff --git a/docs/docs.php b/docs/docs.php old mode 100644 new mode 100755 diff --git a/docs/gettingstarted.html b/docs/gettingstarted.html old mode 100644 new mode 100755 diff --git a/docs/introquestionwriting.html b/docs/introquestionwriting.html old mode 100644 new mode 100755 diff --git a/docs/langquickref.doc b/docs/langquickref.doc old mode 100644 new mode 100755 diff --git a/docs/managing.html b/docs/managing.html old mode 100644 new mode 100755 diff --git a/docs/morequestions.html b/docs/morequestions.html old mode 100644 new mode 100755 diff --git a/docs/questionoddities.html b/docs/questionoddities.html old mode 100644 new mode 100755 diff --git a/embedq.php b/embedq.php old mode 100644 new mode 100755 diff --git a/filestore/.gitignore b/filestore/.gitignore old mode 100644 new mode 100755 diff --git a/filter/basiclti/blti_util.php b/filter/basiclti/blti_util.php old mode 100644 new mode 100755 diff --git a/filter/basiclti/post.php b/filter/basiclti/post.php old mode 100644 new mode 100755 diff --git a/filter/filter.php b/filter/filter.php old mode 100644 new mode 100755 diff --git a/filter/graph/FreeSerifItalic.ttf b/filter/graph/FreeSerifItalic.ttf old mode 100644 new mode 100755 diff --git a/filter/graph/asciisvgimg.php b/filter/graph/asciisvgimg.php old mode 100644 new mode 100755 diff --git a/filter/graph/imgs/.gitignore b/filter/graph/imgs/.gitignore old mode 100644 new mode 100755 diff --git a/filter/graph/sscrtotext.php b/filter/graph/sscrtotext.php old mode 100644 new mode 100755 diff --git a/filter/graph/svgimg.php b/filter/graph/svgimg.php old mode 100644 new mode 100755 diff --git a/filter/math/ASCIIMath2TeX.php b/filter/math/ASCIIMath2TeX.php old mode 100644 new mode 100755 diff --git a/firebase-messaging-sw.php b/firebase-messaging-sw.php old mode 100644 new mode 100755 diff --git a/footer.php b/footer.php old mode 100644 new mode 100755 diff --git a/forms.php b/forms.php old mode 100644 new mode 100755 diff --git a/forums/embeddone.php b/forums/embeddone.php old mode 100644 new mode 100755 diff --git a/forums/flaggedthreads.php b/forums/flaggedthreads.php old mode 100644 new mode 100755 diff --git a/forums/forums.css b/forums/forums.css old mode 100644 new mode 100755 diff --git a/forums/forums.php b/forums/forums.php old mode 100644 new mode 100755 diff --git a/forums/listlikes.php b/forums/listlikes.php old mode 100644 new mode 100755 diff --git a/forums/listviews.php b/forums/listviews.php old mode 100644 new mode 100755 diff --git a/forums/newthreads.php b/forums/newthreads.php old mode 100644 new mode 100755 diff --git a/forums/posthandler.php b/forums/posthandler.php old mode 100644 new mode 100755 diff --git a/forums/posts.php b/forums/posts.php old mode 100644 new mode 100755 diff --git a/forums/postsbyname.php b/forums/postsbyname.php old mode 100644 new mode 100755 diff --git a/forums/recordlikes.php b/forums/recordlikes.php old mode 100644 new mode 100755 diff --git a/forums/savetagged.php b/forums/savetagged.php old mode 100644 new mode 100755 diff --git a/forums/thread.php b/forums/thread.php old mode 100644 new mode 100755 diff --git a/gethomemenu.php b/gethomemenu.php old mode 100644 new mode 100755 diff --git a/getpostlist.php b/getpostlist.php old mode 100644 new mode 100755 diff --git a/handheld.css b/handheld.css old mode 100644 new mode 100755 diff --git a/header.php b/header.php old mode 100644 new mode 100755 diff --git a/help.html b/help.html old mode 100644 new mode 100755 diff --git a/help.php b/help.php old mode 100644 new mode 100755 diff --git a/i18n/de.po b/i18n/de.po old mode 100644 new mode 100755 diff --git a/i18n/extractjsfrompo.php b/i18n/extractjsfrompo.php old mode 100644 new mode 100755 diff --git a/i18n/getjsmessages.php b/i18n/getjsmessages.php old mode 100644 new mode 100755 diff --git a/i18n/i18n.php b/i18n/i18n.php old mode 100644 new mode 100755 diff --git a/i18n/locale/de/LC_MESSAGES/imathas.mo b/i18n/locale/de/LC_MESSAGES/imathas.mo old mode 100644 new mode 100755 diff --git a/i18n/locale/de/messages.js b/i18n/locale/de/messages.js old mode 100644 new mode 100755 diff --git a/i18n/messages.js b/i18n/messages.js old mode 100644 new mode 100755 diff --git a/i18n/messages.po b/i18n/messages.po old mode 100644 new mode 100755 diff --git a/i18n/notes.txt b/i18n/notes.txt old mode 100644 new mode 100755 diff --git a/i18n/translating.md b/i18n/translating.md old mode 100644 new mode 100755 diff --git a/iconfonts/caledit.css b/iconfonts/caledit.css old mode 100644 new mode 100755 diff --git a/iconfonts/font_contents.html b/iconfonts/font_contents.html old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/addquestions.eot b/iconfonts/fonts/addquestions.eot old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/addquestions.svg b/iconfonts/fonts/addquestions.svg old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/addquestions.ttf b/iconfonts/fonts/addquestions.ttf old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/addquestions.woff b/iconfonts/fonts/addquestions.woff old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/caledit.eot b/iconfonts/fonts/caledit.eot old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/caledit.svg b/iconfonts/fonts/caledit.svg old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/caledit.ttf b/iconfonts/fonts/caledit.ttf old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/caledit.woff b/iconfonts/fonts/caledit.woff old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/imathas.eot b/iconfonts/fonts/imathas.eot old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/imathas.svg b/iconfonts/fonts/imathas.svg old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/imathas.ttf b/iconfonts/fonts/imathas.ttf old mode 100644 new mode 100755 diff --git a/iconfonts/fonts/imathas.woff b/iconfonts/fonts/imathas.woff old mode 100644 new mode 100755 diff --git a/iconfonts/imathasfont.css b/iconfonts/imathasfont.css old mode 100644 new mode 100755 diff --git a/iconfonts/imathasfontie7.css b/iconfonts/imathasfontie7.css old mode 100644 new mode 100755 diff --git a/iconfonts/selection.json b/iconfonts/selection.json old mode 100644 new mode 100755 diff --git a/iconfonts/style.css b/iconfonts/style.css old mode 100644 new mode 100755 diff --git a/imas.css b/imas.css old mode 100644 new mode 100755 diff --git a/imascore.css b/imascore.css old mode 100644 new mode 100755 diff --git a/imathasltiplan.txt b/imathasltiplan.txt old mode 100644 new mode 100755 diff --git a/img/1day.png b/img/1day.png old mode 100644 new mode 100755 diff --git a/img/assess.png b/img/assess.png old mode 100644 new mode 100755 diff --git a/img/assess_tiny.png b/img/assess_tiny.png old mode 100644 new mode 100755 diff --git a/img/assess_tiny_no.png b/img/assess_tiny_no.png old mode 100644 new mode 100755 diff --git a/img/badge.php b/img/badge.php old mode 100644 new mode 100755 diff --git a/img/badgebase.png b/img/badgebase.png old mode 100644 new mode 100755 diff --git a/img/blank.gif b/img/blank.gif old mode 100644 new mode 100755 diff --git a/img/cal.gif b/img/cal.gif old mode 100644 new mode 100755 diff --git a/img/cc.png b/img/cc.png old mode 100644 new mode 100755 diff --git a/img/collapse.gif b/img/collapse.gif old mode 100644 new mode 100755 diff --git a/img/doc.png b/img/doc.png old mode 100644 new mode 100755 diff --git a/img/doc_tiny.png b/img/doc_tiny.png old mode 100644 new mode 100755 diff --git a/img/drill.png b/img/drill.png old mode 100644 new mode 100755 diff --git a/img/drill_tiny.png b/img/drill_tiny.png old mode 100644 new mode 100755 diff --git a/img/emptycircle.png b/img/emptycircle.png old mode 100644 new mode 100755 diff --git a/img/expand.gif b/img/expand.gif old mode 100644 new mode 100755 diff --git a/img/extlink.png b/img/extlink.png old mode 100644 new mode 100755 diff --git a/img/flagempty.gif b/img/flagempty.gif old mode 100644 new mode 100755 diff --git a/img/flagfilled.gif b/img/flagfilled.gif old mode 100644 new mode 100755 diff --git a/img/folder.gif b/img/folder.gif old mode 100644 new mode 100755 diff --git a/img/folder.png b/img/folder.png old mode 100644 new mode 100755 diff --git a/img/folder2.gif b/img/folder2.gif old mode 100644 new mode 100755 diff --git a/img/folder_tiny.png b/img/folder_tiny.png old mode 100644 new mode 100755 diff --git a/img/folder_tree.png b/img/folder_tree.png old mode 100644 new mode 100755 diff --git a/img/folder_tree_tiny.png b/img/folder_tree_tiny.png old mode 100644 new mode 100755 diff --git a/img/forum.png b/img/forum.png old mode 100644 new mode 100755 diff --git a/img/forum_tiny.png b/img/forum_tiny.png old mode 100644 new mode 100755 diff --git a/img/fullcircle.png b/img/fullcircle.png old mode 100644 new mode 100755 diff --git a/img/gchk.gif b/img/gchk.gif old mode 100644 new mode 100755 diff --git a/img/gears.png b/img/gears.png old mode 100644 new mode 100755 diff --git a/img/gearsdd.png b/img/gearsdd.png old mode 100644 new mode 100755 diff --git a/img/graph.gif b/img/graph.gif old mode 100644 new mode 100755 diff --git a/img/halfcircle.png b/img/halfcircle.png old mode 100644 new mode 100755 diff --git a/img/help.gif b/img/help.gif old mode 100644 new mode 100755 diff --git a/img/html.png b/img/html.png old mode 100644 new mode 100755 diff --git a/img/html_tiny.png b/img/html_tiny.png old mode 100644 new mode 100755 diff --git a/img/html_tiny_no.png b/img/html_tiny_no.png old mode 100644 new mode 100755 diff --git a/img/image.png b/img/image.png old mode 100644 new mode 100755 diff --git a/img/inline.png b/img/inline.png old mode 100644 new mode 100755 diff --git a/img/inline_tiny.png b/img/inline_tiny.png old mode 100644 new mode 100755 diff --git a/img/liked.png b/img/liked.png old mode 100644 new mode 100755 diff --git a/img/likedgray.png b/img/likedgray.png old mode 100644 new mode 100755 diff --git a/img/lock.png b/img/lock.png old mode 100644 new mode 100755 diff --git a/img/maple.png b/img/maple.png old mode 100644 new mode 100755 diff --git a/img/mathml.gif b/img/mathml.gif old mode 100644 new mode 100755 diff --git a/img/mathnb.png b/img/mathnb.png old mode 100644 new mode 100755 diff --git a/img/menu.png b/img/menu.png old mode 100644 new mode 100755 diff --git a/img/mq_cursor_sprites.png b/img/mq_cursor_sprites.png old mode 100644 new mode 100755 diff --git a/img/mq_cursor_sprites2.png b/img/mq_cursor_sprites2.png old mode 100644 new mode 100755 diff --git a/img/normalcurve.gif b/img/normalcurve.gif old mode 100644 new mode 100755 diff --git a/img/noview.png b/img/noview.png old mode 100644 new mode 100755 diff --git a/img/orgx.gif b/img/orgx.gif old mode 100644 new mode 100755 diff --git a/img/pdf.png b/img/pdf.png old mode 100644 new mode 100755 diff --git a/img/pen.cur b/img/pen.cur old mode 100644 new mode 100755 diff --git a/img/pendown.cur b/img/pendown.cur old mode 100644 new mode 100755 diff --git a/img/ppt.png b/img/ppt.png old mode 100644 new mode 100755 diff --git a/img/q_emptybox.gif b/img/q_emptybox.gif old mode 100644 new mode 100755 diff --git a/img/q_fullbox.gif b/img/q_fullbox.gif old mode 100644 new mode 100755 diff --git a/img/q_halfbox.gif b/img/q_halfbox.gif old mode 100644 new mode 100755 diff --git a/img/redx.gif b/img/redx.gif old mode 100644 new mode 100755 diff --git a/img/ruler.jpg b/img/ruler.jpg old mode 100644 new mode 100755 diff --git a/img/screens.jpg b/img/screens.jpg old mode 100644 new mode 100755 diff --git a/img/simplebg.png b/img/simplebg.png old mode 100644 new mode 100755 diff --git a/img/sound.png b/img/sound.png old mode 100644 new mode 100755 diff --git a/img/swap.gif b/img/swap.gif old mode 100644 new mode 100755 diff --git a/img/te_blank.gif b/img/te_blank.gif old mode 100644 new mode 100755 diff --git a/img/te_blue_arrow.png b/img/te_blue_arrow.png old mode 100644 new mode 100755 diff --git a/img/te_blue_empty_arrow.png b/img/te_blue_empty_arrow.png old mode 100644 new mode 100755 diff --git a/img/te_green_check.png b/img/te_green_check.png old mode 100644 new mode 100755 diff --git a/img/te_red_ex.png b/img/te_red_ex.png old mode 100644 new mode 100755 diff --git a/img/te_red_redo.png b/img/te_red_redo.png old mode 100644 new mode 100755 diff --git a/img/te_yellow_check.png b/img/te_yellow_check.png old mode 100644 new mode 100755 diff --git a/img/te_yellow_redo.png b/img/te_yellow_redo.png old mode 100644 new mode 100755 diff --git a/img/time.png b/img/time.png old mode 100644 new mode 100755 diff --git a/img/tinyarrow.gif b/img/tinyarrow.gif old mode 100644 new mode 100755 diff --git a/img/tpabs.gif b/img/tpabs.gif old mode 100644 new mode 100755 diff --git a/img/tpcirc.gif b/img/tpcirc.gif old mode 100644 new mode 100755 diff --git a/img/tpcirc.png b/img/tpcirc.png old mode 100644 new mode 100755 diff --git a/img/tpcos.png b/img/tpcos.png old mode 100644 new mode 100755 diff --git a/img/tpdot.gif b/img/tpdot.gif old mode 100644 new mode 100755 diff --git a/img/tpellipse.png b/img/tpellipse.png old mode 100644 new mode 100755 diff --git a/img/tpexp.png b/img/tpexp.png old mode 100644 new mode 100755 diff --git a/img/tphorizhyper.png b/img/tphorizhyper.png old mode 100644 new mode 100755 diff --git a/img/tphorizparab.png b/img/tphorizparab.png old mode 100644 new mode 100755 diff --git a/img/tpineq.gif b/img/tpineq.gif old mode 100644 new mode 100755 diff --git a/img/tpineqdash.gif b/img/tpineqdash.gif old mode 100644 new mode 100755 diff --git a/img/tpineqparab.gif b/img/tpineqparab.gif old mode 100644 new mode 100755 diff --git a/img/tpineqparabdash.gif b/img/tpineqparabdash.gif old mode 100644 new mode 100755 diff --git a/img/tpline.gif b/img/tpline.gif old mode 100644 new mode 100755 diff --git a/img/tpline2.gif b/img/tpline2.gif old mode 100644 new mode 100755 diff --git a/img/tpline3.gif b/img/tpline3.gif old mode 100644 new mode 100755 diff --git a/img/tplog.png b/img/tplog.png old mode 100644 new mode 100755 diff --git a/img/tpodot.gif b/img/tpodot.gif old mode 100644 new mode 100755 diff --git a/img/tpparab.gif b/img/tpparab.gif old mode 100644 new mode 100755 diff --git a/img/tpparab.png b/img/tpparab.png old mode 100644 new mode 100755 diff --git a/img/tprat.png b/img/tprat.png old mode 100644 new mode 100755 diff --git a/img/tpsin.png b/img/tpsin.png old mode 100644 new mode 100755 diff --git a/img/tpsqrt.png b/img/tpsqrt.png old mode 100644 new mode 100755 diff --git a/img/tpvec.gif b/img/tpvec.gif old mode 100644 new mode 100755 diff --git a/img/tpverthyper.png b/img/tpverthyper.png old mode 100644 new mode 100755 diff --git a/img/typing.jpg b/img/typing.jpg old mode 100644 new mode 100755 diff --git a/img/updating.gif b/img/updating.gif old mode 100644 new mode 100755 diff --git a/img/uppointer.gif b/img/uppointer.gif old mode 100644 new mode 100755 diff --git a/img/video.png b/img/video.png old mode 100644 new mode 100755 diff --git a/img/video_tiny.png b/img/video_tiny.png old mode 100644 new mode 100755 diff --git a/img/video_tiny_no.png b/img/video_tiny_no.png old mode 100644 new mode 100755 diff --git a/img/vidicons.png b/img/vidicons.png old mode 100644 new mode 100755 diff --git a/img/web.png b/img/web.png old mode 100644 new mode 100755 diff --git a/img/wiki.png b/img/wiki.png old mode 100644 new mode 100755 diff --git a/img/wiki_tiny.png b/img/wiki_tiny.png old mode 100644 new mode 100755 diff --git a/img/xls.png b/img/xls.png old mode 100644 new mode 100755 diff --git a/img/ychk.gif b/img/ychk.gif old mode 100644 new mode 100755 diff --git a/img/zip.png b/img/zip.png old mode 100644 new mode 100755 diff --git a/includes/AWSSNSutil.php b/includes/AWSSNSutil.php old mode 100644 new mode 100755 diff --git a/includes/DEutil.php b/includes/DEutil.php old mode 100644 new mode 100755 diff --git a/includes/FCM.php b/includes/FCM.php old mode 100644 new mode 100755 diff --git a/includes/JSON.php b/includes/JSON.php old mode 100644 new mode 100755 diff --git a/includes/JWT.php b/includes/JWT.php old mode 100644 new mode 100755 diff --git a/includes/OAuth.php b/includes/OAuth.php old mode 100644 new mode 100755 diff --git a/includes/S3.php b/includes/S3.php old mode 100644 new mode 100755 diff --git a/includes/calendardata.php b/includes/calendardata.php old mode 100644 new mode 100755 diff --git a/includes/calendardisp.php b/includes/calendardisp.php old mode 100644 new mode 100755 diff --git a/includes/copyiteminc.php b/includes/copyiteminc.php old mode 100644 new mode 100755 diff --git a/includes/coursecopylist.php b/includes/coursecopylist.php old mode 100644 new mode 100755 diff --git a/includes/diff.php b/includes/diff.php old mode 100644 new mode 100755 diff --git a/includes/email.php b/includes/email.php old mode 100644 new mode 100755 diff --git a/includes/exceptionfuncs.php b/includes/exceptionfuncs.php old mode 100644 new mode 100755 diff --git a/includes/filehandler.php b/includes/filehandler.php old mode 100644 new mode 100755 diff --git a/includes/htmLawed.php b/includes/htmLawed.php old mode 100644 new mode 100755 diff --git a/includes/htmlutil.php b/includes/htmlutil.php old mode 100644 new mode 100755 diff --git a/includes/loaditemshowdata.php b/includes/loaditemshowdata.php old mode 100644 new mode 100755 diff --git a/includes/ltioauthstore.php b/includes/ltioauthstore.php old mode 100644 new mode 100755 diff --git a/includes/ltioutcomes.php b/includes/ltioutcomes.php old mode 100644 new mode 100755 diff --git a/includes/mailses.php b/includes/mailses.php old mode 100644 new mode 100755 diff --git a/includes/newusercommon.php b/includes/newusercommon.php old mode 100644 new mode 100755 diff --git a/includes/parsedatetime.php b/includes/parsedatetime.php old mode 100644 new mode 100755 diff --git a/includes/password.php b/includes/password.php old mode 100644 new mode 100755 diff --git a/includes/report-commonstu-funcs.php b/includes/report-commonstu-funcs.php old mode 100644 new mode 100755 diff --git a/includes/rubric.php b/includes/rubric.php old mode 100644 new mode 100755 diff --git a/includes/safeunserialize.php b/includes/safeunserialize.php old mode 100644 new mode 100755 diff --git a/includes/sanitize.php b/includes/sanitize.php old mode 100644 new mode 100755 diff --git a/includes/session.php b/includes/session.php old mode 100644 new mode 100755 diff --git a/includes/stugroups.php b/includes/stugroups.php old mode 100644 new mode 100755 diff --git a/includes/tar.class.php b/includes/tar.class.php old mode 100644 new mode 100755 diff --git a/includes/unenroll.php b/includes/unenroll.php old mode 100644 new mode 100755 diff --git a/includes/updateassess.php b/includes/updateassess.php old mode 100644 new mode 100755 diff --git a/includes/updateptsposs.php b/includes/updateptsposs.php old mode 100644 new mode 100755 diff --git a/includes/userpics.php b/includes/userpics.php old mode 100644 new mode 100755 diff --git a/includes/userprefs.php b/includes/userprefs.php old mode 100644 new mode 100755 diff --git a/includes/userutils.php b/includes/userutils.php old mode 100644 new mode 100755 diff --git a/index.php b/index.php old mode 100644 new mode 100755 diff --git a/info/answerimgs/103.gif b/info/answerimgs/103.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/12.gif b/info/answerimgs/12.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/1oxtxp1.gif b/info/answerimgs/1oxtxp1.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/23.gif b/info/answerimgs/23.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/24.gif b/info/answerimgs/24.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/2o5m3.gif b/info/answerimgs/2o5m3.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/2pxo3mx.gif b/info/answerimgs/2pxo3mx.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/3s.gif b/info/answerimgs/3s.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/3txp7.gif b/info/answerimgs/3txp7.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/513.gif b/info/answerimgs/513.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/53x.gif b/info/answerimgs/53x.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/arcsinx.gif b/info/answerimgs/arcsinx.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/arctan1.gif b/info/answerimgs/arctan1.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/f1.gif b/info/answerimgs/f1.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/f2.gif b/info/answerimgs/f2.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/f3.gif b/info/answerimgs/f3.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/lnoln.gif b/info/answerimgs/lnoln.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/log100.gif b/info/answerimgs/log100.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/m3xs.gif b/info/answerimgs/m3xs.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/s4.gif b/info/answerimgs/s4.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/sinpi.gif b/info/answerimgs/sinpi.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/sinpio3x.gif b/info/answerimgs/sinpio3x.gif old mode 100644 new mode 100755 diff --git a/info/answerimgs/sxm5.gif b/info/answerimgs/sxm5.gif old mode 100644 new mode 100755 diff --git a/info/enteringanswers.php b/info/enteringanswers.php old mode 100644 new mode 100755 diff --git a/infoheader.php.dist b/infoheader.php.dist old mode 100644 new mode 100755 diff --git a/infopages.css b/infopages.css old mode 100644 new mode 100755 diff --git a/init.php b/init.php old mode 100644 new mode 100755 diff --git a/init_without_validate.php b/init_without_validate.php old mode 100644 new mode 100755 diff --git a/install.php b/install.php old mode 100644 new mode 100755 diff --git a/installexamples.php b/installexamples.php old mode 100644 new mode 100755 diff --git a/javascript/3dviewer.js b/javascript/3dviewer.js old mode 100644 new mode 100755 diff --git a/javascript/AMhelpers.js b/javascript/AMhelpers.js old mode 100644 new mode 100755 diff --git a/javascript/AMtoMQ.js b/javascript/AMtoMQ.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIMathML.js b/javascript/ASCIIMathML.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIMathML_min.js b/javascript/ASCIIMathML_min.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIMathMLwFallback.js b/javascript/ASCIIMathMLwFallback.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIMathTeXImg.js b/javascript/ASCIIMathTeXImg.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIMathTeXImg_min.js b/javascript/ASCIIMathTeXImg_min.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIsvg.js b/javascript/ASCIIsvg.js old mode 100644 new mode 100755 diff --git a/javascript/ASCIIsvg_min.js b/javascript/ASCIIsvg_min.js old mode 100644 new mode 100755 diff --git a/javascript/CalendarPopup.js b/javascript/CalendarPopup.js old mode 100644 new mode 100755 diff --git a/javascript/ColorPicker2.js b/javascript/ColorPicker2.js old mode 100644 new mode 100755 diff --git a/javascript/DatePicker.js b/javascript/DatePicker.js old mode 100644 new mode 100755 diff --git a/javascript/MQbundle_min.js b/javascript/MQbundle_min.js old mode 100644 new mode 100755 diff --git a/javascript/a11ytree.js b/javascript/a11ytree.js old mode 100644 new mode 100755 diff --git a/javascript/addgrades.js b/javascript/addgrades.js old mode 100644 new mode 100755 diff --git a/javascript/addqsort.js b/javascript/addqsort.js old mode 100644 new mode 100755 diff --git a/javascript/addquestions.js b/javascript/addquestions.js old mode 100644 new mode 100755 diff --git a/javascript/assessment_min.js b/javascript/assessment_min.js old mode 100644 new mode 100755 diff --git a/javascript/codemirror/LICENSE b/javascript/codemirror/LICENSE old mode 100644 new mode 100755 diff --git a/javascript/codemirror/codemirror-compressed.js b/javascript/codemirror/codemirror-compressed.js old mode 100644 new mode 100755 diff --git a/javascript/codemirror/codemirror_min.css b/javascript/codemirror/codemirror_min.css old mode 100644 new mode 100755 diff --git a/javascript/codemirror/imathas.js b/javascript/codemirror/imathas.js old mode 100644 new mode 100755 diff --git a/javascript/colorpicker.js b/javascript/colorpicker.js old mode 100644 new mode 100755 diff --git a/javascript/confirmsubmit.js b/javascript/confirmsubmit.js old mode 100644 new mode 100755 diff --git a/javascript/copyitemslist.js b/javascript/copyitemslist.js old mode 100644 new mode 100755 diff --git a/javascript/course.js b/javascript/course.js old mode 100644 new mode 100755 diff --git a/javascript/coursebrowserprops.js.dist b/javascript/coursebrowserprops.js.dist old mode 100644 new mode 100755 diff --git a/javascript/cpimages/blank.gif b/javascript/cpimages/blank.gif old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_arrows.gif b/javascript/cpimages/cp_arrows.gif old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_color_slider.png b/javascript/cpimages/cp_color_slider.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_cur_color_background.png b/javascript/cpimages/cp_cur_color_background.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_horizontal_picker.png b/javascript/cpimages/cp_horizontal_picker.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_lg_background.png b/javascript/cpimages/cp_lg_background.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_lg_overlay.png b/javascript/cpimages/cp_lg_overlay.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_mini_icon.png b/javascript/cpimages/cp_mini_icon.png old mode 100644 new mode 100755 diff --git a/javascript/cpimages/cp_web_safe.gif b/javascript/cpimages/cp_web_safe.gif old mode 100644 new mode 100755 diff --git a/javascript/d.svg b/javascript/d.svg old mode 100644 new mode 100755 diff --git a/javascript/diag.js b/javascript/diag.js old mode 100644 new mode 100755 diff --git a/javascript/drawing.js b/javascript/drawing.js old mode 100644 new mode 100755 diff --git a/javascript/eqnhelper.js b/javascript/eqnhelper.js old mode 100644 new mode 100755 diff --git a/javascript/eqntips.js b/javascript/eqntips.js old mode 100644 new mode 100755 diff --git a/javascript/excanvas.js b/javascript/excanvas.js old mode 100644 new mode 100755 diff --git a/javascript/excanvas_min.js b/javascript/excanvas_min.js old mode 100644 new mode 100755 diff --git a/javascript/fuse.min.js b/javascript/fuse.min.js old mode 100644 new mode 100755 diff --git a/javascript/gb-scoretools.js b/javascript/gb-scoretools.js old mode 100644 new mode 100755 diff --git a/javascript/general.js b/javascript/general.js old mode 100644 new mode 100755 diff --git a/javascript/gradebook.js b/javascript/gradebook.js old mode 100644 new mode 100755 diff --git a/javascript/iframeSizer_contentWindow_min.js b/javascript/iframeSizer_contentWindow_min.js old mode 100644 new mode 100755 diff --git a/javascript/jquery-sortable.js b/javascript/jquery-sortable.js old mode 100644 new mode 100755 diff --git a/javascript/jquery.min.js b/javascript/jquery.min.js old mode 100644 new mode 100755 diff --git a/javascript/jquery.validate.min.js b/javascript/jquery.validate.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ar.min.js b/javascript/jqvalidatei18n/messages_ar.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_az.min.js b/javascript/jqvalidatei18n/messages_az.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_bg.min.js b/javascript/jqvalidatei18n/messages_bg.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_bn_BD.min.js b/javascript/jqvalidatei18n/messages_bn_BD.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ca.min.js b/javascript/jqvalidatei18n/messages_ca.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_cs.min.js b/javascript/jqvalidatei18n/messages_cs.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_da.min.js b/javascript/jqvalidatei18n/messages_da.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_de.min.js b/javascript/jqvalidatei18n/messages_de.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_el.min.js b/javascript/jqvalidatei18n/messages_el.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_es.min.js b/javascript/jqvalidatei18n/messages_es.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_es_AR.min.js b/javascript/jqvalidatei18n/messages_es_AR.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_es_PE.min.js b/javascript/jqvalidatei18n/messages_es_PE.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_et.min.js b/javascript/jqvalidatei18n/messages_et.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_eu.min.js b/javascript/jqvalidatei18n/messages_eu.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_fa.min.js b/javascript/jqvalidatei18n/messages_fa.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_fi.min.js b/javascript/jqvalidatei18n/messages_fi.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_fr.min.js b/javascript/jqvalidatei18n/messages_fr.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ge.min.js b/javascript/jqvalidatei18n/messages_ge.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_gl.min.js b/javascript/jqvalidatei18n/messages_gl.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_he.min.js b/javascript/jqvalidatei18n/messages_he.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_hr.min.js b/javascript/jqvalidatei18n/messages_hr.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_hu.min.js b/javascript/jqvalidatei18n/messages_hu.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_hy_AM.min.js b/javascript/jqvalidatei18n/messages_hy_AM.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_id.min.js b/javascript/jqvalidatei18n/messages_id.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_is.min.js b/javascript/jqvalidatei18n/messages_is.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_it.min.js b/javascript/jqvalidatei18n/messages_it.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ja.min.js b/javascript/jqvalidatei18n/messages_ja.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ka.min.js b/javascript/jqvalidatei18n/messages_ka.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_kk.min.js b/javascript/jqvalidatei18n/messages_kk.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ko.min.js b/javascript/jqvalidatei18n/messages_ko.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_lt.min.js b/javascript/jqvalidatei18n/messages_lt.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_lv.min.js b/javascript/jqvalidatei18n/messages_lv.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_mk.min.js b/javascript/jqvalidatei18n/messages_mk.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_my.min.js b/javascript/jqvalidatei18n/messages_my.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_nl.min.js b/javascript/jqvalidatei18n/messages_nl.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_no.min.js b/javascript/jqvalidatei18n/messages_no.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_pl.min.js b/javascript/jqvalidatei18n/messages_pl.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_pt_BR.min.js b/javascript/jqvalidatei18n/messages_pt_BR.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_pt_PT.min.js b/javascript/jqvalidatei18n/messages_pt_PT.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ro.min.js b/javascript/jqvalidatei18n/messages_ro.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ru.min.js b/javascript/jqvalidatei18n/messages_ru.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_si.min.js b/javascript/jqvalidatei18n/messages_si.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_sk.min.js b/javascript/jqvalidatei18n/messages_sk.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_sl.min.js b/javascript/jqvalidatei18n/messages_sl.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_sr.min.js b/javascript/jqvalidatei18n/messages_sr.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_sr_lat.min.js b/javascript/jqvalidatei18n/messages_sr_lat.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_sv.min.js b/javascript/jqvalidatei18n/messages_sv.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_th.min.js b/javascript/jqvalidatei18n/messages_th.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_tj.min.js b/javascript/jqvalidatei18n/messages_tj.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_tr.min.js b/javascript/jqvalidatei18n/messages_tr.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_uk.min.js b/javascript/jqvalidatei18n/messages_uk.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_ur.min.js b/javascript/jqvalidatei18n/messages_ur.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_vi.min.js b/javascript/jqvalidatei18n/messages_vi.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_zh.min.js b/javascript/jqvalidatei18n/messages_zh.min.js old mode 100644 new mode 100755 diff --git a/javascript/jqvalidatei18n/messages_zh_TW.min.js b/javascript/jqvalidatei18n/messages_zh_TW.min.js old mode 100644 new mode 100755 diff --git a/javascript/jstz_min.js b/javascript/jstz_min.js old mode 100644 new mode 100755 diff --git a/javascript/junkflag.js b/javascript/junkflag.js old mode 100644 new mode 100755 diff --git a/javascript/libtree.js b/javascript/libtree.js old mode 100644 new mode 100755 diff --git a/javascript/libtree2.js b/javascript/libtree2.js old mode 100644 new mode 100755 diff --git a/javascript/livepoll.js b/javascript/livepoll.js old mode 100644 new mode 100755 diff --git a/javascript/masschgdates.js b/javascript/masschgdates.js old mode 100644 new mode 100755 diff --git a/javascript/mathgraphcheck.js b/javascript/mathgraphcheck.js old mode 100644 new mode 100755 diff --git a/javascript/mathjax/InputToDataAttr.js b/javascript/mathjax/InputToDataAttr.js old mode 100644 new mode 100755 diff --git a/javascript/mathjax/InputToDataAttrCDN.js b/javascript/mathjax/InputToDataAttrCDN.js old mode 100644 new mode 100755 diff --git a/javascript/mathjs.js b/javascript/mathjs.js old mode 100644 new mode 100755 diff --git a/javascript/mathquill.js b/javascript/mathquill.js old mode 100644 new mode 100755 diff --git a/javascript/mathquill_min.js b/javascript/mathquill_min.js old mode 100644 new mode 100755 diff --git a/javascript/mathquilled.js b/javascript/mathquilled.js old mode 100644 new mode 100755 diff --git a/javascript/md5.js b/javascript/md5.js old mode 100644 new mode 100755 diff --git a/javascript/md5_min.js b/javascript/md5_min.js old mode 100644 new mode 100755 diff --git a/javascript/mootools.js b/javascript/mootools.js old mode 100644 new mode 100755 diff --git a/javascript/moveitem.js b/javascript/moveitem.js old mode 100644 new mode 100755 diff --git a/javascript/msg.js b/javascript/msg.js old mode 100644 new mode 100755 diff --git a/javascript/nested1.js b/javascript/nested1.js old mode 100644 new mode 100755 diff --git a/javascript/pngbehavior.htc b/javascript/pngbehavior.htc old mode 100644 new mode 100755 diff --git a/javascript/posts.js b/javascript/posts.js old mode 100644 new mode 100755 diff --git a/javascript/rubric.js b/javascript/rubric.js old mode 100644 new mode 100755 diff --git a/javascript/solver.js b/javascript/solver.js old mode 100644 new mode 100755 diff --git a/javascript/solversagecell.html b/javascript/solversagecell.html old mode 100644 new mode 100755 diff --git a/javascript/tablescroller.js b/javascript/tablescroller.js old mode 100644 new mode 100755 diff --git a/javascript/tablescroller2.js b/javascript/tablescroller2.js old mode 100644 new mode 100755 diff --git a/javascript/tablesorter.js b/javascript/tablesorter.js old mode 100644 new mode 100755 diff --git a/javascript/testmathjs.html b/javascript/testmathjs.html old mode 100644 new mode 100755 diff --git a/javascript/thread.js b/javascript/thread.js old mode 100644 new mode 100755 diff --git a/javascript/validateform.js b/javascript/validateform.js old mode 100644 new mode 100755 diff --git a/javascript/viewwiki.js b/javascript/viewwiki.js old mode 100644 new mode 100755 diff --git a/javascript/ytapi.js b/javascript/ytapi.js old mode 100644 new mode 100755 diff --git a/katex/README.md b/katex/README.md old mode 100644 new mode 100755 diff --git a/katex/auto-render.js b/katex/auto-render.js old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_AMS-Regular.eot b/katex/fonts/KaTeX_AMS-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_AMS-Regular.ttf b/katex/fonts/KaTeX_AMS-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_AMS-Regular.woff b/katex/fonts/KaTeX_AMS-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_AMS-Regular.woff2 b/katex/fonts/KaTeX_AMS-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Bold.eot b/katex/fonts/KaTeX_Caligraphic-Bold.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/katex/fonts/KaTeX_Caligraphic-Bold.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Bold.woff b/katex/fonts/KaTeX_Caligraphic-Bold.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/katex/fonts/KaTeX_Caligraphic-Bold.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.eot b/katex/fonts/KaTeX_Caligraphic-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/katex/fonts/KaTeX_Caligraphic-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.woff b/katex/fonts/KaTeX_Caligraphic-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/katex/fonts/KaTeX_Caligraphic-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Bold.eot b/katex/fonts/KaTeX_Fraktur-Bold.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Bold.ttf b/katex/fonts/KaTeX_Fraktur-Bold.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Bold.woff b/katex/fonts/KaTeX_Fraktur-Bold.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/katex/fonts/KaTeX_Fraktur-Bold.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Regular.eot b/katex/fonts/KaTeX_Fraktur-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Regular.ttf b/katex/fonts/KaTeX_Fraktur-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Regular.woff b/katex/fonts/KaTeX_Fraktur-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/katex/fonts/KaTeX_Fraktur-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Bold.eot b/katex/fonts/KaTeX_Main-Bold.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Bold.ttf b/katex/fonts/KaTeX_Main-Bold.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Bold.woff b/katex/fonts/KaTeX_Main-Bold.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Bold.woff2 b/katex/fonts/KaTeX_Main-Bold.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Italic.eot b/katex/fonts/KaTeX_Main-Italic.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Italic.ttf b/katex/fonts/KaTeX_Main-Italic.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Italic.woff b/katex/fonts/KaTeX_Main-Italic.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Italic.woff2 b/katex/fonts/KaTeX_Main-Italic.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Regular.eot b/katex/fonts/KaTeX_Main-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Regular.ttf b/katex/fonts/KaTeX_Main-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Regular.woff b/katex/fonts/KaTeX_Main-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Main-Regular.woff2 b/katex/fonts/KaTeX_Main-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.eot b/katex/fonts/KaTeX_Math-BoldItalic.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.ttf b/katex/fonts/KaTeX_Math-BoldItalic.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff b/katex/fonts/KaTeX_Math-BoldItalic.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/katex/fonts/KaTeX_Math-BoldItalic.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Italic.eot b/katex/fonts/KaTeX_Math-Italic.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Italic.ttf b/katex/fonts/KaTeX_Math-Italic.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Italic.woff b/katex/fonts/KaTeX_Math-Italic.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Italic.woff2 b/katex/fonts/KaTeX_Math-Italic.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Regular.eot b/katex/fonts/KaTeX_Math-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Regular.ttf b/katex/fonts/KaTeX_Math-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Regular.woff b/katex/fonts/KaTeX_Math-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Math-Regular.woff2 b/katex/fonts/KaTeX_Math-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.eot b/katex/fonts/KaTeX_SansSerif-Bold.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.ttf b/katex/fonts/KaTeX_SansSerif-Bold.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.woff b/katex/fonts/KaTeX_SansSerif-Bold.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/katex/fonts/KaTeX_SansSerif-Bold.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.eot b/katex/fonts/KaTeX_SansSerif-Italic.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.ttf b/katex/fonts/KaTeX_SansSerif-Italic.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.woff b/katex/fonts/KaTeX_SansSerif-Italic.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/katex/fonts/KaTeX_SansSerif-Italic.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.eot b/katex/fonts/KaTeX_SansSerif-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.ttf b/katex/fonts/KaTeX_SansSerif-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.woff b/katex/fonts/KaTeX_SansSerif-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/katex/fonts/KaTeX_SansSerif-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Script-Regular.eot b/katex/fonts/KaTeX_Script-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Script-Regular.ttf b/katex/fonts/KaTeX_Script-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Script-Regular.woff b/katex/fonts/KaTeX_Script-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Script-Regular.woff2 b/katex/fonts/KaTeX_Script-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size1-Regular.eot b/katex/fonts/KaTeX_Size1-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size1-Regular.ttf b/katex/fonts/KaTeX_Size1-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size1-Regular.woff b/katex/fonts/KaTeX_Size1-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size1-Regular.woff2 b/katex/fonts/KaTeX_Size1-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size2-Regular.eot b/katex/fonts/KaTeX_Size2-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size2-Regular.ttf b/katex/fonts/KaTeX_Size2-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size2-Regular.woff b/katex/fonts/KaTeX_Size2-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size2-Regular.woff2 b/katex/fonts/KaTeX_Size2-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size3-Regular.eot b/katex/fonts/KaTeX_Size3-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size3-Regular.ttf b/katex/fonts/KaTeX_Size3-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size3-Regular.woff b/katex/fonts/KaTeX_Size3-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size3-Regular.woff2 b/katex/fonts/KaTeX_Size3-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size4-Regular.eot b/katex/fonts/KaTeX_Size4-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size4-Regular.ttf b/katex/fonts/KaTeX_Size4-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size4-Regular.woff b/katex/fonts/KaTeX_Size4-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Size4-Regular.woff2 b/katex/fonts/KaTeX_Size4-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.eot b/katex/fonts/KaTeX_Typewriter-Regular.eot old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.ttf b/katex/fonts/KaTeX_Typewriter-Regular.ttf old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.woff b/katex/fonts/KaTeX_Typewriter-Regular.woff old mode 100644 new mode 100755 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/katex/fonts/KaTeX_Typewriter-Regular.woff2 old mode 100644 new mode 100755 diff --git a/katex/katex.min.css b/katex/katex.min.css old mode 100644 new mode 100755 diff --git a/katex/katex.min.js b/katex/katex.min.js old mode 100644 new mode 100755 diff --git a/katex/test.html b/katex/test.html old mode 100644 new mode 100755 diff --git a/license.txt b/license.txt old mode 100644 new mode 100755 diff --git a/loginpage.php.dist b/loginpage.php.dist old mode 100644 new mode 100755 diff --git a/ltihome.php b/ltihome.php old mode 100644 new mode 100755 diff --git a/ltisessionsetup.php b/ltisessionsetup.php old mode 100644 new mode 100755 diff --git a/migrations/.htaccess b/migrations/.htaccess old mode 100644 new mode 100755 diff --git a/migrations/120_rollback_available_bug.php b/migrations/120_rollback_available_bug.php old mode 100644 new mode 100755 diff --git a/migrations/121_add_userprefs.php b/migrations/121_add_userprefs.php old mode 100644 new mode 100755 diff --git a/migrations/123_config_basesiteurl.php b/migrations/123_config_basesiteurl.php old mode 100644 new mode 100755 diff --git a/migrations/124_rewrite_s3.php b/migrations/124_rewrite_s3.php old mode 100644 new mode 100755 diff --git a/migrations/125_db_sessions.php b/migrations/125_db_sessions.php old mode 100644 new mode 100755 diff --git a/migrations/126_federation.php b/migrations/126_federation.php old mode 100644 new mode 100755 diff --git a/migrations/127_add_indices.php b/migrations/127_add_indices.php old mode 100644 new mode 100755 diff --git a/migrations/128_add_indices_2.php b/migrations/128_add_indices_2.php old mode 100644 new mode 100755 diff --git a/migrations/129_add_indices_3.php b/migrations/129_add_indices_3.php old mode 100644 new mode 100755 diff --git a/migrations/130_acct_taskrights.php b/migrations/130_acct_taskrights.php old mode 100644 new mode 100755 diff --git a/migrations/132_expand_gbmode.php b/migrations/132_expand_gbmode.php old mode 100644 new mode 100755 diff --git a/migrations/133_add_indices_4.php b/migrations/133_add_indices_4.php old mode 100644 new mode 100755 diff --git a/migrations/134_add_user_jsondata.php b/migrations/134_add_user_jsondata.php old mode 100644 new mode 100755 diff --git a/migrations/135_add_course_jsondata.php b/migrations/135_add_course_jsondata.php old mode 100644 new mode 100755 diff --git a/migrations/137_add_forcepwreset.php b/migrations/137_add_forcepwreset.php old mode 100644 new mode 100755 diff --git a/migrations/138_loginformat_warning.php b/migrations/138_loginformat_warning.php old mode 100644 new mode 100755 diff --git a/migrations/139_new_instr_req.php b/migrations/139_new_instr_req.php old mode 100644 new mode 100755 diff --git a/migrations/141_add_lticourse_copiedfrom.php b/migrations/141_add_lticourse_copiedfrom.php old mode 100644 new mode 100755 diff --git a/migrations/142_assess_ptspossible.php b/migrations/142_assess_ptspossible.php old mode 100644 new mode 100755 diff --git a/migrations/143_dates_by_lti.php b/migrations/143_dates_by_lti.php old mode 100644 new mode 100755 diff --git a/migrations/144_assess_reqscoretype.php b/migrations/144_assess_reqscoretype.php old mode 100644 new mode 100755 diff --git a/migrations/146_add_course_startenddates.php b/migrations/146_add_course_startenddates.php old mode 100644 new mode 100755 diff --git a/migrations/147_bugfix_datesbylti.php b/migrations/147_bugfix_datesbylti.php old mode 100644 new mode 100755 diff --git a/migrations/148_add_contextlabel.php b/migrations/148_add_contextlabel.php old mode 100644 new mode 100755 diff --git a/migrations/149_expand_latepassnum.php b/migrations/149_expand_latepassnum.php old mode 100644 new mode 100755 diff --git a/migrations/150_add_indices_5.php b/migrations/150_add_indices_5.php old mode 100644 new mode 100755 diff --git a/migrations/151_add_indices_6.php b/migrations/151_add_indices_6.php old mode 100644 new mode 100755 diff --git a/migrations/152_add_cleanupdate.php b/migrations/152_add_cleanupdate.php old mode 100644 new mode 100755 diff --git a/migrations/153_add_LPcutoff.php b/migrations/153_add_LPcutoff.php old mode 100644 new mode 100755 diff --git a/migrations/154_add_ltiqueue.php b/migrations/154_add_ltiqueue.php old mode 100644 new mode 100755 diff --git a/migrations/155_add_assess_extrefs.php b/migrations/155_add_assess_extrefs.php old mode 100644 new mode 100755 diff --git a/migrations/156_add_dbschema_details.php b/migrations/156_add_dbschema_details.php old mode 100644 new mode 100755 diff --git a/migrations/157_expand_namefields.php b/migrations/157_expand_namefields.php old mode 100644 new mode 100755 diff --git a/migrations/readme.md b/migrations/readme.md old mode 100644 new mode 100755 diff --git a/migrator.php b/migrator.php old mode 100644 new mode 100755 diff --git a/msgs/allstumsglist.php b/msgs/allstumsglist.php old mode 100644 new mode 100755 diff --git a/msgs/msghistory.php b/msgs/msghistory.php old mode 100644 new mode 100755 diff --git a/msgs/msglist.php b/msgs/msglist.php old mode 100644 new mode 100755 diff --git a/msgs/newmsglist.php b/msgs/newmsglist.php old mode 100644 new mode 100755 diff --git a/msgs/savetagged.php b/msgs/savetagged.php old mode 100644 new mode 100755 diff --git a/msgs/sentlist.php b/msgs/sentlist.php old mode 100644 new mode 100755 diff --git a/msgs/viewmsg.php b/msgs/viewmsg.php old mode 100644 new mode 100755 diff --git a/multiembedq.php b/multiembedq.php old mode 100644 new mode 100755 diff --git a/newinstructor.php.dist b/newinstructor.php.dist old mode 100644 new mode 100755 diff --git a/pdochanges.md b/pdochanges.md old mode 100644 new mode 100755 diff --git a/phpunit.xml b/phpunit.xml old mode 100644 new mode 100755 diff --git a/plannedchanges.html b/plannedchanges.html old mode 100644 new mode 100755 diff --git a/readme.html b/readme.html old mode 100644 new mode 100755 diff --git a/setupdb.php b/setupdb.php old mode 100644 new mode 100755 diff --git a/tests/.htaccess b/tests/.htaccess old mode 100644 new mode 100755 diff --git a/tests/README.md b/tests/README.md old mode 100644 new mode 100755 diff --git a/tests/_data/.gitkeep b/tests/_data/.gitkeep old mode 100644 new mode 100755 diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php old mode 100644 new mode 100755 diff --git a/tests/_support/FunctionalTester.php b/tests/_support/FunctionalTester.php old mode 100644 new mode 100755 diff --git a/tests/_support/Helper/Acceptance.php b/tests/_support/Helper/Acceptance.php old mode 100644 new mode 100755 diff --git a/tests/_support/Helper/Functional.php b/tests/_support/Helper/Functional.php old mode 100644 new mode 100755 diff --git a/tests/_support/Helper/Unit.php b/tests/_support/Helper/Unit.php old mode 100644 new mode 100755 diff --git a/tests/_support/UnitTester.php b/tests/_support/UnitTester.php old mode 100644 new mode 100755 diff --git a/tests/acceptance.suite.yml b/tests/acceptance.suite.yml old mode 100644 new mode 100755 diff --git a/tests/acceptance/AdminLoginCest.php b/tests/acceptance/AdminLoginCest.php old mode 100644 new mode 100755 diff --git a/tests/functional.suite.yml b/tests/functional.suite.yml old mode 100644 new mode 100755 diff --git a/tests/functional/.gitkeep b/tests/functional/.gitkeep old mode 100644 new mode 100755 diff --git a/tests/unit.suite.yml b/tests/unit.suite.yml old mode 100644 new mode 100755 diff --git a/tests/unit/sanitizeTest.php b/tests/unit/sanitizeTest.php old mode 100644 new mode 100755 diff --git a/themes/angelish.css b/themes/angelish.css old mode 100644 new mode 100755 diff --git a/themes/angelishmore.css b/themes/angelishmore.css old mode 100644 new mode 100755 diff --git a/themes/default.css b/themes/default.css old mode 100644 new mode 100755 diff --git a/themes/facebookish.css b/themes/facebookish.css old mode 100644 new mode 100755 diff --git a/themes/highcontrast.css b/themes/highcontrast.css old mode 100644 new mode 100755 diff --git a/themes/highcontrast_dark.css b/themes/highcontrast_dark.css old mode 100644 new mode 100755 diff --git a/themes/howtotheme.md b/themes/howtotheme.md old mode 100644 new mode 100755 diff --git a/themes/modern.css b/themes/modern.css old mode 100644 new mode 100755 diff --git a/themes/oea.css b/themes/oea.css old mode 100644 new mode 100755 diff --git a/tinymce4/demo.html b/tinymce4/demo.html old mode 100644 new mode 100755 diff --git a/tinymce4/file_manager.php b/tinymce4/file_manager.php old mode 100644 new mode 100755 diff --git a/tinymce4/file_manager/file_small.png b/tinymce4/file_manager/file_small.png old mode 100644 new mode 100755 diff --git a/tinymce4/file_manager/lang/lang_eng.php b/tinymce4/file_manager/lang/lang_eng.php old mode 100644 new mode 100755 diff --git a/tinymce4/file_manager/styles.css b/tinymce4/file_manager/styles.css old mode 100644 new mode 100755 diff --git a/tinymce4/file_manager/x.png b/tinymce4/file_manager/x.png old mode 100644 new mode 100755 diff --git a/tinymce4/getsnippets.php b/tinymce4/getsnippets.php old mode 100644 new mode 100755 diff --git a/tinymce4/license.txt b/tinymce4/license.txt old mode 100644 new mode 100755 diff --git a/tinymce4/maketinymcebundle.php b/tinymce4/maketinymcebundle.php old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/advlist/plugin.min.js b/tinymce4/plugins/advlist/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/anchor/plugin.min.js b/tinymce4/plugins/anchor/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/amcharmap.css b/tinymce4/plugins/asciimath/amcharmap.css old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/amcharmap.htm b/tinymce4/plugins/asciimath/amcharmap.htm old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/img/charmapsprite.png b/tinymce4/plugins/asciimath/img/charmapsprite.png old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/img/ed_mathformula.gif b/tinymce4/plugins/asciimath/img/ed_mathformula.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/img/ed_mathformula2.gif b/tinymce4/plugins/asciimath/img/ed_mathformula2.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/js/ASCIIMathMLwFallback.js b/tinymce4/plugins/asciimath/js/ASCIIMathMLwFallback.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/langs/en.js b/tinymce4/plugins/asciimath/langs/en.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimath/plugin.min.js b/tinymce4/plugins/asciimath/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/amcharmap.htm b/tinymce4/plugins/asciimathjax/amcharmap.htm old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/img/ed_mathformula.gif b/tinymce4/plugins/asciimathjax/img/ed_mathformula.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/img/ed_mathformula2.gif b/tinymce4/plugins/asciimathjax/img/ed_mathformula2.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/js/ASCIIMathMLwFallback.js b/tinymce4/plugins/asciimathjax/js/ASCIIMathMLwFallback.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/langs/en.js b/tinymce4/plugins/asciimathjax/langs/en.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciimathjax/plugin.min.js b/tinymce4/plugins/asciimathjax/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/asciisvgdlg.htm b/tinymce4/plugins/asciisvg/asciisvgdlg.htm old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/img/ed_asciisvg.gif b/tinymce4/plugins/asciisvg/img/ed_asciisvg.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/js/asciisvgdlg.js b/tinymce4/plugins/asciisvg/js/asciisvgdlg.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/js/d.svg b/tinymce4/plugins/asciisvg/js/d.svg old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/langs/en.js b/tinymce4/plugins/asciisvg/langs/en.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg/plugin.min.js b/tinymce4/plugins/asciisvg/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/asciisvgdlg.htm b/tinymce4/plugins/asciisvg2/asciisvgdlg.htm old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/img/ed_asciisvg.gif b/tinymce4/plugins/asciisvg2/img/ed_asciisvg.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/js/ASCIIsvg.js b/tinymce4/plugins/asciisvg2/js/ASCIIsvg.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/js/asciisvgdlg.js b/tinymce4/plugins/asciisvg2/js/asciisvgdlg.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/js/d.svg b/tinymce4/plugins/asciisvg2/js/d.svg old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/langs/en.js b/tinymce4/plugins/asciisvg2/langs/en.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/asciisvg2/plugin.min.js b/tinymce4/plugins/asciisvg2/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/attach/ed_attach.gif b/tinymce4/plugins/attach/ed_attach.gif old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/attach/plugin.min.js b/tinymce4/plugins/attach/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/autolink/plugin.js b/tinymce4/plugins/autolink/plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/autolink/plugin.min.js b/tinymce4/plugins/autolink/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/charmap/plugin.min.js b/tinymce4/plugins/charmap/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/code/plugin.min.js b/tinymce4/plugins/code/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/colorpicker/plugin.min.js b/tinymce4/plugins/colorpicker/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/contextmenu/plugin.min.js b/tinymce4/plugins/contextmenu/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/hr/plugin.js b/tinymce4/plugins/hr/plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/hr/plugin.min.js b/tinymce4/plugins/hr/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/image/plugin.min.js b/tinymce4/plugins/image/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/config/bolt/atomic.js b/tinymce4/plugins/imagetools/config/bolt/atomic.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/config/bolt/browser.js b/tinymce4/plugins/imagetools/config/bolt/browser.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/config/bolt/demo.js b/tinymce4/plugins/imagetools/config/bolt/demo.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/config/bolt/prod.js b/tinymce4/plugins/imagetools/config/bolt/prod.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/plugin.js b/tinymce4/plugins/imagetools/plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/plugin.min.js b/tinymce4/plugins/imagetools/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/demo/html/demo.html b/tinymce4/plugins/imagetools/src/demo/html/demo.html old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/demo/js/Demo.js b/tinymce4/plugins/imagetools/src/demo/js/Demo.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/main/js/CropRect.js b/tinymce4/plugins/imagetools/src/main/js/CropRect.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/main/js/Dialog.js b/tinymce4/plugins/imagetools/src/main/js/Dialog.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/main/js/ImagePanel.js b/tinymce4/plugins/imagetools/src/main/js/ImagePanel.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/main/js/Plugin.js b/tinymce4/plugins/imagetools/src/main/js/Plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/imagetools/src/main/js/UndoStack.js b/tinymce4/plugins/imagetools/src/main/js/UndoStack.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/link/plugin.js b/tinymce4/plugins/link/plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/link/plugin.min.js b/tinymce4/plugins/link/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/lists/plugin.min.js b/tinymce4/plugins/lists/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/media/plugin.min.js b/tinymce4/plugins/media/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/paste/plugin.min.js b/tinymce4/plugins/paste/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/rollups/plugin.min.js b/tinymce4/plugins/rollups/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/searchreplace/plugin.min.js b/tinymce4/plugins/searchreplace/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/snippet/plugin.js b/tinymce4/plugins/snippet/plugin.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/table/plugin.min.js b/tinymce4/plugins/table/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/plugins/textcolor/plugin.min.js b/tinymce4/plugins/textcolor/plugin.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/content.inline.min.css b/tinymce4/skins/lightgray/content.inline.min.css old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/content.min.css b/tinymce4/skins/lightgray/content.min.css old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce-small.eot b/tinymce4/skins/lightgray/fonts/tinymce-small.eot old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce-small.json b/tinymce4/skins/lightgray/fonts/tinymce-small.json old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce-small.svg b/tinymce4/skins/lightgray/fonts/tinymce-small.svg old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce-small.ttf b/tinymce4/skins/lightgray/fonts/tinymce-small.ttf old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce-small.woff b/tinymce4/skins/lightgray/fonts/tinymce-small.woff old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce.eot b/tinymce4/skins/lightgray/fonts/tinymce.eot old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce.json b/tinymce4/skins/lightgray/fonts/tinymce.json old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce.svg b/tinymce4/skins/lightgray/fonts/tinymce.svg old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce.ttf b/tinymce4/skins/lightgray/fonts/tinymce.ttf old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/fonts/tinymce.woff b/tinymce4/skins/lightgray/fonts/tinymce.woff old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/img/anchor.gif b/tinymce4/skins/lightgray/img/anchor.gif old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/img/loader.gif b/tinymce4/skins/lightgray/img/loader.gif old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/img/object.gif b/tinymce4/skins/lightgray/img/object.gif old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/img/trans.gif b/tinymce4/skins/lightgray/img/trans.gif old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/skin.ie7.min.css b/tinymce4/skins/lightgray/skin.ie7.min.css old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/skin.min - Copy.css b/tinymce4/skins/lightgray/skin.min - Copy.css old mode 100644 new mode 100755 diff --git a/tinymce4/skins/lightgray/skin.min.css b/tinymce4/skins/lightgray/skin.min.css old mode 100644 new mode 100755 diff --git a/tinymce4/themes/modern/theme.min.js b/tinymce4/themes/modern/theme.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/tinymce.min.js b/tinymce4/tinymce.min.js old mode 100644 new mode 100755 diff --git a/tinymce4/tinymce_bundled.js b/tinymce4/tinymce_bundled.js old mode 100644 new mode 100755 diff --git a/tinymce4/to_add_imagetools.txt b/tinymce4/to_add_imagetools.txt old mode 100644 new mode 100755 diff --git a/tinymce4/upload_handler.php b/tinymce4/upload_handler.php old mode 100644 new mode 100755 diff --git a/upgrade.php b/upgrade.php old mode 100644 new mode 100755 diff --git a/upgrade.txt b/upgrade.txt old mode 100644 new mode 100755 diff --git a/util/batchanon.php b/util/batchanon.php old mode 100644 new mode 100755 diff --git a/util/batchcreateinstr.php b/util/batchcreateinstr.php old mode 100644 new mode 100755 diff --git a/util/blocksearch.php b/util/blocksearch.php old mode 100644 new mode 100755 diff --git a/util/copystudata.php b/util/copystudata.php old mode 100644 new mode 100755 diff --git a/util/coursetolibs.php b/util/coursetolibs.php old mode 100644 new mode 100755 diff --git a/util/delwronglibs.php b/util/delwronglibs.php old mode 100644 new mode 100755 diff --git a/util/getqcnt.php b/util/getqcnt.php old mode 100644 new mode 100755 diff --git a/util/getstucnt.php b/util/getstucnt.php old mode 100644 new mode 100755 diff --git a/util/getstucntdet.php b/util/getstucntdet.php old mode 100644 new mode 100755 diff --git a/util/itemsearch.php b/util/itemsearch.php old mode 100644 new mode 100755 diff --git a/util/listdeprecated.php b/util/listdeprecated.php old mode 100644 new mode 100755 diff --git a/util/listextref.php b/util/listextref.php old mode 100644 new mode 100755 diff --git a/util/listnewteachers.php b/util/listnewteachers.php old mode 100644 new mode 100755 diff --git a/util/listwronglibs.php b/util/listwronglibs.php old mode 100644 new mode 100755 diff --git a/util/makeconditional.php b/util/makeconditional.php old mode 100644 new mode 100755 diff --git a/util/makeminjs.php b/util/makeminjs.php old mode 100644 new mode 100755 diff --git a/util/mbx.php b/util/mbx.php old mode 100644 new mode 100755 diff --git a/util/mbxfilter.php b/util/mbxfilter.php old mode 100644 new mode 100755 diff --git a/util/mergescores.php b/util/mergescores.php old mode 100644 new mode 100755 diff --git a/util/mergestus.php b/util/mergestus.php old mode 100644 new mode 100755 diff --git a/util/mergeteachers.php b/util/mergeteachers.php old mode 100644 new mode 100755 diff --git a/util/ptx.php b/util/ptx.php old mode 100644 new mode 100755 diff --git a/util/replaceurls.php b/util/replaceurls.php old mode 100644 new mode 100755 diff --git a/util/replacevids.php b/util/replacevids.php old mode 100644 new mode 100755 diff --git a/util/rescoreassess.php b/util/rescoreassess.php old mode 100644 new mode 100755 diff --git a/util/rescuecourse.php b/util/rescuecourse.php old mode 100644 new mode 100755 diff --git a/util/runcoursecleanup.php b/util/runcoursecleanup.php old mode 100644 new mode 100755 diff --git a/util/tagcoursecleanup.php b/util/tagcoursecleanup.php old mode 100644 new mode 100755 diff --git a/util/updatedeprecated.php b/util/updatedeprecated.php old mode 100644 new mode 100755 diff --git a/util/updateextref.php b/util/updateextref.php old mode 100644 new mode 100755 diff --git a/util/updatewronglibs.php b/util/updatewronglibs.php old mode 100644 new mode 100755 diff --git a/util/utils.php b/util/utils.php old mode 100644 new mode 100755 diff --git a/validate.php b/validate.php old mode 100644 new mode 100755 diff --git a/vendor/.gitignore b/vendor/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/.htaccess b/vendor/.htaccess old mode 100644 new mode 100755 diff --git a/wamaphome.css b/wamaphome.css old mode 100644 new mode 100755 diff --git a/wikis/editwiki.php b/wikis/editwiki.php old mode 100644 new mode 100755 diff --git a/wikis/viewwiki.php b/wikis/viewwiki.php old mode 100644 new mode 100755 diff --git a/wikis/viewwikipublic.php b/wikis/viewwikipublic.php old mode 100644 new mode 100755 diff --git a/wikis/wikirev.php b/wikis/wikirev.php old mode 100644 new mode 100755 From 449592ef6199a04394f21137ac2937b89bddd453 Mon Sep 17 00:00:00 2001 From: Ondrej Zjevik Date: Sat, 20 Oct 2018 15:26:04 -0400 Subject: [PATCH 02/17] Finished Add/Remove Questions page. --- .gitignore | 3 +- admin/ccexport-generate.php | 2 +- course/addassessment.php | 3 + course/addquestions.php | 26 +- course/addquestionssave.php | 6 +- imascore.css | 2937 +++++++++++++++++++------------ infoheader.php | 13 + javascript/._jquery.nestable.js | Bin 0 -> 4096 bytes javascript/addqsortJIT.js | 1526 ++++++++++++++++ javascript/jquery.nestable.js | 1087 ++++++++++++ loginpage.php | 99 ++ newinstructor.php | 118 ++ upgrade.txt | 91 +- 13 files changed, 4703 insertions(+), 1208 deletions(-) create mode 100755 infoheader.php create mode 100755 javascript/._jquery.nestable.js create mode 100755 javascript/addqsortJIT.js create mode 100755 javascript/jquery.nestable.js create mode 100755 loginpage.php create mode 100755 newinstructor.php diff --git a/.gitignore b/.gitignore index 36f7e27f6a..90f398a310 100755 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ /tests/_output/ /c3.php *.php~ -*.js~ \ No newline at end of file +*.js~ +config.php diff --git a/admin/ccexport-generate.php b/admin/ccexport-generate.php index fcf41084af..8ba936fb64 100755 --- a/admin/ccexport-generate.php +++ b/admin/ccexport-generate.php @@ -565,7 +565,7 @@ function getorg($it,$parent,&$res,$ind,$mod_depth) { fwrite($fp,'IMathAS'.$installname.''); fwrite($fp,''); fwrite($fp,' public'); - fwrite($fp,' '.Sanitize::domainNameWithPort($_SERVER['HTTP_HOST']).''); + fwrite($fp,' '.$domain.''); fwrite($fp,' ' . $GLOBALS['basesiteurl'] . '/bltilaunch.php Pick an Assessment diff --git a/course/addassessment.php b/course/addassessment.php index 4f57a510cb..7f9633efad 100755 --- a/course/addassessment.php +++ b/course/addassessment.php @@ -2,6 +2,8 @@ //IMathAS: Add/modify blocks of items on course page //(c) 2006 David Lippman +// Modified by Ondrej Zjevik 2018 + /*** master php includes *******/ require("../init.php"); require("../includes/htmlutil.php"); @@ -1015,6 +1017,7 @@ function removeextref(el) { writeHtmlSelected($line['displaymethod'],"LivePoll",0); echo '>Live Poll (experimental)'; }?> +
diff --git a/course/addquestions.php b/course/addquestions.php index 00dc9ca0a5..d6f3b4355a 100755 --- a/course/addquestions.php +++ b/course/addquestions.php @@ -2,6 +2,8 @@ //IMathAS: Add/modify blocks of items on course page //(c) 2006 David Lippman +//Modified by Ondrej Zjevik 2018 + /*** master php includes *******/ require("../init.php"); include("../includes/htmlutil.php"); @@ -363,7 +365,7 @@ var addqaddr = '$address'; "; $placeinhead .= ""; - $placeinhead .= ""; + $placeinhead .= ""; $placeinhead .= ""; $placeinhead .= ""; $placeinhead .= ""; @@ -383,11 +385,17 @@ } else { $beentaken = false; } - $stm = $DBH->prepare("SELECT itemorder,name,defpoints,displaymethod,showhints,intro FROM imas_assessments WHERE id=:id"); + $stm = $DBH->prepare("SELECT itemorder,name,defpoints,displaymethod,showhints,intro,justintimeorder FROM imas_assessments WHERE id=:id"); $stm->execute(array(':id'=>$aid)); - list($itemorder,$page_assessmentName,$defpoints,$displaymethod,$showhintsdef, $assessintro) = $stm->fetch(PDO::FETCH_NUM); + list($itemorder,$page_assessmentName,$defpoints,$displaymethod,$showhintsdef, $assessintro, $justintimeorder) = $stm->fetch(PDO::FETCH_NUM); $ln = 1; + if($displaymethod == "JustInTime"){ + $placeinhead .= ""; + } else{ + $placeinhead .= ""; + } + // Format of imas_assessments.intro is a JSON representation like // [ "original (main) intro text", // { displayBefore: question number to display before, @@ -480,7 +488,7 @@ $timeout = array(0); } if (isset($avgtimepts[3]) && $avgtimepts[3]>10) { - $timeout[1] = round($avgtimepts[2]); //score + $timeout[1] = round($avgtimepts[2]); //score $timeout[2] = round($avgtimepts[1]/60,1); //time first try $timeout[3] = Sanitize::onlyInt($avgtimepts[3]); //# of data } @@ -512,7 +520,7 @@ $jsarr[] = array("text", $text_seg['text'], Sanitize::onlyInt($text_seg['displayUntil']-$text_seg['displayBefore']+1), Sanitize::onlyInt($text_seg['ispage']), - $text_seg['pagetitle'], + $text_seg['pagetitle'], isset($text_seg['forntype'])?$text_seg['forntype']:0); } } @@ -558,6 +566,7 @@ } } + unset($questionjsarr); //DATA MANIPULATION FOR POTENTIAL QUESTIONS @@ -728,7 +737,7 @@ $query .= " AND (imas_library_items.libid > 0 OR imas_questionset.ownerid=?) "; $qarr[] = $userid; } - + } $query .= " ORDER BY imas_library_items.libid,imas_library_items.junkflag,imas_questionset.id"; if ($searchall==1) { @@ -1188,6 +1197,11 @@ function addtoassessmentlist($items) { setup: editorSetup }); */ + $(refreshTable); $_REQUEST['order'], ':viddata'=>$viddata, ':intro'=>$new_intro, ':id'=>$aid, ':courseid'=>$cid); - $query = "UPDATE imas_assessments SET itemorder=:itemorder,viddata=:viddata,intro=:intro"; + + $qarr = array(':itemorder'=>$_REQUEST['order'], ':viddata'=>$viddata, ':intro'=>$new_intro, ':id'=>$aid, ':courseid'=>$cid, ':jitorder'=>$_REQUEST['jitorder']); + $query = "UPDATE imas_assessments SET itemorder=:itemorder,viddata=:viddata,intro=:intro,justintimeorder=:jitorder"; if (isset($_POST['defpts'])) { $defpoints = Sanitize::onlyInt($_POST['defpts']); $query .= ",defpoints=:defpts"; diff --git a/imascore.css b/imascore.css index 6af66a8c35..70ac38cde6 100755 --- a/imascore.css +++ b/imascore.css @@ -1,1155 +1,1782 @@ -html { - -} -body { - - margin: 10px; - padding: 0px; -} -div { - margin: 0px; - padding: 0px; -} -p { - margin: 0; - padding: .5em 0; -} -br { - line-height: 1em; -} -h1,h2,h3,h4,h5,h6 { - padding: 0; - font-weight: bold; -} -h1 { - font-size: 1.5em; - margin: .7em 0; -} -h2,h3,h4,h5,h6 { - margin: 1em 0; -} -h2 { - font-size: 1.25em; -} -h3 { - font-size: 1.1em; -} -h4 { - font-size: 1.05em; -} -h5,h6 { - font-size: 1em; -} - -div.pagetitle h2, div.pagetitle h1 { - margin: 10px 0px 20px 0px; -} -div.item { - margin-bottom: 10px; - padding: 5px; - border-radius: 5px; - border-bottom: 1px solid #ccc; -} -div.signup { - border: 1px solid #000; - margin-bottom: 10px; - margin-top: 10px; - padding: 5px; -} -div#headerhome, div#homelinkbox { - padding-top: 8px; -} -div.itemsum { - margin-left: 45px; - overflow: auto; - padding: 5px 0px; - /*margin-top: -.5em; - margin-bottom: -.5em;*/ -} -span.iteminfo { - margin-left: 30px; -} -.info { - color: #4bb6e8; -} -.noticetext, a.noticetext, a.noticetext:link, a.noticetext:visited { - color: #db0000; -} -label.error { - color: #db0000; - font-style: italic; - display: block; -} -input.form + label.error { - float: left; - display: inline; - margin-left: 10px; -} - -input[type=checkbox] + label.error { - float:none; - display: inline; - margin-left: 10px; -} -div.title { - /*display: inline;*/ - margin-left: 30px; -} -div.itemhdr { - position: relative; - min-height: 26px; -} -.itemhdricon { - position: absolute; -} -.itemhdricon div { - padding-left: 5px; - padding-right: 5px; - margin-right: 5px; -} -div.itemhdr div.title { - margin-right: 30px; -} -div.itemhdrdd, div.itemhdrright { - position: absolute; - right: 0px; - top:0px; -} - -@media only screen and (min-width: 1005px) { - /* put dropdown next to item when wide*/ - .notfw .itemhdr .title { - display: inline-block; - } - .notfw div.itemhdrdd { - display: inline-block; - position: relative; - vertical-align: top; - } -} - -div.block, div.blockitems div.blockitems div.block { - padding: 5px; - margin-bottom: 10px; - border-radius: 4px 4px 0 0; -} -div.blockitems, div.blockitems div.blockitems div.blockitems { - padding: 10px; - margin-top: -10px; - margin-bottom: 10px; -} -div.block.grouptoggle { - margin-bottom: 0px; - margin-top: 10px -} -div.block.grouptoggle + div.blockitems { - margin-top: 0px -} -div.hidden { - display:none; -} -.showinmobile { - display:none; -} -div.icon { - float: left; - padding-left: 5px; - padding-right: 5px; - margin-right: 5px; -} -span.icon { - padding-left: 5px; - padding-right: 5px; - margin-right: 5px; -} -div.breadcrumb { - border: 1px solid #000; - margin-bottom: 10px; - padding: 5px; - background-color: #ddddff; -} -div.cp { - min-height: 1%; - padding: 5px; - margin-top: 20px; - border-radius: 4px; -} -div.cpmid { - min-height: 1%; - padding: 5px; - margin-top: 10px; - margin-bottom: 10px; - border-radius: 4px; -} -.pointer { - cursor:pointer; -} -ul.nomark { - margin-top: 5px; - list-style-type: none; - margin-left: 15px; - padding-left: 0px; -} -ul.nomark li { - margin-left: 0px; - padding-left: 0px; -} - -ul.qview { - list-style-type: none; - margin-left: 12px; - padding-left: 0px; - margin-bottom: 6px; -} -ul.qview ul { - padding-left: 10px; - border-left: 1px dashed #ccc; -} -ul.qview li { - margin-left: 0px; - padding-left: 0px; - margin-top: 2px; -} -div#tbl-container { - position: relative; - margin-top: 10px; - margin-bottom: 10px; - width:99.5%; - height:auto; - -} -table.gb { - border-collapse: collapse; - margin: 0px; - position:relative; -} - -table.gb thead th { - position: relative; - text-align: center; - z-index: 20; - background-color: #fff; -} -td, th { - margin: 0px; - padding: 2px 5px 2px 5px; -} -tr { - margin: 0px; - padding: 0px; -} - -td.c, input.c { - text-align: center; -} -td.r { - text-align: right; -} -span.form { - display: block; - width: 200px; - float: left; - margin-bottom: 10px; - text-align: right; - padding-right: 20px; -} -span.formright { - display: block; - width: 500px; - float: left; - margin-bottom: 10px; - text-align: left; -} - -span.wideformright { - display: block; - float: left; - margin-bottom: 10px; - text-align: left; -} -input.form { - display: block; - width: 200px; - float: left; - margin-bottom: 10px; -} - -div.submit { - margin-top: 10px; - width: 400px; - text-align: right; -} -span#leftcontenttoggle { - display:none; - vertical-align:middle; - padding: 0px 5px; -} -span#leftcontenttoggle:hover { - background-color: #eee; -} -span#leftcontenttoggle.leftcontentactive { - background-color: #eee; -} - -@media only screen and (max-width: 760px) { - span.form { - width: auto; - float: none; - text-align: left; - margin-bottom: 5px; - padding-right: 0px; - } - span.formright, span.wideformright { - width: auto; - float: none; - } - div.submit { - width: auto; - } - span.formright input[type="text"], span.formright input[type="password"] { - max-width: 100%; - } -} - -div.editor { - margin-bottom: 10px; -} -.fbbox { - background-color: #fff; - border: 1px solid #ccc; - margin: 5px; - padding: 0px 5px; -} - -span.column { - display: block; - width: 200px; - float: left; - padding-right: 20px; -} - -span.left { - float: left; -} - - - -br.form { - clear: left; -} -img { - border: 0; -} -img.mida { - vertical-align: middle; -} -p img { - max-width: 95%; - height: auto; -} -div.right { - text-align: right; -} -span.right { - float:right; -} -.floatright { - float:right; -} -.floatleft { - float:left; -} -span.padright { - float:right; - padding-right: 120px; -} -.clear { - clear: both; -} -br.clear { - line-height: 0px; - height: 0px; -} -span.hdr1 { - font-size: 120%; - font-weight: bold; -} -.small { - font-size: 70%; -} -#leftcontent { - position: absolute; - left: 0px; - width:170px; - padding:5px; - margin-top:10px; - border-radius: 5px; -} -.leftnavp a { - display: inline-block; - margin-left: 6px; - text-indent: -6px; - padding-top: 5px; -} -.leftnavp a:first-of-type { - padding-top: 2px; -} -#centercontent { - margin-left:180px; - padding-left:10px; - margin-top:10px; -} - -.midwrapper { - position: relative; -} - -.red { - color: red; -} - -table.cal { - border-collapse: collapse; - width: 100%; -} -table.cal thead th { - text-align: center; - background-color: #ddf; - border: 1px solid #000; -} -table.cal td { - border: 1px solid #000; - width: 14%; - height: 2.5em; - vertical-align: top; -} -.day { - font-size: 80%; - background-color: #ddf; -} -.today { - background-color: #fdd; -} -.caldatebar { - background-color: #ddf; -} -div.center { - text-align: center; -} -span.calitem { - padding: 0 4px; - background-color: #0ff; - margin: 1px; -} -table.cal span.calitem { - display: inline-block; -} -/* -div.td { - width: 100%; - height: 100%; - overflow: hidden; -} -*/ -img.faded { - filter: alpha(opacity: 30); - KHTMLOpacity: .3; - MozOpacity: .3; - opacity: .3; -} -.grey { - color: #999; -} -.itemgrey { - opacity: .5; -} -div.ddmenu { - position: absolute; - right: 10px; - visibility: hidden; - margin: 0px; - z-index: 100; - padding: 5px; - background: #eeffee; -} - -.nowrap { - white-space: nowrap; -} -.dpTable { - font-size: 90%; - text-align: center; - color: #505050; - background-color: #ece9d8; - border: 1px solid #AAAAAA; - } -.dpTD { - border: 1px solid #ece9d8; - } -.dpDayHighlightTD { - background-color: #CCCCCC; - border: 1px solid #AAAAAA; - } -.dpTDHover { - background-color: #aca998; - border: 1px solid #888888; - cursor: pointer; - color: red; - } -.dpDayTD { - background-color: #CCCCCC; - border: 1px solid #AAAAAA; - color: white; - } -.dpTitleText { - font-weight: bold; - } -.dpDayHighlight { - color: #4060ff; - font-weight: bold; - } -.dpButton, .dpTodayButton { - font-size: 90%; - color: gray; - background: #d8e8ff; - font-weight: bold; - padding: 0px; - } - -/*div.inactivewrapper, div.activewrapper { - margin: 0px; - padding: 0px; -}*/ -div.blockwrapper { - margin: 0; padding:0; -} - -div.tips { - border: 1px solid #91d5d5; - border-radius: 8px; - background-color: #cff; - position: absolute; - padding: 3px 6px; - z-index: 100; -} -/* - need to resolve tips below first -div.tips:after, div.tips:before { - top: 100%; - left: 15px; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; -} -div.tips.tipsright:after, div.tips.tipsright:before { - left: auto; - right: 15px; -} - -div.tips:after { - border-color: rgba(204, 255, 255, 0); - border-top-color: #cff; - border-width: 6px; - margin-left: -6px; -} -div.tips:before { - border-color: rgba(145, 213, 213, 0); - border-top-color: #91d5d5; - border-width: 7px; - margin-left: -7px; -} -*/ -#headerlogo { - position: absolute; - right:0px; - top: 7px; - cursor: pointer; -} -a:hover:focus { - outline: none; -} -a:link:focus { - text-decoration: underline; -} -ul.tablist { - padding: 0; - margin: 0; - margin-bottom: -1px; -} -ul.tablist li { - display: inline-block; - border: 1px solid #ccc; - background-color: #eee; - margin-right: 2px; -} -ul.tablist li a { - display: inline-block; - padding: 0.2em 1em; - text-decoration: none; - color: #000; -} - -ul.tablist li.active { - border-bottom: 1px solid #fff; - background-color: #fff; -} -div.tabpanel { - border: 1px solid #ccc; - background-color: #fff; - margin:0px; - padding:5px 10px; -} - -ul#navlist -{ -clear: both; -padding: 0px; -margin: 0px; -list-style-type: none; -float: left; -width: 100%; -color: #fff; -background-color: #036; -} - -ul#navlist li { -display: inline; -} - -ul#navlist li a -{ -float: left; -/*width: 5em;*/ -color: #fff; -background-color: #036; -padding: 0.2em 1em; -text-decoration: none; -border-right: 1px solid #fff; -} - -ul#navlist li a:hover, ul#navlist li a:focus -{ -background-color: #369; -color: #fff; -} - -div.additembox { - margin-bottom: 2px; -} -div.additembox span { - font-size: 85%; - background-color: #ccc; - padding: 0 10px; -} - -.newnote { - color: #f00; -} -div#leftcolumn {float: left; width: 25%; min-width: 200px;} -div#rightcolumn {float: right; width: 74%; min-width: 250px;} - -@media (max-width:805px) { - div#leftcolumn, div#rightcolumn { - float: none; - width: auto; - } -} - -ul.courselist { - margin: 0px; - padding-left: 0px; -} -ul.courselist li { - list-style-type: none; -} -ul.courselist ul { - margin-left: 2px; - padding-left: 5px; -} -li.coursegroup ul { - border-left: 1px dashed #ccc; -} -ul.courselist > li { - border-bottom: 1px solid #999; - padding: 3px 0px 2px; -} -ul.courselist > li:last-child { - border: 0; -} -div > ul.courselist { - margin-bottom: 15px; -} -ul.courselist > li > a { - display:inline-block; - margin-right:20px; - padding-left: 5px; - text-indent: -5px; -} -ul.courselist li { - position: relative; -} -div.coursedd { - position: absolute; - right: 0px; - top: 2px; -} - -div.block h3,div.block h2 { - margin: 2px; -} -div#viewbuttoncont { - float: right; - background: #fff; -} -div#viewbuttoncont a { - color: #fff; - display: inline-block; - padding: 3px 5px; - margin-left: 2px; -} -div#viewbuttoncont a:hover, div#viewbuttoncont a:focus { - text-decoration: none; -} -div#viewbuttoncont a.buttonactive { - background-color: #369; - cursor: default; - border-radius: 4px; -} -div#viewbuttoncont a.buttoninactive { - background-color: #297bbb; - border-radius: 4px; -} -div#viewbuttoncont a.buttoninactive:hover { - background-color: #036; -} -a.abutton { - padding: 3px 8px; - display: inline-block; -} -a.abutton, a.abutton:hover, a.abutton:focus { - text-decoration: none; -} -input[type=submit],input[type=button], button, a.abutton { - color: #000; - background-color: #eee; - border-radius: 4px; - border: 1px solid #ccc; - font: inherit; - height:1.5em; - line-height: 1.5em; - padding: 0 8px; - margin: 2px 3px; -} -input[type=submit].secondarybtn,input[type=button].secondarybtn, button.secondarybtn { - background-color: #f9f9f9; -} -input[type=submit]:hover, button:hover,input[type=button]:hover, a.abutton:hover { - background-color: #e3e3ff; -} -input[type=submit]:focus, button:focus,input[type=button]:focus, a.abutton:focus { - background-color: #e3e3ff; -} -input[type=submit]:disabled,input[type=button]:disabled { - color: #666; -} -input[type=submit]:disabled:hover,input[type=button]:disabled:hover { - background-color: #eee; -} -#GB_overlay { - position: fixed; - margin: auto; - top: 0; - left: 0; - z-index: 100; - width: 100%; - height: 100%; - opacity: 0.65; - -moz-opacity: 0.65; /* older Gecko-based browsers */ - filter:alpha(opacity=65); /* For IE6&7 */ - background-color: #000; -} - -#GB_window { - top: 10px; - left: 0px; - right: 0px; - margin: 0 auto; - position: fixed; - background: #fff; - border: 3px solid #369; - overflow: auto; - width: 400px; - height: 400px; - z-index: 150; - -webkit-overflow-scrolling: touch; -} - -#GB_frame { - border: 0; - overflow: auto; - width: 100%; - height: 378px; -} - -#GB_caption { - color: #fff; - background: #369; - padding: 2px 0 2px 5px; - margin: 0; - text-align: left; -} -#GB_caption a, #GB_caption a:hover, #GB_caption a:focus { - color: #fff; - text-decoration: none; -} -ol li ol { - list-style-type: lower-alpha; -} - -svg { - overflow: hidden; -} - -table.gridded { - border-collapse: collapse; - margin: 0px; -} -table.gridded.centered { - margin: 0px auto; -} - -table.gridded thead th, table.gridded thead td { - text-align: center; - z-index: 20; - background-color: #eef; - border: 1px solid #333; - font-weight: bold; - border-bottom: 2px solid #333; -} -table.gridded td { - border: 1px solid #333; -} -table.gridded tbody th { - z-index: 20; - background-color: #eef; - border: 1px solid #333; - font-weight: bold; - border-right: 2px solid #333; -} -span.boxed { - border: 1px solid #000; - padding: 2px 5px; -} -a.attach { - background: url(tinymce4/plugins/attach/ed_attach.gif) center left no-repeat; - padding-left: 20px; -} -a[target=_blank]::after { - content: ""; - width:16px; - height:1em; - display: inline-block; - background: url(img/extlink.png) center right no-repeat; -} -.mce-content-body a[target=_blank]:after { - display: none; -} -.mce-content-body span.AMedit {border: 1px solid #ff0000;} -div.forumgrp img { - max-width: 90%; - height: auto; -} -div.multisel { - display: inline-block; -} -div.multiselitem { - background-color: #eee; - margin-bottom: 2px; -} -.videoembedbtn { - color: #999; - cursor: pointer; -} -.ind1 { - margin-left: .75em; -} -.ind2 { - margin-left: 1.5em; -} -.ind3 { - margin-left: 2.25em; -} -.ind4 { - margin-left: 3em; -} -.delx { - position: absolute; - right: 0px; - width: 16px; - text-align: center; - top: 0px; - cursor: pointer; -} -.delx a:hover, .delx a, .delx a:focus { - font-family: sans-serif; - color: #6d6d6d; - text-decoration: none; -} - -pre { - font-size: medium; -} - -.noselect { - -webkit-touch-callout: none; /* iOS Safari */ - -webkit-user-select: none; /* Chrome/Safari/Opera */ - -khtml-user-select: none; /* Konqueror */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; /* Non-prefixed version, currently - not supported by any browser */ -} - -.fluid-width-video-wrapper{width:100%;position:relative;padding:0;} -.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;} -.video-wrapper-wrapper{width:100%;padding:0;} - -.vidmute { background: url(img/vidicons.png) no-repeat 0px 0px; width:24px; height:20px; display: inline-block;} -.vidmute:hover { background: url(img/vidicons.png) no-repeat -24px 0px; width:24px; height:20px; display: inline-block;} -.vidmuteI { background: url(img/vidicons.png) no-repeat -48px 0px; width:24px; height:20px; display: inline-block;} -.vidvol { background: url(img/vidicons.png) no-repeat 0px -24px; width:24px; height:20px; display: inline-block;} -.vidvol:hover { background: url(img/vidicons.png) no-repeat -24px -24px; width:24px; height:20px; display: inline-block;} -.vidvolI { background: url(img/vidicons.png) no-repeat -48px -24px; width:24px; height:20px; display: inline-block;} -.vidpause { background: url(img/vidicons.png) no-repeat 0px -48px; width:24px; height:20px; display: inline-block;} -.vidpause:hover { background: url(img/vidicons.png) no-repeat -24px -48px; width:24px; height:20px; display: inline-block;} -.vidpauseI { background: url(img/vidicons.png) no-repeat -48px -48px; width:24px; height:20px; display: inline-block;} -.vidrew { background: url(img/vidicons.png) no-repeat 0px -72px; width:24px; height:20px; display: inline-block;} -.vidrew:hover { background: url(img/vidicons.png) no-repeat -24px -72px; width:24px; height:20px; display: inline-block;} -.vidrewI { background: url(img/vidicons.png) no-repeat -48px -72px; width:24px; height:20px; display: inline-block;} -.vidff { background: url(img/vidicons.png) no-repeat 0px -96px; width:24px; height:20px; display: inline-block;} -.vidff:hover { background: url(img/vidicons.png) no-repeat -24px -96px; width:24px; height:20px; display: inline-block;} -.vidffI { background: url(img/vidicons.png) no-repeat -48px -96px; width:24px; height:20px; display: inline-block;} -.vidplay { background: url(img/vidicons.png) no-repeat 0px -120px; width:24px; height:20px; display: inline-block;} -.vidplay:hover { background: url(img/vidicons.png) no-repeat -24px -120px; width:24px; height:20px; display: inline-block;} -.vidplayI { background: url(img/vidicons.png) no-repeat -48px -120px; width:24px; height:20px; display: inline-block;} -.vidtracksA { background: url(img/vidicons.png) no-repeat 0px -144px; width:24px; height:20px; margin-right: 5px; display: inline-block;} -.vidtracksA:hover { background: url(img/vidicons.png) no-repeat -24px -144px; width:24px; height:20px; margin-right: 5px; display: inline-block;} -.vidtracks { background: url(img/vidicons.png) no-repeat 0px -168px; width:24px; height:20px; margin-right: 5px; display: inline-block;} -.vidtracks:hover { background: url(img/vidicons.png) no-repeat -24px -168px; width:24px; height:20px; margin-right: 5px; display: inline-block;} -.vidtracksI { background: url(img/vidicons.png) no-repeat -48px -144px; width:24px; height:20px; margin-right: 5px; display: inline-block;} - -.playlistbar { background-color: #ccc; padding: 3px;} -.playlistbar > * {vertical-align: top;} -.playlistwrap { border: 1px solid #ccc; padding: 10px; position:relative;} -.playlistbar, .playlistwrap {margin-left: 0px;} - -.clearfix:before, -.clearfix:after { - content: " "; - display: table; -} -.clearfix:after { - clear: both; -} -.clearfix { - *zoom: 1; -} - -.greystrike { - text-decoration: line-through; - opacity: .6; -} -.greystrike.a { - -} -.altContentOff { - display:none; -} -.ccvid { - position: relative; -} -.ccvid:after { - display: block; - content:""; - width: 20px; - height: 20px; - position: absolute; - top: 0; - left: 0; - background: transparent url("img/cc.png") no-repeat right bottom; -} - -.circoverlay { - width: 9px; - position: absolute; - left: 0; - bottom: 0; -} - -/*dropdown CSS from bootstrap */ -.dropup, -.dropdown { - position: relative; -} -.dropdown.floatright { - padding-left: 15px; -} -.dropdown-toggle { - cursor: pointer; -} -.dropdown-toggle:focus { - /*outline: 0;*/ -} -a.dropdown-toggle:hover { - text-decoration: none; -} -a.dropdown-toggle.arrow-down:hover { - color: #00f; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a, .dropdown-menu > li > span { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #000; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #000; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - text-decoration: none; - background-color: #ddddff; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - background-color: #036; - color: #fff; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} - -.arrow-down::after { - content: "\25bc"; - padding-left: 0.2em; - font-size:70%; - position:relative; - top:-.2em; - text-decoration: none; -} - -.fw1000 div#headercontent, .fw1000 div#navlistcont,.fw1000 .footerwrapper, .fw1000 .midwrapper { - max-width: 1000px; - margin: auto; -} - -.fw1920 div#headercontent, .fw1920 div#navlistcont,.fw1920 .footerwrapper, .fw1920 .midwrapper { - max-width: 1920px; - margin: auto; -} +html {} + +body { + margin: 10px; + padding: 0px; +} + +div { + margin: 0px; + padding: 0px; +} + +p { + margin: 0; + padding: .5em 0; +} + +br { + line-height: 1em; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + padding: 0; + font-weight: bold; +} + +h1 { + font-size: 1.5em; + margin: .7em 0; +} + +h2, +h3, +h4, +h5, +h6 { + margin: 1em 0; +} + +h2 { + font-size: 1.25em; +} + +h3 { + font-size: 1.1em; +} + +h4 { + font-size: 1.05em; +} + +h5, +h6 { + font-size: 1em; +} + +div.pagetitle h2, +div.pagetitle h1 { + margin: 10px 0px 20px 0px; +} + +div.item { + margin-bottom: 10px; + padding: 5px; + border-radius: 5px; + border-bottom: 1px solid #ccc; +} + +div.signup { + border: 1px solid #000; + margin-bottom: 10px; + margin-top: 10px; + padding: 5px; +} + +div#headerhome, +div#homelinkbox { + padding-top: 8px; +} + +div.itemsum { + margin-left: 45px; + overflow: auto; + padding: 5px 0px; + /*margin-top: -.5em; + margin-bottom: -.5em;*/ +} + +span.iteminfo { + margin-left: 30px; +} + +.info { + color: #4bb6e8; +} + +.noticetext, +a.noticetext, +a.noticetext:link, +a.noticetext:visited { + color: #db0000; +} + +label.error { + color: #db0000; + font-style: italic; + display: block; +} + +input.form+label.error { + float: left; + display: inline; + margin-left: 10px; +} + +input[type=checkbox]+label.error { + float: none; + display: inline; + margin-left: 10px; +} + +div.title { + /*display: inline;*/ + margin-left: 30px; +} + +div.itemhdr { + position: relative; + min-height: 26px; +} + +.itemhdricon { + position: absolute; +} + +.itemhdricon div { + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; +} + +div.itemhdr div.title { + margin-right: 30px; +} + +div.itemhdrdd, +div.itemhdrright { + position: absolute; + right: 0px; + top: 0px; +} + +@media only screen and (min-width: 1005px) { + + /* put dropdown next to item when wide*/ + .notfw .itemhdr .title { + display: inline-block; + } + + .notfw div.itemhdrdd { + display: inline-block; + position: relative; + vertical-align: top; + } +} + +div.block, +div.blockitems div.blockitems div.block { + padding: 5px; + margin-bottom: 10px; + border-radius: 4px 4px 0 0; +} + +div.blockitems, +div.blockitems div.blockitems div.blockitems { + padding: 10px; + margin-top: -10px; + margin-bottom: 10px; +} + +div.block.grouptoggle { + margin-bottom: 0px; + margin-top: 10px +} + +div.block.grouptoggle+div.blockitems { + margin-top: 0px +} + +div.hidden { + display: none; +} + +.showinmobile { + display: none; +} + +div.icon { + float: left; + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; +} + +span.icon { + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; +} + +div.breadcrumb { + border: 1px solid #000; + margin-bottom: 10px; + padding: 5px; + background-color: #ddddff; +} + +div.cp { + min-height: 1%; + padding: 5px; + margin-top: 20px; + border-radius: 4px; +} + +div.cpmid { + min-height: 1%; + padding: 5px; + margin-top: 10px; + margin-bottom: 10px; + border-radius: 4px; +} + +.pointer { + cursor: pointer; +} + +ul.nomark { + margin-top: 5px; + list-style-type: none; + margin-left: 15px; + padding-left: 0px; +} + +ul.nomark li { + margin-left: 0px; + padding-left: 0px; +} + +ul.qview { + list-style-type: none; + margin-left: 12px; + padding-left: 0px; + margin-bottom: 6px; +} + +ul.qview ul { + padding-left: 10px; + border-left: 1px dashed #ccc; +} + +ul.qview li { + margin-left: 0px; + padding-left: 0px; + margin-top: 2px; +} + +div#tbl-container { + position: relative; + margin-top: 10px; + margin-bottom: 10px; + width: 99.5%; + height: auto; +} + +table.gb { + border-collapse: collapse; + margin: 0px; + position: relative; +} + +table.gb thead th { + position: relative; + text-align: center; + z-index: 20; + background-color: #fff; +} + +td, +th { + margin: 0px; + padding: 2px 5px 2px 5px; +} + +tr { + margin: 0px; + padding: 0px; +} + +td.c, +input.c { + text-align: center; +} + +td.r { + text-align: right; +} + +span.form { + display: block; + width: 200px; + float: left; + margin-bottom: 10px; + text-align: right; + padding-right: 20px; +} + +span.formright { + display: block; + width: 500px; + float: left; + margin-bottom: 10px; + text-align: left; +} + +span.wideformright { + display: block; + float: left; + margin-bottom: 10px; + text-align: left; +} + +input.form { + display: block; + width: 200px; + float: left; + margin-bottom: 10px; +} + +div.submit { + margin-top: 10px; + width: 400px; + text-align: right; +} + +span#leftcontenttoggle { + display: none; + vertical-align: middle; + padding: 0px 5px; +} + +span#leftcontenttoggle:hover { + background-color: #eee; +} + +span#leftcontenttoggle.leftcontentactive { + background-color: #eee; +} + +@media only screen and (max-width: 760px) { + span.form { + width: auto; + float: none; + text-align: left; + margin-bottom: 5px; + padding-right: 0px; + } + + span.formright, + span.wideformright { + width: auto; + float: none; + } + + div.submit { + width: auto; + } + + span.formright input[type="text"], + span.formright input[type="password"] { + max-width: 100%; + } +} + +div.editor { + margin-bottom: 10px; +} + +.fbbox { + background-color: #fff; + border: 1px solid #ccc; + margin: 5px; + padding: 0px 5px; +} + +span.column { + display: block; + width: 200px; + float: left; + padding-right: 20px; +} + +span.left { + float: left; +} + +br.form { + clear: left; +} + +img { + border: 0; +} + +img.mida { + vertical-align: middle; +} + +p img { + max-width: 95%; + height: auto; +} + +div.right { + text-align: right; +} + +span.right { + float: right; +} + +.floatright { + float: right; +} + +.floatleft { + float: left; +} + +span.padright { + float: right; + padding-right: 120px; +} + +.clear { + clear: both; +} + +br.clear { + line-height: 0px; + height: 0px; +} + +span.hdr1 { + font-size: 120%; + font-weight: bold; +} + +.small { + font-size: 70%; +} + +#leftcontent { + position: absolute; + left: 0px; + width: 170px; + padding: 5px; + margin-top: 10px; + border-radius: 5px; +} + +.leftnavp a { + display: inline-block; + margin-left: 6px; + text-indent: -6px; + padding-top: 5px; +} + +.leftnavp a:first-of-type { + padding-top: 2px; +} + +#centercontent { + margin-left: 180px; + padding-left: 10px; + margin-top: 10px; +} + +.midwrapper { + position: relative; +} + +.red { + color: red; +} + +table.cal { + border-collapse: collapse; + width: 100%; +} + +table.cal thead th { + text-align: center; + background-color: #ddf; + border: 1px solid #000; +} + +table.cal td { + border: 1px solid #000; + width: 14%; + height: 2.5em; + vertical-align: top; +} + +.day { + font-size: 80%; + background-color: #ddf; +} + +.today { + background-color: #fdd; +} + +.caldatebar { + background-color: #ddf; +} + +div.center { + text-align: center; +} + +span.calitem { + padding: 0 4px; + background-color: #0ff; + margin: 1px; +} + +table.cal span.calitem { + display: inline-block; +} + +/* +div.td { + width: 100%; + height: 100%; + overflow: hidden; +} +*/ +img.faded { + filter: alpha(opacity: 30); + KHTMLOpacity: .3; + MozOpacity: .3; + opacity: .3; +} + +.grey { + color: #999; +} + +.itemgrey { + opacity: .5; +} + +div.ddmenu { + position: absolute; + right: 10px; + visibility: hidden; + margin: 0px; + z-index: 100; + padding: 5px; + background: #eeffee; +} + +.nowrap { + white-space: nowrap; +} + +.dpTable { + font-size: 90%; + text-align: center; + color: #505050; + background-color: #ece9d8; + border: 1px solid #AAAAAA; +} + +.dpTD { + border: 1px solid #ece9d8; +} + +.dpDayHighlightTD { + background-color: #CCCCCC; + border: 1px solid #AAAAAA; +} + +.dpTDHover { + background-color: #aca998; + border: 1px solid #888888; + cursor: pointer; + color: red; +} + +.dpDayTD { + background-color: #CCCCCC; + border: 1px solid #AAAAAA; + color: white; +} + +.dpTitleText { + font-weight: bold; +} + +.dpDayHighlight { + color: #4060ff; + font-weight: bold; +} + +.dpButton, +.dpTodayButton { + font-size: 90%; + color: gray; + background: #d8e8ff; + font-weight: bold; + padding: 0px; +} + +/*div.inactivewrapper, div.activewrapper { + margin: 0px; + padding: 0px; +}*/ +div.blockwrapper { + margin: 0; + padding: 0; +} + +div.tips { + border: 1px solid #91d5d5; + border-radius: 8px; + background-color: #cff; + position: absolute; + padding: 3px 6px; + z-index: 100; +} + +/* + need to resolve tips below first +div.tips:after, div.tips:before { + top: 100%; + left: 15px; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} +div.tips.tipsright:after, div.tips.tipsright:before { + left: auto; + right: 15px; +} + +div.tips:after { + border-color: rgba(204, 255, 255, 0); + border-top-color: #cff; + border-width: 6px; + margin-left: -6px; +} +div.tips:before { + border-color: rgba(145, 213, 213, 0); + border-top-color: #91d5d5; + border-width: 7px; + margin-left: -7px; +} +*/ +#headerlogo { + position: absolute; + right: 0px; + top: 7px; + cursor: pointer; +} + +a:hover:focus { + outline: none; +} + +a:link:focus { + text-decoration: underline; +} + +ul.tablist { + padding: 0; + margin: 0; + margin-bottom: -1px; +} + +ul.tablist li { + display: inline-block; + border: 1px solid #ccc; + background-color: #eee; + margin-right: 2px; +} + +ul.tablist li a { + display: inline-block; + padding: 0.2em 1em; + text-decoration: none; + color: #000; +} + +ul.tablist li.active { + border-bottom: 1px solid #fff; + background-color: #fff; +} + +div.tabpanel { + border: 1px solid #ccc; + background-color: #fff; + margin: 0px; + padding: 5px 10px; +} + +ul#navlist { + clear: both; + padding: 0px; + margin: 0px; + list-style-type: none; + float: left; + width: 100%; + color: #fff; + background-color: #036; +} + +ul#navlist li { + display: inline; +} + +ul#navlist li a { + float: left; + /*width: 5em;*/ + color: #fff; + background-color: #036; + padding: 0.2em 1em; + text-decoration: none; + border-right: 1px solid #fff; +} + +ul#navlist li a:hover, +ul#navlist li a:focus { + background-color: #369; + color: #fff; +} + +div.additembox { + margin-bottom: 2px; +} + +div.additembox span { + font-size: 85%; + background-color: #ccc; + padding: 0 10px; +} + +.newnote { + color: #f00; +} + +div#leftcolumn { + float: left; + width: 25%; + min-width: 200px; +} + +div#rightcolumn { + float: right; + width: 74%; + min-width: 250px; +} + +@media (max-width:805px) { + + div#leftcolumn, + div#rightcolumn { + float: none; + width: auto; + } +} + +ul.courselist { + margin: 0px; + padding-left: 0px; +} + +ul.courselist li { + list-style-type: none; +} + +ul.courselist ul { + margin-left: 2px; + padding-left: 5px; +} + +li.coursegroup ul { + border-left: 1px dashed #ccc; +} + +ul.courselist>li { + border-bottom: 1px solid #999; + padding: 3px 0px 2px; +} + +ul.courselist>li:last-child { + border: 0; +} + +div>ul.courselist { + margin-bottom: 15px; +} + +ul.courselist>li>a { + display: inline-block; + margin-right: 20px; + padding-left: 5px; + text-indent: -5px; +} + +ul.courselist li { + position: relative; +} + +div.coursedd { + position: absolute; + right: 0px; + top: 2px; +} + +div.block h3, +div.block h2 { + margin: 2px; +} + +div#viewbuttoncont { + float: right; + background: #fff; +} + +div#viewbuttoncont a { + color: #fff; + display: inline-block; + padding: 3px 5px; + margin-left: 2px; +} + +div#viewbuttoncont a:hover, +div#viewbuttoncont a:focus { + text-decoration: none; +} + +div#viewbuttoncont a.buttonactive { + background-color: #369; + cursor: default; + border-radius: 4px; +} + +div#viewbuttoncont a.buttoninactive { + background-color: #297bbb; + border-radius: 4px; +} + +div#viewbuttoncont a.buttoninactive:hover { + background-color: #036; +} + +a.abutton { + padding: 3px 8px; + display: inline-block; +} + +a.abutton, +a.abutton:hover, +a.abutton:focus { + text-decoration: none; +} + +input[type=submit], +input[type=button], +button, +a.abutton { + color: #000; + background-color: #eee; + border-radius: 4px; + border: 1px solid #ccc; + font: inherit; + height: 1.5em; + line-height: 1.5em; + padding: 0 8px; + margin: 2px 3px; +} + +input[type=submit].secondarybtn, +input[type=button].secondarybtn, +button.secondarybtn { + background-color: #f9f9f9; +} + +input[type=submit]:hover, +button:hover, +input[type=button]:hover, +a.abutton:hover { + background-color: #e3e3ff; +} + +input[type=submit]:focus, +button:focus, +input[type=button]:focus, +a.abutton:focus { + background-color: #e3e3ff; +} + +input[type=submit]:disabled, +input[type=button]:disabled { + color: #666; +} + +input[type=submit]:disabled:hover, +input[type=button]:disabled:hover { + background-color: #eee; +} + +#GB_overlay { + position: fixed; + margin: auto; + top: 0; + left: 0; + z-index: 100; + width: 100%; + height: 100%; + opacity: 0.65; + -moz-opacity: 0.65; + /* older Gecko-based browsers */ + filter: alpha(opacity=65); + /* For IE6&7 */ + background-color: #000; +} + +#GB_window { + top: 10px; + left: 0px; + right: 0px; + margin: 0 auto; + position: fixed; + background: #fff; + border: 3px solid #369; + overflow: auto; + width: 400px; + height: 400px; + z-index: 150; + -webkit-overflow-scrolling: touch; +} + +#GB_frame { + border: 0; + overflow: auto; + width: 100%; + height: 378px; +} + +#GB_caption { + color: #fff; + background: #369; + padding: 2px 0 2px 5px; + margin: 0; + text-align: left; +} + +#GB_caption a, +#GB_caption a:hover, +#GB_caption a:focus { + color: #fff; + text-decoration: none; +} + +ol li ol { + list-style-type: lower-alpha; +} + +svg { + overflow: hidden; +} + +table.gridded { + border-collapse: collapse; + margin: 0px; +} + +table.gridded.centered { + margin: 0px auto; +} + +table.gridded thead th, +table.gridded thead td { + text-align: center; + z-index: 20; + background-color: #eef; + border: 1px solid #333; + font-weight: bold; + border-bottom: 2px solid #333; +} + +table.gridded td { + border: 1px solid #333; +} + +table.gridded tbody th { + z-index: 20; + background-color: #eef; + border: 1px solid #333; + font-weight: bold; + border-right: 2px solid #333; +} + +span.boxed { + border: 1px solid #000; + padding: 2px 5px; +} + +a.attach { + background: url(tinymce4/plugins/attach/ed_attach.gif) center left no-repeat; + padding-left: 20px; +} + +a[target=_blank]::after { + content: ""; + width: 16px; + height: 1em; + display: inline-block; + background: url(img/extlink.png) center right no-repeat; +} + +.mce-content-body a[target=_blank]:after { + display: none; +} + +.mce-content-body span.AMedit { + border: 1px solid #ff0000; +} + +div.forumgrp img { + max-width: 90%; + height: auto; +} + +div.multisel { + display: inline-block; +} + +div.multiselitem { + background-color: #eee; + margin-bottom: 2px; +} + +.videoembedbtn { + color: #999; + cursor: pointer; +} + +.ind1 { + margin-left: .75em; +} + +.ind2 { + margin-left: 1.5em; +} + +.ind3 { + margin-left: 2.25em; +} + +.ind4 { + margin-left: 3em; +} + +.delx { + position: absolute; + right: 0px; + width: 16px; + text-align: center; + top: 0px; + cursor: pointer; +} + +.delx a:hover, +.delx a, +.delx a:focus { + font-family: sans-serif; + color: #6d6d6d; + text-decoration: none; +} + +pre { + font-size: medium; +} + +.noselect { + -webkit-touch-callout: none; + /* iOS Safari */ + -webkit-user-select: none; + /* Chrome/Safari/Opera */ + -khtml-user-select: none; + /* Konqueror */ + -moz-user-select: none; + /* Firefox */ + -ms-user-select: none; + /* Internet Explorer/Edge */ + user-select: none; + /* Non-prefixed version, currently + not supported by any browser */ +} + +.fluid-width-video-wrapper { + width: 100%; + position: relative; + padding: 0; +} + +.fluid-width-video-wrapper iframe, +.fluid-width-video-wrapper object, +.fluid-width-video-wrapper embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.video-wrapper-wrapper { + width: 100%; + padding: 0; +} + +.vidmute { + background: url(img/vidicons.png) no-repeat 0px 0px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidmute:hover { + background: url(img/vidicons.png) no-repeat -24px 0px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidmuteI { + background: url(img/vidicons.png) no-repeat -48px 0px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidvol { + background: url(img/vidicons.png) no-repeat 0px -24px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidvol:hover { + background: url(img/vidicons.png) no-repeat -24px -24px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidvolI { + background: url(img/vidicons.png) no-repeat -48px -24px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidpause { + background: url(img/vidicons.png) no-repeat 0px -48px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidpause:hover { + background: url(img/vidicons.png) no-repeat -24px -48px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidpauseI { + background: url(img/vidicons.png) no-repeat -48px -48px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidrew { + background: url(img/vidicons.png) no-repeat 0px -72px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidrew:hover { + background: url(img/vidicons.png) no-repeat -24px -72px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidrewI { + background: url(img/vidicons.png) no-repeat -48px -72px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidff { + background: url(img/vidicons.png) no-repeat 0px -96px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidff:hover { + background: url(img/vidicons.png) no-repeat -24px -96px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidffI { + background: url(img/vidicons.png) no-repeat -48px -96px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidplay { + background: url(img/vidicons.png) no-repeat 0px -120px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidplay:hover { + background: url(img/vidicons.png) no-repeat -24px -120px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidplayI { + background: url(img/vidicons.png) no-repeat -48px -120px; + width: 24px; + height: 20px; + display: inline-block; +} + +.vidtracksA { + background: url(img/vidicons.png) no-repeat 0px -144px; + width: 24px; + height: 20px; + margin-right: 5px; + display: inline-block; +} + +.vidtracksA:hover { + background: url(img/vidicons.png) no-repeat -24px -144px; + width: 24px; + height: 20px; + margin-right: 5px; + display: inline-block; +} + +.vidtracks { + background: url(img/vidicons.png) no-repeat 0px -168px; + width: 24px; + height: 20px; + margin-right: 5px; + display: inline-block; +} + +.vidtracks:hover { + background: url(img/vidicons.png) no-repeat -24px -168px; + width: 24px; + height: 20px; + margin-right: 5px; + display: inline-block; +} + +.vidtracksI { + background: url(img/vidicons.png) no-repeat -48px -144px; + width: 24px; + height: 20px; + margin-right: 5px; + display: inline-block; +} + +.playlistbar { + background-color: #ccc; + padding: 3px; +} + +.playlistbar>* { + vertical-align: top; +} + +.playlistwrap { + border: 1px solid #ccc; + padding: 10px; + position: relative; +} + +.playlistbar, +.playlistwrap { + margin-left: 0px; +} + +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} + +.clearfix:after { + clear: both; +} + +.clearfix { + *zoom: 1; +} + +.greystrike { + text-decoration: line-through; + opacity: .6; +} + +.greystrike.a {} + +.altContentOff { + display: none; +} + +.ccvid { + position: relative; +} + +.ccvid:after { + display: block; + content: ""; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 0; + background: transparent url("img/cc.png") no-repeat right bottom; +} + +.circoverlay { + width: 9px; + position: absolute; + left: 0; + bottom: 0; +} + +/*dropdown CSS from bootstrap */ +.dropup, +.dropdown { + position: relative; +} + +.dropdown.floatright { + padding-left: 15px; +} + +.dropdown-toggle { + cursor: pointer; +} + +.dropdown-toggle:focus { + /*outline: 0;*/ +} + +a.dropdown-toggle:hover { + text-decoration: none; +} + +a.dropdown-toggle.arrow-down:hover { + color: #00f; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu>li>a, +.dropdown-menu>li>span { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #000; + white-space: nowrap; +} + +.dropdown-menu>li>a:hover, +.dropdown-menu>li>a:focus { + color: #000; + text-decoration: none; + background-color: #f5f5f5; +} + +.dropdown-menu>.active>a, +.dropdown-menu>.active>a:hover, +.dropdown-menu>.active>a:focus { + text-decoration: none; + background-color: #ddddff; +} + +.dropdown-menu>.disabled>a, +.dropdown-menu>.disabled>a:hover, +.dropdown-menu>.disabled>a:focus { + color: #777; +} + +.dropdown-menu>.disabled>a:hover, +.dropdown-menu>.disabled>a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open>.dropdown-menu { + display: block; +} + +.open>a { + outline: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + background-color: #036; + color: #fff; + white-space: nowrap; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right>.dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} + +.arrow-down::after { + content: "\25bc"; + padding-left: 0.2em; + font-size: 70%; + position: relative; + top: -.2em; + text-decoration: none; +} + +.fw1000 div#headercontent, +.fw1000 div#navlistcont, +.fw1000 .footerwrapper, +.fw1000 .midwrapper { + max-width: 1000px; + margin: auto; +} + +.fw1920 div#headercontent, +.fw1920 div#navlistcont, +.fw1920 .footerwrapper, +.fw1920 .midwrapper { + max-width: 1920px; + margin: auto; +} + +#nestable { + display: block; + width: 100%; + max-width: 1200px; +} + +#nestable .topRow { + height: 45px; +} + +#nestable .topRow>div.td:nth-child(1) { + width: 65px; + height: 1px; +} + +#nestable .topRow>div.td:nth-child(2) { + width: 65px; +} + +#nestable .topRow>div.td:nth-child(3) { + min-width: 30%; +} + +#nestable .topRow>div.td:nth-child(5) { + min-width: 15px; +} + +#nestable .topRow>div.td:nth-child(6) { + min-width: 75px; +} + +#nestable .topRow>div.td:nth-child(7) { + min-width: 80px; +} + +#nestable .topRow>div.td:nth-child(8) { + min-width: 30%; +} + +.dd-list .tr { + display: block; +} + +.floatRight { + float: right; +} + +.dd-list .qID { + min-width: 30px; +} + +.dd-list .qInnerText { + margin-top: -5px; + z-index: 1; + min-width: 100px; +} + +.dd-list .qType { + min-width: 65px; +} + +.dd-list .floatRight>div { + margin-left: 2px; + margin-right: 2px; +} + +.dd-list .td { + display: block; + float: left; +} + +#curqtbl { + display: block; +} + +.dd{position:relative;display:block;margin:0;padding:0;max-width:600px;list-style:none;font-size:13px;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-empty,.dd-item,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;height:30px;margin:5px 0;padding:5px 10px;color:#333;text-decoration:none;font-weight:700;border:1px solid #ccc;background:#fafafa;border-radius:3px;box-sizing:border-box}.dd-handle:hover{color:#2ea8e5;background:#fff}.dd-item>button{position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:5px 0;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:0 0;font-size:12px;line-height:1;text-align:center;font-weight:700}.dd-item>button:before{display:block;position:absolute;width:100%;text-align:center;text-indent:0}.dd-item>button.dd-expand:before{content:'+'}.dd-item>button.dd-collapse:before{content:'-'}.dd-expand{display:none}.dd-collapsed .dd-collapse,.dd-collapsed .dd-list{display:none}.dd-collapsed .dd-expand{display:block}.dd-empty,.dd-placeholder{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#e5e5e5;background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;pointer-events:none;z-index:9999}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{box-shadow:2px 4px 6px 0 rgba(0,0,0,.1)}.dd-nochildren .dd-placeholder{display:none} + +/** +* Nestable Extras +*/ +.nestable-lists { + display: block; + clear: both; + padding: 30px 0; + width: 100%; + border: 0; + border-top: 2px solid #ddd; + border-bottom: 2px solid #ddd; +} + +#nestable-menu { + padding: 0; + margin: 20px 0; +} + +#nestable-output, +#nestable2-output { + width: 100%; + height: 7em; + font-size: 0.75em; + line-height: 1.333333em; + font-family: Consolas, monospace; + padding: 5px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +#nestable2 .dd-handle { + color: #fff; + border: 1px solid #999; + background: #bbb; + background: -webkit-linear-gradient(top, #bbb 0%, #999 100%); + background: -moz-linear-gradient(top, #bbb 0%, #999 100%); + background: linear-gradient(top, #bbb 0%, #999 100%); +} + +#nestable2 .dd-handle:hover { + background: #bbb; +} + +#nestable2 .dd-item>button:before { + color: #fff; +} + +@media only screen and (min-width: 700px) { + .dd { + float: left; + width: 48%; + } + + .dd+.dd { + margin-left: 2%; + } +} + +.dd-hover>.dd-handle { + background: #2ea8e5 !important; +} + +/** +* Nestable Draggable Handles +*/ + +.dd3-content { + display: block; + min-height: 30px; + height: fit-content; + margin: 5px 0; + padding: 5px 10px 5px 40px; + color: #333; + text-decoration: none; + font-weight: bold; + border: 1px solid #ccc; + background: #fafafa; + background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%); + background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%); + background: linear-gradient(top, #fafafa 0%, #eee 100%); + -webkit-border-radius: 3px; + border-radius: 3px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.dd3-content:hover { + color: #2ea8e5; + background: #fff; +} + +.dd-dragel>.dd3-item>.dd3-content { + margin: 0; +} + +.dd3-item>button { + margin-left: 30px; +} + +.dd3-handle { + position: absolute; + margin: 0; + left: 0; + top: 0; + cursor: pointer; + width: 30px; + text-indent: 30px; + white-space: nowrap; + overflow: hidden; + border: 1px solid #aaa; + background: #ddd; + background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%); + background: -moz-linear-gradient(top, #ddd 0%, #bbb 100%); + background: linear-gradient(top, #ddd 0%, #bbb 100%); + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.dd3-handle:before { + content: '≡'; + display: block; + position: absolute; + left: 0; + top: 3px; + width: 100%; + text-align: center; + text-indent: 0; + color: #fff; + font-size: 20px; + font-weight: normal; +} + +.dd3-handle:hover { + background: #ddd; +} diff --git a/infoheader.php b/infoheader.php new file mode 100755 index 0000000000..2a4467dcc5 --- /dev/null +++ b/infoheader.php @@ -0,0 +1,13 @@ + + + + + diff --git a/javascript/._jquery.nestable.js b/javascript/._jquery.nestable.js new file mode 100755 index 0000000000000000000000000000000000000000..66d5b91bc1fa45148c022b545395adbad9adc364 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vVyIy) zgy>+H0aR{@riBs6hl-0P=jZAr78K;9>J^qI7A5ADWagzZ7#LU>TAL;%nWZF}CtEvb z6y@ipS{u0;I++<8o9kMd7+C6>7?>OAS{N8P>6)9knmM^S0VSQx(JUI}j)uT!2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6m)5CC;HK^P3=LNYRo6^c@e^Gl18Qx($ki?S6m s^GZ^I-Ol{H#GIT;g`Cv15{0Ck#Jp@^Ul^)uNK>f(hkHeaLGJ&50Qb)`!~g&Q literal 0 HcmV?d00001 diff --git a/javascript/addqsortJIT.js b/javascript/addqsortJIT.js new file mode 100755 index 0000000000..0f1a1dc9ae --- /dev/null +++ b/javascript/addqsortJIT.js @@ -0,0 +1,1526 @@ +//IMathAS: Utility JS for reordering addquestions existing questions +//(c) 2007 IMathAS/WAMAP Project +//Must be predefined: +//beentaken, defpoints +//itemarray: array +// item: array ( questionid, questionsetid, description, type, points, canedit ,withdrawn ) +// group: array (pick n, without (0) or with (1) replacement, array of items) + +//output submitted via AHAH is new assessment itemorder in form: +// item,item,n|w/wo~item~item,item + +//Modified by Ondrej Zjevik 2018 + +$(document).ready(function() { + $(window).on("beforeunload", function() { + if (anyEditorIsDirty()) { + //This message might not ever be displayed + return "There are unsaved changes in a question intro text box. Press Leave Page to discard those changes and continue with the most recent action. Press Stay on Page to return to the page without taking any action."; + } + }); + + //attach handler to Edit/Collapse buttons and all that are created in + // future calls to generateTable() + $(document).on("click", ".text-segment-button", function(e) { + handleClickTextSegmentButton(e); + }); + $(window).on("scroll", function() { + $(".text-segment-button").each(function(index, element) { + followButtonLocation("#" + element.id); + }); + }); +}); + +//find position for collapse button in the middle of the visible editor +// selector is the selector for the button +function followButtonLocation(selector) { + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + //text segment which corresponds to this button + var text_segment_id = "#textseg" + type + i; + + if ($(text_segment_id).hasClass("collapsingsemaphore")) { + //don't start any animations that could complete after the + // current collapsing animation completes (race condition) + return; + } + + //if the editor is collapsed or is a global button, don't do anything + if (i === undefined || type === "global" || + $(text_segment_id).hasClass("collapsed") || + $(text_segment_id).hasClass("collapsedheader")) { + return; + } + var button_div = $(selector).parent(); + var $window = $(window); + var container = button_div.parent(); + var hasfocus = (container.children(".mce-edit-focus").length > 0); + var container_height = container.height(); + //If the editor uses a significant portion of the page, have + // the collapse button stay in view + //if (container_height >= 0.3 * $window.height() ) { + var offset = button_div.position(); + var sidebar_height = button_div.height(); + var foffset = container.offset(); + var padding = 5; + // find the middle of the visible portion of the editor + //var top_limit = Math.max($window.scrollTop(),foffset.top); + //var bottom_limit = Math.min($window.scrollTop() + $window.height(), + // foffset.top + container_height) - sidebar_height; + //position the button_div by its top rather than bottom + var initial_top = button_div.css("top"); + button_div.css("top", initial_top); + button_div.css("bottom", "auto"); + button_div.stop().animate({ + top: Math.max(padding, + //Math.min((bottom_limit + top_limit)/2 - foffset.top, + // container_height-sidebar_height - padding) ) + Math.min($window.scrollTop() + (hasfocus ? 60 : 0) + padding - foffset.top, container_height - sidebar_height - padding)) + }); + //} +} + +//When the Edit/collapse button is clicked, call the appropriate function +// with the appropriate selector. +function handleClickTextSegmentButton(e) { + var i = getIndexForSelector("#" + e.currentTarget.id); + var type = getTypeForSelector("#" + e.currentTarget.id); + + if (type === "global") { + var selector = ".textsegment"; + } else { + var selector = "#textseg" + type + i; + } + + //toggle expand/collapse based on title of button + if ($("#" + e.currentTarget.id).attr("title").match("Collapse")) { + collapseAndStyleTextSegment(selector); + } else { + expandAndStyleTextSegment(selector); + } +} + +function refreshTable() { + tinymce.remove(); + document.getElementById("curqtbl").innerHTML = generateTable(); + + updateqgrpcookie(); + initeditor("selector", "div.textsegment", null, true /*inline*/ , editorSetup); + tinymce.init({ + selector: "h4.textsegment", + inline: true, + menubar: false, + statusbar: false, + branding: false, + plugins: ["charmap"], + toolbar: "charmap saveclose", + setup: editorSetup + }); + activateLastEditorIfBlank(); + $(".dropdown-toggle").dropdown(); + $("#curqtbl input").off('keydown.doblur').on('keydown.doblur', function(e) { + if (e.which == 13) { + e.preventDefault(); + $(this).blur(); + } + }); + $("[id^=pts],[id^=grppts],#defpts").off('blur.pts').on('blur.pts', updatePts); + if (usingASCIIMath) { + rendermathnode(document.getElementById("curqtbl")); + } + + //Set nestable + $('.dd').nestable({ + includeContent: true, + contentNodeName: 'div', + listClass: 'dd-list', + itemClass: 'dd-item dd3-item', + handleClass: 'dd-handle dd3-handle', + contentClass: 'dd3-content' + }); + $('.dd').on('change', function() { + //console.log($('.dd').nestable('serialize')); + if (confirm_textseg_dirty()) { + //Change order of elements in itemarray + itemarray_old = itemarray; + itemarray_old_dic = {}; + itemarray = []; + itemarray_old.forEach(function(element) { + if (Number.isInteger(element[0])) { + itemarray_old_dic[element[0]] = element; + } else { + itemarray_old_dic[element[1].replace(/ /g, ' ').normalize('NFKC')] = element; + } + }) + nestableArrayOrder = $('.dd').nestable('toArray'); + for (i = 0; i < nestableArrayOrder.length; i++) { + item = nestableArrayOrder[i]; + key = Number.isInteger(item.id) ? item.id : item.id.normalize('NFKC'); + itemarray.push(itemarray_old_dic[key]); + } + + submitChanges(); + } + }); + + //Correct parent <-> child relations from justintimeorder + var childID = []; + var originalIDs = []; + var textIDs = {}; + var parentList = []; + //remove child elements from displayed list + function getChildID(element) { + if (!Number.isInteger(element.id)) { + textIDs[element.id] = $("li[data-id='" + element.id + "']")[0]; + } + if (element.children) { + element.children.forEach(function(child) { + childID.push(child.id); + if (!parentList.includes(this.id)) + parentList.push(this.id); + getChildID(child); + }, element) + } + } + justintimeorder.forEach(function(el) { + getChildID(el); + }) + $('.dd').nestable('serialize').forEach(function(el) { + originalIDs.push(el.id) + }) + childID.forEach(function(id) { + $('.dd').nestable('remove', id); + }) + + //replace displayed list's elements from justintimeorder + justintimeorder.forEach(function(el) { + if (originalIDs.includes(el.id) && Number.isInteger(el.id) && parentList.includes(el.id)) { + $('.dd').nestable('replace', el); + } + }) + //replace text items with original item + Object.keys(textIDs).forEach(function(key) { + $("li[data-id='" + key + "']").replaceWith(textIDs[key]); + }) + + //Nestable checkbox correction hack + $(".dd3-content input[type='checkbox']").each(function(i,el){ + //console.log(el); + el.id = "qc"+i; + el.value = i+el.value.substr(el.value.indexOf(":")); + }) + $(".dd3-content input[type='checkbox']").on('change', function() { + event.stopPropagation(); + }) +} + +//Show the editor toolbar on a newly created text segment +function activateLastEditorIfBlank() { + last_editor = tinymce.editors[tinymce.editors.length - 1]; + if (last_editor !== undefined && last_editor.getContent() == "") { + tinyMCE.setActive(last_editor); + last_editor.fire("focus"); + last_editor.selection.setCursorLocation(); + } +} + +//this is called by tinycme during initialization +function editorSetup(editor) { + var i = this.id.match(/[0-9]+$/)[0]; + editor.addButton('saveclose', { + text: "Save All", + title: "Save All", + icon: 'save', + //icon: "shrink2 mce-i-addquestions-ico", + classes: "dim saveclose saveclose" + i, // "mce-dim" and "mce-saveclose0" + //disabled: true, + onclick: function() { + highlightSaveButton(false); + savetextseg(); //Save all text segments + }, + onPostRender: function() { + updateSaveButtonDimming(); + } + }); + editor.on("dirty", function() { + updateSaveButtonDimming(); + }); + editor.on("focus", function() { + var i = this.id.match(/[0-9]+$/)[0]; + var type = getTypeForSelector("#" + this.id); + var max_height = $("#" + this.id).css("max-height"); + //if the editor is collapsed, expand it + if (max_height !== undefined && max_height !== "none") { + expandAndStyleTextSegment("#textseg" + type + i); + } + }); + $(".textsegment").on("mouseleave focusout", function(e) { + highlightSaveButton(true); + }); + $(".textsegment").on("mouseenter click", function(e) { + //if rentering the active editor, un-highlight + if (tinymce.activeEditor && + tinymce.activeEditor.id === e.currentTarget.id) { + highlightSaveButton(false); + } + }); +} + +//Highlight all Save All buttons when the mouse leaves an editor +function highlightSaveButton(leaving) { + if (anyEditorIsDirty()) { + var i = tinymce.activeEditor.id.match(/[0-9]+$/)[0]; + if (leaving) { + $("div.mce-saveclose" + i).css("transition", "background-color 0s") + .addClass("highlightbackground"); + } else { + $("div.mce-saveclose" + i).css("transition", "background-color 1s ease-out") + .removeClass("highlightbackground"); + } + } +} + +//If any editor is dirty, undim the Save All button and +// highlight that editor +function updateSaveButtonDimming(dim) { + var save_buttons = $("div.mce-saveclose"); + if (tinyMCE.activeEditor && tinyMCE.activeEditor.isDirty()) { + $("div.mce-saveclose").removeClass("mce-dim"); + //update tinymce data structure in case other editors haven't + // been activated + for (index in tinymce.editors) { + var editor = tinymce.editors[index]; + editor.buttons['saveclose'].classes = + editor.buttons['saveclose'].classes.replace(/dim ?/g, ""); + //could switch save to collapse icon + var editor_id = tinymce.activeEditor.id; + $("#" + editor_id).css("transition", "border 0s") + .removeClass("intro") + .parent().addClass("highlightborder"); + } + var i = getIndexForSelector("#" + tinymce.activeEditor.id); + var type = getTypeForSelector("#" + tinymce.activeEditor.id); + $("#edit-button" + type + i).fadeOut(); + //$("#edit-buttonglobal").fadeOut(); + $("#collapse-buttonglobal").fadeOut(); + } + //TODO if tinyMCE's undo is correctly reflected in isDirty(), we could + // re-dim the Save All button after checking all editors +} + +function expandAndStyleTextSegment(selector) { + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + + $(selector).each(function(index, element) { + expandTextSegment("#" + element.id); + }); + //$("#collapsedtextfade"+i).removeClass("collapsedtextfade"); + + //change the exit/collapse button for the corresponding editor + if (i === undefined || type === "global") { + //expand all + //$("#edit-buttonglobal").attr("title","Collapse All"); + //$("#edit-button-spanglobal").removeClass("icon-pencil") + // .addClass("icon-shrink2"); + $("span.text-segment-icon").removeClass("icon-pencil") + .addClass("icon-shrink2"); + $(".text-segment-button:not(.text-segment-button-global)").attr("title", "Collapse"); + } else { + var editor = getEditorForSelector(selector); + if (editor !== undefined && editor.isDirty()) { + $("#edit-button" + type + i).fadeOut(); + } + $("#edit-button" + type + i).attr("title", "Collapse"); + $("#edit-button-span" + type + i).removeClass("icon-pencil") + .addClass("icon-shrink2"); + } +} + +function collapseAndStyleTextSegment(selector) { + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + + if (i !== undefined) { + //Deactivate the editor + tinymce.editors["textseg" + type + i].fire("focusout"); + } + + collapseTextSegment(selector); + //$("#collapsedtextfade"+i).removeClass("collapsedtextfade"); + + //toggle the button + if (i === undefined || type === "global") { + //collapse all + //$(".text-segment-button").attr("title","Expand and Edit"); + //$("#edit-buttonglobal").attr("title","Expand All"); + //this is sudden but better than letting the button + // float out of the editor (poss: use jQueryUI .removeClass(...,200) ) + $(".text-segment-button:not(.text-segment-button-global)").parent().css({ + top: "", + bottom: "" + }) + $(".text-segment-button:not(.text-segment-button-global)").attr("title", "Expand and Edit"); + + $("span.text-segment-icon").removeClass("icon-shrink2") + .removeClass("icon-enlarge2") + .addClass("icon-pencil"); + //$("#edit-button-spanglobal").removeClass("icon-shrink2") + // .removeClass("icon-pencil") + // .addClass("icon-enlarge2"); + } else { + $("#edit-button" + type + i).attr("title", "Expand and Edit"); + $("#edit-button" + type + i).parent().css({ + top: "", + bottom: "" + }); + $("#edit-button-span" + type + i).removeClass("icon-shrink2") + .addClass("icon-pencil"); + } +} + +//adjust the height/width smoothly (could replace with jquery-ui) +function expandTextSegment(selector) { + var type = getTypeForSelector(selector); + //copy max-height/max-width to height/width temporarily + var max_height = $(selector).css("max-height"); + var max_width = parseInt($(selector).css("max-width")); + + //temporarily override the max-height/max-width from class style + //Note: broswer doesn't reflow yet-- happens during .animate() + $(selector).css("max-height", "none"); + $(selector).css("max-width", "none"); + + //remove wrapping for correct height measurement + $(selector).css("white-space", "normal"); + + //Get the unconstrained height/width of the div + var natural_height = parseInt($(selector).css("height")); + var natural_width = parseInt($(selector).css("width")); + $(selector).css("height", max_height); + $(selector).css("width", max_width); + + //TODO while expanding, also gradually move collapse button to + // middle height and avoid race condition + + //smoothly set the height to the natural height + $(selector).animate({ + height: natural_height, + width: natural_width + }, 200, function() { + + // when complete... + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + + //when animation completes... + // remove temporary width/max-width and other styles + $(selector).css("height", ""); + $(selector).css("width", ""); + $(selector).css("max-width", ""); + $(selector).css("max-height", ""); + + $(selector).removeClass("collapsed" + type); + $(selector).css("white-space", ""); + + //ensure the collapse button is visible + followButtonLocation("#edit-button" + type + i); + + //If a single editor was expanded, activate the editor + //TODO remember whether this was a global expand + // if available, also scroll to keep global button fixed + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + if (i !== undefined && type !== "global") { + $("#textseg" + type + i).focus(); + } + }); +} + +function collapseTextSegment(selector) { + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + var collapsed_height = "1.7em"; //must match .collapsed style + if (i === undefined || type === "global") { + var button = $("#edit-buttonglobal"); + } else { + var button = $("#edit-button" + type + i); + } + var initialdistfromtop = button.offset().top - $(window).scrollTop(); + $(selector).addClass("collapsingsemaphore"); + + //smoothly set the height to the collapsed height + $(selector).animate({ + height: collapsed_height + }, 200, function() { + + //when animation completes, set max-height + $(selector).css("max-height", collapsed_height); + $(selector).css("height", ""); + $(selector).removeClass("collapsingsemaphore") + .addClass("collapsed" + type); + //could this be gradual? + $(window).scrollTop(button.offset().top - initialdistfromtop); + + if (i === undefined || type === "global") { + $(".text-segment-button").parent().css({ + "top": "", + "bottom": "" + }); + $(".text-segment-button").each(function(index, element) { + followButtonLocation("#" + element.id); + }); + } + }); +} + +function getIndexForSelector(selector) { + var match = selector.match(/[0-9]+$/); + if (match) { + var i = match[0]; + } + //return undefined if the selector doesn't end with a digit + return i; +} + +//returns "header" if the selector contains "header" +// can be used to find a corresponding class name +// e.g. textsegesheader3 -> edit-buttonheader3 +function getTypeForSelector(selector) { + if (selector.match("global")) { + var type = "global"; + } else if (selector.match("header")) { + var type = "header"; + } else { + var type = ""; + } + return type; +} + +//translates a selector to the corresponding editor if possible +function getEditorForSelector(selector) { + var i = getIndexForSelector(selector); + var type = getTypeForSelector(selector); + + if (i !== undefined && i.length > 0) { + var editor = tinymce.editors["textseg" + type + i]; + } + //return undefined if the selector didn't end in a digit + return editor; +} + +function anyEditorIsDirty() { + var any_dirty = false; + for (index in tinymce.editors) { + if (tinymce.editors[index].isDirty()) { + any_dirty = true; + break; + } + } + return any_dirty; +} + +function generateMoveSelect2(num) { + var thisistxt = (itemarray[num][0] == "text"); + num++; //adjust indexing + var sel = ""; + return sel; +} + +function generateMoveSelect(num, itemarray) { + num++; //adjust indexing + var sel = ""; + return sel; +} + +function generateShowforSelect(num) { + var n = 0, + i = num; + if (i > 0 && itemarray[i - 1][0] == "text") { //no select unless first in list + return ''; + } + while (i < itemarray.length && itemarray[i][0] == "text") { + i++; + } + while (i < itemarray.length && itemarray[i][0] != "text") { + if (itemarray[i].length < 5) { //is group + n += itemarray[i][0]; //pick n from group + } else { + n++; + } + i++; + } + if (!(5 in itemarray[num])) { + itemarray[num][5] = 0; + } + if (n == 0) { + return ''; + } else { + out = 'Show for '; + if (itemarray[num][2] > 1) { + out += '"; + } + html += ""; + html += "
Actions
"; + html += ""; + var text_segment_count = 0; + var curqnum = 0; + var curqitemloc = 0; + var badgrppoints = false; + var badthisgrppoints = false; + var grppoints = -1; + for (var i = 0; i < itemcount; i++) { + + curistext = 0; + curisgroup = 0; + if (itemarray[i][0] == "text") { + var curitems = new Array(); + curitems[0] = itemarray[i]; + curistext = 1; + } else if (itemarray[i].length < 5) { //is group + curitems = itemarray[i][2]; + curisgroup = 1; + } else { //not group + var curitems = new Array(); + curitems[0] = itemarray[i]; + } + curqitemloc = i - text_segment_count; + //var ms = generateMoveSelect(i,itemcount); + var ms = generateMoveSelect2(i); + grppoints = -1; + badthisgrppoints = false; + for (var j = 0; j < curitems.length; j++) { + if (alt == 0) { + curclass = 'even'; + } else { + curclass = 'odd'; + } + if (curistext == 1) { + curclass += ' dd-nochildren textsegmentrow skipmathrender'; + } + if (curitems[j][0] != "text") { + html += "
  • Drag
    "; + } else { + html += "
  • Drag
    "; + } + + if (curisgroup) { + if (curitems[0][4] == 9999) { //points + curgrppoints = defpoints; + } else { + curgrppoints = curitems[0][4]; + } + } + if (beentaken) { + if (curisgroup) { + if (j == 0) { + html += "
    Q" + (curqnum + 1) + "
    Group, choosing " + itemarray[i][0]; + if (itemarray[i][1] == 0) { + html += " without"; + } else if (itemarray[i][1] == 1) { + html += " with"; + } + html += " replacement
    "; + //html += ""; + html += "
    " + curgrppoints; + if (itemarray[i][0] > 1) { + html += "ea"; + } + html += "
    "; + html += "
    "; + } + html += "
     Q" + (curqnum + 1) + '-' + (j + 1); + } else if (curistext) { + //html += "Text"+(text_segment_count+1); + html += "
    "; //+ ms; + } else { + html += "
    Q" + (curqnum + 1); + } + html += ""; + html += "
    "; + } else { + html += "
    "; + if (j == 0) { + if (!curisgroup) { + html += "
    "; + } else { + if (itemarray[i][3] == 1) { + html += "\"Collapse\"/"; + } else { + html += "\"Expand\"/"; + } + html += '
    '; + } + //html += ms; + if (curisgroup) { + html += "
    Group "; + html += "Select from group of " + curitems.length; + html += " "; + if (itemarray[i][0] > 1) { + html += "ea"; + } + html += "
    "; + if (itemarray[i][3] == 0) { //collapsed group + if (curitems[0][4] == 9999) { //points + curpt = defpoints; + } else { + curpt = curitems[0][4]; + } + break; + } + html += "
    "; + + } + } + if (curisgroup) { + html += ""; + html += "Ungroup"; //FIX + } + html += "
    "; + } + if (curistext == 1) { + text_segment_count++; + //html += ""; //description + //html += 'Show for '; + if (displaymethod == "Embed") { + html += "
    "; + if (curitems[j][3] == 1) { + var header_contents = curitems[j][4]; + html += "

    " + header_contents + "

    "; + html += "
    "; + } + var contents = curitems[j][1]; + html += "
    " + contents + "
    "; //description + html += "
    "; + html += '
    '; + html += '
    "; + html += "
    " + generateShowforSelect(i) + "
    "; + } + //if (beentaken) { + // html += ""; + //} else { + html += "
    "; + //} + } else { + if (beentaken && curitems[j][6] == 1) { + html += '
    '; + } else { + html += '
    '; + } + html += ""; + html += curitems[j][2] + "
    "; //description + html += "
    '; + } + if ((curitems[j][7] & 2) == 2) { + html += 'Help Resource' + altadd + ''; + } + if ((curitems[j][7] & 8) == 8) { + html += 'Detailed solution' + altadd + ''; + } + html += "
    "; + html += "
    ID: " + curitems[j][1] + "
    "; + if (beentaken) { + html += "
    "; //Preview + } else { + html += "
    "; //Preview + } + html += "
    " + curitems[j][3] + "
    "; //question type + html += "
    "; + if (curitems[j][8][0] > 0) { + if (curitems[j][8].length > 3) { + html += ''; + } + html += curitems[j][8][0]; + if (curitems[j][8].length > 3) { + html += ''; + } + } + html += "
    "; + if (curitems[j][4] == 9999) { //points + curpt = defpoints; + } else { + curpt = curitems[j][4]; + } + if (curisgroup) { + if (grppoints == -1) { + grppoints = curpt; + } else if (curpt != grppoints) { + badgrppoints = true; + //fix it + if (grppoints == defpoints) { + itemarray[i][2][j][4] = 9999; + } else { + itemarray[i][2][j][4] = grppoints; + } + } + } + if (curisgroup) { + html += "
    "; + //} else if (badthisgrppoints) { + // html += ""+curpt+""; //points + } else { + if (beentaken) { + html += "
    " + curpt + "
    "; + } else { + html += "
    "; //points + } + } + + html += '
    '; + /* + html += "Change"; //settings + if (curitems[j][5]==1) { + html += "Edit"; //edit + } else { + html += "Edit"; //edit makelocal + } + if (beentaken) { + html += "Clear Attempts"; //add link + if (curitems[j][6]==1) { + html += "Withdrawn"; + } else { + html += "Withdraw"; + } + } else { + html += "Template"; //add link + html += "Remove"; //add link and checkbox + } + */ + } + html += "
  • "; + ln++; + } + if (curistext == 0) { + pttotal += curpt * (curisgroup ? itemarray[i][0] : 1); + curqnum += curisgroup ? itemarray[i][0] : 1; + } + alt = 1 - alt; + } + if (beentaken) { + html += '
    '; + } else { + html += '
    '; + } + html += '
    '; + if (text_segment_count > 1) { + html += "
    "; + html += "
    "; + } + html += '
    Help
    '; + html += '
    '; + + html += "
    "; + if (badgrppoints) { + submitChanges(); + html += "

    WARNING: All question in a group should be given the same point values.

    "; + } + document.getElementById("pttotal").innerHTML = pttotal; + $("#pttotal").parent().css("display", "inline-block"); + return html; +} + +function addtextsegment() { + if (confirm_textseg_dirty()) { + itemarray.push(["text", "", 1, 0, "", 1]); + refreshTable(); + } +} + +function check_textseg_itemarray() { + var lastwastext = false, + numq, j, firstpageloc = -1; + for (var i = 0; i < itemarray.length; i++) { + if (itemarray[i][0] == "text") { //this is text item + if (lastwastext) { //make sure showN matches + itemarray[i][2] = itemarray[i - 1][2]; + } + if (itemarray[i][3] == 1 && firstpageloc == -1) { + firstpageloc = i; + } + numq = 0; + j = i + 1; + while (j < itemarray.length && itemarray[j][0] != "text") { + numq++; + j++; + } + //make sure isn't bigger than number of q, but is at least 1 + itemarray[i][2] = Math.max(1, Math.min(itemarray[i][2], numq)); + + lastwastext = true; + } else { + lastwastext = false; + } + } + if (firstpageloc > 0) { + alert("If you are using page titles, you need to have a page title at the beginning."); + if (itemarray[0][0] == "text") { + itemarray[0][3] = 1; + itemarray[0][4] = "First Page Title"; + } else { + itemarray.unshift(["text", "", 1, 1, "First Page Title", 1]); + } + } +} + +function confirm_textseg_dirty() { + if (anyEditorIsDirty()) { + var discard_other_changes = confirm(_("There are unsaved changes in a question intro text box. Press OK to discard those changes and continue with the most recent action. Press Cancel to return to the page without taking any action.")); + } else { + var discard_other_changes = true; + } + return discard_other_changes; +} + +function submitChanges() { + var target = "submitnotice"; + check_textseg_itemarray(); + document.getElementById(target).innerHTML = _(' Saving Changes... '); + data = generateOutput(); + var outdata = { + order: data[0], + text_order: JSON.stringify(data[1]), + jitorder: JSON.stringify($('.dd').nestable('serialize')) + }; + if (!beentaken) { + outdata["pts"] = JSON.stringify(data[2]); + outdata["defpts"] = $("#defpts").val() + } + $.ajax({ + type: "POST", + //url: "$imasroot/course/addquestions.php?cid=$cid&aid=$aid", + url: AHAHsaveurl, + data: outdata + }) + .done(function() { + if (!beentaken) { + defpoints = $("#defpts").val(); + } + justintimeorder = $('.dd').nestable('serialize'); + document.getElementById(target).innerHTML = ''; + refreshTable(); + updateSaveButtonDimming(); + //scroll to top if save action puts the curqtbl out of view + if ($(window).scrollTop() > $("#curqtbl").position().top + $("#curqtbl").height()) { + $(window).scrollTop(0); + } + }) + .fail(function(xhr, status, errorThrown) { + document.getElementById(target).innerHTML = " Couldn't save changes:\n" + + status + "\n" + req.statusText + + "\nError: " + errorThrown + itemarray = olditemarray; + refreshTable(); + }) +} + +/* +function submitChanges() { + url = AHAHsaveurl + '&order='+generateOutput(); + var target = "submitnotice"; + document.getElementById(target).innerHTML = ' Saving Changes... '; + if (window.XMLHttpRequest) { + req = new XMLHttpRequest(); + } else if (window.ActiveXObject) { + req = new ActiveXObject("Microsoft.XMLHTTP"); + } + if (typeof req != 'undefined') { + req.onreadystatechange = function() {ahahDone(url, target);}; + req.open("GET", url, true); + req.send(""); + } +} + +function ahahDone(url, target) { + if (req.readyState == 4) { // only if req is "loaded" + if (req.status == 200) { // only if "OK" + if (req.responseText=='OK') { + document.getElementById(target).innerHTML=''; + refreshTable(); + } else { + document.getElementById(target).innerHTML=req.responseText; + itemarray = olditemarray; + } + } else { + document.getElementById(target).innerHTML=" Couldn't save changes:\n"+ req.status + "\n" +req.statusText; + itemarray = olditemarray; + } + } +} +*/ diff --git a/javascript/jquery.nestable.js b/javascript/jquery.nestable.js new file mode 100755 index 0000000000..7fd6315e6c --- /dev/null +++ b/javascript/jquery.nestable.js @@ -0,0 +1,1087 @@ +/*! + * Nestable jQuery Plugin - Copyright (c) 2014 Ramon Smit - https://github.com/RamonSmit/Nestable + */ + +(function($, window, document, undefined) { + var hasTouch = 'ontouchstart' in document; + + /** + * Detect CSS pointer-events property + * events are normally disabled on the dragging element to avoid conflicts + * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js + */ + var hasPointerEvents = (function() { + var el = document.createElement('div'), + docEl = document.documentElement; + if (!('pointerEvents' in el.style)) { + return false; + } + el.style.pointerEvents = 'auto'; + el.style.pointerEvents = 'x'; + docEl.appendChild(el); + var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto'; + docEl.removeChild(el); + return !!supports; + })(); + + var defaults = { + contentCallback: function(item) {return item.content || '' ? item.content : item.id;}, + listNodeName: 'ol', + itemNodeName: 'li', + handleNodeName: 'div', + contentNodeName: 'span', + rootClass: 'dd', + listClass: 'dd-list', + itemClass: 'dd-item', + dragClass: 'dd-dragel', + handleClass: 'dd-handle', + contentClass: 'dd-content', + collapsedClass: 'dd-collapsed', + placeClass: 'dd-placeholder', + noDragClass: 'dd-nodrag', + noChildrenClass: 'dd-nochildren', + emptyClass: 'dd-empty', + expandBtnHTML: '', + collapseBtnHTML: '', + group: 0, + maxDepth: 5, + threshold: 20, + fixedDepth: false, //fixed item's depth + fixed: false, + includeContent: false, + scroll: false, + scrollSensitivity: 1, + scrollSpeed: 5, + scrollTriggers: { + top: 40, + left: 40, + right: -40, + bottom: -40 + }, + effect: { + animation: 'none', + time: 'slow' + }, + callback: function(l, e, p) {}, + onDragStart: function(l, e, p) {}, + beforeDragStop: function(l, e, p) {}, + listRenderer: function(children, options) { + var html = '<' + options.listNodeName + ' class="' + options.listClass + '">'; + html += children; + html += ''; + + return html; + }, + itemRenderer: function(item_attrs, content, children, options, item) { + var item_attrs_string = $.map(item_attrs, function(value, key) { + return ' ' + key + '="' + value + '"'; + }).join(' '); + + var html = '<' + options.itemNodeName + item_attrs_string + '>'; + html += '<' + options.handleNodeName + ' class="' + options.handleClass + '">'; + html += ''; + html += '<' + options.contentNodeName + ' class="' + options.contentClass + '">'; + html += content; + html += ''; + html += children; + html += ''; + + return html; + } + }; + + function Plugin(element, options) { + this.w = $(document); + this.el = $(element); + options = options || defaults; + + if (options.rootClass !== undefined && options.rootClass !== 'dd') { + options.listClass = options.listClass ? options.listClass : options.rootClass + '-list'; + options.itemClass = options.itemClass ? options.itemClass : options.rootClass + '-item'; + options.dragClass = options.dragClass ? options.dragClass : options.rootClass + '-dragel'; + options.handleClass = options.handleClass ? options.handleClass : options.rootClass + '-handle'; + options.collapsedClass = options.collapsedClass ? options.collapsedClass : options.rootClass + '-collapsed'; + options.placeClass = options.placeClass ? options.placeClass : options.rootClass + '-placeholder'; + options.noDragClass = options.noDragClass ? options.noDragClass : options.rootClass + '-nodrag'; + options.noChildrenClass = options.noChildrenClass ? options.noChildrenClass : options.rootClass + '-nochildren'; + options.emptyClass = options.emptyClass ? options.emptyClass : options.rootClass + '-empty'; + } + + this.options = $.extend({}, defaults, options); + + // build HTML from serialized JSON if passed + if (this.options.json !== undefined) { + this._build(); + } + + this.init(); + } + + Plugin.prototype = { + + init: function() { + var list = this; + + list.reset(); + list.el.data('nestable-group', this.options.group); + list.placeEl = $('
    '); + + var items = this.el.find(list.options.itemNodeName); + $.each(items, function(k, el) { + var item = $(el), + parent = item.parent(); + list.setParent(item); + if (parent.hasClass(list.options.collapsedClass)) { + list.collapseItem(parent.parent()); + } + }); + + // Append the .dd-empty div if the list don't have any items on init + if (!items.length) { + this.appendEmptyElement(this.el); + } + + list.el.on('click', 'button', function(e) { + if (list.dragEl) { + return; + } + var target = $(e.currentTarget), + action = target.data('action'), + item = target.parents(list.options.itemNodeName).eq(0); + if (action === 'collapse') { + list.collapseItem(item); + } + if (action === 'expand') { + list.expandItem(item); + } + }); + + var onStartEvent = function(e) { + var handle = $(e.target); + if (!handle.hasClass(list.options.handleClass)) { + if (handle.closest('.' + list.options.noDragClass).length) { + return; + } + handle = handle.closest('.' + list.options.handleClass); + } + if (!handle.length || list.dragEl) { + return; + } + + list.isTouch = /^touch/.test(e.type); + if (list.isTouch && e.touches.length !== 1) { + return; + } + + e.preventDefault(); + list.dragStart(e.touches ? e.touches[0] : e); + }; + + var onMoveEvent = function(e) { + if (list.dragEl) { + e.preventDefault(); + list.dragMove(e.touches ? e.touches[0] : e); + } + }; + + var onEndEvent = function(e) { + if (list.dragEl) { + e.preventDefault(); + list.dragStop(e.touches ? e.changedTouches[0] : e); + } + }; + + if (hasTouch) { + list.el[0].addEventListener('touchstart', onStartEvent, false); + window.addEventListener('touchmove', onMoveEvent, false); + window.addEventListener('touchend', onEndEvent, false); + window.addEventListener('touchcancel', onEndEvent, false); + } + + list.el.on('mousedown', onStartEvent); + list.w.on('mousemove', onMoveEvent); + list.w.on('mouseup', onEndEvent); + + var destroyNestable = function() + { + if (hasTouch) { + list.el[0].removeEventListener('touchstart', onStartEvent, false); + window.removeEventListener('touchmove', onMoveEvent, false); + window.removeEventListener('touchend', onEndEvent, false); + window.removeEventListener('touchcancel', onEndEvent, false); + } + + list.el.off('mousedown', onStartEvent); + list.w.off('mousemove', onMoveEvent); + list.w.off('mouseup', onEndEvent); + + list.el.off('click'); + list.el.unbind('destroy-nestable'); + + list.el.data("nestable", null); + }; + + list.el.bind('destroy-nestable', destroyNestable); + + }, + + destroy: function () + { + this.el.trigger('destroy-nestable'); + }, + + add: function (item) + { + var listClassSelector = '.' + this.options.listClass; + var tree = $(this.el).children(listClassSelector); + + if (item.parent_id !== undefined) { + tree = tree.find('[data-id="' + item.parent_id + '"]'); + delete item.parent_id; + + if (tree.children(listClassSelector).length === 0) { + tree = tree.append(this.options.listRenderer('', this.options)); + } + + tree = tree.find(listClassSelector + ':first'); + this.setParent(tree.parent()); + } + + tree.append(this._buildItem(item, this.options)); + }, + + replace: function (item) + { + var html = this._buildItem(item, this.options); + + this._getItemById(item.id) + .replaceWith(html); + }, + + //removes item and additional elements from list + removeItem: function (item){ + var opts = this.options, + el = this.el; + + // remove item + item = item || this; + item.remove(); + + // remove empty children lists + var emptyListsSelector = '.' + opts.listClass + + ' .' + opts.listClass + ':not(:has(*))'; + $(el).find(emptyListsSelector).remove(); + + // remove buttons if parents do not have children + var buttonsSelector = '[data-action="expand"], [data-action="collapse"]'; + $(el).find(buttonsSelector).each(function() { + var siblings = $(this).siblings('.' + opts.listClass); + if (siblings.length === 0) { + $(this).remove(); + } + }); + }, + + //removes item by itemId and run callback at the end + remove: function (itemId, callback) + { + var opts = this.options; + var list = this; + var item = this._getItemById(itemId); + + //animation style + var animation = opts.effect.animation || 'fade'; + + //animation time + var time = opts.effect.time || 'slow'; + + //add fadeOut effect when removing + if (animation === 'fade'){ + item.fadeOut(time, function(){ + list.removeItem(item); + }); + } + else { + this.removeItem(item); + } + + if (callback) callback(); + }, + + //removes all items from the list and run callback at the end + removeAll: function(callback){ + + var list = this, + opts = this.options, + node = list.el.find(opts.listNodeName).first(), + items = node.children(opts.itemNodeName); + + //animation style + var animation = opts.effect.animation || 'fade'; + + //animation time + var time = opts.effect.time || 'slow'; + + function remove(){ + //Removes each item and its children. + items.each(function() { + list.removeItem($(this)); + }); + //Now we can again show our node element + node.show(); + if (callback) callback(); + } + + //add fadeOut effect when removing + if (animation === 'fade'){ + node.fadeOut(time, remove); + } + else { + remove(); + } + }, + + _getItemById: function(itemId) { + return $(this.el).children('.' + this.options.listClass) + .find('[data-id="' + itemId + '"]'); + }, + + _build: function() { + var json = this.options.json; + + if (typeof json === 'string') { + json = JSON.parse(json); + } + + $(this.el).html(this._buildList(json, this.options)); + }, + + _buildList: function(items, options) { + if (!items) { + return ''; + } + + var children = ''; + var that = this; + + $.each(items, function(index, sub) { + children += that._buildItem(sub, options); + }); + + return options.listRenderer(children, options); + }, + + _buildItem: function(item, options) { + function escapeHtml(text) { + var map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + return text + "".replace(/[&<>"']/g, function(m) { return map[m]; }); + } + + function filterClasses(classes) { + var new_classes = {}; + + for (var k in classes) { + // Remove duplicates + new_classes[classes[k]] = classes[k]; + } + + return new_classes; + } + + function createClassesString(item, options) { + var classes = item.classes || {}; + + if (typeof classes === 'string') { + classes = [classes]; + } + + var item_classes = filterClasses(classes); + item_classes[options.itemClass] = options.itemClass; + + // create class string + return $.map(item_classes, function(val) { + return val; + }).join(' '); + } + + function createDataAttrs(attr) { + attr = $.extend({}, attr); + + delete attr.children; + delete attr.classes; + delete attr.content; + + var data_attrs = {}; + + $.each(attr, function(key, value) { + if (typeof value === 'object') { + value = JSON.stringify(value); + } + + data_attrs["data-" + key] = escapeHtml(value); + }); + + return data_attrs; + } + + var item_attrs = createDataAttrs(item); + item_attrs["class"] = createClassesString(item, options); + + var content = options.contentCallback(item); + var children = this._buildList(item.children, options); + var html = $(options.itemRenderer(item_attrs, content, children, options, item)); + + this.setParent(html); + + return html[0].outerHTML; + }, + + serialize: function() { + var data, list = this, step = function(level) { + var array = [], + items = level.children(list.options.itemNodeName); + items.each(function() { + var li = $(this), + item = $.extend({}, li.data()), + sub = li.children(list.options.listNodeName); + + if (list.options.includeContent) { + var content = li.find('.' + list.options.contentClass).html(); + + if (content) { + item.content = content; + } + } + + if (sub.length) { + item.children = step(sub); + } + array.push(item); + }); + return array; + }; + data = step(list.el.find(list.options.listNodeName).first()); + return data; + }, + + asNestedSet: function() { + var list = this, o = list.options, depth = -1, ret = [], lft = 1; + var items = list.el.find(o.listNodeName).first().children(o.itemNodeName); + + items.each(function () { + lft = traverse(this, depth + 1, lft); + }); + + ret = ret.sort(function(a,b){ return (a.lft - b.lft); }); + return ret; + + function traverse(item, depth, lft) { + var rgt = lft + 1, id, pid; + + if ($(item).children(o.listNodeName).children(o.itemNodeName).length > 0 ) { + depth++; + $(item).children(o.listNodeName).children(o.itemNodeName).each(function () { + rgt = traverse($(this), depth, rgt); + }); + depth--; + } + + id = $(item).attr('data-id'); + if (isInt(id)) { + id = parseInt(id); + } + + pid = $(item).parent(o.listNodeName).parent(o.itemNodeName).attr('data-id') || ''; + if (isInt(pid)) { + pid = parseInt(pid); + } + + if (id) { + ret.push({"id": id, "parent_id": pid, "depth": depth, "lft": lft, "rgt": rgt}); + } + + lft = rgt + 1; + return lft; + } + + function isInt(value) { + return $.isNumeric(value) && Math.floor(value) == value; + } + }, + + returnOptions: function() { + return this.options; + }, + + serialise: function() { + return this.serialize(); + }, + + toHierarchy: function(options) { + + var o = $.extend({}, this.options, options), + ret = []; + + $(this.element).children(o.items).each(function() { + var level = _recursiveItems(this); + ret.push(level); + }); + + return ret; + + function _recursiveItems(item) { + var id = ($(item).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); + if (id) { + var currentItem = { + "id": id[2] + }; + if ($(item).children(o.listType).children(o.items).length > 0) { + currentItem.children = []; + $(item).children(o.listType).children(o.items).each(function() { + var level = _recursiveItems(this); + currentItem.children.push(level); + }); + } + return currentItem; + } + } + }, + + toArray: function() { + + var o = $.extend({}, this.options, this), + sDepth = o.startDepthCount || 0, + ret = [], + left = 2, + list = this, + element = list.el.find(list.options.listNodeName).first(); + + var items = element.children(list.options.itemNodeName); + items.each(function() { + left = _recursiveArray($(this), sDepth + 1, left); + }); + + ret = ret.sort(function(a, b) { + return (a.left - b.left); + }); + + return ret; + + function _recursiveArray(item, depth, left) { + + var right = left + 1, + id, + pid; + + if (item.children(o.options.listNodeName).children(o.options.itemNodeName).length > 0) { + depth++; + item.children(o.options.listNodeName).children(o.options.itemNodeName).each(function() { + right = _recursiveArray($(this), depth, right); + }); + depth--; + } + + id = item.data().id; + + + if (depth === sDepth + 1) { + pid = o.rootID; + } else { + + var parentItem = (item.parent(o.options.listNodeName) + .parent(o.options.itemNodeName) + .data()); + pid = parentItem.id; + + } + + if (id) { + ret.push({ + "id": id, + "parent_id": pid, + "depth": depth, + "left": left, + "right": right + }); + } + + left = right + 1; + return left; + } + + }, + + reset: function() { + this.mouse = { + offsetX: 0, + offsetY: 0, + startX: 0, + startY: 0, + lastX: 0, + lastY: 0, + nowX: 0, + nowY: 0, + distX: 0, + distY: 0, + dirAx: 0, + dirX: 0, + dirY: 0, + lastDirX: 0, + lastDirY: 0, + distAxX: 0, + distAxY: 0 + }; + this.isTouch = false; + this.moving = false; + this.dragEl = null; + this.dragRootEl = null; + this.dragDepth = 0; + this.hasNewRoot = false; + this.pointEl = null; + }, + + expandItem: function(li) { + li.removeClass(this.options.collapsedClass); + }, + + collapseItem: function(li) { + var lists = li.children(this.options.listNodeName); + if (lists.length) { + li.addClass(this.options.collapsedClass); + } + }, + + expandAll: function() { + var list = this; + list.el.find(list.options.itemNodeName).each(function() { + list.expandItem($(this)); + }); + }, + + collapseAll: function() { + var list = this; + list.el.find(list.options.itemNodeName).each(function() { + list.collapseItem($(this)); + }); + }, + + setParent: function(li) { + //Check if li is an element of itemNodeName type and has children + if (li.is(this.options.itemNodeName) && li.children(this.options.listNodeName).length) { + // make sure NOT showing two or more sets data-action buttons + li.children('[data-action]').remove(); + li.prepend($(this.options.expandBtnHTML)); + li.prepend($(this.options.collapseBtnHTML)); + } + }, + + unsetParent: function(li) { + li.removeClass(this.options.collapsedClass); + li.children('[data-action]').remove(); + li.children(this.options.listNodeName).remove(); + }, + + dragStart: function(e) { + var mouse = this.mouse, + target = $(e.target), + dragItem = target.closest(this.options.itemNodeName), + position = { + top : e.pageY, + left : e.pageX + }; + + var continueExecution = this.options.onDragStart.call(this, this.el, dragItem, position); + + if (typeof continueExecution !== 'undefined' && continueExecution === false) { + return; + } + + this.placeEl.css('height', dragItem.height()); + + mouse.offsetX = e.pageX - dragItem.offset().left; + mouse.offsetY = e.pageY - dragItem.offset().top; + mouse.startX = mouse.lastX = e.pageX; + mouse.startY = mouse.lastY = e.pageY; + + this.dragRootEl = this.el; + this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass); + this.dragEl.css('width', dragItem.outerWidth()); + + this.setIndexOfItem(dragItem); + + // fix for zepto.js + //dragItem.after(this.placeEl).detach().appendTo(this.dragEl); + dragItem.after(this.placeEl); + dragItem[0].parentNode.removeChild(dragItem[0]); + dragItem.appendTo(this.dragEl); + + $(document.body).append(this.dragEl); + this.dragEl.css({ + 'left': e.pageX - mouse.offsetX, + 'top': e.pageY - mouse.offsetY + }); + // total depth of dragging item + var i, depth, + items = this.dragEl.find(this.options.itemNodeName); + for (i = 0; i < items.length; i++) { + depth = $(items[i]).parents(this.options.listNodeName).length; + if (depth > this.dragDepth) { + this.dragDepth = depth; + } + } + }, + + //Create sublevel. + // element : element which become parent + // item : something to place into new sublevel + createSubLevel: function(element, item) { + var list = $('<' + this.options.listNodeName + '/>').addClass(this.options.listClass); + if (item) list.append(item); + element.append(list); + this.setParent(element); + return list; + }, + + setIndexOfItem: function(item, index) { + index = index || []; + + index.unshift(item.index()); + + if ($(item[0].parentNode)[0] !== this.dragRootEl[0]) { + this.setIndexOfItem($(item[0].parentNode), index); + } + else { + this.dragEl.data('indexOfItem', index); + } + }, + + restoreItemAtIndex: function(dragElement, indexArray) { + var currentEl = this.el, + lastIndex = indexArray.length - 1; + + //Put drag element at current element position. + function placeElement(currentEl, dragElement) { + if (indexArray[lastIndex] === 0) { + $(currentEl).prepend(dragElement.clone(true)); //using true saves added to element events. + } + else { + $(currentEl.children[indexArray[lastIndex] - 1]).after(dragElement.clone(true)); //using true saves added to element events. + } + } + //Diggin through indexArray to get home for dragElement. + for (var i = 0; i < indexArray.length; i++) { + if (lastIndex === parseInt(i)) { + placeElement(currentEl, dragElement); + return; + } + //element can have no indexes, so we have to use conditional here to avoid errors. + //if element doesn't exist we defenetly need to add new list. + var element = (currentEl[0]) ? currentEl[0] : currentEl; + var nextEl = element.children[indexArray[i]]; + currentEl = (!nextEl) ? this.createSubLevel($(element)) : nextEl; + } + }, + + dragStop: function(e) { + // fix for zepto.js + //this.placeEl.replaceWith(this.dragEl.children(this.options.itemNodeName + ':first').detach()); + var position = { + top : e.pageY, + left : e.pageX + }; + //Get indexArray of item at drag start. + var srcIndex = this.dragEl.data('indexOfItem'); + + var el = this.dragEl.children(this.options.itemNodeName).first(); + + el[0].parentNode.removeChild(el[0]); + + this.dragEl.remove(); //Remove dragEl, cause it can affect on indexing in html collection. + + //Before drag stop callback + var continueExecution = this.options.beforeDragStop.call(this, this.el, el, this.placeEl.parent()); + if (typeof continueExecution !== 'undefined' && continueExecution === false) { + var parent = this.placeEl.parent(); + this.placeEl.remove(); + if (!parent.children().length) { + this.unsetParent(parent.parent()); + } + this.restoreItemAtIndex(el, srcIndex); + this.reset(); + return; + } + + this.placeEl.replaceWith(el); + + if (this.hasNewRoot) { + if (this.options.fixed === true) { + this.restoreItemAtIndex(el, srcIndex); + } + else { + this.el.trigger('lostItem'); + } + this.dragRootEl.trigger('gainedItem'); + } + else { + this.dragRootEl.trigger('change'); + } + + this.options.callback.call(this, this.dragRootEl, el, position); + + this.reset(); + }, + + dragMove: function(e) { + var list, parent, prev, next, depth, + opt = this.options, + mouse = this.mouse; + + this.dragEl.css({ + 'left': e.pageX - mouse.offsetX, + 'top': e.pageY - mouse.offsetY + }); + + // mouse position last events + mouse.lastX = mouse.nowX; + mouse.lastY = mouse.nowY; + // mouse position this events + mouse.nowX = e.pageX; + mouse.nowY = e.pageY; + // distance mouse moved between events + mouse.distX = mouse.nowX - mouse.lastX; + mouse.distY = mouse.nowY - mouse.lastY; + // direction mouse was moving + mouse.lastDirX = mouse.dirX; + mouse.lastDirY = mouse.dirY; + // direction mouse is now moving (on both axis) + mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1; + mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1; + // axis mouse is now moving on + var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0; + + // do nothing on first move + if (!mouse.moving) { + mouse.dirAx = newAx; + mouse.moving = true; + return; + } + + // do scrolling if enable + if (opt.scroll) { + if (typeof window.jQuery.fn.scrollParent !== 'undefined') { + var scrolled = false; + var scrollParent = this.el.scrollParent()[0]; + if (scrollParent !== document && scrollParent.tagName !== 'HTML') { + if ((opt.scrollTriggers.bottom + scrollParent.offsetHeight) - e.pageY < opt.scrollSensitivity) + scrollParent.scrollTop = scrolled = scrollParent.scrollTop + opt.scrollSpeed; + else if (e.pageY - opt.scrollTriggers.top < opt.scrollSensitivity) + scrollParent.scrollTop = scrolled = scrollParent.scrollTop - opt.scrollSpeed; + + if ((opt.scrollTriggers.right + scrollParent.offsetWidth) - e.pageX < opt.scrollSensitivity) + scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + opt.scrollSpeed; + else if (e.pageX - opt.scrollTriggers.left < opt.scrollSensitivity) + scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - opt.scrollSpeed; + } else { + if (e.pageY - $(document).scrollTop() < opt.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() - opt.scrollSpeed); + else if ($(window).height() - (e.pageY - $(document).scrollTop()) < opt.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() + opt.scrollSpeed); + + if (e.pageX - $(document).scrollLeft() < opt.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() - opt.scrollSpeed); + else if ($(window).width() - (e.pageX - $(document).scrollLeft()) < opt.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() + opt.scrollSpeed); + } + } else { + console.warn('To use scrolling you need to have scrollParent() function, check documentation for more information'); + } + } + + if (this.scrollTimer) { + clearTimeout(this.scrollTimer); + } + + if (opt.scroll && scrolled) { + this.scrollTimer = setTimeout(function() { + $(window).trigger(e); + }, 10); + } + + // calc distance moved on this axis (and direction) + if (mouse.dirAx !== newAx) { + mouse.distAxX = 0; + mouse.distAxY = 0; + } + else { + mouse.distAxX += Math.abs(mouse.distX); + if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) { + mouse.distAxX = 0; + } + mouse.distAxY += Math.abs(mouse.distY); + if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) { + mouse.distAxY = 0; + } + } + mouse.dirAx = newAx; + + /** + * move horizontal + */ + if (mouse.dirAx && mouse.distAxX >= opt.threshold) { + // reset move distance on x-axis for new phase + mouse.distAxX = 0; + prev = this.placeEl.prev(opt.itemNodeName); + // increase horizontal level if previous sibling exists, is not collapsed, and can have children + if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass) && !prev.hasClass(opt.noChildrenClass)) { + // cannot increase level when item above is collapsed + list = prev.find(opt.listNodeName).last(); + // check if depth limit has reached + depth = this.placeEl.parents(opt.listNodeName).length; + if (depth + this.dragDepth <= opt.maxDepth) { + // create new sub-level if one doesn't exist + if (!list.length) { + this.createSubLevel(prev, this.placeEl); + } + else { + // else append to next level up + list = prev.children(opt.listNodeName).last(); + list.append(this.placeEl); + } + } + } + // decrease horizontal level + if (mouse.distX < 0) { + // we can't decrease a level if an item preceeds the current one + next = this.placeEl.next(opt.itemNodeName); + if (!next.length) { + parent = this.placeEl.parent(); + this.placeEl.closest(opt.itemNodeName).after(this.placeEl); + if (!parent.children().length) { + this.unsetParent(parent.parent()); + } + } + } + } + + var isEmpty = false; + + // find list item under cursor + if (!hasPointerEvents) { + this.dragEl[0].style.visibility = 'hidden'; + } + this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop))); + if (!hasPointerEvents) { + this.dragEl[0].style.visibility = 'visible'; + } + if (this.pointEl.hasClass(opt.handleClass)) { + this.pointEl = this.pointEl.closest(opt.itemNodeName); + } + if (this.pointEl.hasClass(opt.emptyClass)) { + isEmpty = true; + } + else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) { + return; + } + + // find parent list of item under cursor + var pointElRoot = this.pointEl.closest('.' + opt.rootClass), + isNewRoot = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id'); + + /** + * move vertical + */ + if (!mouse.dirAx || isNewRoot || isEmpty) { + // check if groups match if dragging over new root + if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) { + return; + } + + // fixed item's depth, use for some list has specific type, eg:'Volume, Section, Chapter ...' + if (this.options.fixedDepth && this.dragDepth + 1 !== this.pointEl.parents(opt.listNodeName).length) { + return; + } + + // check depth limit + depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length; + if (depth > opt.maxDepth) { + return; + } + var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2); + parent = this.placeEl.parent(); + // if empty create new list to replace empty placeholder + if (isEmpty) { + list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass); + list.append(this.placeEl); + this.pointEl.replaceWith(list); + } + else if (before) { + this.pointEl.before(this.placeEl); + } + else { + this.pointEl.after(this.placeEl); + } + if (!parent.children().length) { + this.unsetParent(parent.parent()); + } + if (!this.dragRootEl.find(opt.itemNodeName).length) { + this.appendEmptyElement(this.dragRootEl); + } + // parent root list has changed + this.dragRootEl = pointElRoot; + if (isNewRoot) { + this.hasNewRoot = this.el[0] !== this.dragRootEl[0]; + } + } + }, + + // Append the .dd-empty div to the list so it can be populated and styled + appendEmptyElement: function(element) { + element.append('
    '); + } + }; + + $.fn.nestable = function(params) { + var lists = this, + retval = this, + args = arguments; + + if (!('Nestable' in window)) { + window.Nestable = {}; + Nestable.counter = 0; + } + + lists.each(function() { + var plugin = $(this).data("nestable"); + + if (!plugin) { + Nestable.counter++; + $(this).data("nestable", new Plugin(this, params)); + $(this).data("nestable-id", Nestable.counter); + } + else { + if (typeof params === 'string' && typeof plugin[params] === 'function') { + if (args.length > 1){ + var pluginArgs = []; + for (var i = 1; i < args.length; i++) { + pluginArgs.push(args[i]); + } + retval = plugin[params].apply(plugin, pluginArgs); + } + else { + retval = plugin[params](); + } + } + } + }); + + return retval || lists; + }; + +})(window.jQuery || window.Zepto, window, document); diff --git a/loginpage.php b/loginpage.php new file mode 100755 index 0000000000..ad494b4ed4 --- /dev/null +++ b/loginpage.php @@ -0,0 +1,99 @@ +\n"; + $placeinhead .= ""; + $nologo = true; + require("header.php"); + if (!empty($_SERVER['QUERY_STRING'])) { + $querys = '?'.$_SERVER['QUERY_STRING']; + } else { + $querys = ''; + } + $loginFormAction = $GLOBALS['basesiteurl'] . substr($_SERVER['SCRIPT_NAME'],strlen($imasroot)) . Sanitize::encodeStringForDisplay($querys); + if (!empty($_SESSION['challenge'])) { + $challenge = $_SESSION['challenge']; + } else { + //use of microtime guarantees no challenge used twice + $challenge = base64_encode(microtime() . rand(0,9999)); + $_SESSION['challenge'] = $challenge; + } + $pagetitle = "About Us"; + include("infoheader.php"); + +?> + + + +
    +
    +Unable to establish a session. Check that your browser is set to allow session cookies

    '; + } + } else { + echo "

    Login Error. Try Again

    \n"; + } + } +?> +Login + +
    + + + + +
    :
    :
    +
    + + + + + + + + + +
    +
    +
    +

    is a web based mathematics assessment and course management platform.

    + Computer screens + +

    This system is designed for mathematics, providing delivery of homework, quizzes, tests, practice tests, +and diagnostics with rich mathematical content. Students can receive immediate feedback on algorithmically generated questions with +numerical or algebraic expression answers. +

    + +

    If you already have an account, you can log on using the box to the right.

    +

    If you are a new student to the system, Register as a new student

    +

    If you are an instructor, you can request an account

    + +

    Also available: +

    + +
    +

    is powered by IMathAS © 2006-2013 David Lippman

    +
    + diff --git a/newinstructor.php b/newinstructor.php new file mode 100755 index 0000000000..cc22ecc770 --- /dev/null +++ b/newinstructor.php @@ -0,0 +1,118 @@ +\n"; + $placeinhead .= ''; + $nologo = true; + require("header.php"); + $pagetitle = "Instructor Account Request"; + require("infoheader.php"); + $extrarequired = array('school','phone','agree'); + + if (isset($_POST['firstname'])) { + $error = ''; + if (!isset($_POST['agree'])) { + $error .= "

    You must agree to the Terms and Conditions to set up an account

    "; + } + + $error .= checkNewUserValidation($extrarequired); + + if ($error != '') { + echo $error; + } else { + if (isset($CFG['GEN']['homelayout'])) { + $homelayout = $CFG['GEN']['homelayout']; + } else { + $homelayout = '|0,1,2||0,1'; + } + + if (isset($CFG['GEN']['newpasswords'])) { + require_once("./includes/password.php"); + $md5pw = password_hash($_POST['pw1'], PASSWORD_DEFAULT); + } else { + $md5pw = md5($_POST['pw1']); + } + //DB $query = "INSERT INTO imas_users (SID, password, rights, FirstName, LastName, email, homelayout) "; + //DB $query .= "VALUES ('{$_POST['username']}','$md5pw',0,'{$_POST['firstname']}','{$_POST['lastname']}','{$_POST['email']}','$homelayout');"; + //DB mysql_query($query) or die("Query failed : " . mysql_error()); + //DB $newuserid = mysql_insert_id(); + $query = "INSERT INTO imas_users (SID, password, rights, FirstName, LastName, email, homelayout) "; + $query .= "VALUES (:SID, :password, :rights, :FirstName, :LastName, :email, :homelayout);"; + $stm = $DBH->prepare($query); + $stm->execute(array(':SID'=>$_POST['SID'], ':password'=>$md5pw, ':rights'=>12, ':FirstName'=>$_POST['firstname'], ':LastName'=>$_POST['lastname'], ':email'=>$_POST['email'], ':homelayout'=>$homelayout)); + $newuserid = $DBH->lastInsertId(); + if (isset($CFG['GEN']['enrollonnewinstructor'])) { + $valbits = array(); + foreach ($CFG['GEN']['enrollonnewinstructor'] as $ncid) { + $ncid = intval($ncid); + $valbits[] = "($newuserid,$ncid)"; + } + //DB $query = "INSERT INTO imas_students (userid,courseid) VALUES ".implode(',',$valbits); + //DB mysql_query($query) or die("Query failed : " . mysql_error()); + + $stm = $DBH->query("INSERT INTO imas_students (userid,courseid) VALUES ".implode(',',$valbits)); //known INTs - safe + } + $subject = "New Instructor Account Request"; + $message = "Name: {$_POST['firstname']} {$_POST['lastname']}
    \n"; + $message .= "Email: {$_POST['email']}
    \n"; + $message .= "School: {$_POST['school']}
    \n"; + $message .= "Phone: {$_POST['phone']}
    \n"; + $message .= "Username: {$_POST['SID']}
    \n"; + + require_once("./includes/email.php"); + + send_email($sendfrom, $sendfrom, $subject, $message, array(), array(), 10); + + $now = time(); + //DB $query = "INSERT INTO imas_log (time, log) VALUES ($now, 'New Instructor Request: $newuserid:: School: {$_POST['school']}
    Phone: {$_POST['phone']}
    ')"; + //DB mysql_query($query) or die("Query failed : " . mysql_error()); + $stm = $DBH->prepare("INSERT INTO imas_log (time, log) VALUES (:now, :log)"); + $stm->execute(array(':now'=>$now, ':log'=>"New Instructor Request: $newuserid:: School: {$_POST['school']}
    Phone: {$_POST['phone']}
    ")); + + $reqdata = array('reqmade'=>$now, 'school'=>$_POST['school'], 'phone'=>$_POST['phone']); + $stm = $DBH->prepare("INSERT INTO imas_instr_acct_reqs (userid,status,reqdate,reqdata) VALUES (?,0,?,?)"); + $stm->execute(array($newuserid, $now, json_encode($reqdata))); + + $message = "

    Your new account request has been sent.

    "; + $message .= "

    This request is processed by hand, so please be patient.

    "; + + send_email($_POST['email'], $sendfrom, $subject, $message, array(), array(), 10); + + echo $message; + require("footer.php"); + exit; + + } + } + if (isset($_POST['firstname'])) {$firstname=Sanitize::encodeStringForDisplay($_POST['firstname']);} else {$firstname='';} + if (isset($_POST['lastname'])) {$lasname=Sanitize::encodeStringForDisplay($_POST['lastname']);} else {$lastname='';} + if (isset($_POST['email'])) {$email=Sanitize::encodeStringForDisplay($_POST['email']);} else {$email='';} + if (isset($_POST['phone'])) {$phone=Sanitize::encodeStringForDisplay($_POST['phone']);} else {$phone='';} + if (isset($_POST['school'])) {$school=Sanitize::encodeStringForDisplay($_POST['school']);} else {$school='';} + if (isset($_POST['SID'])) {$username=Sanitize::encodeStringForDisplay($_POST['SID']);} else {$username='';} + + echo "

    New Instructor Account Request

    \n"; + echo "
    \n"; + echo "First Name
    \n"; + echo "Last Name
    \n"; + echo "Email Address
    \n"; + echo "Phone Number
    \n"; + echo "School/College
    \n"; + echo "Requested Username
    \n"; + echo "Requested Password
    \n"; + echo "Retype Password
    \n"; + echo "I have read and agree to the Terms of Use (below)
    \n"; + echo "
    \n"; + echo "
    \n"; + echo "

    Terms of Use

    \n"; + echo "

    This software is made available with no warranty and no guarantees. The "; + echo "server or software might crash or mysteriously lose all your data. Your account or this service may be terminated without warning. "; + echo "No official support is provided.

    \n"; + echo "

    Copyrighted materials should not be posted or used in questions without the permission of the copyright owner. You shall be solely "; + echo "responsible for your own user created content and the consequences of posting or publishing them. This site expressly disclaims any and all liability in "; + echo "connection with user created content.

    "; + showNewUserValidation('newinstrform',$extrarequired); + require("footer.php"); +?> diff --git a/upgrade.txt b/upgrade.txt index 31bc383c6e..90b0a9fb32 100755 --- a/upgrade.txt +++ b/upgrade.txt @@ -1,5 +1,12 @@ Upgrade Notes +**************************** +** JustInTime assignments ** +**************************** +// by Ondrej Zjevik +Database change: + ALTER TABLE `imas_assessments` ADD `justintimeorder` MEDIUMTEXT NULL DEFAULT NULL; + ********************* ** IMathAS 1.8 ** ********************* @@ -7,10 +14,10 @@ Upgrade Notes All database changes are now in upgrade.php. Run that file to apply updates to the database. -SimpleLTI has been deprecated and replaced with BasicLTI. If you have +SimpleLTI has been deprecated and replaced with BasicLTI. If you have $enablesimplelti in your config.php, change it to enablebasiclti. -If you do not have either currently in your config.php and want to allow +If you do not have either currently in your config.php and want to allow imathas to act as a BasicLTI producer, add $enablebasiclti = true to config.php ********************* @@ -20,7 +27,7 @@ imathas to act as a BasicLTI producer, add $enablebasiclti = true to config.php *** Database Changes *** All database changes are now in upgrade.php. Run that file to apply updates -to the database. +to the database. ********************* ** IMathAS 1.6 ** @@ -31,8 +38,8 @@ Added $enablesimplelti Added $mathchaturl *** Loginpage Changes *** -Reference loginpage.php.dist for changes. - +Reference loginpage.php.dist for changes. + *** Database Changes *** ALTER TABLE `imas_msgs` ADD `parent` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' , ADD `baseid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' ; @@ -66,7 +73,7 @@ CREATE TABLE `imas_ltiusers` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `org` VARCHAR( 32 ) NOT NULL , `ltiuserid` VARCHAR( 32 ) NOT NULL , -`userid` INT( 10 ) UNSIGNED NOT NULL +`userid` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; CREATE TABLE `imas_ltiaccess` ( @@ -75,13 +82,13 @@ CREATE TABLE `imas_ltiaccess` ( `userid` INT( 10 ) UNSIGNED NOT NULL , `itemid` INT( 10 ) UNSIGNED NOT NULL , `itemtype` TINYINT( 1 ) UNSIGNED NOT NULL , -`created` INT( 10 ) UNSIGNED NOT NULL +`created` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; CREATE TABLE `imas_ltinonces` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `nonce` TEXT NOT NULL , -`time` INT( 10 ) UNSIGNED NOT NULL +`time` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; ALTER TABLE `imas_assessments` CHANGE `timelimit` `timelimit` INT( 10 ) NOT NULL DEFAULT '0' ; @@ -112,7 +119,7 @@ CREATE TABLE `imas_calitems` ( `date` INT( 10 ) UNSIGNED NOT NULL , `title` VARCHAR( 254 ) NOT NULL , `tag` CHAR( 1 ) NOT NULL , -INDEX ( `courseid` ), INDEX(`date`) +INDEX ( `courseid` ), INDEX(`date`) ) TYPE = innodb COMMENT = 'Calendar Items'; @@ -142,7 +149,7 @@ ALTER TABLE `imas_forums` ADD INDEX ( `postby` ) ; *** Database Changes *** ALTER TABLE `imas_sessions` ADD INDEX ( `time` ) ; -ALTER TABLE `imas_users` ADD INDEX ( `rights` ); +ALTER TABLE `imas_users` ADD INDEX ( `rights` ); ALTER TABLE `imas_grades` CHANGE `score` `score` DECIMAL( 6, 1 ) UNSIGNED NULL DEFAULT '0.0'; @@ -289,7 +296,7 @@ CREATE TABLE `imas_msgs` ( `msgto` INT( 10 ) NOT NULL , `msgfrom` INT( 10 ) NOT NULL , `senddate` INT( 10 ) NOT NULL , -`isread` TINYINT( 1 ) NOT NULL +`isread` TINYINT( 1 ) NOT NULL ) TYPE = innodb COMMENT = 'Internal messages'; ALTER TABLE `imas_students` ADD `section` VARCHAR( 10 ) NULL , @@ -303,9 +310,9 @@ CREATE TABLE `imas_forum_subscriptions` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `forumid` INT( 10 ) UNSIGNED NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL , -INDEX ( `forumid` , `userid` ) +INDEX ( `forumid` , `userid` ) ) TYPE = innodb COMMENT = 'Forum subscriptions'; - + CREATE TABLE `imas_gbscheme` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `courseid` INT( 10 ) UNSIGNED NOT NULL , @@ -323,7 +330,7 @@ CREATE TABLE `imas_gbitems` ( `points` SMALLINT( 4 ) NOT NULL DEFAULT '0', `showdate` INT( 10 ) UNSIGNED NOT NULL , `gbcategory` INT( 10 ) UNSIGNED NOT NULL , -INDEX ( `courseid` , `showdate` ) +INDEX ( `courseid` , `showdate` ) ) TYPE = innodb COMMENT = 'Gradebook offline items'; CREATE TABLE `imas_grades` ( @@ -331,7 +338,7 @@ CREATE TABLE `imas_grades` ( `gbitemid` INT( 10 ) UNSIGNED NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL , `score` DECIMAL( 6, 1 ) UNSIGNED NOT NULL , -INDEX ( `userid` ) +INDEX ( `userid` ) ) TYPE = innodb COMMENT = 'Offline grades'; CREATE TABLE `imas_gbcats` ( @@ -343,7 +350,7 @@ CREATE TABLE `imas_gbcats` ( `chop` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1', `dropn` TINYINT( 2 ) NOT NULL DEFAULT '0', `weight` SMALLINT( 4 ) NOT NULL DEFAULT '-1', -INDEX ( `courseid` ) +INDEX ( `courseid` ) ) TYPE = innodb COMMENT = 'Gradebook Categories'; ALTER TABLE `imas_assessments` ADD `password` VARCHAR( 15 ) NOT NULL ; @@ -366,22 +373,22 @@ UPDATE imas_forums SET settings=2 WHERE settings=0; ALTER TABLE `imas_msgs` ADD INDEX ( `msgto` ); ALTER TABLE `imas_msgs` ADD INDEX ( `isread` ); -ALTER TABLE `imas_exceptions` ADD INDEX ( `assessmentid` ); +ALTER TABLE `imas_exceptions` ADD INDEX ( `assessmentid` ); ALTER TABLE `imas_items` ADD INDEX ( `typeid` ) ; ALTER TABLE `imas_items` ADD INDEX ( `itemtype` ); -ALTER TABLE `imas_assessments` ADD INDEX ( `startdate` ); +ALTER TABLE `imas_assessments` ADD INDEX ( `startdate` ); ALTER TABLE `imas_assessments` ADD INDEX ( `enddate` ) ; ALTER TABLE `imas_forum_posts` ADD INDEX ( `threadid` ) ; ALTER TABLE `imas_forum_views` ADD INDEX ( `threadid` ) ; -ALTER TABLE `imas_assessment_sessions` ADD INDEX ( `assessmentid` ); -ALTER TABLE `imas_assessments` ADD INDEX ( `cntingb` ); -ALTER TABLE `imas_courses` ADD INDEX ( `ownerid` ); +ALTER TABLE `imas_assessment_sessions` ADD INDEX ( `assessmentid` ); +ALTER TABLE `imas_assessments` ADD INDEX ( `cntingb` ); +ALTER TABLE `imas_courses` ADD INDEX ( `ownerid` ); ALTER TABLE `imas_diags` ADD INDEX (`cid`); ALTER TABLE `imas_grades` ADD INDEX ( `gbitemid` ); ALTER TABLE `imas_assessments` ADD `minscore` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD `cploc` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; -ALTER TABLE `imas_gbscheme` ADD INDEX ( `courseid` ) +ALTER TABLE `imas_gbscheme` ADD INDEX ( `courseid` ) ALTER TABLE `imas_assessments` CHANGE `defpoints` `defpoints` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '10', CHANGE `defattempts` `defattempts` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '1'; @@ -417,7 +424,7 @@ while ($row = mysql_fetch_row($result)) { $items = explode(',',$row[1]); foreach ($items as $item) { if (strpos($item,'~')===FALSE) { - $newarray[] = $item; + $newarray[] = $item; } else { $sub = explode('~',$item); $newblock = array(); @@ -435,9 +442,9 @@ while ($row = mysql_fetch_row($result)) { } $newitemorder = addslashes(serialize($newarray)); $query = "UPDATE imas_courses SET itemorder='$newitemorder',blockcnt='$blockcnt' WHERE id='{$row[0]}'"; - mysql_query($query) or die("Query failed : " . mysql_error()); - - + mysql_query($query) or die("Query failed : " . mysql_error()); + + } echo "Done"; @@ -447,7 +454,7 @@ echo "Done"; ** IMathAS 1.0 ** ********************* -Create subdirectory "qimages" in "assessment" directory. Set permissions to +Create subdirectory "qimages" in "assessment" directory. Set permissions to allow server to write to this directory. *** Database Changes *** @@ -459,7 +466,7 @@ CREATE TABLE `imas_qimages` ( `var` VARCHAR( 50 ) NOT NULL , `filename` VARCHAR( 100 ) NOT NULL , `alttext` VARCHAR( 254 ) NOT NULL , -INDEX ( `qsetid` ) +INDEX ( `qsetid` ) ); ALTER TABLE `imas_questionset` ADD `hasimg` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; @@ -473,10 +480,10 @@ CREATE TABLE `imas_instr_files` ( `description` VARCHAR( 254 ) NOT NULL , `filename` VARCHAR( 100 ) NOT NULL , `itemid` INT( 10 ) UNSIGNED NOT NULL , -INDEX ( `itemid` ) +INDEX ( `itemid` ) ) TYPE = innodb; -ALTER TABLE `imas_inlinetext` ADD `fileorder` TEXT NOT NULL ; +ALTER TABLE `imas_inlinetext` ADD `fileorder` TEXT NOT NULL ; ALTER TABLE `imas_courses` ADD `allowunenroll` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0', ADD `copyrights` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; @@ -488,7 +495,7 @@ ADD `copyrights` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; *** Database Changes *** Required changes. -ALTER TABLE `imas_assessment_sessions` +ALTER TABLE `imas_assessment_sessions` ADD `bestseeds` TEXT NOT NULL , ADD `bestattempts` TEXT NOT NULL , ADD `bestscores` TEXT NOT NULL , @@ -521,7 +528,7 @@ CREATE TABLE `imas_diags` ( `aidlist` TEXT NOT NULL , `sel2name` VARCHAR( 254 ) NOT NULL , `sel2list` TEXT NOT NULL , -INDEX ( `ownerid` , `public` ) +INDEX ( `ownerid` , `public` ) ) TYPE = innodb; @@ -537,8 +544,8 @@ None //if you do not have a local install, feel free to use: // $mathimgurl = "http://www.imathas.com/cgi-bin/mimetex.cgi" $mathimgurl = "/mimetex/mimetex.exe"; - - //set to true if you have FreeType library installed + + //set to true if you have FreeType library installed $freetypeinstalled = true; @@ -550,11 +557,11 @@ CourseCreator rights level was removed. Any existing CourseCreators need to hav rights reassigned before upgrading. *** Database Changes *** -Required changes. +Required changes. CREATE TABLE `imas_groups` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`name` VARCHAR( 255 ) NOT NULL +`name` VARCHAR( 255 ) NOT NULL ); ALTER TABLE `imas_users` ADD `groupid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; @@ -574,7 +581,7 @@ Required changes. Add to config.php: //use the Groups features, set to false $allownongrouplibs = false; -//should anyone be allowed to import/export questions and libraries from the +//should anyone be allowed to import/export questions and libraries from the //course page? Intended for easy sharing between systems, but the course page //is cleaner if turned off. $allowcourseimport = false; @@ -585,7 +592,7 @@ $allowcourseimport = false; ********************* *** Database Changes *** -Required changes. +Required changes. ALTER TABLE `imas_sessions` ADD `sessiondata` TEXT NOT NULL ; @@ -599,7 +606,7 @@ Recommended changes (to allow assessments with more than ~50 questions) ALTER TABLE `imas_assessment_sessions` CHANGE `scores` `scores` TEXT NOT NULL; ALTER TABLE `imas_assessment_sessions` CHANGE `questions` `questions` TEXT NOT NULL; -Required changes. +Required changes. ALTER TABLE `imas_library_items` ADD `ownerid` INT( 10 ) UNSIGNED NOT NULL; @@ -628,7 +635,7 @@ No changes required ********************* *** Database Changes *** -Required changes. +Required changes. ALTER TABLE `imas_users` ADD `lastaccess` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_users` ADD INDEX ( `lastaccess` ) ; @@ -674,7 +681,7 @@ Added $sessionpath. No change required if things are working fine already. ******************** *** Database Changes **** -First change is required. New tables are needed if you want to use forums. +First change is required. New tables are needed if you want to use forums. ALTER TABLE `imas_sessions` ADD `tzoffset` INT( 4 ) NOT NULL DEFAULT '0'; @@ -727,5 +734,5 @@ Generalized database name. No changed needed for existing installs. *** Database changes: (required, backwards compatible) *** ALTER TABLE `imas_libraries` ADD `parent` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_questionset` ADD `author` VARCHAR( 254 ) NOT NULL DEFAULT 'unknown' AFTER `ownerid` ; - + *** No changes to config.php *** From ab7768a89135a198582e0b161e0d0e562d82b803 Mon Sep 17 00:00:00 2001 From: Ondrej Zjevik Date: Sat, 20 Oct 2018 16:05:52 -0400 Subject: [PATCH 03/17] Correctiong for text div in Add/Remove Questions --- imascore.css | 4 ++++ javascript/addqsortJIT.js | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/imascore.css b/imascore.css index 70ac38cde6..a1c6dd8535 100755 --- a/imascore.css +++ b/imascore.css @@ -1623,6 +1623,10 @@ a.dropdown-toggle.arrow-down:hover { margin-top: -5px; z-index: 1; min-width: 100px; + +} +.dd-list .collapsed{ + max-width: 400px; } .dd-list .qType { diff --git a/javascript/addqsortJIT.js b/javascript/addqsortJIT.js index 0f1a1dc9ae..0b384518e9 100755 --- a/javascript/addqsortJIT.js +++ b/javascript/addqsortJIT.js @@ -404,6 +404,9 @@ function expandTextSegment(selector) { // middle height and avoid race condition //smoothly set the height to the natural height + $(selector).closest(".dd3-content").animate({ + height: natural_height+60 + },200); $(selector).animate({ height: natural_height, width: natural_width @@ -450,6 +453,9 @@ function collapseTextSegment(selector) { $(selector).addClass("collapsingsemaphore"); //smoothly set the height to the collapsed height + $(selector).closest(".dd3-content").animate({ + height: 30 + },200); $(selector).animate({ height: collapsed_height }, 200, function() { From 4cd496745a7f8113e8573e9134396f549322f77f Mon Sep 17 00:00:00 2001 From: Ondrej Zjevik Date: Wed, 12 Dec 2018 11:01:06 -0500 Subject: [PATCH 04/17] Students have unlimited attempts for questions without any children --- admin/import/webworksets.zip | Bin 0 -> 192010 bytes assessment/mathtest.css | 2 +- assessment/showtest.php | 697 ++++- course/addquestions.php | 6 +- imascore.css | 2 +- javascript/addqsortJIT.js | 32 +- themes/fiu.css | 4721 ++++++++++++++++++++++++++++++++++ 7 files changed, 5434 insertions(+), 26 deletions(-) create mode 100755 admin/import/webworksets.zip create mode 100755 themes/fiu.css diff --git a/admin/import/webworksets.zip b/admin/import/webworksets.zip new file mode 100755 index 0000000000000000000000000000000000000000..2b8a180c3c3c03ac8595fa975142233bf30837b8 GIT binary patch literal 192010 zcmY&tCwrx^zQb7fkif!ArZQHhO+qP{xUu@g9d28?e?{n^1ZN1FV=0NYGkC(aT zl9d1fMFs)_f&@ZqXl7LV8biXA1qO0!gaCs7YjrWwcd@az(6cn5HnY-mxbU)YSQlP8 za#4Ea(N(H!5rs;eVbL7kFN?P{Swa~Rvota>L9&3uf7X;BVI8q z|Kh~Ozwv5+emmG)h3DyZwX=Vs=Qv5|Vjj98ct1V39A`1{h|W_?Pd<|$A>h`d zw!_?3EFU-3JhNn!fp#8Umvj9*x+>-gH#Vahl!Y0$u+#F7_dI*AG^2Vr+;e6}lR9c> z*|p__tg$%XbJGHb`5|2z!Jn}-B&))hJ~=!uW<`}R8*yxx(~gazJ+JPXmwesd=ZPLg zlH#=3rsfpsaOQRf%-l_O%bZzIe$&1?=@zsmxC8FZyWGn5d>8`QF1UFrZ-(oUg}5TY z^~_@L%qcdw*?nb2*Nibghk||t#dhILJOPzDztxE$DWL7gT2$uGto*$ZEW=6Ny8L17 z-M3k8jri7=PAD(LCLf+kuas}rVDIvDhUHGRmp-(i~|j=lo2 zhiU=+qd%2qqu2`cRyLt<-H|!@ad9az1GEoo12$Xx{FMHu3xd0%3XBtU6G95~ z_JGKIauR6iAtf|PLxhn~ZH%ZZJN(ozj07ra3cMV^X-Aj+uB~@1uw1AYK zlX`Z;6?`7gcK|$t?x(Uk;ja3a9j5KjTUaPx$kLw%zW%_Scv&$O%EDrj!N*jzwc8$V zKD<58y3C6 zYj?S}9Ip%(GdHwRSuQ_WZo^sn3+f}8BN-!EBk3V66KiYvQBuUdFhg0MtssLbWYA~W zXFzAPGe26Mtuxl988GNGER0(YTM=6xtxYtf*);SXMNfuJmQC8JZ5;I7{S*32#+DO!J+2ri7UT)CZb_Q8@u#8#3 zZsIcb*mw%O-0gF1K3><>eUH9GS}$pyw#->Zp{mdK(tEGI+~0j`##!+*fEa`;#iHfd zamKyqZ33BwySX?VZ~^)u>kEvD;0xpGtD{np0n^W?C!PqJ3k1T73xs+Dgu}~y1|)xk ztP2DIy7L2j2V`^v(-)}m3cvFMA6L(H&KF3t7sL}N$PS|Puq+34kc?h}+nyJQdIy-> zw?7aB!S~0{*g=%P(RnWoVD7>}p&hV%f&LY(5WUqG;sxl=O(Fw@hT_aNsLMMKkzE7 zRI)mMucrDr+?)dcr-4mHv7N|Q_$_}q6-R>O1%jsa1$itwOb?dE`QOSdBy`=Ns0FP5 z#p_uP1Wjfbd!Nq3&woPvO9Sw@IoAuxly~u7{u}?>bW*BPn#pkqnEy5jW?{Qbhm^0K zZZ5{|zXH81M*y}-c#(ShCH6iOduIjDyvxx40X9PZ1`RafATYAkI+Q}R}SC~TcuT;Ed zV~eQ18XEB#DTME!{SdP0=l^Uqm$ag}`YtR9->rcPS%c>`c3OSDrledid<5jgVO0TWc#aFcu=mVr3&m`>q~Jm?Jd=y5 zCxn$(a-?dmj|e23S8g5X8;4JQSGt(erj&4}(`Bl5O_@W7KjWA%r;m0)@d^pX-$q{E z*3zY`ud6a_xm)XvTMGJK^f`I)T3qf4&fm_GKgMC&xw+cAIM>!WUJoyPzFwSZ((q>| ziKQ+sxxQ~FSJ!cLuA68D=~E26r~65vuh-uj+At-yTT*;ZIafXET|7Uo%-?3)qXuS{ zbkT(h`ZoB@aOmm-FiBt40^cnPn4H*UZaZ+kiBGTj4xejZJZ!FyFA(?n-{*%cKSoYe zjz1aBILnF=4ak{_>C?iYr@mh2$Gb8*&Rrw{VT&4sD9!!ZOxe5IRT*Z4*VLJ~b=wVSJ>KD`WF4Hc!5)URjd^$Zd;sx&{xB%7^ zACYf7s;#G=B&&MynB11I+!`r&H?^**#32a=0ef`Gm=O^}NtYOtFm$P?`Dv)+04;xbj4y0C=k>{uFbQneXd zJA|3o5ARNOA|jCCCKb|4s^|^Z>oNU(Ld$e>pFOl3{7TDcljnqSw)z7?5%7#X>&pyf@ z3{i-bq@dUmc!kn9Xvb#Pah^mAVSL7@Zq;)NGrA2G|ReSgO@}dclybe_e8cO}t z6b*i}R}mQ(J%^kT^6{&Zvr!TCWD8rG^Ao?C+C%rgpTq}(eo~^5neFu^vMwMwG}i_= zQ(Wv6Y+J#$BkKfbp?4#vhlQmFG>GqUMF61Z?&LZbPgT1L1c&M1!@)^Yygj(uG_qQ2 z%Rf?Ja?k>&8Fw9O^p(BCC&QRRDho}&xzfBlv0-UM5Ng^#Gvr94etIjXPZmsUjDnC$ zWg$<~y?PlAO*=9$AmwDFrDihgO6@2OZb6@0{jghFy4*5hgjecANAaM7Jp{+IlM+4o zV=W`PBqqn2Fl(fWF!kF|LD?M5F4$NFSwTBdF_R}EHIPq|9~FtD19ASMnn$MC+mcU^ z=+W+=)YsU#ES!s7xXwxAb5j%!?3&lLn$NYGnA6eQg{X7)WltYDYKL_H{Ca=a)b#OM zg85FanC`ikImsr^=rX@&%Sd9#yRsWj`AzdYVmsWcE)Wdc*u zz!-KGrW>lJA$m2TtC5F2Cx6G3ajbqrJLE)M<3w2N?*v6zvj*5W#F;8#oiFKUnCNDd zG(^o()n9hp8kRZ@BT6&b4=x=ij)yWU|zUq(AGl5DRSM3h1Qh?JPWx z>W{d2+QGLO31+C_)C@1*R^dk5k`#5tg(44MC@+|-!Jt6biFNgbK>^jl} z!mz6Vk{;OLn;Fy-yzF6}>lpW-QE__|q~`vG5jo~Oyg_40qhZDD67-g95!0nfnQ zJ!0MPlbPS${cajYKWjzpz?Cy|1LYTDV-BBXU`qZ=J?A2;=LP@>5 zGQ~?2B@UB{I5=|*(V;!&?7zS&tK)-b+3y0f@dxD4K`95_kooTH0?eV*OS!1?pUY6V zG4}&FRll90WO=&flX|h;&sF5-`X%o>a@4)ljCraGDS9f9!_|{d_3&%z$&2|J&$H<^ zv|uHFv5mOwml`&KJmFvZ0(9h2DX1TU^R7ElC{7WQ96%V4Ri*hWT!+UfwEJ$GIONNC zc{FkkLxoXuygYftC4E+fw)n5pWfM5tsAZ-xeo0Z5@E6TKWVe)J`%4G9e6;ltcEbL1xBlyJ4q&wzvJq{#NSJle<}saXFA>4arV?#+rijV4;#yU^CM4J!=K7= z%&)34A)$p+dLfjUoN31EV8Wi^jF)isn&?er8;8K{3s8uhS4e+`(|t_0Mh)R*X7)6L zk3(E0%|#ob0>QIq3^EADU!XX>yX;&1)H`OVe|vVl5OO0mCPcMEnX0e9Q*ghWxpI-W z_`wkGc^))w8Q4j|ImM{clNnPQ=2vZnnF4~|*ssKtjDzpRkWYQMZSl~xtp@0<>k!+J zAIGWZiRbDUresj)T=?fLbW=+c-^h>9s&B#BIGPMGv$>gO| z7(Xgp9U(V&W5FHsy?Uw?k_TyhR7Cb|<$iW3Rn`dunnlN0QpxTqZ0zcOF;rY`H7vxo zKgsd;6P86B2A2KuQqDqUTA)9Ko7<^n(mb7*Lm43EvH*^xsizj5gNPfrK8BI_jPv>q zkpV344h%FLobTXWGi`lc){L~6_h)6MzCfa~(2mBL+COkM_w9(&W0}!reQbA(8=B74 z&rzY@4DQJl#{D#w>3?8<2?s^iK|?v6ur#qw$GQcm%2_hOv9X$vY#b&1xg3y@X;i_voo za3%n#kxQ{+FXc*wu2K_?E;Q~$4+g)CfCU61A_p)7l}~x+{q=Gj#Xx84$*L&9k zQi(r?Yw^c!?T^ttd-;q~wBdGtAgFsXdlu@NSu_IW19*doW%nx6d*O!^hZ!VSX+9Td zvnOp#7?|v2tF2NeTJW?CKyhUh;v2*B&&Zc+yAo(&BO~pFW=GV}3f$_S&xP-gtC)<& zf7Vw?V?WTMIVQD)pU2iuUaoQCAi&imR0Et1!-q>}V(a7ujE9a@t+tb49v6mjl7!`& zjIYPz*6y8Ca2l{eHN`c5f7VKQ9e}5~wNG&RfTZ!Ev1BQg z@$tZ`2i$9|C~C4A21|IE!rs6x-_;7OLIqrSN;zj%)fesBsv>8_ADXsOKu9N`!s78jbRZ}xzx)+d#qZaD3_eRr=fl`%8R+N}JyRoR<%nDP4UVKzu9>o~ zRqnx>K05OQTcF1opRU4+sDbMZUfHC>{$A1#RRk$>WEK6ho3hxrWFVXzP3G!XxUmrf zSc*?wdOK}?+`PId1CjQLnVZgZ#bE3&y*$WGtXlh!nne}Bp=0!epJWg3-S2l_b@B?L z1GS(KtKZrCfT!tOQixo=85Tke=b6w5dyssiL(u z)O{%S!qAv$DWji1jcVPG9g{sugqIzi8|7|F*N!Qvc$9xKXn<@R!iHMID!VruTOiap zx^5MotHX|x?M5j>~R<))y@5MN99)o=dutoYhZp3oh;=yZ<*{Hz(QSEi&L6#iZ z<80^2`IM`}lwkCkwJ>CgO!wIyHD9p!!ZAbZfI~tX5i2du?Y2dKQ*&n#J~OWRdq`s? z&VUjmey_=hJ(meLClp>~LR)4lJBhx@C9duMu%5IUqVt*F5TwYGfnkCro{ zEr6NipIGGkiUrW&sI6uJzMq=;YveC?%8c}LP{AlvlhXM-cfyOo^cu``8-!Rg32@EF zTJwX01D`rm#fs=K_bcG(=$*J$tF^)vIyS;n>jx{BCr<-j?Q*CUb*G||L5tGqXcl-> zqO-h`x_I4!wnnq-Wo5KMFHLP%egR$-EZX}B^Yj?lIEE%dw=ln02uiwl@Nkl6MWiFf zNrTe&f7L`z7<(UddR){eG2ELcZ4)LewD(oNl`B6e9k~u4)RRXj?*&UfL?=V9Q>rf$ zuJNK;Ini{uh_w(UYfKHFT)o*vS9f_Pg?Fcm9^5mYOM-HR6xz?{V)kF19qrg1<InELxT4N@#d0)y5m;wbfLUt`E~o9c5tC z&*IQOpI2I^Wbdb0JyhN=b@ts~&1G?3Qh(x4v(s`}l=E1`EO1$Ho;a91$Fy%IF}P=5 z@>~?|VDVU9rD8MBV>eG{YPGOQWG*wUXB%FFy8cW`CXLBYo4XT4u8yKhRIjYYr2mu8 z(P{5In!HxoYG+>3QALiTIXK(Ge8qxB+e;&G@AOf{qLY~lIqLKS+;JIHGAkQ=3!bID z()}RWJahk*vd}(%E2007t3(tk>S&10oErI0eOMOfY-|?Kq}hh3(?Q+b!qUtmOd9{V zgdBoLC)0=W{Ck-K2n%QK4Qw`}Z3=q3g=%B$;WQI<<96&kjA$V{^ZeEs(rDBiAG2_b zb(XAEv9-X&e(qOcd3SsYlrkD@PMiHf>0{QG%D<)+O7j5#=D9;lm3~x??7e`OjIQ`I>)eNXPeg zXtO;@ebp~YHLBK7GUH7W%!t)R?Ly83a7Ap_7sW9EjMf}EJZgB*2>pI-|1c4z2BX1& zZAs(-v9LQj!7XA9&7`PD*K0JS)q)gVv`Q}GBiEPQEh+qr{eHt-C%mD3_V64dVK79+ zF~N0xo=mA`c2zv3n-U;^u+4#5C-Jx!33+d_&%`Nty)`=;ofjn9sJ%g ziRU3f^tRAV>c)AwBDIya%&(@xPe(3bHAN)=evq~H-tP#|y(yK1hYt=L2JI%qE#)da z0ccbgY%A&|+R<4o;Wg9BTw~*1@)vHh%hTErpvx+IfIOAU{9;-x&k7;rA#~>H-{!e- z5zbX3_alaSsi2<=X@$j;SiFe2KlvlhCg683Ex`0{fW)L>nQ#0I&gAj%F^yGPW+6Y% ztDw-?Y|{|eLv>Mp~CF@&`=*uF5~)dW9zb6VU%PC4s8`GGJvm7V};^=GG1dVnH+EGPbsJW`~HRe_pIWZT@&~$Z$~$~ z9*ak-?e?HxKHV>xu8pSoTBvc!L3GN?9-<>-S;y%2m(L(brce>~;Fo!oE(ZVh6z1lG zKO}+ztW7B5Xl(SQM2nI!LsS+<_ATq zCbQogna(TCCuY#h`O{pV)Ed|%j{so(tyWO;2a#O?>3~;#12!APz(GX0u1&UMqVw8Q zW?ZSEbp@rdaBinl5O3osKpkErmJJ!63m6}`!U54_#uXl7QAX%P@bJudGO{)T(yvxw z(CNIGEZ&D!faUnA+*&c52mNe*f;eW=l-}Wa-4ad$6$HO*Ogaam4-^je+%m|8eXFu; z!c8DGXY=dQUm4lnvJ3peEEAKEZ(AnOQ8$!Etj=t@){GYX;kEmL2fE?F|7XdSIBjf?O;X1sM1omuv6>Kwivlk z+<0)kSSRhyE<7Q-XM5B?W_fF^1KiCtaVkrvrP|{IcW}0(Vc{S5BTfO6gK$pi$)THt z$C4~~&I6;_2*l+O=!;OBuZ;;&Wm8hS8L`7WE9OL_^TEZ9?vs$?1@3z6mAJlcl$-V?I$yHXT9Q_bh%#GdsgA-IH@Al!g+MpHZ7Fr_?CKd+pF| zoV>&rX|h~gRvEk$hN@5t;TJi3>{s2h=tG#s#UxM!@2pcY5weRd=;wPh#T?65PcW0f z_=oGP#63s_7NGB@?lacit4~rBKtbf!`-c|UI={32QZ36cAtO>Jw7)=2YZ|)@JK~=Q%#NTCO->&@3o6ebx z8+Mt_6Er$5lE}yGLtUHlo&m3R{M7TMIAq#wh7MgSirmqCfcD#HE5jRC?U6NSP1(?B z!JdZn#@+P7OPjDp<8U;Vh2Q8ynm(J0ml^R=EhX*&nsvqIZ;(&#!<@!Nnz@*X?qNI?ZNxC~GIZWU@tjUvS4q<;PS#-&I%B@_NF7{Jo831(_#F}- z&i9X2Yt$I*#~PnD(GRQqOk%4#x7fup5w4{ddJaz`M#bzmVu)zi{s;T!B)dIbaI^_< zFYR!kli;ukTDW(816JJ(d4?xm0@LF%BS~{k*+EsfhI32HTo@k;O=`R!O26J=B0t(U z2nDHhCq)Omc)E)b(y%-O_&8UVW%L z0Yp;>wFt#!A~XT*tNrxEHaQI^e^d(nhZf7SDVBSElYBt;nNd_LYbO{Q>ij9b+^FD( zeHB==>ngE*-ItP6MM*g8MN$)Zx$BArBXR`EuLw;pK@Bd(M?iAxeYanO;BlqS?NQJB z?c#Z0@}7*qIC+z*cts|UR$@)`!Gw7HOG-&nx_+%J>WrC5nXu(i|mPu8M z3VPL(LWN&krVtLGXQgL!>BKZ#>X-&~ZXP_iF^{Y&v9za?i&OR*V`)p>Emt!kAj{@A zX!Br4heiZkbwSsOa`On68fLaKW@y5}jk(M2LS{l`!@-=W$TZ!I+==6Z=VtQZg`P&i zbhVqJny);qaXAL3tROk{R|?JdxA^&25mmrzxXvr7Mn8RyA(C4=tLK)4#?WP*`1osQ zY(t!yXQ#=@FAxT;sI)-P7^cK#qE*Y~wGpl6<#nUhS@~w_^iuv=dwjYrT!Q9`I=#h( z{P(0cCwYdWO+kjE*6!#|;WS4%#kjVAzf~ApHvB@Rd_tUBLV*^vTX$W9s~*)2vdYqK z?QJr(QybZlw-u1+zoF9UYJ1Q=m+;g%8!0s&y+2SAD4_wH{Pr~qYuh$GZQH&Q#z(Xu z4xU+TU*SZLs}lE>r<<5|vlc7UwEaUPeRBs|I0KoAj^~AIcmpSXcQ_Tr*S|W~{Z|#> z`q(Z{qkFGTo|K|6S!9`JO2x~1;FRLRU7UvRJ9)-b5VW?(}I1#ZscvX5WQ!}X0x!e#|)-XLuk6e zrcBs$QXT3qO+^M+2;BRTv+Ny%ZZnw#%FFaWAl~|`Bm~wL%fSn1-e2rZ3ovc}3<6Tz zXy~1b_YW$p$kh#!PHD$0%vz}T8YR-4AESoUxRwVE^Xbyql2p^`2q4bx zsD|6VCKfJnl36RZdeydOUnuGt$7TltbG5`~u3AK7rv+upkrKh&At>_>ayVRzokkIH z1Yl4-H*wXm$z%B#x%h8#Fa#Okl<2bZvK0noZ*%%*$oal~QlHNm7-{JgaS-<5bV__u zg7NDivLFcP)jf3lmsVEl0vnVv1xh8mdOIv8(VFoJNB-#g9{Tqe$VCC_rBCfrh&YV+7Fr?+3$4wm=9(3|#e zo05$f=##MYMV{O{PZfM1v1mE^yV7WJI4B01ycq z5VWz3PR1E!m7OP(>_O8A7qqD>hGyh^MT4YHd2=PfpppC@lFZsQ4IUt6t`=5LUovw~ zF3Ksi=U&a&lS%yT%ie>rKUhm!uCn9Zo-Yf}}|vX8DvZ`-7dT23*+rFlt}bO(QNLAV`vH^Qm2zwtDmi`wH*WV)Q(wMo7D( zQcK%OhWb9%f>U2DCU~s0>@vn8c)*GkOt};G+^kbTsvY{39$l&iqb>!sd6VLbrf1f%W5JFb;mG|dY}|3^(h4o3%68Hk!h&!PhgqLvcFaelGwLPG{kJ~3^IRcNR}7d5-2 z(DvzJ2NaX__q~fI>PV1C>O3=-$G+vtid!zp-Oi{2%(W2R6D(7uVYyeB=_bt1xH2(6e^*YD3V@vGJ%GY)tebDp{ky`J&KP}}NjKHx%#j*lH|)VuYT?$MNci7_xD_aduVis4@K zj$gtZXGxo%NQ)2QOL!=blj2=-QjcRway6R958_$pNsUa`*~pD!D9hxVF00&>2M6GQ zvowi3lWOSGk6eXzb%3FU7xD+W<0QQjvpt1jESCKKiQ%Zb-)dc%vvMNSL)2qni_HU? zPEo$v_WV<((-L%{b5Xsp6<>Q?@~LX0q^T)djlnX#DJb~7E1cB*VP>VMRAFW?)N`qx z@;S=E(&vaRyIe)Gb*0V<&o^M_Plqo+PL^qlTxy`ppe=hqNqW|i=Os8fY}1=>e6U0o z%PVoooY)2E%-Evo2b+m~HE=oBEoxYi`OWUsnS|5q^4Z>KS+(bjw9=;h*0wH1Fz527VHE4`1oRC}0I)SY3IT;1k^*7(SV0yRyc1b_T= zh^?sc*W84Z(8<7b-cGG(*d{-z92n{bZg)n$`oYd(fJMH5)z7SWa;}kFBwA13byv`a zPUu3wkJ$&O2o%+5R4TU?LK-3uBZ_3OGCoeK|@{)Uv_J)aEh^GtrtV`aGva=I4Kb=)oVBLv+vh{zzwZSqB%Nr`v}5InwFJ z*Li1HtXa>1Ehu_|Q9u@f^>NC9=oun~@g}P|ZUZ97jc|l5&9!zr6kSs*4iHt=eas78 zT ztS(4Ql|Jj-&R&uez#gGsj%mw$%qe|b%QVMycTK!gH8N`E6^Tb z1~r^=I%8CyG>=3`$k3bSksOvMHsK6{5Vfw)H$iKo8ka}LGFpf4+{j1CPPE^c>tnxH z#ol5y1?rrEn<;zb2iTURDS3$LD)ED>`!o;dq)ivct#>QgB~R_p}IHZuZ@Q8{J`fltCx;<5203m$69ZH6}##{AYm{Y zXqnTyjx0?-ojXygR-$DY3#5*Y(gtUia$qx>42h6FWe0M7K=Sr>Q%jX{by6Gyg0#LEI75pi3To0wP=^w(BBDUX(5@j1B@BzIFV3W_&|wZ z@ooV5Sd$&cxQXZ*hf=}$u{cw@0lURoQ~oR*+083kr=-kYM_+l>uze#3&{*w*h&|RS zPLvlbNK}s7Sms|`2CdHVQ=v6zl(>jI9ip-2En`(~p-nkB(TCqTfjJ-CgE^nMNXJ~u zinbfKf44YX(=0;BHIsi1hu_LVKkGCYCU&EAHr;y86eY5d4{pL6N|XRYbRAr@psB)C zA~rsQ?6EJt0^bgqQe*nZc;m5Tb4Q8i7s`?~C*_(vjZYW)+`qnYkXF@#jwS2mb`jxMyYG$-YSEE-TuP@*rl+GS)AyY;S!YVi))q#Yn&e83%Pq z!)#>2DKJaYwCR%X1kFxt<9Ko_2U@=uscl;RGr-hi+$OPqFx!(ObW~zdsMnlgYA7f|tfkpB zBf1DhOIpjJXq3=U$_j$?YcK32Og=u7t=2FYO_VE_>Glta8rswhNBxg&(GFa0Y z^u5aOpZk=|x4jZ7w5QWV=easNyYOsZ-AZ5xuG>35ef<&IitiQ?bLA4bdTTuY9hU23$xJ^)2%H$6be#4DdRatYhzGM zlg3VrQK2hTidmx>iQONBG)o@V$T@mMl#2g*F(4kz(0gsU71y}vFc{QcN@yv zcE*j59TL+c+BKJb{OY+&#hep{i64duKLGu*$v`hn>HU!%{=zI+D``B3F!B=@3XF7j zU(CUhG5QrqNUH9Vn1BnYhSvJfNO=6?!!(UEC%CJ!zz`cYL2rPjE0l%?@m7>zx-Kg7 z)rUs@(a??`?Sr6NyY-vz0(`75#h#TP6?*ka&^ZFgi|PXR>F8whYr{9L$pa+`@w+1? zGsm($-+fmBi4jHd*)$00sloG@{aJUktJf~okeZsln8F8bbGu=ESMwacjFvXir6|D> zdCswy!sHQ9hBHTXGj+JC?pH~(YZ*$ZXqB#bDHxJZZpxVXJ5;`Orc`d<0UmZ#7#Hr79QkdaA;($bpc)La z3<*+icIQtxSO|KmU)|o@WxrTt@evS@M^_W0+M9ca5=B1pv`>`_HRkzSlKEPu*32f> zeu|IK*DDvP`hy)L!0}=^!;rj5GXyTJCHi5YZQbQ^-effNCd!#y*z^Yu=&(WnJoneL z2L}7;HREFiF|lqg7o1M^H9Pia29oCTnz#WVcrtSbu}}a3yCPtK8A*y`uI?*wv>wv) zP+Z@Z)SkIBExZuG14Bl^h9JtJ%PWBjZ6=R5>8BZsXH$C4kh!&*qd-R~M!xWPML7m| z!88F}c%}WQu2E6;%1FGbx{Tt4^-f#&ZZ4E#o1b0v91?dTkcrRPEwZH{&pr&Tov&&s z{J_A8nbL078wr|GoE!>i#JOSOP}l+taFRkeAI(+HStL^CDOr`CW3I&)l+OXum&UVX zRa|G~(v4c$maj{g2IBTwQ!s1YS2;_zicKSxdx60TEX~bw+D+N{(p7dj#dG4^uP;5T zFr6r$a`Y6u|BSvjV?@&iRuxiX^u15-ZS6j6_HumVU z$z5>_Se3M2>ppl}J5+QJCB~-31pbDfJ<$-{@Lrx4is2@6C5zeuI6r+$QKXNMqzF-o zL6#4_%q`@XE*LxXs4OHY7?aYnIO&}yj1O1M`fSFKVGEludggZ2Om|jIcQ6JjVsUJAWvM7wm$f4{;24|)Cc?9yOqVAl@{C4OSW#t7W{X_j6yV2=>zU+mu zk$wJwz47&MeS)T79x) z%I*Hgz^=EUfz-UAR6_%Ug`-7@NyW4pPd2QQMvKAOMAHV;X0ccAxZ|)LLp-~xkPC>) z8>8U^{iHPW#EQe2+IIj%uY`geCfDRkYuD!J!y2Sgk;1%iNitsvX=HPWLi#zd^1k8J zanoGOc@7O@0^DUitp=V!Ckc0#gS7s6=h%zT8m1Jsd!xHC>P`2$A1jtLev^ z;r^`g%(tFVtVi-sHlTMnoNg4kPF?>(|G*hA3f+V()ZS)ri@!fZ-g>U@v~SZc+HkBX zevaYV-?m+a6vMpK4hyFP(MKzngo$3hd-g5ZHRa}6{&^hJo2UU~waaZ;T;w2J$hXuv zYXJg&RsTBV9FgmD^31nMQn+G$477fsw>JEe#QCu+cJx#H=6puQ^^ugP1AxqEnaL#b zpb^D?+`)n7gDriWiz`Kvn#W&XT{;4lZCs4VZdEfn&W6^OZE|zX8vFq2SnQ6hk-GKCj#QhpW()3)ybC@9m zx!~Q)7ub=xlOD>Om8E<9@B)Ppk3nj3DfoHP?czhvAy2qf&CsM5uTWiZl)x5MF)iHS z7714|?rl4p{G+JzAk@K@9Pz0@sNlEj#M?q^Mf<0+-y?))C=Q!o(g4k-YtHSDuY;4- zl%Q7)SKJK&ZRH~$MdKY)*4~EVNw1~DSp#$L)Ks8gv*7zbh3GQ!i;2aG6gfi1Iqb&V zM=>%ns$jti7-OX&F2iOFPxn5YKWz+->YqJ*s-I&1UWn@bWhf)Q#4+AU&rSMm|N2qA zEps$rGPz&*dUah|-I=|T{#X&|71IYb$keQxHVJ<+cGbY=LH=R^{n zkUXRF&k!{oE4obdpmXA?wQ;kYF!2U`)h+O`XH;yc-HZZo=@@-3mo56Qz67h9B32AMkm_6ZrT>zklh7wfaFYg8Xj$|9zvnWHmAlZaY~>W*PH zCx|_5#3!m2aM9}Myg9@JBd?K|O)dp7w5)1(3nR;=Tvvvb2lr()N^~C_nx&1kg+G70 zvYMls^0S2{iz}*(h6C23R`y_)tIlxpJc9VJZU#Kzs13&Rt8_3{Bl{72z$J2iJ!% zxxCORJVN8HGEXUVfp#u4=%k$v#YR-NyLvvxU9^USE?#8xYi@`o#xp2y@tp|{&pqQ{ z9i#G?<|70yPb?b5uBz3o=SA1ay0+}M;SnvLarxh`uIc)f(9;>EwFPJ#5VvRc{PKnd z7S%cHO>cW=_V_q7tA-lFG1wI-obHA*ZfLa4XNI9(yMu3pvC6l(Jn_g8*- zySElRl>t~9%Ckih#yjx~C$hqwQHx&Jl=Hrg8A-i@RIuL41svEL&1UoR@&wkSoZ{@a zVSRbVFd6y?rUE(ky%|9(Z$U`M78lk#Kog)RRr$=YN3@6CDnb^M&Hqerz=|ThnU#%3 zDU#_V-x-zR`cTOvLK~LtER@LWsgFrW1l235ro84f8utUgs>^OFN1aHP6q~W@|@4 zC8EY`-xtPCPxv35KVPgFce-n*3wBZIkX-_6oE1a6ZZVQqrlje_tE3I2(L(C8l~7BK zx2%yq%%gzVAU7RWbNSEE0c1Tf{C;oO@9(&JL0I2;2% z-@Vy!4Fvf?p?z%`WgJU&*n+U-irVELyd#e@*D1Usn0Lnmf=W8$@&5ofK*+zRZj$yo z%L(h_C z=cZi|%R1_lMs~^Azv}GjuV~SsRlk;Qz9EfvYxj9L*UL5gtH@oE+h-}a*V_x*Hsu@H z3tKkjo7oHDb~o9?UWlH}UPvX;%C2?TuxLIbu({P}_|*oPM*QtRro-3C)AV!Ne`#(% z5nz31+CE^tk+TtXw^uc^trCF>;bH!Zh89oziiK^FWp9*mx{o#MWl7fLbUcxAQZFRO{uZp0}!eCel~+u?X?q8X!b zM(;Scz;E4axSn#wUD?ImRO~lgzmZvt7su*+;ob9)lI7FJ?-9~OcUj;(96k5RTTDAw zVrR`XMK;`TG==tD;(cv zGRvq0*uUs+^Jg*FtbMO9SGWdFsufnh&vVVmg+W*!1Q#hpOd9tWV|dvZ%9#qHR3VhJ zGy51$VE`vjvuO#(0t?4{gJVG>$aCytDaT^OF71GuU`^3v%{5p2XMB`j4F8k=@Uu%NX*S8#)V`hqNLamN^u}(8`N=wh zoWc@gNW7kBnfmPE&0WT4=n~Aan_zd~aK(`>WsOf=y3F;b!Z9y%Y|0A0H9dN6W%yl= z;i%6X#Yu(dtIjDQeP|(lWRkvJaFt24P^&qRk@wI`^Do2Um{uYeAMG8h@uN5L$c=vk zm&QJ*PJ|}-?fG1gh@&qJl^O{=IbS4}=9K1To zCm??|Ax!8K(?LocdH`XD@oX~YlOWRX5kGSD(uL#klAkJXfPm`}xr#DRPC+)Fin?Kv z_X}T0>K&H}$x@aHUDgo-RU~kkoHoxUPq5a+OAi-wc_Y=Sz=zA1`2t=|zUWUUa3o9V zZ=O4Jtlm*Tt%m2U8Ioe!x1HGd7ft-hY~Zrk~4N;w#CeESBE zhkM|eRDAft=exd>8Ai@g)=D{b-4Y^279uqbB85T6Y&};o$Ys2Q4bBfEp_%wTQ$x$M z;q3$30F)n(hlw(3A0!RcDf?jHn#PvUoHJV^*OLIYTeAz_E?*Ypo|NAY$NWkPfF1zo zOAU{E0D^pvO5(M-$;%6!@u!sFD_MjrE z@%$egpV@BV8Mjz&dJAT`Lyp4!+S#X-T(c!qZ(69{GN|5cMtQ1#!F0;Jl|nX(4139% z(Bj2w=#_|mr|gP8Zcp6o3}kaMs(PlQy>>w_e|K@*bx`PfMWHJcx^}W%Pkv?{CrT<` z)o~m|*5oX78hP@{OKsWlRqBYTu*D3kdikDTmBwht`O{&`0^zm+;Z_*fARLeFwl*2j1ZJ~8 zXrh_q+Z%%#(W~&hlT*dhu~3^qugjsgXXJIsNwp>Tc)iGKz|);QKib+Bv~>)$wWEe% z8!26gmxc3|zxjxoF^D*pvdv&k9lV)*{CES`=uX(m`sz|&xE(TmyEw6n2ZlJ+h6y_4 zVrll@!C9Aq9S#Y9*Z@C#VR!M<=bi7Ge}cmdr_vFUJ8NhCZ5EDW4#+Z3 zhn&)@=4iq|5&-_;1b3-3{NgHtF$QNOSxy;>h}}Cy8vAv&rB2E6wHWk$;0|qi#VQ`` zl?3BA_*F6tpB8(k{3FI5@L3*kcA0IdMt} zRK1npc&CX0TOxdG?24MH1lz9(w2cy^dN!o`CQ{qYm+|$e(z~@CWk%4$!lvyXmNx04 z#HC{ub9&$eAe7$&?i?b_Qc9MPEVmhdT#-E{|6zNVlqgo3&kukw?&|bt>KhJTz@_3I zLm;cEcV!M4UU5%EacnR@G`I?Y{rtckUcLl@z72t)fj}=>m!jYFMwq=g7tsJu$sNbn zQV_ZJxP9c;MlQrV!xCt^&D3tNAI!V)?lKXrI42EhB|~64MYw5H3WrNPHv4Vq2iF~D zxX%E-JC_?GX+sZ6g`yf=E$m6?SAUzc6E4Er(mpfO1M ziWt>`Qnja7))2R6Q%(oc1xCn>Ps(ON-)zYg3$~9sw1NMkOwsr8DNc*DNJ@(jU@fcSCINWR0xf;S z9WBXPL%2LkEKLI-h)svLQ0lqVa)8~OdSL&{P2r`({s|0FKtBF}ZZItpnj1sA1NMJC zl+Ho!%|xor#qyi` z`MZV!&NIx$mNlLaM)h?ts(r3%wOG~7!rY9BE72~PLj1^Iu70@e{z>6VecIz6NL-2| z_Sd@+uKkOy9fFb4q5u{Mp4>kTh68M<+x=0+eg3zI`}}?a14V{cOnIp2WIW*2J9~_& zLxULFZ}Zxe?32-SHrICsV)d5=NPczfD3QaOg_tSOn z{R*bbf#SJnkr1**@JJ4Z<3=<2y$XTQIdBsENa-?>#p)!LXRCm?zKUU>u?D&nk6ciP6McAwqbC5# zeL6DXP&r;dC?zk4GV088|5;*;ihZ;mBfl3%_macgh2)A$`drfI5{dXOmnK}AaM1G% zRHHh(pfAOj6eUL^wF(A{uM_0mLTmkN@CbrvZ@OPKU#pj@l~^`6JaE3m;uU z?QU>xH-D~YoSU`B)2Ht-^cPwFTz^GKVLxXz$oekW4Y*HClZ?;;Wu~xL4DmZf~3~ zcGl-O_j%%CdfF@&DT&(@sbx`a>1O@E--pDb9ze0kV#(tj?~HA+@G2DWWdg`dWX>OR zJ|v?mUnJC;VS1xucZrEzWG8xuxB5x?<0r+}q+V~L6XDhRZ&zZiKY6fE0|X;gcCwSui^zxMGOo9E@t%_`yH z7i9#~(T`p$&NOUc@Izw*8s(sI6b!H-rM>8o3zKTKsTC;D;RN`$@fon9muIPSo_ZoG z7`?~D#dB-8@GZC~%N--vt<^gbE_5W3EaJ|38PgGJzb!*XBI6w4kqsI42|vh3ypzDv z2}B4iXNX@-Sw=2gt%IyATy5~=a98$CaPpGuBe1|EGGO9)lOtiG@S(rK1d76k-#R{2 z^t7q<=;|A5$^>Zz1dKQWxcLQPKnD6h7YE%!*kV5ii-g0X8#uoUxTyzH6A7Mz7ZE`V|6}~CP%1e309$Qfxl%rlF z+EHLVJ7`@6ej^Kh$0mL!b!(rBH5F&Ur8YQqbI5G(F~JK*!FSwT3|9&{mya0t-Q^F% z&gSyHJ!0H<2o}zZa$t@xuxMqoj;B{ryYWyN^Z|q)ZH?KyKF_QktK`4SCcbLQU+9edTau&v zQjnP1AmJO3!1lo!m(oDMO2lqZ3|T~$E{JG##7g&NP(txZGn^DBeX1dpRA(&?WF5%6 zsm{7RP|KF1jqHCv}skKmk?Qb0{pb3U5MDYEV}bNeS<_eROn)jsohUC5qlF8mqq}bqr=dWthzb8~i<=ST`rkkYoX3 zP>G8LQg2W$L;0t3QJ$B0hrU1Y#$lw_Y?U0iQHepnQ&`i=zzx5Kyirb7$W~yrPw~6} z=rQ2*1e2^4c^ZP6J#ka79fNv>c6!&9+`tX60Q>llI}oVSua*VEOHsZzQa`Aqu)n{` ziVyvM=V2wwz~xh4{2Ka7Zw;?RGPjFz9r5!cUhNDghv5=d!{wTNTNqDBdW3b_9n9LK z_E_7lrjNUOIP{T`i(>5W?^nXeUdJ!WMjn;(-fvde>oazdW#8-vWPg`wdauh>Hp*Mz z&2qWtgt?(?`f#$$q+iq$`ya9??GbuQhBwlY8@IztmN2?Ff+H6*RVa`?S=R^XDIB^u7m#~V50B*H+OZGyslrQ&%f-!kC}L>fC}st3WEm2^+#?} zEAAV# z4`DN0RU+trZMgXj2`1ERbD%_Q56+Zg`nCYdj&h`%dB(efT|vpY4>6cL)OfLDvG#d; zD$+EtG}w;9QU!QI3wQzpJpL#=3?7ahZy43Wr?~^ldiZ#*;8KwW(69)gVf4#D2uH^L z4WdeNTiE~fI4apqRV{px1xKNQqreR+4Td~uSAEGhSJbYLEg62xBh-9RU zqh8c}*ZpT{#yUeN3-wv}COpTpH^#)}UCxrQwKzq`EErI84uSiMNf}utB{C;v;uR+a z!{+h+e8$)0zXIvLo|Q@av*L$tZ)DDjN8YU5bLNHSLw->U^P-v{m!!1g%xlp0Th0NB zTh2lC{?gc9&Mz^e!%9jUTPAg6OllYe_DOyC@Az;Uh$5Yxqr^SPk^{GWI^*+Z&{^@b z-kdzEM^EMna~acIR<6Di%Uq7lxh!wpNMKzS_t3?q#|I&!RD*(Z1A4f7mXmx=EW~3L z;9j7YU!6L_{7;E|GZj7N*5$0L1G*;DE|Km7{Cz6$y4{7E<{s9I(t%8Ruew#ATeod9W&OXEFK> z3XkRjOcfr0s?>+UC=Y)??skEa&!P7Lry@NSG)Sfy5@&w}>gYueB~dT1+@=}$J%)dz3`fH^CXYv6mt2D>up`y) zQ-PLYeXWEt5KQgZZo9o#Oi>+TQnrRxmj7MR#suTG?3v;*O$+pt<`BI=flZouQ=qq4 zx1f5qOeD)@>AhNVV}e?}J-_Wah1Z?{-id1g@6-VA*tJEvpm4mvs=Ca$2g*3*f#g@q zpZH>tuE;?ku3unNt6_SU@qitjV;{WLK<8-Mn?#2Ca115$1gVC+M&b7=1UKecubZyR z-#UT_D@~A<2AJdmN&}DS`AI6V(kf-vYqeX&6kSB(?CQB}zFMzS zdE;Spjxwu6VR-c1Yz-Lqg0Y~SA^r#5!vOsNFuzPi*@(O+iCU#X5tR|Ug)3B%rC66m z^fSt9>}3m0&3&%9z0DonYUiH|gy2-YLd)En1|Z6L({_!uLeS81qaJA(2kd|Dbrsy! z{>(3yflQ$m5S6h{!6T~Shay7yu-v}q9=qjdNpHp8&~;xi5c0KnBl~9inO>lp1s#}` z%e(nD>|`faQN1avhkvowq09{khCA$LhJ2Y;A|CwINcNk{^(~63#c~}#m$vDitKm%9 z=sD*{kNYLXBT2L3e$NYY;Kzr~Y0sKIfLWpJeXcB4ol&mrJtp}MwjR1PX}iFmq_Ur0 ze97=SXNZFWes*|seM&(qnl7kLbGo>}kWt6Qgv{g3C;q)(Zx>+t?^gR~aA^5q>=ymq zKBNFMEe7Zb#$|XnP~)gZiIL-)9${5|CzcK@CA1BHK!+bm6(t*{#_nZf9QU*}L)Zj# zgg(y!SuAOzh81&JY!?kCF}zmbfQR3@)fXX*z(yFpg)qEdhA{A~3F90;3Kqgh;Y!1} zpd_(Nc^cz@R8CJ3Yl6yJ<$a9rOT-K zf{7QUG^UI9p8>1qWQ}*Gx#%E(=$aoMcu_7tz#q0-$$KE5;p|ZC!$_{JJe8z~=tC?F zbONzBHH$WAAoO8G41rWFQ+2H{23bM5tG=23D+vrygR(7?7(WJ@Av$u@sRRw9tooQ2 zAd1jN6o#S%8)&z6qPSl@L7lnOl|TyZU%}xB)vI`B@y`!bc<^%4oLO7Ix&l;GZjiajjvbvvD_mzyPuFJemN4~rtxy~hh$FLK*ebFYG$o6HF*`<1# zyi{`I>&LX!$24yCSYdb{Wq0t&jJ}ya>W-_RbHDon6Ap~aSXrX8x{fXmQsjtOJc3^3 zXWaiu=uaZoEdGXn6%{DG^{N%}h-~Ch*8fm?GxEq(L}Kg7stHEX$2q#{9DSexU`LzjQD!5$!za`9rP#<;Z{Mu)-4YLXr!#O>E$XSC&y@98iM^2mw1W|Z_7y{id zv;`Se#2TUc*k=H{GgR+uzBb$~_1id6#^}e6&e=FCXn1NIp>yh$8hl@5qd}7#iK81&fo0jmrdId0cTP;Edc z1$dBFcFqqrvgdRnDiBKcGQB40k^h1k6XQX{kun-~`0OLooI8Gqf$vs&IU1t%Nn|>T ztiM?7==CC4$C4BYvM&$#XfYTdYUB}3<9&HF;atYMxr-(3=llNVz-rfsnnyNjj?Bew zRClG~U$=`T%?5p^qR{j;9{>nXh(X~CU|zjtogH@9q)F#g?obtS=laBpauMV}Smd8& zw5qS+n1WuzX_DPP7VehDeP7)+4y<=};>I_2{#kr2O}~;#;or>8DW&tU_DYN2_o>LG zg0RtyXL!zpQuFO@Lx6l<#vG3;$eA88gpt(>( zx2t4KN8Ktq;_6`i?I6#o0Q1-e=8*wr-#ZP=#x{-4DiD9{@4#8o81jv0YiaBHW-ugfIX}qdFs2n9bkSR^Y{uhdZereYVaQ|I|7qV0XWqX4XZ3S&&m;(#JJ}V z5;%C2U%c9=3U5w>uBkJ&Dd7gEYT+utJh6d!Y=AlNf^)!}3N%Z`Lke)HHr5M?=RBh( zTq{l`LEW~?+6=fwpAngSDv+s(O%ipn5dI;Qz5_se>?}!}m6WoGBOl-0J=V`}K%#;`nwlwE=fx05=@haADF+N?l{oqcUNWEXZk;NXMuE z>Aw({1kI$q+AE9D@YGEw%`&HfdF zF_%Ot*iO?FH$I(HxIH zJ(k&_c<_&cscEus*z@7t^BN*LezfOf$+_8Huhl(j1$v_PF9&Nv) z7ka&2rP8_`T@STxv&{CpK0n?pGA|YH9OWlZmNK_v^bRwT?$ksWnsa zCKPm*SUMG0XL;HPKu!(C_12`@+${AVwGyBAibNP)(jU*o-?las*I0*n5E4=!Ei(mf zYzzaYd$U~F=qTCi2#X5fBO4&KA&>(L0wlWQctL5cgr!_P#(a24Cxx0o zdZA0DUGlf3Znd>S_%_UW2Ik;^w<+eh37$ev)cktFLGu;;=Lao~TZF9prqF7dRZ4FXlhW&jy_Ynmx(_&cy)l!{7J ze_St=c9JsDSn;hf3NDMtFi%IBo|*g!wSyDu9Vp+#$+$62Y^q60)Zl6L(DPHawg*vf zB+!Fo-TdOLAn7t;@T-Sg#;l<@2thyvSUKdn;W4B1lJr3<_ru5P8?h_)a_dZZiU!{@Bcao6nz^`PcdU zsmw3B_@?*|VUN*Yug3Fq=bCV}miMqm=E9(OHs?voJHX&Hb>Fn0?h8CW7)530 z_DBwbl4y>upJ=xYB_|QR+$nrbYlM=&D0!0>()EBt+D=)dQP4l%a^E#j{qdLh>bWsp zmh615HEP8rLtEI3X)elYhi7$*(I+OC7uSvuDqn~&swmpeMZwhZD4wYN#q&qM`PH}g z>i$G&z=1*j%Ip@C+|WY^D94oa+U0->Kv%JeYc_k8+>@A)8B#)HUPx;3zA~FvE}=QO zue>$sm)vxmsx+y9_t*k&&xH3lsD(Ej!d1XR9g2d^0;azi!mCbb4X|i6+t&NNAP7oc z--1g58ywD1;UPT*&KbUh)JVkpV}?VZ2xT%L0c4gTQqa*UP7a6wrm_eg+s6 z7fbosa?Yu^W+rBq2?dF+V0JVh+QGxrf``DsgW+^it#3wjVv2-^l!T<6+T(iOSsPy} zDU{FhiFJ5Gs*T1dsZ-CmfJrX?M*u#zgi#_?R2=np{f`R&ANtE^uX&3*}g~zjR zuofb<7JVn)j3h1LoCYp|jT$j88KD6mC)VLP`LaxqjGdzz-x<2ZdJG@qm~qEvbHn|a zjFO}ZB&7nLDo}lDdRr90zq8^Flxx9VXy7iIcs4%tup`+Xzq=Td@M6O~9TSEmBjN{Y z{wVIz;eTQsU*5;L%%0rPp~=T(DK*)qd!0nDQjOpkcC*Uz21x$b_-VyGE8Fr}=RSTC zX^ru%Bm})fzwFSbp(^^6(Ogs8@@Cn{i;7A*DZtl7a)g6ehiRc{FK?hjBdBt5Xu1@A z=?%u&PgngEo(suPIBPKLjjwtmXAlyPtoMCJJ-O_NAV;#nq3pRsaaz?RqvF$L=jghq zEWbogCt8pl?J~--Hg}*ki4U}+dWE8$!b?QKIbfltFM9{+I_V{%dEGi?P=_cxdn+5V zj$cfym5ZJd7S2cwtf^t`s(YPamHhK+!LNqC+ulDwI!U|?XUok(##DrXF%=+F0Ko_r zbQOs)2`UQAx?$OXeTIcEKT)P+Uc&IEXL(b0oo;iD6RW_C?4FgwArT4}P0L{;*05XZ z76k>|Eb*19TlAJ<{AJvFx?SP)Ks<$7lx1l@!32t=-7q1G3JT7(w+{<_yyzL#C|;T+ z3!2%}EHg_LTND8%+Rlg`=wmA0wZ@$sEYt;Q8rt|ux2!)%EA8}L(C`(;x$J1&XhT8& zcDcdEMfzSuPl%)Enl5U8&4$#V%F6@%3;yj9Da#GaknXY$ZpDQh;veOZzGkD6Mui{4 z<(eeKxnbb0qp;K}Zc^~FS70l}Ai|;} zSsLgwV>xBHCo=_~I?pK<_6`*G%7y&{h5d5jpt>;foQj=>XW3~)#!kafx$2pOwGFQB z!gJ?F+-Z$vI?d=KSNl*LN+G`3CZB+^TYXxh%=~76N;KaI)a`VC%JgaclDFFnXxY5e z$&+ypU)vi~GJOxWkUtHlgNc*_VG+3-hJz_BCzRoQ^rZ{fn9Gs+$h^$5P!4a^3HoV~iojCmUtH1?KChJCj!0DHjRtQ#t58urlqbV-7tY2rFI2{WZvB-D5FQ z^}JyA#N@8hEPDFvuCsUK2k+H~?&$-|N`~tc_cy>Kv{XU%k!W8ch!KQV8xew;Vbf8JurnPNcVS#F_Pn=M@3slXdu%t z3qc2Fzp^Kko1$ouTg%}uzs4%iB`_8k8Ue0?sC^4jj|`$7yWa6)jPwC(yH$|!{dLP? z3@!E2f{bZN>O~u7DksGmm)tpWI1Fk}mdA>{Dh41g@A~ktn%SgYdT8td4r-?r5l1UB zFW(I;U>TcWiRwb)CtI$R+tV>m`EaI@(?Sn3YH9F-#+RN&sz3KgWRJ{JyjxF*%Np+d zD^d0KSq%%ZKRqx#{4VIrXOL2K(LFAuK)+_f01WJI#^cpqJIH-IV`3jAz17dIuVywU zVpL}K_KMApaQGRQECLgcV)WwQ3bce4v`kF2)W)-IgqG(1?Edl4(mxd~X1oGAKZHZPfb63cKi_aDj%h#EAOhJ6tI<-G9!4L8kd=@W1;) zL+lUh{c8s331CryDmDcURl=KX-J`QWI96cH!;99POgJpa}Ux;RU-4jmTVS0>RJyv`Ju>vIzZJt77_#bB7n?Qt8@g#Z?$C znP9{fH^k6cilIUV-O81!j+!%27YSvJFG~(WAukry3x*+jYIQ}3%?cq~+IPp}yAvB2 z4YfRuy_2JOF9=>lF2G+I>N9M9W$*~6ve|}GhBPj4#C~=M>xkomA=9^n2gW>;#qbPu1&>6z*%8*H$1$g=4G)2V2hX1#i-$fY z@5+^Ec+qt>hl+6#6+sylmq_e*kZ$DQp;GHjI3g=fqE>K%Mf%D;8Yz_B2ru^aQJ8Zc zxkkR&66v`%6ov*0Az(QQg|;1G568KF?0_)mnpeHB1MCcywlr~>xqQ7DaOf787@lkS z*o)y)L}Mpr<{gdECg^O3n|YoMN0Eu6+SN@f9<$K_wSc_^SIE-vX};7oVQ#UfxK{b% zq?ZFst=qK|!J@A3l)yp~e1n|@TnsiNrFUubLZS8Z?58rgz83qR`s)4}@Am$BKKgtc z`o;$O!r-`bt--@cR|HWyHumJXE57o?ouHtd`xaIpK5={*XVfR3ry{efK&n06aU;(kwgC?mTWn9-&!psh3`7xrts7jA9v+9Jw$o3p|! zSUvh@NX1URiczBMK~Aap!L)ZFGVldnuWw_6GsYA^yX2P>{gdN3|l*D z%~byYmN5thoEh-kWYI4Hylmt1b(!4~k1e(HMsnHzEB24yZmq0c6AB%fpNlu4h8``MW+#N?=omz3hB@(b6$geH5mf|LqZB7+U2h9(0 zil)myj;7@-G075x-ozl~Z?}0$ex)9KdT2n8RYr*aMUO8?k1s(!k&S%JL%}o}oxbRm zH)Pzyd8o*y`AS&30D4xcDQwjyD%H-}=h&*zU*F+~)j|}mdLU`OqCNcN zN#*0JuL+GF;SC{fcm%1WEU!#j|H(FPt(|X2HYkrwC{M#0DBrB|T7&eULpT)EY6S)D z(aWBE6^JvJ=NET*6#FWbI!TA(4);=c=Tv*-qWstGS{YP%ltXWCO3DHqMT~0;a{lGS zC(MM0IThvzX{27rX6Q}X?pi4yq`iVg2%~SX8if>6Tf^nphD+n*8@RPzGUkum86^70 zX%&u8_u@tu{EQ%qi2$aw0n-pBlk6A@7mdy4x-P3wuLwS0GuAklNI(_I=pMzO03ylV z@tsprQoO8=;+mnHb}~-7B#IG8h}di)#d-kj@Q2O0W$|K3_TgFCht)EXUgDA%?*yiE zbHS0l+6-i2VOvfCNYDZ51**}t{pCW_g4OXxd7nf5oj;ebkJR?qvh}K~Vadfw;wVe5r=rkNZ#x9Q z!ym)u0M9eu;~t0vY+G`6sV^<|yq+(%=*Cu~v{@Jyb_*S(eDuk7#}S7sv_n zM$yJa#Pf)s?TMY>KOb&(aneE8#jOzcSIZKba07bB%QJ-2diD$R0^g?ZHa!PLp&3Ha z9_EKm6R+7EnL=y%xLFZ2=!k$^x_YWlc$uHB=8<(z;sNWN<8KOVkAH>D7&1aK^I}6* zwA!GgQH~4vSvgJlNN95dP`#^`f`ezhcc!BXMYxS|(A(nzQjCi(v_)Ry@JBn&&-gK5 z>>33yC{#nbs92D9$7FT0TFN`EF?j;D%-v=o0E^kCX_l@Ib%!WS4qi=joX;tX4e4Y_ zrT2MPNZJW0{D`naGD2nLR+Jm$-zcRf*Z7x40Ds@oZ%NinT6rQ-I_5(XiBRnF!?#AB ze~OycB+v?S^laqlndCUOUh-P3Zf?M(Hp)@NBOOWQ2}#8${k&C9#!^jvX9x)Etxurs zGQ(SoFc3@{-FAL2o!arB>srW1A-81o2mF$|+>d?(5&B`%;cVOpMi?Q4z+O>&4Eib= zzCTg-VAaUt=W3_Mmx?TO+;v@bV7X0>lO@JqmO#ZK*n9LIvBsqLSgnns8lQGe?7W1) z3b6S$u=xhqqHt;hTMSadEf#(rCzrxo+5#XsS?!WFAuziFr2Xm<-{|m~a_Kl1cnWVq zyp+FT=yB$rca`K{%2GpbMCwuO$2uWy89J=%A?*zRS~&QV>O+nS+e_%w>V&8v72!AOLAzbRKO0$)P;nPO(6B0DiFBnvjzdLF;HS2(m?_l# z6AX&4GuH`#o^qR?w+)u>QdFR-YoAa$@$o(*C*gQp6cv6`uX)i}A;P#{Yj1)QPxU8; zF?|6CQodg_UWgE1+KUV(J#uTqQN;^dgyk_xF$}Vl$04buz)}^qG=_Vqi54e5AIg04 z57j)B84J^!E}GB=vd?&Y_L~QBml<=AyB`OdfS`hD>h>z+JpFYm_J8aPo zz`mu>Q@=LY_lvOa|J`8UKOgqL3CKql$Oi`GJ-0@|se+3?AAo#I!L5#keAo+3$eWo@ z{-K(cnHutBR0*8p?{fzICwk~FIa6bNjGi-lkp@GPxfzhPS+zU?c7fTcV zad*DLPCQvTiWFYbc|>zkAhg@GuBbLt=$2N)!@nD6A9nr=)Ag7hTQEH`Fpc|YM=C!g zm|qJM%|65w8qDY1KunG>PAT6+j8i14I~jQhy06&@ivCmYWmJRegBTNZ%waPj2>*x1 z*2IFXv5Bp~Z-_1DQv8_bAog1^lSG)pw^7-L#rKE}CPNIBK&>JUy+-f7HKbMk! zcEqIV7T~Tg7=}HDzmfbq9)`TsKEB2K>Gf`}_LBQaic%vru%?FA)aam4|IeC^w5wpn z2PH}65i;8?KXz6;bszJ)I5U^Q>{>hvWup)0f^7DcQUrBkN0YaQQ|ZE)XC_EIATPMD)6XlXx~xVoG?%)6#8>cSmrE7dXW>dC*+K zINMG$Zc(`~GRpH@CZdkvfp7C1ia2%*i}{D7a<=PyfP?7|4|glD$`y8&D8!$L<{1$^ zJ!_iRYpo`F4BsqEn(eMkLgy`9m5E$eAwtK1uMV~2+uI59?IgUNSn>SownE+3F@$}Q z93X4Ze2JWWlbq=^(Iux8PJyc9U4qd^{?I7rRM2@*%{`h?>7vqsvG^vo6cjzr~ z|H5O?Eh<||-g(y#E_JdwOq<;Xdi2gf~MSNMrMdN+(kKg0vJrjW= zB`Cn01NalZ>^vk!)NA|RWm@qHDUxQ=;BnKaN!fKp=#iEWKvTZY=s)&Klq(*TE+hZ zgmmJKR3ZBRyWp@jsX%0bV`RW_8bvlZYUa)NdpDgYrzbi~zp?gcj-M0E3_85lpE)7Z z_`DbxbJ72D!T;V`Q{P!rzqY2rgc0c%Uw1Fw$p}pgdcMSSKEV8S_u?(mxN_+oc)LP! zF7Ioe_ci6|dQ^sv4I<@_BE>1VExGQiroBG?K3+!ok?@_C-8(v<6u?1pd6Jq{x?i9c;y7)lW2;xn}2d9YyoqRBe^G_`Obv2`17s?**(P^4Rq)8-j$`X?35kb zu{Xv-*Fp`ZrhnoEqoc^-pm0mw7mM2Q@@eWY`yOOS<;@kGmqab@ps=ipt&`r7j0=NIv51hh2iNPx@mY1*Cdl~wRWS02Pk}vxG<D_;7fITkW!LzipGZz-c~D6 z@sC{<8Oc)mLXu(&k~1iPfW6OO2i&I1Vqw6d6^V7|+a}pJC%M+&*71|vitS>Hlbp0Y z$=#DC8KGDAbXjb^+<#s!H!nKffo-}2W4itDxJ^#Hp^wk}8gSN@9n`lQikA%U6tpt- z@k7I)os0Q47)%Uv6|WZ=2kSW(pbz=q+P%gptAJVqi1UB!WDbTuc=)iwr1&ky1+|VANLjv62l4EwA(X?U&J4N^ z!sc*BvPzb@NXVAKq*$Y+$_gv`k8lIb@;=4LXTltlAuSZJPc`qonxUqQrr#GP*6d4V zAX9&Ka(Jo=j29&Kp*Qv>VcG8pk|z_3Rvz0@Ek`6z+U5@!Y@1JBI%3IECiHs;%5E~$)*751d{w0B! z{0Pr{ET0sNij+A*_aq+z8FOt0Pb7E+kr{1xXB<{5Y`_U>YpkAp)-Vs)fgtlQ*S)vE znUvu0Pa+2%rXxMd|OhFBe#+M-BtM?5Y<*4M?M_oz2fjCF_uV1LwTvh`QPtD<1vE)hBF+IyRz$C^9o0dzOI z4-Z5+l^5VBL*Pv)!zG@LLvh1r>T?F<=8Y&e5?AZlGLOR+aOk;lh-cjmL{J4uLOxpB`|Fq9(bi+fxNznJRL{9SD5v+^`ttC^B!`GbVnqtL}0ISL3M+9aifCf z5(1RENWtMC+VObc7}#!cU_(Ew$fRozuS~qCN4bC4Va^3d4vM}Hs0*^mzSrzaJ$Qtr?jw6%hUAkJHyEB)KIsApH7vdCxC)g6qflnRkelP4j* zK#g{y@P2VOGuplWly$9kYUc#S;^XpealgRlpr*-*)*C)EPonuTj;F)DqByr-8%D3=lyH5{C{X_G}~$3zJl+aQfM_J+2pe%UXT;lYJ3@}+vHU1n%0Zzpj1L;DOVvVbuCsB6t z`HApYTwGrIyw9%!na8bI9`f?#$}C3bs-xd!HGyhC9Tm%iVn>1KNIQz+6>0lRzGuXW zl{(UWPGOZY8IHv9+zJnceYsMys}n|B_KL!2lDcRr)#x%Pd%->lE@cz?HO4ilY z16IxyRnk1QrCE{l8kh)5{l#+5_d!?kXtdbei&7MUsn);y{9?`5?F*{Ca+zc`&FX;? zOz8Wx)jIueU;ddgTYUrND+dxDi#~;>6mny7_c$eqVFa2!&)vd$XiEwxO7l%>1g5<* zLECMs)`yV>WKm?#$@PLZQ;W;JT&mVJnm zon`qiNU+=s<=@?j*H}>T&J8b*4a{4l8lEjx;K}MLFS|3D4S#wG}023goQ;ePmW(=47B{b5~c!mj0M%$7<9Y1Yv}Ip4^& zdv#dOqX|)~wCgPG9YWx8SxZ)alC`-~NZ;ej-QCMx5-e|WGWboY4Ay@7M-at=$glIfD4!@hh;qP(w87rzK9;gD4eOyk2Ph`Tix-0E2v3}s*e64x%ut*Q2IvzWA3uoAeVNAc3Vn6+6TgXoU0Iqp%UA)JLK+laghecvj_E zVT^~s+aP07irdJhkyJZuuk z4}JhqK(4>`{Bc65S12JdCAwN?xs%9bA%hu!)z{j#fy7=Lg>3XAKfEX9x9*oD@m95x zKBpj}_5hrqn@uUDuF4prS!y-r4>_Zxy@C>)NPVWWyF2`*zNstY4e+Gju}eJrdQ{Av z^!pju42fgp5Ty+7BuqQ+SC4m7_OzJc-$XwG9@T{~^}@yOzh1qcQ3|ukt^7Ld(wt1R z-25XvdkeIe2R`W7?b|ZXQZIC)pt!>2-p1lfTZbF(=+h->ih2|vQQOTeKP_yd9p*9a_OhO#D=w?JTQLYo>QFDAu@(*3^?GxShS$98IMR{0cXGRewM|W``d!Gc zMkZb|o|jOnUxrAzVReIVFBdTC-inAvw={ad-8Jzw?vEk9lq+loA&@Wn-*}a-XXgm~ruf@%9T10d~i|)b~6UW<&O?K1!d3t)> zS5F^1pI9?3(R_d|;UU>c=0J998Ble`;6*>;_ z?YY^BA2*_6dDz~W-$H{CB2HjZnE)2H%Ew>g0VD_@{f?{s^HpC^)% zUI(=4?dts+i8fm&ym1?jc(dgR^q_oQqyB_oH!~2r>h!aHoE`SXF^xk`?gK!V_uI4a z2!oQBnmD;8hKInM{y5uAFi?frkjXb@c5E7f>CwFo_H0M9(ZmH1kH)&uq2t+fhYs{c z7J7UBpaQ+OtB1wEoEUB%K%@f0E|_)|Ox^I49rKnFgkB{I{g)3vfk6qrUkvtoz5{z* z3wwRvw-;-r6S`az!`)dfAQ+pvT_ETy+A zG7CKJe|ZTa^4z(n4H>$k@b?#}#IJ3^`5aWXV;Sq9_!P8<_Ao0OJ=&PutY)cNNf=8( z9(9a=**1SP?Vv)1AukN6aFXz2nv|?!Gh5~(`STv0@MfIBC=77saduDFJI+lh!tqg0 zPxS%^PxNe_h=%*~1c9DDncThhx;;`Z^3chjBkAh&I@( z>XXj&yt!R!z_-7?z_(pQ)K)PnvW=YD!F|^JWKe#02I#5%*+_k9x&?ook+_=(@Q_&B zDFbG1{Lpikz$J3&XM77UL*IAeCI6sF^?a|O(Z`297&5@J_8@LUqs*9zLp~FWfOSu* zX|K&f0SMVJLNf?82|RgEL)WaKV$I~wi1MH_uj|i>3kO)B_~3VxGcLa`F9;Ee*^GTx z10DQECFqD9=&*MqaS#S>bYy};Ll$iNu)1gI2Bpcvl%#1vH!SBrJ?CBX7S}hkWn;*w z1plR({;#r)i(_r~dS~q$t2WF6DJziB?)mEC)oTJLUA?(@bw!9%SFf9GWvtS0ho2$d zlw4I_vnTwaXZP8OR}+tIw#|eO8FBIxhPgu;@w?}Yo7VPck?!2}Y;$t1KpR*)q;lF2 zwB^w#Qgs$lMVm;^%bCQSgSV#9@Tr7_x-J$P+AK62?7x7tmyN`1qE_bbr|+S)$QvH$ z=U$R7mL?mD6FPx^jQmj6GSf*TXmY z;r#V7Pv6Bn1B-d0u)ja^IM#AN{`-)pem{~^2?wKv&`LdX2G`>nD(b2oMh-LB2#*7Z z)m1PE*ywdk=EzWvIGgr(uyb16hBoZtcz@Vs8wZKDV}@FA7~%Fs-3PIe?S|fHYeH=+ zAP7v@Agr(Cdf^y!+RcihkIHRdYIZOr~iB-*>9X)$?X!w1!oxE6Qar`B@B;K#M3iM&MUQEap{0`677CKSnlTB{;*v~2X z_iVx=4L|YO={>eiOXVJk$P?oyYH`1s&hFGC0V_NEKL7mm^zzyHle6~7j7jmNeL7D{ z?kzbQw@;QQxKX;`K|c96JLln$5hB*@8OlFxD(TSduaE_b2x>HJA}~Zd-dEmIPo*@B zG+tluVZD+Kzvd0U)D0~!O^~|cqC&A=h>Thu%#>o8){LCh4;{=9Sj^B3b{+)PbAw*J zX|MELB$zQgAP=&L^Q_Fknf_IuGb)x%%gLuxn?7@(PEJ99#1TAE>jf_Hvy!2lN?6Lt zcBu}pP_TXx=z^W;!l@|49lgq2cq7@NKRV|hgfy>;TR6fmYZ!@kAR}@hBesyy^Sd@O zWV(74cBMW%4re$#GCXns=}25uT7PzdLT5p2H0tbt!yY?^y=xEqptzWtZP?>lk1Lsb zR20Vv+;S(Yhb0v6q8v}wrfF2hulCwnA;+c=q6@$QG>yRkq0S$qB2x|8se$cV&%FcARV^?t}?XkFd~r;UL`S)Y6su6Psum>Wz!=^4Y1Q$|DtXrJQGq>vC0mDE>Oi?0fx(-Rx zvm{Nwcu0hXz_1-_fY_o&q81hu=z>j|L$D`ZloC1rNS>NUuc#?=EUDubGD)S7Nh*a* zneyE!WV+83GU_{*%NqQVfb1h+RL5$B*OVT_; z%*bc1mNO(~98yLJndZVp$d;EZQ+f`W(zj&FU}#!GBu*yC)ZLb6?!<}&LqA_^w6MXz zlfW1wg7J?XPAD`MBs!WO649c={xJBs}EmvRMs!9^BG4l0tY(rCA!Qo*(*$3li+)BS{VnvW?LEN_1Q zU&4D(oP`2+=%dLr^yEUqUeR$p5K9R|e6`rlrbHvMiGylP%7obyo#Ufpp+u?g0g?$F zwg>lrJ=>5B8_xKB`it9$-KI6vU+BXhKyCNec*!>7tD9<3>E1pU4JLBIYe~-7#x+rF-iJa0B z3~EZj?@Sr^tr4vNj95do>N?LP4t5X+MdEM=aabgd%860ul?d^^EyS&?yWGEd;8f7c zMacU_n#D#qXKz+;pn?8PB_F`D<7?>qR!free*}lkHqfDo(^BDe)Lfd^ilnnMx!g{_ z!wI=*oQ4JSV*(MLH$G0}MIgP;3eyTw$=1SQ|! zAY!raefpmhuQJb7Hir2~ha-OfH|lemkz1sn_@`O2%h4R4(6fyP28CZF2s8oJhsFA^ z$#Ijq$x(rAn+Jv#4}{&YHV?pFA$_y==Z1sm_s4?xNXvZWWpT;c=AbjI8)kl zxu#BO%QV~SBL=vXLqHXD7`l*{pbqphUf{owBqP1BB#c+ZlTzho*$kmD1E` z%?;zZ7jOw8#NzNWkm-Ioh$MtQV@dj>+-2x46s`^;v3A6BTsnkM!r@~@YDr}9A$H0@ zL9%X{hhI;NKxgwYH6QclpdbNe2Y#emW8oX%`Ha|)cBSedbakNG2afi-xnh(~jdb1n zE*i>hf+P-EE3*wU*n}G}AvrtaF67;;V;|1zhCgIx^ur&NI}ZU@6npM)hKBHdF>wg> z@}-!Ipq3I7Kbxf^7&tvGqUu@bBgh#oQVw#k0UcEOHfpJ$CneNYr%!A;DOntb$w>Gz zmP|(0_Z%7M&t=TfaXJn#HAODS#P-w_4)%piC*e+3=ToHS}EoS))SW z<=EOhceR>noh1XoKj=fb!L(#tVNVnvP@}(Zc;V`)F=fCpIZTN;a{W@~$TmtOzv%h$ zb(`%SoV_|A@QVn|{=?4D?D|8L#{>TRp0U}FlNe(VyCiPclDH^+F%nk`*Mm&f)fx7N zw*De$gG5J(S(-VxUv1=dhhIN8>$cl-Dr&M0_>E&BfM-AB54`Pgxk8z?@THwe^AxD< zq=){vLO$Cw* zwV_cP6>1}+HWsy1iSkOlOz2zu;3^DVg%K~Tt;!3PDo-l%+;#T6}p12YJ+{8f6H8%UCHP(coO&H_|Cz>z< zp*@Eg_eTH;VeN<04+5s@1lLlpPS=zjd&XtNY)Y;IH#72W65`{5J{bKJVTrTzabL3$ zc@!*CRfb;^e(Il8ke^W2Zt_r~FU`m_j_5%A#~Oy_1kA+?e0}k65-gk#X-35l~0u^sQbKr^rwhuxq68fj%!p{PHV?tMSuX#fg% zEKVL4Yq@IFu%dtyPxs^1T}q)Q!e<$!q&u0@?;x~Htg6sht)09|$WiR%v!;gxaqJ0> zonkrl@OXzKT>qn7CdW@0pf+ka%S@*Xw}F5&mTP7_Re_npu%6dgL)CDS3A_>j3|s&h z+5m{-3INQ67%`3W=?sWaW=I&0DAc`uP=>&8K!yMQ7cLO#yxWelNluasim(EzxDonY zh}{7FI@7)@p{fpab&#u$@_sHc(Sj(e?~3Lz3hVg4?4!siaZPk8GP?U1^G8g|LZ#Oj zOG${;LEfy72qw?9>vyUQ`+m7$-|ZL>RX7I3O*T2UW592$N#5Ap)6kbNu*-QMw4Dcf zL2v*Drt~L5XdgIF@ryYkS7!02+y(pg2*SuBIm;Cbp=moTZ-2?V*#~!)I{&855rpX7T+P z-eTEurVlH4z7tk3{r0Si?K|6#$oKW!Ph-!di%aObB@2O}?~)^dB}e-HN0B3kkK=b} zIbuxzl*(nSlT&4dVJ9n&vf_>^*U~{&0Gqs~C>5v*f+G}_)u(hVx!@=bou!epH0Gtv z`4ZalrQb-t>?2IV=8o{TlqmP}9c0qNS!eG> z&*XYQaeF9>Ip**O5(SkFxxE>$p3yA6FP}QN$S-h_cQ)s*a|n|`-3@TP10rD=enS_2 zEnk1hj-((h`OH7m!&x>;hQRsL#dmQ?CHpC7`huqWgHl}IM8+-8b-qk4wRFHOIt~E zhoz)!9^$8tk}}6jE$s7>Y9YUuLh{d#;|*}K(b`CP9Q_4qBZskTh`Y9s4f+*BOx_5Y zfJKgB7`SFja=XqF4rc@W{1HC7jC~iDNm-*Nk~JZuGXC72yf~4&pDY!Ucnmo#bqe(a zYi>D`R4hhZGFDUUA!zHYU4Bsl*X4B)#TGXP!)I~hWCe~&aG?hs;c;Wml+CRHb(vD1 zDcMs&nBVLhoBSLT`k$FhhoWju+E0nM(*&tk@ld<%b9`^NvHZCS9N+M{g%#!m^jahGqAW< z$l&?|U} zi_$L4K$AT0V0;tc$b%A$qCj#0Vdkg;&nGozkK+KxWvH@)>Gz^RVfjvaeL_bWQnKj! z+5lB& zxT{&kZ`Ywd;|}_)#PyyB*&QeQYAo;ZXFRjmf_MS7!qX?<@F!+6j|Z4xHHS> z%Wj|6u*@TXA}wJa7B{!>_Q!s3d2>f8@%ZtL6jeNC;^KaW%eHWQr<0S2F(qTTDpn1f zM?cwV9q{waL&kwM`A>%IR2*_$vom?|E=0I?{30^4%M z{S@(aAcUnyy_V0q?u^%UvbsKjnpbi^Mkksbq!~yy;L=}gs)$OI-75vY!6+7Z9g2@?!@N2Nn+pfnUwTYaEFya&Vm7-OL}KmHxXSAD2hs9HOqs z&E&tBoC+*^hMKmc0L&(zAL|5<+yLiU!WsLs#p-mk*J>iuoi# z;Os02^SxD?;`cGwxX)OW_@LBrKlxu^Onzh1)UuzqKhs30B#$k$K#`YM{Kk2UswuMA z{QJq`VZt~mD+(`t7b&~gjUb-e#6d=^gjhyflxCV#3NzX5jYS$|q(>8OzZ%ijb%?gm z5^Ygf(1*MsNyZQN{XxmHw#tGt$MP~g#HwUhN(n54qe9U4pv`2^_lpZ=#;hJE6Ux%S z@Vy@IrhI8hj}I`v;GK zoy^sV-|^z+20uBWl&kZ*)#{-|ijSCEsJM#kj46i?@eX$@jM6n7eby~nFlkXMSig{q zN4LeA9zW4Xz*|19*SVJYj?N-qdbKGj~vcqzaJN)|fOe1~VznH3ff=|+4E z{^8#8hr7my6kh51{*4PP;EZdWLX*#zHO@b)zR->7S~u=cV|-$qx>n;W9;D4gpPnMP z-puaTpmBY#7J8DscMBuoMwf=IhM2M!?u4OfGI1I(Nq% zXxPX=BE{=@EB+Wj8|fe*Z*_h_{yq5pA9VmBdX9XK5_p;Eax|lSi$CFcb;^_MEmjY0 ztJmC{aC_$4)`s2$x)QtqAH5N4Gx=N_{ahF|;&CuOGL#r$@h4h{=}jYjAav~Ew7!0D zRal-oNp`C5_g=lK9;M0Zak;?@itq&zlUam)-sn%W*>uJ+Se-jqtY4<5U=<)x4rH!` zM)YLgX)2ovGr*Tj8$HLg5nIy+45*dU2DB4=91bvD)Lr}*7P@;bg2jfDeD4c;(~x$x zqGnt4y=$oo)l^@bn__q|RGvJK9IH!bY3MACL@CPWB`(f%NRKZxPdF@YY$~y*t?2~K z*O=l~a)pT=i=NPhEwQz<(+t-ZIlrtOa&D1n?UdVvCe>@rVvFh}XQ9RZ+v-|c&|lTA zy6=!7eOrbM`mP9M$P;S>9LZLpD(n6NtDeVu8HHpJH4j5#$q-kJb4S_4Q8u;8sK@Cg zrCXJfK=?hK3JEb4vV>KLgc^ZI^4T|;-t19%7N36#0dhnD?ujkORhZpfT{&ViXk$eBA?r z@9>Ek$l5CdAfgp@sIRAVJ)vvdhUL(PR;MZo0Dj>w=$fNUK%xM)K%yM~`}F)UL1 zDzOdYRdX$N(azOep>3JObhQjX+QdS(j}L^ShuBHmb(Z#=J@lQl183>b{T4oms}C0) z(s)POv`wlQ3wj6;8#|J=x!dq6&3#dIud&%{7rj;(2z%9?_Ki;Q;k`hs zxn5%jS7+lCdv-*ItfVVSdRa+N+A7T6dnLX1bG`RP%RyE$5GBK`Wazeg49h-^pZ_-M zvj!zIT;Q7FB5Q{0*NarO(ONz2Tc@*K(foFd;8P7PtNDX5wxWp^@x|P3kmK*drl!Zk z9BC(Q4*JOpNIIkg$+=6VgD@t(XQ^{6HBM`8k>UBDqgN@xUFg7_9ocBu9aP~COO^GV zhFvkbWvYP}H}@BBWWo5+@5tA>C%T zxv1l0{uO7lTQvU@#%VT%6*SdH}68Hzwzdz z>6CND(lyMxl*07=ETMER;{-nPB2CD6CUVuxX;pU4T|g+~>0>Gl(s^Q}yI4+Oj!n@< zMTUPsJCF*;W%wN{w~2F>M`rr?Fi$2kmY_AL(Nn%_JCFO~Uf82si>2%@_0F?>4MlvL zBulZs;c)+cy$~Ch^`aE9&z&ImL#oT#8+9$D4*X$>`coczsi*vu4)o7SAX?A+v9IKx zUB>dWih| z0?Vx~Z|8NKY7sVf>NxS#dxjmXB^>M7D8n*n_Fd5I+0g9u9MB{;E&8H5c!CC~#HT*c zwgah$IpbHcrNr9K%mgmfkIjxY)w0=$RlC^Rd8Q(rl;|k70B4>7%q{Q9ABPeK!sCqR z2us@I9~eco%t4U9ZmEk6?w=zabJA*08E{Pjn`dR32#0aeHb|qm7w#?PYN4q4#-Is` z#zxt3fV7Vg6SZTnDWp^)%T%ROCS+k$*fdcN|rtFgSkXRdiuf~P! zZD%~!X9@lsMn>DZ-S_>#ci~TC53eDEMOII-%~yqa$UVc_IMs#X0BD>4tLEjcuPc4W z#Eb);==2n1XXvMcmR^36mepHb`Qhg2peQbNq8GgH?nxSN=TFhxFRn%;N%4PExh z*tano_uZJCE+%_Iw)vL0K4kkY$U0Ej!4AlRCA#Xg_&7qEQ5=8#(+Vy^1Dt|rTOc_O zL^G>+M=IiQM+>4tW%nzCXW)WoV8e6hN_nq+HVlOBvx7NgjNY9PoXb=#eaGQP-68!Sd)M0B#&Ko8 zr^^4Km&ICR$N`CY;UR@_QSxrtmEA4v#^ofH#KPb~0ue~i04Ra3{P;b6`!UngJ(w8) zl;lL&wTS80Jo=p5x4UoOTX#NmTn^+nI+C~(4?5jIOK6?k?U;@$GK2Q{Jv`!yWASN` z1FUs79UpEn;`TI=xZe{5ybJhR_l`HGp$kDff)wjJcs?)atw;V}5vvc?NZ1t?28(h+Ol?KP`UKMXIKqt1O zA3ps4sNJpe%DOyuba`lZc`vEc<$Bq}$J~h;BEq(16SO_)>G)lP8OZ^pQBwP9yk5>ef8Qxt%OCNL0!nN~Q z`UuyKGn%#HwTtzzS2fqOnwZ#xJqKQUMZ5+<(c^K>!7;pJe3(w}HE{8;7^uc`Y<&W5 z%29vk8I8J36k`n9cf^`FOHU?c1Dvb4vB-ey49~UP_cg?^u<#MftZ;JG-YnbrLwz7U zkjbSjW!A%Nxra;?vQejS2Xil>WO=*>idrGeo2(X;;IQw&;lRRS*crG7Nn34Fmcry+ zV=H|Wu22r!xE;^lRC6aTUnYfcT{N;dj5id_ZsWo;UhD zJ;qo!aLsHwcBds_9X;2Yw(5TQOee1`xg6*5QR*b$yEJYcQK88lmie4C+on81zrm#lujzmdKwDOQWJ%+jzDyM4;Cw_xJpjAPHTzpasIU$vD6{3e0E32qDe z)M|c*u2XY}i2@f|BTHOGVZjWc!~~G`CKW~{M2{h>?88>>J!0Ep)O2!S9FUTadGc~E z^}|XHD~F~VW$R}g(rM$`*LLFCQh68xX3ajI#?{^(SVtA1ON)O^F#hNOSKk}hx6N9oyktQ-3r-l>)l6NIzlj#lqPJ{=%r>kKN2W!poc;HY} z0%zBfe;8VDPJ({Jfk&9A#0LbiX$IS(rBptyEx=oCL|@YmA zoOT~svHw|qpoKoXtAp*B@*Wpd#ZTFu287xcDUqU;9&uH$ja*cx9()S|^^* zcc$qdFRL9ms<#`|56f=f*7e)Gy5F%HFmyt7PeUb?4IxpM7CXvxF0bRzzTJaNG-A{QB0y#IpQ^>U!inL629y49?rYg#hB^NgZw0)Q@*YdU) zmZ37`ZQ|2O4p9i#vls?~fgPH^&7kTvbWWpz??kNKEE?m6*-wp8W4GqS3MX0>LU z_H_<`R%@}1j8CJ1LlPuKNf365&RuY-hkC_`ymX`D8R(wVWj-udlQn~U5Lx@r%IXJ3 z%ekWW``$4XfKpm~J6(@g^U*Ya!dQ;BL*q;7fMauly5J5_LKjD> z$tO0M$)}tnn`L&huYM!%2F4VXh-C1+i{~m?l{ojwb36J#=#FO?jd_W4k!xjuddgpfJFi%jEV{4EMf3# zpb3G|MU(Yxe&Z&I0yBj`qmS|kPh&(B_W1B2T}_}+=h8HHps>UC)?f~(Riw_?qRuX| zY|meTEU%xHD$Y@6Y;dGqpvdW{gd>52Bi70~*7d5w;(tHE@GCrb8ssqdpM>E@(!|T< zRnf%`Eo4ai|NMyZq&{3R!5?-~0u+ul6Dmw0<;1U7YcaiPP)R^Fm>;(975aiaJ= zo-OC&>Dtl_tst{siO2a1e_p_MoO0bwQ&>lt(6yxsC4~U-4)zT8v^f=%<`+fOqbk2u z39ds2uKO0Q<2bCqwKXZS9R&f-`|mJVK3A7iuqw^bYRohqaMd??Ix9 z2T=;F^(c@Jxlp&>Py~-rvq&ZReKGBmqT>b0XkW;8Uy5K~iB|l|0Pi!6@&+cZb$pDL zNTkRikp`ATN;*{%$y85C8~velz|BO|;fG=O6-2b?3&vLaI}EDAd}cKAWza9UiQ+Gg zUNnb|;`+i1$xNjY8d@UdXeH555`6l3KmG94Z%oH{SHq9Ly&A_34B2M6Q8ykm2hpY) zL`Sd>Y6POw@h)6p<^Mb#t;K+FSsAvcCb$rZaer{R6h$RyN<^;IgfdY#f(22AN-euE z5mD{gkVFf+F!_}gl9IpWA%~^u>vE||Kr5FV94Gmi&z}>dO0-PghJsgJ_Tp!ht2% z`AJgSetCh8+DO|cLVD&*t;KDzDZM_h>+Rd%>s=dh@zwdkSI*Se&Qz@+v`=3l5=mPe zonbA00UrZ_RG>uH}+ z_WlrW_MMM6<3@b!2UBr+NZ0G>8l_ju$J<$<)}Q>-KZ{zL@(te(&a1(s6Jrwzw6#tps#; zN%j~rtwm{+v^R5#I_4sSag_LRPZ{I7lYh3uPW1eKgxq{Y$e+(fVy>|`8;Q{6FH5w? z(aF9(4gN@g&LpNTalE|YA@TWgm^Cf{8K+~hP-e6$vQZE3j<*_GLk7@0IwXK( zllYNI;J{X5VJnKdjpVj~8jvxXuEdavhY@P6M%{5{{hr!qcfv~_B)DU3C^ZP8c-Ma8 zm4fHafAehcSxnOjR$mPC1j0%X;#1Eu@Rany-dr#TF77@WEv z3%qE+ZP$e+Jr1u}hkis?j6y!7#vVY&2+tPDD-i}4hY50f+U?uRxy{#&p=U>d_SLlK)ucCar%YO%?KUWCUoo| zv}H*FLyAsqLK{PTzdh_NKW?ALWmBEQ?b0@MW97g@R6qXV9e2N4|OCBF+EhC+;6rub3TWRh^VD57@ zES#T>{G?#o5`=z$as~gABjU7TUz;NO!Quk{$hgEWGH$kH?q%#DL)D8YN0c6)@hu`M zhaFKOJ@!IL!`@jE#wZ}I$IBj#ok6nm+}UhOrrAI(MeMtoPB$Jo5i~lMj1FMWumA+s z61lKxZf90BV~^;Zov0m}?pU|lb!%p1!7y*zq}=hTytA|d(CcRD2J2k&@k~cEL>uyv zE?6$y@^?70KErz;J1dGC1Cbj(Ree9DbnymXuh|Sh_=dHu;%#c2Sg0vgq7oTmnoK0Ue&7hKkPHTelMC;ci^n?=$5b3F89#0|V(DOYj}zSD zMe*2J8U2qn!bgJJY>i4J*J0rG@85_0*fs`z+V0z<6aLwaF@gMQAt$H zf6;3}dSOK@fGtr*#6Wr6P?_>hAp9jKghh%O+o6{8Ti%XONk3$-9H{ji~K9%1FVq)H>i%`bV z>xrYXK?E@qboV==v|~XXDiLTGEYQuWytC27G`*N`diu-w%xb! z@%^BdU*JC0bc4?}A}|;Kuic%hr8oRP6b#DInu)rIaG?sdbA@6`uTt)v+JjShXm*AK z#{~)=RGFH_N95rbfWjt%z?aaq$+Ni{Ea&TN^nbxxtf;nIdb{1y{Jx?kQrZ22I_{NP zqlCo~GqBWfoe=FFLHiC|Tft0{P7qZc{>vhDWg0oT_D$YmS**cfzk?xNa(v1h!t^wH zWT&~;mfL!^8tEL3?Q9x*a<1&Nx@4ffrw1@AHFTy%&eZsCSGL}rAhE*w-K5DII%k1p z1nu%=rLgA>soh#7|)hApZn93Q2%6>7XS5;~~x&3f0p>9Mp`OQnNYx8w;3cXMYLT z0~gm5i|b+3sn2zL))IcqiFiHc_pRN8P^Desf7`-d{wTQ0cJPBMxz|@d!%0hKIOa}W zVUF{;O>#>1?nzc)&QFR&w$q1SCtf3=!`uGIGUh<_Lkl1JQKEu;(LfH>Kth*P>e^DN z+dwK6HIM@WnjcLJ)m%K$(#AcHVTOqh$rMAxJiAOeuKw|fR!Hh;ADDQ2(LI{-zJ%q5 zDPhuy<8TmmERrX^ZUxDIeq3(IMp;DEyi0)^a$#oh~9=x9H!Mi zu4?EO7O5#s=@t^}=aDCr3~U1k4I{#pR4^j3Jy3|?b8bXM07>>?Hd5W=y4df>aIOY+ zF|2#^s23+*_4(71o_HjG2WDpgiV}W84WOSn%>R%zS3z@>%Q$Bea6p1ABSFyzj!$D4hQpS{dA8qFp&F9$<&BCwIULB69+%+t+j5y z!ckLWdhD+v)~3fm&qM9Bv6W`fBL=7mWs)H6z=P4KD8ul-D`Y0;EhO`@`0)4};hKI> zpb|d2MHN9E`fV{MCgz~H$({ByktbnohMSVDnc7!QnR;B!qjvCxM|<$7>)??+t?CE8 zigBji2X>OGiCd_BId#a8)6Ne$?bvIpA*UU;^_UYIV@?~FHg%{iQ0F5Nr+n0**I)U>?2Jd2;v&@)^%)4xz;{W;A`1LxVW%M3%-D z1cTkt0`N)mOL(*jLq4gdTgH#!^AG{S{-*>bKR$O;VM$J+>zgZXB+T&}c=VU}$BC3u zT4nUE-H=aKtZ?6u6>go-{cmb;;7u8L2M+K?7I?$T{ci)!gayZXv~WP6 z+zmV&t{xGZP3$CQIEyyoECm`)IPN0EyZkZo_K#l($(4UcFeU@Tki8K;s?&8TbPV?b zU&;0tD6n~AA)_#bTL>vec%tJR%4-Ex-qHz%I667e#xxBX;19IBbAVdnr0fY%&K7;{pt01w#%8X*qon_!oWuLc^2t z&bAgr<>`nkk>5%@{D%zu!Cxxr9UsMUhGN31gk3GLny@w@N=T++3al6G`whEYmN^_s zeE#wtU}}Q;V`Ew8m0>z?U^=ld-K#V&I0VyA*$xnpefW}R0|9GdyA5QwF9HkQE^I&H znH9MC*bZPL?-?*XjD{N3eg&$B;n2c$R@f{W@S+)so6iJ;z!JEzNoSuUISLaYyBxutn3q zb0o-_A#GrvtK+u#SIrcWMAwA_yU({uPY=Iixn#$ra5%<$&`H;nG+XqZv|+hm3bc!b zm=sU}>R-ZX(Q_7K&TZ(9xeaa4`y5tqdz>{d!FS}qchAE2AgHJIR;s!R=SLREJJtYW z3)czCxdPCqo|MJ(XY5riQY01ADkW^A{AYnC{GJXo3ao$&J}}7v06@|oKImIM+yLGo zjf4vp8BnROx zuT`eTC(;-^e9O?&YGW2{GWHGw;OY1ViBg@U%?bdnfK1ALUSLKBFttNL4b5^$&hMqO z2sbuE8kSM-=JSJQ*8xr2#5xSR{R(WpmMfoHb#ij`298OzUTIT6ZVbGj&U!2@8hv9nZw7AF6j8*HE>LE^TA$ETt<_dRaUk}Dl0@~-z6&hwx~=RPl2UV{Ja); zp@n9&ztFTMzm}i-q+E!Flx4>#O+B$q-J;n9{_(2TP%5{k9cw6rwp}YEnP9u1~zV{1H{eOM0W z3Nqs2qf92cfTP6xhC|9eoUcZzf2F|prR}IDFndcy-IK>pW-dJm7MTB5` zUCa1RO<=3SXeB)fDc?Xn#Bx zCV<*p6YGcvrP%+k=|xyGQEov3_5bAxDN5CvsjHlB z9hYZ~7<0JhSus#87MV)9F;<{}OwGp_qtFG*4ib`AV^Oh|j_EV^CQ)`)QEw6X1;y_8 z%BHP7#)X^2)=iS8+T$nG2TP=ZY26TZquAl{E$jzXs@`P2nvOTZx{wx|$;oo^_5hdZ zb&ciYjvov<_92wcMHu=4{3~A+7n(ybNBUstWWBi#>ee%UMMaVIF8i*#TCNRXaorEhaZvF_pK!xa>ZIz9-N6bJ?q z^@&4;4e5^G>-mw%tn}>tPa%T8{}g8IB8^j~mc@vAe{x*vQGnRZ^5Fs7iJ5!v;bcfY z#R0L$&GK$JnlGk183}00zCb++#f!PYPH&mYxDam^{D$>2B=Wku< zL%J5kyu)n)Yk+qKAUEKr`;9a^?ME!(4e^r z^6)i?&MWviU+~K5hKO8v-)Exnj^Ml_ybdA-^Y;*E1TK==rY8N!LF}$g?BdaX4)5t2 zeS@e45Zq5iE*~Qf^=>Xh;l;>kleyz}@n2G;a~BM!3PnOA7QogZGX)1Y@=$qAi$&@E z6AfoK+?70mpMW(1EAGV!1>jq{pWd+ICuS+JL<~!Es8WS5DA=XWR)GMFk<`!MjD|hQ z*T?($rpYj>n=rUpy!m}LK-V5RzxvI!;h$UI>x1!jsBH|P&qTS(k@Fzp#SY^2E#g^D ziq~_98%UxJhL`(WI{&hsrIY0cMZm|^+jIn%+xs)n!MoYpyG$XCI#5SdoZ59+4oxOp z*=B@VYWa!^dLGrGMsxaax06MZ*TEU7$Qh&RmsET2HO=b{i(Yg(?9G1@`tL=fV`!y( z{y0w8+{{FNWZa4J=)f74Dp6OccW{5sj}rMPN!3P=bMlYR_&Uz$$x9a<$>p=A#|O-+AtV_lI#S4M4NWc?u#Gh7ranW-D?E#goPtbrPJqQbBMyp) zPqDn=rOl!t8-63YnK#6WX4-o}pzDA@&^amwjw8Pa1EB*0!RLX2hjI-3Y+~TSz`)NH z78W?yu5(auM3=^$G_%Po!A0MNi_peJKiMA_`yYyP;UaM1 zBK-VtakB##wr&^rRYekmV} zwh~?@?#u-w3c<+FOA1kAAaHwyH<4|i*cJawLm#;Uk0@`J4UMwTBB%x(7a(IBkU@VJ zAjO|Lc-(&r!GXu8(1uxH!K?{zE!kGUq5cmyav(AL@97w_ZU+{hBsO%qh9YbtBoMd1 zCLo%dS1}BdlAvSburd%A?ak3qiB&2*?9$0i+QaU@9UL&NvK;7IF+oGy_$b?fl2?0e z9q(ELw_X_QMObK~T}$C7g!dCu&S<e^^gfazBeVAYpVXe)83i)MLYIU@sMM`_g-Em51W3 z5zpA3zoI;03ZhTHWNTfr)%m*c;5@+S14RWyTO+T`nnOHI<0gW=tN}}aAKJio%pj@_ z^lacO%s)q%F0__Menfk=NYeI3m!T0!?y_1Q9v}E_+y}t@ZrImBec<^+v4kgqKv1*~ zfUDeF$}OU(0z`E&6ge;y9vMT&H~uj&6!Q(pxPYP9#8CXnF~nUQ#m(Up+CuYlf=}## zPjp=PJi{ppQv_M?X%}QrbjE*Ho*H;&2(hi#>T?tY9r&?siloq%MDeyAeNI?P99W8v zjHRPYYHP+$C13?PV72oxQu85FgY(l$%Rnc(npx5|gd91mCCL??<9AcUZ3}SYO~{1V zF-Jn3JF{}beZX1IfOgQe(dsbii7FigRLnXKScW;mtYh@4XB`TIEiS9*D&A}E5m{hF zOJ8Omhs-{D4gz#-0wn#$1n~K(6taxalKVJ8Zt5@qvF7(&eZf97-vEEgfK9JJc-e3v zM;%q00Ga{Oxt7Fy7*D*PBEm16*y4BSeKRaE;4sirqw7mLx^H$g907!py}lB6%_Fng z^{jSwM#gn)hQ7fQEmGE^pNR0XJVxK{aRfktVBm;dG%)NeZpRa7U_MTN{Vwq6)U0*1 zY=A0yC9phmv W3YER`6B1#}agMs)Wk~Ce;v_BBr`xA9?@}BoxJDvc5G7v8v$oeV zbByct&#O)A^je&Zc~$8;@HpoUgnO!>;GZft^}%NoXLM#Ko+um^3b*aT_!K)_SY2m0 zk|xerSQkcD8+_cg*yTXHcCxKnOz&?uGyds>$CLHb-NR=H(=o5KqJyD|e%X*y-X%5m?) zYRh;8ll|yFyS(vmW_k3iJJS5t937s_V+mvPOag4?uS-PAz#&rXm8&EucvB>YbB6Ck z{l#df;C8xv8@)Zik#a2&QYKHR4c3aJlN+57`w>srq_=4%VK6h05@Dv(g8c4Qz0|xZ z7#V^=fOvUfz+v4s8^YqN~%H{25>2Gwqg)i7gmiiJ>bo zLgFq3SR>e`z4j!OD#<|G(db;C_blIPf%3Q@Lfu6Xw0vtbG*<$X(ehJ0$O#MU`L*0S`Hu&ty_q@RzGMYD&pi zK3qefcu7}0z$5vt9hS@_l^MAvE)EJtKmaN#2xRKi$}%KP>a}LN<#7+4&Izv5p@W8#ar=$vpUx*{IXlVb3-1{2iL`sE^?wK z7yy3RL=46LMB$tCDjyF2iGkZu&^iq$&nXgEx++ImeC@q&B%~OQu@BE460|)FLG(?6 z==Dpphs4umJR6g*hExq;P57^%S&)K2-aK20I4f&Z$@m*(spcr&faMyp<{nHW0+5G9 zhxkK!uu(jrQqtO%S;hA%xFFpY4Y^@t0#eFSoPxH_mv^2X%wj^1sfClZP+h`Q8scSb z8Dnmn3*t9ZF2^nAh__^$Oa3W<+EBl5+Pfk*GwO+~euinqh9jWJN%Nzm)g>?mRGj#@ z1FPQXo5BH`fVK*#loU!;@uNY6MKzbG`BGsmg0^oVxV$q^$L;&QoLRnryj(kZ`6>CF z{z%CnAK|e^u+B|K(T`a^LGk_sqzH(Q{?fGLQzAv5CG^u_8&1U?Nk6QV zfWFdC5&Z-<`f&~V3EXP*Qy`walzt8g4RIL#BnFk>CMY5xf}wnW3i3)QsHKrm>!c*K zgA_a>Bgh?^X^@DaK$6i{DN{%#p^ZvBlS+DR`;mxHnVaJKHMQ-|YK+oornK;tqLt&^ z=c#De{H;AmJ`h`|d}!IcMSuk|!3TcJ^pK-bQZOVNho#|@Wq@VU!J{;R1nlDciR`Lo z2TII776x8>1c8d@fSy};E(kgGl#POVFCKbYn5uq-U~Y#RL=9kI1BNzW#|G@$fIS{~n7q3EKdBR@wE@6IVow9f7=3De^?_ztE zzVRw}lUQ3An)!XYFmt(BG2<&!@-nWuGNnu7dPW;s9AV6}Li$ z-i~P#?dBs2@Ph*iwMFNR;5u)UjE_(7*^3eG9;>}zII^6Me-YeGgos1~wTs>2>eZd7FIJ-IjHVniHy&S+2`Xk8XVHCD8JHbR8UExPdhdI)%f5mLERld~%Z4jfP9ieaWu15A~1p z=qCr-tO2}m9mPW12lmufU3mv~<)vNu2X^JBT?Ger6{KB-2X+RX|K z6&mggPnP8A5#jLG5%=yNjIPJP90OtUk}R2L4BOx81|+>+ zeanH%Z@*bjzD3nI^C1lAfsrbcM35w)#~8V`6R8K&Y{6I(6;|lchAgvnckkCjJ{lJUzgOES&v(-Z0|6%zr&D5 zT}~e+Ycc3B{{llfD7pHgcjwHkndxjczSsM5?R{OEeW_Q7v$OToY-5)Xuxas&O=5^R zKi!xQ(V~xZW>(2`vo*VMwQj^rTN~%htYplGMdG;0(ywPu&+HhrjwpAEgJemSLdCrz z2W%0_ud$&M6IvlMEs-y#;Rd0aB~k^_1H-JyLs>gCql?0;$@HE^6#Wl4>Lzi+Ioe+_ zX7`ZI^)$5hG!#9FgaiN-bm$r##ttTaKO4t-m+(4xUMGFUuDvhMe#k*2s`Fn$dY%6g z7HHnJg|4*)ezk7f!fo?rd8mY8Sr*stc@#%3?!Ql2FZ)59f70FK;KPyPDOXf~o4fBT zlNCLepACfMJK0RB*IH^SH)Awb1!2Y}xFz4z`_Nsl$H-k!OqE@4bsbK+1!XshHvZM z^_RXCS)DC|vxKtv0zA6OVkJez!(zOW-vocL8%^%?4EU`HOlRw;r2k1S!J}N@4_wc( z+#O@NU9Xf|+LwDe0*ogdRmyCXWuJ!xaLR=+F}b6T0)DFPr4S>;$w&)v^1tKNS%zD- zN+a=Dc%l{R0lM=LP3avv!^6@iEDtElZwfIL?nLZ5$0O1+G}VPSdXSBH3*0NiTA?Jz zCLiMH`JZ9lBm9$K-rd0f&w*$~)Tj!Ih6#-yO_SgJmS zttnOqC1W9VHq-XLa@(zJYmd*NBDFNxu*u>k8#URu$-}nX7e;>hvq&PdcmyUGxFf>K zAX(FF#?MPzKO(%wdfQC?I0(O5G8Iq*AOEilr$8JM;x5ThRx~<#!_c?spiR|S51f6= z>%N%RuIpRaVAo)S`1h!6aFz1G`Y~)I`>V|mlaJIEF`YgWGc*;%Ls{gQHj#TX$#D%H zS&`&Tb}_8n)?gP~jYccRhC)~KCfn=XG&V|mS$d**?#=&m?f2#Xx#oND|6EIh|5xY3 zJfE@706#Ye_Fjks`=uPXZQ55&^J)t5ck|@H!jpR@PY%Npo;)tz$fqp$NC{CYZrA5KZ{Z@ zSHk?PVjHLmsytMn*QC)x?u@^lP8~~&wYo_9CT)f7W2>>BI;TIb00|Xqtm9Xqv9|bG z?4H_c^i^B^s;!c?+8F4{>cDw9T~&^J`{n4WeH*tkO<;c8FX46;zi`EUKwt6mW5S4% zS0(*bIfHALjPBt?zG|YIc=k+y)cG~xk=~I`@GI&bRxbLKa8YvqZidqNI|;TSi)=c| z(?tW>R+iVi@?9voZMMYYC2m_XUab+8b!1tPE%Q4eFKmPt_@&gDq=s;*IbZU7X#9F7|4aVOpe1tp&?pHHqOV8PMQ;Qd zqZ$fBYPT}OPo!?wc;H$2CyUYQN|Ot>bfNA|wX6r4MEE=I<3*KQgTrV7;Xji*epQ-+ zXJ``PyJ%XiA+$419HbXNs5)hTjC3fJ0(T;z@H=^(m07z zYx7=56@=6HFiB7_jADGHX~gK>1Kt`Rd<^Upl4Q8m9sp+MRT1;@_vmaz@mH>w{hPDO$0R4S_r&rgoNcU}ejEFRD9U0huBp z^*uwtU$NWO>iIF*S)hg*5cWDX6CuP`7*1O*G1lW^GzL>viUQXBpJQ5OvnP6uet1;@ zu|c)+JxejX0DC>wCEPkvqJXM=8&&xxRrw`5TS-j&+VccO9pLm~Gvn#$ z6gBJJFl)VIY6mGzdB@!O9b~>6?`yp~p}*Yr0DrknMLU+=U(U206`PLe7yH8uHkI3f z5MeMBU8S9vCZuZqV=r~Gds_7`u#tLTl6u(R--sn{Qxh+<1uwV~bbg!^k=6HibuCZ2 zeaSP5JjFPSBL8KM0FGo4%3PoS20U{yfB2TIlmTY8{pMOgo2-iYh}IuK64emRYG+F0 z<)mzw0IOI`@)Ff;S8to&zPWphds>RrT*16{2<5eF?#H@8PWGzfXz1@);uYse&nwP| zXNw26e4cSdRa64>Lt1ThTI#bOrMWkH_NhQ+su~s-#l=ODSKMK7QEV$xtu4&)_15wpU=hN1&v`$LA-o)YTV;CdL2=(jpRG=W&xTt7@p<3iHGEOS zcdq$cUG!uPgtMR~0eWij8iAM}=Y4!@qZBaQj)mcxo1LDQGj~T%PqS^7xe8V2 zfF!0W;zy+@AdybSZc6(_1#wZqh!vI;7u^?@JQS8p3QMMiCI2ieiO4tZj?xeMcS)rE zp@78+Y((!ZV58*8!xM_`>HXZ~;ej5!q}~J%Y19(xJ_-7PAKNooIHbZ@7LK$+5rhLk z5z|{M9r4lzz7v3)7$)ojyA)oW{`dTs2o{ndP>ZAf*`~QY(}1oG=-Gh20Df);zj(km zTD{~vC{@^GY~oSw*w2iS6u=%D)Dn!9avM1Z;J-RQAu(T@2|$4 zlSXpL5!$NX9xLI+1`E{ku_YKnMcS=E?!M#$(X^y3w~&Tw+Y%In9~OSU*?P4Polf)zB?hBNV; zTy;T0gNBlaXQ2`}N`Za~Bq$*%q$$vi^K9!#57v<;*-pEXP3u4};n2xI6Fv}XIC{pU zk*l`Tp2%^MZj(`+lH#X+8JJD2Gt#|s-xqSK@9jJ&yIW$Jo#9G`r9+J2HU2*-p~MIVrH7=&d@D zQWLZ#eWP@vC}>nQQq)PDp*n#kTTJ(QO!EbM{(O|#w@{`L$ia1cIm)CZ!8uU{$`pGs z+2UB1t{wX^)4)Y!n3brWvP9XzJ~L<$(7;|fw1R<#W=3~z-3iqQ;265M?(wE`-gY#7kWt5*pehNY)OVj8f55ilzZD(yR6$CMeBcAcJMik3=yPT#32 zf&8{b0`&|Dy&$FSOn` zEp}f8Ly&AndkPM?fqE1+@IBFcF1;-XdzLN;(YEf>Fn}Wj@PbbF(P|1!ksnR27j&?| zZg1WVt{7Ya=Bm};w)kov=Ot;ycg1)76i=WT;Nx#t!4xP7(RcbJ%$u-Y;UvDh8SEDg zrlw+dQ1n;dwViFY4f6AYGRLCXG;wEHZ69&bV7bL_enXkKJm+o^Trm{U1@$lA3hJ^E zlK|K>^N&HVXcwfw?;sK9r<3IJo749!oCdtE9VyknV1Zshdx4Gi0+aTFGTM`t z7}GE5FVQEGc51;T5BEQ~^(A&qYV#C3H$kxhD$M;UN$vR5RY*twvm%41?Q;Sbmt&O% zL9T%29?wx#gmv5SEu+J>_%n2z#;^DrJ5I)59>f_DNhZ-v=8JSJJ}@o%=s8|D+0W05 z^^{Y?0{(>yyh=&|x8w~-(@JtVjM*gmWxUUfZrClOS{t5N`d#vS>s*4`=;yCAXN_+8 zgex%wg9qpYT7i%cqR#?qwE6@Zao+>i?^usCvP&-&Oj=0VoDL&kP?W47FlM!Q94CvG zl4G~!)%R+tM3LHq^;~q1V^RO0W6{c|qJipjnj5I}R1|NapRbJ4XP-_*U)Pza&5)Kq zm85^~7-+fNjwW*a8>ggLy^3d>#^EN`qni0F(~=G|=Y zTlE*zXqf1*vKGZ&QLkx_%hz|U^_B8YEJ`W%2Ho36lA626K8xBOxHgXAnj9nO*Wnn# zP0W6;K(P|vZ~32jH~;mX!5-xG_1eHODbTY~pl48E;Fm;s+oeeR^`p1tukI+~X+lS4 zqv`!UNB1M|(}YS&p_>-EpLC8XlVdXk z02k1X4T~>XQqe$EV44aj^Vh{15r9-E8LRI$1*~}h;A#&7J;nlI?D)dbWp2loWC$Csl%UE%%%)>Q74v+*;~pZM>YECSnN7!FHXVc6 zsOxqk4V1qo7hi0EPZz`ipjZH{PRM&mosLuVf$);3BPLLd>C8{hb85KU2VEOJbxnK< z-3nRGQZF$tMW&WIPak=cP723`e zeDh2Jr-BEqR_`c>2~{0+u!Mg5%UrFh)K#!tu5GzobGh;{kKa$m@y8YWIA464jYq^B zXz6Cqx!$H19iq9q&tg9r3Qlmd$R0{ck)RFA2u%N8GMBOGJ!=pMFs!ofpyg+@IO`B2 zE0_s5{ZXSNKn~4$MMtQ_q1PB1t#!+AQbvU}t-po%NSG!}p3BreyTVUlbWO~t|Da=! zpBgNwG*Xq6Ta?4p5%7x8V8$g)(!V&0U8rGA=b<1@&5Z1I*b_`M=@6>sWRaM z!_3N6vNS1-cP$tn7*^!yOglLLQZqRb5}yzG z=@t-qzno68?LL{E*zYngJ1b3)4yW5uaek@Nyy)n0uwj3A$Yqy0Ah{Ifv-)l1mI|$j z75XMW>X)8>?!}MlOWzalqxf}XmILKnGRau>%rW;G`4Ownkl0s_^lCYhHIG2s;7EP1 z#HUAUu9_hwADIk{N%ExnyXQ(at=a}Iw;BA7B1z@85;Blf4a-ro2YHdOky@~+x>Myl z`PUL*vVe4ZHqs4_9tF(kgzvSRtR`|!aIlDLJ{#RRxfn9@Qr~EYNxRs z*M{%D!B&yJxFAyoUR*9CKBJil_IdeXHvZs#ILLk2ZlN~ZO6)OmhlJ#pZsHMuR{YTs z!E?cOJW@-kQu2Fab2~s(?~UvO6?jX>3XVB=YwKcrbH0^zw_+Mr@Q8zdU)yoY529VE;3@xG43j(`YAOS%g*x9SYeU8%@*bOroJVBFzj1Rc zVeVUS#WirH15;rQvtWW7{_$|5;*(euBN87z?0XMYWJ1WNY_|-nwX$@##g@(1VKNt=zw)?k=TT&9z^w50h)Yw5aHo}^6IfV_Z?KkbHz$Vv4kyhq13rzGK&hB83T(9TIF66+ zn`SCXZc5_GHh{ZI>UtAOnjI}I72~B;*&(e-HWVBpdAz`*}u5rI(TVpV7MFDAY_@gYc zm7Q>}V9oHD(F8JT0C%c;_qJ9l@S^WeFH91K=jVQ-g197(`#&<;uD_#50gVK*LA)K$ zVT|QWNjxS1mXMG#!vDRL88o?fw9G;BZqSt8(6{UlGaPoM2_FEmti2jS)iS-P%N5$n z+@Wj1oPG{-`t8sQbK7?lbI4e+dVUm|`zl4HgSPI)Im2#kd*pXE;CmbJI}4DB|D;!l zTj=ppM0a_2=izs7aejOE5vdBjGpzw3ZBhO6?|1_qyW3V1S+NMt7VUsd=zjGK4TKWgl0;AfKNO_TLd`k}G81Rdae9y=2GLc?+M5@>lh z$n8>d#1QEqr}`egif3|VZ1-K;H_rlh*NgVDMeQELQBpw9^AR6RLkwWBcNExPaUsaz zV1EU!&);7>;%cMcvD^Bni)&-#D(Qt&1_|W|JQ=qix{vVn}QC#rgZo^P5XN zpGkn)(H+i?b^dz+iiwab{E%dWPDzf~5aYX1G6aNEnVyA#c&DB|g337MLqnzj$nu?L zMa2H*U;bL&Nb^d(cwTE=I@nVUSY6WHQAnT6(iP1F>TO+nt?3+p&)mrEc`oDz7IH)1 ztBPC=+~eib>=>XfF~UqV?_<8XzQznoLT5|>uWxICV^MfzxV_Vw^LI@&#F*2M?-iV? z@jsGo-xT9qRk@=0FyGdm?}A2TLnCzVOZgD~Wq=$nb-uX#4q5{TMg|Tv#EPF)=8FRZ zKKG+BAk?A>{GIR#Mpsu1Bwn6Lq$Cb_g#|A6d`3ER#SfHRKhiSQ9;#+oNq_-d8wMM$^KipY&D{Q2b^d23Ep;|80Gt%{p3-xd{ zwJXqi&QqYSg}iRpckPi!i`moSc|LZlS>mJ)!0nd6qE=+{8I`7)3Dyq$A7p(3mXWVY zg`cEYY4U=2Ql1gHX0B(?Trb+I-B1(Ot$o7sh% zmiFE=@|r1S#gKZkcGpP4!hhPC?z(1rV9#{y?WN+KGhJ(Vp%cyYyN_ROvQIw8E;V%E z*>l|O?c5C%kJjJt9sAc}s3-V%U#r6>7&9EV!g4&K_c9#OyAv>A;_jP_>z;I)`mSm6 z?P;oT(8Q!@C{raxGTDC0b3QHZK2gpWoWLp+%H*hMlvmde7eSK=^?ePr`rV{>JiJ=x zzEGHYWF%{`!a%O>;LiWXCS;Bc*%a;l#9TW@1}=<*7DoDkQ(Kwnt(vWR$N4jKuzyTb zjLd?gTk$|pI=O4j(|bMkh6bJr_Dv3i83*8y*B(3)q_F9d89^ZfT_m?kX&b?zIm)*S80HaN!j6Gp zzL8r=3@7*Z`AfBL^7@_&wULe5Zfv90ZR?07XbOkaWJ&9g{HdThnSWBR)B(;TVyc~w zoT=lAH59fQiK%J`oE11zN6yr-D>di4=;DQn?*}lVc=kBtdmpY)U}P2;pD ztEY?SRc_F$P>YgvF2+vpb^T-ST5T#i;(cqjuf*#1F0op&*S+F*!83loIFpZ&`N+9j z_|3Cfe%Ai)gx8dXt=xcfk2*OQ*&%5qrlcjqg!->>NZli2xy7kb1z9O4 z=la8NmLw&}+85|3`!fh$59Fh?7d2#}YEn=&$>#u^?ZA*rxgA<^Pv0xcJ-k2B;eY`W zIKQdz5>E*mzAqQg_t@g4E1VjSLF>38rzN)6zC=y%DXitR#Sun82@RDUntktxm?XE` zETTvvup_%)r1>}Bf~U89(^x;n3rS6mDSfB)cx=yFTvC_(K`!%$&stkg+iNbMI&j+j ztFJL}?NiQN?3%frHFH7NCB5xFzr^ax-^lZtU-HzBjyIDS9kTh2Tss9F@zOecyuyDZ zf!Jt{FLFIY)(!2}=LBYwF{F{THNge&CknEuCBd z-9gr#i~j20W;YV^JafZKM(IrSup`lpz*li+Pk$cT@46t|w;??6DxJiGI{YO{{t1$1rZE>^Nv;|;(eKme~$~WRRLu5 zp&wsy=#I|uO_1%4Xj%{xC&F0Ig|UH!vCumPV~x?KJ#H3(cDxbfYk}oL5NO#cFS zJR1Q1;Q+w6B^zAHbv?=fQ0w{ME&$l)3!@h&I?a|#C|G%d6aVPb1i4hq*#w8T`D{W{ zi6tC3aRb-H`S!#G-Ge6%!dB2T=18;n*H2D<+b-B_HC}z##0)&w z#6`CF=6i~VR?JW0H|;@Tl?f=I0A%v`4vxn;F@}S zZwl#b-_$4Moe`{Q>c@KOgA=iXu;`NRxQZbzvhw&s-C=z`$~k+-3tIToZ*@H5q8}}6 zwWY8Hf2e?Y$f)@hxQ8#OVKuVo*RK>vp$ka1^d86kO7~V>VO&agSLu*Zwl0K^5K@i0 zFldLzZzA_!bKpBH{)eu_k&$R`EMuK`=Tf5FGaQlE{20>nLtZFy+)~P@rQl;_TkkO^ zkMiUY$>GKM!;xwZcVv}n@ga58<>GXfE>aMw5{&rz0(_N27BaT29Ewz0iRVE@>BAj+ zRU_^pf%6+V_OA( z1vIwzD>``ga*35?H%^>DHJN@W$9R z#kLsU4V>1jyRYnf>z?0JZES;9&u#By?vL=w<@sy?M9&W&>+GEG%S>gr6a9{ZmNF?SLVci9in@2Vp$-#P_wJ1cP}@tacVJ2 zG_$9e*uHCG?GuTfw|C=`8}D7D(t@04wXU$cl{T(Oa-Af6-B69c-fio^HTwg5_WgtS zbt3^$w(Ksa}UG5dewc$hfuX>Wd6X)u~Xkb+Y}!+wNrWQ zxfGaP&z|RSP?gGCtfOiVH>{(o_tN7dDIMWfl!hw$(uAIVMC;M!SF53lJ(qH_7uyi% zhkGE9&HN=#JTdx9G0a0v*LxaRHdXcWMclMhwGS4qa0G-s(_X{nN(8M*Sxq=TocBff z7@$YDn!I06uu`9>W~CoS-oU2UfmfneoAbJkp|`t;*?nt$x(%1TkkkJ|ctpbffFF`Cj@)6!VX!yg&SW=1Epg3Yu~m z)KG*53LgyzY;QB`+vE|W#g?oISjBSkBseDiD9OXe++4ly2nxUo1~8+WLt(2UgS2wF z$%+RFWPiU*VMO&EN>lyA=PlK=n3DO}lStNhx=&zFzLv3v#2?nAw3`qi%DNM-obMu! zVxva1Pt|<0GDTOpBjB zd7>?DGJ0sVAJ@(DwdX%EO<(|w&Pe7eKNbOUkgb;)SH!iH77!sP_^{1=?1c`V z(0YM8fj!axnGH?RcVZvq8>*RVkeq&qIQ{&Y)9ldAECY0XGqE}nd4_N z%sM+lhaDWM!@gm<06pAK=5r7OUm3y&;OP>dO$M`xSdAtmYOK~wJ91`VkD5tRIi3(f z{eH0kqvH!jvVl|JZixpZtrE70Ks6ckGNXJsZ(L)?q{6>~a-~{S15`5_GzLzhTKHC& zbY)b;a-_T{1whO80Kadno0(yPNM;CZvPQ*RDdsSl@Ng(5c)KP$T7JXUyxWXpmdv+m zgt$s3ep#<%?!bladf8P&*7$;G$%r!5^8lt90?l`XKtrLXsl!L7b}*R8!COw@{mZRFIm<)w&qRa)Rd zc~Cp=TBFiw!OV2x;1uQzy^He^itm+(4-7l`Q<+x&1pf@o$@8oYHcHeKiE*-BbrhW@ zK0k{@(kEXuYP_TuO?mejlWhWUtr*}mShM?%U~2uG5V?XEs7XaBzJL-%nv!&7Ls%Yd zXAzt7xds-7KBwv9Dx)9HU{>^Py^bWY7dvntTDbSi!v23O7A%QMS>p`1{_ybkf-~kf znHq~E8qh^hKnI%AWg7k^H*n>nrysLj#8+EQt<-R@_ePEd z-aC+=2ICv6EuVg2vT3yyaID70==M*y;$M*r03btPEe2(5k=GKFq8yn#Vbi#o%uwNU zD{e6hc#+Dn7ey9Ga|S)ZmdG_5-qQMtO^$3{t?TF&k94sE$$ZZ4f~A*lMv%_OKr~C{ z##h4aF{fV>`7P9&b+U!8%Dg>LE+2#!*Ku5^W>?8-8*_orR`|c@6<(jT@~EKUyuI=w z|Cb7jy!q+&Cq9r6@H~3p$>Ju9A2`G&X0cp9@Dnm@k?xvud(;tW;gcN)_2FRoMe;m|#l>jw!M=NXlo%c-t}>vj^ll zg|w`qFCwMIykZULugI1!OI~BYmbfgj^|5Rr-S-R~mtj|zc-cXJws9NL34~?)VM=qH zg5n&^q3cyTvN%GX(^EtHvc)*N*>RZgEKW%yf$?HogATyC&E)XbV*5si#9;`b-KK3Q+;AQ#u!IuS@; zNq5$Ert6HHq69(tnk16F_7&Lg@R41Ep8QL^!6I544f2np4}N%80z)WTF0^=%(yGVE zpFfIZG~!KrLIR3j4OuOyHYK2zQ992gD3+h}grs9RVb7Q`mTZ1VllkX|$uw<&K3?1Q zShrnlQOi-nx^(QPOpHKe9j=Hwi~UqO=T%#+P^#S(dpqmZ34NL-^N}_cQ+1YJ;;P(l z$`#rqSnh?PmK?6u3%L688`q)}`@gBEtL!_dt!Gi2b$!KOctOr-3?PF*J5Hx>#hQj` z1t|>qjlcb^rhU|&`vmdPYAG4S`ru10BEdeiM-I;KObw9w!a3Obd7NT88ID++@751( z=$gh54X3nGMn&q(n^k$q40!wSOp$0L#x`paWRnYPGYy56s+TK(tdfC#MG-Q<$~aoS zJjF;T=|0WIpH>Cg-f+wHWpktt=k79r8pB5hQJKMFV-5d-miV84r)#-{$FWh?{5Oco zM-^*j8OeQMl^;m=VbyWnIH>goRyP-OPDC8FdlIyGWE91e)+(#wVN)qL?3xwvbY-`k zb^3OlqY8EUeXG(6mb;}z5X_j(rMj2CDRJgmejj-|Xm{YC-M&S;yeh62H*jTxI58~acOvZ=^ZpGQt_h+|ag&t%+JyV(v+vJ7UjA~cAP!+oB}wRFaiY~@sjYb)w&UgE9yG>&0<$!scmv~%7@+vz z09Qb$za?%uAXj+tUqwObHm6zzwqh<_*RsOvi)GD3X(Fb8vish(6P37n@<%$nH zBlA56b_X_gBd3{UE+80koP=!6_sbnF$3>OoIL|=-l0Kr*U=B=gU1j!8SDC>ROKi=S zf4tO&y>?xKo2V?g=@S=T(u@OJtp`(rjy}093VGI6#gwD|_@6)h+Z!Qp;%;6}vo>Y6 zHTwI&J2UFY!BF)bP_?f{B6njGtA8#Yw`|QL7a5vtf>mAa;<1A2G00=%z((Q;W)h9U z(ak5+bs}8vJZAx7-6t&$0~ED8hrhCEb`nr>?Up9@i(J!3u~>PNCv6K?go^AC1kjsU zC!=y^)WIkZhTeSxhvoNBRvi`Me~h@*79&n_9QFy*lqGoGm2Y6Yvbej0Uam!j`GOlW z1X99X$$0JcXG~d>%l)Djn z;PIV2*m8WQTV9_)y{tUb$kFfm0_L$pp_JRx8eyqDGmh%qb|1T z;sX?*f0k;yDHMAYx2Uk8F+G>j4;dPqjVDbLXb06OpR-QWR83UZ*(n{u(ASDbx2dfD z_wc$$CsGIcPGhRbCcl1k0`mJO>3vPoJ2~EuuK8qWcUkt7Zy=+MN5AB`$>7!}seH7| zyoz;1C3W{5-Li;V4ey}ia;65()bK0q_w;E|Zl0&ihPhHrA}G#H-|3ps z4VTvajVO_4eN8~Yg>*Dw5Ne$*uoke?K%g6-&%*|o;FM7If^#F6Pv;n3M1O z73~i7%4=9TTPw9*h->zb^bITKIO9Ez%`clcbFQhh(Ff8@@9|(S!5?56_~*>TF9^DX z0;*hDgMhM?J)mAx<<9jU8#t+Q!Gp`Rb?8fjme)Al_+1we`Zf@HCow=ZAW@GaUF+;f z#mGMmP^%fB(nr=}g!=WYPyLSb@&(yBmN<+OaYtuVt{ zS+S@R_5zQI+cil-!h?V5b-Z2-NH&j;t)f;z{%CpC_n3#lw6z2ZsBta4tQWkAqkriL zO(yS>T6&%MW%B~a1WOhQIy)k=;9&Fm)_vrDoKLCmI%N+$3pzpEt7H$Bo5Y!1vL*LY z($=xSFY%P@R5Eh`wH1gz`Cc6`Jbo+SGhTDJuH6P?>p&-mSfG*YT)BfH@@IKw7pc0g zC-Ws_#f1f*Ly3zyii|S#4(q#pWod)OKXax;m)huUz8(AHEy{~)@m)BUWh;D*D(?5oTX=Qm4cg@8u?jF5%S&|bjkb>+@ zLePK(r=YLobGLtLg2{)7lZiGEf7FPT#U+&acE_?*=ZX|~E?fi_F2Zs^llKYQpSOJy z6v<%HEy3fYMy*t&{s!;yJ|te*v>D; z_-3R{=mJP+)D|-~aG$e7CgyZDEGj(JSg`oa%u0{qTFSE&nlR0nCLCI`5OZl-gi~_A zPz(?ZN4Gso#$b943!u6Q)Xu{o@zVSf=<;3Y3T<>nB{e2VX$jlI{dqEa02J7UN9*e~ zfQ}EgxhE!fXV8i}5xlD`v!s3}e7$9oKk&NZM&{syyubF`GcN)r(TE}%sg(4wHs z#b*q)EI(C_9)K;&j0Fw27xVJ~K; z=l5g$G^Ed7e5sPT~8GW;KBi=%#|!3MGt~u6 z(B}u5rL`HL1F8oZq+|S>e?b?;cgX|1mLAf{nkNWVahM>sYy>rsBO*(s*)+3-pA`WE zFZJ*dc~xetSZLqep*eK_nc?TJXVN3{W^{^=ji5poLMTVP@@L5xqF70rRpkL^mxs-= zvHJ3vx;X*?5O}dJ7GA8<6a;1ZiVBNERn1Bex~Mp|sW>W8@zeKjg(eL)R0OA*FZ5|W z6L%-4#uMraoz$qQjqO^)jzM0W*6qa2nkkBd*?dogF;;OSa_ya9UbT9LH4It8@WGHA zCBw4RF#oiTLs25H#3Ycvz`7O@yxyP>_(*(nrvj#|Yk_{4Odn+x7@{gw0G9Ou(ivc( zYXLI$OEJLmZJ*NE*e4w_hxJu*Y0-ArZY?*Ud;ICF<$&&jEo(bM&!r@c^aZ!eYeWk} zwt?(3z1vzh&kE?in=Tg1hR*C`@v&UOJ$4DNU&Vd5*cb*n9CRvOk~9voxYxGUct8=% zPjN~BZ~A&mg@}U}=GGW*_Uj(&;6-LzoPrl%O-QOIsqk=mM99!5`p!VEkj?K`<$B?2 z!Idg4H&vajA`K`jy<2>9me|~_)D(YetlfdlZJ!F|)2#c(t1%6EF(t)xwZ%J+x$GhKW=+r^hlH7oOi*u@KaHZLgeWejm$ z^8pr_$rT|(?o_b=Sz5bZj|#MZJn_G@QpK&v83Q)q{ju-uU6)?6J%C_el>eDk%dJDQ z(i;cfm@H_QLJ3xcGA5=wR@hU70J0`#Dn*6>!`MuIYz(L@2PxYQ* z_x!KY(E|VQaGAWn-n&rqx$bxTOZG781l?CpdA7NQ2>wI5nPBht9-oM1?S-u^weQ~9 z{zlf;>lzT6i=UGD{R%tDmU#aF(~1`JR_eZmtd6NLHXBBQt}5^2sgdM5Jq&F{Y`0f3 zo}h?dd7L*bDoEHoOzsH;V7|E6g0?q_J`F0nVp4=vj2g}&r;AZdKF&^|0_LiPm;kM= z^5Lhx>Wl!Xp4XhfYKo27`kDqLezTymSYkRGJcjuEBiiN{-doq?%I-%V`x7J`1m=#Ce2-a%!hc$%+2m6vD_uE{xU1Vop49o^DZoD>Lpyy!L zoUr9EGO~8AQH?9dvqrKj_o{BbW$L`nGVCIY3?b z6Uhp!`ljRgO8BlF$b0eKTG}w zYMG@tczJ^IZVk|l*rzl1aTe=>ss62)gM|5;QttJ-i8SfCEI{F6Vz_Hc`Fb^h>_s0& ze!%CbuhdS-b#8_SOU8C-9f?1Zz9iL;9Pg$!*pOpALBLDNyU!Amf35n5;yT38~q zzaoBjPHOwC?B8l@@SN6O;khaIyPCG1yh50nz|&!7W<~1(pVle4?{(ZbzCzkJ(oFpu zve0Z$F_2$VWm0tGQf8<#$&-HhT+WXupY(nxLh)&4lHl-ohF%l7;etCZf#29&AGv|v zt$J0PVm$!{ShG9Qm{a02GTZ#~nNmvT>y_RIlj_ni`Nvo2syn+uuC4B!=k83aa=irQ zR68xGv`N*B;w40S>*i(OhL(3hTm)ZX2F#%)P*?b2RKr* z$g8UoM`mIW=U40xajE`@DP^(d*o4`KTymqA=nuUQmJLTMm3MKzA~hA{G%f^deEEpd zu&bm8dWm-0^eNeAw<-5HIr6~BzVFF61_1bwY`?*BGkRE%HQU4FiIgp4NR^|MT~|qc zeYa+-03ou^m(FPH-T@0r)24q#-wuPYA%*15j<4Q-0G-lbXl_7`qeAFFSq_BASwkZW z?`GA>7gvQ`RH(jSj64;uZ^gajF_mY7vH?E&!xMU;L%yjXOxe7#Zi$kMvH$RGS(UO( zF>+sGemJYN|B*gSM$=NDo#I&Mubh|HUp;u8>aY2~=uhm3>aPXA=&{%>5HpI6Rhlts zSOEd8JJ^@+U|+t?zIx8W?vZo*@Ul66srWQPR74#3+)5iRt9+LqMFPkFF*>V zU#j#N>4vPVjrN=Q(h1_eplbl}ej9J^5l*}NZ!uV~K5oo5mpU$@9ErazhAZVDI$5r= zkWx4#&tAeRl#rcJg00xPIE)}^bnjo~ipO=yYNQ&-RS$V~ZxuISixM__7Qanrzr!)- z^Xj)(^b6n26*D=hn!nei!{HO*crAlXEzsa}%JMbWM!yg~6Lmw1mUTEk0Ns*OXtE~1 zcYHg=8iHL6C{Qi&)z<1AFb*6r4lEe=g3>B{GrdoT%S6Qjc_SFoKQfll@BG&HxAK;c z;Wj(Tf_jM3S?kvSzzXto;BrX6NaLG#W3dF{2B z$lG4u9)3JfY4;O`4giK00Q-Kh2Y?cMY~P1VdL(x(;4qy|NHJGL-zk(0`$a?mQ?c4I zE@PcE%+U6cw*LW8sFBHOmm)4Bvt5Q}Zq}@GqE~>n7I#Sra5WbuzNH1@bgE-D@npL3 zF64h0jdqYDACH%D4t+q^j0L!>YFdNdXuKnxk5)L)?(OEkPuFj~+t(Az&ie27)gP4V z{|Y9~VdNmx$R^ZobO539mK`t{?IqM&4(D1gp40>d`Z?0H|4RTrB*|eyZxD}0d(!zDNE&hRj8~k|N$~1F$!h#iA53F z`@`$oQ`wJ%u>+E^1<8TeI|(FDW^|ZCa)o2FM%cUx6*P64hs0kiM&F2r!sw+45e%77 z8W2jiNR9+j1aL|p`u`7ByAG`OY^?UY*I`w|Gx!?rWm>c;#F4lriRA@R#oHyRcwbRa z`K~(Ju>q6+HCXT%weh_`sF}`!3RG-J{-;<{r&!Xn>B{zz@8R_10J_RKztqw&d)RER z6GdJ%IoBLWUP-=xZTqDgXno$&YK3lcNjhDxNnVw>h&^du@SXL%v$$?&`5ArU@jQX{ zwiMpQIG5xLMg1b74i%yD1M>IYEq|C^*X<6;T}=Nz7sZo?#u?LB)`zp^-t|rGu8&{f z3ZzZFX|@Upn~VwgO^eX05xFL{PrgOWEpfXoC;QprReUk9sFYs}$^y_+sF!? zZ)u7a?zdvja=z8w-Bxe+TYX1cr(gB0)X13{J5#&P)ZUj-d%$W~F&ZgOGkb2f%#60o z7%~$&P|AK$+-QkyePTzcf!|W?zk7|uA$E&0Rr?;j&_G?JL2phyx_xw z;G%eZz=sFHmp?p6isQt`1$zV-QYT&J`cqNJ*tBJOpf)YP>Vt&HbAd6kz!=2+1Hf27 zA+zZvOfO;63_FuCT@SoMma>Zj@5};iW>*KV(;TVM>5w|j{R{%N<^HT?2S1WY$&zh& zFV5Ml_X$q~&*^1=6ceM_3~j zqVQvivq#Ya;S7V8?uqza0EE|9T{2?<@m1O*Dt)g3KN} z|IhGWr^SJ9K`e?6;lCw_sY3?|DO}(n!KB;{8BIY=PKPhcuyF-D14yuz{Q5Ls258FUR1mwUAhf6; z_Ku{2{DamLnmGad7VpzsrXY<1Ep$)$@wDyZJJlo}T)q7!E%5q)in;2ST;$}06P zO=V2jWCqO)hmu9 zbqZ7URwgoT@zf;Nb&*(PlUR79v;*HVsRhMo>PxjA(u5w6l95(T-t{kw&AuTwhez5E z>{%G@rjwK-bN5ttP1b{n7rE9Qtk zyc+m@558V(KmJZ${r^A<1KQcbX$cDts!Q_mY>5o~m9G~3!ZL-g?!4Ft2dneB72)SGWBCSG_L0G| zmQ{i-b3;5hEum=aF5#ONbbnMgDv+42dJkpks=4rq>8j_VtJtQic<)9Pmh*1fa=WxC zii%DrxNWbUcWE}?@05npg&0!8YO<`RJk1@&AZ&A9oy1^m+b z!6enyL5C6W3Ig5}z$Hde);1#mBBl*;P?qs<}3jh z+=xaY^HZ=n-f{Y6vmU)Ix06P8(%4KgDG#dFFfEVg)32Kf1h77bMK$=Gh0VnX!kV}Li0Z@oTAqecfsRezp=RjXzqp#mR41L(b zE{bQm6JToj%(3DuU=Dx%$P6mO)qfR+jeF{Fw;Wp0xD7%^b+b*M!&$zWylcTW?`T@Z~?#-sb0DNGA945A5E6{kh6M^SO+rN}tF~~0C_K~Hf7AeG1 zun`=Do@MDCJ^qh$byf%o#1J!VZhiF_N@iR*0BxU^>6##9)@lTwWfdgeFHTTioj`25 z)$SO_m_@p49p5h&OYD!E7WRw~wTR@hH7nTCeLSBj_>Iwrhm?)iM78ido*`JC{hWoX zZ1M0nTl^IAQ`G$BYzNo_2iPME?0&cx?D7*d*VjU)%y^B|u@mptFd6t?>2hJ2HH~)W z3}GrhY6k#3q)H_0hBLA?mh*>@A1?j2szBpefjcffbQ$>ivB$t4>F2(DR&+Ap;#LnW zLd5r+9Tf}ON)4Q;p))mdrpC_Ht~0ggOzk^U2S`1F0gzDN53LALICwbNt0x6Hajxe009zsy3uF=-FwP{|MAO$R8Mwm%7efb2>dIR zScv&9;oqL3_4#hVzr$*QAw2@4=LihB9%K7kYZz1wOPb*-|KJt5q%^|fAWhJb7P?u; zHwF95iaOz0HD9gy+3OCA?dv|`*ddyjUs?vasbWLw2c%H}ZT!%fOtfd-?8e2mgPcAh z`bW@ZneGU+@8)NIAl>F)hXLr|^J5JGZp8Z{L_v7E_{84a2503C4e>DH{gLq}838twBH4CZ< z-Q9Kj<}MHBy3Msuu*XnUIV>d}z8gAx*OyyYGJJfeJ#arO<~zjaiaR>l!;s5{jtYxj z^bw_pC?X$G_=wKq%!WRq@DY8Fi^xaxJ?^btMn0nO5uL|fz1}vbXx65IRPdF=m9#ir z5q5#q~FL!H744k|*D6vb+9Jxuw&uIvC?3*NONZ zRGgJ_lwrB7rY>=?@ay@O4TK~82HOvid!%0{m|e9WuC?f^zhdhZc%PMyb)`e(GD5a2 z#Y52r=$7)K=o0ib1w=_0&}}7z>0FMjh%lYXSyx8(7ZpKGS+R%0v94~&>$bSrl{0;6 z$T9fP+D{RI5qpWfe#_*c7;a(1ufa_B5O5^b8tKy;+Mkw9a{j5!ep>NxF2In#0`5y? zR;# zQ(j~b&ns+^(FMNOQ5g-7=oH?Zsg5=I4&+jcu!qy~$#Hg+KSnA{5gd+ql09a#319NM zrMb8K=ZoztOB>5XrbR=!Akv%ns@1^i4ep6;{8nD1%} zn@wjqL}=}$cZnZ;#PR%tV^Y&RjKt?ni68xmreLwDV6mxSvAJNmsbIOOU?}l}!}cq{${tHmR~n_-EVVO2@*y@nZpzP#kr*`*^1| zhZ&C(+H?usV}76S097L73v+~$+rT*$dH3=1ZofrpSs@UH9)TbnfefTUNhSpu8sp(0A!&bc)a^qIuTb z`5du5xRg#62mC7K)50SPFU;#dDp*abpk@a;We{Skrn7v2r?c0ur+F-Wr632tv>S(B z=wVLjFsJC(^x|N`hwQ?fhpfBrd05`!C9z>GzALas9b~y&04sBjXW~uI?dW%yFqoDtWFcrhBUDuZ9|zd+K?tTq*a$W@*4X* zG-=Z;5#m*o0c$-nr#v$Ag)B(|+zXvU=o~^?+A&^UXOTLK+)*>8plp?rqDsR}m#%oA zlUp3RtAmL@FTeAtk(mj;SGE_z_5st!2eS7)(+~C#;AO9|v`ApfRWj_`x1~jX{_#4v z+`2qu1MN zmiOxcg$D4a^a-a()0yR+j}7+nkhRLa#{UC`ZsTpt9=Sp0|1r^?uws~hZcC7kG<1#5Pt zk2MA5PyD=D?13}q6*96g(0R@BOHG#+lwff#?9VT^ENoXk*xYZQTw(AoEMen0ogZD5 zXZQd1b11`M<)s6YGG62Qc% zHCIO(bJ;N5WovJD*m8IuQo-hZWM$^>#_I#GS-`M)9i`!!j~2_5tiZV>mDFs63jc$$Ss{uNpD5}(qG%Y^a%w`hdw3l-YaC0KN4;0#WUl`TVH9^_TNp9P z(e``B7H(V+{}TR&oi!lW=dfRU?>)N;Ldg}ea5>t*d6Uw7D(?b4YnK>+MZtTVp-+hQ zbB(kTraXBqpUO6=CBR0`>N?t|NBT6G;%fR--!QceV~hFwWhts_XP}pdIjE`?r@a)v zeZI(whdO=r$js1S4&ahW+2uq7KUHo!;6hprJk&*o0+RgPg+PkR={&+Y@KCc}Xpw5i zA+w-paQ5|OlXF4XUM)G+>%*L&uN~;53vJ0QYU;3) z4lax9T`@Z}nx=rLhy3B}uf zX*1LL;at@BaFKAiXt<_8eobtY>eb^^vr-zo$>t9knS${d3%F%6-1HiH&$7PuXfcm{ zqA5HNqYi!&`f*~d4?9xD<+-?E@R)&~+t$15h# znW78>cNCs^oO0mqNA|@=YBiVK!Koz1F6${zE44RB`_!3HS$GUg7d$-%=^HSPQh$Q? z?300C+r0b_6d?J(vuo-j@)yO7gnq&^`i&T+3!1{`oJlT0-|{{ryn)7VUM)r?6<|5# zmN)wu;j8Q2GH-JAb*pm4BX|Ph`~(Md5SMnQ9?lqs0N5E`j?@G5v3P+6dC*nW@V9Lq zY{TlMrl&_luFJTga%Wv!0vU(V~PqLt>lw(oHy1~NRd3owMv+n1ndD@Ff|{Q z<^k!I+E*p$)B9(1(3>oHmt~LSZSrY!k3I*2P&r_P)?yV_yZ+&}A7xxVOwDLTLI{{* zLht#d_Is^Gn7RFdpZ_+0KDgX1h;>vUSOy-!A|1gZN6Ms984p02#bw zFVSpoSKOO{ea-M4Gz?4EH(PBSw=eL&;HwO8nz4{6JPQ-kLL^)j(x(WzcWsE$5V@r9 zpH|Gh?Bf%kO-#!rsq~wBU=IuePJyda%e|Zvwul*1ZJ@2OU55G5^Vmb=UPV>_8?29IUgkKERY}kdo zVAge)S??eMl~+d_rg&zDF*0<<#|jh=Jt&S{6t4}BkQfxW2l5@?JROtxf1`k#dnH^> z-#nyrT39V@{PfdNuv(0a3VlO{9`v*M6JV-Xw_&rT1<(Ipy!*e(34o z#OdHTig)hd_du-~@X@nJ*-X}Srwi!GSi7g?LA{(J5|u(uxR(VWdQ4o1%lwgcp3XFR z33{0jgCI4*K!IPP)lgNo167cj7qs#Rwt^z52E|v#Ld3|(Qr@sJP9M|pboI=7rZrh0 zManl@fD=p}LKhk9De9FuNvqaoCec9w!cJ48H6?QU*r_~d>nG#2QrW{Orxhdm=3!Tj zA?Dq89eyid9eH5gb6}l>Ya6VgF~Maiq_UCH%58ZXbyCqur4FnUchaPj_JW3a;wS=a z`?Bn#v&pg7>8T<1ZyVAU8`Ah2*irr3_JzCj)eIz5n!ft`tQ-9UctVPPMRGZ6?9oakGbX+GH|W95OlG?MZ_5rogvm4q|P8XLr-T&bcR@G zkoD9A@7}NNigT%jnIX`w^mUNj0219L>MrT%^jOUSGM973?WI?AdqNvlp&ycV<yXM(TXPt!( zzRk|+&h&C^HyFF^%%b3qroOrLH29HKl6RMQsTpATj#cqs2Ib_Y$?q5-Kj$rW1u1#5 zqs9{12Kmr$kdK-b7?U214P1<^Z>gWo(7{;JQ1%eVprZx^^4DKN*ij;z?~k&>;O zcGO8ixw#JmswYVM9iozsKgi7O=z9b1aQ*C%dl4{E5DW zfc84ea<|)yjJj*GBtgaReW&c9#ydVguR^R$S9tRN{=6_;bKHR?+oO=G`+k%G@*EjZ zS77{Xvu!;BOUzg0P=Q>6e%wZQUd4`Oo?FIw*q^yz{vZbDYJqSq_eEiBvt%`t}>l}A)4*q6N zrZ8XUu$qjwQ=k_^1FnKeXN zr}y5BCyjKpY)~1^4&`nB8z0}Zn59=lm|ZcfuT-`9O^Ys7RZPKOy8YA5SGX%z5#@ED zsN#A4dqJ7kiqJ&PDRj@o^87-*XPhnJZraGmGHQiPV4!cN}QP)k+6npEYk6mUuJ4+Yes5(o~ zGoOxc<};`*Sq_jVzKIWJJv*){74VO+L<2qV<*}wT)e{jDY~$F54$kSXi?bU9y+Gl;=_ z^*=zvnOL=W-{}m^pm*y$Oec?X#G4_*JnQVs=_KQ=1GIf-rUS&W4C1n9%kg450#TQ0 zBFv$5tgMVl(Z}Ti8#SpJm5nf1Q(;nCMpQS;%oK)4L9&bDeME?#g*vtUsucDKmlG<*lPYcQ93uIz>0%P$`8)_6)7F1DC zg`inW~J$|o#l`LaqU>-4oZCt4^tQONRw66ch}&vJv% zx6dtfS+4KyM=4kiVrB%1g=NStSjNkD^{37|aaS$A7rq#kn2&R`IjO{a ze9u%_Vm`iSYW&+_KE--LJHLXqY_T9OG+n+JeP+cIuwvw6#mHerA>{^Ev}`0U8=fq* zX^Fo?!C#xly4J95xJ%@eC;(;jiXN+n=umViN2PWZyDM>bfNd=Yk0qH1e{#GCf4{9!k7Gy4> z@Yjl$Kp{pMA<|}J*8Ek2M*2V_UC{K0YoOVpfAa~Yazh#*9dd^HP#~3H1T$Uw+dxs& z)atPrnuC072C{y|(29M~N*rj(b$Rs7Zu00T2Pk&bD7S+x^hhmXOD$<>l^3z4PF^II z9tjZ_)kEi}RUsLvmnCV3J+Q%VR#k+R;a96FCO&R*4JENyGn7yVPSbm~1{rozX550A z;-hd=;V{lDz<@PuzSu5xEAa=osl7&1wx|Md2>#V>ba6BNU&k)BL!VW&wQogEhHhKS z{>HX`cPre6K8iYSHMH919J(z{wjeMht=RI#Mek+Z;1NaJzcX!*?>l0n_kE2Xxs9HP z4Vs8MP8<-{V5iaGz;U8WvfdsiVlz%~>d+o1qTc#I5r#F@;a_g3V3wWHyb43ct@u1- zoMg!Go;wpRM-6%##h942^8Rv!S#lIj-VtWKjtuu6Hg*wRv&&G4F7-iTc0>U-^fk9T zl}h5!6=14qt;J`&a;d40H2YSYIGjeOcaMmdjuP^TopBL@u ze#8%_Vd#TX?82#+)PPg(DEi(;IEmPt--s?r{n&u4=%O)e@#LZTE5(?ZibssHK)_&L z5JgUu7E$KJ7(~qK4f#cy)6p!H@=t-)$cNR$#p)p5Pj@?tvb>|Zwsi@~H^=YVx?5Y{ zN;@^SQO3J#blCt__M)a=15r{k&;iR~)jgo4cRfg7QhHn&o6Va+B^$X86Y*3h*o`4c zPul|XHD)^!$SdF)``|is;hOaQa5YVi*Cr*p3}21fLl%+i`A^;t!n1jOkH#m0uQr>R z*#jfF`5DR^pzK>Ki9;94{lPXUr%NA<4_U&lA$+4<%yA!CT{>#J{+6etupA3|!$m(?#C$g{6qmzPCMj$0I)#!0G#dBOKre z**^$4^_S7=1E*U;PS=J`cO5%jFL=72(X$yn10Q;%i=N)#AoSFqtQ-wJT^l{!b@X(- z=;?k&&j$2(eFDZVdWP{q=&3(xs6r30Blj7#%HUbYju$$gk+TUoFk||VlQ_tcQNQNS zck#<@5Il+L6L7NE797)O*D-x|*G!+?e+JuU_p|Nu*KYglg^`cFdoFvgpE2_=^h@^V zW;FrrfhO)+a1&~m7u@?&35P-o)K^^h<8K`hBN}eiOm>Z^m*5`x0Y280 zu#<#)gWj?N;C`InBV0S=y~76M%}C#%L&0yCLG8Y}6oGkcdBIWv6l_!~w%CfF3T#Lp zHU=&>#GrEX-gXVCzGA)8YLSbMS$V^(HPvs*M-LKUwT0oFRdo>o1Sg$WVN#S4;j4EuN1Ceb9#ZvC$DTUbc31+C^_~ovv)@-KWJEk&M)U zsPvOL#jV$2VX{Ro&V$MP{ytqS&x3DQOXQlNzpaLZu0YyJkL|19bzBjk zNQ&gRvVp~rQ;4&Wh4Y>#9#XDg;vkQEgpuH<`G^|^m&+6#$=>)4l#qj4>^%5$7UT|g z9?)gC&=pc--oc++r5sizs98h`qk^$?*YJURW4P{?9%H z#pHOnCa2&?jdc7*`k_5)-X>~q?PxliKM?F1`sx_C+0h15ebeN?AI#}LPcw=QvRXW4 zj={!+ICOk&%8s-=69)7gt+qCsWodSslqPIR3xv33Ezd?F5haMX#;Rk;g2=|Sqe>uJ z*|>w-WHYk86F-+Id_?IZ#y(=QN%8)g!NGE}h+w23Ld0tg6NuIMf?{BrJ=hJjEQhlu zRJq4C?mpZmZHpEWEw*WbXtIrnkG6dVRAJ|gL9;2zKE6IrY+o68cr$W%v$wu#^WK{G z7@lO7<(@D>1V7wjy8{K)LgxBGA8We4C2Oc~ocihLj^7zt+!>UdR3o7Uk87NTZ`%?1 zH-qEp%gaHNGJ$x5&`dV<-%W9Y&Wjta*Cm!XoYJVEW^)(UbDQE;aiVIGyxZBb1@UyR z@6p8LciEymq@n&UeQP_adydwf{Tcue0j&1n7Oljd`?$>VKM1c%_%607Q>-j8Is#qc|8V_UbWzTD>N_VMATiM$2BZ zv4j+ZiYpK8D-Z3aMBCpL_!SA&Yx=pNpRa0r&%6pobLhzLXY3a9F@;f=TR4R~%nntt zge4Z2RMBdhsbHP>qMuTTKn{3YIM_FKIw-=fpUdkRD{p*igW z`aZ3E9Mk_^dHGTW4@rtC7KpvuZAWvfqjV#4(X#lk`}rdOl5~-OO*S!6ObtiSqBA}p zD+!bd#{R{G{GR%e!BGdOIK#=68xOy*`h072?uu>}o^Fy4e0T=gqXlhKk-zi}+BBknSY2?M&h!#Rhwq#`d;rDCM z;K#f9lU>SZiIJs}Bfv`IY6(M0mIwGWG6P6kQ8NaqilQ;c&jPQoob$ueJoX3AYUW%N z;EERj9HED>Md`eGS|Caf5Mu|3Q8YLZi1*;v*%JIkcp>y1)5(`(Z|n$XE40+u1IYTk zV{25#T@>B|dZKp=^x^sd0RC0)o=Klp^N0CpdY`R-J@(n8d4nwoZA*}!(VJR!Vde2P zq}u#F>_DSu!tOnG%P?>(`dB}3?j7;WHXg3k7H{+l?9qAoyaZ4S1hb3i6|V;pbLg6b zlCr@CrTKfD8lJHSo{0-j*{cQ5A1=NL&@yHSFt|Kq1N25mM>b{mKqfAGgt{{|AO+l??-5_fVz8$ zVKrNx8U%?41U&}?LWo)*NU3k$WDjT&3-OKRsT{~v50)I_^u>LCJn5T1{rTH7HbUga z!nn!FTIG&!r9V+nVoSD!o9vYTmvRM(T|t5h+(cuXL=|qbTfx7VYv|cE^iYF0QBYzF zbvVhs8vdhPMc=NXk1D*0f)ZP(#7Xv6@t@^726i0-)ZtAOl-NQoPO`s_@5+@7?MjBI z#G5E6v4v{fWPc_9Rjwrpt!i+Odi=?PlUu0E&ag##xz^;3GOdV>_I8nF-JBbPGl~(t zJY%(Mlp(`J1)F%08iqZiFFoV)KE)tb;%FnJ8fg>4Ne^NBYWjG7)KrHT_bcP@C{Vqq z=aGedR~Gi`O&ls@p$?Ur{hTde8l#O<+_)tnd3-6k==ziHV~ho%itD9Xf{~oo z_oT$06tl|GZwV*KuFRHWu~i-Z^Q6VzG`mVW(W%rG&~~->&yyPaQ?07qa{lA+^#wxsK@2$1{J$M8)Sm7Mo`1&ko^)s@ME!dlaf&U-iHH9tC$~^R7c1?548>bp`YRUO`s=aiD)1wN6_!7;O)p>+#3rhu z1LITlpxmGRHZ9dWPSY789g~G=#$Tc=SxCsnWO7=84{3KCwk6qC2*an#w^&G0dZ&sz zrXE(O(a?7AmH)7tioLyy{XHx~Uk|&h$DnWN;Sw{l(d>q8xtci-cFI%gTNF?-dGba# z{3PH&er#{v+|bkBp5yZt9X0Oi1(+$>8y6^%MQ!>X_D8LcARC#Oey>EbzNdw~FIAsy z>DpR78~J)xy1YAx>-X%-oQ0=310U?eW+MX+*BChO;o3~>>snqpSv`@P6Yj=kNvm8S zbH0NSn`VIkng{#^ORt!BW3_*Y2hcn?P(sRwW?@E3p8v#bEPS0EJDr`x!$UfoqPs(@ zT3OiYWTrowWl3~Ov3yuhAU{MU4I+U0S96^24J z+cYIgF44`q{)RVS`R#&~t_u@Zj=BIh2RzJTl_cnML2FNjyG&v{deV`sigji&TSH*fn8(~~naA8<9&@ZNiz@mo@%35X?X#`pqo>af zK0CUp&u|csl-oVM{nzcKsCn|9==pkL;P%8;S#Qa9+Re6vArPDB=I@sI63GyKbJ~NP zdQNF%BCkkUl=xIIIQP$LYt9DU1k@j~ML~b|YcH z8;7R>Z{mVC60Iom!Pm)zy+XSnSm$jGcLTA>58SCIT1j({C71mHX0^VHG;~Dzb2_~z z4aDR+G2VPeQW3g%6MNvz+LRUtW7;3}7C=yVO9YdQ>U*MyXE?dyqAn4wWGm`8Q!CjC zbvkb=-Vt`C2U>9j@U}hGiu>llRYOoG{ zV2xa`_WOH*wL&cRf&!tvPlnK_*NPG!LY+*lDBcC3I&UkIyCJmnKr0fvBGi5gqV?zq zy;9u-8g{4C>2cmDNiq~$KXH$DDA22W)7rR+d50ngd0}fC(u0%YSB5_P3J1S~Fy0-% zW^k9roT#~Te4j2$QuZW@X@mpdYIN7Lh8k17eaF(OZ)KyY8dou_s?*u8r`i1^fV1bv z)5<65Jy;^${*97dW`3R}$Kym${N*No-+!8kpA^21h~18mgMApSw9|f0MxbY`V)J>Z zqI*tb#2a*y?L5YRWd0}4|0K*+ZCa^W|^ShpZE%ycn6$06NChX*vC% z8cC0#kivLT@7{SOx0l%Uj2~2>%X*vseBxP_lscR`;2$QE+qQTa+Fi zrf9G%c*wX}3{rY0nQ0}R{@S68e&G$wp-eQzUGFmBx?o_9=wA-C5ulc<9e6_Lr$0y= z(?4Y6KZ5@Nky`6;^H1m>^79{&|B?I$2rd+l<^h}c)!D;I3TG;%?qEM2xaZ|Gj;sm5 zX3MwOmD!=uW&ZdU=So271lU;g)6;A^U#MeENwCcL7K`mX+!PPK7+Fu^RDEN3CS9|2 zG_h^lHYd)+wryJzPi)(^J;{W3k~_9-o8LUo`<`>1?@wRdyEj&?TK#8t?W*ete^!sy zC*#6Avlg{a;c$lhEOM9AdKkhi z_tb;rE~8G4Y0_%8xCC{lGII=*534e1?1KG7{hg2EIT6JDQ$F7h(|y_QvR@@I!n_G7 zjE?vbZ_vWLeM3T`A|!D?4vBuwLcXtT7lytu8tf#(T5TqdWR+(b9Q|q$zsA5d&xonV z=!{PUNtn~E1}TUM+V0ybUBx5h@{bf%o?Bqc%LRuJE#b-XdmrHRhAA;~=`JNdcQ}*Nxu<*PM$2v5m)u|$~Qfc$dwc7rIl}wM4 z6Sj`^9Ofg8E%QhUPSgE3U6WH~4=Sg?Aa^Ms1->f&@dxxBY78FkjAap?zDdP!O8KB$ z=9*Mb90{~Pi@%0wlDW$v3g?+RvoCP)dcf$JJb6uhH%g+){AteeFjrB%n3E+TN7_;z z$w^@VSYN-hrZg4$p2mplBvs)n!onsS#tzJ4v$N9~=1;%k~1aDz#u7neDHTql=2FL|UC{{a!-$XxLu9SiBM3D5U=s>yhWT@JS zz2S{{?BgQ}njWKVTgv6hG3tL)5mx+Vb0y=kKAdokHo*ri0ZzAeOERWG1r1il6^vub z$|nWP`__mDXidC$SZG+wx?j7}ph!d&A5Wdn%_ZvUmz6wJ>OQ5z95Z$r3N6!58U11D zuP=l8Gp@NKoC+0Z<#*k=*x(pySU~ESY2=uwE87zx9ebgZwGT8yvJv39p7f>$e^ruB zJ^h#?;&~^5-xy$vjcG*(2=g+0nCM~H@iW8`2-5DXr}&mrC$?V1O3WG8@bQOT?1Nf4 z{fj#xrnbP+3O}1kWV%fm?2S&844k%Y#OK`8d9q!_Q$L|&1p);!VxlBi7Tj*gQC>gc zJk$WvoB158SlFX?YpDIoC8TWJ)W73Hqq{@nFw&<#OPcn9^&9IF<>HZ+&rRh76!Mal z33~#W&|I!^)MRAY!y)VmWg7MG*+}JG>gN$Hg?NQ@4JynG4tCQ;>MvNe($4NxO=EFw zUzaRp1AToMl$5!Ip^)P@9xw7D$Ow#?9_c%?8V?Tnj=GeZRB+%@>!w1$*9pVtyRS>t zj%0b04Ju*~&iHk1;|@ls(m-1s!nem?=v#e@if-=e^gb4x-L2Q_quU(~LNxmwY2Czu zhZM1lp@`~_e_RxugML(pwry*)#57j;jbq2Wl6t6Ai=1Sg+l}P3+M~<#fWL3zN1X4 zM=C={MgYYrUDtjV@`ITD@Fz>FBnn8?3|03=JK8rNPgCvNXBqfPeBhUa=lqfr)k@he z7$(BlJoso0@u*`*3h6e1uS7xu53iFJ5NW<^X;XnnOCafWR~5gp zUhhOJjaiW(U zhO{yV3*HwFOAekf6G8-rvC=Us=+RpBS$n#H65OX#h_*V+YLPl9n50KVNN}37)v17QeNxG>nD)TCq&-w74db`%|Mn|4gZmGx2wg6SKm4>J#*8pu%%o}Ew3+l+P&Q}+dyHUY4e*upjOiZU=}xJlAK>q(?s?I z*%^wkF0@C|b0=#Yov9mSE}{#eGNer>5`BDTxfo0S^y2f*E_+6TszVqxne;N42E&5U$5eXZ{MlPT^g0p1eSl=D-Vb=R?-PG13=w zj&ctzsbLW#%+%T`8DJD2x^!A=vPb4OPIb@k%0Z>vM@K^4quazxUNuUJ;<=cn3OZTr zi=vX-d8t?#@tP)3G2*%{f}D{?MU*Td{*iO~b77y1If0FlDdozzv5&8D#KMn_W!H`f zrVws}x8g*EDIdd%n7IV%gtJ|MiwBHx7;|J$mMP7--|3E1s@N$F+%N&H1FinuqZ#-* zwZN%ayqt^VqVM1hTKnJW17ZAgm1m8=&PS4|?y$TFgm~ zre@{MyUefS(>c4?C>ri$j-iublU$!PTnDh&1b)eIvFD3zV!0VCVXWL zr`d5BvS`4ne2-iv=72?xwOKQA`z2wA_syxaMB@{TCpby2&cwD8i0+zSh#?@1iO2t( zB!K_r^@FPSn9z92z@z(;_g632ew9}uo%kOA$R4Qfntg5kNb=I;?t2qw%fZru2_6)Z zEFvP{EHN>7GEKU_KWP&{@t@7#;%&VC?Z9lol(KUEX`)yNzcZZ40+Uw_Xcho)vYG2UC@B;r(axLy?> zGAHzWg{mT2HWW^@LP4MXbiQyNzL8%`^e6l1z=C(GYa9E?ktPk|8>eFof+NCP5$v|i zHpEL~sx?y`{$5F=V8V50bkQd5wQ|^y#OQaphB~Y@4Y(H5;_D6^Lgi;tgudmf2+!MQf|gb}ew+)z)}tDPUdv|cO_B3m`##N)7Oij5*DvjQ z?EEh!5D$2JFHU`Vm0~J7)zR;Ula+D^6z|+>=N?cT!TlB33 z+qu!`Ty6ZN?g>kn9d6{NIe+Q} zqBmgbKvhmf^$f?)XE&?)A3zh(sX{M^>DkfT<*&_f|m|{P2&5lq*L{q zsbXsIZdXzR7nO+;Ytb0RweH5YLlXxT`wY5uD!TMabrQ5ZvYp!LvMjie?!NaXg>@4cG4NNXnM zF@q^d>nzauFRSQJEX5z-5a=KvAkZLmO|9(nNV8VVf}kM1f>0pHe_K7wj6EEjZA^@8 zO&G20j9kwBY&_ODTOU1Y4!-)w#=Yr=lI1|UTOYDhq-Qyg?h`35?nHg`dRH{~EeXoMVR@vX&udTU%nry{&p=8qMmSPVa93DrbPB0I!$l zgDr1h-lOIf-|OVM;iFf#BO~ z^AYywEw0vO#OQ&(Dp?h&OQS-Wg~b?YhQ*wxdZIbxY#}*8NbR2E?~v7aKT@Yo#1k3qWeC^%2N%4UCEJ6n&5#Js*>m&uv_3N@W^dSS%nnZ`_<;{% z=wZG@<__IJteb_Q#+ax&mm8iLxNbkfUjSeYKUfSDTp{tjs70MM8t}+s?uGrwYI_JS z)^9MO)i$SYDw<+j|DF;((wI0Tb^ZQj{h&j@mK}Y1(G9e27}30Deay(5DT^PL#heEp z44VlD<+{ZVBStBUQO$mbyr3~*`IYo%j7IqnA2X{=BHlp&!XSZPa5?KyH4 z@Au69=)a^OHudcWwmgAMb>=G6{&ZvtCg_dSfyo#7iMV8-ctTzcQj$&kjUO4lF&Md# zFvCwaWKXUv0uE*<)R@^kO2nS+!JU@$-BegNuAjHwsm-@A9D>_B+tTjLthhv9FYkJd znv^g8>tN4;&L zZ50iXga&#HvkUjA26J9~Y_%*!@~b})FG?yVUTF3GIC9#YQE=1xu|78=$FsRMxinVp z8&l-WkiLhn3PEdPKTiqTE-#I}(c1-JD;({96WNAtO`~T1Trl`sukRTbF2WhTv%KDt z2y-{;=Fed0z{<9mqmQpelOyk-I?Zp^YA7(S`V7T^KA%MBYaacojQKu|1pK76E-0$AdLPx zVWuc`2OjeGUfSC({-<%Kr(=wym^uCJ;PgfYRDfU}`O9`)PTcfM$b?(*?7H&z!VFI5BXPW(YZBZ&3sfA`myI=<%-2p75vTP zGjpnzDaoC(*BC76%FD-^%DdLoKUc4r4aSvHWIsV}b1>a0bM$?FigaF6Oi|v!0Mnrx zE6TK^Ti>>#UdrN+i)d5$%KjyqtSQ!s>+JZjiz_Fin2iw2;pUGD`kV8nvlq{q2nq@e< zTdd?94!+1mwr-3Hb_a^JgU3$MFlbo-`JU|$Jg=6WJUEyqu1Qe-geI?)ciW-6Uk|Xs za%QC&zd9Qs*fS8)0bDW0qA03JppZ*rzR^Zrf{wG|2o#(wu&xsImR@;HY(?uc?V*z8 zcM<6krfE%VNH=P{3M>>qRy(M5gw^|lH&&{~*GHnP+?_H^=bY$>4A>xlj*vZre0y!p zdGXAnqG_jZZ7|}+i*riDwFn>4l6|uD&$H3Zr)FOZG`}1U&7;J&i=Gi^yHl)G==H)h zf&r26<|5pcmO&)Gx>MlmMj-|eb@{H(K^Rb$MJ%Bb2zcE`&*Rq$EGfunSqp5!a|vGEBM#v&m>bDP zV$%tn_)y*VR}(BGdkMa|hb)#Jx`RME3WG3ig9;*pkOaCaGh+9Hg0=@jJqv?`fXq6T zwG^j>?5;>pa1(=IU4sxo2O>vk(|ARqiopVqL8NOybo;@5i9rU`WqKuG6t;Omz`2EG zw!sLu!9kJ1q>gz0J`;n?Vj^At1cCnfXaS9G5rL1X0)hzL|4r)U@4)XMy5LZTAW#s0 z#|UfVf{;v4wanuCLbSw#;v)ybc?NFDkjzrYTS0>+GdTZWsKOF|K>vj*T$QscKZZi& zSBw~l48m~;0>2#yvaT+Za=2R*KL3wZAl9Zk#lQ9f|BLlI$VtfDcqkoX5DCY>>;8*1 z|L`B||7)Z$FAx+v(6#0e!S-(rT+){R@KOGP*#9qf{(dMhV%vjlT13I}Z~wG4r%kHx zkn~}Tfc;(Zg5QsU$}{Z$_JxRN{15yK)E{T6+Ik{XYxkr!`D4A9+G#&WQ z%l}bf$6p4DlgM@-sT?t|aM8Q|Xd&`8r&1+|ILdoGYa=_kMF)-vtN&>EI|x5nSxOLP zFp8-4KRW%dS(SVLHOuBeag09ljLZ!rq=qLX6`Vige`(aIfQW>Ji|2(9j^X>SngZRe z3knx&i}Z_2;6}72w1Wg^RkfStdbcfPa)_H#ydlO{n}PJe?_O z$)m`c3GMT*jPi5Js;H-Zm+$_5N1%##1c5Ee*XZB!$Xfm?pvT^iA#E#@by~S~Nus<2 zUI{E&$npPvD}k;B|KX~RL$3Gx|8Pb6|8ceN^xq+h3u|p#0zMQ^76EXn^~76#UA-0U z8tqA{%rV&aH5+**Z=>tujJp$&HS}8)R+FW7f5w$VqU*4(P|s-f8Ixd?8D`J!;NW&N zPS8(Y8|-2rTirN^V1H`~5o)sdJx2&W94(h&cRR(^PC@l-?p?|EJs+CYEprN1b0$7{ zEA+m+-XCxoJQ5DynS~L60+Ku%A{<_khMN&|?FD@d&kP`;1l~nolfJb-gxB+9xi$@5z2-qiiI2*6%@Nv z@a}Plf});_o?UQ$1@2!>#Zj&EXd;=RN6MB3_}o;7*A%YY!`hsqU!Mmk_yB>5Bhp1U zo7!Ad79R^BM8>MGqVunVD6qM0fJR%aaUFK}$Z+$&(ma6BBvHLZrO3l3gjtkaR}y2g8a+ z@NNP8Mp+jVCN}6m^F?+pf~zCNWcrj>WCg6n50qMH2-19viP> zasqAX-56>K?{SVwT}Y7Boa71{JA!}TrHkh8qIJy_$}^T@f5?ln#FW!ISjSXGQwWX_ zx6p+oSL2w(yAxkTo1eG(iccQO9P0Mm^`Szdu44uBD#jS7$!if4q&txx0JNLWB{$@Q?k+G;;y#9wPOecv)UJ390H&c`i2#=_!gh zk@kzjej1K&3A9t}EwUt%^KCt}2&=6oMN}dGO1*3fmu(78vB*!-aq8N_><8|G-NF`X zjVSH7JLHk5BV(OmZ~eJQJkbsoRcui`*bU1eg{qxRoip(~87rN6Tz2_vIce0AhAE2c zd?=O35v`s>&vdm-u|*x$F$<|L2H_16>BPh*4R-+^r76i|4jg?VDWy#;V$Dqb_ngVu zCsWJKp(Yzz>;~PRZz6T|4nQ;L76|Y-UN1#J)YFYfoxN|>Ig|j;dQ}8BpNbKKYN6h* zYfe%=6%-EIfL~VQDN`K5aTlTSKT9^6$y&SyMe5SIRcnyIAW3*Cb?22cat5GDgEeV{nu+E%w12r@)ZtxnX#*yO|!BWOb zcc_VL+-`a%C73kM|7d@9kG@9W+cvKLfKVS}ma*5qCDl?biG-9})2EzOR$?`~T5;;5 zzCslzIL7QFJefBM#r!d&#IRU%FzH3x#YFZ(rll181wZ%|T&)LZ?onTL18h=^6`J_M zy!#6O=&SnhKzQ7;TMnr9IJfzVvOCv%0^Q)_^muP9L0X>vR==kWg{%_p=pcGea!mAe z#{*iWb?%+55{3RST5euz<8*fD9dqiiVSE(R5H(XOA=s+ECg+xMD>N_hWmFu1C$Y+g zZB=Jf+)%v2K6{_tsWTl}g4TF1%-AGOzY(;gvAFLIDovm5MjkoqC25`!do#2LchWRY z(PBT8(nMR!SCvWm4$k-Vqv}JxL(%dF4a34wt~Z9fPqUUCbhNJMZz7VJ_?NisqRh1- zoQruqqRD4%Fb#$JAvL@D>|sTFc#Jj7zTI)AjpWGAI9?C7q&;t$Cmw?P@vteiw91#7 zd!DsLb~f*96eKsk;{$t(-3q>(8Z>D#QI8Q{x?rsRn%@B5>9tGquxc3vnj5l8oD}#; z-)Xv>iBPUCp^{pVn5eB#Cf~_)Od5{2xjf8_Yzam)ez}!OUpzKv6$w=k+~Z+fyB43T z0$Vx1>J~I{4TRcCsl{ofjpNO<6*gR+K33;b#;QXZ-YFH_==JE>)B>8L6%GhAq$sEq zI@+_W%&?}0$Woi=QUP+rc}h?jB0^Q; zza_m96T6g`YiCy``FlbT^v3m-x{Wr*Q>+M#Orie_o}uAtT!Eo5YFORiRS?e9kqna3 z_r@V>L#D#ei}hlz5pZQe(ADwqhb30a;QRM4arwC-!|^v!bRamN#EUn-a@FxHCwWer z?BWHDgK0Uy{a8hhs==J1#xYW1g_ob3_PC_PNjKZCd0cqBXN>6Uvv0#=#)oNV&hKmmiJ&lzxx+QRt`^?`%~rxp?A%N`~l|R!ZvomSo4_3 z*!5SAMP7a5P!XdJe-yB4*o~HI@tIUE?N`cC(<_pCy8Z?T3o}@%Fl8H4O?;Qsrw8d{ z(c=A@hSSybK2j9tlJkK+&>i75pc0f4mce3dl+88Sd&x9um*c28LJc5NJk5w0e22+YsjA*W$U%J560`_ zq>AhunPN&mRFpr(k#eYTHAMyJ6%=@GkBy}BlQR&DhuEaxY&-$iSq^QCt`?EmX6)uk z8`Z7uW}4b|&<9>(Y6fj2bwdKMQj?~NFfvUA?H&$PzAAtwb3pj!VrrcnUDU(qP{{+} zl=<_ZJ#H&l8GeBAU|Wzuq9J~7{$l7OmJ^naB{@dOQ=ob!(tuh-aOqt*+}LujKbB3*+J!{0K&HP}$Oed-fSjctNZX`Qj8W&rx$)aqaG8OS zPhb+NM!@I&^C_@-yRJGEHR<=6sGa5OkDZujaUM$gIjsiFN{W@8UegA}mX`Xr*?kPT zBIqTon6Ohij)-cZroeDYP%JsntpecMP{HB}^+~PYRx6?t^*MTR56gWxhRzdlAcU<(pcny+A=D<&QYzRkX{v;n_&IMYr%5N%=sNJ4^nikULqhHvYL$1Aj zq@Yg8?3$d2Y9kR?6~yX}@ayvRp(7F1UVm{cwcU*Bq6=0!Y>x5W+JUX(TVjj8Obsvs zv+@kz%Rk<$;tK1+sJRj06@Y}>p3_K8`xem4{ZlHHd4gq<4K=JJ(zq153QsqEBnhD? z3+N@iG!3{9{3@b&HndP7!z_v&R!T5F_Q+#+d?7m{Li`3Q>qy?E_~Cdi%r3DpCogdx zt9{0cyyml=r9{gfg@`SexouM^+8!&*C?G-F=>{jdDtsf#ON>Te2lUIlrmV?FxSD6w zmP5!}ZQ<{f&GiM=9Z%SUSkAje>7DMg<4v>jDNq%WVpPNEe)Auv$SIaf?ATTTW*8DM zj|)boD;mEN4luRX6?elBv((bFRNGGqkv!9A*T7W<4*l@W-b9BuO9D&{X$_@}Ik{Au;Rnq)nu-_+Dxt}fl$1HO3Q zrwOW=tt{r}<*%mREMykWU31(DCaY)>bgyZVVGujy`fQ-2X+XwI^R#>eRDFq*%zX(- zt2u!qPb32@1x(H!oHyDPR%z>|Jc(>>$+p51 z?Qh2xDHlC*EHhG%+vk!;iBDxn`5wBim=g9lKvi$sI7wBrep8yIw)Z}qwJWTIJ&|WO z3t%G_i;$FbC|(jL4ZdNG??_bOyOXC{Gbr}tchIC1%*YRur`|cob#bOAn5;cJHhast zoB48UB>;&Wbi4;O)4pr*$&YDT!NwGrm>d`5RFX3VAWq}qlkL<{)Sc{+W1b;S5h=#3 z$erxcQ$fGlH`bIE<7zv^ z_Q>__8V9#Yfoeg8mgx&3wnQ~d(UA@l-&0xJl01V7TXd*}+!gnEYZfHPjm8>T_`K5v zxwQLIO2gdQDc(@zCIE!kHtInXEi))Whq0rU*y4|KpwWT+Cs}o2mW&e1 z*sCOi9oZKa#~zY+IiXT!jLN}u_`2<3e;|xw9h<02(zRQ7Xv%j5$EWC+X$*~34z5ce z6vsb^uf)u>Id3g!v6P-DPKTHvHxG|9c-XTHhuSg_Yk@CRq|7nhl+Gnw9-HP)ePz(k z9-58enNVh#P!8oZnMtjr?7&ip`8R%q?e8D)K%BFF(sXE(YlVG3N>oG(`HmP_aDLiC z$4AFXu@Bh~I*J$DwfWS=7zL$tPp=w7@S-Iaa)Gmr{BQ8Q2!ud?@)|V}!v^KNyFIj-{LQ z2^zgMCUI8=%etx>ztfWza?zVGYWo1T7fro!|7bCO8dn@28rAL=4 zi<=8=w_?hKHB?uvt!K3;u_U#@HrqkCk-)TOQ7~A|HIUDxB?B$$@{TJgXomGZ)t?)wUz^$Uo1mdxCY;Rt|HQQ%?8(TN#3o$Rq)&6wSwj z%Z7~p#ZqP+mybY)q6ht+Ai|BfyLPPPn7tUQ4zMcey)Y|D(Mn*Kvu=KJf?=_+6Wz6-}UY|TC{j<=lS3@hm}uhH;54L#tzdN2ipx_UB zR=e1KUPU(&jsB*tzL`}jbN#2m5K3_<6!EOuK;fAumkIL*|BJv4iXBkQuMIo zf%I99V%HcN0Z|!X`Yc!ReGCn_=y-oRD|<0~3=Ns+xOw{NMz|$?O@K$F!mgx)qdyai95M%d{|VgcUxG_p;!iXeM;2|6N;_#7;}=8BJNbh-3vVgzNa0cY`6hs^O?0 zTOyv$R?G(}q=4`b=lGybl6ydR9NepWcbY18TDn(J-oP0%-$_~Ij**4O*7-8m$BfcP zFCT5Q+QJWnoAhvM%$^WpPY8I`w$Mk>h;m*=e!qo2uZYsR09W0wZBNytC8M;~Cd+GhmBK4;P%Ef<+-U4TRD4F^a=EB=f7C$z4MWnABAJ$Iy!BnWIGIMm1 zFZb@LTW71iE-MLZ_vF+{%Iw2E+D_f?+yM~>sS~!?2$8>KDG&Tj%^V3mgZ0#5YgX_1 z=8kSXD|MKNSY7bKOF7-~?9RJv;35pFaVpVMD?PsrpQbPVKyo63xZHPYNyV7$beriO z{yFwsd<@C3=~;298BoFK9(6w5`_?Umb){pOe%bi_zKtGTE-DW%dzyOROcqjwkp;jD z5H$j>{}#5R=m(%Jgzl)j5$+x$*lec78$8vN6eJ|Cj32JKyYQOkQ9C^h0POYq=tz?y zyyQ^emL^8iPPiGD^0z3OH3}$gq1BmmlvpKbx{z58*f(sybBeW$kxJ;SF@bIDKT|c# z@Ln&0<>XTE^+5%5u2felNFQbzYL{-nJn)@rP}vx_s!2^8>FAD-BTWjx?Y!oOmcig& zC2krgOeO6&!;YN1o{vS|n4i8BdmDK&Zej{p*`-IYzworkICic`wJcoJ<{YF#)dSKB z8EQD%UMYdT2Rf3NFTM4{{)TR0BDtgoamWl5)5m617G85Ho6)wNmpbcr9@qT=)OD{S zz;pGHJ_bPN3l3xz`)08Jg?d)6E-AIW4bgaL@W!I^*i$cE+YUqf#s<$7Ytk-fo1hr9 zPJqhKSyi_bsatP1ZrX4ty$wE-MPUxf+MEaaYL5bsglHWV49T^65Z;l+MU|DenuF9y zY!$LXiCd0RPM=(^i`rL3igmU6su*z9<;kEf^=S1If=gkQ0G7?IgS9e`1=GFP<&Dss ztPlZPSRd?jwim1OYPwRT3fSIa0=7hjgF zkDAvcrXKg<*IJ(~-8sVC!x_^ZXa}MaO(9*C3Sq7h;R~epvx}*4yHD`u-Pj{<`wHZ? zLvM=`M>(je>{8`tpNp9-*IFqW$tOCIzF22h=P65to)xEiQ^ouvg8=i{{5s^#0@#ay zPOEU5;a=PYC6dc(!v{H$cH8l|OeU#di&Y1CzI~;~_ZY`Uw|O;=Ows;v4a?24rKVr_ z*?R>3rx4xUm`PLK?yQ7wh90=qY&orTLrz8{FL9MVL*Z+6Otu}UcTKJdeZS(GEALq< zFg3)m0hE%|k|lht}p>(p$83Os-O3BVM_ELL!N)1-?LP z47&L1QaADiX#sr86kCS8zKKd-NK;i6x84>ppqd1*{&1<0%7>$wVW!nQcKb2vNYj-< zPV{MSrkMtGlH;{d<~}i}q!{j~UrNlu8bG{xf8I)!j@*h>*mNfu|0$B}C7K*+f_zZ9 zdn;3l@h0vpUH6bJnDBhRFS zU(>f`7OwN=-F0P2ZSUi?*4RQ)*Y3$a_sCYgV4S@*ii(!g6qj;VDmxjgDsN2lf`Lc6 z&!Jn=#6Q_bOS2?Jq;+Q6K}ttNUJ8YiWJGHfhZ@69Sp427>p~YMhV9p*@o@9L!0U2d z>ZE?*oNXKva>m6mMAjh^I6l3et+e3M3n!{p(LqWyJe2RCTq8vtEK;g9o7BxNTAf}l zIZadPhi{V3B zGO2rEe-*U#wQkO)^qtn8S$`?|f2RiKJ!8-r0S z;c>E*wb(hz_wab|aG&wF@Hp^TbnB~}$yOG9Q9EU-AAMud*I0nE7S+aguzLjBO1 zKDfWN<`n1>sUG+CZkXvjaE5?gx;pS6KIki9^dtkgS;(j8iy4CCk~xER#4gp1+4cM6s@K10g5dSC6y9`4+s|M5_F8{FBX zHs!KVGTwBaH2hHeVXZKhpBE*T@(J}f|L{_I!24B>EH%dwM(~LwJ!MQp^bz?ixCtlrZ7z8fIldmPF zs2#=K?Rts3rgr>(k!jX7O!_5n?IpG_5aSY!JzVFbQRYI0u7B$brH; zkOby*zH%s4ZAdW@8kOQEyQmPQUMT5}>-zRF!Qc((5}fV@?aGm+>NPn|DuHb<(Qko; zhGdr8VK%FDK(VE^ft$#)bQKIu__j9Fm;N9Vj@0$5HSG;==R_YpVxgJ*&CD?wH%yDH7m>P|X(@P`rqGIpX-e%R8 zx=y$~xJZmQaWi&H8*p|ben6|pP}T8Aql0gKJdRpqQ5~~K&onyYV^GQdte!mUslkM& zONcgmBfoLXQLPuTz2Bq5%iGp|_BE(4PW>UsJWAqkRMw+Qs{R2T+|4^aVB8rBo}3|o zqNXzL<$>aG+Jpx#Tvngy;9$Ljf0wL>2rthGV?Ui?MXijGtJCJTINg%a3%irxz**$2 z5&#_%#p=tdr6+<=#qAy8KV;dr{nQ$Wz0*9 zF6Ul2GwLeU^c?^tQL-D*Br$^tCD4gLa9fcX)r)_>xGGy34-`2Qpvzjuvf+2BYR@&0 zKzjn7)aOqm2w@#yEiTX#QvDFS@=P9~PstUb&7zBnp_3M(%S|jzTX2f<)MG^n%8Zpf zp{IPqJAwkgJxaBS^ym7)&WA6wScX$;Wh0}Q$)U0>^9`|Qe08J#HpZVWUsEhK57FwW zJ9`5ij$ivdGfRBS42VYpM)JoZ9cbpx4c2(+#u9d0bCgJXl2T(EufNdfz!2@eqz}?Z zTe~hAPH53tk7X0z>RaiH{&F*HH*j2bMhYo2XV$~M=P93i@Dyd0O3_SF=?&_jR1a7n zk$^p&o;90t^&@JSO2LO#&+s>u0-C*cV`KwH{_9Y4?P21IFP(;L47ZluRRrJWOYtUcU zW-x+FGJEIjA^LLzoy!w&^oNwJu?}#wXOy0y#{_2%KXu&9ir$6lD(ySzZ5()+{s`tW zTBi7W{rXI?z2+agRWjABdTUc0a-?jZrF$2J zjlb9jU2Db0Yj%njp?)g47vK!A4{^3g<}*nyY667z^b_Y6(&V10JOfWE+>u%M#gsIZ z!=yP$n6V9+m}aY!ciA=W0PI77I_@1e`Gp;fd+ae_^!uwsEe_nOcU%4soM6;_Ap-7~Kh2Lt>$r{||dvp1ZE;3k!v-|A8?uNq`!FK+>!{wjy@g;kbIAjo-U)A;8Up9=`@5D>0jw0 zrTmteGt!hjkCDUw7vYTLE{sCsm)4-rxMhjzS-&d943rB|Uq# zh^$;1?YygxtJ@Q(Rk~MKEh{nxV$pIwPab3QD4Tj6usjMbFJI=14$-+k{rHBzeFfXM zmh5;Nj%h#reT&7?XnFek<$79I30m7V!$Y-;2f#6^%k25d0tn!jutOD>gbQM7H(%{MjG22xKZlTqct&$u3k0DFAN+4mmO(}3+~ z+EVc!&Cjzo-uwhDPEBn-PHjyn8YozJ9%r;Ng?5vxiED*b`yXdl00`kg2y$hlF5L|c zrAD!C7~c#ja@1daHg$o6*qM(g#~~H_t-Bv&Flx*{2@*D(Yc$QJxGCNL6yql?vjh;4 zg{@ADlOm=&_NRlPB0}^0tp>vaC5DfzESy5kCxw~MY~VA3QGoKD>a#!|BI}V`C`0mz z*;z{D4B%jMb#8x?GSF*e3GD8xE42ah;<4TY7gWLy+vJL-q#%bjb(wE^R2PQezUudx zVw3OCoMdXg(E8mP-_&K>)2oZ6)o|E9()Zrc{sHJC8OeJaVjw&W_(hqN5MIV3N9Sqfy;EZwt0>{E2;OFe6C< zeXZYofjywuv1qOWSfYgWB-*gc^;t5|d>r~ZZ^5K;2GQcIkl7;9xhT*cpLL{)fFfbV zA3e+oz#->gV4~^TAL=5OsX)CRwSJ`YNzv7)gVv1t5ONduMpWRloH@E-d15YjvTVAk zF7rR}3b?qx>tjEB{^M#UhBGBVo*!SqcISG+yF8RpmhCm3VUcQ*Dgqn~peO|%z-G)& zofwT`*g!cbO%9ERzjUllao@Q$F3W_uTEuk4F=D3J-d&PDHN3nAis=(=&v5a2FL9Ov z2+{;cq6B0IdL_VA8@v;N2+%0E0Gcwwkxo0`WRaSugI6khrl6k6-yKD_ZthHC-;x=m z5WdT~#E^%m0wG;7v0lEF%%dA}%-jJac3-GACMrFmq9Ehk*lChcQVN19PDLe4?sKLt zDqo5&UQD(oDN&)aB5XNX9JAA0Tus%V@b}#M5em_GBHSasq?z11BY){N`kQh`b)?M- z`sZ1zlr70hnv+gA+p zK`@>7CpNGFfra=Wrn@9%mckCHoFv)dLu=bvynWI6ZMhcI0lD}|@9jO`SITej` zgujuFIj$02=g#Dgx20u0acNALpSL`i2(OOo|`{l{%zc%o!u&N+bq$i z6-uvA%r$3HTNAHuuAO70jUa=tP{nfGU@~z*5UYgVi9k=6oP}W=A6mm=X*M_M>qGNR z0Qi36;yPhmnWDc?W7?9+|4UzQBkBV7^@Et4hLw0{L{otBJ-vJ+ok-;Y`({s=-~C`u zQE>bZ*$Z_PZq-P0m_&0ycqE3b2^pz~*jOVfnQ>r5L8Men1PbXehAkS^*>27b6kmk6 zC;i}_wkPRelC~%9pbFW0$hZL=`-+F4>SvF%y*S!|Zu?dz;!mXF;|NI6>UIbvTGn%V z-(X?AGaj;v1Wxzjn2Bcd-9HK3oM-_HRw|OK#k(1&bFkLA3&!@jun;|h0>*Mur_Ouc z*#TiU&yxt22^S+T{Z6%ho@%@mwZbFHnF~iaYkD7cJOCQL9D@pr3nhq(k)e~r@UAkv z0!Qr{7yC3Xf6&d0=VW1h?9?8cC++**Qq|5nn%1kTB@U2Ddqf^5$I*sK5-1Ktt89po zlZi7M%aaN$e?M)EC|{b1=6k&@3JqV83y%Xw_3A@ujqM4H=k|rFV8fIa0n$xn-mhzH zc5kZ{4U8J#%C=4BQa5-3#Q|a5`Ys8)KdQT}H^}@A#2ESZ>t2J;8Pxs7TaHe0&7NB8+5 zT+C7ueOI<;4q@PcWOehY@VR4o0Ars4R*W}nVW&d0SOSUgNr?0pLlCR8)vm1?{=fzp zrAIkhs)rZn5!wY^TB+ogMge3|$T{4)(DW^63UBP-cV#$~u!#K5Xs(qUUMT-rFp8$CQQFnh9bs*1Ar`vOJ{kdcn$Upr>$~2P!HlwV zPbct1^Dq%#torhhT(RMgdRbJgpx!}i8gh7(Z}Bv}TplRGNjb)2ZZ8M~peo%Ui;jx# z>pd*yHZ57gN8B{Q=`J1!ixci$`oeVElbUvTR=P$orqlhm1am#(rnSe_BDH%%*)zuS z9B$zj83Dg024^^LOj|^%?AW1VR(&mH!kO})Y_t@OjAg~rZHPYQV%uGXF{z%nT`?`@%UWU4x4nYnJ zoZM71hWM-Q$VslvebU7R)j5Jmoxv;E=wOGQp2kCU?EVx-yeVJPn33II4h$=s+Ow+M zT`|NPr-uZTao>YmHJjuoK&vFOCZ4Vy8^@cc=ybb_R}OSII`K;o2jXl8i1=XocyV7N zes0<|MZDZ6N_mCv&omGMU>>hO-}M`g%$4l)!_r7Z9Fp-vL-lBlW_ z8*5RspqVKqbQ_u*N3=-T1} z_EXCl&QY0F1qku-exnr02G!kPI;3o#b}CMls?zp_>7-VZfq5p^v19XvWMfSHi~PbU z8`o(&+%#gvuw@Z}7ivGxMQ!J~p@R)1HXBI8J=wtO`lMVSdmT2gaY(SwWmsrBw*{eg znYimDy{Qm$_xlm^GypN5o`8c_py1#Ql5o(Ph696$14YHbi<0rkLB^>~#)EW!GOno3 zjwj_;I^?%8sCHsc=$eva5Q^bX9|7GOO_MG@MiSp7?CJNLrG<9t!z|eNr>AZryy?pl zH&^ktXuCCOzxMPzcF^^}rt8sQPrAks;lTUx)O-@l{C%i7E?q8XHM3F@u&XK}kSOh< zA;KhG3Ppik@B0z3^iA$}UV?&Y?hJGlc=?wlXS=?)McZ$B-kvzm;XraH-5Zkkj*?ct|tWJ$fw%6=CI|Zl(B_Hr;7| zq#)U~xipU)a=}suCN74NTDwsFj@VB(thPIRX{e64ihmGhQ90cr?>`Y6KK{Wc9ZtwS zoDF+pOr(K_m>i^0A%6q|iChfCR?Wqc)0L&^ZD%=GEQ1|}KHc0(*YxmOPhGhv%AQ;! z+j`wIxQRMyk`*cwSU|4R7po@`s4G-_0!?c1btq>fS&}~+LjW^s_y7Y!TV#+`>1Lb z7G!e7R`~OXL`-#^pps7eXYGhqtQVMKl+y_+<|C4v!WHW{b^+K{N+pBATL$n+G|&4Z zSRj=(J?fNc;|0LmLHl85oJ{!}I#(Y;;R~19Ek_22FgCs1vsqi3|-DL4VO?Np2) zaWR5{%?O-+Q#U`YMQ^FqZ1qmW+tuUZKUd2lyHlNJQt#>2Qw~ZV^hPd9PEE-*;p6ET zB|~r>@>&!@YR1wMYD}5yx~#g$*?4D|%d<=4+*VWbpq^MddYP5xLvv|9ghrcFo;?<8 zp3)3dX5KQt;YE$UiyT%FB$d@?FQlc}$&vQLGkqGrf48N`5;k_bM2mKMH?Gt`4LLy# z%?2E8&wGrk_DSPp62|qbF(y$s7`jM`9W>P~rO)%L4&-CMn_tan#??m<(GQ{5nV&=n z-uBfW~al2U36D-qePL?=&YDHOGU?T}_BNmH+R&V`9@u-og z1hwKXRX=lcUa=kvcR7hDzy1$yuKnwuJny6Q@t@t@Fb4GSZl+SZH z*6J)LHBMX>kcoBCdgZVJE>}_od;u*l_PeuXJa7Orwt+dBIDn~}pw%3h9UrmoTRi4# zy2@t$G%E<6@?N3Gr#pmq<|jEF=Q0K|FOQ;Q*;V`vs%JR?TRNQ`btTf~Wta+}7mTE3 z(DEFaNU*~NLe=F7r8*rjS)S%`u3tu_%+qdJpKl@!T%8)uEwy5PQc+VKRjt!Fw;|9S zh-G{ey8r2)|K$_VEl-V?<4vPnu5R?e?+eYL1Dc5i%~9Rt?Z0YNnpQ1fm>cp}mwb+o z@DMGX)HPlUUw0p8+M`*4H=iFK7x#J9bDMVt5k$I;qy6j*-*jAa!{0o?`#cHwO&;S0 zq0=+mjQ|yD@wgUkMdnji?Qjq0c283|;`#oa%YR&n9O9xkr4O|h_n^rxs(3)N-Jhvs zz8g>@2cS|LP~&J9pwKsc;cQ8w=?LZP>!FFj6re2VSAZa&iJ^}$euldAI1GthIF#w5 zNQor>lmL1m1nu&{hqx^;8arS#uwXP!;#U5EsOzMXRQl61J#O~2T(>Cd4uj%jZcLKc zYg{hH?&Z>WZ$-b$hm@XSJG8i>i~$%BEwfmiKa*aD5CM=<2F3?vINO?Iqtc&MmSi%k zxhiWrd#7W^$_$~qboIk4oO4%zu8Ck|Brj@8W`SH8W%b( z=qB>pE{G-$A{yF6G>+O3QNJ_o&NhBY6o)GTEspG>0~Z-M(lOo$sZa(0o&e{Ru{o0;E{UIB-VjGHkw@nQk)y*d;eFDpfp&TV(hq4I`VD8 zIzQipXE#{0_%P~91(`kpB)C|t+ar^EFN2m-Dhe{)`kd%+D*IE}iSD+VR&V(Ire zVlc^vw~%qJ(rv zstqcio_9a>vibdD`P}2L79f2!(Y1=$cJgd2jz?#(bY-cugGT^X$fmTWF9Qf#BJmW7 zkx_`fb-F-AVU$;xWff&PMWvL&KWi@nbJ*AHaX~jQtOL$4t{5pNb(ExXNm;F zivf`gT7qyH)(H?QrkYtLI6`oh40UmvT2ULjn2jvr4X;G4Yql}HY1yiG)a-URCGNQz zJ(3=syK|{UkArC3f*w1n^8zpP`|7EiHPYqbJ_YtC!;KN>R>m+lVKN|zt9` zZ$dil;Mqfm-0p#LZOz4@Jy65(wt-SJR(D#eiDz$NfJ(}P{#MT@*|~7pcy<~>6fD0S z#>2V(i%{XjHMo&AxTCnus=0Cz%eO^wt1TTpv6rx>WSf?POC0~c7S%K%l#66i(vrSO zha@#Qhm&v2r2Le;62wqA+w(R$@`sIBLEaaBUIS zV)=D-M;D`(+ZYH0td1nO!)?V+L|?lJ1X`b(&MEL>gqd`cSjr`t3&de$khJo>)krmY zO-vRwGMOqeQ5vMzqm~0TM@Q36u0LUI!Nq0({uW3tKNPcH~E3l_9 zC!cOwp{hDfaq5kkk{-S@F>O;x$%Fd55@Je9{nu5%z8>MkF2b=)KjJWo+7r&8J4Kgu zXXwKH2m5rEl8+OJkW3I|g1y(xd+Xzf&(D5GMq1 zwn{!g^Sci;H&|DG~!GFY{Q2`8%~S(dVqWo&9CY-+jR3U6kC-)LONI1KPR;K zD7Yt`97`r67nuw!GD+K6YV?b%>24x9!VlDsKogzP?80wD8%FXUfkq6~QeiH-mB3G< zKxbeI@2cZb_f^dNe$#X`cG1z$qN71PY)eOiUXF1)wL{<^oXk||5F$ZK+K~qm?j(!~ zUF=T-&70SSWz|}R_aPI6_TBMsblJLy^?*jY2XC62_HK)%hatXSE5kSScHU3LPhz8M z1^y}>HT}W+cW`z6Wy%$q1XXj1hbGhNXPJk|V% zFBy>JgByp`w)p%0NUZ0&0Qk(S^EqEF8=8C3;vhqfRaWs9ZIS8YEr^R;TgR!rA|9qm z6>)#nzCj%quuaRW|63d#Y70BpWos@A&fQl=1!?Ij?3vjl>8%5-+sJQySGk6{M^u6k z{D($^!z85n#;E&){n)qgSbxboNO(6s2(Ru|Z|woL*=4=H?L|9t7w+S!N^ff3pKAJ% zKjPl?oxr}YqI$Xos*ww-u?^Kp)E=rCzcB5U7H2d1@k`gTa>tJE&6(c-FDmN=n3)%PJ$l6-ke{V45D#n+C#{a3 zV+_csdp>7`m`vn{7>ogBE9D1O|@s$k=koiM*YY(f33_ zP|i0mj)qx*2%UUX*POSan-{taMtgzzi#S6{s&z zbp_5`fphI;M7obVM?Elk6oE4eM2JWXazpaU*>P!Tsj~U3M4;a~jV{9zRp!eTmou%E z)2)}X*-^^#14$MhwW%+PL}Ayd{bOBxFm1(FWz`Rv%K!Gw3#taz=Qi> zm&@y_z?la~u{lp^E#tljv8S#rxa-aL0_&sRxX zYB^l{=A;(%7CzISc_$1ZeJ!?HQ(s=&gVUuFvB^0g)ge4x#ecXAQIsU6GP}7`>q$}p zPz{%hQ-w)9l%*wJNh$GpjX*pD{?3+oCqwp@LsXTE8lHv955vZYY;|43-qgU#?c>1i zl|Fg*gMH$FePY2rjoLWSeKrjocS9V>6;X6I&zHiN&+zj}Cy3@-bO%mnKE1(qv#nW- zKxsT*&Np}t49`B*Gqm8&+V3bnz;GWAr@YyQRMyJ5kM=PL=%Q#e7?BxktDlw4Ai|$Z z&p+?qAx4`MV((+?sI@Ut-0SX{C{7*tOKtp(A{YLa4Hvy{K(++0%xi$7g5QZ`ZYTeB ziP#L$xB@2QR`$5xNh!|Xb;}BJDg9wHe5scC{4tJjEPkwi|cv$Cq@M9)`BR2eY^WRj<;;}p|fe-UzSE4B;Lex1v z7AsEF@{|*8s;sz!yyu-LKx`j%`LIcp2TSK1|G0WWAxPVc{hFVhSP0X|bxw)>130v^ znw@N0u1CqqI@JuRzBI6X=CCQkz!Zpw6RWN=@%bxo@yGnGSl#95{8^4VFT%n5maKi~ zK=sH*^(Z}rwcq9U%f)&Iz_mp7iFP)2v-ThXJcoKEYB~fkZqbhiEGsZ`Ct+EN2hU>h z=7a6qq4cLq8J|x$AMCAT`NzHaz1PW%!Sb2?#{~E;0sM;E8xQC?!1MRM^WNKQHrU^} zdAsRgkFYNec?7T);vr z*P&8+xf@If&`UkT=Ss4I8N^gqARChq#m2C^&?WVK0iEM{;%x6j>Aq zbw+hvhiEttJ7_5v?Ow`hClZhb)M+wk#Dw5fUCqVYS99@c<$zZ3nYff_mhO3sn0E(g z(VqKI*=GO}nW;?$m@EttlLrQJ@4u8=DT5Q8s3|e^8G0wfcun7^{CT~&S-M>i(Lcnf z%;%m=O|eUkvuYu7UT z;aH5VhYzCB5*0gR#LH&LsJdhKO*D^P8wEYluW^9ztFX}puu><={@=!o{m(6lURmT3+ z7!_Y0zGy~68GHC8DPnP--Q-y1E$;3>DfNuMS{b>UsIfgNwnt5%WB@aQA9L<@h*V{c zav7?)yyW7M-?=7%O+P-6G^ZbbEror}+y6I+T6IztSolTl5&p9=Vh_|I#fqAS$rZE0 zuY~qrm1uZPPuE|5@jCw#bE3C?LgSxd<#n5V&BeroojWQ5@&^k{WtA7c(Vphb)UASG z5<7@0wus6)U-Pfp!`J*t z>&(9yD5i=;_9n>>)V$(~TOw}bkxwzL7D_qXBd;X_cV2-{XN6G02?&zT%47vbV==p> z#O9EoiiMzxI{=gi2P~!i_WX84B@RR-7NRD@8lwIio#&A!ogY@~h1Mvlj+BQvJP-Zx zHNRWUXm-j90l5(2vCqHPj6ZteGArLUHKkt6Ke$l$r3a>|b=;S8-l&*eQa{$DgS$ z(v*FOG;5J2E^yE~>142vE1)|WX469L+7gXrw6$t@f~M(aqEuGb3Zh8E;jxsgZ1IB%7-82cmqh zi{w;#K;O5GiY;3Jb%w^y&;(p*V1=d>dMvL3NNBFsw4-S6OM!{EdL)nVAmBi(Yc4Ob zU4V4X-$_@GpmVp^-QzaVuzS!^aVMUiq`c60=hBE$`& zxTNm1D7(9RhJ0m|`{{3=KK>8Q^^Bqw3)HI{Sx>08!M4_$HfpXMYIq$Ii;zTzBqAi$ zA*l!%Y?-H0$2^tV^VHb2oN!Bi6bkt><7o>@)h9eyq99SwdNCKs(NBvt=aMwUlR9fz zlT)k2Ovgu2{Ukb>z%=rwol9Z&`_n5DS70;~`a5fyF4k8uQG;io`2D+M`&Fz`c*kf- zbt-M_FQ-tPCIbg*tfRb>Fmg&a+Apq_`J_~jxCacCmU^by41-HaXDhH{(4^;G@4%ie zLW?yDPM-9&L2WQg6~B}QKXICIg}uaO$Q6dY7@tANF@=$#m%8wIjx=oacN|jd z9S$wwx4UPYL|=Uab}38Qq7&LZ6XQfI3*X}F{#b?U2)_p}84NzFk1SkNR`te$%svG>{I z4NWd0w^FNe30(MHj(LO%031S5+=W8v;dfx}M(ITuMm_vV>5m21VJ`}8w5DiYZ%lvC z&^CxgDuA{XV51#?b@n^#v+ybVeqB6WU(<2~MnyMSv3jI2AQ_9`HRFR8?kkQpI?bVa z|E_7QzVK+NCO}L(1#CwS*p4jNMotcEfmMqwl1EO_IrsqrTzXFr-?GPf1*DtBJ$6iP zbCP;ld8;#F0wTaEF<8r>aw7L`5vs@=Rz(WF;}<&3->}51x)Y6fRaL`stWQqJG>DZ8 zK+y$yX*cgqiy#_;u~k=P64+FFKlXxDEtx87HDsi4PSs6Oi?{*m=YtkPyR?@X4;5N1 zhZuuIf-1?ha$B$X{;?dFP z^aXdd8ZF$@Rz66nASf8{hh~Eg6W+#1!^EZ%$%NSI&rN|nk!60g3JPzu|*aX=*nv5S<95S+VdS~|~NOJh% z!?g)VdNPmVMi$2|RY2DCYV3d?REysbC(g<=84__Cl*6g|9drggQ91{M`?=2BvW86^ zrv*UL=yX|L=!M1*vKT=EPhaFdr*bpKr;lBxfM`06B7K{V!;!K*!>GF2JIXtF8aV(P zTYw$KZSHo-&IM$(}0K@yNi>NT_LD|<&I-UNQ#Xfzs)bkUxzX#TcVrWk*J4gTR8{Jk|a zGQ|Y@YX}b45ZG$)ox1Hiy8CPC9IVNIg0NpvkF zVQSe%y>k3s2C&HOM2$7*n=bWm0|i!nC1? zB25!gy8*zz#ND>nB7vTT1o8*tXj86?ukD%`%~t5Pg(kvjmZgK^eQ90;_6qQP(nw1& zX@tLHY^PJimF{*sJEZrqdx>i%KbJ0bn?}C^PT#jF6FmdxUZ>Ozh;h9pMp#Yl#j?-0 z&IX&UGg#or(-i4@)ddxtvU7h8DiBxcD)4Jbh#@adF{`kaO66vWL=~a?PGv`z@;hgx z;FqNyt)X<}Ez>n6Bq{0W3!W4PHfjkBYVp1NO-CSr+;M3b7LX6n+?XeTA0LhQ0{x`t zAEBU(@urWZsw}c3Qx~X|NYDypqEoTIRk3yjl~Tvq^;5r9kuqO>JxkLgR7_H>goCC| z3rVW`cJVu9R6xdxfxvDf2u{CO1Ee)SLfv!9xry%3hS9Ex(P1f$4*nw$T0vP;hNTDB z*gra+rDr&LvgU1QUY-taB?tVD`uZd~d z@I^0-dsg#%_al{QrY|12gW#Zd1zeU0k%tlig+Kgl|g-WKvr zIARW5gyvmz9p|8{vPF~$_c9porZJvDxPLb1bCt1Ox;ytk8tD!p zx+@U8K7M!WC}fX4b;M9D&X@MR$>M3efV~o z{H65xs}NbbHiY{o!iT|8#@i%_hgistmHqbdD*33K`F47x*=vr{Hr-MZKjk3Y5mwzS zA1i}yG6*=kX?L$@8^pjI#8LmGL8RYt!lBM`1=P}sX;-;PJ`YCTYFoovf%qHGbLeU|#OPxUz*V8|U zBV=f-GK+DjVE~=Fw4M@a6&|G9JPw_-D9oud$I=RUu?fG*GVF<_V zwo{r*n$S^Cx8yuxwp0r0C@A53zY0>zYpA;=VR{oZZ-&hq5gv}c_ww8^zxt%EZi(mM zy|2Qx4Wvvgue_>pYS(S^+RTSz| zgL0DmUpJkvSxKxOy6PcN5B}Fw=K5hK zvO1}P{!Uf>BUL!QS{06(SqIO5yZkrczrHGt6FaG_y10~GK4untTN_^(CC5}I_3SAX zD#uKzDp479fSkt0oGqKST_QK>X%=<$ewebm7Rt7U`UowWyQBcAu11xbe-}+o8UIhT z^}>x~+?Q%Q;-Zt4SlHh^zo%BfzZbQLz?)#>?$81p`Dpd67vHGTzVrrD0diHF%w;#a z%6^MAqo$DGaH<@`S!6wnjqS{*FSgJ$lNk*HQx)s=gB&wa}CoS-?f9-B#IM?V!BsKBl@XfOT3K1QAd)~X&()SlTKM+as7}ltL z$*m86r0^OID7SV|h?SqfHR+KHq4zG) zwW1$2TmL|bO%;}E3&omLcEpXxdkDj`5Qb+Vj7~+u;O^6u;Va6x%7$_wX&9ktxOy}n zGXl>*Mdv1*agd`LAMf}l!mmLt7*B&(D2{}13$46;qlo1`Lo4`UYGE3|izXPPIz%mq zK1eT!zbM7{7K-r=iWzwQ5*AC^SKDsIcB-g9W01tDG?}qpqW8;dF-Oviy{NiJoEkFK zYtk&Kk=8WaB8t~|(uj#7jg=i`j%CK!%obC``IdPn*)DNArG^Z@XsUAy6$V=S1zRok z0}Gu5CY|&LCFmq1_u^Hl#Q)N$B-lqK0Rtolif!RkxJ1gDcXNB~6tmB? z8z~R^04Vg$a&7wPTIi!^(8n++b0e*~>qijCa{7T|N>j@57EtFWj8?bV@+y$V9+KEc z2v#CEEBsHJDk{wq<~ECcQb2HN&GtDV-m^fwZ$f-HECF#WIC!;P0?x;qJ-sNLNmZqF z+%5srPM6yM9J?fQV*795m)I}w*e7r5w zi(*-yO-^A~9po`#tdhs+#INf70c&X$jN{J~#RCh9hbD?gWzMP5b{g-Vm*L1Sbf*4P z6vNYTUchJ}4B$jy7Q#AhY@~cG2dCXV82oE^WW6@4tmGJ{b_7tlPDG$oXstKA-*B~6S5gHqw zJw{0!EH+XWKyr#l@6-JU1R`38ykol|N~#?IGsq}`a>Wrcb8~HJvjrk`Hj$StQ2LLx zmx#p0=5c#G!OAwEU@4EfCwYNQ^TX?*)wiKFFwpAvN}{zIOpmubKXHCPO(bnGp7iW( zTTtmlJW0Q*l@!J)qpAH&wOWI~2Hvg#-hQ{tLW)nJ^05doTri<6y_7}r>1wV7yJXon zw%|9EPLb>mnAiuC%3OD3>g?R_ALP;~XCV&z;W@{%r%@5l{%TxjGkpBUF0aP;sSN+# zMhE#fnuXHax^!@J`Bascm*LLZkB#E*Bxe-v+Fg%hcWt2W8K56@$}GtU^p$Y_d2(!& zui(i{n-QvB*itXYz0(;qpz+9wUkM-A2e_$i``qZ2X5ufx!h1F}_f0hS%9taO=(tE< zModa?K!OC5k^nzl)2kUdv86Qgt;EQYS@Us|X9p-O&8NLX!ZoMxtBBuni$_|!+j11u z?4@chEvHj;qDtl0%*bL?Z5Heoezb30A{_i`zf{#h;a3Mnf1}oeA03==S_8yn^J}7! zC8oBk&1|+!O4Co2KlID&Qr_1-@P0cfT$l%ZU~aJ5RA2_DYs@dj43@c>@v02st7V<_ zFfGs3%t9z;I6%H!k8R`|gnzn0x^>rMCg}zteaRlW9E-`dr(_46#&~QzM>U(63)kql zLiR|X7J4D>W7}Nz&8?16uUmrqg!SodP5E`96{QT348E+mefs{#g&2^zhOESHBs77| zY_}+%r%+4C&MU=53V4LBMoqJ|b)k_^0`<{rg}S*>avtzYzN~~!Vu!$^S3%}3oEjZj1rlbf;5si0dC^YE<>OZa z`H>Csz6tqJ8SRPO%m&EO$MiUHZ~ylo-hmhGpf^nb=eQm8A)Z=94jPRfh+l^5-8V3ZUXB?U%Ffs=g&PWBc!NeY}K1x|E<`%64fWU9V)6W*oH+7de1dlP4Dl2Q4R^~I0;@uc4+IDNT8y9?qD5>r0M8@bJsZgq%N{Yc+RHk zszSsk#A~jV_i{ZIBx+i6klqlclKBWzx!1y~hFRkSSUPqr?l*&hKiKPhMXJH{b@QPU zZXzM?I~%vG^OY*B$ELE~7{`VTT`SVi3I#v3L}524HJ?H;Ymv!|xDIi(03)R=M0D>G zAd0dIHLay|s%T8gr3p8{Irfa(B|za>KoJ@SNgc{CMz0CFYDV{zVd5k%UbHp$Wib zFqs4siY|tl6o&zXM8$-lWz4p#oA{|dk$^+Ji zTy_w!iUEcxz`l$(hha$vm!7sV3%&Q!v#ROrQbU@-Na>jU$qaQnj;RnzMP=8|irbT& zSN<$V3hn=rZ=oD!_O=4QJL(wj;}G2I^$KOi`RYSz_OH*SBk9F7I^Jj8VLaQ^@1gx7 zN}<3M>iexwL)vifWJ@&Q+K%lAP2&@(zKXxS^l2LMv^Zauvp~#2)4VzIw1YIxX$Txz z5a<~Q>>uW=i|Kaz>}(i};auK#2SkSO`uMPzMTV%#xIA64ZUv@Qe{EA3+rn&t_lFcE z@hxe2+_Fgbrm>Jp8duk`<=4g@_mnI1whhm!GWLcu<>>-Geg&=&B zAO@X6mP|_cHF09eh)-XxpPvygZH#!G3hSmR!@n6oM>eE?SwWh2GJv6VU2SE$^i)St z4aa2U+UNy8qK7D13GQA-`Zy1NhbEr4NWtfi*e1;;n^IY8w=}9R!01OE3$6nL*Mnem zh|$;38Du-acs~6wn-$MXn`mGnGK0S*iMXkKbTaH{AtVbt#I`YH^%^5iC4XJ#bZZXd z&1LjemMtvEL&v-<@H`WEhEBcj2PGJ4R>sAD2>9in<9{gzd-`_S`5A0R(jA$St|tRE znpx7ViM!ZFmm8NIQkYi_6#_7J2^g> zH87d8&oF_y(@!Rx!UhW_<|P|C>}Q6riS^M;Ta(jnWvIPI&KFpq);FQn%NYv%J_EJ* zmi1NkH5CK!bZdAMfW{i#WKv_6;_%m%6KcblNjY^+f*W5PN8BtYekF^U6a8eI2*Iue zfy`WdX?O3}l&XBjUc?5&Hw5>FCsxX_|&KB$W?0y#Mb^aM`r89_B7HvzL{hK*E zD@0RRW5o+UKUAi71&l?c}A`yUoYx|l? zvP7bGHfY@6b+ETlOev=MRfd}?w=epZd*u^BTznX*3qoA{SH&2s3U@BOgXNUp!W#7~ zz#f^v9(4}`8-JDECqJ&{&)aXwKGcA83ejgYiOwVKBKoV03e{=Qp>0x2xeXs~j0m05 zEbxfU_)3hKAo+K(unqw~Nf7ip#;djrq>#vU{_*lC>)W)Wz5%mQXH<3Z!VDEt=Ukfu z;aW(=8R>e()Xmo&bIz-hQc^<2aPwuBCj% zDcrktgmOq5uQ|{snPQbCPG^W;6Xel2HWm=R;28NQSl50A(6?@S^-SoGicPr9eOJiH z3EodP?<|IUS+5*rZ-!9FZR`hiqXc}fjNZnV&8$Z@#2UJUpfmIi=@PJjGfzcLajP+3 zRIIKjX6T-B_@L+#tzl))o|AN-*O8%18@Lw*qK$9y8>W1QwH$eY!;-hAA|=)MB$sl; zLhfuKIcOotN7)*Ptox9sIjEhUTOe ztd0z<`hK?>cXh(#OlGWMn+EME_Vh(;*6Y}~XHev!9)E>?Oofr;8?$jVzqXU`s_5vJ zLkHS}tJIT@yBZ2S+dg{7L_vR86$Jpc+`-$+yn^HRCXc~^4%I+Nt%(wO(O04)35=Iw z2dJ2ONNCet_gdra+s4~7#yjX#-RC1p8E4lKuj(e2vT{``eUv7F1YQUXSvf18G?od^ zw_S6(*d@;meetUWzZ2My?VHHa%65Hl&chZ3+)#TgFJOGWDH0)1BJMa1At4#!kx(Rh)rI6L zR^_T|)g0->*OQ8SHpFyI#EgPNE4b-x*g$WQhGDjK$kVqv%5ajlL63gbtqF824k9!> zc3DE1sH+cqEb+>X*i>AS-4HujD3pdu&KbM>?e)cb0i8YLl2P%Gyg@hU1r{BXO&2z39dz!A9%zNh)3)rjYI4z-EUTlRAjiBhU|MJL`Uo% zCsPN<_5AH{ecqv*?|$ekEV3^C(~U>{i?eiWHMVusDuqDn2Tb} zIMrR!kh`~UB4Wx5+Wp_Q!73k-D*v#*OR~Wm$Cmaoqc%NsZ^YV{>a$LEaZ-r@d2U+_@@YGKK(SEE1E%g zFCUj`0hb$eMBzF`w0Muk)WwUYw&2F=dcBd~uP1FtJ*lkvL08wVb?fr0)UVq}y5nfd z{2v}jfKLtG>T$;uy2P-4nr_hdG_*4e1)ZDyn5R(H08l7j)to{28bt%6$iwuo#b-Jc zi8lm2sjA0QR4l;+m@}M^Ue)*ZO-N1H;+5!-$?_)^{QyHx(Hm$CKY+?KfpIyif4M9! zc(oSvreahUl>DDe*0OQj`;>GuGuRV$yY=YYncvMEL^A`?HpQgWw3 z0R(iiG_%o^@3g4Gdaaeo^DmEUxEq&z0RJNrtOhN6`(`E*QQ4|)CRIG&IVOuyG_D#h zX-d9=EAXa|gcLkKl(KWOk zscAItR~z(ixFtT^YGJUbCNl5C+7m4y(@2_t|1^Ett(NT?H%tl=6Zc#01s;Ttv-wIE zLnQ*v9Y?$q^K&aQfRTj(1SSI*6^RqOrnVH|!uT`P{3{P+0zfLsUMEHOYvrn=|%)}c^2ajSD zz%d?m7|8zL1YMn3KVj2uZVqbT{dyuE_t>-DS7CLC`vu;$zlSnn%&SJT18I&_J$1La zyMZuBHjRmO?quV*_`7qY4pb?pvWdP=67ej^nve}L;EUv?Pld{m1EBIOpz4{R8Wn-+ z!zLuzcA~^c(q4iJ_z4shuH`~~!(uBshz58=lep+7EmgmlvMo5l4|dU2%fFyO)Vz8E zol3as*|Mq9giG1Z3t%zB;vZ7sUc$@Mkn9RO0;H_dzxAxT0`veN|HxyYWqLUnJnyl* z^lAFM+8}bi%SkL~m6Sv7r_)_Z00CxqBrGhpdO)d<_YNt905PTytF2IN=#fRoBxAB6 zeFkRbZL*ZZcq>jV*fW$O*;NkePs>0|3_1dN(5K=99+2%jwdDk`lF-W1p(vICQUpj@ z_X9OsQ870}eiptIRWj;Gc;&hv*2+WpHP5XD?$7I)v$^#jv}v>W$qQ=tyLat(=<#Y11zJ9NJ+?){CpWlb_8z;~0i6Ev)j3>$D&#H|HZTx&}3ycc(UL%%jc-!g{ zT;GYG70c!xancO?InC9_#H8iEg53H{r;QEfPK8s(NM}^L6Q^$YE%bLr^66V6NP*mgv{{$Lvaz*4i7IjOIL#2zZ`w`+uPz z;&)7r*|lx@2Q0Mo%xzm`d%4$Bn!TRrMwSd;R zufnkiL>F&$2U7`1tmN#_Q7bX}6y$2tjeOyJg+bw=2)XigxO+&g2^EUbV9E&^BFScg zSZEFub`d1Ri-^kQ%C#7PTnt`n$#(=&`{a(sREDV7L)KV?je5UhK(sr`A1KyF2XlsK zf*fbM!CleB4FI;;B4pkGJ=J{}rI#T+uRR5uLNZF$;27-tKpf*LkYzl6EeB&|d10JRL zYls{$DA}M3g>F5smqckY7qkv|_%sF6H5s#I!L4hTYD5=t>DDO>isD0((w@c6$Q^xA z6fV&?eb!kn33LJCxH$rNT75*vgx`q$_MKRoicVoyO$~n5zN0W4Vvl1ZX+*S?+N7GJ znnIHyij~-ti{{1Zak4b~_u-<%sY$qHH!L0~Nvz06;Vc@I$OY z*AQA`44Co&pwK9`@)jZD9v6CaDNy%!W`wQaq_96|fXn@j*(VJcRCJ(BE}*>kfKn!n z-oS!>b7QR^SkFIc^lQpphh&(x#C$8pCR%->^*!d##Y{n7V*acG&kl=(k4x;WNTlC% zye1@b{3QGEGKRO%haIuooDn3^s082 zP0gd(tUPit0UY4bLkmg+6Q!eW0ZPT%GSpU<&+nn+7l)z5LUr=25~UWCvD9s_pgua& zuF#2g=XMkGeXCNRSDT2>pG={#WjIWAatJF{3}t<%DvcOTA|C-6b+n3yH}nD zs=-|=SR}6Z;hEP7^mG{Ag$vxH(JkzceH)~eh(9Bw0d-CM{QP?!ntd45DJ~3g@B9$= zI~IudOo)#Tiz3HhJPq->bo-!i-o1!r{iT7Q^U;wp#7)kmQEY>cg(4ozL8PX%FGL8! zM^St^VsI`*3ul(fea}J)eS;MIVNL`2eIhMFHdMyFo7GC#SxSAW6Tup5%HkbqDDS7y zP9^2FzFqWWYACz|_8inuL>gUvS*9CWtkQ7own7F)7o6Df26qPKD zDFLZk2u78DDk>0(>r_=Eo#;rh$O!e1S}?%W?q+(Uj5a?2)SRs8@aSu>K!8{N!ASli zfRi2A92U3RZ{!YD`oeHUsBC2LQ_3_CI5TQPT`D8W-KkBikfkK4e|p+LTQ*(FRW?Sof9VKuB1E z|M;Dk=RcT*^Ze&n9t5Ry;7T@BYx#Kje@5gmTwowk1>%hedti}EA+ zy_z9ifgJ=Eb}%&A!Em@=B4NQgY>Z= zFGKBA3K2U=LL9?N@m z|NDL200@wPB=wv10hB;Wf(@qO&_j~EdIdKBj5Kgfm9Jb>33AL6BwBH`Lr+=TEV&s&hqCI?gcgb#7=z#5(8Gc)E1vbk~O#opoB>lD;6wjp2+| zua$QI9mH|Dnb@|^)Uuti(CrjLiS`9OAwQ6^lvm|`rktbn-_R8lc3m70*&GnB(Zz%2 z(wv23)wK$q-8>0@brkGX9DuP-mwK0IMcT|6+{$Ar4)K4x)*u=;X5v4I=Km;?eG9<= z_!ZNyHS_U$HWl{~xa>9YZ$6&#VuqYPsenFc(w*y`nqqtEA2)rVCDZ93yNF z_KniusQR}M2!YE2XsX_--cpddT0~w#1J9}8iFZOohfSNs1dyNoQU=BIs{0Aq#8@#d zJgirIR%I32bHP*Cb1|0fWbL(Es~Kx~5p6ZQ{YWy^-w!TQHp`c8Zgv~}F{M2;OKm-+ zeUdZUQWM(Urm}h_t2p=rOli+tY~HrnytkIk!>!m{F!_HUg2|nUl*3kzm&1&gkHN}f zq<3b|r^s@wwQZ7Q&!25zy+)A>xW|VwJa8Bh7PVZoZF`Q-;(Vms+K@xex=3%jJP!&Z zuBS+-CDYG=&X2XxxSrflbf<>|AZL_htfi=O%=<9cgOit@rqQInfg%Hkz*v`?ZnMck zkjJ^)Fjh^zC7H2WGg_FzoVb9xcvO&(o_Jh-MV%C47W7rw;%9O9G9d`#&516@Rx;F8 zl$H-sh+8cr->~e0G5+KU4GWQPuZcnGbykmOpdeZipce0@Vy2zS6A?JdyD?3sH#F_4 z45E2-n5=lU9ZnpJReH6$j5CJXFYw}i%1#=!Di}C0n=gz#6x@rvq_bGjx(-x)6=6|KGkQsf;dvbkW5g}|X2@j$E(5!P z=6u>>fv_RNhs`yv!q8P1xe8-2-Fnkj7Pl+8AOmu|A8X!K9ECUv`AAv`@HT2eNegBB=e<_-K zmxWtnFtV|r#ALh!E~qqHq>wC(zA&<0!x3=J905A0z3A8E@4ml+-9rbv2Nt_WL1zWK zm*MsrWftJaXDxMkkT z#0h;(?i#d=Ir;inLpZ}bwmF4$SO`Yf`*SiTA zm6U2}jwLjKl8I#vLy_nV2=9ODIWsvx+!x?PPp%v-LaPM;!L~@w(s%rf@>L2?KF`)l zf0FAwwmNSco&U%az2P)13M0@F%Q+RPhtxhmHgO%U4#R zPUJwH$U>bs-b=}-iTo$a5r8(M8sQW9Um;48i}3##g5ulVRohbPMR~|s1wdH>-i|Vy zir`M@asUN|Gg@!x*6PZ{O8HLol{m8x{S#XG`Ho8T6Ty*JT$kus&Imyr@cg86qHNB2 zm#1}R2B1Wq9OTZFYDj&hR!H2j6aWjkXn^H3Q34eHF?JCR4wCo8clQ(SNOQO4X|u3| zJEZ<{UESTfI?@2cuD}AspeNQYpm&T@8VhCIxROzhIe1AHxjtjvUIK)p*>o_tn^{fU zM$=@uRnv{I)53o|_H@Wa;&dhK#4csW)^^%)?C@nL{W%8Z7jbw2CX$ty#`K z?~PV6S3$h&*yABsuPRT8^02q8$w->Sf%bLNZ<)9-r~{*WNymSV2XLchEI; zYe2p%(6BEG)TyN!YGu&uGb#3&6#GQMUMw1JF^LV2APTDmQ3%hx(Y28xiVuJkN=C;!o3YD* z!Ba+tg2GvsY>aaD-iX`rsg`PV>HviT(8OkU{d{-*e0Tk_BD-B44%!DngSr6+)trR? z0}eg_9Gtn}pl87WG>o-&pV361L9(=vz@@x56fPWO&zVi!-v*<*(kI8Jt}a+4*nkH0 zozOt4>~hbBOjD=xI+|;+*q)h7LrYadOIa+~I&!^?`d*IHr7r*c8LlM-ixTI8b~5#3 zm9>YN54PWR7N&gjWa(&rV68oFxtQ>*&9A>3W^qMdg)NI&qTXg3s9=k$(UoQl%`?PHIyvwGvY+Ci*)l`xH)) zw;4`6`@o$ursI-%k;6WfW5_njgHWBtbk?>-AB)G9OZK5>BlNw#!TZ5&O?~#{tFK@E z*NIWsrowODe)+=}Z@)LoJEHQJ-<<3+!9AXrc31Y6gTK6JE542e%i}hg+|)eJT>ZJ_ zE)}x$348F8not7)s(x@;okHVw&fbF%vEdLgG0~OAtJK(9FEv^_^!5Et?Im5@Fr)) z$65UX90j623(q&+r{;8_W~%r#%40K0M>Oo80%gI|80lOp96&8mY0V?T=K7MD8^$x* zqY)L}!XAs*s!UMg(?xaB2qqc`Z4 zzKz(@&-`w)bpy|JBg_Jr(_ zXqZ#UPTstI&3cwr$-ex?C~3<&JHo~OYS(^%Q_lRbQM+1PW74pTdZm=A&sM^Z(tOtF zQrlrs8C44JDmR0@%0~?9H>+V`#dxe3G=sC^3WLf*LKdjT7u;%J1O52=C5q$q$!c{j z8^}*qD@*3+7AnTufZ}c{(F!PyT~HcXP}&Yl&R&=Gesh@z&m&`}g3ja!*jWxp)xr8a zHGQj4DOMcMDmTINbCcA;x=AXomcm0-(y>aqqSfPJ=0O6AUvCZvTxO|CF1(6Y4?KS( zlI}83^>K)6n5X*X=BcQ$VS1|9Cgq}iX=h^<>YT_)*x}K)%tZE45jy`RHo`AHk%heZ zI{fj9{j>{p^cO8u>>MA)?U}7E>4=i<3aD?ppgy*szEj*@$+R@efOf3USZk|fOpbp! z%%)@q$K=N~L27)j)Fa)z&Qjn^7hHtZC{*3}ezQky-NK;QS9P1dSaiI8W7#%e|J5>U zs#;8Cvd(VKhHc`&ZPDQ@Z97Xl`?xlCv3+Ws(DUlKwT5Hv5o}igZ@gTMcY5OmD)3K; z^$>EN{zgcbw;ujVK*s6kI!l4d8$vZ98P)^-j-Bv7tVOOpSkD}Lux65C=#Ugm{6ipVy+2U9q)*a!GO2*p;fK)c z2bN`1>EX78!wt+#1*IVOc-s1|Fe>v~<}`7i&Ij^*SVkcSJ(beO{Vefc#brxHhwC+I zXw6&tg!aV3L#n_En%wA~AClGJj?JFccBqzreloR%SYfYy z?2zDIC)@}8)-4!_Kdgh!tXB>qe;58c)8vpnSu?aP52~Q|$T+=?727K9?t}Dy_zs_{ z@6bD{^Ki8(BYOuKOlv9YS)NQ-^-;ZGL_#5ix5EmezfCg6#?@E*jqL#?nPsi-Sk`*? zxOI;&$jVr4bV*l~^j3(!Gne?YgYvPSeIM~BoVeAbxl}UmNqAOENx$ESuN5Ul!KI7N z9@)mTzbvy#d;3VZNAcd4j57YidwWb7`60ZwIl1v~Xachav}+Hjdm7k#s?t-J^hC*- zTb{OEi`*i6-46cW82L1>=`SZhf|T&n^n$ll8_f+i!M_}DP=xm&{v|q&uY9xg)N(RQ zTyF@)5Mr|Eb}nN_E7;rG<>HKv=Pce;`Yd5R^YIxmPQ0Tj^Tlsr7UgXgB3>C8vL{sS zC?CYE-W4ouNC9@p$3;K*TgaHA2=8p_3`JTW{9U3e7Q zc+?BF&B4Q)aKNt60sYkjcofwRB|&SCElNtl#-QX*qB~d(yrS6vB?;$C#St~Y(ON@- zs$J#UkDFKZhcYv8F#$h9#+zJXnse{+0J&~PlYEy?Ez3>YnN&Tp7%qs;@(fp8HCzE} z^?j1|gQah<)^?WTd zLLeo-U=a+8HyqI>HG`DxzuCTa2}^xEET`P>9U%R- zbL7G<5@JWk@S(OQPFZFbGR<`r%^|r8gCG9#!GMUcZDG*x4>cVK|V<9#NWI#7Josxs!DEoD(Li5Zd5Uvi~VQk9DS^tTvCYMu!f%@ z0lvBEO<{YU;_f{D>MZcX`isRW?Qk;`M}2<dhT-kd>1Uf!0Mo_EwVlYQwZVUp6MYdb^;U7}Ov#etT*``gGo`;zKPk$h0@@d_L;q8hyJ@4O;wh zG(_d|JVh#W{UQ|`Y2*oXC3%KOB3yg%u!<%-4w?)tnv8?)E;NZnj(0bVzk>&`DW-6F zqD*Lxk}4?PeFLVAGoJ=bhfQqtF&NG0MR}&jqb#0DJ)_VZa#F=JvpOWvgzy7{7p*OLLK_sR2#k;Et{1vYwTA;v+d0-R|#ZH7XM^@(!~nj8TI(i z_UYV9|1pbcZ{{x6M4twa{+t)96+Pg1D|ZT3<(UC+ajW2WjX4V|TtvouEO+8xSt zT63mDQ#F6Brn8aUK*+E1!UWn$$gj{yp%U*Bt39YbXJ_Z0BqU&i&*7cua*Q3g#=LmJ zTal8k&+R2=l<3DjsU2`H8QX2uO{lvWq8nEWc5>dsVW}qri^4-Ua?_MZ_nC5^qG2-5 zx5=5bRFeZwt4mw9dJgo9E%a-*qC=wJ;nl{HC$7j)0yIEf(6UTjxYEN9YHWtVQ0A!& z^Por59mYC^c_r|!9|(vu;LUzwlNLdGYqb{TD&B5a`pj&Xc3NMqN1bZajDQ)Lg0t4RtQrQ}Jp#l|9 zP{0LQx}CkU({d1R$0pvcuBN8W>OmD5?w+|_Zg^ituG$jPrp~B?!njq7io_XE znKD13G-#cIidb9|lAnUAI$GHFc{XiGypsyqRQzVpBCF$x7JXDVtix&)wzT-;4n*N0 zCES{sI6l+eRWexI%~GEA_EV7c96nhxa$x8dDM)UF`7)J~Lm5$X>8~O^HamAga@5Q0 z*K~o|^z425;DG=}12P0Lp=viUMs=3$D}4T;Fj^xP?;)KbUjk@dTHaAX+zz>+ zhfL`@78-jL<3qrf#ZS`6NlnEvdHT~Vc3I23+)JIKQQs41=uf}1eh7WTjLoS>xT)4j z;V-85V&gPVz4`oldN-EINT)Zq$>c!{1`mZC3B0S=5}EfIRh&asJoEzCxl2D?EwaDl zx8O$|KNJ9JMEN6S=6=xYlE&j2k0>4rH=y?w-+_onj);16JfZn4l9Tg08HZ&g?i}~j zrH0iUZjIXt*Ye8<<`uXVIB=_L;Z`S#x56zs@-IDjh?v%saXMEpwtLEZ31gdQ1ZNtC z`pz`?y08cHv?>i|bi&&ydLmz*=*0J`=v`wS zcUP!FHT-6{8_KQ5Gd2SD5q$#SN^ZQ{aq_@>jT1#L$ZU5bFzFgBJ@@FP=C@?WUQB6M z#2=+08!W&d86-X$qy%;}T&8-8vPBAu;bfp;6N88@u5o~hqA9fB+4S~SARWfNmi3Y5 z`Gi+eT*r_2(XnKExd&RT5iNT9!jjh zgwTNrJsT6+t(CrjugyuyIGwx$sR-|DG6V>qDB%SH?~)N%TwpNK;S?VmwXX1)*&Q&U zV7$(OQmSN50K;zTDF^C33X2X`6ywPjiHFX}eN!Q?;dK*reFTdHwD#P8iSG|pdV0HH zTM7Gkv=V*agiNW3Ucl(ox-uW3BUyy@+*}V4%H<$6)+^uZ_?pKLH^TuaZ9yYDyTcQq z7LL;~%TH0>zZ;D?PZL@FO;U_F;U6w5g?XaI=w93*NLbHHBg{+VTB8*Rn&vs5;0IP}@oH>r9S7&&0%8Ku0cxv% z1y)c5G{yh7C=laEU4-X?v&weCB&W!WKS|?hbN6;L7MD#fepGz;kqCdnK^Ip_DsO`o z-o8*_Ms$3k)-TMbHCEmWL80A2tAbs5%(K%PychrkuC7c${fOyRrDa41A*C& z^%jZbQAxAxCQc^S+ttKf&_Leg`7`q_`eE?lxSD$GnwMb=m1zn}#?#3=rW=z>^8@OB zBe&T`MPXX^@a$WtPTjOb@zjoc1lc`^KIC}M6+zu28V)x!l+Lf9AF4PcfT0`{+z5Q- z5*}Pr4m0kr2Li08KNIV&`fE7fh3#d|uc2b%<-?ult*ykmBSLOw8{gCH?@^ zY;df;!4Dg|!OipbY(|@gQ|6Bgrs;8h{(B+?4&0&=vk~{0SDHhY(yT5Snsc;P!*B&H z26ogUQq%4iMFVP>-a@)!WEx6WILt;W*<>1&b8gxJWBl@PXxfsw(s>Y~)aO?BGG0ks zf&{&2HQFzA+>N?Y7d0Ev3 zh8H8kF)cRm~T`J`^LN5?A&(HUWAg%}1wPzZ_nGb?Ra9ix`Se9tfXoqWA- z&nwGX%f|~lqHDkZw)*XNUS&GJlM&kOJ(fRgHdt>kWwRk$DXiLjE%zo3xn!V9;C=|W zQ2Sm_IFLd_CV~*Fd^D?4K$&T?$(yCMM^+lWaR;>V4c{#H$Cd0`cw8>-voX@P zy?4HZsO@s!#;d(MUqS1;{Eis4RfF3|CQbXE7`I=0F+f3I`g{}_jii}poJ>f5Tk4?> z%#|c|sbVfKmzNxx$-!rtCI&MNFTTmBZ;qDVRlogS#!#IrRK@OtBQw`F6LQu4?FAHu%t`hkM zK1ZjrjFpeRx)gJLb!}rn`Wk$EoieA4K+B2-uaOO%v zoQ6ktmPc(|;yOsRS1OQRVf z6iKJPe_0drA!8Jb3U!aFVBFQ?u^~jv6ZMmjkAu+vCKFR`AtfN0U4ysd5z9UKiTW4^ zo{7Di@@Pyqd?w|~p!esoQMbgCtOy0V!CY~n8NHt_;MNq+7fCMXfgrlNTR0mrS){{; z_aB%%j;{bzOojvISc&SU*k1+*r@D)Vil{rn4Jp51==!cUM|yIujEq zPW#sTB|NA<={7i5;ik1VyPY!=F|J)8@I9?eL*ls(b#5t0OheHg-M}jI3lYlof;3%SOxA2d`vcz9;YLKW@qBt(w-NZr8R7261s8!dJJDtQ4`xhUM9G zN`l%nF$hfT3ONVG?pBzM!Gf+ONXx*?T_X!00=dYC z9~yOhukPUwU4szCRk{cTQeNW=%TR2cjH>9M$rZV?FyC1yItyiIq1joObrx}FA$Jxw zxuTA?7uO1@bkOGIPHwuDYy!Kw^_j@m=KRv2MTTAa)|@Dd+2?1xv&?scqGT@BtGNob z6V@4T`AZ-NkE}6r{tlfY8SA^T&h2T>iBfCwHMq0TPIFU8O@UjmJ~(qVk3^Q518k@Y$%K^-t#Dgt-yTVDG|g)S7ba9Co!E2 z3_kR_ybzDBb*dgski|(I31`d`DZIOq@)n7?LkiO=>Iv(Aq zaT=a7!$qfDwvh{^*faYNv;ITfe`xj}QvY1Gkq7zG?lYD>S?g!{ojE8w5Lw@%$L6Z- z)WL3Ovw&kp(vHJ&EKpWz9mGFu3$3-Hs2*f=FX-H>@_{9En7Zkw>TOp2hyYbrp(S0I zkm;xD9Zm6Dk*n-zWY1Jy#UIZtNmRH>k>)|HYl&X9+n(lizQ0EkC6R-V+BP3`4y^s{ zz6xuQlwEse=zcEMPs zxJT?rd4FT630FsPoueiLmQHnf5!TT*pEMK2$_JUxmZ{5klQmXpxKHw28VIKPx|pq0vBz!FpwPn4^Q^L$-?WFKB*G^*nyuX*rYbBLp!6kVv~-lv?BNIk5|I8=>KMe}CI zH+P|o%ucFXcCr)39afhKg(9Ohc~&9FZlr0I9qS-Ein+dhho z8|I90a4R~x-O&}Et^+S43oo%hz&>~xG?xl3k7tc5v1e{*BBbQ!ygm~&i`oBij{J+e zvG=ZwEHwy7XPmFnVG<_x{-GH5fHRWKoGPDvXGYyy{}A(-Ln|LW2Q$SsGj;Z2CK5}E zn~rFcb8%Cm0uVyxElba^w2#=HMYK`X-e?+GKUmzNrdSZdI&xt~!N~{*B#TvzQ>yPb z;}6T8G!8$D&)}he-JKt1rlIxb4=PyYOFSOCK7V!;e$59cA@1_57hA@?sO4N}a6Nj5 zSJ08LLMcduLl(e&jVrs)>(wd(A78r2k6<6okA*_7Fev~7B04js3tH@fVo9A1@i!BI z!<2Kd(DH%`ZRc}A*ZotuXcW!4%5*r?H7Y@sEBU8z8>m{@*rT56RPDPEoS(P+LIv(p zUl06U9juD8WD*|zVKi6Sau%=0A~s8?=LtWkd_rR(urr>(O@Vw^D!v$(d^c(KS`N|- zEYgfaS6;oV(TtLC;>Zfuo?AYj(d0cs+Br&nmhh|c{&V+gtJ{?15k!Mn4UsI=1|sYh z>h810rKIt#vUF@VTlZX%2&yIz1kYekqK25#EiS?aaRQ(B>AX^p8(8J2s#9%M8NC*& zqeM2){fDamFuO;9Ms;o!8~16O_n}tYNZ-qD#--daFG1Ct=`}#Ih)VKX;i-p|RpYEE z^9H|9W+Mu!pA+4lEKYJoAs6iwcT_%$$7(*8;SJZ7g|hW6Xbb5G1HvYJd0s~Wv$YOx zm{7Bi(QaKxA6H?AmR&6{Tv4K?v$s(92IAwJ>MkE^fx_k`|B+vI9YZg0U{h#ela+b< ztwa(VpK!=dJqJ=%f_k#_n~*j5!|S@+Tegb8-a#rl!BS@{F0~ri#joy z=J}W^T!i^5QC215X=%unqI{*;0RcfFq(if|jR8A`4{n)06bx(6Z0pRrD8dV=L$Mr< z#dD5faKF{Dd|Z1q%Q|c8>L0?V)C(Q#64~q$pY18iYa3+s9+6PT71jATs*P-Q6`Y^M zr!aL^Bjzm%e-y%TsZvU6{)j13zLLKf2vx3UVql#Wv-v#e?phdO?^HT(W#7H4LDHgVLiT8C2 zI@4`%qFNbi@K0g_m^RA87Pn!J>WI7KaV8cxqwDgis*Mx3s28RG&)(NIIdU6mezqh0 zAKk?!2T+cZQs*Ha6d8cqEjMMx;=YwT*uxQCFh9_G^!#jt2%4Y$ zmw%uBnEt6}`uCmbKPsoX{MWDk_n-gx-S7U?`pla0p9L_MS7HpetxYgSK=IBbxS4_y z;uu#LJReu^WfSyC8U4%AA@(ti#;Dy1`8vjRglkLAz(bzDSkgD_sutX!4vJ7x;xDEq zUZv``xbr~PxA_dpDS-Y(sppt$f@u`li>YmTx9gM0aRNW_>JB%q?r`($xW6vHZDrnb3!bv6zU5BOcp5@|h*^-8- zKde-DT8Iy_4ljh4Y%yuq0Nt^9fNJwFA? zkJUsuR(v(v3+ao*SK$H|* z%Y?sl#@~Nlhezc&K)BjIhzxxYi5!TeNr?&VvGiZeA$0G$lR)IyXviVQz{6E*tbKfF z`j+Blnc9}8+uP0JcIj;+=s!HstuKVCO;4AutYcWrlw=ZOLctCFvkY)Q=S!p~&guu# z0Zsv^B2cH?^A7zQY%(ZsS}nX8S$@|Nm?dP^$YnPi`2Z5T02!75B7vT|2*IX?ILTyJ zz(^C@-fCAakdmCw*l>xR1D1&qdzlLDkbN|$C%V-gn~0R)Ry%wvWYY^UO}cv}TTG}$ z6c{0rE1Rk@?tE2aUA61&DWS(5e$LsReRWb+xTz|!Q^orId|s3LDSU&|b8LS{zx2^5 z-}|b^y1JhOxh4 z61XvZiwzTh!*tJ*Jo0)uB@V~!_tP3G$!vGChGa9vLcJ@xG68b;LO9+8hDkRc|F^ml z;@~O0<>?*>yp>-n&mmlNLggt#0t^a`)XA(+SKqmncO?a-uBs}UH$?m1zx+9+&f5ek_Fc z$3(T=fuqR ziqP0aje9!pG|x5*oyBkkv@Ta$ijnMT?p1FqdKTugBI%wf82hH+$eDs+8vCZ8Um;}# z44zKqiPTIW?uvO&DmYs&?SKa-+F>S3k7|A5Z9L(|6K*`=##3M8skiY|YEY>$YRCot zw#Q}HbQ#i&-0H6VAvw3{acud~* z8Zz;_mREx+sh}dHgp@J$18{L6t?b9r5guZAWwRE4ADdHlfwpRGi>~wIvZ$oRtNrrD z@f`(M+sAYI9tyfFCy57@D7d@e;e)9oqw~SIDiQO16>BA8a+1p+|1mrMF~`m6C(?7r zXNf;ZaX8~-1-N-Jq#bxj8@Z$%R-2qHHH5*5KR5b zCt%FH;U&i0(K9+|@xEQ(y&M#bJSa$A6eQJ90ILg+Y37i={S&biHEx3Y{+^9R= z95qX4yp1TT7vUE}*0|U6khSlUbtAKcb9xzV?1Ql>by(aIAL zXXVvm^dwku#rmD-TF1>Wq;e}C@x zX1U1$E&RWb##duspNSlEcPN%h>zgYa=ahr8I2Bq5!#c9?O{1n z-9#6$*oHzTj^mwLPG}wZX%= z_GL)X#RJpM0TRGR34RJAi^;d`!ZZX%|HWqWc#i;p9C|bF>0!Q6--5Q&41+lrI2?il zJhMxI>Bj*ur7?W5MSB0wEjCb?_g48g_^r}VFS4l_TQPei(rB#HSH=;3A0?eu<|~yw zdFDMGr0BM1ZudQN+tGdYdui0%+{Q3sz!cz0cr20H=g}$nNmub3L!?tJjX2 z+RP+RuKzyApMQ>@n3J_M^KEDWcL_Op+&;|bn+Ey7a#i90#R(5f;|WuKFZBJ5!zbn! z#vm_&aG8^HpTIrv@Q>KxA7ONie~2&jSAruINe-f&AWg7=uMWu$`9tf3M2wwxQd z&TE+(s&THJTY|NjdPfB5PoZ1L3LGU}OL2W1Uxi7Sj-q~-x>s^BGYFQAWfW~G4WrBJ zy6Ys1wc?#VBh(T3=dpT5SzL3$wiigLHjnv%65beu!jWtF@tgI6Kfo1lF)37acZoVA zdJaACN?dsLlRb_eBFJlheMDQSJPY`By&B5ZsUPHMT4u{j3cuSX|=dj^=PhPn^ zqc*#0tn&jXxa0#9ZKwd`zef|u)d=vu&3&2aY_#BE)PZGh$QNU&oG`SfFtz zai&xTPYW`t8;u!3+#9YZVHahE4ZRq@GB8vah%lW{@6~lV)XDLf$jN^{FmgqX>c5fC zD#5bGCfyI@u;&4C-vM%zgvWr4FSk;5g}pOQ_f_&>J?`>$1jkpZ(?P%W($G4kk+(EPX&vzEWPWybP7=!PNP#9?56JGvyN>n6kmf$WKx^_> z{Vn(0{!(`PJCwfDoqZ%%a@>C53;d&9>hSEh&hxPF{7dI~RCxZo6T|ydISEqbh({cT zp2;cbY4yUXL@U6?DFd$ zhr)n%h|nG^>uV1VvH%FpA66Sr#412i$0aeGLb3=}ItXrkC17ke8iu7brI9{P(TjQX zyGy(!bbZ}LND%iHBk35_JN0Bm+$@Bc+7~y9TwWY z-UnJPM>1M(pe4}@H2}aJY`zS-`r+AL9_n@kxM$h(B|e~r4p94XdW=D`hLwS7QtLr& zK1U&)GtPn9ta|kXoF0#XFsQ&Dr-nU7UEUqds00NH3oM-Q`6oPQ;e_vMtIk-%YD|UD z!LL6Q1e$fW*{~@FmZe)ZGD%wGsXz0~pTEEtPa_AfG>?_^cA!D`=z6|5+gBdd3dBZ_t3PMOEQg#id|YZFS6 z=^d(!dz#a3SWsZdviQJ_j8)m+=ttFPDqr(w#h&-SPGBs~m2(F^xF!xtDPM zSeGKRP^{C4ZnmrCTzh&vt|^ku?c)RH>f^Tbb?+f%sL^W*8-kj)cY`t3e1XgF z=J)ga$^5~%a2@uS!1UelXz?#_ye5hcUZ|Rb9)phGqTnnDG7mIe{fEwfOCBX#fLKp* zIDgoE0o2x4f4)~u^(Fez%mek!9I>XOo>h=BOLOJ(r%vw|hdu+o8x?NYOH#kjz40QW zJBEl_ChgDN$2YF@TG_9Ee#_+m_B8KAnEjm)f2D;m&_YkqZa=xMzk1~}X!fvLujjJ^ z(+0oBVViQLGsCoZ#(bj@-C8Ue_kltb_kQL+VdTTWz{S8Isk~3<%IKvN{QHBZ@$lI; z3XXBzmHlnwx(GXHqI4>3y+A29kk)*L_HtK zhYrZ&I6VR61aS(`tHaJjy|?v+euHqx>Z|)~!TIbFH|AA7y^(?7KHF09b~Rn0JwNhJ z1W%zLzqUy`6ej96h=A9Xp(;-%?gGL$N5?;7)5-8D;!&MS;(0=y|2No5MxhTrBL_Z7 z)UOU7d9JfVXZ>;jo#Wo&2N1>kdgUBRj5JX8Wmw2`NI$M|?F9)RxjjF-hYucaticJy zX$ZLz&w~-4c`WL=80nvY5k96G8ho7Nmhc?-Xd?TI4<9@%rvl@7U{N$*4bv#?4_s9A z!_t|@-!JYLTN&YG*OlSU0tA^L*J`}(_utfCXb#2-g$~JGL!k8zd!BHiBG0bU#eec| zA!wa3?Na;+gtY#*e%-<|3~vyq%5J%l(Glf>Pc=@D=Vgh~Vje)e(VZP|#UB{>^h7Ullz8wII(Txl`gb{=!Zt(~Uk+aTiX01ehQ$pRKYD7aJ*3~}r3lZ;`c8`Vb3_x4_0lb%OMy9nzO@E~djm-L@H z(+(A3wh^p>q#<4{F?e#Ed6>!6{K+}Gj#l-kKk!h0=u*Gm_pdZA$*;wJnm6m|Wf6N= zrgfOpx+#*nGym8cQI+CNPUfM9obDEO6notPL{8OgcQL1UCbWac&81;-UcyFAt{a6_ z1I)fm!`c))orNExFw;~GREKV!fTAOpq8`t3PQf^Hg$%-Jg@7d+6B{ffDgKvr~r_UUcxQU-G*A6rx<*^HDW)sp<`QS|lxzG~4B* zJvLVxImqwZ1{m5_lh%ri`K5_w1{3C3u7SnmiC_`>U=ca6fZI!DSZuQ@Gd{_l1{QkC z8&II=C1T}RtCO5xd9H2F5>lLC{{;+yTubin=EKnDkv0@ zaJT&Vbpc1=@H*qA;`N0730lAUfM1 zFM?JS(4J<>0f*&M$H)5V7e9%bJ5GHl?mH;%_eRI|Hth*-Z-~c5KI|IUHov)9u9knD zKdf?K#rwksW1N0L(OJf?$R^$q^e22}p&1{6TIxTvp}mXGBht1oXstW5G`J zG`r_uJ1zPWGegeu)rt!W*%7RUN!T-c09`yBlqSV@@FTljF8DLPTg>mX8 zSnBdYL0dki4GugQ*NdYn^NL*7eEJ-du+jj)@8esXYCvnm3tT6rOI3lD|_ zmzJ!^SX`O*VpB8%Q;~@h=*8g=?2FrL&o@*a+McNHr|m zWH5gsc6AFaIw-G6+NmV@%pZPl~M_b zx?vlS+pq6(M*9T{uc8!qzT*_7(FHDIT;LyKIjD~E4vKLR3+f$wxwfy}f2fqe|E5Rp zJCbqf>`i73e*rY=;|MyB@``C`%dL9t>*ok%q^1-?dc{UUjtzNDEjjxaA#`UMKXe*^ma3ZTM za@ykJUYb`k=DF{K7X1WU>|}nsM8x6-R_i44pnm9}K8<>Q3DkzXJ}Iv~pR_onrJ-!Y z3p?xLpkO%X9E5{@TXWkt*_b>Q21=Tvi!sP;3imPXgpBb63Bb6WN`h`|Q!Iu~b>xx> zuE7GOY-$zGL{R$xq8?~_Pk*Y!S(XC@{UX7K!KS!q<-%ZKWWlp^Scx=T8Te43#-4+! zemMz{U#ia3Nkg(tP*`8dJma@XT3^~T2PKLJug2!sm1L>L58kj-w`^*c*~V>crI-eR zr5EI6JZuQyLxOyPQ-bt?$B$A}1q%jHlwa z3I=Ymbf$suUj)*$3w6a(B1v7b=AHEPcNI?NRE5)VG-*xcG-y$Po1kq}m&%0njF?J2 zn2KCXjlxQp;uE17N@uKN&XMPF!D1vzJfq4%&Bo|SIs*F4=c8HQL$lbS*&wXO2UJYF z_Jl*jTdd#=lc1k|#>+vJ9iJ@kbI#fvy0&aXals^SbtrK-ab#Yj`Q)x>L66ts;^X-R z8$(1(r;b;y%wn72@;PVqpooxRnDiXySQL*+I{9yNWk5&F^$@tiRoEqsZ)=)tl6Czg z(;iuM7iy+&@(5zrk8+G_`3d?9$(q}3$vh zc3fxLl4(ZUcB;yS;U0nwJp^-?_EF?BqWFo#?&|Fcgu>)4(tS1>WuzQ|BJxI{D2jWb zoXKGj6vK3-W>?~kK4*3mA+`~D46X^^Vd~2VGxLD&o@{5~ZW+RS&p=l#E1qX#+lG+` z9g&NUBt8WlMiC<+64lr7odFT4a4AG$8(zl2bxn|8qWq8UYHc$xseEF97!830Mr2?{k>EGk-?iC5OPrE$H9UK;%K5DkDBf{^YP3)mf-=$5z+Ge|pa0Zz1IdP(= zv6>wBSTK$WEfx1fd4~i+M-_xYL+o)6-9kDhuHUM7A`w##QQe)`9x^5#G7elajw#Xm&s66Xy6xxP;!*N+n13adWK`@ayCXWBTR{Dj_6ol-uH` z%D#^cvXcfh^m*^^WcWUv?tT(_PK8ekEel6b!||)#4O+d@pk0oBm>{sMl?Cpm<_r1)aAR9Uf>rI8z64h_QN{W{-aKn!7L1W*8#?VD$ zn4XWu9F8z38up^`*oa9;o?`W6I+$9L^`Hc#_yTiY3Cl-gxSxiV9%-AmS&1A zOzWLoQMTw-lD8T&cp`!hJp^^PLP&2XK1Bv|ONuolRuL#Gz7U!*-WXCwZ} zV58wJy%7W4H1$V=njA@Aq<0yH-0~aMK7&O7J9T`(@#yq77dG=M#Jz3v*}XHd?(bIk zI2zPKgy+?C`uOm=qgH4Q>6^(RnFc_d3Q<1p!0Vp zhgCSbkV;gkZLn`qcpH)mJ7EARzkY~R@+G8u@vS}_U~|gv4X6B4aY}H=U;R>_4JeMC zgDvB)i+j;B20)b2lwvI`*bKqSIVkW>G8LQ#^Y2am@`pcu{}uSQ3f*da10lPAT0NqO z8(j(UZ(u3#?SGhajtG8;Tn?Y`g*ys_Kg9vt`E+|J7FY8t@t{&luqqXKO|m;)Ficn% zad9bHmm;_n^X>FXJfRJ`ANhdo3cdX_tO;z^C_wsePj2EM$97{fZ?}8@iPY+spkRi- z_2*ufoYxJ&sUAk}Ccd`7E=?l%mGm@tC2DiPrw4mSqy0@jwDdKu5)`<8srdexz#aR* z9lPKj)CG4)t2K6V2H4F>`z7?cQD{6on}3gVihP+Mc38IN*EEj&yK6A&Cqz)+T0EH1%^dg@@tPpPszbjAO2DofBh;Pj8nD}+LXBvMdXFYm}_qXjk@|rYMWqT z(k<|Ue^^WYP!d0bHeVlSYd<#-Ke%hNvK3<_E9R+y;2X2Y$I4g4?dTZ_5Sthbf-bdE0Tn^^SOg!z+nQ2PC0T1eDd?<92Q@ZfI?3J~uL% zrK|J=nmFplVq*rxdJJ3%OKJM;7O(guCX_+*ZvFo84gvx%=OQy{=^0`CI@t|IQU*+d z-|~Dz9CUMaR#s3`63ddrlq9kwH6^Jm>F-%AisnGX^+*Q2&{-?eG~6p)7-Jt|3oYg7 zlZcnGXCSNU(=)tE4m)^hlOMg;DmA95B-Ya2 z;P;fa)IGhWMxV0Ld@goZsQ%r*2YN>7#J=){8Aa6CaQrch7tfRF3RigYfIoL1vrmZI z@^OB5cXf4z`}@^qtBM1G1`pY6f$#eDX-;bWkq45I1IhmAfWW&&6t!Gn*(ih3-y}YN z5={LF8>-xY^%@}^@THr_2`1?F5v}-hWj_mq0z~No6&TECSg&0$d$G%YP_(`)^c38^ z;f}(4K-9o4Fcv}gXwZYRu`35mT~t8uX%rvyJQR-|iVvc+HpOZ3DT2#Su&Dkgo9c?h z^|ee5keK|24T(it-}Zv~zK<0tE!osAAVQlxd!xh-J;Y8OVvou`s723vxdEGK|L*i{ zct$Q7qoUcLv(?$Gjz&gocMGXMZcpYyc{)dWq)T5iY_Jnt1g~te%SJ~`iWT$Ocus!m z;39S~DEun5m&IpL>`2GkxJGQ?N*a$~4>}?bI{FSehNDvaJm+hP$KOOGgea_J1}mdR z9S7V1(>73gxzp<1eCf?*rL`J(er>RTyY3KtjVFF`p(Bw9b(_&GP!vaW(F|rPA;t;> z^+pac92fbhjs%iWDHNN5(jJh+9*_)N7LxRKZWh)xRFV7#P6k zNS)|0k)QDxIszhfq;6s?0r`_OsO@u5gV<_qh!n9?v6E!RZwbWiX^EV8h&*(OJS+m>>%{1+5XeusOdz@kFA%&uurCm1H?0vDEnQ6F-b-0AV)0^@jMM{^Q5h&vFOK&D zMd#LG0!;Ei5@#jOa_m0tGGQNX2u-2UbB6_tTp_3=TOTnR^fX{OLRBRmp`MA3d8lqq z7c{CK8>|W&lWm8t6n4b3W2b0ci6R_}>h~P%L?tF;q-k3!#kBZ;?0xxjD>-uJ&z^|> zA281fHz{6q^6;~E;?0hab$IA_T1 zq&0>KPF${NOJ7dI0e?IZS%9)0OQE=F{r8*hIq5m@&@*)C8Hdq<^prKc3*2U}- z$ECJQXMvO=IMW+?AlI&j{px3=bi+J@Rw4fBC*zzN%x)i`1@l zJ@UlK`++w0*iA5bD^3?LCM_#ZP-Mzy*pfktb|W(Qv@!X?3nkXZJ=~4I5vO3Af|i>d zI+B?qnLM(0m2)jH`@=ctDdnph?Pc6TjPmmFyDl z+6s$UsdvG%WjIKjA%W;F$zFn0>W9^Y@uT*}yf>yjV@zh8JTn zpBpFBjRp#Ro+LoCKA40anDkwkB+&sdL2^Ar&U9wiWGpYDq*jxYRT^#7?xcR4bV9Tj zBm#nZW)yct@5mcXN@#12Wco-(N6t&)kd@|M`cT?i=YF73rI#gUHeF2MIFI zA3$FO!z)2>9jUAb^TjuEJ*DTI3CmDPgE&0^ zDmpnvzg5J^@v{dHPR0l0$^6}6a|4mC=KUh!dDnsRo# z4!S9_5z~2>0*Qy|tm*PGn=jC1bS4h9F-3V_(~?2~_3&P4aS#qpnXC*`4_e|fTF@9) znR1Pr)CCAT7jzWo%D4~$4txOd^2Qk|Y7jdGlzmzXdx#zU!6aT67H}b?D{U3RZ zl4!9ZcJ+zz6%xR{Wvh8MMnDR;Z$ItCSif$J&o(a=lxx3m9Cf!`}mf<*}V@{v_0r3f`hSP z5}8@Afd5X{qECW{vEMQdM#CgZooQJ=4t9)^+si!0Lm)(PYX^Ef&L#lM=J;8eLdwo4 zk2}j)6XscjNR$#XXlA2oAm3df`qaV<tpVToy6Y2ED7wA2}O2v32^w+*q@iDl@ z91J~=X_X$+vLE9<#oS2$yMtMF1G#3`^H#{O)=?()Oa@Pa@yG+?(1GzF9#z9wN{s6# zl@yb)%*qnltPG0=)W=UD%b;Ey2I`APw8^-X62$SI4$5^6a2|*LFTeZ$tKb89IeRVf zjGnl7tcJPlCL5sUQQUDAOu*Nbo>4-%GpWIMe>xWQhX&vr3VM|wrlGLE6-|!5krm3{ zp94mLhXW#q1JZa$m=5fI((^_e5w==m8}GGDj-63`=t%`P^p5n8a>BDHj`|=1j>AW% z05&7C$gv*HpFW=^I_r+wVHBx%L{Ib9Ber;YmVE#ig&r8C4vhNgV23`SNud>j>&R}= z`eRLnq8zPY-~cMj%gIhAwqItVcGW&wwog>!lF+eLVr)?oV~vngMDmEPbc2ZjpVl9? zN^7uhQhI=ql#5>%A3@gb*tsRn?=||kDXX)g+~#M)5*W7BE8&UOO;5vq-D-pWcr}C^ zp*onXFh5u;!)J2Q`NM;q#D$lQG==!}ug}6Jk%vwCuD%hLB47Vf{QYb(BR)|K!)qP> z=WKJooUYB{?y%O%S03INTg45+oHXqu^b8!FENu($xQ{%|npN6x%#5T;3`9DYaT^$=CHNDOgvEPyHM)ym>VG_C}qT?aF-6{0sLHCqQ|L&RAhIJqk3jZsnj)6 z#_hf>xyCxLz|^*#>!}kDJzBtpe9>}tdmExD1hnMwygAa%a6_f9x*XnbQg}l&yIW)(w1Sz#fx=7s{@r)Ohm!orUx(5JR z9>bm-um9ELfDr)l^TSk(XN7vYH`^N?vKLFNm4CkJo`n-q4<`&9PKc@!>Dp#{+Gu5D zMQrn$$6X9@mdNAKyQIM%jAjr_#m=;Ky{SHgLsz3_?VwH4y(PR$INM4-Cgl)EHwE69r=xq_T!zt+`q~ zvUgnYRJzi(V@X>jRZBiggupSGEQ_rJN<)Nk31J~G(K=*2FG)guzD8a|(A)4d;FMw9 zaY6pfSTuEu%*PNAH}4F@p$CXz;36>ztL0s6dlUd6ozC+fiB88FU^h=5hh| zurMO-;|n((0th6T*QRyFZxU`r%Z=Y~V-orqegZKpOaeG&s#l1cn`EVUNxE=(-4xRGyftNe##j&T>?@3ubftI$PbnYaE?;wGcL-4+wL7kyIGjFvP1P-&s*ig20Ec$U)dJ9#$Z1jGFoc zFLpl5O~3d&rD)tv@mXGF%@NVFYaNvF@r584>{nT%Sfn)c?wcjySuhg%FcLc$83k3| zzs9zONI;&{3V8mi@KMX6eP<$TFPwlHRvtLRUc{qjK6xY194KYN;L`_!5epe@I5(fO z{TLvMJRoxNi4Wr_>F);-FjTFijp{2Uw;x8(&r}hq>u5i$SY`hB@~8?(0)D`c0jAgo zrql(~uu>usf)tuULekU2d?PaII#Lh4$coQl>R`RetNxc2{vy5@P)1p884Cw)ZUHa+ zrNGUsHrH?d?gow|NPIZ!J2;DzO8t9F7)uCaeoWQpDRVJp@WYsZNb*e?4UDdT0oE`B z7Q#vLL2#1#a58Xl;?HJDeUOzb5Z94`NPPpEottb_4EyVZpG857maCaA7OjsgLPR08 z0mnVTo7-&gn=?27YQ4hrX9Psw2Z*5qh@?NL0)!r+GFEuT+tvhj(h4DR9;>NYneN)E zCZ54+YM-aus1bM2!x!yMz2+3d`yfFgF2^Or@2{$Ays=a{!C9 z5WrNbvh<1VJBYWT4`jqjT5_X$hAMzlUse3vMO zYcW|0#H!YDgkFPazG>W~NU*OzQQawy^~w*P4%1Txu`u+3IdQ>^6sF~8KcVB;czDPBCpVv zJDOyOIsH6H*5abtXO=Z~P(RvXfAna19_3>7Tk5 zTq?fg#|b{gE|l<@xQhA-R;KZ6v3RBJ6LMj?#jJ&z26CWe0*>!M}o0?;Qg13CgIS7DaYcA)2c=_ zlgP&g)O+Ue`HLM%eEy=&EIy|qtmak8A1=X85{^9JN*r)S@m@z}etX^*BpvR$3C>w@(d5+~}7E^+KSmcnRsbYUl2)iyWl`V9+_4t(qktx2OY`ivuz zH>aCk@Y#M6M}ddLsY~L~-n6@$>nDy2-!u(ve|s+CCc3Pfe{GsB>gHx@chk-!o-|8- z)L?L;#4XJp{=eklcS_mLGdncVUoewfFj7W3TcxLLbw#Ih#Hsgd5GH#9*Ht~B+Psgaj3QCw z!NkD9L=sf0y)<}$7du%#e0&yoD&~X}99(7JPy~5~;Ly!-^{R1`96zvl^kA*{rfs2< zRH0v#&MUX$((+bn2jkOwOOwzBA^~60W7!m4Zm_{yd}am8-ny`Ghf(N@w3|&HW^5P| zkIQefwa6Zpn3HE>jc%OZ-EYJLRhYid)&iZnoXj_`x&7uF6}7)2V(>??Qy@pyBbBya ziziy@KLZa;MRto8u~ED0uK0)L3sAFo73$oVIo5#9H;RB_`mBnz!(wzhU#&Oh+TXkv za$^s2hc0sCex-8l%YjvAwv0j!tYh+Bosi|~1M1KRW}7<5rhO7}5)X1lE^^|F zkco@Nfk{)A10dGSR?U{#G>|&eIQdSgqfS87pGdB#BuWbiOGatZ9|jJ>MpcFS9a|C` z@oAuuBk15v)i;fnzGJDNStZzOSQe(HipcqtDH0J-I?LIngg?(pXiG77{B*=_(++#jnEk-uImIrVI?!wzsw(>*2~5B znCLt`t(M#QV`io5+UV|@W}8e7d&3hPw;r3-YjCAY#pMRc*U-}zdD>!6TjFU;J#Brr zEenKh3`gx~RID!(m;y7r7x7-K_F~>k)Lz1SsoG0je3yMe7W@px$CV)X^6RY|m^!u9N47t`>g}kxlR*s{e|QG)Knl)-0=AS0 zoG*C$cKPtIe8FT`0+d-8Qty$2Dd+^^XTojK#jeXYQg1^9QLny&k#D*p{|4GPXzo+N zg++hBa1@16>~i5~;FN2mjDKWUKnJXrFcO%zo`MrscQfS>7-8%`n*Y`tvLIMyo5gbR ze`c$t#Qd-=hEj-Ev`^f2qb6(NEUo%|t`q#I+7+Utt{aSLM%&afKW zX6Ts9GZsrUt~b>3YGrrK*7n}1{WsM$|6aq?s?t0i2Oa=B zD(xs7mH_O)7R+Y{ZFEf3#^`J=t>TjOPS^sA^X>+>B@swX_-X1AqPSjT>-**Md-i_v z$yZl6%R0)9eE8Sa3C*7$gx~#YFACKuMs94DxHZq@U#p@M42fA9S}cz}Bc{lM`IQYpU&zIgYI5mIOF{JVet+c&TiXKQ8S ztPXfNTJx`Fq0qxZk;6hsT(&znEEK9V4~B7SRlQvOUBg}52H6&+(oKiWcaXUUz=Q1|Ghrk0V57VYX%ujYXTN@6%U2H7?rn=5sG)LvSijK{9QkSo^1l0k zd^$MtJ9qsU0Wys2P*s3se0<|LqdE0k1u|j}GExT_(J0s>H8^t~Wg{nrUoGnyv#?gs zI3=CgPAP&VYWA{4C0WG4Moip`sM;oaw!?{Rqh9<$<;tIj(VPp$EF|rS^wn~?X~f_H zP_d4p*E{$k@$g08;fuIj@!^ZIW+h;-FS=>}p+AJ;gj6_c~8c~ZCNeJV;vhobbIoW!{wbdsG_TNoLNa8`mDBri=|{#oo+qac48RfC4M@D9Y84506NopVMnmwSWiUn0FZh_ zOLvd0DJ%jcqO@vpvzFvHJK!<$!6S6xF-)pMp*q>twk8lhbZp)5gm6s<9mRYR0#l-{ zQ}3i}4ru?TjJO?B+-2`#a`al2v*PE^CIw?sup}mvj^j|jwokFTR(fR@E;GV zs;q=PDAQc$ua{MF!3hzj2g=CtRk>wyMgA-V$Xg;5y-Q_DE@k8N3RQ5kcMz!iN8CU2 zgO?wSFM?-qAntj!ha~i|N9?di)%ueM1o7_~AnLKBY1S}n+At7wM{P9@Jm$?*A-^5v z3)#pK{BTLj%L;2%h7MPyMO_5x{y1D)da&hY56tz^)f0-{q8n>mcf#&|_r_L@phqqT z*a5G|2d~71S5l>Y(4t9lbXB42gp_;lh^|ifUlB&eO9m*N!%>#RJ~*W=oJR4E!Tia} zcb6b)cKJBdeb(l^yn77H>NT#^3^N_#g3CHM2{TTFy6DYITzXBBICA;zLz6C1NZcL! zviNiG%P&-=2#nLtC=-ij-Q1Y?xY6;?CHN_FBU`eGaBLGM@{7jp_cBxrI(AbAAUkK6 z6AWM0YMa=Rc2xyGI$^_;g}wGG)vaqECr{8w7hDRQzzv((U_I+;BfrIc#8pBbU}{UwZ;KiX4SUs-d7`CcQb3NgiE$GyLI zZ*D%~08Xo(!`kjUj_nVVzGLA-Q&4i>ksD^Vm^>`kpb1vXQ&|S?BML1Wi^gJ&JQSw{ z75nC{C2kRo$dsHPy9bLaCOOAvk9=|%X7o}K@mcin&x)5|Gp5!v#+wEG=n|Js;9S1s zp)YIpV!(rqLVKgwt6gr{>Jj4hAD4^ST2|n^pOf^yg`)7gRaYGV>L>FlN1~6P=MPix z#w~h%rXtqoE4asI57Rcn)0g6pv)L21B3z!f*4gc>i_mwRZth5fT!!HXr{QNlnP-bO zoey@oy8}tEScD&h!9zZ2jaOJtR`anW^9?%zIrv(7^|-~vVk79CzYGHkKaZSri$CHI zf1NHx|46)fpRJ@9FI$NJc!nyFKNt-XTF0DqkkQo=?#)ICmrNaWGrR91Two zvur)f`>-qiH*r4pv{w@xCI{ghw5!=2==>YWb|(htCw&haIhLSN8mD{MXxnA7>ku-ZMp|LLc35#6S9pUy4zv+t4DzH-5)_V^qOqp4~$t3in+yB=8{7L)^7yEmZ0$Z79gm=h)h)PV+4it4Xzpn_9Hzp$Arp1FL>N+5;=3cbPw}XPo;bdz>MFcao=?U28l= z$LqIF`QMz-L7-;MNP|!VF=+0;xx^E5L z8@PCrH4X7qVVXjFAihFR+6V1B#&IdKVSGV-7)bd4IG|f^f2nwvdIe^?(#A`qw(ew&#j#XWKkFGT`GWGfGOev86Lvh@1M| zgK6YJ%+N(l-1k`cCNQQ82RnG(&P2gyf^F<$3TT=9jMaTqZ)}OR<}GNa0g~!+$h@{Z z04iB;NH&MP>r$fKQMw?|gq9KnwuQ?js*5D8+>DnG*;?wXs@~$nOy#+CLakeFoa4+= zI4zz}#q|yl7Ly9P#~!+m9J-I9z(e=-140yejhZx{t(MPs_W=3)jtwFi8^Xy#P>dw+ zu+D)~?z0Eu;5%u}y8{B(z)PZ~)Fg;+S2K2b;Mf&siP1`|DPhrxVCn-__Ub0pVEK`s z!`2?VuLuXe{<2{+UZUSz)F^o9qMc)71LD)RaMa^*5JpR}d0DEPNrwdK(keK*D{Rw@ zAt=2Jzp2hSc#=IPO*|kA0~clGh-ecD?@qC0T9zgW#xVlLUQx8~YMP_zeCy9ctTl-6 zf6z^x5-6#aMAs}%2&}UwArD)s99x8)4)z{-FP0;kH0(cG<6Oy-!vc(=2|FdDPlIly zY(d<}zCfhh<-#Io(wp94P>dM*)R!tb57%(xHb8-yK%LbR)X7^uJFaIspV~J12&=K8 zGzm&rj^h3xEh*!_Up_oPGIKq>Vpcn!>aL(w*mr>2N{nGN<&^WaLigT4H*Lp($Jf+X zZ7+G-0LJ=~fW*No0q1liMWnFh6#LR)%k zqO%Dw<)smyi#sVswJME1YA$Zv%Fe>?mUlXG0%Yx z>lrk_7vykdM-#?_yNpj*Pe{!X)C{@*<>4iJW!-6cH^)~~e&scaP0=mjod$fKr!t*0 zw>*;j>K@sY;oO=a$_IB8e|z`(glcJUBtG4P+p_zvz#Cc)z5C^2xiarWc8IUr>=^%WfG(i^2|=1~4|$t##=>oq@9 zzd9F+`VWXb_}gw>X^B1kw%uBgKlC6!c91`c{SwbrUSF@sn4m@7))sX&8x$N#SFTT) zxZ>|=&UnAN#sW12f0`+7uQaN3LPC8K{89I?l zg|;C009;Glf!xF9OepNXeHH!ekuL#IvO8$$2Djvz2H@TP*XXib#y5G}_A0P z)f~dd@k8&BD&3rYRwi$$YOLi;cz1SDLewr^d)p2!KPzLlF;-lJ-+9(pc zVka|B{O8%rhM0Pz=SqvEAnybA78By-&C6`IFwfvSlT1-}|L#|~y_7H5C?7S~b;bW$ zU_jbDF94f|SJ{!onCqqd4wfW*H|Z}om#TS^La%XayQ~QPaW3DZ!G3N@kEWQcW_T*- zVcw62F6*|xsX<*Cd6+kKnRhfeiFwHy7}adLvAhJfSr~Rb{0GPB9@Y#GS4s+$T8=l_ zeBtOQzP{iz2Um)P+JaS;P#cJq&%14?O6Fe$m!jG3=J!`Owb<_Zfrr}tGPMWzJ($|c z;uy3^Q!T2elIr!w`fp2~0dz0kz|fxsG^MqK=e8HUI|7LQEI-?zm?XKTKkKbqnuNL< zsS5y{ToVLB4+I7d1fpPcAOyCc{p(fOruoT}1^}C`(5g9qR7>Uu4T8m$P-c{nQDB?- zsa$yjk*zJvPUuhc<~p&5BK&t}S#(3IzCF6X_+&w9Ub zm!NBa=*J#3j2tw? zNqo>e*EMQs5Y%kdIFD`XPs+5_Pkg4Wz@dGT1f{XVt2Z>FtjQyXl$JQ4wTG**fkC|i zlofR}76o@tRB#+KyVG1xrqz-|i!4QsX5J&C`CCVs#Y?pukD>2cU4xvWiZ%2rREHK5~$i_QU-G%Z8LIvP#&hchYkr zwu*(OZkdnO&Ye1v<bvNJJ=t2-o9!^kXo^E5^5 zp&pl~-!uhF&`!jNq%{T->pWOF-*{*Os{*ocaJaCGMSIu!g&COi$fag~faUlK8eFTssrAb7Dc?OchZDQkR^X2zl9 zqKDIto`}^5Er}_TIvhVPt$s}vV_;kN*c7B<%D42ZViRmUaSf`r$1-FBx?mJMB%146 z1#U(@+&G5cVH{KjC&;yTllh8B$qTcs*;~C4!Yj`b*okKeEPK&byqfm2#tC8M60O&S z7o5?H>qJZD?FM_Uc7umX6!08P&*;&-qE&Y_(Q_azyM}IQ8ubH*oJky%>OIXi@VlDj z_85A>@2GjZxWgw<(GD2&rSmO5VTjpP;E*Td!m6w!TA^_?tHP_Cdj%$4t`>$6sZU~$ z5wDtxf6pTT$e6Db`D^edO>gMg#CB`$6p+mHi@n0bbj}kTZiN)8nM$Ba+hav_*k}q# z4HyYC6f6QSH|AZed7LYsv7Pkb=AXosT2f5;G{$=6KB7FOU}@a*+I@^E@&PyQ2`qiq zb^?NKQ>!`d{Y&V>KHc62LbZ9&;uIWeRzNoNKsIt9n});ES_K=P*;eLLY#Eb5c&>?^ zuNG&A{KjTAzpIf?^EO<}W~X8(O=~3G$xyN7mvpSQiE5*Oy@3wp!$r`m%BPq!Nb4$` zGPO=QBvvD#G{m!?78X6xHOi62cf!r7KGS|dX$WOTNSzR1Y$|2b)5MLHk(ibBiQy%5 zqZP}1+S2(!H@KA;&M%%YsS=tkI-eOglLjxQjs+Wc)> z*;ln>!a;md&<>h;gywIlMU}!s>)~@X^iVYr;vx_Rqts*091hFznM7AHm7z-Cpc9%p z@jSVp{+P_j4IYzJLOPmL>X+NtaFG#I<|FCn!fH}ho`jj~3keg5k?TaIM%X*BO5q@i z(m|&2cjST_+%9`ZP&HE1Z}W1t0)7IBzY&>23AATbd*9ZjZP&+3PL}yXQwHtkDGWao zM{k77hj6e7VuR0<5f{xN-OmN8?d; z4b^qJGiOu&oZH!q5-Pne7gKhZA&lo4>Xi~|wMwEMJyca-4k4JD&<@0}Y8s<_D<{}q!Y3weP;EvVOioboc)L*DSjlox|8PgBG z)CHe$)<*ch2rW!ifvrK_q_2|JLV(AocI@5`SX$*nYho{iZ50ahrcm=cdX zDXKJ@iR!8zx7X92wx>5HHr!S*d8ouK@o17NNp|>u-|syD31k9EQc}v*j&&bmCV)g9 z_};_A!#fTcW=Q$t`EbWDmuO$Q) zcp;4XE{t4_mv!+Jeuqd)_c<*Z1%No^9A1R7OCeZ-QJnI2?E?R?y$C0Hqm4dw7(5$b5N*^BJ@3CV6QYTWMVW|MjJSbn z0CSF@2@wX4Teejmua}!mN5wHx0+#LzH^{O5&kIowvjYx?8^|wA_BNlV+#Jit6$xjo zx0HK%IMgfD%TAG4=Q6@y{RrlPukY9{K@KTZ8^@|S*dmWGbBq$REVE<;-`YM}5073( zkBk(>J~d$Q<|;$Tif;A0<#zg(pXZ)cC&hC}f5v`X%mFKujqgUYF+W3BXnD{p7h=>+ z46oL2lnwaZ0;Gz!uvf=#g}B+yZ~p_9oUNmq?RNE+ENZ*=(-9lgt~ETn)5%?LvK(*Z zpVg;Z+J(8N)!Ke|eWg02?3S;GIN`E)lo5aJ+yK&@JmBT$T&;it>g~R~A;PH*3>+rQ=Jp~Rt6qq>_81=J5DbT2kA8+wBQL$Ps zZwqBY(yZ}QnY=I+@@!Z#ib@I{`j?`NyiudBCdQm?oXA=93r>0OSfB`_!p3wrOPmm7 zjI|t*q&QLf_fPmktvD9h4JxQ3(r5L=-~~ime8|oHY(58`_(LjNy2&hO+~bQgv9zTe zrTxt5b>=)3xAi6sh&M*~rd|p3 zLkW9pD@oI+JwY-6SwN=0xehIYg~lvs0{n8P$e{eJpSfC+^SBx!@4LqdSRn11jm?^W zlFu&+sW9h&LZj(o@z`i=GX|>xafF#;fd9=p!}zvg^MS~rswWBCDOMh3iE(hk(+!0d zVWn%v8r3L6NzM@>_C_R1!<~we57S$Ci{Uq)>tLzx^T*riqxi$@3y(2JTHLbt$xW_e z6WpLjw+Qlja@u`T8=F=P@ zAK8{yO*BBB__27JTR8E^O%1lqkZo|Sxe++NrWHV>D|n8nTQE%@Fv-#qf4R_CU_w#% zVs|(^3_a|Ba|!bTi)8T1W@?*bVl&il6C+w$goumO{4*WX4AceI8q!A(LJxsOE`jyW z4j?ds!=^o2ZnsOI=-M_BRlC|b`4-OZ=GJ7>kbZJ+V#X3-_Di|KOkf26_O2nts1W?d z7eW@rrszc3IdOS{^7LGlkEwkBzDKz<@|MOsY5Cp4eB8`zO61WAOfWY5sc21=?X7~%xYrbK|A7|!iDjR%lw>yKTr}Pya(iikABpsrG9}kiAAj=__3_89p|#jUYwnzuhM_}iN?xDm8yx{G zky}6;;+b4NHCAZpD@6Z#M{;?Ju?q>iMKe#L*xHMM#*d8!A`jJAwJ=nhXlV#fcQV$5n4Q|7LTgMW6`2v zVuF;Y$8~=ZMw?^}=hJW}2>aBTkTn3A_-Fw8a&kJ*2bQ;kofRu;B7>BVu zOmLVCi+1Qd;xE(2y9a23f|v?o6vV0^p@IYjNq{R~k<==5RzqZohsa`=$olavBEzrI zFR^-wsZMFKFf6f()TrA7VsX@*JX6!(d7}|jf;trAZv$7(4!goJ>{P&MhBm0Yf^z`r#Tk>sbGj9WfKD}_ZTq7ZN%a)upxicoAV}zsA zNg&JFNGnG+<%iQ&KIx3cWQ!#y?A8SBA4F%2w)VoN6J_mAO`aILpb0D6?EX;nFDM(IMzW{n^jg|ho?;QC3SureLDP<4%MV?V zaCaS3kW#@IE%#XuximzjUV{-bJyaHp^6@wkfO@b%ePZ=E_{j1wRVhJtn3(+cdbXXC znpJBL^wOmcjLXf;Qqh~dHTh~KqYbg+ww;rzScaAC*Q5xhtE$;z7O)py^Tq(jGc9H- zdaG-s^O!CuTF*Nser*ti(;?Z1|4ar@UFW9q97ai@H{Tpt0!s^%M~ruvAq z9befh`=(qJ)#x(HtYcKeIx-LIh+Ni@M$cg#jcg&;t*Tr*g($8wR0xgEqFU8Am#vn! zEaDw8vQtKTdL(pJTvTOT)i+g1QPthxuPR#dwrzO}`GeJ+x|+@| zg}maAT=FNOG$-#&4|!Wq6iK$cla=2Tm7SPt^bfTQp2Z?wot#~o{k^!fv#mm>TV&!E z58yz>Ct@?}SD^0UH%#0_<-a7-#^5V3II5O!R7DNB_dVoZ6-U!B&iqN|G0al&im!OL z0pDe<8OOQZFhBM%1qi1|HpG%>_5zO+4Bu$F1~aHXa6K4uGZP!TaLc*ea0Rbf_{8JB za(8F76uK#t@FB{npHo2>b_DKzg4S2DoT2eLss)vb4xU3+chH=UxN~AL`Xce=U6H57^7ZsEkiyo!=e337bRusM)Mx|969quBOQ!zZqCN^ zC=+f%5Ak=(gwzGi4FLyK+r`CRg?V+*L+^pW&RmMac8sylf-^lpD8pqv;$J8E8oRfs z={3d81|DvfIovGkSB%C#R7rs?1M+pRU|km;$ch#l5U#F2M&CS}fjRy!^Gk=}AoQm$ zl>ADFUJv#MvkiZtjo`h}h1@@21+$J8y6q}M;o~`>g^KNb+MT4GXjbLimXi{(lH{Lg z-34{>>G6Vj*d@%0scx>eqHnn+AAbIfV^zGqjDZI_+FT}`eO~PK(i5*?*0hG%6l<83 zcmPQ#s=vhv?i}nCl!n|^bHQE|yyJ}C1rl~9c2&33lE~~S7RyE)|4?W;JbHN9Yy80`mehzika(w2=Or<1T7=ciKCj-70c-Z^& zScH*JM(#4`S}16tdRK1pYI5?4ud|8njH*vX#AV(NC)6R@b6f6kA*@vCgLWl|n!K~< ziT#S_=OimPd_gOTOlBr-8tSa$ZVqw9W~n=g;}+w060pZbDbY8(k>zI8_078bGm8%u ziiUPuRd`@BCmhy*yJQWMMseJCl9Qk~i_Scm0%t5Ji}huGVsd4YmQEFql$!R}i23|{ zwaj6v*{t3R)}T}=XCY5;XpP0%PC?*K=_o?k9FbT|iX;=7Gx?j%lZf^IITET*!UifnKg1nA&=Xc=_W z(O$=~L*hQVXfPkvNuy*CGQHCHU>s=sSo7JHVwopj5CA7HW)(DFCJ$pS9d?_+QsTi< z>|m)MpVx<4P(bSJK~nMxP_mtr3{Y(QgE&w~u^a2sq$o{G<_nz`y6F*WnC~dw)S(Mb zM3oa^wGbl)vBVn1dZeH6UX&dW#Ay0}g<2(?1NJ-ewZv7)Bfr=_;U5FIR!3sTY(VTm z9tZ?~Vn6oq1tj{K2*!7wda#$c*z1RT`B-OUPjeb_FW7K6jCuKIw%wsaWylZqz#r`o z^l|`73@`HAGAbIWOHFBLH_uuW=9CZy!xFo}vO4C#s1wA|W2)uK~cb_J_u_*e%$e~)`lH!zYi zw*lzPo-e0PnDaghV&AL%)47TcGm=JwyqL{#AKZXqd=*!N(gcFf$i&J5Oo=s&yh)2V zBIIm>DsaR3>K2CiGrp~Ux`}xpmB1l>I8ES0t@XAlMA<#3bQ)`67R_={{)aVIkoNwSyBhG$Of6jSOr75UIQ?~7)gx3G%7$j$T<`B~_kTO9vniVzJAtse#+=nY)x^$%83v~4YgL0m)T zWI??s7w=P2h_9@rI24dRErlLzzp?^vX6Y-mx}vc)=D7zW=MF}qs;kKlu-MYx;p%Pn zLngK%(|9hzzX4=;BPuwF87qx|qCDGy_$f1PpTS730yBXnE8-7R4Rq7l2(kyzxL$WW==?OqNFXX>Itb;eVd9b6kxLuQ=c(72HD z9HOCv{D-tl0=U@ooPtZ+oxvC^+?1gN!NWgkHH4?gho{KJ)7fCRe8iZ-;;9gk43HYm z{re+|D{95mB-E*xR%<6z%1XP*}j!fsNW`(!@2n&I5!`q6psMh zbe@mNxW1$Z95<{7%)-<+tf@1suw``eI*HPLCI7_T8o`U?YpSeTDl}A5 zleg`x8IOMq?m+?mwTx}X7TmT7wvJqF5u){L0s1OcvDTxY*gi13+$OyhFFa{oA#11gx@DN};$gPX`F{nvXb=GKJhB7dWDX=%~ z-kp}WRSHKPUXcs6EWl$D!SEZd3(88)6n;55{(?d?tMpRN?m(@_r?(3noI;7i8-dh# z!ew9JIf1f0cpJPf-X7$%#A8#1+oOitqX%w}O~dWH47c>0g5^4J>&HGTPBz8Eqw)` zXYUCsRM_^3*to?X6IQ`|B8>yKxWp*`1)-NYqS4Xp`UpP{|9rc>Ks*r?qYpMD!Ly-h zTQ~UW6ErztAm08JlB%(!bU*#!8?BKaAyMc-h&xlA#qrA!GR~18A9YwY%`ldNeJsl$ zX?hmZRs<11A_FLUkz)Wt@(e6kDJ1&4;7XnZ&?xJO8Wd3D_=jJAoG!l1*2@K{(f;yg zJAK%Wmdnp?{z{wcDqQw^#MRzRyQ`b8hqw1C0J=t<(iA?(AG}~&qY^Ea=x%*K+f0uR z#hfw9by!qU^;9TE9w@qV;~+^rP$U55quDJURH>xdlaSs?`Rh3EQ37An*&gx&e2JbX z9VeRisw6dB?1OF;n;nqJL2~Ykn1oQe zYCp+0fh-p!du?#ADN%0IGA>Lb9N}Va7scgS0~b(^-}tLQ8ZNXhj)7YpnPa3jA+aC1 z;j%S3`ECTXVN)4uITvfFG|_Cl%;|I4RNx?A0FTB*0)`fxu~kH(qqZmJ5Mu(19Be%6 z_U$@I>v_lEnjvA{Lp}D!L=zwL2Sioza^2U#b>hKw>fkzy&ng@3&a`BS%DZQzhW(*1 z+f-+y55@d*RuzRHl*&0Kc)ra1ZcE_8v*vfW&9*JJJHW~iMf>sH1`&5vIzliw5jw)yC`1kuI-ntA}5IRJ$Z-)_dMWhDeThrXO0ME&q= zGy}E;#T+Vx zjd&~37(LIxK-^N{NTAc91#6Bo5_9g7Mu4~to`gfmay7JoBgJD& zIva=6zIzU*)riuM`APzEdB^KK&d&M+N7H_=r%G4ap)O@#2tjQLCqlKCyUcjZ+x}j{o>8fALHh!>9V{h7hw?23VpZ}%X@4T z;)Z@GNX_M&UUGXbf6+Cw$H(^MyXrj5*9#fg69n&~gC6x4WP3lN> z)y}ys2+evf^ihd472$GhZ(6RMxYf z?|A2VN$b(|=S|@4b}{{wZ*ji2{|;{8_MmUbDwm=Uy!h^p;VET${_wkRsb?kim=H4f z79U#+u?BF&Pv~WfJ#yw%r$t~p5XuOIBAyy%i!f0`Es=*>QiocytWG|mK=?W)9Vod% zH%;@cLdcCnC$&)$I^>dMC2}F|_H2pvAB6BV2|-hU6wiJ#fCGDLm?B~iMPv>|^y9dO zA{JMx9+av1BG82J3K5Sg6UYE-ytqOSX?dy$z4OFBriouXb?l^w1qXl$*l9h7DAgz> zBpyoWyOhw6>gI;%H190}Yes0+r?w=?vU6Kml;w{Sh-ceaVpMa3;o`G{VglJ*-_291W$mgu*bp&u|7zG>g8zp+b+8~{%_uir__vrbRVsc_g ziQ6~dEmyN`e*0!4)_1qOxk4d;@3sJTt>A5T@6Ez@#9}xGNUwk2t-#13||8a?!Hfx<*Kp<{jhfQ79=rsN+MI-@J8x0L?)7s{viKua8X2^FYTp#}KKLMpnyFj>3#8qv+fDFrTBT{N31 ziguw`+)BI9=nWmaCm8{WDyblRVP{ofYhLzyOi`pmDm(ewg>Z2}Y zptoD_0eVxkF{}3SlcTco*cc$)wsz|*bdpL%H3X>kObn$VF}_QHQRKL7tnp}-!Dpp^6yYs+e87tffp6RT@|${erW~jzQVXDEOn50+TvZ>FUoOmN)lO;nvztO zWHpp^?xC#6r7Uk+#?khMzb9{=;EUhPr`VjXEGN{*Pvn=^^wvbN5utM@ii6$*cL6{u)ERkpNi8^1%b66$7t#@w{)aU?tA3%WUvb_O|)*q9~y&u$$ z{7zKa#-Et~CiqJ$Mfo+}@q@fQKkVX)!ItBW25+&~*3LIJ`g+4zFDCF|A=edwdb(S8XB zc~r{zTyR_7r51~$U_X-Zy^W$rMFEKUZ-T!-2mZF`CV<*gQSy?wq*)Sqz?8UPO3y1! zz6_uP;nT3!!!r<6;wRZbuyXl{70yMX3$-W-Ue0I$55qs|5rWR20gsx2k39pQx&wb+ zUO1UVuLq8OBfE_UifemiH!CTWj>Zu&PY`S*W9OzaIl8F|jiJ$(03e)2u#hp*9-oR1 z8_tX@X)kt*31o>|oT50jik~5{ow)*=uQ2fyrYPKxQfMjX%SDlsYpm?H4Iqp-2R(tp zNBxv(3wBY!iG3FxqY*PQ-h1c1vrQTL)Jm(_qRXKx|FKj@wQ;F7wrb_oNvS@mT%DF` zQ&U?185HdxA)7+0;L&mguSx` zM1{yQp)}6UT*Pmsi#u_s%jv!RD;qQM@U<-R<${C@zKAa_*N#o?GiHPXqE^{MQ^)0Z zuX-fX!4|KMwl_yZ8|x#Pkqeb$r;=gLZo$P9I9$CgMdtkzK=db3ugv0CEVE(is0Qbm z2j>F^=V=!CrJ|BXYdsyq;}aP6h((R;pB^X)wGYf=Vx!d5xstZgaapoXhnHGL&e27v zHKnO3O-yNKO4HM4$v!VtR^fa2a&~rvhN$w`l@^wh7T0dsU2MJIu&*8b>3k z+64M(x&%L4+YC)pX!g~W&OVhhU|5xa%sPeY2rj%%nHvIjQsnX%vFSIGAxfna(i~AU zY^AlXimO#gQI%Ay(xNKWRr?~CyJYPvjD3ZPuP~K`SXozynyGnyh|xEqbhgmpImT(|hZ7&Rl3L3H&P@UZK=2Z-%(cS=yM(+;xqt@e#cQ&nvHL&OB5f zIaHq}p-c5rQZW*`Ga8QWTNC`>Nb9}!r8n$mj+UyT`#d>b^I4+Lu3|}R#W|Exd&5~C zvb^ysy$!6tlFobJfkf;=A{*?@Fs9z)@RcqjzJN*Ny6_Sh!fs|FfVp7tFMCe}rxky} zviA`GAuM}+czE8bS7zB&wQDQ|p1a_Et@ZA?2XBdkw=Asq*n@|!IJzY#nE)UP+%&BO zU*z*?BxDoOdh;P)%%-<*+TzWB<#YOZcRPLH)A4eh!qjps7%7n}S2Hs8vN^9BFDzgffG8iK66_iQXn(R?P0=IAcR zZN8h{PU&{v=j%uOa8rHX*uAfvm@f?5{g7B`SlND0Q0DkLLS%}VkPNX%TEViq7sX*n z%3l(BIOM13-~_c?(QEC^xRTXUj2fCh@`wBrGZOjnxFr6Q03yjIRIKjSV;GMTs9}e- znL_Jhh5ed70z+Q_4NX52tRC_;0(THOEJ2NgF~}vLjqRPxS3RLFzFXd-Xne!rUbrKQ z`J$98yhvH)kDLoCzXtB~Lj7@y&T+X+tH*cA7vNY#s;mM4-Q2Agiu&!F5*6ngNHo(4 zUW=%dK*@FfMVTi5p34M-b5gY*EBEP7a(G7ys}qVqx>9ni?POs8zGp3qtMXP z^yoHUeBQLlm~A#GTiId=$hN+a6_#r?IAxn!lp7=5t`M+UHI;}cfxqa`7-P32ThrYJ zxL)t5nmXJ@nb4ZP+d_7=#9C{I!ET4^!4^vmI1tdrG^4x16jta!7ljf>lLK2YzF%^P z|Fx(%82knD5Gd-e!|GK-;kT-l?Js$Itg;U#O%Q*i7`O9Bfw+CV&x7}4i$nSy=L_P| zBpNNau$-Jw(ff?(os1J_xYtZvqF;##+#BVmG0m8)kmA#bV&<#^LM8)KD9n^z=XaQy z#@08`03h2S$m4%kqZ->TA`*6+6c|E);vXP~vc*=sc;NY&I4< z%8h{|^POg7!@c_%*5YAQx4V`W7BvGL^?Cw~R4tV!Qq6&sB>!|gW4B#8!mGX0C%BX< z@Q3!*kFS^4e2UklAp5i6qG-;)XvJ-e3JX{M3vCSq0ea)xzr(YT75s9|jxunhQ8TxC zsA=&~)a5t2Yxik{=W&F&2EVnBV?WP-{JI$jzx8*TZUYS(XwiE!-xNSCHVruaGo`wuY(`4^^iQRVQJ(L$%#KFIGiU94;dW^ZKnCa7JHuBDgi%N89%g zE}pBt_>sn8`M3cS!FY@x$Iyth)m`Q@oQRy7w=r;^a++p&6elz6&}{KQa@4FrQvnfY zGKINZUg2!GT&w^>&GDeP=Q|3D zh>mjz9qji2XxJ^y&8VIhYN$q;z87l7pVhPDw)lT~&t=>Q42+kP(r58Lhd{##AWW}# zHtVdd;zZ)s40Qcr1r$PEqZEX^#a~X>bDH+N$p4Ofk<;k}AIFTd9+CyEh}SA+rTxhH zw!Q;2s$LHnM_hA=P^%xTJ)3Z`OH&W`$XxC*a6`b8PI6ObBCQUsuTEN@PbtKCXH+nU z7Z}y-5eJgeZm-?}jzTA9R8rD7VlzMHJSJmEeK$QHs#yuDoRqJc^eai@^T;*wtw^mWEc!!o`f&kGeen+zq-L$n&HoJCWOu#(Jnv0RV6v+CjzuUJ_&e!4P#L}z+cg9h%psrg;u>dpJPkaDX`KKam5pa!L!!j)OfM)68d>!RU3kfuieJ6SFZ1 zlH__#l~z{DPkas{=%L=wrxrpqf$tBQ6nQB#dM0IF%g;su>iN4F+B7j&-ddQ`6u293 zWeV(;!Dp~%Iy10yu5@h01(Tg=v{$?mdt|E@13L>nz>ZyDr{NQUo%ax+v_SIswUAt% zqr&z%sroEuyIvIPX$d7A5fuRb!33SwMZZ5F>al-+GkGS4a}MO%ssV4K*cC4Y@81f$ zKRDR^eGPUa4|Wq5yJyi;v5PQNqXN5=*THTRGMN|e^(^|Zbz`##m*@u4{|4;&YeSqr z?*IHB2Vneg{v3NSo;es#YqV%&28_+K3zJSrnT;=?#GcA+`pI-NTjMw%kMA&Kk6H_i zU{ei;%v*asDNz`OSJKpYB>kH6lGbg#2d~)^^c?vuo_mpREuDukm+(SQ1<{K{$G8pS zql#1e6z8RC6etIJVMj)!tpO;#9@QXBmK5Bq$d2}DN#mgcsja{Q9%l1g=8K^+d*d{a zMsFNWZMMMFrm|<_Wi9-g)F!mes@|7v;2H?8pCuk-_FZJA{awlxL=C4v<}55|+%@BA z>36Pl6=_&v{{N~)QHV`A%7f<9_9T7OP(y!y^-Sj0 zh^ocqZM@r@;XlRP*mw>M!Ny$r%VKCPnc=t<{|ZdYE=z+}in0#OuuNe;X!WZN2SIB< z4VmK&#jEqXup9C}(N|!5SsBRLc^GD{F0h{s{1b96eI}UW8FvQtkXq)98nFpA;2e8Y zcByL+N-91B+p#hcUh_#04J-M2q(vx44|(=ZL?H?mimIibryk18u+OT#Fy(BzYGxxL z>w5;>RsWoY{TeCE9`%bI!=AtXxOd`z4E*5(f94tZ*d6#Jt)cd-g_Li`7vNq_VNH!VuXr!RbB^cohLWOP{U()$V)<`>AG%Tu<%N7PV>w)Am*@l5y z)MuBfz^>yUD5j7P_nP~;S`lw)>@7{arKz_x+ihIvk^_f;cc9c2LJRCp401M+b5<)H zhI_fSE>!ZSYKg07xJk6Od*|40qZcPnfnr z;U34IHucmRmHUXDJ|bTExE(~QgK@co(CL7$W^GqYo6t^2vFd12?kICQ(wxfkFp278 zy8nyN<@|#!@zi~qRP}Vdx2G|&&*QxAnSj;q6QVgk%VFQ@C)*jgBRlu-WLH;q9>o>^ zS;q6$?99T}bv5NB6>r`mqPB8-R4&AprBYW|96Nfo4ZHm=75y`mY8FdR$DV#sbiz}+ z>xP8p65SIR%&=b>DWE|$tooYSW)*PE_ZXs=vH z0lpMfKOg8I@RVJRe&|85qbW(lsuA0-EA0P5OxNqB3=>jdw4s${`&q7s+RHEs)#{?~ zG5j7iFt(HH3gdJrP7z}OVJ5K4s}A`rG3f?Sc$EU$>505nqTlXKboRQY`lt5PEsYOw zWb}D5ir>_FzzHqFcF69HbTVu3*m{l}u^XOpbkkk%tz|d1|7-+vVE3XTxq+K9KxZ}h zzLGEieaZyesDQ==pd#t@QNU|_MkzZ?u7S^8<7V@{I~(Is$yHFh? zX4!VC9w_RVj~s>iBSSEPtC6xGL=${RI#eqGL9M8@@hnw-@BD&^+*-QZus^w_jzTqe zC~xO>g1ah0o0UviQfuT|Y7_z*hW1cNLTHb#zLBXF@CB@}q-o&ohX+v&y3F=8)&9ji zEVd+;JMy5q5N}t|tK4k7%{N=V3nSk)&38NO0`RlHKXBUUiNxjvE$sPDvv8~u2QLZC2=0IRhCDJW^^8J;{W}=ZU6*G zfJ4q`Y)RgvcC8`U1VNy`Mx)W_e*WUc4==+>m~p^n?V z&eR(weAb`eYC3HH)UR%QS2})GR5Yg33Q-$*MD5TOwZoE8`YG^|pT2s84?$ur&itRz zuJZB<^9cYo&86<{)1TU>tcKdyJhn>B@v1AmFWk)+`(tPXBud9xT9Vx14LIA*GezS6 zN86frz7%8Xr0Lbg`O4F@Qb zy*yh`yRI+s9Xhy!4t%961?eeX*ukMCa57i->H<73)9T-M#D7dz$v$yy-Fr?{e+NMJ=i+m6|LKG8VHS@Im^Pkk7--e!+B6v-QEijv? z7NPy)_dGK8q8c+A?jJ|)B38U)Hlwsi=wdNl6;IfDy)7K$g1+H*zenZk%?d5q}n`Au+9vRTKajf_aXYVN#h9XN!+Mg=auGPgbn zFj5aNViy>_bnUcvND10tP}>L=1{JJ;QC!uX#97<|7bAE65-rgg3=!>Z81<9eA;p|k3|Mxz*IEV7#a5-8=wA4lw4A9lPq*YLdn!=ahWw!clSR+O zV<;Xt`YQuSqb`*guIBN0Db^-lh~bh4c~ys zX%ypuq$gU&V~%mj7IsXOXKcg4TV69MMqOpjeWn~Wto{SkgvZJ&Y+Emz(qD0=Uc4Sv zl7uDU$~;kNxc-i<)WX zDL_KqX3%MYZ=L9Tk~dMvP}S_*$T54)5#xglR^l12W>p`SvnF__f~UoK;F-CMi)PYf zt<7psoFw}FIPSZXgyZk_;^Jai&`Aa#!`vhljbj>gH^~}qEY4odeF>^F=0M!h54VJ( z=BRV~lZ)BuaYk}|&kD~Hg{7Nq`)<2@8^v^2zvA!u`7vL+3AXu`zr}nnZ}T{B^Vqam zzMJou?^0jmc95O8A-|tL7KZx4>gG)H=1lVDOv+t2vAS?#y3o4Ww(qvfw^1zb7Q2v% zrj^~uvA@d0J2o8xgSP&#w*E$b4?k#{2^;WC{AN*W;t%pQ)4U6&`D>=75t&X`mvqx= zCwpC*@0?N1dvnzfn!el$o7ND`_db+fH3doatESGYK<~cF&>AB9Rosb!)8a?w^uE=4 zj8y()Xi>*R{j{EV9fAA)Zi)PFYhM24Uu%gSg0(N#_|`BBkMc*I5p`b01Y8qd15EyA zH?;n7IbL?pVvP8X#TIxL#zFWoa9&z1o>X|oqnxom>`6vJ?H5?-lpdJK2d3tMDIU=8 z&|W5ctZ)G_=A9pKWmm~h<@7S{*j(EKep8lUdWz2J(Ji7kBaI8Ii?%wx7;O~m61tFg zX2+nD^20*Z%9u3I-DOVnF~Z{J2OoRjbOPCuqz#8+zg9cAJZb(oTW}!uDTJ`A2)WXe(>M%BFXeL^cM`Voc6W>z+2MLVtb!*t15DnK$Ft^h|n2 zSug*pT+114C4qKweobk?4$#~F3K56ad{9f4?V8{xQ1AXJ2$#N+dt;ZIMDSX`DhZS#SGPrkm>FH@>X}PB3}@ zs?XJ|=wrt;D~ACa4~Stb_a}eoB2}?Epm!o*HE;|k2f)?oQq0(p0sKzMXGZRi|4eB7 zK73d*6^Pt8yS%_}Z@n?yZc7k&EkLx;3t|6~TIbbeThXHz~%N zK-zUvjx;#Eg#@>DL~ckd5b&RN4FfCvqLjmS^x?Pt@dt4rFV)q*>;pZ5^oJxH4Wo@MUK}UyKw9duNlx5w}_*Bcojic9DpVi2AbV9lPE|HD(UY1MkTYk z-yUqwqjL5{AKva9x;t3j0xBa9Diar#gVENgWb;I8Mf&j=Kgd}D5z>v8ysOkHJBR3o zQ>v(%Q`gU^pVxdU?E+2aRcWzw5oP1Jl_VOV-KKH z2hhVCOtTWunFckP!C-KFFgB3hO*)iM4(VWfE&2P;T1##SX2!9EbnsHK1t7hZ)(p^X z1?4&<-ya|+9w7HzAou&*0-4cEFt#9UFua?rC7&F_jaRxG&C2&&pRS#aC1#~v%7X5l zL9V!G*iAjy?K{{Vb$i=l*J#z0&n4qfNI7(O6Y}qqLwEi3YcGYJ+4nygyK3^47@iYm z8OmE3mhT#NZvnbJ4|E4EbknW%=gi<1aU}5X#F})6_Y%2{C*6$|=X(y`8tek57IGs3 z?tHsRSA3kcuRxvmYx&#vz;{@NZ`zHbZQ%<$#iSLi9_ zot{n3*mEgE!BsXryIz!-LqWd3lQ5$VBM3H%E$GV(KCuc18uBJqr8UP>OhCOUg%<0^ zhAP+~Xv|g=J;Atdm34B#w~OV8E{}`lsV+~70Wa}0FF3b}ZI zAE6MBq0^hgI$B^%j@cM4OvGn%GDGG`Kb^fRFsAX+!^2&VpPs%iDWWn(RHlf_6mgj% zDN`h6inL6T8Vd78emvnp1iVpRghf%Ss{n<>{^FUszVARBglf-H3eSsIsiZgA!*YctDeA-25~JG}=| ztXf2=un)x*Vg%xns5+#SsF|gJ>EZ;%mI9`WQxumKuNBXR8omMCaTs8 zs(LZCUP%2RqLhe=d?Kpnil}m=q-;e|FC&<{Zmwv(y5Ay-BDfaiQwv3LafNu8Xvt(q z(xNVP*t5maXQM*xXDYS{G^kG{k-q-n+i!pP>6`EWdsB%N*GQzKMk1v(5~)`sk@|l~ zq}V5s2989+-n!4&#k_K3iS+u;N~E~j)@9a%+Ujo0C|g1)6T6mBR?$&x#FQyajG!`w zX~}wZUkvLnwB!-Xf&t5GxPrKH#ZyBI)k$+@r(WHuS9t1Go*gMYc>K-_k;ErN+?~8Z z-#w2cfiff8URd&4LF#AMzdB##>SAKFI?Lvu@veBqdv4?a#zMhbhMcR*A zLs8uA1Fec+vtA<_8-<83595+$2}ONd(%?GkYAIuAqN0#N!B7?Ssen_9M2E?P=&*;s z1N_bNm<^bK*M*Y@+~hl{PdTN1Z|PvINDDF^+vnt1grP133see#j-wZJDL-$Rdklq| z$0>H4QHJbn5GD^qDTmLSmzQVavvgFq&T-a|jH${omk&y|ed zD>e?$g(evay(l~|36eR$BW{~4EExVWk25&%D%1bIq5INgv+-AeCYj;f&tz>KYmlsd z>+@7>_uQ0O-a?@rY170^;Z!boD_@zfQeB5=NOl`0vJFo}pcCD=iLR**oq{HmEwURr zxK*9Ol=Nju-;@kw$)G~7NPWl7-JSSRIxIzBENN53nkLo03@-=Pg~O&rja|{?Xn)cq>*(xPYTMiF4J|5`OZ0h#_nrs@=evD5nO-c# z{0sR5FU|wG=^{>?|Ah$YiE;kKFM%Wj-M`Q_O`CG*DINelx`dqrUvrqYa7`-TQ$z)#m$(n zV!8qgp&;RcM4ZSxte1cP+u=iHCXg#^}DkYL`=6Ew^V#v}f&1M+rW%mA@owm>4%cSA#svWR@ z{UHVC8qenQ_s5cK`{*DLJES;PNa?-~k~?0EEk~w-DkhOP_DM)8RCil~pQh5esX5O* z{+1}`d5Uol#gr(nj`rtzL5PyJZAfARTUSxN%}XLGc}rARTG*lveK*#313X2!qvl~q zSAilVPmY|J^vHmz6{UGDZs}`b9!-QD4_-I$fzS;D^{S1DEiZ}>V_k?B=f%lk-xMb` z-sMrnv_OjiG@q?XT(h89_HSiV_rm)02~*9IKN^-q6i<@b$gg;upnf*~<|~i_0&~g7 z&ZH_BvRUux8c<$dNr4;JLytHRnKMnH_1#F~b{P;+Sb@*J2cMCH&$Jv(?`!{#Bfg${ zr?4tpfe|L`TaL+$7DytPUcy?ltKeIkUsx!2w3JjMu3)?+Pn?poPEst3b(w8dDf&cr zZ_PrxZqrDO7-lAG%=F@!2M_$pD<6}^(>1sTV#U%3n$KtJ^Ze0QN);F#crY3}812Q8 z52L*X2mo|Ii@(L*;9@o*a}SMl_YsmGKp$0$Qk1M7j}>Nj72W5C7nUWJcUz+Pkr&LJ z^nm^+XHcj$`b+sxUR!i}62tfzP$gk2pj$_2la>wbBWoPCF`r>1o~`ck>}T z`@oeVrYK&z1<}&!734~{C{xBo)60tr`7-p#m(-Cj{qE4s)djVsM;r%MSb)c*_+T5F zp8RoQv6vB=E!30AHQ8O+?t(stc$txOiMm^h7p1{B+Q8*(4<$26x6|!*dk6TV{>6W+ z`{sSv<>>Db(qlnSeXu%8592h%dB~iAgWnJ0ZVUASJP;}U8bOluHjKwkea`A;&~jlTE3U(wchEt z?7-<_cK&}dwmJ!g-&eoOyiAe#RJ-^@)JLpV{Lo18Cc@BB5b(2V#XRz$(eb{(Ny(n) z2qYL|e4sP_T%59Og&2iIGr?U_vbXV9QhB=f z!9spFr66ZJt(_B{2x?s_!#{kNcE7rA>bo?GJW^@oN~J+D620;MV9kTrVb!M0d0jSK zOI@oSJs|aQ6;e*~Bd=$Z7DhV>x@j$xy$W!~enzc0&1D4343yU>uGMhS-B8Zx%_(ISv9e%&E;mQ*i1 zY89z;?cziA5WZu>B}i7W2ual1m`?$y@ z$J-zEU&kjAo3@3C71Dy^UhZI+C}XzGM5`kRkS!rg zr^`n=ce?g0!qe;rWjyXA@7*BOb7KQcx6_A#Wk^OAH!RgqZ@ySL?)E^@;+=>?k%%@q zha_AuKtUSs*(vatbU!Q6qC^qbgr=&uc2W z0VMGNq+0=y-a3HHjtC#A!H2d~u7$`AA}MbGkqGdJ4MfJ}tqr(;`H&*>Q874r;P+k; z8=1O`U-I^+LIdUP#*5L}+k>I^>A=9vW!>`*VZpmopSoBmpQxa2bxa?V>+#uy`{t2< zu_k%_jvT27H;*~wSVY{jS%vcwr4VS7;_-IeFCEJ&9>{8&k{(Jp|L;AqZfN*9CNf8P z*A~$IjOJnqkho2A#smD;Yc!Arl1{8Sn)RP#;EkqA$=RwVj;0##|l5(<_;Fd1P6mLtVao zPH$=KEls?o;Nr+D?V>Ggxhv{qzZDmPp-Pmgyk(r0yK@I6nk}>PNV1m~K$ep3RUqqF zmFVa2rlMf%xPp;)owj-lKj^*&Lq{N{amlaQ^~Un5XBlSJ*5XXs z4}?l2C+@eEl_{(U@EWOx_EL zI*RY01Lo%H7k?S}L$2BR3sDSdpcSw!G%zJgY9&@$E3taD602XUgAMMQ2j*zxgZs#Z z`>?wf?tpd$-dnT{GRCMHxZmP-^rwJ(9nzJdVob=58{#|-nL7O}V7{NRgBE`p7-KgO zuUAUqT8O7RfcWr^LA>AfxuUoSOZ&apV~bZizQNnsV)5R)r>jA|n==nhcXf-qIqlI- z_I0Vo%I#dToF%Xh=nY-^ji2)7h<0^XM}4)iI|6@FWo!0xZ?cEm??%2Mjocv}^!*$8 zt_2uqmD?%+q#9?neqFx1Fz3u28Lx-`1{=V&7UMg+sj|jk%pRON#6IgYY}}P`1QzUR z?f2Y*pWG^6eyCIMe$o?rYlAtC%)q`t9oki)c3-3%p5xsano|)OLa4?$Y+@Uu@tx8b z-H_#ZTq>A8_A$M?rwDKEO_-i=O%5yTnf~0%^t<*hy=&Vfjrn_awAw9iixX?BqK3C! z?)GnVFx8#r@WjXA?xrB(LTrC#5kn;pK4m!@-(YLJk<#5%9j`yG7{r}HG>nJz|Fj<- ziDCp_mqHj4&5Q(de2mZPW%k#9F@U}H}lupl1PfLe|>8P>T3%5Ua#ZZ@rT_4vU zo#ZBb&Zn(zOQ}zNqQW)P4a*KT|GaoRbC&MjwHw0lN;jm^>izciCqDk-9aCfN3Z9a# zFd3_i)ysFH?B$fbTayF3T)9i1M&+KCuitmEe6P3A^=gqms73my7U@A0g?A3@Js;Rd zF4)s_Be1_R<1Ov-q%_%f`CX-m-2CFBL%mztb@bcm!UDdlt#>IuWgF}gsV96ss6UFO zQZ068m5*vMUvIKYYB8VIV!n5afd79`O9KQH0000803)-uG)6OrgJxa;0Ou59bK5qy-#z31!1Z`;B%87cfG@>Wcf6^)^=vmu6L)(% zZ5mS&ZEGq^u0+T2-nsw%o&$gYNP-e2%TBg8?JyP(4-OvZ1suFyAHVp=@!wCJZ%*F6 zcys#t?DW;ktsf_&56<+$c{3ecrSmMEIX|WSpQf|lpF3x>(WUb?&E{KMZ_ke3oH^g0 z{_V~2o1eE%zu6*NKjOc{k6Gx20i$7;2GQ2{$8XR6`Rbc*j?Yevk6SN~|9P^7Jbg%&}VTJ#Eq!a zZ*M1qY&4zBp|P?TquF4bF3QT+S;aw@dY&H>MjK_tR90_Bmsc57YjIYAkyXT^kPt6y zn3b=xI-cAw%_z(>io(F_lF*A|5_pX=3jRJzZmt$GCsNcSp9L(4Xyki-BkJMl2x+EucxC) zwm6TVkVj0R9t{kY&Vw$lhjV&%^3S(h@WxH<4{uM-PQQ7(<+;SAE^~c1a6>n8W4G%P z01}r_moS(3E(u%`x+HQ*yoe@KG)dQ`o=br+bt!YH@6y1fp-Ur|#xCu;%ySuW8RW}c z<}V`ZE21oLS?IFJWwFb;uJ0{M7N}%CaeeCgP(k1I1J@5-KXU!p^}BB1xdCwl>ITdW zp#Fgygl-VILF@+IMbtw@J@nj=xFK~z=7zo-LK}u|7`b8WhFv%E+=#dlbtATjT%^cF zz8eK@1bm3xD0ZWTrHECs*mGmz#?+0O8~bh?xN+#lz{}W;yKdKWyTt8Mx69nF?{)*X z8@k=d?E3?Cxj=0Cx!>`xKI#yC_D@vAD#f75S|F07#_f*9y};L z6dneT4^IG32v4-ALR~FDGzMfK#yofkJSd9{9v_|no)Df0o){j$^F4S7JQSXVjZHkA zi|+$=08a={1WybPPzyYG2s{)X1`p~$08a={1WybP;DsJM1Re?xgU5#ll_gwQ0-{S0 zMt~i|(_NT?>J$;=8Igt9%)q9A&EWCj3E)9Jj^K&mff~dfJOmyJ&*F9qG}YJ#>;Rq+ z9>vlhemr^0dzL={I%wyQKa_fP029Vcfk&A{$YCsQ=c_pURTqKnT)lS^lq zUe3~V?qpMEmJCP9WbP!Bq4QxhPaW(ABu7r`h92Bpwzsy9e?0r{)tfEZo$aU&?$*|e zS1-@ry!w7?7t&|ozvjJUHcReXJA-6AxE&{1I^1#1m-hA+{(pGr46deA$O}A@Gr7G^ zXGu1lIT!E%L>1{`mhhg{_SUWhy-#{GC}@kg4)xkcB~nl=sO)I6kQh&Mo&1i?Fu$E) z!Xzsd1hOd5N@gifHkoEl3jK_+QKG(CBIoWZ1(L15w2bdPUHUd}fnC}By~%X)?{qfh z1Ug+X9q@=+O>eWCTT!em{g}bXg8#mmP5a~YS~j9;S^f<&xC7P!dGU+%cK=6Z{J(o3 zoQJwlM+%Mh^5PrTL@!s`Fuw8}{ghHaTpI@JB zUEhwg(M>YT5ODI}XIn3XBs%BLugI2`(LhGSwST=CIe?Q*b9sI4eAS;Fe!acr=oTsLpN zwpC$?MPW%s+S^%4p91%h88);v{^K=G=|4D-D%Rq*AnQ{Ee$` z!xy3DK$bwO&4h6KAlF5kQT`cH%UPs0VD>c0uu#LrNoy_*q=xdKxJ_bXtA;6VlK zBY0Q=2OO;7i* z176>bN6L5uJ030L4efZWf>(p+E5x$RKyGu9Wej>kISGta0vOF0n%TPKFG^gI7oLNOT z5w?>5-c3|hNAr^VI9SF&Yr`{3!?S9`cLQs~tJc=uO*j1Gv^)+)h4qD6?Gu9mEolDT zetYjBEKt5zx^#5q!iArs@>i?-+}Q{ld;|SM{WMV()>ZC`6;Ev=7%12-j5kfp)IkeJytDGgSA_Jp3T6qH4*;Z z0sf+UyM3eGcka{q&f0B$%!d=IW)64;i#qV(MGha>)kHVSUzHpBS^H0?HJae~;2v@T z=RTRX(W-5TrJ;qTVU?w<+lZx7+}fJC(Z-oeAo5kvvaqvA)l6e zk%fCvm3v`HA$bo_ms`|U@r*r=M=J15X=(rvrJrC33(N%A+MGPgx#;xM>@H0wpmSc{ zsdI!{I*^+JZEx}5z{upN?ge8fGe;G4t6hs+B-Z0)Y~f{GcJRL8q zto-D>>{@u)t@5(#HR7f86K&1a?xS$k;x-eaJ~I5MJt=%DcvFDlka)MhK`wiex3uCi zYuF2X&xtH{x*Ho95L>hsfMs4Y!b%<#XT&F$*_A6rt)#jBqgY|8d2Ec)m-}bX~GMr;l2rbNVCD`7=VO@XI!#ZLO z-H|HyXk5oVDNtqZt>39#$i28?bi)ek9-xACJaeu`&>d>Vx$UhI?;Os$dc{NH>l#`@ zZ49JU2KuXqL>`5Og#B4UB81tRo>iMZ4r_Gh$Qh32nFEsYAsvs?q0_&2QmEAx+Ue;8 zrg)Nj&5cd=WOUn8v~*o|$iiUl*3Sd^ygJEbpr@Hcbz}|aMz!$gD4RPs34Bgw(_2Yl zemenf9M9*s*OE%&+yfEkDw#V_Moh~GAu0<&VtSEhSD^aR1&P-Z zYR2vCbRu~=yGY=h$@4}w7|rY8C$}WGb4UVoR1PQzSj&}V zWo;P=Y%&s5WyJUFrhSrLCK*V^A{)Pccw)t{cjqaLeCH9Yd}!lBH9`dI11)12m_8pu zlVsdt&C&~)F9)d>1?H3X^YlZigcJ>==FsizeKy0$thX+YoE@0u@29iU^kp4*HMk>Y z_y2gGsJTd3DhOHTs#yAudiEQ)-4u!^z%IWs%{#O)#1@1UQma}ig-~So~|3m^F`eT z*18Sq>o$;eBUEHE$TJzJ%4x))7LgVaBP*h=p3b^HZ(Tu-86M%QQN2jk16Nw`xpOL# z4@G(MFE~FA!{m+wAFAK0DcO>gtdNo!U;IMK4kX<#CiM$Red9||NJ{sr*#@;~!=-7% zLRw;ciHb$W#JbQLMI!O#5U5*6IY2bgA`r!e4I5au2#9_zfH@O5Tca(=L_%lFI6S7#> z#SqWPGxTk`NT;szjFw>tWMv>gd3m1sr zN>s+_iKSUi%gJ2@C)5Uj@(FER3XwM&P}XHD^)s*ne6bZaR*UC=se6@WSB_bl{({o< z%cbczEDdd38dfaLU_ogH<v)Yw#(x|!8mbub| z$-nY_K;&QfJ|yyQ-MTs3^c4UreakLs6es6B#*NM8uet#4Jr@tj2dlRK~bQGiUf;4v<#te)}6Fv$*+{WZNeV(SnyMaKHQ&t%DXRQ+C|(r}T=y=C42gyEP*KJ{PoA7RY`vU?cUEC& zrJJt21dr>eJnPHU!r}YvrR&_Y-vcplvH0PHxrb^lYtLRdyjzUxEm#Oq~DvRCC zpg?6%rZT9ZLaT;ZQyG@23~Q*c<`!2PSZPm1=a`p0JoWR&|P{ix? zeC{zEzF_4+TMC55fsD<%>^Ts(0?XIprm&cIdrdP~zXS&()mScU;sKUil%i0gi!`mD zEQB!`Hn$nm3;S0O|}HCVK+lVX^)SkRb-(9l|G`f=7JuP0t|-jKXdv z^E<=$On>(|{^0R#*kW5#jiM0MLk5nX^F<|-e2<>qst3(w1TD@*7i;b;*e&!cH0Y8f zq?{y6mgPdrNkCYaBw>%WOUSOF#G;`=MMHgBT806$q4TThos-D^!f2jPFyF$7Exhj_ zr_+N6?GF-@XF{1wStjdGgo=`@PP(kXxziF${#d&ev|aJr$KSxFQuVgCMEzXn4*K|M z3jS`2z2gtO>kprc#M;oKkng^HhcH@sf_1f-RZ1;<3#)t!Np;((Fp+Y&CaRCst8#8* z8;ly7%(acFk_)u-^hldHmRnJ-6a4#;HgJLYH4x}JeTegG0^`wxGS!}(6&fsG0CJw4 z=L1!}ds9tiNNztD7DmNYUbkSBiRKiN_sWuat-C498syljA!iE zXB@Aaaku2sbd4M4OxBk!6t7R<{R+VgZbl2?3vNs`Bo>gahIC~KJ)?+usm)>&38Qv* z>s#DyTy?jxUv#&^oZQ|_bsSbXRJy)Hm3w5}hy5rH&3ZeXWJmeAo&JvUbUO;}1Csg> zm?=W@OJpR8fz;A{xu367S`_4{I*yWaIL~nWiQXh}`)#R{re|2>d&;yxwL6@iB4BYH zO+CX3`7X%}8yT2q~|6NnButL7HLB?TC#?j|%Ani6Su-LS2#ioU{G}ok7 z$1NQ)(2eX@ZP=AxI;*6&T^%xI=gc63`NcQC1o#r>mX4!+UKVY62Ujyq#O0ied~v1j zwmRAQL4CiK>h6?6vQg$1kFPyj8j!H{n%1XJ>bjww4OO5V(I{1bJh%pIalbO+^uzV( z`%Aiyggmr~(D*)55WI;kwA;DRHm6Q2hAu7}y7U8IK|Dcg&u6WQu@ZRyod+4~3?O|# z^t_Q_`;U2P76i71St|oyxUhEpHe$F$^-Z`I%%xXH=IOhl-o5f#*ah1+tX&$tc$I77=x;ziR zlt;6$iuBV>D-sqnX&OSg87-w87b!Q4k%;04O^Z(!GrPp?%W^9C#w5%)V7`O}1}u=UnvO?g>v&WrX}Z2|>3E=TbT0CH zM;vgOUf!>GNa!fv)4IwJaNo^mLw3G-d9qV=%^d!j1%m2*14PJR1OC^jY{|sf<__xx z(+i9ixQ;m94J!4Qzx>7d>QJUAX<-ZIMysPBg(Q@*ibM)XSz;qZ%Y-ru5-T9_H7r#m zzeH&+kg8tc(-{c6e#I93s;+$ZJyO%Lcd=8Ctvj8lMbXol(lWM@qa@azd^A?U;>8O2 z2|#=e;UP7TSmR5~`fa6_P%Yz~^`MIIzVv*GRg|w*b$*;fT*z$AY^oNP>SYZg>M(y^ zQWq#?6Mfn3H&B==615(N(4S}1aSF{mz;*Wru>3b5+iQuoT}Zn&A!St|4NFIDs>r0? z=+{r?=@5l=KDq>}qd1*hN*_>SLGeDEI-{nLLH<7raJv-W?Dv!i@Z zmXK);bX8Gm)u7ckXLixg-LmeRUhK#LY=4GmgfRS11uONBj}bFrW5?b&oPsOTgK zN{-`hHp)_5y9`poWn(V2FxS3^99N}uO}hxu1;b8Y^#rS({T)j`YzGPhO%0!N9ox4Bn01?%E-U7^1hQ%dE?2nyz?X}Z#_xB>^)hu z_vBBo^@K5-Zqll5#_@W(SyfGDs%HPQ)lIl()1sT~i*7d3P4-1MAFi9eO*j3DZum7tUI=GyI~RjkGiTqMZ-dPQB(%-*{gR2F7qjL}~LMDA6!K#REnb zAEx6E{LB*hH*sco1wPIhiN5Xa9KaYa91ZwH(!r*-Q0FH!T&0+y4p4`#x)`K*gh_;F zn20Z?en)S=P1(#=O7&etMekBcP=t#oD7FBgELO~Ex4D-2xd6mo;dEI%?3-z7C1G+{mhKfhSypm0{ecd%Xc3X0(jr|H~GI}>*`a{8(m zf33R}ah(%hH}_%iL!lIPBuv4bB>eM!dVu5Lcr)N_dU%ahwTHhoeF z4+L;w{T>Db;P@{>8VF3It4E-E={Wr$V#C=K*#duV@?&C7u5U(g0?*qFPtEyTUTrXX zFVj2cXQ-B=&*sDA{S?k^RRK_SmjD}e%yN?`dYJ($9BDgG09;^N#Z{MZ5S0U2bTrBmy$b95632L& z)`#>S;$z7*N)}iUF1b?&T77g4jam}dL@~=r`mh}z0HBU3OuUSdfsVr`ai$Zw>0eq- z@s)QJT+|uijyA(=J3kv318mk%B=vZUg08UH?eL4H=kLV&ae}%M;M>(5G#FR9jE6! z195yN4iuh=ljoqKW|T2Fta(l>8zv~+=UO2;5`%!7O3z8F8C1_@~E~8Ewg|jMDh*_31cQn@&Hl| zM?<)y1g1B2s+mw;1OxgmB>u(7YM;D2z&7BH2@{!FivlN*1)O0gCaf=jOY)p4ydwh1 zWT#yteOqW!u3RtE^?SC&f%nqY*A z4lTzgJpdj8hRD=7Xs@4MjwTamq0(u4SPqVhmeCh)PdINx zR1)VE?o!c~;uDC87^sV+_>L76V^RWJ%_Rv;*)p52M|gYA1(Hf##S$Z4(vvt%Db^u* zZCLU5 zR%ar&xAGMr`kYp-$tYVbd@UTqDo%7g`|i!jiSy0Li_?D|fA75h{`keoTL-lS$fX}) zGG;zU+OCrxKo7HczdJh&+6PEoLTM^PmCh4&JQ zHO`eDP!8fXR&m`=jweD2^IAmu&K2}ZfrNHxy_|`LYw8qU^{}|wBV2Qdb-B2^Tr*rQ zpe`5JnhCG2&HECI_w}C2`=$dF6ezyweUs0|{bqO5s{7T2mhKlJaIU}hzsl%B`n+g> zgYE`W!5@4xoetnV!0DueLm;a%?bEW;NhAb5m7Nal!Pi6h01(6N2#-Qb$GJl7bH-!t z0tw1)^&b=)4$37$pHvxcdC!Ngd2ZdObE>=(PlCRw23eE>iSl%IEJ1W(&R$y-Pv?wD zYI639IrDUOEbd`|C`S=RJQALSN>B31cIiBoCvoZ=i8l4nT)!Aihn8AcLT%`28-=!F z=qqW3ozLxPuXN0JzVgAziX;CnU;PpcN5MNeVjvqX*_GSj?2<=pBL^L{l;tK%!9*wVnmGn(1#J13Br4w9j1 zhh*>v-%JaSm=73O05up`7`=H`8CX;x9GCR~_Yl6?>^tMIs_AC(+LvQK)LntXKr8&1n=8Qi)>4LEN<*jmN_jrM*{zi>T#j0Sb%nTQ}=pQ`pQbE;X3O zHW3ClzR8o)6%225ci|r@XXpN?UVn%GJMzC>ob>L#d1LB#b z*hTR|EJtF^ByOGkgff*QBa0gjdoblKm>Z{+eH40GkNmCx%w2 zk`R1CQfPdrK@4{#WTK4nm;rrDopd@t%Df4Ti<0m&Vxtt834WOw+PCs@j)M4l`5F-J z7faXth@@stOYiiNzNYbgaRZr4Ixvzfy{$)jpvL#WrFp@!`Xv4XZ}Sm<(i$H|Ek2A^ zd{|VzCwo4+z8Q}$?$Lu4M4L~&2?fYSn!EU$_4li+>7)X2Eos$Bk;idSC|%rU)w(EL zrjK^@^t7RO>NIvw*36kb^V5c|X$8+@&EB_W|F5D`+N4V&>J~QPLAb9xGCk0mcL}ZH zLY6NYI=zs_sNPa0Z8VqKQcA?~eh=BK^@g%!k-4Q=*=id045_VbLZQIFQNzsd^U5Qv znQ2|g=+&4xW-)Vq)yxIq;v?ve@^uz+@ezCMlb5PyjpCwhT86 z$UIeG>2&JyQwP(J$v}q14$3D??DoZCm$p-hS1jFpW@kxYVM$bBNlb#p$GmB_Y-9oB zDhHv}@<^~~pAwTn9inf{$j_5s`-HKznF%e|h?(;Ah6T7}IpeGPY8QpjA_{R;6nu+z zsyGk$WF-k3Sv$Sb-UU+&f~Foy<|}Cs?@JfPZdMesWEDxso<hgP{$w&{PzV2ASWKTy}H4fHE^`Hwt&Sbs}f&SKw<1&cY8<^89q_FVwx{R2MG z)~e4A^-uyo>cg(#EzutXV8f?7;d;RawS3qr104)%Cy$un5X-R(r6c#xjd`ub#z!w6 zsIxd)=xY$6>ZP;S>JVAU?A0Rr%ay0eh^EOIY*r-(%f@jq!W=>{{2Za=uo%lE%R+)f$H@xe6Lb4TXbmpQ*+H*QCZ_6|~AFQV}^T z<*Yz)T<}HH*4H#*)3l(hXAlvd&G%H7gvN*w+wT|7G^|9$LN_YL!&=yr z_1d`8DaiE-wTyU5uVArBClDB$)Sy)(W9Rv@4ZJ86uZzzcz8WZ#UzW$X&O5q01+C!J z(j+U;lq3hs%1LvYj~GS^s7=hns+jwwi7uE8O`tYvA7H*l<8BIFyn59 z4FRHk@WVKrT*CWqpEuU-z|v;hTRPy|Y}@GeI-UD~*~FlD7flpGD7{+}gTI^o3f1v* z`BZ0R4pgjie1fZSH#q5OpX_Wt$+=*16FyoeGn-FhE}FcAueQm`RVFEGCnvv5Np5~h z@_{pw51f$vOy(m4+pG@tDt3qjp2ZFo_N{WuE04^P;~agi4sr^5sRw%D^&^jRa*LED zm&(p~Zr=YA3!RB0NIESBUt%}HsG`?a->LfUbF&q=6rvFDk49k%1xUmE1uRE|A22Z* zw)6e+d1k+0S>9ppQv*yj_{sn?1=c5s;C4(vDjc!{vElgI|!VMgD^`EDMp-l&ARR`nlA|1qv z*Xbbe$Et&myaDO|iw<({_=$BeOBOl8|(bTG2%Agkyg^%mPZK^Ur5dyU1d*?e%ube~WWb6BQ8L$gV3Z6k*lK~XH9}#l?QU9qbJHi? z+Z1$dCN-#-R2I;sV~eUu&F^)yn$)#dVL8n#XZ?$_QKPziLZEhI?&1x(Du<<(wRYoe zd9&*StZU82+G-w~HnHX=+S)C&)eW?^?X%U*v;Uz6_Gz||uD*lxeB}+Ke|ifW8q2hz zFz~u0^y2a?MnF7Px_6eJKa6}5o19^uc#`2}(i=E*W;%2e+*_K#0lZcCH*b7PN{OI#|!CB+9wuKI<~#jpHhU)y1^1dJEv z;|+k}JmP<+v#HF^R~CKfIPf+7jpOk_?fZ#^%D`UO0Z+}p?%|&a{u%Nwm1+!BH42~i zi=PeqhND%ncuiX|iY@CLLZ2{)Ff`G-1Ay^W3H|mH7_H@o==(GSJwltGbBy1iC2Y^H z;u=(bU%^L5wuNXuIG(-5S<%KJq`5o(CpZH&KT=o8_g|f|&9SGDicvx*_2^n{AWgl= z`Q_!Svy}CXvo)nIKJb1U*pb%H^T>N1*CWKf_2&tG5 zfHgBA+IHmD#3>q)M?TfpxVW^Si6mHJH&7FKnmsOaM#O#zULd~Zjto%`4U9{>xkmtHiyTqN@q zbh#Z9Q&?DKSV5QI3G-4Gru{6DR{?Wrz#};2JrBvv6{f-f=6&y1UO@0X^7L(alLl1! zb~4Ju+O^^IZgQ8*hM=YzikW;!XBi&(H-_`L=Na6cIJn|D;(0W%4QD!&o1yQn_)55I zsFFB%+sIj7OQJ**i**5T?3R{wq%MY9xXjV9UgcOLg3KaOkn(V^`2WykpvIMmT5kc;q)4JEe`f`91f;AxMPCv5eirM;{afv zaKy{mXxI~E_C+#|h+s(1Q{-!FdHa9>pk2Ee!*G3PSF}!xcgxy)t&b|VcH8Yk;L+^} z(yk!AQ+kKjd;BB*CGdYBE@KgfL-aFvj4SVceV_ExG2C!-EpIlNBXoC+P=W)@^iH6( zJn-|b10~#XpMio7et+gZ<9_5>`$(sug*3Z)U)zI}>dk8#B*y85qJSj>H)@b$#76!|itZ&@^jGmSfF2mPeuz zx!ZpCdkz2sBmqhkMLABkI~$7x36RA3oj*7@2k>Qn-sc6Fyc_rj54)eI>x^)6GoLL! z!mHdYK7heeG{=8+otqaej0-3{#Jq?c@-njIWs(HVSF(>=hcZLuibuLW2iU#Y28G#~uF{4+STK=zoP*?foiR zT3Zhj&!W!OdD@wz%zT<>p{-0&HREihQz@D7K&7u+`FwUSs{I7dkyibA3U>CjufuwP z?xz3j?8w)}8&%iZ`Hn5}bKOuFIiN7Mp)lh1e#y;H0CGvA;AD#l9gTulr$WI1VE}!g z)-|Ud>Y$elh_M3@i3JE+4ZD1+Wy5Y~H<}t%c%Y3za)7XBnov6iEjs)92=Q^C%eV?B z=roBaP)Pz)-pL@P?lLs2+{#*^uVDycoVcc90vnKg)D0j}Yat*t9=lgt-x?mF%YHF< z90e{sQVWkz+zlS3{v6Ddggnh^YfTY3Jp!b~^_SobFoHAd&k0s7J7JdLmjYMkOg6LO zI-=dc6~!mQ)yU884ZdFvTA??8QD|i@v~nA*7HbUels#BBO1>FUE*kjD^18zhoI)$vz z5eUE+9fbm<=<53|)Edfark$dT6ZvH;GA-;i;M{i$=CZ5M9aVr0-IbWGGuYD2K@)O3J0K2GFq)Y;7p3V2ZH=yXv=?jsl&MY5p^A-8s)QDWvuqJuJab-0; zv*(kdNSa}Y%*UllBUvk=#6Qx(`1FbAJ6Cp9FQnT1-GIXEsN zzy3vZiEcsn+giuJq1I&w<=TX$E zdulm0XbDRJfzULt)!!wdiL^MFM|@H#Frkqqt-^3;Pa*B^qJ#h8Id~QO+*F^|S7&y0 zTCF~-ug>l2%sJbm4)b@eS~2DtD_mpdntGaBw!|*k5?it*i7K)M-4ZGV)bsKzdQ-AP z*02GMyI*SNKmpTUKsba0F9?Tb#XDsNbnTCdbUKHhP@m{MF4Q3thjhr~D?Qki0#k|m zg(kdW^1gnafmkV#UpH-Fwp-aUr!Zm1iH*`CP`z4y7D-q(KkM2E(pqlzs?2=ANW#rs zBNum#Z0-sx;cUo6YH>irU8-b1cXhAJ59F?PoCT`)8Mte`uo8YqH57!5Nj63HaN7~OFJRPXf|K_8sn)eZrW##`GoBa zz;e!DI43ab=P&+>!I;G!Md<)vi3wx3Rtk_jGuZ43q@7Y2b=pgu-Cxz#tS2boe3j9QdOWf7iqV;n~;sjy<(xodd1gYwrY5We%t^ z8>(?dTwV&OKCYHGn^}fEx!!y|siHLD8pi!WgAReozMMQdHW(%)caK)Am!k`;* z+<`c5A&%0@DDp20oY}qw`-=9FN1nVP9IfXwIFgp_aa(OvvStht&afY!L{^8Dx$$(? zb{0&34%+ZCIS5IM7W47}((~Y8Rxrl|>E|jZ8B@d6I2sSXGvv?d+ z=f)Z(JWx~=D~Rw|z_e|)_&68oG4M=(5}dgK5IO)5S^!`HuLl4Q)EMA#2oHMCa5jHH zs6jz{akCQz@SL;O)1D_KIMY4SLwbuNF%jIm?I}aa)WM=j3oz7B*@s61ts5llQ_l^E z$N`AR21FcI_a2ko*h8#u2;zL>4dHFzq|$qN=j9MNW(b@^#NPv!jd!N?2S#tG0*4gY zoRx~GC~7r*_+`-dP7>gqq(Dzlz$l$t_;9cH0sj_Jh{cooefmCFmuVxAHk4QuO;xT) z-4&U)n+fVAUhDvPYyq6p3c&wQ0h|s+pKfteXkhHU;BFuB@wJIR*)8uxzmSPGa)i+9 zK;rEeXnPUi!@G%}Wmb=mkpmwi8y_*RI0IFmB0!-1-awe#_=AyQ_}c(0r?8mdK`#(2 zJ z$p#uRdTunSZWE}2gW@3Twu!Pk3_@+}??XV8xLj7Y-!zP!DC(i=&&WUkCG&>jbU%_# zVW*2pAUA}vvzI22r1_*e@15*Cb?yn{J+qDX>}4Y<30z3By`K?fHQG!KWdKcTD3b%` zh`oes@iN%EImR=C!hC%`k~?H z@xT+Y-?fI>c++VX(A&FdoiEY3nW0zv?Nd-W?p*ZTp z5xSEvrH$_iC5=Z_B|U17nA0ffqIOo|pXN4p{#ok!r8dDY#RQ65Js++H-1LcE^s&7@ zBUYi$-vr`?CDBJU?MeBL1VMNMX|AN)H`8L{_D-J0QeG#`?x)p(QeIF{dO+oD))qh6 zP)+6HdA+NFJZeNW-(0*pozxz=h&;B599QD}Fy~E%X39YTa-tz;dmgKo%Fw@UT`#*y z7r^FzWP@pba)&>)gxq!_=L__Hf54^UgSYS5KyW2EO^}i@TJMYdQksa|v5VS?MeQ+- z99f+6Z92sDM(^Lv7OR<3%@Q@2o;tYl06ktW^k7lK9fPXZ1@=D~_q&{GEU@vA z1diw$-BTvsBU=hoaA2d6aP>1}C@S3jsuYe?sfNu77Xmc6;U^RS&2eLFL1X=)YD@tL zW$O@SV7}D;5-dUxi_`h4XbqYb+TP>5Ig7kWEK+2-;WCK+l z9Y(276TLV{96%tcSri1$Uw~xn65-k(bv|vKLzE~ml%@->Y}>YN+qSD-*|u%lwr$(C zZM)xe_e}Rk+61+|4xyEzmK=|%UCiauEuMbd5<}-vwVh7`m@-) zs8-xZ)St+3_Hxr}fJcCk7#6&DF_Fw6o~&g|NT?-HK+F$!Sd2mmcuYK4u7nS5nDz1jv4lsCw|6CA-O#fQ3B;R4^%H61}%S)$98;tqh zV~&lSfiw`ac*~bTGF=hPDh&in_FbV4A^r?ysfn$p7iB379GPhavG1Og4v%>X1k)za zR2xI!*Wk0vP*IqX2$U+g+rcR&e1csxU>SDeN zyuh2xLuHKtox(nOGxMA602i?!{zWzUM1;PDk2WsP?q24YkV@A}t9@)UZ(-)0jYK;o zh-J)~)MWFgl|HOG-LjREdPDjvsF7`!V6lmzsx)U3<5`jz#v%OZxDFu_({}FQce?hN zkvwn#6WPJ~aAnT|Fdp+El=eZ4^{!^9>$-34Gxecn04iekCdbr5Ez0 zcZ?fCZb_-;;e~6&-I)YTu`x*qhA&FzD{k#eUMKR%7X&A$&?%r&L=tpX=aE-89;^&A z9q=8Z#L^{l3J@xkdLaxq9f`Ikdc)we&l`$a7y!PZcZm@835P9XbP~lJfUTyEzOilyBgF+e(_Fdo-$ z;?dX`M*Pvd!-tnMK7RN|*SQCcl7&8x7M&gobbJj4xbbJ7mW=}s16duPef@4hbjT5! zol77pj?hbaBoYRVDFlSggD8u8b}fhjt;)*wW2~C<-bld^?hSB7U5qGZWMvK3=qla1 z-oe#69~@GDcLvMPN3`en$MaW)6(YC@7EaL7qCB-z$c z!C|YVUVv??pDO*tW@X zfE`-+ryCek-73Fuh5#W27d{2=uKyc=x}`bG2u^8h4e>L)kIB2iUpHX1N;T)7!<+n;*&&-_#fLB3&5{Zi<3eBf#g9Vj}tD{b`vNNEJDPbw62X~pEE{s zY&rkt(V)9!Lk|nJA}Ib7bzj#P1qgPqNCz1yi|PumTeUwk`GfKf@wmc|ubg^{AA|li z8+j!g9Dqb1sk|*%O{F7sC{}~?fOJz28!Bh0b^!OdJPeptE+Bru58jM`=!hn0jH?t2 z;ma+GC(A4wv+jF9Z+;*=eTI^isn0D~PQDgMGCD#sqZm>wMktNR!c&5_S)hwz#mAov zv_kvIXW&De#;@j03QI!0b7a>0-VBfjO#UER*elFcu?P9v)z1eVfe>zUb`$dV{vs2? zofl&i7%U(?dXJ$}tZs-djFWU0CQ1&o=2V#0I&@xkE-jL$1o8#wAwv8JC#W+UXn_n! zr}Ux7;esEkbxsgivk>7Jl`1bqnHFg_-eIAQHW>Nmf_~c#vnos%eotRmimnHXEVMt! z+dYdOOjZz!jM?eHm{(}fqc0*w$xMK|Qv`x$kH{k!L=T+g5d&i0D@b;YM!0D8k<7^z z^Ix++YF_zHh-gw&^+kM(!i5fCBv-$2ho%EPw6r8y%%rJ1C9ugWAq+Nrra{)B%y#6P zR5`Hd16XPIzd?#6Pg{OBYR)8)m)AD_C%~F0_?en&M|PEvmtEO$bm=txLSRisSQ|v8 zyu-l}L_;n>Vw;3LvFn;fU=9>{jn_LE(Eubp;!zn$$3t7;6+GmW#R#)|;d7=Tfir`t z{j~&oNBFyAgm{HB`+DTprWCm!(m60qT^Yz_>)jVz;@ZO?_9n(j@f!8<8U$IlV&eqB zB9%#ak&U}w8DqaS667@WB%>ce=2$ynE#8o6Dx=9g7|N8ZgPVh+X{OrmE&gv@hIZyP zKJNDDTyN%9k4kAv79OyJav4lB44(r{$H_&8e54_2q6b}4J7-}~#A_U3S`qwenS+G% zYV=5OY+pQg47LVfSXRD8NTISjKVua;+HUmxIF@%0Bqdv(YpCtBbv0l6pQ|o^0|qds zqOsGYtfr#3(h`j{n@uGlJPqEi))q}ka!`z&P8r*ow#xhKHX8nt0j#q{_SH{@Tg@`r ziRye-9^DurybN>~V7Oh7H)Xp)>v>B7;~bZ{lX<%L*0vA3iBTVh`tI!IsvhDz9Ds4p zKpA2CyHCX2l@uoBTRa zC?PB~8>&djF>CCnuo^DHWYOCJj^>nsYiRQ+`1`u!+Le;h-gS{P9^N1Sy+KjW_}LU(sVhD+L`>VW$_26vgrFKNB?0U4z()>wFDb|Add+lw)D+?4V^S zo1`O+uD?&0{!SpRCR60z5hJZvyMeX`o`c*&CpJxPUnj|Eo&}j1rwl%iBXAFDb0ckV zGdWyfm+L5#8w8tiLgH_YV+hQ1uVc};)tMLAPXUhJY4zJ5?hVk^d$K!SPNzenb~c-~ zL20~XsUp{9Kq%G)R5BHjf%7|oZ_edKxWH9(2dOz0S{P}y_+qc%4++Y#vgEvRUthVa zXP`t-;5?Eq`~c`oRnnGEE_0)NH*11>?<2u>xiINX4&!(^z~NOoM6RqmJPUiwQB8)v zo7*vAAMib#9-BS5!&<tp>r(Phqfh8Ffe`e zbc2J~?{up6izaytgo%On+=Z1F!+Sq51$4h&>_xYmFmuEqkA>E%)j0`my(A>yI*xo?U4oEtp)fY!Ud z;^`#Kf!i4AO0X(B$-b+HR5p1(OyYVwNZAsATnWn=Bk(YkdJ-mZq&{|P?88{m=t+@& zahE80L{4m9DIz0Y*htj=p+|dq9RIMn7sp+Yi-Zf*dM z6V^T07r7Gi_wDEIkG9Y$3gxB)y3w5vFCzd-9uatNQSoT>3!M~Aw_qMR9iA(D(ydPW z>vwIDrz_f@?FF<9dO$Ly_mZLCsLee2+Jh#E(-e~*0#;y29*fbVc5og~6>e9Zvomt~o6$$5xF?RsQKaO43ytTE9PjgrQc2Q9840$@a48wTRaVKC5 zdG(CM%&g;+Aw&dUDcf)mSPB4T&$kDYuGHjGLOB~xqQrlT(SxnthbY1Lpx>M^%lM2A z=+9Hopi3?pqEWR^h5DLC;tuSvXV5-zLpw&o9WZrLNgZ74tsUSW7(1&W4{q-e%k$^E zA%qqX@=Ifb9*PI1)?8tE*S3}HY$@6_PfE6qe2$Nxd2_-ES=!5AVeiZ)8hqq;$@D2iF=fB zHnMa%{0~So{&oh3vFM=$EQZ>t$AMN~p!%FgXhI?TAoPz> zz6G0wi7IPq0eWFUMs&2kL!dPoyT6u6CG5G^n&pH;bvgj-? zc@pu`V2U&M?Yr?YugZ&l)1 z1Tc_G9Jz!BA+eE#=8n8PG!*~5c}UYlL+yLp-6;kFk9&OKiX*LZ4l^ltg6>%fd+Ci4 zP9dxY2(zr&J8&Ib5Wy^-=~c7paJ%xPkPptS^x0vmviygK^vqD{(yyI#@J%i5zO{(H z%>$>|!3Cl6RgCEJ$dRprdvb8hIdv=>=ObQIvJp-PrQAovVR!7TgsD^WeXe3Oa|_8H zW}fuOoO~HM)D2wBYLm#MK@HeOpt_ElvGsY%yiSRVb7pzJotaB|ajYeH zY?yrX)ymm+v}C~;NMJooAhDBY!jk$MuJ(cwOEzq_L+EV;?@K1K*Ezi>eyMmDHZYEe z#D=9j5P}|w*Vthh3js^tb05~Y39n4-&otS=K4IX#FJ$WCvO^*l3@aRe>Lkk_!ZKCG zhdA2mN%FV4$u9Bz`T2#ux!&Es# z{dH(y>}wC4L77)TUl+^J@FnEE9Wwix2pEXW=tJzjZ35l_J+EN=r{44N`COG^%m45I z5Y=H_P*04M$O0&T#rOdC1N7YK3pR+xkMj&y*0MkZt~Q1adB3Y#?B<2;>xgd0cHH_N znZclAzvO32rj-q_-wVqu!uF)SAT%v#se*l(a87_gA!j5ZMpN&++=aYhorS|Y(o=16 zIBaYHRss`nUatNGsDC6DP3WP*EjW`mh~7oSAQ3>-s}*qf5F@?Kculjayn#ZQx$h(M zK62qW7Fy~WSWWj>^VBTjM1s#utfK2KB5L>MxlKLX+qb7&K5zFmKW&hG@MyD1KPpds zMQXE6$3Tx%?^o1ER;CTBtN?-fI@~Q%s4kTslQ9Jk?&W4Y%r^>c4a=iwR40&NbN|sr zJ|W?#DPv32tO)|w6r8qkD_r`KWXsk z0l{g0f%uET?)iDjr;iTAtFT?ygYSW`mNKPb9D|s8k=g5QBcr`FVQq6P!PD9U+Hj6O zlI1K{AD^D-9GN9miKP_mkEhc11l?z>>Peep@BWf}uZH{;+O13OIqV!C6H}?Gk@_f)N@Eqx5SO|uF#*9g`&Lv)QsCY6-Ah-y0lgmjv47vJH#1C z_BNDn@?Z{`U<6bv^JqC-G;dDA{X=3<11h%^Tsk&@blA_!{cfCXSOnSwYg+RC=Rh2U zn6e0mDZN?l@9dVmBuLT-5lE~3+XuPdes%Gu;;FakT_S3RRnR;z(T^{=o6Z6dU`pjV zp;l5BLZefos7CChvrzUkCg?Rf0CC5;}^qhq6uM;54@eZi_KR||#`~2qegVB%R(Zg%!H}Ko~vJPtfF&DUd zLq-aN^g<%_mOd9&X~%uc0>0si;q{v7wQ*Nqvze4hy!RS+{478kqZA&K!TH{SHUV+p zfPXQ9hXj4th@>+)Y7PwfBKDOX9`=~eGg3Bs|I6>Oj-~Bk8_GAxH=HoMevzKAN)Bo zLs|RXT~s%Sanu-jnN^VD>Xx=nvfiv8(uGJ($DM7c^45VdFYxEOd!mL)9UwTs<73J5 zZMCK-^Nt0;Bc$y=YMp;O6IEca9j3`ftRsc&y&5xxrqW;6m)YE+Wfs2Ssg$PB|LRDd zmn)YjFO=l2KIQfiQ0O|vkJrsP9eq;FNVgXS8wIwQVx3~Tl*=e{a}AbWkf;9;o-Cg1}i|Xi6yW$f(;}X;hL1zY3XuR9UmDMjV&pn*C z&%!D=!-jB)aR-~IW4)af{ECd6VS)08N5+RwkKGVNaaW@*GPNp%t=S!Z7G_=6ZI29# z(<$XMhSLI1oiUoDT9gW*6Dw@C9mlIhXIjEu(q0Z8qTmZNbE*hpIiFhOHygc9WgTO2&v@AFBM^0%3k7ptgqFGMA=bF3Xo zsDW?Gql9o1V|r#p;8CfL(Ub0($Cp_40r6eUP&}p35PRb54&FgcUd_$(X=3eucus^U z%&oD<+mvK6ooayqDFue>{#H0(MSg+<}1THWbzbxC`fh zttCOp65vO`Wk4TY4I9nkHyVjxo=Prh`!hxj@^&jdh-Kspc|_n6?4L|o`Rz4@qDte; zge@=H>2pbyAAQTxO@#WiRBcxgjb?Mh5&n~g7rA)x$0OOz59+3V?H&JC zaCcrMe_KVO)rC`iUZo>9LiQupYEc?hq5R^Io2j$1;-Zybz%;EhGE%T= z!2<26Ky2`7!DZD{%1teRR9R(NND)*RTVEEoEH9pBPR7e~8L3Rwyk80ioF<6f>L)%6 zf|XcjR;g*lw)vvXVVt1zCij2CiUG3taZv|q5n!PP2$zDgA^yBFbW_CiSq3zNAEh3g z{(>|VQa04TRv2NPlpG4OIwM$*@!z~xQMNHieRk!Dlk=6TzijbhPIfJ>YWU&B(nVHz zur@d3tmQF6Kw#;5lr~78(2>Q)iev6WIv+bZmn_izNs_wBHJ65KgVwu@PMaGrdtXOj z!q4WplR;OiR^zozLHoA)>m&A&?`>b6(86dQROAm1u~0%9JbX|2-4Zt$rrq6~Qp5J1 zmA{tvP0Uk<5r%hh|A6-bUo+G5m_!^b*vhW6m{SEqy;xt{i?xE`o%(gQBX6S&d zdnCAy7dIpQPFj?k5@PnamLK6cvw}>IDa+;Geg6Dy)DK&&w$h{!Q82v3E=FTdfQ&g# z#g{i|+m*An-m=>?aYJGd$GD9b1k=22A<$QsqG3PfY5I}3_4aq zM!E3VVzoez_YhiEArV(x2TPC~p>39$jBofa^d0VT0BS;&V)zF;p;+(M4H+XhW%;yeM*(=Bsm)$X+t zaSjI+OflbQ*blR5@*EVe-8o{aF4^nOd|yA|gob?MSRS1x{d5g)WH#&@&YGYfk(iNg(ZHqq2Pt z&RJQo%zb4*s%J{0yHYF=-3rm-)3>4(`SeF5BOje1$U##}@6D;z18guuTcpTl$)|SF z**$7FB4wcsV(Mx0^%%2H9_&^6_?5ZDjv)UrzZtm1OK*3rU> zhGwTfzD3JHJT!2lO;RGHS_1N!b~SU17L8-#7<~-TrL9oJS16kjWk$8c#^fT__xt1c zar>K0^7rm^*9XGq*N&6G;Z8zNPZwT<$^44RuWrNEf)3)ZU~G@l`+m}PXc4#sLV`Y; z1=~`=JumLD&z^OlK-~N=`|I%at>#0Varp#m33{mJST}6tEdUI)+!RjJ zGSs-qnR$)wN*9LBG}yj;I9VDhC9HW6p9X>*^U5d|c+e9B)f5H1N4hu-lW<87OXacX zvDWAS=hI<@0eEM5f+k?CBsNJr%`z!p*lcV>*{U^xWnnhd1jazw{W>I5a)f;OVp z6O}SLO!zHV{5DI1Hayar?e*5xLl`YZt~!se{^AMuwIfkwzs1Q@tHP%$6v7+FLbXE0 zgf3ptuxz34z?4laeto>)qjrXztbvRnA3(8aQ6q~Kg7H;2t1?o=)VM4s-(ig&T7VR( z)Eq_bw!iy|Vodw=xH{x@*w1V6vhAa-z;7d=>KFMoCCqP~IGc<1%_sH)H5jTU)j8dJ zJAdmj;Ew+#1PR;61>6tyMXjZ7e6Y#H8`BZ|F%dGxuDh3)+y?zCXa&_h%`g(qnx+(N ztP&w+fql6n5Q=`a@_naqEq5Q+maq8mvk@`dgv&!a_gv%6$&;Y63(#A8*g_n2`VRW) z_U}oQB9IGs`9F~|o<>Zf1G_g#^L=?2e4ZIs^=$}nVD^+q-$daS8n)gOSjo23TXZh3 z1GO)|TY%fWq1v-E*Ft6ZlK%gxl;?HRC$?sVbZq? zyv~>Ex-i^Ecxk~>`Hb59yN{GbN5GlLcK1qe{-`;vN^4Vv#5eu}E;d!pls-i7ylt~?yo|1)-kKu*?qVyIR5=4w7K`<~MVRUXpGHa&qoWXfG?-88V=efH+GtjJe{t(>$ zRycR2O2B`x4!>rU#AZZ=kFm(@wuJ4*+EO2|P1|K1t)&A;1Bz8i6s1h3#tc&-WWWWV ze~|o$E&zm$!OFWoQML0H3(QH2l`H7xuAGG1PeoEW9|~J>TBOUI65)~ZV{{fz)yRSR zXIv!KvkP`|J+-Zn%M~OmmTfR9n3dO<*RNrImdl#PwhE#@Q=9_(xaUNI!c;fqv&&=P z3YT{qR)5UsC)dda5KD7LZ^#wBy~FPx7}Un^-$RXAl}gC(LhV9BAMTNcO`OW8Y9O{y zS$+8g1}H|0s93w6?+s2qf^peI;#!$=6XRAs zYOA{bs)&qT3>C|fVkHz^J{wz^qoQ{<)7jX*@rzugS@H`V* ziW)>024fc9yyaw3x;y)EHOUyj?x5wet{AK|_Um^Grr##Uq^1XQw9^^pb88WCf)v#+`M}T&Bwt~#$bBL}z5mD_W zCKTGtmWMSiAdVyrw3k#mjWm#cVs?|vG**RNO1A0Y#k)%7kk}3o?g0UI(ja_b2hfe4 z5|hyi(Xf2o#yDeW+>e%^*cEU1qv6gjpd3nl;;C#ErTIk$47N+dr%^tmNiR1ssAG!; zu(|YBpuDehyLR|Ya`=D800Xz+Mj(NKS{-vp;2nn?0_)~740w%1oG`Ia%X(eJM+XuT z)Bpin#*4wpV~yXiSIpqiayejmbe*2v zuU*^|TlCHtIokD|k%S)W5tmfnJ8|GxqIdPDH5tfXzo>gkN(bx(_7A(wk&3N)Q1r|% zuDD4Y<4mPWF-WXl%z0fTB9Sd;v)aAz>C zmtr9pj(v99g(K-#c~!kyJWy$fSoAUJq#jwIIJBsbyAed1jU!v|YzHT;st2a0@w1R2 z$^3%KO928Q1N;}29^)UCUgKv130oczz`Y3!0PY`^{=WwPf7}0N)Eij+7oz@ui>dyJ zm*5u6>3IPGdU(P96KVfHVu^o8{~v|Bt#f2I&8){~sP-UJ3;C S|Lg$%H{1VNu4|xw>wf?QbWIZg literal 0 HcmV?d00001 diff --git a/assessment/mathtest.css b/assessment/mathtest.css index 0666c66e73..42b7dc69c3 100755 --- a/assessment/mathtest.css +++ b/assessment/mathtest.css @@ -159,7 +159,7 @@ div.spacer { div.navbar { float: left; - width:120px; + max-width: 160px; padding:10px; margin-top:0px; background-color: #e0ffe0; diff --git a/assessment/showtest.php b/assessment/showtest.php index 2658fbfe2c..9515214df4 100755 --- a/assessment/showtest.php +++ b/assessment/showtest.php @@ -172,14 +172,14 @@ //check reqscore if ($isRealStudent && abs($adata['reqscore'])>0 && $adata['reqscoreaid']>0 && !$waivereqscore && !$isreview) { $isBlocked = false; - + $query = "SELECT ias.bestscores,ia.ptsposs,ia.name FROM imas_assessments AS ia LEFT JOIN "; $query .= "imas_assessment_sessions AS ias ON ias.assessmentid=ia.id AND ias.userid=:userid "; $query .= "WHERE ia.id=:assessmentid"; $bestscores_stm = $DBH->prepare($query); $bestscores_stm->execute(array(':assessmentid'=>$adata['reqscoreaid'], ':userid'=>$userid)); list($prereqscore,$reqscoreptsposs,$reqscorename) = $bestscores_stm->fetch(PDO::FETCH_NUM); - + if ($prereqscore === null) { $isBlocked = true; } else { @@ -190,7 +190,7 @@ $prereqscoretot += getpts($prereqscore[$i]); } $isBlocked = false; - + if ($adata['reqscoretype']&2) { //using percent-based if ($reqscoreptsposs==-1) { require("../includes/updateptsposs.php"); @@ -215,7 +215,7 @@ require("../footer.php"); exit; } - + } //check for password @@ -534,6 +534,10 @@ $stm = $DBH->prepare("SELECT * FROM imas_assessment_sessions WHERE id=:id"); $stm->execute(array(':id'=>$testid)); $line = $stm->fetch(PDO::FETCH_ASSOC); + $stm = $DBH->prepare("SELECT justintimeorder FROM imas_assessments WHERE id=:id"); + $stm->execute(array(':id'=>$line['assessmentid'])); + $jitorder = $stm->fetch(PDO::FETCH_ASSOC); + $line['JustInTime']=$jitorder; $GLOBALS['assessver'] = $line['ver']; if (strpos($line['questions'],';')===false) { $questions = explode(",",$line['questions']); @@ -826,6 +830,79 @@ $nocolormark = true; } + //JIT addon + $jitParent = array(); + $jitHasChildren = array(); + $jitChildren = array(); + $jitQuestionsFlip = array_flip($questions); +//print_r($qi); + + function getChildren($structure,&$jitParent,&$jitHasChildren,&$jitChildren,$parentID){ + $jitChildren[$parentID] = array(); + foreach ($structure as $q){ + $jitChildren[$parentID][] = $q['id']; + $jitParent[$q['id']] = $parentID; + if(array_key_exists('children', $q)){ + $jitHasChildren[] = $q['id']; + getChildren($q['children'],$jitParent,$jitHasChildren,$jitChildren, $q['id']); + } + } + } + foreach (json_decode($line['JustInTime']['justintimeorder'], true) as $q) { + //print_r($q); + //echo array_key_exists('children', $q); + if(array_key_exists('children', $q)){ + $jitHasChildren[] = $q['id']; + getChildren($q['children'],$jitParent,$jitHasChildren,$jitChildren,$q['id']); + } + } + + function countParents(&$jitParent,$id,$ret){ + if(array_key_exists($id, $jitParent)){ + return countParents($jitParent, $jitParent[$id], $ret+1); + } + return $ret; + } + function isPrevQOnSameLevelIsCorrect($i){ + global $qi,$bestscores,$questions,$scores,$jitParent,$jitChildren,$jitHasChildren,$jitQuestionsFlip; + $parents = countParents($jitParent, $questions[$i],1); + for($j = $i-1; $j >= 0; $j--){ + + if(countParents($jitParent, $questions[$j],1) == $parents){ + //echo "scr:".var_dump(getpts($bestscores[$j])==$qi[$questions[$j]]['points'])."<="; + return getpts($bestscores[$j]) == $qi[$questions[$j]]['points']; + } + } + + } + + function areChildrenCompleted($ii,&$jitHasChildren,&$jitChildren,&$jitQuestionsFlip){ + global $qi,$bestscores; + if(!in_array($ii,$jitHasChildren)){ + return true; + } + + foreach($jitChildren[$ii] as $child){ + //echo " ".$bestscores[$jitQuestionsFlip[$child]]."/".$qi[$child]['points']; + if($bestscores[$jitQuestionsFlip[$child]] < $qi[$child]['points']) + return false; + } + return true; + } + function jitMarkChildrenCorrect($ii){ + global $qi,$bestscores,$scores,$jitChildren,$jitHasChildren,$jitQuestionsFlip; + if(!in_array($ii,$jitHasChildren)){ + return; + } + //echo ":".$ii.":"; +//print_r($jitChildren); + foreach($jitChildren[$ii] as $child){ + $bestscores[$jitQuestionsFlip[$child]] = $qi[$child]['points']; + $scores[$jitQuestionsFlip[$child]] = $qi[$child]['points']; + jitMarkChildrenCorrect($child); + } + } + $reloadqi = false; if (isset($_GET['reattempt'])) { if ($_GET['reattempt']=="all") { @@ -903,7 +980,15 @@ } } else { $toclear = $_GET['reattempt']; - if ($attempts[$toclear]<$qi[$questions[$toclear]]['attempts'] || $qi[$questions[$toclear]]['attempts']==0) { + if ($attempts[$toclear]<$qi[$questions[$toclear]]['attempts'] || $qi[$questions[$toclear]]['attempts']==0 || + ($_GET['action']=="jitskip" && (!in_array($questions[$i],$jitHasChildren) || + areChildrenCompleted($questions[$i],$jitHasChildren,$jitChildren,$jitQuestionsFlip))) + ) { + if($_GET['action']=="jitskip"){ + //Set new seed + $attempts[$toclear]=0; + $qi[$questions[$toclear]]['regen'] = 1; + } //$scores[$toclear] = -1; if (!in_array($toclear,$reattempting)) { $reattempting[] = $toclear; @@ -2006,6 +2091,293 @@ endtest($testsettings); if ($shown) {leavetestmsg();} } + } else if ($_GET['action']=="jitskip") { + + if (isset($_GET['score'])) { //score a problem + global $imasroot,$isteacher,$isdiag,$testsettings,$attempts,$qi,$allowregen,$bestscores,$isreview,$showeachscore,$noindivscores,$CFG,$jitParent,$jitHasChildren,$jitChildren,$jitQuestionsFlip; + $qn = $_GET['score']; + + //TODO: Change the number of attempts to oo if required + //print_r($jitHasChildren); + + + if ($_POST['verattempts']!=$attempts[$qn] && !(!in_array($questions[$qn],$jitHasChildren) || + areChildrenCompleted($questions[$qn],$jitHasChildren,$jitChildren,$jitQuestionsFlip))) { + echo "

    ", _('This question has been submittted since you viewed it, and that grade is shown below. Your answer just submitted was not scored or recorded.'), "

    "; + } else { + if (isset($_POST['disptime']) && !$isreview) { + $used = $now - intval($_POST['disptime']); + $timesontask[$qn] .= (($timesontask[$qn]=='') ? '':'~').$used; + } + $GLOBALS['scoremessages'] = ''; + $GLOBALS['questionmanualgrade'] = false; + $rawscore = scorequestion($qn); + + $immediatereattempt = false; + if (!$superdone && $showeachscore && hasreattempts($qn)) { + if (!(($regenonreattempt && $qi[$questions[$toclear]]['regen']==0) || $qi[$questions[$toclear]]['regen']==1)) { + if (!in_array($qn,$reattempting)) { + //$reattempting[] = $qn; + $immediatereattempt = true; + } + } + } + //echo "score!".$rawscore; + if($rawscore == $qi[$questions[$qn]]['points']){ + //Find all children and mark them as correct + jitMarkChildrenCorrect($questions[$qn]); + + } else{ + //TODO: Reset attempts if the all children are completed + //echo "NOOO "; + if(areChildrenCompleted($questions[$qn],$jitHasChildren,$jitChildren,$jitQuestionsFlip) && + $attempts[$qn] == $qi[$questions[$qn]]['attempts'] + ){ + //echo "Children COMPLETED"; + //$immediatereattempt = true; + } + } + + //record score + recordtestdata(); + } + if (!$superdone) { + echo filter("\n"); + $lefttodo = shownavbarJustInTime($line['JustInTime']['justintimeorder'],$questions,$scores,$qn,$testsettings['showcat'],$testsettings['extrefs']); + + echo "
    \n"; + } + } else if (isset($_GET['to'])) { //jump to a problem + $next = $_GET['to']; + echo filter("\n"); + + $lefttodo = shownavbarJustInTime($line['JustInTime']['justintimeorder'],$questions,$scores,$next,$testsettings['showcat'],$testsettings['extrefs']); + if (unans($scores[$next]) || amreattempting($next)) { + echo "
    \n"; + if (isset($intropieces)) { + foreach ($introdividers as $k=>$v) { + if ($v[1]<=$next+1 && $next+1<=$v[2]) {//right divider + if ($next+1==$v[1] || !empty($v[3])) { + echo ''; + echo '
    '.filter($intropieces[$k]).'
    '; + } else { + echo ''; + echo ''; + } + break; + } + } + } + echo "
    \n"; + echo ""; + echo ''; + echo ""; + echo "
    "._('Start of Questions')."
    \n"; + basicshowq($next); + showqinfobar($next,true,true); + echo ''; + if ((($testsettings['showans']=='J' && $qi[$questions[$next]]['showans']=='0') || $qi[$questions[$next]]['showans']=='J') && $qi[$questions[$next]]['attempts']>0) { + echo ' '; + } + echo "
    \n"; + echo "
    \n"; + } else { + echo "
    \n"; + echo "
    "._('Start of Questions')."
    \n"; + if (!isset($_GET['jumptoans'])) { + echo _("You've already done this problem."), "\n"; + } + $reattemptsremain = false; + if ($showeachscore) { + $possible = $qi[$questions[$next]]['points']; + echo "

    ", _('Score on last attempt: '); + echo printscore($scores[$next],$next); + echo "

    \n"; + echo "

    ", _('Score in gradebook: '); + echo printscore($bestscores[$next],$next); + echo "

    "; + } + if (hasreattempts($next)) { + if ($reattemptduring) { + echo "

    ", _('Reattempt this question'), "

    \n"; + } + $reattemptsremain = true; + } + if ($allowregen && $qi[$questions[$next]]['allowregen']==1) { + echo "

    ", _('Try another similar question'), "

    \n"; + } + if ($lefttodo == 0 && $testsettings['testtype']!="NoScores") { + echo "", _('When you are done, click here to see a summary of your score'), "\n"; + } + if ($testsettings['showans']!='N') {// && $showeachscore) { //(!$reattemptsremain || $regenonreattempt) && + unset($GLOBALS['nocolormark']); + echo "

    ", _('Question with last attempt is displayed for your review only'), "

    "; + + if (!$noraw && $showeachscore) { + //$colors = scorestocolors($rawscores[$next], '', $qi[$questions[$next]]['answeights'], $noraw); + if (strpos($rawscores[$next],'~')!==false) { + $colors = explode('~',$rawscores[$next]); + } else { + $colors = array($rawscores[$next]); + } + } else { + $colors = array(); + } + $qshowans = (($qi[$questions[$next]]['showansafterlast'] && !$reattemptsremain) || + ($qi[$questions[$next]]['showansduring'] && $attempts[$next]>=$qi[$questions[$next]]['showans']) || + ($qi[$questions[$next]]['showans']=='R' && $regenonreattempt)); + if ($qshowans) { + displayq($next,$qi[$questions[$next]]['questionsetid'],$seeds[$next],2,false,$attempts[$next],false,false,false,$colors); + } else { + displayq($next,$qi[$questions[$next]]['questionsetid'],$seeds[$next],false,false,$attempts[$next],false,false,false,$colors); + } + $contactlinks = showquestioncontactlinks($next); + if ($contactlinks!='') { + echo '
    '.$contactlinks.'
    '; + } + } + echo "
    \n"; + } + } + if (isset($_GET['done'])) { //are all done + + $shown = showscores($questions,$attempts,$testsettings); + endtest($testsettings); + if ($shown) {leavetestmsg();} + } } else if ($_GET['action']=="seq") { if (isset($_GET['score'])) { //score a problem $qn = $_GET['score']; @@ -2602,7 +2974,7 @@ } } $reattempting = array(); - + if ($numdisplayed > 0) { echo '
    '; echo ''; @@ -2698,6 +3070,50 @@ echo "\n"; echo "
    \n"; + echo "
    "._('Start of Questions')."
    \n"; + if ($GLOBALS['scoremessages'] != '') { + echo '

    '.$GLOBALS['scoremessages'].'

    '; + } + + if ($showeachscore) { + $possible = $qi[$questions[$qn]]['points']; + if (getpts($rawscore)!=getpts($scores[$qn])) { + echo "

    ", _('Score before penalty on last attempt: '); + echo printscore($rawscore,$qn); + echo "

    "; + } + echo "

    "; + echo _('Score on last attempt: '); + echo printscore($scores[$qn],$qn); + echo "

    \n"; + echo "

    ", _('Score in gradebook: '); + echo printscore($bestscores[$qn],$qn); + echo "

    "; + if ($GLOBALS['questionmanualgrade'] == true) { + echo '

    ', _('Note:'), ' ', _('This question contains parts that can not be auto-graded. Those parts will count as a score of 0 until they are graded by your instructor'), '

    '; + } + + + } else { + echo '

    '._('Question Scored').'

    '; + } + + $reattemptsremain = false; + if (hasreattempts($qn)) { + $reattemptsremain = true; + } + + if ($allowregen && $qi[$questions[$qn]]['allowregen']==1) { + echo '

    '; + if ($reattemptsremain && !$immediatereattempt && $reattemptduring) { + echo "", _('Reattempt last question'), ", "; + } + echo "", _('Try another similar question'), ""; + if ($immediatereattempt) { + echo _(", reattempt last question below, or select another question."); + } else { + echo _(", or select another question"); + } + echo "

    \n"; + } else if ($reattemptsremain && !$immediatereattempt && $reattemptduring) { + echo "

    ", _('Reattempt last question'), ""; + if ($lefttodo > 0) { + echo _(", or select another question"); + } + echo '

    '; + } else { + if ($reattemptsremain && $immediatereattempt && $reattemptduring) { + echo "

    "._('Reattempt last question below, or select another question').'

    '; + } else { + echo "

    "._('It looks like you had difficulty with the problem. Please select the next question from the menu on the left to help you acquire the necessary knowledge.').'

    '; + echo "

    "._('If you continue to have trouble, please visit the Math Lab for additional help.').'

    '; + } + } + + if ((!$reattemptsremain || $regenonreattempt) && $showeachscore && $testsettings['showans']!='N') { + //TODO i18n + unset($GLOBALS['nocolormark']); + echo "

    " . _("This question, with your last answer"); + if (($qi[$questions[$qn]]['showansafterlast'] && !$reattemptsremain) || + ($qi[$questions[$qn]]['showansduring'] && $qi[$questions[$qn]]['showans']<=$attempts[$qn]) || + ($qi[$questions[$qn]]['showans']=='R' && $regenonreattempt)) { + echo _(" and correct answer"); + $showcorrectnow = true; + } else { + $showcorrectnow = false; + } + + echo _(', is displayed below') . '

    '; + if (!$noraw && $showeachscore && $GLOBALS['questionmanualgrade'] != true) { + //$colors = scorestocolors($rawscores[$qn], '', $qi[$questions[$qn]]['answeights'], $noraw); + if (strpos($rawscores[$qn],'~')!==false) { + $colors = explode('~',$rawscores[$qn]); + } else { + $colors = array($rawscores[$qn]); + } + } else { + $colors = array(); + } + if ($showcorrectnow) { + displayq($qn,$qi[$questions[$qn]]['questionsetid'],$seeds[$qn],2,false,$attempts[$qn],false,false,false,$colors); + } else { + displayq($qn,$qi[$questions[$qn]]['questionsetid'],$seeds[$qn],false,false,$attempts[$qn],false,false,false,$colors); + } + $contactlinks = showquestioncontactlinks($qn); + if ($contactlinks!='' && !$sessiondata['istutorial']) { + echo '
    '.$contactlinks.'
    '; + } + + } else if ($immediatereattempt) { + $next = $qn; + if (isset($intropieces)) { + foreach ($introdividers as $k=>$v) { + if ($v[1]<=$next+1 && $next+1<=$v[2]) {//right divider + if ($next+1==$v[1] || !empty($v[3])) { + echo ''; + echo '
    '.filter($intropieces[$k]).'
    '; + } else { + echo ''; + echo ''; + } + break; + } + } + } + echo "
    \n"; + echo ""; + echo ''; + echo ""; + echo "
    "._('Start of Questions')."
    \n"; + basicshowq($next); + showqinfobar($next,true,true); + echo ''; + if ((($testsettings['showans']=='J' && $qi[$questions[$next]]['showans']=='0') || $qi[$questions[$next]]['showans']=='J') && $qi[$questions[$next]]['attempts']>0) { + echo ' '; + } + echo "
    \n"; + + } + if ($testsettings['testtype']!="NoScores") { + echo "

    ". _("When you are done, ") . " " . _("click here to see a summary of your scores") . ".

    \n"; + } + + echo "
    \n"; + } + } else if ($testsettings['displaymethod'] == "JustInTime") { + echo filter("
    {$testsettings['intro']}
    \n"); + + for ($i = 0; $i
    \n"; + echo "
    "._('Start of Questions')."
    \n"; + + startoftestmessage($perfectscore,$hasreattempts,$allowregen,$noindivscores,$testsettings['testtype']=="NoScores"); + + leavetestmsg(); + + } else { + echo "
    \n"; + if (isset($intropieces)) { + foreach ($introdividers as $k=>$v) { + if ($v[1]<=$i+1 && $i+1<=$v[2]) {//right divider + echo ''; + echo '
    '.filter($intropieces[$k]).'
    '; + break; + } + } + } + echo "
    \n"; + echo ""; + echo ''; + echo ""; + echo "
    "._('Start of Questions')."
    \n"; + basicshowq($i); + showqinfobar($i,true,true); + echo ''; + if ((($testsettings['showans']=='J' && $qi[$questions[$i]]['showans']=='0') || $qi[$questions[$i]]['showans']=='J') && $qi[$questions[$i]]['attempts']>0) { + echo ' '; + } + echo "
    \n"; + echo "
    \n"; + } } else if ($testsettings['displaymethod'] == "Seq") { for ($i = 0; $i'; - echo "", _('Skip Navigation'), "\n"; + echo "", _('Skip Navigation'), "\n"; echo "

    ", _('Pages'), "

    \n"; echo '
    '; } + function shownavbarJustInTime($jitorder,$questions,$scores,$current,$showcat,$extrefs) { + global $imasroot,$isteacher,$isdiag,$testsettings,$attempts,$qi,$allowregen,$bestscores,$isreview,$showeachscore,$noindivscores,$CFG,$jitParent,$jitHasChildren,$jitChildren,$jitQuestionsFlip; + $todo = 0; + $earned = 0; + $poss = 0; + //print_r json_decode($jitorder); + + //get array of parents + //TODO: bookmark + //print_r(json_decode($jitorder, true)); + //print_r($jitParent); + //print_r($jitHasChildren); + //print_r($jitChildren); + //print_r($questions); + //print_r($jitChildren); + + + echo '\n"; + return $todo; + } + function shownavbar($questions,$scores,$current,$showcat,$extrefs) { global $imasroot,$isteacher,$isdiag,$testsettings,$attempts,$qi,$allowregen,$bestscores,$isreview,$showeachscore,$noindivscores,$CFG; $todo = 0; $earned = 0; $poss = 0; - echo '