From 23b7b90dcbfc9841787250b54c6202aea66eb2e8 Mon Sep 17 00:00:00 2001 From: Michael Yan Date: Mon, 3 Jun 2024 18:50:08 +0800 Subject: [PATCH] Add demo app --- app/assets/fonts/bootstrap-icons.woff | Bin 0 -> 137124 bytes app/assets/fonts/bootstrap-icons.woff2 | Bin 0 -> 102536 bytes app/assets/images/apple-touch-icon-retina.png | Bin 0 -> 8671 bytes app/assets/images/apple-touch-icon.png | Bin 0 -> 3610 bytes app/assets/images/discussion.svg | 21 + app/assets/images/documentation.svg | 16 + app/assets/images/favicon.ico | Bin 0 -> 9662 bytes app/assets/images/grace-launch.svg | 12 + app/assets/images/grace.svg | 22 + app/assets/images/guides.svg | 17 + app/assets/javascripts/application.js | 10 + app/assets/javascripts/bootstrap.bundle.js | 6812 ++++++++++ .../javascripts/bootstrap.bundle.js.map | 1 + .../javascripts/bootstrap.bundle.min.js | 7 + .../javascripts/bootstrap.bundle.min.js.map | 1 + app/assets/javascripts/bootstrap.js | 5046 +++++++ app/assets/javascripts/bootstrap.js.map | 1 + app/assets/javascripts/bootstrap.min.js | 7 + app/assets/javascripts/bootstrap.min.js.map | 1 + .../javascripts/bs-custom-file-input.js | 167 + .../javascripts/bs-custom-file-input.min.js | 7 + app/assets/javascripts/jquery.js | 10881 +++++++++++++++ app/assets/javascripts/jquery.min.js | 2 + app/assets/javascripts/jquery.min.map | 1 + app/assets/stylesheets/application.css | 14 + app/assets/stylesheets/bootstrap-grid.css | 5051 +++++++ app/assets/stylesheets/bootstrap-grid.css.map | 1 + app/assets/stylesheets/bootstrap-grid.min.css | 7 + .../stylesheets/bootstrap-grid.min.css.map | 1 + app/assets/stylesheets/bootstrap-icons.css | 1704 +++ app/assets/stylesheets/bootstrap-reboot.css | 485 + .../stylesheets/bootstrap-reboot.css.map | 1 + .../stylesheets/bootstrap-reboot.min.css | 8 + .../stylesheets/bootstrap-reboot.min.css.map | 1 + app/assets/stylesheets/bootstrap.css | 11266 ++++++++++++++++ app/assets/stylesheets/bootstrap.css.map | 1 + app/assets/stylesheets/bootstrap.min.css | 7 + app/assets/stylesheets/bootstrap.min.css.map | 1 + app/assets/stylesheets/errors.css | 98 + app/assets/stylesheets/main.css | 515 + .../grace/demos/ButtonComponent.groovy | 25 + .../grace/demos/CardComponent.groovy | 6 + .../grace/demos/IconComponent.groovy | 12 + app/conf/application.yml | 103 +- app/conf/logback.xml | 3 +- .../grace/demos/UrlMappings.groovy | 16 + .../demos}/Application.groovy | 6 +- .../demos}/BootStrap.groovy | 2 +- app/views/_fields/boolean/_displayWrapper.gsp | 1 + app/views/_fields/boolean/_widget.gsp | 4 + app/views/_fields/date/_displayWidget.gsp | 1 + app/views/_fields/date/_displayWrapper.gsp | 1 + app/views/_fields/date/_widget.gsp | 6 + app/views/_fields/default/_displayWrapper.gsp | 9 + app/views/_fields/default/_widget.gsp | 6 + app/views/_fields/default/_wrapper.gsp | 12 + app/views/_fields/enum/_widget.gsp | 6 + app/views/_fields/number/_widget.gsp | 9 + .../_fields/oneToMany/_displayWidget.gsp | 8 + .../_fields/oneToMany/_displayWrapper.gsp | 8 + app/views/_fields/oneToMany/_widget.gsp | 9 + app/views/_fields/oneToOne/_widget.gsp | 3 + app/views/_fields/string/_widget.gsp | 9 + .../components/button/button_component.gml | 17 + app/views/components/card/card_component.gml | 12 + app/views/error.gsp | 39 + app/views/index.gsp | 70 + app/views/layouts/main.gsp | 139 + app/views/notFound.gsp | 20 + app/views/templates/_fields/_list.gsp | 10 + app/views/templates/_fields/_table.gsp | 23 + build.gradle | 187 +- settings.gradle | 4 +- 73 files changed, 42882 insertions(+), 97 deletions(-) create mode 100644 app/assets/fonts/bootstrap-icons.woff create mode 100644 app/assets/fonts/bootstrap-icons.woff2 create mode 100644 app/assets/images/apple-touch-icon-retina.png create mode 100644 app/assets/images/apple-touch-icon.png create mode 100644 app/assets/images/discussion.svg create mode 100644 app/assets/images/documentation.svg create mode 100644 app/assets/images/favicon.ico create mode 100644 app/assets/images/grace-launch.svg create mode 100644 app/assets/images/grace.svg create mode 100644 app/assets/images/guides.svg create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/bootstrap.bundle.js create mode 100644 app/assets/javascripts/bootstrap.bundle.js.map create mode 100644 app/assets/javascripts/bootstrap.bundle.min.js create mode 100644 app/assets/javascripts/bootstrap.bundle.min.js.map create mode 100644 app/assets/javascripts/bootstrap.js create mode 100644 app/assets/javascripts/bootstrap.js.map create mode 100644 app/assets/javascripts/bootstrap.min.js create mode 100644 app/assets/javascripts/bootstrap.min.js.map create mode 100644 app/assets/javascripts/bs-custom-file-input.js create mode 100644 app/assets/javascripts/bs-custom-file-input.min.js create mode 100644 app/assets/javascripts/jquery.js create mode 100644 app/assets/javascripts/jquery.min.js create mode 100644 app/assets/javascripts/jquery.min.map create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/bootstrap-grid.css create mode 100644 app/assets/stylesheets/bootstrap-grid.css.map create mode 100644 app/assets/stylesheets/bootstrap-grid.min.css create mode 100644 app/assets/stylesheets/bootstrap-grid.min.css.map create mode 100644 app/assets/stylesheets/bootstrap-icons.css create mode 100644 app/assets/stylesheets/bootstrap-reboot.css create mode 100644 app/assets/stylesheets/bootstrap-reboot.css.map create mode 100644 app/assets/stylesheets/bootstrap-reboot.min.css create mode 100644 app/assets/stylesheets/bootstrap-reboot.min.css.map create mode 100644 app/assets/stylesheets/bootstrap.css create mode 100644 app/assets/stylesheets/bootstrap.css.map create mode 100644 app/assets/stylesheets/bootstrap.min.css create mode 100644 app/assets/stylesheets/bootstrap.min.css.map create mode 100644 app/assets/stylesheets/errors.css create mode 100644 app/assets/stylesheets/main.css create mode 100644 app/components/grace/demos/ButtonComponent.groovy create mode 100644 app/components/grace/demos/CardComponent.groovy create mode 100644 app/components/grace/demos/IconComponent.groovy create mode 100644 app/controllers/grace/demos/UrlMappings.groovy rename app/init/{org/graceframework/plugin/components => grace/demos}/Application.groovy (56%) rename app/init/{org/graceframework/plugin/components => grace/demos}/BootStrap.groovy (66%) create mode 100644 app/views/_fields/boolean/_displayWrapper.gsp create mode 100644 app/views/_fields/boolean/_widget.gsp create mode 100644 app/views/_fields/date/_displayWidget.gsp create mode 100644 app/views/_fields/date/_displayWrapper.gsp create mode 100644 app/views/_fields/date/_widget.gsp create mode 100644 app/views/_fields/default/_displayWrapper.gsp create mode 100644 app/views/_fields/default/_widget.gsp create mode 100644 app/views/_fields/default/_wrapper.gsp create mode 100644 app/views/_fields/enum/_widget.gsp create mode 100644 app/views/_fields/number/_widget.gsp create mode 100644 app/views/_fields/oneToMany/_displayWidget.gsp create mode 100644 app/views/_fields/oneToMany/_displayWrapper.gsp create mode 100644 app/views/_fields/oneToMany/_widget.gsp create mode 100644 app/views/_fields/oneToOne/_widget.gsp create mode 100644 app/views/_fields/string/_widget.gsp create mode 100644 app/views/components/button/button_component.gml create mode 100644 app/views/components/card/card_component.gml create mode 100644 app/views/error.gsp create mode 100644 app/views/index.gsp create mode 100644 app/views/layouts/main.gsp create mode 100644 app/views/notFound.gsp create mode 100644 app/views/templates/_fields/_list.gsp create mode 100644 app/views/templates/_fields/_table.gsp diff --git a/app/assets/fonts/bootstrap-icons.woff b/app/assets/fonts/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..b26ccd1ac9f9f1fbc980e93531398364f6f03cd2 GIT binary patch literal 137124 zcma%@WmHsO*tchh85%_d=?89+ekW&jlt>5?8mK%`q5lx_q;Ktj4Z z9P&N;zt;19cs@O@b*{PhZ(sYKea<=z1I*Gx=l*>d90r5oP=AIILy!31eE%Cm<^TSt zs`o?*27?noxioY0||Y(@`+kwH7G5My@3M+~Jw$D;RuR7h1;z9n8o&IKSgF z2Wuz;`;moC(#~BZw)T~iiz^JiQwoD|?ZIHrw~Cjt{5(^wES_6f%vs*GD7CV1etkgr zY_3Crm7f z=n=G8&(x)dwD8Z`oU?O@l*ViWIyOc;v0Jcr|m||MPEPduEz$rMP{kAw6Jj zU`0;PBS!euK=D_zSw{5x)b}DJB=<#H7uxo&hSA6c18lRo0qs?@c?~?TBOpDH^MiR3 zrmkGJShh?yN47#Xud%SPz_0M)^F^6>xp@vq{X0apR%VYZ0r+*z3m#BoaVEXF_hjC4o5ZZ_~@d-KHiiui2yY}Uhm&y<=r zq$6i<-e*Jg!WO1|Yj(U%giu=}c6d<)Ut3*ocvOT`TXSUiaL;s5O?bFZgt%X$Vt7*o z*{|+0{6~bmpHBX-uZTRK0`X6!%Da3@!KjC{T4BTUm3X9?9JVyH8b44*Pa_iYZlY9Z zAMgzKR1y_w6b!FdB8t@QhY6mhjAgpn%0A5y!;sptJ1A$PtR~-x<@BRmCWER!7oqGY z-&N;qp?qkyrH5`!M!RR3+KNx69b;r|1twEEe#%t}Y^k1&z+LY$D24od<|>hhA$3bvRaWt*@w4eALtCl9#YC`4-Qov(#z@y422z1G-{O$ z6&%twK5!aJIizaT-WjStWNg%78VWhQ?x&S8ly^w#r#U-(a)^7OCOOy@=9d z^5*lsXwwt&7S_BF>CrZSjl9It(^lprz4+5pR{nZt}=6~+Ocy`Bc5lAeOS^#(*qxBVW0S<3idH!oSU z4DmTqFLtN4Y)`A1H{whEo-Q*%HH$@__A~ElmbN^7W&%5RBN}e(^wsZfHz0Sqt-P3K z5>FN`urRqO^7&xwHM!KtIW{b}Tyo@JE3AZEw9b4imQpTWXJG_OA{RS2Ux77|iyT}b z{-@ORUSL`C-=n6F0xLZKG@3q?EZhHk+7wZ;Lig`}Q>fFj@jv~haHkdNe-E0%c9wmx z{{C;67Pzpt{ZnTDdSGS!Gvw#Uv22&0kU zz|yy36PH9f$J);3y`6L9Rd>MN>^b=r4?8dG9Zr6gj_B9cGBoC=>H##&H+qzX%CuNx zd!7r`YO(0`JQk|bVjJmk6>98b7Vgm!s_0{_=y@qr-^X&$eO`{{eJ@;Y{qk=^SsuH{Mm{-1vuCyhq!);ty+0kArjG9}bURS?7{J zTqnK3`%yBykzLvQpJe!Tx?=a^WcUWVD)v)l1O&Rm_G21&OS%g7lNEKN8u)g) z>i5$d1em%)_M?4yGrIEjlYIHjyAt=~efeg)YWCB71?0OT_hZj_8S+0T6pQ@S(D9F* zT_VToUB)yoF<}kVjZ~g!n}$VXFRXh?H64#!N-1y+5xTLa8FCG)y9uS4RXip+@7=l41KJsYWxWA-W^Z zMkA+T<0G*~)14vdBmPF?onfCNxkhuQA>XD$INyZS@(QUt{86(t(9DYXT zBQ=K(eyX#-P7eK`FZMB=L%jHVS<+3Ws0gg z-oasN;#h3by;QKeVCzNw6k~PXmbK56;Z)~w)y2yI=^?W6;H_)Yqhu97wg{wuMwD4? zNl4E;D7~@8EdU~K#c#BthYM{(zOGbK@zm#~3wf=W;dBGNK{aA6u#ulP} z*s(lii>m&YW5v`KS^da%dHoh+{rGmp*%ph>Z^p9DOYeq;)d+0yoOLu+?QE)^b^BMFZ;GEyUzRp+G1*WXhzrO? zL~bl#|H%dFtlq%3$%X2y$6^=d-s-IBVMpb{bv8z@htMn2X2rikxxB$8m$UOGw7@Dc z_B-?fwXOND2YO{%FTk!hy(?L>#}b%Njqkbn$(qlK?~?j`c3RB#wVG`cKkD~&nf+d~ zU*tzOJ63bBT59D?{OmQt25hsa$MFFxwCPGz4S*jts=3l{_mOA zL$KHVKQk?L{wwoOW!eERa9=Z)^Ui4eb2FA~&LsVdGgem4@clE*7pc!U{PWG16VGn? z$D41B|8w(ioShRt)%FjYU9Z7z`G?G|d0?mgBWE{GuostTdA02GX8~s?1xsVK)G2f-W;0Ty7-!r%n4Va$Y6~EvMn3~=5xR4E)mER@5V7vM)zo&B{ zeD$Y!SKxx@sv}^R>4NKOB4E$FaUp(u=BUGX2kUfMfAu%u)I2Bdb?9%N#C>{aSG_g-R^yCy)LAkRIO!@DFDeVT`3{2Os@z24Rr<%$!f zA9?BGA6hSz8%;F4d|1tE9ADJyZXHtYGEuSl&mk*75`O8lHH038spfB~za(knA zW%nq-^6X7^@>Rn|rIMdJFY$dw8Ed#U)qQ%9aoRn(OHtelR;z|}$;Fu=t2`50Vu=pV zjU~+f_)G+klDY z2Q!0bXD{X25)X5HZOuDEPVbtJB_1sK;hPVKoN4%11Z>TodR#hXepmTG#bZ`|dn#e8 zcU35N)6o46vN!(pqnt67fM#4yPq}q%xvxF-$7_y;JS6-Y| zux?jZSDbIZMqp|@KJ4ZuYice&MC$h0@pHE8jp@hYBmHi~(~oL?7P-+)>(`8Ixm9js ztX#RKjm$?44xjj$&JKwm;a=!AkCs%H-*osUYe7DF0KLN5F%%S57mJQP9Ymg4`Uhng za`MH--|XEjH=bzR%(P$asIzL|j=#b(9$hV%UmVPi(Z9RWjp!5C>8hEGP-vQPr`!*( zvAX6IJ^K3niTXO_dvVS6kGOjg>S?c8X5UCJC^mRJvhnTO$r>S_H;t3JV42a#7lzGW z#7W&yXvlwLqx9ZGe_ac2?^q)(lx4;$Uzo6sj?azrt!GWn!1HTPwWCS&^L~j^dI}BL zM>ZPoJuKF>@b|>D((+km!t#Yl+vtSca^HFywVm@(qige98B)Y>(hqLW zFe+B2c&Jx}!Dy;5w}+T^D+ZEE<-#yHX{g(442P8|4l2no1V$R}rjC*5P0K+iguB^d zmMl#XD6C-!PSLfEyO^6+rc@};!d`e0<;K1OPiGy@(4Dekf=au>AA$N|ZXB3jR;Dzl za6<$5Q{k~Efny)sL^0RPipeV73+-V=H#U+LHahC4hP=xnU{B@8sshE{yD?x$txTy= z&kHx;4wM_G3fY#^Fw}yfINl`tShPY)N8R{@Kg!GmhlSZ4pKYDDeV717Q3E?e0riz{kJ$i`ou<|2WZ8T&; zddrV-q2=Bmsbk2k{D@Yw4Kom@5@R-KxzHmcjE=cis_1vd7zUGXYuW< z{K&shZ=5MKx1Yj?cFOz-4pj@8;1@I-oeBZ%r-VbZW&T8mI)xeVC3Ac%y^yN3Im{-* zpD@+$^yaJMwegmTyjc(s8=a@^peuBmkppBGa0%%{)w#`~40Of400b1^LxBMlkiBw8 z;iob@#kC1>53IOH2Srp8(v`?mhEuv%?yEa36PW=pn~+OFD4>RdStz&y0kO8>o&zbp$F>P?3Tvx@9=**Zr2^x4*dOR=?X>0o(x4 z0}uvq0U!p@oLga(YV$2EyH6%@Oydyxxj-c}B@0Ef(3C&2+w31MyU$-8C}@U)O9T`kp};)q`c>oh zg=*GKJ4C4d7ku`onfg(vph<-+LOWzA=NDo%5k*-t0Db^Q067TLWmj2zwZ1iPji^r}M~|5W z^EUERZN<$eVNgax(venkeiX?>-}4NZD1Kt>^)Z-&GE;*l&KghqC?zR%vbqduu0{bUx5 zUAI=SJRZHL2;m2)dV|_F^AmAHC-el!DJt^J;OsAS8d=r)QoJPqIHEp@AN4Q`I;}rZ zu$&n!2x@D{H^2?`(kmgOILI}_Wnb2AxU0%Fa7BIwOX3T!xJ%Ob!M zHn4;XEExbxOu>?Ru*3r_+4-;cf1Bq5q5u$QfLI3L2kf(;Hk14l+|b%bJLDAPJEyRy zPdrC~%z_5%&_ypEg|4?rJ~%8Qdz`-0_~-%2vQt@A`L0hKp}(_en{~E3bdE5Mo8HP ziaewsAw>psVSyBKNb!R9(v=MA%~Oz(1i_Bm>}f}4^r|VMII=UkRkvS(1iz5%z=Us+1abXcttit z%DF6RW`RlJfbk0I@{en%pMI%uN4;_xOd`)OHVK`L17IO>QA?00GNRT@dmmhZSw&Ev`+duG_&0X z!r1>pB3h3UX&Tg@n(al*>&`kobO*!6143GleCeC0Ke5}RnAbXWBj^sHq=lNv8A-)Sr;;KFn*Tx{CioA`sGna1---yWR!eQM)rhNW0P`O^r%D z+Wv!iJyw5!?l9UJAf~lxl)ff1;O!wdB(X7#Ra_|apoWE4%$QyiA$#b-G9)oF{Z?^- z-h&z*?(&BLk9Or-JvS? zGX(G8zAiNQ(X!7gK%8LXB?%3B!3-Rl`C#Fd5CR5-(4Yqz7{Gfg8txdTFa3i25;Djq zg?#%UNFjz40x$qR5*pM&{x~k=%RxRV2(2O87&;~O^(2Ov&I0aff zg99y2fEL#PMHEsTfC4rr4JlKQ!bl1YkkG&in%MzuxuAhGSd0%XE`}C+;PxKWOB<%o z%C_vEZxbf0cnFlr^ZuLtC?UKej>!}QkRmVFXN zk_4OGYo#*5Awf$tG9 zd_@hn4@50$2ggBxgaTP8AcX>PD44}dIP(%V++N|csLiMeTJoPkK!G$AFhGF^2%sKb z;!q$91t%bYdU(l00WK7fLxCLB1A7+=*q|U11W*sG1QgtW0v!-QJ$6M5w|@v*)RGTE zPb&lU*p-0-Vki)Rf(EF^t`HRPKtTxzpdPzYP(TL-P9Ok1#GpVL3U)vMdO+9X2hsxT z6+n=XaiR(el7x&sE(>guA5lWagbgUjpn}>0E9pm=kTGHa3R0*L2L&-ycz}XDA)}KV zT7C}o>C~~nx?GVY$ZrT(U@I<(66EcXya8iG&_N3w{Dzl>q|m`G{kRPVdfz6DZ(NVO~0Wc{WvdX|>nsaEtfyTR6Hsp!s3xza4Qzy7|T& zwhCXS*`0p(eDZbc!AU3X;4Bl9Oh7Y}=cRwZ?)e3LZdg;BDbmdD)bsGsNN09pvK(XM z=;7XKPHv>CfT*90cmCSK|3y*hCz%^o>Hi3z1<*G)EYr^mPzdmHZuoBhCICG^Du4;V z9{`!TVXpoL0EJ!DyBBf*{s3?QMF19nXS=Ae7uNxKCX)K_v=itAKZXZaBYx5J z*(3nKV=Vf)Ny6y&a}x)E2mk><1^@>j1i%L%h42wSQqJ}m4)9-v3o0Z8G8h0J08ZrC zOELri8~`5x7XTSqZ5sgtzyrXEOt+0d0Kft80dN73k?(9DzyR<7Z~zbhZ~%M&Tmaw= z0B-*_fLfo3|k{kxAuvQ3~pwa|YZ%cMq zaxcqO`qnbhF6#5L2EZKvyIoYzGVSha&hk?LDFAN(1i*a&PJkD{qXN+1UH!5w2H*}r z2C@eL{JX0K%Z{L8+(i{Fn*l)gZqYJy?-ngX_ioWLbng}|L-%gcGIZ}2EkpNi&+^0F z)#7DAfY$(oyQsEhbufDyz!rc8z-aeR=SoZV^^}!X2-KjW232AU+fZ^Ms0=`6&|0x% zhC7(x!yse4O$wT61MqQAyl}eLE#`yNsGg|TE$^QRj&V4ai+fo^j(J}1N5C<)#l}5h z&vdWb>{9ZTz8A8K-qDHs8w+Se+ zkirBh7X*;P1u61C!H1L*NRfh$J5VSJS^UreEj1$Ms4ql9vN)7C0~r^RGa&IY2@pI8=E;rgCf*4o7m~6Yk;XMT((KwhS7F+Qt~=*~$fl&|KTjw-nkV z5lD{YTm~i$5$!2*08mN80N`<`WOpU*VUaCm-7MS5&`jl#%2=?D3#@y9fYzna0}(&Y zbD%~~37W|ZqS*TRfRtl0Ck>%dsVU7Dhe~vp;vVMTI@HZFout7iXIBau7 zAOnB{z>1RTocfD-oirKWvj4IKdY55)v(%HnrXZ-@rPh>`H@$Xi-D0oLVH_5=^0=PU zbEdYcG2Q($c+}#;G=?1X`wf#h@xHgaTI>b7Q>~VJhrdXDe+q+Sg1c079xm*?pfP!0oFdJ=&s8J1Glw-n;IrHUJ+n##O zTs_>sPFsg&5#_PPxem*x0`;LxZ?51wjpjSRN-juP~beNOWaYPPg zERpS=8*Sqa+N_(-VYM2OG8y?NK`X*Xa=X5{Gvw)mqsW$nq*G>3IXxzv!Go*2pnyYm zHe~ye$OJTTwPa%_xmvRiCi7Yj{AEegGrEO!_l3QvG}5nDFpJXxj2g!S#Jc4kW^ZB! zXA&`sUj8&1=_>}9#fp_D+}KSoQVqF#W+5?yQQ{crI%#uzsm|hbR~(3;{C9TH%O{uo zajD@uiro|cmrjK}zhgXZxtesG_LVVVjA!l%J$L$ABM#-@(u{<{p2>DNF=d8}lMLoxs?P#$ zd(-hL8~{`Z7z9q(hsI59g4BS`Q1n5hEcDBDJtvB})$y6nErM)5vGC51o7!ab2PNY8 zulky2;#vely!GIn^y}KB^uk%>kY#F4N5bk3yyH^!$QjGp=PUx^FK z22hgXMXabf$<29294;e42?r(Be<{mX)T3OiOo`ZE*g4q($6CRKfhc+7?vP0$e!rU}^nmPl!yhs+!0UID zKo#=@F4qa6iVM)ob$6f#Xe5OywnyK$IXOjDqDmtFD_q@6B0COB$5pc{eEdYx2^-~T z2Y;F|g%4~W4X8NZlc%bt$f) zM)lRs%wVwebi}j=`8DLIzR;N_=%>D8=;zH!c|*B-WUyYFu0RW~5^|hgn}t>j!C3DQ zbi39%15rXi@sAcu&Lc8pSkkC84)2RcJ8Gq$)El!~EOief5QAslB%U+lR;>qKp7fp~ zE<2vw&}Z`C8gjupZ(`(k)OGh)WN9?~XYv%f2hSdJW4$sE$tMf0Lo$&z=@kUAUNv6M^_&v`2O1pYrysn_&t0MH7VMgW&JoRC8+r5_z zpYf8iKEKNuhHL5|xiu5iMxG||b(e=EIHgVq?+q&gl ze_Sl%FMZa=5Q*h|brsoFai@ShYGHl7foH*dZ=o}iNnRo_m|U{UFGKGe!h^Vz)LXlq z&b3j|sj7KC@#X}pS1nXPQ`L0T2K(xFQm<&&Wa|KYe)q|=8NqTj+VXMP`@1tT zYiGhEi;NW}QFw0HrVZM6U$i#K{l|oOdAMVomlU)ONc%Z&xF{yISm8H%?&#pBH)HQ- z-Rz6GlOLR=DV1w^t6Kb7tluul@XcQ0)T~?zB@MUnipSHhv?6rrsosCDk{C#19eMuh zBRwJf;fK$|X5Xh}=nIb{=lWZ{%vi<8-m|Ata;VFcN2Q{Is3Q5p8px{?}rX&$dyV%-KEG`5xYW-&-=MG;>&+dOsP;PsjF@ ze+yh?l;{4!D!@;4uKhIUyT8x1S%Z9(S#Ye`J8~nO+hyN={3-eq`I?TI>j$^UVtK$D zPnDK?fj{CG+RSP2n3)SS@p7_9Hom{E&p!;l-P9#cg|$+?eFh(T9t~S2HA-TI%VAxK zim1NV@LhjimScOgr2g!yPo*@67Qd6-hvD7I)8}idbv!<#KXea6S1LTsCewMpx_-Lm zU+v>sYi2GtnfAn0mC#%y`|GZIqke^CbdPEL<3N5!@ow#45`|x1Zcql^KlA>%&GYdN z$?Grosi(d^`{M9~tAp-Z7WLY4JGFYdZu$@7!P_0=nVzsgx4ol6|2w+xdg8wsal?sG zN=vR~Z;A~Pq_wsU%be?LI5Z;I=a*&cdd!HHp0Mxr(LAg>jbTrh<G{co zG$N`*4|Z_$ysD_MdSwk?`Nz)5d%hmLe{B7?)+_#z{hq5gCn=lIYBV62Er9uPUONud zvJKp6PxK~gqP+8lmt~ci>C!8x`9;ZZiztdD#irbK7AZQxpg(sv71Cg8L7$DbkoVr? z|LwiCs_;T%_cdl^&wWT+Aw=n%OpnWOAtkMt`e2ON`(2HrQa&|D$5XC%#(#U_gyI@H z35!^D(JJUWitJK`Sv;Y6&;Ry6mVJvH?7^_Hf8|bqiLM2_G5B%6O+%o)(g?=jhTgz& z_|Sm!VU6HR@B3N zgf6`;T`Z}@Qp~bV96kR=aC`c_KsZr|*G5S9{74K?*1*(gU^2}+{b+madxt2vh1ATL zrUEbRUJ)dh9K&3H-`QMIpHd2Md_PF3KBsd-9#$pN&en>PahZEy*RVKyT~n0)Aq>Yp zmv6rlPqWIatjE}Hn6u8dw)`(%Q!&*`C3J1pOU1A?qx3aYd(3*u>7KzkB8pTorYASI zTSlNeF!Sc+hjBOY-!=!j!%xiOo*3=#=>5c;s3PyUG{D<<+HzdDQAR z{3t@wb=u0mxP_<+-S)a*{#f-wJBHkMbrprQVplUoCVu(z1H+so;x^CG!IZBz9waaY zG|1GpKVHk_JoCIMW=L5uh0JV#t(%1z|NZvUj%h~oiONXWsJPfDV?l7*jKx^WlNhR| zVX?=$oVrC^y@PRFPqH0S20wAkoB4%y4GMX_x<@%Gf}w=bqPumcJNqAX`<}l#V;3>4 zOm<#eO8g-e_!QxQXmPhrK8%^4M4zH3t;h-PG)Fl6itgU0qAItZRP}s9CBsBc#5Zo+%zpAuS^sf{y>YmiHHpm3Io7cGV}EIBQhRU5>6s6CuA&$1 zlUqU`%Zcx1>bIitCU7=Q8{~5bDaS0JPfRuKQe1H3k_85Qban1#TMv>j;aAb3BoQ1_ z{}VR!4s)1OOV1pR_-IBm@J;>4>xXg2Y@h9eh^{QEHxvC^KKUq6F{Rzx9K&niA$E!U zAjA{t6J2d&$T;Hnk%r-GVA9g3zoX<|ZgZ6^Hoo>TR5~Ae_vO`A=}j{2N|Fj04$^L~ z7=uyPdoS%PZ|zy);3wM68YcNO(Nuo#(Gn(Ohse+T}WF9c~lqb$`?fA z@^Pm!GVt;!Os1+?c8+1y>bZ@Ny?6VbPiF!VK8^rKbz`-E!#ab5`gfc`0fL`lTiN5H zpD)J8mGS$oIvjfUFO3~dnKf&OWo-9Y&qr8|YTthQ6MwtZh8n9F5Zz_LbTE4Q*17Bn zOylgrpz06)7Z1+r96nS{CSOPbJ#6*vLBo$vy@ug$xQJcEXI&2Hr)A*Ur`Kw0jzdnC z9gCqK1_VRgLLVAaEK`_E)m#K3? zw*1r06M&ht1XBfvw2rOmT>o-Uugr8nSw{PVN9a4|bhCEx5z24xZ49HUIpXb4 z9GzU>Z@j8L7j*TcW^S`l=+03JM4syiWAKcq^lK?ec?(@k^&daS5tr6*5)@lXnpD2- zFxBK_US{E9jOZRgS3CJJIh|K+UD?uRNu!?%k{WuA{DDP`q`i&zFNqgx$rNSyn2C4n zUuzBeh z?4t_=<8E;o?9g+zi}pORC$O@+Rrqg+FFFKIbKnN=DgQS9_Sum1JAJE;eE9p>*_BIN`$%ULe94TamG-M)?xh|HhvVlWCl1m( zVWXyuU3T~)0CSh3qRt3%Z{Zj~i1y-K9>*(XoUK5zR_h){)=^6nzD8cOq8_JiL{b4%{7 zuV%_P%o6V`{oL>CJIC7PS@`U|{l?_zB3v5zFN$r>kG_PZnp-=e*^fTDk!PDOh2!w% zMER=#uYHN0_B267jpd7=)GT2hE=Ox;yIXF&qaBoNPR1H_PQjA=5e&EZ4hE_QHXl?HN}>1TQ>)yzI?iqVPJaFN`im(r{N*fwJpg4CGdq z8~m#>4)Hr|$@HTSL^?~uOX;Sgb^gAtV=L+Y_F`I4&B&GJ&Y~EJ*H_$^5d{L~_`c-M zj2;wz{9B48w`<_BY|j;{Fb4V<21C{lO#g()Dxf#Ny5?2VkK^Zl8{S>5Ow!oVrW!&G{Lmcg(IX$E$&}x!x9M zcYZxkylvx!%3qzors)M=j#E8Q>XiNSF;dS8LOxWB+ekB-b5o2QDC<$^eLJijCs`=( zBER>6w=XM)x!4~);M_t|A~;BJj&OTUD?ELmiXOC(l*~N%RUYtXWbUS31!C9JT_ZYl zLnNA;Fsn{p{!Q0k-VP2Oq|l!^LnN7mUaoa$Zq}zP>m)tCn$X7@r~ZA#lj4g8x}SDL z=%=l}2Yo%x8157zdt8kwZbrKol}YCf3Nuy zuB$nRMj=O|w&~Zb+!`!<$gH-UqS@VleTn37hz<8PIxZIPyla^nX8nn>R^womfTR2} zUZnc*nM z1zX}=Y%yh?SGfaaWl_Q*a)ca#Y9EL-x$M`uoKV!3lI`x;Z03-Y*t4Ow0>L z$!uSblZQWwaAUk*ZO@9-61Gt#@l%X`OSPNJ(e+_Yla2bZh;v!;WdnQqzOLG2&`@sn zK%Vki09`F>Xl4ZA#a)zicuQ&^p_T5JKC+@^7Ox z=WjDD?NsbNOh{eOg_0pkrBliI_Ug^_}} z4u~ooV&nBr*1Kvi`R{(GQWsY1U`r-lJ#ck6P#MXk6XPybem0f$*`||AFy>8MpUqrt ziDL6x#N*cKqEW%bwleNY2Z^?{ma=@3yN#`-em$Sbyjm$0TNv9`1;pH=6%4|HfBP#~ z^}+6vNHnr?aqW{+DD*pZ%?ooYm*ziYsEhkDlB32|dhAEBxUM^Y(h+SGhS%4A!{AyJ z|K0Y}&a#^Kmjs6)1sz7}s)6!8RBJh!Hl)&Zhm+%Xvg~f#v}TEohUlYP>o}o5b0?GW znt2hVR4jf)-Bh_QaQ~S4#Qc3rkr1DXgCdFiQ<}pMkMI6qkxx3UOg3|gCKZE+Ag6Dy zKg=HfX|Z;dxc>7fgfo)YfL@Y&+x&P%U#baTwpU0X&b3D9VTUf?jL^k8SK(J{gF*qF z0Ua%V9RYK$sfKS20nS&-wY87+;@mWU<&kOA)HznC#%v7KeWtI994eVNairju;NuSD z;3W(mcx|?aP$ZWcHy+WhXYIXNFUi2fS6EVG%vWxqDI9;lLWpg`bM$4)aC2j?+s^k_ zdMroVWHoqBJBCUaE#l6%12FHy5q5rJ{*bqR_TH5u6}kzZoiokyM;Ed~Xkel~lsI{h zihuRq%-4;&v*aDlC`$*AFN@^)<4;@A&YP}P=pd{*>F3kCKZW`(V|~Uql?P8Yw)pd< z&)spDuIbnDmJNwDPXk@TI6Nh{jZax0wW^XUX7Hu{6BF0w-Wvq9?b%qT=JG|1YqQbm zx1}qw^`u(K^~kJ_8!r{4>r7TpVY(=$1!-am&d{%Rxm~WTdLD{ZCwSwMna%TT6p)Sfa8P z+-AM`J6awxdMR_hK@hF9$Y^A}@eMXiRdPUpOLRhtxLc3HkImUb#lc&*8cblafX+6`g?%e^lR8FTBU2J@Fpvx>Z8WC z)qvO+w<7*tFA;raYu7quz?ts2R%bc$t@%;W;}dz0kd12N->)aiWe1zoD-_zP=sShN zFw7rrxaV^h*gfRo8$WZyGx{)iKsg z7vvCwJ?*PT@%2`2cK1dZNwUy(ZH4c)_1jjuSNRmWq||~Zp&`cnBV!t=ouc_G7PV9M zJ!vekc*XGz?;+*GWLZ>woyO26_bY^f)61xzt+!I0z6!Tzjf->22@85yI8Pq>?eA4} z*L?12%z2fv;Ps$ZPsa6!^RwAyjduh1LqCOKouu63x>cA_M{=8W?q0vt=8?xRyl)}| zb!ll|yqlS|Z~2uN(*Nct7Zud;olQ-bDNVlD-kUXZo6WFhT0g_2-oe`1#rzre-FQT{ z364NY^DDfU>h#enx#D+&k{LegMt>kR{2e@FiTV@=S0PD%pm!)XJ@%L9Qv~5`(ygvY zEmzLRDte?PYjj^Z3&=Y}F5Of{J|w#vzGb5AP}OVk?@=1owNBr~Z?u@g|MBLYQKMv5 z6aB&?d_u!HGMAdyC&Ok=BFGPKZ^mD=;6}9gqfK!rT{)zF-!Nu;#r2q`bT@_3BJ;}) z>o-rwpO6lV%GdB^n`Nln7tnpK)muxrCtz3bzPYH`i;FDR3#F@BL2UAI`ARpSkHYp2 z8$F({zJeD{3hdbn6{F9Rt2if@vT+58hc#4cg8Af;QVIIkU@YIMMSE-S9Zdbw$6WBv z*`eOquJ_E(BlV&h2XFKAeD?|a@YH?uboqsBJJTCiS_#*<`rri&1x`_>C8A&PS_g0D z^t+MCp%^_1r!l(#u7p2@RaKZL4j#l+^B3HApGK>GdW%y+i;ne|3b{$=hTaKmSIOL@ zOfCOPIa`n6=Fk&%dpBh&JTH1}_fh=QT844*klO2fED8Cn_98er}V zST(b$Sgm&Fgz0-%UPo;!|JI`oevxCyBjbEGXchJr`&&%p$a3zKZ+h5F{$1Rf|CFMm z>{4yyqG$q1)NfY0h8L`xq6Smbm48U4O|@!IG6ad3^K*4LO`0F=O%u+i$U9OJy>p}x zs9n7t%YA!yo7+gG{yC~)>lf#T8?ovA_V;J19!ozCdHQWYR-y3@j9|!D@WVINyFS{J z#%rWm-V&~fzq-=CITI_Tw<45}rzKZc@Bba3=l2`7yrqSM5PcVK+E?rDXhM2TZ~xu! zuY=n@s87LPP=@tG#7g--jHDSmZFA?(OBc^H56%kWHR6*cHuArdIWbCA)_(gII;L=c z<(ZCs`nt@i|DBl`Gtxwz5EU-59{c^zv~bv6_e!y~xXiT^#&~A&`le>`i#TG>m=GgG2jR#2#$xfyW1_*#tGz4U5mD^Fd!=HxMi% z(kv_;wGFen2%#9IiJ{6z!^x<>Nq<)p^eVZQx%F{={?$rVfJEKUFR46iLM$xkf8{z+O? zT*9vv<@6P9)ou4P-jcM#hEZoOcl`ZAuZ;?BL zv3lHoxJ0?Im*LkR2|fwoOj3O|q}lgw_>@lcJC7VpBk*!+Uio@cz%}Z^CsaJU7fE*Y zPg&x7Vlk|W*)7Yl`7umzx6nyz=Y6-7lbMvSy+or+w&(?kV{Jqny&`QEC7!gq^4BdQ z1>MFz*gg$LxYq4-#wW7#T9ws%ovmU=9joR56MOP-J{8uf$pHIrIRVtcRenByeqK3N zCwag-w4?=c7CmS^$A4V9*dvpQ2 zUVU-er5Uq!JJJ?*ofMxV{JXaLgm%}lL9)8p_*f!w*@-Mi#Er zd_TR2Q2!X~b&nFlJ6E`=qWQLy6$Gm;$-+w#dOIpRz2zZ{*ktBc-6mW3tIzanRUG*a zA8-U;Uyb>&+<)(F-leI;0jqf?MeF35aJqb7!LH@ui2$+Pc#*^Cz@wpCpX3{qRz?D# z|BeA8iZ^OZ#m^eI)Gdn0y!W>%!!1McE9vl;3f%BVG`RP>UC0qAn5B@pR zB!5cn-0H;6X0yGMj$JS@oUG#(2+wTug7?N<{c@*NTgK&oWhbE%;Jau1gCkmFySHM0 z<+~605Y>ytw}d-qBE|P?t==s35a+Yf73$-{_RRc zrpreN)}%-Fkf-DGt@#{EXpg8nGNI%*i9gb1v<$CJM;}h(;Kbuv_@ru3?qcbg~hh`L|KYx-#LCS%wdVbA8wH+oCV9dO35%S zTtr@9_i&=Rt&-s=@PtaA>W-#ED1lI5Bx`7c#(QRpCsD(Lyu^!)Zgsp}F@}fFTjOTF zn93WZl{{W9a2dCk64;kH41aH?E9e`)oBLv%J*nkrP!b-cOZ8GuKemjSVa{wmf+Z4p zLDo`)VS7U6j%W;zj6ak8hVc8IS5j~qba&h>bvu>$->;489~jeh)Q2zX_&nFJ;(h(1 zxm-33Htx=Kg5r4&!QVYZM#_3v1?t|iMq8QLi}0W7Z}Xm(|33gnK)AnXEHJuu0|ac9 zMF?X$jbl8M;Q-MIe7Vu-1ypA)EpB`%+wCW8*B!YOW^iaV}H3h*DUYIw^%ng9!iA!)*V~<9{lQvzbPrFH{Io<}P!xGWz!RwpdQ?%R1N4=O&CZPQj6D+G zI}C4q7XE>Dg_w3KNJyFXpaD=wOf>ut$`!cZgP6EO~c(cK5E=++Dcaw`LEPPNWDN9^Dhsk`lPisK!vFD<_L?$_K^yxS`soV7kMO6)qLu^vSU0>~Qly;V#hl2zMMU6E}!M47@4gL2Yc#HlWr)*Q*zH z9*+neh57@t|AXGF7c`aGtq+#a&d>!}C$f0;Z$z2sGBlBJt#t5T-nHqtOD_Jq&efM* z{;v|@31}s;ElL+b|F$GWky@hg7`@VZ@M8RN9p{qEDdD`>F0Loh-A?t%8y zHjJn67OB$h0a1LA2RrOBS_h=Zz$W8MkA?OEor9iNhX*ZJ2du1G90dYk1>gytxvGw{mgrz$!+TxT(mJGUYWGpxs^s zRks(x)4fcKpnL?TB8O>lE`!1eT^$rriL5ao7yw-2-@!5ua?4zA4<#Srdrc+e+zvpv z?eRg?|swj(todc zeah3!JXb@K))|t-^;T=6-QHjlhVJ=w(Ja5Kgx0c9a1S6Ay9(MvL zejm1lE>0k|2%UlFPbU#haW^AUJ3!$!&6I}YuQY*Tbez7howLk)VodLzsJ^+O_GW>Lonm{(+f=1gd_Q!>FPgfmoEHO^p% z?+iV>PvAdy2IDEuv|V@YT4)G|86AW2btlH}Qp>s-iGDzn?Dc8VK^CXnK{=Wx&43QB z(3woAbEEO`XtWS1a*VtyB|K&mdJVq}MrG5a0@Moy%rtDB5ZyM`nCf4rEe3R9j7Vsp z%6R0uY4a9sda_bCRW$j(OPmPJuY6QbF=qxcX2;P+mC#>ljG}2C%1xy`C*rm z3Wh=ybO-B0C>*9?6UJS_a0SYt!3{G%KXX0@m({& zoCpj&8V|}pZXzhs`!|vG3eyqXRn7;REOR$Q|LIQJpA2&;p!+wRv4kBArK`k(uQa1< zlh9QPngb<~g0Lz;`wBfR(6)X6c=cBNZwfr|TF~Elm{;WF@YAnxjw2fvWID;`U`?0I zi7&}Bc&+Q)jMrvs0&l8!*`{g#6E6!l8`2|!5bjCcHPqXwQ+?g?Thn??-b`QFoD#%J zL7Fw~H9NK&4sutZU2~x?h2BmaHXLfpyrEG7iJ{PbmU)v9s4yL=p%4WDdv1Nxw{OQA zP$&byP@xj8v4US=xeq>gjpYh)xo97@bH;UsAPAY|+sxq;2K>_GtLwBp9OsML=*(L{mS}9(6pxW-IKEuu!GaEOV0n?p*vb`52+CT2#(q;@~e2g zyF&dIP3XtBn+@!~%Zev^-8N>5eO<9!QVV9OWVjRNefJneNmbPLyktTL$u2B>O|^{@ zKcmiiR@GHC*DP42ss%mwH%W_1K~+Ssh{#d?T;4I9k*VU%CYSl5BwiRo!9INbK1wZ~84-3aOQ=Vd0Wu{(?W_y#@V~ zq>S6PS`TI_MMdcYRdfly%Ia)+`hed=wwvg}Bp$EH;kZ!+>@d^lEu>2yUt1 z@1J%tEUZ*^D$ZAd--5J%(r|pYIL+g|Mpt1N$J?hzX-K<2k@Hh z58;9m9{7~CHUn5veqWI!o^Mp&DyvstqG*NSBjqWtRY5vX1sKbfQmIn*9ewhE^g9Jv zrpU~$%CRUo)B8D<^;e;eS>Y)BUECYE_i|6<)NE#}CN+D9`{B5_;tgwtXk@yHrcD`L zqEJgg&12f}_8`D<4m7!O<^~4B1W;EOiEX-QfVtru7}^MZBk$tVw&{S`hg+KtJ2<#m zyi+huRW(gv#i=Rpv?uO1h9|f>e6bdz{eDc z?+ArX{eb5PrVYeP%!lVY5}NNu6ooN>g7X2}M&)wH7Mm8OnP3W_cnzQr4!?*RQ|;gU|A+JtIWi=Z}i z;RQOoO7nRUcBKi`>dXgfbHTEXNlrz!r}tG=xnj!)tfH$PTGJG}Dk@G;)&>tlA><%B|4j|#BZufNov_9w8m|^ZLL!gAr;%yG-#q-w*50KSpvxeYo~5-$XWPpf?hu{C7jT@r4SJ9lLEC&T<~7AElJ@CThabdu z2))Fx!PO21301KB3C1RR0Xyjl;dI>$8mopg#_;EOgiam$R>cdVF|A%FK3by!-KMA` zfhZ|rBGEG>6jYJ6Eb47lwIy;#c!RgsiDav4i#~lvi;6qBW1V&gx7d!>qopO>9%SVF zG#;;|NxFttKF!EFkVQ=s<#vgkzH0*Rv)T*4n0Oa^MX5%$QO%{RF=&^m6G5ljkp2qj ze1pbsE^#+eyDGgd!tgQ9xEZ?M!OBfqjKJpmEON5AdQ!}U*ip4@TxFx6*EUQonzF(O*SDBdXTL<2HXLt4VTMt-oG_C38Pc)}3 zGd@5V3Ms!PW})tara#Ty&zs z6MJL9L9ZzW|AgLAy1A4jn!gmz4TjA|a`j?z^@=2($3xg`;XRoy{=yCkdsr4P;u9A| z`68Q;EN(GxZB%YM+=L6u$PMP!6+`bXyC`OM+da|<*Akh{JR0VEUm=eDWwN)3wv zHCh9(wfodK$E4y^d^+u|iAC3UY)JzZR(2Ljf+}DJsZtRn+XfqYkr-u(mnB7zFH177 zNKmpT2p*<&RN(q$S%7OiZ36kYe2vcY!ooZ#1Dg0`+DT|y_MU~{?aSQG$22Vm_PPIqQ{zZ10UGmq~Y;D0CzqVw&7D44&yXV9q+=_*m6 zKH7B6la$eq@hR=WaCl&wh8gPOLl24iSF?eE+Ewh!{|Ndg{XQ@K4$iAwp#di>B#`Ew zU}crK1|3@(jR=g2FA`dOkD5Az{xprD9S#Ki6$%T{q&L4=(psuYYjJ zjqTA)1^AuF#qb-fQr@=>W+X*x&h=y;gHV!uf^EXkV3DKB)ew4#;*zCHiLHQE@>E(@Y><`fQX`MKSS#Db=CyN)us#}! z$7b8-5@T%$z#7YC9K+bnqYuq3gfcYgOcdK4tPHjnuFvL!C?pWRDVNs&aa%}l*rv{=X}mv|#w?5xb7KcIrCgMo zGDX?fv*}Kpd($Xo%l|t={Ub#3k5r>&DBlwVNqzx-AC4<1G!}S<+sDm?k)K^Q;ky*-8!w7N zaB+5f_z#_(=U9K_IkX@P&(RNt4Ag3=fCxPbAGrF`nhSqnpWq-}6O7H`#?jH+xgXh80ygLz5vSInuclj$D~9x5p!5H$v=_V&5gl^C^>*xwfA;qINC}CJ&zZZp?XNN06+!SxN=goSvEF+V&pBX)$iAYV)J{(b6 z3?m>km!erVfzCkrk24~*kiMNs2QLNo=LDRnGm&wHu*)%_VXL$E7sGWQ z+4Tz{k-LnNZkF_7Tr^%cpQlW`j77i(9$H&lTfdmZ+oQbW?5Gxw4A5zkUKwYu_Is=I zB(vlmk4x_HO@%!pD|B2yZoYrEXwBA}rBbtTu-q)ecgw1IhT+w$kKN!`Y{Pczm9H!n zjNq0+q4EX15C4WgX>D1PzH#Mg-!aQP&wG|P0ezT%0{wFcU^)P@a6>u=Cp9j*D^q+? zSmgVdQ5afu-=Z2%4w5-#V2wnxJ^jX!TaGjuN1CFdh>h##?c&_^Hy%6a7_KP^@{+6( znV6F4pR3m@)23DN`hMNCisn`me+55PG`YTd2)!vj4WLJu6x0`aN)w^7x0)=F3{r(7jUhz@EscH(Gus;)$=fh zEsB^t#jVpwjMs4waOb$UgFbzCSi?WfeUAGg_cZq_+*i4;abM?tllwOJEcbh$@taZN zk|6yLmzLqL=`DLf_8!gJ;B_U~4MNz*9(OTC%QF0V7&jNc=W%%pHh6lKGDA9?vdAT z;2w(k{XXs|DbJtaKEpl5eS!NjcZvHo?l*wj|805Qn;p-n^f6141Ml4x3|{!Kca4nx zZdjj2IY~LUFZX@4sB2~NIHvBS@Y6TwRKheZJi*r^yX)7$^Yh%l;6A{82&|@$b3e^} zb}Wyhlt^@5@Hif~LY`*!;qk~mpO3rYUGIq}9Qc+-_(v+po@D#okt;)7yJalPXbDfa z!yH>paqE^8o19@5xkJ2Zjp%P&leo!sX#DVD?s~APZsu;|PIIr}&eC}mKhC`)#hIu! z{$f}gzlFNDLb|2B)x;>)eRwaWpWcOfRl?dhvfopkbW7u_Bi6pB!~d)Qb-bQMEL%93^z4LFL%KK8yV%w~Njd$coprC< zEbX;Ej%ic7`HcQ=QGK0VRNdhQ_LkA+^_uH;A_`+__HG1VOjWmX?6iQ^^WnKEVeO;; zyQqCi>iG^BeiGPzPf)0SGN*DpLhn2cV*j_a!=k2$pZdhl{{yAT)t9!h8?t%|qw8?~ z*E@z<5Y$tVop_BlVi#n(60{=<%fO4ZlCSey06m<)0JZFMM?>s=XN5{(h^b~qn?ek6O*4);@8!INRn zB;02!Ib0uiHTu;L;s~z8IY--X9*mFj+G?!BQF|TL;mDF2wVXeZ*H)Lj*==m!f4)A? zHJZ<;NnX{C(2nM_>-JuGPiRM@Im|s1)`JBa$r!IBKMVbQFF99I=gj{U&6`W6IgK7u zsca>)J20pxJXYBp+k>xqzx;XbPq=@}{RQ_u?h5yRa{o8?Ly*5Xt!aP>tD=9(_Aan} z8Qlln)IDnJdrb*`5`^<2#~y?D^*|7p;rYy4mYY;;yCAmNw@lRsQafVlc2km0j~$GejOQXB;I0Fi!WrBc9mrC+Dl9;h zPCG`YVUcflnsoLt&EOiqCA^C#czqE6E;{H&2N<(&8OA}k7Koo0{mC+K7Ya6Cp7i5W z(_Yex!smse&UTmCPyR2q`%AVX72H~eQ}jf;IP`|-RPfAw$$Mb8%6@c(?btVoBV3?) zW~O6%jB{y*wPvUw>BvN#Px`tzO#&0VDR9z(M>cR0;pPUNOt{%@UtELF7H){rg6r(2 zi?=r0Ep`VsNsK=F(f4sj;}xyb>oC)^blZs8b@8D^GPLaVr)1$n7{m9RQKF$a&!JlR zkRX35iUm6L1sp{CJls4f$|d7DeE35+ru!i=eEfQlhnOuap zh(oeSaWA!aad0wR@F3FAt!O=jQpsdj=F+SE(1mu+lQ6CdHaKo#n_CDyYyjSOMr-SQ z8K3wv%`u*yqfrg{pUswt5Yw|X#rw+Wvgb5k;rp`Z5I^|Vf?}#L5%C%HR#;I(4tk*dPA?e&dslJ$-41M1bc?QO1KD8dc_@v-4yY% zOCKe5ZqK@Z8~rjK+f-Yugt~5|E%vkZEyAow*K$g)lAhGOZ4}0yK#%#9qZspSo#A#Q zoXwrl+&OiRhK+1*>&Pin=Lfqob&_@j$JF!M;%Kp_Y+D>YguH{2$XPy;r=R8?ZZsmpNF$m;&fxlI`SC$L3^B`p2J)i$}r5n9p$wb8tm38X8MoZH&c`1jB zUdJh*YeT6rF&u-N3z^phu%-#Xx0NaOR2H^hI(7cysRIDtmR72l%J6~R z6IsYy=u)}QJ{!lyEX2M!&c%uvGBykj!l`|j<*^gYdb0y4ffb0sJp89m9RQ*q=wdhz zX({Pqj$+4co#rRiX{_A>^qcEBo^U9W78tMzV>J2>P!4CG#nRpldYwTqSRy@4-30O% z3_6i4enygRkxt-7Jb6-t9iFVNcJet;~uTOo2T|L63^DWOpyND|g z^g=tM$8s#lVJ-llUO{vQUZ@d0mSLga?M3#J$KtVYLeK!a$piEX0ovGgRyv+nGYgX9 z`=~U0Uy%yt-;7*&=X7CeetxPj?L-Gp3BqK%bQ7;%8{OEW|o-=9Oap=Hg!I3q2s=&7T)Qc9ThC$x2w{yG>B z(JJGhui5+>jMm2Ffh%#}jU}_BlUr98NwSP=G?nZ}@w~Es5QHjvYbFKd+t`Vi#Gc$E zn>?;YiC<6aBx*e3Tu?8`*yDp|~MgC_PE{PU0$ zBWf3CXM+U&@~ceQ4SfINtef!e%BxLa_-JAOP@(GsOmQ7(n=lspR_^X$S&hQzz33oj zKr@~U5!OT{+y|H#4E-J9J|&1JSq02g%74dj_)S(Re~#@w#_Hx%Y?qR^AItpc{`C9S zGrtis@8d$bQs`QQ5zdFf3crne4V#yrD_5@q`lCWqzcwn2%EmXYkr)#7ZLJW@=+y=) zoaQ!w0yr&&IjT_S(lxz?UmDH)t~Xa8UNKH2QKb1~=g=S{)X`(hd5gv~4hZes) zSl%tLmqk%iFu#swOjae{6eYV*y&-7bF`;YnJvZ(Wm;XqJrl+T!YB z&E_Xs2U-*SWm)=~UM%WglVrBkfY)^0rWf^zqB8dHP|7q3+sh@geR)nr5PY1OEU zl0c{F+*wVO0T15`zPS1_&7X`6X;y{IZcoQ zbb9uZ3)ktHNhi=bC6hfX$`kvm$(kPfpyz&`dmqk9bo>4^nkFE`zJ)8^v4yGo=`MY` zYmWrMK^4}RM^1}$*FN3ZXOs@Qt8~^C=5Rtk43xmH()=vIp?d^{5=#yVIF?>?MS*c7 zL#m5HtM1fW1=G9EGYh0a1QDp_gp_p2SlTd|8c$ajcpxb6U#}k!x3x>->*cau z$3z3=kftnO`XO!=EFR4Mbra~6JHYNa!`;iho_izrF!wg@QLr^JyFQ(U8m3AbiF19eJJ66kaLa!Bc0TF`WPdoh$m7P2Xxmj!4dyQ0ZCSck&dso^_dl*f{Y!V0(DPz*=WhEJI&zIA7TgSKhuGq-B%)2=^K8OR4$bvFFAcjnZM~7?RVF zgY2bdk~odsAD$wp483nS-QHm6z8A1j;P?SHC!OZaNaa~iXA?}$(n$tS#=)(%B<59* zFV<733!|S%BAe>|*K~zBy%mlc$#+Fh%H1Re_e69cy*J6(cQU@1dh%TSb8#ujB@b*d zV%}uqkw45m$^8=d8{y3IRCe0l5N(ukamrz?!=27wVchdb%KT0*S${NIa1S__%eMT( zwe4e;59j?UOx-|&r@R6ZPbHF%-r&*T1GjAXu1gijGx6SP?EpnG68r%UGfQoPxbhGaEk}&+SFpHRyQn>22v3O_@&- zk}a-_)0mfw(IjkW?mEyS$x5$37$)pnw1Vjr%#Vlk{ZO$)3Pjh8f>6*4Zn@Yh-&!yV z(6oE5;*oU|j0{!7%rQAt0-?UtBbq8HqH%iOY#0w8 za)}9+Ruc~92F6tFcS)3)|vK43@~`*IB2v&e{# zX-?fKdtMoKL$q4jt=vYbCdbR{vr$Soc`TJ42-k+mwvi^Cb25~FZubJ4N=DZjC$KCp ziu|v4kX9u{n>te`_nlN4PuW#~jJwyQ|S z9YxF3nx+QG_Azc9`n>PO)%Y;UN>dpGK#e9%FiX3>teN$?L4zhrN1U5pGqY^< zGFlAjk(WKN{*d0%i~9=A13;ih3%ceMEK@Ut!U07G%fha?CP@flXqo{O)IT>)Nba4Q zdidcp3k&L!rn^hsLQ#Rn0R9Vhab1@bwx)xg<#5Pi~8)$<@)<4q2 zgL0IRl!M(S>e2tFgGVA?D_Ep;Mc0>`_l$ze|Y-@|TM~M#k~_Yk8|fi-IwhwI9k` z9$M6etiGD$j&iqbzk>B1m@{@2>#>aZiXddtRQfooj)@|FdMCmsF}!S@uH8d-wk$S`4(V;3moWME9*)kEY2Kqu6c@LY<@?lD6<_6lzN3fNo+iS;l zlgs)o_CufkHQfEF?1nocHNu=cF9(=kozM}|{dMMudCPV@yJyI;Q6Qx`>hvf)%6u`u zzatZWt6o`gryTTf=(1tI6+Iuy>oWQ`^3&YUJ@V>$YIflBHTZ9G`F`wShE&C{)5y*< zch1v$6N408W@uy$>a;W0Qag9y?Af-$E{*m0>|Avp$oKsueTT&NbB23(JMYgF*}eB? z2Y&CxCzQ+R6KQN*QA8vkI{h#A#^9{pz2RCoJA~)9T-+a9L%U$xddi=a=vpfrvAPD2 z(heNi-p`cFgQsJB_E@o!{=xLH$0OGplkcTVdtoM#z7kS;jOV45B4@@Qv@~p6<@+xqsi@sbO>sBafjzObaep)ZWCq&-Nl@A8T( z+x9-P+{$(?3}*h5J+@(qo)<#xaVz(F?gFmlll7GC-K-gePNqBu(>C6vM*DQ)K>OBq z4E&4GpR|?oB~6Svl5G9w(>}C6+>zH`N6*sfLz?a$S}hc0NtbogD&Ap8ifbz+N0v=Z zN4lvo?b80W4|0$Hb9>l!5T{qm@0KfgHzTpm9z3X~=!I^$5sIBH8kGK$S@_jg(hlFT zr(RbWMG>k#rW&%VZRF^Pi9|hrV08VBaoXZ!tfb$BH?uywtlnVu#DlxRWCz~TDEM*S z$2`>XmB;9E9%GQq<+0B! zb=r(FY@@xd>ZEO?`*n;z7&HDVa42ynGB)j&D;F}p#Jw>D{fl+!Jl zHMb#qvrs&V$LM>5XfmPKW-jilFX0w|xB}`QzIbN)S6{kJi~AhQEvLr)Ko$$SAC8+l z;21jriE<_GGyO2>E+GO?Vpuv2y1P}@b@>kzO;dg<%0$P<<*I;Fw0fmCn-ood8M^3M z45q_6S}FguLUUS#)WFR7@mgac-?~0sgf1Zo9X8vfpq*E61dWnqYoiTNT|{*5Aau}7 z%+O^H*H7G;GJc<}=+W&pw;>P%VQUlj`Bb_SVQ8(jGCBJa{GCTXL%`Q zHoa6HBOwtaw(MT26hB%BXXMKE z0{2?BTg;qoD}`%>A$~Y>s&i&84mf-24cyzf^VoCTJwDx$gBYJ~jOxgNGXCddsBn%U zd_%GWq`suk-3`0Gw=KQW--uWt3CYlYjqTFktgU>2TSd9poyMJ|3sgrVd?OY{zShN{ zB#D}#XRvmDAe99_+zIjv&AJN^&g}sLqA_@*Wmkf ztVui@Dzm)+|AtN1S_6nKIaB+l9J+aet+RH*w>N1J|9Q*D%1Sz-;{ zVMsLEA+#I*v=85{QD}d7;(0@T9Qg-W5g84R$Q z3K3qj=<`%0m|So#askcRjn!}%nVxSyJ_Hp=TDCBp7?iBZY;hBGW#9fFT))<$Q+brA zvl|El_p(ajH@^7>RrT$+_n)(#yGb)s?^UFd1`-25HLm_++Lu2K@Xm1yY+dSXDM6S> zsS`?d5C$X;q)u<343}Ius~W;rRYQ40;qA7sDMUMQ;+_#WTp*w%eM;7WjDYN>ZcD#d zzo-7^FjgaGD&5sbO*`2R$Syjs|H*a?fA1vS$LEIr)E?H!79!uuwh5e3MD!Uz=$BN8Av531HO;E6d zVTZ^kWm|rqM0B-hs9;?8z*v@Uq=$4vCS>`;l4Y=R4NH229%S@BD{~*6={dgK4jU!J zMyfkvk2bw-9w7hpzW4Q1W5ZA%OCUPGu`vRa`QZ<<7HK1fj;@~}$8u}Y+*HT8J1_%7 zE89S_S!(I*xIq$Hy+}GEQ8V#v1%oU`ZW9|@OuAG?oI~oxbK&Y0u&L3w7eU7$AKn*~ z>G8K-3{yeE#-&L;!=$<=M7Ba@Sy1^p&+8aQBlrT#Rzl>V%c=Uy=x`l(``)O~XnX1L zwV~10UM|M91a?{6j5pD>aj1QOiFP9#PJ46SI0TON)Tnk2r(Ne58UQ~+*ulB(bmO7q zomUH1K`jNPvk9O8_bFcHZ&?v!VObKNR||?#P~lcT4VMG(@8b!7%Pedb^h@ZtR7dEF zt@wT1oA*lHURvNXr0zsHEWDuLwX$=ddpF^$!(yIHN={Ed{Z}F`XpSX*J()@zcH2?O z^D#|$uvNK1SLv`c?R5Hdk@!cydH>shAW}k~%jbYPa!8<|`Isg=`WOd2C7}7NkCAW%+xBzk?ng3$X(j`GVlo49 zbcqrvr0d^>bX8b>y<^1399sX!E1+xH$29!Vq{&`F*K>JvO^NU|(Uo3CaDleDbp67$ z(e>{rT~S_pfieg)3D(gN>z{w?{fTsr3U68uyb#irt=df5n6P_@n13-&59HCcyVA#3 z0Iq&Y4WwiwtpgpFvN7FGzs-UM;XMn9xe+$ zO3IC4JrLzvsnQkUkKtTam-)n}DfH3mG|g^ugb8yn!Ab`g2q}`Vn;v@?l=Lidzf5y0 zcxp`+T-I&1F4~y5$+ulWA~hn5f2j~jSSNbuRi?Y?HGxhTH$-oRhqj>t4aC$_qR9He z>??{}qB13jKV%L{h3!6xLClyo%3Bs>CGp20juy>(avP1jj>5ljWX)e0boPXGr;BTI z4`KfAF@Mzx9jK}S^gp*d#1B^fwDOZ#bix<~2*yr)|_E*l+ zaMlkB)wS{SLX@+D?1h&fl%oK%gog%=D!!S{x@K5W3|Cm4KR-GtJDF7;bo|=~aAdP{WT^(vz&hCHZau(-uio$jlNk5!4 zcx`gG&hq@wId~v@G!kbI0{D6M%j_h>gjbU^gVI@=LokjoWdn-Pti|C}uYzn|8iqrx z{n9lH>GPvB*{i?~^Zve9&ii1%77iJmiFIwPf5fBHbv!x+CyZV|ow^71Kb8HlKxahJ znOlhrRB6`nGZ?ux7$2tbDu}?RXrmSak-}{2n&sdRP=Dm;ZO&H{q?y7TbI@)|< zJM9IR2BQn$?OKCfSNTHat9#O7^A|5}jaOt0{z>R3PsF3;Cqs`e<^oK?KMejNQ6j&7 zFIn3!zBGb>MD_s!M}nW9_zDG;=!*=ZOAPXZh|P@mBlv+JPASr+Ad141()@!DZiTD* zF;~9jW=~T*z||HOsZaQ}VIJV1e$b6Q93e8t$sT#(O2Ti*UqY#iIbwg!`pT|2vLQ$s zY97XxGurw#d?{r3GQ;f)M*vo-d|{p2*q%#qT7LK+V8;JW{2z3^SHwZB>bBsosuewB zs?}P9ucw)N;%O`VtcCl-+jBS>lRZdt&>iNEbGL90bMM4?c9}$Ssc}1Hir_K^n0 zD3=@iF;Co2R3gtfsFs4Mm_RVNag7=2+%n8hxd59GzM6P@%DwzShtm%8w}Y(a~j zOQR<+>SxCDeu}NX!WKnY3(>Ot7isb`#{W&0$V}JOEejyCDR`N&BNZfjE}kbjMYe%p zfDm9Vv>Bg_EBri@w9Pny+LrBMxgJ^f?DX1L2F@XZUNp2tKJAkR-Qje7N;A8l-aL8o zlqktR13lDJf_l?+vG?yfw-Y-6J0ChF8N`%M@v|uhr)^$jD<)ku?esVfu1_&dM{>AU z8S{vAWChd54A6bd#5WqX8N|akaaha3+|B!af9jAR5>s$kj>F5L(H91lu=zqw9b~6H%zimfbjd`_V?@XshgkK`|w7Wk8-}@A$B4N>Q%J ziG!uUGkNKHO}5(QsnzM})uXFZ(A^Sr#SQ%@h?|$z7ZhfY1E});Rsw}!0uYC$d^h#- zT8)=fOX8APJbYJk+}pBQfO6jLXC_DGlyoUC=MTyZoqsll#^ZUCfoE-$z=b?UT*v@< zERVFE93DKI20axU=y143=)qw>6aa{c5y#4U=$ZOWRqBgot`spZ)l;?)Pl(EwS*VuE zc5#0#iA%C*zPvuhu%@BtC4MV5cpSQ};&F~a&JpuvebY8t)R|?9eM$W$Li0=p&~S%- zEfnSUUsAu;|D%ZTyl-!@1SJSG8QQ1wZ#m&AGFkZA=~6KwE%nyKPsV;fllzA3^uEmd zhUOw>-@cxcGb^I+q219oQ}S3^4nZ-Ni0h;C2ASL~a5v{m-6H8Mx5HWL0~sBwE0{67 z)5e;Ns~_UYBA+~z5ynsOvZN?Q*DY$QXb419ct;cz{$|nOC0QuJF_Gd&vQqjSukeCX zbwpDaWJxHMOO`m7I+odOE;E<60aAPW?kKxRs6EslB!~=hu8pPn$E0!@?2VGbaB+EZ zV&uwrPTZ#{a>=z+BANyeNpL4zYxGh^H%xH{0J~f+r5s)VKXvZ{<;Ha#2-bV`{{SeU zP^d;X8t4WZK>yfHHX4nlNH)cmD9UO}vMtJ%Vv}|(k7?@@lW{y=)A6@y$Bw0Vl8if( zWD+T}lZiBOoE^oRvl(;tY!WNGo8y%?yYW~PXL3yMIf=(Pv)P$wcK3K=YVUoo{wQ># zDJ5rypF&lkQ1AZUefPe1-@WRH^8{bEGgjfA^;fhNDanU_%crbXfh6#6l`la?b5a4_ zS6Rm6u_!;ZXc)R2iK~&6e{mn!;V_!$+q_=QqKKF%;z|@dLKC=*gT+YbMmHZ@7r=4q zD0*O{ESp33yG(=UR}ax9v{!oSAakg@Ui4&g1ByTpY7 zcd+55$6G)ZYZ4@eXP`jP`PMQzWc=QmLX|rBBTl)E<1-A>Hhc+K%Ni{OxvYT_)!rB# z^j<}G9Muqsf@3xe-1TzjAxdOwd2T=h7`tWbSD#7q~y%(`l(&6*m|Q$u1Y7}15$W=)LgP7Inp^W^-Pv`!SOxbK+W zLFeJOnCKU{8L+cRg&rJf^%7-GJ$7`FksV^z+RW60*v7z^g+XtU=SCn1lrg?QKBzn z<6k(ok3-=x$MzAlzxa1CvL|(gKelIaE1Zx+XFK~m#hmZ$H##a~jqXXk;g9X(P=3s@ zeFWu8ul2}I6L^e+!3fCq8Py{h4c6v{ZM3G}#29YeiXqP_C1p-FR_x0D-ki3osz=p| zy_4zCMfTZ*u*Nbiy&-PdV3gfT6rDbZi{08`{kv7&mgnYVTVDx-7FI(%Ru6LbH1+6F z6+ZSDZDWXy>GxHWoJ{~xK(4=n-^l<5J4~{f#F$ZK@wlT2l6D7&-aqUWCR@w!!va3t zerr6+@DmT_N#-E4A2UYykC>D6_4`Wwt-6tk&Txy~WB~s=$8;#A1V8S=b?aN<$f5kp zgL!obcXK}u9@_8ZRbfx<%iZza&jdfm^g;vZcSks)Nj-O()fT-ajvdM`J(y$TxvBdx zYaD+SalRF7$Hig{FjI5(O<@Hy^pEgt{gv)5k`|U&4ysIF_9a|RxR!CigzQp=?^8Rv{ugYtv9@<;&ju!?!wzI12gWHZIkL{=a&gfWan!x+e7>|w0*sz9j zoEN^q<1hUXk03%&^uv}xrk|B84G3XL$5h#t=Z_ZQbVrej@)`Z>l4eO4WNA$0+yE*p##v72C2U`GI)} z3=#NBz93mbJl+%6UYGZ;`{k;MRy)n?nqEIl;_d5ZcFC@*ih2@;GK6O-Hv|;-Yo6P(phZkHbF?*%rkL2D2P-|Rr=|KA*yo{W6_!-*-H0} zWW~3C18fnK9vF`4UL7Z`piSOc$p&vg1W4E|1YP4U>86Uw&n_W>G6m#G; zYkz`ymOpX=gK)M*5x>Wu?22!KuPNv;&ZibBfyV9ey>4q5so&|cN^;^BW$6oDF7qK! zK|bTvsiT_{qAF2wqTlN{^3-y_zkudgZFO_C_8%}<^&=QtD`KeaUhU`<*5=e`PIfxI z{?WRTZylRrfnuw*+Uole^dHCSP?#iG2w}5%)v7_1PMwcZF~0hR8e82ogqvouXznrP z?gw20a7FViy9v;0Mf18@gl~eRitJz(@7s-o6wN8Az^5W;g5gbIl8D3?&)_dk{J5xn zS43)y+t|>FkI=A2=Op~T#Ucb^aa=5JyF3U>ZUrw-7!`NI8}Gam*~+50DNS9k`fKKJ za49`|7Wus+!awbm2qlJxtcBuT#~NvXC!40l!dAIf@B_%hRH zTv0QYt%A8SO;zdf$7NlAzgzZHcMtIBl6N;oQ$ZHoAP-Zl^u2i10Xg`^E+&K6!`yJZgK**8SIgrNu|{tDHGWp4~kd64XVBB}O| zBrn5$_7dYsh7_b=9Aa|n_e1=9ix~V=!QTxrEJias#hny4u+48oZvv2Fb=1Lv?(-e@ z+)9qD+nCiI`n*R36>ApzaYe0S+|uTjbj*n6M)S?Th+diS2^KLzH25)ENr_Y}on*R> zN`3v*dYv8qW1YpfO0uEb)^ix!))cST{V(h5$JlqWR3~B+zl10Bm|cxN!ag2CwmXn* z{tHp8{SjtIA5YHIbIaL{u@bWh1zbahcAg7|tObQdLMV#gHZm3B3guT*a5HZ65b@d z{Z;WRu%8ig7MJX~d7d#WW~7YA#49}d|8kIRV<$-BH5M~3@pKPZQEG=Lb-)~~nA;6L zkE>=3cT<=EKk07aA>lnN&K9GPInYDc@QeOy!SkH}FCR~Txq9;utjGKs22WRUF*>j% zBV3!&UO0>_h$&gXEcA)J;6rJ#dZ9W>A%7h~W$-E&eNf@h;cN}@<9qTsC_WHyV9awk z;Ds0L%8))e_p0PGu`n^79PXr6PsS3z3wm+7=sJ!IA8DO<2g^#F-rJj|cF!Ho|DU3B z5}O#QFGdWw<}k^>&U2ass6COy$&TnB@gycPF@9V^#LDmo5li#t?5pBUYzcWh&UB&* znB#Hfsy|B~!EL4LZTOJB2K_r$0-$z?KJ8b|{Ds4G-61|a_^SAj-qsivAY7}A$CvXN zl@Z5d(8Zxjgi3N8uKC%W52%#*8t^ZpgyOkF@G+~Z;-SXow9a^JERB4y&R7XnWePzy zeRKn`l0kpqu|x&T)gPt9v$V<2;5sKMm#8JSaxD9xEKXI3tjcbY$ReYjJ3`%ODw(@Q zQ4-&ALZR|Ht`|u2JEA0uZ$BZ5e1COX-XC~X@;<7ho;T+BkX>L;8dKyymR)X7O3M9| za9X$@ZL@uISHA{gKQeuF`%pINi0XV#97?UlY!Y5MQ*d4j!|M=;5c^O7b9hx&({bQe zipL%cd`iFoka2nB{jJ-_y|i&Oyi{5W)*EG<1C{(7T|Z)m35iJ2GAUStmi>u@7r{#< zX^JfAh?@>CkPO?pf#AXcMA0f1EnWWcnERkGzbC+BS@2lBQp^upt|SQ!Y9dI)wh`#1 zI68bWbt7isq}CyxmlQcf2!PyXAOf&)#P}V5wfZ0OvWD0@{IZ4#_q;-j_(p| z#_}-+{C$J)HsQUm5sydGAwCIyc+OuNM&{yr4x#ifH+>8*qcCym{v z&sJ($Ho-(rxU^k%PKueMu&&Egotj`sqZV$f5ik5?M&$c z6U6r!*z~j5szr5-AJ zr$Of>aMHS++k5+>@}V%a#g{3YiBup^4;+BkgfA^Oh6U+-8oiXhzvETtkC^W>rk02~ zKjSHek41ZBlKTDr*QoEu!eW_J{!fx$Z-1?HbutG`yrkCQ`FAO^%+~mf+)Jj5$>QnTZ=I)&pu!fWTTt`- zLkYCZ09OPDTV!nhUY-OD&{EMM2~1Zmf!mp^l?P-#M?z# z63?~pH$9msC*A>0P@4CTy+*tr(+fPj9P9?ZV2(~oj7SPCxuGw}Xmq$P{zcyzByx`h zkG0MvoWZ1wyzy1^`;mU&m{Kv)5gbnru4Q;kz9X2Ffs3z^40J~&08$Un_KR6ABb*=kSaseRZ7f7)SYRv+MvBAskfjisXFhUQhZqm!8fhO)53yMgk}-d^ zbj+V$o)i2bmK`!4@rR`qKnxa_H z9-Z#D3&w2kwhcEov9*0$$0{wIXacEDiBwX>ZCN2zrzX)7l^P-~Dr#X$)htb)lO;_z zm5u?enRQvFrYW~HT{HBYBwE_PpE$C4{OGjoz*{SFbK}gJUTss6ez=7sqHPgtt0v<6 zYFG6%i-C7_ESQFUge8#<&fLrL?O~ z!?9~cZ&sSW^r&{cMB|pI*I|t z@h$nevtj7;Fgt22Xc~(ZV^P%4r$H0FeAB5eP0>mN5coAfq%lDYo?&U_$$I72O4Vvf zugtlPcML-+Ub1qPc~6@4iZvVXsGX& zg3bv%km#f6{Ejr_9X92VLFXt&Ar8dg?~cx2%b@eQTcPvfnDV@zAaAm~^QiaN_L1VZ zvUPeKBa-t~%PiJq5woEUhT0N=5(NJ*KGzs&0Kth4bg zPRFn;Pe4yG);n7+@0oFm-UTvne?Zk429ToBh0+2Jrery18J;C~CY%{ouR^+H*KDsT z0%>o4lOZjO^IKcH*xw+zrKgh7yCu%Q>fP&2+^A&G+(s;C_pKmEMV z_kqc)!_WXnqW+j9QTR|LVi0u;zJZV68+^=EDLh+Lj-1-CO0zC4Hk{`xGh%IrsyMd` z$7xX_@ryda50TxHC|<}Ey)o&R>x)XGMhlI(8K=J75|j-5F1{uhb}{7?voFg^7Zagw zQLln5e@#&T(di`-Sd3Hl&*wc$Do*Akg=pPZPm+^e%qog$%JS7I7c{ygdbM!BKj!ko zc-3sp@j#YF`1ctd-mg8hLJUUtrPOM3V!uwBu$x)iwtjzzLaRI+xyb{if7?g0-UcL( zH2r)SQTt~P13|#rFsX9D+A%>J#k_q%KG~TTc8fgSTvsYJai+p17QU*>Uqnd%1*K2o^-t(+*Ia#hX;y45HvkUJ1l^(Q zI3MeZlZ|j}SrPtk7IA)x<#7h>))`=;eIJ0h5(LkRWoaC-1?%aFu0~9a8vWaka=88y z;rL4=4*@zYU5{_LdJbWIPLglbJO$*p(GnMDd`N*fvN+v2FD1&I2!iVKx+7>pS(s)O z9=8&;!3ME@?2UahEf#lyVUGX8j!V>YW8In>l90T@p1GZ25@Ay%`eq5;*UmcnLzp>^2%&ijeo1?pmF0rn1^X9EmR0ws&sy{|-rgTL@ zw7pS^16`_}NPai{2vj(<_tO>UxiXkdsD^Jf7SzTx;5#>4A`KYE{5_L#7~gcuP>vLY zTL6C)tH(m?Lad)i~Q#+{gaDOepycIWMle>pQ75IF$ zExwyof_yi1XNuG+<9BLgVFW56AraoV3_LYyf&+XFeEXhoYPd zQNlf`VC$k>RamA|22deL){9n93pb6VB~y{jT>#B z92eIMOsO!NOC)$MN+Pq*reoSB_(GB3!aImMY-|hZ(adP)}) z2@lwPWrcoITs*O+dv!Wnc?M(HBvi@uCf5433bHoQEIXik-8qv=vgpoFl8e)e>P(H! zt~92)wcntMOo`EN5YcH{PPb7aIil-sk=<8v%_Sj}#Urd{!4j*VvR0>Vxq>?fx$I#z z%{4~Q!@|FttCkE^&Q*%$Ge*%cONIzT$=sudMQhJ+Ch{P@AjP&(DwlLgbZeW3$2Bgm z{r%?A_F0e;1SK8o+gLcGPVM!=b0xGD2)mk0nrPQtl^V?&9mCt_p3Nl_vWKI0Ho%bwjqAJ3o3IF1VbxIe3r zasQL4sU3#bD>0k6$GrTJGdrU%(mEe;t1-g>jweO@z=b__A<-II26#lYr`dE)Eek&! zz;cKhS4Cms(h>sfZ7(ryJ z%K_G-&PP#Wguig;IliomS24%O#UC#M`44Qz{X4+eb9~3ywBGU5gx@}WBYTc7&~16a zU{$e&ff8!mL3d*iXfj3Z4!qkaVT$!9wts7~!Sz#N`bO@?*JOpOQRBCY#AE8mo?3!0 zgxLEXVFmrR*!#OoX`U97%`i33bz{?uH(L5Yr9N5K$V@J5JeN0eOcySHA`XUA?@m*a zTg*q$XnDD86`A(?1_GvrzH?VtXOW*jE&P)3o4#(x7zl+2LBy7%{P^+>wi=m~q`&na zv2FUpUG@kO4FVm6>bfXXLlm*-vFKmSNfa$`6-Hj7Ex(penhL0LtvWpaDpErxAX!9_ zi9(5NP?6oDU|1-@9T>tTN2DS<{_Xxm)@As?Cx?9~E#yDi_-_{8DLf_oyzo`we?5$~ zA7>yB2?#m3LN-ogU=hZyr+Dc7o&Icm-{XfOzQX}@6>>g#BhLNhztzXb@OZu#7X$SB zLOCFq01GSkkhCPM{vG`W#~&tNOTwb?pzv|w*M)Bgf05EI$i!ARU}7`H#6$4AH~ypD z@c|fmYxF2rP|-_ML*y|k>NH|4)nN<=`cOg)gAh0|=mt&SkJ|)xG zQ=ds&#?hL{lCSeVA$(EzCZUH|6&TWZ|7D7A`qA-qxrkrIniY{ms10q4(cHuq3j~!|T>9wNOm@`eUmV^gSM7?UdM)_ivvtpFO;JGlKEf%lT?=c0G zh*4SylKJsCo-kgiSz_D8V?j!f%=?M_c*xEpQMl6owTmU+yX<+0|I{WUXyXO-xFPOPXWVNzXh1=m_swjzilQbKo3O?A{tPMuqu zG#6G{N^wdn?AF2htDn3%71)vF<%oo^nCWb7Ez*!;>RO0$(R~NT{n;?fE6-KRc5?90*C>J7kKld`pvM{9 zopIuGiK{<~=p!e|g_nLUSESc0SQsn93E^(=?H*yXim{5V*x8`Jvy!dlN`ts?;n!?M zC9C$;ebNxezo~3dmNb_3E|E&fELV!Qt{bFG+>%*z?SiVC#4YMt&M+)P&dg7?z!Jf3 z;-S{))k&kb)oYM?uW>c+kX(*B)3!wCh_2*H>~hK$X@}_Qykx058BjfMkhu?KCOKR6 z-wOvld@mfMIlor0$Dp6srJ}flcrMMvgllv58-6YfKYJ;H>I1U8BS|~5LB7Wm-*>oa z@KOkuDT=G20sm#?q8#PHZ?Spkw$Nwm5hL;UIzdgd^{yIi_hq?w`^j>zy=)4t%Z7n4 zekm;QD#>A<(>Tc<7Zv%UA~R^;?E?=72i}6KQShp`jtJ;FI0Ri&@E<_hS_tPT(moXf zP4nq`1ff+ zc@_UeI#|20xA)xU=5xoN-DB$_tPRW^Y=Don0TjEN?H0rq*mQh@$E35(uxw8x+YjsV z8rzsir?SDl0w8IB(C6jRS}K|sdD7`~9~)raHj6df(YIRbPED0-wel30-#b&W3$k;e z=)n^;e9kLgW*0<-8*oN8`9t@R_)m5Se_Ls1rxgAQ_p8A>Y}+gHIQ<{MczZ-BW7KlH zoTn>v3x)wEhiaX63uFM8o;Y`AIp_77)YLn=N$aaqcV6gUcyjL4yiyySyW^Oy7Ye#I zzq#1I(D%o2@Ta=$y;!YX0J|QvbC>Ta^iWGDi+B$TWUqB{UY}T-_1lVyUV@Urwlw8#l^4c|VP$8LE8yLOl8x~l4b!acd5 z{&|Ne06(v!dsKL@@MJ6wH!S7d8@|=;xjnZ9g4XKyx}6PBi{M?Zc_^ho;tCkhUInb! zZl?r0V&6dA*#^>#C&dGOnbQ?4w&>;W2kJT+!)VFVAq&ZI-b4Q($Tu005;DE*@%< zD4I*_l}TIE2-tfjSlqg<)M8RQ@?H*lJlGmP;uEXQ$F;=pC)T77v`6+QR{iq#;io^nRA!^A zemX7%Mqy2HrlwhHvEk#CgVF2oNXh>MzlH6o&p0L?b%HEkb}aeVrHlt(ee=holwwJH z{4>Ho5}p#?<#0 zrCTEYK{QoDW8i8;yILp`WO>{+NbOLJ+l&mP?JzCYb|fERy)aeK!Om-824kNjMMsKd^ijSpTBmARL|zeKhCh_f7RXs#yZNfhgt+;au5+6?>0C0LRWnG<^OACcZ=+ zb?x1V)SFxvxBWox%nvrdn&3lFvFH)uGT0oWd}yB^>8>-nP|;w#i%f_6+xyUk;h8*z zC-KxL4IExJH7u=&2Pekzc_D zM;X$jy;q)knWux`;^r`AXuDHoo%wR1Z-MzKW`rZcmT(4i!Rz2oMJZ6Qxm;Ga7A>`P ztg+Wy^O#XqQ9CWL+rXN`GK5&{b`?Wbu@GN>peo&?$9l)qPFL-15SfV5qH3x}iRj+; zghon+YI!r|B3L#nlKOhPSa%ggR^7Ut*PZf=rxgfsHXH)x(v@pi^A@1%fQ43^6Tv3? zqN&=pYJL%nGO)-NCF&6I0jdy@QkfJ*h3<(Ymm}gHrIS=78jZ;^r{nTilmu7J7qyWz zbzZcsJ+qii+Rh8;Ncn9GSYP5^;X%x4F^E!6$C6NQ;BrGh45RWV3|i4ysENb+bZkBW z)9kzD$auH}o&m09!cipCEw5B4)~kfwG(}p(H9S$IxNA+xmx7nL?`8~2O(h?P)$ywFO!c;!M^DltLEn$(xj0N*+{hIlm0q&KBX=csK}>L8}# ztXG~^#2s49-K}~#hn{K5wq-l?oL`sWJD^{%l0>f#v>x=aICHm$4obg;ix6HPt7WP! zbX<1Ia&O5la;uMWyxscaXgOo_QVA!R6PSxO| zpn;g{hW_I0y6ToBC#RWOu?$_qGVx5QHt57$NuFHz7@wfTH})-?m?pvbb&6BUR)JU+ zwY>tRvqY2UL{rx2F{)ZRnelmX19*Y8y?Pa7x{Jg?AwhnC1BhlavZJH8Wv{i<7R$~T zE}4e7b%#jAsYS=BwC2^B&*gLFnpE+qT6N5PDX*GF$A;)5jq|K@cPX*`sq!UtxE^tu-Wq3W+^FT*Hf z2_?|JnBQknI4W#_?X@l34OZuatiN0mo)F$Id`S41@G0SQEUFW8|9Bf73?`}vBMyuu z6>q?fUA)8Z4|;f~L5A+j?2cS^2c3bu-d8KCC$rzn8v}TbpL=*-Ao26~o%sE=URPNq zG3$3vmND+5Yv`a#@6ioW(-t&c)6~!DnxSe7s+w1n|4CIXMVXUjTbBM>mWz@+%d{qz zX)1~I=D%|YAyqgyH^0g5kOKSu<_}^&`7`#CKVUC(*~_0|4OLmA=NJHUh5^tV4`*n} zGQLz~@67Qg*}Ep$du8^<*bA$%7v|UtZT3Q)Bk8bP754Q+><5$V6_YU})fkc3@H>Qa!VdI^2ZXmkpLjd? zC65YMgbxZI5w1a>_`LA5!p{l6C_F9vI`$3K1MScQJvJEre}W7;9_s*Y-Wk@rDwsNL zuo!w^vxCN!VLXxJpP(M)q5EZTaEid`H1RfKy$AXSw7o>UwLuqjSPOpZrT%wg%v_Zv zQPEn(VzXFml}b%^G70vFC^coxkfc`xO)f|h=$w*s^Bcr*9Ox4_{~|alPV54YFltqu z61n-O?AL_<`Y$9IUirtYtuL}BnxztN^rNwELD&Rc@TWvv_G6E|X@dQ@$X+y4jQuH< z*sG#zjXkL`9O7@N0Pyh^0>O{h0iDXI0~(v0jY@z%AEr`>7yo=Jko;uL&*d>zfrl$E zr@YUvM8ZE}Z8s**zFn0e|2xrZV$W;7pRo+%N(K7qs;~*Z#yxBg3=2cbquK?>q8m&o zccV0bd`hIOtgs@NZaC%4Kg!A=_{wAPE@*aP7)2hutY0mA^339lQYp8=Ur>3anu~#F z41Ot}P3Fhv`6RM`V?!xg3e8o^<+Z`Ax-eb(QKhw5n_8GtCMdYlJdg8-BkI(A@A?1b zPIivJiTm>rKj0Mk-?%vBxD0=j-+YX-#DO;f0U3>~)wLP8bZ4c>#SSBO zNp4*6{d*ABQY4%)xxzKYn$Q+jSpNDSW|p6u79us2l;DI>6^(13sxVHZ>rSxiR-dhD z#Qv{uT)ey+Nzxvt+jD^^G3t0@oSd*JY#skOsDIHzZYbST8=aJTRd;a%X3JdSf*LmC0;6N*wo%8(wt;ABW{ zynbv&JDjaq+faclJ^w$BMGpr^D<8OgnG<3+AzXfq&o4zX^L1ZhObzIynV-q8=2zf< z{)VP(7{R-|-oXGF4f+SV zTPvu{5TA5s_PEmNtNb}m4Ta^6k8+d3^%dJHv0S6849ANM&{fMmUNm{N1+#dC9ohBw zctX+=III3Np04|oc@Esa7Ji*N@_CyW{BHpp`h(+R;icjdhOmmu$_iX*(iCEs6;}fGS2b<9Rhspjvd_h|wx`J3be`8rCH_fMyvIkggnn z*Qy&yM1qzfZQjF{EP*!iMO-hGE?M@Ks0K&)7(jhFx;=^(DLL`cwNtVZqfUJOJHY*Y z;BkE(Y|2B^AVYrA8P$`q9BCR2e?MCO;_{V2!$`)SipW+A=e)OLbghMtZf89@7OfM~ z7n1#8*)v9nY7jTcZMk^uP*&>nliGxKRfB)*gUp4e_z~^DUuN^?f)hp3@zB2DWvzei z|4R4pV0regRlHp%)q`(Lv@-Y+vz5u`~rK2|0bHr5_0Lat`=BBP?_K5`za26Z20ktz8}?$pNX z2dxAzV?5GE@aVx;#ijlbyZVP@SH`Ww@XTk{TZZ&gq{l761z+NLdR`XCDlD$iW5K5=^)vsSn>l`G)Mqit1PuKM0_bR#yUy8sT`jO*I)CHM~T z9X^8pgBvkj%IA8U!aDQYMhE5xE`FCmjMa}B4k&iWn>_JXTyXhmBYQ&legtZ!(usrh z1}T6K?~a%!wi)u36AA3MgA;aF5MTKL;ImG2e=bZIbh;f^Q9Ejg;f{54dWJ|+vnferX1Zn?5@{|FO(m8| zh)m}0nCB>KiLn6~W|?1$l_V%z^IkHsQ%@Z&UiHov$$e`M0Kazs{%R4htF zl}XOBCNJFg*;2I>{tM;=SuDp9w7Jw)G!48&Iv6*I!2`I`-C0GU!N5;=_MLwowiJ;hxeyiK*u8{r!cb^6Ot4^Ufbz4o`&uZsx$f}~5?A+Rs;t=oPN}4$-N|G*r zM^z;dmTzk}L@|6mcbPpAA;9l`oa*vr4WE~o_U$qN$xwbXuUMwxgQuv_Bo$%h;w1Z5|0*jmLvxbm=fG@~qqP zvmsw+F8}x9VBGvZQNCM$F5P510a0nE5W#>k?%1~%;GEAe_zlHt@Oesd&jPWN6R&Rs zfnalw9nB!sa34kNa3ib)JKV0rgPZ(!CpLY=Eqd@#ovc?o{)?|e+bOs{8^C0SejB#y z3iV{1Q5ag(^D4fpa6>brtrj&?yP}$A!8CE2{$)O~_Ofa|OZZf33@4ZA$wa(M*n-$^ zd4XTF$)??6O*ngd7qNwc$(IU(R<7}R;COvgT*X>qG85mg$qxm_#Q~o{4F~jAtf8U_ z{`56b-ZOx9tNy&6KPmq`%Qk?7jw1fxWe}~4ypm$PwyZ9+g=MyvG<^3U2t_ zKDb=wkJIb^^A8uI7u&J-`hEn`AjqlrcHtiY6;!TdaBrkK23Fm}QZ49_N-UyHi^#O$Y`Tgl%8}a_|I_VGb zeRiwD7Fa>70z5O|xG{&(VaLE^P`hA0;2vOw70^7kp|aD~u`QzZD=@@YJPcM;;TO#g zK05%@NkNmU3q8uqlbE%6TfR^zHYUw_#d_Psa#1neX?LnHKUrxnR7y&Fr8u=ZFDvq5 zvuN7IkGl&+&2Fral0I>SN}5rvfnJ)98@p$V3l))yQZ-jHju#8MUNXCLk~P;cBwAm+ zB*9p3={b^bl}e@M_vCYh;*7nzW>j*e#-s(7=txmta_{*9bs z6&=kj=Hs>5D&Xgwz*)Wl?z3Tk-3s#p`bbFLw8x`8;YNe3`}d@0?<{4L<0ULmVIktrNy>-@4n1#TVmv@N{jpR$rahby;hd zl>HaGE% zZ5@Ck)(ZFm%l%-2>@?V(N?}j|kh@JB&2VEeD`Jij35YJHg%~IxR)aP84sBp01-J$s z#S4NBKCVqnI}VxF!SOOBjT}{ssnT>uRYWas!T;?8zW=l7c}faj-K^-J?@XgxHm1XCAG z9RsuC*c3~GS#6;ic!6|8_|st9U+{e89u3RbZ*@i2%?AY`2vGP!pq9E|^4q;s#kx!Nj-t#9?ZH4Ya!(>6QxE2+*DP<^fVpE3E{!|kQ;msyOFS816oBi^6gnH z{;Kx+!NzUy3-=TTnK2S5Fk~N6>7zGTaN3tYBmD!ii~v5J1>Dn?otIyH8VUKl6SrSo z^e6@{N<2$U(hoN%wV3_enq|{Lvrj9~pasAv7df@qUWc21&LXiUcU;lRscOy=UE6x< zDa*bd?bC_c;+{pn7uNUXFK0D>;efr8Wd;c&>7Tyn4B^ts$gk!KB&V*sO^~M_7Aw*^4L$f-yF;#6|@m2prwML`%&;riqfZoLXlo~*O zcg!CcU;+`fgTXi~iAZIOva~N<1^2@$Ea7*af-+%T9&B`2o-@!ks9E;B+1ZuZ*`FY_ zqd@kJx>`0X$Ip1B#TiSnEV(=j!fND1RR>E#*1dX8&P&evk&+J9nypMMd%99w?p7}1 zOIBu|m^wNk7v*aIWTkPsrB9f2vRgK4jR{3D;rVh|5iKQObBHDq*->k2Rml`fM;Be0 zzgq@PdwLv}uN7w4qpMe{!vu(XR!O~uJxmv2vPR`a#aE1m8r`~M6=Tw*ar`Bt= z^;7+&ssrZAyiZ9WY9t3O(hzdObg%~LX9^mmcVvA=v6TmaHpJ1~`#9;5)0!1x)x9vutN6 zZg{351=n46L{S0T$?UFlO;IsKy*^jhsrnubI8CKCroEKS$cp__5w~~fqN1Yvs=e#$x~j$k(X!2EQw)t=Ji2XQ!-Y%8Ff5-7f$HL zSlghQXju{~+@*Gk;T#Qb$seQ?x4ZWYo{z?2J-G^MhLf%U)BP9wnlrSlKdpyNxZ3b?il=kL-wZg2p7Gj-h10^uQ4+6G5y zhkuN%#GXj4oCoo5TyE!iKE&8;3wS#fHot<^<2Nu-M-$FB{6HV(*5P#}M(lUX6SgRo zr*o!U{uCISX7@-J`ifGi)+b$~EStIMvP5k!K4J1^gO+T^GYXbxJWdS-fmI9&0`#b2 zcvivi9J@q^=)M4&=gj_kCjl~6BaWdH13#1Smr~IGy%=WKVwhx8|8f$K7=}s`C-s$^ zU?(0WN7?NBIpKAz+WDhkZ?5BZKrCI3(#Uj%{5m}q#qWA_1{=G@jR59{0U?zjX0S}le+@p#tYH(;hBpZ@$7`kNWvb?Uz z<$Te$i}^Au{*C!#IUT2kZLp@!!KlP`^AEs^rdwj2sz5#@X}M03reo3XIB}14L&Lqo z4BMy=CkXjH@5ITYlcaX+kdv1=B(nvW`oFcXO5Mv#nX4) zzLYOb$ai2_i33S_4_9WW3uPI+WKBfEirPwos&QRB1wQGCVO@;2{V|2@)C3Ba{r<+M zgDUYa-K0(yWkm;I0N;0sqP4uX48y7}e^S;P!F@5Nlrdj0W)B8wxl=NwO0`;%Oc*eZ z26rum4C#kOVN{?VH17e z5#wPZy~OBoa5EaPuZ$S|-r|qWJ%7kc+Y_s-n&#;7E?WD`lQ7gVJUP&g*c@YYyX0?! zIF}9vOVSIg#*U)b1`fy=hOib66Z@GD!8j}$is%o+?;AnCvy@7OQmFt!QLa?VqSlCP zhh&Tmj{xK}Wln8YG6qIrd#?Zb=SO(oV$Z95} zWAc3r`-W6AMc_lj7@SB-LsD*!_%pksr3ZQPgr(2FG=~bZJkP>C6a{f7eS`(WHSRG96opq-X`YoWV4tJe@h9U zZNszEd?8esCY`32j7tmX0kpXg!WqnROq<%8k%gB+O=C?1%%6$SiLvPeKJ@SbxV$@! z-~>l}GZwcNiAJiQFR*yj%zlpZeF*}fwTFug{$0!<+sx|k8Iw5|SSR9k7*#biBjR1( zk9Rymd4J(}6(o8ReFSa+fWN~XvEjaR_pSGxjXGW1qTv^Z?n1NNBm&biu!s)Vo6y{n zWu0*QQN*?8AZAzko zlF*bhh5K*A<%9EfWwV==dRdq{gGR#$?YWSvrmhF^@~~Sd1z9 z(-*_Mxa(E$A_4i>Y>2^rI0h7>IT$sA?whQR?m?7KSXyB`Vl4RC-H!!J5j0crxvkMm z_~{7oi@b^^km#huvVlrrJWs@rvn;>xVK{OyM*Fko{0N-JV9rnNi<}V8mxg?*;GVBx z4y`f%c>OftzhgMkhrNX-62!HPoqTosQ!)Lo3bx>Z&A*K6kEJhE2|!6ROxh~ ztwFECb3$}GgRYCYYA=xI-s9=ePCA zGPUxJM&6?3Ne13g>g07j@6dHZd!Jgd?{UhThDC^FY?dAM_M*M=sorgRX}VN)-7@P)c3zq7j18Y%v59S>;Yjo43o#4mH#pia~c2`Swle zq^Vv>fS$-PC(Ri~^RanNTfwc%E1EX{Sko}(fYqA`z$L$4@B+{s_ii`*RcQ>m@IX#6 zWYJTB13t*@LHAj`q+iy}k4{W{6l|Ht9wT4)g6LY`vD}+4!Nr^;os>(4a!)>gk7AVM zQ(Gt92OfZNarWev5Y$`6_A1cY5~o$HMK4D|^ROZ-CdBn3q|X?d~zm^Om5M z57GUU^P1jo>Nmf;qdh?0W;YC@VZRMbv2W*GGXH?KvzMS*2=1y>LY9}LRR;8Op}6Aq z+_I{c-5vtJQY=U13#m>Y|rUN^YN~x9#P@X5moCx-Zb<%Th{5l z9N%BTJ?j4iFnv=BCppBa!16EG(W4FViUh)q3B(`+BaXx4p7*#c8xKFcyUX#o`8N+g zd?kTF2=ndv{Ot%~e`CYF?>>OLwz2Wa6tuif>nki~(gJy%6sAE}EP$ryhW$-l1;vS% zvfAe{_g>eR9r&hub(?2pt$ni8G0AMZsGE;Hw)X`tAtHI~v8(MXI4g3coqvaZR|TY@ zS-DFGAZlADw@{8P7X?|(gafnP`$S@q5kA>^obfPhh5e|j_6G^3Z*JFW9JEqNH#;}l zre3@&>RbQnv83QW-OlGZpbZ30sUW1Xer@Y2?`;=OUVWQhoGzB(4}AFbD{=0<%Car4 zvsuggST6T~a$b^$r-{o7{xoO|BX+h*6QHNWp~F%t6hjV|bXj&v=REHmi}e0_3C5$O z07*c$zvg-}DIi2e&FAWI&g(7~_q9!PF`r+2H^$|>)kJBLCt_H>H6}VjP`@sYGtMmB z;g84+w`dF1D#kmvxEvQ~R}BQpWoM@epy*3ccL0L5<6{U)8W>fvJ21+YoDj(uL8|q? ze)wTP>f10%@9sW~nRG&w>|a5YDuv1$MqqW@;~P8Jckes?_(rB(`ntpV4t^#_KY%3+ zYGI-BW7?_PlFW0!VwPhx`kZ}CrI@{1=0D+^&M`}}lx4fV`PKLl`(Zb>Et`Sg;cVJ0 zM7e$Y$`5d@ImW-=f_FU6r=AIJ59`Nb*LwgySSnSW0-H~{V!IAnt2)!nK zDOSSB^UDVDEfe6%j@g&qD&nHPqETGhSNJ&`sWw)R(!}8(vh&xvU+stK*!^lGu7~Sg zqmfSd4+SM7?vJ-C~05ce?LHYq`y%) zQz)DP8@smAkK)E=NnR*MabuXf0svq+HN39MW;>wS!9Ow^=G~@w$t1Ebkz1V@l{|w8C>_cmu2ov`>4_!aLvc$XgWU zT_YQQzoOt11?6KA1i?P#WtKDh4&ede5#jy9uJE&h(C){#V8!wWM@fV?(mAe@37*zB zyfoL+Ik86NuOCrr00da7fo4|39Z3O|%=U-8C@H^d;50HG=5;9UFIm__0x+^L0Ql73wmTHQ$3r+MyTEjOa4sv)gn|1TAqJ&)Supmz?rwHGBoZKbd z#kp%1sW#Z?sJsFX4C%3X*geev8fc1242|!hi%st~P3;TLv*%qae5W8~i_QpE_T1`4%|K}WD;cauU1lIgvd?qQV5YH*tTUAY z3-|ALVWg=OK5vrBKr=*;R4SUm5K*uOij>GpGcRl$oSR0?rp$gRYyM%HKKtgdIh{c! zrh|lk4!RKY9SX^&Lx^@|-Oy#s+N|*w|D$YxuO@#GlMo(F?zKdmJ@9gmAibee0glkU zxK;r?q1%n1`!_}D$0YGhBK-4Des-Al3$d^HiIGkJ7%UxMyO_rQij+RP*A_6+R&={3#PiwQfsN^WiwD>QmpMjUe>){0~1TPW?S9PX_^Km zn=D@-gnR=2lbbj3_=$2Fx_>rAA_boN7NG?Geanae>T%#dBq5Qc?O1<(PWTRttgOFg z0x`sfObr?3v8e=uqal@4mx~;ySXMVLjHC28Q4<9*u@#5JtXUMXD4TrC}d+t&>uG39;AMUz{ zz2TtI{p0+-Zwwpyo^8E|^CEC~2W#NzsKr(P3)_nIRpBPkeTl`GM8O&Z|L+>#(bwR6 z%6LHv_BSz8|3a-(gMTlGU=!wxWp{FY(k`=kT!S;BRV!!IQ?Pe8Rw#-(Jx#hBb?Si+ z@Q3wMdrDI}g`5r#XlB6%Nc;C!`vLTds^P7n>~=S2 zo0c9x{QDsex@FqAE_?j|e?q%`e8Gp|moXgBdhH2s#C^An+&*nPP1VDC9|%6;grKXq zstf2LrXFB{*s2^sRtCi93pyw`Sq#{Hzg*O%fd2hzzErMFR@`D?M_4rCU!B#`l8v6$!AP72SLb=8ro`Lw~^(9XxarXnvCIrXx{t} z`6A%G84xKr|4}Zd4@P3RcaX>;P0V~i8vpc8-bq%Y9v}pDm%F43*2RKv&EfV76x!*) z_3S0wPh4J7Ti;h4^#lu%cRx*S43f8-68&_A`GhA__4~UMyAxza#fL;gs(hMCO&de) zZTe}KIin|3N4XA9g?iwRKo6|3{)Aggn;2z@fe}G284Ne_V+(N~mG4ZmLeb4IrSFdI z5|(}Fj5gbvq$c_rrr27Z2Gu>i+!FZ>I@y}l%=*Xq4uR|Z!?bO+ie=m@Q_@TY$Jfe? zG*!Xk=2g|U&5obf2Xi+1bI&anw@aFQyOYO?P4JozE?4hr%iW^BFED%CT(?`FG;*es zvli9X+-X_W>qh>|PU23-^Gx_YUC+ zmSd-*;%Ww#7V*mJ#%bJBhIM(cZVxD(ErJCRnq2^+GN=q#9iKjMw~l`405`_NaTVzs zW+n7SdKlLWxq?2ady`Iykj9K5RZF5?(WsKQ8&5|Ex7e~=WiqT~TJn-8yWF|eurDo5m@asHj#fa7qOS&mh8rz*H zKXROcFI{2#*jeo<86FCr47T0)W4h}5AUww}X2wZ0-b+<@?(q%!;q^geJ|6)WmF4S1 zxtpKLqWMk)WgPMVp&QxMkMNP1RXWFKK%m=nR4_PBkwKahVf2~HO8%&Quwvh1Pm2?x zS$H&}`V)nz0{pxCINb28kJjZ%ZZ%hz|HlZ7ua#YQ-gS?e<{+OdoQ>+FVXpqXP!41v z+~M0@@8KF;vpaChI0j%Q2eh6KBIkQ@2uXq3hB$4T;`DFXYp9o8Qe|O=e4hSway(|)CDsRk!2J9rDVVVtn%YfAJCPHD@J1=~C$n%2Nhzl~*#%&br8 z1C!VuGF<&5MO_#_(=aZ9p7voplSSVfIMJSj_Nu>+T(D}3_@E+I&H>OuG6&Ke&Q1-2 zjB6;IQ6e_4-;Dv<<%`_0q5Wy}8PF4ozE)#?w(da|TLvMGs2DHV-*gM<`sK?!V`yN&$^Idz`5UdF zA|5ugF}8#^u>AG$jF;e(9{_Lf00vw?!0db`n;R_E4@V*sflMim+fHc5O|v>joBLUE zG0EP~q8kizWhG(RJr-DYf0Aa!9=Gp~n&t-BcXwvlcPnhnin38hz{X)YNYt-!fNDO- z4|2fXm`&e%IaEdf_N)({nN8Se&A|kzuQ7kN$5&#|#`BnUHOkU^1WEC2_k&3+6@Zb_TvB$)#;eUOU$^tw9U&^ zb8GJ}BRF1q@Il*Z2c{l_f*E`}p#hrIkwczqtk0`#Ai)$XY+%Xg(v!?2V>49=BQTVj zdyZ2&jb;Zo1><(YH0tLtE`yI9gM)23ST zLPUolt0mT_4zLC@DAOOuDh$bV7mjW9299hUQ58GvfT%X=l1byR=D;>QhS7lSkS;7y zb0|xJ;!~qFUO!bxH(KTO=Olwj7LcbJlPpHSH;K{E0T{T+%a?*+g7Zwyn4R+c0vr0^ zF+dld(P-*g7^3$&W+fO&?*nbLAl*g=iRv*NHP>ojAGWgI7Vrw(<&vnA|b6yYi{Y6>2 zh%|)58!{};4z6G68WB~Mm^#*IGl{8Ejg<-S!1dGqkVq8i`5_(=5H`!MvRriyJ`guB zFF+OV7YSOX5uVG!Nxx1a%eUVOLS|K^lFH||5vKD~<4bgmDC3x9K2lUQGjKW+5#+gS zW?n~L`>0{&gAB}S5mnA-GdQWw*Y@dE9*f%n;b!jFiiB&DEX7gw^0`hEG% zZ`3BZc$2}A2Y!U;R5tUnY_6NKoHu2vXQ;D|sf%w{C1MyvQr|A>Ng1i~iWP&F+S{Ux z!k9O5g`8sbFTLL2fMMl-$pGSb)+lm)2#)Qnkt433%B-U2(TMi`MoR^=dI!c?up_t; zNyotBOz9~_d2UwD$$iF`^L(fN(K8IZJCAZcy|Su}Kart%yz%b6gOM2=8NqTfo3-EC#j(vIMg=@HEm%LSJ5D~5v$_TCZU z1m?yaWWuDfMDtC|fXhTJ*t>C%TDTqu^LPg^izD`P*}CDmA!rMZ1K;!*az_BoY%L+h zcv1yRtRHb?)EK%C2bRVn`ra6%mJ)Pc5>6dN<-=3;+TkeqxlH;c=NvG1`J4Bj&kC~P zg%dQY!mL?L_SqPoK8zPA$uQf$yr(fxFyRE`SXt*zL7PKcN<27Q^JmLAvSLogsYzpc7b3O3qCFu zXr6?H!Q&O*4`Sd`(5?Z0O_P0Sh^=g}L&rBt;)m^Q?!JKE?SruiU)`NVww=ZJ+WfoFy%fJ4r_+4pdxws8G_IaO=>pz-Ze%mU9E)^@qE{c!eJmc(;uAK%(l{k_pW zmXicClVz)fcEih>G*GS6WTPCH%fN3P{`e3yf=&YY6y=Z*r1)z{x~hXo5fCH z08p#n!IJ??D29PSE;GQp3RaOgjg=xsSYj%Mw!llkY+)&lakn+*_{W@lEV&NmI#iYS zNbpCK2vr8SZB1@Tk|Jvu<0u{_BB4~IQK+b^CMLbpOsfh$ z4d@xo(VUWA)?^@xu22FzXz7NG$>k+QMEd8JMS^Ugw38t?|A_(twSwfjR#i785iCeG zU$zTiO-iPrkb*&#d{v?yV22Jg*Oj_RG|ecYdRX zYG`A|;?}Y{Do+*7X(K7RRV=TUiv+ z+7)9J!(|56MN`QK*vmHX*zmN^nqou)Y?IOJ znOW;?!)uwtw76|(9Ww?`O<2V2Nc+w{9W=IOOgMcYYm9q-c#f%aknhH2WFLyf)BAd< zwfzi=UBt5J(rTDA_gbbkR^(&;Cf~aR2PHjMx{6dgaIQ3aVTfO4Pm(?t&*&S#nmISh zVtyESUkQ`Pr2Pnt(rNV>g+`8cV6;PLi1PaXg6HKN=WRnH*Cni<2kn64QFpJLai*NF zq(>mf)ULANqWV%j28%6B2pzu8lxoZMfjdaTcH?a`_}-C4ycc5apGOEUWs6sAjfv}Q zw4GnKPp=Fk;k`j(f?z{UN#8y;=Bj3C@XxNcs5r;U6&4ER%VFh0UY9A;0$o<{hgz%H zqNFs-_SIR|DJ8IuvF2X_r<|Xw38PcTmC;!K=`f9D8rg8NB3pEyi6J2ch&AHqiX4$l zao*!|;|qS&!aazrGsBTJ3!16xrZ)Z>lj`r6z~wMpA%)$6;vyH2Om87BBUN*$-& zb~*`~R>8)cD1 zs`(;(*@kc0CGajgvA)DtZ84J~FH2Z%frq)@JbQz2(?zDDbIXc^^udhV70En-e`3aL z!THOQOmtZ~p0hD}yO29B$vTlgaFmbxPsoTeQ=~!Xo`HhD^uMI%r_N7(iKYXIx_YP=cT3V>V)H;d(Z#%KS&CvNfQuOlH)oI%*cq$ z$g?u5va+(PkLshks%H9}?&|L9!C+=EgJS>`E`mc6BsEP4q&Sc%Q8PS15)?&{L$7Ix zkVH~!ofIg^l8C40w-os7wG6Dak}bWr+I`^K-nF>0R=Y#_$$He|{3l}A*@j~_oG{*Ql&y<}9=ltk3kS~W(f zYIYyG8{;P5{Sad+XIJq2o_p|kMdvgJ>#VXWX0J6OVvJ&3(MWz_VjfRMusvL9bD7wN zS_DhvrApv_b_}PkF+Xd*k{_tY-vDVG%@>3zTo?-buG&Z) z{%I(Qh7h5!PphH!KCB7LPUUbtST07zVJQ97Fg)UXj2i4$hJg|`VedQGCd>dx=YSV{ zNX(uyB;uX1N`?;3nqe}Jc9U6jTeA6)NDc>xMr9*Rbe998Trn<;BIcP2ex?Kb7&ccm zt*qJbr>Wfjc%`DvIL^%9ACdurN(IVS#Q(S0ywcEZ>QMM^>y65w4jgj_uPBe^bl`dT z)MkhQDAvg+Mt7)v@R#S%_C(?$gD|ba9Dte;qg5eBrOe4^@_bkenOHf1^2oir`V>?PDATNDg|Y+%>KFG{C&d0@vSTnbktIVrgKb~d z+0Q!ZHv|qk)TGCbt6W|B9a-l)2jb!EcPL@I6Dm=c2KIhXHa>Gytv-5DjMC|b!|MDi zIe)plCif+diS_D&T0l?56Pcx5kdyy#3&gavnLtVeg(JYU&dSt+)x7clxoJ zg=%Vx*|1c~3lVo8FL(EbHP;14AVgFF( z_KvEX&kLZr^CPhZBN~bqyCanI&y8XYzL_;|RD;Ex`(l;6Z0hr)IfVRLH8pCj8rf0L zjC93%Hs0mT>)@w{bnu7Ka!v<7J&K6M7Nn+)8Q=N#3~8;9R);n3xpvjpV~xA1Pva%#dOQy~CROTV^S%^c|xb{O?uUEYyC-n9-W;gIXX3 zH-uNuyNa6j1->Iy?X}UW_5zC&r7HIBkyY#(8>3^-*rnh|%JuKXOkAj3Hx`LynY>Ch zR2Rd`$R0PjiQ0Ajv5fKhmpav=vPPYfW?P!hh*z$bbjwy%=9rONt7;{~QgV8Alxgl$ zE-LR(E-P2#h(HJQQ*?-4eLv;msQOf^9 z0YyehtJdtg=`dBbY`s)1djz`8vUJ~~n&&!HZ9x|ps9V=&RTVH^0oVw|sDkGW7=fr; zH;a6g2Yl5ijyKiJ#1&+O*w`R`#nvEZh;Snliw?Z5PK1! zTAv%>`$x^CIZb(fE*+sEhu6Lzb>q~6KV4Ibx^WqAYCC(~VRKBT8*h!Gx%WSk)%B0Z z%q{u04OuoF?BRQ`S8u+}R|-$CY_8o?vD_%v=8=JukF@j_-cM&fHfni&X$Z_G5B1OW zWWOA=f(~lFbC~&ZW`8)W@dniFCW=Ic>mMHSycw>utHSOxztV;`yJ6AK89%0Av_>K5 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 p|42WThV987t}^K{=(DxvKqk`z=Vftuc87F zQrN?W5e8#BlhYBw2^lL)A(S&@oT`A|SBW;}eo<&QAp_Yn#Y z(m%>dT+^X4LW}l0K3}RhCgRRR%*5+Q3Af|{{>kKA7fYl6okNy+0IFb#Gt!!xuAjHe z)jDl9N)*N^hJ#inf?uzj>ZYFmx~H%wH4bjoL}u5~*^*d_re#+@q4iMHEtIG2Gm)wo>f>1=c&;y$SZPj%|>#nn%lcUrz7 zM9uOnhtP@f^(!4aNpFt`0-V+T+ju1{RA=i0LJyZv&63VMk`9zfKe+B-KR=l&CP9^! zsikUJmF~*^;5;LnbJHpZYP~DPPPKEwy9j_B_r7b+8EB$!s4$wF00+iS>(;-#!z}MM z`e0`V(bn|@JbRE^!ebo6#QQ9>%LYMqb;?1n*xoRHR^Y{ zVcZw&7G=I0A0vZJ70nI^n{#03zC!{lN=*t1Z`uMsck zD82I&T7Ts)$uY6uXB0!lWeaEN7{oYRz4kvA4G+#CMOGVeIcv)nQYIu#uaBVHHL*qG*Q~Z}Ebp&TO-Zqzh@yisV*R0Tk=% zCr=eDP~g;6(GlmeDuZ#w`sS=UbZ`7Z%~WxHbzZv^s@vkd8%p&pi(?}Yt5XM=Ar z=SU&>c4iJi;njAPC!un1G{MzLK`I(cl4XL*S3&#=A9`>XorJY_DieESZtJx3-I z8_4hPo;m`vEblzECSj0&h)}6r@xbW&j?~Vnn?^x~u`$}co z!!Dn4;>reDQrqIHfl#TfeGf{TgqZ50)pXGa)PBe zOVxKNJM+6->t693E`}vrlqMDS|?E@j=DLF&k7w-MYJbcC7sQlgs_4w?Qj>8r6AHSVvBDo7X4(Gu%fAFW zy}Rn8(#twVYJ~gp*zT$N$N-G(|8TLVv9Ox&AD>dT;YQbrNOr{ICfkM(B7E3+_QN-m zun^f#sUD|6E15OYf}M@ZM=LbB3=DP1fa8GLngJ_6^NZ`5ZLcT7s$o zLDS)-j;SR8p&>}VXQH}6^GB#=Rp%?NZcQjHmP3E}a^B>VBA=5Nq zg5wJ827IV1VY*ZtucZWN7HlMUy@Kl{BDE~NjK+`wr^_(Nr(`l)wiGg|VbLVxGip#e zZ<*JTH{1Ds_$jmb5*0aSNf+HnDr6*@n6DS}G{KS!>6*sEC~(pyq%ox1i#vSuM1ye5 z+*>Yvx{4AOoJea406+_Zm86ktdt_Ahc7;TK>EGikpD#RK)W2TM?Iv@Rt0-iqf303A z&3S4vlOlL&{`GhD|7Vk!E+4|IKc>4Wn?#tcBHS~TW!{Q)szM9VLV(Dv%xfMdEn^-8 zVfH5kt+?lR(@Hbho10Lo4?=siC(*AaXm!$#yFV8$oMUUYP?Qh12)ClgMJ>n5l9&>T z7tLmW3p$AnY>4;y#O_sk$-H$ksC{7_N;^Tlj^uv!#ZzJCOyi{l4$^dTzGYUi8b!1^`+lPWASDr9HKj4hEsu?dF74 zXr{z~JFG3KPs{Gh%4pEm#+|f1j((>vIy_UOh#7V@C5NZI)W`^;t1+1A4^eLAZs1Y3 z^(K7bgFYKzJfEKr-`kKHV?lHqi`c@xlv|D8TzF#yeBoXCx~H%gv%h zlMtH5OX9D%Tj8}))gja=MGZyPX`dG6vs-bk)>fYxPd6(nbGNv3_5S%^=G#Nw<<@3D z{2LV)CyV{1DXy7c13*mIbpU9@WI80$uza*>F7xyI?7DN&M(I4e<#zYQUw#p#pMJU( zIZEE)UxYqhU4B}whrG}%QXG4YK8zlpYa_=-a??K+J7D!??RqbzYq|0Gt~mkhntIR z(F5@ME@h(-m$*nqXq;;{&369dzY|o%5HJc%Me}P*ndis_@}2L&zyK5TBU(6{022|@ zP_-oP>KDuAY!2-96uRznaGkxAq5IHDLNtdpc>F$^0w;slOAbtSckOCxmUW>CpaJW)wT zBKM$f^5JS#D`YJJu7cns2E@8v@Q5S>ibq`3l_voSPNu${FU~Gz6qy1xaq;H5z>WD! z8dW_PM5p=d>>()xNY6R1f38se?tu-+Wv&T(^cc7xeGg)63XWor^Ru#D$cej}yGknp zH?h#-l*2wIm@QyB6Q<2#+YaInuO|uzMG65~=o3JpAwoxp5V7!;1`Jt0>jyqS)GdY* zGLQm5K9PPR$9nX_d?a7?iTGkx({|YHBr!X#T28It0oO>w700pA#@8A9AWg}**rO3C z?XGp{ibgqy0oX<|obbpj~e6`HUD$SL#|Y0h!y;~-5d zt~zeLzQ{fkrm2&zO!_X#y;)=3Y+zy~y=gSuEIcTceU?A#(s1D(pMQrqviwSZW8xb< z(WDpZs)?|&x|^h>bkm20NZCpMkb>2maedP6j+)lN?7t3uNBT*czd%XO4LR;7TW&{O znhF~UjGUgnE95BFpv>7_+)K|mfB*{bh4g+zV>k%3(woB+C7fm!!tzSo7nf~@{{Dg7 z#VKbW=*`d;B|wB(1hWTQ2`yaGA5Y@go=+4Kr_DU(qM+e!+lRKWFZvOU_O-u5jo4j{ z^l}$(w^%=r4Gr>b&z_*W$CzNPi1#@l!^ay;GSwH=xOKKQ{0>$5~Btp#L%%eXm}Zv_=l5qF8qQr zj^fZ!1{s{8osx<&+Y3wUoxShzw&tuSi6e?Q#I>~_Uc{CpEnv5^6F75tC&e=vF(x%^ z%M0LY&4^*zI&b9Is*x~~K_YuK6Kf2CTF|De-jYV9WX?S<6A^|O`Dyaq$O(iZActs!#M9MAWbkGhOOO`LOze3iMRO^y!p zJeuRy4VZ-yA3x$E^lTi5^t&-jN1|dHh+DR^DdL8!j+rqta?Dyh6%H(X)_M(Oz?M#% zTJ5n@-x8#_jK86eIcN39F^vZfO)yE3F3Z2E$7|1FMBLI}Eu%ir$%qRlTu{N4MLuz2 zmTevkE3Dx1i^VNPcdA7DwCTPE}G**px6!q zFbf?dOip_7Gg3idtxnvESU$-W7JuG)Fm#AjBR7pI5T$3`IIH$o%;NzXea|u>rMrV= z^LkQkBOjSq+6k zRwJuql;^}qaF}fNYK*d+bT&&Z+l>fSig}I?iQv3PF2q+{3s?2R1J`371#E4HG!*jS z&p#!AV=FOs@Pf4#Z;x^t#)EUUz}C^;9Zh1<$&davshJjY>J$812e_3x&TiClr6>mo zqPai`Z)2NTPFzBzz9X$L;0K2@V3SJeqSIrr$pxzmNx=Nc+$_ z`Bb3Agx^*{6AfZ#9GqD5JiXEC`j(SZIQ82jpP%XG&N)35NlE3q0g7ZiQxLji1ew9OBl24Lu+R;^bQe` z@SgDo;y`p{Cd~wCNw*B}N0Outd_W_5oRx~i_#|bgpimZ9Wu+l@0~C3j2TJp$FQ6TU zg72|-h$bH>DI(KLW-7qOpQW=BEeXjJ-3JfLIxOT2;ZF9#W@<$`w{IfxAXcR&ca-87 zl|RpHiT_wmnBpjSuEfknHSxF`CI8`d@wO;l=2`&6DOWJQCd(d8Kis{8GU(rHE1~Lr5h# zrdB~&`^#yrEfzHl3f+}~1Y7i4f3!+Nd_5IBq`^VJR|5H zNy-w2dQFeje)LLPh2|1EDL7uoq*_v1h#IMOTfW_OIahkd$aN&%@?L!?aLtF-j~gB( zfi%ykpbo>c{DbY`A_edBm{7GM0`;5VrJ&U1JmVs_%tGkmV}wjg?;hGkd`$Ky0ozy^DlVr2JyaVZ|9ywBz!fvQ6H~QiRTDV8|Z7p;s59{;jfEAMQ@BXr)G8nxO0G;i=%ukhiZ@CYU5P&@Na2kj^{kb(j zix9eKd~M`7QKNZx+BNUa10@7}k{5->GUe5lQbdAs{5pC7O?c8+2Ht|3qG&0shXLao z?#rqvQUyhj1D(MD#0!p9^`AmbITF<2_FsikHztfOd}A+S$mv>5L2tNT4r&T-*g#y; zi#UEW6ItW^UKBCs__h|jQ}1D^ksNn@YwUb87%kt_pHr#*r1fUHN-Muh(SrOh4Dt|Wm-8?p^`P|#XJ zL6ZgrSqyYQoRV7YSI2Tn=QzT=jl1t@Ltr+orR&6Jq0+A32_0Td7^$0f@b^W1P*GSk zH!cO#Zc$v~TJ6{r!y1p5ylQd7v48U8>PZ<@t8(xn^qm1d{J``OdMM;m1AI$XT&J9J z6Az`-WHYLFDQTiIzcfvq0U>85t@^Ip%oVSPTTDc-z6PxlfT0m8&$}nlMjddu)ITi~ zi56$@CGp2EdJup{*ud2b+Ip(S+jti^JA|!A!=8PXD@w2kV>4)UxU$)kdd2p%E=WE5 zj*(an90*7Iy+WN3sDf8&BNrysY07 z@SpFcBu-_F3QZGaQL)%q#S>E>iE|Wt$hPc8)|5RyVDgJd93&hsX7zBJS zRJa&yU5xak*We2m14h*QF}=UT+;Wh897+Nc$X*AGQ;@X@JVrR0jF@;}b*iC+BnjsG zXlUpU1J5OcJ%n+CX23uaUgM~Gbt}ctg4h=8&l|Gm%Ye$(HZRO`&bvD@kpNCyBnDCJ z;398t$!e3kbHr_vvg@hNkOV2z8B5U3CHh3C4-R+=rYivZ4UL=YGSA|f*+R@SPbnnd zg8m^UI^{nt>K8>uf zs@8g?aN0AbIg1HM2A`=LDCh{f17XH;CWiyJNp^YOQ&P7Y=dPxKd@X3KjL9>L2}Hl=pDJz8I*iM609(a)Ayk z4HQ@0Ary~IdKvV|hXun9>^&H20Tx9Fq!5Q*$Wb?nFSt`ALWHWP^g%9WQYO@>|)Z%(PVzTuptdCSOG0;~{E=t7#LALEg> zJ3V8KJ7+eFCv?ceI<+CoC37c0+C9mKSexJZ-o*wpju=hQ4iD;Gv+@rcuPd zoGHP3YENAsaa(v{Rp@ z^x@jb%_lm|vmA{aUv1MRb8T!pe3rb)P2d5gD)p(_xw=zdZldKNHCMSvB_ori?eHZ7TdEdJV}F5ocVCWr_*tn%B(-WeIb~O>(g@c7=|{_jtY+R6Jiyvr-X;60_p1+R71@Kh!F zKr=5{)lAGq#`ZJHp3Rw?)!XNXy22 z9?}@M_|WnjMBV_GJvn<{8Olmw$@^`I6r-}ap#gYkY%PGh=Zsk43sI@DA$Ndjm5v*{9)#LeGbhbrJZ@b- z?R>nQm!>Ox?#qKJNT}7fRaebB;oVpPgFg@#t!KyDoA|@Ivm$ccui?Ul?kz+}Yc2dA zbH>d8Cv|jl%Y_#a?+-PTd8d;{rhe_-&us2cO2Af2;s#HKJnhCLAi1w=*O9N6<>99z zVE0v)eeb^G`hTOL?^osWStnAdcpbR(oIjva#mgU?a(-2JWE4zA-=I+F?)g66IG<)9 zM|b4_<8n5+H>5N6=hd_?MHJ&44OhJ)Gjo($ied@RZ|}=q&D5dd)4&LD6;7MHRPjY& zQ4cmf^ha|{U$gETQur_hOM{@&Xv7yqjgBl_#9XWt9fuBT{!AUuNXJAnFwIc%*T}x0 zk21N&jcnI|b33ARw8l>^aJgtEcHb67CE)m{1RzXJZunJ-xnkbt)Iw;DBlg)ix0ok5 zuyr`98Ky#Rb3y8-iMwnVi8dkyMw4^4ebu_OB^yUpk_|pv0i-~d#i=1|V4a-hbq5@D zAh-raz%J{3$@T&RZ0^9c>uBwIT4t0qs;*rf4;}*%pzY+a>t!1LQbPcQdW-kOq)A`S z3@2E%GfKkSyZN7qI=nmazTnc}y$kAoVXrr%dSk~(u03uw1642@MkU2#L2HpdFQVAl ziJS^(^Y;1#-$#D6fL6TDvUFTGstAgdC!Yv52$(}#)+__NQXrjkEmD?7I7E+!!qF6{ zlf<~WMVa#Ks3ZyeA^{76+I&wViAFXq`NOf4mlnYH@nIAN5+9T^r`Camb3!W}9;Q70 zY-YFa+C`sp)5vfrA`%Q&F)bY{X6^;s@5W%$=$85O)-$m= z8R@6cx^O2ImUE&-i6RNlcf8~YFUxGy5Z%6r0(EAt(2I>x)RE+jxZFq@Q0y8$ zMOTre5;Y>GVj0Q9Mi?2(mLXN@PdY1xG zoH8Kkn0TUBB41KLU5TRGel z??paG(;CVqnGC%Y0065t1~-S=Mp4@f3zsw_IwLGVxqY($waWAlG=Cz}XQCk_yFg|P3={$}$*Ej!*lmkOjtPi!BQwfXiBS>u8s@?#PM%$LnH*)oW3m zAA+|$8ExkN=-?my?YR}P-e+F{>#IL5KYOd))pMHqw~;4zR2xvFZ3&+!9ntY=0}OT4 zQ}?0!7^mTBF)&|HTTK#;tN*HXchSF_{GWPCM(Hy4a|$CG9DY--SHN)f+i{-x&j;ZX z|G&rUF`l!1C$ah$4#JJ_hwr-i?fpfEDm7g|*I)TUP?IPka^c ze>Y>f9zMt zW~E#%Nb;Yb72#)d}NpAaUJZ>Us@LC30MIEN_ck%=6^U3gIhkSW5dVc@_Vlg&JwK z#`e??vnrvs4Pm_>6pRauCk*v;*J7nnGOI?!&6BGi)AJnJWMwfb?3G{FzFhQ4GB*iK zCZKV2pHfttnlP$e2kV#q|^%i!$XOdEWJY5Zz=JrjeuNR54kPyxNOFGmVD9k%j_39~OA@v&+rL_)^u&Lq zvOWE=*)MU+-AP+k$A6iAHWu@vCFX#pkOo z>*taPo!VcY^Aet*fP`#3YB(%rxsjY!M@D6`7GH^iBuBhx3cpH(kwBMdY>DP@x`K9l zs8*obD(oya9`S=*x{*E8fp@6$yF@>JMq>h-7l%!|X7%6@O0elS0LAmq0e@VV)cdIi zX!hgGUtb1gazjkTn4|kzw5E(#o+Jkz7mw5?C;d+KwQ`vk%ISPj zY)tn4QDx@StiG!HK6mvBY%?vNUX#?FeSG~Y(s+jV6jg6r=i5n1SetafNmh(ctLWAn zj58Z^T=2maW1D?ni=Buwh?x$6@I%XOKF@QtdQ2|YYH|qPB0ye0l`Cq+sMRc^<{Znb z0Z9@u$qpqJns052y5TC7Pcq7j!{M}hViFV;-R!77nJfnT`d6(TgVRBIju ztTkfcP_(%Y`sVC#94RQ$knQbIm1xWMGWdV(PDq+QdH~3)cNjufQd-jRdV3T={g~k6enL`4wd(DV$;BYEdEc*H?dv(?gIRAWPWAjDqt-URw~v3X z2iW)@lRS7hS4w8nn4qO`FkMy2cHXe^d4B;NAaeup3$`#=jArO-B@T!viU^G#2oWdg za`($x%7v@8bfyx7mmPweUX2DXg2qDQAb4exr6*@iJzN|8KA>jR zYgd$0(heTjLluaSnBQ^pcC1jd(_jC=hr)wf@z1d>W5#^s?(rj42x=Z>0xZ3fmF=EV zIpa*rcHZ^dlq#SRS9@a&K*z7?6Yy2JHqv`_T+#{1u{_qM&5S=~;gKR;uOmI^gl*4X zH`I+ts{2OnZz)Z_Z{Cd?`3#E#CjR>sKy_s-ceNHID0Po&Ft1l!eBk3RYmShyy3`wWiXG+i`XmJNh*NH z*au|5ffXO|vwB>jcMFGW>8#>zeotgk%8|ZUl&C&4?K)$LUPloN9)I)Sdw>IG2}|fB z4>2*@x*){QKDEky{ssGUi|VbXK6Bw~Q)bIuiq|3?QUe)!NEkvcQ2XRmh~H7lfeti! zA8^{DKg1%RmVI2$feHUbs!*>+UD89>II@`SVMa|VT;Z&f_A0fjm2@VNLQAN0B5tzH z;1e@o$NeHGE`e0Xf|4ZLNVAg!LR=J#-stjr3C6Jb3<52KUk-Ri0590h&kNQ_ENMhH zR7c2?8lW#bxoq9)T;Evqodb)bxNsml zw%qE14J*Q)&lTu$8SFpG_`9dU&ce6G9m`PeUM7{4z*z1f^7CkCB79@>_!&-?rpTC* zBemu0)b?_+1zLYVm%BTwcKyrm@BQlEuN!WsD7G+6X|&^I(r-AHcKQ?tCx5qwd{b{X z`MB(s^ITczUA4+Q^c|V-O#!(RC97oe$Q+eEJB;qYpaLQ}Cxme?y?x_8&2Jm9U_13f zT$Z*Z6NXQi@sB!7nvYZQ!f)GK)u)&30!;dwsu+`)V6Y4?Yd)?dS|wvfu?G;(OU~#I z&tz6Gql_zXRMe~xVvQq<=w1a$ojHto%%%>=rJW;>3mE&92d79x2>YwzxLvr~_T&r?@I>=KRrL^Bz)a!$ESFVZQ zFvjwhD3HF=t;$!M7pL|v3uEVS%`Ly#$_orPOA!QP(t;GZ=^s^rVe^kSQWLQ0_7h@< zk{BYBP>LThrp6S2fx!>dFCj@~6XpXw}<(+ebWK+INNl=g2=1qiH=5{Y@42seNEFV`);PEH~iiiRgMi0qbO@nbs4VMY@L8pZ4N9srY@^7(@c zwyu`_1(V+ULITyck9nrbr&tK z55c-5yhOGe>i=4Zm`|P=yT0qZSbejO#F^Q$?zi3x%C@_U3D(&P}OrohC{$JE=%S z@dzxbcOp4pG@vUWnM+^M#fKGZeWO&;R^acRT)67JbVshRrI5_KDD9C!c5;I%D>|p1 zR65b#MlnJ4-C6I=Q6?J!SCmMTWDI|?ZLu!O9vW4VzE&)$qH~xrnS4+0j)lbF2w&TlQx^`t&4OQGPfBC&m1>zr*kaerKA6AOrI3iIu zV%@wlOZ?Oao0fvsiwmSU;B0IdBq<24ua2t)CD(EiT_$VHv6D=$OjYF>!^=5wvyJJQ ziF9*<=Qa!D==n*9W!{XZVhH0yI4EOZVk4-~Vh&lS0sz_taa+%WFTXAjhZ$+u!J znkdy?0JL93Ub8-$>e9o@nY%wuS`{Dr|8f!TWFZKfc|qo#fJrQuG0qfZjuXtF{W%7P z%8e-o1MK;y^>yR&|BsSTX0$1F;cs2Kc+8XB)$`dmc6@$&Kl=FP;`DyOB})3J!{Gaa zwcAS!Xk%rC4{sviuI&r%fQAi-X^W6Vi*cw89&Evo3F89m`EC01E<~KMgjyZ^>eKx3 zmm*laUc$kZh}Q8#UrJ)_twjqN9MitZlYueH<&9~YO01QvvX(7f2_3o~TG4?)6o+Y=pT)-d7wfmr6krNd7+k%ccf?i>5Vn9HQoBxwFf~V*FavsK&)r6Ai1(%uZVn_lc!i zm!}+nW5Fyr%0L4&`J^RExO?0i!@Ya{iQa*xvQ9-07b@`J!{Pg9)aZtDds!pqQJGYMwZS$CKor^p0 zLa{9g0r_#8SWbeHzB^-~=)cL;$u)_?)y9M#e!=mUA6kR339>yiJ6j{X~oj!B0 zV>5QQxz>YXK-R9`e5Mz zNdTJVftH}A^IY?3+pF)ijzdPUb3WjTlix5%sUAk`x)pciBK&TG&>1|8&3 zXUn!6kEiQ;T6+e9da@NM@$*hQa&AlyF?`a~JR%gPf zBKH@UrlN;ds8uIO2P3l9ofV03OOIb!axzcjSTU>lj&77$T^6AyY(Tzlt`SQ7Q1Nh7 zbgC$Gh|$wAnar~^(IT_YxS<#Z#X)?mPYer%Li_O-_;w+7d`TTEWk{Gz0 zJ~go*^0W*_4!W6&FNJOEo4>t0ZHM3xhQv~*_4#Qg?tIxM<^T|MlJ$zPVg28^2c@*_ z@eSs=om<+jMN}jqp{EorwbY4|N=>2`xT=U$^wN>gFSYZFqUG^=+EVJR4(o_LCFoX( zFYhziF&~AVe>NiFP1~%OCGz>g<3Z!tyM#|fmMjSIMX3_kv-Ebn>l3k`MOG{1;p$0;lsI4UakCN|?^QFHU-pztRGdff zhA(RhWQAfHKau=s_H~*5?v{|Vq6AvMFw*_zEbC7Yta(m!e|m*5pAr>Ex0Je0PANwj zrKOP=_w^8qQ;+Y%20F?GRNY0j>GX$ zIP&4I`qj{7Y@gRZ-d#r6B3`=%67DDyD<|^W(e4rJ;)@H*c-z zH4Yd8)Tu-@Z@aV`NfX)(0h`=*%*`CPzU7glF?I)x!jHQ+xg~NH1*A^4RMW=nEe&`G z?SR@cSl#>j`c=49bWtiO13Qj%CVRbMjolJkr2WZ+{2HE-vyMwh^C}_I#w^Q5ax98> z4k*j>0C`++JzjPuJgx>9&B&eADoi=rS=Kk30cTt1%k3Ogioe@zci)s{tsnk*Cq~QF zpnSA>ITOnjz=(qKc~6*wDhK0L5BSi3Yjq_k1HG3lG5Edzoa}B}xinKit+&(*0#-rW zBC|Ocq3wJhh2-TA;B|)JfiR^N30~$@5-lx$qQ8_~Pa4`yIn|s{B$=uKk5r=&oVR>Q zXDk$3`T_6ec~mXe%>4+Vs^}r(!0?hhsB~zt$-y8TPkd{gN28YAY~Jccum3dPIJZTq zW3#@u2pDPhqhey7v(}$PH!@9U-(&rH(`>UAfrqTl@IfB~cu5&*H8{iHSfW^W9ZXDq z-)!>IRo=$&rc>?IShME22KGR`2t{D%!^?av?EL_z4ghsKt(;x62zAQUQIpss6VXrv zIrq^W!{W!sjd%lp2tyqGH?{~8bF(AT9*3$}YXwEgafN`4m9ouBYc}Y=_9-PLHzf9z zX|0QN+mzNUnpopwv9}V#sVrZZhh~h?!}IV-LF2?|dz|wfMnSs^zlscF<;XrrM3J;@ zatJoFsw3ADqo$dv9ApFtD{3F{L zf~=MO_r^jA06(v`I*WT?LtVrYyTozGuwHP9LluMC5WtGo^VDV8+4bQkIgbNAJ<^5i#zm>OtuPP5kyTk>kqb#OG1sU#LYQ}ck7K~ZAn?`cff+(5ne#Q3M@kZX zOK{$4K9RGW28aRHby2_MYSVC?I$_!Yic{lIN-1185y0d$h7TdMh7v1;g(k*E*f~?l z#G_L118;1=Os4~B*D6+Bp&26E073hxJgD|qt71v#z$s5eQNrdIy=avczQWKl80TDC zD(0n#7rsI)`3eE3%E`#dH4l5lY6+G!>mvDFIP=QSfEh2fQLNxoIc}1VMj?}iA^a_L zAMaKdbul%BW#S|rW*utY7yUz(fd}A;Q`H*_2D$oqI8IT5GYGUJs+B!YC9%gI+3 zp|O=YuLr8^6YNNJS5VHWrOp@luZaHNeW)FY4Lx6RMAiOrLd3di1_tOAPqB_suY-?9 z4q17D^foon9Z912{&S#-4k2E@9IRrH;b1k@zSM z!@WMpaInf0jFeo4%mdTQtM@l_mo`b87V?z(Uz{NuF9>5q9F8+uuIyuxYrQChqzqzb z(Uq3CpN>lVh6}&(3Hl;cjd2%Grcyf3r0m-lhrf}1H4?=5Z=@5wU(5`lI#Lz$&`{7G zKKTYq>4NBlMp)=6`4%Xe7qvO z>UmVnetyXc*mo&I2j=K=@|Miu;gw+$w;)O0F?p@^qY>2k`rGpwjgl^SrO1TF!ur}# zc->mt_;Q{Et%oRPnMwEl>CjfgC0%AZ(aK#!tC%XjSt?o`M?dS$gIf$n>v(U&msNpx ziCZZhd8Q?T0Uo6>az!n0zQwM?6d??xyv=G`62PS?XaR?qM$8H^PaLO9lD8^poOFhM zZ=5qTiz71sAi40;z5w+Hxh&fZnHoF#)G!)w8V`4nPf6jR2IoGPX%@&W-4dUVPax6sB$r+m1hDt(8`5B#bzX?WSABtlLXnx z#dC})kZZ|mMwwgryn|En9K0A-9;RA(jL>u>cO2NnurBoDUp&}h^jq){xX3z8M1a<0{QjU^r>mN|bX~QYpV5W4K0T&7-eh zjNN3pK3MX%so@_#zAx6g?Yv?Dz2UDj9+a2mT}QNmk?~{q&o_%pgu;lx?Db}$NAboS zvI!2wUsQxcdj6$nmQ-6`DY6x0K}bsih{$A>Vd%C+@zNX(LhG0M zuTXzAq%}j7B@~&2S105HuZllOGm1oIaB>A8nb;#pgMX$D0Vaag7e97otriIbD)w>JfP_TS}IU zmDtE!oU3x+Zysa&rc->(`n8L9r;x0p;2vqQ^KdZSfDb5CpVb!&Icg*g-KEycAne&f zH7};shVPf>4j+U-H@@J%{<>dldxeGh(IpnJiqt;YQn)Oo8c0e0 z$9Jcb{A)5ta@XhqqJVEEGvadeGDlh)#Rk|N2}Fc@ef)6ZT~ZoUp|<^Iy=!vO!0Y%L zp`*wKK11Tb!Y^gU%E#lbUv6CLtyeI!MFCUHOx$YKQ}I?y&#e@X`ilK?#r^{9v|If6 ztdS({rb2KZ7lwL`6)EC8#pZ>K(4)>EN;6$Xp<|-iqo-&?4_=)R>@OD{G0)qY8SYTD z8mfH(-8lFrP=dO}0Xjn_Atu-4uTDITQ-El+^n6_SLds>rWf;wbbIn85nb;^N9cV_F zCC?PCM?wY(ze+V>XMtl4mF9eWD+)^xB`cPWg&GuVs^ca{0P!yX@Gk(a91$gp&njgl zrPLQ8c}GhD+v~D3Rv7M)=msRc>KuRfa5S%+x|Bn3N8A^+FOd((A7e*RM*|zNGXy5t z6Ki6Oy#Wc0{q0UIBSv6!(nTlWX1G-xaq}&u$q|f){N|F)x(Gg|;Q+a=78S4|4@SVm zd_|HN;Al)j;pk)!!lWl&)MZW9sS{B;=gKIcwc^QyfmYCfiPmX@f~O*-P)dm1(1ZF$ z3qy!;s6hh=ByoYiLaiBxRA%6B^3iN(dOY9bYgeAIdGstSPVlzZNmykS0mji*0T)!e4{Na25aF`rL6Jm*htzT-q1a9QhhZPJ)!^TJqWUvXc)# z{i_+7SQ{EbNI}knqiFD3q07}mYl`>Rr=8#&MHk94tBb%LLK^6LS4e`IHoTxZ)oW zAN=~sUF%wbrR(vlmD^C_4PvST%EIN?w;KTN#e(CA*v2%Oe9ak?uTS|WRh2Sx=6;vGFx~L#34e^Km z(0`!%-hqd)O4bPY2FW}WWnkpNvGgDxZv_*N)bkvSg))7CIfAGu;SHGBTEG=-dN6dL zqP4{1o~#DT)i^wjf<1wK_HxKsuKS%$6Ys^n!K-|e#W1Ybj!3|>i<>aKWBT2}a<#wG znsThvly9c^x`?@LJl6$g;b-k+=GfZxxpcEmMpM^#whN}r)?I^(&SBG&re_xY1k84B zM4nYW&(bwcF!N4UZFCGm-nTp3PFH(@@7wLFYwP`L$7ZbA-T~mJC-awnvU;3(OXhn2 z&s?|!Vp_@$M^g!D&4LKIvLo&lYZ!g*{u!yf-P};p6Bd`EgMh*3WFQyT;&F%w!=h`9 zAtudPH<-|+0eE@N+8(?xNqT8fO`_;hd3*JWs?d`NE*=n;hfHe}X@}~02z`D=9xbk4 za#)Q-TsQ?YQs6==OeeWtc0nG{3oTM?Hs2KAFCNrUgfOM`ibuYLAt+p1snWLv6bvh@ zCNzBwxb~o#7xp1yr)h)O8(@WZ4jqUG6dz1JvVpmGznzLjR*QS^aW@=N35@Az(XH^nI~_i#|%uh*Ms` z?YFZ}U#=$s~LM_yU?NwD2a7FEv#BAY3jiwew9?^u3hLjlht;V zAXJgDSQNPiMPFM1IKWAW0^rDP3A`RWY^D)Q=(Qu-5RM1&0Q0b9yHAKA4cBIfMGShf zdV6DDiHU;r^$LtzJlh2D9*u&4|d!NAU--`NHziLvhI|C>TPSI9R!v(cf;apo;v&ArhU`c(RXs ze`;=3V0%ui|13sf7?grma;g*|U!f7-`?~*mUJvRVUZ@1hPNmeEafgF<@#i3>8WJ1g z2WmwBIcmi3D*^Bwj5CW(>>6@`sHJx(k*lO=I8RDzL`7kPuz>^$zs|!nM8a)pUTw7K zvQcw}l4V;X6{5%uFloOiaZ5tq5G^{tas)vDO_S0%BJKVOY(%~FgbYuq6kqO$maKQeehiz@`=!^mvt>>&=iCpdI5LN^ezz!0py7^roKjO5 z!Z3IYP&9kRedyU)B}yFpyFje+G*%JClL7lolS$3!#@UBNMAzuFiASlq4DoQ1$uYy) zd93lSeEvI7!8wTO0yT86Rro%)F+CBAmA&QN6e2mB;fig7~H<0SR`z(5cVfG%tSs6i6`&6j{C7= zgZ9Ixiqb!EH*3*P+Ko;KG{8mcMzMj<|uY)m*q{jev$IyE>9Fk?fnwbH6Cs*ZHRzX68fJCB3 zJk+P>QNT40lR{=G?oU|L53RewVU|l}jTT#4fK1S@VdiesK>z6)S3m#u53!#XFwgv# zIa%P7#WVda_FfMyvy`9z`Nc%k3-%6F&|hq4?g59gCa>Mu;rZ?Ti*~hB%v{-RbaheJ z@H8)S0*QI++80!6JUdxt3gH>lIuu+G&H8OuUh8(mLZ^1HHy^9vc-zg4tqtoH-zF@Z zs&Copov*@xbw}N+a1nHrH+B$XPjQ2(uVZ-&|W7YS_pwuwxf?)7;-T*!Z{D~nzMilV{9hT=MoYDZ%Q zM#`anJ9u1%a3Mzn@Nhe!?pBV+z@&p;QF%cLArq}tVBLDmfo|ydxVzz1!E29nQyH;G z3^HFngsX4f>x3cp)U;GL!Jj>Mq!zftwsS%h+kG zp`0b$!4MBJ6oNCG2<-kwIA2Y9lP5rIF;QgExXBGU>(c=(D*pE$-~EdQG=7M{<*m|I zlsU#~m~(-L2yhNGgb_^h`Dz9O$m#z`7c;iYo(2*eMws6?`Nj_*!T-e)%$tQYN5t+x zslCRee33;ARFRG+|4eW5XrQ~D1}@2)x;gh$ns{m@Ml$qRNj2TdA=&_WtdIy0rxrJj zTA*5ST1`&$8q#~M~oC^`p z?Z;71u+))^)vBicV;~3`F|u^0}wdlh&H)kl2{X_m141_7nVdB zCryU@FN$gdJ1;7b;i4GoLWH7_py}SW6y2Mzvi(;ah$O}OlZ4&5?W0;KjATL}P2X(k zUXrS+yuQWxyA!|rKiE=jBI;?>O^5RUrrHIktRCAQCs;XhgpeF86#xYifMt4?@Ex@P zL7WcIv}(Gq`l!((@Eb-=clbo2wCbu9kTo%i=s-`jd)=|n!umexjq1sODDeLz9(v1{ zmA1J-92xaA%Ll{JcDuqzlnqGv=zAk%<~w1x3cUV+u%j*x?%kI2`2HrJIko|>&BOTC9ERbPLRx-SL5am4llV?T>GO_<3qo%v9sx+FQbdoHe0N-V9e*bPgdp7)Wh#MP%E_g;aW9 zC*%(Ye?KwWY`!A!VHlGy2F_1P z3&^Rf+hqtx!=K=&KLOZx%eLm~}9W4SKp zlqTQ9Sn;(G0*bVSG_TENt%aBVHFw429C4M>Yd}6Eb zEZqXzzJJ2@9TZu7e#%iJ7`mx$H%rw1xjt8D6yTYWCpi<8@xJF4=ZkZG3eIY{ zqPMDDwZxqId32KOKKqu3cdgo7 z1;W_OG2va5`<=i0POi=hcbZ-`kj(hOxkq@_mFs3j2ywrl*OA+`d^P^9orZs5@`4}I zW7>J13vUvq?65N+Fj$H zp}jU(Q6wjm5A_v(9Sp8SmOM78VMvYEBx1wK{|gZOkgjMkJK?al7HPuqoiWDw<=>&9bJ^E$Y?3qe9MQP)Mbp)cs(xR@$dZN!-}rGfh(7@bu$x+zy=+FNmF6p_Bk zwm4tXSl5ekyt1d{9HAIGb&5BoWE{wgd4`-H>YEbTspk}h7%LQ%q=w2Ps$! zr~k<)YN45*=4Vlbpvej~86X6o#BB1F2=Yn=gxBIZr4iNiq;b~NGHiNN1-FCteUl6R zCYSs}jd&V7Wjt^=EzsbC9NC?<#pG|a9JCCs?uVZeTQ}0d$WAx5wIb5y(0q>a=5N7Z zgPX744f6}Z&RTdYV-N0DEk@<;K=N@3lXM8w@$5@wG?kpSj1eM`%#3B> zzvj-#hjX=33mrDA*jM>-YQ#dlHv-6>&<^f$z=#&L-O z*EMv`HHtx&9>5IyiiaaYz)O?v?}uG%BtBC}`A(!_-P(O;rR7SF8K$A z*V*-Y$ofS$P3>fSZTM3_LQHLtDW6jznwU|}^B^&+A(Z=2vE(z3sQ(h=5iQ}7f?T`b z#L1eO6jkF&k|Ju;oS)lXTe`Br?at6oh}rE@&Z$`4tA=puCxkmB(*tSwI?%cjn^O(k z*y?LVmLgG?fILf($VdI{oD#LDpN-r@4V8;J1m_lKNs@l2wI@5G-=5S;iY&7wS9@?c z-A8jvr7Y2CDyQ(}NlW*Y>_syULY?4Y&b4Q}x9Qb^;~9)r8uR~?dAWK{{)yho zMD^SBApw5SbI7Q(^Qg`dod005~&BW#5@?^KuhVr!&7>{hhoV;QiH` z)S|fZo8ZT~eCvzppG1;rEP;OA0;C}-1MAC|^RDQ{g%{gYT9@M7Mt zo^WF$V*r!c9YEeTZ&Teq>*$04Q6qRn%bNhpmIypu*{oDE& zht>!a1d|_~K9BgMRkTatLkej|O&u|f`}`wZorsg5^FAo8E=K30hhqxlI`UpfOwLeJ`}BRyfNhN3(Cgo+@& zTcFALc0_kBF15iI;lK8;_5e=vX!DG=mx#DNU?#+&HOqU4APJOs`~L-Z^{7PklTrY7 zWM+FEFGDS(PfDNFq346FYJUqX*-qi+pszHlD0hI{B;n>kutX3E5BKl~EPnIocm5lW z&}-UEpy-GL#!i5hG8SPy^|p-t2a|t^!DLoviFrLM`!|GZiL;O9jm)r)v37VF zm3;Rpd_5tz(qg_;@`w0aC{Q&G;tesE$W(0uBAV#!fE@uSCZXs zdrHyKp#g=5IR^{uBR_b|yy3CaTy2K*d4flr*zH^1TesWQ5}(T@uJ-g}CcQO)>LBj- zL>In*Ee);Q>srg9@kck!<%Df5lN9HNhV5CR+jT0Kp%0O z6jZ?p{E&MHIx*xxLx!B&T7xhG(i#;O;ZW)8SY3!PR)|)@izyBb_Y0XZL&i$@mG)E` zk>O+yrzzQ`Nz_GFU(C_`B$OG{XGNXJwnW_`)z>9OhLZC~pjTB26G4iO5vi5hqEGD| z)>Qe?)6Rx{(*zO0WR+(jlDH;>3T(pbR6#3KadJn;NwdqO1=6zY8_;lZ#A}K>Ps;G& z=OPdXz!g&VTo&NsRV6DA6s3w1(?)SXY@`py!~aVF{KWz8tbdmt6@elU)Oz%f$ui-X zuYl@q<8Ko4b`p9v_YMKAJN!h4?39$`u5bA4l@OU=n>2FTw_6(a*uHlPnATfJ&Fo{H zWAC$A4g7-q6t~}Wki5aWpUYR9JzN#h)P%`v>0FDna=uA)Fkz!J9DkH00pZ z!&%xwPtZLsVmMepn&fi{2w<@itMuBCQ<8WD#1gL{b8)+!D)H!j`js|}1TkQ`hKH|@ z6xJ$gwe9_qeuXPn?0i3$`*L-Ra{+8Zz{wC6n+jjZm+#~+xAB+71kpXKAuyAIQA6L|nen1|@xmzUiGoCIQi%!x;oLSTBKr5OvLGdYsk~Ct6!u262A` z2NL{bF*Cr7t3n%Y?iga9XWF0qwPgf{KG?q2?;3X!SW!Vjj1hQ%#zd=Y2n&F7W3u;& zu$!M=A_^qLij%MNND$lq7i)w-020@B=j%U?KtkRRCQ9A*me*t@&E;am>D1j7_i?#6 zSp@NOpE#>(z@A^W267f5bjgIQ9BP097%y?ziW+`A#3BbN$ni~EvR5KWMx;xUYg~sb zaT~^KbXK_=Wg1OlO<-@Qp#_t$bO3-13<{9KDL}2&dQbvsqYVlHP)){Px@i)NYRJJ9 z1Sxowo}#FBfF=OaZa_b8Q$DfqL2x9a6S9JK|By%|&=6X)snj9Nr@tjY`lez&+obXp z7?9hL1C44$-|dr#QcXyQ7sdQ1;hD$i*I2>BFFmA~XaBkEM4^4!-|t^s$b~0wRT`(( z7Q@$Cz%tOsSC;M9{>nWHabh!PP$sX;E-%k~JFxl?6fJ(s2_Np&pj$8z0S=Z|rKmiy zSFL;P{?~(w-j{XLvg`cbq>W%*r6&Crw-;APWHE z4pp6TZKGR^(v9JA_Mc$DSZg-gy8>wrM)zs2LfxwFC8ZDyt|(0C4%)Z1)`n*HhmqA| zF=8iZo*cvlPSzaO*79g!O+T&)=9Bv$v8nUL*Vd+5o)V<{c*J}*Bm|RdAjeldGZ6>z zid*75VqPAh&;vCPELtyKXQPmqqr>?$)H|MrADs z@#3s-9!9S=EMx?KC$r=q%1SmYCCNuYk5s=kJr+C9Gwqw@nOV!<*q^nvS(zQtmnXR? zzX6l{c00Hn{A{#T-zR3zc=IRc+uP4~Q1KwhDLI7^pm4v|brE&?gWO2~53bh{Z#wp% z1KcjILc6%j0Nn`gSKG*;$(2r#b1Fk*+sjj)XroXkspicyt&1`@G^jtI4ec_^z$ml4}`^(c19g`El{S5DA8|2Zzhr2S-(~&Tf9AZ zct|S=NK6oz+^mO#}HV!}ze(}euJ)zA`u!&Ij_&b$RQ%Jb^3 zH7$3N5Zf15)*!&EJq}a^UGiKWxC4okT}6_9je7q#yuHLbd>;QD@*S*9z5?BkdF%KY zF|(ecao)#zC`M8*5kZnWJe;OH+;)ksDo9%;Z3oU^yS`njtqRgrnewhE?oVb7vO#l}sdCDWPj|mV|ezazuZc{~@8`a4~ucxVrE&L!?`I*{b7Xf&)a25I-dh z0q`oq_@{{p<+7UJ%Em$;xV!7FpKl3B4RMBmm>C-v8&wsE3~EoL8rYv7kiJ4)XaIwF zetp(5>fT5a;|ZLb^_%p6FBK5t8bbL0P5KeW-AL`>hy_`}8eI7FCVNSnu#fqKBNk>> zLJi5#C#TIiBmh=5_D)tG6ed$B=6u5R3EP&iZ#)y?HNh-_n6ro4$i*JfH~$wBHPwN4 z5i4Jz1*Y!ez3u`@fs)Fme)BK^X;>PRPLcrQf%b{^f#P6qQCX1v(t$>|OMXDoKtrb! z=KSlBh`1)ZM%=D+df8A0tqcJ-b~4c+vpPFN2HhVd%YiZ_2XgS)p#03BD`OGjepagr zOX1zs<)IWQ&!Jdvq^nB*x*GB&)s_Q&ven;~K%KxtZrgoT!;?NkWm*z*TlDxPwBQ(H zNk`8)imq#E>Kn_A8ajg;6HaFq+njYce`IQk>-vrfbKs4w%*!ski?4Cw8OO%no|YGX z>qpZS@rp?wDbP1`EREY`6MCBc7yDnb4O{l;8L-8CK(OR>D7evKM05{EFRZu6${?6@ zR+PhDaFkq;-B>=R^hbx5e1M00kfbanNzln5$t{8X!VeF>eT;*0h5hvI@xUM2%f9#IuK$AlD86jyN@gUBa^iXG?3&iWh=zILSZb> z%?2V)NJ*~<0ctl4j0&pTfHzk4ld`9qdn3(0|HxF{>D(0jKBNNHc4%EVosqYNZrOnl z$bL`jo|gMdM9|6;rV}fJB7VtDhcpNTp`6*a^s&HY#8yNpm17HuKRyTH@cKx)0Eq*Ud4*OJIA~uZ6G}sQ=#_ zxcR|sw-9e~|MZi)2^YFod~kC>yl?5oqF8yRN=cGRRi-?)Xyej!e{FH#uct-41vCaV z3!2|=bUHL!f?){C2tbnk9ZBoQvIF+0GtElliv`3j8nICmp)razEf}$5PSF(g9E+u; zB0Reo*S+CS7(!0><&I`=fVEs7iQHb%cvFqv9%^d3@t?-u4J@5)L`W!*UW*i-oI?S1 zSi!DH>m{osWcPkMax!BM0ST-hbDjt8TA`;!u;AYv(gvdko5yDBZ| z%B!wE*km;8{M^%SoMr?upK`mM@Jpq}`|Xx?D-6xHBdLAKNBXCqxQYS(N(56Rg{kx+ zFOp>Fa=1yQNh8Enq0;K^9Y!Vr1Di=d;L=trR@FXKuApfOq@L5e&*k*MGif>ALh28V{lVSF^tP)MzdGN`1M zKwDfSFaVl^F=Wh%NhX;j(QsG!80!c#&)S5XItLw7VmaZi^dmH5q9GNO9h1{4+t7Hm zfLo-4(iZwZS3p*VaRW{RzJJldk-s*xw!|xt!RXQzm|D6jvuJEL^m${g6sl9(>pk540wV<%@`5I^QzsVGe=<_A$&KcPB8h|OgH~a z0XKDRA*zp#n!q_&N9#GFe}ysTy$uAPFIF~i#Q0{-JmqrD;R`sq?b|VN!XlbbVyh6M zC1EFUL6&1jhuFruDL07c^E?nPwFF7qjk?SATb^k{=Dm`{rBBc4JLZguY;jBd5l81!W-3}+gg`)GqaDA7h7X@#c?(;Q+F z3zlyvJ2|xusmo%DYUl5~2dIhDK}*%K92EJ_ZU1xrkl|W{wcF#uL0+iXT^{JA1OOu- zSm%=0H@_d0;X3!Nm=S+AV7k{n2nh*HdXQv|3ANly6Vpnf*|*Gd(LbO2?U;+sAC?i;patfAXDMV>Od8EoguN=1$W4MfX5n@raz? zsPl^rTTz#l1u3JBSgr__!O*RQ(T*jQUvk<9-{?$kNhzWu+xwHlvW9@$rkRqvi^XC; zKOs%wdeUs3lm#!2KahTfPXVBadTRiKc}BEj&9_ysYnqj&Mq81Cbkv#(L;v6Fwj!sH z^%(DU%Fyk{f?k|mfh+!V{**D;77RLmRZ?XAq67oNE;$u}bDf z^+)o;Qd`xe4ORPAl8yt8{1#=au<69WC0qTZ-9P-<`BdQ+X90JBHDCZeCJm-n9UamI zZe_}2C8g<1xl~dGw$62SY_40rrzKHcfnPd9GiLCLm2(O8{!+a#Z&mlejkW(b(7kHv zszU>h*4`O7vc0Q?*H%KT*LTWz)O1fa#kma#Xr1 z{I7=-*~^e21`lcz;iuu4ExmnmR-A9VjV#_s%g<;OoXtVVCrf5A-s`1w)H_{!>r zKm2&$YFuCLf5z8G?)0Xg;eL&d?j0Gc1MVKb z*yYmIyLBGMo)EvynowO`xB72N5@Q)`p5tO=J#`=Sf9v~TG>vw1eeqm&?K<**I3=0$ zztrJY`~;ZiU+KTV=M7?^Z2yk6Yj^CIiiRgc@1m1Xq2u1scyp*)M?R;ET*Fvc7!s1V zG#T35v4JlrvJjHARskce-|Q-z`xOL3$02AZiw)E)G!ilrGl_3v{CzGEYCy1dLJ;V9 zK=46StVt;RM}ecJTr~AWnSK7A3UBT)<6g90($14ITbUt<`5H}rk5Nq`q zxb7=bVELr-b`c$Z7zl*`YHGC88xSx4SFlyn1j=GWk9XpPcl%E;7X2>q0?lqc*VIPQ z(&UHbr?Y2_szAX=Ssbn4zM}DRAaL&-zxH>)yr1C;31Zp?qX4aWjG$^-l%|mBi{JCj z$VR3#-0%__aifyClO|W@C(D(7G}pfruFgeyF=KzOYu3L;IQVQ2jTX3t8tBdimEL=9 zppt%2H*HY0i)SRXM-Fe^z{$l*+O+(h96FdmH>i@V38UWM#Fe z@A_Foy(j#Vtq1rM{Ajq?b=gY-j3E2oSBpmiTO-trdaGL-S?IH;yjr$2hno6Y4~jj= zwc>l1Sf%%*`fc;_#YJbP7eQ^;*UpCMP-IB6v`&MhwYs1lX`06_M@HiKpGs~nqiL2F z{s0xSKeu8e4NH$&pG?#tiZUDRW9Y7b;SWxnit`;9O71t=)gZfCJu*b7tkyOao^_yq z9*af>FcjlomD`>Y*gfyIoY=~kiOW*Z_ckYh7I`VI4m&^i*DvOoV$ZLARbw`dp4MXy z`u*IdbH4|fd!~&>U-Zx``thcY`;nU>?|0axE9PXS?}r`lE92=PpVSo;=mYwn2Xz5m zmezal_an_(i?T_bdZ{zXITq}*!G69_zHt-58~Q3A7cAs{a`A;vYzQ7*$bGv<_ZO?F zH*Ay>{eX>|roS5aTm#67#9$Vt?|QjTrQ{621Q00*?7S%~2%9!&)$nJO!#ysQj_VfY z0zlQ8*?-QNZmj#jtU!k{AGmD80Cu=0=;W9Yh{D3(6I1l_0m5Mf0IfTB>CvOJ_t?ttgi?Hn0wiY(IWQ}ucC{%dO%`~D8U}S>sks!F zcuNx(|6l_#l#M7TFw>uGscsEk4ut=Od8b0Wv*EnYii92+h^9A zd=m8zsY@p7gjsV(8&B8NYF_E1ew$4eRWWC3VprCTIFlX!HX1tFRX=O!oHx9FeOp2% zw-?E+TAH9zExq>TBE8&9`iZC+LE78r;AKZsN%n<)TGItKdG}=VOgZh6Icl%AP?qZO zwv=Rb`(rkAiGZkfq6Wo*n}(YQ6l15f$NrkUol3P-w^&j)HV-0$Akm)9+d*@FR*p*D zSS__wZ#21)K?JOgve{hWcElam**O`qePX!HXw#W9Vs^`r>~WoYIh2eY9kYGR$kEj3 zkz=;U+!~sGH;tl3@ma%5FOC_}ylceBm>Y_bBSrz!5%!^AH9jQd&|HaMsvu4ga$*n< zk@zKCiX;30R|kK~38y~LQ9C6e_~4&DMJS{`-B8)tDbc@Peh^JXKe+tsI>9Xn@>&1g zpW$-+(hYt@F6l!*14xR=2aQ5{R06kv*JhjUCOG;HjsIcm(83G_ukP zq%<$R@KW=ad5`CPc@H!AAm~dW1ACx@v%ZY*L(A5 z=)(C}t4&BsVTWrsf~eF2ioWbiyxD{GyAU_@k)#6jmGvCS*|@j2K$p{vP74z5Y95zd zC&w)Vw%d;y;$C|fip&99?>LfD*)EN&KIW00uXsw?6kNifH}q)8>x6=zojrT|mY}&g zEDqnqz}?|sh~L#w=!ybjX=OLLT5~t!GN~-EtDf=vq4m)(?yRWN|K2X?9NEK9Ox1?i zzk^Nc#ntm*4GelIGYJa^w8J|+U^tQ}=~OG(R&S-Gx*hQd)Buih%o*-Rp2 z7wXCbgMl}FMCyXcZ9O|WtrG4BM%y2k-x-%T!{c!+*xEKV(*deHK(bky$8kyW0r{`| z<@{ge2OwXbd6B2?#@{{l+EinYvez)tp9Q3B2kZbZK+wOya@fJ8JHXUTxVHjs?7B`3 zQP(dw!WDPHnJX=G)=r@P{WX=jG9K&)Ppq(UQ}wjsDk3Xr1gt2#HlwbD0I(h8hj8K?~&zJf_YU^F?%mU=Dt;$X9!CFr-0HcW*U`L=t0anbuL9yc3OHnrLoZz?VkEWGCd?KfMkV`Q~*D1?))7{ zX>%u0KyqTy+kr}H@8AOKVNG{HYL>}QtTL@CF4VrXmkh_=5I%~%HsX=+Mr>GeO%27l z1#hfh2~!B>;l-b}$-3s0u`LxUXp!v#d9J2u>ASI=2(}_%B!DF z{ER@JqI}{Tl1tsNqAOu$(oA63y3m=>hA_Oq)2)Aq7wC*7*##-Gy~w!1OfEUyU*w{y9i@k$W&;Mm&i0eoOc9 zE{O-JOOjKqF7!{RtvV5o2|1g2{0lS?-^GNgP?Jb!l8;U;D;4J4`-$-Q$6#Jvso>+| z!i&4I!+E%f8Wm*HiA-TiA$Cy@xVQPdO`LbIOVlYz{r51~vWigK@NaG|Vt>r!cxzfJ z>J*NfgcICLqN4;+>RA4$QjfquQyBsnZKENc0OT|vKbk65umS^N0wdc=sZ&s=tvK$b zv0^1{rr>KybkM0s=ei{q>+efW6Sk@yWl=VV!<_yY5(a{@0-42al0Gi@tJm|itM0_4 z-})gq!+k~3ykvQhQE~9*lP5P1DvUwc{Ox%jrKsnDKJv3r1RlKp{osK=a5U^67PRQ+ z&|mta`0vqM1suUPW}6`1f&EGIpID)~M5rkdZPP7^ogl=3_6$$(i!fejpef#Fo_G14f%tKVGf?0lJ34Q`HaiF4-zh2>%HrKs!uVjb(#dwANbsAg1(i{Ue?&%l z6eKB}7eq3X?MF#9Nuf}G802m0=oJTcwy}9pI$eoQ91WINKj>swEw`FCRv`5d3xxv} zz|=mDuEEPCHlfd3MYL_@w+H>8W5C*-{Kx?o%M>7)N7%ds&e+Rr2En24r2D2W)K%#{ zDM-g1T_ZFyuB$UZg|&m|FcQFai_d}`QG#YPlM7=?xQTu2_ap|ZUcrxM{IFdy))v_* zO-^C*mz93q@0*)SHg$dMaH|C=YMN6^vLw8TyZtiI0X_cE{Hk&!Jxsl&FksQ*&F{Wj z$+s0qS&=Gv+lcgce>v6H2drK-$nK$qNwjG?ZVgm;!Sb?}jlZgTL7t0ZoZNk5oJpQH z4NLD3u7MVI*yayJx$p>2*?>r@>(d-~FHk$yuC18Y_TX6p%Ws~qfM?X&)H$WE?Yx2S z`;CD!FR;O_{FqggHs4kF;|H*mQ}Y8}3Ih5HEe?u%Z)`a)00g*4hT88IxLdJ}u2F9J zQyHOCzsl58+_-4`9E>lip$SZnAh(0NPNf+UdfLiQkShN_u7~r^Nz{<#7yU>QS?-P1 zCh}SS=0?*)l$94rO$B(`31+bp-*?vvxx>dRb#tCcJ2i5jbQ%t!jK|2a0%#2fdDBsI zBQBaS0EF)I({jxs8Nb{9jIOk==^kq2vB$#$I@>_;t&0yILsCmH;O!woI)-)jywrml zGA+hMT7Fri#28T>*^X?ELKU!;$K#@y2Y+O6{&-O#t5LKW;M-*WszoR&UDK7-AruX& z?t&onC@=NJs4AtiAHOf6JA!DaCtwZPE|1mf+=`r<`NQ*ud%^7NNX9>`@9{g_iwG|D zR$xfp-&&-#<8JD+Sb@yxHjI?;bdA)I6fQEAB02^)HVh(w(bsht(3#h=o)#X+hqr~( zOOG@o8zJACJQ+I*q+{f*_6vGnBtI!8yDQiLt4MO+(aOBInN5s#_Kd&ZIhxQecf`*E zQYFTx%o}^lerqgHEGtvvKCsALqTDaO?|dq@Twh!@xHp#KIG8{1*zxSDv>UVl6Vn2$ z!}*|}4diT_f1%W=&uc$8b+96<{;fp{l5_*4@0CpUA`pM_bMfe)x_3b`TO9oT94zQ} zY%*N9$ojw5EBdGwU{}pgl1H<^)of=VnDr&k*?k*Qq9nzd&Q+;WOSyR|`b%EY31<(u zS`@y@U|Rj4T(|Yv$R)33VlAkVZ5g{hN%NBTQtjai1*nTOBx&-c@nA=k?|3GO z?q6j*+vDny{-X6Io&|dX0XDF4yEiRKXJa}Mc$_v7C9`<>ievh|SZ90xWB4g;ccRg4 zMy?c3yW1BvnmHX{M^qk#8a+b6dpH85`C+I6BEt2Ej$u=Nkw^Mf8>M$@VVZ^mJT*ON z^{t>8gd%IE3*MT!iN64Vt|^EdC?LDzj{+B)qTE%Lid8hU<0a;et>_%>f>;Koq7f1T zqLcEBbw;0$wbj`Sj$U871YD~!3_0RR+C_*QQ6gY^=R?>qrmC?Ra;dZAo=G1!TUcIy zUa!J!%8n!SYsfH9uf&#AHimp@Lv&CY9F<-RalIKAnzaHDM6HN z4w7WZ1U~&NijLE-Sfe*G#%4FB!6#RZZ1F$ZJ0t`y1e>8qOCgw-NT!iYj+Ma-3)rvt z7`EY`A;8nT6_rP}n;}nM2Wwux3w2;5vmjXZ)-ng(r*7$)tf5RUYakVD%v@cF51FEM zAS6gy*|=p6sNRhn3rCu3#Sw2`pw;IUk^`FnC+79dWN?CgCr`QyzH=;DCwqOH{{dum zRg|{gWQ}%a{AbmOjrkeGhiSQ01e2>#8P<9N_F0FFL)y}tx-3m+RA=pJ$+vK7?J2{p zd=`f~L#~e@C!Pig&Yz%FcSd+3U9ZVZYa1$-?%j85A0u#r@TMKpJ}4FpAG_>&a7UQi zX&=RG|NZg*St%^#3iC<}OY&N!G5dR5J^NkzdtJTzH;+T_JcDOh~)lgYzHXvJFWJ&j;xv zXI7t!oZADi)ltUvg+aGmUyg5gm}^c+P}&al(ma)MZ_}>A=}c6Km2(5mWw=fJPP3Jj z_43d%sDVSXr%o-C$eSwtWhZ1q0srKR9aqpK?keZ-`AZ6fm^w&ZY<>B_0ro9kzA#<> z>|3HtlNrX2x0)L2)4ZiWujONxs893e-E2V+ETS%K2h&!_>4gl0X^_50v|Gos>FfQP zIwI>3zkY2R%UzSMagTDZ3r=BCefbCV0NhSRN79(>KR%N$7cln>`i)>4;E}#VOM%|@ z+l^JAPQ8y85wCN-NQLjA3N$nIY1y1!QK_g){MmzA!uN5n|567c0WUhJWYTdie9yd_ zuNY+iqL#MIMev0VVW~$|8@1GVkpF(kuI@0-sRY9ki)~|UY0A1Wy}YiDqO2?Tan76n z_=zydWd>Rau%nOov+SBTZPLVx+@a4wN#}&ok9WjdwDnmR0%^)Od|E!Bn&eOPPzVYk zEERYxs}r`;r=r?l32#KON<{<|09tr;?SJ(UFUlF`2B&Ens070ki}^Hqf%Rh&HnNs- zvSlIpvm}gEK-NJSZ|AdslA?f~)_+i5zeq3%3$L{ZFCJ_9S~qu59rH6o>rH!i8s5r* z(&Iwx|9z2s4Cp(`ODF2x7iz?Tns)uFdoXNQ9Jwbc`mvP#kbu#>bl`rCx#xiPRdYjC z%`z9kq;wd3b*qh9Y6QZ3`TILK?(tj~i>W#t>wRRMKJk8tf+ft)ORA}~5yyusU6hMW z^!^7t>6EE{+)c_)+<|1B@#DR|*Oqa8u-&zc%irn~(H!zg8@%~I1H!kH*UaT@*n1ifD`*Dz(7{?qHZd5i`W0heMrp!7efpYqm78Rgj z(Gx|1Dj{_(ZOx1|EaJjuv|&M3X1wklwKGoZ1SoEc;`DqgeB_MyinMt|z-q@iCtM6j z5IA!jL1UD0KnO3AMv&Q1k7o5Qd3|G(HO7aH>beM zOlJbFx{CT1*TptNtFbMbNFJ{zOsCE z?fzOGA#=B8_YAy)#GcusMj03f{E_JUUpcS- zQt~MDul@M@A^l1l8VJE@r&iC39jx4|n9}Q(Y=)wn;d5*=*9@N>oB$LrP{qcX2|mHz z#A?%4nWYo#PSED^wMhY*?oXkL!S*y`F?BMn<>v<6j?jAW)Hx3a?EE%6 zh;v}o`TpPY-4j6Qc{NvEIo+^bK3-L&{(EKC_)CkyRsqGODtoYFmzu3S!M?o^IB4~; z=dxaTynRyxYhLeNA7bmkL5C{sS4hkl82f(QKyQ>E zdU>pcGOKsnh9teF<(0e!XVOBM2(xJf4H}6RDjN~4AhBq+$_ zy;#OaNhVPwdphfo)D}(O!b+7}x97aZN^bPYGF1CMPFFNKrG1@g zsknyVsM_%maNWMEObR8Nv|?+ur)so*IbhcojxqPy^HOVAr>44D=gg8eAUH2+PO((+ zaX>d+X<{4E_A#u7;o48WXLU$j0umeG)xqwZ1aT-@H%_5IF9E;8QAjiNu%b4$?69KJ z22Q8Y_vvPMtX{Ws3p>;Tkv;-ZPXYt_ncEPOs7eA3q3H(28GvKMnX$KTH6kFU5tnD) zSyyeyNnf6FC98v5NK+xm7!33Ktw8tW##?X=-AH^BXDC7#7AyzhJ{0Q-5&~Wb0tlhN z0K(zmT&Z&ioXZ)|ow-DFR{}%u%j)#S`wlxZ`~Ld)uYY|b(|H)kl#LeXo1tT}aL`Ag z2Lt2t0`)a82PvZRgze1nw?Jgb-bgOT+64!Tt^y5<3%1S8-*2Dn*!T8uH%SPt3l4@dLf0@#0=>3}ic z6=5hQ#lXg(MakIiW(JEG@NWT66qCP}h0md%)S!~gB?v?J^FB=8tMwV(eKTYce)<*6-hvQt@@gbef^LX+<2rQ>F>xPXI@S zMQI_SneN|IQlvT5y{ z3iz4&BhF!0)Uk)|os;jJfr=;Uh7yMo6ro%j5AiOpFzGM%z zT)mv)@tCZ5aTxO9rh$j?nH4y6Y4gsL^1q0@1~p1u>ZOoe6A; z5R`ADsz-(Fj)r|48ulyw!-qt(pB)KrJZtc>>aPU#{|@auuxKRGkeu#GTjx>uTPAoX zFy^2`U=W)Jcg3)+lg|mM84nf08W2BzEo+v_!s2Y+^chG;{6Ul6lv(AxotbP_xL^#TZsZq9FWynG#T>+Eon*s*ba%BcZ607{iGoU8j` zS1{%0mlw;`A`~abI}u0R(Fs(cO~;Id|JM7}?B+y;vDClX5>6pg|nkUS;Ey#;teMHGWe(=LS zh*Vj7ySCiJ77iY%kD;W*!kalhNG?&n`M(IpY~CHVs_0sXNV21Z?JtO@+4~?wo2mSg z8N0T_bmV7y{UXv3QydUJB2H#jUu=#el8;j=kLIH>zE!H#`fBs zV=9xtrRv>#MAHX{uw`o~pBTb6%o$V9!!CYxbiXU(a7jSK3kztFM@O|0uvbQv?D$Ct zh}ShRTTyydB3z(eS_G>^EU8T3;->_=sV3Cal7q^j8ufQMR`2{*XP!D50CFqGAcVgH?U%1`or}^$KJ3UlOMS$Sm?E z|A_KM1e-E|{UX4C*+gp_!J;qpdHvmU>K4LgaY)7Dw-VOqrjo2SK1&6YEPf|T*-i#F zYyfOZNo?S=NFR$zv3*LK1v*VU7>k1aXWSyAmS~kLS=&T=5HN;;#RgXa7JGyY@(kz# z3jkZmGk!rvE!0`dRvksyIjY?eRIFv0yqLeYll`#X`qqB}_)iB)GJC_Rst}nvI8@2e zza*D_e=X^<`V^JiDu38PE}uR%{ADs5lcOZTExL+S%cbhmXEo9$q_l!K%701mj zXM_uM6En=xribuK+dSry`Of1d?VlMHZa3Dy66toYqC&3jRelzN527PB?G9a4bX|c< zb|?qJ2l8i5J6o9$w&C5@+at2Uslcxwx?A|&(bV$Zcm1P!jkPe5_WG}f1qZDHhD&`x z;#*r0C}qFrIHlYn!4=nwmhYeHmBXA>IV>+}Fb-GZ>KuNK?NINYBHGl`Ed zvl=}+;{~&CssClIFyR{*9bsVQ$XRf5Wj(?yO~@A-vqJEfOSDa!IE=vd^Xosz?tAm7 zNZ-_lq;dgwdEn!9n?xtqYTNzuc@r)E+-v(pUw)H3*ET`p=YhrUha-HVW#;;vv1%ONI*9N^N`3)dnczr-rzX* zy|N(Sn5EruY~%pK$wv*wh(p25gC4sm*wgIcYO`Gw5#v3nZcA{E5C+{Iip82^9M?SP z3L1M-jj`YyAq-67yU1e%)P9?xdafu7Cfncc)t1=dFn_!ai7b5nKo zzL)97zE!za>v_GYf2{xD=jW;mo65?XY6%bz{eC0j*NjEhtD@;U5MTfM=MLDYXt_f9 z-)%Q4E<0bjM%HZj^@h1lEE=mmw0`}y?89Mx@iC%~s>==Ab6>%5b>iLQYL(gxVo9!V zzL8D(sDK-)I0iL@DlmAeJDipio+gm2?S%Z7j&;&$_;Vi!Sm!3a2DE?r@e9P+&T{8c z!dYm88_elWcU~!<826%13CBKHhCX%eZ+rdBcjLZ0^LpF9vQLMU&)s3Y?Zu)*UZrpS zsO6SSzg@Rym#byp-|kE_fpy~|yDcj`R;%;zkl-}8Zp3R#GlUKb43Lrw@c_dJ)q z-H>UzffE#G!{!W^7z7x`ex=IiV%q`kibgx82T!-jaLGY{uL3P$>le(lMc?k!bP04q zw*<-w;CXqjQnvc(n*Aajcnpr;G)dMtafAbX72CB|#$f_U zz#L*F#tF_S-Tt>qJi^$h6LZNNtww;O#hN4BCI*o+29(@8Rc^e{jD>Pk^N7G9Nfa71 zlq^goJ#80y!ow+?(o{kcfUe^LC6a2qO(K=?;ZKaKl1(w{S#!FR*Tq&6FtCXNP1#(+ zqV~oXEy1WDAr3LNX?jMwRLYbiY}}MEjUfG`qia+E6flUbH>@q`E$QNsd$FZe_Qmzs z`H2KxSIMDLB?GNs+uk-5d$L}Tp{|T9Tah!AxYnd*lx5YTP8Nun6axsnv${GU2cQ+G z>a9|!2&Yze^@8BJpo?Dtl)I%YHH&6ZEGZ^c32iv56bgx!GZiH35lo8j${|aZKVV6~ z>CPn;>;H^xV7fF<7PSc_e7cO=t`y!A$ThMcH6aQfAr1!8V(FMOQbzj18YCU~_+09X zanZrzF$X1#w3m=FTkCo~ADqT1tZf+fD>ta_*6Whw}LF(Hho^(ZZ~N5b~q6sE)5gwaVXr z5S>ZA+4H0_H+oU|KINbNmJ)#fYW?)l+IW5(FkpOO81u``>afBt4#gikEWiXW!lVz* z6sZCmVfqoD)39pClBI%8O-dl`*NqS|qcoCEX$5QdCYnEDEae!1L}ApsQ4#WRiLyEr zpWz3mbjDaJRu)T#kF5zam#|DF$|Hu;mdBThH3Ev|2v$DT3B>x`Tz#e>>(@#<2$F0U zn5f#?ATjI`F5q`;=8UPQBCw27`yJe*2yxKW9TD3_;)ve}--G+mlDN$60ayX)@jG#L z9!0?OcnJ8gh7P2me4Eo$v%cHq8cknYb9V>ma@{0M>K(@tHYZE*Br}PB1A0n#YnZe0 z7P1k&NLH#g9TT%atN$`PL0bQ6kW}-6fM>^mVCc3GN!)WcrWeewf!VvBu`*9+TNB6x^(@RCPe1?b?q26yX;iqX#W4bb(oI)y%%% zj4|bv=9#abDvShZyvGx!$ImI6V6#=JTn!^Z@GJgH?E3n`u4YndZzVirf9$2n*z8ZC z>Cv=ZdpDEavVhF{0?w3$BpIBLW(e4z2_VVl8SaAL8RQS#ob)K3aL8w{GD;i(O3O*e z!ywJOeiVGD#~V}64-HqZf}zI&=;F?l&`2@V6*c@Lr%oe^Nl#qF7l8rOxx^K#?$}EJ zrCDe2)PUhesNpW&r#&&69PdM03&#Pi=*BdrRfBCva7-U*4e5lN;3kr)iryXpXmH?R z$%{<0CBu97a^hYg5Pr*Ofq~AP(u_s$0SNsCm)A;B!Ur5VY}tvk<~VI9e-XM zxQPW=YTwGVPrq`>6aFnm>g89-)}*=U#5_DJi#_iAUBFiJi~*vwQgT*S?{pz2FVMkh z45=}6DUHQ-pAz!+@9twFYu}fTbXci#@?71w)Illpq*2=K`@FU8&=F0Tc$apacZbfS zq|BdUZl1AGsYO)71+1|2v|m=3>K|d-1KfJNkOA2~P!llIZf2Bbs#^1%`Lj9viEu(p zJ@9G<1mYEy@W{ormty~3t~>-=`tfjyW@( z+LuhuY5-cjMMDl`Y3xm9GdlMgj%EDMGF+L)zMT%1fItB^EsZ@n(O-Wdi>G;N>3_Qg z(x$i{UsJ!RVmS5WmDGVcwuKbjKco)F7uB!3kQ$Y~HlzI>4}iSC&gwVH)EzdDE=qG_ zx^dAS)5S#Nnz|uGu#P01OD+%JD}ldE4S&Xwz(Cb7a22VVta1wcpqHSHv*1YJ_AS|r zWa#_P*5{Y_r(j8^%AuwCeMAJaRv%6}Z36SA&}Zyj`5)B6-g+`?-GEv5!!V1{`xSuA zC4d`Mu@VQ5=ryDZY5JP22)#LibL+By)s7DCy9c&` zrHY2~NXsTkcTVGi3ykRTh_NFchoWg~57Dm{efmaPyR-K(PW_%*LqgZ^9dG4=iN8af zGd*$Tx2JO}Z=5Tl->ujkeeC+26|J(H-`BUT@H9@6=7FqKyxZioH23cGOl;BwPi(Crpyc}8~$ zx<-4l#0412lgR4Ui-bYgNi#;OpgX}l_c&&Pz*(AIx)$Bs(e~|v9RLXoO*uUxRXMBn zC+=UhGb3lj`OJS}7WUDfk6CZ!-kO=Pzo6NQRt#MC`epCQ!HG#6&Wx&#&ow1&rcvSv ztBS8(v|o!?Ctf0#vxC$xrZpZZZSn~Zm)wfuWbzX$6BIZ3LHwJFgq0_nR}CQo6Qu-e zMIU`_+NbCikyAKD;Z@gLwpSY6GM?&j%a&{BlZ%kAs8=AKzkgh<{F*8@+Kn=`m@9Z6 ze_xgwq0)0Us3df6d2D&FHW$;peNB7qZK|lkhrTc1iq$fs-PX#t7o^JGFY^NmyRnG! zuD`xUD1q2cOWL+P3;5Ih_$Xs>qFxn|COuDqSSj?uk52 zHQU-m(2C!tB|5T+VB{4;|j?6NmI4&j3f?sm; zKUGSaf0{1yr&qs-GbMg{b#F>?>&(o?gx>NI<%e{QncmjW4NPTca?0MTpC+2ZUKG*N zsl3W{YiT9ywiXVk-vka-bAPf^WYauXA?JVRIRrMNt7pBNleXgP+s(#WZl8wkUlPTn zC5LTGqipAv+_>I2Cf=3ef~E7WxAoehmj3&Db9HrsQ;n)z@d(fWz{&~m({n96hL`3^ z=cld3YHQ3DrR!%0-rgRVy}q;p+;tZ3ANnKCKgJ&1@kvGK+FG;Bs&vp!{t8jb7xSG$ zhrY3PyuG6%vpy*ElPfq6aov%?yv4)1-pru-eqzxQmy<$CmlGh?DyMU!YHGk(l-OD{ zqPkd0rGenlypw$Q&XbdX6eEi6ZG7mER)rp_j}#Er)E)rc+WH?FHruGY5P?69xt9d zfU=e_OIYXtYUaHs%ZZ*OL`7bAi+HZkn}rG|4I2V}w73v7tv?07FBz?CPEqFl8#G}{ za%AseCKSnv+ml+Wh6qs$g*X^)EXJq;O@|S0a1C8Fb<{?SqcUs2kd#y>iGv(`PPVa# ziGRwDbUGV;Mo9qpVZ1^3NN9-Jkk{#In`H}{?@o@!>Zjw>i?2&&cTUOwFiy`cZkR}g zT-Q7lYDB}DYoQZ1th{e>z=MBvo=I3vOBU}XJeO#Q7aPTu)-}x&N8VGyg3j(+YI721 zN??6yFAv;2vC{)@z{!dzCtw$nrLfrK;)6jYDH*H*Ajev?R>f{F&9F!#d>E9kDKQ8; z$v1Y$iB%>JG+pENt_GR{fvu0Q=;U*k*~@3y+AJUW#5kyVbwtGKW@xz?g1n_|?h&|u z>e-ihNy*VW9A(9p^G*!WOQPMlgnmKdHAqLhqwxT%p8!uOef7Aj>+!2^u-1yhLb}%{YXndj z_pnYz-%q98RBLP1C|eqbIBdbH8?5@IY|oQFfhDk_Kx4$Ftrp;?fy?27>V)=# zCDUXn{)7dTDpv}M$tu!B>Kr4$M9IToLv(lJWqjaD43z;7;=kYm$8SYl%`?W#4@Uio zsWZ&)oFXc3nvSoK7^TN46Sq!Gr>LNm$l0^YxUM&#Tjb+XH$KS`5~-AX}B|s ztixq%U~`JGn9zY80=a)rK0EiOg&MM2k0RIJT|1kS+Rx(^Pv$-{`dm1~k=JcB8&>Ec zcw|1skiJ_nE{Oiq$9C9GGe#R7*b3}slu=v0EppE-n>#T*uziOLF`k?7%DEHgmVsxS za%iGvnsQPolwj)E#Am}l0}eJUS#ncm<$GRKhq(2L=hpgI-<&y1mekb&Ml9Lxcor4K zpz!YuG`&?AItOJ50A{3|^E#uzGo>jOtaU^D{sRm27Jd|L#O#-$(a0@U9ryh@X+qvk z1tc9hR+3QtR5p|p`4tc(u$PIX=(2kCe(KgM=FLHr)|@^a{!oKtsl{qXa^NUD&PtPr zs5$+ETivZ6i>=uFVx>>d;MPl}R4OgjVEWO0QJ{uvq0Y?wr@IawJ!yTnJT}!fe*CPz zx=TAnko@6(cU5j&dPDu)HDAH;+V_Z<4T23!(^rXc{U{6Vk4x;>jBY^?+x||QOv7UT z1`Y&VY5EFiF6&=o@~x#^61!Ds9`G<2P?w-N#uZoFSsAWssbyM}YlBz^Gr(MZ`x9Pp z$t5o6DiFJ(ZHx`? zaDDHB88gnZYZ5a{j&`;Qpxz98T7F-gI#8RL{mbVoXXaww`S9Pz5+M`FFobXo|HE}dA@YaTfNpWBCC>6ylleC`(j41Ezb$wFFW{j)ACy~ z&q%95<?_*%su};g!B<(N`&14K6n;<NovDqy1r+yuYN6Lj9x~94M#DUJo`mH{?~x zfRrR$xX~;#;OJ)md|^ob?Y|!$6(w;FM_6%T*H=1$M7eh6vdybEuvlR)cDw4Lqg(td?nZp! zq*OI9{jQQ*rE_Y7Ax9S{$@)3@u&6mFWPVOey>hwZr2O$H9jGq8l>j6wE?Ec#j*n79 zzs8fU;Ba2<=$-13qWGPL+=YT?sZIKDW|{v zo#D%$Zn~^5O!v`Ox)<2yr5l=h@p4jl^o|X;GT@7cC- z?aj}I{#Q3f^cms=fPMoDEV6#W+7Z~f#6ql)$pr6gj74S5ioBaz%zy75 zPYI$jkJwzh3RhgOVE67-#aVdk$?M6^3Z7pvE@^xnMy$nEHLQE;7~&->r`bh|_)g7X zUQuL*zj4M-(eY7#N0y%aJjEyYWTGLjO+eD9t_dW`xR%~+La+!RV4Gq{rKY;)w@qA} z?{QkZm*j>PSjUrZ)2czdgsN!j{66;Ru+fMnEP@h>Bnuy&yq5LY+>Qg*C?Y27CWeWr+*jq&Ee>^vViSjPoKgGvi6>n~+^Kx?U#jSfwD zIqzuFO{#HGaKLo+S%q#O(ow}%lQ%axw$~HyQujoee|@S(eMI`zTy>64E$1guAE}@I zYL4njlKD_xIY8vnDuTVdX`W-$j;!-Z(E;=9?q_iHJFCU>+{CyX&vUpiz(D6tJifpI)X3c zTVU7-^qpn~&#sQ0>@)MOq4l)?Dm8-j?MmAS=x~q4iHWjHDXNo_$!l4e5-VCL=(M-- zjk|W4_^tL%0qhrkm<_Fb6TGbyF*YN7!WYab5Z6J1K2({@M}83_D?2#F4+O zZi$s>Nln$5&4|^aAQlU-*l|;laE@HABmk9hRsQ|{+&g=9>u>AUid8E^0-Ujn2j;)m}m6lYN$uGE)0L2h)eTi=4NF1iceA{u`45He( zAj6ong(07sf6^J%_4l2;F}K9FM*HJH`Rb=fm4#AT%KnQb<0bUI?RHg_9|1K_6i!qq z4VfOs6{We);UA00Zl%Z7qjZzF+@^(BaZHSHF@Y0APE;y+PYPV!i&Q!{^*hV;qJ*Qf zFBq$nDz9Zgbh1-3Q`61j;Ov^@zltiRMpT^Dgk3rfSysIMkP7t3$=|$i z(U^B5zzx3f7Tg|FX5NRKkn&$n@uMRI|3%HWzDvB!t@(t)dt@)k6@vFurlfSzjb~u5 zHXsM=)cY2R4d)%g3eBLg!DsaGtW<{08&87JUU=UIvpFcen7fn!FnI?jv8AG1T&?Ep zz|NiOFmI+;S&5MqUp#Ftbvu;Gty5nL3=PY1I2#keZ=hSVI1%>+vCJVU=o+(BW!Pwv z<~5j-nS5p>V3c#4?wqR3QriAYX|!%<92?=zfhkuYJ~cNBg4BEqhqFG1iYz5fCeXry zv3fmzFW7fmZ-+Z5(k%orV&AK%)jqxr2-wH(VP%WxuQ3}=e@SqDo4hS2;I2@}hk2ss zMfzjT+BA3jcC5%0d+I5S(84FjcTGM47Tw~%B(b_9c#6*JF3T7S#D0)(;*j(>R5GTW zyv5ll_#OH>{oNC&jneyfP0QGC7}>D-MD#Tx&U?1>uA!(oq1M9XomwF&k38G6_Rc$P zqMqNG*S2TB;Th=!QI(Qf0#VUgm!FAEIDc!oXxQBPto{r`k--Cl6ZCgpXU=^Sc6XQN zi%V4GDEYpa5&i&EvdhWzDz*gb?Tb2%P9K|Sx+H>88YXz-6FrP&sv77A!bc4LqiS|u zA3o#v634kGbHrx3;Vgc3#O4*KQ;A3aFMp=8O?RF54+5R%yQe8ENGz@=dbl+&AN?<{JGmZeN>+j(pC7aCcSIt>+5pWC(W%GA}jcDA{5Wzj7~J?VT-$lO4_f16*+ zTMdnCR5NR~zEfk1HyYb=wtqogUY1O`YSmYT*XA9@T9B~*~u$?}qS%$~rai9pe z7pqsKK9C~!OCO}J5Z}>!7VmF82IuDu@Uhn6K3h(a>OLiPJytOj&D`wzz0-u5a`O!^ zd22GxCR%$o#gDj3FCx=vB!pZ@T=@jRp6GcMDb;aH(rR@*%0^4YpmQsK$&27Etja7qqrZ-bjVfZFAyx-``Jh86f2LaEOjD<(DF zske11yo7HB`}rqe^U?otNkfzx*KPDO4&{f=6Lu=P0{`GT{OEKsi3Zk^?)VweCmI*y z7`|>?+@r7owny-IFzaLOl1KF5uZ2Rvsge$aPWUM@G@MVTb^SRCk~C-tVzaeRl!M_K zAiCD6(Lo#I{5oAz+7TYF^I=JW+-{f92%nhxgFwF*{oppsjpwpUcFw4A?FNXu$hdRB zFV2B${9N&iehe#|-y?vo;7T6O->#JPzKyK`KeE0#>cDz1G+^^3uI6<0l5#QbzaxQM+eH=ELoym>I?arenP>y=|KF51&tdd0u z?BGCi{g2`R)6fg@J}{K9Y(B^A1c9FoO*huKTz{#Wyw5k{DerRqlk@rB?Iu%m_i=@5 zm#0Rxb%-A6o=<6O@GONttM+J-P#f1x)xqyF1!s&oJ%Z%m_gj7wJaLK{aG*jM=T&uwqyt$IM;_7aJ}S~j$0BoJ@gL^Bjv5P_f!4nUHVFl z@VF6mypl3l#Ny6>5ykGz;q&-&KE#lnrg}b01Sb~rYWI%x%DsflP37*2)%0q`2?P6x z0Xp#Aw^f{l+j|ZZSy8K@)&KfM9%BAEI~Wm$9?2CX)xwa{o5<#!#KL|Oa{NMDY{2*; zI5UWrIrvtm2|_U$WDfE8|u{=@U(yU*I8!$|j@}Wud%(2hKuf zyr<``H()HB$})Ovc>4QiM70*$!rU zx$&8(wFZ8|O|Io-jR+_bt1sP&V0ZU{59kXs5a|s{@bcv2V=$B=m)Vp`VUpEkjMwVji(8cQ{ADIFfDzIC2*$j@sPwhG z+9ZN;)7CZBrVV4*q7TJ)7GwGj%Hj{icNR6rdx8Z&6w0c85Da46&XFh*>6&ZBRz^g| zjPvRF2({5X3`wrT=3NO1ro|#y?dWG1f6jOG_s!MJ_f<o{41?M!A6Jd{sx zB+_GTC&jRpDBD`fK(#5{^H3(l?@6;oi8?} z-QnWI<7VMK0cX8G4XZHZ*A}?`Sd7d{>Pur17H0iI!#GQ8va->YSZDylPr||ZAvj{G z*omK?H<}xjAhNz+QGY0!6Yg(81os4H+>E#sEy=Cro9!@a$%% z#%ziwYs<*LK`Ma>O#`f0cb_;2sd0}gn`b3YWrqHjbpgJTQ47NIjlVSnSF9o4K%=Fo z(7O?V*kh%8*7s8cT9Fpx33x^;IN1y7hnJcU{UvTH`RRD~4|bfJeO#K+6U_f1AgwPt z^DAzWOfY`CWO9YOE^d_;mc=7dYB<>BaYS7$Sw4~!pMKA|F>icaU$<6V^kMO1v0@0C z$faTvB;`r@87A2#v1bx%_B@E^z)f;_r~qYW2GFuN%Nk(|;qbC%(UDv}olp%mrTlZn zuSx4V5cEhTB4V2}3$qfCgv=dE5#P{T;|}$Rf^gohDZ(jFN3!+BY+?q zNXX8z>hQv{_^}ZDQ0sQI211|d@0B4y^9BACGsF^jvWyTAc+?-hyhkWoJW{BDV(0xF zrQFp|>+IF?2o85WTg%5vgd>IGv3@t1I!ENuy!T3jm{-`gaIyM>hWY@czfh@Pn|Y;! zs}**spI{dNoMkgCC7^DxY&+k~zg#rxhy`@Pdveey>H^NUJA>S zXRYE_Ouv^kLzMTTS0?1txys}xYx=JbJlvZi%1!KsJ{Eoq?Iviq=-fO8<)M!L*kDHW zujD160)HwKB4w^R$u&;tQDP@~u-=&i(=zv*oA_06ot6knjt(RPO*lK)=7WgF-GAC=!AgQwFQ_ z=p);N;HK=4MKtUb)z10;Fv{zSZS_yJV!jv;?kRAGh6+N(+v|yNh7{MV^_kvZNEs(X z@XZId_3o`pEn-~_K>vHjet>Uv#Mo%{$lM~7y+)=K37|nI5RWZ)lRsTOAUZ{l6#CHAZAgg<_hw zjJUEZV+s?-dhoZ2(z3Thf12DBuCRyR_s(z|c0IF>^@xb!XI4ZAo&DqncBB1SlYb9{ z?3q}`e`HT8tNlSKddxsR($6tud+1P=D2Se(6{_;w&`=*N9mTE$yS%ONwg*HB%H#S) zW_lLFp%vt_*#xRw>%=rTiMg^lZ37}A1bCe?C91kJ7Wv2WF}f!BC6JN8 zD6_y&NOckDs1J9FKI})VBuGHVw%i9n2xDjtRM{qnvNtHz5(+E;{~AO~xAr50juXvr zSSqeClo=q21i-EmO)7;Xr!Cbst6~tLYL4}<<+pU$HRHJ)hJ$P}U`tepo%u_hPp3fH z^1-QwdY3f-^|$?|5*t>F+VYwMv{in_>FLl+c<*w!o=mLoH*3Q)pFg>yytU$4^= zU1t>pPOH-W#D)h`jqciO6-J0_sERQ9_(#2~+H)@0Air+Yd5Ww0@CH5SZItr9QKRZ|gPwhp>1beXvP-_>!7gw~ z{ahBic)~scbcR+bh5gJ_XymL$vI-*lUUU53q9b5uW;05D(y_jlCRL*o$dlJJw%|eU zW;F9&DTmJkKd+5zZP5=5|4`Ap&`#SDl=viN-jinvb9T~V@b7RJSZ7X-mP9AFWsK~= zc0}&vjGQp+F{NT@+pw;Z$B7Lt7mLK-Boh+H9_sXto%OiH z#R|&tMj@h!8_0jd0Eag!l^bF9SKh>lCB?6NJ|+45O~zaDcp8|Pe8U)7u8EVvHMLl4 z8aA{oacoJ=uk;-3QYSqAcx<8@hc<XsyO=J|8wvt zW7C#Bi+NV&xX61tjzxdbmxe3|Sai2RS^Wy1&*6RAL3H8U>h-LP3;(`&Cu{x`E~(8@ zT+imLI~V_6crokx&lj(Dhj^`=Y0aAN;S#RrK7u=Cb5<)OUn|~Gn>BJg#IktuG@3k* zg&o*qQKCtF>{Vw^pQYsp&#YCJj8)`&A1@qRa^{SXqn$OKHl<4UyK-zx@+^&JRRkkd_s`dbLj`%P$ z0pnG04PE}FZvu?IjhngTbjdnhF-nQP)A#X`Y2RElcciIsefV^#o_xC2y5MIE;U&aS zcstpe!kC;EuOuXA$;kw_5dEDDWSP{R=EYOpf~4b=wr(#-TVmUCvCwO9Xr$>A1$Kfjg= z^3RvYQ{Q~H)PFulhdj>d>@5?4KzgXcBFXVbo3&gfH<|s!r_EMdb9n>rK=N0<+HZp!+EqXTO}ht?TaOt)NrJ zXpE8PeI(b|V)FT$$lZNP&w?d-iRlGB;Zz2skf>p*~m-mYo=vY&kTf^c^#e{2C3*ON3@h)<=N;%xAY;JZD{sFS+(B^18QT%Ot z*k16-EdA5Wk~!l(AwCP6UE^&oiXd|*`w5>jX~`0FR7~LRpOQ$`rXRnwI$%ZXomvaC zx;626ojGC6wY3`*^^g9ug-eIUT)|Wz#dlw1!kLTfYY=$6n=2lchG+hFV-trs1YcetErZ zWZJ(8Nvm_x7LL_St4ZO;$vXS2W2R~7uKjIN!oO)FYbuH3zLs@Hx==~MtVx<_V{*jF z=^j!H`Mf2C#}|H<+>z6$dKa4Lp7He;v-N4_${lc?djZRb)&@NMNQK$7<)E0kK5w@!y@GWqe33`GX^{BQ;3EH!}sdBKpI{lr$l)9YVrQ(p{f6Y1&A~zw{x+4w{z_NZ&)zI<200!MlCkm3jDd;bU9>zGvzf94l*Y#y zV|~ksih+$$vT4C{Ahgu{xk9EOx`$%RUiPKgNJ)g!q@2D4fRD^{4CC!kF@pvO%@yNE zWQi!d9cI;FP%JjpnsjHpH?XWY3p#njD`xa;2*#>?OkQ)DKV^3<+{U0^ z8QlsgkQev7c2r~E8cN#+1W?SZRE?wJamus0fi0#H)xWzt%rjgk*{|KF%fvz@S1P*Uw%09PP*ZR{YhaW9jcPD{q!fqd3 zXCm}XHpE7G!PC!r#CYO`JG}FiN)l;)+d}Me1O+sB}rkX>77DcTd7G?mTfv zw{2#Kec!xte*B7Wud&1L+&B%oF*9`f?Dyg9Yu~Pj=kG4B&mJ;!o9+&`p6-Otik*-a z|6gYP<@o`11>3EhWk}ui<3564olx}xBQk`*itDuUiq5x|;-Y)Gc1PN+8cw~eogF)o zk~mQ6vg2K39j75^P0*L({I2@U|KihPC(H`JgVx`VYFS7N&XY8IbVw!Q4I1*y;8>2l zq?ZE!`j>%SL4s+W)}l?4aU?JI+TO&Xp$sC0#nw}LHfeRtm(oQP2t znyn|p*{tr2h@ql{o~F$Ml1)W1q+QUQiFbaBkG#77$e0~snW$J|8tMS5Ca!HAf@Be;LE zI}H0bh*~W7UX8#GU=dfna%yqVzgSq?X@^$_4E^cBzG}GMqsK2)pk5c@$%D!pZ%UZb z%ch$IzX=Zre-qG6Y_C6z-|Hdp+*lUt^ZdL+%JE4UpYE3N8Q***8+MTw+oR6b9G~#= z?Ti3}{W94t|wRYgy{$gcCCcZjSIPV1(11qVXwO?v`&KT zx$_6^czNNl(vD|z3sO=Ej!k)iLXr8bmy)RA=6u!pXDLZ>G+9CcYtLlhbMe-myM-N|V-b7>Ev##N8?_yN^B=8e(sP1u;<(4DPsI;rMlFQitD%d91Pk#HX{+#iS$@&Lg8d=Zt2#9$Nv?T;@FhdGTdpYU6 zq1CgB4cz$j1giVLo8#6=l=A8SM{T$yZ}gWPeZeGad^41Q`sbg&dA9fK;|Oc$|JE|7o-6O#wUdwrx|Dy(uZXuqlo%Gd9o27ACg9aLR19xWJ6f;;}Cq zoG+Gdmj`VR5>sLoj3UIvZj40||CKOeERl>M@CX6}j*~A+cnw_7#aOCVyM47|A$JEf zg|T~?Waq2?Jw52Y5@G)gH?$m~c4z%E03IWNv(g=R94s3Wh&*eaqok)r@_4o+kj%KC zRuUtkN8E#lm0`|Prdw+?h5dFV=85$;EBk@K-uC~)X*lC(W64CKn3!17cr*iZ$3m@j ziu>D(zsqs6s7(*+i`iT>lTB03ub~!sIB>`9ZJ;PNO7(Kg}8#*rE z3VP($<&F*2Wv+-`D6k-|{T#>bcma^+&LF&p!SfxjI)GDgJ2ubcK%{;ZA-D(uUdtlgWcCQgj!tPQ0XVc6PU{2Lm)hh zR(fp8tn=F|XX4HC(Rooclow^-Typ0Ry^JGCHMp3B==@@?7|G5?T-T>t{j+8EC*3{1ln`K{SvQ+guAQ*e;(>zTh;;q6xeFP7PkC%P(g}JJ z`g`%cKxiX2(MPW+Oz9l>fRwskQ_)W0w~xl8-x+n_FHm=Q`5N8qoA3`KeJt?7%rRRD z-@tp6G~qA6Ib4D#zfH7!+@yyGGLJ2LTQ>)Cb9mNh5dBvf&8tkDMj(_chgM~%9GSYq zS@`rQ;5}p;Dj()lQ~fEfX_tKbwqa%`Tl0{ z`_Tauc%u?T>|MlE__|v;Vu^PYbT#*A*dV$(gbtvs0BPUpulrtC;j0lPlS5<%!BiL> zrVhaxONx)}L!G$;2kHCYS{is6ccrk#z0#RY!IcC5!@k4*3#x=Ems_NzeQ_Jq8{&M^ z*gpOp#3y?UUQDZv>r{8ffqA3=Y8k|%kEb1v#s^!3(u>u#A*Iz9 zp-FZXt7GILmI|hbp3yx7CGqGCKA7gumN)|q`!{je(6MO&oAMt|tL6R2x6_skuxJiV zpW29~*@h=i3~YK}Xzx~d)7_79v6a^zKlwlEs`Qgay?X;(nPwSiX&tbnUAb}NtFE=h zN<3aTg8z~79$xbMWR4tnium7ACQWGNl(ky2f=_6=n0OB_`TY%&YAeMSTBk7R@9|ux zDyJ7$>U>K-dUC0(CsPYk{;C~oQ~g1v78nZ&+Qa{q`BnUsc`BJX_yEgEAr%0trLRpH zf3E0)w_-B#-SHfBkp`r6{282b@8xT7A|->=;8vQ_;S=`TndFttcnd`Q088z(afM%a7Kfx z0Ix@J1e?@|^`rOP)s2n0Cfhj7l=4j=ScXI;#kb=RtR;L zyeQX$HdRvPxB2W~$a_b7e5ET2Rvx1V-dgc{d6f#iYFM8JVtB3AU;bb%7v}Bl?ivLV z6u-T1X#|B6Cus;%isKvelz-+n$A(?2djqB}M2Qr2jD%>v(U;ph_(>ckB#3VFP-m8? zOYn7j&klut_~1)qK)Hd-)0F}Ho*Y~5cjHce@0{|?LBWp)VH~tqGk;K0|rfjJZ84p7jMi z{?eA*OBaGEicIMJ8}3Yb<4gLNWS#kkc}us{MNMSU=x(Anl6Wx!ji2FdWXaE z$k_eD(o<|uBL^46Lz%UCl6PCQc3x>@JKb$FX4RgNSbH6wE1hFwY3b%Vwd~1gJK-^;0YikM^w&@p9AEks zr>V((ToDxR?%tw;>%pLinT*J#aGJOp=gzYi&uPDpBl76koz5DrVF@ze;-UR2e`o$X z&enSR^FT8kDtycylMyRM210L+#}k=vKhJOgH(Y2}??i7G<~Ze1$m;yT=yiyyLh5bs zI2%2DkWS-mh`mvRjv^3UJH+4}2)mfYJQL!mmsc2hE;mU0ePQs$gR=9`QyFKL9HcFq zo^-OTz-Brwdr@gaS}R-YWLd*%8)Dq#;IvH@o2Gd24)RG)p*X#wu#zt+DRmnO=$MBq zt|qc11+9!?XVkLR?~bFNh-;A~Dd+bSVd*sHsHKQ}z10>kXPQ+8OQ7jNtdeB#a4)Irhsf7+d^?yB21-w!lbLtuR3x0q7rTi=2d={Bl^z_fK=V zxhtbM?vHa@PD#tJbWsVBq*S0;`!JFsf_VsFm`HW&MByeXgN-JVLDcm*LsUdg5x7H& z(zpmoRbUmUs;8*ST-!Qq-+~w@wvavyFa9)Ac$d-Pmz1@5O1^VPbm*o87rd%O9 zJLY-LFCIQ=(d%Hn6PI(6x^vRyESfe>Jf}@#ft|z$;bXUNC)sYE)zcHYyPezC4E%6+ zTRD)zulUr-!^2YM#eu?)CK8DJ|8USzF{x9PT(Eju*(9hP^X7Fp7rz{&B-vSw6|D+Dcewu6sHjz?LNins&Kd(@d;9rkS>%gOc{8yMRW zxoRAo14(L5z{W}C$`Ul}i==E&g};2ZA!AW~xCY`V(8z<@CF~GYgHtJbTM^G@^C1$l z+nNQGC^l=1{o})=ZWp5kg{0XDncgt1v~kATgxJF-`N=%R)KfALTVKZMQ3 zSj5B&axN~%!e95OYDMEn&d~u)$9;QNIW-XG4;y$I9lLx^!>_+6Z#C)rHCnjBtrslc zqB-L+_&03nkhbH`$+gTR?KJP8>^>!0&NPyI0bC4x+zFmht1e z+P7!I9&;!CH6Q7B+w`en)s3~3W`0dybU|${nK^dA!k$~-2s}|rodSYFrSc%=>BuUk z*mMpR_6`Y3*P!QpMdrLt5TF9n1_7!Yh9E#QK>~c^E+z;)xfTi4X&9L4EH60IdSG^<9+y0W z@`*g%S-#Lj5xGZ?r+}%k&XEev=|{;zt&0jswS;Z1La4p^GbwXj&jT*SgPZ}f7WHQH z4>}*blKQkOq|J`i+O>s*H3g>Ip0H`pAzHIH@caf_197U>`GhUK`QHJdt+1a72)25y zcT+Hj=Ox74GPx@OQpu@8C#3#OlH0ruR~*#9EVcP6#N9DO@WaiD3U)p8KC+4_jE~q5 z5&-pKKVMjgva-rJOmi4n~|zDjs_qY=NGYayhBj0u(7k76*(eWfp*s?j;ao1Qux5$9dF8Qa z0+)n4Wh;oY?i$h{CdSm=owl^q(@IAdiOy zM47Y69l9#uTsGaY+%Bb^2uI(=uCJ8rCwPyC4@M!PX@VRkZ2=o{3K+k?2J##1nyH~I zRp2m9!uCbZU&kYM@3R0%V8-nUVDwu{n|m1o9t`^-b_SEZC64O)bd*GDGm8!ly}u|k zAe*HL6pB+diwdi!ieGEa1Aj?*@r5a6452~R&K-XYRDwr#;HX|tEboSv{mqNh3FVsO zx>1_LZ+EPnjn-Xv_zfZ1bt5zf+Q96s^(U%Jb84-QtZ}*HvK-dhoS7L1%+|iGTl=i$ z0~w$PETMqK_*L70@oZaWVJm84(@&LI>@SXg(QYX_70BL4UppGAY~<&5G&gX!GQJ*> zbeqHf{6@`LTgM31q zGy);PJUM4?I^0y~m2RiDzV3(Jt@~#R?350U;lZ=WN^vGC-yxHA$$1T<8Mv>Vb-K|h8s`MzdX+6pCRSHw2MIg$eE67 ze&3gbouFx~aCAlB@o8CZWwkz;`_!qE_0^TRG8*==kyK*BQv`K17x`(a;{L=Xk30qW zfINLuXU)z^sDD4W*Xz~bKX!+<9pU>v;K3Y1rQ`lLOYt{>z0Uj1fM+Z!?0u0I;CIpjjUl;Qf{&&c{)FGdXuMK&&%F|*H^xq74x$(?y-1UtthY4 zR3`Hy*bHcn=Hr5^f@l0wGL=s3U>9&lADv2eivJAJjPt|044BJW2AESg{^q6`g@qWR zk?CQ`!C&m$xcArOYQy}FcXJ``fA*r8o$M!S*awA~cNDVm;@R!W@w`GxGtaCjf`|x$ z&h5cv2l~&me(=GCP+P+4esllogfQEM53fRH%SwP|{+=m!XWsR!v^CME7M+ZW*990S zP(+$biy+%Y5F46M)O(9y6SsP!COo7Y_zDgnR(K{n(J8c=C0I1_4_a!J@+~;T&4W&k z!O(8A3o=`hRI1rgbI<{<-lFFYp!F|g3hW14fnRDMJ$tUHTTzXnGn{u3 zYt%SCh}EJH2eX2w)gKek+8S1R263ldPDF|e8c*1f)~t+j51=7BB+{_A6o)7&h+9|e zT~O}!hYmm>jRqvsZh-Albzp@Ae`}DrPb(lYn0dW$RxVDk2F2RYZx2r4s^@G90e+w>8auM9b{S6rD^lGa z@&D}Vxxej_b-yoH`ex->h5DNGFEQLaty7sKb})=S=k5?2(e@H0$g78Y=P?DuwCIt_lSvIADh?}+E4ZG=^UbmSlktXPEnv8B~MXc$c+<_Fha7=o?*qK5fa*p&*Um@`*dvtrK!Ms`izQQpMjGgjZ zomH>oLehmBAdXURqU9O;K|glIvb$jg`+Vj>Mg|zGV0Atj6Dodo)!qU_i% zYF=X+%*G1UtGQVJPzNtDl2%=GwatD6Cg0iaN=m7g8!!Zppp|9)Zuy=Sb%CL*O^q!0nmZ`Pb$S8|opNCYW9TUR#S3G-pl9y(+_$x4C00ncu zJv-><{vbf3y?5{VgSfee8=^K8_V}kyr(leav5?JpKNn)r+8>j88zS2RJ^rny&fQyY z6(cI%_<#PQ=?ya7`yoEDqam^+FAuUV`OEosBAYd5o)$J_q2$o2wH?sR*TkNsm{|I33Vs6{Jx^pxU0NCh-R-M%frF&>OjLx`MU|kVFQWfqLcB zo}EM;Mw(51Kns=kmLg;Iw;&5J4CV)KS@Ghq9|+26*F2oZ01kaAD<1OBWS-OBFcGvwB=i<)6rc*cD48~1s_^bMHL990z62k-{LfO5uCSLccY3{w zS#xzcTna4r&&xeCJ?XP_AG2t63Sm+nuTS#Tu**R;~le;z}&pJ0tZTj3pS0Sdf@ zVJH8Y`uX5hD?H4$Xk{vxa8o~hpMYHrZb*_OHS8t%NpI%z$x{_Al9q~7B!BM32R^yC z-XgKoTaTMlst(8<3|aMiaIx`RzPCAaGbzKJs*L;?r1+04R0dRi+(;|V z8z5%{FWNG`(Q_mo=xX5c?Jw<6>r&eNw{7z?08hL^zf)}ob{Vsm$lO!adlu}TW4_N0 z)b?8!I86mHBO&X|6{aAQQ<29+QKkEA7aj8k$nDky0Om+gepm2@R*s-R9kOx?YSBdJ zgBLfz52?8OjOBp)ttfl9&OC)v2Hgv`lgB4o>d{W6IeHwMY@&znk zv60%s9zT9W5wj(7Vgxo!FAjcp166k2E+Aubgje%;sts1(U;meB5#g_6w)i zqsU+MV?w5x&SlJ$N6OM{bHqL+&~~}oSStWx`bg;WPjnf3J0{PaoV$3*qsh$T@BPH1 z35L(-E(h9WS*H|Ee)`_YlgUMk=d!D?bf5E-{?T}k8&=N_&or*?xB7E<n_=TX7jIRx7+IWY&5&;QD&p`YuD~}m)3?D zxKF`fOrm(b_r?}@)$5H!pw$ay2ris@7<-)*(TA)fbmQR$3Rau0Hp<5Q!87`H8lLAIg&;O`L_ zUGb~zN|FV^aQ$Av9t4iw{fV}OZc$q#qD#zDy7%;~nwl(QuAO)&K~ymyYQ)`lH46gO zv!kW>Xr0=vM!qu-4ad9PtTR3hqY>>S;Mg{x!Z}Bx=QtMyuU{lY8>%?&M%i-_J`Cc3 z98SU*t$?A_3qsaLW+1$!tp>;hHY=0z1s5F&UgVq;y?)L^NpK(tAo`K>5;K5%`A9wD zwt8!;q-v$?7At0kpUYY%?L5Fm9v>1#PfEfq6bTIb>|i(6he4ga*z&%7b9FXqYmZPG@%?xMS=e3<>=l$~pW%WNFoo>+A+X08Dc zaU)-dW$^6gBvmNAXVY|jV#7SRZN5tzR@_{Q!*&4gmBGCWnA-tx}z4||u4%EHkP~Hcb;9B0H*{J); z|2fD7CW_^kW_xXn^G=nAGA7%QnOr{5U2}uJE4%8EK;L_izoYi=$_B~*vTX;}HXV3R zCX#?blZ(A*>eT4yS?P<|5##+mjVN=^L6q9YBU>>4EF} zfQG=6-T0gOoy$ISlAdwjiM}%g={KFb;p`2XW1kb$>%4JplOEdf#yXda77MX}m!t)2 zc24;y`=cp47b%3MYm_PCP^hULDPk$}z{UwNKaisv)6piZ<6_)Qk_&Y0Dw%WoF;K9@-s-jeAjF4C9OdRkjX+@y&{qz8Pq0~}~NsFitx z?(+_kQT+QyVA@sK2jzG18*i*XNU(0^XQjgxaMbi&-^`sn_Zw=upSY2V|0EBw<7Osm zkU)$B{W1kf5xYSl#GJtA?i?{8oyV`2IKys>!Bz_!c`4P~gO(iA=ZEAWf9{r&Z+>!!Pf&ZQVr61vqM?|*g*wi0{M4k*U3dFPlI{3~ zj^k#*DQo9P2S^UwFGoY3s!_FbuX&_%r}>m~r2YR))4DA%$8EseHI@Ta!ZF)y z=1gl5db+uyB0_*g0<&cmr=6wbDm@++3MLd#<%^ROgKCqPC@syBz&_LCL;Sy4URlcE zhb38MtzMIQkbpsQqlOd5-g}NjZG81i)E<=MaYXSyy7nlr%4|$cu4Hm64Z9od-4JMn)Fzdkfo71?H zaoS$-kiSm|G2OZb7kb(55Gdr`6x}SiySLt1`vY$!?}yrY=UfW>Nu4!z(R|NbYHq!= z^e@yuJ%5#g0$I~qGeaLTF}R4+L1o!OZXUY+BL4Nl#)x!oaz_gHsOZb1v;JN*^4lYp z!~OgdJ0~d=>P&GjnYBE~S_Tvc+lM$yT;;?Cilbo{EL6xf3P*|LsjKL~OIKubFNKjQ{7$a+fu)?_3Waa zJU?b~@}D&HEt-n^bhoHkMGV7Uf!3X=2<$>Z(;#!R(PS**V)l`j6m^p7e=|gJ;Ksnd zz`p1TDFXQZJEBS%MD3Hn0wXuAo&JW*HMJ~FTjh*#RJk`w8f(qmpjCvLR%@r0ZmN$M zK&f{yqHvp-4-U zHrVa`8I2>8$iw)KqV_UN!HnlGpd>8F%HuI{*=8?~0eKoGg24vhscHq`pLmQcjt_g_ z1N&evj1zp4Wl&OT+9I~_Z#tZV)G=VF+p_J0L5>Fz3@)w`NAC)ggr!LJ8n8 zEsLkv_b-0O{?3y9$Pr&=vb(-sXP+lF-v4d;+bT~hS<`S59v(SEEVkhYeDGH|3CPkM z;sCs%HNB&9Dz_=v9F(MTPq`2@Y_AChX+*ULu+!RQH%gwqGZ+*&k0@eMjpoV)6Nfp; zJ&MQWek@|CNz`{|ydesbq_iqQt{h@i=;@_a!nd2EJt79Xq(GC$!*K!=tp_&=oUnlr z7}IdgoS!QfIDa%dJ=_RZ1T2KBNJi1!$<=fJrxCD6;5-@*pOl-m9zWOIBZ%@yxNEse z-y)`Hn8tpi&&LM4FL&0|M%t?7wJQAj+oE5waO#TG(zgmf{6VMTCu~A#HLZ6tLsxh& zxBf*N(?ShpMyVlv)W2N858^7TWg6QL9~Qo4PQ7H(q7{0J|MFJ4anh_jA1eH~&kd_l zac|N`3qlzffrBUbMLv1wwc!jz?wxUKab_O;=LI?sdZ7|Btl)Fr=chAE#!eWoMbOiz z?dU1$6j{X&@&pu~;4{HXHZaIt6FfclIr-J(1a}7#m)(VQC7R~&J*^4q*wDsh#hJQW< z!zbg@$8rbIAWReZ6bm62{xzGllCEZ~^i3zX604JmPe10#<~{8lKaz7-efQ}h=OIp> z(l)PbZu6fvL5QViX7hJKe6Ehw*U8lzq2AFRj@BN-5(42OpS{}X!wD$H=rYcQQPbzb z9D%aNzE&x)ehrV2k)h)yGO!E{pr25nFu3sX=m1C>gneCe&~Szjp^MDfmIRes1o_*0 zKOD+SoT+0?h^_cuhzZ~i@Pk|GwagNT^$HWqbSu~^7PN#}OD0PEDF1zwI#iuO@Uh*b zeev)G$m2P_-N7hV^N<}0a+6~}Ow8phXYMhfmhWj7t}uA%quDtrJ&~z}GtH&uQ)cky z>?e}OXR>0b->o%CvQ0%McW7~S7DQs;uzeNX=}ChH!DxDfs!v&Wb-N&i?YGr^uIo-+ zedSxZQ%wYg>v_lN*dDEPYw0Y6qae+8^xWPMdD_&sbYP ziawF-WAjIk8TcKozerrv|3OQ<)zqI_OdFR~XKRSEeyuEF4>1iLOwKNSowfd(ll1{h z*~G}4;a<&T&e%gYW-RyO0zC1bB=sZ6Ux;93hdFAU#I&+{@D`IiSh+9)tW&wmg}*Bg zcJKn7#WRQeG`5&5gA`P8j%w}GCmP@60eoNVnAe#=jUm$*|Ck5EFJC#j- z@?`AnVlFW=U_s+-; z8d39KF70vKgEpAmiS~4UTKNvB1K^n}OrHc|*oEgkn%Ck-%aUOw7X>_?As!a9l#nL| z2&kx-#e$wc_VWu~p)!kf>mThUyiF{*7{eXnAIBfv`9ASqxK5y41aC#dpb@hT!#(CJZZv#Q zC;N{>Yydv2nF*MJp%K-A=AWaaEb5~2)-B~lN`f>lO!1`@HX^}9GQnM+7G_b(^ zQK&+P2$G=KY8Itrfd`{dT4}Xs)JDO^QJyTZURs_l<+FF%<(*FcDYnv;j1Xk zdpDyM#$b8ROI;6vK*fUKFAdrzq4(7aL>^goR`8>+h?%evwkBh^}2( z(y3U$daG9*aQndPWPD!^WeGFAmr+;NA7|gBR-o`mCEwTI+kL2Shh_W%m>C*I=PnaExFO+%j!>u{98^b&d5Y5sCoY+-bfA_GvOj3vQLcu#uJ00i;6dD{Zv)si)>1q8K zcY1Mj-!X%5=G^Mo{BmvleTTiGKg=K6@$PhxSyu%SW~V$(#wnMlPDVaa=5B4bnF4ji@ul|1f#;l^G|PK?BN2n}x;~j<#`{u-!|{$}z4vf@BQ+KF14{nZ zV9NIsjQZ2BMmJR09rxq4<$FW@VPLZwqTFiMzA%5v3b6)4e*4m43Nvpd6pU06wk@81 z;rQ}}!d9(-J~i9I;8>nf&$f+^P3G$%Ap(#IV)Cujf%>(({?B@`?R@mFc1Q3&08zYc54XB6k;_wzT9nQ7zIHq7&?C242RLC zc%f3*Z01k9;x%wc++=B4c5Jx)-iTNq0NuF2HV-Yf@xUsggGi%;R+|b{P4Xp)q0OLM zB!10s{l-=+ToqQ}{@?KcLGKld3$3nNkGP{xYd?yo@oq%_L-_46Z4L~U=nvthw!5na z?l|W9UAr@|%2{yc&&V-Z$BZlJ_dfaLJ$i-lSk{=xKhKD#=xP$3t%e4;3i2XcOS z9goETLO{L0bzM=(u^uu%b>gnie7N&hvz)P3&hT+ryqvcA*bP@~AWn48&IYu>+hSl&egr)@eDTEyf4XUT#7Ov^ZW6w z^;^P%y=MQy?>f8BwH?lci0#n(dE(8%&iSH|_66U9^a3xNV7=1x9R-SacJdz^ri0{N z^O9&$!47GnLPCbLRaOYWST%j!S9`26LRWaAnMd+V*?%FL=|Q$BlA zz%&KH@SY%wDQ|C21fb+#d#?O*B}Jg`S3u0F0gnYo4rvO#5_)5MyCxT_;^Pd@YH80f z3ul9nqL=kaB+RG-eJV%0>Tt5pA$l=bn@jHpffMrhab?a>AmOleVY2?|KV2xd|KpVllO^CMjO&yp>~&r0c8p4A%0K>957N}#n{05| z`Q2~JnwHiS7uPIplD)nAY8h;Mc4@L=MWwQ`{>$op+!P_C+mMlna+nL;Z>d_4D zzUsbZ6Nch6I#^we9c-xu&M8O`p1y8Z#LS*b>9ms#9}_+2&z5&1)(E^?k<0YFwZ*p& z9IBSfc3Hkwu_R)r>-k(+J58gdmb~oU7ueELFWA4X!}Fd0ntM9x;1o&3NkQG=9`nCz z?~2(Kylu@vz2|zJ!M1N6+tmSy+#?I7>r9*I?^&jvqn5P8`o@bYmjn8LIm4f?{GI4KTIxR3l%BgI65lZ5N)N{ozy4QPp0_OH z$?rV%9oY(Z89QM>RHF;D3YKyDLe}qc68c`;PnL$8(z@oC{v#OrrkthV=~aRx?Bea< zxu`;caink0%A5!$BIoVpR_^ITaF}0FCE-7nJmt%&NQnnI-%9H-J}4) zD^MVMK{?ct(F#^zU3w$r@E@zH5oZ2d>~B6lFnZ5WM7f*rs)S@qBa?5rU`8XTZNQnH zV7V|jo4-jMS>2O~?EdZ-xXFjIIjdj)!Qqa-@Iw8$>_d~e7rGB!CC=$Cy^UG?88#KU z-_raO?9G`@`1Q8{2fRgAo&DMdU_@*FhPo>Ct?{$IIzQA*3vu=bNuD$PNv+z~jSGP+xFT(p1dnL@JN;fM&u6i?;7y zM0?}L9sO{=?(X$Ss|*GY^{=){Uv1~PQY4phr||41{O}h2PysI`|6er+%l92Xr>C)0 zi-C+t@v&&%^nbQv1r7rx&93}}z91hm@)R!yzGaicoAsf7h0R8Zl5 z^6do=2oAzd=yh>6oxU$AswnY$tz=w?g(TKLbPowWCBOx*1_+|}H9sECRzG1p+VSp^rwLLhNPsbZX>LzV?3Q*jZfR?>$E-V)p% zARNo9il1_Qoi+s7VAA$Q*)4cjsx@suLbP^t%W-i1<|LKf(dp>6R4lJ*vM^fR`sT}+ zbJ=bWq6W|(X}rCd4`XT_wLkEZ>KtgGl{!a~dZgAd2KG7O7h-%+9yk=h{+-OMvCgep z_^ycgYQ>}|e7bzuBm``~`OVcjIj!>vTv%BYVIai@jY*Oj3H&%Tlg7um#ToO4@1+(& zVC7XS9I%?n>!M{G-(LS1*OJFBC zdBKS$MeL~cAZ0vsN}6rfMV(NDuB8UE0x-`6?je)oD>F#3*KH3b2lB7cT!(!8qj$^H zb_I{OQ%Zim{9mKY^Z0zW$sWw--JS0k`ZuFFt!?*~FP0;`ADNa7c0s*Tk+4{we|z}% zRII1%*b!yR2HSENeT{J+mneDVO2Z2oYk7DdBf`MgHQ!k{D^B$u_&IPFB?nd!fj82# zE7cPSYNG#ynJd~BBhbs+)?|oSh)ppkbE-T~pM%1Yoql9R`IB~PwzRy@yM;y^AqXC^ z{{8|h1pQQ?`f%7(ySYAcFy4)B4Z}<{;hAJL8RzDi5j+^8rI%b4~EjOr8E37XR`}};sDPqy7ACQ~Cpe0`ZdD(sJ$Z@y321EF* zDYPXLfeRdW59UcXbe6rn4|ZJyL@WmJ-h-U74t>ZpSvXgLC7%dz_aMmsPc6N1Q!ZQh zH0iEEdBGDP#G#@Hyw78~PH!#e&=X*h2mdF??qZ5wnT{#MQPnFVd<}J?k?B`g^irwD z)a4KuU2K)!%N{5xtYv}S?P{EVdH^OtTvzY^z1^hEGk&;X(tOD>h-?*#!Y(M+K9wr- zzpV8wFrvZ=$v)Umnm=j7ds;U^#YzL$XnF==eqO< zTc(7=5Swkj>)jnL<{At&)i8^N1gGo2Y2`)BTOWj{2Xi47T(sJ1;EKa{d+(arY`_km zvgJYgTo8wykPj78N^Ww$YG#$JN?==4sUsc*Todq^`Pz)yx|w5Wj25!r(-XJ;)^1%3K;V zQH?c@7kkjC4=VrUDoZ4ZhF9`cNxTbJqdp=pF{@UmzAUNT(ZSz2yn8v1q^MZ4WUo&| zcT9JLts&AD^pV$8D3T5X=qItaVSmhi*^@CjYsg*{>vzSvz=I06(BOpP$ke?d7i3Ck zoX4n&rOIOQys^ijYrJexTL3;`*c&AVH5 z(m4Z(?4}5L`MMVMxC|1RaiRW3uv<8(#2q|IcvdkueX(1yID6u}iT{k5_xj3}*Yn1x z_Qb)W(8s~fRG5mZg4PfS&!ZU6c7?RfFZ`4X7#NurX>9JSJ4*JysAkQ$NfhV%@i7K> zrY1*Z8_Q&WnZbW$by{EXGd6T?Rjzg{+7>S9Epiw2O2W4-a;yfMr;tgEkVz!5AM}t> z)*{29@E>U25MRK5kA6>x3inmh*u?}$AhnUxbg=@dT!=2^@?>OKa9AeNC8#GFUYa^0utEOU%DMA}GTYUR@L(!>mMSD_NlGOL@QImVQyYB~`6jDw7 zAgOhFSCyYG;EORC!82dX49?iHG-zqV*OMmAn6xgs+z*%6nkF?S?U|RP$ZifwZw>}% z*2RUZTAgCE)lw?1@=b}Mgeak(PSdl|ZtuWx8prhJPI*&e#90%l)@SZOL^+AE@zI5O zf`|;AKsV1mMUXKp-Zoa0BQMR&i~>tbaU+E9aR%TCiI!!DL&BY5v+(Xj(5_0@Xl0J9kZZY(PVL-{HwaUQU z1)B^TT@x1vs=6IIFXe`D(IVr<1he}18EaqQhwu*dSh2H~FiKty5pgUwwk>8Hrfj5H z>*}7npiOh;QZV@Kt-N&X*~DVo2R_LKt(|qy0vvtP5;gmhVspVrhX_y~QbfN=`Us&F z>`Q~2HufhWcGt%c5qahKc;P+xeLF9#h=!C*|o|aDFwW``b zUWgP50syuWYLJfs(%rPSD71<>fX?T_-` z?8QfyS3vU00Rs3YX;*W$=~Of3mQ!BNfoE`TLxu9Ip^*A$9lhW)NA+s1jV1iBoQT;_ z+n6}xI)081J0A^;y)g#UywsRSv0$4cXCPkVa7FRp>Gk2(CR-D@Q;EN`1+)2bq`glgV!4gydH zd;$eOfGEAANY%JXNFMkX7_JhhV$9os*%B{^|A+!x85*Pg^R^FkHyR~tw#6S69F6xi=1@5# zyp#fxmC+a&#-NGVpFQEfK3n-ue|e$?)g+c*`Df*`U&9R=pdN#k4C01DkZ$~2?fm(p zkA8Nl|0X5CV!{WP@P-@)>%hj&Zypzl2)_GKZhCs|M|XpveV6%Wb3NG5Uk;wg{iZR$ znh_lzs)z&6JZKaM8b99%;#!7|iKZ%#zP6+Ae zx7&AF+?h$kMUoVcn41b}(<9oTbakp!P-Z zN2~Y0RpP9>oc$M?(p85R{M%|EarYLsgl?sm&^XeiH?2C!aJ z-@u3OIB9G$&`V~jafJprgh2$7UBOL5VF#4I7xc&&=lHZ(YpQF9=P=3x=Z?<U2n(khY^16Q?pL^BibtU~C1t{QaiE>KPYQy9AaIKqwBvHv) zZ1yPNPk&_U9L)n%i;f9o%Ivw&VT`ghM^fPRXks|z);VAI4K ztH$_>(vPNlZ+jQ-TYN`8@oH9rPrP$W%21RHX~yb=gBSRe;1RvYBmJJ_63+bd;Xlt? z`Kt{Pue;0;$O)C?Tc@sAG1a=33-M(J|DDyd_q9UtS)jsl)Ld3o9=vwqUe20fL#%d2 z8RW!Gzf&){#}Y@~j9MO_N^!w$FxEfm`U$+?c{>F9cO?)(4zc;W%a(#eM7lrBDn_YYtZX15oTp2@c%=Ux|GySEkC)jmyF_tT|9eBn_nS}AMw z)_t`@2;Z_yw7s{~~E-mvEvnDCGAU;9JWo9COL!UqEMm z)TPw@`_k-acb!fYtz5|%;22-NfZ53R-YV%}n6@jj^w@=}`RVK5%kEA!3)$?OG;H`U zMkF4JoDECZi4-?tLrQduggM>%1pY5xc|P{pXFS#F>d?7cv~8XXz6?tFr9AI0z&m)t z1i@(IQ5JfJ=#z%*8dM1IAQ?1tCEhqQ`3NB&cmsG59cDRq5W@R~xJN&48ZbT2wQ~vQ zfHT1r9mAzz1LJ~rj>yhAK|(QFgiIOZ_O=!b?&A^3{7)Wux>psIu6}%E%*dr`6VJ_J zHogLEG2iB9*c*s7nm?ZW(NWt@6RKP}GDLM#`x$frdTA-@7KeLRW`?m4=;ICFm1lWR zcFZXugxZ>ZEA{=CXe{{T)m=OHTCIC`?z&nuSl?{+-_Gf^jotC=s$N^1&Uvan@d11f zZm1cZ>44I`=C9>6KU{^iYkvm?jisSlb*Q%WrcTv$UYWh)`8aj94h3Av&E?!@AHLO9 zYnpP|ByYj+a6z|G_@tXuH^rn5YxgxP*pt?3`-I536P5C#cMo8=B>ExL8Ctmc9_DcFR*0WrUUO}CL@!xo= z{U|gZ>(iv4-Zo5Ld-0u|*x-cf&VnEjmfHvSY;87C$57LF(9y%Xyv1-}{4jkQPJ5rm zB+Yurd>?kh=K}B(F%pV&sVBiv@?bhY{eh`vU4p5ZWLmzl%On6ptmV@NXem2|Fo!*y zNE~WJ4s&5iAu$^ zb^kp?m}*%tRFfsI?WZ<^~AMG83%gC zC}VVcipEnx&@w?Vq?f~17tliseqF%*JP&X%`%5!=4rm4m)dixueV}lzRKcu!0j7TH z`QmW!BB1&}gKTUcr0VU)3%{rB%8gulS%x601a5i9G86ENM zo=(dSNKQ78E3?ky1;?i}StwC!EY4D{ii#1v;tHxbeP(7x!H%iS&X|WA&TuVhH&xkS z`-=hGgqOmKYz#tOI&^Nsq+=o?_&(gWW)eYWz;g3b7vZ|!5Af#SY4bWOha}E!7rHg{8JFGr|DXgj-Ay!hWBX;XM@scTzWnsVw;i-lJ^iwBsW zY5ofPyG+vbB<5Z3JVZEBJef|6LzP(!hce|Karf0PYy;ph;WQ0NQhMomWzr6VqtS#7B*bl# zA^{P{DdM_LrBmLs%%E^NxRHq(6g>9Xhcz7{5O@qP;#s_OuztY}%4vEYWkI}akz*r=F%}f|fx;%r&aw^K{OMP@Umf=P4u6^ZM?kUfRjg)7~U`Q!7%@4*#@u8-ds!#@^z)mqi-#xG(&s0QdpoA|Ux z*LJgmZM^NA4Q(*`o|z9@u7+-B`Gt@3w!_XdunU-1hhP_rSRG?;NN(rM;9#=SAzhV) ze_Y}$eu3MM)>1$BG+t*DaDiyJR zrE@vH;rciqC)e{U8%fWd%K91zC#CYW99HG!5RxA7@XV)qe>w0AlZHT^0EqQ@d~QIT z1A*aP3XP}V?{POM;&X2QcLOf`t$6E%lusXRe0t?kUXZQV=z+fMYNaLa|7IC8W z1i|VmYDA2%A6Wl?FPzmnf-VN?3`WSS4m+5!pn9La%xt4}m+zqT-M^!<`;*KqAKWRW zW}yI4k<078@Z(lKeSfONUSKboe{dLbIJmUl$LFTZ?m#{tE9ZLIW>(IT*@NJKffk52 zM@8s0pQyQ9&B|E4m<^qmuuhW>>j@j{db4Lic|a-mIO-j@I{R+bcTdi6>YFaBS-(R< zhu4a@Jfhy>XnHQ((-cX001$EO!}RTU=aXgm#YvAoovb?bG~KX$OeLM4E*?28lKJB4 zBVsyP36H?^)j)MKMSAPTu`W@XjfeG9dR z!;`|z%j+cT|KVGf&zNE)Nx@YTC;RW7Gp=x-@;jq3LM71`8^0KQHAEg=>X^bMPTf}; zZ!IQgZ2?c^g(yH@Yv?5RVTLJ*vy;6431nT9!mXB)O1Y0XACx=;I!tN)B=@1k_Zr67AO;diMTqwu;|}PizpxiCc2hlA=(>SuQ!MEXw?Jse|K4*p;)6 z>>o4yF(f(Ys6i2H)%VQ53mLSq4Qx&dRmiC2D(GP%F1{O-c~bw5Quwn}fGZ{?D#?%_ zAqh?-y)ScTyJc$w8QB>N-j{Yu7qGg(nxyxo?i`D6F*zBN7D7T+2rk0%Mr^UV@#;Pq z&>zET3vlsQru!1e-KSIDB$}`)?9a#WB&;72Vx+7~eb=FbTlSLdyQY(ngclMV7DR|B zpk^qRqOA{Qsj{`rFmgTlq;mrqD2v9}o_ z#re#h*rog2c|QmJDimp?t=cv^*v9`y{FzWq2;zXCSOS~57VehrN&q^!eR~KpipeO5 z3iPAN$QJG%9olY5=8jvioFeR4P?PU!+BbdlDp~T}qB~$yun^z8K3b5jWlj|@$w#Vk zp7!5;N=>2a!ViQIRRs+{&SGka5P@MzPq;+-q^9ls2Enl!<5Z(+l}`WjgTGda$V2p3jqqP{{f<4N?i@a4ha^ z%+p$2(2{F&)enySysFy9!YQ`u`rRiKy`nWdJw0c}({!F*@VeqA4zlS!^VudUdgtzX zZ!XcR%Jo(a<_y+**<7vFrM2WWjx0`*Ot41-{yXpTQ0wCFM5_+Az~%u38K#C^ix=-| zsHl0c#Y@^nv~HEuf;G@D(?P2nLS-7V&!f7(gP(dnAICD#>2gU zZ?nO^v_DVAxN02&zh~LwMd{Uz`BY`{U*9XpD$RMwcYjRgPffW8l9lyVaW{=@=1RFM z5PE;iTOw~7{`28Q6UUsD(40eKQn+B9?lXvCGb`*iOU-H?r@6=ci}+v7x(<%$`}1j8 zE0J@5jkZ_r(>N5DGYh9*2yBLYfk5=9 z!6QARCq@T_Npru!;W5{beLAeESr+r2fS0F6N)N0Tr(PePZNU2hPQOp-|0{<(=4z@r zJa0H+DE-rCpkN9%FHh&so=-<|cF^1|+PHlDo8OjRIheb8jI8fcELCasst1G*hVSK2 z(!2HoeZ$DR=CjdyjriIaeb)RglH?{o9K5o8W6;J;_Xj_;efp;9udDtdVVyLSSz#7_^r+S{uu+m>kJj>dQdkRDheGy^4DE;NIX>_0{D#(sF52psD$4 z#?tgr+m*qqD@Ipx51bniV_MvLJRLp*6 zUR^cY&#{~38sRo9pTv6A7VZZ z*PPNVjrdL>Db$3G0^@Qtt+r00xu;aar4q#{g<5&fqS@Ffr#T7K5CFewONxAT9C5vv z*3BLh52mrWaga$obq6(kaY9N1T< zyjzM*KHSu)>BNc1JNyXujhl(8U_lbxC9$xa;wBPRFyDW-+<0$YYfvxM?mZr#OAg*1 z@G&W~oh5W3Y;P7}|7?i;^3TgdBAnsjjtmnsej)?uf$86+h|uzdpQ}&X?|q;h;gSW^ z^0Vp~RE0LFr?{)xWWqePjrgN<4aFk;5CydKURuRQk$B*&0&q)TnBx5+v1J=R(!=g6S%5 znU6B>{iiKR?~>eB@r1a;uXu{3N*MATc_ZG5JdnKpIv~gq2}-RnLXN!qfBx;*{ZC%) zGj};iIqyh=vHa<$f1U!!c~#9*-A<8s0^iN|YNx8uf5)kZW(>tLbeE*}vU0~9d7C<< z3As)^Jha${>`<*;6qRM!iA`?v5u9h>*3o57BkaTnr4-I`U5V@se*A;PzZi_!Ke67( zmK0j>$eWc$K7Y`;oMb}IrgZQq?3}@jBKxj*4)-#q0cVQF6L1c+`{V0xAgxcd zwkLa#f-r23w@`blH`^N2Vc7BmUgH1pQq2M_`q8o`X9>P6#N}XSK79i*)+c&reTK9H zq-K<+>`dVzvID_<%{!lwt?A%$3>e_;KNc7l^7sEoY3i3B*0kA$8uRh;E%R&U6Z76$ z20+6}$=loNv2EN5et8Z{7NdxN10E~vj7-@b#1mQ>p=H<)V^;=y6VJemmQ9Gh ze{Tq1AF+aVMBddc!pH3Co7$tkp6F5YY?L~b-;X=`~F3tHC%7PdCEjh8k>DXx*U zB8JKr#f52^Bum)&Bxy>&&up;Ee=624D zD7q&*%=Fr+6~8|_ti#A&7yr5}1*X3rZ{!L;*z!P-k^OlR$C8-v>gLM@&g};!h%i)R zx#zMKzgpU#ZJE|KN*e(^V+Vbrx2DfuhF`RwM+S3(s^nU^u}Hf%0c!bd!}3Sh$PHZj zpr&+Ft%_UdKMH}pcaX^$!L6?6jCYy3EOzV5Q`Swc}bz!H|@$+HvA8%TLjrxDf zv8h$G^!op9CAx-?oZQ>v9sUBqK5^mF4JjZ)HON8ecQGT6KOa)cr0i6a)RNY>0?fHo zj2c28zixOe61;2H8Jht;@lc`$mKGl{#QLZS`Z8->wu;+^uR1vRQ-Qd+ zH?J|%I9P`>K5ocsp6gkz8G1=iYB5X@5+HvreWcM1;Z~-G8{eQUa6d>j+sB`(cI$;L zZ$_ADoVitr8r;m0SaeODiUiWosy*RcE@jD#um`T1Qm|!+Fy|I#_VKiIv`k{$oAGK5 z^MvmLfMw!i4l+&=j8uGIRS#7Nq^r^Nju5;>%Zhud?g`SG`70Du1pp6<0j>e!%mR2I zRwK1)_P8P?6t76J@JiCka-8x&>P{p;V50>aBkFHxI8rp7tbu^s%jH}(Ln#!=Y1CYc z=_>1MZ!k%qbmiH&Il3icBlj) znVF1;$3ouVWgwjm!!9F=pafL3j5x`9+X4~M_jSv$du^e+zS)VBwwPHn0&k^rF4jgqIBjWmP~6Eg05xe%z&VJJH@X9=;sK;QwkVgz0a zl4!S1@)#W5k{R&PRgl(;Fbp^3c1=LQ+M*!Bpc#-og0I=Nmt8sW z)0rMK;$qglB}EqNp!;K?xW*Juy+7}#q71nP=>%5`OTDIdT`RK zB-)|uiFA9`Av?tq^6iNwIqhMpWn6%9K0?e+NZ3k}jdqFj zMgngE+zA6X&jOa7oGWT2CXh7y4!RJAOrt0Vkglj?Y z0t%c>!Xfks-ZK*Hf@F2LnmJZOaNk? zB-^RJ>e_p)0Bb0fqkKem<}x6K9%mylryT7uVTqdnUmZ+?S^;)m6nfd?3lKoe0kL9Y z&1`#>tZC>z(m-0$Oi@KT1yQ4vlqALyEvHO+a5VSQ6v`;L@^nKsO1>bCIth^NOLrcU zk*20KTry=Tal00NvKHl7H?5_;6s6wGzAH|1$`oTo)Wy3Cvl8%ZEkuQ&ol^P*q!Hyl zaZU0Q72NFru#30*k;AIivmo4Prh172)LAhNl6oxcI@WhTN(Y zIlgi=YJ)DS*>xw4QA;AFV5V5cPLT%H5GpiM`L9us9q&A*P-s>l-hl|MCE1Ub&f?oF zFKJfk`;+Y;-Pc!xXA!ueuSfFra9mWtHGzQWO(f3-Y2fI9cNMfi__ZLQAwoz z=335(9Z6olIZ_o*xbq;Gl-hDwBYMl8Ezq(9bA*YCUQ`c-*_O+w6%BhzotZdKLOP~+ z9pk-hDlBe!O-PI^|Bw&JglhEPviLiYWK>c7xY z+PYj7Ifwh-gf-;fxEB1v_kuHB+l))BR+ks87DU>j)egbgd7h@v7sa7`(z#Q8hg+=} z+TU$D=~;1Y#a|%}p&rwi9R4r#Uq9#Sf4MdDMp?1muKsHD=I%3SP`I5L0HIhcAXfQFc$K^ zk9!YgA<0~=rO-kyYK^FcZ2Esd*g`IWjEY;xsnoK!p}ilnBXdy33G-AYme!A+;VebHX1Y04S6FRd-Hbb^@e;`S!eqV(E#Ovr_D5Y z4>>iD;;p_6@`cscV^byg~-RKZP&g-ZHUy{ z^|nQd@(}SoMj&ez7l}yi*b@^G`!;kzk02f^A||qVkwoSqvUQElV2TlOqFCC2Qbmo3 z4DkonBeL}3>gKK!ga{Ie>;1GloD_*1FlWt?$b!FMAtjOLPnRuU!AWFkzhUDhQX#ufzsvcGmDohy&ThMpVTh^fMEt8a z1A^g+RA-CK5O0r|4S^Oy9MYjkqfGr%pX%``id-m@E0iiV^N@+&V1y<_Whr8=8$LRb zDe~(R1cpFia0C*C#$a)H0+B?fP-%1qlf~w6d3=FTB$h~Ja)nZ*)@XHlgVAKRSZ#Lp z4vtRR|3Md5w*v%MZ5Gb>kiPVPK;0YsQk#)VYcFfH40JwFJeI7zd-D66_@ zyM7p_d0DspIIkN6-~}G@YZ{dZ*zv8u?LVU||)oYbYQ)qYI*uDHm{_?BnGNd_Y$FPHQ=wa$Y;@K=>&o6qRum{+N0dTC%>^q3Mnoba7ys2 zsP6^at^hILMIAdY&76)ALQ0YIXQI@Y>}9VN&=il2&UojwzEipEqn_O2{1pSW8|#Ha zN5vv^Jf<27kHUmp`0EtOC=aMaHi_(h`e)OGP^QP_n#(uiM1b#V3agL13es5Y5Xj>* z!mZu7W!_D+z?mVqEZO(N$H5SyTk*ce#BUGS{(O_pAG6uF4WQU!vU@OCig4_t*pq$y ze@_H!l{o?lZ_3$spk$3ZXSugFeh;Rx<$)PqW48i#nVh*9e9R%spawJLvnkojiU6a< zKv@KqK~-wwi!9m8N@|38L?(L-6nfJ(T=d_?+@MhonozQTvT}!T>#Ex|eNQ<=#_(4W zY%)fg?feROh?dxd4p39uNDP;!EP}x6U|NX?C|^c}H_8Ins|?y(=Z7mo3WqV@0SpeB z^6qJNb98UkIkNWXd|dS|!REBAbd0+gbr)#1qYCFFO<;V`wi3l!d~zhRPk~0ki}jpI zk)B7o9a~Qf$<~`vyNZ9HrfFM4t4z)c8)hYN8LEM1JN!8uyt6xFrYvkjh;GH54`CB1 zipy9idRvqYAp2-viT)=JnZB z7^|PvV;R)f)N>`{tSO|`A{VNHYdGt|qcmzT(-98>jLYUEi1&BhJL6sbw-io@L{z0NG8!DzRZgQS z>E&wiBxe~=#jjD3?iiF_DQjh1R?2@%9dQK`DDXAyga@_)1;HG6D*ErhKmIn)V_;K^ zv50&WEQ6YuspZ`gBCAG}k+3O7tq=#P`IV`#DMrnpOomNi4Ec1}6sm{FC&V(SY8}dy z*c788pA^fW8Y9BAm{JPfC)`xa%YgNE>E+V$(!SmfKy&j{%uSZNkzs0@j}ku z8#KHDnwq^SIot`M9H)xH(jL2+gOof$u|3>0y^e{_mkp6^H2?giLoOlNy9Fjp3=ZfP z^?2}wx}cD09$G@|n#yig;BPn-_66hjc9#%nJH+XkA7bogU(Xprq2!^ukQ4Cv0jG5>Cuqnn62vyR#$GdACHE{`!AQhB0+b1rbNolox!gwcmyRDo7C}bYfb&CV_=zb# zi)N3N5+j4}Pl;KA2TAeoznSnx6WmzD{DF~XrZ{cc*p*Mu;AE^PAXQoC;G~h`2XuPZ z(&V*Y1AJ;#oVx7@#J5esNh7JVS_-|7saNVBl~Azah;SA#v^zk>n2`&kPt!NA(QN8k*(v-+kJh+=T zC3*_Icv@fxk&fUOLr2t>6AX-;Cy7oG^$rX`KV_4E-2IK#za$53lrko3rdv5k<9&ae zLI6uXO^+f*>NlS@#TWuFES#iA2(n;@6lwpBi@luhZL*Ai5+UIdMaK7*?OQO8J_ zLI7kg_ngilne*uioF{$1P`y55xKxW-XZe!LvC{2btA$OBDomB~HNA3`GIPhb%V{Gf zn%BYE8#N+C`_^nUa7;SdD+Gi6%UPi@O>d>k-tX<0Qc&%OhJ95|jI!>P2RqEixgFVn zn6LlodGB0aMBql56j67gO+wkqC>MJi)Xh>X7h90)oL-pq<- z)7O5$eeU;ibM4I+oF>9Quv8P~8;xO4|MQw+#lbYC zL{l99yo&?zDTp6JhpJK2iN6Vv@*3%zrQ#Yj~PY4$^rEo(X)=?vs6dlcoA$+;S zhXwn3-})?rDrY)n;KZNODkF<`a8a_9&lFSYXrI0Z=(q+`in62d z)pm;yET^3-o)A)or^y;Mn5ptduecoi6jlqD4Q4aj%Ys^^AP!cHtB;N~s)F1tEMKxx ztkuFMdsX>%M3LcWu>C}(u9iowWnh%9DG#ONvSLoTq_7NXpeTLjtOWkMcv6NkrL(dL zehVzjJ75I*9QN4%wk)7ae95sjxz)lZ26ee?PA#!aN4*R3^^@jVebvXwj^fY6!-vTwso4MFd`buBf0Kup|e_ zDX@{Zr^EqA@h27o@Gr@_9xvrHrPVJTwLt4rl>9@ZvB(lW^p-D9u~4fe)U;BuSc_Sw z$);Ga#f+8@WEQngoF)^uuzf;}VdZSxV%7mu4y^I%vV9&di$T-G0`~OdWwU+aG!2l) z`U?TkY3k#5-}Z^Ke=4oc9?>O#g~>|i?b)>DQLCv{xtDA)>vY+^)-K*+(9G9J*FU6a zHJaHts>HG$F2rgEieF*cCr+D*_QpP;4!=|tLZCa8=b5xZlKYNzv-jt+txvqhn&sZ% zs3G#+Ca`_maN8(b$4_+dgrcOwq2pL;Hl9mYH+C=Bmaj zFYT>myP`m%15Xj==7xwU&)wP(2q$O7Ja^xKQz)spt06?l&)qZNG*El<>=6$JBj$dI zPJvR2yBR{HJa;ccpy-jglg|XOmg+vHl%VC@T>?%SOB)Y3Qe^HBaHOW`@~3d$q&dFa zlf4YRQI@wML}<6VoJ}doQ=(hG)=>jp<;@110?U_Yz!414Kl(ueon_0sH#&Y%faMuxF}9(d2u<$m3P=6SrPc0>5)C0qcK?3SlydK5}M&VcU0_JaM^VaF=NA|G}Nj*1M^l%cm#nACe{cqU{ zlp?f+0*4_u*DPvw>*Qs_^w`w8i^`5?PcD_t)0{Z#2tI23_1-HOd?qo)_(f9E^T=;T%v9Q2{` zB!asg*yMr6jHFOUVHEck3f7iE_ZSZ68%om==W?jmqPh>GA{BFh9mc(uh`JKfP<_!? z(c$tWNt4sYQgGQED=5{8#FO2E+=|r>$*B3i!+pQj$~;i5R23M?;gLe z|NSZK3}TL&n7PJJ^fIgKJ71HrZGb8xw($}UzKMAv<2Lr~>eK6J2nS*lVwQ$0EhH9& z5sl||n00>lTK9-5quf~qushPpmGnww22(0-FZ^CR@3XNxP|}lx_yrt02M5`?&0B88 zI*Cl<@;yZ;qo*%GdaG8-nin|cY9AA@9+werqtak#N=4K{C`T5pE=`W){a#Ov>&vglvR+yQ~xn$%KQ_@DHhQ6zOdF@ zrW{TV0p-A$QW3RyqkrV$xe>iJ5qQ3HOyqw9&lH|PP9l3KYAzaQw1^V@z(q|&H>Ft` zuSFN(C2U%wr^HI!TE)|Qq{-Amp(>&kp==Ri%@L~QR-|v@%)FCs6iIXrT57IPivnVA zApsV!)E~5CG(nSJ_idJVt%PM%2S=Vh;~n;`qYqD%ybgj+8kGa}K{LTT8u2)csqZC8 zmWSja813TGe9JsGcgkq!UC6K0X%gPvohTS0;I&S(JR)9A{FaSdVn^naodb3H|CPQD zK9e?T1kM3+!FI23D>g+6G9^Veyer4)qqRJsllAQZ9}hit&e4Bh7UMy zs>C9QtjO@~ou_l%gH^!!Xp9Q=5djW6!FD>)8H7a5D+_^ZKf>leekx3Zg^w7@Bj7&6 ztALj+-HO%M6|1*$>c=kdAm+CfK3vl`n>*)`%;zcsx4-uIQ_g2nrmD+Akmj<4=&OY0(Bk5TJIygqLs2{lDo| z1e$3!aLUe$m2KiKjp*qk<#rZAr~MQ2m9LUb22`s>g6NXQlP7yut6c4a;);PQwE`TM z*xHw&bD)W?5rZT0gr`uPTV~~|n%WKeO!lhVNLNg;X-xsBQ}{^wO%G%viym{YB_5mS z&Yx~i#Ri{Qh^F#C%_(H>U5ivjeh6(Vn|(6T6qG|^N<}Kd4~ijVx$v>qhLW;n&=H=p z7tlOI0uFLwu@0IsO$vnlw%40Aigz~Qq>FBFS8~yY@Ns&sc&Q)5Oc!5B7!=BZw4%0r z);#DOs3ZT6tZ#>4B?<`XyCooCAp@w*HGyX95`FM;Vx?)WZvnhj|<+07KIM^xfiCQ{y zP=j}A1MVEJ)YkQ_84cr#gW|VE-3%FU>@o)X98vbn@>=8^<~ZJy5g-(TAY{tr{_d|p!*EZtyM3;PHS(|qX5Voey1}^ zc zn=<%}G}N!1&`du>1hT{VWGwk7v>iTP(`)Fo;4^90ly0{cyK*jaV&ng*2z981BlVSBwv z-E~bQyY@>$HX>rZZ;x}J8#TQHVBx@R1Koy~jtMkqe+wkhX|f@I6+O6a5DA=K@l;@R&H9Qb2CfVl;#i!RHjiK( zeIPP6Ln=x}iDOu?I&fc+g(S4?0fhT%hTuqi0t$?CR@C;i4#PuOZ*Lx}8{$nW9z%r0 zr?#kAJMqpxK)kn29~Lh5ZHR+s3s;D}-mT%954WgN1Li4$d&=qzdL z=#%_X)Md0cGQWj;2Uw>-gVb$mEaVvcy;h)=Y`#bL zGEeA`U>=zWiX1ur`N5?P2(Yu!UKvgZ;Vy;ZiBty{%NS8Xs=)x{P(R+#PQY8(dl&-# zr#*n-xNZeFD1&ACATV2B_4eWO?>>`+q;wbncqmp|$~jCXiIK*Lst7I!!OT??QlI3N zvyjW~z{zF6HkRV6H<)OiWDI zUdB8Ef;-rM`@rj8g!m@m+tjNx2u61n{~LtdZ}0e&(FWjlM}X$3xPp>MC^%L03fzkz z4qp`=rCe&9$GoVVlZMbyI`jAF0Iw;~URIRNk7o7(q&>;_PAfKL@T3fv9f-UV;Q@v~ zYm$wIW}P0C9>TP)0V=W?4?}*qXP-cf!)UFjuzCIYLsJUHv?WI461Ot31VbPg`z;mX z2sxE!0s_?TmuoJcMgTV$V#&TYu_BQg9tQiQ75(>j5?HvyYz=Qs(3lA~(s8#B9o^6s zTrG8K?bxH)d~4@I<3H?dtV+^tXCnm2yU+|Pxb`c`Kj%AtUH|*@<}yw2c6O&>qJO}j z1{8xzPUWHCBUHFF49glHU34n%IA9|w_bC9@vHjSu2qBo)0kdyekMJqV5!qnbxWjCu zEeAUXDx0BbQ^Yu~+MNi(-7iy8&LM_?W0x_kl2B5$tpLHYXHoQl z7&nD|8-QU-g$3~Xds7lm5!SL}2-zDr8)U}uaX+?_J3@FO!MAK@x$}pwQ#^Gb%Hw&p zW+UQ?Y#)Y-$+_9>=JnO=`s+`I+QY4)Xi|<&wrd^sDEC1e#qyw(%@3D-Olq$Z>XG{{ z1=i@sFb3}81MD#f=Nl^9+3Q#ME_4~8l)v_ZXz!ZVR?Ab(HB=Ta=_|xO8D*m_>*u0A zla>!Nn-OrQR?V-ng~X~|0!~m$YUa&n($GKWtJzNVhMz3z6XM#Qw9|ft_N~&UORzc8 Jv;P-C}K-2QP2ojK#?veKUl!X&-UGW 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/apple-touch-icon.png b/app/assets/images/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a903fa4284ac429753365d161809ccad441053 GIT binary patch literal 3610 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 g4u;iVdH?_b07*qoM6N<$f)wh)p#T5? literal 0 HcmV?d00001 diff --git a/app/assets/images/discussion.svg b/app/assets/images/discussion.svg new file mode 100644 index 0000000..b935f5c --- /dev/null +++ b/app/assets/images/discussion.svg @@ -0,0 +1,21 @@ + + + + DISCUSSION + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/documentation.svg b/app/assets/images/documentation.svg new file mode 100644 index 0000000..171cd10 --- /dev/null +++ b/app/assets/images/documentation.svg @@ -0,0 +1,16 @@ + + + + DOCUMENT + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6e15cc39a3a1cece656b9a5ce2e2afbee5b8bafe GIT binary patch literal 9662 zcmdT~X>3(R6rP5p3oZn=sHnJrL5;D|L|lW3nz$q`KX6G*tck(6#TXO)A;yX(nz;VZ zxU@xz0;RNUl_E=Q0l`L5!3aVSt)Q$Gq1^l4>)Xcj&3)%}-n_Z@-Di7|p5}JmojG&n zn=^CHoH_3aQ9*yTwSxYiFIpxFafT3L5gYkeq6uCx-2cyMl{HmO?p;+4&bw8O z?s9r|R5m(&m5uIz_c(p1Q*GcOUi2Am9OcLxGe?fCZgT1f)1t}-*R5=DWON~Ynj;d~Or&Tq$dxj0Sv1X8sF)&sT zmU7!_nq%WgKi@@#yGSmLg)z&;Y2&Y%8JirX&Wo_;)&yf>Y#XMqb=3{=he+>nzcC`O zr?G({EMA>YVK?^Y6$@OsYIj;L{yinT{z}Wo)+QwCUg#N6zUR!@j%qvib5}mOE+Ow- z5zqUi4}MO{+BR3-wk)RlLI$4EjgD;mB`KHmdhZ`@N#^^oe#)H#*3G8(r8LHQgzefz zG5Pe@3Hj`XguJRfCTDCMP#8M@NXhpJC&oRY$&t%TOy#%}Q+wUuPr{w9)j(nsmp`OcI-8_EA)BamZ(mAFu+}`QUZ3Xo^ zi`E7_8}_A(@B#nT3u8*=tzX27+R;zhLkXLP-wN_Gw~*{_X#9nQ5zj=@8T7yPP$pmZ z_GWJ{@qFeJHtaKgucNuIr!`<1*gwFJy@WbmKjtqe$u9-@R`}im{+u3E>RIqow@+3YK1uQR?M-Ul+_58%T};Q&_FJ4(b)Vd5G1xTvXx zY@sxMr(cix5CfL%L$=UH_7yeF-4OymVF6}d11|2JZbmX)(p5Mn>5BCGvC(#&T zbP3GBk9$Np@jHCxWIDg1crKV@IlFv)pzHFzDa?GC=PQaEqM`*m!|ff$!goG?4^#HV zvr)m9+y2Rf+B=Ms@2mV?s>J$6NttX`jtRN{ft75)yKDRIu|iwA`^$Kg@RjWA7u(|> zn{ElemnR5`|D|sSBFFzY#oacn);i8{gv1Z~ikfWkzZE+$bABcy{_Te|3VtG;mG5j$ zs<;yIvL9_ckd|xrq~!qdo0O%!K5JW2ohP4cO-k&2kS)Fr#!q>s5cpwNJjT?OgZC=* z{g}qrDV@p6d&pK;F79XtVuf?SUgUO^I154j1KEOlou}wC?H^?WA@IYlKu0X{xlJ+9 zKg9FqSkL!(_?TzBaaNr+%i$(DsU_Sw2JG-b=2*6O*cAwCV8)1db{6`jH-0SCE#%#| zs*ne3qK|{SF%x+8Howonjx)foU9bO$?$u1q+mo`I?oDXNeG>azrymZcWlgS~Wi-+K zS0~(!5l^8VF%RCEUZdEY`vsNi{GwcH5D&M(u9)_@S%rJ-r;a@6a~`iDyTu(I^LTTU z-S6%?no-zsulQS&gFFF`8&q;0I86L@G&yL053U|u-!>ngikt(Ft?QO`fO4J|D?duH zCsS{Km^i|V-w=b+KB63Q;aRJ{!=9Kr4Bbpw>e)57qfCy1_VW_1F;m zQpaF^24-LfmAb#&pR+yq9$Soy{jSq{KNaVo-lDvOPOuph(jS%^ksUgnoZ1 zb$^6Cfu5qAl{qHfkq=^mpNB6r`A(s_y{>ouffs#D9=yMpi&1bM*xFSc<=gf9Bi6un ze}{j79K^Lf`-}C(@=qi?-Jd(3o(PCvc%I-zAMUT0u=g#LPukR%mXL+~klwC78~1nM zx8+aZLzv(nE}C2Dvsvy|b%4mvZqzh2^8a5P_moR;41 zmp{QA^!yd_eI`A#zIaWMuS7h=gjnY~!!9vCa*b|oZ-W;x#x-;g)v@98tGT_(@(?G% z4>O-%{tEc@{2|ttZHZ+)U^y3`%f&6sgYtFD`D?}x;Io}m$Xn}#b!Y6f#{=_+n1i0b zeYh(w;rF3~*>vV|UN$d}^o3Z?BwGy6K1}D;^P(&hx<)P(bSRO{=itNSZ-F1A=g(nJ zIA>YDSz=ClUTF27#rbjc0U!1<6TU~#_k}6^*XRzhTY;@0L5e{<#-{e8+8<-7iHC8*^PJlH3paUc&`w` uEKz+dsUCw_aCD + + + Lunanch + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/app/assets/images/grace.svg b/app/assets/images/grace.svg new file mode 100644 index 0000000..b0b2455 --- /dev/null +++ b/app/assets/images/grace.svg @@ -0,0 +1,22 @@ + + + + GRACE-SVG + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/guides.svg b/app/assets/images/guides.svg new file mode 100644 index 0000000..43e58d4 --- /dev/null +++ b/app/assets/images/guides.svg @@ -0,0 +1,17 @@ + + + + GUIDE Copy + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000..aa95de6 --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,10 @@ +// This is a manifest file that'll be compiled into application.js. +// +// Any JavaScript file within this directory can be referenced here using a relative path. +// +// You're free to add application-wide JavaScript to this file, but it's generally better +// to create separate JavaScript files as needed. +// +//= require jquery.min +//= require bootstrap.bundle +//= require_self diff --git a/app/assets/javascripts/bootstrap.bundle.js b/app/assets/javascripts/bootstrap.bundle.js new file mode 100644 index 0000000..e5d26a2 --- /dev/null +++ b/app/assets/javascripts/bootstrap.bundle.js @@ -0,0 +1,6812 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory()); +})(this, (function () { 'use strict'; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const MAX_UID = 1000000; + const MILLISECONDS_MULTIPLIER = 1000; + const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + const toType = obj => { + if (obj === null || obj === undefined) { + return `${obj}`; + } + + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + + const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + + return prefix; + }; + + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + + if (!selector || selector === '#') { + let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, + // so everything starting with `#` or `.`. If a "real" URL is used as the selector, + // `document.querySelector` will rightfully complain it is invalid. + // See https://github.com/twbs/bootstrap/issues/32273 + + if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) { + return null; + } // Just in case some CMS puts out a full URL with the anchor appended + + + if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) { + hrefAttr = `#${hrefAttr.split('#')[1]}`; + } + + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; + } + + return selector; + }; + + const getSelectorFromElement = element => { + const selector = getSelector(element); + + if (selector) { + return document.querySelector(selector) ? selector : null; + } + + return null; + }; + + const getElementFromSelector = element => { + const selector = getSelector(element); + return selector ? document.querySelector(selector) : null; + }; + + const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } // Get transition-duration of the element + + + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + + const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + + const isElement$1 = obj => { + if (!obj || typeof obj !== 'object') { + return false; + } + + if (typeof obj.jquery !== 'undefined') { + obj = obj[0]; + } + + return typeof obj.nodeType !== 'undefined'; + }; + + const getElement = obj => { + if (isElement$1(obj)) { + // it's a jQuery object or a node element + return obj.jquery ? obj[0] : obj; + } + + if (typeof obj === 'string' && obj.length > 0) { + return document.querySelector(obj); + } + + return null; + }; + + const typeCheckConfig = (componentName, config, configTypes) => { + Object.keys(configTypes).forEach(property => { + const expectedTypes = configTypes[property]; + const value = config[property]; + const valueType = value && isElement$1(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + }); + }; + + const isVisible = element => { + if (!isElement$1(element) || element.getClientRects().length === 0) { + return false; + } + + return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + }; + + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + + const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } // Can find the shadow root otherwise it'll return the document + + + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + + if (element instanceof ShadowRoot) { + return element; + } // when we don't find a shadow root + + + if (!element.parentNode) { + return null; + } + + return findShadowRoot(element.parentNode); + }; + + const noop = () => {}; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + + + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; + + const getjQuery = () => { + const { + jQuery + } = window; + + if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return jQuery; + } + + return null; + }; + + const DOMContentLoadedCallbacks = []; + + const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + // add listener on the first call when the document is in loading state + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + DOMContentLoadedCallbacks.forEach(callback => callback()); + }); + } + + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + + const isRTL = () => document.documentElement.dir === 'rtl'; + + const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + /* istanbul ignore if */ + + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + + const execute = callback => { + if (typeof callback === 'function') { + callback(); + } + }; + + const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + /** + * Return the previous/next element of a list. + * + * @param {array} list The list of elements + * @param activeElement The active element + * @param shouldGetNext Choose to get next or previous element + * @param isCycleAllowed + * @return {Element|elem} The proper element + */ + + + const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed + + if (index === -1) { + return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]; + } + + const listLength = list.length; + index += shouldGetNext ? 1 : -1; + + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + + return list[Math.max(0, Math.min(index, listLength - 1))]; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dom/event-handler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const namespaceRegex = /[^.]*(?=\..*)\.|.*/; + const stripNameRegex = /\..*/; + const stripUidRegex = /::\d+$/; + const eventRegistry = {}; // Events storage + + let uidEvent = 1; + const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + const customEventsRegex = /^(mouseenter|mouseleave)/i; + const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); + /** + * ------------------------------------------------------------------------ + * Private methods + * ------------------------------------------------------------------------ + */ + + function getUidEvent(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + + function getEvent(element) { + const uid = getUidEvent(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + + function bootstrapHandler(element, fn) { + return function handler(event) { + event.delegateTarget = element; + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(element, [event]); + }; + } + + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (let i = domElements.length; i--;) { + if (domElements[i] === target) { + event.delegateTarget = target; + + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + + return fn.apply(target, [event]); + } + } + } // To please ESLint + + + return null; + }; + } + + function findHandler(events, handler, delegationSelector = null) { + const uidEventList = Object.keys(events); + + for (let i = 0, len = uidEventList.length; i < len; i++) { + const event = events[uidEventList[i]]; + + if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { + return event; + } + } + + return null; + } + + function normalizeParams(originalTypeEvent, handler, delegationFn) { + const delegation = typeof handler === 'string'; + const originalHandler = delegation ? delegationFn : handler; + let typeEvent = getTypeEvent(originalTypeEvent); + const isNative = nativeEvents.has(typeEvent); + + if (!isNative) { + typeEvent = originalTypeEvent; + } + + return [delegation, originalHandler, typeEvent]; + } + + function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + if (!handler) { + handler = delegationFn; + delegationFn = null; + } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position + // this prevents the handler from being dispatched the same way as mouseover or mouseout does + + + if (customEventsRegex.test(originalTypeEvent)) { + const wrapFn = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + + if (delegationFn) { + delegationFn = wrapFn(delegationFn); + } else { + handler = wrapFn(handler); + } + } + + const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); + const events = getEvent(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); + + if (previousFn) { + previousFn.oneOff = previousFn.oneOff && oneOff; + return; + } + + const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); + const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); + fn.delegationSelector = delegation ? handler : null; + fn.originalHandler = originalHandler; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, delegation); + } + + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + + if (!fn) { + return; + } + + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(handlerKey => { + if (handlerKey.includes(namespace)) { + const event = storeElementEvent[handlerKey]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); + } + }); + } + + function getTypeEvent(event) { + // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; + } + + const EventHandler = { + on(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, false); + }, + + one(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, true); + }, + + off(element, originalTypeEvent, handler, delegationFn) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getEvent(element); + const isNamespace = originalTypeEvent.startsWith('.'); + + if (typeof originalHandler !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!events || !events[typeEvent]) { + return; + } + + removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); + return; + } + + if (isNamespace) { + Object.keys(events).forEach(elementEvent => { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + }); + } + + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(keyHandlers => { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + const event = storeElementEvent[keyHandlers]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); + } + }); + }, + + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + const isNative = nativeEvents.has(typeEvent); + let jQueryEvent; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + let evt = null; + + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + + if (isNative) { + evt = document.createEvent('HTMLEvents'); + evt.initEvent(typeEvent, bubbles, true); + } else { + evt = new CustomEvent(event, { + bubbles, + cancelable: true + }); + } // merge custom information in our event + + + if (typeof args !== 'undefined') { + Object.keys(args).forEach(key => { + Object.defineProperty(evt, key, { + get() { + return args[key]; + } + + }); + }); + } + + if (defaultPrevented) { + evt.preventDefault(); + } + + if (nativeDispatch) { + element.dispatchEvent(evt); + } + + if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { + jQueryEvent.preventDefault(); + } + + return evt; + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + const elementMap = new Map(); + const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } + + const instanceMap = elementMap.get(element); // make it clear we only want one instance per element + // can be removed later when multiple key/instances are fine to be used + + if (!instanceMap.has(key) && instanceMap.size !== 0) { + // eslint-disable-next-line no-console + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + + instanceMap.set(key, instance); + }, + + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + + return null; + }, + + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + + const instanceMap = elementMap.get(element); + instanceMap.delete(key); // free up element references if there are no instances left for an element + + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): base-component.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const VERSION = '5.1.3'; + + class BaseComponent { + constructor(element) { + element = getElement(element); + + if (!element) { + return; + } + + this._element = element; + Data.set(this._element, this.constructor.DATA_KEY, this); + } + + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + Object.getOwnPropertyNames(this).forEach(propertyName => { + this[propertyName] = null; + }); + } + + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + /** Static */ + + + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + + static get VERSION() { + return VERSION; + } + + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$d = 'alert'; + const DATA_KEY$c = 'bs.alert'; + const EVENT_KEY$c = `.${DATA_KEY$c}`; + const EVENT_CLOSE = `close${EVENT_KEY$c}`; + const EVENT_CLOSED = `closed${EVENT_KEY$c}`; + const CLASS_NAME_FADE$5 = 'fade'; + const CLASS_NAME_SHOW$8 = 'show'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Alert extends BaseComponent { + // Getters + static get NAME() { + return NAME$d; + } // Public + + + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + + if (closeEvent.defaultPrevented) { + return; + } + + this._element.classList.remove(CLASS_NAME_SHOW$8); + + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } // Private + + + _destroyElement() { + this._element.remove(); + + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + + if (typeof config !== 'string') { + return; + } + + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](this); + }); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + enableDismissTrigger(Alert, 'close'); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Alert to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Alert); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$c = 'button'; + const DATA_KEY$b = 'bs.button'; + const EVENT_KEY$b = `.${DATA_KEY$b}`; + const DATA_API_KEY$7 = '.data-api'; + const CLASS_NAME_ACTIVE$3 = 'active'; + const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; + const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Button extends BaseComponent { + // Getters + static get NAME() { + return NAME$c; + } // Public + + + toggle() { + // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + + if (config === 'toggle') { + data[config](); + } + }); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Button to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Button); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + function normalizeData(val) { + if (val === 'true') { + return true; + } + + if (val === 'false') { + return false; + } + + if (val === Number(val).toString()) { + return Number(val); + } + + if (val === '' || val === 'null') { + return null; + } + + return val; + } + + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); + } + + const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + + getDataAttributes(element) { + if (!element) { + return {}; + } + + const attributes = {}; + Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + }); + return attributes; + }, + + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + }, + + offset(element) { + const rect = element.getBoundingClientRect(); + return { + top: rect.top + window.pageYOffset, + left: rect.left + window.pageXOffset + }; + }, + + position(element) { + return { + top: element.offsetTop, + left: element.offsetLeft + }; + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const NODE_TEXT = 3; + const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode; + + while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { + if (ancestor.matches(selector)) { + parents.push(ancestor); + } + + ancestor = ancestor.parentNode; + } + + return parents; + }, + + prev(element, selector) { + let previous = element.previousElementSibling; + + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + + previous = previous.previousElementSibling; + } + + return []; + }, + + next(element, selector) { + let next = element.nextElementSibling; + + while (next) { + if (next.matches(selector)) { + return [next]; + } + + next = next.nextElementSibling; + } + + return []; + }, + + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', '); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$b = 'carousel'; + const DATA_KEY$a = 'bs.carousel'; + const EVENT_KEY$a = `.${DATA_KEY$a}`; + const DATA_API_KEY$6 = '.data-api'; + const ARROW_LEFT_KEY = 'ArrowLeft'; + const ARROW_RIGHT_KEY = 'ArrowRight'; + const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + const SWIPE_THRESHOLD = 40; + const Default$a = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true, + touch: true + }; + const DefaultType$a = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean', + touch: 'boolean' + }; + const ORDER_NEXT = 'next'; + const ORDER_PREV = 'prev'; + const DIRECTION_LEFT = 'left'; + const DIRECTION_RIGHT = 'right'; + const KEY_TO_DIRECTION = { + [ARROW_LEFT_KEY]: DIRECTION_RIGHT, + [ARROW_RIGHT_KEY]: DIRECTION_LEFT + }; + const EVENT_SLIDE = `slide${EVENT_KEY$a}`; + const EVENT_SLID = `slid${EVENT_KEY$a}`; + const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`; + const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`; + const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`; + const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`; + const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`; + const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`; + const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`; + const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`; + const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`; + const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`; + const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; + const CLASS_NAME_CAROUSEL = 'carousel'; + const CLASS_NAME_ACTIVE$2 = 'active'; + const CLASS_NAME_SLIDE = 'slide'; + const CLASS_NAME_END = 'carousel-item-end'; + const CLASS_NAME_START = 'carousel-item-start'; + const CLASS_NAME_NEXT = 'carousel-item-next'; + const CLASS_NAME_PREV = 'carousel-item-prev'; + const CLASS_NAME_POINTER_EVENT = 'pointer-event'; + const SELECTOR_ACTIVE$1 = '.active'; + const SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; + const SELECTOR_ITEM = '.carousel-item'; + const SELECTOR_ITEM_IMG = '.carousel-item img'; + const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; + const SELECTOR_INDICATORS = '.carousel-indicators'; + const SELECTOR_INDICATOR = '[data-bs-target]'; + const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; + const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; + const POINTER_TYPE_TOUCH = 'touch'; + const POINTER_TYPE_PEN = 'pen'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Carousel extends BaseComponent { + constructor(element, config) { + super(element); + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this.touchStartX = 0; + this.touchDeltaX = 0; + this._config = this._getConfig(config); + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + this._pointerEvent = Boolean(window.PointerEvent); + + this._addEventListeners(); + } // Getters + + + static get Default() { + return Default$a; + } + + static get NAME() { + return NAME$b; + } // Public + + + next() { + this._slide(ORDER_NEXT); + } + + nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + + prev() { + this._slide(ORDER_PREV); + } + + pause(event) { + if (!event) { + this._isPaused = true; + } + + if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { + triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + + cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config && this._config.interval && !this._isPaused) { + this._updateInterval(); + + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + } + + to(index) { + this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + + const activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; + + this._slide(order, this._items[index]); + } // Private + + + _getConfig(config) { + config = { ...Default$a, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$b, config, DefaultType$a); + return config; + } + + _handleSwipe() { + const absDeltax = Math.abs(this.touchDeltaX); + + if (absDeltax <= SWIPE_THRESHOLD) { + return; + } + + const direction = absDeltax / this.touchDeltaX; + this.touchDeltaX = 0; + + if (!direction) { + return; + } + + this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT); + } + + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); + } + + if (this._config.pause === 'hover') { + EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event)); + EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event)); + } + + if (this._config.touch && this._touchSupported) { + this._addTouchEventListeners(); + } + } + + _addTouchEventListeners() { + const hasPointerPenTouch = event => { + return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + }; + + const start = event => { + if (hasPointerPenTouch(event)) { + this.touchStartX = event.clientX; + } else if (!this._pointerEvent) { + this.touchStartX = event.touches[0].clientX; + } + }; + + const move = event => { + // ensure swiping with one touch and not pinching + this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX; + }; + + const end = event => { + if (hasPointerPenTouch(event)) { + this.touchDeltaX = event.clientX - this.touchStartX; + } + + this._handleSwipe(); + + if (this._config.pause === 'hover') { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + this.pause(); + + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + + this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + } + }; + + SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => { + EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault()); + }); + + if (this._pointerEvent) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => end(event)); + + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event)); + } + } + + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + const direction = KEY_TO_DIRECTION[event.key]; + + if (direction) { + event.preventDefault(); + + this._slide(direction); + } + } + + _getItemIndex(element) { + this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; + return this._items.indexOf(element); + } + + _getItemByOrder(order, activeElement) { + const isNext = order === ORDER_NEXT; + return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap); + } + + _triggerSlideEvent(relatedTarget, eventDirectionName) { + const targetIndex = this._getItemIndex(relatedTarget); + + const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); + + return EventHandler.trigger(this._element, EVENT_SLIDE, { + relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + } + + _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement); + + for (let i = 0; i < indicators.length; i++) { + if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { + indicators[i].classList.add(CLASS_NAME_ACTIVE$2); + indicators[i].setAttribute('aria-current', 'true'); + break; + } + } + } + } + + _updateInterval() { + const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + + if (!element) { + return; + } + + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + + if (elementInterval) { + this._config.defaultInterval = this._config.defaultInterval || this._config.interval; + this._config.interval = elementInterval; + } else { + this._config.interval = this._config.defaultInterval || this._config.interval; + } + } + + _slide(directionOrOrder, element) { + const order = this._directionToOrder(directionOrOrder); + + const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + + const activeElementIndex = this._getItemIndex(activeElement); + + const nextElement = element || this._getItemByOrder(order, activeElement); + + const nextElementIndex = this._getItemIndex(nextElement); + + const isCycling = Boolean(this._interval); + const isNext = order === ORDER_NEXT; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + + const eventDirectionName = this._orderToDirection(order); + + if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) { + this._isSliding = false; + return; + } + + if (this._isSliding) { + return; + } + + const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.defaultPrevented) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + this._activeElement = nextElement; + + const triggerSlidEvent = () => { + EventHandler.trigger(this._element, EVENT_SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + }; + + if (this._element.classList.contains(CLASS_NAME_SLIDE)) { + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + + const completeCallBack = () => { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + setTimeout(triggerSlidEvent, 0); + }; + + this._queueCallback(completeCallBack, activeElement, true); + } else { + activeElement.classList.remove(CLASS_NAME_ACTIVE$2); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + this._isSliding = false; + triggerSlidEvent(); + } + + if (isCycling) { + this.cycle(); + } + } + + _directionToOrder(direction) { + if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) { + return direction; + } + + if (isRTL()) { + return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; + } + + return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; + } + + _orderToDirection(order) { + if (![ORDER_NEXT, ORDER_PREV].includes(order)) { + return order; + } + + if (isRTL()) { + return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + + return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; + } // Static + + + static carouselInterface(element, config) { + const data = Carousel.getOrCreateInstance(element, config); + let { + _config + } = data; + + if (typeof config === 'object') { + _config = { ..._config, + ...config + }; + } + + const action = typeof config === 'string' ? config : _config.slide; + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError(`No method named "${action}"`); + } + + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); + } + } + + static jQueryInterface(config) { + return this.each(function () { + Carousel.carouselInterface(this, config); + }); + } + + static dataApiClickHandler(event) { + const target = getElementFromSelector(this); + + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; + } + + const config = { ...Manipulator.getDataAttributes(target), + ...Manipulator.getDataAttributes(this) + }; + const slideIndex = this.getAttribute('data-bs-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel.carouselInterface(target, config); + + if (slideIndex) { + Carousel.getInstance(target).to(slideIndex); + } + + event.preventDefault(); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); + EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); + + for (let i = 0, len = carousels.length; i < len; i++) { + Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])); + } + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Carousel to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Carousel); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$a = 'collapse'; + const DATA_KEY$9 = 'bs.collapse'; + const EVENT_KEY$9 = `.${DATA_KEY$9}`; + const DATA_API_KEY$5 = '.data-api'; + const Default$9 = { + toggle: true, + parent: null + }; + const DefaultType$9 = { + toggle: 'boolean', + parent: '(null|element)' + }; + const EVENT_SHOW$5 = `show${EVENT_KEY$9}`; + const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`; + const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`; + const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`; + const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`; + const CLASS_NAME_SHOW$7 = 'show'; + const CLASS_NAME_COLLAPSE = 'collapse'; + const CLASS_NAME_COLLAPSING = 'collapsing'; + const CLASS_NAME_COLLAPSED = 'collapsed'; + const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; + const WIDTH = 'width'; + const HEIGHT = 'height'; + const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; + const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Collapse extends BaseComponent { + constructor(element, config) { + super(element); + this._isTransitioning = false; + this._config = this._getConfig(config); + this._triggerArray = []; + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); + + for (let i = 0, len = toggleList.length; i < len; i++) { + const elem = toggleList[i]; + const selector = getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element); + + if (selector !== null && filterElement.length) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._initializeChildren(); + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + + if (this._config.toggle) { + this.toggle(); + } + } // Getters + + + static get Default() { + return Default$9; + } + + static get NAME() { + return NAME$a; + } // Public + + + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + + let actives = []; + let activesData; + + if (this._config.parent) { + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth + } + + const container = SelectorEngine.findOne(this._selector); + + if (actives.length) { + const tempActiveData = actives.find(elem => container !== elem); + activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null; + + if (activesData && activesData._isTransitioning) { + return; + } + } + + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5); + + if (startEvent.defaultPrevented) { + return; + } + + actives.forEach(elemActive => { + if (container !== elemActive) { + Collapse.getOrCreateInstance(elemActive, { + toggle: false + }).hide(); + } + + if (!activesData) { + Data.set(elemActive, DATA_KEY$9, null); + } + }); + + const dimension = this._getDimension(); + + this._element.classList.remove(CLASS_NAME_COLLAPSE); + + this._element.classList.add(CLASS_NAME_COLLAPSING); + + this._element.style[dimension] = 0; + + this._addAriaAndCollapsedClass(this._triggerArray, true); + + this._isTransitioning = true; + + const complete = () => { + this._isTransitioning = false; + + this._element.classList.remove(CLASS_NAME_COLLAPSING); + + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + + this._element.style[dimension] = ''; + EventHandler.trigger(this._element, EVENT_SHOWN$5); + }; + + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + + this._queueCallback(complete, this._element, true); + + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5); + + if (startEvent.defaultPrevented) { + return; + } + + const dimension = this._getDimension(); + + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + + this._element.classList.add(CLASS_NAME_COLLAPSING); + + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + + const triggerArrayLength = this._triggerArray.length; + + for (let i = 0; i < triggerArrayLength; i++) { + const trigger = this._triggerArray[i]; + const elem = getElementFromSelector(trigger); + + if (elem && !this._isShown(elem)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + + this._isTransitioning = true; + + const complete = () => { + this._isTransitioning = false; + + this._element.classList.remove(CLASS_NAME_COLLAPSING); + + this._element.classList.add(CLASS_NAME_COLLAPSE); + + EventHandler.trigger(this._element, EVENT_HIDDEN$5); + }; + + this._element.style[dimension] = ''; + + this._queueCallback(complete, this._element, true); + } + + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$7); + } // Private + + + _getConfig(config) { + config = { ...Default$9, + ...Manipulator.getDataAttributes(this._element), + ...config + }; + config.toggle = Boolean(config.toggle); // Coerce string values + + config.parent = getElement(config.parent); + typeCheckConfig(NAME$a, config, DefaultType$9); + return config; + } + + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + + _initializeChildren() { + if (!this._config.parent) { + return; + } + + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => { + const selected = getElementFromSelector(element); + + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + }); + } + + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + + triggerArray.forEach(elem => { + if (isOpen) { + elem.classList.remove(CLASS_NAME_COLLAPSED); + } else { + elem.classList.add(CLASS_NAME_COLLAPSED); + } + + elem.setAttribute('aria-expanded', isOpen); + }); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const _config = {}; + + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + + const data = Collapse.getOrCreateInstance(this, _config); + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { + event.preventDefault(); + } + + const selector = getSelectorFromElement(this); + const selectorElements = SelectorEngine.find(selector); + selectorElements.forEach(element => { + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Collapse to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Collapse); + + var top = 'top'; + var bottom = 'bottom'; + var right = 'right'; + var left = 'left'; + var auto = 'auto'; + var basePlacements = [top, bottom, right, left]; + var start = 'start'; + var end = 'end'; + var clippingParents = 'clippingParents'; + var viewport = 'viewport'; + var popper = 'popper'; + var reference = 'reference'; + var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); // modifiers that need to read the DOM + + var beforeRead = 'beforeRead'; + var read = 'read'; + var afterRead = 'afterRead'; // pure-logic modifiers + + var beforeMain = 'beforeMain'; + var main = 'main'; + var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + + var beforeWrite = 'beforeWrite'; + var write = 'write'; + var afterWrite = 'afterWrite'; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + + function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; + } + + function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; + } + + function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + + function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + + // and applies them to the HTMLElements such as popper and arrow + + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); + } + + function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } // eslint-disable-next-line import/no-unused-modules + + + const applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] + }; + + function getBasePlacement(placement) { + return placement.split('-')[0]; + } + + // import { isHTMLElement } from './instanceOf'; + function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars + includeScale) { + + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; // FIXME: + // `offsetWidth` returns an integer while `getBoundingClientRect` + // returns a float. This results in `scaleX` or `scaleY` being + // non-1 when it should be for elements that aren't a full pixel in + // width or height. + // if (isHTMLElement(element) && includeScale) { + // const offsetHeight = element.offsetHeight; + // const offsetWidth = element.offsetWidth; + // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale + // // Fallback to 1 in case both values are `0` + // if (offsetWidth > 0) { + // scaleX = rect.width / offsetWidth || 1; + // } + // if (offsetHeight > 0) { + // scaleY = rect.height / offsetHeight || 1; + // } + // } + + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + + // means it doesn't take into account transforms. + + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; + } + + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; + } + + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + + function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; + } + + function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; + } + + function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); + } + + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle$1(element).position === 'fixed') { + return null; + } + + return element.offsetParent; + } // `.offsetParent` reports `null` for fixed elements, while absolute elements + // return the containing block + + + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var isIE = navigator.userAgent.indexOf('Trident') !== -1; + + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle$1(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = getParentNode(element); + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; + } // Gets the closest ancestor positioned element. Handles some edge cases, + // such as table ancestors and cross browser bugs. + + + function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; + } + + function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; + } + + var max = Math.max; + var min = Math.min; + var round = Math.round; + + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + + function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; + + function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); + } + + function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (!contains(state.elements.popper, arrowElement)) { + + return; + } + + state.elements.arrow = arrowElement; + } // eslint-disable-next-line import/no-unused-modules + + + const arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + + function getVariation(placement) { + return placement.split('-')[1]; + } + + var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' + }; // Round the offsets to the nearest suitable subpixel based on the DPR. + // Zooming can change the DPR, but it seems to report a value that will + // cleanly divide the values into the appropriate subpixels. + + function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(round(x * dpr) / dpr) || 0, + y: round(round(y * dpr) / dpr) || 0 + }; + } + + function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets; + + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, + _ref3$x = _ref3.x, + x = _ref3$x === void 0 ? 0 : _ref3$x, + _ref3$y = _ref3.y, + y = _ref3$y === void 0 ? 0 : _ref3$y; + + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; // $FlowFixMe[prop-missing] + + y -= offsetParent[heightProp] - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; // $FlowFixMe[prop-missing] + + x -= offsetParent[widthProp] - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + } + + function computeStyles(_ref4) { + var state = _ref4.state, + options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} + }; + + var passive = { + passive: true + }; + + function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; + } // eslint-disable-next-line import/no-unused-modules + + + const eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} + }; + + var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); + } + + var hash = { + start: 'end', + end: 'start' + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); + } + + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; + } + + function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent + + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; + } + + // of the `` and `` rect bounds if horizontally scrollable + + function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; + } + + function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + + function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); + } + + /* + given a DOM element, return the list of all scroll parents, up the list of ancesors + until we get to the top window object. This list is what we attach scroll listeners + to, because if any of these parent elements scroll, we'll need to re-calculate the + reference element's position. + */ + + function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); + } + + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } // A "clipping parent" is an overflowable container with the characteristic of + // clipping (or hiding) overflowing elements with a position different from + // `initial` + + + function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); + } // Gets the maximum area that the element is visible in due to any number of + // clipping parents + + + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + + function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; + } + + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; + } + + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); + } + + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + + function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } // eslint-disable-next-line import/no-unused-modules + + + const flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } + }; + + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); + } + + function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); + } // eslint-disable-next-line import/no-unused-modules + + + const hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide + }; + + function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + + function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset + }; + + function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} + }; + + function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; + } + + function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis || checkAltAxis) { + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; + var max$1 = popperOffsets[mainAxis] - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; + var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; + var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; + + if (checkMainAxis) { + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _mainSide = mainAxis === 'x' ? top : left; + + var _altSide = mainAxis === 'x' ? bottom : right; + + var _offset = popperOffsets[altAxis]; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] + }; + + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = rect.width / element.offsetWidth || 1; + var scaleY = rect.height / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } // Returns the composite rect of an element relative to its offsetParent. + // Composite means it takes into account transforms as well as layout. + + + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = isHTMLElement(offsetParent); + isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + + function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; + } + + function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); + } + + function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; + } + + function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); + } + + var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' + }; + + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); + } + + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + + for (var index = 0; index < state.orderedModifiers.length; index++) { + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; + } + var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers + }); // eslint-disable-next-line import/no-unused-modules + + const Popper = /*#__PURE__*/Object.freeze({ + __proto__: null, + popperGenerator, + detectOverflow, + createPopperBase: createPopper$2, + createPopper, + createPopperLite: createPopper$1, + top, + bottom, + right, + left, + auto, + basePlacements, + start, + end, + clippingParents, + viewport, + popper, + reference, + variationPlacements, + placements, + beforeRead, + read, + afterRead, + beforeMain, + main, + afterMain, + beforeWrite, + write, + afterWrite, + modifierPhases, + applyStyles: applyStyles$1, + arrow: arrow$1, + computeStyles: computeStyles$1, + eventListeners, + flip: flip$1, + hide: hide$1, + offset: offset$1, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1 + }); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$9 = 'dropdown'; + const DATA_KEY$8 = 'bs.dropdown'; + const EVENT_KEY$8 = `.${DATA_KEY$8}`; + const DATA_API_KEY$4 = '.data-api'; + const ESCAPE_KEY$2 = 'Escape'; + const SPACE_KEY = 'Space'; + const TAB_KEY$1 = 'Tab'; + const ARROW_UP_KEY = 'ArrowUp'; + const ARROW_DOWN_KEY = 'ArrowDown'; + const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button + + const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`); + const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`; + const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`; + const EVENT_SHOW$4 = `show${EVENT_KEY$8}`; + const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`; + const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`; + const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`; + const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`; + const CLASS_NAME_SHOW$6 = 'show'; + const CLASS_NAME_DROPUP = 'dropup'; + const CLASS_NAME_DROPEND = 'dropend'; + const CLASS_NAME_DROPSTART = 'dropstart'; + const CLASS_NAME_NAVBAR = 'navbar'; + const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]'; + const SELECTOR_MENU = '.dropdown-menu'; + const SELECTOR_NAVBAR_NAV = '.navbar-nav'; + const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; + const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; + const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; + const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; + const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; + const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; + const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; + const Default$8 = { + offset: [0, 2], + boundary: 'clippingParents', + reference: 'toggle', + display: 'dynamic', + popperConfig: null, + autoClose: true + }; + const DefaultType$8 = { + offset: '(array|string|function)', + boundary: '(string|element)', + reference: '(string|element|object)', + display: 'string', + popperConfig: '(null|object|function)', + autoClose: '(boolean|string)' + }; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Dropdown extends BaseComponent { + constructor(element, config) { + super(element); + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + } // Getters + + + static get Default() { + return Default$8; + } + + static get DefaultType() { + return DefaultType$8; + } + + static get NAME() { + return NAME$9; + } // Public + + + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + + show() { + if (isDisabled(this._element) || this._isShown(this._menu)) { + return; + } + + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget); + + if (showEvent.defaultPrevented) { + return; + } + + const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar + + if (this._inNavbar) { + Manipulator.setDataAttribute(this._menu, 'popper', 'none'); + } else { + this._createPopper(parent); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) { + [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop)); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + this._menu.classList.add(CLASS_NAME_SHOW$6); + + this._element.classList.add(CLASS_NAME_SHOW$6); + + EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget); + } + + hide() { + if (isDisabled(this._element) || !this._isShown(this._menu)) { + return; + } + + const relatedTarget = { + relatedTarget: this._element + }; + + this._completeHide(relatedTarget); + } + + dispose() { + if (this._popper) { + this._popper.destroy(); + } + + super.dispose(); + } + + update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper) { + this._popper.update(); + } + } // Private + + + _completeHide(relatedTarget) { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget); + + if (hideEvent.defaultPrevented) { + return; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop)); + } + + if (this._popper) { + this._popper.destroy(); + } + + this._menu.classList.remove(CLASS_NAME_SHOW$6); + + this._element.classList.remove(CLASS_NAME_SHOW$6); + + this._element.setAttribute('aria-expanded', 'false'); + + Manipulator.removeDataAttribute(this._menu, 'popper'); + EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget); + } + + _getConfig(config) { + config = { ...this.constructor.Default, + ...Manipulator.getDataAttributes(this._element), + ...config + }; + typeCheckConfig(NAME$9, config, this.constructor.DefaultType); + + if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { + // Popper virtual elements require a getBoundingClientRect method + throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); + } + + return config; + } + + _createPopper(parent) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + + let referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (isElement$1(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + + const popperConfig = this._getPopperConfig(); + + const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); + this._popper = createPopper(referenceElement, this._menu, popperConfig); + + if (isDisplayStatic) { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); + } + } + + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$6); + } + + _getMenuElement() { + return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; + } + + _getPlacement() { + const parentDropdown = this._element.parentNode; + + if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { + return PLACEMENT_RIGHT; + } + + if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { + return PLACEMENT_LEFT; + } // We need to trim the value because custom properties can also include spaces + + + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { + return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } + + return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; + } + + _detectNavbar() { + return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null; + } + + _getOffset() { + const { + offset + } = this._config; + + if (typeof offset === 'string') { + return offset.split(',').map(val => Number.parseInt(val, 10)); + } + + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + + return offset; + } + + _getPopperConfig() { + const defaultBsPopperConfig = { + placement: this._getPlacement(), + modifiers: [{ + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }] + }; // Disable Popper if we have a static display + + if (this._config.display === 'static') { + defaultBsPopperConfig.modifiers = [{ + name: 'applyStyles', + enabled: false + }]; + } + + return { ...defaultBsPopperConfig, + ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) + }; + } + + _selectMenuItem({ + key, + target + }) { + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible); + + if (!items.length) { + return; + } // if target isn't included in items (e.g. when expanding the dropdown) + // allow cycling to get the last item in case key equals ARROW_UP_KEY + + + getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus(); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + }); + } + + static clearMenus(event) { + if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) { + return; + } + + const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3); + + for (let i = 0, len = toggles.length; i < len; i++) { + const context = Dropdown.getInstance(toggles[i]); + + if (!context || context._config.autoClose === false) { + continue; + } + + if (!context._isShown()) { + continue; + } + + const relatedTarget = { + relatedTarget: context._element + }; + + if (event) { + const composedPath = event.composedPath(); + const isMenuTarget = composedPath.includes(context._menu); + + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu + + + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } + } + + context._completeHide(relatedTarget); + } + } + + static getParentFromElement(element) { + return getElementFromSelector(element) || element.parentNode; + } + + static dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { + return; + } + + const isActive = this.classList.contains(CLASS_NAME_SHOW$6); + + if (!isActive && event.key === ESCAPE_KEY$2) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (isDisabled(this)) { + return; + } + + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0]; + const instance = Dropdown.getOrCreateInstance(getToggleButton); + + if (event.key === ESCAPE_KEY$2) { + instance.hide(); + return; + } + + if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { + if (!isActive) { + instance.show(); + } + + instance._selectMenuItem(event); + + return; + } + + if (!isActive || event.key === SPACE_KEY) { + Dropdown.clearMenus(); + } + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); + EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + event.preventDefault(); + Dropdown.getOrCreateInstance(this).toggle(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Dropdown to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Dropdown); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/scrollBar.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; + const SELECTOR_STICKY_CONTENT = '.sticky-top'; + + class ScrollBarHelper { + constructor() { + this._element = document.body; + } + + getWidth() { + // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); + } + + hide() { + const width = this.getWidth(); + + this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width + + + this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth + + + this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); + + this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); + } + + _disableOverFlow() { + this._saveInitialAttribute(this._element, 'overflow'); + + this._element.style.overflow = 'hidden'; + } + + _setElementAttributes(selector, styleProp, callback) { + const scrollbarWidth = this.getWidth(); + + const manipulationCallBack = element => { + if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + + this._saveInitialAttribute(element, styleProp); + + const calculatedValue = window.getComputedStyle(element)[styleProp]; + element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; + }; + + this._applyManipulationCallback(selector, manipulationCallBack); + } + + reset() { + this._resetElementAttributes(this._element, 'overflow'); + + this._resetElementAttributes(this._element, 'paddingRight'); + + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); + + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); + } + + _saveInitialAttribute(element, styleProp) { + const actualValue = element.style[styleProp]; + + if (actualValue) { + Manipulator.setDataAttribute(element, styleProp, actualValue); + } + } + + _resetElementAttributes(selector, styleProp) { + const manipulationCallBack = element => { + const value = Manipulator.getDataAttribute(element, styleProp); + + if (typeof value === 'undefined') { + element.style.removeProperty(styleProp); + } else { + Manipulator.removeDataAttribute(element, styleProp); + element.style[styleProp] = value; + } + }; + + this._applyManipulationCallback(selector, manipulationCallBack); + } + + _applyManipulationCallback(selector, callBack) { + if (isElement$1(selector)) { + callBack(selector); + } else { + SelectorEngine.find(selector, this._element).forEach(callBack); + } + } + + isOverflowing() { + return this.getWidth() > 0; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/backdrop.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const Default$7 = { + className: 'modal-backdrop', + isVisible: true, + // if false, we use the backdrop helper without adding any element to the dom + isAnimated: false, + rootElement: 'body', + // give the choice to place backdrop under different elements + clickCallback: null + }; + const DefaultType$7 = { + className: 'string', + isVisible: 'boolean', + isAnimated: 'boolean', + rootElement: '(element|string)', + clickCallback: '(function|null)' + }; + const NAME$8 = 'backdrop'; + const CLASS_NAME_FADE$4 = 'fade'; + const CLASS_NAME_SHOW$5 = 'show'; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`; + + class Backdrop { + constructor(config) { + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } + + show(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + + this._append(); + + if (this._config.isAnimated) { + reflow(this._getElement()); + } + + this._getElement().classList.add(CLASS_NAME_SHOW$5); + + this._emulateAnimation(() => { + execute(callback); + }); + } + + hide(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + + this._getElement().classList.remove(CLASS_NAME_SHOW$5); + + this._emulateAnimation(() => { + this.dispose(); + execute(callback); + }); + } // Private + + + _getElement() { + if (!this._element) { + const backdrop = document.createElement('div'); + backdrop.className = this._config.className; + + if (this._config.isAnimated) { + backdrop.classList.add(CLASS_NAME_FADE$4); + } + + this._element = backdrop; + } + + return this._element; + } + + _getConfig(config) { + config = { ...Default$7, + ...(typeof config === 'object' ? config : {}) + }; // use getElement() with the default "body" to get a fresh Element on each instantiation + + config.rootElement = getElement(config.rootElement); + typeCheckConfig(NAME$8, config, DefaultType$7); + return config; + } + + _append() { + if (this._isAppended) { + return; + } + + this._config.rootElement.append(this._getElement()); + + EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => { + execute(this._config.clickCallback); + }); + this._isAppended = true; + } + + dispose() { + if (!this._isAppended) { + return; + } + + EventHandler.off(this._element, EVENT_MOUSEDOWN); + + this._element.remove(); + + this._isAppended = false; + } + + _emulateAnimation(callback) { + executeAfterTransition(callback, this._getElement(), this._config.isAnimated); + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const Default$6 = { + trapElement: null, + // The element to trap focus inside of + autofocus: true + }; + const DefaultType$6 = { + trapElement: 'element', + autofocus: 'boolean' + }; + const NAME$7 = 'focustrap'; + const DATA_KEY$7 = 'bs.focustrap'; + const EVENT_KEY$7 = `.${DATA_KEY$7}`; + const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + + class FocusTrap { + constructor(config) { + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + + activate() { + const { + trapElement, + autofocus + } = this._config; + + if (this._isActive) { + return; + } + + if (autofocus) { + trapElement.focus(); + } + + EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop + + EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event)); + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + + deactivate() { + if (!this._isActive) { + return; + } + + this._isActive = false; + EventHandler.off(document, EVENT_KEY$7); + } // Private + + + _handleFocusin(event) { + const { + target + } = event; + const { + trapElement + } = this._config; + + if (target === document || target === trapElement || trapElement.contains(target)) { + return; + } + + const elements = SelectorEngine.focusableChildren(trapElement); + + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + + _getConfig(config) { + config = { ...Default$6, + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$7, config, DefaultType$6); + return config; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$6 = 'modal'; + const DATA_KEY$6 = 'bs.modal'; + const EVENT_KEY$6 = `.${DATA_KEY$6}`; + const DATA_API_KEY$3 = '.data-api'; + const ESCAPE_KEY$1 = 'Escape'; + const Default$5 = { + backdrop: true, + keyboard: true, + focus: true + }; + const DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean' + }; + const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`; + const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`; + const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`; + const EVENT_SHOW$3 = `show${EVENT_KEY$6}`; + const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`; + const EVENT_RESIZE = `resize${EVENT_KEY$6}`; + const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`; + const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`; + const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`; + const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`; + const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; + const CLASS_NAME_OPEN = 'modal-open'; + const CLASS_NAME_FADE$3 = 'fade'; + const CLASS_NAME_SHOW$4 = 'show'; + const CLASS_NAME_STATIC = 'modal-static'; + const OPEN_SELECTOR$1 = '.modal.show'; + const SELECTOR_DIALOG = '.modal-dialog'; + const SELECTOR_MODAL_BODY = '.modal-body'; + const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Modal extends BaseComponent { + constructor(element, config) { + super(element); + this._config = this._getConfig(config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._isShown = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollBar = new ScrollBarHelper(); + } // Getters + + + static get Default() { + return Default$5; + } + + static get NAME() { + return NAME$6; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget + }); + + if (showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + + if (this._isAnimated()) { + this._isTransitioning = true; + } + + this._scrollBar.hide(); + + document.body.classList.add(CLASS_NAME_OPEN); + + this._adjustDialog(); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { + EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => { + if (event.target === this._element) { + this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(() => this._showElement(relatedTarget)); + } + + hide() { + if (!this._isShown || this._isTransitioning) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + + if (hideEvent.defaultPrevented) { + return; + } + + this._isShown = false; + + const isAnimated = this._isAnimated(); + + if (isAnimated) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + this._focustrap.deactivate(); + + this._element.classList.remove(CLASS_NAME_SHOW$4); + + EventHandler.off(this._element, EVENT_CLICK_DISMISS); + EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); + + this._queueCallback(() => this._hideModal(), this._element, isAnimated); + } + + dispose() { + [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6)); + + this._backdrop.dispose(); + + this._focustrap.deactivate(); + + super.dispose(); + } + + handleUpdate() { + this._adjustDialog(); + } // Private + + + _initializeBackDrop() { + return new Backdrop({ + isVisible: Boolean(this._config.backdrop), + // 'static' option will be translated to true, and booleans will keep their value + isAnimated: this._isAnimated() + }); + } + + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + + _getConfig(config) { + config = { ...Default$5, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$6, config, DefaultType$5); + return config; + } + + _showElement(relatedTarget) { + const isAnimated = this._isAnimated(); + + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.append(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + this._element.scrollTop = 0; + + if (modalBody) { + modalBody.scrollTop = 0; + } + + if (isAnimated) { + reflow(this._element); + } + + this._element.classList.add(CLASS_NAME_SHOW$4); + + const transitionComplete = () => { + if (this._config.focus) { + this._focustrap.activate(); + } + + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget + }); + }; + + this._queueCallback(transitionComplete, this._dialog, isAnimated); + } + + _setEscapeEvent() { + if (this._isShown) { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { + if (this._config.keyboard && event.key === ESCAPE_KEY$1) { + event.preventDefault(); + this.hide(); + } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) { + this._triggerBackdropTransition(); + } + }); + } else { + EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1); + } + } + + _setResizeEvent() { + if (this._isShown) { + EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog()); + } else { + EventHandler.off(window, EVENT_RESIZE); + } + } + + _hideModal() { + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + this._isTransitioning = false; + + this._backdrop.hide(() => { + document.body.classList.remove(CLASS_NAME_OPEN); + + this._resetAdjustments(); + + this._scrollBar.reset(); + + EventHandler.trigger(this._element, EVENT_HIDDEN$3); + }); + } + + _showBackdrop(callback) { + EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => { + if (this._ignoreBackdropClick) { + this._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (this._config.backdrop === true) { + this.hide(); + } else if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); + } + }); + + this._backdrop.show(callback); + } + + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$3); + } + + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + + if (hideEvent.defaultPrevented) { + return; + } + + const { + classList, + scrollHeight, + style + } = this._element; + const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed + + if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) { + return; + } + + if (!isModalOverflowing) { + style.overflowY = 'hidden'; + } + + classList.add(CLASS_NAME_STATIC); + + this._queueCallback(() => { + classList.remove(CLASS_NAME_STATIC); + + if (!isModalOverflowing) { + this._queueCallback(() => { + style.overflowY = ''; + }, this._dialog); + } + }, this._dialog); + + this._element.focus(); + } // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // ---------------------------------------------------------------------- + + + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + const scrollbarWidth = this._scrollBar.getWidth(); + + const isBodyOverflowing = scrollbarWidth > 0; + + if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) { + this._element.style.paddingLeft = `${scrollbarWidth}px`; + } + + if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) { + this._element.style.paddingRight = `${scrollbarWidth}px`; + } + } + + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } // Static + + + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + const data = Modal.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](relatedTarget); + }); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = getElementFromSelector(this); + + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + EventHandler.one(target, EVENT_SHOW$3, showEvent => { + if (showEvent.defaultPrevented) { + // only register focus restorer if modal will actually get shown + return; + } + + EventHandler.one(target, EVENT_HIDDEN$3, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); // avoid conflict when clicking moddal toggler while another one is open + + const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + + if (allReadyOpen) { + Modal.getInstance(allReadyOpen).hide(); + } + + const data = Modal.getOrCreateInstance(target); + data.toggle(this); + }); + enableDismissTrigger(Modal); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Modal to jQuery only if jQuery is present + */ + + defineJQueryPlugin(Modal); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): offcanvas.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$5 = 'offcanvas'; + const DATA_KEY$5 = 'bs.offcanvas'; + const EVENT_KEY$5 = `.${DATA_KEY$5}`; + const DATA_API_KEY$2 = '.data-api'; + const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`; + const ESCAPE_KEY = 'Escape'; + const Default$4 = { + backdrop: true, + keyboard: true, + scroll: false + }; + const DefaultType$4 = { + backdrop: 'boolean', + keyboard: 'boolean', + scroll: 'boolean' + }; + const CLASS_NAME_SHOW$3 = 'show'; + const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; + const OPEN_SELECTOR = '.offcanvas.show'; + const EVENT_SHOW$2 = `show${EVENT_KEY$5}`; + const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`; + const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`; + const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`; + const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`; + const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`; + const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element); + this._config = this._getConfig(config); + this._isShown = false; + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + + this._addEventListeners(); + } // Getters + + + static get NAME() { + return NAME$5; + } + + static get Default() { + return Default$4; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown) { + return; + } + + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { + relatedTarget + }); + + if (showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + this._element.style.visibility = 'visible'; + + this._backdrop.show(); + + if (!this._config.scroll) { + new ScrollBarHelper().hide(); + } + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + this._element.classList.add(CLASS_NAME_SHOW$3); + + const completeCallBack = () => { + if (!this._config.scroll) { + this._focustrap.activate(); + } + + EventHandler.trigger(this._element, EVENT_SHOWN$2, { + relatedTarget + }); + }; + + this._queueCallback(completeCallBack, this._element, true); + } + + hide() { + if (!this._isShown) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); + + if (hideEvent.defaultPrevented) { + return; + } + + this._focustrap.deactivate(); + + this._element.blur(); + + this._isShown = false; + + this._element.classList.remove(CLASS_NAME_SHOW$3); + + this._backdrop.hide(); + + const completeCallback = () => { + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + this._element.style.visibility = 'hidden'; + + if (!this._config.scroll) { + new ScrollBarHelper().reset(); + } + + EventHandler.trigger(this._element, EVENT_HIDDEN$2); + }; + + this._queueCallback(completeCallback, this._element, true); + } + + dispose() { + this._backdrop.dispose(); + + this._focustrap.deactivate(); + + super.dispose(); + } // Private + + + _getConfig(config) { + config = { ...Default$4, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$5, config, DefaultType$4); + return config; + } + + _initializeBackDrop() { + return new Backdrop({ + className: CLASS_NAME_BACKDROP, + isVisible: this._config.backdrop, + isAnimated: true, + rootElement: this._element.parentNode, + clickCallback: () => this.hide() + }); + } + + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (this._config.keyboard && event.key === ESCAPE_KEY) { + this.hide(); + } + }); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Offcanvas.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](this); + }); + } + + } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = getElementFromSelector(this); + + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + EventHandler.one(target, EVENT_HIDDEN$2, () => { + // focus on trigger when it is closed + if (isVisible(this)) { + this.focus(); + } + }); // avoid conflict when clicking a toggler of an offcanvas, while another is open + + const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + + if (allReadyOpen && allReadyOpen !== target) { + Offcanvas.getInstance(allReadyOpen).hide(); + } + + const data = Offcanvas.getOrCreateInstance(target); + data.toggle(this); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())); + enableDismissTrigger(Offcanvas); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + defineJQueryPlugin(Offcanvas); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): util/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); + const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; + + const allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); + } + + return true; + } + + const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute. + + for (let i = 0, len = regExp.length; i < len; i++) { + if (regExp[i].test(attributeName)) { + return true; + } + } + + return false; + }; + + const DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); + } + + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); + + for (let i = 0, len = elements.length; i < len; i++) { + const element = elements[i]; + const elementName = element.nodeName.toLowerCase(); + + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); + attributeList.forEach(attribute => { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + }); + } + + return createdDocument.body.innerHTML; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$4 = 'tooltip'; + const DATA_KEY$4 = 'bs.tooltip'; + const EVENT_KEY$4 = `.${DATA_KEY$4}`; + const CLASS_PREFIX$1 = 'bs-tooltip'; + const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); + const DefaultType$3 = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(array|string|function)', + container: '(string|element|boolean)', + fallbackPlacements: 'array', + boundary: '(string|element)', + customClass: '(string|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + allowList: 'object', + popperConfig: '(null|object|function)' + }; + const AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: isRTL() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: isRTL() ? 'right' : 'left' + }; + const Default$3 = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: [0, 0], + container: false, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + boundary: 'clippingParents', + customClass: '', + sanitize: true, + sanitizeFn: null, + allowList: DefaultAllowlist, + popperConfig: null + }; + const Event$2 = { + HIDE: `hide${EVENT_KEY$4}`, + HIDDEN: `hidden${EVENT_KEY$4}`, + SHOW: `show${EVENT_KEY$4}`, + SHOWN: `shown${EVENT_KEY$4}`, + INSERTED: `inserted${EVENT_KEY$4}`, + CLICK: `click${EVENT_KEY$4}`, + FOCUSIN: `focusin${EVENT_KEY$4}`, + FOCUSOUT: `focusout${EVENT_KEY$4}`, + MOUSEENTER: `mouseenter${EVENT_KEY$4}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$4}` + }; + const CLASS_NAME_FADE$2 = 'fade'; + const CLASS_NAME_MODAL = 'modal'; + const CLASS_NAME_SHOW$2 = 'show'; + const HOVER_STATE_SHOW = 'show'; + const HOVER_STATE_OUT = 'out'; + const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + const EVENT_MODAL_HIDE = 'hide.bs.modal'; + const TRIGGER_HOVER = 'hover'; + const TRIGGER_FOCUS = 'focus'; + const TRIGGER_CLICK = 'click'; + const TRIGGER_MANUAL = 'manual'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Tooltip extends BaseComponent { + constructor(element, config) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } + + super(element); // private + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this._config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + + static get Default() { + return Default$3; + } + + static get NAME() { + return NAME$4; + } + + static get Event() { + return Event$2; + } + + static get DefaultType() { + return DefaultType$3; + } // Public + + + enable() { + this._isEnabled = true; + } + + disable() { + this._isEnabled = false; + } + + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + + toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + const context = this._initializeOnDelegatedTarget(event); + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + } + + dispose() { + clearTimeout(this._timeout); + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + + if (this.tip) { + this.tip.remove(); + } + + this._disposePopper(); + + super.dispose(); + } + + show() { + if (this._element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + + if (!(this.isWithContent() && this._isEnabled)) { + return; + } + + const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); + + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title` + // This will be removed later in favor of a `setContent` method + + + if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) { + this._disposePopper(); + + this.tip.remove(); + this.tip = null; + } + + const tip = this.getTipElement(); + const tipId = getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + + this._element.setAttribute('aria-describedby', tipId); + + if (this._config.animation) { + tip.classList.add(CLASS_NAME_FADE$2); + } + + const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; + + const attachment = this._getAttachment(placement); + + this._addAttachmentClass(attachment); + + const { + container + } = this._config; + Data.set(tip, this.constructor.DATA_KEY, this); + + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + EventHandler.trigger(this._element, this.constructor.Event.INSERTED); + } + + if (this._popper) { + this._popper.update(); + } else { + this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + + tip.classList.add(CLASS_NAME_SHOW$2); + + const customClass = this._resolvePossibleFunction(this._config.customClass); + + if (customClass) { + tip.classList.add(...customClass.split(' ')); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement) { + [].concat(...document.body.children).forEach(element => { + EventHandler.on(element, 'mouseover', noop); + }); + } + + const complete = () => { + const prevHoverState = this._hoverState; + this._hoverState = null; + EventHandler.trigger(this._element, this.constructor.Event.SHOWN); + + if (prevHoverState === HOVER_STATE_OUT) { + this._leave(null, this); + } + }; + + const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); + + this._queueCallback(complete, this.tip, isAnimated); + } + + hide() { + if (!this._popper) { + return; + } + + const tip = this.getTipElement(); + + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + + if (this._hoverState !== HOVER_STATE_SHOW) { + tip.remove(); + } + + this._cleanTipClass(); + + this._element.removeAttribute('aria-describedby'); + + EventHandler.trigger(this._element, this.constructor.Event.HIDDEN); + + this._disposePopper(); + }; + + const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); + + if (hideEvent.defaultPrevented) { + return; + } + + tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop)); + } + + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); + + this._queueCallback(complete, this.tip, isAnimated); + + this._hoverState = ''; + } + + update() { + if (this._popper !== null) { + this._popper.update(); + } + } // Protected + + + isWithContent() { + return Boolean(this.getTitle()); + } + + getTipElement() { + if (this.tip) { + return this.tip; + } + + const element = document.createElement('div'); + element.innerHTML = this._config.template; + const tip = element.children[0]; + this.setContent(tip); + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); + this.tip = tip; + return this.tip; + } + + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER); + } + + _sanitizeAndSetContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template); + + if (!content && templateElement) { + templateElement.remove(); + return; + } // we use append for html objects to maintain js events + + + this.setElementContent(templateElement, content); + } + + setElementContent(element, content) { + if (element === null) { + return; + } + + if (isElement$1(content)) { + content = getElement(content); // content is a DOM node or a jQuery + + if (this._config.html) { + if (content.parentNode !== element) { + element.innerHTML = ''; + element.append(content); + } + } else { + element.textContent = content.textContent; + } + + return; + } + + if (this._config.html) { + if (this._config.sanitize) { + content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn); + } + + element.innerHTML = content; + } else { + element.textContent = content; + } + } + + getTitle() { + const title = this._element.getAttribute('data-bs-original-title') || this._config.title; + + return this._resolvePossibleFunction(title); + } + + updateAttachment(attachment) { + if (attachment === 'right') { + return 'end'; + } + + if (attachment === 'left') { + return 'start'; + } + + return attachment; + } // Private + + + _initializeOnDelegatedTarget(event, context) { + return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + + _getOffset() { + const { + offset + } = this._config; + + if (typeof offset === 'string') { + return offset.split(',').map(val => Number.parseInt(val, 10)); + } + + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + + return offset; + } + + _resolvePossibleFunction(content) { + return typeof content === 'function' ? content.call(this._element) : content; + } + + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [{ + name: 'flip', + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }, { + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'arrow', + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, { + name: 'onChange', + enabled: true, + phase: 'afterWrite', + fn: data => this._handlePopperPlacementChange(data) + }], + onFirstUpdate: data => { + if (data.options.placement !== data.placement) { + this._handlePopperPlacementChange(data); + } + } + }; + return { ...defaultBsPopperConfig, + ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) + }; + } + + _addAttachmentClass(attachment) { + this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`); + } + + _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + + _setListeners() { + const triggers = this._config.trigger.split(' '); + + triggers.forEach(trigger => { + if (trigger === 'click') { + EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event)); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN; + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT; + EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event)); + EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event)); + } + }); + + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + + if (this._config.selector) { + this._config = { ...this._config, + trigger: 'manual', + selector: '' + }; + } else { + this._fixTitle(); + } + } + + _fixTitle() { + const title = this._element.getAttribute('title'); + + const originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); + + if (title || originalTitleType !== 'string') { + this._element.setAttribute('data-bs-original-title', title || ''); + + if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { + this._element.setAttribute('aria-label', title); + } + + this._element.setAttribute('title', ''); + } + } + + _enter(event, context) { + context = this._initializeOnDelegatedTarget(event, context); + + if (event) { + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + } + + if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) { + context._hoverState = HOVER_STATE_SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_SHOW; + + if (!context._config.delay || !context._config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HOVER_STATE_SHOW) { + context.show(); + } + }, context._config.delay.show); + } + + _leave(event, context) { + context = this._initializeOnDelegatedTarget(event, context); + + if (event) { + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_OUT; + + if (!context._config.delay || !context._config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HOVER_STATE_OUT) { + context.hide(); + } + }, context._config.delay.hide); + } + + _isWithActiveTrigger() { + for (const trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + Object.keys(dataAttributes).forEach(dataAttr => { + if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { + delete dataAttributes[dataAttr]; + } + }); + config = { ...this.constructor.Default, + ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; + config.container = config.container === false ? document.body : getElement(config.container); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + + if (config.sanitize) { + config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); + } + + return config; + } + + _getDelegateConfig() { + const config = {}; + + for (const key in this._config) { + if (this.constructor.Default[key] !== this._config[key]) { + config[key] = this._config[key]; + } + } // In the future can be replaced with: + // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) + // `Object.fromEntries(keysWithDifferentValues)` + + + return config; + } + + _cleanTipClass() { + const tip = this.getTipElement(); + const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g'); + const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex); + + if (tabClass !== null && tabClass.length > 0) { + tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); + } + } + + _getBasicClassPrefix() { + return CLASS_PREFIX$1; + } + + _handlePopperPlacementChange(popperData) { + const { + state + } = popperData; + + if (!state) { + return; + } + + this.tip = state.elements.popper; + + this._cleanTipClass(); + + this._addAttachmentClass(this._getAttachment(state.placement)); + } + + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + + this._popper = null; + } + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Tooltip.getOrCreateInstance(this, config); + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + } + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Tooltip to jQuery only if jQuery is present + */ + + + defineJQueryPlugin(Tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$3 = 'popover'; + const DATA_KEY$3 = 'bs.popover'; + const EVENT_KEY$3 = `.${DATA_KEY$3}`; + const CLASS_PREFIX = 'bs-popover'; + const Default$2 = { ...Tooltip.Default, + placement: 'right', + offset: [0, 8], + trigger: 'click', + content: '', + template: '' + }; + const DefaultType$2 = { ...Tooltip.DefaultType, + content: '(string|element|function)' + }; + const Event$1 = { + HIDE: `hide${EVENT_KEY$3}`, + HIDDEN: `hidden${EVENT_KEY$3}`, + SHOW: `show${EVENT_KEY$3}`, + SHOWN: `shown${EVENT_KEY$3}`, + INSERTED: `inserted${EVENT_KEY$3}`, + CLICK: `click${EVENT_KEY$3}`, + FOCUSIN: `focusin${EVENT_KEY$3}`, + FOCUSOUT: `focusout${EVENT_KEY$3}`, + MOUSEENTER: `mouseenter${EVENT_KEY$3}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$3}` + }; + const SELECTOR_TITLE = '.popover-header'; + const SELECTOR_CONTENT = '.popover-body'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Popover extends Tooltip { + // Getters + static get Default() { + return Default$2; + } + + static get NAME() { + return NAME$3; + } + + static get Event() { + return Event$1; + } + + static get DefaultType() { + return DefaultType$2; + } // Overrides + + + isWithContent() { + return this.getTitle() || this._getContent(); + } + + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE); + + this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT); + } // Private + + + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } + + _getBasicClassPrefix() { + return CLASS_PREFIX; + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Popover.getOrCreateInstance(this, config); + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + } + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .Popover to jQuery only if jQuery is present + */ + + + defineJQueryPlugin(Popover); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME$2 = 'scrollspy'; + const DATA_KEY$2 = 'bs.scrollspy'; + const EVENT_KEY$2 = `.${DATA_KEY$2}`; + const DATA_API_KEY$1 = '.data-api'; + const Default$1 = { + offset: 10, + method: 'auto', + target: '' + }; + const DefaultType$1 = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; + const EVENT_SCROLL = `scroll${EVENT_KEY$2}`; + const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`; + const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; + const CLASS_NAME_ACTIVE$1 = 'active'; + const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; + const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; + const SELECTOR_NAV_LINKS = '.nav-link'; + const SELECTOR_NAV_ITEMS = '.nav-item'; + const SELECTOR_LIST_ITEMS = '.list-group-item'; + const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`; + const SELECTOR_DROPDOWN$1 = '.dropdown'; + const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; + const METHOD_OFFSET = 'offset'; + const METHOD_POSITION = 'position'; + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element); + this._scrollElement = this._element.tagName === 'BODY' ? window : this._element; + this._config = this._getConfig(config); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process()); + this.refresh(); + + this._process(); + } // Getters + + + static get Default() { + return Default$1; + } + + static get NAME() { + return NAME$2; + } // Public + + + refresh() { + const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; + const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target); + targets.map(element => { + const targetSelector = getSelectorFromElement(element); + const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; + + if (target) { + const targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => { + this._offsets.push(item[0]); + + this._targets.push(item[1]); + }); + } + + dispose() { + EventHandler.off(this._scrollElement, EVENT_KEY$2); + super.dispose(); + } // Private + + + _getConfig(config) { + config = { ...Default$1, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' && config ? config : {}) + }; + config.target = getElement(config.target) || document.documentElement; + typeCheckConfig(NAME$2, config, DefaultType$1); + return config; + } + + _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + } + + _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + + _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + } + + _process() { + const scrollTop = this._getScrollTop() + this._config.offset; + + const scrollHeight = this._getScrollHeight(); + + const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + const target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + for (let i = this._offsets.length; i--;) { + const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + + _activate(target) { + this._activeTarget = target; + + this._clear(); + + const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`); + const link = SelectorEngine.findOne(queries.join(','), this._config.target); + link.classList.add(CLASS_NAME_ACTIVE$1); + + if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1); + } else { + SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => { + // Set triggered links parents as active + // With both